import "./register.css"; import { type ReactNode } from "react"; import { type SortHeaderLabels, type SortState } from "./sort_header"; import { type PartAttrs } from "./style_props"; /** * The band of labels stays; the caller's header part on the same element states its layout. Columnar, the * band is an ARIA table of one row of column headers, the one role `aria-sort` is allowed on; the rows under * it stay role-less, since a row is a press surface holding its own controls. A pile has no columns. `row`: * the register is itself the grid, so the band is its first row and brings no table. */ export declare function RegisterHead({ attrs, columnar, children }: { attrs: PartAttrs; columnar: boolean | "row"; children: ReactNode; }): import("react").JSX.Element; /** A heading box's role, and the order it holds where the rows are sorted by its column — on that one * column alone (WAI-ARIA 1.2 `aria-sort`). */ export declare function headingAria(sortKey: string, sort: SortState | null | undefined): { role: "columnheader"; "aria-sort"?: "ascending" | "descending"; }; export interface RegisterHeadingProps { /** Sentence case. Omit for a control column. */ label?: string; /** A ruler of positions rendered instead of `label`, which still names the column for sorting. */ header?: ReactNode; sortKey: string; sortable?: boolean; sort?: SortState | null; onSort?: (key: string) => void; align?: "left" | "right"; labels?: SortHeaderLabels; } /** Chrome, not a heading: body rung, a weight below its values, a step back in ink. */ export declare function RegisterHeading(props: RegisterHeadingProps): string | number | bigint | boolean | import("react").JSX.Element | Iterable | Promise | import("react").ReactElement> | import("react").ReactPortal | null | undefined> | null;