Actions and feedback
Chip
Compact tokens for filters, selections and people, removable and selectable without script.
Example
<div class="flex flex-wrap items-center gap-2">
<span class="chip">Design</span>
<span class="chip chip-primary">Engineering</span>
<span class="chip chip-outline"><span class="chip-icon bg-primary"></span>Ada Lovelace</span>
<span class="chip chip-success">Approved <details class="dismiss" open><summary class="chip-remove" aria-label="Remove"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M18 6 6 18M6 6l12 12"/></svg></summary></details></span>
<label class="chip chip-primary"><input type="checkbox" checked><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20 6 9 17l-5-5"/></svg> Remote</label>
<label class="chip chip-primary"><input type="checkbox"> Full time</label>
</div>
<div class="flex flex-wrap items-center gap-2 mt-3">
<span class="chip chip-xs">xs</span>
<span class="chip chip-sm">sm</span>
<span class="chip chip-md">md</span>
<span class="chip chip-lg">lg</span>
<span class="chip chip-xl">xl</span>
</div>Classes
17 classes. Click a name to copy it. Utilities on the same element always win over component defaults, so any of them can be adjusted with plain utility classes.
| Class | Type | What it does |
|---|---|---|
| Base | Base class of the chip. On a <span> in the example. Sets absolute position, width, height, margin, opacity and native control styling, and 15 custom properties.CSS |
|
| Part | Part of the chip. On a <span> in the example. Sets alignment, width, height, margin and corner radius.CSS |
|
| Part | Part of the chip. On a <summary> in the example. Sets inline-grid display, alignment, width, height, margin and corner radius.CSS |
|
| Modifier | Modifier, combined with the chip class. On a <span> in the example. Sets --chip-bg.CSS |
|
| Size | Extra small size. On a <span> in the example. Sets --chip-h, --chip-px and --chip-fs.CSS |
|
| Size | Small size. On a <span> in the example. Sets --chip-h, --chip-px and --chip-fs.CSS |
|
| Size | Medium, the default size. On a <span> in the example. Sets --chip-h, --chip-px and --chip-fs.CSS |
|
| Size | Large size. On a <span> in the example. Sets --chip-h, --chip-px and --chip-fs.CSS |
|
| Size | Extra large size. On a <span> in the example. Sets --chip-h, --chip-px and --chip-fs.CSS |
|
| Tone | Primary tone. On a <span> in the example. Sets --tone and --tone-fg.CSS |
|
| Tone | Secondary tone. Not used in the example above. Sets --tone, --tone-fg and --tone-tint.CSS |
|
| Tone | Accent tone. Not used in the example above. Sets --tone and --tone-fg.CSS |
|
| Tone | Neutral tone. Not used in the example above. Sets --tone and --tone-fg.CSS |
|
| Tone | Success tone. On a <span> in the example. Sets --tone and --tone-fg.CSS |
|
| Tone | Warning tone. Not used in the example above. Sets --tone and --tone-fg.CSS |
|
| Tone | Danger tone. Not used in the example above. Sets --tone and --tone-fg.CSS |
|
| Tone | Info tone. Not used in the example above. Sets --tone and --tone-fg.CSS |
Usage
Components ship inside the same stylesheet as the utilities. There is nothing else to install and no script to load: link Monsoon and write the markup.
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/monsooncss">
<!-- Chip: start from the base class, then add modifiers -->
<div class="flex flex-wrap items-center gap-2">
<span class="chip">Design</span>
<span class="chip chip-primary">Engineering</span>
<span class="chip chip-outline"><span class="chip-icon bg-primary"></span>Ada Lovelace</span>
<span class="chip chip-success">Approved <details class="dismiss" open><summary class="chip-remove" aria-label="Remove"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M18 6 6 18M6 6l12 12"/></svg></summary></details></span>
<label class="chip chip-primary"><input type="checkbox" checked><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20 6 9 17l-5-5"/></svg> Remote</label>
<label class="chip chip-primary"><input type="checkbox"> Full time</label>
</div>
<div class="flex flex-wrap items-center gap-2 mt-3">
<span class="chip chip-xs">xs</span>
<span class="chip chip-sm">sm</span>
<span class="chip chip-md">md</span>
<span class="chip chip-lg">lg</span>
<span class="chip chip-xl">xl</span>
<!-- the full example is in the Code tab above -->Theme it with --seed on any ancestor, for example style="--seed: #0d9488", and force a scheme with class="dark" or class="light" on a wrapper.
Accessibility
- Built on
detailsandsummary, so it opens with Enter or Space and screen readers announce expanded and collapsed. A sharednamemakes a group exclusive. - Give every control a visible
labellinked withfor, or anaria-labelwhen the purpose is obvious from context. Link help and error text witharia-describedby; invalid styles use:user-invalid, so they appear only after the user interacts. - Checkboxes and radios stay real inputs, so they keep native keyboard behavior (Space toggles, arrow keys move within a radio group) and form submission.
- Every interactive part shows a visible focus ring with
:focus-visible, and tone colors pair with-foregroundtokens that keep text at 4.5:1 or better in light and dark mode.