'use client'; import { useEffect, useState } from 'react'; interface CountdownTimerProps { endDate: Date; title?: string; } export default function CountdownTimer({ endDate, title = "Période de jeu" }: CountdownTimerProps) { const [timeLeft, setTimeLeft] = useState({ days: 0, hours: 0, minutes: 0, seconds: 0, }); const [progress, setProgress] = useState(0); useEffect(() => { const calculateTimeLeft = () => { const now = new Date().getTime(); const end = endDate.getTime(); const difference = end - now; if (difference > 0) { const days = Math.floor(difference / (1000 * 60 * 60 * 24)); const hours = Math.floor((difference % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)); const minutes = Math.floor((difference % (1000 * 60 * 60)) / (1000 * 60)); const seconds = Math.floor((difference % (1000 * 60)) / 1000); setTimeLeft({ days, hours, minutes, seconds }); // Calcul du pourcentage écoulé (exemple: 30 jours de concours) const totalDuration = 30 * 24 * 60 * 60 * 1000; // 30 jours en ms const elapsed = totalDuration - difference; const progressPercent = Math.min(Math.max((elapsed / totalDuration) * 100, 0), 100); setProgress(progressPercent); } else { setTimeLeft({ days: 0, hours: 0, minutes: 0, seconds: 0 }); setProgress(100); } }; calculateTimeLeft(); const timer = setInterval(calculateTimeLeft, 1000); return () => clearInterval(timer); }, [endDate]); return (

{title}

Utilisez vos tickets pour jouer et gagner des lots !

{/* Compteur principal */}
{timeLeft.days} jour{timeLeft.days !== 1 ? 's' : ''}
restants
{/* Détails temps */}
{String(timeLeft.hours).padStart(2, '0')}
heures
:
{String(timeLeft.minutes).padStart(2, '0')}
minutes
:
{String(timeLeft.seconds).padStart(2, '0')}
secondes
); }