ComponentsP3 본문

Chip

M3 칩 시스템 — assist·filter·input·suggestion 4변형의 인터랙션 칩. 단순 라벨/제거 칩 Tag와 별개의 컴포넌트입니다(ADR-012 Track C).

마지막 업데이트 2026-06-12

한눈에#

assist·filter·input·suggestion 4변형의 상호작용 칩 체계(M3)입니다 — 변형마다 인터랙션 종류가 다릅니다.

디자인
  • assist·filter·input·suggestion
  • 판별 합집합 타입
  • 2 크기(md·sm)
  • sm 44px 히트

단순 라벨/제거 칩은 Tag — Chip은 액션·토글·제거·제안의 상호작용 체계입니다

사용 시점#

칩에 상호작용(액션·토글·제거·제안)이 있으면 Chip — 단순 라벨이나 단일 선택 필터 줄은 다른 컴포넌트입니다.

쓴다

assist/suggestion 액션·filter 토글·input 제거처럼 상호작용이 있는 M3 칩

대신 Tag

클릭 없이 보여주기만 하는 단순 라벨·제거 칩일 때

대신 BadgeToggle

'전체' 포함 단일 선택 필터 줄일 때

플레이그라운드#

컨트롤로 props를 조작하면 미리보기와 코드가 실시간 갱신됩니다.

import { Chip } from '@wds/ui-web';

<Chip>필터</Chip>

변형#

variant가 인터랙션 종류를 가릅니다.

assist / suggestion — 액션(버튼)
filter — 토글(선택 시 체크)
프론트엔드백엔드
input — 제거 가능한 입력 칩
  • assist / suggestion: <button> + onClick. 작은 액션 버튼처럼 동작합니다(suggestion은 더 가벼운 아웃라인).
  • filter: aria-pressed 토글 — 제어 selected 또는 비제어 defaultSelected + onChange(boolean), 선택 시 선행 체크 + primary 채움.
  • input: 라벨 + 제거 <button>(aria-label, 기본 '제거') + onRemove. 칩 자체는 비-버튼입니다.

크기#

size로 2단 — md(기본)·sm.

md(기본) · sm

상태#

filter는 비제어(defaultSelected)와 제어(selected)를 모두 지원합니다 — defaultSelected로 시작하면 컴포넌트가 선택 상태를 소유하고, selected를 주면 그 값이 진실의 원천이라 클릭은 onChange로만 통지합니다(소비자가 selected를 갱신해야 반영). disabled는 4변형 모두에서 상호작용을 차단합니다. Hover/Focus/Disabled는 CSS 의사클래스로 표현됩니다.

sm 인터랙티브 칩(assist·suggestion·filter 버튼, input 제거 버튼)은 시각 크기를 유지하면서 ::after로 히트 영역을 ≥44px까지 확장합니다(터치 타깃).

Props#

Prop타입기본값설명
variant'assist' | 'filter' | 'input' | 'suggestion'인터랙션 종류 — 필수
childrenReactNode라벨 콘텐츠
leadingIconReactNode라벨 앞 선행 아이콘 (filter 선택 시 체크로 대체)
size'sm' | 'md''md'칩 크기
disabledbooleanfalse상호작용 차단
onClick() => voidassist·suggestion 액션 콜백
selectedbooleanfilter 제어 선택 — 주면 selected가 권위(onChange로만 통지)
defaultSelectedbooleanfalsefilter 초기 선택(비제어)
onChange(selected: boolean) => voidfilter 토글 콜백
onRemove() => voidinput 제거 콜백
removeLabelstring'제거'input 제거 버튼 aria-label

variant별로 허용되는 prop이 타입(판별 합집합)으로 강제됩니다 — 예: filter에 onRemove를 넘기면 컴파일 오류입니다.

접근성#

변형계약
assist / suggestion<button> — 네이티브 클릭·키보드(Space/Enter)
filter<button aria-pressed> 토글 — 선택 상태를 보조기술에 보고, 선행 체크는 장식(aria-hidden)
input칩은 비-버튼, 제거 <button>aria-label(기본 '제거')을 가지는 단일 액션
공통:focus-visible 2px primary 아웃라인 · disabled 차단 · 등장 전환은 prefers-reduced-motion 존중

토큰#

component 토큰 없이 semantic을 직접 소비합니다(신설 기준 §4 미충족).

속성토큰
color.surface · color.border(hover surface-hover) · radius.full
filter 선택color.primary-subtle 배경 · color.primary-text · 체크
눌림(:active)color.surface-pressed — 액션 칩·제거 버튼 (filter 선택은 유지)
크기control.height-md / 축소 · font.size-body-2
sm 히트 영역액션 칩 space.3(12px) 블록축 확장 · input 제거 버튼 space.3 → ≥44px 터치
포커스color.focus-ring 2px 아웃라인
모션duration.fast + ease.standard