Compare commits

...

11 Commits

Author SHA1 Message Date
Alaguraj0361
752d346522 menu page menuchart iframe removed
Some checks are pending
Build and Deploy Build Output / build (push) Waiting to run
2025-12-08 07:22:43 +05:30
akash
c18b014bcc about & blog pages long load time issues are fixed 2025-11-13 14:20:15 +05:30
akash
8536c713f6 contact file seo-rename, home short metatitle, contact removed form sitemap updated 2025-11-10 20:31:07 +05:30
akash
53a450503d terminal warning issues are fixed 2025-11-10 18:36:37 +05:30
akash
cf9258019b Blog and contact low word count increased 2025-11-08 20:07:34 +05:30
akash
42b66d3bf7 seo audit 5 broken links & 5 404 respode code fixed 2025-11-07 19:15:28 +05:30
Alaguraj0361
b52416976a rechapcha and banner unlimited masala dosa added 2025-10-11 23:09:53 +05:30
Alaguraj0361
f85295ff22 banner image updated 2025-09-29 21:23:11 +05:30
akash
a3212d9201 Menu page text alignment updated reduced font size 2025-09-27 18:34:12 +05:30
akash
7bb21a6646 Testimonial size updated 2025-09-27 15:04:20 +05:30
akash
041638adde Menu page arrow responsive and contact page form and image equal height updated 2025-09-27 15:01:38 +05:30
31 changed files with 443 additions and 247 deletions

View File

