Revert to previous version
This commit is contained in:
parent
fa60ac990c
commit
f0c8a35fe4
|
|
@ -78,32 +78,32 @@ export default function ClientPage() {
|
|||
};
|
||||
|
||||
return (
|
||||
<div className="min-h-screen bg-gradient-to-br from-[#f5f5f0] via-[#faf9f5] to-[#f5f5f0] py-8">
|
||||
<div className="min-h-screen bg-gray-50 py-8">
|
||||
<div className="container mx-auto px-4">
|
||||
{/* Welcome Section */}
|
||||
<div className="mb-8">
|
||||
<h1 className="text-4xl font-bold text-[#5a5a4e] mb-2">
|
||||
<h1 className="text-4xl font-bold text-gray-900 mb-2">
|
||||
Bonjour {user?.firstName} ! 👋
|
||||
</h1>
|
||||
<p className="text-[#8a8a7a]">
|
||||
<p className="text-gray-600">
|
||||
Bienvenue dans votre espace client
|
||||
</p>
|
||||
</div>
|
||||
|
||||
{/* Quick Action */}
|
||||
<div className="mb-8">
|
||||
<div className="bg-gradient-to-r from-[#d4a574] to-[#c4956a] text-white rounded-xl shadow-md p-8 border-2 border-[#e5e4dc]">
|
||||
<div className="bg-gradient-to-r from-[#1a4d2e] to-[#2d5a3d] text-white rounded-xl shadow-md p-8">
|
||||
<div className="flex flex-col md:flex-row items-center justify-between gap-4">
|
||||
<div>
|
||||
<h2 className="text-2xl font-bold mb-2">
|
||||
Vous avez un nouveau ticket ?
|
||||
</h2>
|
||||
<p className="text-white/90">
|
||||
<p className="text-green-50">
|
||||
Entrez votre code et découvrez votre gain instantanément
|
||||
</p>
|
||||
</div>
|
||||
<Link href={ROUTES.GAME}>
|
||||
<button className="bg-white text-[#d4a574] hover:bg-[#f5f5f0] font-bold px-8 py-4 rounded-lg transition-all shadow-lg hover:scale-105 duration-300 whitespace-nowrap">
|
||||
<button className="bg-[#f59e0b] hover:bg-[#d97706] text-white font-bold px-8 py-4 rounded-lg transition-all hover:shadow-xl whitespace-nowrap">
|
||||
Jouer maintenant 🎮
|
||||
</button>
|
||||
</Link>
|
||||
|
|
@ -113,13 +113,13 @@ export default function ClientPage() {
|
|||
|
||||
{/* Statistics Cards */}
|
||||
<div className="grid md:grid-cols-3 gap-6 mb-8">
|
||||
<div className="bg-white rounded-xl shadow-md p-6 border border-[#e5e4dc]">
|
||||
<div className="bg-white rounded-xl shadow-md p-6">
|
||||
<div className="flex items-center justify-between">
|
||||
<div>
|
||||
<p className="text-sm font-medium text-[#8a8a7a] mb-2">
|
||||
<p className="text-sm font-medium text-gray-600 mb-2">
|
||||
Total Participations
|
||||
</p>
|
||||
<p className="text-4xl font-bold text-blue-600">
|
||||
<p className="text-4xl font-bold text-gray-900">
|
||||
{stats.total}
|
||||
</p>
|
||||
</div>
|
||||
|
|
@ -131,10 +131,10 @@ export default function ClientPage() {
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<div className="bg-white rounded-xl shadow-md p-6 border border-[#e5e4dc]">
|
||||
<div className="bg-white rounded-xl shadow-md p-6">
|
||||
<div className="flex items-center justify-between">
|
||||
<div>
|
||||
<p className="text-sm font-medium text-[#8a8a7a] mb-2">
|
||||
<p className="text-sm font-medium text-gray-600 mb-2">
|
||||
Gains réclamés
|
||||
</p>
|
||||
<p className="text-4xl font-bold text-green-600">
|
||||
|
|
@ -149,10 +149,10 @@ export default function ClientPage() {
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<div className="bg-white rounded-xl shadow-md p-6 border border-[#e5e4dc]">
|
||||
<div className="bg-white rounded-xl shadow-md p-6">
|
||||
<div className="flex items-center justify-between">
|
||||
<div>
|
||||
<p className="text-sm font-medium text-[#8a8a7a] mb-2">
|
||||
<p className="text-sm font-medium text-gray-600 mb-2">
|
||||
En attente
|
||||
</p>
|
||||
<p className="text-4xl font-bold text-yellow-600">
|
||||
|
|
@ -169,12 +169,12 @@ export default function ClientPage() {
|
|||
</div>
|
||||
|
||||
{/* Recent Tickets */}
|
||||
<div className="bg-white rounded-xl shadow-md overflow-hidden border border-[#e5e4dc]">
|
||||
<div className="px-6 py-4 border-b border-[#e5e4dc]">
|
||||
<div className="bg-white rounded-xl shadow-md overflow-hidden">
|
||||
<div className="px-6 py-4 border-b border-gray-200">
|
||||
<div className="flex items-center justify-between">
|
||||
<h2 className="text-xl font-bold text-[#5a5a4e]">Mes derniers tickets</h2>
|
||||
<h2 className="text-xl font-bold text-gray-900">Mes derniers tickets</h2>
|
||||
<Link href={ROUTES.HISTORY}>
|
||||
<button className="text-[#d4a574] hover:text-[#c4956a] font-semibold text-sm transition-colors">
|
||||
<button className="text-[#1a4d2e] hover:text-[#f59e0b] font-semibold text-sm transition-colors">
|
||||
Voir tout l'historique
|
||||
</button>
|
||||
</Link>
|
||||
|
|
@ -184,11 +184,11 @@ export default function ClientPage() {
|
|||
{tickets.length === 0 ? (
|
||||
<div className="text-center py-12">
|
||||
<div className="text-6xl mb-4">🎲</div>
|
||||
<p className="text-[#8a8a7a] mb-4">
|
||||
<p className="text-gray-600 mb-4">
|
||||
Vous n'avez pas encore participé au jeu
|
||||
</p>
|
||||
<Link href={ROUTES.GAME}>
|
||||
<button 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">
|
||||
<button className="bg-[#f59e0b] hover:bg-[#d97706] text-white font-bold px-6 py-3 rounded-lg transition-all">
|
||||
Jouer maintenant
|
||||
</button>
|
||||
</Link>
|
||||
|
|
@ -197,31 +197,31 @@ export default function ClientPage() {
|
|||
<div className="overflow-x-auto">
|
||||
<table className="min-w-full">
|
||||
<thead>
|
||||
<tr className="border-b border-[#e5e4dc]">
|
||||
<th className="px-6 py-3 text-left text-xs font-semibold text-[#5a5a4e] uppercase tracking-wider">
|
||||
<tr className="border-b border-gray-200">
|
||||
<th className="px-6 py-3 text-left text-xs font-semibold text-gray-700 uppercase tracking-wider">
|
||||
Code Ticket
|
||||
</th>
|
||||
<th className="px-6 py-3 text-left text-xs font-semibold text-[#5a5a4e] uppercase tracking-wider">
|
||||
<th className="px-6 py-3 text-left text-xs font-semibold text-gray-700 uppercase tracking-wider">
|
||||
Gain
|
||||
</th>
|
||||
<th className="px-6 py-3 text-left text-xs font-semibold text-[#5a5a4e] uppercase tracking-wider">
|
||||
<th className="px-6 py-3 text-left text-xs font-semibold text-gray-700 uppercase tracking-wider">
|
||||
Statut
|
||||
</th>
|
||||
<th className="px-6 py-3 text-left text-xs font-semibold text-[#5a5a4e] uppercase tracking-wider">
|
||||
<th className="px-6 py-3 text-left text-xs font-semibold text-gray-700 uppercase tracking-wider">
|
||||
Date
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody className="divide-y divide-[#e5e4dc]">
|
||||
<tbody className="divide-y divide-gray-200">
|
||||
{tickets.slice(0, 5).map((ticket) => {
|
||||
const prizeConfig = ticket.prize
|
||||
? PRIZE_CONFIG[ticket.prize.type as keyof typeof PRIZE_CONFIG]
|
||||
: null;
|
||||
|
||||
return (
|
||||
<tr key={ticket.id} className="hover:bg-gradient-to-r hover:from-[#d4a574]/5 hover:to-[#c4956a]/5 transition-colors">
|
||||
<tr key={ticket.id} className="hover:bg-gray-50 transition-colors">
|
||||
<td className="px-6 py-4 whitespace-nowrap">
|
||||
<span className="font-mono text-sm font-semibold text-[#5a5a4e]">
|
||||
<span className="font-mono text-sm font-semibold text-gray-900">
|
||||
{ticket.code}
|
||||
</span>
|
||||
</td>
|
||||
|
|
@ -257,7 +257,7 @@ export default function ClientPage() {
|
|||
)}
|
||||
</div>
|
||||
<div>
|
||||
<p className="text-sm font-medium text-[#5a5a4e]">
|
||||
<p className="text-sm font-medium text-gray-900">
|
||||
{prizeConfig.name}
|
||||
</p>
|
||||
</div>
|
||||
|
|
@ -268,7 +268,7 @@ export default function ClientPage() {
|
|||
<td className="px-6 py-4 whitespace-nowrap">
|
||||
{getStatusBadge(ticket.status)}
|
||||
</td>
|
||||
<td className="px-6 py-4 whitespace-nowrap text-sm text-[#8a8a7a]">
|
||||
<td className="px-6 py-4 whitespace-nowrap text-sm text-gray-600">
|
||||
{ticket.playedAt ? new Date(ticket.playedAt).toLocaleDateString("fr-FR") : "-"}
|
||||
</td>
|
||||
</tr>
|
||||
|
|
|
|||
|
|
@ -45,15 +45,15 @@ export default function ContactPage() {
|
|||
};
|
||||
|
||||
return (
|
||||
<div className="min-h-screen bg-gradient-to-br from-[#f5f5f0] via-[#faf9f5] to-[#f5f5f0]">
|
||||
<div className="min-h-screen bg-gray-50">
|
||||
{/* Hero Section */}
|
||||
<section className="bg-gradient-to-r from-white to-[#faf9f5] py-12 border-b-2 border-[#e5e4dc]">
|
||||
<section className="bg-white py-12">
|
||||
<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">
|
||||
<h1 className="text-4xl md:text-5xl font-bold text-gray-900 mb-4">
|
||||
Contactez-nous
|
||||
</h1>
|
||||
<p className="text-lg text-[#8a8a7a]">
|
||||
<p className="text-lg text-gray-600">
|
||||
Une question sur le jeu-concours ? Besoin d'aide ? Notre équipe est là pour vous accompagner !
|
||||
</p>
|
||||
</div>
|
||||
|
|
@ -68,13 +68,13 @@ export default function ContactPage() {
|
|||
|
||||
{/* Contact Form */}
|
||||
<div>
|
||||
<div className="bg-white rounded-xl shadow-md p-8 border border-[#e5e4dc]">
|
||||
<h2 className="text-2xl font-bold text-[#5a5a4e] mb-6">Envoyez-nous un message</h2>
|
||||
<div className="bg-white rounded-xl shadow-md p-8">
|
||||
<h2 className="text-2xl font-bold text-gray-900 mb-6">Envoyez-nous un message</h2>
|
||||
|
||||
<form onSubmit={handleSubmit} className="space-y-6">
|
||||
{/* Nom complet */}
|
||||
<div>
|
||||
<label htmlFor="fullName" className="block text-sm font-semibold text-[#5a5a4e] mb-2">
|
||||
<label htmlFor="fullName" className="block text-sm font-semibold text-gray-700 mb-2">
|
||||
Nom complet <span className="text-red-500">*</span>
|
||||
</label>
|
||||
<input
|
||||
|
|
@ -85,13 +85,13 @@ export default function ContactPage() {
|
|||
value={formData.fullName}
|
||||
onChange={handleChange}
|
||||
placeholder="Votre nom et prénom"
|
||||
className="w-full px-4 py-3 border-2 border-[#e5e4dc] rounded-lg focus:outline-none focus:ring-2 focus:ring-[#d4a574] focus:border-[#d4a574]"
|
||||
className="w-full px-4 py-3 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-[#1a4d2e] focus:border-transparent"
|
||||
/>
|
||||
</div>
|
||||
|
||||
{/* Email */}
|
||||
<div>
|
||||
<label htmlFor="email" className="block text-sm font-semibold text-[#5a5a4e] mb-2">
|
||||
<label htmlFor="email" className="block text-sm font-semibold text-gray-700 mb-2">
|
||||
Email <span className="text-red-500">*</span>
|
||||
</label>
|
||||
<input
|
||||
|
|
@ -102,13 +102,13 @@ export default function ContactPage() {
|
|||
value={formData.email}
|
||||
onChange={handleChange}
|
||||
placeholder="votre@email.com"
|
||||
className="w-full px-4 py-3 border-2 border-[#e5e4dc] rounded-lg focus:outline-none focus:ring-2 focus:ring-[#d4a574] focus:border-[#d4a574]"
|
||||
className="w-full px-4 py-3 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-[#1a4d2e] focus:border-transparent"
|
||||
/>
|
||||
</div>
|
||||
|
||||
{/* Sujet */}
|
||||
<div>
|
||||
<label htmlFor="subject" className="block text-sm font-semibold text-[#5a5a4e] mb-2">
|
||||
<label htmlFor="subject" className="block text-sm font-semibold text-gray-700 mb-2">
|
||||
Sujet <span className="text-red-500">*</span>
|
||||
</label>
|
||||
<select
|
||||
|
|
@ -117,7 +117,7 @@ export default function ContactPage() {
|
|||
required
|
||||
value={formData.subject}
|
||||
onChange={handleChange}
|
||||
className="w-full px-4 py-3 border-2 border-[#e5e4dc] rounded-lg focus:outline-none focus:ring-2 focus:ring-[#d4a574] focus:border-[#d4a574] bg-white"
|
||||
className="w-full px-4 py-3 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-[#1a4d2e] focus:border-transparent bg-white"
|
||||
>
|
||||
<option value="">Sélectionnez un sujet</option>
|
||||
<option value="jeu-concours">Question sur le jeu-concours</option>
|
||||
|
|
@ -130,7 +130,7 @@ export default function ContactPage() {
|
|||
|
||||
{/* Message */}
|
||||
<div>
|
||||
<label htmlFor="message" className="block text-sm font-semibold text-[#5a5a4e] mb-2">
|
||||
<label htmlFor="message" className="block text-sm font-semibold text-gray-700 mb-2">
|
||||
Message <span className="text-red-500">*</span>
|
||||
</label>
|
||||
<textarea
|
||||
|
|
@ -141,7 +141,7 @@ export default function ContactPage() {
|
|||
onChange={handleChange}
|
||||
placeholder="Décrivez votre demande en détail..."
|
||||
rows={6}
|
||||
className="w-full px-4 py-3 border-2 border-[#e5e4dc] rounded-lg focus:outline-none focus:ring-2 focus:ring-[#d4a574] focus:border-[#d4a574] resize-none"
|
||||
className="w-full px-4 py-3 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-[#1a4d2e] focus:border-transparent resize-none"
|
||||
/>
|
||||
</div>
|
||||
|
||||
|
|
@ -154,11 +154,11 @@ export default function ContactPage() {
|
|||
required
|
||||
checked={formData.acceptPolicy}
|
||||
onChange={handleCheckboxChange}
|
||||
className="mt-1 w-5 h-5 text-[#d4a574] border-[#e5e4dc] rounded focus:ring-2 focus:ring-[#d4a574]"
|
||||
className="mt-1 w-5 h-5 text-[#1a4d2e] border-gray-300 rounded focus:ring-2 focus:ring-[#1a4d2e]"
|
||||
/>
|
||||
<label htmlFor="acceptPolicy" className="text-sm text-[#5a5a4e] select-none cursor-pointer">
|
||||
<label htmlFor="acceptPolicy" className="text-sm text-gray-700 select-none cursor-pointer">
|
||||
J'accepte que mes données soient collectées et traitées conformément à la{' '}
|
||||
<Link href="/privacy" className="text-[#d4a574] underline hover:text-[#c4956a]">
|
||||
<Link href="/privacy" className="text-[#1a4d2e] underline hover:text-[#f59e0b]">
|
||||
politique de confidentialité
|
||||
</Link>{' '}
|
||||
<span className="text-red-500">*</span>
|
||||
|
|
@ -170,7 +170,7 @@ export default function ContactPage() {
|
|||
<button
|
||||
type="submit"
|
||||
disabled={isSubmitting}
|
||||
className="w-full bg-gradient-to-r from-[#d4a574] to-[#c4956a] hover:from-[#e5b685] hover:to-[#d4a574] disabled:from-gray-400 disabled:to-gray-500 text-white font-bold px-8 py-4 rounded-lg transition-all duration-300 shadow-lg hover:shadow-[0_0_20px_rgba(212,165,116,0.6)] hover:scale-105"
|
||||
className="w-full bg-[#1a4d2e] hover:bg-[#2d5a3d] disabled:bg-gray-400 text-white font-bold px-8 py-4 rounded-lg transition-all"
|
||||
>
|
||||
{isSubmitting ? "Envoi en cours..." : "Envoyer le message"}
|
||||
</button>
|
||||
|
|
@ -183,16 +183,16 @@ export default function ContactPage() {
|
|||
<div className="space-y-6">
|
||||
|
||||
{/* Nos coordonnées */}
|
||||
<div className="bg-white rounded-xl shadow-md p-8 border border-[#e5e4dc]">
|
||||
<h2 className="text-2xl font-bold text-[#5a5a4e] mb-6">Nos coordonnées</h2>
|
||||
<div className="bg-white rounded-xl shadow-md p-8">
|
||||
<h2 className="text-2xl font-bold text-gray-900 mb-6">Nos coordonnées</h2>
|
||||
|
||||
<div className="space-y-6">
|
||||
{/* Siège social */}
|
||||
<div className="flex items-start gap-4">
|
||||
<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 flex-shrink-0">📍</div>
|
||||
<div className="text-2xl flex-shrink-0">📍</div>
|
||||
<div>
|
||||
<h3 className="font-semibold text-[#5a5a4e] mb-1">Siège social</h3>
|
||||
<p className="text-[#8a8a7a] text-sm">
|
||||
<h3 className="font-semibold text-gray-900 mb-1">Siège social</h3>
|
||||
<p className="text-gray-600 text-sm">
|
||||
Thé Tip Top<br />
|
||||
123 Avenue des Thés<br />
|
||||
75001 Paris, France
|
||||
|
|
@ -202,11 +202,11 @@ export default function ContactPage() {
|
|||
|
||||
{/* Téléphone */}
|
||||
<div className="flex items-start gap-4">
|
||||
<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 flex-shrink-0">📞</div>
|
||||
<div className="text-2xl flex-shrink-0">📞</div>
|
||||
<div>
|
||||
<h3 className="font-semibold text-[#5a5a4e] mb-1">Téléphone</h3>
|
||||
<p className="text-[#8a8a7a] text-sm">
|
||||
<a href="tel:+33123456789" className="hover:text-[#d4a574] transition-colors">
|
||||
<h3 className="font-semibold text-gray-900 mb-1">Téléphone</h3>
|
||||
<p className="text-gray-600 text-sm">
|
||||
<a href="tel:+33123456789" className="hover:text-[#1a4d2e] transition-colors">
|
||||
+33 1 23 45 67 89
|
||||
</a><br />
|
||||
<span className="text-xs">Du lundi au vendredi<br />9h00 - 18h00</span>
|
||||
|
|
@ -216,22 +216,22 @@ export default function ContactPage() {
|
|||
|
||||
{/* Email */}
|
||||
<div className="flex items-start gap-4">
|
||||
<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 flex-shrink-0">✉️</div>
|
||||
<div className="text-2xl flex-shrink-0">✉️</div>
|
||||
<div>
|
||||
<h3 className="font-semibold text-[#5a5a4e] mb-1">Email</h3>
|
||||
<div className="text-[#8a8a7a] text-sm space-y-1">
|
||||
<h3 className="font-semibold text-gray-900 mb-1">Email</h3>
|
||||
<div className="text-gray-600 text-sm space-y-1">
|
||||
<p>
|
||||
<a href="mailto:contact@thetiptop.com" className="hover:text-[#d4a574] transition-colors">
|
||||
<a href="mailto:contact@thetiptop.com" className="hover:text-[#1a4d2e] transition-colors">
|
||||
contact@thetiptop.com
|
||||
</a>
|
||||
</p>
|
||||
<p>
|
||||
<a href="mailto:support@thetiptop.com" className="hover:text-[#d4a574] transition-colors">
|
||||
<a href="mailto:support@thetiptop.com" className="hover:text-[#1a4d2e] transition-colors">
|
||||
support@thetiptop.com
|
||||
</a>
|
||||
</p>
|
||||
<p>
|
||||
<a href="mailto:privacy@thetiptop.com" className="hover:text-[#d4a574] transition-colors">
|
||||
<a href="mailto:privacy@thetiptop.com" className="hover:text-[#1a4d2e] transition-colors">
|
||||
privacy@thetiptop.com
|
||||
</a>
|
||||
</p>
|
||||
|
|
@ -241,10 +241,10 @@ export default function ContactPage() {
|
|||
|
||||
{/* Service client */}
|
||||
<div className="flex items-start gap-4">
|
||||
<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 flex-shrink-0">🕐</div>
|
||||
<div className="text-2xl flex-shrink-0">🕐</div>
|
||||
<div>
|
||||
<h3 className="font-semibold text-[#5a5a4e] mb-1">Service client</h3>
|
||||
<p className="text-[#8a8a7a] text-sm">
|
||||
<h3 className="font-semibold text-gray-900 mb-1">Service client</h3>
|
||||
<p className="text-gray-600 text-sm">
|
||||
Réponse sous 24h<br />
|
||||
Support multilingue<br />
|
||||
Du lundi au samedi
|
||||
|
|
@ -255,49 +255,49 @@ export default function ContactPage() {
|
|||
</div>
|
||||
|
||||
{/* Nos boutiques */}
|
||||
<div className="bg-white rounded-xl shadow-md p-8 border border-[#e5e4dc]">
|
||||
<h2 className="text-2xl font-bold text-[#5a5a4e] mb-6">Nos boutiques</h2>
|
||||
<div className="bg-white rounded-xl shadow-md p-8">
|
||||
<h2 className="text-2xl font-bold text-gray-900 mb-6">Nos boutiques</h2>
|
||||
|
||||
<div className="space-y-4">
|
||||
{/* Boutique 1 */}
|
||||
<div className="pb-4 border-b border-[#e5e4dc]">
|
||||
<h3 className="font-semibold text-[#5a5a4e] mb-2">Paris Rivoli</h3>
|
||||
<p className="text-[#8a8a7a] text-sm mb-1">
|
||||
<div className="pb-4 border-b border-gray-200">
|
||||
<h3 className="font-semibold text-gray-900 mb-2">Paris Rivoli</h3>
|
||||
<p className="text-gray-600 text-sm mb-1">
|
||||
123 Rue de Rivoli, 75001 Paris
|
||||
</p>
|
||||
<p className="text-sm text-[#8a8a7a]">01 23 45 67 89</p>
|
||||
<p className="text-sm text-gray-500">01 23 45 67 89</p>
|
||||
</div>
|
||||
|
||||
{/* Boutique 2 */}
|
||||
<div className="pb-4 border-b border-[#e5e4dc]">
|
||||
<h3 className="font-semibold text-[#5a5a4e] mb-2">Paris Saint-Germain</h3>
|
||||
<p className="text-[#8a8a7a] text-sm mb-1">
|
||||
<div className="pb-4 border-b border-gray-200">
|
||||
<h3 className="font-semibold text-gray-900 mb-2">Paris Saint-Germain</h3>
|
||||
<p className="text-gray-600 text-sm mb-1">
|
||||
45 Boulevard Saint-Germain, 75006 Paris
|
||||
</p>
|
||||
<p className="text-sm text-[#8a8a7a]">01 23 45 67 90</p>
|
||||
<p className="text-sm text-gray-500">01 23 45 67 90</p>
|
||||
</div>
|
||||
|
||||
{/* Boutique 3 */}
|
||||
<div className="pb-4 border-b border-[#e5e4dc]">
|
||||
<h3 className="font-semibold text-[#5a5a4e] mb-2">Lyon République</h3>
|
||||
<p className="text-[#8a8a7a] text-sm mb-1">
|
||||
<div className="pb-4 border-b border-gray-200">
|
||||
<h3 className="font-semibold text-gray-900 mb-2">Lyon République</h3>
|
||||
<p className="text-gray-600 text-sm mb-1">
|
||||
78 Rue de la République, 69002 Lyon
|
||||
</p>
|
||||
<p className="text-sm text-[#8a8a7a]">04 12 34 56 78</p>
|
||||
<p className="text-sm text-gray-500">04 12 34 56 78</p>
|
||||
</div>
|
||||
|
||||
{/* Boutique 4 */}
|
||||
<div>
|
||||
<h3 className="font-semibold text-[#5a5a4e] mb-2">Marseille Canebière</h3>
|
||||
<p className="text-[#8a8a7a] text-sm mb-1">
|
||||
<h3 className="font-semibold text-gray-900 mb-2">Marseille Canebière</h3>
|
||||
<p className="text-gray-600 text-sm mb-1">
|
||||
32 La Canebière, 13001 Marseille
|
||||
</p>
|
||||
<p className="text-sm text-[#8a8a7a]">04 91 23 45 67</p>
|
||||
<p className="text-sm text-gray-500">04 91 23 45 67</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="mt-6 pt-6 border-t border-[#e5e4dc]">
|
||||
<p className="text-xs text-[#8a8a7a] flex items-start gap-2">
|
||||
<div className="mt-6 pt-6 border-t border-gray-200">
|
||||
<p className="text-xs text-gray-500 flex items-start gap-2">
|
||||
<span>💡</span>
|
||||
<span>Retrouvez toutes nos boutiques et leurs horaires sur notre site principal</span>
|
||||
</p>
|
||||
|
|
@ -314,17 +314,17 @@ export default function ContactPage() {
|
|||
<section className="py-12">
|
||||
<div className="container mx-auto px-4">
|
||||
<div className="max-w-4xl mx-auto">
|
||||
<div className="bg-gradient-to-r from-[#d4a574]/10 to-[#c4956a]/10 rounded-xl p-8 border-l-4 border-[#d4a574] shadow-lg">
|
||||
<div className="bg-gradient-to-r from-yellow-50 to-yellow-100 rounded-xl p-8 border-l-4 border-yellow-500">
|
||||
<div className="flex items-start gap-4">
|
||||
<div className="w-16 h-16 bg-gradient-to-br from-[#d4a574] to-[#c4956a] rounded-full flex items-center justify-center text-3xl shadow-md flex-shrink-0">💡</div>
|
||||
<div className="text-3xl">💡</div>
|
||||
<div className="flex-1">
|
||||
<h3 className="text-xl font-bold text-[#5a5a4e] mb-2">Avant de nous contacter</h3>
|
||||
<p className="text-[#5a5a4e] mb-4">
|
||||
<h3 className="text-xl font-bold text-gray-900 mb-2">Avant de nous contacter</h3>
|
||||
<p className="text-gray-700 mb-4">
|
||||
Consultez notre FAQ, vous y trouverez peut-être la réponse à votre question !
|
||||
</p>
|
||||
<Link
|
||||
href="/faq"
|
||||
className="inline-flex items-center justify-center 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 duration-300 shadow-lg hover:scale-105"
|
||||
className="inline-flex items-center justify-center bg-[#f59e0b] hover:bg-[#d97706] text-white font-bold px-6 py-3 rounded-lg transition-all"
|
||||
>
|
||||
Voir la FAQ
|
||||
</Link>
|
||||
|
|
|
|||
|
|
@ -63,14 +63,14 @@ const faqData: FAQ[] = [
|
|||
];
|
||||
|
||||
const categories = [
|
||||
{ name: "Participation", color: "bg-gradient-to-r from-[#d4a574]/20 to-[#c4956a]/20 text-[#c4956a]" },
|
||||
{ name: "Codes", color: "bg-gradient-to-r from-[#d4a574]/20 to-[#c4956a]/20 text-[#c4956a]" },
|
||||
{ name: "Compte", color: "bg-gradient-to-r from-[#d4a574]/20 to-[#c4956a]/20 text-[#c4956a]" },
|
||||
{ name: "Délais", color: "bg-gradient-to-r from-[#d4a574]/20 to-[#c4956a]/20 text-[#c4956a]" },
|
||||
{ name: "Retrait", color: "bg-gradient-to-r from-[#d4a574]/20 to-[#c4956a]/20 text-[#c4956a]" },
|
||||
{ name: "Tirage final", color: "bg-gradient-to-r from-[#d4a574]/20 to-[#c4956a]/20 text-[#c4956a]" },
|
||||
{ name: "Données", color: "bg-gradient-to-r from-[#d4a574]/20 to-[#c4956a]/20 text-[#c4956a]" },
|
||||
{ name: "Technique", color: "bg-gradient-to-r from-[#d4a574]/20 to-[#c4956a]/20 text-[#c4956a]" },
|
||||
{ name: "Participation", color: "bg-green-100 text-green-700" },
|
||||
{ name: "Codes", color: "bg-blue-100 text-blue-700" },
|
||||
{ name: "Compte", color: "bg-purple-100 text-purple-700" },
|
||||
{ name: "Délais", color: "bg-orange-100 text-orange-700" },
|
||||
{ name: "Retrait", color: "bg-teal-100 text-teal-700" },
|
||||
{ name: "Tirage final", color: "bg-yellow-100 text-yellow-700" },
|
||||
{ name: "Données", color: "bg-pink-100 text-pink-700" },
|
||||
{ name: "Technique", color: "bg-gray-100 text-gray-700" },
|
||||
];
|
||||
|
||||
export default function FAQContent() {
|
||||
|
|
@ -96,15 +96,15 @@ export default function FAQContent() {
|
|||
};
|
||||
|
||||
return (
|
||||
<div className="min-h-screen bg-gradient-to-br from-[#f5f5f0] via-[#faf9f5] to-[#f5f5f0]">
|
||||
<div className="min-h-screen bg-gray-50">
|
||||
{/* Hero Section */}
|
||||
<section className="bg-gradient-to-r from-white to-[#faf9f5] py-12 border-b-2 border-[#e5e4dc]">
|
||||
<section className="bg-white py-12">
|
||||
<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">
|
||||
<h1 className="text-4xl md:text-5xl font-bold text-gray-900 mb-4">
|
||||
Questions fréquentes
|
||||
</h1>
|
||||
<p className="text-lg text-[#8a8a7a]">
|
||||
<p className="text-lg text-gray-600">
|
||||
Trouvez rapidement les réponses à vos questions sur notre jeu-concours Thé Tip Top.
|
||||
</p>
|
||||
</div>
|
||||
|
|
@ -121,10 +121,10 @@ export default function FAQContent() {
|
|||
placeholder="Rechercher une question..."
|
||||
value={searchQuery}
|
||||
onChange={(e) => setSearchQuery(e.target.value)}
|
||||
className="w-full px-4 py-3 pl-12 border-2 border-[#e5e4dc] rounded-lg focus:outline-none focus:ring-2 focus:ring-[#d4a574] focus:border-[#d4a574] bg-white shadow-sm"
|
||||
className="w-full px-4 py-3 pl-12 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-[#1a4d2e] focus:border-transparent"
|
||||
/>
|
||||
<svg
|
||||
className="absolute left-4 top-1/2 transform -translate-y-1/2 w-5 h-5 text-[#8a8a7a]"
|
||||
className="absolute left-4 top-1/2 transform -translate-y-1/2 w-5 h-5 text-gray-400"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
viewBox="0 0 24 24"
|
||||
|
|
@ -152,10 +152,10 @@ export default function FAQContent() {
|
|||
onClick={() => setSelectedCategory(
|
||||
selectedCategory === category.name ? null : category.name
|
||||
)}
|
||||
className={`px-4 py-2 rounded-full text-sm font-semibold transition-all ${
|
||||
className={`px-4 py-2 rounded-full text-sm font-medium transition-all ${
|
||||
selectedCategory === category.name
|
||||
? 'bg-gradient-to-r from-[#d4a574] to-[#c4956a] text-white shadow-lg ring-2 ring-offset-2 ring-[#d4a574]'
|
||||
: category.color + ' hover:shadow-md border border-[#d4a574]/30'
|
||||
? category.color + ' ring-2 ring-offset-2 ring-green-500'
|
||||
: category.color + ' hover:opacity-80'
|
||||
}`}
|
||||
>
|
||||
{category.name}
|
||||
|
|
@ -171,15 +171,15 @@ export default function FAQContent() {
|
|||
<div className="container mx-auto px-4">
|
||||
<div className="max-w-4xl mx-auto space-y-3">
|
||||
{filteredFAQs.length === 0 ? (
|
||||
<div className="bg-white rounded-xl shadow-md p-8 text-center text-[#8a8a7a] border border-[#e5e4dc]">
|
||||
<div className="bg-white rounded-xl shadow-md p-8 text-center text-gray-500">
|
||||
Aucune question ne correspond à votre recherche.
|
||||
</div>
|
||||
) : (
|
||||
filteredFAQs.map((faq, index) => (
|
||||
<div key={index} className="bg-white rounded-xl shadow-md overflow-hidden border border-[#e5e4dc]">
|
||||
<div key={index} className="bg-white rounded-xl shadow-md overflow-hidden">
|
||||
<button
|
||||
onClick={() => toggleQuestion(index)}
|
||||
className="w-full flex items-start justify-between p-6 text-left hover:bg-gradient-to-r hover:from-[#d4a574]/5 hover:to-[#c4956a]/5 transition-colors"
|
||||
className="w-full flex items-start justify-between p-6 text-left hover:bg-gray-50 transition-colors"
|
||||
>
|
||||
<div className="flex-1 pr-4">
|
||||
<div className="flex items-center gap-2 mb-2">
|
||||
|
|
@ -187,10 +187,10 @@ export default function FAQContent() {
|
|||
{faq.category}
|
||||
</span>
|
||||
</div>
|
||||
<h3 className="text-lg font-semibold text-[#5a5a4e]">{faq.question}</h3>
|
||||
<h3 className="text-lg font-semibold text-gray-900">{faq.question}</h3>
|
||||
</div>
|
||||
<svg
|
||||
className={`w-6 h-6 text-[#8a8a7a] flex-shrink-0 transition-transform ${
|
||||
className={`w-6 h-6 text-gray-500 flex-shrink-0 transition-transform ${
|
||||
openQuestion === index ? 'rotate-180' : ''
|
||||
}`}
|
||||
fill="none"
|
||||
|
|
@ -201,7 +201,7 @@ export default function FAQContent() {
|
|||
</svg>
|
||||
</button>
|
||||
{openQuestion === index && (
|
||||
<div className="px-6 pb-6 text-[#5a5a4e] leading-relaxed">
|
||||
<div className="px-6 pb-6 text-gray-700 leading-relaxed">
|
||||
{faq.answer}
|
||||
</div>
|
||||
)}
|
||||
|
|
@ -216,7 +216,7 @@ export default function FAQContent() {
|
|||
<section className="pb-16">
|
||||
<div className="container mx-auto px-4">
|
||||
<div className="max-w-4xl mx-auto">
|
||||
<div className="bg-gradient-to-r from-[#d4a574] to-[#c4956a] rounded-2xl shadow-2xl p-12 text-center text-white border-2 border-[#e5e4dc]">
|
||||
<div className="bg-gradient-to-br from-[#1a4d2e] via-[#2d5a3d] to-[#1a4d2e] rounded-xl p-8 text-center text-white">
|
||||
<h2 className="text-2xl md:text-3xl font-bold mb-4">
|
||||
Vous ne trouvez pas votre réponse ?
|
||||
</h2>
|
||||
|
|
@ -226,13 +226,13 @@ export default function FAQContent() {
|
|||
<div className="flex flex-col sm:flex-row gap-4 justify-center">
|
||||
<a
|
||||
href="mailto:support@thetiptop.com"
|
||||
className="inline-flex items-center justify-center gap-2 bg-white text-[#d4a574] hover:bg-[#f5f5f0] font-bold px-8 py-3 rounded-lg transition-all shadow-lg hover:scale-105 duration-300"
|
||||
className="inline-flex items-center justify-center gap-2 bg-[#f59e0b] hover:bg-[#d97706] text-white font-bold px-8 py-3 rounded-lg transition-all"
|
||||
>
|
||||
✉️ support@thetiptop.com
|
||||
</a>
|
||||
<Link
|
||||
href="/contact"
|
||||
className="inline-flex items-center justify-center bg-white/10 hover:bg-white/20 backdrop-blur-sm text-white font-bold px-8 py-3 rounded-lg transition-all border-2 border-white/30 hover:border-white/50"
|
||||
className="inline-flex items-center justify-center bg-white hover:bg-gray-100 text-[#1a4d2e] font-bold px-8 py-3 rounded-lg transition-all"
|
||||
>
|
||||
Formulaire de contact
|
||||
</Link>
|
||||
|
|
|
|||
|
|
@ -103,37 +103,37 @@ export default function HistoriquePage() {
|
|||
};
|
||||
|
||||
return (
|
||||
<div className="min-h-screen bg-gradient-to-br from-[#f5f5f0] via-[#faf9f5] to-[#f5f5f0] py-8">
|
||||
<div className="min-h-screen bg-gray-50 py-8">
|
||||
<div className="container mx-auto px-4">
|
||||
<div className="mb-8">
|
||||
<h1 className="text-4xl font-bold text-[#5a5a4e] mb-2 flex items-center gap-3">
|
||||
<Calendar className="w-10 h-10 text-[#d4a574]" />
|
||||
<h1 className="text-4xl font-bold text-gray-900 mb-2 flex items-center gap-3">
|
||||
<Calendar className="w-10 h-10 text-[#1a4d2e]" />
|
||||
Historique de mes participations
|
||||
</h1>
|
||||
<p className="text-[#8a8a7a]">
|
||||
<p className="text-gray-600">
|
||||
Consultez l'historique complet de vos participations et gains
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div className="grid md:grid-cols-4 gap-6 mb-8">
|
||||
<div className="bg-white rounded-xl shadow-md p-6 border border-[#e5e4dc]">
|
||||
<div className="bg-white rounded-xl shadow-md p-6">
|
||||
<div className="flex items-center justify-between">
|
||||
<div>
|
||||
<p className="text-sm font-medium text-[#8a8a7a] mb-2">Total</p>
|
||||
<p className="text-sm font-medium text-gray-600 mb-2">Total</p>
|
||||
<p className="text-4xl font-bold text-blue-600">{stats.total}</p>
|
||||
</div>
|
||||
<div className="w-16 h-16 bg-blue-100 rounded-full flex items-center justify-center">
|
||||
<svg className="w-8 h-8 text-blue-600" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z" />
|
||||
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z" />
|
||||
</svg>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="bg-white rounded-xl shadow-md p-6 border border-[#e5e4dc]">
|
||||
<div className="bg-white rounded-xl shadow-md p-6">
|
||||
<div className="flex items-center justify-between">
|
||||
<div>
|
||||
<p className="text-sm font-medium text-[#8a8a7a] mb-2">Réclamés</p>
|
||||
<p className="text-sm font-medium text-gray-600 mb-2">Réclamés</p>
|
||||
<p className="text-4xl font-bold text-green-600">{stats.claimed}</p>
|
||||
</div>
|
||||
<div className="w-16 h-16 bg-green-100 rounded-full flex items-center justify-center">
|
||||
|
|
@ -144,10 +144,10 @@ export default function HistoriquePage() {
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<div className="bg-white rounded-xl shadow-md p-6 border border-[#e5e4dc]">
|
||||
<div className="bg-white rounded-xl shadow-md p-6">
|
||||
<div className="flex items-center justify-between">
|
||||
<div>
|
||||
<p className="text-sm font-medium text-[#8a8a7a] mb-2">En attente</p>
|
||||
<p className="text-sm font-medium text-gray-600 mb-2">En attente</p>
|
||||
<p className="text-4xl font-bold text-yellow-600">{stats.pending}</p>
|
||||
</div>
|
||||
<div className="w-16 h-16 bg-yellow-100 rounded-full flex items-center justify-center">
|
||||
|
|
@ -158,10 +158,10 @@ export default function HistoriquePage() {
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<div className="bg-white rounded-xl shadow-md p-6 border border-[#e5e4dc]">
|
||||
<div className="bg-white rounded-xl shadow-md p-6">
|
||||
<div className="flex items-center justify-between">
|
||||
<div>
|
||||
<p className="text-sm font-medium text-[#8a8a7a] mb-2">Rejetés</p>
|
||||
<p className="text-sm font-medium text-gray-600 mb-2">Rejetés</p>
|
||||
<p className="text-4xl font-bold text-red-600">{stats.rejected}</p>
|
||||
</div>
|
||||
<div className="w-16 h-16 bg-red-100 rounded-full flex items-center justify-center">
|
||||
|
|
@ -173,17 +173,17 @@ export default function HistoriquePage() {
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<div className="bg-white rounded-xl shadow-md p-6 mb-6 border border-[#e5e4dc]">
|
||||
<div className="bg-white rounded-xl shadow-md p-6 mb-6">
|
||||
<div className="flex flex-col md:flex-row gap-4">
|
||||
<div className="flex-1">
|
||||
<div className="relative">
|
||||
<Search className="absolute left-3 top-1/2 transform -translate-y-1/2 text-[#8a8a7a] w-5 h-5" />
|
||||
<Search className="absolute left-3 top-1/2 transform -translate-y-1/2 text-gray-400 w-5 h-5" />
|
||||
<input
|
||||
type="text"
|
||||
placeholder="Rechercher par code ticket..."
|
||||
value={searchQuery}
|
||||
onChange={(e) => setSearchQuery(e.target.value)}
|
||||
className="w-full pl-10 pr-4 py-3 border-2 border-[#e5e4dc] rounded-lg focus:ring-2 focus:ring-[#d4a574] focus:border-[#d4a574] focus:outline-none"
|
||||
className="w-full pl-10 pr-4 py-3 border border-gray-300 rounded-lg focus:ring-2 focus:ring-[#1a4d2e] focus:border-transparent"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -193,8 +193,8 @@ export default function HistoriquePage() {
|
|||
onClick={() => setFilter('ALL')}
|
||||
className={`px-4 py-2 rounded-lg font-semibold transition-all ${
|
||||
filter === 'ALL'
|
||||
? 'bg-gradient-to-r from-[#d4a574] to-[#c4956a] text-white shadow-lg'
|
||||
: 'bg-[#f5f5f0] text-[#5a5a4e] hover:bg-[#e5e4dc]'
|
||||
? 'bg-[#1a4d2e] text-white'
|
||||
: 'bg-gray-100 text-gray-700 hover:bg-gray-200'
|
||||
}`}
|
||||
>
|
||||
Tous ({tickets.length})
|
||||
|
|
@ -203,8 +203,8 @@ export default function HistoriquePage() {
|
|||
onClick={() => setFilter('CLAIMED')}
|
||||
className={`px-4 py-2 rounded-lg font-semibold transition-all ${
|
||||
filter === 'CLAIMED'
|
||||
? 'bg-green-600 text-white shadow-lg'
|
||||
: 'bg-[#f5f5f0] text-[#5a5a4e] hover:bg-[#e5e4dc]'
|
||||
? 'bg-green-600 text-white'
|
||||
: 'bg-gray-100 text-gray-700 hover:bg-gray-200'
|
||||
}`}
|
||||
>
|
||||
Réclamés ({stats.claimed})
|
||||
|
|
@ -213,8 +213,8 @@ export default function HistoriquePage() {
|
|||
onClick={() => setFilter('PENDING')}
|
||||
className={`px-4 py-2 rounded-lg font-semibold transition-all ${
|
||||
filter === 'PENDING'
|
||||
? 'bg-yellow-600 text-white shadow-lg'
|
||||
: 'bg-[#f5f5f0] text-[#5a5a4e] hover:bg-[#e5e4dc]'
|
||||
? 'bg-yellow-600 text-white'
|
||||
: 'bg-gray-100 text-gray-700 hover:bg-gray-200'
|
||||
}`}
|
||||
>
|
||||
En attente ({stats.pending})
|
||||
|
|
@ -223,8 +223,8 @@ export default function HistoriquePage() {
|
|||
onClick={() => setFilter('REJECTED')}
|
||||
className={`px-4 py-2 rounded-lg font-semibold transition-all ${
|
||||
filter === 'REJECTED'
|
||||
? 'bg-red-600 text-white shadow-lg'
|
||||
: 'bg-[#f5f5f0] text-[#5a5a4e] hover:bg-[#e5e4dc]'
|
||||
? 'bg-red-600 text-white'
|
||||
: 'bg-gray-100 text-gray-700 hover:bg-gray-200'
|
||||
}`}
|
||||
>
|
||||
Rejetés ({stats.rejected})
|
||||
|
|
@ -233,15 +233,15 @@ export default function HistoriquePage() {
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<div className="bg-white rounded-xl shadow-md overflow-hidden border border-[#e5e4dc]">
|
||||
<div className="px-6 py-4 border-b border-[#e5e4dc]">
|
||||
<h2 className="text-xl font-bold text-[#5a5a4e]">Tous mes tickets ({filteredTickets.length})</h2>
|
||||
<div className="bg-white rounded-xl shadow-md overflow-hidden">
|
||||
<div className="px-6 py-4 border-b border-gray-200">
|
||||
<h2 className="text-xl font-bold text-gray-900">Tous mes tickets ({filteredTickets.length})</h2>
|
||||
</div>
|
||||
<div className="p-6">
|
||||
{filteredTickets.length === 0 ? (
|
||||
<div className="text-center py-12">
|
||||
<div className="text-6xl mb-4">🎲</div>
|
||||
<p className="text-[#8a8a7a] mb-4">
|
||||
<p className="text-gray-600 mb-4">
|
||||
{searchQuery || filter !== 'ALL'
|
||||
? 'Aucun ticket trouvé avec ces filtres'
|
||||
: 'Vous n\'avez pas encore participé au jeu'}
|
||||
|
|
@ -249,7 +249,7 @@ export default function HistoriquePage() {
|
|||
{!searchQuery && filter === 'ALL' && (
|
||||
<button
|
||||
onClick={() => router.push(ROUTES.GAME)}
|
||||
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"
|
||||
className="bg-[#f59e0b] hover:bg-[#d97706] text-white font-bold px-6 py-3 rounded-lg transition-all"
|
||||
>
|
||||
Jouer maintenant
|
||||
</button>
|
||||
|
|
@ -259,34 +259,34 @@ export default function HistoriquePage() {
|
|||
<div className="overflow-x-auto">
|
||||
<table className="min-w-full">
|
||||
<thead>
|
||||
<tr className="border-b border-[#e5e4dc]">
|
||||
<th className="px-6 py-3 text-left text-xs font-semibold text-[#5a5a4e] uppercase tracking-wider">
|
||||
<tr className="border-b border-gray-200">
|
||||
<th className="px-6 py-3 text-left text-xs font-semibold text-gray-700 uppercase tracking-wider">
|
||||
Code Ticket
|
||||
</th>
|
||||
<th className="px-6 py-3 text-left text-xs font-semibold text-[#5a5a4e] uppercase tracking-wider">
|
||||
<th className="px-6 py-3 text-left text-xs font-semibold text-gray-700 uppercase tracking-wider">
|
||||
Gain
|
||||
</th>
|
||||
<th className="px-6 py-3 text-left text-xs font-semibold text-[#5a5a4e] uppercase tracking-wider">
|
||||
<th className="px-6 py-3 text-left text-xs font-semibold text-gray-700 uppercase tracking-wider">
|
||||
Statut
|
||||
</th>
|
||||
<th className="px-6 py-3 text-left text-xs font-semibold text-[#5a5a4e] uppercase tracking-wider">
|
||||
<th className="px-6 py-3 text-left text-xs font-semibold text-gray-700 uppercase tracking-wider">
|
||||
Date de participation
|
||||
</th>
|
||||
<th className="px-6 py-3 text-left text-xs font-semibold text-[#5a5a4e] uppercase tracking-wider">
|
||||
<th className="px-6 py-3 text-left text-xs font-semibold text-gray-700 uppercase tracking-wider">
|
||||
Date de réclamation
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody className="divide-y divide-[#e5e4dc]">
|
||||
<tbody className="divide-y divide-gray-200">
|
||||
{filteredTickets.map((ticket) => {
|
||||
const prizeConfig = ticket.prize
|
||||
? PRIZE_CONFIG[ticket.prize.type as keyof typeof PRIZE_CONFIG]
|
||||
: null;
|
||||
|
||||
return (
|
||||
<tr key={ticket.id} className="hover:bg-gradient-to-r hover:from-[#d4a574]/5 hover:to-[#c4956a]/5 transition-colors">
|
||||
<tr key={ticket.id} className="hover:bg-gray-50 transition-colors">
|
||||
<td className="px-6 py-4 whitespace-nowrap">
|
||||
<span className="font-mono text-sm font-semibold text-[#5a5a4e]">
|
||||
<span className="font-mono text-sm font-semibold text-gray-900">
|
||||
{ticket.code}
|
||||
</span>
|
||||
</td>
|
||||
|
|
@ -322,7 +322,7 @@ export default function HistoriquePage() {
|
|||
)}
|
||||
</div>
|
||||
<div>
|
||||
<p className="text-sm font-medium text-[#5a5a4e]">
|
||||
<p className="text-sm font-medium text-gray-900">
|
||||
{prizeConfig.name}
|
||||
</p>
|
||||
</div>
|
||||
|
|
@ -333,7 +333,7 @@ export default function HistoriquePage() {
|
|||
<td className="px-6 py-4 whitespace-nowrap">
|
||||
{getStatusBadge(ticket.status)}
|
||||
</td>
|
||||
<td className="px-6 py-4 whitespace-nowrap text-sm text-[#8a8a7a]">
|
||||
<td className="px-6 py-4 whitespace-nowrap text-sm text-gray-600">
|
||||
{ticket.playedAt
|
||||
? new Date(ticket.playedAt).toLocaleDateString("fr-FR", {
|
||||
day: 'numeric',
|
||||
|
|
@ -344,7 +344,7 @@ export default function HistoriquePage() {
|
|||
})
|
||||
: "-"}
|
||||
</td>
|
||||
<td className="px-6 py-4 whitespace-nowrap text-sm text-[#8a8a7a]">
|
||||
<td className="px-6 py-4 whitespace-nowrap text-sm text-gray-600">
|
||||
{ticket.claimedAt
|
||||
? new Date(ticket.claimedAt).toLocaleDateString("fr-FR", {
|
||||
day: 'numeric',
|
||||
|
|
|
|||
|
|
@ -110,28 +110,28 @@ export default function JeuxPage() {
|
|||
: null;
|
||||
|
||||
return (
|
||||
<div className="min-h-screen bg-gradient-to-br from-[#f5f5f0] via-[#faf9f5] to-[#f5f5f0] py-8">
|
||||
<div className="min-h-screen bg-gray-50 py-8">
|
||||
<div className="container mx-auto px-4">
|
||||
{/* Formulaire Section */}
|
||||
<section className="mb-16">
|
||||
<div className="max-w-2xl mx-auto">
|
||||
<div className="bg-white rounded-xl shadow-2xl overflow-hidden border-2 border-[#e5e4dc]">
|
||||
<div className="bg-gradient-to-r from-[#d4a574] to-[#c4956a] px-6 py-6 shadow-lg">
|
||||
<div className="bg-white rounded-xl shadow-md overflow-hidden">
|
||||
<div className="bg-gradient-to-r from-[#1a4d2e] to-[#2d5a3d] px-6 py-6">
|
||||
<h1 className="text-center text-3xl md:text-4xl font-bold text-white">
|
||||
🎁 Jouez maintenant !
|
||||
</h1>
|
||||
</div>
|
||||
<div className="p-8">
|
||||
<div className="mb-6 text-center">
|
||||
<p className="text-[#5a5a4e] text-lg">
|
||||
Bonjour <span className="font-bold text-[#d4a574]">{user?.firstName}</span>,
|
||||
<p className="text-gray-700 text-lg">
|
||||
Bonjour <span className="font-bold text-[#1a4d2e]">{user?.firstName}</span>,
|
||||
entrez le code de 10 caractères présent sur votre ticket de caisse
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<form onSubmit={handleSubmit(onSubmit)} className="space-y-6">
|
||||
<div>
|
||||
<label htmlFor="ticketCode" className="block text-sm font-semibold text-[#5a5a4e] mb-2">
|
||||
<label htmlFor="ticketCode" className="block text-sm font-semibold text-gray-700 mb-2">
|
||||
Code du ticket
|
||||
</label>
|
||||
<input
|
||||
|
|
@ -139,14 +139,14 @@ export default function JeuxPage() {
|
|||
type="text"
|
||||
placeholder="TTP2025ABC"
|
||||
{...register("ticketCode")}
|
||||
className="w-full px-6 py-4 text-center text-2xl font-mono font-bold uppercase border-2 border-[#e5e4dc] rounded-lg focus:outline-none focus:ring-2 focus:ring-[#d4a574] focus:border-[#d4a574] tracking-widest bg-white shadow-inner"
|
||||
className="w-full px-6 py-4 text-center text-2xl font-mono font-bold uppercase border-2 border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-[#1a4d2e] focus:border-transparent tracking-widest"
|
||||
maxLength={10}
|
||||
/>
|
||||
{errors.ticketCode && (
|
||||
<p className="mt-2 text-sm text-red-600">{errors.ticketCode.message}</p>
|
||||
)}
|
||||
{errorMessage && (
|
||||
<div className="mt-3 p-4 bg-red-50 border-l-4 border-red-500 rounded-lg shadow-md">
|
||||
<div className="mt-3 p-4 bg-red-50 border border-red-200 rounded-lg">
|
||||
<p className="text-sm text-red-800 font-medium mb-2">
|
||||
❌ {errorMessage}
|
||||
</p>
|
||||
|
|
@ -158,7 +158,7 @@ export default function JeuxPage() {
|
|||
</Link>
|
||||
</div>
|
||||
)}
|
||||
<p className="mt-2 text-sm text-[#8a8a7a] text-center">
|
||||
<p className="mt-2 text-sm text-gray-500 text-center">
|
||||
Format: TTP2025ABC (10 caractères)
|
||||
</p>
|
||||
</div>
|
||||
|
|
@ -167,20 +167,20 @@ export default function JeuxPage() {
|
|||
<button
|
||||
type="submit"
|
||||
disabled={isPlaying}
|
||||
className="bg-gradient-to-r from-[#d4a574] to-[#c4956a] hover:from-[#e5b685] hover:to-[#d4a574] disabled:from-gray-400 disabled:to-gray-500 text-white font-bold px-12 py-4 text-lg rounded-lg transition-all duration-300 shadow-lg hover:shadow-[0_0_20px_rgba(212,165,116,0.6)] hover:scale-105"
|
||||
className="bg-[#f59e0b] hover:bg-[#d97706] disabled:bg-gray-400 text-white font-bold px-12 py-4 text-lg rounded-lg transition-all shadow-lg hover:shadow-xl"
|
||||
>
|
||||
{isPlaying ? "Vérification en cours..." : "🎲 Tenter ma chance !"}
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<div className="mt-6 p-4 bg-gradient-to-r from-[#d4a574]/10 to-[#c4956a]/10 border-l-4 border-[#d4a574] rounded-lg shadow-md">
|
||||
<p className="text-sm text-[#5a5a4e] font-semibold mb-2">
|
||||
<div className="mt-6 p-4 bg-blue-50 border-l-4 border-blue-500 rounded-lg">
|
||||
<p className="text-sm text-blue-800 font-semibold mb-2">
|
||||
💡 Bon à savoir :
|
||||
</p>
|
||||
<ul className="text-sm text-[#5a5a4e] space-y-1 list-disc list-inside">
|
||||
<ul className="text-sm text-blue-700 space-y-1 list-disc list-inside">
|
||||
<li>Chaque code ne peut être utilisé qu'une seule fois</li>
|
||||
<li>Consultez vos tickets sur la page <Link href={ROUTES.HISTORY} className="underline font-medium hover:text-[#d4a574] transition-colors">Mes gains</Link></li>
|
||||
<li>Consultez vos tickets sur la page <Link href={ROUTES.HISTORY} className="underline font-medium hover:text-blue-900">Mes gains</Link></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -260,8 +260,8 @@ export default function JeuxPage() {
|
|||
</div>
|
||||
|
||||
{/* Loading Animation */}
|
||||
<div className="flex items-center gap-2 text-[#5a5a4e]">
|
||||
<div className="animate-spin rounded-full h-6 w-6 border-b-2 border-[#d4a574]"></div>
|
||||
<div className="flex items-center gap-2 text-gray-600">
|
||||
<div className="animate-spin rounded-full h-6 w-6 border-b-2 border-[#1a4d2e]"></div>
|
||||
<span className="font-medium">Tirage en cours...</span>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -323,13 +323,13 @@ export default function JeuxPage() {
|
|||
<div className="flex gap-3 justify-center">
|
||||
<button
|
||||
onClick={closeModal}
|
||||
className="border-2 border-[#e5e4dc] hover:bg-[#f5f5f0] text-[#5a5a4e] font-bold px-6 py-3 rounded-lg transition-all"
|
||||
className="border-2 border-gray-300 hover:bg-gray-50 text-gray-700 font-bold px-6 py-3 rounded-lg transition-all"
|
||||
>
|
||||
Fermer
|
||||
</button>
|
||||
<button
|
||||
onClick={() => router.push(ROUTES.HISTORY)}
|
||||
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 duration-300 shadow-lg hover:shadow-[0_0_20px_rgba(212,165,116,0.6)]"
|
||||
className="bg-[#1a4d2e] hover:bg-[#2d5a3d] text-white font-bold px-6 py-3 rounded-lg transition-all"
|
||||
>
|
||||
Voir mes gains
|
||||
</button>
|
||||
|
|
|
|||
|
|
@ -8,15 +8,15 @@ export const metadata: Metadata = {
|
|||
|
||||
export default function LotsPage() {
|
||||
return (
|
||||
<div className="min-h-screen bg-gradient-to-br from-[#f5f5f0] via-[#faf9f5] to-[#f5f5f0]">
|
||||
<div className="min-h-screen bg-gray-50">
|
||||
{/* Hero Section */}
|
||||
<section className="bg-gradient-to-r from-white to-[#faf9f5] py-12 border-b-2 border-[#e5e4dc]">
|
||||
<section className="bg-white py-12">
|
||||
<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">
|
||||
<h1 className="text-4xl md:text-5xl font-bold text-gray-900 mb-4">
|
||||
Lots à gagner
|
||||
</h1>
|
||||
<p className="text-lg text-[#8a8a7a]">
|
||||
<p className="text-lg text-gray-600">
|
||||
Découvrez tous les magnifiques prix de notre jeu-concours. Avec 100% de gagnants garantis,
|
||||
chaque participant repart avec un lot !
|
||||
</p>
|
||||
|
|
@ -28,7 +28,7 @@ export default function LotsPage() {
|
|||
<section className="py-8">
|
||||
<div className="container mx-auto px-4">
|
||||
<div className="max-w-5xl mx-auto">
|
||||
<div className="bg-gradient-to-r from-[#d4a574] to-[#c4956a] rounded-2xl p-8 shadow-2xl border-2 border-[#e5e4dc]">
|
||||
<div className="bg-gradient-to-r from-yellow-100 to-yellow-200 rounded-2xl p-8 shadow-lg border-2 border-yellow-300">
|
||||
<div className="flex flex-col md:flex-row items-center gap-6">
|
||||
<div className="flex-shrink-0">
|
||||
<div className="w-32 h-32 bg-white rounded-lg flex items-center justify-center text-6xl shadow-md">
|
||||
|
|
@ -36,17 +36,17 @@ export default function LotsPage() {
|
|||
</div>
|
||||
</div>
|
||||
<div className="flex-1 text-center md:text-left">
|
||||
<div className="inline-block bg-white text-[#d4a574] text-xs font-bold px-3 py-1 rounded-full mb-2 shadow-md">
|
||||
<div className="inline-block bg-red-500 text-white text-xs font-bold px-3 py-1 rounded-full mb-2">
|
||||
GRAND PRIX FINAL
|
||||
</div>
|
||||
<h2 className="text-3xl md:text-4xl font-bold text-white mb-2">
|
||||
<h2 className="text-3xl md:text-4xl font-bold text-gray-900 mb-2">
|
||||
1 an de thé offert
|
||||
</h2>
|
||||
<p className="text-white/90 mb-3">
|
||||
<p className="text-gray-700 mb-3">
|
||||
Le grand prix du tirage final : une année complète de thé premium livré chez vous
|
||||
</p>
|
||||
<div className="text-2xl font-bold text-white">
|
||||
Valeur : 360€ <span className="text-sm text-white/80 font-normal">Tirage sous contrôle d'huissier</span>
|
||||
<div className="text-2xl font-bold text-orange-600">
|
||||
Valeur : 360€ <span className="text-sm text-gray-600 font-normal">Tirage sous contrôle d'huissier</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -62,21 +62,21 @@ export default function LotsPage() {
|
|||
<div className="grid md:grid-cols-2 lg:grid-cols-3 gap-6">
|
||||
|
||||
{/* Prize 1 - Infuseur */}
|
||||
<div className="bg-white rounded-xl shadow-md hover:shadow-xl transition-shadow overflow-hidden border border-[#e5e4dc]">
|
||||
<div className="aspect-square bg-gradient-to-br from-[#faf9f5] to-[#f5f5f0] flex items-center justify-center">
|
||||
<div className="bg-white rounded-xl shadow-md hover:shadow-xl transition-shadow overflow-hidden">
|
||||
<div className="aspect-square bg-gradient-to-br from-amber-50 to-orange-50 flex items-center justify-center">
|
||||
<div className="text-8xl">🍵</div>
|
||||
</div>
|
||||
<div className="p-6">
|
||||
<div className="inline-block bg-gradient-to-r from-[#d4a574]/20 to-[#c4956a]/20 text-[#c4956a] text-sm font-bold px-3 py-1 rounded-full mb-3">
|
||||
<div className="inline-block bg-red-100 text-red-600 text-sm font-bold px-3 py-1 rounded-full mb-3">
|
||||
60% des lots
|
||||
</div>
|
||||
<h3 className="text-xl font-bold text-[#5a5a4e] mb-2">Infuseur à thé premium</h3>
|
||||
<p className="text-[#8a8a7a] text-sm mb-4">
|
||||
<h3 className="text-xl font-bold text-gray-900 mb-2">Infuseur à thé premium</h3>
|
||||
<p className="text-gray-600 text-sm mb-4">
|
||||
Un infuseur en acier inoxydable de haute qualité pour ressortir les arômes de vos thés en vrac
|
||||
</p>
|
||||
<div className="flex items-center justify-between">
|
||||
<div className="text-2xl font-bold text-[#d4a574]">15€</div>
|
||||
<button className="text-[#8a8a7a] hover:text-[#d4a574] transition-colors">
|
||||
<div className="text-2xl font-bold text-[#1a4d2e]">15€</div>
|
||||
<button className="text-[#1a4d2e] hover:text-[#f59e0b] transition-colors">
|
||||
<svg className="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" />
|
||||
</svg>
|
||||
|
|
@ -86,21 +86,21 @@ export default function LotsPage() {
|
|||
</div>
|
||||
|
||||
{/* Prize 2 - Thé détox */}
|
||||
<div className="bg-white rounded-xl shadow-md hover:shadow-xl transition-shadow overflow-hidden border border-[#e5e4dc]">
|
||||
<div className="aspect-square bg-gradient-to-br from-[#faf9f5] to-[#f5f5f0] flex items-center justify-center">
|
||||
<div className="bg-white rounded-xl shadow-md hover:shadow-xl transition-shadow overflow-hidden">
|
||||
<div className="aspect-square bg-gradient-to-br from-green-50 to-emerald-50 flex items-center justify-center">
|
||||
<div className="text-8xl">📦</div>
|
||||
</div>
|
||||
<div className="p-6">
|
||||
<div className="inline-block bg-gradient-to-r from-[#d4a574]/20 to-[#c4956a]/20 text-[#c4956a] text-sm font-bold px-3 py-1 rounded-full mb-3">
|
||||
<div className="inline-block bg-orange-100 text-orange-600 text-sm font-bold px-3 py-1 rounded-full mb-3">
|
||||
20% des lots
|
||||
</div>
|
||||
<h3 className="text-xl font-bold text-[#5a5a4e] mb-2">Boîte 100g thé détox</h3>
|
||||
<p className="text-[#8a8a7a] text-sm mb-4">
|
||||
<h3 className="text-xl font-bold text-gray-900 mb-2">Boîte 100g thé détox</h3>
|
||||
<p className="text-gray-600 text-sm mb-4">
|
||||
Mélange détox aux plantes bio : menthe, citronnelle, fenouil et gingembre
|
||||
</p>
|
||||
<div className="flex items-center justify-between">
|
||||
<div className="text-2xl font-bold text-[#d4a574]">25€</div>
|
||||
<button className="text-[#8a8a7a] hover:text-[#d4a574] transition-colors">
|
||||
<div className="text-2xl font-bold text-[#1a4d2e]">25€</div>
|
||||
<button className="text-[#1a4d2e] hover:text-[#f59e0b] transition-colors">
|
||||
<svg className="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" />
|
||||
</svg>
|
||||
|
|
@ -110,21 +110,21 @@ export default function LotsPage() {
|
|||
</div>
|
||||
|
||||
{/* Prize 3 - Thé signature */}
|
||||
<div className="bg-white rounded-xl shadow-md hover:shadow-xl transition-shadow overflow-hidden border border-[#e5e4dc]">
|
||||
<div className="aspect-square bg-gradient-to-br from-[#faf9f5] to-[#f5f5f0] flex items-center justify-center">
|
||||
<div className="bg-white rounded-xl shadow-md hover:shadow-xl transition-shadow overflow-hidden">
|
||||
<div className="aspect-square bg-gradient-to-br from-blue-50 to-cyan-50 flex items-center justify-center">
|
||||
<div className="text-8xl">🌿</div>
|
||||
</div>
|
||||
<div className="p-6">
|
||||
<div className="inline-block bg-gradient-to-r from-[#d4a574]/20 to-[#c4956a]/20 text-[#c4956a] text-sm font-bold px-3 py-1 rounded-full mb-3">
|
||||
<div className="inline-block bg-green-100 text-green-600 text-sm font-bold px-3 py-1 rounded-full mb-3">
|
||||
10% des lots
|
||||
</div>
|
||||
<h3 className="text-xl font-bold text-[#5a5a4e] mb-2">Boîte 100g thé signature</h3>
|
||||
<p className="text-[#8a8a7a] text-sm mb-4">
|
||||
<h3 className="text-xl font-bold text-gray-900 mb-2">Boîte 100g thé signature</h3>
|
||||
<p className="text-gray-600 text-sm mb-4">
|
||||
Notre mélange signature exclusif : Earl Grey aux agrumes et pétales de fleurs
|
||||
</p>
|
||||
<div className="flex items-center justify-between">
|
||||
<div className="text-2xl font-bold text-[#d4a574]">35€</div>
|
||||
<button className="text-[#8a8a7a] hover:text-[#d4a574] transition-colors">
|
||||
<div className="text-2xl font-bold text-[#1a4d2e]">35€</div>
|
||||
<button className="text-[#1a4d2e] hover:text-[#f59e0b] transition-colors">
|
||||
<svg className="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" />
|
||||
</svg>
|
||||
|
|
@ -134,21 +134,21 @@ export default function LotsPage() {
|
|||
</div>
|
||||
|
||||
{/* Prize 4 - Coffret 39€ */}
|
||||
<div className="bg-white rounded-xl shadow-md hover:shadow-xl transition-shadow overflow-hidden border border-[#e5e4dc]">
|
||||
<div className="aspect-square bg-gradient-to-br from-[#faf9f5] to-[#f5f5f0] flex items-center justify-center">
|
||||
<div className="bg-white rounded-xl shadow-md hover:shadow-xl transition-shadow overflow-hidden">
|
||||
<div className="aspect-square bg-gradient-to-br from-purple-50 to-pink-50 flex items-center justify-center">
|
||||
<div className="text-8xl">🎁</div>
|
||||
</div>
|
||||
<div className="p-6">
|
||||
<div className="inline-block bg-gradient-to-r from-[#d4a574]/20 to-[#c4956a]/20 text-[#c4956a] text-sm font-bold px-3 py-1 rounded-full mb-3">
|
||||
<div className="inline-block bg-purple-100 text-purple-600 text-sm font-bold px-3 py-1 rounded-full mb-3">
|
||||
6% des lots
|
||||
</div>
|
||||
<h3 className="text-xl font-bold text-[#5a5a4e] mb-2">Coffret découverte 39€</h3>
|
||||
<p className="text-[#8a8a7a] text-sm mb-4">
|
||||
<h3 className="text-xl font-bold text-gray-900 mb-2">Coffret découverte 39€</h3>
|
||||
<p className="text-gray-600 text-sm mb-4">
|
||||
Sélection de nos 3 thés premium dans un élégant coffret cadeau
|
||||
</p>
|
||||
<div className="flex items-center justify-between">
|
||||
<div className="text-2xl font-bold text-[#d4a574]">39€</div>
|
||||
<button className="text-[#8a8a7a] hover:text-[#d4a574] transition-colors">
|
||||
<div className="text-2xl font-bold text-[#1a4d2e]">39€</div>
|
||||
<button className="text-[#1a4d2e] hover:text-[#f59e0b] transition-colors">
|
||||
<svg className="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" />
|
||||
</svg>
|
||||
|
|
@ -158,21 +158,21 @@ export default function LotsPage() {
|
|||
</div>
|
||||
|
||||
{/* Prize 5 - Coffret 69€ */}
|
||||
<div className="bg-white rounded-xl shadow-md hover:shadow-xl transition-shadow overflow-hidden border border-[#e5e4dc]">
|
||||
<div className="aspect-square bg-gradient-to-br from-[#faf9f5] to-[#f5f5f0] flex items-center justify-center">
|
||||
<div className="bg-white rounded-xl shadow-md hover:shadow-xl transition-shadow overflow-hidden">
|
||||
<div className="aspect-square bg-gradient-to-br from-amber-50 to-yellow-50 flex items-center justify-center">
|
||||
<div className="text-8xl">🎁</div>
|
||||
</div>
|
||||
<div className="p-6">
|
||||
<div className="inline-block bg-gradient-to-r from-[#d4a574]/20 to-[#c4956a]/20 text-[#c4956a] text-sm font-bold px-3 py-1 rounded-full mb-3">
|
||||
<div className="inline-block bg-amber-100 text-amber-700 text-sm font-bold px-3 py-1 rounded-full mb-3">
|
||||
4% des lots
|
||||
</div>
|
||||
<h3 className="text-xl font-bold text-[#5a5a4e] mb-2">Coffret prestige 69€</h3>
|
||||
<p className="text-[#8a8a7a] text-sm mb-4">
|
||||
<h3 className="text-xl font-bold text-gray-900 mb-2">Coffret prestige 69€</h3>
|
||||
<p className="text-gray-600 text-sm mb-4">
|
||||
Collection premium : 5 thés d'exception avec accessoires dans un coffret luxe
|
||||
</p>
|
||||
<div className="flex items-center justify-between">
|
||||
<div className="text-2xl font-bold text-[#d4a574]">69€</div>
|
||||
<button className="text-[#8a8a7a] hover:text-[#d4a574] transition-colors">
|
||||
<div className="text-2xl font-bold text-[#1a4d2e]">69€</div>
|
||||
<button className="text-[#1a4d2e] hover:text-[#f59e0b] transition-colors">
|
||||
<svg className="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" />
|
||||
</svg>
|
||||
|
|
@ -182,21 +182,21 @@ export default function LotsPage() {
|
|||
</div>
|
||||
|
||||
{/* Prize 6 - Tirage Final */}
|
||||
<div className="bg-white rounded-xl shadow-md hover:shadow-xl transition-shadow overflow-hidden border-2 border-[#d4a574]">
|
||||
<div className="aspect-square bg-gradient-to-br from-[#d4a574]/10 to-[#c4956a]/10 flex items-center justify-center">
|
||||
<div className="bg-white rounded-xl shadow-md hover:shadow-xl transition-shadow overflow-hidden border-2 border-[#f59e0b]">
|
||||
<div className="aspect-square bg-gradient-to-br from-yellow-50 to-amber-50 flex items-center justify-center">
|
||||
<div className="text-8xl">🏆</div>
|
||||
</div>
|
||||
<div className="p-6">
|
||||
<div className="inline-block bg-gradient-to-r from-[#d4a574] to-[#c4956a] text-white text-sm font-bold px-3 py-1 rounded-full mb-3 shadow-md">
|
||||
<div className="inline-block bg-yellow-100 text-yellow-700 text-sm font-bold px-3 py-1 rounded-full mb-3">
|
||||
1 an de THÉ
|
||||
</div>
|
||||
<h3 className="text-xl font-bold text-[#5a5a4e] mb-2">Tirage Final</h3>
|
||||
<p className="text-[#8a8a7a] text-sm mb-4">
|
||||
<h3 className="text-xl font-bold text-gray-900 mb-2">Tirage Final</h3>
|
||||
<p className="text-gray-600 text-sm mb-4">
|
||||
Valeur 360€ - Livraison mensuelle pendant 12 mois
|
||||
</p>
|
||||
<div className="flex items-center justify-between">
|
||||
<div className="text-2xl font-bold text-[#d4a574]">360€</div>
|
||||
<button className="text-[#8a8a7a] hover:text-[#d4a574] transition-colors">
|
||||
<div className="text-2xl font-bold text-[#f59e0b]">360€</div>
|
||||
<button className="text-[#1a4d2e] hover:text-[#f59e0b] transition-colors">
|
||||
<svg className="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" />
|
||||
</svg>
|
||||
|
|
@ -213,7 +213,7 @@ export default function LotsPage() {
|
|||
{/* CTA Section */}
|
||||
<section className="py-16">
|
||||
<div className="container mx-auto px-4">
|
||||
<div className="max-w-4xl mx-auto bg-gradient-to-r from-[#d4a574] to-[#c4956a] rounded-2xl shadow-2xl p-12 text-center text-white border-2 border-[#e5e4dc]">
|
||||
<div className="max-w-4xl mx-auto bg-gradient-to-r from-[#1a4d2e] to-[#2d5a3d] rounded-2xl shadow-2xl p-12 text-center text-white">
|
||||
<h2 className="text-3xl md:text-4xl font-bold mb-4">
|
||||
Prêt à découvrir votre lot ?
|
||||
</h2>
|
||||
|
|
@ -222,7 +222,7 @@ export default function LotsPage() {
|
|||
tentez votre chance ! Avec 100% de gagnants, vous ne pouvez que gagner.
|
||||
</p>
|
||||
<Link href="/register">
|
||||
<button className="bg-white text-[#d4a574] hover:bg-[#f5f5f0] font-bold text-lg px-12 py-4 rounded-lg shadow-xl transition-all duration-300 hover:scale-105">
|
||||
<button className="bg-[#f59e0b] hover:bg-[#d97706] text-white font-bold text-lg px-12 py-4 rounded-lg shadow-xl transition-all">
|
||||
Participer maintenant
|
||||
</button>
|
||||
</Link>
|
||||
|
|
|
|||
|
|
@ -7,19 +7,19 @@ export const metadata: Metadata = {
|
|||
|
||||
export default function PrivacyPage() {
|
||||
return (
|
||||
<div className="min-h-screen bg-gradient-to-br from-[#f5f5f0] via-[#faf9f5] to-[#f5f5f0] py-12 px-4">
|
||||
<div className="max-w-4xl mx-auto bg-white rounded-xl shadow-lg border border-[#e5e4dc] p-8">
|
||||
<h1 className="text-3xl font-bold text-[#5a5a4e] mb-6">
|
||||
<div className="min-h-screen bg-gradient-to-b from-primary-50 to-white py-12 px-4">
|
||||
<div className="max-w-4xl mx-auto bg-white rounded-lg shadow-lg p-8">
|
||||
<h1 className="text-3xl font-bold text-gray-900 mb-6">
|
||||
Politique de confidentialité
|
||||
</h1>
|
||||
|
||||
<p className="text-sm text-[#8a8a7a] mb-8">
|
||||
<p className="text-sm text-gray-600 mb-8">
|
||||
Dernière mise à jour : 17 janvier 2025
|
||||
</p>
|
||||
|
||||
<div className="space-y-6 text-[#5a5a4e]">
|
||||
<div className="space-y-6 text-gray-700">
|
||||
<section>
|
||||
<h2 className="text-2xl font-semibold text-[#5a5a4e] mb-3">
|
||||
<h2 className="text-2xl font-semibold text-gray-900 mb-3">
|
||||
1. Introduction
|
||||
</h2>
|
||||
<p>
|
||||
|
|
@ -30,12 +30,12 @@ export default function PrivacyPage() {
|
|||
</section>
|
||||
|
||||
<section>
|
||||
<h2 className="text-2xl font-semibold text-[#5a5a4e] mb-3">
|
||||
<h2 className="text-2xl font-semibold text-gray-900 mb-3">
|
||||
2. Données collectées
|
||||
</h2>
|
||||
<p className="mb-2">Nous collectons les informations suivantes :</p>
|
||||
<ul className="list-disc pl-6 space-y-2">
|
||||
<li>Informations d'identification : nom, prénom, adresse e-mail</li>
|
||||
<li>Informations d identification : nom, prénom, adresse e-mail</li>
|
||||
<li>Informations de profil : photo de profil (si fournie via OAuth)</li>
|
||||
<li>Informations de connexion : via Google ou Facebook OAuth</li>
|
||||
<li>Données de participation : codes de tickets, gains remportés</li>
|
||||
|
|
@ -44,7 +44,7 @@ export default function PrivacyPage() {
|
|||
</section>
|
||||
|
||||
<section>
|
||||
<h2 className="text-2xl font-semibold text-[#5a5a4e] mb-3">
|
||||
<h2 className="text-2xl font-semibold text-gray-900 mb-3">
|
||||
3. Utilisation des données
|
||||
</h2>
|
||||
<p className="mb-2">Vos données sont utilisées pour :</p>
|
||||
|
|
@ -58,23 +58,23 @@ export default function PrivacyPage() {
|
|||
</section>
|
||||
|
||||
<section>
|
||||
<h2 className="text-2xl font-semibold text-[#5a5a4e] mb-3">
|
||||
<h2 className="text-2xl font-semibold text-gray-900 mb-3">
|
||||
4. Vos droits (RGPD)
|
||||
</h2>
|
||||
<p className="mb-2">Conformément au RGPD, vous disposez des droits suivants :</p>
|
||||
<ul className="list-disc pl-6 space-y-2">
|
||||
<li><strong>Droit d'accès :</strong> obtenir une copie de vos données</li>
|
||||
<li><strong>Droit d accès :</strong> obtenir une copie de vos données</li>
|
||||
<li><strong>Droit de rectification :</strong> corriger vos données inexactes</li>
|
||||
<li><strong>Droit à l'effacement :</strong> demander la suppression de vos données</li>
|
||||
<li><strong>Droit d'opposition :</strong> vous opposer au traitement de vos données</li>
|
||||
<li><strong>Droit à l effacement :</strong> demander la suppression de vos données</li>
|
||||
<li><strong>Droit d opposition :</strong> vous opposer au traitement de vos données</li>
|
||||
</ul>
|
||||
<p className="mt-3">
|
||||
Pour exercer ces droits, contactez-nous à : <a href="mailto:privacy@thetiptop.fr" className="text-[#d4a574] hover:text-[#c4956a] transition-colors">privacy@thetiptop.fr</a>
|
||||
Pour exercer ces droits, contactez-nous à : <a href="mailto:privacy@thetiptop.fr" className="text-primary-600 hover:underline">privacy@thetiptop.fr</a>
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 className="text-2xl font-semibold text-[#5a5a4e] mb-3">
|
||||
<h2 className="text-2xl font-semibold text-gray-900 mb-3">
|
||||
5. Contact
|
||||
</h2>
|
||||
<p>
|
||||
|
|
@ -82,21 +82,18 @@ export default function PrivacyPage() {
|
|||
vous pouvez nous contacter :
|
||||
</p>
|
||||
<ul className="list-none space-y-2 mt-3">
|
||||
<li><strong>Email :</strong> <a href="mailto:privacy@thetiptop.fr" className="text-[#d4a574] hover:text-[#c4956a] transition-colors">privacy@thetiptop.fr</a></li>
|
||||
<li><strong>Email :</strong> <a href="mailto:privacy@thetiptop.fr" className="text-primary-600 hover:underline">privacy@thetiptop.fr</a></li>
|
||||
<li><strong>Adresse :</strong> 18 Avenue Thiers, 06000 Nice, France</li>
|
||||
</ul>
|
||||
</section>
|
||||
</div>
|
||||
|
||||
<div className="mt-8 pt-6 border-t border-[#e5e4dc]">
|
||||
<div className="mt-8 pt-6 border-t border-gray-200">
|
||||
<a
|
||||
href="/"
|
||||
className="inline-flex items-center gap-2 text-[#d4a574] hover:text-[#c4956a] font-medium transition-colors group"
|
||||
className="text-primary-600 hover:text-primary-700 font-medium"
|
||||
>
|
||||
<svg className="w-5 h-5 group-hover:-translate-x-1 transition-transform" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M10 19l-7-7m0 0l7-7m-7 7h18" />
|
||||
</svg>
|
||||
Retour à l'accueil
|
||||
← Retour à l accueil
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -95,48 +95,48 @@ export default function ProfilePage() {
|
|||
};
|
||||
|
||||
return (
|
||||
<div className="min-h-screen bg-gradient-to-br from-[#f5f5f0] via-[#faf9f5] to-[#f5f5f0] py-8">
|
||||
<div className="min-h-screen bg-gray-50 py-8">
|
||||
<div className="container mx-auto px-4 max-w-4xl">
|
||||
<h1 className="text-4xl font-bold text-[#5a5a4e] mb-8">Mon profil</h1>
|
||||
<h1 className="text-4xl font-bold text-gray-900 mb-8">Mon profil</h1>
|
||||
|
||||
<div className="grid md:grid-cols-3 gap-6">
|
||||
{/* Profile Info Card */}
|
||||
<div className="md:col-span-2">
|
||||
<div className="bg-white rounded-xl shadow-md overflow-hidden border border-[#e5e4dc]">
|
||||
<div className="px-6 py-4 border-b border-[#e5e4dc]">
|
||||
<h2 className="text-xl font-bold text-[#5a5a4e]">Informations personnelles</h2>
|
||||
<div className="bg-white rounded-xl shadow-md overflow-hidden">
|
||||
<div className="px-6 py-4 border-b border-gray-200">
|
||||
<h2 className="text-xl font-bold text-gray-900">Informations personnelles</h2>
|
||||
</div>
|
||||
<div className="p-6">
|
||||
{!isEditing ? (
|
||||
<div className="space-y-4">
|
||||
<div>
|
||||
<label className="text-sm font-medium text-[#8a8a7a]">
|
||||
<label className="text-sm font-medium text-gray-500">
|
||||
Prénom
|
||||
</label>
|
||||
<p className="text-lg text-[#5a5a4e]">{user.firstName}</p>
|
||||
<p className="text-lg text-gray-900">{user.firstName}</p>
|
||||
</div>
|
||||
<div>
|
||||
<label className="text-sm font-medium text-[#8a8a7a]">
|
||||
<label className="text-sm font-medium text-gray-500">
|
||||
Nom
|
||||
</label>
|
||||
<p className="text-lg text-[#5a5a4e]">{user.lastName}</p>
|
||||
<p className="text-lg text-gray-900">{user.lastName}</p>
|
||||
</div>
|
||||
<div>
|
||||
<label className="text-sm font-medium text-[#8a8a7a]">
|
||||
<label className="text-sm font-medium text-gray-500">
|
||||
Email
|
||||
</label>
|
||||
<p className="text-lg text-[#5a5a4e]">{user.email}</p>
|
||||
<p className="text-lg text-gray-900">{user.email}</p>
|
||||
</div>
|
||||
<div>
|
||||
<label className="text-sm font-medium text-[#8a8a7a]">
|
||||
<label className="text-sm font-medium text-gray-500">
|
||||
Téléphone
|
||||
</label>
|
||||
<p className="text-lg text-[#5a5a4e]">
|
||||
<p className="text-lg text-gray-900">
|
||||
{user.phone || "Non renseigné"}
|
||||
</p>
|
||||
</div>
|
||||
<div>
|
||||
<label className="text-sm font-medium text-[#8a8a7a]">
|
||||
<label className="text-sm font-medium text-gray-500">
|
||||
Rôle
|
||||
</label>
|
||||
<div className="mt-1">
|
||||
|
|
@ -148,7 +148,7 @@ export default function ProfilePage() {
|
|||
<div className="pt-4">
|
||||
<button
|
||||
onClick={() => setIsEditing(true)}
|
||||
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"
|
||||
className="bg-[#1a4d2e] hover:bg-[#2d5a3d] text-white font-bold px-6 py-3 rounded-lg transition-all"
|
||||
>
|
||||
Modifier mes informations
|
||||
</button>
|
||||
|
|
@ -191,7 +191,7 @@ export default function ProfilePage() {
|
|||
<button
|
||||
type="submit"
|
||||
disabled={isSubmitting}
|
||||
className="bg-gradient-to-r from-[#d4a574] to-[#c4956a] hover:from-[#e5b685] hover:to-[#d4a574] disabled:bg-gray-400 text-white font-bold px-6 py-3 rounded-lg transition-all shadow-lg hover:scale-105 duration-300"
|
||||
className="bg-[#1a4d2e] hover:bg-[#2d5a3d] disabled:bg-gray-400 text-white font-bold px-6 py-3 rounded-lg transition-all"
|
||||
>
|
||||
{isSubmitting ? "Enregistrement..." : "Enregistrer"}
|
||||
</button>
|
||||
|
|
@ -199,7 +199,7 @@ export default function ProfilePage() {
|
|||
type="button"
|
||||
onClick={handleCancel}
|
||||
disabled={isSubmitting}
|
||||
className="border-2 border-[#e5e4dc] hover:bg-[#f5f5f0] text-[#5a5a4e] font-bold px-6 py-3 rounded-lg transition-all"
|
||||
className="border-2 border-gray-300 hover:bg-gray-50 text-gray-700 font-bold px-6 py-3 rounded-lg transition-all"
|
||||
>
|
||||
Annuler
|
||||
</button>
|
||||
|
|
@ -212,13 +212,13 @@ export default function ProfilePage() {
|
|||
|
||||
{/* Account Status Card */}
|
||||
<div>
|
||||
<div className="bg-white rounded-xl shadow-md overflow-hidden border border-[#e5e4dc]">
|
||||
<div className="px-6 py-4 border-b border-[#e5e4dc]">
|
||||
<h2 className="text-xl font-bold text-[#5a5a4e]">Statut du compte</h2>
|
||||
<div className="bg-white rounded-xl shadow-md overflow-hidden">
|
||||
<div className="px-6 py-4 border-b border-gray-200">
|
||||
<h2 className="text-xl font-bold text-gray-900">Statut du compte</h2>
|
||||
</div>
|
||||
<div className="p-6 space-y-4">
|
||||
<div>
|
||||
<label className="text-sm font-medium text-[#8a8a7a]">
|
||||
<label className="text-sm font-medium text-gray-500">
|
||||
Email vérifié
|
||||
</label>
|
||||
<div className="mt-1">
|
||||
|
|
@ -230,33 +230,41 @@ export default function ProfilePage() {
|
|||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<label className="text-sm font-medium text-[#8a8a7a]">
|
||||
<label className="text-sm font-medium text-gray-500">
|
||||
Membre depuis
|
||||
</label>
|
||||
<p className="text-sm text-[#5a5a4e] mt-1">
|
||||
<p className="text-sm text-gray-900 mt-1">
|
||||
{formatDate(user.createdAt)}
|
||||
</p>
|
||||
</div>
|
||||
<div>
|
||||
<label className="text-sm font-medium text-gray-500">
|
||||
Dernière modification
|
||||
</label>
|
||||
<p className="text-sm text-gray-900 mt-1">
|
||||
{user.updatedAt ? formatDate(user.updatedAt) : 'N/A'}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Quick Actions Card */}
|
||||
<div className="bg-white rounded-xl shadow-md overflow-hidden border border-[#e5e4dc] mt-6">
|
||||
<div className="px-6 py-4 border-b border-[#e5e4dc]">
|
||||
<h2 className="text-xl font-bold text-[#5a5a4e]">Actions rapides</h2>
|
||||
<div className="bg-white rounded-xl shadow-md overflow-hidden mt-6">
|
||||
<div className="px-6 py-4 border-b border-gray-200">
|
||||
<h2 className="text-xl font-bold text-gray-900">Actions rapides</h2>
|
||||
</div>
|
||||
<div className="p-6 space-y-2">
|
||||
{user.role === "CLIENT" && (
|
||||
<>
|
||||
<button
|
||||
onClick={() => router.push(ROUTES.GAME)}
|
||||
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"
|
||||
className="w-full bg-[#f59e0b] hover:bg-[#d97706] text-white font-bold px-6 py-3 rounded-lg transition-all"
|
||||
>
|
||||
Jouer
|
||||
</button>
|
||||
<button
|
||||
onClick={() => router.push(ROUTES.HISTORY)}
|
||||
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"
|
||||
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"
|
||||
>
|
||||
Historique
|
||||
</button>
|
||||
|
|
@ -265,7 +273,7 @@ export default function ProfilePage() {
|
|||
{user.role === "EMPLOYEE" && (
|
||||
<button
|
||||
onClick={() => router.push(ROUTES.EMPLOYEE_DASHBOARD)}
|
||||
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"
|
||||
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"
|
||||
>
|
||||
Tableau de bord
|
||||
</button>
|
||||
|
|
@ -273,7 +281,7 @@ export default function ProfilePage() {
|
|||
{user.role === "ADMIN" && (
|
||||
<button
|
||||
onClick={() => router.push(ROUTES.ADMIN_DASHBOARD)}
|
||||
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"
|
||||
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"
|
||||
>
|
||||
Administration
|
||||
</button>
|
||||
|
|
|
|||
|
|
@ -11,15 +11,15 @@ export default function RulesPage() {
|
|||
};
|
||||
|
||||
return (
|
||||
<div className="min-h-screen bg-gradient-to-br from-[#f5f5f0] via-[#faf9f5] to-[#f5f5f0]">
|
||||
<div className="min-h-screen bg-gray-50">
|
||||
{/* Hero Section */}
|
||||
<section className="bg-gradient-to-r from-white to-[#faf9f5] py-12 border-b-2 border-[#e5e4dc]">
|
||||
<section className="bg-white py-12">
|
||||
<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">
|
||||
<h1 className="text-4xl md:text-5xl font-bold text-gray-900 mb-4">
|
||||
Règlement du jeu-concours
|
||||
</h1>
|
||||
<p className="text-lg text-[#8a8a7a]">
|
||||
<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>
|
||||
|
|
@ -31,36 +31,36 @@ export default function RulesPage() {
|
|||
<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="bg-white rounded-xl shadow-md p-6 mb-8">
|
||||
<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>
|
||||
<h2 className="text-2xl font-bold text-gray-900">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]">
|
||||
<div className="bg-red-50 rounded-lg p-6 text-center">
|
||||
<div className="text-4xl mb-3">🎯</div>
|
||||
<div className="text-2xl font-bold text-gray-900 mb-2">100% gagnants</div>
|
||||
<p className="text-sm text-gray-600">
|
||||
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]">
|
||||
<div className="bg-orange-50 rounded-lg p-6 text-center">
|
||||
<div className="text-4xl mb-3">🔄</div>
|
||||
<div className="text-2xl font-bold text-gray-900 mb-2">30 + 30 jours</div>
|
||||
<p className="text-sm text-gray-600">
|
||||
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]">
|
||||
<div className="bg-yellow-50 rounded-lg p-6 text-center">
|
||||
<div className="text-4xl mb-3">🏆</div>
|
||||
<div className="text-2xl font-bold text-gray-900 mb-2">Grand prix 360€</div>
|
||||
<p className="text-sm text-gray-600">
|
||||
Tirage final sous contrôle d'huissier
|
||||
</p>
|
||||
</div>
|
||||
|
|
@ -76,17 +76,17 @@ export default function RulesPage() {
|
|||
<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]">
|
||||
<div className="bg-white rounded-xl shadow-md overflow-hidden">
|
||||
<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"
|
||||
className="w-full flex items-center justify-between p-6 text-left hover:bg-gray-50 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>
|
||||
<span className="text-2xl">📋</span>
|
||||
<h3 className="text-xl font-bold text-gray-900">1. Conditions de participation</h3>
|
||||
</div>
|
||||
<svg
|
||||
className={`w-6 h-6 text-[#8a8a7a] transition-transform ${openSection === 1 ? 'rotate-180' : ''}`}
|
||||
className={`w-6 h-6 text-gray-500 transition-transform ${openSection === 1 ? 'rotate-180' : ''}`}
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
viewBox="0 0 24 24"
|
||||
|
|
@ -95,7 +95,7 @@ export default function RulesPage() {
|
|||
</svg>
|
||||
</button>
|
||||
{openSection === 1 && (
|
||||
<div className="px-6 pb-6 space-y-4 text-[#5a5a4e]">
|
||||
<div className="px-6 pb-6 space-y-4 text-gray-700">
|
||||
<p>Le jeu est ouvert à toute personne physique majeure résidant en France métropolitaine.</p>
|
||||
<p className="font-semibold">Sont exclus de la participation :</p>
|
||||
<ul className="list-disc list-inside space-y-2 ml-4">
|
||||
|
|
@ -109,17 +109,17 @@ export default function RulesPage() {
|
|||
</div>
|
||||
|
||||
{/* Section 2 - Codes de participation */}
|
||||
<div className="bg-white rounded-xl shadow-md overflow-hidden border border-[#e5e4dc]">
|
||||
<div className="bg-white rounded-xl shadow-md overflow-hidden">
|
||||
<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"
|
||||
className="w-full flex items-center justify-between p-6 text-left hover:bg-gray-50 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>
|
||||
<span className="text-2xl">🎫</span>
|
||||
<h3 className="text-xl font-bold text-gray-900">2. Codes de participation</h3>
|
||||
</div>
|
||||
<svg
|
||||
className={`w-6 h-6 text-[#8a8a7a] transition-transform ${openSection === 2 ? 'rotate-180' : ''}`}
|
||||
className={`w-6 h-6 text-gray-500 transition-transform ${openSection === 2 ? 'rotate-180' : ''}`}
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
viewBox="0 0 24 24"
|
||||
|
|
@ -128,7 +128,7 @@ export default function RulesPage() {
|
|||
</svg>
|
||||
</button>
|
||||
{openSection === 2 && (
|
||||
<div className="px-6 pb-6 space-y-4 text-[#5a5a4e]">
|
||||
<div className="px-6 pb-6 space-y-4 text-gray-700">
|
||||
<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>
|
||||
|
|
@ -138,26 +138,26 @@ export default function RulesPage() {
|
|||
<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 className="bg-amber-50 border-l-4 border-amber-500 p-4 mt-4">
|
||||
<p className="font-semibold text-amber-900">⚠️ Important</p>
|
||||
<p className="text-amber-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-[#e5e4dc]">
|
||||
<div className="bg-white rounded-xl shadow-md overflow-hidden">
|
||||
<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"
|
||||
className="w-full flex items-center justify-between p-6 text-left hover:bg-gray-50 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. Calendrier et délais</h3>
|
||||
<span className="text-2xl">📅</span>
|
||||
<h3 className="text-xl font-bold text-gray-900">3. Calendrier et délais</h3>
|
||||
</div>
|
||||
<svg
|
||||
className={`w-6 h-6 text-[#8a8a7a] transition-transform ${openSection === 3 ? 'rotate-180' : ''}`}
|
||||
className={`w-6 h-6 text-gray-500 transition-transform ${openSection === 3 ? 'rotate-180' : ''}`}
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
viewBox="0 0 24 24"
|
||||
|
|
@ -166,7 +166,7 @@ export default function RulesPage() {
|
|||
</svg>
|
||||
</button>
|
||||
{openSection === 3 && (
|
||||
<div className="px-6 pb-6 space-y-4 text-[#5a5a4e]">
|
||||
<div className="px-6 pb-6 space-y-4 text-gray-700">
|
||||
<div>
|
||||
<p className="font-semibold mb-2">📍 Période de participation</p>
|
||||
<p>Du 1er janvier 2025 à 00h00 au 31 janvier 2025 à 23h59 (heure de Paris)</p>
|
||||
|
|
@ -179,26 +179,26 @@ export default function RulesPage() {
|
|||
<p className="font-semibold mb-2">📍 Tirage final</p>
|
||||
<p>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</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]">✓ À retenir</p>
|
||||
<p className="text-[#5a5a4e]">Seules les participations enregistrées pendant la période officielle seront prises en compte.</p>
|
||||
<div className="bg-green-50 border-l-4 border-green-500 p-4 mt-4">
|
||||
<p className="font-semibold text-green-900">✓ À retenir</p>
|
||||
<p className="text-green-800">Seules les participations enregistrées pendant la période officielle seront prises en compte.</p>
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
|
||||
{/* Section 4 - Tirage final Grand Prix */}
|
||||
<div className="bg-white rounded-xl shadow-md overflow-hidden border border-[#e5e4dc]">
|
||||
<div className="bg-white rounded-xl shadow-md overflow-hidden">
|
||||
<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"
|
||||
className="w-full flex items-center justify-between p-6 text-left hover:bg-gray-50 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>
|
||||
<span className="text-2xl">🏆</span>
|
||||
<h3 className="text-xl font-bold text-gray-900">4. Tirage final - Grand Prix</h3>
|
||||
</div>
|
||||
<svg
|
||||
className={`w-6 h-6 text-[#8a8a7a] transition-transform ${openSection === 4 ? 'rotate-180' : ''}`}
|
||||
className={`w-6 h-6 text-gray-500 transition-transform ${openSection === 4 ? 'rotate-180' : ''}`}
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
viewBox="0 0 24 24"
|
||||
|
|
@ -207,7 +207,7 @@ export default function RulesPage() {
|
|||
</svg>
|
||||
</button>
|
||||
{openSection === 4 && (
|
||||
<div className="px-6 pb-6 space-y-4 text-[#5a5a4e]">
|
||||
<div className="px-6 pb-6 space-y-4 text-gray-700">
|
||||
<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>
|
||||
|
|
@ -223,26 +223,26 @@ export default function RulesPage() {
|
|||
<p className="font-semibold mb-2">Le lot :</p>
|
||||
<p>Le gagnant recevra pendant 12 mois consécutifs une livraison mensuelle de thé d'une valeur de 30€, soit un total 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 className="bg-yellow-50 border-l-4 border-yellow-500 p-4 mt-4">
|
||||
<p className="font-semibold text-yellow-900">🎁 Information</p>
|
||||
<p className="text-yellow-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-[#e5e4dc]">
|
||||
<div className="bg-white rounded-xl shadow-md overflow-hidden">
|
||||
<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"
|
||||
className="w-full flex items-center justify-between p-6 text-left hover:bg-gray-50 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>
|
||||
<span className="text-2xl">🎁</span>
|
||||
<h3 className="text-xl font-bold text-gray-900">5. Retrait des lots</h3>
|
||||
</div>
|
||||
<svg
|
||||
className={`w-6 h-6 text-[#8a8a7a] transition-transform ${openSection === 5 ? 'rotate-180' : ''}`}
|
||||
className={`w-6 h-6 text-gray-500 transition-transform ${openSection === 5 ? 'rotate-180' : ''}`}
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
viewBox="0 0 24 24"
|
||||
|
|
@ -251,7 +251,7 @@ export default function RulesPage() {
|
|||
</svg>
|
||||
</button>
|
||||
{openSection === 5 && (
|
||||
<div className="px-6 pb-6 space-y-4 text-[#5a5a4e]">
|
||||
<div className="px-6 pb-6 space-y-4 text-gray-700">
|
||||
<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>
|
||||
|
|
@ -261,7 +261,7 @@ export default function RulesPage() {
|
|||
<li><strong>Grand prix (1 an de thé) :</strong> Livraison mensuelle à l'adresse de votre choix</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div className="bg-red-50 border-l-4 border-red-500 p-4 mt-4 rounded">
|
||||
<div className="bg-red-50 border-l-4 border-red-500 p-4 mt-4">
|
||||
<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>
|
||||
|
|
@ -270,17 +270,17 @@ export default function RulesPage() {
|
|||
</div>
|
||||
|
||||
{/* Section 6 - Protection des données */}
|
||||
<div className="bg-white rounded-xl shadow-md overflow-hidden border border-[#e5e4dc]">
|
||||
<div className="bg-white rounded-xl shadow-md overflow-hidden">
|
||||
<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"
|
||||
className="w-full flex items-center justify-between p-6 text-left hover:bg-gray-50 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>
|
||||
<span className="text-2xl">🔒</span>
|
||||
<h3 className="text-xl font-bold text-gray-900">6. Protection des données personnelles</h3>
|
||||
</div>
|
||||
<svg
|
||||
className={`w-6 h-6 text-[#8a8a7a] transition-transform ${openSection === 6 ? 'rotate-180' : ''}`}
|
||||
className={`w-6 h-6 text-gray-500 transition-transform ${openSection === 6 ? 'rotate-180' : ''}`}
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
viewBox="0 0 24 24"
|
||||
|
|
@ -289,7 +289,7 @@ export default function RulesPage() {
|
|||
</svg>
|
||||
</button>
|
||||
{openSection === 6 && (
|
||||
<div className="px-6 pb-6 space-y-4 text-[#5a5a4e]">
|
||||
<div className="px-6 pb-6 space-y-4 text-gray-700">
|
||||
<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>
|
||||
|
|
@ -301,8 +301,8 @@ export default function RulesPage() {
|
|||
<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>
|
||||
<p>Pour exercer vos droits, contactez-nous à : <a href="mailto:contact@thetiptop.fr" className="text-[#1a4d2e] underline hover:text-[#f59e0b]">contact@thetiptop.fr</a></p>
|
||||
<p>Pour plus d'informations, consultez notre <a href="/privacy" className="text-[#1a4d2e] underline hover:text-[#f59e0b]">Politique de confidentialité</a>.</p>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
|
|
@ -312,61 +312,39 @@ export default function RulesPage() {
|
|||
</section>
|
||||
|
||||
{/* Informations légales Section */}
|
||||
<section className="py-16 bg-gradient-to-br from-[#f5f5f0] via-[#faf9f5] to-[#f5f5f0]">
|
||||
<section className="py-12 bg-gradient-to-br from-[#1a4d2e] via-[#2d5a3d] to-[#1a4d2e]">
|
||||
<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="max-w-4xl mx-auto">
|
||||
<div className="bg-white/10 backdrop-blur-sm rounded-xl p-8 text-white">
|
||||
<h2 className="text-2xl font-bold mb-6">Informations légales</h2>
|
||||
|
||||
<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>
|
||||
<div className="grid md:grid-cols-2 gap-8">
|
||||
<div>
|
||||
<h3 className="font-semibold mb-3 text-[#f59e0b]">Organisateur</h3>
|
||||
<p className="text-sm">Thé Tip Top</p>
|
||||
<p className="text-sm">18 Avenue des Thés</p>
|
||||
<p className="text-sm">75001 Paris, France</p>
|
||||
<p className="text-sm text-[#8a8a7a]">SIRET: 12345678901234</p>
|
||||
</div>
|
||||
<p className="text-sm">SIRET: 12345678901234</p>
|
||||
</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 Dupont</p>
|
||||
<div>
|
||||
<h3 className="font-semibold mb-3 text-[#f59e0b]">Huissier</h3>
|
||||
<p className="text-sm">Maître Dupont</p>
|
||||
<p className="text-sm">Office Notarial de Paris</p>
|
||||
<p className="text-sm">456 Rue de la Justice</p>
|
||||
<p className="text-sm">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">
|
||||
<div className="mt-6 pt-6 border-t border-white/20">
|
||||
<p className="text-sm text-white/80">
|
||||
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.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
);
|
||||
|
|
|
|||
|
|
@ -7,67 +7,67 @@ export const metadata: Metadata = {
|
|||
|
||||
export default function TermsPage() {
|
||||
return (
|
||||
<div className="min-h-screen bg-gradient-to-br from-[#f5f5f0] via-[#faf9f5] to-[#f5f5f0] py-12 px-4">
|
||||
<div className="max-w-4xl mx-auto bg-white rounded-xl shadow-lg border border-[#e5e4dc] p-8">
|
||||
<h1 className="text-3xl font-bold text-[#5a5a4e] mb-6">
|
||||
Conditions d'utilisation
|
||||
<div className="min-h-screen bg-gradient-to-b from-primary-50 to-white py-12 px-4">
|
||||
<div className="max-w-4xl mx-auto bg-white rounded-lg shadow-lg p-8">
|
||||
<h1 className="text-3xl font-bold text-gray-900 mb-6">
|
||||
Conditions d utilisation
|
||||
</h1>
|
||||
|
||||
<p className="text-sm text-[#8a8a7a] mb-8">
|
||||
<p className="text-sm text-gray-600 mb-8">
|
||||
Dernière mise à jour : 17 janvier 2025
|
||||
</p>
|
||||
|
||||
<div className="space-y-6 text-[#5a5a4e]">
|
||||
<div className="space-y-6 text-gray-700">
|
||||
<section>
|
||||
<h2 className="text-2xl font-semibold text-[#5a5a4e] mb-3">
|
||||
<h2 className="text-2xl font-semibold text-gray-900 mb-3">
|
||||
1. Présentation
|
||||
</h2>
|
||||
<p>
|
||||
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.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 className="text-2xl font-semibold text-[#5a5a4e] mb-3">
|
||||
<h2 className="text-2xl font-semibold text-gray-900 mb-3">
|
||||
2. Objet du jeu-concours
|
||||
</h2>
|
||||
<p>
|
||||
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.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 className="text-2xl font-semibold text-[#5a5a4e] mb-3">
|
||||
<h2 className="text-2xl font-semibold text-gray-900 mb-3">
|
||||
3. Conditions de participation
|
||||
</h2>
|
||||
<ul className="list-disc pl-6 space-y-2">
|
||||
<li>Être âgé de 18 ans ou plus</li>
|
||||
<li>Résider en France métropolitaine</li>
|
||||
<li>Créer un compte avec une adresse e-mail valide</li>
|
||||
<li>Accepter les présentes conditions d'utilisation</li>
|
||||
<li>Accepter les présentes conditions d utilisation</li>
|
||||
<li>Accepter la politique de confidentialité</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 className="text-2xl font-semibold text-[#5a5a4e] mb-3">
|
||||
<h2 className="text-2xl font-semibold text-gray-900 mb-3">
|
||||
4. Modalités de participation
|
||||
</h2>
|
||||
<p className="mb-2">Pour participer :</p>
|
||||
<ol className="list-decimal pl-6 space-y-2">
|
||||
<li>Créez un compte sur le site</li>
|
||||
<li>Entrez le code unique figurant sur votre ticket d'achat</li>
|
||||
<li>Entrez le code unique figurant sur votre ticket d achat</li>
|
||||
<li>Découvrez instantanément votre gain</li>
|
||||
<li>Suivez les instructions pour récupérer votre lot</li>
|
||||
</ol>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 className="text-2xl font-semibold text-[#5a5a4e] mb-3">
|
||||
<h2 className="text-2xl font-semibold text-gray-900 mb-3">
|
||||
5. Lots à gagner
|
||||
</h2>
|
||||
<p className="mb-2">Les lots suivants sont disponibles :</p>
|
||||
|
|
@ -82,7 +82,7 @@ export default function TermsPage() {
|
|||
</section>
|
||||
|
||||
<section>
|
||||
<h2 className="text-2xl font-semibold text-[#5a5a4e] mb-3">
|
||||
<h2 className="text-2xl font-semibold text-gray-900 mb-3">
|
||||
6. Récupération des lots
|
||||
</h2>
|
||||
<p>
|
||||
|
|
@ -93,7 +93,7 @@ export default function TermsPage() {
|
|||
</section>
|
||||
|
||||
<section>
|
||||
<h2 className="text-2xl font-semibold text-[#5a5a4e] mb-3">
|
||||
<h2 className="text-2xl font-semibold text-gray-900 mb-3">
|
||||
7. Limitation de responsabilité
|
||||
</h2>
|
||||
<p>
|
||||
|
|
@ -104,7 +104,7 @@ export default function TermsPage() {
|
|||
</section>
|
||||
|
||||
<section>
|
||||
<h2 className="text-2xl font-semibold text-[#5a5a4e] mb-3">
|
||||
<h2 className="text-2xl font-semibold text-gray-900 mb-3">
|
||||
8. Propriété intellectuelle
|
||||
</h2>
|
||||
<p>
|
||||
|
|
@ -116,7 +116,7 @@ export default function TermsPage() {
|
|||
</section>
|
||||
|
||||
<section>
|
||||
<h2 className="text-2xl font-semibold text-[#5a5a4e] mb-3">
|
||||
<h2 className="text-2xl font-semibold text-gray-900 mb-3">
|
||||
9. Modification des conditions
|
||||
</h2>
|
||||
<p>
|
||||
|
|
@ -127,41 +127,38 @@ export default function TermsPage() {
|
|||
</section>
|
||||
|
||||
<section>
|
||||
<h2 className="text-2xl font-semibold text-[#5a5a4e] mb-3">
|
||||
<h2 className="text-2xl font-semibold text-gray-900 mb-3">
|
||||
10. Droit applicable et juridiction
|
||||
</h2>
|
||||
<p>
|
||||
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.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 className="text-2xl font-semibold text-[#5a5a4e] mb-3">
|
||||
<h2 className="text-2xl font-semibold text-gray-900 mb-3">
|
||||
11. Contact
|
||||
</h2>
|
||||
<p>
|
||||
Pour toute question concernant ces conditions d'utilisation, vous pouvez
|
||||
Pour toute question concernant ces conditions d utilisation, vous pouvez
|
||||
nous contacter :
|
||||
</p>
|
||||
<ul className="list-none space-y-2 mt-3">
|
||||
<li><strong>Email :</strong> <a href="mailto:contact@thetiptop.fr" className="text-[#d4a574] hover:text-[#c4956a] transition-colors">contact@thetiptop.fr</a></li>
|
||||
<li><strong>Email :</strong> <a href="mailto:contact@thetiptop.fr" className="text-primary-600 hover:underline">contact@thetiptop.fr</a></li>
|
||||
<li><strong>Adresse :</strong> 18 Avenue Thiers, 06000 Nice, France</li>
|
||||
<li><strong>Téléphone :</strong> +33 4 93 00 00 00</li>
|
||||
</ul>
|
||||
</section>
|
||||
</div>
|
||||
|
||||
<div className="mt-8 pt-6 border-t border-[#e5e4dc]">
|
||||
<div className="mt-8 pt-6 border-t border-gray-200">
|
||||
<a
|
||||
href="/"
|
||||
className="inline-flex items-center gap-2 text-[#d4a574] hover:text-[#c4956a] font-medium transition-colors group"
|
||||
className="text-primary-600 hover:text-primary-700 font-medium"
|
||||
>
|
||||
<svg className="w-5 h-5 group-hover:-translate-x-1 transition-transform" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M10 19l-7-7m0 0l7-7m-7 7h18" />
|
||||
</svg>
|
||||
Retour à l'accueil
|
||||
← Retour à l accueil
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -47,14 +47,14 @@ export default function Header() {
|
|||
<header className="bg-gradient-to-r from-[#f5f5f0] to-[#faf9f5] sticky top-0 z-50 shadow-lg border-b-2 border-[#e5e4dc]">
|
||||
{/* Main Header */}
|
||||
<div className="container mx-auto px-4">
|
||||
<div className="flex items-center justify-between h-18 gap-4">
|
||||
<div className="flex items-center justify-between h-18">
|
||||
{/* Logo */}
|
||||
<Link href={ROUTES.HOME} className="group flex items-center gap-3 flex-shrink-0">
|
||||
<Link href={ROUTES.HOME} className="group flex items-center gap-3">
|
||||
<Logo size="md" showText={false} className="group-hover:scale-105 transition-transform" />
|
||||
</Link>
|
||||
|
||||
{/* Desktop Navigation */}
|
||||
<nav className="hidden md:flex items-center gap-6 flex-shrink-0">
|
||||
<nav className="hidden md:flex items-center gap-6">
|
||||
<Link
|
||||
href={ROUTES.HOME}
|
||||
className="text-[#5a5a4e] hover:text-[#d4a574] font-medium transition-colors"
|
||||
|
|
@ -90,7 +90,7 @@ export default function Header() {
|
|||
{isAuthenticated ? (
|
||||
<Link
|
||||
href={ROUTES.GAME}
|
||||
className="bg-gradient-to-r from-[#d4a574] to-[#c4956a] hover:from-[#e5b685] hover:to-[#d4a574] text-white font-bold px-6 py-2 rounded-lg transition-all duration-300 hover:shadow-[0_0_20px_rgba(212,165,116,0.6)] shadow-lg whitespace-nowrap"
|
||||
className="bg-gradient-to-r from-[#d4a574] to-[#c4956a] hover:from-[#e5b685] hover:to-[#d4a574] text-white font-bold px-6 py-2 rounded-lg transition-all duration-300 hover:shadow-[0_0_20px_rgba(212,165,116,0.6)] hover:scale-105 shadow-lg"
|
||||
>
|
||||
Participer
|
||||
</Link>
|
||||
|
|
@ -98,11 +98,11 @@ export default function Header() {
|
|||
<div className="relative" ref={dropdownRef}>
|
||||
<button
|
||||
onClick={() => setIsParticiperDropdownOpen(!isParticiperDropdownOpen)}
|
||||
className="bg-gradient-to-r from-[#d4a574] to-[#c4956a] hover:from-[#e5b685] hover:to-[#d4a574] text-white font-bold px-6 py-2 rounded-lg transition-all duration-300 hover:shadow-[0_0_20px_rgba(212,165,116,0.6)] shadow-lg flex items-center justify-center gap-2 whitespace-nowrap"
|
||||
className="bg-gradient-to-r from-[#d4a574] to-[#c4956a] hover:from-[#e5b685] hover:to-[#d4a574] text-white font-bold px-6 py-2 rounded-lg transition-all duration-300 hover:shadow-[0_0_20px_rgba(212,165,116,0.6)] hover:scale-105 shadow-lg flex items-center gap-2"
|
||||
>
|
||||
Participer
|
||||
<svg
|
||||
className={`w-4 h-4 flex-shrink-0 transition-transform duration-300 ${isParticiperDropdownOpen ? 'rotate-180' : ''}`}
|
||||
className={`w-4 h-4 transition-transform duration-300 ${isParticiperDropdownOpen ? 'rotate-180' : ''}`}
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
viewBox="0 0 24 24"
|
||||
|
|
@ -137,40 +137,31 @@ export default function Header() {
|
|||
</nav>
|
||||
|
||||
{/* Desktop Auth Buttons */}
|
||||
<div className="hidden md:flex items-center gap-3 flex-shrink-0">
|
||||
<div className="hidden md:flex items-center gap-3">
|
||||
{isAuthenticated && (
|
||||
<>
|
||||
<Link href={getDashboardRoute()}>
|
||||
<div className="flex flex-col items-start bg-gradient-to-br from-white to-[#faf9f5] text-[#5a5a4e] hover:shadow-lg px-4 py-2.5 rounded-xl transition-all border-2 border-[#e5e4dc] hover:border-[#d4a574] group min-w-0 flex-shrink-0">
|
||||
<span className="text-sm font-bold group-hover:text-[#d4a574] transition-colors whitespace-nowrap overflow-hidden text-ellipsis max-w-[200px]">{user?.firstName} {user?.lastName}</span>
|
||||
<span className="text-xs text-[#8a8a7a] whitespace-nowrap overflow-hidden text-ellipsis max-w-[200px]">{user?.email}</span>
|
||||
</div>
|
||||
<button className="flex flex-col items-center bg-white text-[#5a5a4e] hover:bg-[#d4a574] hover:text-white font-semibold px-4 py-2 rounded-lg transition-all border border-[#e5e4dc]">
|
||||
<span className="text-sm">{user?.firstName} {user?.lastName}</span>
|
||||
<span className="text-xs font-normal opacity-80">{user?.email}</span>
|
||||
</button>
|
||||
</Link>
|
||||
<Link href={ROUTES.PROFILE}>
|
||||
<button className="flex items-center justify-center gap-2 bg-white hover:bg-gradient-to-r hover:from-[#d4a574] hover:to-[#c4956a] text-[#5a5a4e] hover:text-white font-semibold px-5 py-2.5 rounded-xl transition-all duration-300 border-2 border-[#e5e4dc] hover:border-[#d4a574] hover:shadow-lg whitespace-nowrap">
|
||||
<svg className="w-5 h-5 flex-shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z" />
|
||||
</svg>
|
||||
<button className="flex items-center gap-2 bg-white text-[#5a5a4e] hover:bg-[#d4a574] hover:text-white font-semibold px-4 py-2 rounded-lg transition-all border border-[#e5e4dc]">
|
||||
Profil
|
||||
</button>
|
||||
</Link>
|
||||
{user?.role === 'CLIENT' && (
|
||||
<Link href={ROUTES.HISTORY}>
|
||||
<button className="flex items-center justify-center gap-2 bg-white hover:bg-gradient-to-r hover:from-[#d4a574] hover:to-[#c4956a] text-[#5a5a4e] hover:text-white font-semibold px-5 py-2.5 rounded-xl transition-all duration-300 border-2 border-[#e5e4dc] hover:border-[#d4a574] hover:shadow-lg whitespace-nowrap">
|
||||
<svg className="w-5 h-5 flex-shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M12 8v13m0-13V6a2 2 0 112 2h-2zm0 0V5.5A2.5 2.5 0 109.5 8H12zm-7 4h14M5 12a2 2 0 110-4h14a2 2 0 110 4M5 12v7a2 2 0 002 2h10a2 2 0 002-2v-7" />
|
||||
</svg>
|
||||
<button className="flex items-center gap-2 bg-white text-[#5a5a4e] hover:bg-[#d4a574] hover:text-white font-semibold px-4 py-2 rounded-lg transition-all border border-[#e5e4dc]">
|
||||
Mes gains
|
||||
</button>
|
||||
</Link>
|
||||
)}
|
||||
<button
|
||||
onClick={logout}
|
||||
className="flex items-center justify-center gap-2 bg-white hover:bg-gradient-to-r hover:from-red-500 hover:to-red-600 text-[#5a5a4e] hover:text-white font-semibold px-5 py-2.5 rounded-xl transition-all duration-300 border-2 border-[#e5e4dc] hover:border-red-500 hover:shadow-lg whitespace-nowrap"
|
||||
className="flex items-center gap-2 bg-white text-[#5a5a4e] hover:bg-red-600 hover:text-white font-semibold px-4 py-2 rounded-lg transition-all border border-[#e5e4dc]"
|
||||
>
|
||||
<svg className="w-5 h-5 flex-shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M17 16l4-4m0 0l-4-4m4 4H7m6 4v1a3 3 0 01-3 3H6a3 3 0 01-3-3V7a3 3 0 013-3h4a3 3 0 013 3v1" />
|
||||
</svg>
|
||||
Déconnexion
|
||||
</button>
|
||||
</>
|
||||
|
|
@ -259,7 +250,7 @@ export default function Header() {
|
|||
{isAuthenticated ? (
|
||||
<Link
|
||||
href={ROUTES.GAME}
|
||||
className="bg-green-600 hover:bg-green-700 text-white font-semibold px-4 py-3 rounded-lg transition-all hover:shadow-lg text-center block whitespace-nowrap"
|
||||
className="bg-green-600 hover:bg-green-700 text-white font-semibold px-4 py-3 rounded-lg transition-all hover:shadow-lg text-center block"
|
||||
onClick={() => setIsMobileMenuOpen(false)}
|
||||
>
|
||||
🎯 Participer
|
||||
|
|
@ -268,11 +259,11 @@ export default function Header() {
|
|||
<div>
|
||||
<button
|
||||
onClick={() => setIsParticiperDropdownOpen(!isParticiperDropdownOpen)}
|
||||
className="bg-green-600 hover:bg-green-700 text-white font-semibold px-4 py-3 rounded-lg transition-all hover:shadow-lg flex items-center justify-center gap-2 w-full whitespace-nowrap"
|
||||
className="bg-green-600 hover:bg-green-700 text-white font-semibold px-4 py-3 rounded-lg transition-all hover:shadow-lg flex items-center justify-center gap-2 w-full"
|
||||
>
|
||||
🎯 Participer
|
||||
<svg
|
||||
className={`w-4 h-4 flex-shrink-0 transition-transform ${isParticiperDropdownOpen ? 'rotate-180' : ''}`}
|
||||
className={`w-4 h-4 transition-transform ${isParticiperDropdownOpen ? 'rotate-180' : ''}`}
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
viewBox="0 0 24 24"
|
||||
|
|
@ -314,7 +305,7 @@ export default function Header() {
|
|||
href={getDashboardRoute()}
|
||||
onClick={() => setIsMobileMenuOpen(false)}
|
||||
>
|
||||
<button className="w-full flex flex-col items-center bg-white text-[#1a4d2e] hover:bg-[#f59e0b] hover:text-white font-semibold px-4 py-3 rounded-lg transition-all whitespace-nowrap">
|
||||
<button className="w-full flex flex-col items-center bg-white text-[#1a4d2e] hover:bg-[#f59e0b] hover:text-white font-semibold px-4 py-3 rounded-lg transition-all">
|
||||
<span className="text-sm">{user?.firstName} {user?.lastName}</span>
|
||||
<span className="text-xs font-normal opacity-80">{user?.email}</span>
|
||||
</button>
|
||||
|
|
@ -323,7 +314,7 @@ export default function Header() {
|
|||
href={ROUTES.PROFILE}
|
||||
onClick={() => setIsMobileMenuOpen(false)}
|
||||
>
|
||||
<button className="w-full flex items-center justify-center gap-2 bg-white text-[#1a4d2e] hover:bg-[#f59e0b] hover:text-white font-semibold px-4 py-3 rounded-lg transition-all whitespace-nowrap">
|
||||
<button className="w-full flex items-center justify-center gap-2 bg-white text-[#1a4d2e] hover:bg-[#f59e0b] hover:text-white font-semibold px-4 py-3 rounded-lg transition-all">
|
||||
Profil
|
||||
</button>
|
||||
</Link>
|
||||
|
|
@ -332,7 +323,7 @@ export default function Header() {
|
|||
href={ROUTES.HISTORY}
|
||||
onClick={() => setIsMobileMenuOpen(false)}
|
||||
>
|
||||
<button className="w-full flex items-center justify-center gap-2 bg-white text-[#1a4d2e] hover:bg-[#f59e0b] hover:text-white font-semibold px-4 py-3 rounded-lg transition-all whitespace-nowrap">
|
||||
<button className="w-full flex items-center justify-center gap-2 bg-white text-[#1a4d2e] hover:bg-[#f59e0b] hover:text-white font-semibold px-4 py-3 rounded-lg transition-all">
|
||||
Mes gains
|
||||
</button>
|
||||
</Link>
|
||||
|
|
@ -342,7 +333,7 @@ export default function Header() {
|
|||
logout();
|
||||
setIsMobileMenuOpen(false);
|
||||
}}
|
||||
className="w-full flex items-center justify-center gap-2 bg-white text-[#1a4d2e] hover:bg-red-600 hover:text-white font-semibold px-4 py-3 rounded-lg transition-all whitespace-nowrap"
|
||||
className="w-full flex items-center justify-center gap-2 bg-white text-[#1a4d2e] hover:bg-red-600 hover:text-white font-semibold px-4 py-3 rounded-lg transition-all"
|
||||
>
|
||||
Déconnexion
|
||||
</button>
|
||||
|
|
|
|||
20
package-lock.json
generated
20
package-lock.json
generated
|
|
@ -531,6 +531,17 @@
|
|||
"node": ">=14"
|
||||
}
|
||||
},
|
||||
"node_modules/@popperjs/core": {
|
||||
"version": "2.11.8",
|
||||
"resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz",
|
||||
"integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/popperjs"
|
||||
}
|
||||
},
|
||||
"node_modules/@react-oauth/google": {
|
||||
"version": "0.12.2",
|
||||
"resolved": "https://registry.npmjs.org/@react-oauth/google/-/google-0.12.2.tgz",
|
||||
|
|
@ -704,7 +715,7 @@
|
|||
"version": "19.2.2",
|
||||
"resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.2.tgz",
|
||||
"integrity": "sha512-6mDvHUFSjyT2B2yeNx2nUgMxh9LtOWvkhIU3uePn2I2oyNymUAX1NIsdgviM4CH+JSrp2D2hsMvJOkxY+0wNRA==",
|
||||
"dev": true,
|
||||
"devOptional": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"csstype": "^3.0.2"
|
||||
|
|
@ -5231,6 +5242,13 @@
|
|||
"react-dom": ">=16"
|
||||
}
|
||||
},
|
||||
"node_modules/react-is": {
|
||||
"version": "19.2.0",
|
||||
"resolved": "https://registry.npmjs.org/react-is/-/react-is-19.2.0.tgz",
|
||||
"integrity": "sha512-x3Ax3kNSMIIkyVYhWPyO09bu0uttcAIoecO/um/rKGQ4EltYWVYtyiGkS/3xMynrbVQdS69Jhlv8FXUEZehlzA==",
|
||||
"license": "MIT",
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/react-redux": {
|
||||
"version": "9.2.0",
|
||||
"resolved": "https://registry.npmjs.org/react-redux/-/react-redux-9.2.0.tgz",
|
||||
|
|
|
|||
|
|
@ -33,9 +33,9 @@ export const API_ENDPOINTS = {
|
|||
DELETE_PRIZE: (id: string) => `/admin/prizes/${id}`,
|
||||
},
|
||||
USER: {
|
||||
PROFILE: '/users/profile',
|
||||
UPDATE_PROFILE: '/users/profile',
|
||||
CHANGE_PASSWORD: '/users/change-password',
|
||||
PROFILE: '/user/profile',
|
||||
UPDATE_PROFILE: '/user/profile',
|
||||
CHANGE_PASSWORD: '/user/change-password',
|
||||
},
|
||||
} as const;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user