import React from 'react' import { ViewIcon, ViewOffIcon } from '@chakra-ui/icons' import { Button, Center, Container, FormControl, FormErrorMessage, Icon, Image, Input, InputGroup, InputRightElement, Link, useBoolean, } from '@chakra-ui/react' import { Link as RouterLink, createFileRoute, redirect, } from '@tanstack/react-router' import { SubmitHandler, useForm } from 'react-hook-form' import Logo from '../assets/images/fastapi-logo.svg' import { ApiError } from '../client' import { Body_login_login_access_token as AccessToken } from '../client/models/Body_login_login_access_token' import useAuth, { isLoggedIn } from '../hooks/useAuth' export const Route = createFileRoute('/login')({ component: Login, beforeLoad: async () => { if (isLoggedIn()) { throw redirect({ to: '/', }) } }, }) function Login() { const [show, setShow] = useBoolean() const { login } = useAuth() const [error, setError] = React.useState(null) const { register, handleSubmit, formState: { errors, isSubmitting }, } = useForm({ mode: 'onBlur', criteriaMode: 'all', defaultValues: { username: '', password: '', }, }) const onSubmit: SubmitHandler = async (data) => { try { await login(data) } catch (err) { const errDetail = (err as ApiError).body.detail setError(errDetail) } } return ( <> FastAPI logo {errors.username && ( {errors.username.message} )} {show ? : } {error && {error}}
Forgot password?
) } export default Login