import * as react from 'react'; import { Ref, ReactNode } from 'react'; import * as tailwind_variants from 'tailwind-variants'; import * as _heroui_system from '@heroui/system'; import { HTMLHeroUIProps, PropGetter } from '@heroui/system'; import { SlotsToClasses, ToggleSlots, ToggleVariantProps } from '@heroui/theme'; import { AriaSwitchProps } from '@react-aria/switch'; type SwitchThumbIconProps = { width: string; height: string; "data-checked": string; isSelected: boolean; className: string; }; interface Props extends HTMLHeroUIProps<"input"> { /** * Ref to the DOM node. */ ref?: Ref; /** * The label of the switch. */ children?: ReactNode; /** * Whether the switch is disabled. * @default false */ isDisabled?: boolean; /** * The icon to be displayed inside the thumb. */ thumbIcon?: ReactNode | ((props: SwitchThumbIconProps) => ReactNode); /** * Start icon to be displayed inside the switch. */ startContent?: ReactNode; /** * End icon to be displayed inside the switch. */ endContent?: ReactNode; /** * Classname or List of classes to change the classNames of the element. * if `className` is passed, it will be added to the base slot. * * @example * ```ts * * ``` */ classNames?: SlotsToClasses; /** * React aria onChange event. */ onValueChange?: AriaSwitchProps["onChange"]; } type UseSwitchProps = Omit & Omit & ToggleVariantProps; declare function useSwitch(originalProps?: UseSwitchProps): { Component: _heroui_system.As; slots: { base: (slotProps?: ({ size?: "md" | "sm" | "lg" | undefined; color?: "default" | "primary" | "secondary" | "success" | "warning" | "danger" | undefined; isDisabled?: boolean | undefined; disableAnimation?: boolean | undefined; } & tailwind_variants.ClassProp) | undefined) => string; wrapper: (slotProps?: ({ size?: "md" | "sm" | "lg" | undefined; color?: "default" | "primary" | "secondary" | "success" | "warning" | "danger" | undefined; isDisabled?: boolean | undefined; disableAnimation?: boolean | undefined; } & tailwind_variants.ClassProp) | undefined) => string; thumb: (slotProps?: ({ size?: "md" | "sm" | "lg" | undefined; color?: "default" | "primary" | "secondary" | "success" | "warning" | "danger" | undefined; isDisabled?: boolean | undefined; disableAnimation?: boolean | undefined; } & tailwind_variants.ClassProp) | undefined) => string; hiddenInput: (slotProps?: ({ size?: "md" | "sm" | "lg" | undefined; color?: "default" | "primary" | "secondary" | "success" | "warning" | "danger" | undefined; isDisabled?: boolean | undefined; disableAnimation?: boolean | undefined; } & tailwind_variants.ClassProp) | undefined) => string; startContent: (slotProps?: ({ size?: "md" | "sm" | "lg" | undefined; color?: "default" | "primary" | "secondary" | "success" | "warning" | "danger" | undefined; isDisabled?: boolean | undefined; disableAnimation?: boolean | undefined; } & tailwind_variants.ClassProp) | undefined) => string; endContent: (slotProps?: ({ size?: "md" | "sm" | "lg" | undefined; color?: "default" | "primary" | "secondary" | "success" | "warning" | "danger" | undefined; isDisabled?: boolean | undefined; disableAnimation?: boolean | undefined; } & tailwind_variants.ClassProp) | undefined) => string; thumbIcon: (slotProps?: ({ size?: "md" | "sm" | "lg" | undefined; color?: "default" | "primary" | "secondary" | "success" | "warning" | "danger" | undefined; isDisabled?: boolean | undefined; disableAnimation?: boolean | undefined; } & tailwind_variants.ClassProp) | undefined) => string; label: (slotProps?: ({ size?: "md" | "sm" | "lg" | undefined; color?: "default" | "primary" | "secondary" | "success" | "warning" | "danger" | undefined; isDisabled?: boolean | undefined; disableAnimation?: boolean | undefined; } & tailwind_variants.ClassProp) | undefined) => string; } & { base: (slotProps?: ({ size?: "md" | "sm" | "lg" | undefined; color?: "default" | "primary" | "secondary" | "success" | "warning" | "danger" | undefined; isDisabled?: boolean | undefined; disableAnimation?: boolean | undefined; } & tailwind_variants.ClassProp) | undefined) => string; wrapper: (slotProps?: ({ size?: "md" | "sm" | "lg" | undefined; color?: "default" | "primary" | "secondary" | "success" | "warning" | "danger" | undefined; isDisabled?: boolean | undefined; disableAnimation?: boolean | undefined; } & tailwind_variants.ClassProp) | undefined) => string; thumb: (slotProps?: ({ size?: "md" | "sm" | "lg" | undefined; color?: "default" | "primary" | "secondary" | "success" | "warning" | "danger" | undefined; isDisabled?: boolean | undefined; disableAnimation?: boolean | undefined; } & tailwind_variants.ClassProp) | undefined) => string; hiddenInput: (slotProps?: ({ size?: "md" | "sm" | "lg" | undefined; color?: "default" | "primary" | "secondary" | "success" | "warning" | "danger" | undefined; isDisabled?: boolean | undefined; disableAnimation?: boolean | undefined; } & tailwind_variants.ClassProp) | undefined) => string; startContent: (slotProps?: ({ size?: "md" | "sm" | "lg" | undefined; color?: "default" | "primary" | "secondary" | "success" | "warning" | "danger" | undefined; isDisabled?: boolean | undefined; disableAnimation?: boolean | undefined; } & tailwind_variants.ClassProp) | undefined) => string; endContent: (slotProps?: ({ size?: "md" | "sm" | "lg" | undefined; color?: "default" | "primary" | "secondary" | "success" | "warning" | "danger" | undefined; isDisabled?: boolean | undefined; disableAnimation?: boolean | undefined; } & tailwind_variants.ClassProp) | undefined) => string; thumbIcon: (slotProps?: ({ size?: "md" | "sm" | "lg" | undefined; color?: "default" | "primary" | "secondary" | "success" | "warning" | "danger" | undefined; isDisabled?: boolean | undefined; disableAnimation?: boolean | undefined; } & tailwind_variants.ClassProp) | undefined) => string; label: (slotProps?: ({ size?: "md" | "sm" | "lg" | undefined; color?: "default" | "primary" | "secondary" | "success" | "warning" | "danger" | undefined; isDisabled?: boolean | undefined; disableAnimation?: boolean | undefined; } & tailwind_variants.ClassProp) | undefined) => string; } & {}; classNames: SlotsToClasses<"base" | "wrapper" | "label" | "hiddenInput" | "startContent" | "endContent" | "thumbIcon" | "thumb"> | undefined; domRef: react.RefObject; children: ReactNode; thumbIcon: ReactNode | ((props: SwitchThumbIconProps) => ReactNode); startContent: ReactNode; endContent: ReactNode; isHovered: boolean; isSelected: boolean | undefined; isPressed: boolean; isFocused: boolean; isFocusVisible: boolean; isDisabled: boolean | undefined; getBaseProps: PropGetter; getWrapperProps: PropGetter; getInputProps: PropGetter; getLabelProps: PropGetter; getThumbProps: PropGetter; getThumbIconProps: (props?: { includeStateProps: boolean; }) => SwitchThumbIconProps; getStartContentProps: PropGetter; getEndContentProps: PropGetter; }; type UseSwitchReturn = ReturnType; export { type SwitchThumbIconProps, type UseSwitchProps, type UseSwitchReturn, useSwitch };