Add a data table with sorting, selection, and keyboard navigation. Use when displaying tabular data.
Use this skill when:
packages/core/src/widgets/useTable.ts — useTable() hookpackages/core/src/widgets/types.ts — TablePropspackages/core/src/widgets/ui.ts — ui.table()packages/core/src/ui/recipes.ts — recipe.table() for design-system-consistent table stylingUse the useTable() hook inside a defineWidget:
import { defineWidget, ui, useTable } from "@rezi-ui/core";
const DataTable = defineWidget<{ items: Item[] }>((props, ctx) => {
const table = useTable(ctx, {
rows: props.items,
columns: [
{ key: "name", header: "Name", flex: 1 },
{ key: "size", header: "Size", width: 10, align: "right" },
],
getRowKey: (row) => row.id,
selectable: "multi",
});
return ui.table({
...table.props,
dsSize: "md",
dsTone: "default",
});
}, { name: "DataTable" });
Handle selection via table.selection (array of selected row keys)
Handle sorting via table.sortColumn and table.sortDirection
For large datasets, consider ui.virtualList() instead
Tables are recipe-styled by default when a ThemeDefinition preset is active.
Use dsSize / dsTone for explicit DS tuning when needed.