import { Tabs as BaseTabs } from '@base-ui/react/tabs'; import { type VariantProps } from 'class-variance-authority'; import * as React from 'react'; export type TabsVariant = 'default' | 'small' | 'secondary' | 'content-switcher'; export type TabsOrientation = 'horizontal' | 'vertical'; export interface TabItem { /** Visible label. */ label: React.ReactNode; /** Identifies this tab. */ value: string; /** Panel content, rendered when this tab is active. */ content: Content; disabled?: boolean; /** Leading glyph, 16–20px. */ icon?: React.ReactNode; /** Unread count. Rendered by the `content-switcher` variant only. */ notificationCount?: number; } declare const tabsListVariants: (props?: ({ variant?: "small" | "default" | "secondary" | "content-switcher" | null | undefined; } & import("class-variance-authority/types").ClassProp) | undefined) => string; declare const tabsTabVariants: (props?: ({ variant?: "small" | "default" | "secondary" | "content-switcher" | null | undefined; } & import("class-variance-authority/types").ClassProp) | undefined) => string; export interface TabsRootProps { items: TabItem[]; children: React.ReactNode; defaultValue?: string; value?: string; onValueChange?: (value: string) => void; orientation?: TabsOrientation; rootClassName?: string; } declare const TabsRoot: { ({ items, children, defaultValue, value, onValueChange, orientation, rootClassName, }: TabsRootProps): React.JSX.Element; displayName: string; }; export interface TabsListProps extends VariantProps { className?: string; /** Applied to every tab. */ tabClassName?: string; /** Applied to the sliding indicator. */ tabIndicatorClassName?: string; /** Names the tab list. Give it one: a list of tabs with no name is unnavigable. */ 'aria-label'?: string; } declare const TabsList: { ({ className, tabClassName, tabIndicatorClassName, variant, "aria-label": ariaLabel, }: TabsListProps): React.JSX.Element; displayName: string; }; export interface TabsPanelProps { children?: React.ReactNode; className?: string; /** Position in the list, used as a fallback identity when `value` is empty. */ index: number; tabIndex?: number; value: string; } declare const TabsPanel: { ({ children, className, index, tabIndex, value }: TabsPanelProps): React.JSX.Element; displayName: string; }; export interface TabsProps { items: TabItem[]; defaultValue?: string; value?: string; onValueChange?: (value: string) => void; orientation?: TabsOrientation; rootClassName?: string; panelClassName?: string; tabsListClassName?: string; /** * @default 'default' */ variant?: TabsVariant; 'aria-label'?: string; } export declare const Tabs: { ({ items, defaultValue, value, onValueChange, orientation, rootClassName, panelClassName, tabsListClassName, variant, "aria-label": ariaLabel, }: TabsProps): React.JSX.Element; displayName: string; } & { Root: { ({ items, children, defaultValue, value, onValueChange, orientation, rootClassName, }: TabsRootProps): React.JSX.Element; displayName: string; }; List: { ({ className, tabClassName, tabIndicatorClassName, variant, "aria-label": ariaLabel, }: TabsListProps): React.JSX.Element; displayName: string; }; Panel: { ({ children, className, index, tabIndex, value }: TabsPanelProps): React.JSX.Element; displayName: string; }; }; export { TabsRoot, TabsList, TabsPanel, tabsListVariants, tabsTabVariants }; export interface TabsTriggerProps extends React.ComponentPropsWithoutRef { } /** * One tab. * * A part, so a caller can compose a tab list item by item rather than through `TabsList`'s `items` * array. It carries the same `tabsTabVariants` classes the array path emits, at the `secondary` * variant — the one `cr-web-demo` uses — because a composed tab has no `variant` context to read. * * The `id`/`aria-controls` pairing that `TabsList` generates from its prefix is Base UI's job here: * `BaseTabs.Tab` and `BaseTabs.Panel` associate by `value` when ids are not supplied. */ export declare const TabsTrigger: React.ForwardRefExoticComponent>; export interface TabsContentProps extends React.ComponentPropsWithoutRef { } /** * A tab's panel. shadcn calls it `Content`, Base UI calls it `Panel`. * * Distinct from {@link TabsPanel}, which is the existing Strix part that generates its own * `id`/`aria-labelledby` from the tabs context. This one lets Base UI associate by `value`, which * is what a composed usage needs. */ export declare const TabsContent: React.ForwardRefExoticComponent>; //# sourceMappingURL=tabs.d.ts.map