Avatar

Profile images with initials, status, sizes, and groups.

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.

Mina ChoMC
tsx
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 avatar

Usage

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.

Mina ChoMC
tsx
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.

MCJBPN
tsx
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.

Jordan BlakeJBAisha OkonkwoAOSamir HaddadSH
tsx
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.

Mina ChoMCJordan BlakeJBPriya NairPNElena FrostEF+5
tsx
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.

Elena FrostEFSamir HaddadSHLucia ReyesLR
tsx
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.

Lucia ReyesLRLucia ReyesLRLucia ReyesLRLucia ReyesLR
tsx
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

PropTypeDefault
size"xs" | "sm" | "default" | "lg""default"
classNamestring
<Avatar>  <AvatarImage src="..." alt="Mina Cho" />  <AvatarFallback>MC</AvatarFallback></Avatar>

AvatarImage

PropTypeDefault
srcstring
altstring""
classNamestring
<AvatarImage src="..." alt="Mina Cho" />

AvatarFallback

PropTypeDefault
classNamestring
<AvatarFallback>MC</AvatarFallback>

AvatarBadge

PropTypeDefault
classNamestring
<Avatar>  <AvatarImage src="..." alt="Mina Cho" />  <AvatarFallback>MC</AvatarFallback>  <AvatarBadge /></Avatar>

AvatarGroup

PropTypeDefault
overlap"sm" | "default" | "lg""default"
classNamestring
<AvatarGroup>  <Avatar>...</Avatar>  <Avatar>...</Avatar></AvatarGroup>

AvatarGroupCount

PropTypeDefault
classNamestring
<AvatarGroupCount>+3</AvatarGroupCount>