import { Button, Container, Flex, FormControl, FormErrorMessage, FormLabel, Image, Input, Link, Text, } from "@chakra-ui/react" import { Link as RouterLink, createFileRoute, redirect, } from "@tanstack/react-router" import { type SubmitHandler, useForm } from "react-hook-form" import Logo from "/assets/images/fastapi-logo.svg" import type { UserRegister } from "../client" import useAuth, { isLoggedIn } from "../hooks/useAuth" import { confirmPasswordRules, emailPattern, passwordRules } from "../utils" export const Route = createFileRoute("/signup")({ component: SignUp, beforeLoad: async () => { if (isLoggedIn()) { throw redirect({ to: "/", }) } }, }) interface UserRegisterForm extends UserRegister { confirm_password: string } function SignUp() { const { signUpMutation } = useAuth() const { register, handleSubmit, getValues, formState: { errors, isSubmitting }, } = useForm({ mode: "onBlur", criteriaMode: "all", defaultValues: { email: "", full_name: "", password: "", confirm_password: "", }, }) const onSubmit: SubmitHandler = (data) => { signUpMutation.mutate(data) } return ( <> FastAPI logo Full Name {errors.full_name && ( {errors.full_name.message} )} Email {errors.email && ( {errors.email.message} )} Password {errors.password && ( {errors.password.message} )} Confirm Password {errors.confirm_password && ( {errors.confirm_password.message} )} Already have an account?{" "} Log In ) } export default SignUp