- Update primary colors to forest green (#0B6029) - Update all page titles to use primary-300/500 colors - Update components (Header, Footer, Button, etc.) - Fix email to thetiptopgr3@gmail.com - Adjust hero section spacing 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
360 lines
20 KiB
TypeScript
360 lines
20 KiB
TypeScript
'use client';
|
||
|
||
import type { Metadata } from "next";
|
||
import { useState } from "react";
|
||
|
||
export default function RulesPage() {
|
||
const [openSection, setOpenSection] = useState<number | null>(null);
|
||
|
||
const toggleSection = (index: number) => {
|
||
setOpenSection(openSection === index ? null : index);
|
||
};
|
||
|
||
return (
|
||
<div className="min-h-screen bg-gradient-to-br from-beige-100 via-beige-50 to-beige-100">
|
||
{/* Hero Section */}
|
||
<section className="bg-gradient-to-r from-white to-beige-50 py-12 border-b-2 border-beige-300">
|
||
<div className="container mx-auto px-4">
|
||
<div className="max-w-4xl mx-auto text-center">
|
||
<h1 className="text-4xl md:text-5xl font-bold text-primary-300 mb-4">
|
||
Règlement du jeu-concours
|
||
</h1>
|
||
<p className="text-lg text-gray-600">
|
||
Toutes les conditions de participation à notre grand jeu-concours "Thé Tip Top"
|
||
pour l'ouverture de notre 10e boutique.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
{/* Résumé Section */}
|
||
<section className="py-8">
|
||
<div className="container mx-auto px-4">
|
||
<div className="max-w-4xl mx-auto">
|
||
<div className="bg-white rounded-xl shadow-md p-6 mb-8 border border-beige-300">
|
||
<div className="flex items-center gap-2 mb-6">
|
||
<span className="text-2xl">📋</span>
|
||
<h2 className="text-2xl font-bold text-gray-800">Résumé du jeu-concours</h2>
|
||
</div>
|
||
|
||
<div className="grid md:grid-cols-3 gap-4">
|
||
{/* 100% gagnants */}
|
||
<div className="bg-gradient-to-br from-primary-50 to-primary-100 rounded-lg p-6 text-center border border-primary-200 hover:shadow-lg transition-shadow">
|
||
<div className="w-16 h-16 mx-auto mb-4 bg-gradient-to-br from-primary-500 to-primary-600 rounded-full flex items-center justify-center text-3xl shadow-lg">🎯</div>
|
||
<div className="text-2xl font-bold text-gray-800 mb-2">100% gagnants</div>
|
||
<p className="text-sm text-gray-600">
|
||
Chaque participant repart avec un lot garanti
|
||
</p>
|
||
</div>
|
||
|
||
{/* 30 + 60 jours */}
|
||
<div className="bg-gradient-to-br from-primary-50 to-primary-100 rounded-lg p-6 text-center border border-primary-200 hover:shadow-lg transition-shadow">
|
||
<div className="w-16 h-16 mx-auto mb-4 bg-gradient-to-br from-primary-500 to-primary-600 rounded-full flex items-center justify-center text-3xl shadow-lg">🔄</div>
|
||
<div className="text-2xl font-bold text-gray-800 mb-2">30 + 60 jours</div>
|
||
<p className="text-sm text-gray-600">
|
||
Validation tickets (30j) + récupération lots (60j)
|
||
</p>
|
||
</div>
|
||
|
||
{/* Grand prix 360€ */}
|
||
<div className="bg-gradient-to-br from-primary-50 to-primary-100 rounded-lg p-6 text-center border border-primary-200 hover:shadow-lg transition-shadow">
|
||
<div className="w-16 h-16 mx-auto mb-4 bg-gradient-to-br from-primary-500 to-primary-600 rounded-full flex items-center justify-center text-3xl shadow-lg">🏆</div>
|
||
<div className="text-2xl font-bold text-gray-800 mb-2">Grand prix 360€</div>
|
||
<p className="text-sm text-gray-600">
|
||
Tirage final sous contrôle d'huissier
|
||
</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
{/* Accordion Sections */}
|
||
<section className="py-8 pb-16">
|
||
<div className="container mx-auto px-4">
|
||
<div className="max-w-4xl mx-auto space-y-4">
|
||
|
||
{/* Section 1 - Conditions de participation */}
|
||
<div className="bg-white rounded-xl shadow-md overflow-hidden border border-beige-300">
|
||
<button
|
||
onClick={() => toggleSection(1)}
|
||
className="w-full flex items-center justify-between p-6 text-left hover:bg-gradient-to-r hover:from-primary-50 hover:to-primary-100 transition-colors"
|
||
>
|
||
<div className="flex items-center gap-3">
|
||
<div className="w-12 h-12 bg-gradient-to-br from-primary-500 to-primary-600 rounded-full flex items-center justify-center text-xl shadow-md">📋</div>
|
||
<h3 className="text-xl font-bold text-gray-800">1. Conditions de participation</h3>
|
||
</div>
|
||
<svg
|
||
className={`w-6 h-6 text-gray-600 transition-transform ${openSection === 1 ? 'rotate-180' : ''}`}
|
||
fill="none"
|
||
stroke="currentColor"
|
||
viewBox="0 0 24 24"
|
||
>
|
||
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M19 9l-7 7-7-7" />
|
||
</svg>
|
||
</button>
|
||
{openSection === 1 && (
|
||
<div className="px-6 pb-6 space-y-4 text-gray-800">
|
||
<p>Le concours est ouvert à toute personne majeure résidant en France métropolitaine ayant effectué un achat d'un montant minimum de 49€ TTC. Pour participer, le participant doit entrer un code unique obtenu lors d'un achat ou d'une opération marketing. </p>
|
||
</div>
|
||
)}
|
||
</div>
|
||
|
||
{/* Section 2 - Codes de participation */}
|
||
<div className="bg-white rounded-xl shadow-md overflow-hidden border border-beige-300">
|
||
<button
|
||
onClick={() => toggleSection(2)}
|
||
className="w-full flex items-center justify-between p-6 text-left hover:bg-gradient-to-r hover:from-primary-50 hover:to-primary-100 transition-colors"
|
||
>
|
||
<div className="flex items-center gap-3">
|
||
<div className="w-12 h-12 bg-gradient-to-br from-primary-500 to-primary-600 rounded-full flex items-center justify-center text-xl shadow-md">🎫</div>
|
||
<h3 className="text-xl font-bold text-gray-800">2. Codes de participation</h3>
|
||
</div>
|
||
<svg
|
||
className={`w-6 h-6 text-gray-600 transition-transform ${openSection === 2 ? 'rotate-180' : ''}`}
|
||
fill="none"
|
||
stroke="currentColor"
|
||
viewBox="0 0 24 24"
|
||
>
|
||
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M19 9l-7 7-7-7" />
|
||
</svg>
|
||
</button>
|
||
{openSection === 2 && (
|
||
<div className="px-6 pb-6 space-y-4 text-gray-800">
|
||
<p>Pour participer au jeu, le participant doit :</p>
|
||
<ol className="list-decimal list-inside space-y-2 ml-4">
|
||
<li>Effectuer un achat de minimum 49€ dans une boutique Thé Tip Top participante</li>
|
||
<li>Récupérer son ticket de caisse comportant un code unique à 10 caractères</li>
|
||
<li>Se rendre sur notre site </li>
|
||
<li>Créer un compte ou se connecter à son compte existant</li>
|
||
<li>Saisir le code figurant sur son ticket dans l'espace dédié</li>
|
||
<li>Découvrir instantanément son gain</li>
|
||
</ol>
|
||
<div className="bg-gradient-to-r from-primary-50 to-primary-100 border-l-4 border-primary-500 p-4 mt-4 rounded">
|
||
<p className="font-semibold text-gray-800">⚠️ Important</p>
|
||
<p className="text-gray-800">Chaque code ne peut être utilisé qu'une seule fois. Toute tentative de fraude entraînera l'exclusion du participant.</p>
|
||
</div>
|
||
</div>
|
||
)}
|
||
</div>
|
||
|
||
{/* Section 3 - Calendrier et délais */}
|
||
<div className="bg-white rounded-xl shadow-md overflow-hidden border border-beige-300">
|
||
<button
|
||
onClick={() => toggleSection(3)}
|
||
className="w-full flex items-center justify-between p-6 text-left hover:bg-gradient-to-r hover:from-primary-50 hover:to-primary-100 transition-colors"
|
||
>
|
||
<div className="flex items-center gap-3">
|
||
<div className="w-12 h-12 bg-gradient-to-br from-primary-500 to-primary-600 rounded-full flex items-center justify-center text-xl shadow-md">🎁</div>
|
||
<h3 className="text-xl font-bold text-gray-800">3. Lots à gagner</h3>
|
||
</div>
|
||
<svg
|
||
className={`w-6 h-6 text-gray-600 transition-transform ${openSection === 3 ? 'rotate-180' : ''}`}
|
||
fill="none"
|
||
stroke="currentColor"
|
||
viewBox="0 0 24 24"
|
||
>
|
||
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M19 9l-7 7-7-7" />
|
||
</svg>
|
||
</button>
|
||
{openSection === 3 && (
|
||
<div className="px-6 pb-6 space-y-4 text-gray-800">
|
||
<div>
|
||
<p className="font-semibold mb-2">Voici ce que tu peux gagner :</p>
|
||
</div>
|
||
<div>
|
||
<ul className="list list-inside space-y-2 ml-4">
|
||
<li>Infuseur à thé (60% des tickets)</li>
|
||
<li>Boîte de 100g de thé détox ou infusion (20% des tickets)</li>
|
||
<li>Boîte de 100g de thé signature (10% des tickets)</li>
|
||
<li>Coffret découverte (valeur 39€ - 6% des tickets)</li>
|
||
<li>Coffret découverte (valeur 69€ - 4% des tickets)</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
)}
|
||
</div>
|
||
|
||
{/* Section 4 - Tirage final Grand Prix */}
|
||
<div className="bg-white rounded-xl shadow-md overflow-hidden border border-beige-300">
|
||
<button
|
||
onClick={() => toggleSection(4)}
|
||
className="w-full flex items-center justify-between p-6 text-left hover:bg-gradient-to-r hover:from-primary-50 hover:to-primary-100 transition-colors"
|
||
>
|
||
<div className="flex items-center gap-3">
|
||
<div className="w-12 h-12 bg-gradient-to-br from-primary-500 to-primary-600 rounded-full flex items-center justify-center text-xl shadow-md">🏆</div>
|
||
<h3 className="text-xl font-bold text-gray-800">4. Tirage final - Grand Prix</h3>
|
||
</div>
|
||
<svg
|
||
className={`w-6 h-6 text-gray-600 transition-transform ${openSection === 4 ? 'rotate-180' : ''}`}
|
||
fill="none"
|
||
stroke="currentColor"
|
||
viewBox="0 0 24 24"
|
||
>
|
||
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M19 9l-7 7-7-7" />
|
||
</svg>
|
||
</button>
|
||
{openSection === 4 && (
|
||
<div className="px-6 pb-6 space-y-4 text-gray-800">
|
||
<p className="font-semibold text-xl">Grand Prix : 1 an de thé offert (valeur 360€)</p>
|
||
<p>À l'issue de la période de participation, un tirage au sort sera organisé pour désigner le grand gagnant du prix principal.</p>
|
||
<div>
|
||
<p className="font-semibold mb-2">Conditions du tirage :</p>
|
||
<ul className="list-disc list-inside space-y-2 ml-4">
|
||
<li>Sous contrôle d'huissier de justice : Maître Dupont, Office Notarial de Paris</li>
|
||
<li>Tous les participants ayant validé au moins un code sont automatiquement inscrits</li>
|
||
</ul>
|
||
</div>
|
||
<div>
|
||
<p className="font-semibold mb-2">Le lot :</p>
|
||
<p>Le gagnant recevra Un an de thé d'une valeur de 360€ !</p>
|
||
|
||
</div>
|
||
<div className="bg-gradient-to-r from-primary-50 to-primary-100 border-l-4 border-primary-500 p-4 mt-4 rounded">
|
||
<p className="font-semibold text-gray-800">🎁 Information</p>
|
||
<p className="text-gray-800">Le gagnant sera contacté par email et par téléphone dans les 48h suivant le tirage.</p>
|
||
</div>
|
||
</div>
|
||
)}
|
||
</div>
|
||
|
||
{/* Section 5 - Retrait des lots */}
|
||
<div className="bg-white rounded-xl shadow-md overflow-hidden border border-beige-300">
|
||
<button
|
||
onClick={() => toggleSection(5)}
|
||
className="w-full flex items-center justify-between p-6 text-left hover:bg-gradient-to-r hover:from-primary-50 hover:to-primary-100 transition-colors"
|
||
>
|
||
<div className="flex items-center gap-3">
|
||
<div className="w-12 h-12 bg-gradient-to-br from-primary-500 to-primary-600 rounded-full flex items-center justify-center text-xl shadow-md">🎁</div>
|
||
<h3 className="text-xl font-bold text-gray-800">5. Retrait des lots</h3>
|
||
</div>
|
||
<svg
|
||
className={`w-6 h-6 text-gray-600 transition-transform ${openSection === 5 ? 'rotate-180' : ''}`}
|
||
fill="none"
|
||
stroke="currentColor"
|
||
viewBox="0 0 24 24"
|
||
>
|
||
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M19 9l-7 7-7-7" />
|
||
</svg>
|
||
</button>
|
||
{openSection === 5 && (
|
||
<div className="px-6 pb-6 space-y-4 text-gray-800">
|
||
<p>Les lots doivent être réclamés dans un délai de <strong>60 jours</strong> (du 1er décembre 2025 au 31 janvier 2026).</p>
|
||
<div>
|
||
<p className="font-semibold mb-2">Modalités de remise :</p>
|
||
<ul className="list-disc list-inside space-y-2 ml-4">
|
||
<li><strong>Infuseur, thé détox/signature :</strong> Retrait en boutique ou envoi postal (frais de port offerts)</li>
|
||
<li><strong>Coffrets découverte et prestige :</strong> Retrait en boutique ou livraison à domicile offerte</li>
|
||
<li><strong>Grand prix (1 an de thé) :</strong> Livraison à l'adresse de votre choix</li>
|
||
</ul>
|
||
</div>
|
||
<div className="bg-red-50 border-l-4 border-red-500 p-4 mt-4 rounded">
|
||
<p className="font-semibold text-red-900">⚠️ Attention</p>
|
||
<p className="text-red-800">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.</p>
|
||
</div>
|
||
</div>
|
||
)}
|
||
</div>
|
||
|
||
{/* Section 6 - Protection des données */}
|
||
<div className="bg-white rounded-xl shadow-md overflow-hidden border border-beige-300">
|
||
<button
|
||
onClick={() => toggleSection(6)}
|
||
className="w-full flex items-center justify-between p-6 text-left hover:bg-gradient-to-r hover:from-primary-50 hover:to-primary-100 transition-colors"
|
||
>
|
||
<div className="flex items-center gap-3">
|
||
<div className="w-12 h-12 bg-gradient-to-br from-primary-500 to-primary-600 rounded-full flex items-center justify-center text-xl shadow-md">🔒</div>
|
||
<h3 className="text-xl font-bold text-gray-800">6. Protection des données personnelles</h3>
|
||
</div>
|
||
<svg
|
||
className={`w-6 h-6 text-gray-600 transition-transform ${openSection === 6 ? 'rotate-180' : ''}`}
|
||
fill="none"
|
||
stroke="currentColor"
|
||
viewBox="0 0 24 24"
|
||
>
|
||
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M19 9l-7 7-7-7" />
|
||
</svg>
|
||
</button>
|
||
{openSection === 6 && (
|
||
<div className="px-6 pb-6 space-y-4 text-gray-800">
|
||
<p>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.</p>
|
||
<div>
|
||
<p className="font-semibold mb-2">Vos droits :</p>
|
||
<ul className="list-disc list-inside space-y-2 ml-4">
|
||
<li>Droit d'accès à vos données personnelles</li>
|
||
<li>Droit de rectification de vos données</li>
|
||
<li>Droit à l'effacement de vos données</li>
|
||
<li>Droit d'opposition au traitement</li>
|
||
<li>Droit à la portabilité des données</li>
|
||
</ul>
|
||
</div>
|
||
<p>Pour exercer vos droits, contactez-nous à : <a href="mailto:contact@thetiptop.fr" className="text-primary-500 underline hover:text-primary-600">contact@thetiptop.fr</a></p>
|
||
<p>Pour plus d'informations, consultez notre <a href="/privacy" className="text-primary-500 underline hover:text-primary-600">Politique de confidentialité</a>.</p>
|
||
</div>
|
||
)}
|
||
</div>
|
||
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
{/* Informations légales Section */}
|
||
<section className="py-16 bg-gradient-to-br from-beige-100 via-beige-50 to-beige-100">
|
||
<div className="container mx-auto px-4">
|
||
<div className="max-w-5xl mx-auto">
|
||
<div className="text-center mb-8">
|
||
<h2 className="text-3xl font-bold text-gray-800 mb-2">Informations légales</h2>
|
||
<p className="text-gray-600">Détails officiels du jeu-concours</p>
|
||
</div>
|
||
|
||
<div className="grid md:grid-cols-2 gap-6 mb-6">
|
||
{/* Organisateur */}
|
||
<div className="bg-white rounded-xl shadow-lg p-6 border-2 border-beige-300 hover:shadow-xl transition-shadow">
|
||
<div className="flex items-center gap-3 mb-4">
|
||
<div className="w-12 h-12 bg-gradient-to-br from-primary-500 to-primary-600 rounded-full flex items-center justify-center shadow-md">
|
||
<span className="text-xl">🏢</span>
|
||
</div>
|
||
<h3 className="text-xl font-bold text-gray-800">Organisateur</h3>
|
||
</div>
|
||
<div className="space-y-2 text-gray-800">
|
||
<p className="font-semibold">Thé Tip Top</p>
|
||
<p className="text-sm">18 rue Léon Frot, 75011 Paris</p>
|
||
<p className="text-sm text-gray-600">SIRET : 901 234 567 00015</p>
|
||
</div>
|
||
</div>
|
||
|
||
{/* Huissier */}
|
||
<div className="bg-white rounded-xl shadow-lg p-6 border-2 border-beige-300 hover:shadow-xl transition-shadow">
|
||
<div className="flex items-center gap-3 mb-4">
|
||
<div className="w-12 h-12 bg-gradient-to-br from-primary-500 to-primary-600 rounded-full flex items-center justify-center shadow-md">
|
||
<span className="text-xl">⚖️</span>
|
||
</div>
|
||
<h3 className="text-xl font-bold text-gray-800">Huissier</h3>
|
||
</div>
|
||
<div className="space-y-2 text-gray-800">
|
||
<p className="font-semibold">Maître Arnaud Rick</p>
|
||
<p className="text-sm">Office Notarial de Paris</p>
|
||
<p className="text-sm">456 Rue de la Justice, 75002 Paris, France</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
{/* Note légale */}
|
||
<div className="bg-gradient-to-r from-primary-500 to-primary-600 rounded-xl shadow-lg p-6 text-white text-center">
|
||
<div className="flex items-center justify-center gap-2 mb-3">
|
||
<span className="text-2xl">📜</span>
|
||
<h3 className="text-lg font-semibold">Note légale</h3>
|
||
</div>
|
||
<p className="text-sm text-white/90 leading-relaxed">
|
||
Jeu-concours gratuit sans obligation d'achat, sauf pour l'acquisition du ticket donnant droit à participation.
|
||
Règlement déposé chez Maître Arnaud Rick, huissier de justice à Paris.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
</div>
|
||
);
|
||
}
|