import { Button } from "@/components/ui/button";
import { useAuth } from "@/contexts/AuthContext";
import { useState } from "react";
export default function Login() {
const { signInWithEmail } = useAuth();
const [email, setEmail] = useState("");
const [status, setStatus] = useState<"idle" | "sending" | "sent" | "error">("idle");
const [errorMsg, setErrorMsg] = useState("");
async function onSubmit(e: React.FormEvent) {
e.preventDefault();
if (!email.trim()) return;
setStatus("sending");
setErrorMsg("");
const { error } = await signInWithEmail(email.trim());
if (error) {
setStatus("error");
setErrorMsg(error.message);
} else {
setStatus("sent");
}
}
return (
<div className="min-h-screen flex items-center justify-center bg-background p-6">
<div className="w-full max-w-sm space-y-6">
<div className="space-y-1">
<h1 className="text-2xl font-bold">devist dashboard</h1>
<p className="text-sm text-muted-foreground">
Sign in with a magic link sent to your email.
</p>
</div>
<form onSubmit={onSubmit} className="space-y-3">
<input
type="email"
required
placeholder="you@example.com"
value={email}
onChange={(e) => setEmail(e.target.value)}
disabled={status === "sending" || status === "sent"}
className="w-full rounded-md border bg-background px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-ring"
/>
<Button
type="submit"
className="w-full"
disabled={status === "sending" || status === "sent"}
>
{status === "sending"
? "Sending…"
: status === "sent"
? "Check your email"
: "Send magic link"}
</Button>
</form>
{status === "sent" && (
<p className="text-sm text-green-600">
Link sent. Open it on this device to finish signing in.
</p>
)}
{status === "error" && <p className="text-sm text-red-600">{errorMsg}</p>}
</div>
</div>
);
}