14 Commits

Author SHA1 Message Date
1a22e9a489 Update src/app/services/page.tsx 2026-06-02 10:14:22 +00:00
59d3868c0e Update src/app/gallery/page.tsx 2026-06-02 10:14:21 +00:00
34185b5192 Update src/app/services/page.tsx 2026-06-02 10:13:51 +00:00
ee8a89a34f Update src/app/gallery/page.tsx 2026-06-02 10:13:50 +00:00
2eb28e2941 Update src/app/gallery/page.tsx 2026-06-02 10:12:46 +00:00
2857a43c08 Update src/app/about/page.tsx 2026-06-02 10:07:39 +00:00
7a7b434911 Update src/app/styles/variables.css 2026-06-02 10:06:21 +00:00
1773231d8e Add src/app/services/page.tsx 2026-06-02 10:06:21 +00:00
57b61c9756 Update src/app/page.tsx 2026-06-02 10:06:20 +00:00
37a3568f79 Update src/app/layout.tsx 2026-06-02 10:06:20 +00:00
4c04655d18 Add src/app/gallery/page.tsx 2026-06-02 10:06:19 +00:00
acd10bec81 Add src/app/contact/page.tsx 2026-06-02 10:06:19 +00:00
182ee027ba Add src/app/booking/page.tsx 2026-06-02 10:06:18 +00:00
40f94cba92 Add src/app/about/page.tsx 2026-06-02 10:06:17 +00:00
8 changed files with 685 additions and 249 deletions

125
src/app/about/page.tsx Normal file
View File

@@ -0,0 +1,125 @@
"use client";
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
import ReactLenis from "lenis/react";
import FeatureCardNineteen from '@/components/sections/feature/FeatureCardNineteen';
import FooterBase from '@/components/sections/footer/FooterBase';
import NavbarLayoutFloatingOverlay from '@/components/navbar/NavbarLayoutFloatingOverlay/NavbarLayoutFloatingOverlay';
import TextSplitAbout from '@/components/sections/about/TextSplitAbout';
export default function AboutPage() {
return (
<ThemeProvider
defaultButtonVariant="shift-hover"
defaultTextAnimation="entrance-slide"
borderRadius="rounded"
contentWidth="mediumSmall"
sizing="large"
background="circleGradient"
cardStyle="subtle-shadow"
primaryButtonStyle="double-inset"
secondaryButtonStyle="glass"
headingFontWeight="extrabold"
>
<ReactLenis root>
<div id="nav" data-section="nav">
<NavbarLayoutFloatingOverlay
navItems={[
{
name: "Accueil", id: "/"},
{
name: "À Propos", id: "/about"},
{
name: "Services", id: "/#services"},
{
name: "Galerie", id: "/#gallery"},
{
name: "Témoignages", id: "/#testimonials"},
{
name: "FAQ", id: "/#faq"},
{
name: "Contact", id: "/#contact"},
]}
brandName="Salle Évasion"
button={{
text: "Demander un devis", href: "/#contact"}}
/>
</div>
<div id="story" data-section="story">
<TextSplitAbout
useInvertedBackground={true}
title="Notre Histoire et Vision"
description={[
"Depuis notre création, la Salle Évasion s'est engagée à fournir un espace exceptionnel pour célébrer les moments les plus précieux de la vie. Nous croyons que chaque événement est unique et mérite une attention particulière.", "Notre mission est de créer des expériences mémorables en offrant un cadre élégant, des équipements modernes et un service personnalisé. Nous nous efforçons de dépasser les attentes de nos clients à chaque fois, en transformant leurs visions en réalité scintillante.", "Que ce soit pour un mariage grandiose, un anniversaire intime, un séminaire professionnel ou toute autre célébration, notre équipe dévouée est là pour vous accompagner. Nous nous occupons de tous les détails pour que vous puissiez vous concentrer sur ce qui compte vraiment : profiter de l'instant présent avec vos proches."
]}
/>
</div>
<div id="why-choose-us" data-section="why-choose-us">
<FeatureCardNineteen
textboxLayout="default"
useInvertedBackground={false}
title="Pourquoi Choisir la Salle Évasion ?"
description="Découvrez les avantages qui font de notre salle le lieu idéal pour votre prochain événement."
features={[
{
tag: "Espaces", title: "Espaces Flexibles", subtitle: "Capacité Adaptable", description: "Nos salles sont conçues pour être entièrement modulables, s'adaptant parfaitement à la taille et au style de votre événement, des petites réunions aux grandes réceptions.", imageSrc: "http://img.b2bpic.net/free-photo/room-interior-design_23-2148899436.jpg", imageAlt: "Salle modulable"},
{
tag: "Localisation", title: "Emplacement Idéal", subtitle: "Accès Facile", description: "Située au cœur de la ville avec un accès facile aux transports et un grand parking, la Salle Évasion est facilement accessible pour tous vos invités.", imageSrc: "http://img.b2bpic.net/free-photo/city-from-viewpoint_1127-1605.jpg", imageAlt: "Ville et commodité"},
{
tag: "Service", title: "Service Client Dévoué", subtitle: "Accompagnement Personnalisé", description: "Notre équipe expérimentée et amicale est à votre disposition pour vous accompagner à chaque étape, garantissant une organisation sans stress et un événement réussi.", imageSrc: "http://img.b2bpic.net/free-photo/service-hands-handshake-connection-business-concept_53876-26792.jpg", imageAlt: "Client service"},
{
tag: "Ambiance", title: "Ambiance Chaleureuse", subtitle: "Cadre Familial", description: "Profitez d'une atmosphère accueillante et conviviale, parfaite pour créer des souvenirs heureux avec votre famille et vos amis.", imageSrc: "http://img.b2bpic.net/free-photo/best-friends-getting-something-from-food-truck_23-2148914602.jpg", imageAlt: "Ambiance conviviale"},
{
tag: "Qualité/Prix", title: "Tarifs Compétitifs", subtitle: "Excellent Rapport Qualité-Prix", description: "Nous offrons des forfaits clairs et des prix compétitifs sans compromettre la qualité, pour que votre événement soit magnifique et respecte votre budget.", imageSrc: "http://img.b2bpic.net/free-photo/close-up-euro-currency-banknotes_23-2149021486.jpg", imageAlt: "Tarifs compétitifs"},
]}
/>
</div>
<div id="footer" data-section="footer">
<FooterBase
columns={[
{
title: "Découvrir", items: [
{
label: "Accueil", href: "/"},
{
label: "À Propos", href: "/about"},
{
label: "Services", href: "/#services"},
{
label: "Galerie", href: "/#gallery"},
],
},
{
title: "Assistance", items: [
{
label: "FAQ", href: "/#faq"},
{
label: "Contact", href: "/#contact"},
{
label: "Politique de Confidentialité", href: "#"},
{
label: "Conditions Générales", href: "#"},
],
},
{
title: "Nous Suivre", items: [
{
label: "Facebook", href: "#"},
{
label: "Instagram", href: "#"},
{
label: "LinkedIn", href: "#"},
],
},
]}
logoText="Salle Évasion"
copyrightText="© 2024 Salle Évasion. Tous droits réservés."
/>
</div>
</ReactLenis>
</ThemeProvider>
);
}

