import { Suspense } from 'react'
import { redirect } from 'next/navigation'
import { LoginForm } from './login-form'
import { getCurrentUser } from '@/lib/auth/session'

type LoginPageProps = {
  searchParams?: Promise<{
    returnTo?: string | string[]
  }>
}

function normalizeReturnTo(value: string | string[] | undefined) {
  const raw = Array.isArray(value) ? value[0] : value
  if (!raw || !raw.startsWith('/') || raw.startsWith('//')) return '/'
  return raw
}

export default async function LoginPage({ searchParams }: LoginPageProps) {
  const user = await getCurrentUser()
  if (user) {
    const params = searchParams ? await searchParams : {}
    redirect(normalizeReturnTo(params.returnTo))
  }

  return (
    <main className="relative min-h-screen overflow-hidden bg-page text-primary">
      {/* Ambient gradient backdrop */}
      <div
        aria-hidden
        className="pointer-events-none absolute inset-0"
        style={{
          backgroundImage:
            'radial-gradient(60% 50% at 20% 0%, color-mix(in oklch, var(--accent-indigo) 18%, transparent) 0%, transparent 60%),' +
            'radial-gradient(50% 40% at 100% 100%, color-mix(in oklch, var(--accent-coral) 14%, transparent) 0%, transparent 60%)',
        }}
      />
      <div className="relative flex min-h-screen items-center justify-center px-6 py-12">
        <Suspense fallback={<div className="text-sm text-secondary">Loading…</div>}>
          <LoginForm />
        </Suspense>
      </div>
    </main>
  )
}
