Components
Table
The base HTML table primitives — header, body, row, and cell.
Plain, unstyled-beyond-tokens table primitives (TableHeader/TableBody/TableRow/TableHead/
TableCell). For anything sortable, selectable, or backed by real data, reach for DataTable
(built on TanStack Table) instead — it already handles loading and error states; this is the
building block underneath it.
| Route | Days | Service |
|---|---|---|
| First Passage to the West | 2 | GoldLeaf |
| Journey through the Clouds | 2 | SilverLeaf |
| Rainforest to Gold Rush | 2 | GoldLeaf |
Props
Prop
Type
Table wraps its <table> in a horizontally-scrollable <div> automatically — the props above
apply to the outer <table> element; everything else forwards straight through to its native
HTML element (<thead>, <tr>, <th>, ...).
Accessibility
- Always give header cells real
<th>semantics viaTableHead— don't style aTableCellto look like a header row instead; screen readers rely on<th>to announce column context per cell. TableCaptionexists for a reason — use it (not a preceding paragraph) when a table needs a short description, so it's programmatically associated with the table.
Do / Don't
- Do reach for
DataTable/SelectableDataTablefor anything backed by an API — they add sorting, loading skeletons, and error+retry on top of this same base. - Don't hand-roll pagination or sorting state on top of these raw primitives — that logic
already exists in
DataTable; duplicating it is exactly the kind of drift this catalog exists to prevent.