"use client"; import * as React from "react"; import { cn } from "./lib/utils"; export interface LeaderboardEntry { rank: number; name: string; score: number; avatarInitials?: string; } export interface LeaderboardProps extends React.HTMLAttributes { entries: LeaderboardEntry[]; className?: string; } export function Leaderboard({ entries, className, ...props }: LeaderboardProps) { return (
{entries.map((entry, idx) => { const medalClass = entry.rank <= 3 ? `bg-[${entry.rank === 1 ? "accent" : entry.rank === 2 ? "bg-secondary" : "accent-strong"}] text-[10px] rounded-md` : "bg-card text-[10px] rounded-md"; const delay = idx * 60; return (
{/* Rank badge */} {entry.rank} {/* Avatar initials */} {entry.avatarInitials || entry.name.split(" ").map(w => w[0]).join("")} {/* Name */} {entry.name} {/* Score - count-up animation */} {entry.score}
); })}
); }