6 Commits

Author SHA1 Message Date
19a8ca0fc7 Merge version_3_1781570780765 into main
Merge version_3_1781570780765 into main
2026-06-16 00:47:57 +00:00
kudinDmitriyUp
ce35405d14 Bob AI: Add reservations booking form section 2026-06-16 00:47:17 +00:00
1877ca26d2 Merge version_2_1781570587829 into main
Merge version_2_1781570587829 into main
2026-06-16 00:43:44 +00:00
kudinDmitriyUp
7170ea50f6 Bob AI: Rewrite all content across the page to reflect the Gran Lumière brand (Franco-Me 2026-06-16 00:43:41 +00:00
d1f247ce4c Merge version_1_1781570196509 into main
Merge version_1_1781570196509 into main
2026-06-16 00:38:47 +00:00
5ead380f36 Merge version_1_1781570196509 into main
Merge version_1_1781570196509 into main
2026-06-16 00:37:58 +00:00
7 changed files with 170 additions and 83 deletions

View File

@@ -1,91 +1,29 @@
import AboutText from '@/components/sections/about/AboutText';
import FeaturesRevealCardsBento from '@/components/sections/features/FeaturesRevealCardsBento';
import HeroBillboardCarousel from '@/components/sections/hero/HeroBillboardCarousel';
import TeamProfileCards from '@/components/sections/team/TeamProfileCards';
import TestimonialMarqueeCards from '@/components/sections/testimonial/TestimonialMarqueeCards';
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 ExperienceSection from './HomePage/sections/Experience';
import ChefSection from './HomePage/sections/Chef';
import MenuSection from './HomePage/sections/Menu';
import TestimonialsSection from './HomePage/sections/Testimonials';
import ReservationsSection from './HomePage/sections/Reservations';export default function HomePage(): React.JSX.Element {
return (
<>
<div id="hero" data-section="hero">
<SectionErrorBoundary name="hero">
<HeroBillboardCarousel
tag="Gastronomic Distinction"
title="Where French and Mexican Gastronomy Meet"
description="A culinary experience designed to leave an unforgettable memory."
primaryButton={{ text: "Reserve a Table", href: "#reservations" }}
secondaryButton={{ text: "Organize an Event", href: "#events" }}
items={[
{ imageSrc: "http://img.b2bpic.net/free-photo/top-view-citrus-fruits-as-pineapple-kiwi-orange-lime-lemon-tangerine-slices-with-bread-slices-tray-jam-bowl-around-empty-plate-black-background_141793-130426.jpg" },
{ imageSrc: "http://img.b2bpic.net/free-photo/high-angle-senior-with-delicious-food_23-2150854212.jpg" },
{ imageSrc: "http://img.b2bpic.net/free-photo/romantic-couple-having-date-restaurant_23-2147736700.jpg" },
{ imageSrc: "http://img.b2bpic.net/free-photo/male-bartender-serving-cocktail-with-fruits_23-2148209397.jpg" },
{ imageSrc: "http://img.b2bpic.net/free-photo/middle-age-friends-night-having-dinner_23-2149190917.jpg" },
{ imageSrc: "http://img.b2bpic.net/free-photo/boiled-coffee-cups-sweets_140725-3711.jpg" }
]}
/>
</SectionErrorBoundary>
</div>
<>
<HeroSection />
<div id="experience" data-section="experience">
<SectionErrorBoundary name="experience">
<AboutText
title="More than a dinner, an experience. We celebrate the unique fusion of French technique and Mexican soul, curated with the finest ingredients and a romantic, personalized touch."
/>
</SectionErrorBoundary>
</div>
<ExperienceSection />
<div id="chef" data-section="chef">
<SectionErrorBoundary name="chef">
<TeamProfileCards
tag="Our Culinary Vision"
title="The Art of the Chef"
description="A journey through flavors honed across continents."
items={[
{
title: "Chef de Cuisine", description: "With over 20 years of experience across France, Switzerland, and Mexico, our chef crafts stories through each plate.", avatarSrc: "http://img.b2bpic.net/free-photo/confident-chef-wearing-uniform-posing-with-his-arms-crossed-looking-camera-restaurant-kitchen_613910-21352.jpg", imageSrc: "http://img.b2bpic.net/free-photo/woman-working-as-professional-chef_23-2151864187.jpg", buttonText: "View Story"
}
]}
/>
</SectionErrorBoundary>
</div>
<ChefSection />
<div id="menu" data-section="menu">
<SectionErrorBoundary name="menu">
<FeaturesRevealCardsBento
tag="Culinary Architecture"
title="Featured Menu"
description="Curated selection of our signature offerings."
items={[
{ title: "Velouté de Maíz", description: "Classic French technique with native Yucatecan corn.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/fried-fish-with-cream-vegetables_140725-2091.jpg" },
{ title: "Confit de Pato", description: "Duck confit paired with a savory mole reduction.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/front-view-delicious-chocolate-cake_23-2148549948.jpg" },
{ title: "Tartare del Centro", description: "Beef tartare with refined Mexican spices.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/meat-with-ginger-top-view_141793-4482.jpg" },
{ title: "Soufflé de Cacao", description: "Rich artisanal chocolate with subtle local chilies.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/elegant-dessert-presentation-with-edible-flowers_23-2151973722.jpg" },
{ title: "Pescado a la Plancha", description: "Fresh catch prepared with fine herbs.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/dark-plate-with-waffles-grapes-dark-background_23-2148340373.jpg" },
{ title: "Ceviche Gastronomique", description: "Refined seafood acidity with a hint of citrus.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/intelligence-agent-preparing-analyze-top-secret-data-storage-hard-disk_482257-113386.jpg" },
{ title: "Petit Fours", description: "A sweet conclusion with delicate local flavors.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/top-view-scoop-ice-cream-with-flowers_23-2148425550.jpg" }
]}
/>
</SectionErrorBoundary>
</div>
<MenuSection />
<div id="testimonials" data-section="testimonials">
<SectionErrorBoundary name="testimonials">
<TestimonialMarqueeCards
tag="Our Guest's Memories"
title="Every Visit Leaves a Light"
description="Discover what our guests are saying about their dining experience."
testimonials={[
{ name: "Sarah J.", role: "Food Critic", quote: "An absolute revelation in Mérida's culinary scene.", imageSrc: "http://img.b2bpic.net/free-photo/charming-brunette-black-dress-is-standing-by-her-man-who-sits-table-luxury-restaurant_613910-18639.jpg" },
{ name: "David M.", role: "Architect", quote: "The fusion of architecture and taste is unprecedented.", imageSrc: "http://img.b2bpic.net/free-photo/people-having-dinner-luxurious-restaurants_23-2151081852.jpg" },
{ name: "Elena R.", role: "Designer", quote: "A romantic evening I will treasure forever.", imageSrc: "http://img.b2bpic.net/free-photo/beautiful-couple-enjoying-meal-evening_23-2147736698.jpg" },
{ name: "Marc L.", role: "Traveler", quote: "Michelin-level standards in the heart of Yucatán.", imageSrc: "http://img.b2bpic.net/free-photo/people-cheering-with-wine-glasses-luxurious-restaurant_23-2150517422.jpg" },
{ name: "Sophie K.", role: "Gourmand", quote: "The most sophisticated dinner I've had in years.", imageSrc: "http://img.b2bpic.net/free-photo/front-view-business-woman-thinking_23-2148317340.jpg" }
]}
/>
</SectionErrorBoundary>
</div>
<TestimonialsSection />
<ReservationsSection />
</>
);
}
}

