List
A vertical list of rows with a leading visual, text and trailing meta.Field reports12 files
Budget 2026.xlsxEdited yesterday
Site photo.jpg
JPG
JSX
<List>
<List.Item leading={<FolderIcon />} title="Field reports" description="12 files" />
<List.Item leading={<FileIcon />} title="Budget 2026.xlsx" description="Edited yesterday" />
<List.Item leading={<ImageIcon />} title="Site photo.jpg" trailing="JPG" />
</List>Installation
Package
CLI (copy source)
pnpm
pnpm add @advui/corenpm
npm install @advui/coreUsage
import { List } from '@advui/core'
import { ChevronRightIcon, UserIcon } from '@advui/icons'
<List variant="outline" divided>
<List.Item
leading={<UserIcon />}
title="Account"
description="Name, email and photo"
trailing={<ChevronRightIcon />}
onPress={openAccount}
/>
</List>Examples
Basic
Preview
Code
Field reports12 files
Budget 2026.xlsxEdited yesterday
Site photo.jpg2.4 MB
JPG
Pressable rows
Each row is one button; the last one is disabled.Preview
Code
Avatars and actions
Rows without `onPress` can hold their own buttons.Preview
Code
Aung KyawField coordinator
Online
Nwe NiData officer
Away
Hla MinProgramme manager
Online
API reference
List
| Prop | Type | Default | Description |
|---|---|---|---|
variant | 'plain' | 'outline' | 'plain' | `outline` puts the rows on a bordered card surface. |
size | 'sm' | 'md' | 'lg' | 'md' | Row padding and text size. An item can set its own. |
divided | boolean | false | Draws a line between items. |
List.Item
The same component as `ListItem`; see List Item for every prop: `actions`, `selected`, `selectable`, `href`, `variant`, `size` and style props.| Prop | Type | Default | Description |
|---|---|---|---|
title | ReactNode | — | Main line. |
description | ReactNode | — | Muted second line. |
leading | ReactNode | — | Icon, Avatar or image before the text. Icons are 20px and muted. |
trailing | ReactNode | — | Meta text, a Badge or a chevron. Controls go in `actions` when the item has `onPress`. |
actions | ReactNode | — | Buttons beside the pressable row, which keep their own presses. |
selected | boolean | — | Highlights the item; a pressable one is the current one (`aria-current`). |
onPress | (event) => void | — | Makes the whole row one button. |
disabled | boolean | false | Blocks `onPress`. |
children | ReactNode | — | Custom content in place of `title` and `description`. |
List.ItemTitle
The styled main line, for custom `children`.List.ItemDescription
The styled muted line, for custom `children`.Accessibility
- The list has the
listrole and each rowlistitem, so screen readers announce the count. - A row with
onPressholds one button (<button>on web) named by its title, description and trailing text. Put other buttons inactions, which sit beside it. - A disabled row keeps focus but sets
aria-disabledand ignores presses. - Rows are at least 44px (
sm), 48px (md) or 56px (lg) tall.
| Key | Action |
|---|---|
| Tab | Moves between pressable rows and the controls inside rows. |
| Enter / Space | Presses the focused row. |
Platform notes
Web
A pressable row is a
<button> inside the list item.iOS
A pressable row is one accessible button; VoiceOver reads all of its text.
Android
Same as iOS. Pressable rows show the ripple when the config has
androidRipple.