Tables
Display data in rows and columns using markdown or components
Tables organize data into rows and columns. Jamdesk supports two approaches: markdown tables for quick, simple tables and Table components for enhanced features like highlighting and alignment.
Markdown Tables
The quickest way to create a table. Use pipes (|) to separate columns and hyphens (-) for the header row:
| Name | Type | Description |
|------|------|-------------|
| id | string | Unique identifier |
| email | string | User email address |
| Name | Type | Description |
|---|---|---|
| id | string | Unique identifier |
| string | User email address |
Markdown tables are great for simple reference data. The Table component offers more control when you need highlighting, alignment, or visual emphasis.
Table Component
For more control, use the <Table>, <Row>, and <Cell> components:
<Table>
<Row header>
<Cell>Name</Cell>
<Cell>Type</Cell>
<Cell>Description</Cell>
</Row>
<Row>
<Cell>id</Cell>
<Cell>string</Cell>
<Cell>Unique identifier</Cell>
</Row>
<Row>
<Cell>email</Cell>
<Cell>string</Cell>
<Cell>User email address</Cell>
</Row>
</Table>
| Name | Type | Description |
|---|---|---|
| id | string | Unique identifier |
| string | User email address |
Striped Rows
Add alternating row backgrounds for better readability:
<Table striped>
<Row header>
<Cell>Parameter</Cell>
<Cell>Value</Cell>
</Row>
<Row><Cell>timeout</Cell><Cell>30s</Cell></Row>
<Row><Cell>retries</Cell><Cell>3</Cell></Row>
<Row><Cell>backoff</Cell><Cell>exponential</Cell></Row>
<Row><Cell>maxDelay</Cell><Cell>60s</Cell></Row>
</Table>
| Parameter | Value |
|---|---|
| timeout | 30s |
| retries | 3 |
| backoff | exponential |
| maxDelay | 60s |
Bordered & Compact
Add borders between cells and reduce padding:
<Table bordered compact>
<Row header>
<Cell>A</Cell>
<Cell>B</Cell>
<Cell>C</Cell>
</Row>
<Row>
<Cell>1</Cell>
<Cell>2</Cell>
<Cell>3</Cell>
</Row>
</Table>
| A | B | C |
|---|---|---|
| 1 | 2 | 3 |
Row Highlighting
Highlight entire rows to draw attention:
<Table>
<Row header>
<Cell>Field</Cell>
<Cell>Required</Cell>
<Cell>Description</Cell>
</Row>
<Row highlight highlightColor="warning">
<Cell>api_key</Cell>
<Cell>Yes</Cell>
<Cell>Your API authentication key</Cell>
</Row>
<Row>
<Cell>limit</Cell>
<Cell>No</Cell>
<Cell>Maximum results (default: 100)</Cell>
</Row>
</Table>
| Field | Required | Description |
|---|---|---|
| api_key | Yes | Your API authentication key |
| limit | No | Maximum results (default: 100) |
Available highlight colors: primary, success, warning, error, info
Cell Highlighting
Highlight individual cells for status indicators:
<Table>
<Row header>
<Cell>Service</Cell>
<Cell>Status</Cell>
</Row>
<Row>
<Cell>API</Cell>
<Cell highlight highlightColor="success">Operational</Cell>
</Row>
<Row>
<Cell>Database</Cell>
<Cell highlight highlightColor="warning">Degraded</Cell>
</Row>
<Row>
<Cell>Storage</Cell>
<Cell highlight highlightColor="error">Outage</Cell>
</Row>
</Table>
| Service | Status |
|---|---|
| API | Operational |
| Database | Degraded |
| Storage | Outage |
Cell Alignment
Control text alignment per cell:
<Table>
<Row header>
<Cell align="left">Left</Cell>
<Cell align="center">Center</Cell>
<Cell align="right">Right</Cell>
</Row>
<Row>
<Cell align="left">Text</Cell>
<Cell align="center">Text</Cell>
<Cell align="right">$99.99</Cell>
</Row>
</Table>
| Left | Center | Right |
|---|---|---|
| Text | Text | $99.99 |
Column & Row Spanning
Merge cells across columns or rows:
<Table bordered>
<Row header>
<Cell>Category</Cell>
<Cell>Item</Cell>
<Cell>Price</Cell>
</Row>
<Row>
<Cell rowSpan={2}>Fruits</Cell>
<Cell>Apple</Cell>
<Cell>$1.00</Cell>
</Row>
<Row>
<Cell>Banana</Cell>
<Cell>$0.50</Cell>
</Row>
<Row>
<Cell colSpan={2}>Subtotal</Cell>
<Cell>$1.50</Cell>
</Row>
</Table>
| Category | Item | Price |
|---|---|---|
| Fruits | Apple | $1.00 |
| Banana | $0.50 | |
| Subtotal | $1.50 | |
Visible Caption
Show an accessible table caption above the table:
<Table caption="Monthly Revenue by Region" captionVisible>
<Row header>
<Cell>Region</Cell>
<Cell align="right">Revenue</Cell>
</Row>
<Row>
<Cell>North America</Cell>
<Cell align="right">$1.2M</Cell>
</Row>
</Table>
| Region | Revenue |
|---|---|
| North America | $1.2M |
Sortable Columns
Enable interactive column sorting with the sortable prop. Users can click column headers to sort:
<Table sortable>
<Row header>
<Cell>Name</Cell>
<Cell>Price</Cell>
<Cell>Stock</Cell>
</Row>
<Row><Cell>Widget A</Cell><Cell>$29.99</Cell><Cell>150</Cell></Row>
<Row><Cell>Gadget B</Cell><Cell>$49.99</Cell><Cell>75</Cell></Row>
<Row><Cell>Tool C</Cell><Cell>$19.99</Cell><Cell>200</Cell></Row>
<Row><Cell>Device D</Cell><Cell>$99.99</Cell><Cell>25</Cell></Row>
</Table>
| Name | Price | Stock |
|---|---|---|
| Widget A | $29.99 | 150 |
| Gadget B | $49.99 | 75 |
| Tool C | $19.99 | 200 |
| Device D | $99.99 | 25 |
Click a column header once to sort ascending, again for descending, and a third time to reset. Numbers are sorted numerically, text alphabetically.
Sortable works with other features like striped rows:
<Table sortable striped>
<Row header>
<Cell>Team</Cell>
<Cell>Wins</Cell>
<Cell>Losses</Cell>
</Row>
<Row><Cell>Eagles</Cell><Cell>12</Cell><Cell>4</Cell></Row>
<Row><Cell>Bears</Cell><Cell>8</Cell><Cell>8</Cell></Row>
<Row><Cell>Lions</Cell><Cell>10</Cell><Cell>6</Cell></Row>
</Table>
| Team | Wins | Losses |
|---|---|---|
| Eagles | 12 | 4 |
| Bears | 8 | 8 |
| Lions | 10 | 6 |
Props Reference
Table
| Prop | Type | Default | Description |
|---|---|---|---|
striped | boolean | false | Alternating row backgrounds |
bordered | boolean | false | Borders between all cells |
compact | boolean | false | Reduced cell padding |
fullWidth | boolean | true | Table spans full width |
caption | string | - | Table caption text |
captionVisible | boolean | false | Show caption visually (default: screen reader only) |
stickyHeader | boolean | false | Keep header visible when scrolling |
sortable | boolean | false | Enable click-to-sort on column headers |
Row
| Prop | Type | Default | Description |
|---|---|---|---|
header | boolean | false | Render as header row |
highlight | boolean | false | Highlight the row |
highlightColor | string | primary | Color: primary, success, warning, error, info |
Cell
| Prop | Type | Default | Description |
|---|---|---|---|
align | string | left | Text alignment: left, center, right |
colSpan | number | - | Columns to span |
rowSpan | number | - | Rows to span |
highlight | boolean | false | Highlight the cell |
highlightColor | string | primary | Color: primary, success, warning, error, info |
header | boolean | false | Force header styling |