175
src/app/booking/page.tsx Normal file
View File

@@ -0,0 +1,175 @@
"use client";
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
import React, { useState, FormEvent } from "react";
import ReactLenis from "lenis/react";
import NavbarLayoutFloatingOverlay from '@/components/navbar/NavbarLayoutFloatingOverlay/NavbarLayoutFloatingOverlay';
import FooterBase from '@/components/sections/footer/FooterBase';
import ContactSplitForm from '@/components/sections/contact/ContactSplitForm';
import { CheckCircle } from 'lucide-react'; // For success message icon
export default function BookingPage() {
const [formData, setFormData] = useState({
name: "", phone: "", email: "", eventType: "", // Assuming single selection for simplicity, though propsSchema allows multiSelect
desiredDate: "", numGuests: "", message: ""});
const [formSubmitted, setFormSubmitted] = useState(false);
const [errors, setErrors] = useState<Record<string, string>>({});
const validateForm = () => {
const newErrors: Record<string, string> = {};
if (!formData.name) newErrors.name = "Le nom est requis.";
if (!formData.phone) newErrors.phone = "Le numéro de téléphone est requis.";
if (!formData.email) newErrors.email = "L'adresse email est requise.";
else if (!/^\w+([.-]?\w+)*@\w+([.-]?\w+)*(\.\w{2,3})+$/.test(formData.email)) newErrors.email = "Format d'email invalide.";
if (!formData.eventType) newErrors.eventType = "Le type d'événement est requis.";
if (!formData.desiredDate) newErrors.desiredDate = "La date souhaitée est requise.";
if (!formData.numGuests) newErrors.numGuests = "Le nombre d'invités est requis.";
else if (isNaN(Number(formData.numGuests)) || Number(formData.numGuests) <= 0) newErrors.numGuests = "Doit être un nombre valide.";
setErrors(newErrors);
return Object.keys(newErrors).length === 0;
};
const handleChange = (name: string, value: string) => {
setFormData((prev) => ({
...prev,
[name]: value,
}));
// Clear error for the field being edited
setErrors((prev) => {
const newErrors = { ...prev };
delete newErrors[name];
return newErrors;
});
};
const handleSubmit = (data: Record<string, string>) => {
// Merge custom form data into event data for validation
const fullData = { ...formData, ...data };
setFormData(fullData as typeof formData); // Ensure formData is updated for validation
if (validateForm()) {
console.log("Formulaire de devis soumis:", fullData);
// Simulate API call
setTimeout(() => {
setFormSubmitted(true);
// Optionally clear form data after submission
// setFormData({ name: "", phone: "", email: "", eventType: "", desiredDate: "", numGuests: "", message: "" });
}, 1000);
}
};
const navItems = [
{ name: "Accueil", id: "/" },
{ name: "À Propos", id: "/#about" },
{ name: "Services", id: "/#services" },
{ name: "Galerie", id: "/#gallery" },
{ name: "Témoignages", id: "/#testimonials" },
{ name: "FAQ", id: "/#faq" },
{ name: "Contact", id: "/contact" },
{ name: "Réserver", id: "/booking" }
];
const footerColumns = [
{
title: "Découvrir", items: [
{ label: "Accueil", href: "/" },
{ label: "À Propos", href: "/#about" },
{ label: "Services", href: "/#services" },
{ label: "Galerie", href: "/#gallery" },
{ label: "Réserver", href: "/booking" }
]
},
{
title: "Assistance", items: [
{ label: "FAQ", href: "/#faq" },
{ label: "Contact", href: "/contact" },
{ label: "Politique de Confidentialité", href: "#" },
{ label: "Conditions Générales", href: "#" }
]
},
{
title: "Nous Suivre", items: [
{ label: "Facebook", href: "#" },
{ label: "Instagram", href: "#" },
{ label: "LinkedIn", href: "#" }
]
}
];
return (
<ThemeProvider
defaultButtonVariant="shift-hover"
defaultTextAnimation="entrance-slide"
borderRadius="rounded"
contentWidth="mediumSmall"
sizing="large"
background="circleGradient"
cardStyle="subtle-shadow"
primaryButtonStyle="double-inset"
secondaryButtonStyle="glass"
headingFontWeight="extrabold"
>
<ReactLenis root>
<div id="nav" data-section="nav">
<NavbarLayoutFloatingOverlay
navItems={navItems}
brandName="Salle Évasion"
button={{
text: "Demander un devis", href: "/booking"
}}
/>
</div>
<div className="flex min-h-screen flex-col items-center justify-between pt-32 pb-16">
{formSubmitted ? (
<div className="max-w-md mx-auto text-center p-8 bg-card rounded-lg shadow-lg">
<CheckCircle className="h-16 w-16 text-primary-cta mx-auto mb-4" />
<h2 className="text-2xl font-bold mb-2">Devis Envoyé avec Succès !</h2>
<p className="text-foreground/80">Merci pour votre demande. Nous vous contacterons très prochainement pour discuter de votre événement.</p>
<button
onClick={() => setFormSubmitted(false)}
className="mt-6 px-6 py-2 bg-primary-cta text-primary-cta-foreground rounded-md hover:bg-primary-cta/90 transition-colors"
>
Nouvelle demande
</button>
</div>
) : (
<ContactSplitForm
title="Demandez Votre Devis Personnalisé"
description="Remplissez le formulaire ci-dessous pour nous faire part des détails de votre événement. Notre équipe vous recontactera rapidement avec une proposition sur mesure."
inputs={[
{ name: "name", type: "text", placeholder: "Votre nom complet", required: true, className: errors.name ? "border-red-500" : "" },
{ name: "phone", type: "tel", placeholder: "Votre numéro de téléphone", required: true, className: errors.phone ? "border-red-500" : "" },
{ name: "email", type: "email", placeholder: "Votre adresse email", required: true, className: errors.email ? "border-red-500" : "" },
{ name: "desiredDate", type: "date", placeholder: "Date souhaitée de l'événement", required: true, className: errors.desiredDate ? "border-red-500" : "" },
{ name: "numGuests", type: "number", placeholder: "Nombre d'invités", required: true, className: errors.numGuests ? "border-red-500" : "" }
]}
multiSelect={{
name: "eventType", label: "Type d'événement", options: ["Mariage", "Anniversaire", "Séminaire", "Conférence", "Autre"]
}}
textarea={{
name: "message", placeholder: "Votre message et détails spécifiques (thème, besoins spéciaux, etc.)", rows: 5,
required: false
}}
buttonText="Recevoir mon devis"
onSubmit={handleSubmit}
useInvertedBackground={true}
imageSrc="http://img.b2bpic.net/free-photo/planner-woman-holding-wedding-checklist-documents_23-2148784110.jpg"
imageAlt="Organisateur d'événements préparant un devis"
mediaAnimation="slide-up"
className="w-full max-w-6xl mx-auto"
/>
)}
</div>
<div id="footer" data-section="footer">
<FooterBase
columns={footerColumns}
logoText="Salle Évasion"
copyrightText="© 2024 Salle Évasion. Tous droits réservés."
/>
</div>
</ReactLenis>
</ThemeProvider>
);
}

