"use client";
import Link from "next/link";
import { useRouter } from "next/navigation";
import { useState } from "react";
import { Loader2 } from "lucide-react";

import { Navbar } from "@/components/Navbar";
import { useAuth } from "@/lib/auth";

export default function LoginPage() {
  const router = useRouter();
  const { login } = useAuth();
  const [email, setEmail] = useState("");
  const [password, setPassword] = useState("");
  const [error, setError] = useState<string | null>(null);
  const [loading, setLoading] = useState(false);

  async function onSubmit(e: React.FormEvent) {
    e.preventDefault();
    setError(null);
    setLoading(true);
    try {
      await login(email, password);
      router.push("/buscar");
    } catch (err) {
      setError(err instanceof Error ? err.message : "Error al iniciar sesión");
    } finally {
      setLoading(false);
    }
  }

  const input =
    "w-full rounded-xl border border-line bg-bg-card px-3 py-2.5 text-sm outline-none focus:border-accent";

  return (
    <div className="min-h-screen">
      <Navbar />
      <div className="relative overflow-hidden">
        <div className="pointer-events-none absolute inset-0 bg-[radial-gradient(50%_40%_at_50%_-10%,rgba(6,182,212,0.12),transparent)]" />
        <div className="mx-auto max-w-sm animate-fade-in px-4 py-16">
          <div className="rounded-2xl border border-line bg-bg-card p-6 shadow-soft">
            <span className="font-music text-3xl text-accent">𝄞𝄢</span>
            <h1 className="mt-3 text-2xl font-bold tracking-tight">Entrar</h1>
            <p className="mt-1 text-sm text-ink-soft">Bienvenido de nuevo a Gotagig.</p>

            <form onSubmit={onSubmit} className="mt-6 space-y-3">
              <input type="email" required placeholder="Email" value={email}
                onChange={(e) => setEmail(e.target.value)} className={input} />
              <input type="password" required placeholder="Contraseña" value={password}
                onChange={(e) => setPassword(e.target.value)} className={input} />

              {error && <p className="text-sm text-red-500">{error}</p>}

              <button type="submit" disabled={loading}
                className="flex w-full items-center justify-center gap-2 rounded-xl bg-accent py-2.5 font-semibold text-white hover:bg-accent-deep disabled:opacity-60">
                {loading && <Loader2 size={16} className="animate-spin" />}
                Entrar
              </button>
            </form>

            <p className="mt-4 text-center text-sm text-ink-soft">
              ¿No tenés cuenta?{" "}
              <Link href="/registro" className="font-semibold text-accent-deep hover:underline">
                Crear cuenta
              </Link>
            </p>
          </div>
        </div>
      </div>
    </div>
  );
}
