import type { ReactNode, Ref } from "react"; export type TabsOrientation = "horizontal" | "vertical"; export interface TabsContextValue { value: string; onValueChange: (value: string) => void; orientation: TabsOrientation; /** Stable per-instance prefix, so two tab sets on one page never collide. */ idPrefix: string; } export declare const TabsContext: import("react").Context; /** Throws rather than returning a default: a `Tab` outside `Tabs` would * silently render an unwired, unselectable button, and the failure would * surface far from its cause. */ export declare function useTabsContext(component: string): TabsContextValue; export interface TabsProps { /** Controlled selected tab, matched against each `Tab`/`TabPanel` value. */ value: string; /** Fires with the newly selected value; the consumer flips `value`. */ onValueChange: (value: string) => void; /** Axis of the tab list, which also picks the arrow keys. @default "horizontal" */ orientation?: TabsOrientation; /** A `TabList` and one `TabPanel` per tab. */ children: ReactNode; className?: string; /** Forwarded ref to the wrapper `
`. */ ref?: Ref; } /** Tab set root (D67) — holds no selection state of its own, following D50, * D53 and D62: `value` and `onValueChange` are required and there is no * `defaultValue`. * * Values are strings rather than indices because an index breaks the moment a * tab is inserted, and real tab sets map to ids. `Tab` and `TabPanel` pair by * value, so their source order need not match. * * Activation is automatic: arrow keys move focus and selection together. That * is the APG default where panel content is already available, and manual * activation is deliberately not offered as a mode — a consumer for whom * activating a panel is expensive already controls what the panel renders. */ export declare function Tabs({ value, onValueChange, orientation, children, className, ref, }: TabsProps): import("react").JSX.Element; /** Ids are derived from the value so a tab and its panel find each other * without the consumer wiring anything, and stay unique across tab sets. */ export declare function tabId(prefix: string, value: string): string; export declare function panelId(prefix: string, value: string): string; //# sourceMappingURL=Tabs.d.ts.map