import React from 'react'; import { useController, useFormContext, type FieldValues, type Path } from 'react-hook-form'; import type { FormFieldPropsBase } from './types'; import type { CheckboxGroupProps, CheckboxProps } from '@luxfi/ui/checkbox'; import { Checkbox, CheckboxGroup } from '@luxfi/ui/checkbox'; export interface FormFieldCheckboxGroupProps< FormFields extends FieldValues, Name extends Path = Path, > extends Pick, 'rules' | 'name' | 'onChange' | 'controllerProps'> { options: Array<{ label: string; value: string }>; itemProps?: CheckboxProps; readOnly?: boolean; disabled?: boolean; orientation?: 'vertical' | 'horizontal'; className?: string; } const FormFieldCheckboxGroupContent = < FormFields extends FieldValues, Name extends Path, >(props: FormFieldCheckboxGroupProps) => { const { name, options, disabled, controllerProps, itemProps, rules, onChange, ...rest } = props; const { control } = useFormContext(); const { field, formState } = useController({ control, name, rules, ...controllerProps, }); const handleChange = React.useCallback((value: Array) => { field.onChange(value); onChange?.(); }, [ field, onChange ]); return ( { options.map(({ value, label }) => ( { label } )) } ); }; export const FormFieldCheckboxGroup = React.memo(FormFieldCheckboxGroupContent) as typeof FormFieldCheckboxGroupContent;