"use client"; import React, { useState } from "react"; interface InputProps extends React.HTMLAttributes { labelText?: string; type?: React.HTMLInputTypeAttribute; inputText?: string; onInputTextChange?: (value: string) => void; maxChar?: number; supportingText?: string; } const TextField: React.FC = ({ labelText = "", type = "text", inputText: initialInputText = "", onInputTextChange, maxChar, supportingText, ...rest }) => { const [focus, setFocus] = useState(false); const [inputText, setInputText] = useState(initialInputText); const handleValueChange = (event: React.ChangeEvent) => { const { value } = event.target; setInputText(value); onInputTextChange?.(value); }; return (
{labelText}
setFocus(true)} onBlur={() => setFocus(false)} onChange={handleValueChange} type={type} value={inputText} />
{(supportingText || maxChar) && (
{supportingText && {supportingText}} {maxChar && ( {inputText.length}/{maxChar} )}
)}
); }; export default TextField;