import type { ControlSize } from "../../Theme/tokens/primitives/controlSizes"; /** ControlSize plus "2xs" for a badge-sized overlay and "xl" for a profile header. */ export type AvatarSize = ControlSize | "2xs" | "xl"; /** Presence indicator; the dot color and its accessible label both follow this. */ export type AvatarStatus = "online" | "away" | "busy" | "offline"; /** Image with graceful initials fallback, a deterministic per-name fill, and an optional presence dot. */ export interface AvatarProps { /** Used for initials, image alt text, the deterministic fill color, and the default `aria-label`. */ name: string; /** Image URL. Falls back to initials on a missing src or a failed load. */ src?: string; /** Default "md". */ size?: AvatarSize; /** Presence dot in the bottom-right corner; omitted entirely when unset. */ status?: AvatarStatus; /** Overrides the initials fallback's `aria-label` (defaults to `name`); no effect while the image shows, where `alt` is `name`. */ ariaLabel?: string; /** Replaces the built-in two-letter initials derivation. */ getInitials?: (name: string) => string; /** Test hook on the root. */ "data-testid"?: string; }