20 Commits

Author SHA1 Message Date
162ff78c54 Merge version_7_1783338814382 into main
Merge version_7_1783338814382 into main
2026-07-06 11:55:16 +00:00
kudinDmitriyUp
1059bccf33 Bob AI: Added certification badges and partner logos to the Trusted 2026-07-06 11:54:27 +00:00
692b88113e Merge version_6_1783337322762 into main
Merge version_6_1783337322762 into main
2026-07-06 11:30:34 +00:00
7b4a83cf8b Update src/pages/HomePage.tsx 2026-07-06 11:30:31 +00:00
07cd2f2379 Update src/pages/HomePage/sections/Testimonials.tsx 2026-07-06 11:30:31 +00:00
7f1d0658e7 Update src/pages/HomePage/sections/Team.tsx 2026-07-06 11:30:30 +00:00
a9e43c8fdf Update src/pages/HomePage/sections/Products.tsx 2026-07-06 11:30:30 +00:00
7042168ec9 Update src/pages/HomePage/sections/Hero.tsx 2026-07-06 11:30:29 +00:00
3456a42047 Update src/pages/HomePage/sections/About.tsx 2026-07-06 11:30:29 +00:00
50ae029594 Update src/components/Layout.tsx 2026-07-06 11:30:21 +00:00
9086e53a0d Merge version_6_1783337322762 into main
Merge version_6_1783337322762 into main
2026-07-06 11:30:20 +00:00
kudinDmitriyUp
6bf56060b1 Bob AI: Added a Trusted By section below the hero with a marquee of 2026-07-06 11:29:31 +00:00
7411c6bc72 Merge version_5_1783337117792 into main
Merge version_5_1783337117792 into main
2026-07-06 11:27:35 +00:00
kudinDmitriyUp
554008ce44 Bob AI: Added a map and address block to the contact section. 2026-07-06 11:26:46 +00:00
c4248d6d17 Merge version_4_1783169616695 into main
Merge version_4_1783169616695 into main
2026-07-04 12:53:51 +00:00
dd80dbcfe1 Update src/pages/HomePage.tsx 2026-07-04 12:53:48 +00:00
97319536bf Merge version_3_1783169459294 into main
Merge version_3_1783169459294 into main
2026-07-04 12:51:13 +00:00
db9afc7eb4 Merge version_2_1783169379588 into main
Merge version_2_1783169379588 into main
2026-07-04 12:49:57 +00:00
af8d6f64e4 Merge version_1_1783107735289 into main
Merge version_1_1783107735289 into main
2026-07-03 19:43:30 +00:00
b737bfc9a5 Merge version_1_1783107735289 into main
Merge version_1_1783107735289 into main
2026-07-03 19:42:46 +00:00
11 changed files with 365 additions and 178 deletions

View File

@@ -94,7 +94,7 @@ export default function Layout() {
href: "https://twitter.com",
},
]}
imageSrc="https://storage.googleapis.com/webild/users/user_39wSE8YJoGda03bkKGOyyo2rjk4/uploaded-1781466517590-kavaf4h5.png"
imageSrc="https://storage.googleapis.com/webild/users/user_39wSE8YJoGda03bkKGOyyo2rjk4/uploaded-1781466517590-kavaf4h5.png?_wi=1"
/>
</SectionErrorBoundary>
</StyleProvider>

View File