110
src/app/contact/page.tsx Normal file
View File

@@ -0,0 +1,110 @@
"use client";
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
import ReactLenis from "lenis/react";
import ContactSplit from '@/components/sections/contact/ContactSplit';
import NavbarLayoutFloatingOverlay from '@/components/navbar/NavbarLayoutFloatingOverlay/NavbarLayoutFloatingOverlay';
import FooterBase from '@/components/sections/footer/FooterBase';
export default function ContactPage() {
return (
<ThemeProvider
defaultButtonVariant="shift-hover"
defaultTextAnimation="entrance-slide"
borderRadius="rounded"
contentWidth="mediumSmall"
sizing="large"
background="circleGradient"
cardStyle="subtle-shadow"
primaryButtonStyle="double-inset"
secondaryButtonStyle="glass"
headingFontWeight="extrabold"
>
<ReactLenis root>
<div id="nav" data-section="nav">
<NavbarLayoutFloatingOverlay
navItems={[
{
name: "Accueil", id: "/"},
{
name: "À Propos", id: "/#about"},
{
name: "Services", id: "/#services"},
{
name: "Galerie", id: "/#gallery"},
{
name: "Témoignages", id: "/#testimonials"},
{
name: "FAQ", id: "/#faq"},
{
name: "Contact", id: "/contact"},
]}
brandName="Salle Évasion"
button={{
text: "Demander un devis", href: "/contact"}}
/>
</div>
<div id="contact-info" data-section="contact-info">
<ContactSplit
useInvertedBackground={true}
background={{
variant: "radial-gradient"}}
tag="Contactez-nous"
title="Informations de Contact"
description="Téléphone: +216 99 301 482\nLocalisation: Manouba, Tunisia"
imageSrc="http://img.b2bpic.net/free-photo/world-map-global-business-background_53876-135508.jpg"
imageAlt="Localisation de la Salle Évasion sur la carte"
mediaAnimation="slide-up"
inputPlaceholder="Entrez votre email"
buttonText="Envoyer votre message"
termsText="En cliquant sur Envoyer, vous confirmez que vous acceptez nos Conditions Générales."
/>
</div>
<div id="footer" data-section="footer">
<FooterBase
columns={[
{
title: "Découvrir", items: [
{
label: "Accueil", href: "/"},
{
label: "À Propos", href: "/#about"},
{
label: "Services", href: "/#services"},
{
label: "Galerie", href: "/#gallery"},
],
},
{
title: "Assistance", items: [
{
label: "FAQ", href: "/#faq"},
{
label: "Contact", href: "/contact"},
{
label: "Politique de Confidentialité", href: "#"},
{
label: "Conditions Générales", href: "#"},
],
},
{
title: "Nous Suivre", items: [
{
label: "Facebook", href: "#"},
{
label: "Instagram", href: "#"},
{
label: "LinkedIn", href: "#"},
],
},
]}
logoText="Salle Évasion"
copyrightText="© 2024 Salle Évasion. Tous droits réservés."
/>
</div>
</ReactLenis>
</ThemeProvider>
);
}

94
src/app/gallery/page.tsx Normal file
View File

