List
Bordered rows with a title, a description and a trailing note.
-
Ada LovelaceToday
Editor
-
Grace HopperYesterday
Reviewer
-
Alan Turing3 Nov
Author
{ui list,
items: [
[
'title' => 'Ada Lovelace',
'description' => 'Editor',
'icon' => 'user',
'meta' => 'Today',
],
[
'title' => 'Grace Hopper',
'description' => 'Reviewer',
'icon' => 'user',
'meta' => 'Yesterday',
],
[
'title' => 'Alan Turing',
'description' => 'Author',
'icon' => 'user',
'meta' => '3 Nov',
],
],
/}
Each row is an item: title, description, icon, meta and href. The title is a link when there is an href and plain text when there is not. The icon sits before the text, and meta is a small muted note at the end of the row. All of them are optional, so a row can be as short as a title.
The list is a ul of li, so a screen reader announces the number of rows.
-
Tabs5 Nov 2026
Links that swap a panel loaded from the server.
-
Pagination5 Nov 2026
Links to the pages of a long list.
-
Modal5 Nov 2026
A dialog that opens over the page, loaded from the server.
-
Toast6 Nov 2026
A short message that appears in the corner and goes away on its own.
{ui list, items: p('ui/components')->children() /}
items takes pages as well as arrays, through the shared items() function. A page becomes its title, description and URL, so a list of a page's children is items: $page->children(), with no mapping in the template. Pages also give meta as their created date.
-
Backups
-
Mail
-
Search
{ui list, items: ['Backups', 'Mail', 'Search'] /}
A string is a row with only a title. A row's own items are not drawn here: for a tree, use a menu.
Params
| Param | Default | Description |
|---|---|---|
| items | [] | the rows: pages, strings or arrays like ['title' => 'Ada', 'description' => 'Editor', 'href' => '/ada', 'icon' => 'user', 'meta' => 'Today'] |
| class | '' | added to list |
| attrs | [] | any other attributes, e.g. ['id' => 'results'] |