diff --git a/addons/Dine360_Chennora/hooks.py b/addons/Dine360_Chennora/hooks.py index 28311b4..fd48152 100644 --- a/addons/Dine360_Chennora/hooks.py +++ b/addons/Dine360_Chennora/hooks.py @@ -1,11 +1,10 @@ from odoo import api, SUPERUSER_ID -def uninstall_hook(cr, registry): +def uninstall_hook(env): """ Synchronized uninstallation: When Dine360 Restaurant Suite is uninstalled, automatically trigger uninstallation for all its core sub-modules. """ - env = api.Environment(cr, SUPERUSER_ID, {}) modules_to_uninstall = [ 'dine360_dashboard', 'dine360_restaurant', @@ -22,5 +21,4 @@ def uninstall_hook(cr, registry): if modules: # Mark modules for uninstallation - # button_immediate_uninstall will trigger the full process including registry reload - modules.button_immediate_uninstall() + modules.button_uninstall() diff --git a/addons/Dine360_Shivasakthi/__init__.py b/addons/Dine360_Shivasakthi/__init__.py new file mode 100644 index 0000000..4c62977 --- /dev/null +++ b/addons/Dine360_Shivasakthi/__init__.py @@ -0,0 +1,2 @@ +# Meta module for Dine360 Shivasakthi +from .hooks import uninstall_hook diff --git a/addons/Dine360_Shivasakthi/__manifest__.py b/addons/Dine360_Shivasakthi/__manifest__.py new file mode 100644 index 0000000..224f026 --- /dev/null +++ b/addons/Dine360_Shivasakthi/__manifest__.py @@ -0,0 +1,44 @@ +{ + 'name': 'Dine360 Shivasakthi Restaurant Suite', + 'version': '1.0.0', + 'license': 'LGPL-3', + 'category': 'Website', + 'summary': 'Installs all Dine360 Shivasakthi Restaurant modules', + 'author': 'Dine360', + 'depends': [ + 'dine360_restaurant', + 'dine360_order_channels', + 'dine360_dashboard', + 'dine360_theme_shivasakthi', + 'dine360_kds', + 'dine360_reservation', + 'dine360_uber', + 'dine360_recipe', + 'dine360_self_order', + 'dine360_online_orders', + 'dine360_pos_navbar', + 'mail', + 'calendar', + 'contacts', + 'crm', + 'sale_management', + 'board', + 'point_of_sale', + 'account', + 'website', + 'purchase', + 'stock', + 'hr', + ], + 'uninstall_hook': 'uninstall_hook', + 'data': [ + 'views/apps_kanban_menu.xml', + ], + 'assets': { + 'web.assets_backend': [ + 'Dine360_Shivasakthi/static/src/css/apps_kanban_fix.css', + ], + }, + 'installable': True, + 'application': True, +} diff --git a/addons/Dine360_Shivasakthi/hooks.py b/addons/Dine360_Shivasakthi/hooks.py new file mode 100644 index 0000000..d4f9da2 --- /dev/null +++ b/addons/Dine360_Shivasakthi/hooks.py @@ -0,0 +1,24 @@ +from odoo import api, SUPERUSER_ID + +def uninstall_hook(env): + """ + Synchronized uninstallation: When Dine360 Shivasakthi Restaurant Suite is uninstalled, + automatically trigger uninstallation for all its core sub-modules. + """ + modules_to_uninstall = [ + 'dine360_dashboard', + 'dine360_restaurant', + 'dine360_theme_shivasakthi', + 'dine360_kds', + 'dine360_reservation' + ] + + # Search for these modules if they are installed + modules = env['ir.module.module'].search([ + ('name', 'in', modules_to_uninstall), + ('state', '=', 'installed') + ]) + + if modules: + # Mark modules for uninstallation + modules.button_uninstall() diff --git a/addons/Dine360_Shivasakthi/static/src/css/apps_kanban_fix.css b/addons/Dine360_Shivasakthi/static/src/css/apps_kanban_fix.css new file mode 100644 index 0000000..7418207 --- /dev/null +++ b/addons/Dine360_Shivasakthi/static/src/css/apps_kanban_fix.css @@ -0,0 +1,31 @@ +/* Fix Apps kanban icon sizing and dropdown overlap */ +.o_modules_kanban .oe_module_vignette, +.o_modules_kanban .o_kanban_record { + overflow: visible; +} + +.o_modules_kanban .o_kanban_record { + position: relative; + z-index: 1; +} + +.o_modules_kanban .oe_module_icon { + width: 64px; + height: 64px; + display: flex; + align-items: center; + justify-content: center; +} + +.o_modules_kanban .oe_module_icon img { + width: 64px; + height: 64px; + object-fit: contain; +} + +.o_modules_kanban .oe_module_vignette .dropdown-menu { + right: 0; + left: auto; + min-width: 160px; + z-index: 1060; +} diff --git a/addons/Dine360_Shivasakthi/views/apps_kanban_menu.xml b/addons/Dine360_Shivasakthi/views/apps_kanban_menu.xml new file mode 100644 index 0000000..49eb1ab --- /dev/null +++ b/addons/Dine360_Shivasakthi/views/apps_kanban_menu.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/addons/dine360_theme_shivasakthi/__init__.py b/addons/dine360_theme_shivasakthi/__init__.py new file mode 100644 index 0000000..9e5827f --- /dev/null +++ b/addons/dine360_theme_shivasakthi/__init__.py @@ -0,0 +1,3 @@ +# -*- coding: utf-8 -*- +from . import controllers +from . import models diff --git a/addons/dine360_theme_shivasakthi/__manifest__.py b/addons/dine360_theme_shivasakthi/__manifest__.py new file mode 100644 index 0000000..c14e410 --- /dev/null +++ b/addons/dine360_theme_shivasakthi/__manifest__.py @@ -0,0 +1,41 @@ +# -*- coding: utf-8 -*- +{ + 'name': 'Dine360 Theme Shivasakthi', + 'description': 'Custom theme for Dine360 Shivasakthi website', + 'category': 'Theme/Website', + 'version': '1.0', + 'author': 'Dine360', + 'depends': ['website', 'website_sale', 'website_crm'], + 'data': [ + 'views/layout.xml', # Header, Footer, and Global Layout changes + 'views/pages.xml', # specific page content (Home, About, etc.) + 'views/about_page.xml', # About Page + 'views/contact_page.xml',# Contact Page + 'views/faq_page.xml', # FAQ Page + 'views/blog_page.xml', # Blog Page + 'views/blog_detail_page.xml', # Blog Detail Page + 'views/shop_page.xml', # Shop Page + 'views/checkout_address.xml', # Checkout Address page (remove Company/VAT) + 'views/product_details_page.xml', # Customized Product Details Page + 'views/product_views.xml', # Product Form custom fields + 'views/snippets.xml', # Custom Building Blocks + 'views/options.xml', # Options for snippets (if any) + 'views/res_config_settings_views.xml', # Backend Settings + 'data/website_data.xml', # Data for creating pages + ], + 'assets': { + 'web.assets_frontend': [ + 'dine360_theme_shivasakthi/static/src/scss/primary_variables.scss', + 'dine360_theme_shivasakthi/static/src/scss/theme.scss', + 'dine360_theme_shivasakthi/static/src/scss/shop.scss', + 'dine360_theme_shivasakthi/static/src/js/deal_switcher.js', + 'dine360_theme_shivasakthi/static/src/js/category_slider.js', + ], + }, + 'images': [ + 'static/description/cover.png', + ], + 'installable': True, + 'application': True, + 'license': 'LGPL-3', +} diff --git a/addons/dine360_theme_shivasakthi/controllers/__init__.py b/addons/dine360_theme_shivasakthi/controllers/__init__.py new file mode 100644 index 0000000..757b12a --- /dev/null +++ b/addons/dine360_theme_shivasakthi/controllers/__init__.py @@ -0,0 +1,2 @@ +# -*- coding: utf-8 -*- +from . import main diff --git a/addons/dine360_theme_shivasakthi/controllers/main.py b/addons/dine360_theme_shivasakthi/controllers/main.py new file mode 100644 index 0000000..191a318 --- /dev/null +++ b/addons/dine360_theme_shivasakthi/controllers/main.py @@ -0,0 +1,131 @@ +from markupsafe import Markup +import json +import os +from odoo import http +from odoo.http import request + +# Helper to load blogs from JSON +def get_blogs(): + json_path = os.path.join(os.path.dirname(__file__), '../data/blogs.json') + if os.path.exists(json_path): + with open(json_path, 'r', encoding='utf-8-sig') as f: + blogs = json.load(f) + # Reversing so the last added blog appears first + return blogs[::-1] if isinstance(blogs, list) else blogs + return [] + +class ContactController(http.Controller): + @http.route('/contactus/submit', type='http', auth="public", website=True, csrf=True) + def contact_submit(self, **post): + import logging + _logger = logging.getLogger(__name__) + + name = post.get('name') + email = post.get('email_from') + phone = post.get('phone') + subject = post.get('subject') + message = post.get('description') + + # Format the email content + email_content = f""" +
+

New Contact Form Submission - Shiva Sakthi

+ + + + + + + + + + + + + + + + + +
Full Name:{name}
Email:{email}
Phone:{phone}
Subject:{subject}
+
+ Message: +
{message}
+
+
+ """ + + company_email = request.env['res.company'].sudo().search([], limit=1).email or 'info@shivasakthi.ca' + + mail_values = { + 'subject': f"Contact Form: {subject or 'Inquiry'} from {name}", + 'body_html': email_content, + 'email_to': 'info@shivasakthi.ca', + 'email_from': company_email, + 'reply_to': email, + } + + # Create and send the mail + try: + mail = request.env['mail.mail'].sudo().create(mail_values) + mail.send() + _logger.info("Contact form email sent successfully to %s", mail_values['email_to']) + except Exception as e: + _logger.error("Failed to send contact form email: %s", str(e)) + + return request.render('dine360_theme_shivasakthi.contact_thank_you') + +class BlogController(http.Controller): + @http.route(['/blog', '/blog/page/'], type='http', auth='public', website=True) + def blog_list(self, page=1, **post): + all_blogs = get_blogs() + + # Pagination Settings + per_page = 12 + total = len(all_blogs) + + # Odoo's built-in pager + pager = request.website.pager( + url='/blog', + total=total, + page=page, + step=per_page, + scope=5, + url_args=post, + ) + + # Extract blogs for current page + start = (page - 1) * per_page + end = start + per_page + blogs_paged = all_blogs[start:end] + + return request.render('dine360_theme_shivasakthi.blog_page', { + 'blog_posts': blogs_paged, + 'pager': pager, + }) + + @http.route(['/blog/'], type='http', auth='public', website=True) + def blog_detail(self, slug, **post): + all_blogs = get_blogs() + blog_post = next((b for b in all_blogs if b['slug'] == slug), None) + + if not blog_post: + return request.not_found() + + recent_posts = [b for b in all_blogs if b['slug'] != slug][:3] + + # Get categories and counts + categories = {} + for b in all_blogs: + cat = b.get('category', 'Restaurant') + categories[cat] = categories.get(cat, 0) + 1 + + return request.render('dine360_theme_shivasakthi.blog_detail_layout', { + 'blog_title': blog_post.get('title'), + 'blog_img': blog_post.get('image'), + 'blog_date': blog_post.get('date'), + 'blog_category': blog_post.get('category'), + 'blog_content': Markup(blog_post.get('content') or ''), + 'recent_posts': recent_posts, + 'categories': categories, + }) diff --git a/addons/dine360_theme_shivasakthi/data/blogs.json b/addons/dine360_theme_shivasakthi/data/blogs.json new file mode 100644 index 0000000..ee49b13 --- /dev/null +++ b/addons/dine360_theme_shivasakthi/data/blogs.json @@ -0,0 +1,38 @@ +[ + { + "id": 1, + "title": "The Secrets of Crafting the Perfect Crispy Dosa", + "slug": "secrets-perfect-crispy-dosa", + "image": "/dine360_theme_shivasakthi/static/src/img/assets/images/blog/blog_dosa_making.jpg", + "category": "Recipe", + "date": "May 15, 2026", + "day": "15", + "month": "May", + "excerpt": "Discover the culinary art behind Shiva Sakthi's signature dosas. Learn how our chefs achieve the perfect crispiness using age-old fermentation techniques and spices.", + "content": "

At Shiva Sakthi Restaurant, the dosa isn't just a dish; it's a craft perfected over decades. The secret to our golden, paper-thin crispy dosas lies in the fermentation process. Our chefs soak premium quality parboiled rice and urad dal, grinding them to a silky batter that is fermented for exactly 12 hours at a precise temperature.

Cooked on a heavy iron griddle seasoned with sesame oil, each dosa is hand-spread in quick circular motions. Whether you enjoy the classic Masala Dosa or our fiery Mysore Dosa, every bite delivers the authentic taste of South India.

" + }, + { + "id": 2, + "title": "Why Our Unlimited Thali is Mississauga's Favorite Lunch Choice", + "slug": "unlimited-thali-mississauga-favorite", + "image": "/dine360_theme_shivasakthi/static/src/img/assets/images/blog/blog_thali_experience.jpg", + "category": "Dining", + "date": "June 1, 2026", + "day": "01", + "month": "Jun", + "excerpt": "A feast fit for royalty! Read about the journey of our Unlimited South Indian Thali, featuring a harmonious blend of curries, rasam, and fresh payasam.", + "content": "

For anyone craving a comprehensive South Indian feast, the Shiva Sakthi Unlimited Thali is the ultimate experience. Served on a traditional banana leaf, it offers a rotating menu of up to 10 authentic items, including Sambar, Rasam, Kara Kuzhambu, Poriyal, Kootu, and crunchy appalams, ending with a sweet, rich Payasam.

We believe in hospitality that makes you feel at home. That's why our thali is served with unlimited refills of rice and curries, cooked fresh every day with locally sourced ingredients and spices imported from South India.

" + }, + { + "id": 3, + "title": "A Guide to South Indian Spices and Their Health Benefits", + "slug": "guide-south-indian-spices-benefits", + "image": "/dine360_theme_shivasakthi/static/src/img/assets/images/blog/blog_south_indian_spices.jpg", + "category": "Health", + "date": "June 7, 2026", + "day": "07", + "month": "Jun", + "excerpt": "Explore the medicinal and culinary secrets of mustard seeds, curry leaves, and asafoetida that give our dishes their rich flavor profile.", + "content": "

South Indian cuisine is celebrated not just for its rich aromas but also for its digestive and therapeutic benefits. Key spices such as turmeric, mustard seeds, fenugreek, and curry leaves are rich in antioxidants and aid digestion.

At Shiva Sakthi, we use these spices mindfully. Tempered in hot oil at the end of cooking (a process called *tadka*), they release essential oils that enhance the taste and wellness of our sambars, curries, and chutneys.

" + } +] diff --git a/addons/dine360_theme_shivasakthi/data/website_data.xml b/addons/dine360_theme_shivasakthi/data/website_data.xml new file mode 100644 index 0000000..7c1eb2a --- /dev/null +++ b/addons/dine360_theme_shivasakthi/data/website_data.xml @@ -0,0 +1,29 @@ + + + + + + /about + True + + About Us + + + + + /faq + True + + FAQ + + + + + /blog + True + + Blog + + + + diff --git a/addons/dine360_theme_shivasakthi/models/__init__.py b/addons/dine360_theme_shivasakthi/models/__init__.py new file mode 100644 index 0000000..debd3da --- /dev/null +++ b/addons/dine360_theme_shivasakthi/models/__init__.py @@ -0,0 +1,4 @@ +# -*- coding: utf-8 -*- +from . import product_template +from . import res_config_settings +from . import website diff --git a/addons/dine360_theme_shivasakthi/models/product_template.py b/addons/dine360_theme_shivasakthi/models/product_template.py new file mode 100644 index 0000000..f8eaf94 --- /dev/null +++ b/addons/dine360_theme_shivasakthi/models/product_template.py @@ -0,0 +1,11 @@ +# -*- coding: utf-8 -*- +from odoo import models, fields + +class ProductTemplate(models.Model): + _inherit = 'product.template' + + is_popular_deal = fields.Boolean( + string='Is Popular Deal', + default=False, + help='Check this to show this product in Popular Deals section on Homepage' + ) diff --git a/addons/dine360_theme_shivasakthi/models/res_config_settings.py b/addons/dine360_theme_shivasakthi/models/res_config_settings.py new file mode 100644 index 0000000..b8f4c57 --- /dev/null +++ b/addons/dine360_theme_shivasakthi/models/res_config_settings.py @@ -0,0 +1,11 @@ +# -*- coding: utf-8 -*- +from odoo import models, fields + +class ResConfigSettings(models.TransientModel): + _inherit = 'res.config.settings' + + enable_delivery_option = fields.Boolean( + related='website_id.enable_delivery_option', + readonly=False, + string='Enable Delivery Option' + ) diff --git a/addons/dine360_theme_shivasakthi/models/website.py b/addons/dine360_theme_shivasakthi/models/website.py new file mode 100644 index 0000000..b27f1df --- /dev/null +++ b/addons/dine360_theme_shivasakthi/models/website.py @@ -0,0 +1,29 @@ +# -*- coding: utf-8 -*- +import json +import os +from odoo import models, fields, modules + +class Website(models.Model): + _inherit = 'website' + + enable_delivery_option = fields.Boolean( + string='Enable Delivery Option', + default=True, + help='If disabled, customers will not see the Delivery option on the checkout page.' + ) + + def get_recent_blogs(self, limit=3): + """Reads blog posts from blogs.json and returns the latest slice.""" + addon_path = modules.get_module_path('dine360_theme_shivasakthi') + json_path = os.path.join(addon_path, 'data', 'blogs.json') + + if os.path.exists(json_path): + try: + with open(json_path, 'r', encoding='utf-8-sig') as f: + blogs = json.load(f) + if isinstance(blogs, list): + return blogs[::-1][:limit] + return blogs[:limit] if isinstance(blogs, list) else [] + except Exception: + return [] + return [] diff --git a/addons/dine360_theme_shivasakthi/static/src/img/1-big-img.webp b/addons/dine360_theme_shivasakthi/static/src/img/1-big-img.webp new file mode 100644 index 0000000..aee2e25 Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/1-big-img.webp differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/1-card.webp b/addons/dine360_theme_shivasakthi/static/src/img/1-card.webp new file mode 100644 index 0000000..608e7d5 Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/1-card.webp differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/2-big-img.webp b/addons/dine360_theme_shivasakthi/static/src/img/2-big-img.webp new file mode 100644 index 0000000..4756541 Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/2-big-img.webp differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/2-card.webp b/addons/dine360_theme_shivasakthi/static/src/img/2-card.webp new file mode 100644 index 0000000..9165b7a Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/2-card.webp differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/about-banner-bg.png b/addons/dine360_theme_shivasakthi/static/src/img/about-banner-bg.png new file mode 100644 index 0000000..8d212de Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/about-banner-bg.png differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/about-banner-new.png b/addons/dine360_theme_shivasakthi/static/src/img/about-banner-new.png new file mode 100644 index 0000000..8d212de Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/about-banner-new.png differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/about-basil-float.png b/addons/dine360_theme_shivasakthi/static/src/img/about-basil-float.png new file mode 100644 index 0000000..fbe9f4b Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/about-basil-float.png differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/about-bellpepper.png b/addons/dine360_theme_shivasakthi/static/src/img/about-bellpepper.png new file mode 100644 index 0000000..8daade1 Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/about-bellpepper.png differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/about-leaves.png b/addons/dine360_theme_shivasakthi/static/src/img/about-leaves.png new file mode 100644 index 0000000..fbe9f4b Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/about-leaves.png differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/about-lemon-float.png b/addons/dine360_theme_shivasakthi/static/src/img/about-lemon-float.png new file mode 100644 index 0000000..fd3454f Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/about-lemon-float.png differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/about-lemon.png b/addons/dine360_theme_shivasakthi/static/src/img/about-lemon.png new file mode 100644 index 0000000..fd3454f Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/about-lemon.png differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/about-main-dish.png b/addons/dine360_theme_shivasakthi/static/src/img/about-main-dish.png new file mode 100644 index 0000000..497c8c2 Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/about-main-dish.png differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/about-new-basil.png b/addons/dine360_theme_shivasakthi/static/src/img/about-new-basil.png new file mode 100644 index 0000000..fbe9f4b Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/about-new-basil.png differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/about-new-lemon.png b/addons/dine360_theme_shivasakthi/static/src/img/about-new-lemon.png new file mode 100644 index 0000000..fd3454f Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/about-new-lemon.png differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/about-new-main.png b/addons/dine360_theme_shivasakthi/static/src/img/about-new-main.png new file mode 100644 index 0000000..497c8c2 Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/about-new-main.png differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/about-new-pepper.png b/addons/dine360_theme_shivasakthi/static/src/img/about-new-pepper.png new file mode 100644 index 0000000..21ffbed Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/about-new-pepper.png differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/about-pepper-float.png b/addons/dine360_theme_shivasakthi/static/src/img/about-pepper-float.png new file mode 100644 index 0000000..21ffbed Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/about-pepper-float.png differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/about-platter.png b/addons/dine360_theme_shivasakthi/static/src/img/about-platter.png new file mode 100644 index 0000000..1304ac6 Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/about-platter.png differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/assets/images/home/about-platter.png b/addons/dine360_theme_shivasakthi/static/src/img/assets/images/home/about-platter.png new file mode 100644 index 0000000..1304ac6 Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/assets/images/home/about-platter.png differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/assets/images/home/testimonial-main.jpg b/addons/dine360_theme_shivasakthi/static/src/img/assets/images/home/testimonial-main.jpg new file mode 100644 index 0000000..518ccfa Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/assets/images/home/testimonial-main.jpg differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/assets/images/home/unlimited-thali/thali.png b/addons/dine360_theme_shivasakthi/static/src/img/assets/images/home/unlimited-thali/thali.png new file mode 100644 index 0000000..e49281f Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/assets/images/home/unlimited-thali/thali.png differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/assets/images/logos/logo.png b/addons/dine360_theme_shivasakthi/static/src/img/assets/images/logos/logo.png new file mode 100644 index 0000000..a923ab6 Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/assets/images/logos/logo.png differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/assets/images/shapes/bannerShape2_1.svg b/addons/dine360_theme_shivasakthi/static/src/img/assets/images/shapes/bannerShape2_1.svg new file mode 100644 index 0000000..e8109ca --- /dev/null +++ b/addons/dine360_theme_shivasakthi/static/src/img/assets/images/shapes/bannerShape2_1.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/addons/dine360_theme_shivasakthi/static/src/img/assets/images/shapes/bannerShape2_2.svg b/addons/dine360_theme_shivasakthi/static/src/img/assets/images/shapes/bannerShape2_2.svg new file mode 100644 index 0000000..5870931 --- /dev/null +++ b/addons/dine360_theme_shivasakthi/static/src/img/assets/images/shapes/bannerShape2_2.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/addons/dine360_theme_shivasakthi/static/src/img/assets/images/shapes/bannerShape2_3.svg b/addons/dine360_theme_shivasakthi/static/src/img/assets/images/shapes/bannerShape2_3.svg new file mode 100644 index 0000000..ed6bcf9 --- /dev/null +++ b/addons/dine360_theme_shivasakthi/static/src/img/assets/images/shapes/bannerShape2_3.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/addons/dine360_theme_shivasakthi/static/src/img/assets/images/shapes/bannerShape2_4.svg b/addons/dine360_theme_shivasakthi/static/src/img/assets/images/shapes/bannerShape2_4.svg new file mode 100644 index 0000000..da85676 --- /dev/null +++ b/addons/dine360_theme_shivasakthi/static/src/img/assets/images/shapes/bannerShape2_4.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/addons/dine360_theme_shivasakthi/static/src/img/assets/images/shapes/bannerShape2_5.svg b/addons/dine360_theme_shivasakthi/static/src/img/assets/images/shapes/bannerShape2_5.svg new file mode 100644 index 0000000..d759b02 --- /dev/null +++ b/addons/dine360_theme_shivasakthi/static/src/img/assets/images/shapes/bannerShape2_5.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/addons/dine360_theme_shivasakthi/static/src/img/best-big-img.webp b/addons/dine360_theme_shivasakthi/static/src/img/best-big-img.webp new file mode 100644 index 0000000..bbc686b Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/best-big-img.webp differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/best-card.webp b/addons/dine360_theme_shivasakthi/static/src/img/best-card.webp new file mode 100644 index 0000000..206286e Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/best-card.webp differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/bg-image.jpg b/addons/dine360_theme_shivasakthi/static/src/img/bg-image.jpg new file mode 100644 index 0000000..f70f905 Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/bg-image.jpg differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/blog-1.png b/addons/dine360_theme_shivasakthi/static/src/img/blog-1.png new file mode 100644 index 0000000..a71222f Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/blog-1.png differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/blog-1.webp b/addons/dine360_theme_shivasakthi/static/src/img/blog-1.webp new file mode 100644 index 0000000..e28f2ad Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/blog-1.webp differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/blog-2.png b/addons/dine360_theme_shivasakthi/static/src/img/blog-2.png new file mode 100644 index 0000000..d8af39d Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/blog-2.png differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/blog-2.webp b/addons/dine360_theme_shivasakthi/static/src/img/blog-2.webp new file mode 100644 index 0000000..3407806 Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/blog-2.webp differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/blog-3.png b/addons/dine360_theme_shivasakthi/static/src/img/blog-3.png new file mode 100644 index 0000000..4cb2245 Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/blog-3.png differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/blog-3.webp b/addons/dine360_theme_shivasakthi/static/src/img/blog-3.webp new file mode 100644 index 0000000..c6a5f32 Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/blog-3.webp differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/blog-banner.webp b/addons/dine360_theme_shivasakthi/static/src/img/blog-banner.webp new file mode 100644 index 0000000..407101e Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/blog-banner.webp differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/blog-detail-1.webp b/addons/dine360_theme_shivasakthi/static/src/img/blog-detail-1.webp new file mode 100644 index 0000000..c3a45be Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/blog-detail-1.webp differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/blog-detail-2.webp b/addons/dine360_theme_shivasakthi/static/src/img/blog-detail-2.webp new file mode 100644 index 0000000..1318f36 Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/blog-detail-2.webp differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/blog-detail-3.webp b/addons/dine360_theme_shivasakthi/static/src/img/blog-detail-3.webp new file mode 100644 index 0000000..9862744 Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/blog-detail-3.webp differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/blog-detail-banner.webp b/addons/dine360_theme_shivasakthi/static/src/img/blog-detail-banner.webp new file mode 100644 index 0000000..e8a014e Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/blog-detail-banner.webp differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/blog1-big-img.webp b/addons/dine360_theme_shivasakthi/static/src/img/blog1-big-img.webp new file mode 100644 index 0000000..0e96637 Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/blog1-big-img.webp differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/blog1-card.webp b/addons/dine360_theme_shivasakthi/static/src/img/blog1-card.webp new file mode 100644 index 0000000..ec29150 Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/blog1-card.webp differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/blog2-big-img.webp b/addons/dine360_theme_shivasakthi/static/src/img/blog2-big-img.webp new file mode 100644 index 0000000..8370c01 Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/blog2-big-img.webp differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/blog2-card.webp b/addons/dine360_theme_shivasakthi/static/src/img/blog2-card.webp new file mode 100644 index 0000000..6fc09b7 Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/blog2-card.webp differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/burger-shape.png b/addons/dine360_theme_shivasakthi/static/src/img/burger-shape.png new file mode 100644 index 0000000..ee44290 Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/burger-shape.png differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/c1-big-img.webp b/addons/dine360_theme_shivasakthi/static/src/img/c1-big-img.webp new file mode 100644 index 0000000..036c20f Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/c1-big-img.webp differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/c1-card.webp b/addons/dine360_theme_shivasakthi/static/src/img/c1-card.webp new file mode 100644 index 0000000..32aea09 Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/c1-card.webp differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/c2-big-img.webp b/addons/dine360_theme_shivasakthi/static/src/img/c2-big-img.webp new file mode 100644 index 0000000..51d2665 Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/c2-big-img.webp differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/c2-card.webp b/addons/dine360_theme_shivasakthi/static/src/img/c2-card.webp new file mode 100644 index 0000000..d81ac19 Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/c2-card.webp differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/canadian-big-img.webp b/addons/dine360_theme_shivasakthi/static/src/img/canadian-big-img.webp new file mode 100644 index 0000000..bf7aae2 Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/canadian-big-img.webp differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/canadian-card.webp b/addons/dine360_theme_shivasakthi/static/src/img/canadian-card.webp new file mode 100644 index 0000000..7d38824 Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/canadian-card.webp differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/cat-beverages.png b/addons/dine360_theme_shivasakthi/static/src/img/cat-beverages.png new file mode 100644 index 0000000..812ef22 Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/cat-beverages.png differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/cat-biryani.png b/addons/dine360_theme_shivasakthi/static/src/img/cat-biryani.png new file mode 100644 index 0000000..f21df78 Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/cat-biryani.png differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/cat-curries.png b/addons/dine360_theme_shivasakthi/static/src/img/cat-curries.png new file mode 100644 index 0000000..d6ae501 Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/cat-curries.png differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/cat-desserts.png b/addons/dine360_theme_shivasakthi/static/src/img/cat-desserts.png new file mode 100644 index 0000000..8675583 Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/cat-desserts.png differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/cat-dosa.png b/addons/dine360_theme_shivasakthi/static/src/img/cat-dosa.png new file mode 100644 index 0000000..794df1a Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/cat-dosa.png differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/chen-banner-1.webp b/addons/dine360_theme_shivasakthi/static/src/img/chen-banner-1.webp new file mode 100644 index 0000000..7228c13 Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/chen-banner-1.webp differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/chen-banner-2.webp b/addons/dine360_theme_shivasakthi/static/src/img/chen-banner-2.webp new file mode 100644 index 0000000..6d579d8 Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/chen-banner-2.webp differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/chen-banner-3.webp b/addons/dine360_theme_shivasakthi/static/src/img/chen-banner-3.webp new file mode 100644 index 0000000..a415ae2 Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/chen-banner-3.webp differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/choose-left-accent.png b/addons/dine360_theme_shivasakthi/static/src/img/choose-left-accent.png new file mode 100644 index 0000000..b62564f Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/choose-left-accent.png differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/choose-main-dish.png b/addons/dine360_theme_shivasakthi/static/src/img/choose-main-dish.png new file mode 100644 index 0000000..378e9ab Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/choose-main-dish.png differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/choose-pepper-float.png b/addons/dine360_theme_shivasakthi/static/src/img/choose-pepper-float.png new file mode 100644 index 0000000..0e3200f Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/choose-pepper-float.png differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/choose-right-accent.png b/addons/dine360_theme_shivasakthi/static/src/img/choose-right-accent.png new file mode 100644 index 0000000..0fda454 Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/choose-right-accent.png differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/contact-banner-bg.png b/addons/dine360_theme_shivasakthi/static/src/img/contact-banner-bg.png new file mode 100644 index 0000000..609837e Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/contact-banner-bg.png differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/contact-side-img-new.png b/addons/dine360_theme_shivasakthi/static/src/img/contact-side-img-new.png new file mode 100644 index 0000000..fdad080 Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/contact-side-img-new.png differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/contact-side-img.png b/addons/dine360_theme_shivasakthi/static/src/img/contact-side-img.png new file mode 100644 index 0000000..fdad080 Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/contact-side-img.png differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/crispy-gobi-65.png b/addons/dine360_theme_shivasakthi/static/src/img/crispy-gobi-65.png new file mode 100644 index 0000000..517d4aa Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/crispy-gobi-65.png differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/cuisine-big-img.webp b/addons/dine360_theme_shivasakthi/static/src/img/cuisine-big-img.webp new file mode 100644 index 0000000..f9f13eb Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/cuisine-big-img.webp differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/cuisine-card.webp b/addons/dine360_theme_shivasakthi/static/src/img/cuisine-card.webp new file mode 100644 index 0000000..783c89e Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/cuisine-card.webp differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/deal-coffee.png b/addons/dine360_theme_shivasakthi/static/src/img/deal-coffee.png new file mode 100644 index 0000000..d91b777 Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/deal-coffee.png differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/deal-dosa.png b/addons/dine360_theme_shivasakthi/static/src/img/deal-dosa.png new file mode 100644 index 0000000..a15ed6e Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/deal-dosa.png differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/deal-kothu.png b/addons/dine360_theme_shivasakthi/static/src/img/deal-kothu.png new file mode 100644 index 0000000..7f0310a Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/deal-kothu.png differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/deal-nuggets.png b/addons/dine360_theme_shivasakthi/static/src/img/deal-nuggets.png new file mode 100644 index 0000000..88c0b4e Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/deal-nuggets.png differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/dining-big-img.webp b/addons/dine360_theme_shivasakthi/static/src/img/dining-big-img.webp new file mode 100644 index 0000000..fc25298 Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/dining-big-img.webp differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/dining-card.webp b/addons/dine360_theme_shivasakthi/static/src/img/dining-card.webp new file mode 100644 index 0000000..7ec00e7 Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/dining-card.webp differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/dosa-big-img.webp b/addons/dine360_theme_shivasakthi/static/src/img/dosa-big-img.webp new file mode 100644 index 0000000..9b4d334 Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/dosa-big-img.webp differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/dosa-card.webp b/addons/dine360_theme_shivasakthi/static/src/img/dosa-card.webp new file mode 100644 index 0000000..47436d8 Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/dosa-card.webp differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/faq-banner-bg.png b/addons/dine360_theme_shivasakthi/static/src/img/faq-banner-bg.png new file mode 100644 index 0000000..1ac99e8 Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/faq-banner-bg.png differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/faq-new-1.png b/addons/dine360_theme_shivasakthi/static/src/img/faq-new-1.png new file mode 100644 index 0000000..6c63edd Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/faq-new-1.png differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/faq-new-2.png b/addons/dine360_theme_shivasakthi/static/src/img/faq-new-2.png new file mode 100644 index 0000000..e618b1a Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/faq-new-2.png differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/faq-new-3.png b/addons/dine360_theme_shivasakthi/static/src/img/faq-new-3.png new file mode 100644 index 0000000..6c63edd Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/faq-new-3.png differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/faq-slide-1.png b/addons/dine360_theme_shivasakthi/static/src/img/faq-slide-1.png new file mode 100644 index 0000000..b0c560d Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/faq-slide-1.png differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/faq-slide-2.png b/addons/dine360_theme_shivasakthi/static/src/img/faq-slide-2.png new file mode 100644 index 0000000..f464034 Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/faq-slide-2.png differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/faq-slide-3.png b/addons/dine360_theme_shivasakthi/static/src/img/faq-slide-3.png new file mode 100644 index 0000000..7a69370 Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/faq-slide-3.png differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/fav-big-img.webp b/addons/dine360_theme_shivasakthi/static/src/img/fav-big-img.webp new file mode 100644 index 0000000..34d3094 Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/fav-big-img.webp differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/fav-card.webp b/addons/dine360_theme_shivasakthi/static/src/img/fav-card.webp new file mode 100644 index 0000000..1a3fe61 Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/fav-card.webp differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/feb-4-1-big-img.webp b/addons/dine360_theme_shivasakthi/static/src/img/feb-4-1-big-img.webp new file mode 100644 index 0000000..a66dfed Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/feb-4-1-big-img.webp differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/feb-4-1-card.webp b/addons/dine360_theme_shivasakthi/static/src/img/feb-4-1-card.webp new file mode 100644 index 0000000..5ac07af Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/feb-4-1-card.webp differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/feb-4-2-big-img.webp b/addons/dine360_theme_shivasakthi/static/src/img/feb-4-2-big-img.webp new file mode 100644 index 0000000..eff0ab7 Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/feb-4-2-big-img.webp differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/feb-4-2-card.webp b/addons/dine360_theme_shivasakthi/static/src/img/feb-4-2-card.webp new file mode 100644 index 0000000..804c9a5 Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/feb-4-2-card.webp differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/feb11-1-big-img.webp b/addons/dine360_theme_shivasakthi/static/src/img/feb11-1-big-img.webp new file mode 100644 index 0000000..3103729 Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/feb11-1-big-img.webp differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/feb11-1-card.webp b/addons/dine360_theme_shivasakthi/static/src/img/feb11-1-card.webp new file mode 100644 index 0000000..bb28c80 Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/feb11-1-card.webp differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/feb11-2-big-img.webp b/addons/dine360_theme_shivasakthi/static/src/img/feb11-2-big-img.webp new file mode 100644 index 0000000..7bb4a0f Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/feb11-2-big-img.webp differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/feb11-2-card.webp b/addons/dine360_theme_shivasakthi/static/src/img/feb11-2-card.webp new file mode 100644 index 0000000..ae96531 Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/feb11-2-card.webp differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/fiery-fish-curry.png b/addons/dine360_theme_shivasakthi/static/src/img/fiery-fish-curry.png new file mode 100644 index 0000000..0352bd0 Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/fiery-fish-curry.png differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/french-fries-accent.png b/addons/dine360_theme_shivasakthi/static/src/img/french-fries-accent.png new file mode 100644 index 0000000..278142f Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/french-fries-accent.png differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/gallery-1.png b/addons/dine360_theme_shivasakthi/static/src/img/gallery-1.png new file mode 100644 index 0000000..16d0f70 Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/gallery-1.png differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/gallery-2.png b/addons/dine360_theme_shivasakthi/static/src/img/gallery-2.png new file mode 100644 index 0000000..982fead Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/gallery-2.png differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/gallery-3.png b/addons/dine360_theme_shivasakthi/static/src/img/gallery-3.png new file mode 100644 index 0000000..edb03fe Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/gallery-3.png differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/good-big-img.webp b/addons/dine360_theme_shivasakthi/static/src/img/good-big-img.webp new file mode 100644 index 0000000..121215c Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/good-big-img.webp differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/good-card.webp b/addons/dine360_theme_shivasakthi/static/src/img/good-card.webp new file mode 100644 index 0000000..9747623 Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/good-card.webp differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/healthier-big-img.webp b/addons/dine360_theme_shivasakthi/static/src/img/healthier-big-img.webp new file mode 100644 index 0000000..d40f372 Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/healthier-big-img.webp differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/healthier-card.webp b/addons/dine360_theme_shivasakthi/static/src/img/healthier-card.webp new file mode 100644 index 0000000..40328cf Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/healthier-card.webp differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/hero-bg.jpg b/addons/dine360_theme_shivasakthi/static/src/img/hero-bg.jpg new file mode 100644 index 0000000..2a27d99 Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/hero-bg.jpg differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/hero-dark-texture.png b/addons/dine360_theme_shivasakthi/static/src/img/hero-dark-texture.png new file mode 100644 index 0000000..7b0ce51 Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/hero-dark-texture.png differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/hero-left-biryani.png b/addons/dine360_theme_shivasakthi/static/src/img/hero-left-biryani.png new file mode 100644 index 0000000..990914d Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/hero-left-biryani.png differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/hero-mushroom.png b/addons/dine360_theme_shivasakthi/static/src/img/hero-mushroom.png new file mode 100644 index 0000000..193b8e7 Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/hero-mushroom.png differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/hero-onion-ring.png b/addons/dine360_theme_shivasakthi/static/src/img/hero-onion-ring.png new file mode 100644 index 0000000..59aace4 Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/hero-onion-ring.png differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/hero-right-biryani.png b/addons/dine360_theme_shivasakthi/static/src/img/hero-right-biryani.png new file mode 100644 index 0000000..75caca5 Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/hero-right-biryani.png differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/hero-shape2.png b/addons/dine360_theme_shivasakthi/static/src/img/hero-shape2.png new file mode 100644 index 0000000..31c795e Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/hero-shape2.png differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/hero-shape5.png b/addons/dine360_theme_shivasakthi/static/src/img/hero-shape5.png new file mode 100644 index 0000000..f4c8af6 Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/hero-shape5.png differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/home-testi.webp b/addons/dine360_theme_shivasakthi/static/src/img/home-testi.webp new file mode 100644 index 0000000..7933aa1 Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/home-testi.webp differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/indian-big-img.webp b/addons/dine360_theme_shivasakthi/static/src/img/indian-big-img.webp new file mode 100644 index 0000000..fca13f8 Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/indian-big-img.webp differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/indian-card.webp b/addons/dine360_theme_shivasakthi/static/src/img/indian-card.webp new file mode 100644 index 0000000..75085d2 Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/indian-card.webp differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/indian-veg-big-img.webp b/addons/dine360_theme_shivasakthi/static/src/img/indian-veg-big-img.webp new file mode 100644 index 0000000..e2fada5 Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/indian-veg-big-img.webp differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/indian-veg-card.webp b/addons/dine360_theme_shivasakthi/static/src/img/indian-veg-card.webp new file mode 100644 index 0000000..7532a50 Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/indian-veg-card.webp differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/left-side-image.webp b/addons/dine360_theme_shivasakthi/static/src/img/left-side-image.webp new file mode 100644 index 0000000..a7e89f1 Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/left-side-image.webp differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/logo.png b/addons/dine360_theme_shivasakthi/static/src/img/logo.png new file mode 100644 index 0000000..f992d54 Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/logo.png differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/offer-dosa-left.webp b/addons/dine360_theme_shivasakthi/static/src/img/offer-dosa-left.webp new file mode 100644 index 0000000..0cc58d3 Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/offer-dosa-left.webp differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/offer-dosa-right.webp b/addons/dine360_theme_shivasakthi/static/src/img/offer-dosa-right.webp new file mode 100644 index 0000000..e2be5e7 Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/offer-dosa-right.webp differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/pizza-shape.png b/addons/dine360_theme_shivasakthi/static/src/img/pizza-shape.png new file mode 100644 index 0000000..8698673 Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/pizza-shape.png differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/rise-big-img.webp b/addons/dine360_theme_shivasakthi/static/src/img/rise-big-img.webp new file mode 100644 index 0000000..8604b4e Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/rise-big-img.webp differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/rise-card.webp b/addons/dine360_theme_shivasakthi/static/src/img/rise-card.webp new file mode 100644 index 0000000..3926da3 Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/rise-card.webp differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/science-big-img.webp b/addons/dine360_theme_shivasakthi/static/src/img/science-big-img.webp new file mode 100644 index 0000000..bbef1fb Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/science-big-img.webp differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/science-card.webp b/addons/dine360_theme_shivasakthi/static/src/img/science-card.webp new file mode 100644 index 0000000..0a59060 Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/science-card.webp differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/serve-big-img.webp b/addons/dine360_theme_shivasakthi/static/src/img/serve-big-img.webp new file mode 100644 index 0000000..fbb4224 Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/serve-big-img.webp differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/serve-card.webp b/addons/dine360_theme_shivasakthi/static/src/img/serve-card.webp new file mode 100644 index 0000000..33cfd3e Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/serve-card.webp differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/shiva-sakthi-web-banner.webp b/addons/dine360_theme_shivasakthi/static/src/img/shiva-sakthi-web-banner.webp new file mode 100644 index 0000000..716cc7a Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/shiva-sakthi-web-banner.webp differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/south-big-img.webp b/addons/dine360_theme_shivasakthi/static/src/img/south-big-img.webp new file mode 100644 index 0000000..8f4794c Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/south-big-img.webp differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/south-card.webp b/addons/dine360_theme_shivasakthi/static/src/img/south-card.webp new file mode 100644 index 0000000..96dea79 Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/south-card.webp differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/southIn-big-img.webp b/addons/dine360_theme_shivasakthi/static/src/img/southIn-big-img.webp new file mode 100644 index 0000000..33247af Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/southIn-big-img.webp differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/southIn-card.webp b/addons/dine360_theme_shivasakthi/static/src/img/southIn-card.webp new file mode 100644 index 0000000..952674a Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/southIn-card.webp differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/subtitle-icon.png b/addons/dine360_theme_shivasakthi/static/src/img/subtitle-icon.png new file mode 100644 index 0000000..b552c8c Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/subtitle-icon.png differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/testimonial-accent-right.png b/addons/dine360_theme_shivasakthi/static/src/img/testimonial-accent-right.png new file mode 100644 index 0000000..93b5ce3 Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/testimonial-accent-right.png differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/testimonial-main.jpg b/addons/dine360_theme_shivasakthi/static/src/img/testimonial-main.jpg new file mode 100644 index 0000000..518ccfa Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/testimonial-main.jpg differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/tomato.png b/addons/dine360_theme_shivasakthi/static/src/img/tomato.png new file mode 100644 index 0000000..d50959a Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/tomato.png differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/top-big-img.webp b/addons/dine360_theme_shivasakthi/static/src/img/top-big-img.webp new file mode 100644 index 0000000..1277707 Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/top-big-img.webp differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/top-card.webp b/addons/dine360_theme_shivasakthi/static/src/img/top-card.webp new file mode 100644 index 0000000..fab7725 Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/top-card.webp differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/top5-big-img.webp b/addons/dine360_theme_shivasakthi/static/src/img/top5-big-img.webp new file mode 100644 index 0000000..b1cc38b Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/top5-big-img.webp differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/top5-card.webp b/addons/dine360_theme_shivasakthi/static/src/img/top5-card.webp new file mode 100644 index 0000000..406125f Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/top5-card.webp differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/unlimited-thali-left.webp b/addons/dine360_theme_shivasakthi/static/src/img/unlimited-thali-left.webp new file mode 100644 index 0000000..86733e8 Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/unlimited-thali-left.webp differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/unlimited-thali-right.webp b/addons/dine360_theme_shivasakthi/static/src/img/unlimited-thali-right.webp new file mode 100644 index 0000000..38710d1 Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/unlimited-thali-right.webp differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/unlimited-thali.png b/addons/dine360_theme_shivasakthi/static/src/img/unlimited-thali.png new file mode 100644 index 0000000..e49281f Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/unlimited-thali.png differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/veg-big-img.webp b/addons/dine360_theme_shivasakthi/static/src/img/veg-big-img.webp new file mode 100644 index 0000000..9e49473 Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/veg-big-img.webp differ diff --git a/addons/dine360_theme_shivasakthi/static/src/img/veg-card.webp b/addons/dine360_theme_shivasakthi/static/src/img/veg-card.webp new file mode 100644 index 0000000..97d5521 Binary files /dev/null and b/addons/dine360_theme_shivasakthi/static/src/img/veg-card.webp differ diff --git a/addons/dine360_theme_shivasakthi/static/src/js/category_slider.js b/addons/dine360_theme_shivasakthi/static/src/js/category_slider.js new file mode 100644 index 0000000..7a5bdc4 --- /dev/null +++ b/addons/dine360_theme_shivasakthi/static/src/js/category_slider.js @@ -0,0 +1,89 @@ +/** @odoo-module **/ + +import publicWidget from "@web/legacy/js/public/public_widget"; + +publicWidget.registry.CategoryCarousel = publicWidget.Widget.extend({ + selector: '.s_category_slider', + start: function () { + this.$track = this.$('.category-track'); + this.$items = this.$('.category-item'); + + if (!this.$track.length || !this.$items.length) { + return; + } + + this.currentIndex = 0; + this.totalOriginal = this.$items.length; + + // Clone all items and append for seamless loop + // We ensure we have enough content to scroll endlessly + const itemsToClone = this.$items.clone(); + this.$track.append(itemsToClone); + + // Update items list + this.$newItems = this.$('.category-item'); + + // 3 seconds interval + this._startAutoSlide(); + + // Pause on hover + this.$el.on('mouseenter', () => this._stopAutoSlide()); + this.$el.on('mouseleave', () => this._startAutoSlide()); + + // Handle window resize to reset alignment + $(window).on('resize', () => { + this._slide(true); + }); + + return this._super.apply(this, arguments); + }, + + _startAutoSlide: function () { + if (this.interval) clearInterval(this.interval); + this.interval = setInterval(this._slide.bind(this), 3000); // 3 seconds + }, + + _stopAutoSlide: function () { + if (this.interval) clearInterval(this.interval); + }, + + _slide: function (resize = false) { + if (resize) { + // Just reset position on resize to avoid misalignment + const itemWidth = this.$newItems.first().outerWidth(true); + this.$track.css({ + 'transition': 'none', + 'transform': `translateX(-${this.currentIndex * itemWidth}px)` + }); + return; + } + + // Get current item width (responsive) + const itemWidth = this.$newItems.first().outerWidth(true); + + this.currentIndex++; + + this.$track.css({ + 'transition': 'transform 0.5s ease-in-out', + 'transform': `translateX(-${this.currentIndex * itemWidth}px)` + }); + + // Loop check + // If we have moved past the original set + if (this.currentIndex >= this.totalOriginal) { + setTimeout(() => { + // Snap back to 0 (visually identical position) + // We use 0 because 0 is the start of Original Set + // When currentIndex == totalOriginal, we are at the start of Cloned Set + // Cloned Set is identical to Original Set. + this.$track.css({ + 'transition': 'none', + 'transform': 'translateX(0)' + }); + this.currentIndex = 0; + }, 500); // Wait for transition to finish + } + } +}); + +export default publicWidget.registry.CategoryCarousel; diff --git a/addons/dine360_theme_shivasakthi/static/src/js/deal_switcher.js b/addons/dine360_theme_shivasakthi/static/src/js/deal_switcher.js new file mode 100644 index 0000000..6cd623d --- /dev/null +++ b/addons/dine360_theme_shivasakthi/static/src/js/deal_switcher.js @@ -0,0 +1,98 @@ +/** @odoo-module **/ + +import publicWidget from "@web/legacy/js/public/public_widget"; + +publicWidget.registry.DealSwitcher = publicWidget.Widget.extend({ + selector: '.s_popular_deals_premium', + events: { + 'mouseenter .deal-item': '_onDealHover', + }, + + /** + * @override + */ + start: function () { + this.$centerImg = this.$('#dealCenterImg'); + return this._super.apply(this, arguments); + }, + + //-------------------------------------------------------------------------- + // Handlers + //-------------------------------------------------------------------------- + + /** + * @private + * @param {Event} ev + */ + _onDealHover: function (ev) { + const $item = $(ev.currentTarget); + const newImg = $item.data('deal-img'); + + if (newImg && this.$centerImg.length) { + // Remove active class from others + this.$('.deal-item').removeClass('active'); + // Add active to current + $item.addClass('active'); + + // Fade out, change src, fade in + this.$centerImg.css('opacity', '0'); + setTimeout(() => { + this.$centerImg.attr('src', newImg); + this.$centerImg.css('opacity', '1'); + }, 300); + } + }, +}); + + +publicWidget.registry.GallerySlider = publicWidget.Widget.extend({ + selector: '.s_gallery_slider_premium', + + start: function () { + this.$track = this.$('.gallery-track'); + this.slideWidth = 315; // 300px width + 15px gap + this.currentIndex = 0; + this.totalOriginal = 6; + + // Start auto-slide + this._startAutoSlide(); + + // Pause on hover + this.$el.on('mouseenter', () => this._stopAutoSlide()); + this.$el.on('mouseleave', () => this._startAutoSlide()); + + return this._super.apply(this, arguments); + }, + + _startAutoSlide: function () { + this.interval = setInterval(this._slide.bind(this), 2000); + }, + + _stopAutoSlide: function () { + clearInterval(this.interval); + }, + + _slide: function () { + this.currentIndex++; + this.$track.css({ + 'transition': 'transform 0.8s cubic-bezier(0.165, 0.84, 0.44, 1)', + 'transform': `translateX(-${this.currentIndex * this.slideWidth}px)` + }); + + // Seamless loop reset + if (this.currentIndex >= this.totalOriginal) { + setTimeout(() => { + this.$track.css({ + 'transition': 'none', + 'transform': 'translateX(0)' + }); + this.currentIndex = 0; + }, 800); // Match transition duration + } + } +}); + +export default { + DealSwitcher: publicWidget.registry.DealSwitcher, + GallerySlider: publicWidget.registry.GallerySlider, +}; diff --git a/addons/dine360_theme_shivasakthi/static/src/scss/primary_variables.scss b/addons/dine360_theme_shivasakthi/static/src/scss/primary_variables.scss new file mode 100644 index 0000000..e702972 --- /dev/null +++ b/addons/dine360_theme_shivasakthi/static/src/scss/primary_variables.scss @@ -0,0 +1,12 @@ +$o-color-palettes: ( + 'shivasakthi-palette': ( + 'o-color-1': #ffb800, // Golden-Yellow (Primary) + 'o-color-2': #0e1317, // Deep Dark Theme Base (Secondary) + 'o-color-3': #FFFFFF, // White text/highlights + 'o-color-4': #151a1e, // Lighter Charcoal for section contrast + 'o-color-5': #F7F5F0, // Off-white contrast backgrounds + ), +); + +// Map the newly created palette to the primary one +$o-selected-color-palette: 'shivasakthi-palette'; diff --git a/addons/dine360_theme_shivasakthi/static/src/scss/shop.scss b/addons/dine360_theme_shivasakthi/static/src/scss/shop.scss new file mode 100644 index 0000000..dbbba44 --- /dev/null +++ b/addons/dine360_theme_shivasakthi/static/src/scss/shop.scss @@ -0,0 +1,657 @@ +/* Shivasakthi Shop Page - Exact Clone of the Classic Food Theme UI */ + +:root { + --food-green: #ffb800; + --food-yellow: #ffb800; + --food-text: #333333; + --food-light-grey: #f1f1f1; + --food-border: #e6e6e6; + --food-shadow: 0 10px 25px rgba(0, 0, 0, 0.06); +} + +.form-control, +.form-select { + background-color: #f8f9fa !important; + border: 1px solid #ffb800 !important; + border-radius: 10px !important; + padding: 14px 18px !important; + font-size: 15px !important; + color: #0e1317 !important; + transition: all 0.3s ease; +} + +.oe_website_sale { + background-color: #ffffff !important; + padding-top: 40px; + padding-bottom: 80px; + + /* Sidebar Navigation */ + #products_grid_before { + background: transparent !important; + padding-right: 30px !important; + + .food-sidebar-section { + margin-bottom: 40px; + + .section-title { + display: flex; + align-items: center; + font-size: 1.1rem; + font-weight: 800; + color: var(--food-text); + text-transform: uppercase; + margin-bottom: 25px; + letter-spacing: 1px; + + &::before { + content: ''; + display: inline-block; + width: 3px; + height: 18px; + background: var(--food-green); + margin-right: 10px; + } + } + + /* Categories List */ + .category-list { + list-style: none; + padding: 0; + + .category-item { + margin-bottom: 15px; + + a { + display: flex; + align-items: center; + text-decoration: none; + color: #666; + font-weight: 600; + font-size: 0.9rem; + text-transform: uppercase; + transition: color 0.3s ease; + + img { + width: 20px; + margin-right: 15px; + opacity: 0.7; + } + + &.active, + &:hover { + color: var(--food-green); + background-color: transparent !important; + + img { + opacity: 1; + } + } + + &.active, + &.nav-link.active { + color: #000000 !important; + background-color: transparent !important; + border: none !important; + box-shadow: none !important; + + span { + color: #000000 !important; + } + + img { + filter: none !important; + opacity: 1 !important; + } + } + } + } + } + + /* Price Filter */ + .price-slider-wrapper { + .slider-rail { + height: 4px; + background: #eee; + position: relative; + margin: 20px 0; + + .slider-track { + position: absolute; + height: 100%; + background: var(--food-green); + } + + .slider-handle { + width: 14px; + height: 14px; + background: var(--food-green); + border-radius: 50%; + position: absolute; + top: -5px; + } + } + + .price-label-row { + display: flex; + justify-content: space-between; + align-items: center; + + .price-text { + font-size: 0.85rem; + color: #666; + + span { + font-weight: 700; + color: #333; + } + } + + .btn-filter { + background: var(--food-green); + color: white !important; + border: none; + padding: 6px 18px; + border-radius: 4px; + font-weight: 700; + font-size: 0.8rem; + text-transform: uppercase; + } + } + } + + /* New Arrivals */ + .arrival-list { + .arrival-item { + display: flex; + gap: 15px; + margin-bottom: 20px; + + .arrival-img { + width: 60px; + height: 60px; + background: #f9f9f9; + border-radius: 50%; + display: flex; + align-items: center; + justify-content: center; + padding: 5px; + + img { + width: 100%; + } + } + + .arrival-info { + .rating { + color: var(--food-yellow); + font-size: 0.7rem; + margin-bottom: 4px; + } + + .name { + font-weight: 700; + color: #333; + font-size: 0.85rem; + line-height: 1.2; + margin-bottom: 4px; + } + + .price { + font-size: 0.8rem; + + del { + color: #aaa; + margin-right: 6px; + } + + span { + color: var(--food-green); + font-weight: 800; + } + } + } + } + } + } + } + + /* Top Bar Control */ + .food-top-bar { + background: white; + padding: 15px 25px; + border-radius: 8px; + box-shadow: 0 4px 20px rgba(0, 0, 0, 0.03); + margin-bottom: 30px; + display: flex; + justify-content: space-between; + align-items: center; + border: 1px solid #f5f5f5; + + .control-left { + display: flex; + align-items: center; + gap: 20px; + + .btn-filtering { + background: transparent; + border: 1px solid #eee; + padding: 8px 15px; + border-radius: 4px; + color: #333; + font-size: 0.85rem; + font-weight: 700; + + i { + color: var(--food-green); + margin-right: 8px; + } + } + + .result-count { + font-size: 0.85rem; + color: #888; + + span { + font-weight: 700; + color: var(--food-green); + } + } + } + + .control-right { + display: flex; + align-items: center; + gap: 25px; + + .sort-by-wrapper { + font-size: 0.85rem; + color: #888; + + span { + color: #333; + font-weight: 700; + margin-left: 8px; + } + } + + .view-switcher { + display: flex; + gap: 5px; + + .view-btn { + width: 32px; + height: 32px; + display: flex; + align-items: center; + justify-content: center; + border: 1px solid #eee; + border-radius: 4px; + color: #aaa; + + &.active { + background: #f5f5f5; + color: var(--food-green); + border-color: #ddd; + } + } + } + } + } + + /* Product Cards Grid */ + #products_grid { + .oe_product { + padding: 15px !important; + + .oe_product_cart { + border: none !important; + background: white !important; + border-radius: 12px !important; + box-shadow: var(--food-shadow) !important; + overflow: hidden !important; + transition: transform 0.4s ease !important; + position: relative !important; + + &:hover { + transform: translateY(-10px) !important; + + .btn-add-to-cart-overlay { + opacity: 1; + transform: translateY(0); + } + } + + /* Highlighted Cards (Yellow BG) */ + &.card-highlighted { + background: var(--food-yellow) !important; + + .o_wsale_product_information { + background: var(--food-yellow) !important; + } + + .btn-add-to-cart-overlay { + background: var(--food-text) !important; + color: white !important; + } + } + + .oe_product_image { + height: 240px !important; + position: relative !important; + background: transparent !important; + padding: 0 !important; + + img { + object-fit: contain !important; + height: 100% !important; + width: 100% !important; + transition: transform 0.5s ease; + } + + .wishlist-btn { + position: absolute; + top: 15px; + left: 15px; + width: 36px; + height: 36px; + background: #333; + color: white !important; + border-radius: 6px; + display: flex; + align-items: center; + justify-content: center; + font-size: 0.9rem; + z-index: 10; + } + + .discount-badge { + position: absolute; + top: 15px; + right: 15px; + background: var(--food-yellow); + color: #333; + font-weight: 800; + padding: 4px 8px; + border-radius: 4px; + font-size: 0.75rem; + z-index: 10; + } + } + + .o_wsale_product_information { + padding: 15px 20px 25px !important; + text-align: center !important; + background: white !important; + + .btn-add-to-cart-overlay { + background: #ffb800 !important; + color: #000000 !important; + padding: 10px; + border-radius: 6px; + font-weight: 700; + font-size: 0.85rem; + text-transform: uppercase; + display: flex; + align-items: center; + justify-content: center; + gap: 10px; + margin-bottom: 15px; + opacity: 0; + transform: translateY(10px); + transition: all 0.3s ease; + text-decoration: none; + + i { + font-size: 1rem; + } + } + + .price-row { + margin-bottom: 8px; + + del { + color: #aaa; + margin-right: 8px; + font-size: 0.8rem; + } + + span { + color: #333; + font-weight: 800; + font-size: 1rem; + } + } + + .o_wsale_products_item_title { + margin-bottom: 10px !important; + + a { + font-size: 0.95rem !important; + font-weight: 800 !important; + color: var(--food-text) !important; + text-transform: uppercase; + letter-spacing: 0.5px; + } + } + + .star-rating { + color: var(--food-yellow); + font-size: 0.75rem; + display: flex; + justify-content: center; + gap: 2px; + } + } + } + } + } + + /* Custom Pagination */ + .products_pager { + margin-top: 60px; + + ul.pagination { + justify-content: center !important; + gap: 10px; + + li.page-item { + .page-link { + width: 40px; + height: 40px; + display: flex; + align-items: center; + justify-content: center; + border: 1px solid #eee; + border-radius: 50% !important; + color: #666; + font-weight: 700; + font-size: 0.9rem; + background: white; + + &:hover { + background: #f5f5f5; + border-color: #ddd; + } + } + + &.active .page-link { + background: var(--food-green) !important; + color: white !important; + border-color: var(--food-green) !important; + box-shadow: 0 5px 15px rgba(0, 104, 55, 0.2); + } + } + } + } +} + +/* Product Details Page Styling */ +#product_detail { + padding-top: 50px; + + /* Breadcrumb Color */ + .breadcrumb-item a { + color: #ffb800 !important; + font-weight: 700 !important; + } + + .product-details-wrapper { + .display-5 { + font-weight: 800; + color: var(--food-text); + letter-spacing: -0.5px; + } + + .product-price { + h2 { + color: var(--food-green); + font-family: inherit; + } + } + + .css_quantity { + border: 2px solid #eee !important; + border-radius: 50px !important; + overflow: visible !important; + display: inline-flex; + margin-right: 15px; + background: white !important; + height: 45px !important; + align-items: center; + + + .btn { + border: none !important; + background: transparent !important; + padding: 0 15px !important; + color: #333 !important; + + &:hover { + background: #f9f9f9 !important; + } + } + + .quantity { + border: none !important; + width: 80px !important; + max-width: 80px !important; + text-align: center !important; + font-weight: 900 !important; + font-size: 20px !important; + background: #ffffff !important; + color: #000000 !important; + padding: 0 !important; + margin: 0 !important; + height: 45px !important; + display: inline-block !important; + vertical-align: middle !important; + line-height: 45px !important; + box-shadow: none !important; + outline: none !important; + appearance: none !important; + -webkit-appearance: none !important; + } + + + } + + #add_to_cart { + background: #ffb800 !important; + color: #000000 !important; + border: none !important; + border-radius: 50px !important; + padding: 12px 40px !important; + font-weight: 800 !important; + text-transform: uppercase !important; + letter-spacing: 1px !important; + transition: all 0.3s !important; + box-shadow: 0 10px 20px rgba(254, 205, 79, 0.2) !important; + + &:hover { + background: #e5b945 !important; + transform: translateY(-2px) !important; + } + } + } +} + +/* Hide Duplicate Odoo Elements on Product Page */ +#product_details { + display: flex !important; + flex-direction: column !important; + + /* Hide ANY title, price, or description that is NOT inside our custom wrapper */ + >h1:not(.display-5), + >.product_price, + >#product_attributes_simple, + >.text-muted:not(.Shivasakthi-premium-content *), + >div[data-name="description_sale"] { + display: none !important; + } + + /* Target the Terms and Conditions block */ + + /* Dedicated hide for Odoo's extra info */ + hr+div, + a[href*="terms-and-conditions"] { + display: none !important; + } + + /* Force Add to Cart to theme yellow everywhere in shop */ + #add_to_cart, + .a-submit, + .btn-add-to-cart-overlay { + background: #ffb800 !important; + color: #000000 !important; + border: none !important; + } +} + +/* Update "View cart" button color in toast notification */ +.o_wsale_toast .btn-primary, +.o_wsale_add_to_cart_message a.btn-primary, +#wsale_ajax_cart_msg a.btn-primary { + background-color: #ffb800 !important; + color: #000000 !important; + border-color: #ffb800 !important; + font-weight: 700 !important; + box-shadow: 0 4px 12px rgba(254, 205, 79, 0.2) !important; + transition: all 0.3s ease !important; +} + +.o_wsale_toast .btn-primary:hover, +.o_wsale_add_to_cart_message a.btn-primary:hover, +#wsale_ajax_cart_msg a.btn-primary:hover { + background-color: #e5b945 !important; + border-color: #e5b945 !important; + transform: translateY(-1px) !important; +} + +/* Update Checkout button on cart page */ +#o_cart_summary .btn-primary, +.oe_website_sale .btn-primary[href='/shop/checkout'], +.oe_website_sale .btn-primary.a-submit, +.oe_website_sale a.btn-primary, +.oe_cart .btn-primary { + background-color: #ffb800 !important; + color: #0e1317 !important; + border-color: #ffb800 !important; + font-weight: 800 !important; + text-transform: uppercase !important; + padding: 12px 30px !important; + border-radius: 8px !important; + transition: all 0.3s ease !important; + box-shadow: 0 4px 15px rgba(254, 205, 79, 0.2) !important; +} + +#o_cart_summary .btn-primary:hover, +.oe_website_sale .btn-primary[href='/shop/checkout']:hover, +.oe_website_sale .btn-primary.a-submit:hover, +.oe_website_sale a.btn-primary:hover, +.oe_cart .btn-primary:hover { + background-color: #e5b945 !important; + border-color: #e5b945 !important; + transform: translateY(-2px) !important; + color: #000000 !important; + box-shadow: 0 6px 20px rgba(254, 205, 79, 0.4) !important; +} diff --git a/addons/dine360_theme_shivasakthi/static/src/scss/theme.scss b/addons/dine360_theme_shivasakthi/static/src/scss/theme.scss new file mode 100644 index 0000000..dead622 --- /dev/null +++ b/addons/dine360_theme_shivasakthi/static/src/scss/theme.scss @@ -0,0 +1,2230 @@ +/* Global Font Family Overrides */ +h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6 { + font-family: 'Bebas Neue', sans-serif !important; +} +p, li, .lead, .hero-desc, .blog-excerpt { + font-family: 'Roboto', sans-serif !important; +} + +/* Shivasakthi Theme Custom Styles */ + +/* Header Navigation Styles */ +header { + border: none !important; + + /* Main Nav (Black/Charcoal by default, absolute transparent on homepage) */ + .o_header_main_nav { + background-color: #0c0f12 !important; /* Sleek dark header base */ + box-shadow: 0 4px 10px rgba(0, 0, 0, 0.3); + transition: all 0.3s ease; + + .navbar-nav { + .nav-link { + color: white !important; + font-family: 'Bebas Neue', sans-serif !important; + font-size: 16px; + font-weight: 400; + text-transform: uppercase; + letter-spacing: 1.5px; + padding: 12px 18px !important; + transition: color 0.3s ease; + + &:hover, &.active { + color: #ffb800 !important; + } + } + } + + .navbar-brand img { + transition: transform 0.3s ease; + + &:hover { + transform: scale(1.05); + } + } + + /* Order Now Button */ + .btn-order-now { + background-color: #ffb800 !important; + color: white !important; + border: none; + border-radius: 4px; + font-family: 'Bebas Neue', sans-serif !important; + font-weight: 400; + font-size: 15px; + letter-spacing: 1px; + padding: 10px 24px !important; + transition: all 0.3s ease; + text-transform: uppercase; + + &:hover { + background-color: white !important; + color: #ffb800 !important; + transform: translateY(-2px); + box-shadow: 0 5px 15px rgba(254, 205, 79, 0.4); + } + } + + /* Cart Icon and Badge Styling */ + .o_wsale_shopping_cart { + padding: 10px !important; + transition: all 0.3s ease; + + &:hover { + transform: translateY(-2px); + + .fa-shopping-cart { + color: #ffb800 !important; + } + + .cart-badge { + color: white !important; + background-color: #ffb800 !important; + opacity: 1 !important; + } + } + + .cart-badge { + color: white !important; + background-color: #ffb800 !important; + font-weight: 800 !important; + z-index: 10; + border: 2px solid #0c0f12 !important; + transition: all 0.3s ease; + } + } + + /* Mobile Icon (Hamburger) Fix */ + .navbar-toggler { + border: 1px solid rgba(255, 255, 255, 0.2) !important; + padding: 8px !important; + margin: 10px 0; + display: inline-flex !important; + align-items: center; + justify-content: center; + + .navbar-toggler-icon { + filter: none !important; + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='white' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e") !important; + } + + &:focus { + box-shadow: none !important; + } + } + } +} + +/* Absolute transparent header overlay on Homepage only */ +@media (min-width: 992px) { + body.homepage { + header.header_transparent_overlay { + position: absolute !important; + width: 100%; + top: 0; + left: 0; + z-index: 1000; + background-color: transparent !important; + border: none !important; + + .o_header_main_nav { + background-color: transparent !important; + box-shadow: none !important; + } + } + } +} + +// Hero Button Hover +.btn-lg.flat:hover, +.btn-custom:hover { + background-color: #ffb800 !important; + color: white !important; + transform: translateY(-3px); + transition: all 0.3s ease; +} + +// Category Card Hover +.category-item { + transition: all 0.3s ease; + cursor: pointer; + + &:hover { + transform: translateY(-10px); + + .category-img { + border-color: #ffb800 !important; + box-shadow: 0 10px 20px rgba(0, 0, 0, 0.1); + } + } +} + +// Background Text Overlay +.bg-text-overlay { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + width: 100%; + text-align: center; + z-index: 0; + pointer-events: none; + + h1 { + font-size: 8rem; + font-weight: 900; + color: rgba(0, 0, 0, 0.03); // Very subtle + white-space: nowrap; + text-transform: uppercase; + margin: 0; + } +} + +// Hero Shape Animation +.hero-half-tomato-left { + position: absolute; + top: 50%; + left: -40%; + width: clamp(120px, 15vw, 250px); + z-index: 2; + pointer-events: none; + filter: drop-shadow(5px 5px 15px rgba(0, 0, 0, 0.3)); + animation: floatSlight 15s ease-in-out infinite; +} + +@keyframes shapeFloat { + + 0%, + 100% { + transform: translateY(0) rotate(0deg) scale(1); + } + + 33% { + transform: translateY(-20px) rotate(3deg) scale(1.02); + } + + 66% { + transform: translateY(10px) rotate(-2deg) scale(0.98); + } +} + +@keyframes floatSlight { + + 0%, + 100% { + transform: translate(0, 0) rotate(0deg); + } + + 50% { + transform: translate(15px, -15px) rotate(5deg); + } +} + +@keyframes floatRotate { + 0% { + transform: translateY(0) rotate(0deg); + } + + 50% { + transform: translateY(-30px) rotate(180deg); + } + + 100% { + transform: translateY(0) rotate(360deg); + } +} + +@keyframes pulseSubtle { + + 0%, + 100% { + transform: scale(1); + opacity: 0.8; + } + + 50% { + transform: scale(1.05); + opacity: 1; + } +} + +// Hero Floating Elements +.hero-tomato-right { + position: absolute; + top: 5%; + right: 2%; + width: clamp(100px, 15vw, 220px); + z-index: 2; + pointer-events: none; + filter: drop-shadow(10px 10px 20px rgba(0, 0, 0, 0.3)); + animation: shapeFloat 8s ease-in-out infinite; +} + +.hero-leaf-right { + position: absolute; + top: 25%; + right: 8%; + width: 60px; + z-index: 1; + pointer-events: none; + animation: floatSlight 10s ease-in-out infinite reverse; +} + +.hero-lettuce-left { + position: absolute; + bottom: -40%; + left: -40%; + width: clamp(150px, 20vw, 350px); + z-index: 3; + pointer-events: none; + filter: drop-shadow(-10px 10px 25px rgba(0, 0, 0, 0.4)); + animation: shapeFloat 12s ease-in-out infinite; +} + +.hero-sketches-left { + position: absolute; + top: 10%; + left: 4%; + width: clamp(200px, 25vw, 400px); + z-index: 1; + pointer-events: none; + opacity: 0.25; + animation: floatSlight 20s linear infinite; +} + +// Section Headers +section h2.display-3, +section h2.display-4 { + font-size: 40px !important; + font-weight: 900 !important; + line-height: 50px !important; + text-transform: uppercase; + letter-spacing: -0.5px; + + @media (max-width: 991px) { + font-size: 32px !important; + line-height: 42px !important; + } + + @media (max-width: 767px) { + font-size: 28px !important; + line-height: 38px !important; + } +} + +.section-title-wrapper { + position: relative; + z-index: 1; + text-align: center; + margin-bottom: 50px; + + .title-icon { + width: 40px; + margin: 0 10px; + filter: brightness(0.8); + } +} + +// Marquee Animation +.quee-container { + overflow: hidden; + position: relative; + background: #f4f1ea; + padding: 40px 0; + + .quee-content { + display: flex; + width: 200%; + animation: marquee 30s linear infinite; + + h1 { + font-size: 6rem; + font-weight: 900; + color: rgba(0, 0, 0, 0.05); + white-space: nowrap; + text-transform: uppercase; + margin: 0; + padding-right: 100px; + letter-spacing: 5px; + } + } +} + +@keyframes marquee { + 0% { + transform: translateX(0); + } + + 100% { + transform: translateX(-50%); + } +} + +// Slider Adjustments +#categoryCarousel { + .carousel-inner { + padding-bottom: 20px; + } +} + +// About Section Styles +.s_about_premium { + position: relative; + overflow: hidden; + background-color: #F4F1EA !important; + padding: 100px 0; + + .floating-lemon { + position: absolute; + left: -40px; + top: 35%; + width: 150px; + z-index: 10; + animation: float 6s ease-in-out infinite; + } + + .floating-leaves { + position: absolute; + left: 80px; + bottom: 8%; + width: 180px; + z-index: 10; + animation: float 8s ease-in-out infinite; + } + + .floating-bellpepper { + position: absolute; + right: -30px; + top: 80px; + width: 140px; + z-index: 10; + animation: float 7s ease-in-out infinite; + } + + .about-image-wrapper { + position: relative; + display: inline-block; + + &::before { + content: ""; + position: absolute; + left: -15px; + top: -15px; + width: 100%; + height: 100%; + z-index: 0; + pointer-events: none; + } + + img { + position: relative; + z-index: 5; + max-width: 100%; + height: auto; + display: block; + } + } + + .about-content { + h2 { + font-size: 2.8rem; + font-weight: 900; + color: #0e1317; + line-height: 1.2; + margin-bottom: 25px; + } + + h5 { + font-size: 1.2rem; + font-weight: 700; + color: #0e1317; + margin-bottom: 20px; + } + + p { + font-size: 15px; + color: rgba(4, 18, 29, 0.7); + line-height: 1.8; + margin-bottom: 20px; + } + } +} + +@keyframes float { + 0% { + transform: translateY(0px) rotate(0deg); + } + + 50% { + transform: translateY(-20px) rotate(5deg); + } + + 100% { + transform: translateY(0px) rotate(0deg); + } +} + +/* Contact Section Premium */ +.s_contact_premium { + background-color: #F4F1EA !important; + padding: 100px 0; + position: relative; + overflow: hidden; + + .contact-image-wrapper { + position: relative; + display: inline-block; + + &::before { + content: ""; + position: absolute; + left: -15px; + top: -15px; + width: 100%; + height: 100%; + z-index: 0; + pointer-events: none; + } + + img { + position: relative; + z-index: 5; + max-width: 100%; + height: auto; + display: block; + } + } + + .contact-form-card { + background: white; + padding: 50px; + border-radius: 15px; + box-shadow: 0 15px 40px rgba(0, 0, 0, 0.05); + + h2 { + font-size: 2.2rem; + font-weight: 800; + color: #0e1317; + line-height: 1.3; + margin-bottom: 35px; + } + + .s_website_form_label { + font-size: 14px; + font-weight: 500; + color: #666; + margin-bottom: 8px; + display: block; + text-align: left !important; + width: auto !important; + padding: 0 !important; + + .s_website_form_mark { + color: #ffb800; + margin-left: 3px; + } + } + + .form-control, + .form-select { + background-color: #f8f9fa !important; + border: 1px solid #ffb800 !important; + border-radius: 10px !important; + padding: 14px 18px !important; + font-size: 15px !important; + color: #0e1317 !important; + transition: all 0.3s ease; + + &::placeholder { + color: #adb5bd; + } + + &:focus { + border-color: rgba(43, 177, 165, 0.3) !important; + background-color: white !important; + box-shadow: 0 5px 15px rgba(43, 177, 165, 0.1) !important; + } + } + + .s_website_form_send { + background-color: #ffb800 !important; + color: #0e1317 !important; + border: none !important; + border-radius: 10px !important; + padding: 16px !important; + font-weight: 800 !important; + font-size: 15px !important; + text-transform: uppercase !important; + letter-spacing: 1px !important; + width: 100% !important; + margin-top: 15px !important; + display: flex !important; + align-items: center !important; + justify-content: center !important; + gap: 10px; + transition: all 0.3s ease !important; + box-shadow: 0 4px 10px rgba(254, 205, 79, 0.2) !important; + + &:hover { + background-color: #0e1317 !important; + color: #ffb800 !important; + transform: translateY(-2px) !important; + box-shadow: 0 8px 20px rgba(0, 0, 0, 0.2) !important; + } + + &::after { + content: "\2192"; + font-size: 18px; + } + } + } +} + +// Why Choose Section +.s_why_choose_premium { + background-color: #0e1317; + position: relative; + overflow: hidden; + + .choose-left-accent { + position: absolute; + left: 0; + bottom: -20px; + width: 180px; + z-index: 1; + opacity: 0.9; + } + + .choose-right-accent { + position: absolute; + right: 0; + top: 10%; + width: 250px; + z-index: 1; + opacity: 0.9; + } + + .choose-pepper-float { + position: absolute; + left: 5%; + top: 10%; + width: 80px; + z-index: 2; + animation: float 5s ease-in-out infinite; + } + + .choose-main-dish-wrapper { + position: relative; + z-index: 5; + + &::after { + content: ""; + position: absolute; + top: -20px; + right: 20%; + width: 300px; + height: 200px; + background: radial-gradient(circle, rgba(255, 255, 255, 0.05) 0%, transparent 70%); + z-index: -1; + } + + img { + filter: drop-shadow(0 30px 50px rgba(0, 0, 0, 0.5)); + } + } + + .choose-content { + position: relative; + z-index: 10; + + h6 { + font-weight: 800; + letter-spacing: 1px; + } + + h2 { + letter-spacing: -1px; + margin-bottom: 25px; + } + + p { + line-height: 1.8; + opacity: 0.8; + } + } +} + +// Popular Deals Section +.s_popular_deals_premium { + background-color: white; + + .deal-item { + display: flex; + align-items: center; + margin-bottom: 10px; + transition: all 0.3s ease; + padding: 10px; + border-radius: 8px; + cursor: pointer; + + &:hover, + &.active { + background-color: #f8f9fa; + box-shadow: 0 5px 15px rgba(0, 0, 0, 0.05); + + h6 { + color: #ffb800 !important; + } + } + + .deal-img-wrapper { + width: 80px; + height: 80px; + flex-shrink: 0; + background: #f8f9fa; + border-radius: 4px; + overflow: hidden; + margin-right: 15px; + + img { + width: 100%; + height: 100%; + object-fit: cover; + } + } + + .deal-details { + flex-grow: 1; + + h6 { + font-size: 18px; + font-weight: 800; + color: #0e1317; + margin-bottom: 2px; + } + + p { + font-size: 12px; + color: #888; + margin: 0; + } + } + + .deal-price { + font-size: 16px; + font-weight: 800; + color: #0e1317; + white-space: nowrap; + } + } + + .deal-center-image { + position: relative; + padding: 20px; + + &::before { + content: ""; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: #ffb800d4; + z-index: 0; + border-radius: 4px; + } + + img { + position: relative; + z-index: 1; + width: 100%; + // border-radius: 50%; + box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1); + } + } +} + +// Testimonials Section +.s_testimonials_premium { + background-color: #0e1317; + position: relative; + overflow: hidden; + + .testimonial-main-image-wrapper { + position: relative; + border-radius: 0 400px 400px 0; + overflow: hidden; + border-right: 15px solid #ffb800; + + img { + width: 100%; + height: 100%; + object-fit: cover; + } + + .video-btn-wrapper { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + z-index: 20; + + .play-btn { + width: 150px; + height: 150px; + background: transparent; + border: none; + position: relative; + display: flex; + align-items: center; + justify-content: center; + cursor: pointer; + + .play-icon { + width: 70px; + height: 70px; + background: white; + border-radius: 50%; + display: flex; + align-items: center; + justify-content: center; + color: #0e1317; + font-size: 24px; + box-shadow: 0 0 20px rgba(0, 0, 0, 0.3); + z-index: 5; + } + + .rotating-text { + position: absolute; + width: 100%; + height: 100%; + animation: rotate 15s linear infinite; + + img { + width: 100%; + height: 100%; + object-fit: contain; + } + } + } + } + } + + .testimonial-content-side { + padding: 80px 40px; + position: relative; + z-index: 10; + color: white; + + .google-reviews-logo { + width: 180px; + margin-bottom: 25px; + } + + .testimonial-carousel { + .carousel-item { + p { + font-size: 18px; + line-height: 1.8; + font-style: italic; + color: rgba(255, 255, 255, 0.8); + } + } + } + + .testimonial-controls { + display: flex; + gap: 15px; + margin-top: 40px; + + .control-btn { + width: 50px; + height: 50px; + border: 1px solid rgba(255, 255, 255, 0.3); + border-radius: 50%; + display: flex; + align-items: center; + justify-content: center; + color: white; + background: transparent; + transition: all 0.3s ease; + + &:hover { + background: #ffb800; + border-color: #ffb800; + color: #0e1317; + } + + &.next-btn { + background: #ffb800; + border-color: #ffb800; + color: #0e1317; + } + } + } + } + + .testimonial-accent-right { + position: absolute; + right: 0; + bottom: 0; + width: 150px; + z-index: 5; + } +} + +@keyframes rotate { + from { + transform: rotate(0deg); + } + + to { + transform: rotate(360deg); + } +} + +// FAQ Section +.s_faq_premium { + background-color: #F4F1EA; + + .faq-accordion { + .accordion-item { + background-color: white; + border: none; + border-radius: 12px !important; + margin-bottom: 20px; + box-shadow: 0 5px 15px rgba(0, 0, 0, 0.05); + overflow: hidden; + + .accordion-button { + background-color: white; + color: #0e1317; + font-weight: 700; + padding: 20px 25px; + border: none; + box-shadow: none; + position: relative; + font-size: 18px; + + &:not(.collapsed) { + color: #ffb800; + + &::after { + content: "-"; + transform: none; + background-image: none; + color: #ffb800; + font-size: 30px; + line-height: 1; + } + } + + &::after { + content: "+"; + background-image: none; + color: #ffb800; + font-size: 24px; + font-weight: 300; + display: flex; + align-items: center; + justify-content: center; + } + } + + .accordion-body { + padding: 0 25px 25px; + color: #555; + font-size: 15px; + line-height: 1.6; + } + } + } + + .faq-carousel-wrapper { + border-radius: 15px; + overflow: hidden; + box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1); + + .carousel-control-prev, + .carousel-control-next { + width: 40px; + height: 40px; + background: #ffb800; + border-radius: 50%; + top: 50%; + transform: translateY(-50%); + opacity: 0.9; + + span { + color: #0e1317; + font-size: 12px; + } + } + + .carousel-control-prev { + left: 15px; + } + + .carousel-control-next { + right: 15px; + } + } + +} + +// Global button class for multiple sections +.know-more-btn { + background-color: #ffb800; + color: #0e1317 !important; + font-weight: 700; + padding: 12px 30px; + border-radius: 4px; + text-transform: uppercase; + display: inline-flex; + align-items: center; + gap: 10px; + margin-top: 30px; + text-decoration: none; + transition: all 0.3s ease; + + span { + background: black; + color: white !important; + width: 24px; + height: 24px; + display: flex; + align-items: center; + justify-content: center; + border-radius: 2px; + font-size: 12px; + transition: all 0.3s ease; + + i { + color: white !important; + } + } + + &:hover { + background-color: #ffb800 !important; + color: white !important; + transform: translateY(-3px); + + span { + background-color: white !important; + color: #ffb800 !important; + + i { + color: #ffb800 !important; + } + } + } +} + +// Blog Detail Page - ensure content is not hidden by floating footer CTA bar +// The footer's .footer-cta-bar-wrapper uses margin-top: -140px to float up into page content +.s_blog_detail_section { + padding-bottom: 100px !important; +} + +// Also ensure the oe_structure wrap div doesn't clip content +#wrap>.s_blog_detail_section:last-child { + padding-bottom: 100px !important; +} + +// Blog Section +.s_blog_premium { + background-color: #F4F1EA; + position: relative; + overflow: hidden; + + .blog-card { + background: white; + border-radius: 12px; + overflow: hidden; + height: 100%; + box-shadow: 0 5px 15px rgba(0, 0, 0, 0.05); + transition: all 0.4s cubic-bezier(0.165, 0.84, 0.44, 1); + position: relative; + color: #0e1317; + + .blog-img-wrapper { + position: relative; + height: 280px; + overflow: hidden; + + img { + width: 100%; + height: 100%; + object-fit: cover; + transition: transform 0.6s cubic-bezier(0.165, 0.84, 0.44, 1); + } + + .date-badge { + position: absolute; + bottom: -20px; + left: 20px; + width: 60px; + height: 60px; + background: white; + border: 2px solid #ffb800; + border-radius: 8px; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + font-weight: 700; + z-index: 5; + box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1); + transition: all 0.3s ease; + + span { + display: block; + line-height: 1; + + &:first-child { + font-size: 20px; + color: #0e1317; + transition: color 0.3s; + } + + &:last-child { + font-size: 10px; + color: #ffb800; + text-transform: uppercase; + transition: color 0.3s; + } + } + } + } + + .blog-body { + padding: 40px 25px 30px; + transition: all 0.3s ease; + + .category-line { + font-size: 11px; + text-transform: uppercase; + letter-spacing: 1px; + color: #888; + margin-bottom: 20px; + display: inline-block; + padding: 4px 12px; + background: #f8f9fa; + border-radius: 4px; + transition: all 0.3s ease; + } + + h4 { + font-size: 20px; + font-weight: 800; + margin-bottom: 15px; + line-height: 1.4; + transition: color 0.3s ease; + } + + .blog-excerpt { + font-size: 14px; + line-height: 1.6; + color: #666; + transition: color 0.3s ease; + } + } + + &:hover { + transform: translateY(-10px); + box-shadow: 0 15px 35px rgba(0, 0, 0, 0.15); + + .blog-img-wrapper { + img { + transform: scale(1.1); + } + + .date-badge { + border: 2px dashed #ffb800; + } + } + + .blog-body { + h4 { + color: #ffb800; + } + } + } + } + + .fries-accent { + position: absolute; + bottom: -20px; + left: -30px; + width: 250px; + z-index: 10; + pointer-events: none; + } +} + +// Gallery Slider Section +.s_gallery_slider_premium { + background-color: #F4F1EA; + padding: 30px 0; + overflow: hidden; + position: relative; + border-top: 1px solid rgba(0, 0, 0, 0.05); + + .gallery-container { + display: flex; + align-items: center; + } + + .gallery-track { + display: flex; + gap: 15px; + transition: transform 0.8s cubic-bezier(0.165, 0.84, 0.44, 1); + } + + .gallery-item { + width: 300px; + height: 300px; + flex-shrink: 0; + overflow: hidden; + border-radius: 8px; + box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1); + + img { + width: 100%; + height: 100%; + object-fit: cover; + transition: transform 0.5s ease; + } + + &:hover img { + transform: scale(1.1); + } + } +} + +// Footer +// Footer Refinement +footer#bottom { + background-color: #0e1317 !important; + color: white; + position: relative; + padding-top: 200px; // Space for the floating bar + overflow: visible; + + // Floating Teal Bar + .footer-cta-bar-wrapper { + position: absolute; + top: -60px; + left: 0; + right: 0; + z-index: 20; + + .footer-cta-bar { + background-color: #ffb800; + border-radius: 20px; + padding: 30px 50px; + box-shadow: 0 10px 30px rgba(0, 0, 0, 0.2); + display: flex; + justify-content: space-between; + align-items: center; + + .cta-item { + display: flex; + align-items: center; + gap: 20px; + color: white; + + .icon-circle { + width: 50px; + height: 50px; + background: white; + border-radius: 50%; + display: flex; + align-items: center; + justify-content: center; + color: #ffb800; + font-size: 20px; + } + + strong { + display: block; + font-size: 14px; + opacity: 0.8; + } + + p { + margin: 0; + font-weight: 700; + font-size: 16px; + } + } + } + } + + .footer-title { + font-size: 24px; + font-weight: 800; + margin-bottom: 30px; + position: relative; + padding-bottom: 10px; + + &::after { + content: ''; + position: absolute; + left: 0; + bottom: 0; + width: 50px; + height: 3px; + background: #ffb800; + } + } + + .footer-logo { + max-width: 180px; + } + + .social-links { + display: flex; + gap: 10px; + + a { + width: 35px; + height: 35px; + border: 1px solid rgba(255, 255, 255, 0.2); + border-radius: 4px; + display: flex; + align-items: center; + justify-content: center; + color: white !important; + transition: all 0.3s; + + &:hover { + background: #ffb800; + border-color: #ffb800; + color: #0e1317; + } + } + } + + .footer-list { + list-style: none; + padding: 0; + margin: 0; + + li { + margin-bottom: 15px; + display: flex; + align-items: flex-start; + gap: 10px; + + i { + color: #ffb800; + font-size: 12px; + margin-top: 5px; + } + + a { + color: white !important; + text-decoration: none; + transition: color 0.3s; + + &:hover { + color: #ffb800; + } + } + } + } + + .footer-accent-left { + position: absolute; + left: 0; + bottom: 100px; + width: 200px; + opacity: 0.8; + pointer-events: none; + } + + .footer-accent-right { + position: absolute; + right: 40px; + top: 40%; + transform: translateY(-50%); + width: 250px; + opacity: 0.8; + pointer-events: none; + border-radius: 50%; + } + + .footer-copyright-bar { + background-color: #ffb800; + color: #0e1317; + text-align: center; + padding: 15px; + font-weight: 700; + margin-top: 80px; + } +} + +// Mobile Responsive Footer +@media (max-width: 991px) { + footer#bottom { + padding-top: 200px; + + .footer-cta-bar-wrapper { + top: -150px; + + .footer-cta-bar { + flex-direction: column; + gap: 20px; + padding: 30px; + } + } + + .footer-accent-left, + .footer-accent-right { + display: none; + } + } +} + +/* About Us Hero Banner */ +.about-hero-banner { + background: linear-gradient(rgba(4, 18, 29, 0.4), rgba(4, 18, 29, 0.4)), url('/dine360_theme_shivasakthi/static/src/img/about-banner-bg.png') no-repeat center center !important; + background-size: cover !important; + min-height: 450px !important; + display: flex !important; + align-items: center !important; + justify-content: center !important; + text-align: center; + position: relative; + padding: 100px 0 !important; + + h1 { + font-size: 5rem !important; + font-weight: 900 !important; + color: white !important; + text-transform: uppercase; + margin-bottom: 5px !important; + letter-spacing: 2px; + } + + .breadcrumb-container { + font-size: 1.1rem; + font-weight: 600; + color: white; + + a { + color: white; + text-decoration: none; + transition: color 0.3s; + + &:hover { + color: #ffb800; + } + } + + .separator { + margin: 0 10px; + opacity: 0.7; + } + + .active-item { + color: #ffb800; + } + } +} + +/* Global Red Color Removal & Theme Alignment */ +.text-danger { + color: #ffb800 !important; // Replace red text with theme teal +} + +.bg-danger, +.btn-danger { + background-color: #ffb800 !important; + border-color: #ffb800 !important; + color: white !important; +} + +.badge-danger { + background-color: #ffb800 !important; + color: #0e1317 !important; +} + +// Force Shop category sidebar active item to NOT be red and ensure visibility +#products_grid_before { + .nav-link { + transition: all 0.2s ease; + + &:hover { + background-color: rgba(43, 177, 165, 0.1) !important; + color: #ffb800 !important; + } + + &.active { + background-color: #ffb800 !important; + color: white !important; + border-radius: 8px; + + span, + i, + b, + strong { + color: white !important; + } + + &:hover { + color: white !important; + background-color: #259a8f !important; + } + } + } +} + +// Global Link Hover & Active Color Fix +// Only apply global overrides to frontend/website elements to avoid breaking backend UI +/* Link hover color */ +body:not(.editor_enable):not(.o_edit_mode) a:hover, +body:not(.editor_enable):not(.o_edit_mode) a:hover * { + color: #529791 !important; +} + +/* Button hover color */ +body:not(.editor_enable):not(.o_edit_mode) .btn:hover, +body:not(.editor_enable):not(.o_edit_mode) .btn:hover * { + color: #fff !important; + background-color: #ffb800 !important; +} + +.active, +.nav-link.active, +.nav-pills .nav-link.active { + color: #ffb800 !important; +} + + +// Fix for Odoo Backend Editor Menu overlap +body.o_edit_mode { + #top { + margin-top: 0px !important; + position: relative !important; // Some editor modes hate fixed headers + } +} + +// Global Primary Button Color Fix (including Checkout) +.btn-primary, +.btn-primary:not(:disabled):not(.disabled):active, +.btn-primary:not(:disabled):not(.disabled).active, +.show>.btn-primary.dropdown-toggle { + background-color: #ffb800 !important; + color: #0e1317 !important; + border-color: #ffb800 !important; +} + +.btn-primary:hover { + background-color: #e5b945 !important; + border-color: #e5b945 !important; + color: #000000 !important; +} + +// Special case for buttons or text that should be white on teal background +// Special case for buttons or text that should be white on teal background +.nav-pills .nav-link.active, +.category-list .active, +.category-list .active span { + color: white !important; +} + +/* Footer Section Premium Style */ +.s_footer_premium { + background-color: #0e1317 !important; + color: white !important; + position: relative; + // padding-top: 80px; + /* overflow: hidden is usually on but here we want to see the overlap if any */ + + .footer-cta-bar-wrapper { + position: relative; + z-index: 1000; + margin-top: -140px; + /* Pull up to overlap significantly */ + margin-bottom: 40px; + } + + .footer-cta-bar { + background-color: #ffb800 !important; + border-radius: 15px; + + .icon-circle { + width: 50px; + height: 50px; + background: white !important; + border-radius: 50%; + display: flex; + align-items: center; + justify-content: center; + + i { + color: #ffb800 !important; + font-size: 20px; + } + } + + .cta-label { + font-size: 13px; + text-transform: uppercase; + letter-spacing: 1px; + color: rgba(255, 255, 255, 1); + font-weight: 700; + } + + p { + font-size: 14px; + font-weight: 600; + margin: 0; + color: white !important; + } + } + + .main-footer-content { + // padding-top: 30px; + padding-bottom: 50px; + + .footer-brand-title { + color: #ffb800 !important; + font-size: 32px; + text-transform: capitalize; + } + + .footer-column-title { + color: white !important; + font-size: 20px; + position: relative; + padding-bottom: 12px; + margin-bottom: 25px; + + &::after { + content: ""; + position: absolute; + left: 0; + bottom: 0; + width: 35px; + height: 2px; + background-color: #ffb800; + } + } + + .footer-desc { + color: rgba(255, 255, 255, 0.9) !important; + line-height: 1.8; + font-size: 15px; + } + + .hours-list { + .hour-row { + font-size: 15px; + color: white; + + .day { + opacity: 0.9; + } + } + } + + .footer-links-list { + li { + color: white !important; + font-size: 15px; + + i { + color: #ffb800 !important; + font-size: 12px; + } + + a { + color: white !important; + text-decoration: none !important; + transition: all 0.3s ease; + + &:hover { + color: #ffb800 !important; + padding-left: 5px; + } + } + } + } + + .highlight-text { + color: #ffb800 !important; + } + + .footer-social-boxes { + .social-box { + width: 38px; + height: 38px; + display: flex; + align-items: center; + justify-content: center; + border: 1px solid rgba(255, 255, 255, 0.2); + border-radius: 4px; + color: white !important; + text-decoration: none; + transition: all 0.3s ease; + + i { + color: white !important; + font-size: 16px; + } + + &:hover { + background-color: #ffb800; + border-color: #ffb800; + transform: translateY(-3px); + + i { + color: #0e1317 !important; + } + } + } + } + + .contact-col-content { + position: relative; + z-index: 5; + } + + .footer-social-boxes { + position: relative; + z-index: 10; + } + } + + .footer-accent-leaf { + position: absolute; + left: -80px; + /* Move further left */ + bottom: 50px; + width: 140px; + opacity: 0.9; + z-index: 0; + /* Move behind social icons */ + } + + .footer-food-plate-wrapper { + position: absolute; + right: -180px; + /* Move further right */ + top: -40px; + z-index: 0; + /* Move behind text */ + + .footer-food-plate { + width: 380px; + /* Slightly larger as per "exact design" request */ + height: 380px; + border: 12px solid rgba(255, 255, 255, 0.05); + border-radius: 50%; + object-fit: cover; + box-shadow: 0 20px 40px rgba(0, 0, 0, 0.4); + opacity: 0.8; + /* Slight transparency to help text if they still overlap */ + } + } + + .footer-copyright-bar-new { + background-color: #ffb800 !important; + color: #0e1317 !important; + margin-top: 20px; + border-top: 1px solid rgba(0, 0, 0, 0.1); + + p { + font-size: 14px; + font-weight: 700; + } + + a { + color: #0e1317 !important; + font-weight: 800; + text-decoration: none; + + &:hover { + text-decoration: underline !important; + } + } + } +} + +.s_map { + position: relative; + min-height: 500px !important; + max-height: 500px !important; + overflow: hidden; + + .map_container { + height: 500px !important; + position: relative; + } + + iframe { + height: 500px !important; + width: 100%; + border: 0; + } +} + +// Custom Pagination Styling +.pagination { + .page-item { + margin: 0 4px; + + .page-link { + border-radius: 50% !important; + width: 40px; + height: 40px; + display: flex; + align-items: center; + justify-content: center; + border: 1px solid #ddd; + color: #0e1317; + background-color: #fff; + transition: all 0.3s ease; + font-weight: 600; + + &:hover, + &:focus { + background-color: #ffb800; + border-color: #ffb800; + color: #0e1317; + box-shadow: none; + } + } + + &.active .page-link { + background-color: #0e1317 !important; + border-color: #0e1317 !important; + color: #FFFFFF !important; + } + + &.disabled .page-link { + background-color: #f8f9fa; + border-color: #ddd; + color: #999; + } + } +} + +/* Shivasakthi Hero Banner & Side Dishes & Spices */ +.shivasakthi-hero-slide { + background-color: #080808 !important; + background-image: url('/dine360_theme_shivasakthi/static/src/img/hero-bg.jpg') !important; + background-size: cover !important; + background-position: center !important; + min-height: 95vh; + position: relative; + overflow: hidden; + display: none; + + &.active, + &.carousel-item-next, + &.carousel-item-prev { + display: flex !important; + align-items: center; + } + + // Add dark subtle overlay to make background even richer and help text contrast + &::before { + content: ""; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: radial-gradient(circle, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); + z-index: 1; + pointer-events: none; + } + + .hero-content-container { + position: relative; + z-index: 10; + padding-top: 80px; /* Offset for header */ + } + + .hero-subtitle { + color: #ffb800; + font-family: 'Bebas Neue', sans-serif !important; + font-weight: 400; + letter-spacing: 2.5px; + text-transform: uppercase; + font-size: clamp(14px, 2vw, 18px); + margin-bottom: 25px; + } + + .hero-title { + color: white; + font-family: 'Bebas Neue', sans-serif !important; + font-weight: 400; + font-size: clamp(2.2rem, 6.5vw, 5.2rem); + line-height: 1.05; + margin-bottom: 30px; + text-transform: uppercase; + letter-spacing: 1.5px; + } + + .hero-desc { + color: rgba(255, 255, 255, 0.85); + font-family: 'Roboto', sans-serif !important; + font-size: clamp(14px, 2vw, 18px); + max-width: 650px; + margin: 0 auto 40px auto; + line-height: 1.7; + } + + .btn-hero-cta { + background-color: #ffb800 !important; + color: white !important; + border: none; + border-radius: 4px; + font-family: 'Bebas Neue', sans-serif !important; + font-weight: 400; + font-size: 16px; + letter-spacing: 1px; + padding: 15px 42px !important; + transition: all 0.3s ease; + text-transform: uppercase; + display: inline-flex; + align-items: center; + + i { + transition: transform 0.3s ease; + } + + &:hover { + background-color: white !important; + color: #ffb800 !important; + transform: translateY(-3px); + box-shadow: 0 5px 15px rgba(254, 205, 79, 0.4); + + i { + transform: translateX(5px); + } + } + } + + /* Side Dishes Positioning */ + .hero-left-dish { + position: absolute; + left: -10vw; + top: 50%; + width: clamp(300px, 36vw, 550px); + z-index: 5; + pointer-events: none; + filter: drop-shadow(0 25px 50px rgba(0, 0, 0, 0.7)); + animation: floatSlightLeft 10s ease-in-out infinite; + + @media (max-width: 1200px) { + left: -12vw; + } + } + + .hero-right-dish { + position: absolute; + right: -8vw; + top: 50%; + width: clamp(320px, 38vw, 580px); + z-index: 5; + pointer-events: none; + filter: drop-shadow(0 25px 50px rgba(0, 0, 0, 0.7)); + animation: floatSlightRight 10s ease-in-out infinite; + + @media (max-width: 1200px) { + right: -10vw; + } + } + + /* Floating Spices Positioning & Wobbles */ + .hero-spice-chili-left { + position: absolute; + left: 5%; + top: 18%; + width: clamp(40px, 6vw, 75px); + z-index: 6; + pointer-events: none; + filter: drop-shadow(5px 5px 10px rgba(0, 0, 0, 0.4)); + animation: floatWobbleChiliLeft 10s ease-in-out infinite; + } + + .hero-spice-tomato-left { + position: absolute; + left: 24%; + top: 48%; + width: clamp(30px, 4vw, 50px); + z-index: 6; + pointer-events: none; + filter: drop-shadow(5px 5px 10px rgba(0, 0, 0, 0.4)); + animation: floatWobbleTomato 8s ease-in-out infinite; + } + + .hero-spice-leaf-left { + position: absolute; + left: 5%; + bottom: 12%; + width: clamp(40px, 6vw, 75px); + z-index: 6; + pointer-events: none; + filter: drop-shadow(3px 3px 8px rgba(0, 0, 0, 0.3)); + animation: floatWobbleLeafLeft 12s ease-in-out infinite; + } + + .hero-spice-leaf-right { + position: absolute; + right: 8%; + top: 15%; + width: clamp(40px, 6vw, 70px); + z-index: 6; + pointer-events: none; + filter: drop-shadow(3px 3px 8px rgba(0, 0, 0, 0.3)); + animation: floatWobbleLeafRight 12s ease-in-out infinite; + } + + .hero-spice-chili-right { + position: absolute; + right: 10%; + bottom: 10%; + width: clamp(40px, 6vw, 75px); + z-index: 6; + pointer-events: none; + filter: drop-shadow(5px 5px 10px rgba(0, 0, 0, 0.4)); + animation: floatWobbleChiliRight 10s ease-in-out infinite; + } +} + +/* Page title spacer adjustment for transparent header */ +.s_page_title { + padding-top: 160px !important; + padding-bottom: 100px !important; +} + +/* Indicators Custom Layout */ +#myCarouselShivasakthi { + .carousel-indicators { + bottom: 40px; + z-index: 15; + + li { + width: 10px !important; + height: 10px !important; + border-radius: 50% !important; + background-color: #ffb800 !important; + opacity: 0.5; + border: none !important; + margin: 0 6px !important; + transition: all 0.3s ease !important; + + &.active { + width: 35px !important; + height: 10px !important; + border-radius: 5px !important; + opacity: 1; + } + } + } +} + +/* Animations Keyframes */ +@keyframes floatSlightLeft { + 0%, 100% { + transform: translateY(-50%) rotate(0deg) scale(1); + } + 50% { + transform: translateY(-52%) rotate(2deg) scale(1.02); + } +} + +@keyframes floatSlightRight { + 0%, 100% { + transform: translateY(-50%) rotate(0deg) scale(1); + } + 50% { + transform: translateY(-48%) rotate(-2deg) scale(1.02); + } +} + +@keyframes floatWobbleChiliLeft { + 0%, 100% { + transform: translate(0, 0) rotate(-45deg); + } + 50% { + transform: translate(10px, -15px) rotate(-35deg); + } +} + +@keyframes floatWobbleChiliRight { + 0%, 100% { + transform: translate(0, 0) rotate(135deg); + } + 50% { + transform: translate(-10px, -15px) rotate(145deg); + } +} + +@keyframes floatWobbleTomato { + 0%, 100% { + transform: translate(0, 0) rotate(0deg); + } + 50% { + transform: translate(5px, 12px) rotate(15deg); + } +} + +@keyframes floatWobbleLeafLeft { + 0%, 100% { + transform: translate(0, 0) rotate(10deg); + } + 50% { + transform: translate(-8px, -10px) rotate(-10deg); + } +} + +@keyframes floatWobbleLeafRight { + 0%, 100% { + transform: translate(0, 0) rotate(-20deg); + } + 50% { + transform: translate(8px, -10px) rotate(0deg); + } +} + +/* Custom Homepage Sections Addition */ +.feature-item { + display: flex; + align-items: flex-start; + gap: 20px; + margin-bottom: 25px; + + .feature-icon-wrapper { + width: 70px; + height: 70px; + background-color: #ffb800; + border-radius: 50%; + display: flex; + align-items: center; + justify-content: center; + flex-shrink: 0; + padding: 15px; + box-shadow: 0 8px 16px rgba(255, 184, 0, 0.2); + transition: all 0.3s ease; + + img { + max-width: 100%; + height: auto; + } + } + + &:hover { + .feature-icon-wrapper { + transform: scale(1.1) rotate(10deg); + box-shadow: 0 12px 24px rgba(255, 184, 0, 0.4); + } + } + + .feature-text { + h5 { + font-size: 20px; + font-weight: 400; + color: #04121D; + margin-bottom: 8px; + font-family: 'Bebas Neue', sans-serif !important; + } + + p { + font-size: 14px; + color: #666; + line-height: 1.6; + margin-bottom: 0; + font-family: 'Roboto', sans-serif !important; + } + } +} + +.menu-list-item { + display: flex; + align-items: center; + transition: all 0.3s ease; + padding: 15px; + border-radius: 12px; + background: transparent; + border: 1px solid transparent; + + img { + transition: all 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275); + border: 2px solid #ffb800 !important; + box-shadow: 0 4px 10px rgba(0,0,0,0.05); + } + + &:hover { + background-color: #ffffff; + border-color: rgba(255, 184, 0, 0.15); + box-shadow: 0 10px 30px rgba(0, 0, 0, 0.04); + transform: translateY(-2px); + + img { + transform: scale(1.1) rotate(5deg); + border-color: #04121D !important; + } + } + + .border-bottom { + border-bottom: 2px dotted #ccc !important; + opacity: 0.5; + } +} + +/* Stats Section Styles */ +.s_stats_section { + background-size: cover; + background-position: center; + position: relative; + overflow: hidden; + min-height: 380px; + display: flex; + align-items: center; + + .row.g-0 { + border-radius: 12px; + overflow: hidden; + } +} + +/* Thali and Deal Sections */ +.s_unlimited_thali_section, +.s_enjoy_flavors_section { + background-size: cover; + background-position: center; + position: relative; + min-height: 500px; + display: flex; + align-items: center; + + .lead { + font-family: 'Roboto', sans-serif !important; + } + + img { + transition: transform 0.5s ease; + &:hover { + transform: scale(1.03) translateY(-5px); + } + } +} + +.s_testimonials_premium { + .testimonial-carousel { + .carousel-item { + display: none; + &.active { + display: block !important; + } + } + } +} diff --git a/addons/dine360_theme_shivasakthi/views/about_page.xml b/addons/dine360_theme_shivasakthi/views/about_page.xml new file mode 100644 index 0000000..051ad11 --- /dev/null +++ b/addons/dine360_theme_shivasakthi/views/about_page.xml @@ -0,0 +1,97 @@ + + + + + + + + + diff --git a/addons/dine360_theme_shivasakthi/views/blog_detail_page.xml b/addons/dine360_theme_shivasakthi/views/blog_detail_page.xml new file mode 100644 index 0000000..fb3efc5 --- /dev/null +++ b/addons/dine360_theme_shivasakthi/views/blog_detail_page.xml @@ -0,0 +1,90 @@ + + + + + + + + + + diff --git a/addons/dine360_theme_shivasakthi/views/blog_page.xml b/addons/dine360_theme_shivasakthi/views/blog_page.xml new file mode 100644 index 0000000..953d786 --- /dev/null +++ b/addons/dine360_theme_shivasakthi/views/blog_page.xml @@ -0,0 +1,79 @@ + + + + + + + + + diff --git a/addons/dine360_theme_shivasakthi/views/checkout_address.xml b/addons/dine360_theme_shivasakthi/views/checkout_address.xml new file mode 100644 index 0000000..90c4642 --- /dev/null +++ b/addons/dine360_theme_shivasakthi/views/checkout_address.xml @@ -0,0 +1,491 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/addons/dine360_theme_shivasakthi/views/contact_page.xml b/addons/dine360_theme_shivasakthi/views/contact_page.xml new file mode 100644 index 0000000..ce9fc59 --- /dev/null +++ b/addons/dine360_theme_shivasakthi/views/contact_page.xml @@ -0,0 +1,230 @@ + + + + + + + + + + + + + diff --git a/addons/dine360_theme_shivasakthi/views/faq_page.xml b/addons/dine360_theme_shivasakthi/views/faq_page.xml new file mode 100644 index 0000000..21153d9 --- /dev/null +++ b/addons/dine360_theme_shivasakthi/views/faq_page.xml @@ -0,0 +1,216 @@ + + + + + + + + + diff --git a/addons/dine360_theme_shivasakthi/views/layout.xml b/addons/dine360_theme_shivasakthi/views/layout.xml new file mode 100644 index 0000000..2a769f3 --- /dev/null +++ b/addons/dine360_theme_shivasakthi/views/layout.xml @@ -0,0 +1,235 @@ + + + + + + + + + + + + + + + + diff --git a/addons/dine360_theme_shivasakthi/views/options.xml b/addons/dine360_theme_shivasakthi/views/options.xml new file mode 100644 index 0000000..d61c3a7 --- /dev/null +++ b/addons/dine360_theme_shivasakthi/views/options.xml @@ -0,0 +1,12 @@ + + + + + + + + + diff --git a/addons/dine360_theme_shivasakthi/views/pages.xml b/addons/dine360_theme_shivasakthi/views/pages.xml new file mode 100644 index 0000000..04c9fcd --- /dev/null +++ b/addons/dine360_theme_shivasakthi/views/pages.xml @@ -0,0 +1,609 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/addons/dine360_theme_shivasakthi/views/product_details_page.xml b/addons/dine360_theme_shivasakthi/views/product_details_page.xml new file mode 100644 index 0000000..6bde2f6 --- /dev/null +++ b/addons/dine360_theme_shivasakthi/views/product_details_page.xml @@ -0,0 +1,62 @@ + + + + + + + + + + diff --git a/addons/dine360_theme_shivasakthi/views/product_views.xml b/addons/dine360_theme_shivasakthi/views/product_views.xml new file mode 100644 index 0000000..ee5b97a --- /dev/null +++ b/addons/dine360_theme_shivasakthi/views/product_views.xml @@ -0,0 +1,21 @@ + + + + + product.template.form.inherit.deals + product.template + + + + + + + + + + + + + + diff --git a/addons/dine360_theme_shivasakthi/views/res_config_settings_views.xml b/addons/dine360_theme_shivasakthi/views/res_config_settings_views.xml new file mode 100644 index 0000000..7a1f127 --- /dev/null +++ b/addons/dine360_theme_shivasakthi/views/res_config_settings_views.xml @@ -0,0 +1,18 @@ + + + + res.config.settings.view.form.inherit.Shivasakthi + res.config.settings + + + + + + + + + + + + + diff --git a/addons/dine360_theme_shivasakthi/views/shop_page.xml b/addons/dine360_theme_shivasakthi/views/shop_page.xml new file mode 100644 index 0000000..22a56dd --- /dev/null +++ b/addons/dine360_theme_shivasakthi/views/shop_page.xml @@ -0,0 +1,125 @@ + + + + + + + + + + + + + diff --git a/addons/dine360_theme_shivasakthi/views/snippets.xml b/addons/dine360_theme_shivasakthi/views/snippets.xml new file mode 100644 index 0000000..ffdf7a2 --- /dev/null +++ b/addons/dine360_theme_shivasakthi/views/snippets.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + diff --git a/scratch/parse_content.py b/scratch/parse_content.py new file mode 100644 index 0000000..50656f8 --- /dev/null +++ b/scratch/parse_content.py @@ -0,0 +1,13 @@ +with open(r"C:\Users\LENOVO\.gemini\antigravity\brain\ce256ea1-56f2-43c9-bbf4-7f33e9a804a9\.system_generated\steps\564\content.md", "r", encoding="utf-8") as f: + text = f.read() + +import re + +# Let's search for "Welcome to" or "Shiva Sakthi Restaurant" +matches = [m.start() for m in re.finditer("Welcome to", text, re.IGNORECASE)] +for idx, pos in enumerate(matches): + start = max(0, pos - 200) + end = min(len(text), pos + 1000) + print(f"MATCH {idx}:") + print(text[start:end]) + print("-" * 50)