import * as React from 'react'; /** * A data table inside a horizontally scrolling container. * * The container scrolls whenever the table is wider than the space it has — * TableHead and TableCell are `whitespace-nowrap`, so a wide table cannot * shrink to fit. A region that scrolls but cannot take focus is unreachable * from the keyboard (WCAG 2.1.1; axe reports `scrollable-region-focusable`), * so **while the table overflows** the container becomes a named, focusable * region: `tabIndex={0}` so the arrow keys scroll it, `role="region"` so the * stop is announced, and an accessible name taken from the table's own * `aria-labelledby` / `aria-label`, else the TableCaption (linked by id), else * "Scrollable table". The `aria-label` / `aria-labelledby` stay on the * `` too — the region borrows the name, it does not take it. * * **While the table fits, the container is a plain `
`** — no tab stop, * no landmark — so a page of fitting tables gains nothing to tab past. Both * states follow the layout live: a ResizeObserver watches the container (the * column changing width) and the table (its content changing width, which a * `w-full` container does not itself report). The measurement happens on the * client, so a server render has no tab stop until hydration; that is the * cost of not giving every table one. */ declare function Table({ className, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledBy, ...props }: React.ComponentProps<'table'>): React.JSX.Element; declare function TableHeader({ className, ...props }: React.ComponentProps<'thead'>): React.JSX.Element; declare function TableBody({ className, ...props }: React.ComponentProps<'tbody'>): React.JSX.Element; declare function TableFooter({ className, ...props }: React.ComponentProps<'tfoot'>): React.JSX.Element; declare function TableRow({ className, ...props }: React.ComponentProps<'tr'>): React.JSX.Element; declare function TableHead({ className, ...props }: React.ComponentProps<'th'>): React.JSX.Element; declare function TableCell({ className, ...props }: React.ComponentProps<'td'>): React.JSX.Element; /** * The table's caption. Besides naming the table for everyone, it names the * scroll region when no explicit ARIA name is supplied: the caption takes an * id (the one given, else a generated one) and reports it to the Table, which * points `aria-labelledby` at it. */ declare function TableCaption({ className, id: idProp, ...props }: React.ComponentProps<'caption'>): React.JSX.Element; export { Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow };