import type { ReactNode, Ref } from "react"; export type TableSize = 32 | 40 | 48; /** Controlled sort state. `null` means no column is sorted. */ export interface TableSortState { key: string; direction: "asc" | "desc"; } export interface TableProps { /** Row height in px. @default 40 */ size?: TableSize; /** Pins the header while the body scrolls. */ stickyHeader?: boolean; /** Enables the sort affordance on header cells that declare a `sortKey`. */ sortable?: boolean; /** Controlled sort state; `null` when nothing is sorted. */ sort?: TableSortState | null; /** * Called with the **next** sort state, already toggled — store it as given * and do not toggle again. A fresh column arrives `"asc"`; an active `"asc"` * column emits `"desc"`; an active `"desc"` column emits `"asc"`. * * Optional in the type because `sortable` may be false; a discriminated union * expressing the real contract does not survive docgen's flat prop * extraction, which would strip these props from the manifest entirely (D62). */ onSortChange?: (sort: TableSortState) => void; /** Renders the row-selection checkbox column. */ selectable?: boolean; /** Controlled selection, keyed by each `TableRow`'s `rowId`. */ selected?: ReadonlySet; /** Called with the next selection. See `onSortChange` on why it is optional. */ onSelectionChange?: (selected: ReadonlySet) => void; /** TableHead and TableBody. */ children: ReactNode; className?: string; /** Forwarded ref to the underlying `` element. */ ref?: Ref; } /** Data table on native table semantics. Holds no state: sorting, selection * and pagination are the consumer's (D62, extending D50/D53). */ export declare function Table({ size, stickyHeader, sortable, sort, onSortChange, selectable, selected, onSelectionChange, children, className, ref, }: TableProps): import("react").JSX.Element; //# sourceMappingURL=Table.d.ts.map