import { DataTableOptions } from './data-table-types'; /** * A full-featured data table component built by composing headless {@link DataSource} * state management with composable UI primitives and the existing {@link Table} * and {@link Pagination} components. * * Supports column-level sorting, filtering, row selection, pagination, bulk actions, * and server-side mode. Each feature is opt-in and configurable per column. * * When `stickyHeader` is enabled, the DataTable renders inside a flex column * container where the toolbar and pagination are pinned (top and bottom * respectively) and only the table body scrolls. The container fills its * parent's height — the parent must provide a height constraint (explicit * height, flex layout, grid layout, etc.). * * @typeParam T - The type of data rows * @param options - Full configuration for the data table * @returns A composed data table element * * @example * ```ts * DataTable({ * data: prop(users), * columns: [ * { id: 'name', header: 'Name', cell: row => Value.map(row, r => r.name), * sortable: true, filter: true }, * { id: 'email', header: 'Email', cell: row => Value.map(row, r => r.email), * sortable: true }, * { id: 'role', header: 'Role', cell: row => Value.map(row, r => r.role), * filter: { type: 'select', options: [ * { value: 'admin', label: 'Admin' }, { value: 'user', label: 'User' } * ] } }, * ], * rowId: u => u.id, * sortable: 'multi', * filterable: 'header', * selectable: { position: 'before', selectOnRowClick: true }, * pagination: { pageSize: 20 }, * toolbar: { bulkActions: [{ label: 'Delete', onClick: sel => deleteUsers(sel) }] }, * stickyHeader: true, * fullWidth: true, * }) * ``` */ export declare function DataTable(options: DataTableOptions): import("@tempots/dom").Renderable;