import { cn } from "@/lib/utils"; import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar"; type IdentitySize = "xs" | "sm" | "default" | "lg"; export interface IdentityProps { name: string; avatarUrl?: string | null; initials?: string; size?: IdentitySize; className?: string; } function deriveInitials(name: string): string { const parts = name.trim().split(/\s+/); if (parts.length >= 2) return (parts[0][0] + parts[parts.length - 1][0]).toUpperCase(); return name.slice(0, 2).toUpperCase(); } const textSize: Record = { xs: "text-sm", sm: "text-xs", default: "text-sm", lg: "text-sm", }; export function Identity({ name, avatarUrl, initials, size = "default", className }: IdentityProps) { const displayInitials = initials ?? deriveInitials(name); return ( {avatarUrl && } {displayInitials} {name} ); }