Skip to Content
ComponentsDataTable

Table

Presentational table. Columns are typed against your row type; render customizes a cell (default is row[key]). For sorting, selection and pagination use DataTable.

OrderCustomerTotalStatus
A-1001Ada Lovelace1290 Kčpaid
A-1002Alan Turing540 Kčpending
A-1003Grace Hopper2380 Kčpaid
import { Table, Badge } from '@gg-software/ui'; type Order = { id: string; customer: string; total: number; status: 'paid' | 'pending' }; <Table<Order> data={orders} rowKey={(row) => row.id} bordered columns={[ { key: 'id', header: 'Order' }, { key: 'customer', header: 'Customer' }, { key: 'total', header: 'Total', align: 'right', render: (row) => `${row.total} Kč` }, { key: 'status', header: 'Status', render: (row) => ( <Badge label={row.status} variant={row.status === 'paid' ? 'success' : 'warning'} /> ), }, ]} />;

Props

PropTypeDefaultDescription
columns*TableColumn<T>[]
data*T[]
rowKey((row: T, index: number) => string | number)
size"small" | "middle"middle
borderedbooleanfalse
stripedbooleanfalse
hoverablebooleantrue
emptyReactNodeNo data
onRowClick((row: T, index: number) => void)
classNamestring

* required · generated from packages/ui/src/data/Table/Table.tsx

Types

type TableColumn<T> = { key: string; header: ReactNode; render?: (row: T, index: number) => ReactNode; align?: 'left' | 'center' | 'right'; width?: number | string; };