Tile

A selectable card with radio (single) or checkbox (multi) semantics, toggled by click or keyboard

Category: inputs · WCAG 2.2-AA · inputs, tile, card, selectable, choice

Variants

States

Props

PropTypeDefaultDescription
valuestringIdentifies this tile within a group.
selectedbooleanControlled selected state.
defaultSelectedbooleanInitial selected state for uncontrolled use.
onSelect(value: string) => voidCalled with this tile's value whenever it is toggled on (or off for multi).
selectable'single' | 'multi'singleSingle = radio semantics (toggle on); multi = checkbox semantics (toggle on/off).
disabledbooleanWhen true, disables the control and removes it from the tab order.
iconReact.ReactNodeOptional leading icon/visual.
asChildbooleanWhen true, renders the child element as the root via Slot, merging props (polymorphic rendering).
childrenReact.ReactNodeContent rendered inside the component.
classNamestringAdditional CSS class names merged onto the root element.

Design tokens

When to use

When not to use

How to build an accessible Tile in React →

Examples

Single-select group

<div role="radiogroup" aria-label="Plan">
  <Tile value="starter" selected={plan === 'starter'} onSelect={setPlan}>Starter</Tile>
  <Tile value="pro" selected={plan === 'pro'} onSelect={setPlan}>Pro</Tile>
</div>

Multi-select with icon

Multi tiles toggle on and off like a checkbox.

<Tile value="notifications" selectable="multi" icon={<BellIcon />} defaultSelected>
  Email notifications
</Tile>

Related components

← Back to docs