@@ -0,0 +1,94 @@
"use client";
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
import ReactLenis from "lenis/react";
import ProductCardFour from '@/components/sections/product/ProductCardFour';
import FooterBase from '@/components/sections/footer/FooterBase';
import NavbarLayoutFloatingOverlay from '@/components/navbar/NavbarLayoutFloatingOverlay/NavbarLayoutFloatingOverlay';
export default function GalleryPage() {
return (
<ThemeProvider
defaultButtonVariant="shift-hover"
defaultTextAnimation="entrance-slide"
borderRadius="rounded"
contentWidth="mediumSmall"
sizing="large"
background="circleGradient"
cardStyle="subtle-shadow"
primaryButtonStyle="double-inset"
secondaryButtonStyle="glass"
headingFontWeight="extrabold"
>
<ReactLenis root>
<div id="nav" data-section="nav">
<NavbarLayoutFloatingOverlay
navItems={[
{ name: "Accueil", id: "/"},
{ name: "À Propos", id: "/about"},
{ name: "Services", id: "/services"},
{ name: "Galerie", id: "/gallery"},
{ name: "Témoignages", id: "/#testimonials"},
{ name: "FAQ", id: "/#faq"},
{ name: "Contact", id: "/#contact"},
]}
brandName="Salle Évasion"
button={{
text: "Demander un devis", href: "/#contact"}}
/>
</div>
<div id="gallery" data-section="gallery">
<ProductCardFour
animationType="blur-reveal"
gridVariant="uniform-all-items-equal"
useInvertedBackground={false}
title="Notre Galerie d'Événements"
description="Découvrez des moments inoubliables capturés dans notre salle."
textboxLayout="default"
products={[
{ id: "1", name: "Mariage Élégant", price: "À partir de 1500€", variant: "Cérémonie", imageSrc: "http://img.b2bpic.net/free-photo/wedding-ceremony-area-in-a-forest-decorated-with-white-flowers-and-rustic-style-details_181624-53900.jpg?_wi=1" },
{ id: "2", name: "Anniversaire Joyeux", price: "À partir de 500€", variant: "Fête", imageSrc: "http://img.b2bpic.net/free-photo/view-of-table-with-happy-birthday-cake-and-drinks_23-2148405096.jpg?_wi=1" },
{ id: "3", name: "Conférence Professionnelle", price: "Sur devis", variant: "Séminaire", imageSrc: "http://img.b2bpic.net/free-photo/large-empty-meeting-room_23-2148782068.jpg?_wi=1" },
{ id: "4", name: "Soirée Gala", price: "Sur devis", variant: "Réception", imageSrc: "http://img.b2bpic.net/free-photo/3d-rendering-wedding-reception-hall-illustration_1150-13725.jpg?_wi=1" },
{ id: "5", name: "Cocktail Party", price: "À partir de 800€", variant: "Social", imageSrc: "http://img.b2bpic.net/free-photo/cocktails_1339-1233.jpg" },
{ id: "6", name: "Dîner Romantique", price: "À partir de 300€", variant: "Privé", imageSrc: "http://img.b2bpic.net/free-photo/romantic-dinner-restaurant-luxury_23-2148777977.jpg" }
]}
/>
</div>
<div id="footer" data-section="footer">
<FooterBase
columns={[
{
title: "Découvrir", items: [
{ label: "Accueil", href: "/"},
{ label: "À Propos", href: "/about"},
{ label: "Services", href: "/services"},
{ label: "Galerie", href: "/gallery"}
]
},
{
title: "Assistance", items: [
{ label: "FAQ", href: "/#faq"},
{ label: "Contact", href: "/#contact"},
{ label: "Politique de Confidentialité", href: "#"},
{ label: "Conditions Générales", href: "#"}
]
},
{
title: "Nous Suivre", items: [
{ label: "Facebook", href: "#"},
{ label: "Instagram", href: "#"},
{ label: "LinkedIn", href: "#"}
]
}
]}
logoText="Salle Évasion"
copyrightText="© 2024 Salle Évasion. Tous droits réservés."
/>
</div>
</ReactLenis>
</ThemeProvider>
);
}

View File

