import { type ForwardedRef, forwardRef, type InputHTMLAttributes, type HTMLInputTypeAttribute, } from 'react'; import styles from '../fields.module.scss'; export type InputProps = Omit< InputHTMLAttributes, 'disabled' | 'readonly' | 'required' | 'type' > & Required, 'id' | 'name'>> & { /** * Should the field be disabled? * * @default false */ isDisabled?: boolean; /** * Should the field be readonly? * * @default false */ isReadOnly?: boolean; /** * Should the field be required? * * @default false */ isRequired?: boolean; /** * The input type. */ type: Exclude; }; const InputWithRef = ( { className = '', isDisabled = false, isReadOnly = false, isRequired = false, ...props }: InputProps, ref: ForwardedRef ) => { const fieldClassName = `${styles.field} ${className}`; return ( ); }; /** * Input component. */ export const Input = forwardRef(InputWithRef);