Data Table

Actions
A
Amara Okafor[email protected]
ScaleActive$4,820Jan 4, 2026
D
Diego Santos[email protected]
StarterTrial$0Feb 18, 2026
GrowthActive$2,140Nov 22, 2025
T
StarterChurned$380Aug 9, 2025
L
ScaleActive$6,390Mar 2, 2026
M
StarterTrial$0Feb 27, 2026

8 row(s)

Page 1 of 2
About this component

Data Table

Client-side data-table engine: column-driven config with custom cell renderers, sortable headers, keyword search, row selection, per-row action menus, and pagination. Owns all state; blocks pass columns + rows as data.

Usage

The import and the props worth knowing about, in one place.

import { DataTable, type DataTableColumn } from "@/components/beste/component/data-table";
import { Eye, Trash2 } from "lucide-react";

type Row = { id: string; name: string; spend: number };

const columns: DataTableColumn<Row>[] = [
  { id: "name", header: "Name", sortable: true, value: (r) => r.name },
  { id: "spend", header: "Spend", sortable: true, align: "right", value: (r) => r.spend },
];

<DataTable
  columns={columns}
  data={rows}
  searchable
  selectable
  pageSize={8}
  rowActions={[
    { id: "view", label: "View", icon: Eye },
    { id: "delete", label: "Delete", icon: Trash2, destructive: true },
  ]}
  onRowAction={(action, row) => console.log(action, row.id)}
/>

Props

Read from the component's own type, so this cannot drift from what it accepts.

PropTypeDefaultDescription
columns*DataTableColumn<Row>[]—
data*Row[]—
searchableboolean—
searchPlaceholderstring—
selectableboolean—
rowActionsDataTableAction[]—
onRowAction(actionId: string, row: Row) => void—
onSelectionChange(ids: Array<string | number>) => void—
pageSizenumber—
toolbarReactNode—Extra content rendered on the right of the toolbar (buttons, filters)
emptyMessagestring—
borderedboolean—Wrap the table in a bordered card surface (default true)
classNamestring—

More Dashboard components

View all Dashboard

January 2026

Sun
Mon
Tue
Wed
Thu
Fri
Sat
8 AM10 AM12 PM2 PM4 PM6 PM

Atrium Loft

Floor 3 · 12 seats

Studio B

Floor 2 · 8 seats

Garden Room

Ground · 20 seats

Rooftop Deck

Level 5 · 40 seats