← All Components

DataTable

Feature-rich data table with sorting, filtering, pagination, row selection, and column visibility. Built on @tanstack/react-table.

Full Featured

Includes row selection, sortable columns, email filtering, column visibility toggle, pagination, and row actions.

Status
Amount
success
ken99@yahoo.com
$316.00
success
Abe45@gmail.com
$242.00
processing
Monserrat44@gmail.com
$837.00
success
Silas22@gmail.com
$874.00
failed
carmella@hotmail.com
$721.00
pending
alex@example.com
$150.00
success
sarah@company.co
$999.00
processing
mike@startup.io
$432.00
0 of 8 row(s) selected.

Simple Table

Minimal configuration with just columns and data.

StatusEmail
Amount
success
ken99@yahoo.com
$316.00
success
Abe45@gmail.com
$242.00
processing
Monserrat44@gmail.com
$837.00
success
Silas22@gmail.com
$874.00
failed
carmella@hotmail.com
$721.00
pending
alex@example.com
$150.00
success
sarah@company.co
$999.00
processing
mike@startup.io
$432.00

With Filter Only

StatusEmail
Amount
success
ken99@yahoo.com
$316.00
success
Abe45@gmail.com
$242.00
processing
Monserrat44@gmail.com
$837.00
success
Silas22@gmail.com
$874.00
failed
carmella@hotmail.com
$721.00
pending
alex@example.com
$150.00
success
sarah@company.co
$999.00
processing
mike@startup.io
$432.00

No Pagination

StatusEmail
Amount
success
ken99@yahoo.com
$316.00
success
Abe45@gmail.com
$242.00
processing
Monserrat44@gmail.com
$837.00
success
Silas22@gmail.com
$874.00

Props

PropTypeDescription
columnsColumnDef<TData, TValue>[]@tanstack/react-table column definitions
dataTData[]Array of data rows
filterColumnstringColumn ID to filter on (shows filter input when set)
filterPlaceholderstringPlaceholder for filter input
showColumnTogglebooleanShow column visibility toggle dropdown
showPaginationbooleanShow pagination controls
showSelectedCountbooleanShow selected row count
classNamestringAdditional classes

Usage

import { DataTable, type ColumnDef } from "@/components/ui/DataTable"; type User = { id: string; name: string; email: string }; const columns: ColumnDef<User>[] = [ { accessorKey: "name", header: "Name" }, { accessorKey: "email", header: "Email" }, ]; <DataTable columns={columns} data={users} filterColumn="email" filterPlaceholder="Filter emails..." />