Merge version_2_1780912648458 into main #2

Merged
bender merged 1 commits from version_2_1780912648458 into main 2026-06-08 10:00:01 +00:00
10 changed files with 352 additions and 207 deletions

View File

@@ -1,213 +1,30 @@
import AboutFeaturesSplit from '@/components/sections/about/AboutFeaturesSplit';
import ContactCta from '@/components/sections/contact/ContactCta';
import FaqTabbedAccordion from '@/components/sections/faq/FaqTabbedAccordion';
import FeaturesDetailedSteps from '@/components/sections/features/FeaturesDetailedSteps';
import FeaturesImageBento from '@/components/sections/features/FeaturesImageBento';
import HeroBrand from '@/components/sections/hero/HeroBrand';
import MetricsIconCards from '@/components/sections/metrics/MetricsIconCards';
import SocialProofMarquee from '@/components/sections/social-proof/SocialProofMarquee';
import TestimonialOverlayCards from '@/components/sections/testimonial/TestimonialOverlayCards';
import { Award, Cake, Heart, Truck, Users, Wheat } 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; this shell only fixes render order.
export default function HomePage() {
import React from 'react';
import HeroSection from './HomePage/sections/Hero';
import AboutSection from './HomePage/sections/About';
import ProductsSection from './HomePage/sections/Products';
import HowItWorksSection from './HomePage/sections/HowItWorks';
import MetricsSection from './HomePage/sections/Metrics';
import TestimonialsSection from './HomePage/sections/Testimonials';
import SocialProofSection from './HomePage/sections/SocialProof';
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="Freshly Baked Goodness, Delivered to Your Door"
description="Artisan pastries, custom cakes, and daily favorites made with premium ingredients. Order online for pickup or delivery today."
primaryButton={{
text: "Order Now", href: "#contact"}}
secondaryButton={{
text: "View Our Menu", href: "#products"}}
imageSrc="http://img.b2bpic.net/free-photo/overhead-view-baked-chocolate-cakes-with-spoon-clothes-wooden-backdrop_23-2148087027.jpg"
/>
</SectionErrorBoundary>
</div>
<div id="about" data-section="about">
<SectionErrorBoundary name="about">
<AboutFeaturesSplit
tag="Our Story"
title="Crafting Joy, One Bake at a Time"
description="At Sweet Delights Bakery, we believe in the magic of fresh ingredients and traditional techniques. Every pastry, cake, and bread is baked with passion and precision, ensuring a delightful experience with every bite. From our family kitchen to your table, we bring you the taste of homemade perfection."
items={[
{
icon: Wheat,
title: "Premium Ingredients", description: "Sourced locally and globally for the finest quality and flavor."},
{
icon: Heart,
title: "Handcrafted with Love", description: "Each item is carefully prepared by our skilled bakers."},
{
icon: Truck,
title: "Convenient Delivery", description: "Freshness brought directly to your home or office."},
]}
imageSrc="http://img.b2bpic.net/free-photo/close-up-baker-hands-kneading-dough_23-2148302953.jpg"
/>
</SectionErrorBoundary>
</div>
<div id="products" data-section="products">
<SectionErrorBoundary name="products">
<FeaturesImageBento
tag="Our Creations"
title="A Gallery of Sweet Perfection"
description="Explore our diverse range of artisan baked goods, from classic pastries to custom-designed cakes for every occasion. Each image tells a story of flavor and craftsmanship."
items={[
{
imageSrc: "http://img.b2bpic.net/free-photo/front-view-delicious-chocolate-cake_23-2148549963.jpg", href: "#"},
{
imageSrc: "http://img.b2bpic.net/free-photo/delicious-pastry-with-dried-orange-slices-black-board-high-quality-photo_114579-69077.jpg", href: "#"},
{
imageSrc: "http://img.b2bpic.net/free-photo/marshmallow-white-plate-table-with-mug-hot-coffee_114579-604.jpg", href: "#"},
{
imageSrc: "http://img.b2bpic.net/free-photo/top-view-sliced-crusty-bread-cutting-board-wooden-background-with-copy-space_141793-25656.jpg", href: "#"},
{
imageSrc: "http://img.b2bpic.net/free-photo/beautiful-cake-sweet-snacks_181624-27093.jpg", href: "#"},
{
imageSrc: "http://img.b2bpic.net/free-photo/homemade-delicious-rustic-summer-berry-tartles_114579-10242.jpg", href: "#"},
{
imageSrc: "http://img.b2bpic.net/free-photo/wedding-cake-with-flowers_23-2148120660.jpg", href: "#"},
]}
/>
</SectionErrorBoundary>
</div>
<div id="how-it-works" data-section="how-it-works">
<SectionErrorBoundary name="how-it-works">
<FeaturesDetailedSteps
tag="Seamless Ordering"
title="Your Daily Dose of Deliciousness, Made Simple"
description="Experience effortless ordering, from browsing our menu to enjoying our fresh bakes at your convenience. We've streamlined the process just for you."
steps={[
{
tag: "Step 1", title: "Browse Our Menu", subtitle: "Discover Your Favorites", description: "Explore our extensive online menu featuring daily specials, classic pastries, and custom cake options. Filter by occasion, dietary needs, or popularity.", imageSrc: "http://img.b2bpic.net/free-photo/delivery-person-getting-parcel-ready-delivery_23-2149371909.jpg"},
{
tag: "Step 2", title: "Freshly Prepared", subtitle: "Baked to Perfection", description: "Once your order is placed, our dedicated bakers get to work. Each item is freshly prepared using the finest ingredients and our signature recipes, ensuring premium quality.", imageSrc: "http://img.b2bpic.net/free-photo/frosting-piping-bag-filled-with-cream-nozzles-cupcake-wooden-desk_23-2147942575.jpg"},
{
tag: "Step 3", title: "Pickup or Delivery", subtitle: "Enjoy at Your Convenience", description: "Choose between convenient in-store pickup at your preferred time or reliable home delivery. Your delicious treats will arrive fresh and ready to be enjoyed!", imageSrc: "http://img.b2bpic.net/free-photo/content-female-courier-knocking-door_23-2147767707.jpg"},
]}
/>
</SectionErrorBoundary>
</div>
<div id="metrics" data-section="metrics">
<SectionErrorBoundary name="metrics">
<MetricsIconCards
tag="Our Impact"
title="A Taste of Our Success"
description="Proudly serving our community with passion and dedication. Our numbers reflect the trust and joy we've shared with countless customers."
metrics={[
{
icon: Users,
title: "Happy Customers", value: "10,000+"},
{
icon: Award,
title: "Years Baking", value: "15+"},
{
icon: Cake,
title: "Items Baked Daily", value: "500+"},
]}
/>
</SectionErrorBoundary>
</div>
<div id="testimonials" data-section="testimonials">
<SectionErrorBoundary name="testimonials">
<TestimonialOverlayCards
tag="What Our Customers Say"
title="Sweet Words from Sweet People"
description="Hear directly from our satisfied customers about their delightful experiences with Sweet Delights Bakery. Your joy is our greatest reward!"
testimonials={[
{
name: "Sarah J.", role: "Local Professional", company: "Community Member", rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/expressive-young-girl-posing-studio_176474-68234.jpg"},
{
name: "Mark T.", role: "Event Coordinator", company: "City Events", rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/defocused-woman-working-laptop-outside-while-having-lunch_23-2148578246.jpg"},
{
name: "Emily R.", role: "Busy Parent", company: "Family Client", rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/young-womens-having-lunch-home_23-2148451592.jpg"},
{
name: "David L.", role: "Office Manager", company: "Local Business", rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/woman-with-bread_1303-5910.jpg"},
{
name: "Jessica P.", role: "Food Blogger", company: "Taste Trails", rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/portrait-smiling-young-male-baker-showing-mobile-phone-front-baked-croissant-shelves_23-2148189103.jpg"},
{
name: "Robert B.", role: "Loyal Customer", company: "Sweet Delights Regular", rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/group-cheerful-friends-sharing-donuts-cafe_637285-7948.jpg"},
]}
/>
</SectionErrorBoundary>
</div>
<div id="social-proof" data-section="social-proof">
<SectionErrorBoundary name="social-proof">
<SocialProofMarquee
tag="Featured By"
title="Trusted by Local Favorites & Culinary Guides"
description="Our quality and taste have earned us recognition and partnerships across the community. We're proud to be a local favorite!"
names={[
"Local Eats Magazine", "The Daily Bite Blog", "Community Food Critics", "Taste of the City Awards", "Culinary Review Daily", "Flavor Fusion Magazine", "Gourmet Gazette"]}
/>
</SectionErrorBoundary>
</div>
<div id="faq" data-section="faq">
<SectionErrorBoundary name="faq">
<FaqTabbedAccordion
tag="Your Questions, Answered"
title="Got a Craving? We've Got Answers!"
description="Find quick answers to the most common questions about our products, ordering process, custom requests, and more."
categories={[
{
name: "Ordering & Delivery", items: [
{
question: "How do I place an online order?", answer: "Simply navigate to our 'Order Now' section, select your desired items, choose pickup or delivery, and complete the checkout process. It's fast and easy!"},
{
question: "What are your delivery hours and areas?", answer: "We offer delivery Tuesday to Saturday, from 9 AM to 5 PM, within a 10-mile radius of our bakery. Minimum order value may apply."},
{
question: "Can I pick up my order in-store?", answer: "Yes! Select 'Pickup' at checkout and choose a convenient time slot during our operating hours (8 AM - 6 PM, Tuesday to Saturday)."},
],
},
{
name: "Products & Customization", items: [
{
question: "Do you offer gluten-free or vegan options?", answer: "Yes, we have a selection of delicious gluten-free and vegan items. Please check our online menu or ask our staff for today's specials."},
{
question: "How do I order a custom cake?", answer: "For custom cakes, please fill out our inquiry form or call us directly. We'll discuss your design, flavor preferences, and provide a personalized quote."},
{
question: "Is your daily inventory updated online?", answer: "While our full menu is online, daily specials and limited-time items are best confirmed by calling our store directly. We bake fresh every morning!"},
],
},
{
name: "Loyalty & Rewards", items: [
{
question: "How can I join your loyalty program?", answer: "Sign up for our newsletter and create an account online to automatically join our loyalty program. Earn points with every purchase and enjoy exclusive discounts and offers!"},
{
question: "What kind of rewards do you offer?", answer: "Our loyalty program offers discounts, free treats, early access to new products, and special birthday surprises!"},
],
},
]}
/>
</SectionErrorBoundary>
</div>
<div id="contact" data-section="contact">
<SectionErrorBoundary name="contact">
<ContactCta
tag="Ready to Indulge?"
text="Order Your Sweet Delights Today!"
primaryButton={{
text: "Place Your Order", href: "#products"}}
secondaryButton={{
text: "Visit Our Store", href: "#"}}
/>
</SectionErrorBoundary>
</div>
<HeroSection />
<AboutSection />
<ProductsSection />
<HowItWorksSection />
<MetricsSection />
<TestimonialsSection />
<SocialProofSection />
<FaqSection />
<ContactSection />
</>
);
}

View File

@@ -0,0 +1,73 @@
import React, { useState, useEffect } from 'react';
import { Wheat, Heart, Truck } from "lucide-react";
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
import Tag from "@/components/ui/Tag";
import ImageOrVideo from "@/components/ui/ImageOrVideo";
export default function AboutSection(): React.JSX.Element {
const [timeLeft, setTimeLeft] = useState(300);
useEffect(() => {
if (timeLeft <= 0) return;
const timerId = setInterval(() => {
setTimeLeft(prev => prev - 1);
}, 1000);
return () => clearInterval(timerId);
}, [timeLeft]);
const minutes = Math.floor(timeLeft / 60);
const seconds = timeLeft % 60;
return (
<div id="about" data-webild-section="about">
<SectionErrorBoundary name="about">
<section className="py-24 bg-background">
<div className="max-w-7xl mx-auto px-6 lg:px-8">
<div className="flex flex-col items-center mb-16">
<Tag text="Our Story" />
</div>
<div className="grid grid-cols-1 lg:grid-cols-2 gap-16 items-center">
<div className="space-y-6">
<div className="bg-card p-6 rounded-2xl">
<div className="flex-shrink-0 w-10 h-10 rounded-xl bg-primary-cta flex items-center justify-center mb-4">
<Wheat className="w-5 h-5 text-primary-cta-text" />
</div>
<h3 className="text-xl font-semibold text-foreground mb-2">Premium Ingredients</h3>
<p className="text-muted-foreground">Sourced locally and globally for the finest quality and flavor.</p>
</div>
<div className="bg-card p-6 rounded-2xl">
<div className="flex-shrink-0 w-10 h-10 rounded-xl bg-primary-cta flex items-center justify-center mb-4">
<Heart className="w-5 h-5 text-primary-cta-text" />
</div>
<h3 className="text-xl font-semibold text-foreground mb-2">Handcrafted with Love</h3>
<p className="text-muted-foreground">Each item is carefully prepared by our skilled bakers.</p>
</div>
<div className="bg-card p-6 rounded-2xl">
<div className="flex-shrink-0 w-10 h-10 rounded-xl bg-primary-cta flex items-center justify-center mb-4">
<Truck className="w-5 h-5 text-primary-cta-text" />
</div>
<h3 className="text-xl font-semibold text-foreground mb-2">Convenient Delivery</h3>
<p className="text-muted-foreground">Freshness brought directly to your home or office.</p>
</div>
</div>
<div className="relative">
<div className="relative rounded-2xl overflow-hidden aspect-[4/3]">
<ImageOrVideo
imageSrc="http://img.b2bpic.net/free-photo/close-up-baker-hands-kneading-dough_23-2148302953.jpg"
className="w-full h-full object-cover"
/>
<div className="absolute top-4 right-4 bg-primary-cta text-primary-cta-text px-4 py-2 rounded-lg shadow-lg flex flex-col items-center">
<span className="text-[10px] font-semibold uppercase tracking-wider mb-1 opacity-80">Discount Ends In</span>
<span className="text-xl font-bold font-mono">
{String(minutes).padStart(2, '0')}:{String(seconds).padStart(2, '0')}
</span>
</div>
</div>
</div>
</div>
</div>
</section>
</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 "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="Ready to Indulge?"
text="Order Your Sweet Delights Today!"
primaryButton={{
text: "Place Your Order", href: "#products"}}
secondaryButton={{
text: "Visit Our Store", href: "#"}}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,50 @@
// 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="Your Questions, Answered"
title="Got a Craving? We've Got Answers!"
description="Find quick answers to the most common questions about our products, ordering process, custom requests, and more."
categories={[
{
name: "Ordering & Delivery", items: [
{
question: "How do I place an online order?", answer: "Simply navigate to our 'Order Now' section, select your desired items, choose pickup or delivery, and complete the checkout process. It's fast and easy!"},
{
question: "What are your delivery hours and areas?", answer: "We offer delivery Tuesday to Saturday, from 9 AM to 5 PM, within a 10-mile radius of our bakery. Minimum order value may apply."},
{
question: "Can I pick up my order in-store?", answer: "Yes! Select 'Pickup' at checkout and choose a convenient time slot during our operating hours (8 AM - 6 PM, Tuesday to Saturday)."},
],
},
{
name: "Products & Customization", items: [
{
question: "Do you offer gluten-free or vegan options?", answer: "Yes, we have a selection of delicious gluten-free and vegan items. Please check our online menu or ask our staff for today's specials."},
{
question: "How do I order a custom cake?", answer: "For custom cakes, please fill out our inquiry form or call us directly. We'll discuss your design, flavor preferences, and provide a personalized quote."},
{
question: "Is your daily inventory updated online?", answer: "While our full menu is online, daily specials and limited-time items are best confirmed by calling our store directly. We bake fresh every morning!"},
],
},
{
name: "Loyalty & Rewards", items: [
{
question: "How can I join your loyalty program?", answer: "Sign up for our newsletter and create an account online to automatically join our loyalty program. Earn points with every purchase and enjoy exclusive discounts and offers!"},
{
question: "What kind of rewards do you offer?", answer: "Our loyalty program offers discounts, free treats, early access to new products, and special birthday surprises!"},
],
},
]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,24 @@
// 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="Freshly Baked Goodness, Delivered to Your Door"
description="Artisan pastries, custom cakes, and daily favorites made with premium ingredients. Order online for pickup or delivery today."
primaryButton={{
text: "Order Now", href: "#contact"}}
secondaryButton={{
text: "View Our Menu", href: "#products"}}
imageSrc="http://img.b2bpic.net/free-photo/overhead-view-baked-chocolate-cakes-with-spoon-clothes-wooden-backdrop_23-2148087027.jpg"
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,28 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "how-it-works" section.
import React from 'react';
import FeaturesDetailedSteps from '@/components/sections/features/FeaturesDetailedSteps';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function HowItWorksSection(): React.JSX.Element {
return (
<div id="how-it-works" data-section="how-it-works">
<SectionErrorBoundary name="how-it-works">
<FeaturesDetailedSteps
tag="Seamless Ordering"
title="Your Daily Dose of Deliciousness, Made Simple"
description="Experience effortless ordering, from browsing our menu to enjoying our fresh bakes at your convenience. We've streamlined the process just for you."
steps={[
{
tag: "Step 1", title: "Browse Our Menu", subtitle: "Discover Your Favorites", description: "Explore our extensive online menu featuring daily specials, classic pastries, and custom cake options. Filter by occasion, dietary needs, or popularity.", imageSrc: "http://img.b2bpic.net/free-photo/delivery-person-getting-parcel-ready-delivery_23-2149371909.jpg"},
{
tag: "Step 2", title: "Freshly Prepared", subtitle: "Baked to Perfection", description: "Once your order is placed, our dedicated bakers get to work. Each item is freshly prepared using the finest ingredients and our signature recipes, ensuring premium quality.", imageSrc: "http://img.b2bpic.net/free-photo/frosting-piping-bag-filled-with-cream-nozzles-cupcake-wooden-desk_23-2147942575.jpg"},
{
tag: "Step 3", title: "Pickup or Delivery", subtitle: "Enjoy at Your Convenience", description: "Choose between convenient in-store pickup at your preferred time or reliable home delivery. Your delicious treats will arrive fresh and ready to be enjoyed!", imageSrc: "http://img.b2bpic.net/free-photo/content-female-courier-knocking-door_23-2147767707.jpg"},
]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,32 @@
// 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, Cake, Heart, Truck, Users, Wheat } 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="A Taste of Our Success"
description="Proudly serving our community with passion and dedication. Our numbers reflect the trust and joy we've shared with countless customers."
metrics={[
{
icon: Users,
title: "Happy Customers", value: "10,000+"},
{
icon: Award,
title: "Years Baking", value: "15+"},
{
icon: Cake,
title: "Items Baked Daily", value: "500+"},
]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,36 @@
// 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="Our Creations"
title="A Gallery of Sweet Perfection"
description="Explore our diverse range of artisan baked goods, from classic pastries to custom-designed cakes for every occasion. Each image tells a story of flavor and craftsmanship."
items={[
{
imageSrc: "http://img.b2bpic.net/free-photo/front-view-delicious-chocolate-cake_23-2148549963.jpg", href: "#"},
{
imageSrc: "http://img.b2bpic.net/free-photo/delicious-pastry-with-dried-orange-slices-black-board-high-quality-photo_114579-69077.jpg", href: "#"},
{
imageSrc: "http://img.b2bpic.net/free-photo/marshmallow-white-plate-table-with-mug-hot-coffee_114579-604.jpg", href: "#"},
{
imageSrc: "http://img.b2bpic.net/free-photo/top-view-sliced-crusty-bread-cutting-board-wooden-background-with-copy-space_141793-25656.jpg", href: "#"},
{
imageSrc: "http://img.b2bpic.net/free-photo/beautiful-cake-sweet-snacks_181624-27093.jpg", href: "#"},
{
imageSrc: "http://img.b2bpic.net/free-photo/homemade-delicious-rustic-summer-berry-tartles_114579-10242.jpg", href: "#"},
{
imageSrc: "http://img.b2bpic.net/free-photo/wedding-cake-with-flowers_23-2148120660.jpg", href: "#"},
]}
/>
</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 "social-proof" section.
import React from 'react';
import SocialProofMarquee from '@/components/sections/social-proof/SocialProofMarquee';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function SocialProofSection(): React.JSX.Element {
return (
<div id="social-proof" data-section="social-proof">
<SectionErrorBoundary name="social-proof">
<SocialProofMarquee
tag="Featured By"
title="Trusted by Local Favorites & Culinary Guides"
description="Our quality and taste have earned us recognition and partnerships across the community. We're proud to be a local favorite!"
names={[
"Local Eats Magazine", "The Daily Bite Blog", "Community Food Critics", "Taste of the City Awards", "Culinary Review Daily", "Flavor Fusion Magazine", "Gourmet Gazette"]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,40 @@
// 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 TestimonialOverlayCards from '@/components/sections/testimonial/TestimonialOverlayCards';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function TestimonialsSection(): React.JSX.Element {
return (
<div id="testimonials" data-section="testimonials">
<SectionErrorBoundary name="testimonials">
<TestimonialOverlayCards
tag="What Our Customers Say"
title="Sweet Words from Sweet People"
description="Hear directly from our satisfied customers about their delightful experiences with Sweet Delights Bakery. Your joy is our greatest reward!"
testimonials={[
{
name: "Sarah J.", role: "Local Professional", company: "Community Member", rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/expressive-young-girl-posing-studio_176474-68234.jpg"},
{
name: "Mark T.", role: "Event Coordinator", company: "City Events", rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/defocused-woman-working-laptop-outside-while-having-lunch_23-2148578246.jpg"},
{
name: "Emily R.", role: "Busy Parent", company: "Family Client", rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/young-womens-having-lunch-home_23-2148451592.jpg"},
{
name: "David L.", role: "Office Manager", company: "Local Business", rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/woman-with-bread_1303-5910.jpg"},
{
name: "Jessica P.", role: "Food Blogger", company: "Taste Trails", rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/portrait-smiling-young-male-baker-showing-mobile-phone-front-baked-croissant-shelves_23-2148189103.jpg"},
{
name: "Robert B.", role: "Loyal Customer", company: "Sweet Delights Regular", rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/group-cheerful-friends-sharing-donuts-cafe_637285-7948.jpg"},
]}
/>
</SectionErrorBoundary>
</div>
);
}