import { cn } from "@pram/ui/lib/utils"; const sizeClasses = { xs: { container: "h-6 w-6", text: "text-xs" }, sm: { container: "h-8 w-8", text: "text-sm" }, md: { container: "h-10 w-10", text: "text-sm" }, lg: { container: "h-16 w-16", text: "text-xl" }, xl: { container: "h-16 w-16 md:h-20 md:w-20", text: "text-2xl md:text-3xl" }, } as const; const variantClasses = { profile: "bg-[var(--matcha-300)] text-[var(--matcha-800)]", leaderboard: "bg-[var(--oat-light)] text-[var(--warm-charcoal)]", } as const; interface AvatarProps { src: string | null | undefined; name: string; size?: keyof typeof sizeClasses; variant?: keyof typeof variantClasses; bordered?: boolean; className?: string; } export function Avatar({ src, name, size = "md", variant = "profile", bordered = false, className, }: AvatarProps) { const sizes = sizeClasses[size]; const borderClass = bordered ? "border-4 border-[var(--pure-white)] clay-shadow" : ""; const initial = (name?.[0] ?? "?").toUpperCase(); if (src) { return ( {name} ); } return (
{initial}
); }