@ -1,8 +1,24 @@
// app/blog/[slug]/page.tsx
// app/blog/[slug]/page.js
import PageBanner from "@/components/PageBanner";
import WellFoodLayout from "@/layout/WellFoodLayout";
import { Blog } from "@/utility/constant.utils";
export async function generateMetadata({ params }) {
const blog = Blog.find((item) => item.slug === params.slug);
if (!blog) {
return {
title: "Blog not found",
description: "The blog you are looking for does not exist.",
};
}
return {
title: blog.metatitle,
description: blog.metadescription,
};
}
export async function generateStaticParams() {
return Blog.map((item) => ({
slug: item.slug,
@ -11,7 +27,6 @@ export async function generateStaticParams() {
export default function BlogPage({ params }) {
const { slug } = params;
const blog = Blog.find((item) => item.slug === slug);
if (!blog) {
@ -20,7 +35,10 @@ export default function BlogPage({ params }) {
return (
<WellFoodLayout>
<PageBanner pageTitle={"Blog details"} background="/assets/images/inner-banner/2.webp" />
<PageBanner
pageTitle={"Blog Details"}
background="/assets/images/inner-banner/2.webp"
/>
<section className="blog-details-area py-80 rpy-60">
<div className="container container-1290">
<div className="row">
@ -33,7 +51,11 @@ export default function BlogPage({ params }) {
data-aos-duration={1500}
data-aos-offset={50}
>
<img src={blog.bigImage} alt="Blog Standard" loading="lazy" />
<img
src={blog.bigImage}
alt={blog.title}
loading="lazy"
/>
</div>
<div
className="content"

View File

@ -0,0 +1,179 @@
import PageBanner from "@/components/PageBanner";
import WellFoodLayout from "@/layout/WellFoodLayout";
import ContactForm from "@/components/ContactForm";
export const metadata = {
title: "Shiva Sakthi | Best South Indian Restaurant in Mississauga",
description:
"Get in touch with Shiva Sakthi, Mississaugas top Indian restaurant. Call or visit us for dine-in, takeout, or catering. Located Airport Road Malton, Mississauga",
};
const page = () => {
return (
<WellFoodLayout>
<PageBanner
pageTitle={"Contact"}
background="/assets/images/inner-banner/3.webp"
/>
{/* === Contact Info Cards === */}
<section className="contact-page-area pt-100 rpt-100 pb-60 rpb-30 rel z-1">
<div className="container">
<div className="row align-items-center">
<div
className="contact-page-content rmb-55"
data-aos="fade-up"
data-aos-duration={1500}
data-aos-offset={50}
>
<div className="section-title mb-35 text-center">
<span className="sub-title mb-10">contact us</span>
<h2>Get In Touch With Us</h2>
<p
data-aos="fade-left"
data-aos-duration={1500}
data-aos-offset={50}>
Were always happy to connect with you at Shiva Sakthi Restaurant. Conveniently located in a prime and easily accessible area, our restaurant welcomes guests who are looking for fresh, authentic South Indian meals served with care. Whether you want to make a reservation, check our menu, place a takeaway order, or inquire about catering services, our team is ready to assist you. Visitors can reach us by phone, email, or through the contact form on this page. We aim to respond quickly to all inquiries and ensure every guest enjoys a smooth experience. Drop by, get in touch, or simply say hellowe look forward to serving you.
</p>
</div>
{/* Cards Row with Spacing */}
<div className="row gx-4 gy-4">
<div className="col-lg-4 col-md-6 col-sm-12 d-flex justify-content-center">
<div
className="contact-info-item bgc-black flex-fill p-4"
style={{
backgroundImage: "url(/assets/images/background/hero.jpg)",
}}
>
<div className="icon">
<i className="fal fa-phone" />
</div>
<div className="content">
<span className="title" style={{ fontWeight: "bold" }}>
Call Us
</span>
<p>
<a href="tel:+19056773555">905-677-3555</a>
</p>
</div>
</div>
</div>
<div className="col-lg-4 col-md-6 col-sm-12 d-flex justify-content-center">
<div
className="contact-info-item bgc-black flex-fill p-4"
style={{
backgroundImage: "url(/assets/images/background/hero.jpg)",
}}
>
<div className="icon">
<i className="fal fa-envelope-open" />
</div>
<div className="content">
<span className="title" style={{ fontWeight: "bold" }}>
Email Address
</span>
<p>
<a href="mailto:info@shivasakthi.ca">info@shivasakthi.ca</a>
</p>
</div>
</div>
</div>
<div className="col-lg-4 col-md-6 col-sm-12 d-flex justify-content-center">
<div
className="contact-info-item bgc-black flex-fill p-4"
style={{
backgroundImage: "url(/assets/images/background/hero.jpg)",
}}
>
<div className="icon">
<i className="fal fa-map-marker-alt" />
</div>
<div className="content">
<span className="title" style={{ fontWeight: "bold" }}>
Location
</span>
<p>
7166 Airport Road, Mississauga, Ontario L4T 2H2, Canada.
</p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
{/* === Contact Form & Image (Equal Height) === */}
<section className="contact-page-area rpt-40 pt-60 pb-60 rel z-1 bgc-black">
<div className="container">
<div className="row align-items-stretch no-gap">
<div className="col-lg-6 d-flex">
<div
className="contact-page-content rmb-55 d-flex w-100"
data-aos="fade-left"
data-aos-duration={1500}
data-aos-offset={50}
>
<div className="contact-info-wrap flex-fill">
<img
src="/assets/images/contact.webp"
alt="Contact ShivaSakthi"
loading="lazy"
style={{ width: "100%", height: "100%", objectFit: "cover" }}
/>
</div>
</div>
</div>
<div
className="col-lg-6 d-flex"
data-aos="fade-right"
data-aos-duration={1500}
data-aos-offset={50}
>
<div className="flex-fill d-flex">
<ContactForm />
</div>
</div>
</div>
</div>
<div className="bg-lines">
<span />
<span />
<span />
<span />
</div>
</section>
{/* === Google Map === */}
<section className="contact-page-area pt-60">
<div className="container-fluid">
<div className="row align-items-center">
<div
className="our-location"
data-aos="fade-up"
data-aos-duration={1500}
data-aos-offset={50}
>
{/* <iframe
src="https://www.google.com/maps/embed?pb=!1m10!1m8!1m3!1d96777.16150026117!2d-74.00840582560909!3d40.71171357405996!3m2!1i1024!2i768!4f13.1!5e0!3m2!1sen!2sbd!4v1706508986625!5m2!1sen!2sbd"
style={{ border: 0, width: "100%" }}
allowFullScreen=""
loading="lazy"
referrerPolicy="no-referrer-when-downgrade"
/> */}
<iframe src="https://www.google.com/maps/embed?pb=!1m14!1m8!1m3!1d369174.37626170606!2d-79.647352!3d43.706916!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x882b3bfed533002b%3A0xe83c1cd7caca2ee6!2s7166%20Airport%20Rd%2C%20Mississauga%2C%20ON%20L4T%202H2%2C%20Canada!5e0!3m2!1sen!2sus!4v1748536731832!5m2!1sen!2sus" style={{ border: 0, width: "100%" }}
allowfullscreen="" loading="lazy" referrerpolicy="no-referrer-when-downgrade"></iframe>
</div>
</div>
</div>
</section>
</WellFoodLayout>
);
};
export default page;

View File

@ -1,141 +0,0 @@
import PageBanner from "@/components/PageBanner";
import WellFoodLayout from "@/layout/WellFoodLayout";
import ContactForm from "@/components/ContactForm";
export const metadata = {
title: "Shiva Sakthi | Best South Indian Restaurant in Mississauga",
description: "Get in touch with Shiva Sakthi, Mississaugas top Indian restaurant. Call or visit us for dine-in, takeout, or catering. Located Airport Road Malton, Mississauga",
};
const page = () => {
return (
<WellFoodLayout>
<PageBanner pageTitle={"Contact us"} background="/assets/images/inner-banner/3.webp" />
<section className="contact-page-area pt-130 rpt-100 pb-60 rpb-85 rel z-1" >
<div className="container">
<div className="row align-items-center">
<div
className="contact-page-content rmb-55"
data-aos="fade-up"
data-aos-duration={1500}
data-aos-offset={50}
>
<div className="section-title mb-35 text-center">
<span className="sub-title mb-10">contact us</span>
<h2>Get In Touch With Us</h2>
</div>
<div className="row">
<div className="col-md-4">
<div className="contact-info-item bgc-black" style={{
backgroundImage: "url(/assets/images/background/hero.jpg)"
}}>
<div className="icon"><i className="fal fa-map-marker-alt" /></div>
<div className="content">
<span className="title" style={{ fontWeight: "bold" }}>Location</span>
<p>7166 Airport Road, Mississauga, Ontario L4T 2H2, Canada.</p>
</div>
</div>
</div>
<div className="col-md-4">
<div className="contact-info-item bgc-black" style={{
backgroundImage: "url(/assets/images/background/hero.jpg)"
}}>
<div className="icon"><i className="fal fa-envelope-open" /></div>
<div className="content">
<span className="title" style={{ fontWeight: "bold" }}>Email Address</span>
<p>
<a href="mailto:info@shivasakthi.ca">info@shivasakthi.ca</a>
<br />
<br />
</p>
</div>
</div>
</div>
<div className="col-md-4">
<div className="contact-info-item bgc-black" style={{
backgroundImage: "url(/assets/images/background/hero.jpg)"
}}>
<div className="icon"><i className="fal fa-phone" /></div>
<div className="content">
<span className="title" style={{ fontWeight: "bold" }}>Call Us</span>
<p>
<a href="tel: 9056773555">905 677 3555</a>
<br />
<br />
</p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
<section className="contact-page-area rpt-40 pt-60 pb-60 rel z-1 bgc-black">
<div className="container">
<div className="row align-items-center no-gap">
<div className="col-lg-6">
<div
className="contact-page-content rmb-55"
data-aos="fade-left"
data-aos-duration={1500}
data-aos-offset={50}
>
<div className="contact-info-wrap">
<img src="/assets/images/contact.webp" alt="Contact ShivaSakthi" loading="lazy" />
</div>
</div>
</div>
<div
className="col-lg-6"
data-aos="fade-right"
data-aos-duration={1500}
data-aos-offset={50}
>
<ContactForm />
</div>
</div>
</div>
<div className="bg-lines">
<span />
<span />
<span />
<span />
</div>
</section>
<section className="contact-page-area pt-60">
<div className="container-fluid">
<div className="row align-items-center">
<div
className="our-location"
data-aos="fade-up"
data-aos-duration={1500}
data-aos-offset={50}
>
{/* <iframe
src="https://www.google.com/maps/embed?pb=!1m10!1m8!1m3!1d96777.16150026117!2d-74.00840582560909!3d40.71171357405996!3m2!1i1024!2i768!4f13.1!5e0!3m2!1sen!2sbd!4v1706508986625!5m2!1sen!2sbd"
style={{ border: 0, width: "100%" }}
allowFullScreen=""
loading="lazy"
referrerPolicy="no-referrer-when-downgrade"
/> */}
<iframe src="https://www.google.com/maps/embed?pb=!1m14!1m8!1m3!1d369174.37626170606!2d-79.647352!3d43.706916!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x882b3bfed533002b%3A0xe83c1cd7caca2ee6!2s7166%20Airport%20Rd%2C%20Mississauga%2C%20ON%20L4T%202H2%2C%20Canada!5e0!3m2!1sen!2sus!4v1748536731832!5m2!1sen!2sus" style={{ border: 0, width: "100%" }}
allowfullscreen="" loading="lazy" referrerpolicy="no-referrer-when-downgrade"></iframe>
</div>
</div>
</div>
</section>
</WellFoodLayout>
);
};
export default page;

View File

@ -8,7 +8,7 @@ import "@css/slick.min.css";
import "@css/style.css";
import "./globals.css";
export const metadata = {
title: "Shivasakthi Restaurant",
title: "Shivasakthi Restaurant | South Indian Dining & Thali",
description: "The best Indian food in Mississauga! Enjoy authentic South Indian cuisine, vegetarian dishes, dosa, Indian snacks, and takeout options at Shiva Sakthi.",
};

View File

@ -22,7 +22,7 @@ const page = () => {
{/* Headline Area end */}
{/* Restaurant Menu Area start */}
<RestaurantMenu />
<MenuIframe />
{/* <MenuIframe /> */}
</WellFoodLayout>
);
};

View File

@ -5,8 +5,7 @@
<section
className="booking-table-area-two bgs-cover py-100 rel z-1 overlay"
style={{
backgroundImage:
"url(/assets/images/about/bg-about.webp)",
backgroundImage: "url(/assets/images/about/bg-about.webp)",
}}
>
<div className="container">

View File

@ -2,7 +2,7 @@
const AboutCallAction2 = () => {
return (
<section className="cta-area py-100 rel z-1 bgc-primary" style={{
backgroundImage: "url(/assets/images/testimonials/testimonials-two-bg.png)"
backgroundImage: "url(/assets/images/testimonials/testimonials-two-bg.png)",
}} >
<div className="container">
<div className="row">
@ -12,7 +12,7 @@
<span className="sub-title mb-5 text-white">Craving Authentic Indian Flavors?</span>
<h2>Dont waitcall us now to place your order!</h2>
</div>
<Link href="/contact" className="theme-btn style-three">
<Link href="/contact-south-indian-restaurant" className="theme-btn style-three">
Call Us <i className="far fa-arrow-alt-right" />
</Link>
{/* <div

View File

@ -9,10 +9,15 @@ const AboutCategory = () => {
className="col about-biryani-category-1"
data-aos="fade-up"
data-aos-duration={1500}
data-aos-offset={50}
data-aos-offset={50}
>
<img src="/assets/images/about/ambur_chicken_biryani.png" />
<img
src="/assets/images/about/ambur_chicken_biryani.webp"
alt="Ambur Chicken Biryani"
width="570"
height="270"
loading="lazy" />
{/* <span className="quality">Quality Food</span>
<h2>Strawberry Juice &amp; slices</h2>
<Link href="shop" className="theme-btn style-two">
@ -27,8 +32,13 @@ const AboutCategory = () => {
data-aos-duration={1500}
data-aos-offset={50}
>
<img src="/assets/images/about/mutton-biryani.png" />
<img
src="/assets/images/about/mutton-biryani.webp"
alt="Mutton Biryani"
width="570"
height="270"
loading="lazy" />
{/* <h3>buy 1</h3>
<span className="get-one">get free 1</span>
<Link href="shop" className="theme-btn">

View File

@ -38,7 +38,7 @@ const AboutContent = () => {
<i className="flaticon-high-quality" />
</div>
<h5>
<Link href="menu-burger">Best Quality Food</Link>
<Link href="/menu">Best Quality Food</Link>
</h5>
<p>
Our talented chefs craft each dish precision sourcing
@ -51,7 +51,7 @@ const AboutContent = () => {
<i className="flaticon-chef" />
</div>
<h5>
<Link href="menu-burger">Experience our Chefs</Link>
<Link href="/menu">Experience our Chefs</Link>
</h5>
<p>
Our talented chefs craft each dish precision sourcing

View File

@ -7,8 +7,7 @@ const Testimonial = () => {
<section
className="testimonials-two bgc-primary"
style={{
backgroundImage:
"url(/assets/images/testimonials/testimonials-two-bg.png)",
backgroundImage: "url(/assets/images/testimonials/testimonials-two-bg.png)",
}}
>
<div className="row align-items-center">

View File

@ -91,7 +91,8 @@ const ContactForm = () => {
return (
<div className="contact-page-form">
<h3>Send Us Message</h3>
<p>Your email address will not be published. Required fields are marked *</p>
<p>Have a question or need assistance? Fill out the form below and our team will get back to you as soon as possible.
*</p>
<form id="contactForm" className="contactForm" name="contactForm" onSubmit={handleSubmit}>
<div className="row mt-30 gap-20">
<div className="col-sm-6">
@ -176,7 +177,7 @@ const ContactForm = () => {
</div>
<div className="col-sm-12 mt-3 mb-3">
<ReCAPTCHA
sitekey="6Lfi9o4rAAAAAOatjscl4m4UaOA7_g_rFBHOaf5n"
sitekey="6LcGsNkrAAAAAKtqLyzbOb9emB3JSHUFSXGiDiO1"
onChange={handleCaptchaChange}
/>
</div>

View File

@ -32,7 +32,7 @@ const FoodCategory = () => {
</div>
<div className="content">
<h4>
<Link href="menu-restaurant">Best Quality Food</Link>
<Link href="/menu">Best Quality Food</Link>
</h4>
<p>Sed ut perspiciatis unde omnis este natus sit voluptatem</p>
</div>

View File

@ -1784,7 +1784,7 @@ const RestaurantMenu = ({ menus }) => {
<div className="d-flex justify-content-center">
<img src={menu.icon} style={{width:"50%"}} loading="lazy" /> {/* margin-end to add space */}
</div>
<span>{menu.title}</span>
<span className="new-class">{menu.title}</span>
</div>
</Nav.Link>
</Nav.Item>

View File

@ -7,8 +7,7 @@ const Testimonial = () => {
<section
className="testimonials-two bgc-primary"
style={{
backgroundImage:
"url(assets/images/testimonials/testimonials-two-bg.png)",
backgroundImage: "url(/assets/images/testimonials/testimonials-two-bg.png)",
}}
>
<div className="row align-items-center">

View File

@ -14,7 +14,14 @@ const ListOfBlogSection = () => {
data-aos-offset={50}
>
<span className="sub-title mb-5">The Latest News What We Have</span>
<h2>Our Latest Food News</h2>
<h2>Our Latest Food News at Shiva Sakthi
</h2>
<p
data-aos="fade-left"
data-aos-duration={1500}
data-aos-offset={50}>
Welcome to the Shiva Sakthi Restaurant blog your go-to place for delicious food stories, culinary insights, and everything related to authentic South Indian dining. Here, we share expert tips, traditional recipes, festival specials, and behind-the-scenes glimpses from our kitchen. Whether youre a long-time customer or discovering us for the first time, our blog helps you explore the rich flavours, preparation methods, and cultural roots behind every dish we serve. At Shiva Sakthi Restaurant, we believe food is more than a meal its an experience filled with warmth, tradition, and community. Through these articles, we aim to educate, inspire, and connect with food lovers who appreciate quality, freshness, and homemade taste. Dive in and enjoy a flavourful journey with us.
</p>
</div>
</div>
</div>

View File

@ -11,8 +11,8 @@ const heroSlides = [
"At Shiva Sakthi, we serve more than just food — we serve memories. Taste the heritage of South India in every bite, lovingly prepared with spices that tell a story.",
buttonText: "Order now",
buttonLink: "https://gosnappy.io/owa/r/shiva-sakthi-restaurant/5921/menu_655/",
leftImage: "/assets/images/home/right-4.webp",
rightImage: "/assets/images/home/right-4.webp",
leftImage: "/assets/images/home/shiva-sakthi-web-banner.webp",
rightImage: "/assets/images/home/shiva-sakthi-web-banner.webp",
},
{
subtitle: "Welcome to Shiva Sakthi Restaurant",
@ -89,7 +89,8 @@ const HeroBanner = () => {
<span className="sub-title">{slide.subtitle}</span>
<h1 dangerouslySetInnerHTML={{ __html: slide.title }}></h1>
<p>{slide.description}</p>
<Link href={slide.buttonLink} className="theme-btn mt-25" target={slide.buttonLink.startsWith("http") && index < 2 && "_blank"} >
<Link href={slide.buttonLink} className="theme-btn mt-25"
target={slide.buttonLink.startsWith("http") && index < 2 ? "_blank" : undefined} >
{slide.buttonText} <i className="far fa-arrow-alt-right" />
</Link>
</div>

View File

@ -113,7 +113,7 @@ const PopularMenu = () => {
))}
</div>
<div className="text-center mt-3">
<a class="theme-btn style-two" href="/menu">View Full Menu <i class="far fa-arrow-alt-right"></i></a>
<a className="theme-btn style-two" href="/menu">View Full Menu <i className="far fa-arrow-alt-right"></i></a>
</div>
</div>
<div className="menu-items-shape">

View File

@ -88,7 +88,7 @@ const DefaultFooter = () => {
<li><Link href="/">Home</Link></li>
<li><Link href="/about">About</Link></li>
<li><Link href="/menu">Menu</Link></li>
<li><Link href="/contact">Contact</Link></li>
<li><Link href="/contact-south-indian-restaurant">Contact</Link></li>
</ul>
</div>
</div>
@ -100,7 +100,7 @@ const DefaultFooter = () => {
<ul>
<li>7166 Airport Road, Mississauga Ontario.L4T 2H2, Canada</li>
<li><a href="mailto:info@shivasakthi.ca"><u>info@shivasakthi.ca</u></a></li>
<li><a href="callto:905 677 3555">905 677 3555</a></li>
<li><a href="tel:+19056773555">905-677-3555</a></li>
</ul>
</div>
</div>
@ -125,7 +125,7 @@ const DefaultFooter = () => {
<div className="col-lg-12">
<div className="copyright-text text-center">
<p>
Copyright {new Date().getFullYear()} © Shivas Dosa Restaurant. Powered by <Link href="https://metatroncubesolutions.com/">MetatronCube</Link>. All Right Reserved.{" "}
Copyright {new Date().getFullYear()} © Shivas Dosa Restaurant. Powered by <Link href="https://metatroncubesolutions.com/" target="_blank">MetatronCube</Link>. All Right Reserved.{" "}
</p>
</div>
</div>
@ -274,7 +274,7 @@ const Footer2 = () => {
</a>
</li>
<li>
<a href="callto:+(1)0987654321">+(1) 098 765 4321</a>
<a href="tel:+10987654321">+1 098 765 4321</a>
</li>
</ul>
</div>
@ -384,7 +384,7 @@ const Footer3 = () => {
</a>
</li>
<li>
<a href="callto:+(1)0987654321">+(1) 098 765 4321</a>
<a href="tel:+10987654321">+1 098 765 4321</a>
</li>
</ul>
</div>
@ -537,7 +537,7 @@ const Footer5 = () => {
</a>
</li>
<li>
<a href="callto:+(1)0987654321">+(1) 098 765 4321</a>
<a href="tel:+10987654321">+1 (098) 765-4321</a>
</li>
</ul>
</div>
@ -682,7 +682,7 @@ const Footer6 = () => {
</a>
</li>
<li>
<a href="callto:+(1)0987654321">+(1) 098 765 4321</a>
<a href="tel:+10987654321">+1 (098) 765-4321</a>
</li>
</ul>
</div>

View File

@ -235,7 +235,7 @@ const MobileMenu = () => {
<Link href="menu-grill">Menu Gril</Link>
</li>
<li>
<Link href="menu-burger">Menu Burger</Link>
<Link href="/menu">Menu Burger</Link>
</li>
<li>
<Link href="menu-sea-food">Menu Sea Food</Link>
@ -320,7 +320,7 @@ const MobileMenu = () => {
</div>
</li> */}
<li>
<Link href="/contact">Contact</Link>
<Link href="/contact-south-indian-restaurant">Contact</Link>
</li>
</ul>
{/* <ul className="navigation clearfix">
@ -366,7 +366,7 @@ const MobileMenu = () => {
<Link href="menu-grill">Menu Gril</Link>
</li>
<li>
<Link href="menu-burger">Menu Burger</Link>
<Link href="/menu">Menu Burger</Link>
</li>
<li>
<Link href="menu-sea-food">Menu Sea Food</Link>
@ -464,7 +464,7 @@ const MobileMenu = () => {
</div>
{/* <div className="header-number">
<i className="far fa-phone" />
Call : <a href="callto:+88012345688">+880 123 456 88</a>
Call : <a href="tel:+88012345688">+880 123 456 88</a>
</div>
<SearchBtn />
<div className="menu-btns">
@ -606,7 +606,7 @@ const Header = () => {
<Link href="menu-grill">Menu Gril</Link>
</li>
<li>
<Link href="menu-burger">Menu Burger</Link>
<Link href="/menu">Menu Burger</Link>
</li>
<li>
<Link href="menu-sea-food">Menu Sea Food</Link>
@ -688,7 +688,7 @@ const Header = () => {
</div>
</li> */}
<li>
<Link href="/contact">Contact</Link>
<Link href="/contact-south-indian-restaurant">Contact</Link>
</li>
</ul>
<div className="menu-btns" style={{ paddingLeft: "30px" }}>
@ -702,7 +702,7 @@ const Header = () => {
</div>
{/* <div className="header-number">
<i className="far fa-phone" />
Call : <a href="callto:+88012345688">+880 123 456 88</a>
Call : <a href="tel:+88012345688">+880 123 456 88</a>
</div> */}
{/* Nav Search */}
{/* <SearchBtn /> */}

View File

@ -9,7 +9,7 @@ const WellFoodLayout = ({ children, bgBlack, footer }) => {
useEffect(() => {
niceSelect();
wellfoodUtility.animation();
console.log(bgBlack);
// console.log(bgBlack);
if (bgBlack) {
document.querySelector(".page-wrapper").classList.add("bg-black");
} else {

View File

@ -2,12 +2,13 @@
"name": "shivasakthi-restarunt",
"version": "0.1.0",
"private": true,
"scripts": {
"dev": "next dev",
"build": "next build",
"start": "next start",
"lint": "next lint"
},
"scripts": {
"dev": "next dev",
"build": "next build",
"start": "next start",
"lint": "next lint",
"sitemap": "node scripts/generate-sitemap.cjs"
},
"dependencies": {
"aos": "^2.3.4",
"axios": "^1.9.0",

View File

@ -9,8 +9,8 @@
Note: This is Main Style CSS File. */
/*----------------------------------------------------------------------
CSS INDEX
----------------------
CSS INDEX
----------------------
## Default Style
## Common Classes
@ -783,6 +783,8 @@ a.theme-btn.style-three:hover {
.food-menu-tab .nav-link {
padding-top: 12px;
padding-bottom: 8px;
padding-left: 12px;
padding-right: 12px;
}
}
@ -805,20 +807,20 @@ a.theme-btn.style-three:hover {
}
.food-menu-tab .nav-link span {
font-size: 18px;
font-size: 16px;
margin-top: 10px;
}
@media only screen and (max-width: 991px) {
.food-menu-tab .nav-link span {
font-size: 16px;
font-size: 15px;
}
}
@media only screen and (max-width: 575px) {
.food-menu-tab .nav-link span {
margin-top: 0;
font-size: 16px;
font-size: 15px;
}
}
@ -946,20 +948,54 @@ a.theme-btn.style-three:hover {
/* Slick Arrows */
.slick-arrow {
position: absolute;
top: 40%;
right: 100%;
transform: translateY(-50%);
font-size: 20px;
-webkit-transition: 0.5s;
-o-transition: 0.5s;
transition: 0.5s;
padding-top: 2px;
width: 65px;
height: 65px;
background: white;
line-height: 65px;
width: 40px;
height: 40px;
background: black;
line-height: 40px;
border-radius: 50%;
text-align: center;
color: var(--heading-color);
color: #ffff;
-webkit-box-shadow: 0px 4px 60px rgba(0, 0, 0, 0.15);
box-shadow: 0px 4px 60px rgba(0, 0, 0, 0.15);
z-index: 10;
cursor: pointer;
}
@media (max-width: 1024px) {
.slick-arrow {
right: 98%;
}
}
@media (max-width: 992px) {
.slick-arrow {
right: 97%;
}
}
@media (max-width: 500px) {
.slick-arrow {
right: 92%;
}
}
@media (max-width: 992px) {
.slick-prev {
left: -1% !important;
}
}
.slick-arrow:focus,
@ -4549,6 +4585,12 @@ h6,
}
}
.new-class{
font-size: 16px;
}
.main-header .logo {
z-index: 9;
padding: 2px 0;
@ -4858,7 +4900,7 @@ h6,
align-items: center;
-webkit-box-pack: start;
-ms-flex-pack: start;
justify-content: start;
justify-content: flex-start;
}
}
@ -7431,7 +7473,7 @@ h6,
display: flex;
-webkit-box-align: start;
-ms-flex-align: start;
align-items: start;
align-items: flex-start;
}
.about-btn-customer .theme-btn {
@ -8185,7 +8227,7 @@ h6,
display: flex;
-webkit-box-align: end;
-ms-flex-align: end;
align-items: end;
align-items: flex-end;
}
.food-menu-item.style-two .content h5 .title {
@ -8206,6 +8248,12 @@ h6,
margin-left: 20px;
}
@media(max-width:425px) {
.food-menu-item.style-two .content h5 .price {
margin-left: 5px;
}
}
.food-menu-item.style-two .content p {
margin-bottom: 0;
}
@ -8225,7 +8273,11 @@ h6,
}
}
@media(max-width:425px) {
.food-menu-item.style-two .content h5 {
font-size: 17px;
}
}
.popular-menu-wrap {
@ -9756,7 +9808,7 @@ h6,
@media only screen and (max-width: 479px) {
.testimonial-two-item .text {
font-size: 20px;
font-size: 16px;
}
}
@ -10775,7 +10827,7 @@ h6,
align-items: center;
-webkit-box-pack: start;
-ms-flex-pack: start;
justify-content: start;
justify-content: flex-start;
text-transform: uppercase;
font-family: var(--heading-font);
}
@ -12281,6 +12333,8 @@ blockquote .blockquote-footer:before {
.slick-prev,
.slick-next {
position: absolute;
top: 50%;
transform: translateY(-50%);
width: 40px;
height: 40px;
background: #222222;
@ -12289,16 +12343,18 @@ blockquote .blockquote-footer:before {
align-items: center;
justify-content: center;
border-radius: 50%;
z-index: 10;
}
.slick-prev {
left: 0%;
top: 25%;
left: -3%;
top: 40%;
}
.slick-next {
right: -3% !important;
top: 25%
top: 40%
}
.about-biryani-category-1 {
@ -12315,6 +12371,13 @@ blockquote .blockquote-footer:before {
right: -40px !important;
}
@media (max-width: 1200px) {
.custom-next-arrow {
right: 0px !important;
}
}
/* For screen widths 1024px and below */
@media (max-width: 1024px) {
.custom-prev-arrow {
@ -12352,4 +12415,22 @@ blockquote .blockquote-footer:before {
.about-biryani-category-1 {
margin-bottom: 20px;
}
}
@media (max-width: 320px) {
.slick-arrow {
right: 87%;
}
.food-menu-tab .nav-link {
padding-top: 12px;
padding-bottom: 8px;
padding-left: 7px;
padding-right: 8px;
}
.food-menu-tab .nav-link span {
margin-top: 0;
font-size: 14px;
}
}

View File

@ -4825,7 +4825,7 @@ h6,
align-items: center;
-webkit-box-pack: start;
-ms-flex-pack: start;
justify-content: start;
justify-content: flex-start;
}
}
@ -7308,7 +7308,7 @@ h6,
display: flex;
-webkit-box-align: start;
-ms-flex-align: start;
align-items: start;
align-items: flex-start;
}
.about-btn-customer .theme-btn {
@ -8052,7 +8052,7 @@ h6,
display: flex;
-webkit-box-align: end;
-ms-flex-align: end;
align-items: end;
align-items: flex-end;
}
.food-menu-item.style-two .content h5 .title {
@ -10575,7 +10575,7 @@ h6,
align-items: center;
-webkit-box-pack: start;
-ms-flex-pack: start;
justify-content: start;
justify-content: flex-start;
text-transform: uppercase;
font-family: var(--heading-font);
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 65 KiB

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

View File

@ -1 +1 @@
<?xml version="1.0" encoding="UTF-8"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:news="http://www.google.com/schemas/sitemap-news/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"><url><loc>https://shivasakthi.ca/</loc><changefreq>daily</changefreq><priority>1.0</priority></url><url><loc>https://shivasakthi.ca/about</loc><changefreq>weekly</changefreq><priority>0.7</priority></url><url><loc>https://shivasakthi.ca/menu</loc><changefreq>weekly</changefreq><priority>0.7</priority></url><url><loc>https://shivasakthi.ca/blog</loc><changefreq>weekly</changefreq><priority>0.7</priority></url><url><loc>https://shivasakthi.ca/contact</loc><changefreq>monthly</changefreq><priority>0.5</priority></url><url><loc>https://shivasakthi.ca/blog/the-flavors-of-north-india-more-than-just-curries</loc><changefreq>weekly</changefreq><priority>0.6</priority></url><url><loc>https://shivasakthi.ca/blog/the-secret-to-perfect-north-indian-curries</loc><changefreq>weekly</changefreq><priority>0.6</priority></url><url><loc>https://shivasakthi.ca/blog/the-rich-history-of-south-indian-cuisine</loc><changefreq>weekly</changefreq><priority>0.6</priority></url></urlset>
<?xml version="1.0" encoding="UTF-8"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:news="http://www.google.com/schemas/sitemap-news/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"><url><loc>https://shivasakthi.ca/</loc><changefreq>daily</changefreq><priority>1.0</priority></url><url><loc>https://shivasakthi.ca/about/</loc><changefreq>weekly</changefreq><priority>0.7</priority></url><url><loc>https://shivasakthi.ca/menu/</loc><changefreq>weekly</changefreq><priority>0.7</priority></url><url><loc>https://shivasakthi.ca/blog/</loc><changefreq>weekly</changefreq><priority>0.7</priority></url><url><loc>https://shivasakthi.ca/contact-south-indian-restaurant/</loc><changefreq>monthly</changefreq><priority>0.5</priority></url><url><loc>https://shivasakthi.ca/blog/the-flavors-of-north-india-more-than-just-curries/</loc><changefreq>weekly</changefreq><priority>0.6</priority></url><url><loc>https://shivasakthi.ca/blog/the-secret-to-perfect-north-indian-curries/</loc><changefreq>weekly</changefreq><priority>0.6</priority></url><url><loc>https://shivasakthi.ca/blog/the-rich-history-of-south-indian-cuisine/</loc><changefreq>weekly</changefreq><priority>0.6</priority></url></urlset>

View File

@ -1,47 +1,79 @@
const fs = require('fs');
const { SitemapStream, streamToPromise } = require('sitemap');
const path = require('path');
const fs = require("fs");
const path = require("path");
const { SitemapStream, streamToPromise } = require("sitemap");
const hostname = "https://shivasakthi.ca";
const addTrailingSlash = true; // Set true if your Next.js has trailingSlash: true
// ✅ Utility to control trailing slashes
const shouldAddSlash = (url) => {
if (url === "/") return false;
if (/\.[a-z0-9]{2,6}(\?.*)?$/i.test(url)) return false;
return true;
};
const formatUrl = (url) => {
if (!url.startsWith("/")) url = "/" + url;
if (addTrailingSlash && shouldAddSlash(url) && !url.endsWith("/")) {
return url + "/";
}
if (!addTrailingSlash && url.endsWith("/") && url !== "/") {
return url.slice(0, -1);
}
return url;
};
// ✅ Static pages
const staticLinks = [
{ url: '/', changefreq: 'daily', priority: 1.0 },
{ url: '/about', changefreq: 'weekly', priority: 0.7 },
{ url: '/menu', changefreq: 'weekly', priority: 0.7 },
{ url: '/blog', changefreq: 'weekly', priority: 0.7 },
{ url: '/contact', changefreq: 'monthly', priority: 0.5 }
{ url: "/", changefreq: "daily", priority: 1.0 },
{ url: "/about", changefreq: "weekly", priority: 0.7 },
{ url: "/menu", changefreq: "weekly", priority: 0.7 },
{ url: "/blog", changefreq: "weekly", priority: 0.7 },
{ url: "/contact-south-indian-restaurant", changefreq: "monthly", priority: 0.5 },
];
// ✅ Dynamic blog posts (example)
const blogPosts = [
{ slug: 'the-flavors-of-north-india-more-than-just-curries' },
{ slug: 'the-secret-to-perfect-north-indian-curries' },
{ slug: 'the-rich-history-of-south-indian-cuisine' }
{ slug: "/blog/the-flavors-of-north-india-more-than-just-curries/" },
{ slug: "/blog/the-secret-to-perfect-north-indian-curries/" },
{ slug: "/blog/the-rich-history-of-south-indian-cuisine/" },
];
// Convert blog slugs to sitemap entries
const blogLinks = blogPosts.map(post => ({
url: `/blog/${post.slug}`,
changefreq: 'weekly',
priority: 0.6
// // Convert blog slugs to sitemap entries
const blogLinks = blogPosts.map((post) => ({
url: formatUrl(post.slug),
changefreq: "weekly",
priority: 0.6,
}));
const allLinks = [...staticLinks, ...blogLinks];
const allLinks = [...staticLinks, ...blogLinks].map((link) => ({
...link,
url: formatUrl(link.url),
}));
async function generateSitemap() {
try {
const sitemap = new SitemapStream({ hostname: 'https://shivasakthi.ca/' });
const writeStream = fs.createWriteStream(path.resolve(__dirname, '../public/sitemap.xml'));
try {
const sitemap = new SitemapStream({ hostname });
const writeStream = fs.createWriteStream(
path.resolve(__dirname, "../public/sitemap.xml")
);
sitemap.pipe(writeStream);
sitemap.pipe(writeStream);
allLinks.forEach(link => sitemap.write(link));
sitemap.end();
console.log("📦 Writing URLs to sitemap:");
allLinks.forEach((link) => {
const fullUrl = `${hostname}${link.url}`;
console.log(" -", fullUrl);
sitemap.write(link);
});
await streamToPromise(sitemap);
console.log('✅ sitemap.xml created with blog slugs!');
} catch (error) {
console.error('❌ Error creating sitemap.xml:', error);
}
sitemap.end();
await streamToPromise(sitemap);
console.log("✅ sitemap.xml created successfully!");
} catch (error) {
console.error("❌ Error creating sitemap.xml:", error);
}
}
generateSitemap();

View File

@ -3,8 +3,10 @@ export const Blog = [
id: 1,
slug: "the-flavors-of-north-india-more-than-just-curries",
image: "/assets/images/blog/blog-1.webp",
bigImage:"/assets/images/blog/blog-large-1.webp",
bigImage: "/assets/images/blog/blog-large-1.jpg ",
title: "The Flavors of North India: More Than Just Curries",
metatitle: "Flavors of North India: Beyond Just Curries | Shiva Shakthi",
metadescription: "Explore the aromatic breads, tandoori delights, rice dishes & hearty vegetarian staples that make North Indian cuisine so much more than just curries.",
user: "Admin",
date: "05 Dec 2024",
short_des: "Exploring the Bread, Tandoor, and Delights of North Indian Cuisine 'North Indian cuisine is not only about rich curries but also a vibrant array of breads, tandoor-cooked",
@ -123,8 +125,10 @@ export const Blog = [
id: 2,
slug: "the-secret-to-perfect-north-indian-curries",
image: "/assets/images/blog/blog-2.webp",
bigImage:"/assets/images/blog/blog-large-2.webp",
bigImage: "/assets/images/blog/blog-large-2.webp",
title: "The Secret to Perfect North Indian Curries",
metatitle: "The Secret to Perfect North Indian Curries | Shiva Shakthi",
metadescription: "Discover how Shiva Shakthi crafts irresistible North Indian curries — from slow-cooked bases and toasted spices to creamy textures and balanced flavors.",
user: "Admin",
date: "05 Dec 2024",
short_des: "Unlocking the Flavors of Authentic North Indian CuisineNorth Indian curries are the heart and soul of Indian cuisine, known for their rich textures, deep flavors, and",
@ -229,8 +233,10 @@ export const Blog = [
id: 3,
slug: "the-rich-history-of-south-indian-cuisine",
image: "/assets/images/blog/blog-3.webp",
bigImage:"/assets/images/blog/blog-large-3.webp",
bigImage: "/assets/images/blog/blog-large-3.webp",
title: "The Rich History of South Indian Cuisine",
metatitle: "The Rich History of South Indian Cuisine | Shiva Sakthi",
metadescription: "Explore the rich history of South Indian cuisine from dosa and sambar origins to regional diversity & authentic flavors at Shiva Sakthis culinary journey.",
user: "Admin",
date: "05 Dec 2024",
short_des: "A Journey Through Time: The Story of South Indian Cuisine",