import { Field, Label, Select as HeadlessSelect } from '@headlessui/react' import { type ComponentProps, type ReactNode } from 'react' import { get, type FieldError, type FieldValues, type Path, type RegisterOptions, Controller, } from 'react-hook-form' import { useRemixFormContext } from 'remix-hook-form' import { twMerge } from 'tailwind-merge' type TSelectProperties = Omit< ComponentProps<'select'>, 'size' > & { id: string label?: ReactNode name: Path rules?: RegisterOptions containerClassName?: string labelClassName?: string placeholder?: string options?: { name: string value: string | number }[] } export const Select = >( properties: TSelectProperties, ) => { const { id, label, name, rules, disabled, placeholder, options, className, labelClassName, containerClassName, ...restProperties } = properties const { control, formState: { errors }, } = useRemixFormContext() const error: FieldError = get(errors, name) return ( ( {options?.map(({ value, name }) => ( ))} )} /> ) }