the-tip-top-frontend/app/rules/page.tsx

360 lines
20 KiB
TypeScript
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

'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-[#f5f5f0] via-[#faf9f5] to-[#f5f5f0]">
{/* Hero Section */}
<section className="bg-gradient-to-r from-white to-[#faf9f5] py-12 border-b-2 border-[#e5e4dc]">
<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-[#5a5a4e] mb-4">
Règlement du jeu-concours
</h1>
<p className="text-lg text-[#8a8a7a]">
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-[#e5e4dc]">
<div className="flex items-center gap-2 mb-6">
<span className="text-2xl">📋</span>
<h2 className="text-2xl font-bold text-[#5a5a4e]">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-[#d4a574]/10 to-[#c4956a]/10 rounded-lg p-6 text-center border border-[#d4a574]/20 hover:shadow-lg transition-shadow">
<div className="w-16 h-16 mx-auto mb-4 bg-gradient-to-br from-[#d4a574] to-[#c4956a] rounded-full flex items-center justify-center text-3xl shadow-lg">🎯</div>
<div className="text-2xl font-bold text-[#5a5a4e] mb-2">100% gagnants</div>
<p className="text-sm text-[#8a8a7a]">
Chaque participant repart avec un lot garanti
</p>
</div>
{/* 30 + 30 jours */}
<div className="bg-gradient-to-br from-[#d4a574]/10 to-[#c4956a]/10 rounded-lg p-6 text-center border border-[#d4a574]/20 hover:shadow-lg transition-shadow">
<div className="w-16 h-16 mx-auto mb-4 bg-gradient-to-br from-[#d4a574] to-[#c4956a] rounded-full flex items-center justify-center text-3xl shadow-lg">🔄</div>
<div className="text-2xl font-bold text-[#5a5a4e] mb-2">30 + 30 jours</div>
<p className="text-sm text-[#8a8a7a]">
Période de jeu + délai de réclamation
</p>
</div>
{/* Grand prix 360€ */}
<div className="bg-gradient-to-br from-[#d4a574]/10 to-[#c4956a]/10 rounded-lg p-6 text-center border border-[#d4a574]/20 hover:shadow-lg transition-shadow">
<div className="w-16 h-16 mx-auto mb-4 bg-gradient-to-br from-[#d4a574] to-[#c4956a] rounded-full flex items-center justify-center text-3xl shadow-lg">🏆</div>
<div className="text-2xl font-bold text-[#5a5a4e] mb-2">Grand prix 360€</div>
<p className="text-sm text-[#8a8a7a]">
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-[#e5e4dc]">
<button
onClick={() => toggleSection(1)}
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"
>
<div className="flex items-center gap-3">
<div className="w-12 h-12 bg-gradient-to-br from-[#d4a574] to-[#c4956a] rounded-full flex items-center justify-center text-xl shadow-md">📋</div>
<h3 className="text-xl font-bold text-[#5a5a4e]">1. Conditions de participation</h3>
</div>
<svg
className={`w-6 h-6 text-[#8a8a7a] 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-[#5a5a4e]">
<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-[#e5e4dc]">
<button
onClick={() => toggleSection(2)}
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"
>
<div className="flex items-center gap-3">
<div className="w-12 h-12 bg-gradient-to-br from-[#d4a574] to-[#c4956a] rounded-full flex items-center justify-center text-xl shadow-md">🎫</div>
<h3 className="text-xl font-bold text-[#5a5a4e]">2. Codes de participation</h3>
</div>
<svg
className={`w-6 h-6 text-[#8a8a7a] 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-[#5a5a4e]">
<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-[#d4a574]/10 to-[#c4956a]/10 border-l-4 border-[#d4a574] p-4 mt-4 rounded">
<p className="font-semibold text-[#5a5a4e]"> Important</p>
<p className="text-[#5a5a4e]">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-[#e5e4dc]">
<button
onClick={() => toggleSection(3)}
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"
>
<div className="flex items-center gap-3">
<div className="w-12 h-12 bg-gradient-to-br from-[#d4a574] to-[#c4956a] rounded-full flex items-center justify-center text-xl shadow-md">🎁</div>
<h3 className="text-xl font-bold text-[#5a5a4e]">3. Lots à gagner</h3>
</div>
<svg
className={`w-6 h-6 text-[#8a8a7a] 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-[#5a5a4e]">
<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-[#e5e4dc]">
<button
onClick={() => toggleSection(4)}
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"
>
<div className="flex items-center gap-3">
<div className="w-12 h-12 bg-gradient-to-br from-[#d4a574] to-[#c4956a] rounded-full flex items-center justify-center text-xl shadow-md">🏆</div>
<h3 className="text-xl font-bold text-[#5a5a4e]">4. Tirage final - Grand Prix</h3>
</div>
<svg
className={`w-6 h-6 text-[#8a8a7a] 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-[#5a5a4e]">
<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-[#d4a574]/10 to-[#c4956a]/10 border-l-4 border-[#d4a574] p-4 mt-4 rounded">
<p className="font-semibold text-[#5a5a4e]">🎁 Information</p>
<p className="text-[#5a5a4e]">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-[#e5e4dc]">
<button
onClick={() => toggleSection(5)}
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"
>
<div className="flex items-center gap-3">
<div className="w-12 h-12 bg-gradient-to-br from-[#d4a574] to-[#c4956a] rounded-full flex items-center justify-center text-xl shadow-md">🎁</div>
<h3 className="text-xl font-bold text-[#5a5a4e]">5. Retrait des lots</h3>
</div>
<svg
className={`w-6 h-6 text-[#8a8a7a] 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-[#5a5a4e]">
<p>Les lots doivent être réclamés dans un délai de <strong>30 jours</strong> à compter de la date de participation.</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-[#e5e4dc]">
<button
onClick={() => toggleSection(6)}
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"
>
<div className="flex items-center gap-3">
<div className="w-12 h-12 bg-gradient-to-br from-[#d4a574] to-[#c4956a] rounded-full flex items-center justify-center text-xl shadow-md">🔒</div>
<h3 className="text-xl font-bold text-[#5a5a4e]">6. Protection des données personnelles</h3>
</div>
<svg
className={`w-6 h-6 text-[#8a8a7a] 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-[#5a5a4e]">
<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-[#d4a574] underline hover:text-[#c4956a]">contact@thetiptop.fr</a></p>
<p>Pour plus d'informations, consultez notre <a href="/privacy" className="text-[#d4a574] underline hover:text-[#c4956a]">Politique de confidentialité</a>.</p>
</div>
)}
</div>
</div>
</div>
</section>
{/* Informations légales Section */}
<section className="py-16 bg-gradient-to-br from-[#f5f5f0] via-[#faf9f5] to-[#f5f5f0]">
<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-[#5a5a4e] mb-2">Informations légales</h2>
<p className="text-[#8a8a7a]">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-[#e5e4dc] 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-[#d4a574] to-[#c4956a] rounded-full flex items-center justify-center shadow-md">
<span className="text-xl">🏢</span>
</div>
<h3 className="text-xl font-bold text-[#5a5a4e]">Organisateur</h3>
</div>
<div className="space-y-2 text-[#5a5a4e]">
<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-[#8a8a7a]">SIRET : 901 234 567 00015</p>
</div>
</div>
{/* Huissier */}
<div className="bg-white rounded-xl shadow-lg p-6 border-2 border-[#e5e4dc] 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-[#d4a574] to-[#c4956a] rounded-full flex items-center justify-center shadow-md">
<span className="text-xl">⚖️</span>
</div>
<h3 className="text-xl font-bold text-[#5a5a4e]">Huissier</h3>
</div>
<div className="space-y-2 text-[#5a5a4e]">
<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-[#d4a574] to-[#c4956a] 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>
);
}