All components
Available nowReact

Data table

Dense records with sorting, selection, and deliberate responsive states.

shadcnRegistry install command
npx shadcn add http://localhost:3000/r/menace-data-table.json

Preview

Live component behavior

Interactive
Preview size
desktop
Component performance5 total
Component performance
7 dayStatus
Command workspaceApplication3,194+18.4%Live
Animated inputEssentials2,842+14.2%Live
Decision dialogEssentials2,108+11.8%Live
Data tableData display1,846+9.6%Beta
Toast stackInteraction1,106+8.7%Live
Showing 5 of 5Double-click a row to open

Select rows to reveal bulk actions

Use it in context.

Copy the component into your project, then adapt the source to the interface around it.

TSXUsage example
import { MenaceDataTable } from "@/components/menace/data-table";

<MenaceDataTable
  caption="Component performance"
  columns={columns}
  defaultSort={{ key: "installs", direction: "desc" }}
  rows={rows}
  searchKeys={["name", "collection"]}
/>

API and behavior

rows / columnsrequired
Typed records and their visible column definitions.
searchKeysall columns
Record fields included in the live text filter.
selectabletrue
Adds accessible row and select-all checkboxes.
onSelectionChangeundefined
Receives the complete selected record collection.
  • Filtering, stable sorting, row selection, select-all, and bulk-selection feedback work together without external state.
  • Generic row and column types keep render functions and sort keys aligned with the supplied records.
  • Semantic table markup stays intact inside deliberate horizontal overflow on narrow screens.