|
-
+
{ticket.code}
|
@@ -322,7 +322,7 @@ export default function HistoriquePage() {
)}
@@ -333,7 +333,7 @@ export default function HistoriquePage() {
{getStatusBadge(ticket.status)}
|
-
+ |
{ticket.playedAt
? new Date(ticket.playedAt).toLocaleDateString("fr-FR", {
day: 'numeric',
@@ -344,7 +344,7 @@ export default function HistoriquePage() {
})
: "-"}
|
-
+ |
{ticket.claimedAt
? new Date(ticket.claimedAt).toLocaleDateString("fr-FR", {
day: 'numeric',
diff --git a/app/jeux/page.tsx b/app/jeux/page.tsx
index aca3fc7..47bdc92 100644
--- a/app/jeux/page.tsx
+++ b/app/jeux/page.tsx
@@ -110,28 +110,28 @@ export default function JeuxPage() {
: null;
return (
-
+
{/* Formulaire Section */}
-
-
+
+
🎁 Jouez maintenant !
-
- Bonjour {user?.firstName},
+
+ Bonjour {user?.firstName},
entrez le code de 10 caractères présent sur votre ticket de caisse
-
-
+
+
💡 Bon à savoir :
-
+
- Chaque code ne peut être utilisé qu'une seule fois
- - Consultez vos tickets sur la page Mes gains
+ - Consultez vos tickets sur la page Mes gains
@@ -260,8 +260,8 @@ export default function JeuxPage() {
{/* Loading Animation */}
-
@@ -323,13 +323,13 @@ export default function JeuxPage() {
diff --git a/app/lots/page.tsx b/app/lots/page.tsx
index 8a4821d..0c35914 100644
--- a/app/lots/page.tsx
+++ b/app/lots/page.tsx
@@ -8,15 +8,15 @@ export const metadata: Metadata = {
export default function LotsPage() {
return (
-
+
{/* Hero Section */}
-
+
-
+
Lots à gagner
-
+
Découvrez tous les magnifiques prix de notre jeu-concours. Avec 100% de gagnants garantis,
chaque participant repart avec un lot !
@@ -28,7 +28,7 @@ export default function LotsPage() {
-
+
@@ -36,17 +36,17 @@ export default function LotsPage() {
-
+
GRAND PRIX FINAL
-
+
1 an de thé offert
-
+
Le grand prix du tirage final : une année complète de thé premium livré chez vous
-
- Valeur : 360€ Tirage sous contrôle d'huissier
+
+ Valeur : 360€ Tirage sous contrôle d'huissier
@@ -62,21 +62,21 @@ export default function LotsPage() {
{/* Prize 1 - Infuseur */}
-
-
+
+
-
+
60% des lots
- Infuseur à thé premium
-
+ Infuseur à thé premium
+
Un infuseur en acier inoxydable de haute qualité pour ressortir les arômes de vos thés en vrac
- 15€
-
{/* Prize 2 - Thé détox */}
-
-
+
+
-
+
20% des lots
- Boîte 100g thé détox
-
+ Boîte 100g thé détox
+
Mélange détox aux plantes bio : menthe, citronnelle, fenouil et gingembre
- 25€
-
+ 25€
+
@@ -110,21 +110,21 @@ export default function LotsPage() {
{/* Prize 3 - Thé signature */}
-
-
+
+
-
+
10% des lots
- Boîte 100g thé signature
-
+ Boîte 100g thé signature
+
Notre mélange signature exclusif : Earl Grey aux agrumes et pétales de fleurs
- 35€
-
+ 35€
+
@@ -134,21 +134,21 @@ export default function LotsPage() {
{/* Prize 4 - Coffret 39€ */}
-
-
+
+
-
+
6% des lots
- Coffret découverte 39€
-
+ Coffret découverte 39€
+
Sélection de nos 3 thés premium dans un élégant coffret cadeau
- 39€
-
+ 39€
+
@@ -158,21 +158,21 @@ export default function LotsPage() {
{/* Prize 5 - Coffret 69€ */}
-
-
+
+
-
+
4% des lots
- Coffret prestige 69€
-
+ Coffret prestige 69€
+
Collection premium : 5 thés d'exception avec accessoires dans un coffret luxe
- 69€
-
+ 69€
+
@@ -182,21 +182,21 @@ export default function LotsPage() {
{/* Prize 6 - Tirage Final */}
-
-
+
+
-
+
1 an de THÉ
- Tirage Final
-
+ Tirage Final
+
Valeur 360€ - Livraison mensuelle pendant 12 mois
- 360€
-
+ 360€
+
@@ -213,7 +213,7 @@ export default function LotsPage() {
{/* CTA Section */}
-
+
Prêt à découvrir votre lot ?
@@ -222,7 +222,7 @@ export default function LotsPage() {
tentez votre chance ! Avec 100% de gagnants, vous ne pouvez que gagner.
-
+
Participer maintenant
diff --git a/app/privacy/page.tsx b/app/privacy/page.tsx
index 1265f82..1a2cb7a 100644
--- a/app/privacy/page.tsx
+++ b/app/privacy/page.tsx
@@ -7,19 +7,19 @@ export const metadata: Metadata = {
export default function PrivacyPage() {
return (
-
-
-
+
+
+
Politique de confidentialité
-
+
Dernière mise à jour : 17 janvier 2025
-
+
-
+
1. Introduction
@@ -30,12 +30,12 @@ export default function PrivacyPage() {
-
+
2. Données collectées
Nous collectons les informations suivantes :
- - Informations d identification : nom, prénom, adresse e-mail
+ - Informations d'identification : nom, prénom, adresse e-mail
- Informations de profil : photo de profil (si fournie via OAuth)
- Informations de connexion : via Google ou Facebook OAuth
- Données de participation : codes de tickets, gains remportés
@@ -44,7 +44,7 @@ export default function PrivacyPage() {
-
+
3. Utilisation des données
Vos données sont utilisées pour :
@@ -58,23 +58,23 @@ export default function PrivacyPage() {
-
+
4. Vos droits (RGPD)
Conformément au RGPD, vous disposez des droits suivants :
- - Droit d accès : obtenir une copie de vos données
+ - Droit d'accès : obtenir une copie de vos données
- Droit de rectification : corriger vos données inexactes
- - Droit à l effacement : demander la suppression de vos données
- - Droit d opposition : vous opposer au traitement de vos données
+ - Droit à l'effacement : demander la suppression de vos données
+ - Droit d'opposition : vous opposer au traitement de vos données
- Pour exercer ces droits, contactez-nous à : privacy@thetiptop.fr
+ Pour exercer ces droits, contactez-nous à : privacy@thetiptop.fr
-
+
5. Contact
@@ -82,18 +82,21 @@ export default function PrivacyPage() {
vous pouvez nous contacter :
-
diff --git a/app/profil/page.tsx b/app/profil/page.tsx
index 36d15c4..89bf73d 100644
--- a/app/profil/page.tsx
+++ b/app/profil/page.tsx
@@ -95,48 +95,48 @@ export default function ProfilePage() {
};
return (
-
+
- Mon profil
+ Mon profil
{/* Profile Info Card */}
-
-
- Informations personnelles
+
+
+ Informations personnelles
{!isEditing ? (
-
-
+
Nom
- {user.lastName}
+ {user.lastName}
-
+
Email
- {user.email}
+ {user.email}
-
+
Téléphone
-
+
{user.phone || "Non renseigné"}
-
+
Rôle
@@ -148,7 +148,7 @@ export default function ProfilePage() {
setIsEditing(true)}
- className="bg-[#1a4d2e] hover:bg-[#2d5a3d] text-white font-bold px-6 py-3 rounded-lg transition-all"
+ className="bg-gradient-to-r from-[#d4a574] to-[#c4956a] hover:from-[#e5b685] hover:to-[#d4a574] text-white font-bold px-6 py-3 rounded-lg transition-all shadow-lg hover:scale-105 duration-300"
>
Modifier mes informations
@@ -191,7 +191,7 @@ export default function ProfilePage() {
{isSubmitting ? "Enregistrement..." : "Enregistrer"}
@@ -199,7 +199,7 @@ export default function ProfilePage() {
type="button"
onClick={handleCancel}
disabled={isSubmitting}
- className="border-2 border-gray-300 hover:bg-gray-50 text-gray-700 font-bold px-6 py-3 rounded-lg transition-all"
+ className="border-2 border-[#e5e4dc] hover:bg-[#f5f5f0] text-[#5a5a4e] font-bold px-6 py-3 rounded-lg transition-all"
>
Annuler
@@ -212,13 +212,13 @@ export default function ProfilePage() {
{/* Account Status Card */}
-
-
- Statut du compte
+
+
+ Statut du compte
-
+
Email vérifié
@@ -230,41 +230,33 @@ export default function ProfilePage() {
-
+
Membre depuis
-
+
{formatDate(user.createdAt)}
-
-
- Dernière modification
-
-
- {user.updatedAt ? formatDate(user.updatedAt) : 'N/A'}
-
-
{/* Quick Actions Card */}
-
-
- Actions rapides
+
+
+ Actions rapides
{user.role === "CLIENT" && (
<>
router.push(ROUTES.GAME)}
- className="w-full bg-[#f59e0b] hover:bg-[#d97706] text-white font-bold px-6 py-3 rounded-lg transition-all"
+ className="w-full bg-gradient-to-r from-[#d4a574] to-[#c4956a] hover:from-[#e5b685] hover:to-[#d4a574] text-white font-bold px-6 py-3 rounded-lg transition-all shadow-lg hover:scale-105 duration-300"
>
Jouer
router.push(ROUTES.HISTORY)}
- className="w-full border-2 border-[#1a4d2e] text-[#1a4d2e] hover:bg-[#1a4d2e] hover:text-white font-bold px-6 py-3 rounded-lg transition-all"
+ className="w-full border-2 border-[#d4a574] text-[#d4a574] hover:bg-[#d4a574] hover:text-white font-bold px-6 py-3 rounded-lg transition-all"
>
Historique
@@ -273,7 +265,7 @@ export default function ProfilePage() {
{user.role === "EMPLOYEE" && (
router.push(ROUTES.EMPLOYEE_DASHBOARD)}
- className="w-full border-2 border-[#1a4d2e] text-[#1a4d2e] hover:bg-[#1a4d2e] hover:text-white font-bold px-6 py-3 rounded-lg transition-all"
+ className="w-full border-2 border-[#d4a574] text-[#d4a574] hover:bg-[#d4a574] hover:text-white font-bold px-6 py-3 rounded-lg transition-all"
>
Tableau de bord
@@ -281,7 +273,7 @@ export default function ProfilePage() {
{user.role === "ADMIN" && (
router.push(ROUTES.ADMIN_DASHBOARD)}
- className="w-full border-2 border-[#1a4d2e] text-[#1a4d2e] hover:bg-[#1a4d2e] hover:text-white font-bold px-6 py-3 rounded-lg transition-all"
+ className="w-full border-2 border-[#d4a574] text-[#d4a574] hover:bg-[#d4a574] hover:text-white font-bold px-6 py-3 rounded-lg transition-all"
>
Administration
diff --git a/app/rules/page.tsx b/app/rules/page.tsx
index 403b179..164b485 100644
--- a/app/rules/page.tsx
+++ b/app/rules/page.tsx
@@ -11,15 +11,15 @@ export default function RulesPage() {
};
return (
-
+
{/* Hero Section */}
-
+
-
+
Règlement du jeu-concours
-
+
Toutes les conditions de participation à notre grand jeu-concours "Thé Tip Top"
pour l'ouverture de notre 10e boutique.
@@ -31,36 +31,36 @@ export default function RulesPage() {
-
+
📋
- Résumé du jeu-concours
+ Résumé du jeu-concours
{/* 100% gagnants */}
-
- 🎯
- 100% gagnants
-
+
+ 🎯
+ 100% gagnants
+
Chaque participant repart avec un lot garanti
{/* 30 + 30 jours */}
-
- 🔄
- 30 + 30 jours
-
+
+ 🔄
+ 30 + 30 jours
+
Période de jeu + délai de réclamation
{/* Grand prix 360€ */}
-
- 🏆
- Grand prix 360€
-
+
+ 🏆
+ Grand prix 360€
+
Tirage final sous contrôle d'huissier
@@ -76,17 +76,17 @@ export default function RulesPage() {
{/* Section 1 - Conditions de participation */}
-
+
toggleSection(1)}
- className="w-full flex items-center justify-between p-6 text-left hover:bg-gray-50 transition-colors"
+ className="w-full flex items-center justify-between p-6 text-left hover:bg-gradient-to-r hover:from-[#d4a574]/5 hover:to-[#c4956a]/5 transition-colors"
>
- 📋
- 1. Conditions de participation
+ 📋
+ 1. Conditions de participation
{openSection === 1 && (
-
+
Le jeu est ouvert à toute personne physique majeure résidant en France métropolitaine.
Sont exclus de la participation :
@@ -109,17 +109,17 @@ export default function RulesPage() {
{/* Section 2 - Codes de participation */}
-
+
toggleSection(2)}
- className="w-full flex items-center justify-between p-6 text-left hover:bg-gray-50 transition-colors"
+ className="w-full flex items-center justify-between p-6 text-left hover:bg-gradient-to-r hover:from-[#d4a574]/5 hover:to-[#c4956a]/5 transition-colors"
>
- 🎫
- 2. Codes de participation
+ 🎫
+ 2. Codes de participation
{openSection === 2 && (
-
+
Pour participer au jeu, le participant doit :
- Effectuer un achat de minimum 49€ dans une boutique Thé Tip Top participante
@@ -138,26 +138,26 @@ export default function RulesPage() {
- Saisir le code figurant sur son ticket dans l'espace dédié
- Découvrir instantanément son gain
-
- ⚠️ Important
- Chaque code ne peut être utilisé qu'une seule fois. Toute tentative de fraude entraînera l'exclusion du participant.
+
+ ⚠️ Important
+ Chaque code ne peut être utilisé qu'une seule fois. Toute tentative de fraude entraînera l'exclusion du participant.
)}
{/* Section 3 - Calendrier et délais */}
-
+
toggleSection(3)}
- className="w-full flex items-center justify-between p-6 text-left hover:bg-gray-50 transition-colors"
+ className="w-full flex items-center justify-between p-6 text-left hover:bg-gradient-to-r hover:from-[#d4a574]/5 hover:to-[#c4956a]/5 transition-colors"
>
- 📅
- 3. Calendrier et délais
+ 📅
+ 3. Calendrier et délais
{openSection === 3 && (
-
+
📍 Période de participation
Du 1er janvier 2025 à 00h00 au 31 janvier 2025 à 23h59 (heure de Paris)
@@ -179,26 +179,26 @@ export default function RulesPage() {
📍 Tirage final
Le tirage au sort pour le grand prix (1 an de thé - 360€) aura lieu le 15 février 2025 sous contrôle d'huissier de justice
-
- ✓ À retenir
- Seules les participations enregistrées pendant la période officielle seront prises en compte.
+
+ ✓ À retenir
+ Seules les participations enregistrées pendant la période officielle seront prises en compte.
)}
{/* Section 4 - Tirage final Grand Prix */}
-
+
toggleSection(4)}
- className="w-full flex items-center justify-between p-6 text-left hover:bg-gray-50 transition-colors"
+ className="w-full flex items-center justify-between p-6 text-left hover:bg-gradient-to-r hover:from-[#d4a574]/5 hover:to-[#c4956a]/5 transition-colors"
>
- 🏆
- 4. Tirage final - Grand Prix
+ 🏆
+ 4. Tirage final - Grand Prix
{openSection === 4 && (
-
+
Grand Prix : 1 an de thé offert (valeur 360€)
À l'issue de la période de participation, un tirage au sort sera organisé pour désigner le grand gagnant du prix principal.
@@ -223,26 +223,26 @@ export default function RulesPage() {
Le lot :
Le gagnant recevra pendant 12 mois consécutifs une livraison mensuelle de thé d'une valeur de 30€, soit un total de 360€.
-
- 🎁 Information
- Le gagnant sera contacté par email et par téléphone dans les 48h suivant le tirage.
+
+ 🎁 Information
+ Le gagnant sera contacté par email et par téléphone dans les 48h suivant le tirage.
)}
{/* Section 5 - Retrait des lots */}
-
+
toggleSection(5)}
- className="w-full flex items-center justify-between p-6 text-left hover:bg-gray-50 transition-colors"
+ className="w-full flex items-center justify-between p-6 text-left hover:bg-gradient-to-r hover:from-[#d4a574]/5 hover:to-[#c4956a]/5 transition-colors"
>
- 🎁
- 5. Retrait des lots
+ 🎁
+ 5. Retrait des lots
{openSection === 5 && (
-
+
Les lots doivent être réclamés dans un délai de 30 jours à compter de la date de participation.
Modalités de remise :
@@ -261,7 +261,7 @@ export default function RulesPage() {
Grand prix (1 an de thé) : Livraison mensuelle à l'adresse de votre choix
-
+
⚠️ Attention
Les lots non réclamés dans le délai imparti seront considérés comme abandonnés. Aucun lot ne peut être échangé, remboursé ou converti en espèces.
@@ -270,17 +270,17 @@ export default function RulesPage() {
{/* Section 6 - Protection des données */}
-
+
toggleSection(6)}
- className="w-full flex items-center justify-between p-6 text-left hover:bg-gray-50 transition-colors"
+ className="w-full flex items-center justify-between p-6 text-left hover:bg-gradient-to-r hover:from-[#d4a574]/5 hover:to-[#c4956a]/5 transition-colors"
>
- 🔒
- 6. Protection des données personnelles
+ 🔒
+ 6. Protection des données personnelles
{openSection === 6 && (
-
+
Les données personnelles collectées dans le cadre du jeu font l'objet d'un traitement informatique destiné à gérer la participation au jeu et l'attribution des lots.
Vos droits :
@@ -301,8 +301,8 @@ export default function RulesPage() {
Droit à la portabilité des données
- Pour exercer vos droits, contactez-nous à : contact@thetiptop.fr
- Pour plus d'informations, consultez notre Politique de confidentialité.
+ Pour exercer vos droits, contactez-nous à : contact@thetiptop.fr
+ Pour plus d'informations, consultez notre Politique de confidentialité.
)}
@@ -312,36 +312,58 @@ export default function RulesPage() {
{/* Informations légales Section */}
-
+
-
-
- Informations légales
+
+
+ Informations légales
+ Détails officiels du jeu-concours
+
-
-
- Organisateur
- Thé Tip Top
+
+ {/* Organisateur */}
+
+
+
+ Thé Tip Top
18 Avenue des Thés
75001 Paris, France
- SIRET: 12345678901234
+ SIRET: 12345678901234
+
-
- Huissier
- Maître Dupont
+ {/* Huissier */}
+
+
+
+ Maître Dupont
Office Notarial de Paris
456 Rue de la Justice
75002 Paris, France
+
-
-
- Jeu-concours gratuit sans obligation d'achat, sauf pour l'acquisition du ticket donnant droit à participation.
- Règlement déposé chez Maître Dupont, huissier de justice à Paris.
-
+ {/* Note légale */}
+
+
+ 📜
+ Note légale
+
+ Jeu-concours gratuit sans obligation d'achat, sauf pour l'acquisition du ticket donnant droit à participation.
+ Règlement déposé chez Maître Dupont, huissier de justice à Paris.
+
diff --git a/app/terms/page.tsx b/app/terms/page.tsx
index 8822931..80a8c57 100644
--- a/app/terms/page.tsx
+++ b/app/terms/page.tsx
@@ -7,67 +7,67 @@ export const metadata: Metadata = {
export default function TermsPage() {
return (
-
-
-
- Conditions d utilisation
+
+
+
+ Conditions d'utilisation
-
+
Dernière mise à jour : 17 janvier 2025
-
+
-
+
1. Présentation
Bienvenue sur le site du jeu-concours Thé Tip Top. En accédant à ce site
- et en participant au jeu, vous acceptez d être lié par les présentes
- conditions d utilisation.
+ et en participant au jeu, vous acceptez d'être lié par les présentes
+ conditions d'utilisation.
-
+
2. Objet du jeu-concours
- Thé Tip Top organise un jeu-concours gratuit et sans obligation d achat
+ Thé Tip Top organise un jeu-concours gratuit et sans obligation d'achat
permettant aux participants de gagner des lots en entrant des codes de
- participation fournis lors d achats en magasin.
+ participation fournis lors d'achats en magasin.
-
+
3. Conditions de participation
- Être âgé de 18 ans ou plus
- Résider en France métropolitaine
- Créer un compte avec une adresse e-mail valide
- - Accepter les présentes conditions d utilisation
+ - Accepter les présentes conditions d'utilisation
- Accepter la politique de confidentialité
-
+
4. Modalités de participation
Pour participer :
- Créez un compte sur le site
- - Entrez le code unique figurant sur votre ticket d achat
+ - Entrez le code unique figurant sur votre ticket d'achat
- Découvrez instantanément votre gain
- Suivez les instructions pour récupérer votre lot
-
+
5. Lots à gagner
Les lots suivants sont disponibles :
@@ -82,7 +82,7 @@ export default function TermsPage() {
-
+
6. Récupération des lots
@@ -93,7 +93,7 @@ export default function TermsPage() {
-
+
7. Limitation de responsabilité
@@ -104,7 +104,7 @@ export default function TermsPage() {
-
+
8. Propriété intellectuelle
@@ -116,7 +116,7 @@ export default function TermsPage() {
-
+
9. Modification des conditions
@@ -127,38 +127,41 @@ export default function TermsPage() {
-
+
10. Droit applicable et juridiction
Les présentes conditions sont régies par le droit français. En cas de
- litige, et à défaut d accord amiable, les tribunaux français seront
+ litige, et à défaut d'accord amiable, les tribunaux français seront
seuls compétents.
-
+
11. Contact
- Pour toute question concernant ces conditions d utilisation, vous pouvez
+ Pour toute question concernant ces conditions d'utilisation, vous pouvez
nous contacter :
-
diff --git a/components/Header.tsx b/components/Header.tsx
index 6e532e2..557d521 100644
--- a/components/Header.tsx
+++ b/components/Header.tsx
@@ -47,14 +47,14 @@ export default function Header() {
{/* Main Header */}
-
+
{/* Logo */}
-
+
{/* Desktop Navigation */}
- |