Skip to content

Table

Data table with sorting, filtering, and column resize plugins.

TaskOwnerStatusBudgetDue
Design reviewAda LovelaceIn progress18200Jun 12
Billing migrationGrace HopperReady9600Jun 17
QA passKatherine JohnsonBlocked13400Jun 21
Docs refreshHedy LamarrDone7200Jun 24
Alert tuningAlan TuringIn progress15100Jun 27
Research synthesisMary JacksonReady5400Jul 2
<Table columns={columns} data={data} idKey="id" />
TaskOwnerStatusBudgetDue

No tasks found

Try adjusting filters or creating a new task.
<Table
columns={columns}
data={[]}
emptyState={
<EmptyState
description="Try adjusting filters or creating a new task."
isCompact
title="No tasks found"
/>
}
/>
TaskOwnerStatusBudgetDue

No data

<Table columns={columns} data={[]} />
TaskOwnerStatusBudgetDue
Design reviewAda LovelaceIn progress18200Jun 12
Billing migrationGrace HopperReady9600Jun 17
TaskOwnerStatusBudgetDue
Design reviewAda LovelaceIn progress18200Jun 12
Billing migrationGrace HopperReady9600Jun 17
TaskOwnerStatusBudgetDue
Design reviewAda LovelaceIn progress18200Jun 12
Billing migrationGrace HopperReady9600Jun 17
<DensityStory />
TaskOwnerStatusBudgetDue
Design reviewAda LovelaceIn progress18200Jun 12
Billing migrationGrace HopperReady9600Jun 17
TaskOwnerStatusBudgetDue
Design reviewAda LovelaceIn progress18200Jun 12
Billing migrationGrace HopperReady9600Jun 17
TaskOwnerStatusBudgetDue
Design reviewAda LovelaceIn progress18200Jun 12
Billing migrationGrace HopperReady9600Jun 17
TaskOwnerStatusBudgetDue
Design reviewAda LovelaceIn progress18200Jun 12
Billing migrationGrace HopperReady9600Jun 17
<DividersStory />
TaskOwnerStatusBudgetDue
Design reviewAda LovelaceIn progress18200Jun 12
Billing migrationGrace HopperReady9600Jun 17
QA passKatherine JohnsonBlocked13400Jun 21
Docs refreshHedy LamarrDone7200Jun 24
Alert tuningAlan TuringIn progress15100Jun 27
Research synthesisMary JacksonReady5400Jul 2
<Table columns={columns} data={data} idKey="id" isStriped />
TaskOwnerStatusBudgetDue
Design reviewAda LovelaceIn progress18200Jun 12
Billing migrationGrace HopperReady9600Jun 17
QA passKatherine JohnsonBlocked13400Jun 21
Docs refreshHedy LamarrDone7200Jun 24
Alert tuningAlan TuringIn progress15100Jun 27
Research synthesisMary JacksonReady5400Jul 2
<Table columns={columns} data={data} hasHover idKey="id" />
PlanStatus
StarterReady
GrowthReady
EnterpriseDraft
3 plans
<Table hasHover isStriped>
<TableHeader>
<TableRow>
<TableHeaderCell>Plan</TableHeaderCell>
<TableHeaderCell>Status</TableHeaderCell>
</TableRow>
</TableHeader>
<TableBody>
<TableRow>
<TableCell>Starter</TableCell>
<TableCell>Ready</TableCell>
</TableRow>
<TableRow>
<TableCell>Growth</TableCell>
<TableCell>Ready</TableCell>
</TableRow>
<TableRow>
<TableCell>Enterprise</TableCell>
<TableCell>Draft</TableCell>
</TableRow>
</TableBody>
<TableFooter>
<TableRow>
<TableCell colSpan={2}>3 plans</TableCell>
</TableRow>
</TableFooter>
</Table>
TaskNotesOwner
Design reviewUnbrokenIdentifier_0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ with surrounding copy to compare truncation and wrapping.Ada Lovelace
Billing migrationMove remaining accounts to the new billing pipeline after validating invoice previews with support.Grace Hopper
QA passRun the cross-browser verification pass and log issues against the release checklist.Katherine Johnson
TaskNotesOwner
Design reviewUnbrokenIdentifier_0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ with surrounding copy to compare truncation and wrapping.Ada Lovelace
Billing migrationMove remaining accounts to the new billing pipeline after validating invoice previews with support.Grace Hopper
QA passRun the cross-browser verification pass and log issues against the release checklist.Katherine Johnson
<TextOverflowStory />
TaskNotesOwner
Design reviewPrepare the final handoff package with annotated screenshots, links to key decisions, and open follow-up items.Ada Lovelace
Billing migrationMove remaining accounts to the new billing pipeline after validating invoice previews with support.Grace Hopper
TaskNotesOwner
Design reviewPrepare the final handoff package with annotated screenshots, links to key decisions, and open follow-up items.Ada Lovelace
Billing migrationMove remaining accounts to the new billing pipeline after validating invoice previews with support.Grace Hopper
TaskNotesOwner
Design reviewPrepare the final handoff package with annotated screenshots, links to key decisions, and open follow-up items.Ada Lovelace
Billing migrationMove remaining accounts to the new billing pipeline after validating invoice previews with support.Grace Hopper
<VerticalAlignStory />
Fixed 160px2fr min 180px1fr min 120pxFixed 96px
Design reviewPrepare the final handoff package with annotated screenshots, links to key decisions, and open follow-up items.Ada LovelaceJun 12
Billing migrationMove remaining accounts to the new billing pipeline after validating invoice previews with support.Grace HopperJun 17
QA passRun the cross-browser verification pass and log issues against the release checklist.Katherine JohnsonJun 21
Docs refreshRefresh the administrator guide and add examples for importing historical project data.Hedy LamarrJun 24
Alert tuningTune noisy alert thresholds and group notifications by service owner for faster triage.Alan TuringJun 27
Research synthesisInterview workflow owners and summarize the strongest opportunities for dashboard consolidation.Mary JacksonJul 2
<Table columns={widthColumns} data={data} idKey="id" />
TaskOwnerPriorityStatus
Design reviewAda LovelaceHighIn progress
Billing migrationGrace HopperMediumReady
QA passKatherine JohnsonHighBlocked
Docs refreshHedy LamarrLowDone
Alert tuningAlan TuringMediumIn progress
Research synthesisMary JacksonLowReady
<Table
columns={[
columns[0],
columns[1],
{
header: 'Priority',
key: 'priority',
renderCell: item => (
<Badge
color={
item.priority === 'High'
? 'error'
: item.priority === 'Medium'
? 'warning'
: 'neutral'
}
label={item.priority}
size="lg"
/>
),
},
columns[2],
]}
data={data}
idKey="id"
/>
BudgetDueIdNotesOwnerPriorityProgressStatusTask
18200Jun 12designPrepare the final handoff package with annotated screenshots, links to key decisions, and open follow-up items.Ada LovelaceHigh70%In progressDesign review
9600Jun 17migrationMove remaining accounts to the new billing pipeline after validating invoice previews with support.Grace HopperMedium45%ReadyBilling migration
13400Jun 21qaRun the cross-browser verification pass and log issues against the release checklist.Katherine JohnsonHigh20%BlockedQA pass
7200Jun 24docsRefresh the administrator guide and add examples for importing historical project data.Hedy LamarrLow100%DoneDocs refresh
<Table data={data.slice(0, 4)} idKey="id" />
PlanStatusOwner
Manual rowsReadyAda Lovelace
Rendered with table primitives.
<Table>
<TableHeader>
<TableRow>
<TableHeaderCell>Plan</TableHeaderCell>
<TableHeaderCell>Status</TableHeaderCell>
<TableHeaderCell>Owner</TableHeaderCell>
</TableRow>
</TableHeader>
<TableBody>
<TableRow>
<TableCell>Manual rows</TableCell>
<TableCell>Ready</TableCell>
<TableCell>Ada Lovelace</TableCell>
</TableRow>
</TableBody>
<TableFooter>
<TableRow>
<TableCell colSpan={3}>Rendered with table primitives.</TableCell>
</TableRow>
</TableFooter>
</Table>
Design reviewAda LovelaceIn progress18200Jun 12
Billing migrationGrace HopperReady9600Jun 17
QA passKatherine JohnsonBlocked13400Jun 21
Docs refreshHedy LamarrDone7200Jun 24
Alert tuningAlan TuringIn progress15100Jun 27
Research synthesisMary JacksonReady5400Jul 2
<SortableStory />
TaskOwnerStatusBudgetDue
Design reviewAda LovelaceIn progress18200Jun 12
Billing migrationGrace HopperReady9600Jun 17
QA passKatherine JohnsonBlocked13400Jun 21
Docs refreshHedy LamarrDone7200Jun 24
Alert tuningAlan TuringIn progress15100Jun 27
Research synthesisMary JacksonReady5400Jul 2
<SelectionStory />
TaskOwnerStatusBudgetDue
Design reviewAda LovelaceIn progress18200Jun 12
Billing migrationGrace HopperReady9600Jun 17
<PaginationStory />
TaskOwnerStatusDue
Design reviewAda LovelaceIn progressJun 12
Billing migrationGrace HopperReadyJun 17
QA passKatherine JohnsonBlockedJun 21
Docs refreshHedy LamarrDoneJun 24
Alert tuningAlan TuringIn progressJun 27
Research synthesisMary JacksonReadyJul 2
<ColumnSettingsStory />
TaskOwnerStatusBudgetDue
Design reviewAda LovelaceIn progress18200Jun 12
Billing migrationGrace HopperReady9600Jun 17
QA passKatherine JohnsonBlocked13400Jun 21
Docs refreshHedy LamarrDone7200Jun 24
Alert tuningAlan TuringIn progress15100Jun 27
Research synthesisMary JacksonReady5400Jul 2
<ColumnResizeStory />
Task
Owner
Status
BudgetDue
Design reviewAda LovelaceIn progress18200Jun 12
Billing migrationGrace HopperReady9600Jun 17
QA passKatherine JohnsonBlocked13400Jun 21
Docs refreshHedy LamarrDone7200Jun 24
Alert tuningAlan TuringIn progress15100Jun 27
Research synthesisMary JacksonReady5400Jul 2
<FilteringStory />
Task
Owner
Status
BudgetDue
Design reviewAda LovelaceIn progress18200Jun 12
Billing migrationGrace HopperReady9600Jun 17
QA passKatherine JohnsonBlocked13400Jun 21
Docs refreshHedy LamarrDone7200Jun 24
Alert tuningAlan TuringIn progress15100Jun 27
Research synthesisMary JacksonReady5400Jul 2
<InlineFilteringStory />
Research synthesisMary JacksonReady5400Jul 2
Design reviewAda LovelaceIn progress18200Jun 12
Billing migrationGrace HopperReady9600Jun 17
<CombinedPluginsStory />
PropTypeDefaultDescription
childrenReactNodeTable primitives rendered instead of data-driven content. When provided, columns/data are ignored and the children are rendered as-is.
classNamestringAdditional CSS class names applied to the table element.
columnsTableColumn<T>[]Column definitions. When omitted, columns are inferred from data.
dataT[]Row data rendered into the table body.
data-testidstringTest ID applied to the table element.
density"compact" | "balanced" | "spacious"'balanced'Spacing density for rows and cells.
dividers"none" | "grid" | "columns" | "rows"'rows'Which divider lines to show between cells.
emptyStateReactNodeContent shown when data is an empty array. Omit for the default empty state; pass null to render nothing.
hasHoverbooleanfalseWhether rows highlight on hover.
idKey(keyof T & string) | ((item: T) => number | string)Stable row identity, used as the React key for each body row.
isStripedbooleanfalseWhether alternating rows have a subtle background.
labelstring'Table'Name of the table, used to label its horizontal scroll region.
pluginsRecord<string, TablePlugin<T>> | TablePlugin<T>[]Plugin map or array that extends table behavior.
refRef<HTMLTableElement>Ref forwarded to the table element.
styleCSSPropertiesInline styles applied to the table element.
tablePropsHTMLAttributes<HTMLTableElement>Extra HTML attributes spread onto the table element.
textOverflow"wrap" | "truncate"'wrap'How overflowing cell text is handled.
verticalAlign"top" | "bottom" | "middle"'middle'Vertical alignment of cell content.