@@ -1,189 +1,37 @@
import AboutMediaOverlay from '@/components/sections/about/AboutMediaOverlay';
import ContactCta from '@/components/sections/contact/ContactCta';
import FaqTwoColumn from '@/components/sections/faq/FaqTwoColumn';
import FeaturesRevealCardsBento from '@/components/sections/features/FeaturesRevealCardsBento';
import HeroTiltedCards from '@/components/sections/hero/HeroTiltedCards';
import MetricsFeatureCards from '@/components/sections/metrics/MetricsFeatureCards';
import TeamListCards from '@/components/sections/team/TeamListCards';
import TestimonialOverlayCards from '@/components/sections/testimonial/TestimonialOverlayCards';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
// AUTO-GENERATED shell by per-section-migrate.
// Section bodies live in the sibling sections/ folder (one file per section).
// Edit those section files directly. Non-block content (wrappers,
// non-inlinable sections) is preserved inline; extracted section blocks
// become component refs.
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 TeamSection from './HomePage/sections/Team';
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">
<HeroTiltedCards
tag="Since 1985"
title="Baking warmth into every loaf."
description="Authentic, handcrafted breads and pastries made with organic ingredients daily in our kitchen."
primaryButton={{
text: "See Menu", href: "#products"}}
secondaryButton={{
text: "Our Story", href: "#about"}}
items={[
{ imageSrc: "https://storage.googleapis.com/webild/users/user_39wSE8YJoGda03bkKGOyyo2rjk4/uploaded-1781466517590-kavaf4h5.png" },
{ imageSrc: "https://storage.googleapis.com/webild/users/user_39wSE8YJoGda03bkKGOyyo2rjk4/uploaded-1781466517590-kavaf4h5.png" },
{ imageSrc: "https://storage.googleapis.com/webild/users/user_39wSE8YJoGda03bkKGOyyo2rjk4/uploaded-1781466517590-kavaf4h5.png" },
{ imageSrc: "https://storage.googleapis.com/webild/users/user_39wSE8YJoGda03bkKGOyyo2rjk4/uploaded-1781466517590-kavaf4h5.png" },
{ imageSrc: "https://storage.googleapis.com/webild/users/user_39wSE8YJoGda03bkKGOyyo2rjk4/uploaded-1781466517590-kavaf4h5.png" },
]}
textAnimation="fade-blur"
/>
</SectionErrorBoundary>
</div>
<>
<HeroSection />
<div id="about" data-section="about">
<SectionErrorBoundary name="about">
<AboutMediaOverlay
tag="Our Heritage"
title="Handmade with love."
description="From our heritage starters to local flour, we honor traditional techniques to bring you the best quality baked goods every morning."
primaryButton={{
text: "Visit Us", href: "#contact"}}
imageSrc="https://storage.googleapis.com/webild/users/user_39wSE8YJoGda03bkKGOyyo2rjk4/uploaded-1781466517590-kavaf4h5.png"
textAnimation="slide-up"
/>
</SectionErrorBoundary>
</div>
<AboutSection />
<div id="products" data-section="products">
<SectionErrorBoundary name="products">
<FeaturesRevealCardsBento
tag="Daily Freshness"
title="From Our Oven"
description="Discover our signature range of artisanal products crafted to perfection."
items={[
{
title: "Sourdough", description: "Classic 24-hour fermented rustic loaf.", href: "#", imageSrc: "https://storage.googleapis.com/webild/users/user_39wSE8YJoGda03bkKGOyyo2rjk4/uploaded-1781466517590-kavaf4h5.png"},
{
title: "Croissants", description: "Buttery, flaky, and golden perfection.", href: "#", imageSrc: "https://storage.googleapis.com/webild/users/user_39wSE8YJoGda03bkKGOyyo2rjk4/uploaded-1781466517590-kavaf4h5.png"},
{
title: "Muffins", description: "Fresh berries and organic flour mix.", href: "#", imageSrc: "https://storage.googleapis.com/webild/users/user_39wSE8YJoGda03bkKGOyyo2rjk4/uploaded-1781466517590-kavaf4h5.png"},
{
title: "Cookies", description: "Loaded with Belgian dark chocolate.", href: "#", imageSrc: "https://storage.googleapis.com/webild/users/user_39wSE8YJoGda03bkKGOyyo2rjk4/uploaded-1781466517590-kavaf4h5.png"},
{
title: "Cinnamon Rolls", description: "Warm, glazed, and decadently spiced.", href: "#", imageSrc: "https://storage.googleapis.com/webild/users/user_39wSE8YJoGda03bkKGOyyo2rjk4/uploaded-1781466517590-kavaf4h5.png"},
{
title: "Danishes", description: "Seasonal fruit and custard delight.", href: "#", imageSrc: "https://storage.googleapis.com/webild/users/user_39wSE8YJoGda03bkKGOyyo2rjk4/uploaded-1781466517590-kavaf4h5.png"},
{
title: "Baguettes", description: "Crispy crust with airy light crumb.", href: "#", imageSrc: "https://storage.googleapis.com/webild/users/user_39wSE8YJoGda03bkKGOyyo2rjk4/uploaded-1781466517590-kavaf4h5.png"},
]}
textAnimation="fade"
/>
</SectionErrorBoundary>
</div>
<ProductsSection />
<div id="team" data-section="team">
<SectionErrorBoundary name="team">
<TeamListCards
tag="Meet the Artists"
title="The Hands Behind"
description="Our team of dedicated bakers and pastry chefs ensuring every morning starts fresh."
groups={[
{
title: "Bakery Leads", members: [
{
name: "Elena Rossi", role: "Head Baker", detail: "Master of heritage sourdough techniques.", imageSrc: "https://storage.googleapis.com/webild/users/user_39wSE8YJoGda03bkKGOyyo2rjk4/uploaded-1781466517590-kavaf4h5.png"},
{
name: "Marcello V.", role: "Pastry Chef", detail: "Specializing in refined French patisserie.", imageSrc: "https://storage.googleapis.com/webild/users/user_39wSE8YJoGda03bkKGOyyo2rjk4/uploaded-1781466517590-kavaf4h5.png"},
{
name: "Sarah Jenkins", role: "Operations Manager", detail: "Ensuring the heart of the shop runs smooth.", imageSrc: "https://storage.googleapis.com/webild/users/user_39wSE8YJoGda03bkKGOyyo2rjk4/uploaded-1781466517590-kavaf4h5.png"},
],
},
]}
textAnimation="slide-up"
/>
</SectionErrorBoundary>
</div>
<TeamSection />
<div id="testimonials" data-section="testimonials">
<SectionErrorBoundary name="testimonials">
<TestimonialOverlayCards
tag="Customer Joy"
title="Loved by locals"
description="Hear what our regulars say about their morning favorites."
testimonials={[
{
name: "Maria C.", role: "Local Teacher", company: "St. Paul School", rating: 5,
imageSrc: "https://storage.googleapis.com/webild/users/user_39wSE8YJoGda03bkKGOyyo2rjk4/uploaded-1781466517590-kavaf4h5.png"},
{
name: "James B.", role: "Artist", company: "Independent", rating: 5,
imageSrc: "https://storage.googleapis.com/webild/users/user_39wSE8YJoGda03bkKGOyyo2rjk4/uploaded-1781466517590-kavaf4h5.png"},
{
name: "Anna K.", role: "Customer", company: "Neighborhood", rating: 5,
imageSrc: "https://storage.googleapis.com/webild/users/user_39wSE8YJoGda03bkKGOyyo2rjk4/uploaded-1781466517590-kavaf4h5.png"},
{
name: "David W.", role: "Professional", company: "TechDesk", rating: 5,
imageSrc: "https://storage.googleapis.com/webild/users/user_39wSE8YJoGda03bkKGOyyo2rjk4/uploaded-1781466517590-kavaf4h5.png"},
{
name: "Lisa M.", role: "Regular", company: "Creative Hub", rating: 5,
imageSrc: "https://storage.googleapis.com/webild/users/user_39wSE8YJoGda03bkKGOyyo2rjk4/uploaded-1781466517590-kavaf4h5.png"},
]}
textAnimation="fade-blur"
/>
</SectionErrorBoundary>
</div>
<TestimonialsSection />
<div id="metrics" data-section="metrics">
<SectionErrorBoundary name="metrics">
<MetricsFeatureCards
tag="Our Impact"
title="Bakery in Numbers"
description="Dedication to tradition leads to these daily results."
metrics={[
{
value: "120+", title: "Loaves Baked Daily", features: [
"Organic Flour", "Zero Preservatives"],
},
{
value: "15+", title: "Unique Pastries", features: [
"Seasonal Fruits", "Local Dairy"],
},
{
value: "500+", title: "Happy Neighbors", features: [
"Early Bird Special", "Daily Smiles"],
},
]}
textAnimation="slide-up"
/>
</SectionErrorBoundary>
</div>
<MetricsSection />
<div id="faq" data-section="faq">
<SectionErrorBoundary name="faq">
<FaqTwoColumn
tag="Common Queries"
title="Need Information?"
description="Answers to our most common bakery inquiries."
items={[
{
question: "Are your goods organic?", answer: "Yes, we prioritize organic flour and seasonal fruits."},
{
question: "Can I pre-order?", answer: "Absolutely! Reach out via phone or email for large orders."},
{
question: "Do you offer wholesale?", answer: "Yes, we work with local cafes and restaurants."},
{
question: "What are your hours?", answer: "We are open 6AM to 6PM daily."},
]}
textAnimation="fade"
/>
</SectionErrorBoundary>
</div>
<FaqSection />
<div id="contact" data-section="contact">
<SectionErrorBoundary name="contact">
<ContactCta
tag="Get in Touch"
text="Have a large catering request or just want to pre-order? Let's connect."
primaryButton={{
text: "Contact Us", href: "mailto:orders@artisana.com"}}
secondaryButton={{
text: "Call Now", href: "tel:5550102030"}}
textAnimation="fade-blur"
/>
</SectionErrorBoundary>
</div>
<ContactSection />
</>
);
}

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 "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 Heritsdfasdfasdfasdfasdfage"
title="Handmasdfasdfasdfasdfade with love."
description="From our heritage starters to local flour, we honor traditional techniques to bring you the best qasdfasdfasdfasdfasdfuality baked goods every morning."
primaryButton={{
text: "sdfasdfasdfasdfasdfsdfasdfasdfasdfasdfVisit Us", href: "#contact"}}
imageSrc="https://storage.googleapis.com/webild/users/user_39wSE8YJoGda03bkKGOyyo2rjk4/uploaded-1781466517590-kavaf4h5.png?_wi=2"
textAnimation="slide-up"
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,71 @@
/* eslint-disable */
// @ts-nocheck — generated by catalog-eject; runtime-correct but TS strict-mode false-positives on inlined catalog body
import ScrollReveal from "@/components/ui/ScrollReveal";
import TextAnimation from "@/components/ui/TextAnimation";
import Button from "@/components/ui/Button";
const primaryButton = {
text: "Contact Us",
href: "mailto:orders@artisana.com"
};
const secondaryButton = {
text: "Call Now",
href: "tel:5550102030"
};
const ContactInline = () => {
return (
<section aria-label="Contact section" className="py-20">
<div className="w-content-width mx-auto">
<ScrollReveal variant="fade-blur">
<div className="grid grid-cols-1 lg:grid-cols-2 gap-8 lg:gap-12 items-stretch">
<div className="flex flex-col items-start gap-6 py-12 px-8 rounded card justify-center">
<div className="px-3 py-1 mb-1 text-sm bg-background rounded w-fit">
<p>{"Visit Us"}</p>
</div>
<TextAnimation
text={"Come say hi and smell the fresh bread."}
variant={"fade-blur"}
gradientText={true}
tag="h2"
className="text-4xl md:text-5xl leading-[1.15] font-semibold text-left text-balance"
/>
<div className="flex flex-col gap-4 text-accent text-lg mt-4">
<p><strong className="text-foreground">Address:</strong> 123 Baker Street, Artisan District, NY 10001</p>
<p><strong className="text-foreground">Hours:</strong> Tue - Sun: 7:00 AM - 4:00 PM</p>
</div>
<div className="flex flex-wrap justify-start gap-3 mt-4">
<Button text={primaryButton.text} href={primaryButton.href} variant="primary" />
<Button text={secondaryButton.text} href={secondaryButton.href} variant="secondary" animationDelay={0.1} />
</div>
</div>
<div className="h-[400px] lg:h-auto min-h-[400px] rounded card overflow-hidden relative">
<iframe
src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d3022.617548294529!2d-73.9878239234699!3d40.7484404713875!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x89c259a9b3117469%3A0xd134e199a405a163!2sEmpire%20State%20Building!5e0!3m2!1sen!2sus!4v1709664531123!5m2!1sen!2sus"
width="100%"
height="100%"
style={{ border: 0 }}
allowFullScreen={true}
loading="lazy"
referrerPolicy="no-referrer-when-downgrade"
className="absolute inset-0 w-full h-full grayscale opacity-80 hover:grayscale-0 hover:opacity-100 transition-all duration-500"
title="Bakery Location"
></iframe>
</div>
</div>
</ScrollReveal>
</div>
</section>
);
};
export default function ContactSection() {
return (
<div data-webild-section="contact" data-section="contact" id="contact">
<ContactInline />
</div>
);
}

