import type { LeaderboardMember } from "@/lib/discord"; interface LeaderboardViewProps { leaderboardData: LeaderboardMember[]; currentUserRank?: LeaderboardMember; currentUserId?: string; } export default function LeaderboardView({ leaderboardData, currentUserRank, currentUserId, }: LeaderboardViewProps) { return ( <>

Leaderboard

{currentUserRank && (
{/* Background Glow */}
{currentUserRank.avatar ? ( {currentUserRank.username} ) : (
{currentUserRank.username.charAt(0).toUpperCase()}
)}
{currentUserRank.username}

Rank

#{currentUserRank.rank}

Level

{currentUserRank.level}

Total XP

{currentUserRank.xp.toLocaleString()}

)}
{/* Mobile Card View */}
{leaderboardData.length > 0 ? (
{leaderboardData.map((member) => { const isCurrentUser = member.user_id === currentUserId; let rankColor = "text-blue-400"; if (member.rank === 1) rankColor = "text-yellow-400"; if (member.rank === 2) rankColor = "text-gray-300"; if (member.rank === 3) rankColor = "text-orange-400"; return (
#{member.rank} {member.avatar ? ( ) : (
{member.username .charAt(0) .toUpperCase()}
)}

{member.username}

{isCurrentUser && ( You )}

Lv. {member.level}

{member.xp.toLocaleString()} XP

); })}
) : (
Setup leveling system to see the leaderboard
)}
{/* Desktop Table View */}
{leaderboardData.length > 0 ? ( leaderboardData.map((member) => { const isCurrentUser = member.user_id === currentUserId; let rankColor = "text-blue-400"; if (member.rank === 1) rankColor = "text-yellow-400 drop-shadow-[0_0_10px_rgba(250,204,21,0.5)]"; if (member.rank === 2) rankColor = "text-gray-300 drop-shadow-[0_0_10px_rgba(209,213,219,0.5)]"; if (member.rank === 3) rankColor = "text-orange-400 drop-shadow-[0_0_10px_rgba(251,146,60,0.5)]"; return ( ); }) ) : ( )}
Rank User Level XP
#{member.rank}
{member.avatar ? ( ) : (
{member.username .charAt(0) .toUpperCase()}
)}
{member.username} {isCurrentUser && ( You )}
{member.level} {member.xp.toLocaleString()}
Setup leveling system to see the leaderboard
); }