Table, wired and working
Table draws rows, and this one runs them: sorting on header click, a search field, row selection with a select all header, client side pagination, and an empty state, assembled from the presentational pieces so a working data view is one component rather than an afternoon of plumbing.
Fully wired
Search, selection, sorting, and pagination together. Rows carry raw values keyed by column, and a column's render prop turns them into cells, like the status Badges here, while sorting and search keep reading the raw value underneath.
Ann Press | Waiting | 2026-09-20 | 2646 | |
Aspen Lubin | Failed | 2026-03-25 | 1899 | |
Gretchen Septimus | Shipped | 2026-04-20 | 3740 | |
Jaydon Aminoff | Waiting | 2026-07-17 | 224 | |
John Clarkson | Waiting | 2026-09-05 | 3412 |
Your filters, its plumbing
The toolbar slot takes consumer owned controls, like this status Dropdown. Filter the rows you pass in and the readout, pagination, and empty state follow.
John Clarkson | Waiting | 2026-09-05 | 3412 |
Aspen Lubin | Failed | 2026-03-25 | 1899 |
Michael Ekstrom | Shipped | 2026-08-01 | 2752 |
Kianna Vaccaro | Shipped | 2026-04-02 | 145 |
Livia Saris | Failed | 2026-11-14 | 708 |
Sorting only
Every part is opt in. With no search, selection, or page size, the component is just a table with sortable headers. Clicks cycle ascending, descending, then back to the given order.
John Clarkson | Waiting | 2026-09-05 | 3412 |
Aspen Lubin | Failed | 2026-03-25 | 1899 |
Michael Ekstrom | Shipped | 2026-08-01 | 2752 |
Kianna Vaccaro | Shipped | 2026-04-02 | 145 |
Livia Saris | Failed | 2026-11-14 | 708 |
Empty
A search with no matches renders the bordered empty state instead of a bare table, and the result count reads zero. Override it through the emptyState prop.
No matching rows
Adjust the search or filters and try again.