Wraps table body rows in a `<tbody>` element.

PropTypeDefaultDescription
children*ReactNodeTable row elements rendered inside the body.
classNamestringAdditional CSS class names applied to the tbody.
data-testidstringTest ID applied to the tbody.
refRef<HTMLTableSectionElement>Ref forwarded to the tbody element.
styleCSSPropertiesInline styles applied to the tbody.

Table data cell with density, alignment, and divider styling from context.

PropTypeDefaultDescription
childrenReactNodeCell content.
classNamestringAdditional CSS class names applied to the td.
colSpannumberNumber of columns the cell spans.
data-testidstringTest ID applied to the td.
headersstringSpace-separated list of header cell IDs this cell relates to.
refRef<HTMLTableCellElement>Ref forwarded to the td element.
rowSpannumberNumber of rows the cell spans.
scope'col' | 'colgroup' | 'row' | 'rowgroup'Scope of the cell when used as a header-like td.
styleCSSPropertiesInline styles applied to the td.

Wraps table footer rows in a `<tfoot>` element. Rows rendered inside opt out of the table's hover and striping styling.

PropTypeDefaultDescription
children*ReactNodeFooter row elements rendered inside the tfoot.
classNamestringAdditional CSS class names applied to the tfoot.
data-testidstringTest ID applied to the tfoot.
refRef<HTMLTableSectionElement>Ref forwarded to the tfoot element.
styleCSSPropertiesInline styles applied to the tfoot.

