Aliases
tag chip, filter chip
components / chip
Compact filter-like token with selectable state and optional dismiss action.
Playground
Start here. Switch systems, interact with the shipped component, and let the rest of the page answer the why and how after the behavior clicks.
Cobalt
The crisp default DK action system: bright primary, roomy spacing, and a direct editorial rhythm.
Overview
This section explains the intent of the component before the implementation details.
Aliases
tag chip, filter chip
Explore the math
Decision guide
Use these notes to decide quickly whether this is the right DK component for the job.
Decision guide
Do
Do not
Usage
Prefer these situations when choosing this component.
Usage
These patterns are better served by a different component or a simpler surface.
Anti-patterns
Migration notes
Anatomy
The anatomy explains which pieces matter to the recipe and accessibility model.
compact interactive token
rootCarries the selected or neutral surface treatment.
visible token label
labelCommunicates the chosen filter or entity.
optional remove action
dismissOptional trailing remove affordance.
API
The docs contract distinguishes props, DOM events, and slots so integration behavior is explicit.
Props
| Name | Type | Default | Description |
|---|---|---|---|
tone | 'neutral' | 'brand' | 'success' | 'warning' | 'neutral' | Chooses the chip tone. |
size | 'sm' | 'md' | 'md' | Chooses the chip size recipe. |
label | string | — | Visible chip label. |
selected | boolean | false | Controlled selected state. |
dismissible | boolean | false | Shows the remove affordance. |
onChange | (detail: { value: string | undefined }) => void | — | Callback fired when the selected state changes. |
onDismiss | (detail: { id?: string }) => void | — | Callback fired when the dismiss affordance is activated. |
theme | ThemeContract | — | Overrides the compiled DK theme used to resolve tokens and recipes for this component. |
Events
| Name | Payload | Description |
|---|---|---|
change | { value: string | undefined } | Fires when the component commits a new value. |
Slots
| Name | Description |
|---|---|
default | Chip is mostly prop-driven in v1 and uses the label prop as its main visible content. |
Recipes
These notes summarize the intended recipe surface rather than exposing raw implementation detail first.
Variants
Sizes
States
Accessibility
This is the behavior the component promises to assistive tech and keyboard users today.
Semantics
Keyboard
Screen readers
Checklist
Implementation
This section shows the representative compiled slot variables that the runtime consumes for the selected design system.
Implementation notes
Implementation checklist
Examples
Each example is intentionally practical, grouped by starter, common pattern, and edge-case coverage.
Starter
1 example
starter
Starter: selected tokenA compact selected choice.
Copy snippet
<Chip tone="brand" label="Priority" selected={true} />Common patterns
1 example
common
Common: removable tokenDismissible chips work well for selected filters or entities.
Copy snippet
<Chip tone="neutral" label="Assigned to me" dismissible={true} onDismiss={(detail) => console.log(detail)} />Edge cases
1 example
edge
Edge: cautionary tokenWarning tone can flag a risky or incomplete state in a compact way.
Copy snippet
<Chip tone="warning" label="Needs review" />Verification
Proofs stay visible in the docs so the system shows what it can guarantee, not just what it can render.
size=md|tone=neutral
size=md|tone=brand
size=sm|tone=danger