import Overline from '../../components/ui/Overline'; import InputBox from '../../components/ui/InputBox'; import { Text, Localizer } from 'preact-i18n'; interface Props { type: "email" | "username" | "password" | "invite" | "current_password"; showOverline?: boolean; register: Function; error?: string; name?: string; } export default function FormField({ type, register, showOverline, error, name }: Props) { return ( <> {showOverline && ( )} ) as any} name={ type === "current_password" ? "password" : name ?? type } type={ type === "invite" || type === "username" ? "text" : type === "current_password" ? "password" : type } ref={register( type === "password" || type === "current_password" ? { validate: (value: string) => value.length === 0 ? "RequiredField" : value.length < 8 ? "TooShort" : value.length > 1024 ? "TooLong" : undefined } : type === "email" ? { required: "RequiredField", pattern: { value: /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}$/i, message: "InvalidEmail" } } : type === "username" ? { required: "RequiredField" } : { required: "RequiredField" } )} /> ); }