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
valuestring—Identifies this tile within a group.
selectedboolean—Controlled selected state.
defaultSelectedboolean—Initial selected state for uncontrolled use.
onSelect(value: string) => void—Called 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).
disabledboolean—When true, disables the control and removes it from the tab order.
iconReact.ReactNode—Optional leading icon/visual.
asChildboolean—When true, renders the child element as the root via Slot, merging props (polymorphic rendering).
childrenReact.ReactNode—Content rendered inside the component.
classNamestring—Additional 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