import * as react_jsx_runtime from 'react/jsx-runtime';
import { Tabs as Tabs$2 } from 'radix-ui';
import { PropsWithChildren, Ref, ReactElement } from 'react';
import * as class_variance_authority_types from 'class-variance-authority/types';
import { VariantProps } from 'class-variance-authority';

declare const triggerVariants: (props?: ({
    intent?: "main" | "support" | "basic" | null | undefined;
    size?: "xs" | "sm" | "md" | null | undefined;
} & class_variance_authority_types.ClassProp) | undefined) => string;
type TabsTriggerVariantsProps = VariantProps<typeof triggerVariants>;

interface TabsProps extends Omit<Tabs$2.TabsProps, 'activationMode'>, PropsWithChildren<TabsTriggerVariantsProps> {
    /**
     * Change the component to the HTML tag or custom component of the only child. This will merge the original component props with the props of the supplied element/component and change the underlying DOM node.
     * @default false
     */
    asChild?: boolean;
    /**
     * Whether to keep inactive tabs content in the DOM.
     * @default false
     */
    forceMount?: boolean;
    ref?: Ref<HTMLDivElement>;
}
/**
 * @deprecated
 */
type TabsRootProps = TabsProps;
declare const Tabs$1: {
    ({ intent, size, asChild, forceMount, orientation, children, className, ref, ...rest }: TabsProps): react_jsx_runtime.JSX.Element;
    displayName: string;
};

interface TabsContentProps extends PropsWithChildren<Omit<Tabs$2.TabsContentProps, 'forceMount'>> {
    /**
     * A unique value that associates the content with a trigger.
     */
    value: string;
    /**
     * Change the component to the HTML tag or custom component of the only child. This will merge the original component props with the props of the supplied element/component and change the underlying DOM node.
     * @default false
     */
    asChild?: boolean;
    /**
     * Used to force mounting when more control is needed. Useful when controlling animation with React animation libraries.
     */
    forceMount?: true;
    ref?: Ref<HTMLDivElement>;
}
declare const TabsContent: {
    ({ children, asChild, className, ref, ...rest }: TabsContentProps): react_jsx_runtime.JSX.Element;
    displayName: string;
};

interface TabsListProps extends Omit<Tabs$2.TabsListProps, 'children'> {
    /**
     * Change the component to the HTML tag or custom component of the only child. This will merge the original component props with the props of the supplied element/component and change the underlying DOM node.
     * @default false
     */
    asChild?: boolean;
    /**
     * When true, keyboard navigation will loop from last tab to first, and vice versa.
     * @default false
     */
    loop?: boolean;
    children: ReactElement[] | ReactElement;
    ref?: Ref<HTMLDivElement>;
}
declare const TabsList: {
    ({ asChild, loop, children, className, ref, ...rest }: TabsListProps): react_jsx_runtime.JSX.Element;
    displayName: string;
};

interface TabsTriggerProps extends Tabs$2.TabsTriggerProps {
    /**
     * A unique value that associates the trigger with a content.
     */
    value: string;
    /**
     * Change the component to the HTML tag or custom component of the only child. This will merge the original component props with the props of the supplied element/component and change the underlying DOM node.
     * @default false
     */
    asChild?: boolean;
    /**
     * When true, prevents the user from interacting with the tab.
     * @default false
     */
    disabled?: boolean;
    ref?: Ref<HTMLButtonElement>;
}
declare const TabsTrigger: {
    ({ asChild, value, disabled, children, className, ref, ...rest }: TabsTriggerProps): react_jsx_runtime.JSX.Element;
    displayName: string;
};

declare const Tabs: typeof Tabs$1 & {
    List: typeof TabsList;
    Trigger: typeof TabsTrigger;
    Content: typeof TabsContent;
};

export { Tabs, type TabsContentProps, type TabsListProps, type TabsProps, type TabsRootProps, type TabsTriggerProps };
