ListItem
Flexible non-tabular list row for activity, notifications, and assignments.
Quick Preview
Composition
Use this public composition when building ListItem:
ListItem
├── ListItemAvatar
│ └── AvatarImage | AvatarFallback | AvatarStatus
├── ListItemIcon
├── ListItemContent
│ ├── ListItemTitle
│ └── ListItemDescription
└── ListItemMeta | ListItemCountUsage
<ListItem render={<button type="button" />}>
<ListItemAvatar>
<AvatarFallback>NK</AvatarFallback>
</ListItemAvatar>
<ListItemContent>
<ListItemTitle>Notification title</ListItemTitle>
<ListItemDescription>Supporting line of context</ListItemDescription>
</ListItemContent>
<ListItemMeta>2h ago</ListItemMeta>
</ListItem>Examples
Default List Item
Use avatar, icon, meta, or count slots to fit activity feeds and notification lists.
States and Sizes
Use selected for navigation/current-item rows, native disabled controls for unavailable action rows, and size="lg" for roomier surfaces.
Props
| Prop/API | Type | Default | Description |
|---|---|---|---|
size | "md" | "lg" | "md" | Controls row density, text scale, and leading/trailing slot sizes. |
selected | boolean | false | Applies the selected brand-subtle surface and selected text treatments. |
render | Base UI render prop | - | Changes the rendered root element while preserving styles. |
className | string | - | Local layout or spacing overrides. |
| native/root props | React div props | - | Passed through to the root. |
Accessibility
- Render the root as a
buttonor link when the whole row is actionable. Interactive row styling is applied automatically for semantic interactive roots,role="button", androle="link". - Use native
disabledfor button rows andaria-disabledfor link rows. - Keep one primary action per row; do not nest multiple competing controls inside one ListItem.
- Use
selectedonly when the row represents the current item or current navigation destination. - Do not use
ListItemCountfor severity. Use a status component when the value communicates state rather than count.