import { zodResolver } from "@hookform/resolvers/zod" import { useForm } from "react-hook-form" import { Link, useLocation, useNavigate } from "react-router-dom" import { toast } from "sonner" import { z } from "zod" import { authStore } from "@/lib/auth.ts" import { Button } from "@/components/ui/button.tsx" import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card.tsx" import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage, } from "@/components/ui/form.tsx" import { Input } from "@/components/ui/input.tsx" const schema = z.object({ email: z.email(), password: z.string().min(6), }) type FormValues = z.infer export function Login() { const navigate = useNavigate() const location = useLocation() const form = useForm({ resolver: zodResolver(schema), defaultValues: { email: "", password: "", }, }) async function onSubmit(values: FormValues) { try { await authStore.login(values.email, values.password) toast.success("Welcome back!") const to = location.state?.from?.pathname ?? "/auth/me" navigate(to, { replace: true }) } catch (e: any) { toast.error(e.message || "Login failed") } } return (
Sign in
( Email )} /> ( Password )} />
Forgot password? Create an account
) }