Ballmac UI home

Table

A semantic table in a focusable, named scroll region, with sticky header, striping, three densities, aria-sort headers and numeric columns.

Invoices from the last 30 days
InvoiceCustomerStatusAmount
INV-1042Northwind StudioPaid$1,250.00
INV-1043Bluebird LabsPending$480.00
INV-1044Harbor & CoPaid$2,310.00
INV-1045Kilo SystemsOverdue$890.00
Total$4,930.00

Installation

$ pnpm dlx shadcn@latest add @ballmac/table

Usage

import { Table, TableHeader, TableBody, TableFooter, TableRow, TableHead, TableCell, TableCaption } from "@/components/ballmac/table"

The full example is in the Code tab above.

Examples

Sortable and sticky

NameTeam
Kofi MensahPlatform342
Sam OkaforPlatform215
Ivy ChenDesign154
Ana LimaDesign128
Mei TanakaGrowth87
Leo DuarteGrowth63

API reference

<Table>

PropTypeDefault
label

Accessible name of the scroll region that wraps the table. Recommended whenever the table can scroll.

string—
stickyHeader

Keep the header row visible while the body scrolls (give the table a max height with `containerClassName`).

booleanfalse
striped

Shade every second body row.

booleanfalse
density

Row height.

"compact" | "default" | "comfortable""default"
containerClassName

Classes for the scroll container, for example `max-h-80`.

string—

<TableRow>

PropTypeDefault
selected

Mark the row as selected (also sets `aria-selected`).

boolean—

<TableHead>

PropTypeDefault
sort

Sort state of this column. Sets `aria-sort` and shows a direction icon; wrap the label in a button to make it interactive.

"ascending" | "descending" | "none"—
numeric

Right-align and use tabular numbers.

boolean—
sortIcon

Draw the direction icon when `sort` is set. Turn off when your own header button already shows one.

booleantrue

<TableCell>

PropTypeDefault
numeric

Right-align and use tabular numbers.

boolean—

Also accepts the standard attributes of its root element.

Accessibility

KeyAction
TabFocuses the scroll region, then any controls inside it
Arrow keysScroll the focused region

Use with AI

Static table parts. The wrapper scrolls on narrow screens and is keyboard focusable; pass label to name it and sort on TableHead for aria-sort. With the shadcn MCP server set up (guide), ask your agent:

Add the Ballmac UI Table (@ballmac/table) to this project with the shadcn MCP, then use it where it fits.

Use it for

  • Invoices, logs and lists of records
  • Read-only or lightly interactive data

Not for

  • Sorting, filtering and pagination logic; build on data-table
  • Key-value pairs; use description-list

Registry JSON: https://ui.ballmac.com/r/table.json

Credits

Based on shadcn/ui Table, adapted by Ballmac. Free to use in personal and commercial projects.

Registry
shadcn/utils