Badge
상태, 카테고리, 카운트 등 보조 정보를 표시하는 인라인 라벨 컴포넌트로, 6가지 시맨틱 컬러와 3가지 variant를 조합해 다양한 맥락에 대응합니다.
3
Variants
3
Sizes
6
Colors
Pure
React
Playground
Preview
D24px
Badge
Variant
Color
Size
Radius
Options
<Badge>Badge</Badge>Variants
Solid
Subtle
Outline
<Badge variant="solid">Solid</Badge>
<Badge variant="subtle">Subtle</Badge>
<Badge variant="outline">Outline</Badge>Colors
6가지 시맨틱 컬러와 3가지 variant를 자유롭게 조합할 수 있습니다.
solid
defaultprimarysuccesswarningerrorinfo
subtle
defaultprimarysuccesswarningerrorinfo
outline
defaultprimarysuccesswarningerrorinfo
Sizes
sm높이20px
폰트11px
가로 패딩6px
최소 너비20px
default높이24px
폰트12px
가로 패딩8px
최소 너비24px
lg높이28px
폰트13px
가로 패딩10px
최소 너비28px
| Size | 높이 / 최소 너비 | 폰트 | 가로 패딩 | 텍스트 | 카운트 |
|---|---|---|---|---|---|
sm | 20px | 11px | 6px | Badge | 3 |
default | 24px | 12px | 8px | Badge | 3 |
lg | 28px | 13px | 10px | Badge | 3 |
Features
Status Dot
ActivePendingError
<Badge dot color="success">Active</Badge>
<Badge dot color="warning">Pending</Badge>
<Badge dot color="error">Error</Badge>Icon
FeaturedNewInfo
<Badge icon={<Star />} color="warning" variant="solid">Featured</Badge>
<Badge icon={<Zap />} color="primary" variant="solid">New</Badge>
<Badge icon={<Info />} color="info">Info</Badge>Counter
31299+5
<Badge color="error" variant="solid">3</Badge>
<Badge color="error" variant="solid">12</Badge>
<Badge color="error" variant="solid">99+</Badge>
<Badge color="primary" variant="solid" size="sm">5</Badge>Removable
RemovableTag
<Badge removable onRemove={handleRemove}>Removable</Badge>
<Badge removable onRemove={handleRemove} color="primary" variant="solid">Tag</Badge>API
Props
variant"subtle""solid" | "subtle" | "outline"배지의 시각적 스타일
color"default""default" | "primary" | "success" | "warning" | "error" | "info"시맨틱 컬러
size"default""sm" | "default" | "lg"사이즈 (20/24/28px)
radius"full""sm" | "base" | "md" | "lg" | "full"모서리 둥글기 (2/4/6/8/∞px)
iconundefinedReact.ReactNode앞에 표시할 아이콘
dotfalseboolean상태 도트 표시
removablefalseboolean삭제 버튼 표시
onRemoveundefined() => void삭제 버튼 클릭 콜백
asChildfalsebooleanSlot 패턴으로 자식 요소로 렌더링
| Name | Type | Default | Description |
|---|---|---|---|
variant | "solid" | "subtle" | "outline" | "subtle" | 배지의 시각적 스타일 |
color | "default" | "primary" | "success" | "warning" | "error" | "info" | "default" | 시맨틱 컬러 |
size | "sm" | "default" | "lg" | "default" | 사이즈 (20/24/28px) |
radius | "sm" | "base" | "md" | "lg" | "full" | "full" | 모서리 둥글기 (2/4/6/8/∞px) |
icon | React.ReactNode | undefined | 앞에 표시할 아이콘 |
dot | boolean | false | 상태 도트 표시 |
removable | boolean | false | 삭제 버튼 표시 |
onRemove | () => void | undefined | 삭제 버튼 클릭 콜백 |
asChild | boolean | false | Slot 패턴으로 자식 요소로 렌더링 |
Anatomy
1
2
3
4
Featured5
Height
24pxPadding X
8pxgap
4px1
Container
필 형태 컨테이너
2
Dot
도트 (선택)
3
Icon
아이콘 (선택)
4
Label
텍스트 라벨
5
Remove
삭제 버튼 (선택)
Best Practices
✓
권장
- ✓짧은 텍스트 사용 (1~2단어)
- ✓의미 있는 컬러를 일관되게 사용
- ✓상태 표시에는 dot prop 활용
- ✓삭제 가능한 배지에는 onRemove 설정
✕
지양
- ✗긴 문장을 배지에 넣지 않기
- ✗같은 화면에서 여러 색상 과도하게 사용하지 않기
- ✗인터랙티브 요소로 배지 사용하지 않기
- ✗장식 목적으로만 배지 사용하지 않기
Accessibility
키보드 조작
Tab삭제 버튼에 포커스 (removable 시)
Enter배지 삭제 (removable 시)
ARIA / WCAG
- 삭제 버튼에
aria-label="Remove" - 아이콘, 도트는
aria-hidden="true" - 색상 대비 WCAG AA 준수
- 삭제 버튼에 포커스 링 표시