InkUI
Components

DataTable

Interactive table with sorting, filtering, and pagination.

A fully interactive data table with row selection, column sorting, search filtering, and pagination.

Live Preview
DataTable · live values · sort / filter
┌──────────┬───────┬──────────┬─────────┐
│ Process │ CPU │ Memory │ State │
├──────────┼───────┼──────────┼─────────┤
│ nginx │ 1.8% │ 126 MB │ running│
│ node │ 10.1%│ 248 MB │ running│
│ redis │ 0.6% │ 62 MB │ idle │
└──────────┴───────┴──────────┴─────────┘
~/my-cli — node v22● running

Installation

npx @inkui-cli/inkui add data-table

Usage

import { DataTable } from './components/ui/data-table';
 
const columns = [
  { key: 'name', header: 'Name', sortable: true },
  { key: 'status', header: 'Status' },
  { key: 'region', header: 'Region' },
];
 
const data = [
  { name: 'api-prod', status: 'online', region: 'us-east' },
  { name: 'worker-1', status: 'error', region: 'eu-west' },
];
 
export default function App() {
  return (
    <DataTable
      columns={columns}
      data={data}
      onSelect={(row) => console.log(row)}
    />
  );
}

Keyboard Shortcuts

KeyAction
↑ / ↓Navigate rows
← / →Switch pages
/Toggle search mode
sCycle sort on sortable column
EnterSelect row
EscExit search
g / GFirst / last row

API Reference

PropTypeDefaultDescription
columnsDataTableColumn[]—Column definitions (required)
dataT[]—Row data (required)
pageSizenumber10Rows per page
searchablebooleantrueEnable search
onSelect(row, index) => void—Called on row selection
selectablebooleantrueEnable row highlighting
showFooterbooleantrueShow pagination footer
emptyMessagestring'No data'Empty state message
focusbooleantrueAccept keyboard input
themeInkUIThemedarkThemeColor theme

On this page