'use client'; import { ChangeEvent, HTMLInputTypeAttribute, useState } from 'react'; interface ICustomInput { name: string; type?: HTMLInputTypeAttribute; label?: string; placeholder?: string; isTextArea?: boolean; required?: boolean; isBlack?: boolean; value: { value: string; setValue: (newValue: ICustomInput['value']['value']) => void; }; validate?: { isValid: boolean; errMsg: string; }; } const CustomInput = ({ value, name, isTextArea, label, placeholder, type, required, isBlack, validate, }: ICustomInput) => { const [isTouched, setIsTouched] = useState(false); return ( {label ? ( {label} ) : null} {!isTextArea ? ( ) => { if (!isTouched) { setIsTouched(true); } value.setValue(e.target.value); }} /> {isTouched && validate && !validate.isValid ? ( {validate.errMsg} ) : null} ) : ( ) => value.setValue(e.target.value)} style={isBlack ? { background: '#1a1a1a', color: '#fff' } : {}}> )} ); }; export default CustomInput;