import { createContext, useContext, useMemo, type InputHTMLAttributes, type PropsWithChildren, } from 'react' interface FormControlContextValue extends Pick< InputHTMLAttributes, 'disabled' | 'readOnly' | 'required' > { invalid?: boolean } const FormControlContext = createContext(null) export function FormControlProvider( props: PropsWithChildren ) { const { children, ...formControlInitialValues } = props const value = useMemo( () => ({ ...formControlInitialValues, }), [formControlInitialValues] ) return ( {children} ) } // hooks export function useFormControl() { const context = useContext(FormControlContext) if (!context) { throw new Error('useFormControl must be used within a FormControlProvider') } return context }