Tags

Removable labels for filtering and classification.

v1.0.0·Updated Jul 8, 2026 · 10:45
Live Demo — Fully Interactive
Type and press Enter — Backspace removes the last
designtokensfigma
Configuration
Tone
Kind
Size
Text
design
<Tag onRemove={fn}>design</Tag>
Behavior — The Engineering Contract
Prop / eventTypeNotes
onRemove() => voidRenders the × and fires on click
toneneutral · warm · success · info · dangerGrey by default, or a semantic tint
sizeS · M · LChip scale; M is the default
staticbooleanRead-only, no × button
Enter (field)Commits the draft into a tag
Backspace (empty)Removes the last tag

Tags name and filter. For a selectable filter chip that toggles on click, use Pills; for read-only status, use Badge.

Anatomy
design
1ContainerSoft chip: dark fill, hairline border, radius 6.
2LabelLower-case text, the tag's value.
3RemoveTrailing × on editable tags; omitted when static.
Do's and Don'ts
✓ Do
reacttokens

Short, lower-case, one concept each. They scan as a set.

✕ Don't
This whole sentence as one tag

Don't pack a phrase into a tag. Tags are keywords, not descriptions.

✓ Do
removable

Give editable tags a clear × and a Backspace shortcut.

✕ Don't
abc

Don't colour tags at random. Reserve the warm tone for one real signal.

In context: Examples
A · Filter input
openbugAdd filter…

Active filters as removable tags inside the search field.

B · Article meta
design-systemstokensfigma

Read-only topic tags under a title or card.

C · Recipients
ada@team.comAdd people…

Email or people pickers commit each entry into a tag.

Measurements & Tokens
TokenValueRole
--tag-bg#16171BChip fill
--tag-border#2A2A30Hairline
--tag-radius6pxChip corner
--tag-warm#FF7A00 @14%Warm tone tint
--tag-x16pxRemove button hit area
--tag-field-focusrgba(255,122,0,.14)Field focus ring
Code
<span class="o-tag">design
  <button class="o-tag__x" aria-label="Remove design">×</button>
</span>
<span class="o-tag o-tag--static">read-only</span>

<div class="o-tag-field">
  <span class="o-tag">tokens<button class="o-tag__x">×</button></span>
  <input class="o-tag-input" placeholder="Add tag…" />
</div>