Skip to Content

Table Columns

Declarative column components from @/components/ui. Generated resource list pages use TableSelectColumn, TableTextColumn, and TableActionsColumn.

Shared Column Props

PropTypeDescription
accessorstringRow key
headerstringColumn header
sortablebooleanClick-to-sort
searchablebooleanInclude in global search / column filter
filterablebooleanColumn filter
hideablebooleanShow in the columns menu

TableTextColumn

<TableTextColumn accessor="name" header="Name" sortable searchable /> <TableTextColumn accessor="email" header="Email" searchable /> <TableTextColumn accessor="price" header="Price" numeric format={(n) => `$${n.toFixed(2)}`} />
Extra propDescription
transform(value) => string
numericTreat as number
format(value: number) => string
filterOptions{ label, value }[]

TableImageColumn

<TableImageColumn accessor="avatarUrl" header="Avatar" alt={(row) => row.name} />

TableSelectColumn

Checkbox column for row selection. Pair with onSelectionChange on Table.

<Table data={rows} onSelectionChange={(selected) => console.log(selected)}> <TableSelectColumn /> <TableTextColumn accessor="name" header="Name" /> </Table>

TableActionsColumn / TableAction

<TableActionsColumn> <TableAction icon={Eye} label="View" onClick={(row) => router.push(`view/${row.id}`)} /> <TableAction icon={Edit} label="Edit" onClick={(row) => handleEdit(row)} /> <TableAction separator label="" onClick={() => {}} /> <TableAction icon={Trash} label="Delete" variant="destructive" onClick={(row) => handleDelete(row)} /> </TableActionsColumn>
PropDescription
iconLucide icon
labelMenu label
onClick(row) => void
variantdefault | destructive
separatorRender a divider

Resource 2.0 list pages add View, Edit, and Delete.

Next Steps

Last updated on