Merge version_2_1781433788279 into main

Merge version_2_1781433788279 into main
This commit was merged in pull request #2.
This commit is contained in:
2026-06-14 10:44:49 +00:00
10 changed files with 227 additions and 126 deletions

View File

@@ -5,15 +5,15 @@
:root {
/* @colorThemes/lightTheme/grayNavyBlue */
--background: #f6f0e9;
--card: #efe7dd;
--foreground: #2b180a;
--primary-cta: #2b180a;
--primary-cta-text: #f6f0e9;
--secondary-cta: #efe7dd;
--secondary-cta-text: #2b180a;
--accent: #94877c;
--background-accent: #afa094;
--background: #fff8f0;
--card: #f2e6d9;
--foreground: #3a1c0e;
--primary-cta: #d94a26;
--primary-cta-text: #ffffff;
--secondary-cta: #2a5c3b;
--secondary-cta-text: #ffffff;
--accent: #e6a835;
--background-accent: #f2d59d;
/* @layout/border-radius/rounded */
--radius: 0.5rem;

View File

@@ -1,128 +1,36 @@
import AboutMediaOverlay from '@/components/sections/about/AboutMediaOverlay';
import ContactCta from '@/components/sections/contact/ContactCta';
import FaqSimple from '@/components/sections/faq/FaqSimple';
import FeaturesArrowCards from '@/components/sections/features/FeaturesArrowCards';
import FeaturesRevealCardsBento from '@/components/sections/features/FeaturesRevealCardsBento';
import HeroBrand from '@/components/sections/hero/HeroBrand';
import MetricsMediaCards from '@/components/sections/metrics/MetricsMediaCards';
import TestimonialOverlayCards from '@/components/sections/testimonial/TestimonialOverlayCards';
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 AllItemsSection from './HomePage/sections/AllItems';
import MetricsSection from './HomePage/sections/Metrics';
import ReviewsSection from './HomePage/sections/Reviews';
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">
<HeroBrand
brand="GiftHouse Restaurant & Bakery"
description="Authentic flavors, masterful baking, and an unforgettable dining experience in the heart of Lagos. Serving joy, one plate at a time."
primaryButton={{ text: "View Menu", href: "#menu" }}
secondaryButton={{ text: "Contact Us", href: "#contact" }}
imageSrc="http://img.b2bpic.net/free-photo/event-hall-wooden-table-with-rustic-chairs_114579-2233.jpg"
/>
</SectionErrorBoundary>
</div>
<>
<HeroSection />
<div id="about" data-section="about">
<SectionErrorBoundary name="about">
<AboutMediaOverlay
tag="Our Story"
title="Crafting Memories Through Food"
description="At GiftHouse, we blend traditional culinary passion with modern artistry. From our daily baked loaves and signature birthday cakes to our rich Fishermans Soup and Jollof specialties, every item on our menu is prepared with love and premium ingredients."
imageSrc="http://img.b2bpic.net/free-photo/cook-pouring-sauce-big-plate-with-salad_23-2148040165.jpg"
/>
</SectionErrorBoundary>
</div>
<AboutSection />
<div id="menu" data-section="menu">
<SectionErrorBoundary name="menu">
<FeaturesArrowCards
tag="Signature Offerings"
title="Explore Our Highlights"
description="Hand-picked delights from our kitchen and bakery."
items={[
{ title: "Wedding & Party Cakes", tags: ["Bespoke", "Celebration"], imageSrc: "http://img.b2bpic.net/free-photo/wedding-cake-with-paniculata-decoration-mr-mrs-topper_24972-175.jpg" },
{ title: "Traditional Soups", tags: ["Authentic", "Fresh"], imageSrc: "http://img.b2bpic.net/free-photo/salsa-topped-with-cheese-cilantro_23-2148181598.jpg" },
{ title: "Artisanal Bakery", tags: ["Daily-Baked", "Fresh"], imageSrc: "http://img.b2bpic.net/free-photo/cake-slices-black_114579-18458.jpg" }
]}
/>
</SectionErrorBoundary>
</div>
<MenuSection />
<div id="all-items" data-section="all-items">
<SectionErrorBoundary name="all-items">
<FeaturesRevealCardsBento
tag="The Collection"
title="Everything on Our Menu"
description="From savory lunch options to exquisite sweet treats."
items={[
{ title: "Graduation Cakes", description: "Custom designs for your achievements.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/creamy-cake-topped-with-sliced-pear_140725-2731.jpg" },
{ title: "Jam Doughnuts", description: "Classic sweet treats, perfectly fried.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/fried-donuts-with-sugar-cream-black-table_181624-24664.jpg" },
{ title: "Spicy Rice & Chicken", description: "Our signature main course favorite.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/caesar-salad-with-fresh-vegetable-chicken-salad-white-plate-wood-table-delicious-salad_114579-113.jpg" },
{ title: "Mixed Cupcakes", description: "Various flavors with whipped cream.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/close-up-tasty-sweet-cupcakes_23-2147779149.jpg" },
{ title: "Veggie Spaghetti", description: "Stir-fried for a healthy flavor.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/delicious-meal-blue-plate-high-angle-view_176474-3630.jpg" },
{ title: "Mini Breadloaves", description: "Fresh, soft, and perfect for any meal.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/closeup-freshly-baked-rusty-crusty-home-made-bread_181624-44916.jpg" },
{ title: "Yam Porridge", description: "Garnished with fresh Uzuza leaves.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/mangal-salad-table_140725-9864.jpg" }
]}
/>
</SectionErrorBoundary>
</div>
<AllItemsSection />
<div id="metrics" data-section="metrics">
<SectionErrorBoundary name="metrics">
<MetricsMediaCards
tag="Our Presence"
title="Serving Our Community"
description="We are proud to be a favorite local destination."
metrics={[
{ value: "24/7", title: "Always Open", description: "Ready to serve whenever cravings strike.", imageSrc: "http://img.b2bpic.net/free-photo/low-angle-view-young-businessman-eating-croissant-while-sitting-outdoor-cafe_637285-10394.jpg" }
]}
/>
</SectionErrorBoundary>
</div>
<MetricsSection />
<div id="reviews" data-section="reviews">
<SectionErrorBoundary name="reviews">
<TestimonialOverlayCards
tag="Testimonials"
title="What Our Customers Say"
description="Delivering excellence one bite at a time."
testimonials={[
{ name: "Sarah J.", role: "Foodie", company: "Lagos Local", rating: 5, imageSrc: "http://img.b2bpic.net/free-photo/portrait-adorable-blue-eyed-female-model-with-hair-knot-wears-overalls-enjoys-drinking-fruit-smoothie-looks-happily-somewhere-while-sits-cozy-restaurant-beautiful-teenage-girl-coffee-shop_273609-3038.jpg" },
{ name: "Michael O.", role: "Regular", company: "Frequent Guest", rating: 5, imageSrc: "http://img.b2bpic.net/free-photo/full-shot-smiley-woman-holding-menu_23-2149366415.jpg" },
{ name: "Emily R.", role: "Corporate Client", company: "Office Lunch", rating: 5, imageSrc: "http://img.b2bpic.net/free-photo/close-up-smiley-man-holding-glass_23-2148899014.jpg" },
{ name: "David K.", role: "Event Planner", company: "Birthday Events", rating: 5, imageSrc: "http://img.b2bpic.net/free-photo/happy-african-american-family-enjoying-christmas-lunch-dining-table_637285-13021.jpg" },
{ name: "Amaka B.", role: "Food Blogger", company: "Lagos Eats", rating: 5, imageSrc: "http://img.b2bpic.net/free-photo/happy-woman-enjoying-dining-table-while-communicating-with-her-husband_637285-3516.jpg" }
]}
/>
</SectionErrorBoundary>
</div>
<ReviewsSection />
<div id="faq" data-section="faq">
<SectionErrorBoundary name="faq">
<FaqSimple
tag="Support"
title="Frequently Asked Questions"
description="Answers to our most common queries."
items={[
{ question: "Are you open 24 hours?", answer: "Yes, we are open 24 hours to serve you delicious meals anytime." },
{ question: "Do you offer vegan options?", answer: "Yes, we have a selection of vegan-friendly dishes on our menu." },
{ question: "Can I order custom cakes?", answer: "Absolutely! We specialize in custom cakes for birthdays, weddings, and graduations." }
]}
/>
</SectionErrorBoundary>
</div>
<FaqSection />
<div id="contact" data-section="contact">
<SectionErrorBoundary name="contact">
<ContactCta
tag="Visit Us"
text="Ready to enjoy the best meal in Lagos? Visit us today or call for reservations."
primaryButton={{ text: "Call 0803 307 7207", href: "tel:+2348033077207" }}
secondaryButton={{ text: "Get Directions", href: "https://maps.google.com" }}
/>
</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="Crafting Memories Through Food"
description="At GiftHouse, we blend traditional culinary passion with modern artistry. From our daily baked loaves and signature birthday cakes to our rich Fishermans Soup and Jollof specialties, every item on our menu is prepared with love and premium ingredients."
imageSrc="http://img.b2bpic.net/free-photo/cook-pouring-sauce-big-plate-with-salad_23-2148040165.jpg"
/>
</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 "all-items" section.
import React from 'react';
import FeaturesRevealCardsBento from '@/components/sections/features/FeaturesRevealCardsBento';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function AllItemsSection(): React.JSX.Element {
return (
<div id="all-items" data-section="all-items">
<SectionErrorBoundary name="all-items">
<FeaturesRevealCardsBento
tag="The Collection"
title="Everything on Our Menu"
description="From savory lunch options to exquisite sweet treats."
items={[
{ title: "Graduation Cakes", description: "Custom designs for your achievements.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/creamy-cake-topped-with-sliced-pear_140725-2731.jpg" },
{ title: "Jam Doughnuts", description: "Classic sweet treats, perfectly fried.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/fried-donuts-with-sugar-cream-black-table_181624-24664.jpg" },
{ title: "Spicy Rice & Chicken", description: "Our signature main course favorite.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/caesar-salad-with-fresh-vegetable-chicken-salad-white-plate-wood-table-delicious-salad_114579-113.jpg" },
{ title: "Mixed Cupcakes", description: "Various flavors with whipped cream.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/close-up-tasty-sweet-cupcakes_23-2147779149.jpg" },
{ title: "Veggie Spaghetti", description: "Stir-fried for a healthy flavor.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/delicious-meal-blue-plate-high-angle-view_176474-3630.jpg" },
{ title: "Mini Breadloaves", description: "Fresh, soft, and perfect for any meal.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/closeup-freshly-baked-rusty-crusty-home-made-bread_181624-44916.jpg" },
{ title: "Yam Porridge", description: "Garnished with fresh Uzuza leaves.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/mangal-salad-table_140725-9864.jpg" }
]}
/>
</SectionErrorBoundary>
</div>
);
}

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 "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="Visit Us"
text="Ready to enjoy the best meal in Lagos? Visit us today or call for reservations."
primaryButton={{ text: "Call 0803 307 7207", href: "tel:+2348033077207" }}
secondaryButton={{ text: "Get Directions", href: "https://maps.google.com" }}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,25 @@
// 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 FaqSimple from '@/components/sections/faq/FaqSimple';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function FaqSection(): React.JSX.Element {
return (
<div id="faq" data-section="faq">
<SectionErrorBoundary name="faq">
<FaqSimple
tag="Support"
title="Frequently Asked Questions"
description="Answers to our most common queries."
items={[
{ question: "Are you open 24 hours?", answer: "Yes, we are open 24 hours to serve you delicious meals anytime." },
{ question: "Do you offer vegan options?", answer: "Yes, we have a selection of vegan-friendly dishes on our menu." },
{ question: "Can I order custom cakes?", answer: "Absolutely! We specialize in custom cakes for birthdays, weddings, and graduations." }
]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,22 @@
// 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 HeroBrand from '@/components/sections/hero/HeroBrand';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function HeroSection(): React.JSX.Element {
return (
<div id="hero" data-section="hero">
<SectionErrorBoundary name="hero">
<HeroBrand
brand="GiftHouse Restaurant & Bakery"
description="Authentic flavors, masterful baking, and an unforgettable dining experience in the heart of Lagos. Serving joy, one plate at a time."
primaryButton={{ text: "View Menu", href: "#menu" }}
secondaryButton={{ text: "Contact Us", href: "#contact" }}
imageSrc="http://img.b2bpic.net/free-photo/event-hall-wooden-table-with-rustic-chairs_114579-2233.jpg"
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,25 @@
// 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 FeaturesArrowCards from '@/components/sections/features/FeaturesArrowCards';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function MenuSection(): React.JSX.Element {
return (
<div id="menu" data-section="menu">
<SectionErrorBoundary name="menu">
<FeaturesArrowCards
tag="Signature Offerings"
title="Explore Our Highlights"
description="Hand-picked delights from our kitchen and bakery."
items={[
{ title: "Wedding & Party Cakes", tags: ["Bespoke", "Celebration"], imageSrc: "http://img.b2bpic.net/free-photo/wedding-cake-with-paniculata-decoration-mr-mrs-topper_24972-175.jpg" },
{ title: "Traditional Soups", tags: ["Authentic", "Fresh"], imageSrc: "http://img.b2bpic.net/free-photo/salsa-topped-with-cheese-cilantro_23-2148181598.jpg" },
{ title: "Artisanal Bakery", tags: ["Daily-Baked", "Fresh"], imageSrc: "http://img.b2bpic.net/free-photo/cake-slices-black_114579-18458.jpg" }
]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,23 @@
// 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 MetricsMediaCards from '@/components/sections/metrics/MetricsMediaCards';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function MetricsSection(): React.JSX.Element {
return (
<div id="metrics" data-section="metrics">
<SectionErrorBoundary name="metrics">
<MetricsMediaCards
tag="Our Presence"
title="Serving Our Community"
description="We are proud to be a favorite local destination."
metrics={[
{ value: "24/7", title: "Always Open", description: "Ready to serve whenever cravings strike.", imageSrc: "http://img.b2bpic.net/free-photo/low-angle-view-young-businessman-eating-croissant-while-sitting-outdoor-cafe_637285-10394.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 "reviews" section.
import React from 'react';
import TestimonialOverlayCards from '@/components/sections/testimonial/TestimonialOverlayCards';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function ReviewsSection(): React.JSX.Element {
return (
<div id="reviews" data-section="reviews">
<SectionErrorBoundary name="reviews">
<TestimonialOverlayCards
tag="Testimonials"
title="What Our Customers Say"
description="Delivering excellence one bite at a time."
testimonials={[
{ name: "Sarah J.", role: "Foodie", company: "Lagos Local", rating: 5, imageSrc: "http://img.b2bpic.net/free-photo/portrait-adorable-blue-eyed-female-model-with-hair-knot-wears-overalls-enjoys-drinking-fruit-smoothie-looks-happily-somewhere-while-sits-cozy-restaurant-beautiful-teenage-girl-coffee-shop_273609-3038.jpg" },
{ name: "Michael O.", role: "Regular", company: "Frequent Guest", rating: 5, imageSrc: "http://img.b2bpic.net/free-photo/full-shot-smiley-woman-holding-menu_23-2149366415.jpg" },
{ name: "Emily R.", role: "Corporate Client", company: "Office Lunch", rating: 5, imageSrc: "http://img.b2bpic.net/free-photo/close-up-smiley-man-holding-glass_23-2148899014.jpg" },
{ name: "David K.", role: "Event Planner", company: "Birthday Events", rating: 5, imageSrc: "http://img.b2bpic.net/free-photo/happy-african-american-family-enjoying-christmas-lunch-dining-table_637285-13021.jpg" },
{ name: "Amaka B.", role: "Food Blogger", company: "Lagos Eats", rating: 5, imageSrc: "http://img.b2bpic.net/free-photo/happy-woman-enjoying-dining-table-while-communicating-with-her-husband_637285-3516.jpg" }
]}
/>
</SectionErrorBoundary>
</div>
);
}