import clsx from 'clsx'; import type { ForwardedRef, SelectHTMLAttributes } from 'react'; import { forwardRef } from 'react'; import { useId } from 'react'; type Attributes = Pick< SelectHTMLAttributes, 'disabled' | 'name' | 'onBlur' | 'onFocus' | 'required' >; export type SelectItem = Readonly<{ label: string; value: T; }>; export type SelectDisplay = 'block' | 'inline'; export type SelectBorderStyle = 'bordered' | 'borderless'; type Props = Readonly<{ borderStyle?: SelectBorderStyle; defaultValue?: T; display?: SelectDisplay; isLabelHidden?: boolean; label: string; name?: string; onChange?: (value: string) => void; options: ReadonlyArray>; value?: T; }> & Readonly; const borderClasses: Record = { bordered: 'border-slate-300', borderless: 'border-transparent bg-transparent', }; function Select( { borderStyle = 'bordered', defaultValue, display, disabled, label, isLabelHidden, options, value, onChange, ...props }: Props, ref: ForwardedRef, ) { const id = useId(); return (
{!isLabelHidden && ( )}
); } export default forwardRef(Select);