A flexible table component built on top of TanStack Table with built-in styling, interactions, and pagination support.
Band name | Genre | Year formed | Albums |
|---|---|---|---|
Rock, Pop, Psychedelic Rock | 1960 | 13 | |
Hard Rock, Heavy Metal, Blues Rock | 1968 | 9 | |
Progressive Rock, Psychedelic Rock, Art Rock | 1965 | 15 | |
Rock, Blues Rock, Hard Rock | 1962 | 30 | |
Rock, Hard Rock, Glam Rock | 1970 | 15 |
1 - 5 of 10
import { Cell, ..., TableHeader, TablePagination } from '@backstage/ui';
<Table>
<TableHeader>
<Column />
</TableHeader>
<TableBody>
<Row>
<Cell />
<CellProfile />
</Row>
</TableBody>
</Table>
<TablePagination />The main table component that renders data in a structured grid format.
| Prop | Type | Default | Responsive |
|---|---|---|---|
| selectionBehavior | togglereplace | toggle | No |
| disabledBehavior | selectionall | selection | No |
| disabledKeys | Iterable<Key> | - | No |
| selectionMode | singlemultiple | - | No |
| selectedKeys | allIterable<Key> | - | No |
| defaultSelectedKeys | allIterable<Key> | - | No |
| onRowAction | (key: Key) => void | - | No |
| onSelectionChange | (keys: Selection) => void | - | No |
| onSortChange | (descriptor: SortDescriptor) => any | - | No |
| className | string | - | No |
| style | CSSProperties | - | No |
The header section of the table that contains the column definitions.
| Prop | Type | Default | Responsive |
|---|---|---|---|
| onHoverStart | (e: HoverEvent) => void | - | No |
| onHoverEnd | (e: HoverEvent) => void | - | No |
| onHoverChange | (isHovering: boolean) => void | - | No |
| className | string | - | No |
| style | CSSProperties | - | No |
A column definition that describes how a column should be rendered.
| Prop | Type | Default | Responsive |
|---|---|---|---|
| id | Key | - | No |
| allowsSorting | boolean | - | No |
| isRowHeader | boolean | - | No |
| textValue | string | - | No |
| className | string | - | No |
| style | CSSProperties | - | No |
The body section of the table that contains the rows.
| Prop | Type | Default | Responsive |
|---|---|---|---|
| renderEmptyState | (props) => ReactNode | - | No |
| className | string | - | No |
| style | CSSProperties | - | No |
A row definition that describes how a row should be rendered.
| Prop | Type | Default | Responsive |
|---|---|---|---|
| textValue | string | - | No |
| isDisabled | boolean | - | No |
| id | Key | - | No |
| href | string | - | No |
| hrefLang | string | - | No |
| target | string | - | No |
| rel | string | - | No |
| onAction | () => void | - | No |
| onHoverStart | (e: HoverEvent) => void | - | No |
| onHoverEnd | (e: HoverEvent) => void | - | No |
| onHoverChange | (isHovering: boolean) => void | - | No |
| onPress | (e: PressEvent) => void | - | No |
| onPressStart | (e: PressEvent) => void | - | No |
| onPressEnd | (e: PressEvent) => void | - | No |
| onPressChange | (isPressed: boolean) => void | - | No |
| onPressUp | (e: PressEvent) => void | - | No |
| className | string | - | No |
| style | CSSProperties | - | No |
A cell definition that describes how a cell should be rendered.
| Prop | Type | Default | Responsive |
|---|---|---|---|
| id | Key | - | No |
| textValue | string | - | No |
| leadingIcon | ReactNode | - | No |
| className | string | - | No |
| style | CSSProperties | - | No |
A pagination component designed to work with the Table component.
| Prop | Type | Default | Responsive |
|---|---|---|---|
| offset | number | - | No |
| pageSize | number | - | No |
| setOffset | (offset: number) => void | - | No |
| setPageSize | (pageSize: number) => void | - | No |
| rowCount | number | - | No |
| onNextPage | () => void | - | No |
| onPreviousPage | () => void | - | No |
| onPageSizeChange | (pageSize: number) => void | - | No |
| showPageSizeOptions | boolean | - | No |
| className | string | - | No |
| style | CSSProperties | - | No |
Coming soon.
Coming soon.
Coming soon.
Coming soon.
Coming soon.
Coming soon.
Coming soon.
This feature is not available yet — let us know if you'd like us to explore it!
This feature is not available yet — let us know if you'd like us to explore it!
This feature is not available yet — let us know if you'd like us to explore it!
This feature is not available yet — let us know if you'd like us to explore it!
Our theming system is based on a mix between CSS classes, CSS variables and data attributes. If you want to customise this component, you can use one of these class names below.
bui-Tablebui-TableHeaderbui-TableBodybui-TableRowbui-TableHeadbui-TableHeadContentbui-TableHeadSortButtonbui-TableCaptionbui-TableCellbui-TableCellContentWrapperbui-TableCellContentbui-TableCellIconbui-TableCellProfileAvatarbui-TableCellProfileAvatarImagebui-TableCellProfileAvatarFallbackbui-TableCellProfileNamebui-TableCellProfileLink