Components / Feedback

Chip macrolite

A small labelled token: a pill for a filter, label or state, or a rect naming an entity with a glyph or picture, optionally removable.

Replaces
EntityChipPill
Children
none
Loading the renderer…
Chip rendered by the React renderer on Web
Web React
Chip rendered by the SwiftUI renderer on iOS
iOS SwiftUI
Chip rendered by the Compose renderer on Android
Android Compose
Chip rendered by the gpui renderer on Desktop
Desktop gpui

View exponential-ui-chip, painted by each native renderer.

shape · pill
shape · rect
tone · neutral
tone · primary
tone · success
tone · warning
tone · danger
tone · info
removable
PropTypeDefaultDescription
labelrequiredbindstring–The chip text.
shapepill | rect"pill"A rounded pill or a squarer entity chip.
selectedbooleanfalseDraws it as the active choice.
toneneutral | primary | success | warning | danger | info"neutral"Colour tone of the chip.
dotcolor–A colour dot before the text (a label chip).
iconicon–An icon before the text.
imageurl–A round picture instead of the icon.
detailstring–Muted text after the label.
removablebooleanfalseShows a remove control that fires remove.
pressablebooleanfalseMakes it a press target that fires press.
NameKind
on.pressevent: runs an action
on.removeevent: runs an action
leadingslot: one component by id
Role
button
Semantics
button with aria-pressed (= selected) when pressable, text otherwise ($a11y); remove = button labelled remove
KeysAction
EnterSpacepress; Delete, Backspace: remove when removable
Recipe parts
Chip/rootChip/dotChip/imageChip/iconChip/labelChip/detailChip/remove
Keyed by
shapeselectedtone:hover:pressed:focus:disabled:checked:open:selected:invalid:dragover

Themes · Write a theme

Pill

The ONE capsule, a 2×3 matrix: size md 32 or sm 24, mode action / select / readonly, plus a primary PAINT flag that crosses all six.

More

Card fill under a card stroke, label at 70% — action and select go active on hover, a selected one also takes the active stroke, readonly is metadata and never a target. There is no chip and no header button: those WERE this, under a second name. A conversation or subagent tab is sm select; a members-list role chip is sm readonly, 12px from its neighbours in a row. A bare COUNT is none of the six: a number with no word beside it is the 16px `Badge` below.

Entity chip

The issue chip's box, opened to every kind an Exponential MCP answer can name (EXP-920): a settled tool row in a run transcript draws ONE chip per entity it touched — board, action, comment, run, label, status, workflow, device, member… — as a glyph and a short label in the SAME rounded rect the issue chip owns (the issue chip now renders THROUGH it, so the two cannot drift by a pixel).

More

An issue keeps its three parts (status glyph · mono identifier · title); every other kind draws its icon CONCEPT (`entityRefIcon`) and its name; a LIST answer folds into one chip that counts its members in the product noun (`3 issues`, `1 run`) and never navigates — its card lists them. Label, detail and grouping are the contract's (`@exp/domain-contract/entity-preview`, fixture-locked ×4). A row the viewer has not synced draws the same chip muted with no target and no card.

Webok
EntityChippackages/ui/src/entity-chip.tsx

The app's components/entity-preview/ resolves the row, the target and the hover card per kind.