import { Heading, Input, Stack, Text } from '@chakra-ui/react'; import { Button } from '@client/components/ui/button'; import { Field } from '@client/components/ui/field'; import { valibotResolver } from '@hookform/resolvers/valibot'; import { createFileRoute, redirect } from '@tanstack/react-router'; import { useForm } from 'react-hook-form'; import * as v from 'valibot'; import { Link } from '../components/ui/link'; import { PasswordInput } from '../components/ui/password-input'; import { useAuth } from '../hooks/auth'; export const Route = createFileRoute('/login')({ component: LoginComponent, beforeLoad: ({ context }) => { if (context.isAuthenticated) throw redirect({ to: '/' }); } }); function LoginComponent() { return ( Login Don't have an account?{' '} Sign up ); } interface FormValues { email: string; password: string; } function LoginForm() { const schema = v.pipe( v.object({ email: v.pipe(v.string(), v.nonEmpty('Email is required'), v.email('Invalid email')), password: v.pipe(v.string(), v.nonEmpty('Password is required')) }) ); const { register, handleSubmit, formState: { errors } } = useForm({ resolver: valibotResolver(schema) }); const { login } = useAuth(); return (
{ const session = await login({ email: values.email, password: values.password }); if (session != null) window.history.back(); })} >
); }