@@ -10,27 +10,19 @@ import { getVisualEditScript } from "@/utils/visual-edit-script";
export const metadata: Metadata = {
title: 'Salle des fêtes Évasion | Location de salle événementielle',
description: 'Organisez vos mariages, anniversaires, séminaires et événements spéciaux à la Salle des fêtes Évasion. Un cadre élégant et des services sur mesure pour des moments inoubliables.',
keywords: ["salle des fêtes, location salle, événementiel, mariage, anniversaire, séminaire, salle de réception, Evasion, organisation événement"],
title: 'Salle des fêtes Manouba, Salle de mariage Manouba, Location salle événement Tunisie',
description: 'Salle Évasion, votre destination de rêve pour mariages, événements, et réceptions à Manouba, Tunisie. Offrant un cadre élégant, des services personnalisés et des équipements modernes pour des célébrations inoubliables.',
keywords: ["Salle des fêtes Manouba", "Salle de mariage Manouba", "Location salle événement Tunisie", "Salle réception Manouba", "Salle des fêtes Tunisie", "Mariage Manouba", "Événement Manouba", "Réception Tunisie", "Salles des fêtes"],
openGraph: {
"title": "Salle des fêtes Évasion | Location de salle événementielle",
"description": "Organisez vos mariages, anniversaires, séminaires et événements spéciaux à la Salle des fêtes Évasion. Un cadre élégant et des services sur mesure pour des moments inoubliables.",
"url": "https://www.salle-evasion.com",
"siteName": "Salle Évasion",
"images": [
"title": "Salle des fêtes Manouba, Salle de mariage Manouba, Location salle événement Tunisie", "description": "Salle Évasion, votre destination de rêve pour mariages, événements, et réceptions à Manouba, Tunisie. Offrant un cadre élégant, des services personnalisés et des équipements modernes pour des célébrations inoubliables.", "url": "https://www.salle-evasion.com", "siteName": "Salle Évasion", "images": [
{
"url": "http://img.b2bpic.net/free-photo/bachelorette-flower-arrnagement_23-2149340496.jpg",
"alt": "Vue élégante de la salle de réception"
"url": "http://img.b2bpic.net/free-photo/bachelorette-flower-arrnagement_23-2149340496.jpg", "alt": "Vue élégante de la salle de réception"
}
],
"type": "website"
},
twitter: {
"card": "summary_large_image",
"title": "Salle des fêtes Évasion | Location de salle événementielle",
"description": "Organisez vos mariages, anniversaires, séminaires et événements spéciaux à la Salle des fêtes Évasion. Un cadre élégant et des services sur mesure pour des moments inoubliables.",
"images": [
"card": "summary_large_image", "title": "Salle des fêtes Manouba, Salle de mariage Manouba, Location salle événement Tunisie", "description": "Salle Évasion, votre destination de rêve pour mariages, événements, et réceptions à Manouba, Tunisie. Offrant un cadre élégant, des services personnalisés et des équipements modernes pour des célébrations inoubliables.", "images": [
"http://img.b2bpic.net/free-photo/bachelorette-flower-arrnagement_23-2149340496.jpg"
]
},
@@ -41,8 +33,7 @@ export const metadata: Metadata = {
};
const inter = Inter({
variable: "--font-inter",
subsets: ["latin"]
variable: "--font-inter", subsets: ["latin"]
});
export default function RootLayout({

View File

@@ -32,80 +32,49 @@ export default function LandingPage() {
<NavbarLayoutFloatingOverlay
navItems={[
{
name: "Accueil",
id: "#hero",
},
name: "Accueil", id: "/"},
{
name: "À Propos",
id: "#about",
},
name: "À Propos", id: "/#about"},
{
name: "Services",
id: "#services",
},
name: "Services", id: "/#services"},
{
name: "Galerie",
id: "#gallery",
},
name: "Galerie", id: "/#gallery"},
{
name: "Témoignages",
id: "#testimonials",
},
name: "Témoignages", id: "/#testimonials"},
{
name: "FAQ",
id: "#faq",
},
name: "FAQ", id: "/#faq"},
{
name: "Contact",
id: "#contact",
},
name: "Contact", id: "/contact"},
]}
brandName="Salle Évasion"
button={{
text: "Demander un devis",
href: "#contact",
}}
text: "Demander un devis", href: "/contact"}}
/>
</div>
<div id="hero" data-section="hero">
<HeroBillboardGallery
background={{
variant: "radial-gradient",
}}
variant: "radial-gradient"}}
title="Salle des fêtes Évasion: Vos Événements, Notre Scène."
description="Créez des souvenirs inoubliables dans un cadre élégant et modulable. Idéal pour mariages, anniversaires, séminaires et célébrations de toutes sortes."
buttons={[
{
text: "Découvrir nos salles",
href: "#gallery",
},
text: "Découvrir nos salles", href: "/#gallery"},
{
text: "Demander un devis",
href: "#contact",
},
text: "Demander un devis", href: "/contact"},
]}
mediaItems={[
{
imageSrc: "http://img.b2bpic.net/free-photo/bachelorette-flower-arrnagement_23-2149340496.jpg",
imageAlt: "Mariage élégant dans une salle de réception",
},
imageSrc: "http://img.b2bpic.net/free-photo/bachelorette-flower-arrnagement_23-2149340496.jpg", imageAlt: "Mariage élégant dans une salle de réception"},
{
imageSrc: "http://img.b2bpic.net/free-photo/navratri-highly-detailed-interior-decoration_23-2151193720.jpg",
imageAlt: "Fête d'anniversaire animée",
},
imageSrc: "http://img.b2bpic.net/free-photo/navratri-highly-detailed-interior-decoration_23-2151193720.jpg", imageAlt: "Fête d'anniversaire animée"},
{
imageSrc: "http://img.b2bpic.net/free-photo/business-classroom-daytime-with-many-black-chairs-ready-students_146671-16246.jpg",
imageAlt: "Séminaire professionnel",
},
imageSrc: "http://img.b2bpic.net/free-photo/business-classroom-daytime-with-many-black-chairs-ready-students_146671-16246.jpg", imageAlt: "Séminaire professionnel"},
{
imageSrc: "http://img.b2bpic.net/free-photo/best-friends-getting-something-from-food-truck_23-2148914602.jpg",
imageAlt: "Réception cocktail chic",
},
imageSrc: "http://img.b2bpic.net/free-photo/best-friends-getting-something-from-food-truck_23-2148914602.jpg", imageAlt: "Réception cocktail chic"},
{
imageSrc: "http://img.b2bpic.net/free-photo/room-interior-design_23-2148899436.jpg",
imageAlt: "Salle vide prête pour un événement",
},
imageSrc: "http://img.b2bpic.net/free-photo/room-interior-design_23-2148899436.jpg", imageAlt: "Salle vide prête pour un événement"},
]}
mediaAnimation="slide-up"
/>
@@ -116,14 +85,10 @@ export default function LandingPage() {
useInvertedBackground={true}
title="Découvrez la Salle Évasion"
description={[
"Située au cœur d'un environnement paisible, la Salle Évasion offre un espace moderne et raffiné pour tous vos événements. Conçue pour s'adapter à vos besoins, notre salle est l'endroit idéal pour transformer vos rêves en réalité.",
"Avec une capacité flexible et des équipements de pointe, nous nous engageons à offrir une expérience sans faille, de la planification à la réalisation. Laissez-nous prendre en charge les détails pour que vous puissiez profiter pleinement de votre moment.",
]}
"Située au cœur d'un environnement paisible, la Salle Évasion offre un espace moderne et raffiné pour tous vos événements. Conçue pour s'adapter à vos besoins, notre salle est l'endroit idéal pour transformer vos rêves en réalité.", "Avec une capacité flexible et des équipements de pointe, nous nous engageons à offrir une expérience sans faille, de la planification à la réalisation. Laissez-nous prendre en charge les détails pour que vous puissiez profiter pleinement de votre moment."]}
buttons={[
{
text: "En savoir plus",
href: "#services",
},
text: "En savoir plus", href: "/#services"},
]}
/>
</div>
@@ -135,35 +100,17 @@ export default function LandingPage() {
useInvertedBackground={false}
features={[
{
id: "f1",
title: "Service Traiteur Gastronomique",
tags: [
"Cuisine Raffinée",
"Menus Personnalisés",
],
imageSrc: "http://img.b2bpic.net/free-photo/catering-restaurant-service_624325-930.jpg",
imageAlt: "Service traiteur gastronomique",
},
id: "f1", title: "Service Traiteur Gastronomique", tags: [
"Cuisine Raffinée", "Menus Personnalisés"],
imageSrc: "http://img.b2bpic.net/free-photo/catering-restaurant-service_624325-930.jpg", imageAlt: "Service traiteur gastronomique"},
{
id: "f2",
title: "Décoration et Ambiance Sur Mesure",
tags: [
"Design Créatif",
"Stylisme Floral",
],
imageSrc: "http://img.b2bpic.net/free-photo/white-daisies-purple-hydrangeas-glass-transparent-tall-green-bottles-decorative-bouquets-vases_1304-3993.jpg",
imageAlt: "Décoration événementielle florale",
},
id: "f2", title: "Décoration et Ambiance Sur Mesure", tags: [
"Design Créatif", "Stylisme Floral"],
imageSrc: "http://img.b2bpic.net/free-photo/white-daisies-purple-hydrangeas-glass-transparent-tall-green-bottles-decorative-bouquets-vases_1304-3993.jpg", imageAlt: "Décoration événementielle florale"},
{
id: "f3",
title: "Équipement Son et Lumière de Pointe",
tags: [
"Technologie",
"Ambiance Sonore",
],
imageSrc: "http://img.b2bpic.net/free-photo/spectrum-flashes-coloured-light_23-2151792505.jpg",
imageAlt: "Équipement son et lumière",
},
id: "f3", title: "Équipement Son et Lumière de Pointe", tags: [
"Technologie", "Ambiance Sonore"],
imageSrc: "http://img.b2bpic.net/free-photo/spectrum-flashes-coloured-light_23-2151792505.jpg", imageAlt: "Équipement son et lumière"},
]}
title="Nos Services Exclusifs"
description="Nous vous accompagnons à chaque étape pour garantir le succès de votre événement."
@@ -178,53 +125,17 @@ export default function LandingPage() {
useInvertedBackground={true}
products={[
{
id: "p1",
name: "Forfait Mariage Classique",
price: "À partir de 2000€",
variant: "Cérémonie, Dîner, Soirée",
imageSrc: "http://img.b2bpic.net/free-photo/woman-having-date-with-her-boyfriend-valentine-s-day_23-2149162010.jpg",
imageAlt: "Mariage romantique",
},
id: "p1", name: "Forfait Mariage Classique", price: "À partir de 2000€", variant: "Cérémonie, Dîner, Soirée", imageSrc: "http://img.b2bpic.net/free-photo/woman-having-date-with-her-boyfriend-valentine-s-day_23-2149162010.jpg", imageAlt: "Mariage romantique"},
{
id: "p2",
name: "Forfait Anniversaire Premium",
price: "À partir de 1200€",
variant: "Décoration, DJ, Traiteur Léger",
imageSrc: "http://img.b2bpic.net/free-photo/group-young-people-celebrating-new-year-friends-drinks-champagne_1157-44311.jpg",
imageAlt: "Fête d'anniversaire joyeuse",
},
id: "p2", name: "Forfait Anniversaire Premium", price: "À partir de 1200€", variant: "Décoration, DJ, Traiteur Léger", imageSrc: "http://img.b2bpic.net/free-photo/group-young-people-celebrating-new-year-friends-drinks-champagne_1157-44311.jpg", imageAlt: "Fête d'anniversaire joyeuse"},
{
id: "p3",
name: "Forfait Séminaire Complet",
price: "Sur devis",
variant: "Salle, Matériel, Pause Café",
imageSrc: "http://img.b2bpic.net/free-photo/group-graphic-designers-interacting-with-each-other_1170-777.jpg",
imageAlt: "Séminaire professionnel",
},
id: "p3", name: "Forfait Séminaire Complet", price: "Sur devis", variant: "Salle, Matériel, Pause Café", imageSrc: "http://img.b2bpic.net/free-photo/group-graphic-designers-interacting-with-each-other_1170-777.jpg", imageAlt: "Séminaire professionnel"},
{
id: "p4",
name: "Salle Principale",
price: "Jusqu'à 200 personnes",
variant: "Espace modulable, Scène",
imageSrc: "http://img.b2bpic.net/free-photo/inside-museum_1084-54.jpg",
imageAlt: "Grande salle de réception",
},
id: "p4", name: "Salle Principale", price: "Jusqu'à 200 personnes", variant: "Espace modulable, Scène", imageSrc: "http://img.b2bpic.net/free-photo/inside-museum_1084-54.jpg", imageAlt: "Grande salle de réception"},
{
id: "p5",
name: "Salon VIP",
price: "Jusqu'à 30 personnes",
variant: "Intimité, Confort, Prestige",
imageSrc: "http://img.b2bpic.net/free-photo/flower-vase-modern-interior_23-2151928932.jpg",
imageAlt: "Salon VIP exclusif",
},
id: "p5", name: "Salon VIP", price: "Jusqu'à 30 personnes", variant: "Intimité, Confort, Prestige", imageSrc: "http://img.b2bpic.net/free-photo/flower-vase-modern-interior_23-2151928932.jpg", imageAlt: "Salon VIP exclusif"},
{
id: "p6",
name: "Terrasse Panoramique",
price: "Sur devis",
variant: "Vue imprenable, Plein air",
imageSrc: "http://img.b2bpic.net/free-photo/young-adult-having-fun-white-party_23-2149575121.jpg",
imageAlt: "Terrasse panoramique",
},
id: "p6", name: "Terrasse Panoramique", price: "Sur devis", variant: "Vue imprenable, Plein air", imageSrc: "http://img.b2bpic.net/free-photo/young-adult-having-fun-white-party_23-2149575121.jpg", imageAlt: "Terrasse panoramique"},
]}
title="Choisissez Votre Espace ou Forfait"
description="Des forfaits personnalisés pour répondre à toutes vos attentes et tous les budgets."
@@ -238,50 +149,20 @@ export default function LandingPage() {
useInvertedBackground={false}
testimonials={[
{
id: "t1",
name: "Sophie Martin",
handle: "@sophie.m",
testimonial: "La Salle Évasion a rendu notre mariage absolument parfait. Le service était impeccable et le lieu magnifique. Un grand merci à toute l'équipe !",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/serious-businesswoman-with-her-arms-crossed_329181-13505.jpg",
imageAlt: "Photo de Sophie Martin",
},
id: "t1", name: "Sophie Martin", handle: "@sophie.m", testimonial: "La Salle Évasion a rendu notre mariage absolument parfait. Le service était impeccable et le lieu magnifique. Un grand merci à toute l'équipe !", rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/serious-businesswoman-with-her-arms-crossed_329181-13505.jpg", imageAlt: "Photo de Sophie Martin"},
{
id: "t2",
name: "David Dubois",
handle: "@david.d",
testimonial: "Pour notre séminaire annuel, la Salle Évasion a été un choix judicieux. Tout était parfaitement organisé, du matériel technique au service traiteur.",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/virtual-experience_1098-14112.jpg",
imageAlt: "Photo de David Dubois",
},
id: "t2", name: "David Dubois", handle: "@david.d", testimonial: "Pour notre séminaire annuel, la Salle Évasion a été un choix judicieux. Tout était parfaitement organisé, du matériel technique au service traiteur.", rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/virtual-experience_1098-14112.jpg", imageAlt: "Photo de David Dubois"},
{
id: "t3",
name: "Julie et Marc",
handle: "@julie.marc",
testimonial: "Nous avons célébré l'anniversaire de nos 50 ans de mariage ici, et ce fut une soirée magique. L'ambiance était incroyable et le personnel aux petits soins.",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/newlyweds-smile-keep-glasses-with-champagne_8353-9329.jpg",
imageAlt: "Photo de Julie et Marc",
},
id: "t3", name: "Julie et Marc", handle: "@julie.marc", testimonial: "Nous avons célébré l'anniversaire de nos 50 ans de mariage ici, et ce fut une soirée magique. L'ambiance était incroyable et le personnel aux petits soins.", rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/newlyweds-smile-keep-glasses-with-champagne_8353-9329.jpg", imageAlt: "Photo de Julie et Marc"},
{
id: "t4",
name: quipe Innovatech",
handle: "@innovatech",
testimonial: "Nos événements d'entreprise sont toujours un succès à la Salle Évasion. Leur flexibilité et leur professionnalisme sont inégalés.",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/image-lovely-happy-african-american-lady-clenches-fists-from-joy-smiles-broadly-enjoys-success-feels-content-energized_273609-32512.jpg",
imageAlt: "Photo de l'équipe Innovatech",
},
id: "t4", name: "Équipe Innovatech", handle: "@innovatech", testimonial: "Nos événements d'entreprise sont toujours un succès à la Salle Évasion. Leur flexibilité et leur professionnalisme sont inégalés.", rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/image-lovely-happy-african-american-lady-clenches-fists-from-joy-smiles-broadly-enjoys-success-feels-content-energized_273609-32512.jpg", imageAlt: "Photo de l'équipe Innovatech"},
{
id: "t5",
name: "Caroline Leclerc",
handle: "@caro.leclerc",
testimonial: "J'ai organisé la baby shower de ma sœur et tout était si beau ! La décoration était parfaite et le personnel adorable. Je recommande vivement !",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/cool-young-man-angry_1149-1842.jpg",
imageAlt: "Photo de Caroline Leclerc",
},
id: "t5", name: "Caroline Leclerc", handle: "@caro.leclerc", testimonial: "J'ai organisé la baby shower de ma sœur et tout était si beau ! La décoration était parfaite et le personnel adorable. Je recommande vivement !", rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/cool-young-man-angry_1149-1842.jpg", imageAlt: "Photo de Caroline Leclerc"},
]}
showRating={true}
title="Ce que disent nos clients"
@@ -294,14 +175,7 @@ export default function LandingPage() {
textboxLayout="default"
useInvertedBackground={true}
names={[
"Saveurs d'Élite",
"Harmonie Sonore",
"Fleurs & Créations",
"Lux Limousines",
"Capture Photo & Vidéo",
"Concept Événement",
"Traiteur Gourmand",
]}
"Saveurs d'Élite", "Harmonie Sonore", "Fleurs & Créations", "Lux Limousines", "Capture Photo & Vidéo", "Concept Événement", "Traiteur Gourmand"]}
title="Nos Partenaires de Confiance"
description="Nous collaborons avec les meilleurs pour des événements exceptionnels."
/>
@@ -313,20 +187,11 @@ export default function LandingPage() {
useInvertedBackground={false}
faqs={[
{
id: "q1",
title: "Quelle est la capacité maximale de la salle ?",
content: "Notre salle principale peut accueillir jusqu'à 200 personnes assises pour un repas et 300 personnes pour un cocktail debout. Nous avons également des salons plus petits pour des événements intimes.",
},
id: "q1", title: "Quelle est la capacité maximale de la salle ?", content: "Notre salle principale peut accueillir jusqu'à 200 personnes assises pour un repas et 300 personnes pour un cocktail debout. Nous avons également des salons plus petits pour des événements intimes."},
{
id: "q2",
title: "Proposez-vous un service traiteur ?",
content: "Oui, nous proposons un service traiteur interne avec des menus variés et personnalisables pour s'adapter à vos préférences et à votre budget. Nous pouvons également travailler avec votre traiteur si vous le souhaitez.",
},
id: "q2", title: "Proposez-vous un service traiteur ?", content: "Oui, nous proposons un service traiteur interne avec des menus variés et personnalisables pour s'adapter à vos préférences et à votre budget. Nous pouvons également travailler avec votre traiteur si vous le souhaitez."},
{
id: "q3",
title: "Est-il possible de visiter la salle avant de réserver ?",
content: "Absolument ! Nous vous invitons à prendre rendez-vous pour une visite guidée de nos installations. Notre équipe sera ravie de vous présenter les différents espaces et de répondre à toutes vos questions.",
},
id: "q3", title: "Est-il possible de visiter la salle avant de réserver ?", content: "Absolument ! Nous vous invitons à prendre rendez-vous pour une visite guidée de nos installations. Notre équipe sera ravie de vous présenter les différents espaces et de répondre à toutes vos questions."},
]}
title="Questions Fréquentes"
description="Trouvez rapidement les réponses à vos interrogations."
@@ -338,8 +203,7 @@ export default function LandingPage() {
<ContactSplit
useInvertedBackground={true}
background={{
variant: "radial-gradient",
}}
variant: "radial-gradient"}}
tag="Contactez-nous"
title="Réservez Votre Date"
description="Contactez-nous dès aujourd'hui pour discuter de votre prochain événement et obtenir un devis personnalisé."
@@ -356,62 +220,37 @@ export default function LandingPage() {
<FooterBase
columns={[
{
title: "Découvrir",
items: [
title: "Découvrir", items: [
{
label: "Accueil",
href: "#hero",
},
label: "Accueil", href: "/"},
{
label: "À Propos",
href: "#about",
},
label: "À Propos", href: "/#about"},
{
label: "Services",
href: "#services",
},
label: "Services", href: "/#services"},
{
label: "Galerie",
href: "#gallery",
},
label: "Galerie", href: "/#gallery"},
],
},
{
title: "Assistance",
items: [
title: "Assistance", items: [
{
label: "FAQ",
href: "#faq",
},
label: "FAQ", href: "/#faq"},
{
label: "Contact",
href: "#contact",
},
label: "Contact", href: "/contact"},
{
label: "Politique de Confidentialité",
href: "#",
},
label: "Politique de Confidentialité", href: "#"},
{
label: "Conditions Générales",
href: "#",
},
label: "Conditions Générales", href: "#"},
],
},
{
title: "Nous Suivre",
items: [
title: "Nous Suivre", items: [
{
label: "Facebook",
href: "#",
},
label: "Facebook", href: "#"},
{
label: "Instagram",
href: "#",
},
label: "Instagram", href: "#"},
{
label: "LinkedIn",
href: "#",
},
label: "LinkedIn", href: "#"},
],
},
]}
@@ -422,4 +261,4 @@ export default function LandingPage() {
</ReactLenis>
</ThemeProvider>
);
}
}

