Merge version_2_1781437252817 into main #2

Merged
bender merged 1 commits from version_2_1781437252817 into main 2026-06-14 11:42:00 +00:00
10 changed files with 261 additions and 160 deletions

View File

@@ -35,7 +35,7 @@ export default function Layout() {
<SiteBackgroundSlot />
<SectionErrorBoundary name="navbar">
<NavbarFloatingLogo
logo="Black Toque"
logo="Black Toque Patisserie"
logoImageSrc="http://img.b2bpic.net/free-vector/retro-bakery-logo-concept_23-2148496816.jpg"
ctaButton={{
text: "Order Online", href: "#contact"}}

View File

@@ -1,171 +1,36 @@
import AboutTestimonial from '@/components/sections/about/AboutTestimonial';
import ContactCta from '@/components/sections/contact/ContactCta';
import FaqSplitMedia from '@/components/sections/faq/FaqSplitMedia';
import FeaturesArrowCards from '@/components/sections/features/FeaturesArrowCards';
import FeaturesImageBento from '@/components/sections/features/FeaturesImageBento';
import HeroBillboardCarousel from '@/components/sections/hero/HeroBillboardCarousel';
import SocialProofMarquee from '@/components/sections/social-proof/SocialProofMarquee';
import TestimonialColumnMarqueeCards from '@/components/sections/testimonial/TestimonialColumnMarqueeCards';
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 TestimonialsSection from './HomePage/sections/Testimonials';
import SocialSection from './HomePage/sections/Social';
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">
<HeroBillboardCarousel
tag="Artisanal Perfection"
title="Black Toque Patisserie"
description="Experience the delicate artistry of authentic French pastry, crafted daily with premium ingredients and passion."
primaryButton={{
text: "View Menu", href: "#products"}}
secondaryButton={{
text: "Contact Us", href: "#contact"}}
items={[
{
imageSrc: "http://img.b2bpic.net/free-photo/half-shot-delicious-mini-cake-with-fruits-green-plate-mixed-color-background_140725-140193.jpg"},
{
imageSrc: "http://img.b2bpic.net/free-photo/selective-focus-shot-delicious-poppy-seed-rolls-with-sugar-glaze-basket_181624-44761.jpg"},
{
imageSrc: "http://img.b2bpic.net/free-photo/closeup-photo-huge-variety-desserts-buffet_627829-6133.jpg"},
{
imageSrc: "http://img.b2bpic.net/free-photo/slice-coconut-cake-with-nuts-berries-served-with-cup-red-drink_114579-38703.jpg"},
{
imageSrc: "http://img.b2bpic.net/free-photo/smiling-young-woman-choosing-cake-standing-front-glass-cabinet_23-2148027959.jpg"},
{
imageSrc: "http://img.b2bpic.net/free-photo/flat-lay-tasty-dessert-arrangement_23-2149022020.jpg"},
]}
/>
</SectionErrorBoundary>
</div>
<>
<HeroSection />
<div id="about" data-section="about">
<SectionErrorBoundary name="about">
<AboutTestimonial
tag="Our Story"
quote="Every pastry tells a story of tradition, refined technique, and the finest local ingredients we can find."
author="Chef Julianne"
role="Founder & Head Pastry Chef"
imageSrc="http://img.b2bpic.net/free-photo/front-view-children-eating-cookies-together-christmas-day_23-2148738678.jpg"
/>
</SectionErrorBoundary>
</div>
<AboutSection />
<div id="features" data-section="features">
<SectionErrorBoundary name="features">
<FeaturesArrowCards
tag="The Black Toque Difference"
title="Why Our Pastries Are Different"
description="We believe in slow-baking processes and heritage recipes that honor the French craft."
items={[
{
title: "100% Organic Butter", tags: [
"Premium", "Quality"],
imageSrc: "http://img.b2bpic.net/free-photo/espresso-coffee-braided-with-pecans-maple-syrup-dark-table-sweet-pastries-breakfast-hotel-view-from_166373-2512.jpg"},
{
title: "Heritage Grains", tags: [
"Traditional", "Healthy"],
imageSrc: "http://img.b2bpic.net/free-photo/baguettes-market-france_1147-553.jpg"},
{
title: "Fresh Daily Production", tags: [
"Fresh", "Artisan"],
imageSrc: "http://img.b2bpic.net/free-photo/glass-showcase-pastry-shop-with-variety-fresh-cakes-pastries-popular-sweet-desserts-offered-sale_639032-1341.jpg"},
]}
/>
</SectionErrorBoundary>
</div>
<FeaturesSection />
<div id="products" data-section="products">
<SectionErrorBoundary name="products">
<FeaturesImageBento
tag="Our Menu"
title="Handcrafted Delicacies"
description="Explore our curated selection of signature French pastries."
items={[
{
title: "Macaron Selection", description: "Classic French almond cookies.", imageSrc: "http://img.b2bpic.net/free-photo/top-view-chocolate-eclairs-rectangle-plate-dark-wooden-surface_140725-90867.jpg"},
{
title: "Buttery Croissants", description: "Flaky, golden goodness.", imageSrc: "http://img.b2bpic.net/free-photo/top-view-homemade-delicious-jam-croissants_23-2148525206.jpg"},
{
title: "Seasonal Fruit Tarts", description: "Fresh, locally sourced fruits.", imageSrc: "http://img.b2bpic.net/free-photo/view-freshly-baked-soft-cake-with-fruits-flowers-mixed-color-table_140725-86509.jpg"},
{
title: "Chocolate Ganache", description: "Rich, decadent dark chocolate.", imageSrc: "http://img.b2bpic.net/free-photo/fresh-homemade-cookies-wooden-board_114579-61372.jpg"},
{
title: "Classic Madeleines", description: "Soft, zesty sponge cakes.", imageSrc: "http://img.b2bpic.net/free-photo/bowl-flaky-cookies-decorative-branches-marble-background_114579-25775.jpg"},
{
title: "Signature Millefeuille", description: "Layered puff pastry delight.", imageSrc: "http://img.b2bpic.net/free-photo/beautiful-puff-pastry-cake-decorated-with-berries_1262-19975.jpg"},
{
title: "Delicate Profiteroles", description: "Creamy puffs with chocolate.", imageSrc: "http://img.b2bpic.net/free-photo/caramel-chocolate-sauce-drizzling-dessert_84443-94462.jpg"},
]}
/>
</SectionErrorBoundary>
</div>
<ProductsSection />
<div id="testimonials" data-section="testimonials">
<SectionErrorBoundary name="testimonials">
<TestimonialColumnMarqueeCards
tag="Words from Lovers"
title="What People Say About Us"
description="Join our community of pastry enthusiasts who appreciate the craft."
testimonials={[
{
name: "Claire R.", role: "Food Critic", quote: "The best croissants in the city, bar none.", imageSrc: "http://img.b2bpic.net/free-photo/curly-girl-with-beatiful-smile-keeping-cup-coffee-looking-camera_7502-9179.jpg"},
{
name: "Mark D.", role: "Regular", quote: "A daily ritual I simply cannot skip.", imageSrc: "http://img.b2bpic.net/free-photo/girl-with-cheesecake_1303-3947.jpg"},
{
name: "Elena S.", role: "Wedding Planner", quote: "Stunning presentation and even better taste.", imageSrc: "http://img.b2bpic.net/free-photo/portrait-cheerful-dark-skinned-female-with-frizzy-hair-blogs-networks-smart-phone-has-dinner-break-eats-exotic-dish-cafe-connected-high-speed-internet-woman-sends-messages_273609-2188.jpg"},
{
name: "Jason W.", role: "Food Blogger", quote: "Authentic French quality in every bite.", imageSrc: "http://img.b2bpic.net/free-photo/woman-showing-her-perfect-straight-white-teeth_114579-58837.jpg"},
{
name: "Sarah P.", role: "Customer", quote: "Pure perfection. I'm hooked!", imageSrc: "http://img.b2bpic.net/free-photo/happiness-leisure-lifestyle-concept-smiling-african-american-female-recreates-cafe-restaurant-eats-delicious-dessert-drinks-cocktail-happy-have-pleasant-conversation-with-interlocutor_273609-2194.jpg"},
]}
/>
</SectionErrorBoundary>
</div>
<TestimonialsSection />
<div id="social" data-section="social">
<SectionErrorBoundary name="social">
<SocialProofMarquee
tag="Recognized Excellence"
title="Featured In"
description="Our work has been recognized by top culinary publications and experts."
names={[
"Food & Wine", "The Daily Eater", "Artisan Monthly", "Patisserie Guild", "City Tastes", "Culinary Excellence", "The Local Foodie"]}
/>
</SectionErrorBoundary>
</div>
<SocialSection />
<div id="faq" data-section="faq">
<SectionErrorBoundary name="faq">
<FaqSplitMedia
tag="Common Questions"
title="We're Here to Help"
description="Everything you need to know about our patisserie and ordering."
items={[
{
question: "Do you offer catering?", answer: "Yes, we specialize in high-end catering for weddings and corporate events."},
{
question: "Are ingredients organic?", answer: "We prioritize organic and locally sourced ingredients whenever possible."},
{
question: "Can I place custom orders?", answer: "Custom orders require 48 hours notice; please contact us to discuss your needs."},
]}
imageSrc="http://img.b2bpic.net/free-photo/sweet-homemade-layered-honey-cake-with-spices-nuts_114579-29744.jpg"
/>
</SectionErrorBoundary>
</div>
<FaqSection />
<div id="contact" data-section="contact">
<SectionErrorBoundary name="contact">
<ContactCta
tag="Get In Touch"
text="Ready to taste the difference? Visit our boutique or place an order today."
primaryButton={{
text: "View Location", href: "#"}}
secondaryButton={{
text: "Send Message", href: "mailto:hello@blacktoque.com"}}
/>
</SectionErrorBoundary>
</div>
<ContactSection />
</>
);
}

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 "about" section.
import React from 'react';
import AboutTestimonial from '@/components/sections/about/AboutTestimonial';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function AboutSection(): React.JSX.Element {
return (
<div id="about" data-section="about">
<SectionErrorBoundary name="about">
<AboutTestimonial
tag="Our Story"
quote="Every pastry tells a story of tradition, refined technique, and the finest local ingredients we can find."
author="Chef Julianne"
role="Founder & Head Pastry Chef"
imageSrc="http://img.b2bpic.net/free-photo/front-view-children-eating-cookies-together-christmas-day_23-2148738678.jpg"
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,23 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "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="Get In Touch"
text="Ready to taste the difference? Visit our boutique or place an order today."
primaryButton={{
text: "View Location", href: "#"}}
secondaryButton={{
text: "Send Message", href: "mailto:hello@blacktoque.com"}}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,29 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "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="Common Questions"
title="We're Here to Help"
description="Everything you need to know about our patisserie and ordering."
items={[
{
question: "Do you offer catering?", answer: "Yes, we specialize in high-end catering for weddings and corporate events."},
{
question: "Are ingredients organic?", answer: "We prioritize organic and locally sourced ingredients whenever possible."},
{
question: "Can I place custom orders?", answer: "Custom orders require 48 hours notice; please contact us to discuss your needs."},
]}
imageSrc="http://img.b2bpic.net/free-photo/sweet-homemade-layered-honey-cake-with-spices-nuts_114579-29744.jpg"
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,34 @@
// 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 FeaturesArrowCards from '@/components/sections/features/FeaturesArrowCards';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function FeaturesSection(): React.JSX.Element {
return (
<div id="features" data-section="features">
<SectionErrorBoundary name="features">
<FeaturesArrowCards
tag="The Black Toque Difference"
title="Why Our Pastries Are Different"
description="We believe in slow-baking processes and heritage recipes that honor the French craft."
items={[
{
title: "100% Organic Butter", tags: [
"Premium", "Quality"],
imageSrc: "http://img.b2bpic.net/free-photo/espresso-coffee-braided-with-pecans-maple-syrup-dark-table-sweet-pastries-breakfast-hotel-view-from_166373-2512.jpg"},
{
title: "Heritage Grains", tags: [
"Traditional", "Healthy"],
imageSrc: "http://img.b2bpic.net/free-photo/baguettes-market-france_1147-553.jpg"},
{
title: "Fresh Daily Production", tags: [
"Fresh", "Artisan"],
imageSrc: "http://img.b2bpic.net/free-photo/glass-showcase-pastry-shop-with-variety-fresh-cakes-pastries-popular-sweet-desserts-offered-sale_639032-1341.jpg"},
]}
/>
</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 "hero" section.
import React from 'react';
import HeroBillboardCarousel from '@/components/sections/hero/HeroBillboardCarousel';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function HeroSection(): React.JSX.Element {
return (
<div id="hero" data-section="hero">
<SectionErrorBoundary name="hero">
<HeroBillboardCarousel
tag="Artisanal Perfection"
title="Black Toque Patisserie"
description="Experience the delicate artistry of authentic French pastry, crafted daily with premium ingredients and passion."
primaryButton={{
text: "View Menu", href: "#products"}}
secondaryButton={{
text: "Contact Us", href: "#contact"}}
items={[
{
imageSrc: "http://img.b2bpic.net/free-photo/half-shot-delicious-mini-cake-with-fruits-green-plate-mixed-color-background_140725-140193.jpg"},
{
imageSrc: "http://img.b2bpic.net/free-photo/selective-focus-shot-delicious-poppy-seed-rolls-with-sugar-glaze-basket_181624-44761.jpg"},
{
imageSrc: "http://img.b2bpic.net/free-photo/closeup-photo-huge-variety-desserts-buffet_627829-6133.jpg"},
{
imageSrc: "http://img.b2bpic.net/free-photo/slice-coconut-cake-with-nuts-berries-served-with-cup-red-drink_114579-38703.jpg"},
{
imageSrc: "http://img.b2bpic.net/free-photo/smiling-young-woman-choosing-cake-standing-front-glass-cabinet_23-2148027959.jpg"},
{
imageSrc: "http://img.b2bpic.net/free-photo/flat-lay-tasty-dessert-arrangement_23-2149022020.jpg"},
]}
/>
</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 Menu"
title="Handcrafted Delicacies"
description="Explore our curated selection of signature French pastries."
items={[
{
title: "Macaron Selection", description: "Classic French almond cookies.", imageSrc: "http://img.b2bpic.net/free-photo/top-view-chocolate-eclairs-rectangle-plate-dark-wooden-surface_140725-90867.jpg"},
{
title: "Buttery Croissants", description: "Flaky, golden goodness.", imageSrc: "http://img.b2bpic.net/free-photo/top-view-homemade-delicious-jam-croissants_23-2148525206.jpg"},
{
title: "Seasonal Fruit Tarts", description: "Fresh, locally sourced fruits.", imageSrc: "http://img.b2bpic.net/free-photo/view-freshly-baked-soft-cake-with-fruits-flowers-mixed-color-table_140725-86509.jpg"},
{
title: "Chocolate Ganache", description: "Rich, decadent dark chocolate.", imageSrc: "http://img.b2bpic.net/free-photo/fresh-homemade-cookies-wooden-board_114579-61372.jpg"},
{
title: "Classic Madeleines", description: "Soft, zesty sponge cakes.", imageSrc: "http://img.b2bpic.net/free-photo/bowl-flaky-cookies-decorative-branches-marble-background_114579-25775.jpg"},
{
title: "Signature Millefeuille", description: "Layered puff pastry delight.", imageSrc: "http://img.b2bpic.net/free-photo/beautiful-puff-pastry-cake-decorated-with-berries_1262-19975.jpg"},
{
title: "Delicate Profiteroles", description: "Creamy puffs with chocolate.", imageSrc: "http://img.b2bpic.net/free-photo/caramel-chocolate-sauce-drizzling-dessert_84443-94462.jpg"},
]}
/>
</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" section.
import React from 'react';
import SocialProofMarquee from '@/components/sections/social-proof/SocialProofMarquee';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function SocialSection(): React.JSX.Element {
return (
<div id="social" data-section="social">
<SectionErrorBoundary name="social">
<SocialProofMarquee
tag="Recognized Excellence"
title="Featured In"
description="Our work has been recognized by top culinary publications and experts."
names={[
"Food & Wine", "The Daily Eater", "Artisan Monthly", "Patisserie Guild", "City Tastes", "Culinary Excellence", "The Local Foodie"]}
/>
</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 "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="Words from Lovers"
title="What People Say About Us"
description="Join our community of pastry enthusiasts who appreciate the craft."
testimonials={[
{
name: "Claire R.", role: "Food Critic", quote: "The best croissants in the city, bar none.", imageSrc: "http://img.b2bpic.net/free-photo/curly-girl-with-beatiful-smile-keeping-cup-coffee-looking-camera_7502-9179.jpg"},
{
name: "Mark D.", role: "Regular", quote: "A daily ritual I simply cannot skip.", imageSrc: "http://img.b2bpic.net/free-photo/girl-with-cheesecake_1303-3947.jpg"},
{
name: "Elena S.", role: "Wedding Planner", quote: "Stunning presentation and even better taste.", imageSrc: "http://img.b2bpic.net/free-photo/portrait-cheerful-dark-skinned-female-with-frizzy-hair-blogs-networks-smart-phone-has-dinner-break-eats-exotic-dish-cafe-connected-high-speed-internet-woman-sends-messages_273609-2188.jpg"},
{
name: "Jason W.", role: "Food Blogger", quote: "Authentic French quality in every bite.", imageSrc: "http://img.b2bpic.net/free-photo/woman-showing-her-perfect-straight-white-teeth_114579-58837.jpg"},
{
name: "Sarah P.", role: "Customer", quote: "Pure perfection. I'm hooked!", imageSrc: "http://img.b2bpic.net/free-photo/happiness-leisure-lifestyle-concept-smiling-african-american-female-recreates-cafe-restaurant-eats-delicious-dessert-drinks-cocktail-happy-have-pleasant-conversation-with-interlocutor_273609-2194.jpg"},
]}
/>
</SectionErrorBoundary>
</div>
);
}