DataTable

DataTable

A full-featured sortable, filterable, paginated table built on TanStack Table. Used by the API keys, audit log, feature requests, and admin users pages.

Components

All DataTable sub-components live in src/components/data-table/:

FilePurpose
table.tsxCore <DataTable> component
column-header.tsx<DataTableColumnHeader> , sortable column header
toolbar.tsx<DataTableToolbar> , search input + filters
pagination.tsx<DataTablePagination> , page controls
faceted-filter.tsx<DataTableFacetedFilter> , multi-select filter
view-options.tsx<DataTableViewOptions> , column visibility toggle

Usage

Define columns with TanStack Table's ColumnDef, then pass data and columns to <DataTable>:

import { DataTable } from '@/components/data-table/table';
import { DataTableToolbar } from '@/components/data-table/toolbar';
import { DataTablePagination } from '@/components/data-table/pagination';
import type { ColumnDef } from '@tanstack/react-table';

type Item = { id: string; name: string; status: string };

const columns: ColumnDef<Item>[] = [
  {
    accessorKey: 'name',
    header: ({ column }) => <DataTableColumnHeader column={column} title="Name" />,
  },
  {
    accessorKey: 'status',
    header: 'Status',
  },
];

function MyTable({ data }: { data: Item[] }) {
  return (
    <DataTable
      columns={columns}
      data={data}
      toolbar={table => <DataTableToolbar table={table} />}
      pagination={table => <DataTablePagination table={table} />}
    />
  );
}

Reference implementations: src/features/api-keys/components/api-keys-table.tsx, src/features/audit-log/components/audit-log-table.tsx.