| Ada Lovelace | Engineer | Active | $4,200 |
| Alan Turing | Researcher | Active | $5,800 |
| Grace Hopper | Architect | Pending | $3,100 |
| Linus Torvalds | Maintainer | Archived | $2,750 |
| Margaret Hamilton | Lead | Active | $6,400 |
Installation
npx shadcn@latest add @iconiq/tableProps
Table
3 props
Root provider for the animated table primitives. It sets the shared column template so header and body rows stay aligned.
children
ReactNodeRequired
Compose TableHeader, TableBody, TableRow, TableHead, TableCell, and optional helper primitives inside the root.
columns
stringDefault
"minmax(0,1.4fr) minmax(0,1fr) minmax(0,1fr) minmax(0,1fr)"Shared grid-template-columns value applied to every header and body row so the native table semantics still keep the custom grid layout aligned.
className
stringMerged onto the native table element when you need to adjust width, spacing, or placement.
Notes
The canonical JSX export is `Table`, and the lowercase `table` alias still ships for backward compatibility.
The file also exports `TABLE_DEFAULT_COLUMNS`, `TableAlign`, `TableRowVariant`, and `TableSortDirection` for stronger TypeScript reuse in app code.
The registry component no longer owns demo data, search state, or add/remove actions. Those behaviors are expected to live in app code.
The installed primitive now renders a native table, header, body, rows, and cells while preserving the original grid-driven layout API.
TableToolbar
2 props
Optional layout helper for the control row above the table, matching the original spacing and alignment treatment.
children
ReactNodeRequired
Usually a search field, actions, filters, or bulk controls placed above the table.
className
stringMerged onto the toolbar wrapper.
TableHeader
2 props
Native table head wrapper for the column labels and sort controls.
children
ReactNodeRequired
Usually one header TableRow.
className
stringMerged onto the header wrapper.
TableBody
2 props
Native table body wrapper that adds LayoutGroup and AnimatePresence so row insertions, removals, and reordering stay animated.
children
ReactNodeRequired
One or more TableRow elements, plus optional TableEmpty when no rows are visible.
className
stringMerged onto the body wrapper.
Notes
Exit animations for removed rows only run when body rows are rendered as direct children of TableBody.
TableRow
5 props
Motion-enabled native table row used for both header and body layouts.
variant
"header" | "body"Default
bodyHeader rows skip mount and exit motion, while body rows keep the original motion defaults.
index
numberDefault
0Optional row index used to apply a subtle stagger to body row entry motion.
hoverable
booleanWhen true, body rows get the muted hover wash. Defaults to false so informational rows do not imply clickability.
className
stringMerged onto the row shell for spacing or color overrides.
Motion tr props
ComponentPropsWithoutRef<typeof motion.tr>Additional motion.tr props such as layout, transition, whileHover, and exit can still be passed directly.
Notes
Every row reads the shared columns string from Table and applies it as grid-template-columns.
Rows expose `data-slot="table-row"`, plus `data-variant` and `data-hoverable`, which makes local styling overrides easier after installation.
TableHead
3 props
Native header cell wrapper for labels, sort buttons, and right-aligned controls.
align
"left" | "right"Default
leftControls left or right alignment for the header cell content.
children
ReactNodeRequired
Header label or a custom control such as TableSortButton. When used with TableSortButton, the column header also receives the correct aria-sort state.
className
stringMerged onto the header cell wrapper.
TableCell
3 props
Native body cell wrapper for row content, status pills, numeric values, and row actions.
align
"left" | "right"Default
leftControls left or right alignment for the cell content.
children
ReactNodeRequired
Rendered cell content.
className
stringMerged onto the cell wrapper.
TableCaption
2 props
Low-emphasis native table caption below the table, matching the original entry count styling.
children
ReactNodeRequired
Caption copy, summary text, or count information.
className
stringMerged onto the caption paragraph.
TableEmpty
3 props
Animated empty-state row for zero-result or no-data states inside TableBody.
children
ReactNodeRequired
Empty-state copy or a richer no-data message.
colSpan
numberOverrides the automatically derived column span when the empty row should cover a different number of columns.
Motion tr props
ComponentPropsWithoutRef<typeof motion.tr>You can still override animate, initial, transition, or className when customizing the empty state row.
TableSortButton
5 props
Optional header helper with a larger hit area, clearer active state, and direction animation.
active
booleanDefault
falseStrengthens the visual treatment and enables the active sort direction state for the parent column header.
direction
"asc" | "desc"Default
ascRotates the chevron when the current active sort direction is descending.
align
"left" | "right"Default
leftKeeps the sort button aligned with the header cell it lives in, including full-width right-aligned targets.
children
ReactNodeRequired
Visible sort label.
className
stringMerged onto the button wrapper.
Notes
The helper defaults to type='button', so it stays safe inside forms.