"use client"; import { useEffect, useState } from "react"; interface LeaderboardEntry { rank: number; username: string; score: number; level: number; avatar?: string | null; bio?: string | null; characterClass?: string | null; } // Format number with consistent locale to avoid hydration mismatch const formatScore = (score: number): string => { return score.toLocaleString("en-US"); }; export default function Leaderboard() { const [leaderboard, setLeaderboard] = useState([]); const [loading, setLoading] = useState(true); useEffect(() => { fetch("/api/leaderboard") .then((res) => res.json()) .then((data) => { setLeaderboard(data); setLoading(false); }) .catch((err) => { console.error("Error fetching leaderboard:", err); setLoading(false); }); }, []); if (loading) { return (
Chargement...
); } return (

LEADERBOARD

{/* Header */}
Rank
Player
Score
Level
{/* Entries */}
{leaderboard.map((entry) => (
{entry.rank}
{entry.username} {entry.characterClass && ( [{entry.characterClass === "WARRIOR" && "⚔️ Guerrier"} {entry.characterClass === "MAGE" && "🔮 Mage"} {entry.characterClass === "ROGUE" && "🗡️ Voleur"} {entry.characterClass === "RANGER" && "🏹 Rôdeur"} {entry.characterClass === "PALADIN" && "🛡️ Paladin"} {entry.characterClass === "ENGINEER" && "⚙️ Ingénieur"} {entry.characterClass === "MERCHANT" && "💰 Marchand"} {entry.characterClass === "SCHOLAR" && "📚 Érudit"} {entry.characterClass === "BERSERKER" && "🔥 Berserker"} {entry.characterClass === "NECROMANCER" && "💀 Nécromancien"} ] )} {(entry.bio || entry.characterClass) && (
{entry.characterClass && (
Classe
{entry.characterClass === "WARRIOR" && "⚔️"} {entry.characterClass === "MAGE" && "🔮"} {entry.characterClass === "ROGUE" && "🗡️"} {entry.characterClass === "RANGER" && "🏹"} {entry.characterClass === "PALADIN" && "🛡️"} {entry.characterClass === "ENGINEER" && "⚙️"} {entry.characterClass === "MERCHANT" && "💰"} {entry.characterClass === "SCHOLAR" && "📚"} {entry.characterClass === "BERSERKER" && "🔥"} {entry.characterClass === "NECROMANCER" && "💀"} {entry.characterClass === "WARRIOR" && "Guerrier"} {entry.characterClass === "MAGE" && "Mage"} {entry.characterClass === "ROGUE" && "Voleur"} {entry.characterClass === "RANGER" && "Rôdeur"} {entry.characterClass === "PALADIN" && "Paladin"} {entry.characterClass === "ENGINEER" && "Ingénieur"} {entry.characterClass === "MERCHANT" && "Marchand"} {entry.characterClass === "SCHOLAR" && "Érudit"} {entry.characterClass === "BERSERKER" && "Berserker"} {entry.characterClass === "NECROMANCER" && "Nécromancien"}
)} {entry.bio && ( <> {entry.characterClass && (
)}
Bio

{entry.bio}

)}
)}
{formatScore(entry.score)}
Lv.{entry.level}
))}
{/* Additional info */}

Compete with players worldwide and climb the ranks!

); }