import { Container, Flex, Image, Input, Text } from "@chakra-ui/react" import { Link as RouterLink, createFileRoute, redirect, } from "@tanstack/react-router" import { type SubmitHandler, useForm } from "react-hook-form" import { FiLock, FiUser } from "react-icons/fi" import type { UserRegister } from "@/client" import { Button } from "@/components/ui/button" import { Field } from "@/components/ui/field" import { InputGroup } from "@/components/ui/input-group" import { PasswordInput } from "@/components/ui/password-input" import useAuth, { isLoggedIn } from "@/hooks/useAuth" import { confirmPasswordRules, emailPattern, passwordRules } from "@/utils" import Logo from "/assets/images/fastapi-logo.svg" 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 }> }> } {...register("password", passwordRules())} placeholder="Password" errors={errors} /> } {...register("confirm_password", confirmPasswordRules(getValues))} placeholder="Confirm Password" errors={errors} /> Already have an account?{" "} Log In ) } export default SignUp