import { FC } from "react" import { useForm, SubmitHandler } from "react-hook-form" import FormField from "../common/form/FormField" import InlineLink from "../common/InlineLink" import SubmitButton from "../common/form/SubmitButton" import * as validation from "../../config/validation" import { z } from "zod" import { zodResolver } from "@hookform/resolvers/zod" import useLogInFlow from "../../hooks/useLogInFlow" import Input from "../common/Input" const LogInFormSchema = z.object({ csrfToken: z.string(), password: validation.password, email: z.string().email({ message: "Not a valid email address" }).trim(), }) type LogInFormValues = z.infer const formFields = [ { id: "email", label: "Email", type: "email" }, { id: "password", label: "Password", type: "password" }, ] const LoginForm: FC = () => { const logInFlow = useLogInFlow() const { register, handleSubmit, formState } = useForm({ resolver: zodResolver(LogInFormSchema), }) const onSubmit: SubmitHandler = (data) => logInFlow.submitData({ csrf_token: data.csrfToken, method: "password", identifier: data.email, password: data.password, }) return (
{logInFlow.flow && ( )} {formFields.map((field) => ( {formState.errors[(field.id as any) || ""]?.message}

} /> ))}
Trouble logging in?
) } export default LoginForm