import React from 'react';
import Checkbox, { CheckboxOptionType, CheckboxRef } from 'antd/es/checkbox';
import { cn } from '@/lib/utils';

type AppCheckboxProps = {
  options?: CheckboxOptionType[];
  value?: string[] | boolean; 
  children?: string;
  onChange?: (value: boolean | string[]) => void; 
  disabled?: boolean;
  isGroup?: boolean; 
  className?: string;
  checked?: boolean;
  checkboxRef?: React.Ref<CheckboxRef>;
};

const { Group } = Checkbox;

const AppCheckbox: React.FC<AppCheckboxProps> = ({
  options = [],
  value,
  children,
  onChange,
  disabled,
  isGroup,
  className,
  checked,
  checkboxRef,
  ...props
}) => {
  if (isGroup && options?.length > 0) {
    return (
      <Group
        options={options}
        value={Array.isArray(value) ? value : []}
        onChange={(checkedValues: string[]) => onChange?.(checkedValues)} 
        disabled={disabled}
        className={cn(className)}
      />
    );
  }

  return (
    <Checkbox
      ref={checkboxRef}
      checked={checked ?? Boolean(value)} 
      onChange={(e) => onChange?.(e.target.checked)} 
      disabled={disabled}
      className={cn(className)}
      {...props}
    >
      {children}
    </Checkbox>
  );
};

export default AppCheckbox;
