Loading component…
Loading component…
What automated tests prove about each implementation — separate from whether the package itself is a finished product. Derived from the test files; how the levels are earned.
React
Package maturity: stable · Implementation verification: Beta
Angular
Package maturity: preview · Implementation verification: Preview
SwiftUI
Package maturity: stable · Implementation verification: Experimental
Jetpack Compose
Package maturity: stable · Implementation verification: Experimental
Flutter
Package maturity: stable · Implementation verification: Experimental
This platform’s whole catalogue is verified to React beta, Angular preview, SwiftUI experimental, Jetpack Compose experimental, Flutter experimental. The catalogue figure is the weakest component on that platform, not an average.
A container-tinted, dismissible chip. Reconciled 1:1 with design source node 54855:14021 (variants: default | secondary | destructive | warning | outline).
Reduced motion: off · your browser setting
npx @kinetixui/cli add tagimport { Tag, tagVariants } from "@kinetixui/ui";Styled entirely from the KinetixUI token contract — bg-action,
text-muted-foreground, border-input, ring-ring. Works in light and dark
with no extra config. Keyboard and ARIA behaviour is inherited from Radix where the
component is built on a primitive; the hand-built widgets (DataGrid, TreeView,
ColorPicker, MultiSelect, Tour, KanbanBoard) have their own documented interaction
models — see Accessibility.
The props of @kinetixui/ui, generated from its TypeScript. Props inherited from the underlying DOM element (className, id, event handlers) are accepted too and are not listed.
This table is React-specific. The SwiftUI, Jetpack Compose, Flutter and Angular implementations share the design contract — the same variants, sizes, states and tokens — but each exposes its own idiomatic interface. Their real usage is in the platform tabs on the example above, not here.
| Prop | Type | Notes |
|---|---|---|
| onRemove | (() => void)show a dismiss button; called when it's clicked | show a dismiss button; called when it's clicked |
| removeLabel | stringAccessible name for the dismiss button. Defaults to `Remove <tag text>` when the tag's children are a plain string, so a row of tags does not become a row of identical "Remove" buttons. Pass this whe… | Accessible name for the dismiss button. Defaults to `Remove <tag text>` when the tag's children are a plain string, so a row of tags does not become a row of identical "Remove" buttons. Pass this whe… |
| asChild | booleanrender as the single child element (Radix Slot) instead of <span> — e.g. `<Tag asChild><a href="/filter">Active</a></Tag>` for a linked tag. Combined with `onRemove`, the remove button nests inside t… | render as the single child element (Radix Slot) instead of <span> — e.g. `<Tag asChild><a href="/filter">Active</a></Tag>` for a linked tag. Combined with `onRemove`, the remove button nests inside t… |
| variant | "default" | "destructive" | "warning" | "secondary" | "outline" | null |