
"use client";
import { SwitchSize, UniversalSwitchProps } from "../../../types/dist/index.js";
import React, { ChangeEvent } from "react";

//#region src/components/client/Switch/types.d.ts
type DataAttributes = {
  [name: `data-${string}`]: string;
};
type NativeInputProps = Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type' | 'checked' | 'size' | 'height' | 'width' | 'color' | 'defaultChecked' | 'children'>;
type SwitchChangeEvent = ChangeEvent<HTMLInputElement>;
interface SwitchProps extends NativeInputProps, UniversalSwitchProps {
  /** Props to be passed into various slots within the component. */
  slotProps?: {
    root?: DataAttributes;
    switch?: DataAttributes;
    handle?: DataAttributes;
    label?: DataAttributes;
  };
}
interface SwitchMotionHandleProps {
  size: SwitchSize;
  isOn: boolean;
  isOnX: string;
  showHoverEffect: boolean;
  disabled?: boolean;
  onIcon?: UniversalSwitchProps['onIcon'];
  offIcon?: UniversalSwitchProps['offIcon'];
  cssAnimationDuration: string;
  reduceMotion: 'always' | 'user';
  handleSlotProps?: DataAttributes;
}
//#endregion
export { type DataAttributes, type NativeInputProps, type SwitchChangeEvent, type SwitchMotionHandleProps, type SwitchProps };