A list that handles loading, empty and error for you and announces the result count to assistive tech. You write a single row component — everything else is provided.
Live example
<DataList state={…} />
4 users
AL
Ada Lovelace
Maintainer
GH
Grace Hopper
Admin
AT
Alan Turing
Member
RP
Radia Perlman
Member
aria-live announced: "Loaded 4 users."
Tutorial
Give it a state and a way to render one item. data-list composes state-boundary under the hood, so you inherit every accessibility guarantee.
1
Install
Pulls in data-list and its axe test. It depends on state-boundary, which the CLI adds for you if it is missing.
terminal
$ npx ibirdui add data-list
+ also adding dependency: state-boundary
✓ wrote components/data-list.tsx
2
Write one row
A plain component for a single item. No loading or error logic lives here — that is the list’s job.
user-row.tsx
function UserRow({ user }: { user: User }) {
return (
<li className="row">
<Avatar src={user.avatar} />
<span>{user.name}</span>
</li>
);
}
3
Render the list
Pass the AsyncState, a label for screen readers, and a getKey. The render function turns each item into a row.