List

An unframed container for displaying related items vertically. Lists provide one consistent visual treatment, multiple item types, and optional keyboard navigation.

Props

List

PropTypeRequiredDefaultDescription
ariaLabelstringYes-Accessible label for the list
navigationbooleanNotrueEnable arrow key navigation
autofocusbooleanNofalseFocus the first item on mount
gapGapNo"small"Vertical space between items

List item components

PropTypeDefaultDescription
headlinestringRequiredPrimary text
bodystring-Optional supporting text
iconIconType-Context-colored icon inside the primary content
iconPositionPosition"start"Position of the icon
iconSizeSize"medium"Size of the icon
addOnReactNode-Trailing status or action outside the primary content
  • ListItem - Static, non-interactive item
  • ListButtonItem - Clickable button item
  • ListLinkItem - Navigation link item
  • ListHeaderItem - Section header
  • Sublist - Collapsible group of items

All item components accept text props such as headline and body, plus an optional icon. Icons are part of the primary item content and inherit its semantic color. addOn provides a trailing status or action slot outside interactive buttons. Static and interactive items share the same padding, typography, icon spacing, and truncation defaults so mixed lists remain aligned.

Basic list

Lists have no surrounding background or border. Interactive items receive a rounded hover treatment, keeping the list lightweight in cards, sidebars, popovers, and full-width layouts.

  • Notifications
    Manage your notification preferences
<List ariaLabel="Settings">
  <ListItem
    headline="Notifications"
    body="Manage your notification preferences"
    icon="bell"
  />
  <ListButtonItem
    color="secondary"
    headline="Account"
    body="Update your profile information"
    icon="user"
    onClick={() => {}}
  />
  <ListLinkItem
    href="/help"
    color="secondary"
    headline="Help Center"
    icon="circle-question-mark"
  />
</List>

Item colors

ListButtonItem and ListLinkItem support semantic text colors:

<ListButtonItem
  color="primary"
  headline="Create"
  icon="plus"
  onClick={() => {}}
/>
<ListButtonItem
  color="secondary"
  headline="Edit"
  icon="pencil"
  onClick={() => {}}
/>
<ListButtonItem
  color="negative"
  headline="Delete"
  icon="trash-2"
  onClick={() => {}}
/>

Contextual add-on color

Custom add-on content can use color="inherit" to follow the item’s disabled, selected, or semantic foreground color.

  • 120
  • 120
<ListButtonItem
  headline="Miner"
  body="Ready to join the crew"
  icon="hard-hat"
  addOn={
    <Row gap="xsmall" align="center">
      <Span color="inherit">120</Span>
      <Icon color="inherit" icon="coins" size="small" />
    </Row>
  }
  onClick={() => {}}
/>

Selected state

Interactive items support a selected prop. Link items also expose the state through aria-current="page".

<ListLinkItem
  href="/analytics"
  headline="Analytics"
  selected={currentPage === "analytics"}
/>

Selected body color

<List ariaLabel="Selection colors">
  <ListButtonItem
    headline="Unselected item"
    body="This body uses the default item color"
    onClick={() => {}}
  />
  <ListButtonItem
    headline="Selected item"
    body="This body uses the selected highlight color"
    selected
    onClick={() => {}}
  />
</List>

Sublist

Group related items with collapsible sections:

  • Installation
  • Quick Start
  • Configuration
  • Button
  • Input
  • List
<List ariaLabel="Documentation">
  <Sublist label="Getting Started">
    <ListItem headline="Installation" />
    <ListItem headline="Quick Start" />
  </Sublist>
  <Sublist label="Components">
    <ListItem headline="Button" />
    <ListItem headline="Input" />
  </Sublist>
</List>

Keyboard navigation

Lists use arrow key navigation by default, following the WAI-ARIA grid pattern:

  • Arrow Up/Down - Move between items
  • Enter/Space - Activate the focused item
  • Home/End - Jump to the first or last item

Disable list-managed navigation when the contents manage focus themselves:

<List ariaLabel="Form fields" navigation={false}>
  ...
</List>

Accessibility

  • Uses role="grid" with aria-label for screen readers
  • Keyboard navigation follows the WAI-ARIA grid pattern
  • Focus management supports arrow keys, Home, and End
  • Interactive items expose selected and disabled states