Skip to content
Docs/DataTable

DataTable

Powerful table component with sorting, filtering, pagination, and search.

Usage

tsx
1import { DataTable } from '@storm-ds/ui'
2
3const columns = [
4 { key: 'name', label: 'Name', sortable: true },
5 { key: 'email', label: 'Email', searchable: true }
6]
7
8const data = [
9 { name: 'John', email: 'john@example.com' },
10 { name: 'Jane', email: 'jane@example.com' }
11]
12
13<DataTable columns={columns} data={data} />

Basic Table

NameEmailRole
Alice Johnsonalice@example.comAdmin
Bob Smithbob@example.comEditor
Carol Whitecarol@example.comViewer
David Browndavid@example.comEditor
Eve Daviseve@example.comAdmin

With Sorting

NameEmailStatusRole
Alice Johnsonalice@example.comActiveAdmin
Bob Smithbob@example.comPendingEditor
Carol Whitecarol@example.comActiveViewer
David Browndavid@example.comInactiveEditor
Eve Daviseve@example.comActiveAdmin
tsx
1<DataTable
2 columns={[
3 { key: 'name', label: 'Name', sortable: true },
4 { key: 'role', label: 'Role', sortable: true }
5 ]}
6 data={data}
7/>

Searchable

NameEmailStatusRole
Alice Johnsonalice@example.comActiveAdmin
Bob Smithbob@example.comPendingEditor
Carol Whitecarol@example.comActiveViewer
David Browndavid@example.comInactiveEditor
Eve Daviseve@example.comActiveAdmin
tsx
1<DataTable columns={columns} data={data} searchable searchableFields={['name', 'email']} />

With Pagination

NameEmailStatusRole
Alice Johnsonalice@example.comActiveAdmin
Bob Smithbob@example.comPendingEditor
Carol Whitecarol@example.comActiveViewer
David Browndavid@example.comInactiveEditor
Eve Daviseve@example.comActiveAdmin

12 results

1 / 3
tsx
1<DataTable columns={columns} data={data} pageSize={10} />

Props

PropTypeDefaultDescription
columnsColumn[]-Column definitions with key, label, sortable, searchable
dataRecord<string, any>[]-Array of row data objects
pageSizenumber-Rows per page (enables pagination)
searchablebooleanfalseEnable search bar
searchableFieldsstring[]-Fields to search across
onRowClick(row: Record<string, any>) => void-Row click handler
classNamestring-Custom classes

Use with AI

Create a Next.js component using Storm UI's DataTable for displaying and interacting with tabular data. Import: `import { DataTable } from '@storm-ds/ui'`. Mark with 'use client'. Props: columns (array with key/label/sortable/searchable), data (array of objects), pageSize (optional for pagination), searchable (boolean), searchableFields (array of column keys), onRowClick (handler), className. Features: sortable columns, search across specified fields, pagination, responsive. Columns array defines structure, each column can be marked sortable/searchable. Data array provides row data. PageSize enables pagination. Example: `<DataTable columns={[{key:'name',label:'Name',sortable:true}]} data={users} />`, `<DataTable columns={cols} data={data} searchable searchableFields={['name']} pageSize={10} onRowClick={handleClick} />`