Compare commits
1 Commits
version_1_
...
version_2_
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1b073d29a6 |
@@ -38,8 +38,9 @@ export default function Layout() {
|
||||
];
|
||||
|
||||
return (
|
||||
<StyleProvider buttonVariant="expand" siteBackground="noise" heroBackground="lightRaysCenter">
|
||||
<StyleProvider buttonVariant="expand" siteBackground="none" heroBackground="lightRaysCenter">
|
||||
<SiteBackgroundSlot />
|
||||
<div className="fixed inset-0 z-[-1] opacity-10 pointer-events-none" style={{ backgroundImage: "url('https://images.unsplash.com/photo-1541447271487-09612b3f49f7?q=80&w=2000&auto=format&fit=crop')", backgroundSize: "400px", backgroundRepeat: "repeat" }} />
|
||||
<SectionErrorBoundary name="navbar">
|
||||
<NavbarInline
|
||||
logo="BASIDI"
|
||||
|
||||
@@ -1,268 +1,36 @@
|
||||
import AboutTextSplit from '@/components/sections/about/AboutTextSplit';
|
||||
import ContactCta from '@/components/sections/contact/ContactCta';
|
||||
import FaqTabbedAccordion from '@/components/sections/faq/FaqTabbedAccordion';
|
||||
import FeaturesImageBento from '@/components/sections/features/FeaturesImageBento';
|
||||
import FeaturesMediaCarousel from '@/components/sections/features/FeaturesMediaCarousel';
|
||||
import HeroBillboardCarousel from '@/components/sections/hero/HeroBillboardCarousel';
|
||||
import MetricsSimpleCards from '@/components/sections/metrics/MetricsSimpleCards';
|
||||
import TestimonialMarqueeOverlayCards from '@/components/sections/testimonial/TestimonialMarqueeOverlayCards';
|
||||
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 MenuSection from './HomePage/sections/Menu';
|
||||
import DishesSection from './HomePage/sections/Dishes';
|
||||
import MetricsSection from './HomePage/sections/Metrics';
|
||||
import TestimonialsSection from './HomePage/sections/Testimonials';
|
||||
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="Basidi Rabat"
|
||||
title="L'Authenticité Marocaine au Cœur de Rabat"
|
||||
description="Découvrez le goût raffiné d'une cuisine familiale, préparée avec passion et tradition."
|
||||
primaryButton={{
|
||||
text: "Réserver une table",
|
||||
href: "#contact",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Découvrir le Menu",
|
||||
href: "#menu",
|
||||
}}
|
||||
items={[
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/catering-tablecloth-plate-drink-background_1203-5091.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/plate-with-fresh-food-near-cup-dried-fruits-burlap_23-2148080959.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/ramadan-concept_23-2147791756.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/oriental-pattern_23-2148129850.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/plate-with-food-near-cup-drink-teapot_23-2148080944.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/photorealistic-wedding-venue-with-intricate-decor-ornaments_23-2151481493.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<>
|
||||
<HeroSection />
|
||||
|
||||
<div id="about" data-section="about">
|
||||
<SectionErrorBoundary name="about">
|
||||
<AboutTextSplit
|
||||
title="Un Héritage Familial"
|
||||
descriptions={[
|
||||
"Chez Basidi, nous croyons en la force de la tradition. Situé en plein cœur de Rabat, sur l'Av. Annakhil, notre restaurant familial s'engage à offrir une expérience culinaire authentique.",
|
||||
"Chaque plat que nous servons raconte l'histoire de notre terroir, de nos épices et du savoir-faire transmis de génération en génération.",
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<AboutSection />
|
||||
|
||||
<div id="menu" data-section="menu">
|
||||
<SectionErrorBoundary name="menu">
|
||||
<FeaturesMediaCarousel
|
||||
tag="Notre Menu"
|
||||
title="Les Trésors de la Gastronomie"
|
||||
description="Un voyage culinaire à travers les meilleures recettes du Maroc."
|
||||
items={[
|
||||
{
|
||||
title: "Tajine Royal",
|
||||
description: "L'excellence de nos tajines traditionnels mijotés lentement.",
|
||||
buttonIcon: "Utensils",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/top-view-delicious-food-table-still-life_23-2150751959.jpg",
|
||||
},
|
||||
{
|
||||
title: "Bastilla aux saveurs",
|
||||
description: "Un mariage sucré-salé unique et délicieux.",
|
||||
buttonIcon: "Utensils",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/top-view-sweet-table-with-baklava-shekerbura-glass-tea-cutting-board_176474-3470.jpg",
|
||||
},
|
||||
{
|
||||
title: "Salades Marocaines",
|
||||
description: "La fraîcheur des légumes de saison sublimés.",
|
||||
buttonIcon: "Utensils",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/cracker-cake-inside-brown-plate_140725-29925.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<MenuSection />
|
||||
|
||||
<div id="dishes" data-section="dishes">
|
||||
<SectionErrorBoundary name="dishes">
|
||||
<FeaturesImageBento
|
||||
tag="Nos Plats"
|
||||
title="Une Carte Riche en Saveurs"
|
||||
description="Chaque détail compte pour vous offrir une expérience inoubliable."
|
||||
items={[
|
||||
{
|
||||
title: "Tajine au Citron",
|
||||
description: "Un classique incontournable.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/closeup-shot-plate-food_181624-60393.jpg",
|
||||
},
|
||||
{
|
||||
title: "Couscous Royal",
|
||||
description: "Le pilier de la table marocaine.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/traditional-dish-pity-mutton-peas-potato-onion-sumakh-side-view_141793-3249.jpg",
|
||||
},
|
||||
{
|
||||
title: "Salades Fraîches",
|
||||
description: "Le goût du soleil en bouche.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/side-view-fresh-salad-with-cabbage-tomatoes-white-cheese-pomegranate-seeds-plate_140725-10248.jpg",
|
||||
},
|
||||
{
|
||||
title: "Bastilla Sucrée",
|
||||
description: "Un délice croustillant.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/crepes-filled-with-cottage-cheese-breakfast_114579-35100.jpg",
|
||||
},
|
||||
{
|
||||
title: "Brochettes grillées",
|
||||
description: "Le goût authentique des braises.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/sac-ichi-with-mixed-ingredients-lavash-bread_114579-1156.jpg",
|
||||
},
|
||||
{
|
||||
title: "Thé à la menthe",
|
||||
description: "L'hospitalité marocaine.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/half-shot-organic-fresh-juices-bottles-served-with-tubes-fruits-brown-wooden-background_140725-94576.jpg",
|
||||
},
|
||||
{
|
||||
title: "Pain Traditionnel",
|
||||
description: "La base de chaque repas.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/greenies-qutab-greens-herbs-dough-cook-brown-wood-rustic-desk_140725-14966.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<DishesSection />
|
||||
|
||||
<div id="metrics" data-section="metrics">
|
||||
<SectionErrorBoundary name="metrics">
|
||||
<MetricsSimpleCards
|
||||
title="Basidi en Quelques Chiffres"
|
||||
description="L'excellence récompensée par vos avis."
|
||||
metrics={[
|
||||
{
|
||||
value: "4.3/5",
|
||||
description: "Note moyenne Google Maps",
|
||||
},
|
||||
{
|
||||
value: "298",
|
||||
description: "Avis authentiques",
|
||||
},
|
||||
{
|
||||
value: "100+",
|
||||
description: "Recettes transmises",
|
||||
},
|
||||
]}
|
||||
tag="Engagement"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<MetricsSection />
|
||||
|
||||
<div id="testimonials" data-section="testimonials">
|
||||
<SectionErrorBoundary name="testimonials">
|
||||
<TestimonialMarqueeOverlayCards
|
||||
title="Ils ont adoré"
|
||||
description="Nos clients partagent leur expérience culinaire avec nous."
|
||||
testimonials={[
|
||||
{
|
||||
name: "Sarah",
|
||||
role: "Habituée",
|
||||
company: "Rabat",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/young-woman-eating-delicious-tiramisu-cafe_1303-25270.jpg",
|
||||
},
|
||||
{
|
||||
name: "Karim",
|
||||
role: "Gourmet",
|
||||
company: "Casablanca",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/group-friends-dining-out_23-2149187205.jpg",
|
||||
},
|
||||
{
|
||||
name: "Famille L.",
|
||||
role: "Visiteurs",
|
||||
company: "France",
|
||||
rating: 4,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/top-view-friends-having-lunch-luxury-restaurant_23-2151081479.jpg",
|
||||
},
|
||||
{
|
||||
name: "Amine",
|
||||
role: "Critique",
|
||||
company: "Rabat",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/having-breakfast-home_1098-13946.jpg",
|
||||
},
|
||||
{
|
||||
name: "Sofia",
|
||||
role: "Touriste",
|
||||
company: "Espagne",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/front-view-happy-man-showing-approval_23-2148230800.jpg",
|
||||
},
|
||||
]}
|
||||
tag="Témoignages"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<TestimonialsSection />
|
||||
|
||||
<div id="faq" data-section="faq">
|
||||
<SectionErrorBoundary name="faq">
|
||||
<FaqTabbedAccordion
|
||||
tag="Informations utiles"
|
||||
title="Questions Fréquentes"
|
||||
categories={[
|
||||
{
|
||||
name: "Réservations",
|
||||
items: [
|
||||
{
|
||||
question: "Comment réserver ?",
|
||||
answer: "Vous pouvez nous appeler au 05 37 71 27 22.",
|
||||
},
|
||||
{
|
||||
question: "Acceptez-vous les grands groupes ?",
|
||||
answer: "Oui, sur réservation préalable.",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
name: "Service",
|
||||
items: [
|
||||
{
|
||||
question: "La livraison est-elle possible ?",
|
||||
answer: "Oui, nous proposons la livraison à Rabat.",
|
||||
},
|
||||
{
|
||||
question: "Où êtes-vous situés ?",
|
||||
answer: "Av. Annakhil, Hay Riad, Rabat.",
|
||||
},
|
||||
],
|
||||
},
|
||||
]}
|
||||
description="Tout ce qu'il faut savoir sur notre restaurant."
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<FaqSection />
|
||||
|
||||
<div id="contact" data-section="contact">
|
||||
<SectionErrorBoundary name="contact">
|
||||
<ContactCta
|
||||
tag="Réservez maintenant"
|
||||
text="Basidi Restaurant est prêt à vous accueillir pour une expérience inoubliable. Contactez-nous pour réserver votre table."
|
||||
primaryButton={{
|
||||
text: "Appeler le 05 37 71 27 22",
|
||||
href: "tel:0537712722",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Voir l'itinéraire",
|
||||
href: "https://maps.google.com",
|
||||
}}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<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="Un Héritage Familial"
|
||||
descriptions={[
|
||||
"Chez Basidi, nous croyons en la force de la tradition. Situé en plein cœur de Rabat, sur l'Av. Annakhil, notre restaurant familial s'engage à offrir une expérience culinaire authentique.",
|
||||
"Chaque plat que nous servons raconte l'histoire de notre terroir, de nos épices et du savoir-faire transmis de génération en génération.",
|
||||
]}
|
||||
/>
|
||||
</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="Réservez maintenant"
|
||||
text="Basidi Restaurant est prêt à vous accueillir pour une expérience inoubliable. Contactez-nous pour réserver votre table."
|
||||
primaryButton={{
|
||||
text: "Appeler le 05 37 71 27 22",
|
||||
href: "tel:0537712722",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Voir l'itinéraire",
|
||||
href: "https://maps.google.com",
|
||||
}}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
57
src/pages/HomePage/sections/Dishes.tsx
Normal file
57
src/pages/HomePage/sections/Dishes.tsx
Normal file
@@ -0,0 +1,57 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "dishes" section.
|
||||
|
||||
import React from 'react';
|
||||
import FeaturesImageBento from '@/components/sections/features/FeaturesImageBento';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function DishesSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="dishes" data-section="dishes">
|
||||
<SectionErrorBoundary name="dishes">
|
||||
<FeaturesImageBento
|
||||
tag="Nos Plats"
|
||||
title="Une Carte Riche en Saveurs"
|
||||
description="Chaque détail compte pour vous offrir une expérience inoubliable."
|
||||
items={[
|
||||
{
|
||||
title: "Tajine au Citron",
|
||||
description: "Un classique incontournable.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/closeup-shot-plate-food_181624-60393.jpg",
|
||||
},
|
||||
{
|
||||
title: "Couscous Royal",
|
||||
description: "Le pilier de la table marocaine.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/traditional-dish-pity-mutton-peas-potato-onion-sumakh-side-view_141793-3249.jpg",
|
||||
},
|
||||
{
|
||||
title: "Salades Fraîches",
|
||||
description: "Le goût du soleil en bouche.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/side-view-fresh-salad-with-cabbage-tomatoes-white-cheese-pomegranate-seeds-plate_140725-10248.jpg",
|
||||
},
|
||||
{
|
||||
title: "Bastilla Sucrée",
|
||||
description: "Un délice croustillant.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/crepes-filled-with-cottage-cheese-breakfast_114579-35100.jpg",
|
||||
},
|
||||
{
|
||||
title: "Brochettes grillées",
|
||||
description: "Le goût authentique des braises.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/sac-ichi-with-mixed-ingredients-lavash-bread_114579-1156.jpg",
|
||||
},
|
||||
{
|
||||
title: "Thé à la menthe",
|
||||
description: "L'hospitalité marocaine.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/half-shot-organic-fresh-juices-bottles-served-with-tubes-fruits-brown-wooden-background_140725-94576.jpg",
|
||||
},
|
||||
{
|
||||
title: "Pain Traditionnel",
|
||||
description: "La base de chaque repas.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/greenies-qutab-greens-herbs-dough-cook-brown-wood-rustic-desk_140725-14966.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
48
src/pages/HomePage/sections/Faq.tsx
Normal file
48
src/pages/HomePage/sections/Faq.tsx
Normal file
@@ -0,0 +1,48 @@
|
||||
// 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="Informations utiles"
|
||||
title="Questions Fréquentes"
|
||||
categories={[
|
||||
{
|
||||
name: "Réservations",
|
||||
items: [
|
||||
{
|
||||
question: "Comment réserver ?",
|
||||
answer: "Vous pouvez nous appeler au 05 37 71 27 22.",
|
||||
},
|
||||
{
|
||||
question: "Acceptez-vous les grands groupes ?",
|
||||
answer: "Oui, sur réservation préalable.",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
name: "Service",
|
||||
items: [
|
||||
{
|
||||
question: "La livraison est-elle possible ?",
|
||||
answer: "Oui, nous proposons la livraison à Rabat.",
|
||||
},
|
||||
{
|
||||
question: "Où êtes-vous situés ?",
|
||||
answer: "Av. Annakhil, Hay Riad, Rabat.",
|
||||
},
|
||||
],
|
||||
},
|
||||
]}
|
||||
description="Tout ce qu'il faut savoir sur notre restaurant."
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
48
src/pages/HomePage/sections/Hero.tsx
Normal file
48
src/pages/HomePage/sections/Hero.tsx
Normal file
@@ -0,0 +1,48 @@
|
||||
// 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="Basidi Rabat"
|
||||
title="L'Authenticité Marocaine au Cœur de Rabat"
|
||||
description="Découvrez le goût raffiné d'une cuisine familiale, préparée avec passion et tradition."
|
||||
primaryButton={{
|
||||
text: "Réserver une table",
|
||||
href: "#contact",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Découvrir le Menu",
|
||||
href: "#menu",
|
||||
}}
|
||||
items={[
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/catering-tablecloth-plate-drink-background_1203-5091.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/plate-with-fresh-food-near-cup-dried-fruits-burlap_23-2148080959.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/ramadan-concept_23-2147791756.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/oriental-pattern_23-2148129850.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/plate-with-food-near-cup-drink-teapot_23-2148080944.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/photorealistic-wedding-venue-with-intricate-decor-ornaments_23-2151481493.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
40
src/pages/HomePage/sections/Menu.tsx
Normal file
40
src/pages/HomePage/sections/Menu.tsx
Normal file
@@ -0,0 +1,40 @@
|
||||
// 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 FeaturesMediaCarousel from '@/components/sections/features/FeaturesMediaCarousel';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function MenuSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="menu" data-section="menu">
|
||||
<SectionErrorBoundary name="menu">
|
||||
<FeaturesMediaCarousel
|
||||
tag="Notre Menu"
|
||||
title="Les Trésors de la Gastronomie"
|
||||
description="Un voyage culinaire à travers les meilleures recettes du Maroc."
|
||||
items={[
|
||||
{
|
||||
title: "Tajine Royal",
|
||||
description: "L'excellence de nos tajines traditionnels mijotés lentement.",
|
||||
buttonIcon: "Utensils",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/top-view-delicious-food-table-still-life_23-2150751959.jpg",
|
||||
},
|
||||
{
|
||||
title: "Bastilla aux saveurs",
|
||||
description: "Un mariage sucré-salé unique et délicieux.",
|
||||
buttonIcon: "Utensils",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/top-view-sweet-table-with-baklava-shekerbura-glass-tea-cutting-board_176474-3470.jpg",
|
||||
},
|
||||
{
|
||||
title: "Salades Marocaines",
|
||||
description: "La fraîcheur des légumes de saison sublimés.",
|
||||
buttonIcon: "Utensils",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/cracker-cake-inside-brown-plate_140725-29925.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
34
src/pages/HomePage/sections/Metrics.tsx
Normal file
34
src/pages/HomePage/sections/Metrics.tsx
Normal file
@@ -0,0 +1,34 @@
|
||||
// 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 MetricsSimpleCards from '@/components/sections/metrics/MetricsSimpleCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function MetricsSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="metrics" data-section="metrics">
|
||||
<SectionErrorBoundary name="metrics">
|
||||
<MetricsSimpleCards
|
||||
title="Basidi en Quelques Chiffres"
|
||||
description="L'excellence récompensée par vos avis."
|
||||
metrics={[
|
||||
{
|
||||
value: "4.3/5",
|
||||
description: "Note moyenne Google Maps",
|
||||
},
|
||||
{
|
||||
value: "298",
|
||||
description: "Avis authentiques",
|
||||
},
|
||||
{
|
||||
value: "100+",
|
||||
description: "Recettes transmises",
|
||||
},
|
||||
]}
|
||||
tag="Engagement"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
57
src/pages/HomePage/sections/Testimonials.tsx
Normal file
57
src/pages/HomePage/sections/Testimonials.tsx
Normal file
@@ -0,0 +1,57 @@
|
||||
// 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 TestimonialMarqueeOverlayCards from '@/components/sections/testimonial/TestimonialMarqueeOverlayCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function TestimonialsSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="testimonials" data-section="testimonials">
|
||||
<SectionErrorBoundary name="testimonials">
|
||||
<TestimonialMarqueeOverlayCards
|
||||
title="Ils ont adoré"
|
||||
description="Nos clients partagent leur expérience culinaire avec nous."
|
||||
testimonials={[
|
||||
{
|
||||
name: "Sarah",
|
||||
role: "Habituée",
|
||||
company: "Rabat",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/young-woman-eating-delicious-tiramisu-cafe_1303-25270.jpg",
|
||||
},
|
||||
{
|
||||
name: "Karim",
|
||||
role: "Gourmet",
|
||||
company: "Casablanca",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/group-friends-dining-out_23-2149187205.jpg",
|
||||
},
|
||||
{
|
||||
name: "Famille L.",
|
||||
role: "Visiteurs",
|
||||
company: "France",
|
||||
rating: 4,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/top-view-friends-having-lunch-luxury-restaurant_23-2151081479.jpg",
|
||||
},
|
||||
{
|
||||
name: "Amine",
|
||||
role: "Critique",
|
||||
company: "Rabat",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/having-breakfast-home_1098-13946.jpg",
|
||||
},
|
||||
{
|
||||
name: "Sofia",
|
||||
role: "Touriste",
|
||||
company: "Espagne",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/front-view-happy-man-showing-approval_23-2148230800.jpg",
|
||||
},
|
||||
]}
|
||||
tag="Témoignages"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user