import { zodResolver } from "@hookform/resolvers/zod"; import { Alert, Button, PasswordInput, Stack, TextInput } from "@mantine/core"; import type { FC } from "react"; import { useState } from "react"; import { FormProvider, type Resolver, useForm } from "react-hook-form"; import { useTranslation } from "react-i18next"; import { Link } from "react-router"; import { type AuthFormValues, loginSchema, registerSchema, } from "../../model/validation"; import classes from "./AuthForm.module.css"; type AuthFormProps = { register?: true; onSubmit: (email: string, password: string) => Promise; }; const AuthForm: FC = (props) => { const { register, onSubmit } = props; const { t } = useTranslation(); const schema = register ? registerSchema : loginSchema; const methods = useForm({ resolver: zodResolver(schema) as Resolver, }); const { formState: { errors, isSubmitting }, } = methods; const [submitError, setSubmitError] = useState(null); return (
{ setSubmitError(null); try { await onSubmit(values.email, values.password); } catch { setSubmitError(t("auth.requestError")); } })} >
{register && ( )} {submitError && {submitError}}
); }; export { AuthForm };