diff --git a/app/about/page.tsx b/app/about/page.tsx
index 815a5b2..a81c5f9 100644
--- a/app/about/page.tsx
+++ b/app/about/page.tsx
@@ -2,7 +2,9 @@
import type { Metadata } from "next";
import Link from "next/link";
+import Image from "next/image";
import { useState } from "react";
+import { Leaf } from "lucide-react";
export default function AboutPage() {
return (
@@ -45,21 +47,19 @@ export default function AboutPage() {
{/* Image */}
-
- {/* Fallback avec illustration CSS si l'image n'existe pas */}
-
- {/* Motif décoratif */}
-
+
+
-
{/* notre engagement Section */}
@@ -71,7 +71,9 @@ export default function AboutPage() {
-
🍵
+
+
+
Thé bio
Tous nos thés sont certifiés biologiques et cultivés dans le respect de l'environnement.
@@ -108,6 +110,25 @@ export default function AboutPage() {
+
+ {/* Contact Section */}
+
);
}
diff --git a/app/contact/page.tsx b/app/contact/page.tsx
index ccd3fe4..0398f1b 100644
--- a/app/contact/page.tsx
+++ b/app/contact/page.tsx
@@ -27,21 +27,43 @@ export default function ContactPage() {
e.preventDefault();
setIsSubmitting(true);
- // Simulation d'envoi
- await new Promise(resolve => setTimeout(resolve, 1500));
+ try {
+ // Appel à l'API backend
+ const response = await fetch('http://localhost:4000/api/contact', {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ body: JSON.stringify({
+ fullName: formData.fullName,
+ email: formData.email,
+ subject: formData.subject,
+ message: formData.message,
+ }),
+ });
- console.log('Form submitted:', formData);
- alert('Votre message a été envoyé avec succès !');
+ const data = await response.json();
- // Reset form
- setFormData({
- fullName: '',
- email: '',
- subject: '',
- message: '',
- acceptPolicy: false,
- });
- setIsSubmitting(false);
+ if (response.ok && data.success) {
+ alert('✅ Votre message a été envoyé avec succès ! Nous vous répondrons dans les plus brefs délais.');
+
+ // Reset form
+ setFormData({
+ fullName: '',
+ email: '',
+ subject: '',
+ message: '',
+ acceptPolicy: false,
+ });
+ } else {
+ alert('❌ ' + (data.message || 'Une erreur est survenue. Veuillez réessayer.'));
+ }
+ } catch (error) {
+ console.error('Erreur lors de l\'envoi du message:', error);
+ alert('❌ Une erreur est survenue lors de l\'envoi de votre message. Veuillez réessayer.');
+ } finally {
+ setIsSubmitting(false);
+ }
};
return (
@@ -221,18 +243,8 @@ export default function ContactPage() {
Email
diff --git a/app/page.tsx.backup b/app/page.tsx.backup
new file mode 100644
index 0000000..bff6090
--- /dev/null
+++ b/app/page.tsx.backup
@@ -0,0 +1,311 @@
+'use client';
+
+import Link from "next/link";
+import Image from "next/image";
+import Button from "@/components/Button";
+import CountdownTimer from "@/components/CountdownTimer";
+import GamePeriod from "@/components/GamePeriod";
+import GrandPrize from "@/components/GrandPrize";
+import AboutContest from "@/components/AboutContest";
+import { useState } from "react";
+
+export default function HomePage() {
+ const [animationKey] = useState(Date.now());
+
+ return (
+
+ {/* Background avec icônes de thé */}
+
+ {/* Fond dégradé beige clair */}
+
+
+ {/* Icônes de thé dispersées avec animation de descente - 35 icônes */}
+
+ {/* Ligne 1 - 5 icons */}
+
+
+
+
+
+
+ {/* Ligne 2 - 5 icons */}
+
+
+
+
+
+
+ {/* Ligne 3 - 5 icons */}
+
+
+
+
+
+
+ {/* Ligne 4 - 5 icons */}
+
+
+
+
+
+
+ {/* Ligne 5 - 5 icons */}
+
+
+
+
+
+
+ {/* Ligne 6 - 5 icons */}
+
+
+
+
+
+
+ {/* Ligne 7 - 5 icons */}
+
+
+
+
+
+
+
+ {/* Overlay lumineux pour harmoniser */}
+
+
+
+ {/* Hero Section - Bannière principale */}
+
+
+
+
+
+ Jeu Concours Thé Tip Top
+ Nice
+
+
+ À l'occasion de l'ouverture de notre 10ème boutique de thé premium à Nice,
+ participez à notre concours et gagnez des thés et accessoires exclusifs !
+
+
+
+
+
+ Jouer maintenant
+
+
+
+
+
+
+
+ {/* Game Period & Countdown Section */}
+
+
+
+ {/* Countdown Timer */}
+
+
+ {/* Game Period Cards */}
+
+
+ {/* Grand Prize Banner */}
+
+
+
+
+
+ {/* About Contest Section */}
+
+
+ {/* How to Participate Section */}
+
+
+
+
+ Comment participer?
+
+
+ 3 étapes simples pour découvrir votre lot et rejoindre nos milliers de gagnants
+
+
+
+ {/* Step 1 */}
+
+
+ 1
+
+
+
Inscrivez-vous
+
+ Créez votre compte rapidement avec Google, Facebook ou votre email
+
+
+
+ {/* Step 2 */}
+
+
+ 2
+
+
+
Entrez votre code
+
+ Saisissez le code à 10 caractères de votre ticket d'achat à 49€
+
+
+
+ {/* Step 3 */}
+
+
+ 3
+
+
+
Découvrez votre lot
+
+ Résultat immédiat ! 100% des participants remportent un prix
+
+
+
+
+
+
+
+ {/* Prizes Section */}
+
+
+
+
+ Lots à gagner
+
+
+ Découvrez nos magnifiques prix, des accessoires premium aux coffrets exclusifs
+
+
+
+ {/* Prize 1 */}
+
+
+
+
+ 60%
+
+
Infuseur à thé premium
+
+ Un infuseur élégant pour vos thés en vrac
+
+
+
+
+ {/* Prize 2 */}
+
+
+
+
+ 20%
+
+
Boîte 100g thé détox
+
+ Mélange détox aux plantes bio
+
+
+
+
+ {/* Prize 3 */}
+
+
+
+
+ 10%
+
+
Boîte 100g thé signature
+
+ Notre mélange signature exclusif
+
+
+
+
+ {/* Prize 4 */}
+
+
+
+
+ 6%
+
+
Coffret découverte 39€
+
+ Sélection de nos meilleurs thés
+
+
+
+
+ {/* Prize 5 */}
+
+
+
+
+ 4%
+
+
Coffret découverte 69€
+
+ Une expérience complète
+
+
+
+
+
+
+
+
+ Voir tous les lots
+
+
+
+
+
+
+
+
+
+
+
+ );
+}
diff --git a/components/GamePeriod.tsx b/components/GamePeriod.tsx
index 0583063..78b82c2 100644
--- a/components/GamePeriod.tsx
+++ b/components/GamePeriod.tsx
@@ -1,26 +1,6 @@
'use client';
-interface GamePeriodProps {
- purchaseStartDate: Date;
- purchaseEndDate: Date;
- gameStartDate: Date;
- gameEndDate: Date;
-}
-
-export default function GamePeriod({
- purchaseStartDate,
- purchaseEndDate,
- gameStartDate,
- gameEndDate,
-}: GamePeriodProps) {
- const formatDate = (date: Date) => {
- return date.toLocaleDateString('fr-FR', {
- day: 'numeric',
- month: 'long',
- year: 'numeric',
- });
- };
-
+export default function GamePeriod() {
return (
{/* Période d'achat */}
@@ -33,27 +13,9 @@ export default function GamePeriod({
Période d'achat
-
+
Achetez vos tickets de 49€ en boutique et obtenez votre code de participation
-
-
-
-
-
-
- Du {formatDate(purchaseStartDate)}
-
-
-
-
-
-
-
- Au {formatDate(purchaseEndDate)}
-
-
-
@@ -68,27 +30,9 @@ export default function GamePeriod({
Période de jeu
-
+
Utilisez vos tickets pour jouer et découvrir vos lots instantanément
-
-
-
-
-
-
- Du {formatDate(gameStartDate)}
-
-
-
-
-
-
-
- Au {formatDate(gameEndDate)}
-
-
-