Import
import { Table } from '@contentful/f36-components';// orimport { Table } from '@contentful/f36-table';
Examples
Basic usage
Dynamic creation
One very common use case for a table is that you will have a set of data and you would like to show a table row for each item in that set.
To achieve that result, you can iterate over the data and create Table.Row and Table.Cell for each item:
Props (API reference)
Open in StorybookTable
| Name | Type | Default | 
|---|---|---|
| className | string CSS class to be appended to the root element | |
| css | string number false true ComponentSelector Keyframes SerializedStyles ArrayInterpolation<undefined> ObjectInterpolation<undefined> (theme: any) => Interpolation<undefined> | |
| layout | "inline" "embedded" | inline | 
| testId | string A [data-test-id] attribute used for testing purposes | cf-ui-table | 
Table.Head
| Name | Type | Default | 
|---|---|---|
| children required | ReactNode | |
| className | string CSS class to be appended to the root element | |
| css | string number false true ComponentSelector Keyframes SerializedStyles ArrayInterpolation<undefined> ObjectInterpolation<undefined> (theme: any) => Interpolation<undefined> | |
| isSticky | false true | false | 
| offsetTop | string number | |
| testId | string A [data-test-id] attribute used for testing purposes | cf-ui-table-head | 
Table.Body
| Name | Type | Default | 
|---|---|---|
| children required | ReactElement<any, string | JSXElementConstructor<any>> | ReactElement<any, string | JSXElementConstructor<any>>[] | |
| className | string CSS class to be appended to the root element | |
| css | string number false true ComponentSelector Keyframes SerializedStyles ArrayInterpolation<undefined> ObjectInterpolation<undefined> (theme: any) => Interpolation<undefined> | |
| testId | string A [data-test-id] attribute used for testing purposes | 
Table.Row
| Name | Type | Default | 
|---|---|---|
| children required | ReactNode | |
| className | string CSS class to be appended to the root element | |
| css | string number false true ComponentSelector Keyframes SerializedStyles ArrayInterpolation<undefined> ObjectInterpolation<undefined> (theme: any) => Interpolation<undefined> | |
| isSelected | false true | false | 
| testId | string A [data-test-id] attribute used for testing purposes | cf-ui-table-row | 
Table.Cell
| Name | Type | Default | 
|---|---|---|
| align | "left" "center" "right" | left | 
| children | ReactNode | |
| className | string CSS class to be appended to the root element | |
| css | string number false true ComponentSelector Keyframes SerializedStyles ArrayInterpolation<undefined> ObjectInterpolation<undefined> (theme: any) => Interpolation<undefined> | |
| sorting | false true "asc" "desc" | false as TableCellSorting | 
| testId | string A [data-test-id] attribute used for testing purposes | cf-ui-table-cell | 
| width | string number | 
Content guidelines
- Keep headers short
- Headers should be informative and descriptive
- Content in the table should be concise and scannable
Accessibility
- It will render tabular data using the native HTML element tablewhich is recommended.