Files
gov-portals-monorepo/ICCC/app/(auth)/login/page.tsx
2026-02-13 10:30:56 -08:00

56 lines
1.9 KiB
TypeScript

"use client";
import { Suspense } from "react";
import { useSearchParams } from "next/navigation";
import Link from "next/link";
function LoginForm() {
const searchParams = useSearchParams();
const returnUrl = searchParams.get("returnUrl") ?? "/dashboard";
return (
<div className="container mx-auto px-4 py-12 max-w-md">
<h1 className="text-3xl font-bold text-neutral-900">Sign in</h1>
<p className="mt-2 text-neutral-600">
Placeholder login. Replace with OIDC/OAuth 2.0 when identity provider is configured.
</p>
<form action="/api/auth/mock-login" method="POST" className="mt-6 space-y-4">
<input type="hidden" name="returnUrl" value={returnUrl} />
<div>
<label htmlFor="role" className="block text-sm font-medium text-neutral-700">
Role (dev placeholder)
</label>
<select
id="role"
name="role"
className="mt-1 block w-full rounded border border-neutral-300 px-3 py-2 focus:border-primary-500 focus:ring-1 focus:ring-primary-500"
>
<option value="member">Member</option>
<option value="staff">Staff</option>
<option value="admin">Admin</option>
</select>
</div>
<button
type="submit"
className="w-full rounded-md bg-primary-600 px-4 py-2 text-sm font-medium text-white hover:bg-primary-700 focus:outline-none focus:ring-2 focus:ring-primary-500 focus:ring-offset-2"
>
Sign in
</button>
</form>
<p className="mt-4 text-sm text-neutral-500">
<Link href={returnUrl} className="text-primary-600 hover:underline">
Return to previous page
</Link>
</p>
</div>
);
}
export default function LoginPage() {
return (
<Suspense fallback={<div className="container mx-auto px-4 py-12 max-w-md">Loading...</div>}>
<LoginForm />
</Suspense>
);
}