import React, { ComponentType } from 'react'; import { ComponentRegistry, FieldComponentProps, FormFieldType } from './types'; export const TextFieldComponent: ComponentType = ({ value, onChange, error, disabled, required, placeholder, className, ...props }) => { const stringValue = typeof value === 'string' || typeof value === 'number' ? String(value) : ''; return ( onChange(e.target.value)} disabled={disabled} required={required} placeholder={placeholder} className={className} aria-invalid={!!error} {...props} /> ); }; export const NumberFieldComponent: ComponentType = ({ value, onChange, error, disabled, required, placeholder, min, max, step, className, ...props }) => { const getNumberValue = () => { if (typeof value === 'number') return value; if (typeof value === 'string') return parseFloat(value) || ''; return ''; }; const numberValue = getNumberValue(); return ( { const numValue = e.target.value === '' ? undefined : Number(e.target.value); onChange(numValue); }} disabled={disabled} required={required} placeholder={placeholder} min={min} max={max} step={step} className={className} aria-invalid={!!error} {...props} /> ); }; export const SelectFieldComponent: ComponentType = ({ value, onChange, error, disabled, required, options = [], multiple = false, className, ...props }) => { if (multiple) { return ( ); } const selectValue = typeof value === 'string' || typeof value === 'number' ? String(value) : ''; return ( ); }; export const CheckboxFieldComponent: ComponentType = ({ value, onChange, error, disabled, required, className, ...props }) => { return ( onChange(e.target.checked)} disabled={disabled} required={required} className={className} aria-invalid={!!error} {...props} /> ); }; export const TextareaFieldComponent: ComponentType = ({ value, onChange, error, disabled, required, placeholder, rows, className, ...props }) => { const textValue = typeof value === 'string' ? value : ''; return (