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 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) => voidCalled on row selection
selectablebooleantrueEnable row highlighting
showFooterbooleantrueShow pagination footer
emptyMessagestring'No data'Empty state message
focusbooleantrueAccept keyboard input
themeInkUIThemedarkThemeColor theme

On this page