View File

@@ -0,0 +1,25 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "chef" section.
import React from 'react';
import TeamProfileCards from '@/components/sections/team/TeamProfileCards';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function ChefSection(): React.JSX.Element {
return (
<div id="chef" data-section="chef">
<SectionErrorBoundary name="chef">
<TeamProfileCards
tag="Our Culinary Vision"
title="The Art of the Chef"
description="A journey through flavors honed across continents."
items={[
{
title: "Chef de Cuisine", description: "With over 20 years of experience across France, Switzerland, and Mexico, our chef crafts stories through each plate.", avatarSrc: "http://img.b2bpic.net/free-photo/confident-chef-wearing-uniform-posing-with-his-arms-crossed-looking-camera-restaurant-kitchen_613910-21352.jpg", imageSrc: "http://img.b2bpic.net/free-photo/woman-working-as-professional-chef_23-2151864187.jpg", buttonText: "View Story"
}
]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,18 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "experience" section.
import React from 'react';
import AboutText from '@/components/sections/about/AboutText';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function ExperienceSection(): React.JSX.Element {
return (
<div id="experience" data-section="experience">
<SectionErrorBoundary name="experience">
<AboutText
title="Más que una cena, una experiencia. Celebramos la fusión única de la técnica francesa y el alma mexicana, curada con los mejores ingredientes y un toque romántico y personalizado en el corazón de Mérida."
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,30 @@
// 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="Distinción Gastronómica"
title="Donde la Gastronomía Francesa y Mexicana se Encuentran"
description="Una experiencia culinaria en Mérida, Yucatán, diseñada para dejar un recuerdo inolvidable."
primaryButton={{ text: "Reservar una Mesa", href: "#reservations" }}
secondaryButton={{ text: "Organizar un Evento", href: "#events" }}
items={[
{ imageSrc: "http://img.b2bpic.net/free-photo/top-view-citrus-fruits-as-pineapple-kiwi-orange-lime-lemon-tangerine-slices-with-bread-slices-tray-jam-bowl-around-empty-plate-black-background_141793-130426.jpg" },
{ imageSrc: "http://img.b2bpic.net/free-photo/high-angle-senior-with-delicious-food_23-2150854212.jpg" },
{ imageSrc: "http://img.b2bpic.net/free-photo/romantic-couple-having-date-restaurant_23-2147736700.jpg" },
{ imageSrc: "http://img.b2bpic.net/free-photo/male-bartender-serving-cocktail-with-fruits_23-2148209397.jpg" },
{ imageSrc: "http://img.b2bpic.net/free-photo/middle-age-friends-night-having-dinner_23-2149190917.jpg" },
{ imageSrc: "http://img.b2bpic.net/free-photo/boiled-coffee-cups-sweets_140725-3711.jpg" }
]}
/>
</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 "menu" section.
import React from 'react';
import FeaturesRevealCardsBento from '@/components/sections/features/FeaturesRevealCardsBento';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function MenuSection(): React.JSX.Element {
return (
<div id="menu" data-section="menu">
<SectionErrorBoundary name="menu">
<FeaturesRevealCardsBento
tag="Culinary Architecture"
title="Featured Menu"
description="Curated selection of our signature offerings."
items={[
{ title: "Velouté de Maíz", description: "Classic French technique with native Yucatecan corn.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/fried-fish-with-cream-vegetables_140725-2091.jpg" },
{ title: "Confit de Pato", description: "Duck confit paired with a savory mole reduction.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/front-view-delicious-chocolate-cake_23-2148549948.jpg" },
{ title: "Tartare del Centro", description: "Beef tartare with refined Mexican spices.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/meat-with-ginger-top-view_141793-4482.jpg" },
{ title: "Soufflé de Cacao", description: "Rich artisanal chocolate with subtle local chilies.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/elegant-dessert-presentation-with-edible-flowers_23-2151973722.jpg" },
{ title: "Pescado a la Plancha", description: "Fresh catch prepared with fine herbs.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/dark-plate-with-waffles-grapes-dark-background_23-2148340373.jpg" },
{ title: "Ceviche Gastronomique", description: "Refined seafood acidity with a hint of citrus.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/intelligence-agent-preparing-analyze-top-secret-data-storage-hard-disk_482257-113386.jpg" },
{ title: "Petit Fours", description: "A sweet conclusion with delicate local flavors.", href: "#", imageSrc: "http://img.b2bpic.net/free-photo/top-view-scoop-ice-cream-with-flowers_23-2148425550.jpg" }
]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,20 @@
// Created by add_section_from_catalog (ContactSplitForm).
import React from 'react';
import ContactSplitForm from '@/components/sections/contact/ContactSplitForm';
export default function ReservationsSection(): React.JSX.Element {
return (
<div data-webild-section="reservations" id="reservations">
<ContactSplitForm
textarea={{"name":"comments","rows":4,"placeholder":"Comentarios Especiales","required":false}}
tag="Reservaciones"
title="Reserva Tu Experiencia"
description="Permítenos preparar una experiencia gastronómica inolvidable para ti."
imageSrc="http://img.b2bpic.net/free-photo/romantic-couple-having-date-restaurant_23-2147736700.jpg"
buttonText="Reservar Ahora"
inputs={[{"placeholder":"Nombre","required":true,"name":"name","type":"text"},{"type":"tel","name":"phone","placeholder":"Teléfono","required":true},{"placeholder":"Correo Electrónico","required":true,"type":"email","name":"email"},{"placeholder":"Fecha","required":true,"name":"date","type":"date"},{"type":"time","name":"time","placeholder":"Hora","required":true},{"name":"partySize","type":"number","placeholder":"Número de Personas","required":true}]}
/>
</div>
);
}

View File

@@ -0,0 +1,27 @@
// 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 TestimonialMarqueeCards from '@/components/sections/testimonial/TestimonialMarqueeCards';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function TestimonialsSection(): React.JSX.Element {
return (
<div id="testimonials" data-section="testimonials">
<SectionErrorBoundary name="testimonials">
<TestimonialMarqueeCards
tag="Our Guest's Memories"
title="Every Visit Leaves a Light"
description="Discover what our guests are saying about their dining experience."
testimonials={[
{ name: "Sarah J.", role: "Food Critic", quote: "An absolute revelation in Mérida's culinary scene.", imageSrc: "http://img.b2bpic.net/free-photo/charming-brunette-black-dress-is-standing-by-her-man-who-sits-table-luxury-restaurant_613910-18639.jpg" },
{ name: "David M.", role: "Architect", quote: "The fusion of architecture and taste is unprecedented.", imageSrc: "http://img.b2bpic.net/free-photo/people-having-dinner-luxurious-restaurants_23-2151081852.jpg" },
{ name: "Elena R.", role: "Designer", quote: "A romantic evening I will treasure forever.", imageSrc: "http://img.b2bpic.net/free-photo/beautiful-couple-enjoying-meal-evening_23-2147736698.jpg" },
{ name: "Marc L.", role: "Traveler", quote: "Michelin-level standards in the heart of Yucatán.", imageSrc: "http://img.b2bpic.net/free-photo/people-cheering-with-wine-glasses-luxurious-restaurant_23-2150517422.jpg" },
{ name: "Sophie K.", role: "Gourmand", quote: "The most sophisticated dinner I've had in years.", imageSrc: "http://img.b2bpic.net/free-photo/front-view-business-woman-thinking_23-2148317340.jpg" }
]}
/>
</SectionErrorBoundary>
</div>
);
}