import { resolveGoogleAuth } from "@/lib/googleAuth";
import { withBase } from "@/lib/basePath";

const ERRORS: Record<string, string> = {
  invalid: "Incorrect email or password.",
  google_off: "Google sign-in is not configured on this environment.",
  state: "Sign-in session expired — please try again.",
  exchange: "Could not complete Google sign-in.",
  no_email: "Google did not return an email address.",
  not_allowed: "This account is not on the allow-list.",
};

export default async function LoginPage({
  searchParams,
}: {
  searchParams: Promise<{ error?: string; from?: string }>;
}) {
  const sp = await searchParams;
  const from = sp.from || "/";
  const error = sp.error ? ERRORS[sp.error] || "Sign-in failed." : null;
  const googleEnabled = !!resolveGoogleAuth().clientId;

  return (
    <div className="login-card panel">
      <h1 className="page-title">Digt POC Hub</h1>
      <p className="page-sub">Sign in to continue.</p>

      {error && <div className="notice err">{error}</div>}

      <form method="post" action={withBase("/api/auth/login")}>
        <input type="hidden" name="from" value={from} />
        <label className="label">Email</label>
        <input className="input" name="email" type="email" required autoComplete="username" placeholder="you@digt.ch" />
        <label className="label">Password</label>
        <input className="input" name="password" type="password" required autoComplete="current-password" />
        <button className="btn primary" type="submit" style={{ marginTop: 16, width: "100%" }}>Sign in</button>
      </form>

      {googleEnabled && (
        <>
          <div className="or">or</div>
          <a className="btn" style={{ display: "block", textAlign: "center" }} href={withBase("/api/auth/google/start")}>
            Sign in with Google
          </a>
        </>
      )}
    </div>
  );
}
