Merge version_2_1782038112529 into main #1
@@ -1,259 +1,38 @@
|
||||
import AboutText from '@/components/sections/about/AboutText';
|
||||
import ContactCta from '@/components/sections/contact/ContactCta';
|
||||
import FaqTabbedAccordion from '@/components/sections/faq/FaqTabbedAccordion';
|
||||
import FeaturesImageBento from '@/components/sections/features/FeaturesImageBento';
|
||||
import FeaturesRevealCards from '@/components/sections/features/FeaturesRevealCards';
|
||||
import HeroSplitMediaGrid from '@/components/sections/hero/HeroSplitMediaGrid';
|
||||
import MetricsMediaCards from '@/components/sections/metrics/MetricsMediaCards';
|
||||
import TestimonialRatingCards from '@/components/sections/testimonial/TestimonialRatingCards';
|
||||
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 FeaturesSection from './HomePage/sections/Features';
|
||||
import ProductsSection from './HomePage/sections/Products';
|
||||
import MetricsSection from './HomePage/sections/Metrics';
|
||||
import TestimonialsSection from './HomePage/sections/Testimonials';
|
||||
import FaqSection from './HomePage/sections/Faq';
|
||||
import ContactSection from './HomePage/sections/Contact';
|
||||
|
||||
|
||||
import LocationSection from './HomePage/sections/Location';export default function HomePage(): React.JSX.Element {
|
||||
return (
|
||||
<>
|
||||
<div id="hero" data-section="hero">
|
||||
<SectionErrorBoundary name="hero">
|
||||
<HeroSplitMediaGrid
|
||||
tag="Authentic Taste"
|
||||
title="Nigerian Pastry Perfection, Baked Daily"
|
||||
description="Discover the golden crunch of traditional meat pies, puff puff, and local delicacies made with love and time-honored recipes."
|
||||
primaryButton={{
|
||||
text: "View Menu",
|
||||
href: "#products",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Call to Order",
|
||||
href: "#contact",
|
||||
}}
|
||||
items={[
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/fresh-pastry-table-buffet_1398-2208.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/front-view-yummy-strawberry-pie-with-jam-fresh-strawberries_140725-59310.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<>
|
||||
<HeroSection />
|
||||
|
||||
<div id="about" data-section="about">
|
||||
<SectionErrorBoundary name="about">
|
||||
<AboutText
|
||||
title="Bringing the Heart of Lagos to Your Neighborhood."
|
||||
primaryButton={{
|
||||
text: "Our Story",
|
||||
href: "#about",
|
||||
}}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<AboutSection />
|
||||
|
||||
<div id="features" data-section="features">
|
||||
<SectionErrorBoundary name="features">
|
||||
<FeaturesRevealCards
|
||||
tag="Why Us"
|
||||
title="Crafted with Passion"
|
||||
description="We blend traditional techniques with high-quality, local ingredients to bring you the best flavors every day."
|
||||
items={[
|
||||
{
|
||||
title: "Farm-to-Oven",
|
||||
description: "Fresh, local ingredients for authentic taste.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/waffle-with-syrup-drizzling_23-2152005527.jpg",
|
||||
},
|
||||
{
|
||||
title: "Authentic Recipes",
|
||||
description: "Tradition passed down through generations.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/cook-accurately-breaks-egg-make-dough-ingredients-cooking-flour-products-dough-bread-muffins-pie-pizza-dough-copy-space_639032-451.jpg",
|
||||
},
|
||||
{
|
||||
title: "Baking Excellence",
|
||||
description: "Crispy, savory, and perfectly golden.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/soft-pie-slices-with-black-sultana-wooden-board_114579-61980.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<FeaturesSection />
|
||||
|
||||
<div id="products" data-section="products">
|
||||
<SectionErrorBoundary name="products">
|
||||
<FeaturesImageBento
|
||||
tag="Menu"
|
||||
title="Signature Pastries"
|
||||
description="Hand-picked local favorites designed to make your day better."
|
||||
items={[
|
||||
{
|
||||
title: "Meat Pie",
|
||||
description: "Rich, spicy, and perfectly flaky.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/pie-stuffed-with-greens-black-cutting-board_114579-83789.jpg",
|
||||
},
|
||||
{
|
||||
title: "Puff Puff",
|
||||
description: "Sweet, fluffy, fried perfection.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/colorful-turkish-delight-flavors-bowl-tea-towel-marble-table_114579-74863.jpg",
|
||||
},
|
||||
{
|
||||
title: "Scotch Egg",
|
||||
description: "A classic savory treat.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/close-up-view-breakfast-set-plate-with-eggs-peppers-paper-doily-blue-background_141793-5233.jpg",
|
||||
},
|
||||
{
|
||||
title: "Chin Chin",
|
||||
description: "Crunchy and sweet bites.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/top-view-plate-with-baked-buns-cloth_23-2148361661.jpg",
|
||||
},
|
||||
{
|
||||
title: "Meat Roll",
|
||||
description: "Savory, hearty and filling.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/raw-fillet-with-spices-herbs-wooden-board-blue_114579-16398.jpg",
|
||||
},
|
||||
{
|
||||
title: "Beef Sausage Roll",
|
||||
description: "Classic pastry shop staple.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/top-closer-view-raisins-cake-baked-pie-cake-round-formed-pink-desk-bake-pie-sugar-sweet-biscuit-cookie-color_140725-53967.jpg",
|
||||
},
|
||||
{
|
||||
title: "Egg Roll",
|
||||
description: "Soft fried dough with an egg center.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/grilled-with-teriyaki-sauce-beef-lamb-with-grilled-bell-pepper-white-plate_114579-172.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<ProductsSection />
|
||||
|
||||
<div id="metrics" data-section="metrics">
|
||||
<SectionErrorBoundary name="metrics">
|
||||
<MetricsMediaCards
|
||||
tag="Our Growth"
|
||||
title="Serving Joy Since 2015"
|
||||
description="We are proud of the community we've built and the pastries we've shared."
|
||||
metrics={[
|
||||
{
|
||||
value: "10k+",
|
||||
title: "Pies Baked",
|
||||
description: "Perfectly golden pies delivered.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/front-view-female-cook-rolling-out-dough-with-flour-dark-cake-job-oven-hotcake-dough-bake-pie-worker-egg-cuisine_179666-43972.jpg",
|
||||
},
|
||||
{
|
||||
value: "5k+",
|
||||
title: "Happy Clients",
|
||||
description: "People enjoying our craft.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/man-baking-fresh-bread_23-2148983508.jpg",
|
||||
},
|
||||
{
|
||||
value: "100%",
|
||||
title: "Authentic",
|
||||
description: "Pure Nigerian flavors.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/front-view-female-cook-mixing-up-eggs-sugar-dough-dark-pastry-cake-pie-worker-dough-cuisine-job-hotcakes_179666-43860.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<MetricsSection />
|
||||
|
||||
<div id="testimonials" data-section="testimonials">
|
||||
<SectionErrorBoundary name="testimonials">
|
||||
<TestimonialRatingCards
|
||||
tag="Loved By All"
|
||||
title="What Our Customers Say"
|
||||
description="Hear from those who've tasted the true Naija difference."
|
||||
testimonials={[
|
||||
{
|
||||
name: "Amina B.",
|
||||
role: "Food Blogger",
|
||||
quote: "The meat pies are exactly like the ones I grew up with back home. Truly authentic!",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/optimistic-glad-dark-skinned-woman-with-afro-hairstyle-holds-two-sweet-sparkled-doughnuts-has-fun-with-sweets_273609-27109.jpg",
|
||||
},
|
||||
{
|
||||
name: "Tunde O.",
|
||||
role: "Customer",
|
||||
quote: "Best puff puff in the city, hands down. Always fresh and fluffy.",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/photo-beautiful-woman-making-cake_176532-9163.jpg",
|
||||
},
|
||||
{
|
||||
name: "Sarah J.",
|
||||
role: "Regular",
|
||||
quote: "I order every weekend for the family, nobody can get enough of the sausage rolls.",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/happy-mature-businessman-showing-thumb-up_1262-3024.jpg",
|
||||
},
|
||||
{
|
||||
name: "David K.",
|
||||
role: "Loyal Fan",
|
||||
quote: "Super reliable service and the quality is consistent every single time.",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/top-view-yummy-strawberry-pie-with-notepad-dark-blue-surface_140725-81095.jpg",
|
||||
},
|
||||
{
|
||||
name: "Ngozi E.",
|
||||
role: "Foodie",
|
||||
quote: "Love how they maintain the traditional spices in everything they bake.",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/young-stylish-woman-casual-peach-sweater-isolated-green-olive-wall-with-pink-donut-happy-copy-space_343596-5197.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<TestimonialsSection />
|
||||
|
||||
<div id="faq" data-section="faq">
|
||||
<SectionErrorBoundary name="faq">
|
||||
<FaqTabbedAccordion
|
||||
tag="Questions?"
|
||||
title="Frequently Asked Questions"
|
||||
description="Common questions about our ingredients and ordering process."
|
||||
categories={[
|
||||
{
|
||||
name: "Ordering",
|
||||
items: [
|
||||
{
|
||||
question: "Can I pre-order?",
|
||||
answer: "Yes, please call 24 hours in advance.",
|
||||
},
|
||||
{
|
||||
question: "Do you deliver?",
|
||||
answer: "We offer local delivery within 5 miles.",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
name: "Ingredients",
|
||||
items: [
|
||||
{
|
||||
question: "Are ingredients local?",
|
||||
answer: "Yes, we source from local Nigerian markets.",
|
||||
},
|
||||
{
|
||||
question: "Do you use preservatives?",
|
||||
answer: "No, our pastries are baked fresh daily.",
|
||||
},
|
||||
],
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<FaqSection />
|
||||
<LocationSection />
|
||||
|
||||
<div id="contact" data-section="contact">
|
||||
<SectionErrorBoundary name="contact">
|
||||
<ContactCta
|
||||
tag="Order Now"
|
||||
text="Ready to taste the goodness? Place your order today or come visit our shop."
|
||||
primaryButton={{
|
||||
text: "Call (555) 123-4567",
|
||||
href: "tel:5551234567",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Email Us",
|
||||
href: "mailto:hello@naijapastries.com",
|
||||
}}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<ContactSection />
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
22
src/pages/HomePage/sections/About.tsx
Normal file
22
src/pages/HomePage/sections/About.tsx
Normal file
@@ -0,0 +1,22 @@
|
||||
// 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 AboutText from '@/components/sections/about/AboutText';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function AboutSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="about" data-section="about">
|
||||
<SectionErrorBoundary name="about">
|
||||
<AboutText
|
||||
title="Bringing the Heart of Lagos to Your Neighborhood."
|
||||
primaryButton={{
|
||||
text: "Our Story",
|
||||
href: "#about",
|
||||
}}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
27
src/pages/HomePage/sections/Contact.tsx
Normal file
27
src/pages/HomePage/sections/Contact.tsx
Normal 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="Order Now"
|
||||
text="Ready to taste the goodness? Place your order today or come visit our shop."
|
||||
primaryButton={{
|
||||
text: "Call (555) 123-4567",
|
||||
href: "tel:5551234567",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Email Us",
|
||||
href: "mailto:hello@naijapastries.com",
|
||||
}}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
48
src/pages/HomePage/sections/Faq.tsx
Normal file
48
src/pages/HomePage/sections/Faq.tsx
Normal file
@@ -0,0 +1,48 @@
|
||||
// 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="Questions?"
|
||||
title="Frequently Asked Questions"
|
||||
description="Common questions about our ingredients and ordering process."
|
||||
categories={[
|
||||
{
|
||||
name: "Ordering",
|
||||
items: [
|
||||
{
|
||||
question: "Can I pre-order?",
|
||||
answer: "Yes, please call 24 hours in advance.",
|
||||
},
|
||||
{
|
||||
question: "Do you deliver?",
|
||||
answer: "We offer local delivery within 5 miles.",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
name: "Ingredients",
|
||||
items: [
|
||||
{
|
||||
question: "Are ingredients local?",
|
||||
answer: "Yes, we source from local Nigerian markets.",
|
||||
},
|
||||
{
|
||||
question: "Do you use preservatives?",
|
||||
answer: "No, our pastries are baked fresh daily.",
|
||||
},
|
||||
],
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
37
src/pages/HomePage/sections/Features.tsx
Normal file
37
src/pages/HomePage/sections/Features.tsx
Normal file
@@ -0,0 +1,37 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "features" section.
|
||||
|
||||
import React from 'react';
|
||||
import FeaturesRevealCards from '@/components/sections/features/FeaturesRevealCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function FeaturesSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="features" data-section="features">
|
||||
<SectionErrorBoundary name="features">
|
||||
<FeaturesRevealCards
|
||||
tag="Why Us"
|
||||
title="Crafted with Passion"
|
||||
description="We blend traditional techniques with high-quality, local ingredients to bring you the best flavors every day."
|
||||
items={[
|
||||
{
|
||||
title: "Farm-to-Oven",
|
||||
description: "Fresh, local ingredients for authentic taste.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/waffle-with-syrup-drizzling_23-2152005527.jpg",
|
||||
},
|
||||
{
|
||||
title: "Authentic Recipes",
|
||||
description: "Tradition passed down through generations.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/cook-accurately-breaks-egg-make-dough-ingredients-cooking-flour-products-dough-bread-muffins-pie-pizza-dough-copy-space_639032-451.jpg",
|
||||
},
|
||||
{
|
||||
title: "Baking Excellence",
|
||||
description: "Crispy, savory, and perfectly golden.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/soft-pie-slices-with-black-sultana-wooden-board_114579-61980.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
36
src/pages/HomePage/sections/Hero.tsx
Normal file
36
src/pages/HomePage/sections/Hero.tsx
Normal file
@@ -0,0 +1,36 @@
|
||||
// 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 HeroSplitMediaGrid from '@/components/sections/hero/HeroSplitMediaGrid';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function HeroSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="hero" data-section="hero">
|
||||
<SectionErrorBoundary name="hero">
|
||||
<HeroSplitMediaGrid
|
||||
tag="Authentic Taste"
|
||||
title="Nigerian Pastry Perfection, Baked Daily"
|
||||
description="Discover the golden crunch of traditional meat pies, puff puff, and local delicacies made with love and time-honored recipes."
|
||||
primaryButton={{
|
||||
text: "View Menu",
|
||||
href: "#products",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Call to Order",
|
||||
href: "#contact",
|
||||
}}
|
||||
items={[
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/fresh-pastry-table-buffet_1398-2208.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/front-view-yummy-strawberry-pie-with-jam-fresh-strawberries_140725-59310.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
81
src/pages/HomePage/sections/Location.tsx
Normal file
81
src/pages/HomePage/sections/Location.tsx
Normal file
@@ -0,0 +1,81 @@
|
||||
import { MapPin, Clock, Phone } from "lucide-react";
|
||||
import ScrollReveal from "@/components/ui/ScrollReveal";
|
||||
import TextAnimation from "@/components/ui/TextAnimation";
|
||||
|
||||
export default function LocationSection() {
|
||||
return (
|
||||
<div data-webild-section="location" className="relative w-full py-24 bg-background">
|
||||
<div className="w-content-width mx-auto">
|
||||
<div className="grid grid-cols-1 lg:grid-cols-2 gap-12 items-center">
|
||||
<ScrollReveal variant="slide-up">
|
||||
<div className="space-y-8">
|
||||
<div>
|
||||
<TextAnimation
|
||||
text="Visit Our Bakery"
|
||||
variant="slide-up"
|
||||
tag="h2"
|
||||
className="text-4xl md:text-5xl font-bold text-foreground mb-4"
|
||||
gradientText={false}
|
||||
/>
|
||||
<p className="text-lg text-accent">
|
||||
Come experience the authentic taste of Nigeria. We bake fresh daily and can't wait to welcome you.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div className="space-y-6">
|
||||
<div className="flex items-start gap-4">
|
||||
<div className="p-3 rounded-full card text-foreground flex-shrink-0">
|
||||
<MapPin className="w-6 h-6" />
|
||||
</div>
|
||||
<div>
|
||||
<h3 className="text-xl font-semibold text-foreground mb-1">Location</h3>
|
||||
<p className="text-accent">123 Bakery Way<br/>Victoria Island, Lagos, Nigeria</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="flex items-start gap-4">
|
||||
<div className="p-3 rounded-full card text-foreground flex-shrink-0">
|
||||
<Clock className="w-6 h-6" />
|
||||
</div>
|
||||
<div>
|
||||
<h3 className="text-xl font-semibold text-foreground mb-1">Store Hours</h3>
|
||||
<ul className="text-accent space-y-1">
|
||||
<li>Monday - Friday: 7:00 AM - 8:00 PM</li>
|
||||
<li>Saturday: 8:00 AM - 9:00 PM</li>
|
||||
<li>Sunday: 8:00 AM - 6:00 PM</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="flex items-start gap-4">
|
||||
<div className="p-3 rounded-full card text-foreground flex-shrink-0">
|
||||
<Phone className="w-6 h-6" />
|
||||
</div>
|
||||
<div>
|
||||
<h3 className="text-xl font-semibold text-foreground mb-1">Contact</h3>
|
||||
<p className="text-accent">+234 123 456 7890<br/>hello@nigerianpastry.com</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</ScrollReveal>
|
||||
|
||||
<ScrollReveal variant="fade-blur" delay={0.2}>
|
||||
<div className="w-full h-[400px] lg:h-[500px] rounded-lg overflow-hidden card relative">
|
||||
<iframe
|
||||
src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d3964.738879654165!2d3.457853314770241!3d6.427571995349479!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x103bf50b4a450143%3A0x1000000000000000!2sVictoria%20Island%2C%20Lagos%2C%20Nigeria!5e0!3m2!1sen!2sus!4v1620000000000!5m2!1sen!2sus"
|
||||
width="100%"
|
||||
height="100%"
|
||||
style={{ border: 0 }}
|
||||
allowFullScreen={false}
|
||||
loading="lazy"
|
||||
referrerPolicy="no-referrer-when-downgrade"
|
||||
className="absolute inset-0 w-full h-full grayscale opacity-90"
|
||||
></iframe>
|
||||
</div>
|
||||
</ScrollReveal>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
40
src/pages/HomePage/sections/Metrics.tsx
Normal file
40
src/pages/HomePage/sections/Metrics.tsx
Normal file
@@ -0,0 +1,40 @@
|
||||
// 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 Growth"
|
||||
title="Serving Joy Since 2015"
|
||||
description="We are proud of the community we've built and the pastries we've shared."
|
||||
metrics={[
|
||||
{
|
||||
value: "10k+",
|
||||
title: "Pies Baked",
|
||||
description: "Perfectly golden pies delivered.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/front-view-female-cook-rolling-out-dough-with-flour-dark-cake-job-oven-hotcake-dough-bake-pie-worker-egg-cuisine_179666-43972.jpg",
|
||||
},
|
||||
{
|
||||
value: "5k+",
|
||||
title: "Happy Clients",
|
||||
description: "People enjoying our craft.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/man-baking-fresh-bread_23-2148983508.jpg",
|
||||
},
|
||||
{
|
||||
value: "100%",
|
||||
title: "Authentic",
|
||||
description: "Pure Nigerian flavors.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/front-view-female-cook-mixing-up-eggs-sugar-dough-dark-pastry-cake-pie-worker-dough-cuisine-job-hotcakes_179666-43860.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
57
src/pages/HomePage/sections/Products.tsx
Normal file
57
src/pages/HomePage/sections/Products.tsx
Normal file
@@ -0,0 +1,57 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "products" section.
|
||||
|
||||
import React from 'react';
|
||||
import FeaturesImageBento from '@/components/sections/features/FeaturesImageBento';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function ProductsSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="products" data-section="products">
|
||||
<SectionErrorBoundary name="products">
|
||||
<FeaturesImageBento
|
||||
tag="Menu"
|
||||
title="Signature Pastries"
|
||||
description="Hand-picked local favorites designed to make your day better."
|
||||
items={[
|
||||
{
|
||||
title: "Meat Pie",
|
||||
description: "Rich, spicy, and perfectly flaky.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/pie-stuffed-with-greens-black-cutting-board_114579-83789.jpg",
|
||||
},
|
||||
{
|
||||
title: "Puff Puff",
|
||||
description: "Sweet, fluffy, fried perfection.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/colorful-turkish-delight-flavors-bowl-tea-towel-marble-table_114579-74863.jpg",
|
||||
},
|
||||
{
|
||||
title: "Scotch Egg",
|
||||
description: "A classic savory treat.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/close-up-view-breakfast-set-plate-with-eggs-peppers-paper-doily-blue-background_141793-5233.jpg",
|
||||
},
|
||||
{
|
||||
title: "Chin Chin",
|
||||
description: "Crunchy and sweet bites.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/top-view-plate-with-baked-buns-cloth_23-2148361661.jpg",
|
||||
},
|
||||
{
|
||||
title: "Meat Roll",
|
||||
description: "Savory, hearty and filling.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/raw-fillet-with-spices-herbs-wooden-board-blue_114579-16398.jpg",
|
||||
},
|
||||
{
|
||||
title: "Beef Sausage Roll",
|
||||
description: "Classic pastry shop staple.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/top-closer-view-raisins-cake-baked-pie-cake-round-formed-pink-desk-bake-pie-sugar-sweet-biscuit-cookie-color_140725-53967.jpg",
|
||||
},
|
||||
{
|
||||
title: "Egg Roll",
|
||||
description: "Soft fried dough with an egg center.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/grilled-with-teriyaki-sauce-beef-lamb-with-grilled-bell-pepper-white-plate_114579-172.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
57
src/pages/HomePage/sections/Testimonials.tsx
Normal file
57
src/pages/HomePage/sections/Testimonials.tsx
Normal file
@@ -0,0 +1,57 @@
|
||||
// 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 TestimonialRatingCards from '@/components/sections/testimonial/TestimonialRatingCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function TestimonialsSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="testimonials" data-section="testimonials">
|
||||
<SectionErrorBoundary name="testimonials">
|
||||
<TestimonialRatingCards
|
||||
tag="Loved By All"
|
||||
title="What Our Customers Say"
|
||||
description="Hear from those who've tasted the true Naija difference."
|
||||
testimonials={[
|
||||
{
|
||||
name: "Amina B.",
|
||||
role: "Food Blogger",
|
||||
quote: "The meat pies are exactly like the ones I grew up with back home. Truly authentic!",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/optimistic-glad-dark-skinned-woman-with-afro-hairstyle-holds-two-sweet-sparkled-doughnuts-has-fun-with-sweets_273609-27109.jpg",
|
||||
},
|
||||
{
|
||||
name: "Tunde O.",
|
||||
role: "Customer",
|
||||
quote: "Best puff puff in the city, hands down. Always fresh and fluffy.",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/photo-beautiful-woman-making-cake_176532-9163.jpg",
|
||||
},
|
||||
{
|
||||
name: "Sarah J.",
|
||||
role: "Regular",
|
||||
quote: "I order every weekend for the family, nobody can get enough of the sausage rolls.",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/happy-mature-businessman-showing-thumb-up_1262-3024.jpg",
|
||||
},
|
||||
{
|
||||
name: "David K.",
|
||||
role: "Loyal Fan",
|
||||
quote: "Super reliable service and the quality is consistent every single time.",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/top-view-yummy-strawberry-pie-with-notepad-dark-blue-surface_140725-81095.jpg",
|
||||
},
|
||||
{
|
||||
name: "Ngozi E.",
|
||||
role: "Foodie",
|
||||
quote: "Love how they maintain the traditional spices in everything they bake.",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/young-stylish-woman-casual-peach-sweater-isolated-green-olive-wall-with-pink-donut-happy-copy-space_343596-5197.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user