Wraps table header rows in a `<thead>` element. Rows rendered inside opt out of the table's hover and striping styling.

PropTypeDefaultDescription
children*ReactNodeHeader row elements rendered inside the thead.
classNamestringAdditional CSS class names applied to the thead.
data-testidstringTest ID applied to the thead.
refRef<HTMLTableSectionElement>Ref forwarded to the thead element.
styleCSSPropertiesInline styles applied to the thead.

Table header cell with density and divider styling from context.

PropTypeDefaultDescription
childrenReactNodeHeader cell content.
classNamestringAdditional CSS class names applied to the th.
data-testidstringTest ID applied to the th.
refRef<HTMLTableCellElement>Ref forwarded to the th element.
scope'col' | 'colgroup' | 'row' | 'rowgroup''col'Scope of the header cell.
styleCSSPropertiesInline styles applied to the th.

Table row with hover and striped styling from context. Header and footer rows are not interactive, so they render without that styling even when the surrounding table enables it.

PropTypeDefaultDescription
children*ReactNodeCell elements rendered inside the row.
classNamestringAdditional CSS class names applied to the tr.
data-testidstringTest ID applied to the tr.
refRef<HTMLTableRowElement>Ref forwarded to the tr element.
styleCSSPropertiesInline styles applied to the tr.