Tag
칩/태그 — variant 5종 × size 2단. onRemove를 주면 44px 히트 영역의 제거 버튼이 붙는 입력성 칩이 됩니다.
마지막 업데이트 2026-06-11
한눈에#
적용된 필터·선택 항목처럼 사용자가 다루는 값을 표시하는 칩입니다 — onRemove를 주면 제거 가능한 입력성 칩이 됩니다.
디자인 시스템React배포됨검토 중
- 의미 5종 × 2 크기
- onRemove 입력성 칩
- 44px 제거 히트
- 긴 라벨 말줄임
제거 버튼은 시각은 작아도 44px 히트 영역으로 확장됩니다(모바일 터치 타깃)
사용 시점#
사용자가 다루는 값(필터·선택 항목)을 라벨로 보여주면 Tag — 상호작용 칩이나 읽기 전용 표식은 다른 컴포넌트입니다.
쓴다
ReactTypeScript
적용된 필터·선택 항목처럼 사용자가 다루는 값(onRemove로 제거 가능한 입력성 칩)
플레이그라운드#
컨트롤로 props를 조작하면 미리보기와 코드가 실시간 갱신됩니다.
태그
import { Tag } from '@wds/ui-web';
<Tag>태그</Tag>변형#
neutralprimarysuccesswarningerror
크기#
작은 태그보통 태그
상태#
onRemove를 제공하면 제거 버튼(CloseIcon)이 렌더됩니다. 함수 prop은
서버 MDX로 전달할 수 없어 코드로 보입니다:
'use client';
function FilterTags({ filters, onRemove }: FilterTagsProps) {
return filters.map((filter) => (
<Tag key={filter} variant="primary" onRemove={() => onRemove(filter)}>
{filter}
</Tag>
));
}
- 제거 버튼은 기본 70% 투명도, hover 시 100% — 라벨보다 조용하게 유지됩니다
- 긴 라벨은 말줄임(ellipsis) 처리됩니다 (
max-width: 100%)
Props#
| Prop | 타입 | 기본값 | 설명 |
|---|---|---|---|
variant | 'neutral' | 'primary' | 'success' | 'warning' | 'error' | 'neutral' | 의미 색 — *-text 잉크 + 8% 틴트(neutral은 surface-muted) |
size | 'sm' | 'md' | 'md' | sm은 caption, md는 body-2 폰트 |
onRemove | () => void | — | 제공 시 제거 버튼 렌더 — 클릭 시 호출 |
removeLabel | string | '제거' | 제거 버튼 aria-label |
children | ReactNode | — | 라벨 — 길면 말줄임 |
…rest | HTMLAttributes<span> | — | className 등 네이티브 속성 전달 |
접근성#
- 제거 버튼은 네이티브
<button>+aria-label(기본 '제거') — 라벨이 여러 개일 때는removeLabel="React 태그 제거"처럼 대상을 명시하세요 - 제거 버튼은 시각은 작지만 44px 히트 영역으로 확장됩니다(모바일 터치 타깃)
:focus-visible2pxfocus-ring링, 아이콘은 장식(aria-hidden처리된 CloseIcon)- 잉크는
*-text토큰 — AA 대비 빌드 게이트 보장
토큰#
component 토큰 없이 semantic을 직접 소비합니다(신설 기준 §4 미충족).
| 속성 | 토큰 |
|---|---|
| neutral | color.surface-muted + color.text-muted |
| primary | color.primary-subtle + color.primary-text |
| success/warning/error | base 색 8% color-mix 틴트 + color.*-text |
| 형태 | radius.full · space.1/2/3 |
| 타이포 | font-size.caption(sm) / font-size.body-2(md) + font-weight.medium |
| 제거 버튼 | icon.size-sm/md · 눌림 color.surface-pressed · duration.fast + ease.standard |