Represent people in threads, sidebars, and member lists. Show an image when available, fall back to initials, and add status or grouped stacks when needed.
import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar"export function Example() { return ( <Avatar> <AvatarImage src="/assets/brand/demos/avatars/avatar-1.png" alt="Mina Cho" /> <AvatarFallback>MC</AvatarFallback> </Avatar> )}Installation
npx @arctis-sh/@arctis-sh/ui@latest add avatarUsage
import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar"<Avatar> <AvatarImage src="/assets/brand/demos/avatars/avatar-1.png" alt="Mina Cho" /> <AvatarFallback>MC</AvatarFallback></Avatar>Composition
Avatar ├── AvatarImage ├── AvatarFallback └── AvatarBadge AvatarGroup ├── Avatar └── AvatarGroupCount
Use AvatarImage with AvatarFallback; the fallback remains visible until the image loads. AvatarBadge is optional, and the built-in ring keeps overlapping avatars distinct.
Basic
A profile image with initials ready as a fallback.
import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar"export function Example() { return ( <Avatar> <AvatarImage src="/assets/brand/demos/avatars/avatar-1.png" alt="Mina Cho" /> <AvatarFallback>MC</AvatarFallback> </Avatar> )}Fallback
Use initials on their own for invites, placeholders, or people without an image.
import { Avatar, AvatarFallback } from "@/components/ui/avatar"export function Example() { return ( <div className="flex items-center gap-3"> <Avatar> <AvatarFallback>MC</AvatarFallback> </Avatar> <Avatar> <AvatarFallback>JB</AvatarFallback> </Avatar> <Avatar> <AvatarFallback>PN</AvatarFallback> </Avatar> </div> )}Badge
AvatarBadge sits in the bottom-right for presence or status. It is green by default; use className to match your status colors.
import { Avatar, AvatarBadge, AvatarFallback, AvatarImage,} from "@/components/ui/avatar"export function Example() { return ( <Avatar> <AvatarImage src="/assets/brand/demos/avatars/avatar-2.png" alt="Jordan Blake" /> <AvatarFallback>JB</AvatarFallback> <AvatarBadge /> </Avatar> )}Group with count
Wrap avatars in AvatarGroup to stack them. Set overlap to sm, default, or lg, then add AvatarGroupCount for the remaining total.
import { Avatar, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarImage,} from "@/components/ui/avatar"export function Example() { return ( <AvatarGroup> <Avatar> <AvatarImage src="/assets/brand/demos/avatars/avatar-1.png" alt="Mina Cho" /> <AvatarFallback>MC</AvatarFallback> </Avatar> <Avatar> <AvatarImage src="/assets/brand/demos/avatars/avatar-2.png" alt="Jordan Blake" /> <AvatarFallback>JB</AvatarFallback> </Avatar> <Avatar> <AvatarImage src="/assets/brand/demos/avatars/avatar-3.png" alt="Priya Nair" /> <AvatarFallback>PN</AvatarFallback> </Avatar> <AvatarGroupCount>+5</AvatarGroupCount> </AvatarGroup> )}Group with icon
AvatarGroupCount also accepts an icon, which works well for invite, add-member, or custom overflow actions.
import { Avatar, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarImage,} from "@/components/ui/avatar"export function Example() { return ( <AvatarGroup> <Avatar> <AvatarImage src="/assets/brand/demos/avatars/avatar-4.png" alt="Elena Frost" /> <AvatarFallback>EF</AvatarFallback> </Avatar> <Avatar> <AvatarImage src="/assets/brand/demos/avatars/avatar-5.png" alt="Samir Haddad" /> <AvatarFallback>SH</AvatarFallback> </Avatar> <Avatar> <AvatarImage src="/assets/brand/demos/avatars/avatar-6.png" alt="Lucia Reyes" /> <AvatarFallback>LR</AvatarFallback> </Avatar> <AvatarGroupCount> <PlusIcon /> </AvatarGroupCount> </AvatarGroup> )}Sizes
Set size on Avatar to xs, sm, default, or lg. You can mix sizes for hierarchy and style AvatarGroupCount with className to match.
import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar"export function Example() { return ( <div className="flex items-end gap-3"> <Avatar size="xs"> <AvatarImage src="/assets/brand/demos/avatars/avatar-6.png" alt="Lucia Reyes" /> <AvatarFallback>LR</AvatarFallback> </Avatar> <Avatar size="sm"> <AvatarImage src="/assets/brand/demos/avatars/avatar-6.png" alt="Lucia Reyes" /> <AvatarFallback>LR</AvatarFallback> </Avatar> <Avatar> <AvatarImage src="/assets/brand/demos/avatars/avatar-6.png" alt="Lucia Reyes" /> <AvatarFallback>LR</AvatarFallback> </Avatar> <Avatar size="lg"> <AvatarImage src="/assets/brand/demos/avatars/avatar-6.png" alt="Lucia Reyes" /> <AvatarFallback>LR</AvatarFallback> </Avatar> </div> )}API Reference
Avatar
| Prop | Type | Default |
|---|---|---|
| size | "xs" | "sm" | "default" | "lg" | "default" |
| className | string | — |
<Avatar> <AvatarImage src="..." alt="Mina Cho" /> <AvatarFallback>MC</AvatarFallback></Avatar>AvatarImage
| Prop | Type | Default |
|---|---|---|
| src | string | — |
| alt | string | "" |
| className | string | — |
<AvatarImage src="..." alt="Mina Cho" />AvatarFallback
| Prop | Type | Default |
|---|---|---|
| className | string | — |
<AvatarFallback>MC</AvatarFallback>AvatarBadge
| Prop | Type | Default |
|---|---|---|
| className | string | — |
<Avatar> <AvatarImage src="..." alt="Mina Cho" /> <AvatarFallback>MC</AvatarFallback> <AvatarBadge /></Avatar>AvatarGroup
| Prop | Type | Default |
|---|---|---|
| overlap | "sm" | "default" | "lg" | "default" |
| className | string | — |
<AvatarGroup> <Avatar>...</Avatar> <Avatar>...</Avatar></AvatarGroup>AvatarGroupCount
| Prop | Type | Default |
|---|---|---|
| className | string | — |
<AvatarGroupCount>+3</AvatarGroupCount>