Anatomy
┌── Standard Chip ──────────────────┐ ┌── Closable Chip ─────────────────┐
│ Label text │ │ Label text ✕ │
└───────────────────────────────────┘ └──────────────────────────────────┘
Standard Chips
- Container — Pill-shaped border, radius supports Full / Default
- Label — Short text, recommended ≤ 3 words
Closable Chips
- Container — Pill-shaped border
- Label — Name of the selected item
- Close Button — ✕ icon, touch target ≥ 24 px
Usage Guidelines
✅ Do
- Use Standard Chips for filtering (multi-select); keep labels short (≤ 3 words)
- Use Closable Chips to display the collection of selected tags for individual removal
- Arrange chip groups horizontally, wrapping when they exceed width
- Keep close button touch targets ≥ 24 px for mobile usability
❌ Don't
- Don't use Chips as navigation elements — use Tabs instead
- Don't put excessively long text in chips — overflow will be truncated
- Don't use Chips for single-select scenarios — use Radio instead
- Don't mix Standard and Closable types within the same chip group
Interaction Behavior
| State | Description |
|---|---|
| Default | Light gray background + border, text color text-secondary |
| Hover | Background slightly darkens |
| Selected (Standard) | default style: black fill; brand style: brand-pink fill, white text |
| Disabled | Gray fill, pointer-events: none |
| Close Button Hover | Close icon opacity increases, indicating clickability |
Accessibility
| Requirement | Implementation |
|---|---|
| Filter chips | role="checkbox" + aria-checked indicating selected state |
| Closable chip container | role="group" + aria-label="Selected: {chip name}" |
| Close button | aria-label="Remove {chip name}" |
| Chip group | role="group" + aria-label describing the group purpose |
| Keyboard navigation | Tab to enter chip, Space/Enter to toggle selection |

