docs / core / avatar-group
AvatarGroup
avatars overlapped into one cluster, so a crowd reads at a glance. the caption carries the claim, the faces carry the proof.
intensity · recedesrsc · server
provenance
shaped from sisu-pluslayer
core / primitivesintensity
recedes · safe anywhere, including dense surfacescomposition
hero social proof, participant lists, shared ownership rowsthe tinted cluster pairs tone on the group with tone on each Avatarnever more faces than max can justify. five visible is the ceilingnot a picker. the stack does not clicka11y
each Avatar keeps its ownalt · the +N chip and caption are plain textjest-axelive demo · try it out
ALBPMCED+2
+128 studentscustomize
maxvisible faces before +N
sizeoverlap and +N chip size
tonecolours the +N chip and faces
labelthe caption after the stack
usage
import { Avatar, AvatarGroup } from "@usva-ui/react/primitives/avatar";
<AvatarGroup max={4} label="+128 students">
<Avatar alt="Ada" fallback="AL" />
<Avatar alt="Blaise" fallback="BP" />
<Avatar alt="Curie" fallback="MC" />
</AvatarGroup>props
| prop | type | default | notes |
|---|---|---|---|
| max | number | — | caps the visible avatars. the rest collapse into a +N chip. |
| size | "sm" | "md" | "lg" | "md" | overlap spacing and +N chip size. match the Avatars inside. |
| label | ReactNode | — | caption after the stack, e.g. "25+ active users". |
| tone | "solid" | "accent" | "neutral" | "neutral" | colors the +N chip. pair it with the Avatar tone. |
get it
bun add @usva-ui/reactusage
import { Avatar, AvatarGroup } from "@usva-ui/react/primitives/avatar";
<AvatarGroup max={4} label="+128 students">
<Avatar alt="Ada" fallback="AL" />
<Avatar alt="Blaise" fallback="BP" />
<Avatar alt="Curie" fallback="MC" />
<Avatar alt="Dijkstra" fallback="ED" />
<Avatar alt="Euler" fallback="LE" />
</AvatarGroup>