Merge version_2_1780864444942 into main #1
@@ -1,253 +1,28 @@
|
||||
import AboutTextSplit from '@/components/sections/about/AboutTextSplit';
|
||||
import ContactCta from '@/components/sections/contact/ContactCta';
|
||||
import FaqSplitMedia from '@/components/sections/faq/FaqSplitMedia';
|
||||
import FeaturesBentoGridCta from '@/components/sections/features/FeaturesBentoGridCta';
|
||||
import FeaturesRevealCardsBento from '@/components/sections/features/FeaturesRevealCardsBento';
|
||||
import HeroBillboardBrand from '@/components/sections/hero/HeroBillboardBrand';
|
||||
import MetricsIconCards from '@/components/sections/metrics/MetricsIconCards';
|
||||
import TestimonialColumnMarqueeCards from '@/components/sections/testimonial/TestimonialColumnMarqueeCards';
|
||||
import { Award, Star } 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 FeaturesSection from './HomePage/sections/Features';
|
||||
import TestimonialsSection from './HomePage/sections/Testimonials';
|
||||
import MetricsSection from './HomePage/sections/Metrics';
|
||||
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">
|
||||
<HeroBillboardBrand
|
||||
brand="The Daily Crumb"
|
||||
description="Freshly Baked Goodness, Made Daily. Artisan breads, pastries, and custom cakes crafted with premium ingredients. Order online or visit us today."
|
||||
primaryButton={{
|
||||
text: "Order Now",
|
||||
href: "#contact",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Our Menu",
|
||||
href: "#products",
|
||||
}}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/medium-shot-woman-working-bakery_23-2150273148.jpg"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
|
||||
<div id="about" data-section="about">
|
||||
<SectionErrorBoundary name="about">
|
||||
<AboutTextSplit
|
||||
title="Our Passion for Perfection"
|
||||
descriptions={[
|
||||
"At The Daily Crumb, we believe that every bite should be a moment of pure joy. Our journey began with a simple desire: to bring authentic, handcrafted baked goods to our community. We use time-honored techniques and the finest, freshest ingredients to create products that not only taste incredible but also tell a story.",
|
||||
"From the moment our doors open, the aroma of warm bread and sweet pastries fills the air, inviting you into a world where tradition meets innovation. We're proud to be a local staple, a place where friends gather, families celebrate, and everyone can find something delicious to brighten their day. Our commitment to quality extends beyond our ingredients to the care we put into every loaf, every cake, and every smile we share with our customers.",
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
|
||||
<div id="products" data-section="products">
|
||||
<SectionErrorBoundary name="products">
|
||||
<FeaturesRevealCardsBento
|
||||
tag="Our Delights"
|
||||
title="Explore Our Oven-Fresh Creations"
|
||||
description="From flaky croissants to custom celebration cakes, discover your new favorite treat."
|
||||
items={[
|
||||
{
|
||||
title: "Flaky Croissants",
|
||||
description: "Buttery, golden, and perfect with your morning coffee.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/freshly-baked-croissant-white-plate-with-black-coffee_181624-60129.jpg",
|
||||
},
|
||||
{
|
||||
title: "Artisan Sourdough",
|
||||
description: "Slow-fermented for a rich flavor and perfect crust.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/loaf-bread-tied-with-rope-wooden-board_114579-72178.jpg",
|
||||
},
|
||||
{
|
||||
title: "Gourmet Cupcakes",
|
||||
description: "Beautifully decorated and bursting with flavor.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/delicious-rainbow-cupcake-still-life_23-2150423807.jpg",
|
||||
},
|
||||
{
|
||||
title: "Signature Cookies",
|
||||
description: "Classic recipes with a homemade taste you'll love.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/bunch-cookies-bundled-together-marble-background_114579-25950.jpg",
|
||||
},
|
||||
{
|
||||
title: "Seasonal Fruit Pies",
|
||||
description: "Made with the freshest fruits of the season.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/top-view-fruit-pie-arrangement_23-2148531646.jpg",
|
||||
},
|
||||
{
|
||||
title: "Custom Celebration Cakes",
|
||||
description: "Designed to make your special moments unforgettable.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/from-cake-table_23-2147783757.jpg",
|
||||
},
|
||||
{
|
||||
title: "Sweet Cinnamon Rolls",
|
||||
description: "Warm, gooey, and topped with decadent cream cheese frosting.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/cinnamon-rolls-buns-wooden-table-kanelbulle-swedish-dessert_123827-22535.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
|
||||
<div id="features" data-section="features">
|
||||
<SectionErrorBoundary name="features">
|
||||
<FeaturesBentoGridCta
|
||||
tag="Why Choose Us"
|
||||
title="The Heart of Our Craft"
|
||||
description="Dedicated to quality, freshness, and community joy in every creation."
|
||||
features={[
|
||||
{
|
||||
title: "Premium Ingredients",
|
||||
description: "We source only the finest, freshest, and often local ingredients for superior taste and quality.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/team-local-farmers-selling-natural-bio-produce_482257-77615.jpg",
|
||||
},
|
||||
{
|
||||
title: "Artisan Craftsmanship",
|
||||
description: "Our bakers pour passion and expertise into every handcrafted item, ensuring perfection.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/traditional-delicious-gulas-dish-arrangement_23-2149072564.jpg",
|
||||
},
|
||||
{
|
||||
title: "Community Focused",
|
||||
description: "We are proud to be a beloved part of the neighborhood, serving generations with warmth.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/family-preparing-challah-dish-hanukkah_23-2151102350.jpg",
|
||||
},
|
||||
{
|
||||
title: "Convenient Ordering",
|
||||
description: "Enjoy our delights in-store or through easy online ordering and pickup options.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/3d-render-sunglasses-shopping-cart-illustration-design_460848-11469.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
|
||||
<div id="testimonials" data-section="testimonials">
|
||||
<SectionErrorBoundary name="testimonials">
|
||||
<TestimonialColumnMarqueeCards
|
||||
tag="Happy Customers"
|
||||
title="What Our Community Says"
|
||||
description="Hear from those who've savored our freshly baked goodness and experienced our warm service."
|
||||
testimonials={[
|
||||
{
|
||||
name: "Sarah J.",
|
||||
role: "Local Resident",
|
||||
quote: "The Daily Crumb is my go-to for morning pastries. Their croissants are simply divine and the staff always makes my day!",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/smiling-pretty-girl-model-standing-holding-cabbage_114579-74354.jpg",
|
||||
},
|
||||
{
|
||||
name: "Mark T.",
|
||||
role: "Small Business Owner",
|
||||
quote: "I order all my corporate event pastries from here. Always fresh, always delicious, and always on time!",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/professional-barber-man-apron-looking-front-smiliung-cheerfully-showing-ok-sign-standing-orange-wall_141793-96581.jpg",
|
||||
},
|
||||
{
|
||||
name: "Emily R.",
|
||||
role: "Food Blogger",
|
||||
quote: "Every item from The Daily Crumb is a masterpiece. Their sourdough bread is a game-changer, perfectly crusty and airy inside.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/young-girl-with-short-hair-wearing-white-polo-shirt-holding-notebook-pen-writing-with-serious-face_141793-46470.jpg",
|
||||
},
|
||||
{
|
||||
name: "David K.",
|
||||
role: "Parent",
|
||||
quote: "Their custom cakes for birthdays are incredible! Beautiful designs and amazing flavors. My kids absolutely love them.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/young-male-showing-paper-bag-t-shirt-jacket-looking-cheery-front-view_176474-91622.jpg",
|
||||
},
|
||||
{
|
||||
name: "Grace L.",
|
||||
role: "Retiree",
|
||||
quote: "This bakery feels like home. The warm service and the aroma of fresh bread always make my visits a delight. A true neighborhood gem.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/cropped-shot-cheerful-attractive-grandmother-white-shirt-holding-piece-freshly-baked-berry-pie-birthday-having-joyful-facial-expression-smiling-broadly_343059-1898.jpg",
|
||||
},
|
||||
{
|
||||
name: "James & Lily",
|
||||
role: "Couple",
|
||||
quote: "We discovered The Daily Crumb last year and haven't looked back. Their coffee and pastries are our weekend ritual!",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/young-man-feeding-woman-with-croissant-bed_23-2148012227.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
|
||||
<div id="metrics" data-section="metrics">
|
||||
<SectionErrorBoundary name="metrics">
|
||||
<MetricsIconCards
|
||||
tag="Our Impact"
|
||||
title="A Legacy of Sweetness"
|
||||
description="Serving our community with passion and delicious creations, one baked good at a time."
|
||||
metrics={[
|
||||
{
|
||||
icon: Star,
|
||||
title: "Years Baking",
|
||||
value: "15+",
|
||||
},
|
||||
{
|
||||
icon: Award,
|
||||
title: "Original Recipes",
|
||||
value: "100+",
|
||||
},
|
||||
{
|
||||
icon: Award,
|
||||
title: "Happy Customers",
|
||||
value: "10,000+",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
|
||||
<div id="faq" data-section="faq">
|
||||
<SectionErrorBoundary name="faq">
|
||||
<FaqSplitMedia
|
||||
tag="Questions?"
|
||||
title="Your Baking Questions, Answered"
|
||||
description="Find quick answers to common queries about our products, ingredients, and ordering process."
|
||||
items={[
|
||||
{
|
||||
question: "What are your opening hours?",
|
||||
answer: "We are open Monday to Saturday from 7:00 AM to 6:00 PM, and Sunday from 8:00 AM to 4:00 PM. Holiday hours may vary, please check our social media for updates.",
|
||||
},
|
||||
{
|
||||
question: "Do you offer gluten-free options?",
|
||||
answer: "Yes, we have a selection of delicious gluten-free breads and pastries. Please ask our staff for today's specific offerings, as our menu rotates frequently.",
|
||||
},
|
||||
{
|
||||
question: "How can I place a custom cake order?",
|
||||
answer: "Custom cake orders can be placed directly through our website's 'Order Now' section or by calling us during business hours. We recommend ordering at least one week in advance.",
|
||||
},
|
||||
{
|
||||
question: "Do you deliver?",
|
||||
answer: "Currently, we offer in-store pickup for all online orders. We are exploring delivery options for the future. Stay tuned for updates!",
|
||||
},
|
||||
]}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/happy-loving-couple-bakers-standing-bakery-holding-bread_171337-15988.jpg"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
|
||||
<div id="contact" data-section="contact">
|
||||
<SectionErrorBoundary name="contact">
|
||||
<ContactCta
|
||||
tag="Ready to Indulge?"
|
||||
text="Taste the difference of freshly baked quality. Place your order or visit us today for a delightful experience!"
|
||||
primaryButton={{
|
||||
text: "Order Online Now",
|
||||
href: "#",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Find Our Location",
|
||||
href: "#",
|
||||
}}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<HeroSection />
|
||||
<AboutSection />
|
||||
<ProductsSection />
|
||||
<FeaturesSection />
|
||||
<TestimonialsSection />
|
||||
<MetricsSection />
|
||||
<FaqSection />
|
||||
<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 AboutTextSplit from '@/components/sections/about/AboutTextSplit';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function AboutSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="about" data-section="about">
|
||||
<SectionErrorBoundary name="about">
|
||||
<AboutTextSplit
|
||||
title="Our Passion for Perfection"
|
||||
descriptions={[
|
||||
"At The Daily Crumb, we believe that every bite should be a moment of pure joy. Our journey began with a simple desire: to bring authentic, handcrafted baked goods to our community. We use time-honored techniques and the finest, freshest ingredients to create products that not only taste incredible but also tell a story.",
|
||||
"From the moment our doors open, the aroma of warm bread and sweet pastries fills the air, inviting you into a world where tradition meets innovation. We're proud to be a local staple, a place where friends gather, families celebrate, and everyone can find something delicious to brighten their day. Our commitment to quality extends beyond our ingredients to the care we put into every loaf, every cake, and every smile we share with our customers.",
|
||||
]}
|
||||
/>
|
||||
</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="Ready to Indulge?"
|
||||
text="Taste the difference of freshly baked quality. Place your order or visit us today for a delightful experience!"
|
||||
primaryButton={{
|
||||
text: "Order Online Now",
|
||||
href: "#",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Find Our Location",
|
||||
href: "#",
|
||||
}}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
39
src/pages/HomePage/sections/Faq.tsx
Normal file
39
src/pages/HomePage/sections/Faq.tsx
Normal file
@@ -0,0 +1,39 @@
|
||||
// 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 FaqSplitMedia from '@/components/sections/faq/FaqSplitMedia';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function FaqSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="faq" data-section="faq">
|
||||
<SectionErrorBoundary name="faq">
|
||||
<FaqSplitMedia
|
||||
tag="Questions?"
|
||||
title="Your Baking Questions, Answered"
|
||||
description="Find quick answers to common queries about our products, ingredients, and ordering process."
|
||||
items={[
|
||||
{
|
||||
question: "What are your opening hours?",
|
||||
answer: "We are open Monday to Saturday from 7:00 AM to 6:00 PM, and Sunday from 8:00 AM to 4:00 PM. Holiday hours may vary, please check our social media for updates.",
|
||||
},
|
||||
{
|
||||
question: "Do you offer gluten-free options?",
|
||||
answer: "Yes, we have a selection of delicious gluten-free breads and pastries. Please ask our staff for today's specific offerings, as our menu rotates frequently.",
|
||||
},
|
||||
{
|
||||
question: "How can I place a custom cake order?",
|
||||
answer: "Custom cake orders can be placed directly through our website's 'Order Now' section or by calling us during business hours. We recommend ordering at least one week in advance.",
|
||||
},
|
||||
{
|
||||
question: "Do you deliver?",
|
||||
answer: "Currently, we offer in-store pickup for all online orders. We are exploring delivery options for the future. Stay tuned for updates!",
|
||||
},
|
||||
]}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/happy-loving-couple-bakers-standing-bakery-holding-bread_171337-15988.jpg"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
42
src/pages/HomePage/sections/Features.tsx
Normal file
42
src/pages/HomePage/sections/Features.tsx
Normal file
@@ -0,0 +1,42 @@
|
||||
// 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 FeaturesBentoGridCta from '@/components/sections/features/FeaturesBentoGridCta';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function FeaturesSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="features" data-section="features">
|
||||
<SectionErrorBoundary name="features">
|
||||
<FeaturesBentoGridCta
|
||||
tag="Why Choose Us"
|
||||
title="The Heart of Our Craft"
|
||||
description="Dedicated to quality, freshness, and community joy in every creation."
|
||||
features={[
|
||||
{
|
||||
title: "Premium Ingredients",
|
||||
description: "We source only the finest, freshest, and often local ingredients for superior taste and quality.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/team-local-farmers-selling-natural-bio-produce_482257-77615.jpg",
|
||||
},
|
||||
{
|
||||
title: "Artisan Craftsmanship",
|
||||
description: "Our bakers pour passion and expertise into every handcrafted item, ensuring perfection.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/traditional-delicious-gulas-dish-arrangement_23-2149072564.jpg",
|
||||
},
|
||||
{
|
||||
title: "Community Focused",
|
||||
description: "We are proud to be a beloved part of the neighborhood, serving generations with warmth.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/family-preparing-challah-dish-hanukkah_23-2151102350.jpg",
|
||||
},
|
||||
{
|
||||
title: "Convenient Ordering",
|
||||
description: "Enjoy our delights in-store or through easy online ordering and pickup options.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/3d-render-sunglasses-shopping-cart-illustration-design_460848-11469.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
28
src/pages/HomePage/sections/Hero.tsx
Normal file
28
src/pages/HomePage/sections/Hero.tsx
Normal file
@@ -0,0 +1,28 @@
|
||||
// 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 HeroBillboardBrand from '@/components/sections/hero/HeroBillboardBrand';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function HeroSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="hero" data-section="hero">
|
||||
<SectionErrorBoundary name="hero">
|
||||
<HeroBillboardBrand
|
||||
brand="Taste the Freshness: Your Daily Slice of Joy Awaits"
|
||||
description="Freshly Baked Goodness, Made Daily. Artisan breads, pastries, and custom cakes crafted with premium ingredients. Order online or visit us today."
|
||||
primaryButton={{
|
||||
text: "Order Now",
|
||||
href: "#contact",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Our Menu",
|
||||
href: "#products",
|
||||
}}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/medium-shot-woman-working-bakery_23-2150273148.jpg"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
38
src/pages/HomePage/sections/Metrics.tsx
Normal file
38
src/pages/HomePage/sections/Metrics.tsx
Normal 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, Star } 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 Legacy of Sweetness"
|
||||
description="Serving our community with passion and delicious creations, one baked good at a time."
|
||||
metrics={[
|
||||
{
|
||||
icon: Star,
|
||||
title: "Years Baking",
|
||||
value: "15+",
|
||||
},
|
||||
{
|
||||
icon: Award,
|
||||
title: "Original Recipes",
|
||||
value: "100+",
|
||||
},
|
||||
{
|
||||
icon: Award,
|
||||
title: "Happy Customers",
|
||||
value: "10,000+",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
64
src/pages/HomePage/sections/Products.tsx
Normal file
64
src/pages/HomePage/sections/Products.tsx
Normal file
@@ -0,0 +1,64 @@
|
||||
// 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 FeaturesRevealCardsBento from '@/components/sections/features/FeaturesRevealCardsBento';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function ProductsSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="products" data-section="products">
|
||||
<SectionErrorBoundary name="products">
|
||||
<FeaturesRevealCardsBento
|
||||
tag="Our Delights"
|
||||
title="Explore Our Oven-Fresh Creations"
|
||||
description="From flaky croissants to custom celebration cakes, discover your new favorite treat."
|
||||
items={[
|
||||
{
|
||||
title: "Flaky Croissants",
|
||||
description: "Buttery, golden, and perfect with your morning coffee.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/freshly-baked-croissant-white-plate-with-black-coffee_181624-60129.jpg",
|
||||
},
|
||||
{
|
||||
title: "Artisan Sourdough",
|
||||
description: "Slow-fermented for a rich flavor and perfect crust.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/loaf-bread-tied-with-rope-wooden-board_114579-72178.jpg",
|
||||
},
|
||||
{
|
||||
title: "Gourmet Cupcakes",
|
||||
description: "Beautifully decorated and bursting with flavor.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/delicious-rainbow-cupcake-still-life_23-2150423807.jpg",
|
||||
},
|
||||
{
|
||||
title: "Signature Cookies",
|
||||
description: "Classic recipes with a homemade taste you'll love.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/bunch-cookies-bundled-together-marble-background_114579-25950.jpg",
|
||||
},
|
||||
{
|
||||
title: "Seasonal Fruit Pies",
|
||||
description: "Made with the freshest fruits of the season.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/top-view-fruit-pie-arrangement_23-2148531646.jpg",
|
||||
},
|
||||
{
|
||||
title: "Custom Celebration Cakes",
|
||||
description: "Designed to make your special moments unforgettable.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/from-cake-table_23-2147783757.jpg",
|
||||
},
|
||||
{
|
||||
title: "Sweet Cinnamon Rolls",
|
||||
description: "Warm, gooey, and topped with decadent cream cheese frosting.",
|
||||
href: "#",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/cinnamon-rolls-buns-wooden-table-kanelbulle-swedish-dessert_123827-22535.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
58
src/pages/HomePage/sections/Testimonials.tsx
Normal file
58
src/pages/HomePage/sections/Testimonials.tsx
Normal file
@@ -0,0 +1,58 @@
|
||||
// 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="Happy Customers"
|
||||
title="What Our Community Says"
|
||||
description="Hear from those who've savored our freshly baked goodness and experienced our warm service."
|
||||
testimonials={[
|
||||
{
|
||||
name: "Sarah J.",
|
||||
role: "Local Resident",
|
||||
quote: "The Daily Crumb is my go-to for morning pastries. Their croissants are simply divine and the staff always makes my day!",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/smiling-pretty-girl-model-standing-holding-cabbage_114579-74354.jpg",
|
||||
},
|
||||
{
|
||||
name: "Mark T.",
|
||||
role: "Small Business Owner",
|
||||
quote: "I order all my corporate event pastries from here. Always fresh, always delicious, and always on time!",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/professional-barber-man-apron-looking-front-smiliung-cheerfully-showing-ok-sign-standing-orange-wall_141793-96581.jpg",
|
||||
},
|
||||
{
|
||||
name: "Emily R.",
|
||||
role: "Food Blogger",
|
||||
quote: "Every item from The Daily Crumb is a masterpiece. Their sourdough bread is a game-changer, perfectly crusty and airy inside.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/young-girl-with-short-hair-wearing-white-polo-shirt-holding-notebook-pen-writing-with-serious-face_141793-46470.jpg",
|
||||
},
|
||||
{
|
||||
name: "David K.",
|
||||
role: "Parent",
|
||||
quote: "Their custom cakes for birthdays are incredible! Beautiful designs and amazing flavors. My kids absolutely love them.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/young-male-showing-paper-bag-t-shirt-jacket-looking-cheery-front-view_176474-91622.jpg",
|
||||
},
|
||||
{
|
||||
name: "Grace L.",
|
||||
role: "Retiree",
|
||||
quote: "This bakery feels like home. The warm service and the aroma of fresh bread always make my visits a delight. A true neighborhood gem.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/cropped-shot-cheerful-attractive-grandmother-white-shirt-holding-piece-freshly-baked-berry-pie-birthday-having-joyful-facial-expression-smiling-broadly_343059-1898.jpg",
|
||||
},
|
||||
{
|
||||
name: "James & Lily",
|
||||
role: "Couple",
|
||||
quote: "We discovered The Daily Crumb last year and haven't looked back. Their coffee and pastries are our weekend ritual!",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/young-man-feeding-woman-with-croissant-bed_23-2148012227.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user