102
src/app/services/page.tsx Normal file
View File

@@ -0,0 +1,102 @@
"use client";
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
import ReactLenis from "lenis/react";
import NavbarLayoutFloatingOverlay from '@/components/navbar/NavbarLayoutFloatingOverlay/NavbarLayoutFloatingOverlay';
import FeatureCardTwentyThree from '@/components/sections/feature/FeatureCardTwentyThree';
import FooterBase from '@/components/sections/footer/FooterBase';
export default function ServicesPage() {
return (
<ThemeProvider
defaultButtonVariant="shift-hover"
defaultTextAnimation="entrance-slide"
borderRadius="rounded"
contentWidth="mediumSmall"
sizing="large"
background="circleGradient"
cardStyle="subtle-shadow"
primaryButtonStyle="double-inset"
secondaryButtonStyle="glass"
headingFontWeight="extrabold"
>
<ReactLenis root>
<div id="nav" data-section="nav">
<NavbarLayoutFloatingOverlay
navItems={[
{ name: "Accueil", id: "/" },
{ name: "À Propos", id: "/about" },
{ name: "Services", id: "/services" },
{ name: "Galerie", id: "/gallery" },
{ name: "Témoignages", id: "/#testimonials" },
{ name: "FAQ", id: "/#faq" },
{ name: "Contact", id: "/#contact" },
]}
brandName="Salle Évasion"
button={{ text: "Demander un devis", href: "/#contact" }}
/>
</div>
<div id="services" data-section="services">
<FeatureCardTwentyThree
animationType="blur-reveal"
title="Nos Services d'Événements"
description="Découvrez une gamme complète de services pour faire de votre événement un succès inoubliable."
textboxLayout="default"
useInvertedBackground={false}
features={[
{
id: "service-1", title: "Location de Salle", tags: ["Salle", "Location"],
imageSrc: "http://img.b2bpic.net/free-photo/wedding-ceremony-area-in-a-forest-decorated-with-white-flowers-and-rustic-style-details_181624-53900.jpg?_wi=2", imageAlt: "Salle décorée pour un mariage"
},
{
id: "service-2", title: "Traiteur Exclusif", tags: ["Nourriture", "Boissons"],
imageSrc: "http://img.b2bpic.net/free-photo/view-of-table-with-happy-birthday-cake-and-drinks_23-2148405096.jpg?_wi=2", imageAlt: "Buffet traiteur"
},
{
id: "service-3", title: "Organisation Complète", tags: ["Planification", "Coordination"],
imageSrc: "http://img.b2bpic.net/free-photo/large-empty-meeting-room_23-2148782068.jpg?_wi=2", imageAlt: "Équipe d'organisation d'événements"
},
{
id: "service-4", title: "Décoration Thématique", tags: ["Thème", "Ambiance"],
imageSrc: "http://img.b2bpic.net/free-photo/3d-rendering-wedding-reception-hall-illustration_1150-13725.jpg?_wi=2", imageAlt: "Décoration de salle"
}
]}
/>
</div>
<div id="footer" data-section="footer">
<FooterBase
columns={[
{
title: "Découvrir", items: [
{ label: "Accueil", href: "/" },
{ label: "À Propos", href: "/about" },
{ label: "Services", href: "/services" },
{ label: "Galerie", href: "/gallery" },
],
},
{
title: "Assistance", items: [
{ label: "FAQ", href: "/#faq" },
{ label: "Contact", href: "/#contact" },
{ label: "Politique de Confidentialité", href: "#" },
{ label: "Conditions Générales", href: "#" },
],
},
{
title: "Nous Suivre", items: [
{ label: "Facebook", href: "#" },
{ label: "Instagram", href: "#" },
{ label: "LinkedIn", href: "#" },
],
},
]}
logoText="Salle Évasion"
copyrightText="© 2024 Salle Évasion. Tous droits réservés."
/>
</div>
</ReactLenis>
</ThemeProvider>
);
}

View File

@@ -10,15 +10,15 @@
--accent: #ffffff;
--background-accent: #ffffff; */
--background: #f7f6f7;
--card: #ffffff;
--foreground: #0c1325;
--primary-cta: #0798ff;
--primary-cta-text: #f7f6f7;
--secondary-cta: #ffffff;
--secondary-cta-text: #0c1325;
--accent: #93c7ff;
--background-accent: #a8cde8;
--background: #F9F9F9;
--card: #FFFFFF;
--foreground: #1C1C1C;
--primary-cta: #184E3D;
--primary-cta-text: #FFFFFF;
--secondary-cta: #F9F9F9;
--secondary-cta-text: #1C1C1C;
--accent: #D4AF37;
--background-accent: #EAEAEA;
/* text sizing - set by ThemeProvider */
/* --text-2xs: clamp(0.465rem, 0.62vw, 0.62rem);