import { TableProps as MuiTableProps } from '@mui/material'; import { TableLabels } from './labels'; import { TableColumn, TableRow, TableSortState } from './types'; export interface TableUIProps { columns: readonly TableColumn[]; /** Already-paginated, already-sorted rows for the current view. */ rows: readonly T[]; /** Total row count (across all pages). Required for pagination footer. */ total: number; page: number; pageSize: number; pageSizeOptions?: readonly number[]; sort?: TableSortState; /** * Column name to use as the row identity. Drives selection lookup, * React keys, and aria labels. Defaults to `'id'` — point it at * another column when your rows don't carry an `id` field. */ keyColumn?: string; /** Selected row ids. Destination-owned. */ selection?: readonly (string | number)[]; selectable?: boolean; onSortChange?: (next: TableSortState) => void; onPageChange?: (page: number) => void; onPageSizeChange?: (pageSize: number) => void; onSelectionChange?: (next: readonly (string | number)[]) => void; onRowClick?: (row: T) => void; onRowHover?: (row: T | null) => void; labels?: Partial; /** Row rendered when `rows` is empty for the current page. */ emptyContent?: React.ReactNode; /** * Forwarded to MUI's `` — `'small'` for compact rows, * `'medium'` for the default density. Leave `undefined` (the default) * to let MUI's own default kick in. */ size?: MuiTableProps['size']; } /** * Pure renderer for a paginated, sortable, optionally-selectable table. * Has no widget-store coupling — `
` (the bridge) reads from the store * and feeds this UI with already-projected data. */ export declare function TableUI({ columns, rows, total, page, pageSize, pageSizeOptions, sort, keyColumn, selection, selectable, onSortChange, onPageChange, onPageSizeChange, onSelectionChange, onRowClick, onRowHover, labels, emptyContent, size, }: TableUIProps): import("react/jsx-runtime").JSX.Element;