.codex/skills/rezi-data-table/SKILL.md
Add a data table with sorting, selection, and keyboard navigation. Use when displaying tabular data.
npx skillsauth add rtlzeromemory/rezi rezi-data-tableInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
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.
testing
Write tests for Rezi widgets, screens, or app logic using createTestRenderer and node:test.
development
Add routing with guards and nested outlets to a Rezi app. Use when building multi-page/screen TUI applications.
tools
Profile and optimize Rezi app performance. Use when app feels slow, frames drop, or render phases take too long.
tools
Add modal dialogs and overlay UI with focus trapping. Use when implementing confirmations, alerts, or layered interfaces.