"use client"; import Image from "next/image"; import { useEffect, useState } from "react"; import type { Session } from "next-auth"; function todayEmoji(n: number): string { if (n >= 10000) return "🚀"; if (n >= 5000) return "🔥"; if (n >= 1000) return "⚡"; if (n >= 500) return "🎯"; if (n >= 100) return "🎮"; if (n >= 10) return "👾"; return "🌱"; } function useDailyStats() { const [today, setToday] = useState(null); // renommé plus bas en total useEffect(() => { fetch("/api/stats") .then((r) => r.json()) .then((d) => setToday(d.total)) .catch(() => {}); }, []); return today; } type HomeScreenProps = { playerName: string; setPlayerName: (v: string) => void; joinCode: string; setJoinCode: (v: string) => void; maxPlayers: number; setMaxPlayers: (v: number) => void; totalRounds: number; setTotalRounds: (v: number) => void; error: string | null; setError: (v: string | null) => void; loading: boolean; onCreateRoom: () => void; onJoinRoom: () => void; onSolo: () => void; session: Session | null; onShowAuth: () => void; onShowProfile: () => void; onShowLeaderboard: () => void; onDaily: () => void; onBlitz: () => void; }; export function HomeScreen({ playerName, setPlayerName, joinCode, setJoinCode, maxPlayers, setMaxPlayers, totalRounds, setTotalRounds, error, setError, loading, onCreateRoom, onJoinRoom, onSolo, session, onShowAuth, onShowProfile, onShowLeaderboard, onDaily, onBlitz, }: HomeScreenProps) { const btnGhost = "min-h-9 px-3 rounded-lg text-xs sm:text-sm font-semibold bg-[#242424] border border-[#2e2e2e] text-[#f0f0f0] hover:bg-[#1a1a1a] cursor-pointer whitespace-nowrap"; const today = useDailyStats(); return (
{/* Topbar */}
{session?.user ? ( ) : ( )}
{/* Hero */}
WikiRush

Navigue entre les articles Wikipedia pour atteindre la cible en premier !

{today !== null && (

{todayEmoji(today)}{" "} {today.toLocaleString("fr-FR")} {" "} partie{today > 1 ? "s" : ""} jouée{today > 1 ? "s" : ""} au total

)}
{/* Form */}
{error && (
{error}
)} setPlayerName(e.target.value)} maxLength={20} onKeyDown={(e) => e.key === "Enter" && onCreateRoom()} /> {/* Multijoueur */}

Multijoueur

Max
Manches
{/* Join row - colonne sur mobile, ligne sur sm+ */}
setJoinCode(e.target.value.toUpperCase().slice(0, 4)) } maxLength={4} onKeyDown={(e) => e.key === "Enter" && onJoinRoom()} />
{/* Divider */}
ou
{/* Solo */}

Solo

); }