DataTable

A powerful data table with sorting, filtering, pagination, and selection.

Install

npx @beaket/ui add data-table

Import

import { Data-table } from "@/components/ui/data-table"

Examples

Features

export const AllFeatures = () => (
  <div className="space-y-8">
    <div>
      <h3 className="mb-2 text-sm font-medium">Basic Table</h3>
      <DataTable columns={columns} data={users.slice(0, 3)} />
    </div>
    <div>
      <h3 className="mb-2 text-sm font-medium">With Search</h3>
      <DataTable
        columns={columns}
        data={users.slice(0, 3)}
        searchable
        searchPlaceholder="Search..."
      />
    </div>
    <div>
      <h3 className="mb-2 text-sm font-medium">With Selection</h3>
      <DataTable columns={columns} data={users.slice(0, 3)} selectable />
    </div>
    <div>
      <h3 className="mb-2 text-sm font-medium">Compact Mode</h3>
      <DataTable columns={columns} data={users.slice(0, 3)} compact />
    </div>
  </div>
);

Props

NameTypeDefaultDescription
columns*ColumnDef<TData, TValue>[]Column definitions using TanStack Table's ColumnDef — see https://tanstack.com/table/latest/docs/guide/column-defs
data*TData[]Array of data to display
searchableboolean | undefinedfalseEnable global search/filter functionality
searchPlaceholderstring | undefinedSearch...Search placeholder text
paginatedboolean | undefinedfalseEnable pagination
pageSizenumber | undefined10Number of rows per page
emptyMessagestring | undefinedNo data availableEmpty state message
emptyStateReactNodeCustom empty state component
onRowClick((row: TData) => void) | undefinedRow click handler
enableSortingboolean | undefinedtrueEnable column sorting (default: true)
enableFilteringboolean | undefinedtrueEnable column filtering (default: true)
initialColumnVisibilityVisibilityState | undefinedInitial column visibility state
compactboolean | undefinedfalseShow compact table styling
selectableboolean | undefinedfalseEnable row selection with checkboxes
onSelectionChange((selectedRows: TData[]) => void) | undefinedCallback when row selection changes
initialRowSelectionRowSelectionState | undefinedInitial row selection state
getRowClassName((row: TData) => string) | undefinedFunction to generate custom class names for each row based on row data
onRowMouseEnter((row: TData) => void) | undefinedCallback when mouse enters a row
onRowMouseLeave((row: TData) => void) | undefinedCallback when mouse leaves a row