Chip
Pre-alphaThe registry and the CLI are not published yet.Roadmap

Chip

Tag that can be selectable, removable or used as a filter.

Filters

2

Open now

$$

Rating 4+

Removable

Paris

Outdoor seating

With an avatar · small · disabled

A

Ada

Wi‑Fi

Delivery

Installation

npx axiom add chip
pnpm dlx axiom add chip
yarn dlx axiom add chip
bun x axiom add chip

Also copies: tappable.

Requires the close icon in your icon registry. Colors come from chip.{outline,filled}.{default,pressed,selected,disabled} in the component tokens.

Usage

import { Chip } from '@/components/ui/chip';

<Chip selected={onlyUnread} onPress={toggleUnread}>Unread</Chip>
<Chip onRemove={() => removeTag('travel')}>Travel</Chip>

Props

PropTypeDefaultDescription
childrenReactNodeThe label.
selectedbooleanSelected state, drawn with the inverse colors. Setting it makes the chip a toggle (accessibilityRole="togglebutton").
onPress() => voidCalled when the chip is pressed. Usually toggles selected or opens a picker.
onRemove() => voidShows a close icon on the right. Pressing it calls onRemove; the icon has its own 44pt touch area.
variant'outline' | 'filled''outline'outline for filters, filled for tags and entered values.
size'sm' | 'md''md'Minimum height: 28 or 34pt. Grows with larger system text. The touch area stays 44pt.
leadingIconName | ReactNodeIcon or Avatar before the label.
trailingIconName | ReactNodeIcon after the label, like a chevron for a chip that opens a menu. Ignored with onRemove.
disabledbooleanfalseBlocks presses and dims the chip.
accessibilityLabelstringlabel textOverride when the label alone is unclear. The remove button is announced as "Remove <label>".
styleStyleProp<ViewStyle>Extra styles for the chip.

Chip.Group

PropTypeDefaultDescription
childrenReactNodeChip elements.
layout'wrap' | 'scroll''wrap'wrap flows onto several lines, scroll keeps one horizontal line that scrolls with screen margins.
gapSpacingToken2Space between chips.

Use cases

A horizontal Chip.Group layout="scroll". Each chip toggles one filter; the list updates right away.

Inbox

Unread

Flagged

Attachments

To me

Grace HopperCompiler notes
Alan TuringRe: lunch
<Chip.Group layout="scroll">
	{filters.map((f) => (
		<Chip
			key={f.id}
			size="sm"
			selected={active.has(f.id)}
			onPress={() => toggle(f.id)}
		>
			{f.label}
		</Chip>
	))}
</Chip.Group>

Tags entered by the user

Each value becomes a removable chip next to the input.

New post

Publish

Topics

react-native

design

anima

Up to 5 topics.
Suggested:

animation

animals

<Chip.Group>
	{tags.map((t) => (
		<Chip key={t} variant="filled" size="sm" onRemove={() => removeTag(t)}>
			{t}
		</Chip>
	))}
</Chip.Group>

Filter that opens a picker

A chevron and a value in the label: the chip opens a BottomSheet instead of toggling.

Price: $$

Cuisine

PriceClear

$

$$

$$$

$$$$

Apply

<Chip selected={price != null} trailing="chevron-down" onPress={openPriceSheet}>
	{price ? `Price: ${price}` : "Price"}
</Chip>