
"use client";
import { CheckboxVariant } from "../../../types/dist/index.js";
import { getIcon } from "./checkboxConstants.js";
import { CheckboxProps, CheckboxValueState, DataAttributes } from "./types.js";
import React, { CSSProperties, ReactNode } from "react";

//#region src/components/client/Checkbox/CheckboxBase.d.ts
type ResolvedCheckboxVariant = CheckboxVariant | 'alert' | 'alert-secondary';
type RenderRootArgs = {
  className: string;
  style?: CSSProperties;
  rootSlotProps: DataAttributes;
  hasLabel: boolean;
  isPressed: boolean;
  onHoverStart: () => void;
  onHoverEnd: () => void;
  onTapStart: () => void;
  onTapEnd: () => void;
  children: ReactNode;
};
type RenderIndicatorArgs = {
  size: NonNullable<CheckboxProps['size']>;
  variant: ResolvedCheckboxVariant;
  valueState: CheckboxValueState;
  checked: CheckboxProps['checked'];
  disabled?: boolean;
  showHoverEffect: boolean;
  showPressedEffect: boolean;
  cssAnimationDuration: string;
  checkIcon: ReturnType<typeof getIcon>;
  checkboxSlotProps: DataAttributes;
  iconSlotProps: DataAttributes;
  children: ReactNode;
};
type CheckboxBaseProps = CheckboxProps & {
  cssAnimationDuration: string;
  enableInteractionTracking?: boolean;
  renderRoot: (args: RenderRootArgs) => ReactNode;
  renderIndicator: (args: RenderIndicatorArgs) => ReactNode;
};
declare const CheckboxBase: React.ForwardRefExoticComponent<CheckboxProps & {
  cssAnimationDuration: string;
  enableInteractionTracking?: boolean;
  renderRoot: (args: RenderRootArgs) => ReactNode;
  renderIndicator: (args: RenderIndicatorArgs) => ReactNode;
} & React.RefAttributes<HTMLInputElement>>;
//#endregion
export { CheckboxBase, type CheckboxBaseProps, type RenderIndicatorArgs, type RenderRootArgs, type ResolvedCheckboxVariant };