'use client'; import { LegacyRef } from 'react'; import { useFormStatus } from 'react-dom'; import Spinner from './Spinner'; import { clsx } from 'clsx/lite'; export default function FieldSetWithStatus({ id, label, note, error, value, onChange, selectOptions, selectOptionsDefaultLabel, placeholder, loading, required, readOnly, capitalize, type = 'text', inputRef, }: { id: string label: string note?: string error?: string value: string onChange?: (value: string) => void selectOptions?: { value: string, label: string }[] selectOptionsDefaultLabel?: string placeholder?: string loading?: boolean required?: boolean readOnly?: boolean capitalize?: boolean type?: 'text' | 'email' | 'password' | 'checkbox' inputRef?: LegacyRef }) { const { pending } = useFormStatus(); return (
{selectOptions ? : onChange?.(type === 'checkbox' ? e.target.value === 'true' ? 'false' : 'true' : e.target.value)} type={type} autoComplete="off" readOnly={readOnly || pending} className={clsx( type === 'text' && 'w-full', error && 'error', )} autoCapitalize={!capitalize ? 'off' : undefined} />}
); };