Semantic list (ul/li) for rows of related items: settings, results, nav — with leading/trailing slots, selection, and pressable rows.

npx slipstream-ui@latest add list
Pressable rows (interactive)

Active thread: Release notes draft

Slots and descriptions
  • NEW
    Deploy pipelinePushes main to production on mergeAdmin
  • API
    Webhooks3 endpoints registered
  • Disabled row

Props

PropTypeDefaultDescription
dividedbooleanfalseHairline dividers between rows (List).
borderedbooleanfalseCard-like surface and border around the list (List).
size'default' | 'compact''default'Row density (List).
leadingReactNode—Leading slot: icon, avatar, status dot, or checkbox (ListItem).
trailingReactNode—Trailing slot: chevron, badge, meta, or action (ListItem).
selectedbooleanfalseMarks the row as the active/selected item (ListItem).
descriptionstring—Secondary line under the main content (ListItem).
onClick() => void—Makes the row pressable — content renders inside a full-width button (ListItem).

Accessibility

  • Renders a real <ul>/<li> — screen readers announce item counts and per-item navigation.
  • Pressable rows wrap content in a <button>, so ul > li semantics stay valid while the row is keyboard-operable.
  • For navigation lists, pass aria-current="true" on the active row via props.

Browser support

BrowserTested versions
Chrome111+ (Mar 2023)
Edge111+ (Mar 2023)
Firefox121+ (Dec 2023)
Safari17.2+ — macOS & iOS (Dec 2023)

Slipstream components rely only on CSS custom properties, Flexbox/Grid, and ARIA — the everyday baseline of the last two years of evergreen releases. Anything newer is progressive enhancement: unsupported browsers keep full functionality with static behavior instead of animations.

Was this page helpful?