import React, { forwardRef } from 'react'; import classNames from 'classnames'; import styles from './styles.module.css'; enum Variant { Normal, Snug, Loose, } interface InputFieldProps extends React.ComponentProps<'input'> { variant?: Variant; } const Component = forwardRef<HTMLInputElement, InputFieldProps>(({ className, variant, ...props }, ref) => ( <input ref={ref} className={classNames( 'form-input', styles.text_input, { [styles.loose]: variant === Variant.Loose }, className )} {...props} /> )); const InputField = Object.assign(Component, { Variants: Variant }); export default InputField;