import { type ComponentPropsWithoutRef, type ReactNode } from 'react'; import * as TabsPrimitive from '@radix-ui/react-tabs'; import { type VariantProps } from 'class-variance-authority'; export declare const tabsListVariants: (props?: ({ variant?: "default" | "underlined" | "pills" | null | undefined; orientation?: "vertical" | "horizontal" | null | undefined; } & import("class-variance-authority/types").ClassProp) | undefined) => string; export declare const tabsTriggerVariants: (props?: ({ variant?: "default" | "underlined" | "pills" | null | undefined; size?: "sm" | "md" | "lg" | null | undefined; orientation?: "vertical" | "horizontal" | null | undefined; } & import("class-variance-authority/types").ClassProp) | undefined) => string; type TabsOverflow = 'dropdown' | 'select'; export interface TabsHandle { getActiveTab: () => string | null; selectTab: (value: string) => void; } export interface TabsRootProps extends Omit, 'orientation'> { variant?: 'default' | 'underlined' | 'pills'; size?: 'sm' | 'md' | 'lg'; orientation?: 'horizontal' | 'vertical'; /** * Strategy for tabs that don't fit horizontally. * * - `'dropdown'` (default) — overflowing tabs collapse into a "More" * `DropdownMenu` rendered next to the visible tab list. Most tabs * stay visible inline; the few that don't fit hide behind the menu. * Best when there are 5–7 tabs at moderately narrow viewports. * - `'select'` — at narrow container widths (under the `@md` breakpoint) * the entire tab strip collapses into a single `Select` whose value * is the active tab. Best when there are many tabs and the panel is * genuinely cramped (mobile, side-panel host). Above `@md`, the * inline tab list reappears unchanged. * * Limitation: the Select mirror builds option labels from each * `Tabs.Trigger`'s `children`. Plain string / number children are * used verbatim; richer children (icon + text, fragments) fall back * to the trigger's `value` so the option remains selectable. Prefer * plain-text trigger children when using `overflow="select"`, or use * the trigger's `icon` prop for the icon and keep `children` a * plain string. * * @default 'dropdown' */ overflow?: TabsOverflow; } export interface TabsListProps extends ComponentPropsWithoutRef { 'aria-label'?: string; } export interface TabsTriggerProps extends ComponentPropsWithoutRef, VariantProps { icon?: ReactNode; badge?: ReactNode; dismissible?: boolean; onDismiss?: () => void; } export type TabsContentProps = ComponentPropsWithoutRef; declare const TabsList: import("react").ForwardRefExoticComponent>; declare const TabsTrigger: import("react").ForwardRefExoticComponent>; declare const TabsContent: import("react").ForwardRefExoticComponent, "ref"> & import("react").RefAttributes>; export declare const Tabs: import("react").ForwardRefExoticComponent> & { Root: import("react").ForwardRefExoticComponent>; List: import("react").ForwardRefExoticComponent>; Trigger: import("react").ForwardRefExoticComponent>; Content: import("react").ForwardRefExoticComponent, "ref"> & import("react").RefAttributes>; }; export { TabsList, TabsTrigger, TabsContent }; //# sourceMappingURL=tabs.d.ts.map