Table

Organism

Responsive table. scope="col" headers, hover row highlight, empty-state message, and custom cell render support.

With data

Preview
Users table
NameEmailRoleStatus
Jane Doejane@example.comAdminActive
John Smithjohn@example.comMemberInactive
Code
<Table
  columns={[
    { key: 'name', header: 'Name' },
    { key: 'email', header: 'Email' },
    { key: 'status', header: 'Status', render: (row) => <Badge variant={row.status === 'Active' ? 'success' : 'neutral'}>{row.status}</Badge> },
  ]}
  rows={[{ name: 'Jane Doe', email: 'jane@example.com', status: 'Active' }]}
/>

Empty state

Preview
Empty table
NameEmail
No users found. Invite your team to get started.
Code
<Table columns={[...]} rows={[]} emptyMessage="No users found." />

Sortable columns

Preview
Sortable users table
NameEmailRole
Zara Kimzara@example.comAdmin
Alice Brownalice@example.comMember
Bob Leebob@example.comViewer
Code
<Table
  columns={[
    { key: 'name', header: 'Name', sortable: true },
    { key: 'role', header: 'Role', sortable: true },
  ]}
  rows={rows}
/>
Sourcemodules/ui/Table/Table.tsx