import { Switch as SwitchPrimitive } from '@base-ui/react/switch';
import * as React from 'react';
import { type FieldProps } from '@/components/atoms/forms/_shared';
/** Color variants for the standard switch */
type ColorVariant = 'primary' | 'secondary' | 'warning' | 'info' | 'success' | 'destructive';
/** Theme variants that render theme toggle UIs */
type ThemeVariant = 'theme-gradient' | 'theme-switch' | 'theme-pill' | 'theme-segmented';
/** All switch variants */
export type SwitchVariant = ColorVariant | ThemeVariant;
interface SwitchControlProps extends Omit<SwitchPrimitive.Root.Props, 'onCheckedChange'> {
    size?: 'sm' | 'md' | 'lg';
    variant?: SwitchVariant;
    /** Visual style of the switch (solid = filled track, outline = bordered track). Only applies to color variants. */
    switchStyle?: 'solid' | 'outline';
    withIcon?: boolean;
    thumbIconOn?: React.ReactNode;
    thumbIconOff?: React.ReactNode;
    showOnOff?: boolean;
    onLabel?: string;
    offLabel?: string;
    label?: React.ReactNode;
    description?: string;
    labelPosition?: 'left' | 'right';
    /** Layout orientation for label (theme variants only) */
    orientation?: 'horizontal' | 'vertical';
    checked?: boolean;
    defaultChecked?: boolean;
    onCheckedChange?: (checked: boolean) => void;
}
export interface SwitchProps extends Omit<SwitchControlProps, 'label' | 'description'>, Omit<FieldProps, 'label' | 'description' | 'topRight' | 'bottomRight'> {
    /** Label text or ReactNode (inline with switch, or in FieldLabel when field props are set) */
    label?: React.ReactNode;
    /** Description text (inline below label, or in FieldDescription when field props are set) */
    description?: React.ReactNode;
}
declare const Switch: React.ForwardRefExoticComponent<Omit<SwitchProps, "ref"> & React.RefAttributes<HTMLButtonElement>>;
export { Switch };
