"use client"; import { Loader2 } from "lucide-react"; import { useRouter } from "next/navigation"; import { useEffect, useState } from "react"; import { Button } from "@/components/ui/button"; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { signIn, useSession } from "@/lib/auth-client"; export default function LoginPage() { const router = useRouter(); const { data: session, isPending } = useSession(); const [loading, setLoading] = useState(false); const [error, setError] = useState(""); useEffect(() => { if (!isPending && session?.user) { router.replace("/dashboard"); } }, [session, isPending, router]); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); setLoading(true); setError(""); const formData = new FormData(e.currentTarget); const email = formData.get("email") as string; const password = formData.get("password") as string; try { const result = await signIn.email({ email, password, }); if (result.error) { setError(result.error.message || "Invalid email or password"); } else { router.push("/dashboard"); } } catch (_err) { setError("Failed to connect to server"); } finally { setLoading(false); } }; if (isPending) { return (
); } if (session?.user) { return (
); } return (
Minikura Sign in to your account
{error &&
{error}
}
); }