Avatar
Humans and agents are told apart by shape, not colour: a circle for a person, a 4px square with a bot glyph for an agent. Image first, initials on a name-hashed hue second; a presence ring outside the shape carries a slow pulsing glow. The cards an agent hands back live under Agent cards in the composites.
<ActorAvatar name="Niek Heezemans" src={photoUrl} status="online" />Sizes
16 xs (table rows and other inline places, no text) · 32 sm (provenance lines, hover-card headers) · 40 default (cards, headers, aligned to the control scale) · 48 lg (profile, hover-card body). Same fallback rules for both kinds.
Notification badge
AvatarBadge is a plain dot marker, independent of presence.
Image first, initials second
Radix shows the fallback until the image loads, then swaps to it — image first, initials second. A broken src never resolves, so the initials stay.
Initials from name
Background hashed from the name (FNV-1a % 6 into the six chart hues) — the same person is always the same colour, drawn as a small gradient from a darker top-left to a lighter bottom-right.
Presence ring
online success · away warning · busy danger · offline border-strong. Scales in once on mount, then a slow glow pulses out from the ring in its own colour; both held under reduced motion.
Group of five, max three
AvatarGroup caps at three by default and folds the rest into a +N count; pass names and the count says who it hides, on hover and to a screen reader. Overlap rings are surface, the card underneath. A member's presence ring never renders in a group — the overlap ring already marks the edge.