View File

@@ -0,0 +1,31 @@
// 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 FaqTwoColumn from '@/components/sections/faq/FaqTwoColumn';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function FaqSection(): React.JSX.Element {
return (
<div id="faq" data-section="faq">
<SectionErrorBoundary name="faq">
<FaqTwoColumn
tag="Common Queries"
title="Need Information?"
description="Answers to our most common bakery inquiries."
items={[
{
question: "Are your goods organic?", answer: "Yes, we prioritize organic flour and seasonal fruits."},
{
question: "Can I pre-order?", answer: "Absolutely! Reach out via phone or email for large orders."},
{
question: "Do you offer wholesale?", answer: "Yes, we work with local cafes and restaurants."},
{
question: "What are your hours?", answer: "We are open 6AM to 6PM daily."},
]}
textAnimation="fade"
/>
</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 "hero" section.
import React from 'react';
import HeroTiltedCards from '@/components/sections/hero/HeroTiltedCards';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function HeroSection(): React.JSX.Element {
return (
<div id="hero" data-section="hero">
<SectionErrorBoundary name="hero">
<HeroTiltedCards
tag="Sinceasdfasdfasdfasdf 1985"
title="Baking warmth iasdfasdfasdfnto every loaf."
description="Authentic, handcrafted breads and pastrieasdfasdfasdfasds made with organic ingredients daily in our kitchen."
primaryButton={{
text: "asdfasdfasdfasdfasdfasdfasdfasdfSee Menu", href: "#products"}}
secondaryButton={{
text: "asdfasdfasdfasdasdfasdfasdfasdOur Story", href: "#about"}}
items={[
{ imageSrc: "https://storage.googleapis.com/webild/users/user_39wSE8YJoGda03bkKGOyyo2rjk4/uploaded-1781466517590-kavaf4h5.png?_wi=3" },
{ imageSrc: "https://storage.googleapis.com/webild/users/user_39wSE8YJoGda03bkKGOyyo2rjk4/uploaded-1781466517590-kavaf4h5.png?_wi=4" },
{ imageSrc: "https://storage.googleapis.com/webild/users/user_39wSE8YJoGda03bkKGOyyo2rjk4/uploaded-1781466517590-kavaf4h5.png?_wi=5" },
{ imageSrc: "https://storage.googleapis.com/webild/users/user_39wSE8YJoGda03bkKGOyyo2rjk4/uploaded-1781466517590-kavaf4h5.png?_wi=6" },
{ imageSrc: "https://storage.googleapis.com/webild/users/user_39wSE8YJoGda03bkKGOyyo2rjk4/uploaded-1781466517590-kavaf4h5.png?_wi=7" },
]}
textAnimation="fade-blur"
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,35 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "metrics" section.
import React from 'react';
import MetricsFeatureCards from '@/components/sections/metrics/MetricsFeatureCards';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function MetricsSection(): React.JSX.Element {
return (
<div id="metrics" data-section="metrics">
<SectionErrorBoundary name="metrics">
<MetricsFeatureCards
tag="Our Impact"
title="Bakery in Numbers"
description="Dedication to tradition leads to these daily results."
metrics={[
{
value: "120+", title: "Loaves Baked Daily", features: [
"Organic Flour", "Zero Preservatives"],
},
{
value: "15+", title: "Unique Pastries", features: [
"Seasonal Fruits", "Local Dairy"],
},
{
value: "500+", title: "Happy Neighbors", features: [
"Early Bird Special", "Daily Smiles"],
},
]}
textAnimation="slide-up"
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,37 @@
// 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="Daily Fresasdfasdfasdfasdfasdhness"
title="From Ouasdfasdfasdfasdfasdr Oven"
description="Discover our signature range of artisaasdfasdfasdfasdfasdfasdfnal products crafted to perfection."
items={[
{
title: "Sourdough", description: "Classic 24-hour fermented rustic loaf.", href: "#", imageSrc: "https://storage.googleapis.com/webild/users/user_39wSE8YJoGda03bkKGOyyo2rjk4/uploaded-1781466517590-kavaf4h5.png?_wi=8"},
{
title: "Croissants", description: "Buttery, flaky, and golden perfection.", href: "#", imageSrc: "https://storage.googleapis.com/webild/users/user_39wSE8YJoGda03bkKGOyyo2rjk4/uploaded-1781466517590-kavaf4h5.png?_wi=9"},
{
title: "Muffins", description: "Fresh berries and organic flour mix.", href: "#", imageSrc: "https://storage.googleapis.com/webild/users/user_39wSE8YJoGda03bkKGOyyo2rjk4/uploaded-1781466517590-kavaf4h5.png?_wi=10"},
{
title: "Cookies", description: "Loaded with Belgian dark chocolate.", href: "#", imageSrc: "https://storage.googleapis.com/webild/users/user_39wSE8YJoGda03bkKGOyyo2rjk4/uploaded-1781466517590-kavaf4h5.png?_wi=11"},
{
title: "Cinnamon Rolls", description: "Warm, glazed, and decadently spiced.", href: "#", imageSrc: "https://storage.googleapis.com/webild/users/user_39wSE8YJoGda03bkKGOyyo2rjk4/uploaded-1781466517590-kavaf4h5.png?_wi=12"},
{
title: "Danishes", description: "Seasonal fruit and custard delight.", href: "#", imageSrc: "https://storage.googleapis.com/webild/users/user_39wSE8YJoGda03bkKGOyyo2rjk4/uploaded-1781466517590-kavaf4h5.png?_wi=13"},
{
title: "Baguettes", description: "Crispy crust with airy light crumb.", href: "#", imageSrc: "https://storage.googleapis.com/webild/users/user_39wSE8YJoGda03bkKGOyyo2rjk4/uploaded-1781466517590-kavaf4h5.png?_wi=14"},
]}
textAnimation="fade"
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,33 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "team" section.
import React from 'react';
import TeamListCards from '@/components/sections/team/TeamListCards';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function TeamSection(): React.JSX.Element {
return (
<div id="team" data-section="team">
<SectionErrorBoundary name="team">
<TeamListCards
tag="Meet the asdfasfasdfasdfasdArtists"
title="The Handasdfasdfasdfasdfas Behind"
description="Our team of dedicated bakers and pastry asdfasdfasdfasdfasdfaschefs ensuring every morning starts fresh."
groups={[
{
title: "Bakery Leads", members: [
{
name: "Elena Rossi", role: "Head Baker", detail: "Master of heritage sourdough techniques.", imageSrc: "https://storage.googleapis.com/webild/users/user_39wSE8YJoGda03bkKGOyyo2rjk4/uploaded-1781466517590-kavaf4h5.png?_wi=15"},
{
name: "Marcello V.", role: "Pastry Chef", detail: "Specializing in refined French patisserie.", imageSrc: "https://storage.googleapis.com/webild/users/user_39wSE8YJoGda03bkKGOyyo2rjk4/uploaded-1781466517590-kavaf4h5.png?_wi=16"},
{
name: "Sarah Jenkins", role: "Operations Manager", detail: "Ensuring the heart of the shop runs smooth.", imageSrc: "https://storage.googleapis.com/webild/users/user_39wSE8YJoGda03bkKGOyyo2rjk4/uploaded-1781466517590-kavaf4h5.png?_wi=17"},
],
},
]}
textAnimation="slide-up"
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,38 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "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="Customer Joy"
title="Loved by locals"
description="Hear what our regulars say about their morning favorites."
testimonials={[
{
name: "Maria C.", role: "Local Teacher", company: "St. Paul School", rating: 5,
imageSrc: "https://storage.googleapis.com/webild/users/user_39wSE8YJoGda03bkKGOyyo2rjk4/uploaded-1781466517590-kavaf4h5.png?_wi=18"},
{
name: "James B.", role: "Artist", company: "Independent", rating: 5,
imageSrc: "https://storage.googleapis.com/webild/users/user_39wSE8YJoGda03bkKGOyyo2rjk4/uploaded-1781466517590-kavaf4h5.png?_wi=19"},
{
name: "Anna K.", role: "Customer", company: "Neighborhood", rating: 5,
imageSrc: "https://storage.googleapis.com/webild/users/user_39wSE8YJoGda03bkKGOyyo2rjk4/uploaded-1781466517590-kavaf4h5.png?_wi=20"},
{
name: "David W.", role: "Professional", company: "TechDesk", rating: 5,
imageSrc: "https://storage.googleapis.com/webild/users/user_39wSE8YJoGda03bkKGOyyo2rjk4/uploaded-1781466517590-kavaf4h5.png?_wi=21"},
{
name: "Lisa M.", role: "Regular", company: "Creative Hub", rating: 5,
imageSrc: "https://storage.googleapis.com/webild/users/user_39wSE8YJoGda03bkKGOyyo2rjk4/uploaded-1781466517590-kavaf4h5.png?_wi=22"},
]}
textAnimation="fade-blur"
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,38 @@
import LoopCarousel from '@/components/ui/LoopCarousel';
import { Award, ShieldCheck, Star, CheckCircle, Leaf, BadgeCheck } from 'lucide-react';
export default function TrustedBySection() {
const partners = [
{ name: "Certified Organic", icon: Leaf },
{ name: "Local Farmers Market", icon: Star },
{ name: "City Coffee Roasters", icon: Award },
{ name: "Heritage Mills", icon: ShieldCheck },
{ name: "Artisan Guild", icon: BadgeCheck },
{ name: "Quality Assured", icon: CheckCircle }
];
return (
<section data-webild-section="trusted-by" id="trusted-by" className="w-full py-12 bg-background border-b border-foreground/5">
<div className="w-content-width mx-auto flex flex-col items-center">
<p className="text-sm font-medium text-accent mb-8 uppercase tracking-widest">Trusted Partners & Certifications</p>
<div className="w-full overflow-hidden">
<LoopCarousel>
<div className="flex items-center gap-16 px-8">
{partners.map((partner, index) => {
const Icon = partner.icon;
return (
<div key={index} className="flex items-center gap-3 text-foreground/40">
<Icon className="w-8 h-8" />
<span className="text-xl font-bold whitespace-nowrap">
{partner.name}
</span>
</div>
);
})}
</div>
</LoopCarousel>
</div>
</div>
</section>
);
}