Headless table

The same 48 invoices as the data table , driven by @tanstack/table-core instead of hand-written state. Everything here is something the core makes materially cheaper: facet counts that update as you filter, column visibility, ordering and pinning. Sorting, search and paging are along for the ride.

Columns

No invoices match

Clear a facet or the search to widen the result.

Which one to copy

Take the hand-rolled table
When the screen is rows, a sort, a search and a page — and the endpoint does that work. It is the reference implementation here and gets every feature first, with no table dependency and cell editing already wired.
Take the headless core
When you need the things on this page: facet counts, column visibility, ordering, pinning — or grouping and row selection later. It costs 17.1 KB gz on the pages that import it, and the state adapter is the one subscribe in lib/headless-table.ts.