Static
Plain <li> rows — use for read-only navigation or labels.
- Overview
- Resume
- Cover letter
Glass list group — static rows or actionable buttons with selection and arrow-key focus.
Live
<ul class="ui-list" aria-label="Packet sections">
<li class="ui-list__item">Overview</li>
<li class="ui-list__item is-selected" aria-current="true">Resume</li>
<li class="ui-list__item">Cover letter</li>
</ul>
import { List, ListItem } from 'caustica-design/core'
<List aria-label="Packet sections">
<ListItem>Overview</ListItem>
<ListItem selected>Resume</ListItem>
<ListItem>Cover letter</ListItem>
</List>
Plain <li> rows — use for read-only navigation or labels.
Button rows with .ui-list__item--actionable; wrap each in
<li role="none">.
.is-selected + aria-current="true" highlights the current
row.
aria-label or aria-labelledby when the
purpose is not obvious from nearby headings.
aria-current="true" (React
selected does this).
<li role="none"> so the
list stays a list and the control stays activatable.
List moves focus among actionable items with Arrow Up/Down, Home,
and End.
disabled (or
aria-disabled) and are skipped by keyboard navigation.
| Class | Description |
|---|---|
.ui-list |
Glass list surface on <ul>. |
.ui-list__item |
Row — on <li> or actionable <button>. |
.ui-list__item--actionable |
Interactive button row (full-width, hover, focus). |
.is-selected |
Selected / current row highlight. |
From src/core/List.tsx —
List extends HTMLAttributes<HTMLUListElement>;
ListItem is either an <li> or an actionable
<button>.
| Prop | Type | Default | Description |
|---|---|---|---|
List / className |
string |
— | Merged onto .ui-list. |
ListItem / actionable |
boolean |
false |
When true, renders a button inside <li role="none">.
|
ListItem / selected |
boolean |
false |
Applies .is-selected and aria-current="true".
|
ListItem / children |
ReactNode |
— | Row content / label. |
ListItem / disabled |
boolean |
— | Actionable only — native button disabled. |