diff --git a/src/app/about/page.tsx b/src/app/about/page.tsx index 5cc5542..d728847 100644 --- a/src/app/about/page.tsx +++ b/src/app/about/page.tsx @@ -30,11 +30,11 @@ export default function AboutPage() { { name: "Home", id: "/" }, { name: "Menu", id: "/menu" }, { name: "About", id: "/about" }, - { name: "Contact", id: "/contact" } + { name: "Contact", id: "/contact" }, + { name: "Shop", id: "/shop" } ]} button={{ - text: "Reserve Now", - href: "/contact" + text: "Reserve Now", href: "/contact" }} /> @@ -78,14 +78,10 @@ export default function AboutPage() { tagAnimation="slide-up" metrics={[ { - id: "1", - value: "45K+", - description: "Guests have experienced authentic Lebanese hospitality at our tables" + id: "1", value: "45K+", description: "Guests have experienced authentic Lebanese hospitality at our tables" }, { - id: "2", - value: "120+", - description: "Traditional family recipes preserved and shared with our community" + id: "2", value: "120+", description: "Traditional family recipes preserved and shared with our community" } ]} metricsAnimation="opacity" @@ -99,12 +95,10 @@ export default function AboutPage() { diff --git a/src/app/blog/page.tsx b/src/app/blog/page.tsx index f31b35a..18a572f 100644 --- a/src/app/blog/page.tsx +++ b/src/app/blog/page.tsx @@ -29,11 +29,12 @@ export default function BlogPage() { brandName="Beirut Kitchen" navItems={[ { name: "Home", id: "/" }, - { name: "Menu", id: "product" }, - { name: "About", id: "about" }, - { name: "Contact", id: "contact" } + { name: "Menu", id: "/menu" }, + { name: "About", id: "/about" }, + { name: "Contact", id: "/contact" }, + { name: "Shop", id: "/shop" } ]} - button={{ text: "Reserve Now", href: "contact" }} + button={{ text: "Reserve Now", href: "/contact" }} /> diff --git a/src/app/contact/page.tsx b/src/app/contact/page.tsx index ac75ac0..e2e7670 100644 --- a/src/app/contact/page.tsx +++ b/src/app/contact/page.tsx @@ -30,11 +30,11 @@ export default function ContactPage() { { name: "Home", id: "/" }, { name: "Menu", id: "/menu" }, { name: "About", id: "/about" }, - { name: "Contact", id: "/contact" } + { name: "Contact", id: "/contact" }, + { name: "Shop", id: "/shop" } ]} button={{ - text: "Reserve Now", - href: "/contact" + text: "Reserve Now", href: "/contact" }} /> @@ -81,22 +81,10 @@ export default function ContactPage() { tagAnimation="slide-up" testimonials={[ { - id: "1", - title: "Perfect Anniversary Dinner", - quote: "We celebrated our anniversary here and the staff made it extra special. The lamb shawarma was perfectly cooked, and the service was impeccable.", - name: "Emily Rodriguez", - role: "Anniversary Guest", - imageSrc: "https://img.b2bpic.net/free-photo/smiling-woman-sitting-cafe-with-closed-laptop_1262-1151.jpg", - imageAlt: "Emily Rodriguez, anniversary dinner guest" + id: "1", title: "Perfect Anniversary Dinner", quote: "We celebrated our anniversary here and the staff made it extra special. The lamb shawarma was perfectly cooked, and the service was impeccable.", name: "Emily Rodriguez", role: "Anniversary Guest", imageSrc: "https://img.b2bpic.net/free-photo/smiling-woman-sitting-cafe-with-closed-laptop_1262-1151.jpg", imageAlt: "Emily Rodriguez, anniversary dinner guest" }, { - id: "2", - title: "A Hidden Gem in the City", - quote: "Finally found authentic Lebanese food that matches my childhood memories. The ambiance, service, and food are all top-notch. Highly recommended!", - name: "David Kim", - role: "Food Blogger", - imageSrc: "https://img.b2bpic.net/free-photo/young-female-with-pinkish-hair-posing_344912-846.jpg", - imageAlt: "David Kim, food blogger and guest" + id: "2", title: "A Hidden Gem in the City", quote: "Finally found authentic Lebanese food that matches my childhood memories. The ambiance, service, and food are all top-notch. Highly recommended!", name: "David Kim", role: "Food Blogger", imageSrc: "https://img.b2bpic.net/free-photo/young-female-with-pinkish-hair-posing_344912-846.jpg", imageAlt: "David Kim, food blogger and guest" } ]} ariaLabel="Recent customer testimonials and dining experiences" @@ -108,12 +96,10 @@ export default function ContactPage() { diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 5cdf98b..99c8e59 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -3,36 +3,23 @@ import { Mulish } from "next/font/google"; import "./globals.css"; const mulish = Mulish({ - variable: "--font-mulish", - subsets: ["latin"], + variable: "--font-mulish", subsets: ["latin"], }); export const metadata: Metadata = { - title: "Beirut Kitchen - Authentic Lebanese Restaurant & Cuisine", - description: "Experience authentic Lebanese cuisine at Beirut Kitchen. Traditional recipes, premium ingredients, and warm hospitality since 2015. Reserve your table today.", - keywords: ["Lebanese restaurant", "authentic cuisine", "Lebanese food", "hummus", "mezze", "shawarma", "Mediterranean dining"], + title: "Beirut Kitchen - Authentic Lebanese Restaurant & Cuisine", description: "Experience authentic Lebanese cuisine at Beirut Kitchen. Traditional recipes, premium ingredients, and warm hospitality since 2015. Reserve your table today.", keywords: ["Lebanese restaurant", "authentic cuisine", "Lebanese food", "hummus", "mezze", "shawarma", "Mediterranean dining"], robots: { index: true, follow: true, }, openGraph: { - title: "Beirut Kitchen - Authentic Lebanese Restaurant", - description: "Discover traditional Lebanese cuisine prepared with family recipes and the finest ingredients.", - url: "https://beirutkitchen.example.com", - siteName: "Beirut Kitchen", - type: "website", - images: [ + title: "Beirut Kitchen - Authentic Lebanese Restaurant", description: "Discover traditional Lebanese cuisine prepared with family recipes and the finest ingredients.", url: "https://beirutkitchen.example.com", siteName: "Beirut Kitchen", type: "website", images: [ { - url: "https://img.b2bpic.net/free-photo/colorful-tasty-hummus-with-ingredients_23-2149401906.jpg", - alt: "Authentic Lebanese mezze platter", - }, + url: "https://img.b2bpic.net/free-photo/colorful-tasty-hummus-with-ingredients_23-2149401906.jpg", alt: "Authentic Lebanese mezze platter"}, ], }, twitter: { - card: "summary_large_image", - title: "Beirut Kitchen - Authentic Lebanese Restaurant", - description: "Experience traditional Lebanese cuisine with warm hospitality.", - images: ["https://img.b2bpic.net/free-photo/colorful-tasty-hummus-with-ingredients_23-2149401906.jpg"], + card: "summary_large_image", title: "Beirut Kitchen - Authentic Lebanese Restaurant", description: "Experience traditional Lebanese cuisine with warm hospitality.", images: ["https://img.b2bpic.net/free-photo/colorful-tasty-hummus-with-ingredients_23-2149401906.jpg"], }, }; diff --git a/src/app/menu/page.tsx b/src/app/menu/page.tsx index e139e87..831841c 100644 --- a/src/app/menu/page.tsx +++ b/src/app/menu/page.tsx @@ -30,11 +30,11 @@ export default function MenuPage() { { name: "Home", id: "/" }, { name: "Menu", id: "/menu" }, { name: "About", id: "/about" }, - { name: "Contact", id: "/contact" } + { name: "Contact", id: "/contact" }, + { name: "Shop", id: "/shop" } ]} button={{ - text: "Reserve Now", - href: "/contact" + text: "Reserve Now", href: "/contact" }} /> @@ -53,46 +53,22 @@ export default function MenuPage() { useInvertedBackground={false} products={[ { - id: "1", - name: "Classic Hummus", - price: "$8.99", - imageSrc: "https://img.b2bpic.net/free-photo/colorful-tasty-hummus-with-ingredients_23-2149401906.jpg", - imageAlt: "Traditional Lebanese hummus with olive oil and tahini" + id: "1", name: "Classic Hummus", price: "$8.99", imageSrc: "https://img.b2bpic.net/free-photo/colorful-tasty-hummus-with-ingredients_23-2149401906.jpg", imageAlt: "Traditional Lebanese hummus with olive oil and tahini" }, { - id: "2", - name: "Fattoush Salad", - price: "$14.99", - imageSrc: "https://img.b2bpic.net/free-photo/top-view-yogurt-with-pomegranate-oil_23-2148759732.jpg", - imageAlt: "Fresh fattoush with vegetables and sumac vinaigrette" + id: "2", name: "Fattoush Salad", price: "$14.99", imageSrc: "https://img.b2bpic.net/free-photo/top-view-yogurt-with-pomegranate-oil_23-2148759732.jpg", imageAlt: "Fresh fattoush with vegetables and sumac vinaigrette" }, { - id: "3", - name: "Kibbeh Plate", - price: "$16.99", - imageSrc: "https://img.b2bpic.net/free-photo/delicious-hummus-plate-still-life-view_23-2149595634.jpg", - imageAlt: "Golden kibbeh with traditional meat and bulgur filling" + id: "3", name: "Kibbeh Plate", price: "$16.99", imageSrc: "https://img.b2bpic.net/free-photo/delicious-hummus-plate-still-life-view_23-2149595634.jpg", imageAlt: "Golden kibbeh with traditional meat and bulgur filling" }, { - id: "4", - name: "Lamb Shawarma", - price: "$22.99", - imageSrc: "https://img.b2bpic.net/free-photo/top-view-delicious-hummus-plate-still-life_23-2149595639.jpg", - imageAlt: "Tender lamb shawarma with tahini and herbs" + id: "4", name: "Lamb Shawarma", price: "$22.99", imageSrc: "https://img.b2bpic.net/free-photo/top-view-delicious-hummus-plate-still-life_23-2149595639.jpg", imageAlt: "Tender lamb shawarma with tahini and herbs" }, { - id: "5", - name: "Baklava Selection", - price: "$9.99", - imageSrc: "https://img.b2bpic.net/free-photo/colorful-tasty-hummus-with-ingredients_23-2149401906.jpg", - imageAlt: "Assorted baklava pastries with honey and nuts" + id: "5", name: "Baklava Selection", price: "$9.99", imageSrc: "https://img.b2bpic.net/free-photo/colorful-tasty-hummus-with-ingredients_23-2149401906.jpg", imageAlt: "Assorted baklava pastries with honey and nuts" }, { - id: "6", - name: "Lebanese Coffee", - price: "$4.99", - imageSrc: "https://img.b2bpic.net/free-photo/top-view-yogurt-with-pomegranate-oil_23-2148759732.jpg", - imageAlt: "Traditional Lebanese coffee service" + id: "6", name: "Lebanese Coffee", price: "$4.99", imageSrc: "https://img.b2bpic.net/free-photo/top-view-yogurt-with-pomegranate-oil_23-2148759732.jpg", imageAlt: "Traditional Lebanese coffee service" } ]} ariaLabel="Complete Lebanese restaurant menu with prices" @@ -112,16 +88,12 @@ export default function MenuPage() { tagAnimation="slide-up" negativeCard={{ items: [ - "Generic Mediterranean blends", - "Processed convenience ingredients", - "Mass-produced bread and pita" + "Generic Mediterranean blends", "Processed convenience ingredients", "Mass-produced bread and pita" ] }} positiveCard={{ items: [ - "Authentic Lebanese spice blends imported directly", - "Fresh vegetables and herbs delivered daily", - "House-made pita bread baked fresh throughout the day" + "Authentic Lebanese spice blends imported directly", "Fresh vegetables and herbs delivered daily", "House-made pita bread baked fresh throughout the day" ] }} ariaLabel="Quality comparison of our authentic Lebanese ingredients" @@ -142,18 +114,10 @@ export default function MenuPage() { useInvertedBackground={true} products={[ { - id: "7", - name: "Khalil Family Mezze Platter", - price: "$34.99", - imageSrc: "https://img.b2bpic.net/free-photo/colorful-tasty-hummus-with-ingredients_23-2149401906.jpg", - imageAlt: "Family-style mezze platter with multiple Lebanese appetizers" + id: "7", name: "Khalil Family Mezze Platter", price: "$34.99", imageSrc: "https://img.b2bpic.net/free-photo/colorful-tasty-hummus-with-ingredients_23-2149401906.jpg", imageAlt: "Family-style mezze platter with multiple Lebanese appetizers" }, { - id: "8", - name: "Cedar Mountain Lamb", - price: "$28.99", - imageSrc: "https://img.b2bpic.net/free-photo/delicious-hummus-plate-still-life-view_23-2149595634.jpg", - imageAlt: "Slow-roasted lamb with Lebanese mountain herbs" + id: "8", name: "Cedar Mountain Lamb", price: "$28.99", imageSrc: "https://img.b2bpic.net/free-photo/delicious-hummus-plate-still-life-view_23-2149595634.jpg", imageAlt: "Slow-roasted lamb with Lebanese mountain herbs" } ]} ariaLabel="Chef's signature Lebanese specialties and family recipes" @@ -165,12 +129,10 @@ export default function MenuPage() { diff --git a/src/app/page.tsx b/src/app/page.tsx index 480789e..6469a12 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -35,11 +35,11 @@ export default function HomePage() { { name: "Home", id: "/" }, { name: "Menu", id: "/menu" }, { name: "About", id: "/about" }, - { name: "Contact", id: "/contact" } + { name: "Contact", id: "/contact" }, + { name: "Shop", id: "/shop" } ]} button={{ - text: "Reserve Now", - href: "/contact" + text: "Reserve Now", href: "/contact" }} /> @@ -94,25 +94,13 @@ export default function HomePage() { useInvertedBackground={false} products={[ { - id: "1", - name: "Fattoush Salad", - price: "$14.99", - imageSrc: "https://img.b2bpic.net/free-photo/top-view-yogurt-with-pomegranate-oil_23-2148759732.jpg", - imageAlt: "Crisp fattoush salad with fresh vegetables and sumac vinaigrette" + id: "1", name: "Fattoush Salad", price: "$14.99", imageSrc: "https://img.b2bpic.net/free-photo/top-view-yogurt-with-pomegranate-oil_23-2148759732.jpg", imageAlt: "Crisp fattoush salad with fresh vegetables and sumac vinaigrette" }, { - id: "2", - name: "Kibbeh", - price: "$12.99", - imageSrc: "https://img.b2bpic.net/free-photo/delicious-hummus-plate-still-life-view_23-2149595634.jpg", - imageAlt: "Golden fried kibbeh with traditional meat and bulgur filling" + id: "2", name: "Kibbeh", price: "$12.99", imageSrc: "https://img.b2bpic.net/free-photo/delicious-hummus-plate-still-life-view_23-2149595634.jpg", imageAlt: "Golden fried kibbeh with traditional meat and bulgur filling" }, { - id: "3", - name: "Grilled Lamb Shawarma", - price: "$18.99", - imageSrc: "https://img.b2bpic.net/free-photo/top-view-delicious-hummus-plate-still-life_23-2149595639.jpg", - imageAlt: "Tender grilled lamb shawarma with tahini sauce and fresh herbs" + id: "3", name: "Grilled Lamb Shawarma", price: "$18.99", imageSrc: "https://img.b2bpic.net/free-photo/top-view-delicious-hummus-plate-still-life_23-2149595639.jpg", imageAlt: "Tender grilled lamb shawarma with tahini sauce and fresh herbs" } ]} ariaLabel="Featured Lebanese dishes and menu items" @@ -127,14 +115,10 @@ export default function HomePage() { tagAnimation="slide-up" metrics={[ { - id: "1", - value: "15K+", - description: "Happy guests enjoy our authentic Lebanese cuisine every year" + id: "1", value: "15K+", description: "Happy guests enjoy our authentic Lebanese cuisine every year" }, { - id: "2", - value: "100%", - description: "Ingredients sourced from trusted Lebanese and Mediterranean suppliers" + id: "2", value: "100%", description: "Ingredients sourced from trusted Lebanese and Mediterranean suppliers" } ]} metricsAnimation="opacity" @@ -155,22 +139,10 @@ export default function HomePage() { tagAnimation="slide-up" testimonials={[ { - id: "1", - title: "An Unforgettable Dining Experience", - quote: "The hummus here is absolutely divine. It tastes exactly like my grandmother made it in Beirut. Every visit feels like coming home.", - name: "Sarah Mitchell", - role: "Regular Guest", - imageSrc: "https://img.b2bpic.net/free-photo/smiling-middle-aged-woman-showing-ok-sign_1262-17571.jpg", - imageAlt: "Sarah Mitchell, satisfied restaurant guest" + id: "1", title: "An Unforgettable Dining Experience", quote: "The hummus here is absolutely divine. It tastes exactly like my grandmother made it in Beirut. Every visit feels like coming home.", name: "Sarah Mitchell", role: "Regular Guest", imageSrc: "https://img.b2bpic.net/free-photo/smiling-middle-aged-woman-showing-ok-sign_1262-17571.jpg", imageAlt: "Sarah Mitchell, satisfied restaurant guest" }, { - id: "2", - title: "Authentic Flavors Worth Celebrating", - quote: "The freshness of ingredients and attention to detail in every dish is remarkable. This is true Lebanese cuisine, prepared with love.", - name: "Michael Chen", - role: "Restaurant Critic", - imageSrc: "https://img.b2bpic.net/free-photo/smiling-middle-aged-attractive-woman-showing-thumb-up-outdoors_1262-12526.jpg", - imageAlt: "Michael Chen, professional restaurant critic" + id: "2", title: "Authentic Flavors Worth Celebrating", quote: "The freshness of ingredients and attention to detail in every dish is remarkable. This is true Lebanese cuisine, prepared with love.", name: "Michael Chen", role: "Restaurant Critic", imageSrc: "https://img.b2bpic.net/free-photo/smiling-middle-aged-attractive-woman-showing-thumb-up-outdoors_1262-12526.jpg", imageAlt: "Michael Chen, professional restaurant critic" } ]} ariaLabel="Customer testimonials and reviews" @@ -190,18 +162,12 @@ export default function HomePage() { tagAnimation="slide-up" negativeCard={{ items: [ - "Mass-produced ingredients", - "Inconsistent flavors", - "Rushed preparation", - "Impersonal service" + "Mass-produced ingredients", "Inconsistent flavors", "Rushed preparation", "Impersonal service" ] }} positiveCard={{ items: [ - "Premium sourced ingredients from trusted suppliers", - "Consistent authentic taste in every dish", - "Slow-cooked with traditional methods", - "Warm, personalized hospitality for every guest" + "Premium sourced ingredients from trusted suppliers", "Consistent authentic taste in every dish", "Slow-cooked with traditional methods", "Warm, personalized hospitality for every guest" ] }} ariaLabel="Why choose our Lebanese restaurant for authentic dining" @@ -228,12 +194,10 @@ export default function HomePage() { diff --git a/src/app/shop/[id]/page.tsx b/src/app/shop/[id]/page.tsx index 8606d70..fe0c1fd 100644 --- a/src/app/shop/[id]/page.tsx +++ b/src/app/shop/[id]/page.tsx @@ -1,6 +1,6 @@ "use client"; -import { use, useCallback } from "react"; +import { use, useCallback, useState } from "react"; import { useRouter } from "next/navigation"; import ReactLenis from "lenis/react"; import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider"; @@ -19,6 +19,7 @@ interface ProductPageProps { export default function ProductPage({ params }: ProductPageProps) { const { id } = use(params); const router = useRouter(); + const [cartOpen, setCartOpen] = useState(false); const { product, @@ -33,8 +34,6 @@ export default function ProductPage({ params }: ProductPageProps) { const { items: cartItems, - isOpen: cartOpen, - setIsOpen: setCartOpen, addItem, updateQuantity, removeItem, @@ -86,9 +85,9 @@ export default function ProductPage({ params }: ProductPageProps) { brandName="Beirut Kitchen" navItems={[ { name: "Home", id: "/" }, - { name: "Menu", id: "product" }, - { name: "About", id: "about" }, - { name: "Contact", id: "contact" }, + { name: "Menu", id: "/menu" }, + { name: "About", id: "/about" }, + { name: "Contact", id: "/contact" }, { name: "Shop", id: "/shop" } ]} button={{ text: "Cart", onClick: () => setCartOpen(true) }} @@ -130,9 +129,9 @@ export default function ProductPage({ params }: ProductPageProps) { brandName="Beirut Kitchen" navItems={[ { name: "Home", id: "/" }, - { name: "Menu", id: "product" }, - { name: "About", id: "about" }, - { name: "Contact", id: "contact" }, + { name: "Menu", id: "/menu" }, + { name: "About", id: "/about" }, + { name: "Contact", id: "/contact" }, { name: "Shop", id: "/shop" } ]} button={{ text: "Cart", onClick: () => setCartOpen(true) }} @@ -181,9 +180,9 @@ export default function ProductPage({ params }: ProductPageProps) { brandName="Beirut Kitchen" navItems={[ { name: "Home", id: "/" }, - { name: "Menu", id: "product" }, - { name: "About", id: "about" }, - { name: "Contact", id: "contact" }, + { name: "Menu", id: "/menu" }, + { name: "About", id: "/about" }, + { name: "Contact", id: "/contact" }, { name: "Shop", id: "/shop" } ]} button={{ text: "Cart", onClick: () => setCartOpen(true) }} diff --git a/src/app/shop/page.tsx b/src/app/shop/page.tsx index d2797cd..c93a7cf 100644 --- a/src/app/shop/page.tsx +++ b/src/app/shop/page.tsx @@ -1,5 +1,6 @@ "use client"; +import { useState } from "react"; import ReactLenis from "lenis/react"; import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider"; import NavbarLayoutFloatingInline from '@/components/navbar/NavbarLayoutFloatingInline'; @@ -8,14 +9,19 @@ import ProductCatalog from "@/components/ecommerce/productCatalog/ProductCatalog import { useProductCatalog } from "@/hooks/useProductCatalog"; export default function ShopPage() { + const [cartOpen, setCartOpen] = useState(false); + const { products, isLoading, search, setSearch, + category, + setCategory, + sort, + setSort, filters, - cartOpen, - setCartOpen, + categories, } = useProductCatalog({ basePath: "/shop" }); if (isLoading) { @@ -38,9 +44,9 @@ export default function ShopPage() { brandName="Beirut Kitchen" navItems={[ { name: "Home", id: "/" }, - { name: "Menu", id: "product" }, - { name: "About", id: "about" }, - { name: "Contact", id: "contact" }, + { name: "Menu", id: "/menu" }, + { name: "About", id: "/about" }, + { name: "Contact", id: "/contact" }, { name: "Shop", id: "/shop" } ]} button={{ text: "Cart", onClick: () => setCartOpen(true) }} @@ -81,9 +87,9 @@ export default function ShopPage() { brandName="Beirut Kitchen" navItems={[ { name: "Home", id: "/" }, - { name: "Menu", id: "product" }, - { name: "About", id: "about" }, - { name: "Contact", id: "contact" }, + { name: "Menu", id: "/menu" }, + { name: "About", id: "/about" }, + { name: "Contact", id: "/contact" }, { name: "Shop", id: "/shop" } ]} button={{ text: "Cart", onClick: () => setCartOpen(true) }}