본문으로 건너뛰기
콘텐츠 / avatar

Avatar

user/agent 신원 배지 — 이미지 실패 시 initials 폴백.
콘텐츠avatarStatic specimenavatar아바타profile프로필
01 · Specimen

먼저 보고, 그다음 계약을 읽습니다

user/agent 신원 배지 — 이미지 실패 시 initials 폴백.

Workbench 불러오는 중…
Component intent의도와 경계 읽기

ChatMessage 의 sender, AgentInbox 의 agent 신원, 온보딩 프로필 placeholder 등 신원 표시의 표준. Radix Avatar 를 감싸 이미지 로드 실패/미지정 시 Fallback(initials)을 보여준다. 원형 표면에 sm/md/lg 세 크기(24/32/48px)를 제공하며, Fallback 의 delayMs 로 빠른 로드 시 initials 깜빡임(LCP 저해)을 억제한다.

02 · Use

예제

SSOT에 등록된 실제 API 기준 snippet입니다. standalone 배지만 독립 실행 단위이며, fragment는 주변 state·handler 문맥을 생략합니다.

01이미지 + 폴백tsxfragment
이미지 + 폴백
import { Avatar, AvatarImage, AvatarFallback } from "@axe/ui";<Avatar size="md">  <AvatarImage src="/u/axe.png" alt="강수훈" />  <AvatarFallback delayMs={300}>강</AvatarFallback></Avatar>
02이니셜만tsxfragment
이니셜만
import { Avatar, AvatarFallback } from "@axe/ui";<Avatar size="lg">  <AvatarFallback>AX</AvatarFallback></Avatar>
03CSS-only (비-React)htmlfragment
CSS-only (비-React)
<!-- 이미지가 확실할 때 --><span class="axe-avatar axe-avatar--md">  <img class="axe-avatar__image" src="/u/axe.png" alt="강수훈" /></span><!-- 이니셜만 --><span class="axe-avatar axe-avatar--lg">  <span class="axe-avatar__fallback">AX</span></span>
03 · React

Props

TSX 소스가 진실입니다. 주요 export 컴포넌트의 public API만 노출합니다.

이름타입필수기본값설명
Avatar.size"sm" | "md" | "lg""md"크기 — sm 24 / md 32 / lg 48px(폰트 크기 동반).
Avatar.…restReact.ComponentPropsWithoutRef<Radix Avatar.Root>className 은 axe-avatar 와 병합, 나머지는 Radix Root 로 전파.
AvatarImage.…restReact.ComponentPropsWithoutRef<Radix Avatar.Image>src/alt 등. 로드 실패/지연 시 Fallback 이 대신 노출. 나머지는 Radix Image 로 전파.
AvatarFallback.delayMsnumber이 ms 만큼 지연 후 fallback 표시 — 빠른 이미지 로드 시 initials 깜빡임 방지(Radix).
AvatarFallback.…restReact.ComponentPropsWithoutRef<Radix Avatar.Fallback>children=initials 등. className 은 axe-avatar__fallback 과 병합, 나머지는 Radix Fallback 으로 전파.
04 · Any stack

.axe-* 클래스 계약

React 밖에서도 같은 표면을 그리는 공개 계약입니다. stable은 minor 버전 안에서 이름을 바꾸지 않습니다.

클래스안정성용도
.axe-avatarstable루트 — 원형(border-radius 9999px) inline-flex, overflow hidden, bg-subtle.
.axe-avatar--smstable24×24px(폰트 10px).
.axe-avatar--mdstable32×32px(폰트 12px, 기본).
.axe-avatar--lgstable48×48px(폰트 18px).
.axe-avatar__imagestable이미지 — object-fit:cover, 원형 상속.
.axe-avatar__fallbackstableinitials 폴백 — 중앙 정렬, uppercase, bg-subtle.
비-React 소비 노트
정적 마크업으로 재현 가능 — 이미지가 확실하면 <span class="axe-avatar"><img class="axe-avatar__image">, 이니셜만이면 <span class="axe-avatar__fallback">. Radix 의 로드-실패 자동 폴백만 CSS-only 로는 불가하므로(정적 선택 필요) 서버 렌더 시 둘 중 하나를 직접 고른다.
05 · Inclusive

접근성

키보드, ARIA, 구현 노트를 함께 검토합니다.

ARIA

이미지에는 의미 있는 alt 를 지정한다(빈 alt=순수 장식). Fallback 의 initials 는 스크린리더에서 이름을 대체하지 못하므로, 사람 이름 같은 의미는 AvatarImage 의 alt 나 인접 텍스트로 제공해야 한다.

Notes

Radix Avatar 가 이미지 로드 상태를 관리 — 실패/미지정 시 Fallback 으로 전환하고 delayMs 로 초기 깜빡임을 억제한다. 자체 포커스/role 은 없다(순수 표시). 클릭 대상이면 <button>/<a> 로 감싼다.

06 · Judgment

권장 · 지양

권장
  • Fallback initials 는 1~2자로 짧게 유지한다.
  • 이미지에 alt 로 신원을 담고, 순수 장식이면 alt="" 로 명시한다.
지양
  • Avatar 자체에 onClick 만 걸어 클릭 UI 로 쓰지 말 것(포커스/role 없음 — 버튼/링크로 감싼다).
검색창을 열면 컴포넌트 인덱스를 불러옵니다.