Atoms / Chip
Chip
<Chip />StableThe interactive badge — a Badge states, a Chip acts. A native toggle button wearing Badge's tone matrix 1:1: all 25 tones, soft at rest; selected deepens the same tint with a soft outline (fill="solid" forces the Badge-solid emphasis), always the same hue, weight never flips — any tone Badge learns, Chip learns free. Pick by system-label kind: categorical tones for identity values, semantic tones only when the value itself is a status, omit for the default gray→primary chip. The md size is the shipped Search-rail pill (30px / 13px), promoted pixel-identical from FilterPill; sm rides the control scale. For removable tags, pass onRemove — the body goes passive and the dismiss glyph becomes the chip's only control (or compose ChipRemove inside a Badge for badge geometry) — one interactive surface per chip, never two.
Explorer
Edit any prop in the inspector — preview and code update together. Hover any color for hex + token.
Tone
State
Size
Dot
<Chip>WR</Chip>
Inspector
Edit one prop at a time and see the token chain resolve. The preview re-renders, the code panel updates, and the resolves-to column shows every Tailwind class → CSS variable → final value.
Preview
Code
import { Chip } from "@/components/upnext";<Chip>WR</Chip>
States
<Chip>WR</Chip>
Composition
Start with the variant sheet — every tone × state as a specimen grid, identical content per cell so color is the only variable. The other tabs are real-use compositions.
// one row per tone × one column per state — identical content,// so color is the only variable. tone={undefined} = the default chip.<Chip tone={tone}>WR</Chip><Chip tone={tone} selected>WR</Chip><Chip tone={tone} dot={tone}>WR</Chip><Chip tone={tone} onRemove={fn}>WR</Chip><Chip tone={tone} disabled>WR</Chip><Chip tone={tone} size="sm" selected>WR</Chip>
Source
A self-contained atom — no shadcn counterpart. Colors derive from Badge's exported tone matrix; the filter rail re-exports this as FilterPill.