React data tables

Sortable grids, bulk selection, filters, pagination and row actions.

The table itself is easy; the shell around it is the work — selection that survives pagination, a filter bar that says how many rows it removed, and an empty state that distinguishes "no data" from "no matches". These carry that shell. Sorting and filtering are callbacks, so a server-paginated table uses the same markup as a client-side one.

8 matching8 blocksFree to copy
Open the full page for this block

Sortable Selectable Table

Type-aware sorting with aria-sort, a header checkbox that goes properly indeterminate, and selection that survives a re-sort.

Data Tables297 lines1 dep
Open the full page for this block

Table Search & Filter Bar

Search, filter count and view switch, with active filters shown as removable chips so a filtered table never looks unfiltered.

Data Tables180 lines1 dep
Open the full page for this block

Expandable Detail Rows

Rows that open into a full-width detail panel via colSpan, with aria-expanded and aria-controls wired to the detail row.

Data Tables205 lines1 dep
Open the full page for this block

Column Show, Hide & Reorder

Reordering that works from the keyboard rather than by drag alone, pinned columns that cannot be hidden or moved, and a guard so the last visible column cannot be unchecked into a blank table.

Data Tables219 lines1 dep
Open the full page for this block

Bulk Action Bar

The selection bar that asks the question most tables skip: this page, or all 1,284 rows the filter matches. Typed confirmation above a threshold, an undo with the window counting down, and a select-all that names its own scope.

Data Tables405 lines1 dep
Open the full page for this block

Inline Editable Table

Edit cells in the grid with staged changes, per-cell validation, the original value kept beside the attempt, and a save that counts what is still pending.

Data Tables301 lines1 dep
Open the full page for this block

Grouped Table with Subtotals

Collapsible group headers that carry their own subtotals while collapsed, with a grand total that sums every row rather than only the visible ones.

Data Tables238 lines1 dep

Questions about react data tables

How should sorting be announced?
`aria-sort` on the active header cell, and the button inside the header rather than a click handler on the `<th>`. Without it, the order changes silently for anyone not watching the arrows.
Pagination or infinite scroll?
Pagination for anything people cite, bookmark or audit — an infinite list has no addressable position. Infinite scroll suits feeds, where nobody needs to find row 4,120 again.
Are these react data tables free to use?
All 8 are free to copy and use in your own projects, including commercial ones. A Pro licence exists for redistribution — shipping them inside a product other people buy — and the full terms are on the licence page.
How do I add one to my project?
Install it with the CLI: `npx hoverlab add data-table-sortable` writes the component and its dependencies into your project. Every artifact here also has a copy button for the raw source, and an "Open in sandbox" link if you would rather try it first.