import { redirect } from "next/navigation";
import { auth, signIn } from "@/auth";
import { Brand } from "@/components/brand";
import { Button } from "@/components/ui/button";
import { Input } from "@/components/ui/input";

type SearchParams = Promise<{ callbackUrl?: string; error?: string }>;

export default async function LoginPage({
  searchParams,
}: {
  searchParams: SearchParams;
}) {
  const { callbackUrl, error } = await searchParams;

  const session = await auth();
  if (session?.user) {
    redirect(callbackUrl || "/");
  }

  const hasEntra =
    !!process.env.AUTH_MICROSOFT_ENTRA_ID_ID &&
    !!process.env.AUTH_MICROSOFT_ENTRA_ID_SECRET;
  const hasDevPassword = !!process.env.DEV_PORTAL_PASSWORD;

  return (
    <div className="flex min-h-full flex-col bg-[var(--color-bg-secondary)]">
      <div className="flex flex-1 items-center justify-center px-4 py-12">
        <div className="w-full max-w-sm">
          <div className="mb-6 flex justify-center">
            <Brand size="lg" />
          </div>
          <div className="rounded-xl border-[0.5px] border-[var(--color-border-default)] bg-[var(--color-card)] p-7 shadow-[var(--shadow-card)]">
            <h1 className="text-lg font-semibold text-[var(--color-text-primary)]">
              Přihlášení
            </h1>
            <p className="system-xs-regular mt-1 text-[var(--color-text-tertiary)]">
              Pokračujte přihlášením přes firemní účet.
            </p>

            {error ? (
              <div className="mt-5 rounded-lg border-[0.5px] border-[var(--color-destructive-border)] bg-[var(--color-destructive-bg)] px-3 py-2.5 text-xs text-[var(--color-destructive)]">
                Přihlášení se nezdařilo. Zkuste to prosím znovu.
              </div>
            ) : null}

            {hasEntra ? (
              <form
                className="mt-6"
                action={async () => {
                  "use server";
                  await signIn("microsoft-entra-id", {
                    redirectTo: callbackUrl || "/",
                  });
                }}
              >
                <Button type="submit" className="w-full" size="lg">
                  Pokračovat přes Microsoft
                </Button>
              </form>
            ) : null}

            {hasEntra && hasDevPassword ? (
              <div className="my-6 flex items-center gap-3 text-xs text-[var(--color-text-quaternary)]">
                <span className="h-px flex-1 bg-[var(--color-border-default)]" />
                nebo
                <span className="h-px flex-1 bg-[var(--color-border-default)]" />
              </div>
            ) : null}

            {hasDevPassword ? (
              <form
                className="mt-6 flex flex-col gap-3"
                action={async (formData: FormData) => {
                  "use server";
                  await signIn("dev", {
                    password: formData.get("password"),
                    redirectTo: callbackUrl || "/",
                  });
                }}
              >
                <label className="system-xs-medium text-[var(--color-text-secondary)]">
                  Vývojový přístup
                </label>
                <Input
                  name="password"
                  type="password"
                  placeholder="Přístupové heslo"
                  required
                  autoFocus
                />
                <Button type="submit" variant="secondary" size="lg">
                  Přihlásit se heslem
                </Button>
              </form>
            ) : null}

            {!hasEntra && !hasDevPassword ? (
              <p className="mt-6 rounded-lg bg-[var(--color-bg-tertiary)] p-4 text-sm text-[var(--color-text-tertiary)]">
                Není nakonfigurován žádný poskytovatel přihlášení. Nastavte{" "}
                <code className="font-mono text-xs">DEV_PORTAL_PASSWORD</code>{" "}
                nebo Microsoft Entra v prostředí.
              </p>
            ) : null}
          </div>

          <p className="mt-6 text-center text-xs text-[var(--color-text-quaternary)]">
            Interní AI portál společnosti Colsys
          </p>
        </div>
      </div>
    </div>
  );
}
