Spaces:
Build error
Build error
import type { ChangeEvent } from 'react' | |
import { | |
ValidatedErrorIcon, | |
ValidatedErrorMessage, | |
ValidatedSuccessIcon, | |
ValidatingTip, | |
} from './ValidateStatus' | |
import { ValidatedStatus } from './declarations' | |
import type { ValidatedStatusState } from './declarations' | |
type KeyInputProps = { | |
value?: string | |
name: string | |
placeholder: string | |
className?: string | |
onChange: (v: string) => void | |
onFocus?: () => void | |
validating: boolean | |
validatedStatusState: ValidatedStatusState | |
} | |
const KeyInput = ({ | |
value, | |
name, | |
placeholder, | |
className, | |
onChange, | |
onFocus, | |
validating, | |
validatedStatusState, | |
}: KeyInputProps) => { | |
const handleChange = (e: ChangeEvent<HTMLInputElement>) => { | |
const inputValue = e.target.value | |
onChange(inputValue) | |
} | |
const getValidatedIcon = () => { | |
if (validatedStatusState.status === ValidatedStatus.Error || validatedStatusState.status === ValidatedStatus.Exceed) | |
return <ValidatedErrorIcon /> | |
if (validatedStatusState.status === ValidatedStatus.Success) | |
return <ValidatedSuccessIcon /> | |
} | |
const getValidatedTip = () => { | |
if (validating) | |
return <ValidatingTip /> | |
if (validatedStatusState.status === ValidatedStatus.Error) | |
return <ValidatedErrorMessage errorMessage={validatedStatusState.message ?? ''} /> | |
} | |
return ( | |
<div className={className}> | |
<div className="mb-2 text-[13px] font-medium text-gray-800">{name}</div> | |
<div className=' | |
flex items-center px-3 bg-white rounded-lg | |
shadow-xs | |
'> | |
<input | |
className=' | |
w-full py-[9px] mr-2 | |
text-xs font-medium text-gray-700 leading-[18px] | |
appearance-none outline-none bg-transparent | |
' | |
value={value} | |
placeholder={placeholder} | |
onChange={handleChange} | |
onFocus={onFocus} | |
/> | |
{getValidatedIcon()} | |
</div> | |
{getValidatedTip()} | |
</div> | |
) | |
} | |
export default KeyInput | |