import type { FC } from "react"; import { zodResolver } from "@hookform/resolvers/zod"; import { Alert, Button, PasswordInput, Stack, TextInput } from "@mantine/core"; 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/auth.schema"; import classes from "./AuthForm.module.css"; type AuthFormProps = { onSubmit: (email: string, password: string) => Promise; register?: true; }; const AuthForm: FC = (props) => { const { onSubmit, register } = 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); const onSubmit2 = methods.handleSubmit(async (values) => { setSubmitError(null); try { await onSubmit(values.email, values.password); } catch { setSubmitError(t("auth.requestError")); } }); const to = register ? "/login" : "/register"; return (
{register && ( )} {submitError && {submitError}}
); }; export { AuthForm };