import { ChangeEventHandler, FocusEventHandler, PropsOf } from "../utils/types.js";
import { ThemingProps } from "../theme/types.js";
import { SystemProps } from "../system/system.js";
import { ReactNode } from "react";

//#region src/switch/switch.types.d.ts
type SwitchButtonProps = SystemProps & ThemingProps<'Switch'> & {
  /** Provides value to switch in controlled mode. */checked?: boolean; /** Deprecated. Please use variant instead. @deprecated  */
  colorScheme?: 'blue' | 'green' | 'prussian'; /** Disables switch and related elements with the right styling. */
  disabled?: boolean; /** Displays custom content to the left of switch thumb. */
  innerLabelOff?: ReactNode; /** Displays custom content to the right of switch thumb. */
  innerLabelOn?: ReactNode; /** Props object passed to the inner input element. */
  inputProps?: PropsOf<'input', SystemProps>; /** Ref passed to the inner input element. */
  inputRef?: React.MutableRefObject<HTMLInputElement | null> | null; /** Passed to the inner input. */
  name?: string; /** Passed to the inner input. */
  onBlur?: FocusEventHandler; /** Passed to the inner input. */
  onChange?: ChangeEventHandler; /** Passed to the inner input. */
  onFocus?: FocusEventHandler; /** Passed to the inner input. */
  required?: boolean; /** Passed to the inner input. */
  value?: number | string;
};
type SwitchContext = Pick<SwitchProps, 'checked' | 'colorScheme' | 'disabled' | 'name' | 'onBlur' | 'onChange' | 'onFocus' | 'required' | 'size' | 'value' | 'variant'> & {
  defaultChecked?: boolean;
};
type SwitchProps = SystemProps & ThemingProps<'Switch'> & {
  /** Socket displaying a custom toggle button component. */button?: ReactNode; /** Provides value to switch button in controlled mode. */
  checked?: boolean; /** Deprecated. Please use variant instead. @deprecated  */
  colorScheme?: 'blue' | 'green' | 'prussian'; /** Disables switch and related elements with the right styling. */
  disabled?: boolean; /** Displays custom content to the left of switch thumb. */
  innerLabelOff?: ReactNode; /** Displays custom content to the right of switch thumb. */
  innerLabelOn?: ReactNode; /** Props object passed to the inner input element. */
  inputProps?: PropsOf<'input', SystemProps>; /** Ref passed to the inner input element. */
  inputRef?: React.MutableRefObject<HTMLInputElement | null> | null; /** Socket displaying content on the left. */
  labelLeft?: ReactNode; /** Socket displaying content on the right. */
  labelRight?: ReactNode; /** Passed to the inner input. */
  name?: string; /** Passed to the inner input. */
  onBlur?: FocusEventHandler; /** Passed to the inner input. */
  onChange?: ChangeEventHandler; /** Passed to the inner input. */
  onFocus?: FocusEventHandler; /** Passed to the inner input. */
  required?: boolean; /** Passed to the inner input. */
  value?: string | readonly string[] | number | undefined;
};
//#endregion
export { SwitchButtonProps, SwitchContext, SwitchProps };

//# sourceMappingURL=switch.types.d.ts.map