Merge version_2_1781515958989 into main #1

Merged
bender merged 2 commits from version_2_1781515958989 into main 2026-06-15 09:44:39 +00:00
9 changed files with 290 additions and 199 deletions

View File

@@ -41,6 +41,7 @@ export default function Layout() {
<StyleProvider buttonVariant="elastic" siteBackground="floatingGradient" heroBackground="gradientBars">
<SiteBackgroundSlot />
<SectionErrorBoundary name="navbar">
<div className="[&_a]:!text-background [&_span]:!text-background [&_div]:!text-background">
<NavbarCentered
logo="Hummus House"
ctaButton={{
@@ -48,6 +49,7 @@ export default function Layout() {
href: "#order",
}}
navItems={navItems} />
</div>
</SectionErrorBoundary>
<main className="flex-grow">
<Outlet />

View File

@@ -1,210 +1,33 @@
import AboutMediaOverlay from '@/components/sections/about/AboutMediaOverlay';
import ContactCta from '@/components/sections/contact/ContactCta';
import FaqTabbedAccordion from '@/components/sections/faq/FaqTabbedAccordion';
import FeaturesRevealCardsBento from '@/components/sections/features/FeaturesRevealCardsBento';
import HeroOverlay from '@/components/sections/hero/HeroOverlay';
import MetricsIconCards from '@/components/sections/metrics/MetricsIconCards';
import TestimonialColumnMarqueeCards from '@/components/sections/testimonial/TestimonialColumnMarqueeCards';
import { Award, CheckCircle, Zap } from "lucide-react";
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
// AUTO-GENERATED shell by per-section-migrate.
// Section bodies live in ./<PageBase>/sections/<X>.tsx. Edit the section
// files directly. Non-block content (wrappers, non-inlinable sections) is
// preserved inline; extracted section blocks become <XSection/> refs.
export default function HomePage() {
import React from 'react';
import HeroSection from './HomePage/sections/Hero';
import AboutSection from './HomePage/sections/About';
import MenuSection from './HomePage/sections/Menu';
import MetricsSection from './HomePage/sections/Metrics';
import TestimonialsSection from './HomePage/sections/Testimonials';
import FaqSection from './HomePage/sections/Faq';
import ContactSection from './HomePage/sections/Contact';
export default function HomePage(): React.JSX.Element {
return (
<>
<div id="hero" data-section="hero">
<SectionErrorBoundary name="hero">
<HeroOverlay
tag="Since 2018"
title="Home of Coventrys Best Falafel"
description="Freshly made, packed with flavour, and loved by locals for years. One bite and youll understand the hype."
primaryButton={{
text: "Order Now",
href: "#order",
}}
secondaryButton={{
text: "View Menu",
href: "#menu",
}}
imageSrc="http://img.b2bpic.net/free-photo/delicious-falafel-wrap-with-sauce_23-2152015870.jpg"
/>
</SectionErrorBoundary>
</div>
<>
<HeroSection />
<div id="about" data-section="about">
<SectionErrorBoundary name="about">
<AboutMediaOverlay
tag="Our Story"
title="Fresh, Authentic, Unforgettable."
description="Hummus House UK has been serving the Coventry community for years, building a reputation for fresh, authentic, and affordable Middle Eastern food. Our mission is simple: Serve delicious food that keeps people coming back."
imageSrc="http://img.b2bpic.net/free-photo/italian-chef-uniform-is-preparing-pastry-pizza-kitchen_613910-14090.jpg"
/>
</SectionErrorBoundary>
</div>
<AboutSection />
<div id="menu" data-section="menu">
<SectionErrorBoundary name="menu">
<FeaturesRevealCardsBento
tag="Menu Highlights"
title="Our Signature Experience"
description="Everything is crafted to satisfy, from crispy falafel to creamy hummus."
items={[
{
title: "Falafel Wrap",
description: "Crispy on the outside, soft inside, packed with fresh vegetables.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/yummy-arabic-kebab-sandwich_23-2148651082.jpg",
},
{
title: "Mixed Wraps",
description: "A perfect blend of meats and flavours for a hearty bite.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/top-view-delicious-meat-sandwich-made-meat-grilled-spit-sliced-with-seasonings-dark-blue-desk-burger-meat-meal-lunch-food-sandwich_140725-64501.jpg",
},
{
title: "Hummus Bowls",
description: "Smooth, creamy hummus served with fresh house toppings.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/composition-with-delicious-local-food-dish_23-2148833847.jpg",
},
{
title: "Fresh Juices",
description: "Made fresh daily with natural ingredients and fruits.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/tortilla-wrap-with-falafel-vegetables-black-stone-background_123827-20240.jpg",
},
{
title: "House Sauces",
description: "Authentic secret recipe sauces for every wrap.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/flat-lay-burritos-tablecloth_23-2148582664.jpg",
},
{
title: "Salad Sides",
description: "Crisp garden vegetables and house dressings.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/high-angle-tasty-hummus-with-parsley_23-2149483839.jpg",
},
{
title: "Dessert Treats",
description: "Traditional Middle Eastern sweet bites.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/arabic-kebab-sandwich-wrapped-thin-pita_23-2148651105.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
<MenuSection />
<div id="metrics" data-section="metrics">
<SectionErrorBoundary name="metrics">
<MetricsIconCards
tag="Our Impact"
title="Why People Love Us"
description="We are proud to serve the community every single day."
metrics={[
{
icon: CheckCircle,
title: "Fresh Ingredients",
value: "Daily",
},
{
icon: Award,
title: "Recipes",
value: "Authentic",
},
{
icon: Zap,
title: "Service",
value: "Fast",
},
]}
/>
</SectionErrorBoundary>
</div>
<MetricsSection />
<div id="testimonials" data-section="testimonials">
<SectionErrorBoundary name="testimonials">
<TestimonialColumnMarqueeCards
tag="Reviews"
title="What Customers Say"
description="Loved by locals for years."
testimonials={[
{
name: "Sherouk Hany",
role: "Local Foodie",
quote: "The most delicious falafel Ive ever eaten.",
imageSrc: "http://img.b2bpic.net/free-photo/indian-man-smiling-restaurant-concept_53876-13779.jpg",
},
{
name: "Chris Norman",
role: "Local Resident",
quote: "Best falafel in Coventry, hands down!",
imageSrc: "http://img.b2bpic.net/free-photo/woman-cutting-dragon-fruit-outdoors_23-2150295970.jpg",
},
{
name: "Carl Wilkins",
role: "Regular Customer",
quote: "Always fresh, tasty and great prices.",
imageSrc: "http://img.b2bpic.net/free-photo/girl-sitting-table-holding-mobile-phone-indoors_171337-17096.jpg",
},
{
name: "Hüda Hacıoğlu",
role: "Food Fan",
quote: "Absolutely delicious — perfectly crispy and full of flavour.",
imageSrc: "http://img.b2bpic.net/free-photo/ramadan-concept-with-food-te_23-2147796747.jpg",
},
{
name: "Ian Manborde",
role: "Long-time Customer",
quote: "Been going for years — always high quality.",
imageSrc: "http://img.b2bpic.net/free-photo/close-up-women-eating-together_23-2149061571.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
<TestimonialsSection />
<div id="faq" data-section="faq">
<SectionErrorBoundary name="faq">
<FaqTabbedAccordion
tag="Information"
title="Frequently Asked Questions"
description="Everything you need to know about Hummus House."
categories={[
{
name: "General",
items: [
{
question: "Where are you located?",
answer: "In the heart of Coventry city centre.",
},
{
question: "Do you offer delivery?",
answer: "Check our latest platforms for delivery options.",
},
],
},
]}
/>
</SectionErrorBoundary>
</div>
<FaqSection />
<div id="contact" data-section="contact">
<SectionErrorBoundary name="contact">
<ContactCta
tag="Hungry?"
text="Come experience the best falafel in town today."
primaryButton={{
text: "Order Now",
href: "#order",
}}
secondaryButton={{
text: "Get Directions",
href: "#directions",
}}
/>
</SectionErrorBoundary>
</div>
<ContactSection />
</>
);
}

View File

@@ -0,0 +1,21 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "about" section.
import React from 'react';
import AboutMediaOverlay from '@/components/sections/about/AboutMediaOverlay';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function AboutSection(): React.JSX.Element {
return (
<div id="about" data-section="about">
<SectionErrorBoundary name="about">
<AboutMediaOverlay
tag="Our Story"
title="Fresh, Authentic, Unforgettable."
description="Hummus House UK has been serving the Coventry community for years, building a reputation for fresh, authentic, and affordable Middle Eastern food. Our mission is simple: Serve delicious food that keeps people coming back."
imageSrc="http://img.b2bpic.net/free-photo/italian-chef-uniform-is-preparing-pastry-pizza-kitchen_613910-14090.jpg"
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,27 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "contact" section.
import React from 'react';
import ContactCta from '@/components/sections/contact/ContactCta';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function ContactSection(): React.JSX.Element {
return (
<div id="contact" data-section="contact">
<SectionErrorBoundary name="contact">
<ContactCta
tag="Hungry?"
text="Come experience the best falafel in town today."
primaryButton={{
text: "Order Now",
href: "#order",
}}
secondaryButton={{
text: "Get Directions",
href: "#directions",
}}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,35 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "faq" section.
import React from 'react';
import FaqTabbedAccordion from '@/components/sections/faq/FaqTabbedAccordion';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function FaqSection(): React.JSX.Element {
return (
<div id="faq" data-section="faq">
<SectionErrorBoundary name="faq">
<FaqTabbedAccordion
tag="Information"
title="Frequently Asked Questions"
description="Everything you need to know about Hummus House."
categories={[
{
name: "General",
items: [
{
question: "Where are you located?",
answer: "In the heart of Coventry city centre.",
},
{
question: "Do you offer delivery?",
answer: "Check our latest platforms for delivery options.",
},
],
},
]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,29 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "hero" section.
import React from 'react';
import HeroOverlay from '@/components/sections/hero/HeroOverlay';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function HeroSection(): React.JSX.Element {
return (
<div id="hero" data-section="hero">
<SectionErrorBoundary name="hero">
<HeroOverlay
tag="Since 2018"
title="Home of Coventrys Best Falafel"
description="Freshly made, packed with flavour, and loved by locals for years. One bite and youll understand the hype."
primaryButton={{
text: "Order Now",
href: "#order",
}}
secondaryButton={{
text: "View Menu",
href: "#menu",
}}
imageSrc="http://img.b2bpic.net/free-photo/delicious-falafel-wrap-with-sauce_23-2152015870.jpg"
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,64 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "menu" section.
import React from 'react';
import FeaturesRevealCardsBento from '@/components/sections/features/FeaturesRevealCardsBento';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function MenuSection(): React.JSX.Element {
return (
<div id="menu" data-section="menu">
<SectionErrorBoundary name="menu">
<FeaturesRevealCardsBento
tag="Menu Highlights"
title="Our Signature Experience"
description="Everything is crafted to satisfy, from crispy falafel to creamy hummus."
items={[
{
title: "Falafel Wrap",
description: "Crispy on the outside, soft inside, packed with fresh vegetables.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/yummy-arabic-kebab-sandwich_23-2148651082.jpg",
},
{
title: "Mixed Wraps",
description: "A perfect blend of meats and flavours for a hearty bite.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/top-view-delicious-meat-sandwich-made-meat-grilled-spit-sliced-with-seasonings-dark-blue-desk-burger-meat-meal-lunch-food-sandwich_140725-64501.jpg",
},
{
title: "Hummus Bowls",
description: "Smooth, creamy hummus served with fresh house toppings.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/composition-with-delicious-local-food-dish_23-2148833847.jpg",
},
{
title: "Fresh Juices",
description: "Made fresh daily with natural ingredients and fruits.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/tortilla-wrap-with-falafel-vegetables-black-stone-background_123827-20240.jpg",
},
{
title: "House Sauces",
description: "Authentic secret recipe sauces for every wrap.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/flat-lay-burritos-tablecloth_23-2148582664.jpg",
},
{
title: "Salad Sides",
description: "Crisp garden vegetables and house dressings.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/high-angle-tasty-hummus-with-parsley_23-2149483839.jpg",
},
{
title: "Dessert Treats",
description: "Traditional Middle Eastern sweet bites.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/arabic-kebab-sandwich-wrapped-thin-pita_23-2148651105.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,38 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "metrics" section.
import React from 'react';
import MetricsIconCards from '@/components/sections/metrics/MetricsIconCards';
import { Award, CheckCircle, Zap } from "lucide-react";
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function MetricsSection(): React.JSX.Element {
return (
<div id="metrics" data-section="metrics">
<SectionErrorBoundary name="metrics">
<MetricsIconCards
tag="Our Impact"
title="Why People Love Us"
description="We are proud to serve the community every single day."
metrics={[
{
icon: CheckCircle,
title: "Fresh Ingredients",
value: "Daily",
},
{
icon: Award,
title: "Recipes",
value: "Authentic",
},
{
icon: Zap,
title: "Service",
value: "Fast",
},
]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,52 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "testimonials" section.
import React from 'react';
import TestimonialColumnMarqueeCards from '@/components/sections/testimonial/TestimonialColumnMarqueeCards';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function TestimonialsSection(): React.JSX.Element {
return (
<div id="testimonials" data-section="testimonials">
<SectionErrorBoundary name="testimonials">
<TestimonialColumnMarqueeCards
tag="Reviews"
title="What Customers Say"
description="Loved by locals for years."
testimonials={[
{
name: "Sherouk Hany",
role: "Local Foodie",
quote: "The most delicious falafel Ive ever eaten.",
imageSrc: "http://img.b2bpic.net/free-photo/indian-man-smiling-restaurant-concept_53876-13779.jpg",
},
{
name: "Chris Norman",
role: "Local Resident",
quote: "Best falafel in Coventry, hands down!",
imageSrc: "http://img.b2bpic.net/free-photo/woman-cutting-dragon-fruit-outdoors_23-2150295970.jpg",
},
{
name: "Carl Wilkins",
role: "Regular Customer",
quote: "Always fresh, tasty and great prices.",
imageSrc: "http://img.b2bpic.net/free-photo/girl-sitting-table-holding-mobile-phone-indoors_171337-17096.jpg",
},
{
name: "Hüda Hacıoğlu",
role: "Food Fan",
quote: "Absolutely delicious — perfectly crispy and full of flavour.",
imageSrc: "http://img.b2bpic.net/free-photo/ramadan-concept-with-food-te_23-2147796747.jpg",
},
{
name: "Ian Manborde",
role: "Long-time Customer",
quote: "Been going for years — always high quality.",
imageSrc: "http://img.b2bpic.net/free-photo/close-up-women-eating-together_23-2149061571.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
);
}