'use client'; import { ChangeEventHandler, FocusEventHandler, HTMLInputTypeAttribute, ReactNode, } from 'react'; import { cn } from '@/lib/helper'; import FieldMessage from '@/components/helper/FieldMessage'; export interface TextInputProps { type?: HTMLInputTypeAttribute; label?: string; bottomLabel?: string; name: string; value?: string | number; placeholder?: string; className?: { wrapper?: string; label?: string; inputWrapper?: string; input?: string; }; isError?: boolean; isValid?: boolean; disabled?: boolean; readOnly?: boolean; required?: boolean; isLoading?: boolean; errorMessage?: string; startAdornment?: ReactNode; endAdornment?: ReactNode; onChange?: ChangeEventHandler; onBlur?: FocusEventHandler; } const TextInput = ({ type = 'text', label, bottomLabel, name, value, placeholder, className, isError, isValid, errorMessage, startAdornment, endAdornment, disabled = false, required = false, onChange, onBlur, readOnly = false, isLoading = false, }: TextInputProps) => { const showErrorMessage = Boolean(isError && errorMessage); const feedbackMessage = showErrorMessage ? errorMessage : bottomLabel; return (
{label && ( )}
{startAdornment && startAdornment} {(isLoading || endAdornment) && (
{isLoading && } {endAdornment && endAdornment}
)}
); }; export default TextInput;