Add LynkedUp roofing portal: full login + registration auth UI

- Split-screen dark/orange auth shell with animated scan showcase
- Login state machine: social/email, passkey, password, OTP (email/SMS/WhatsApp),
  TOTP, push, try-another-way, forgot-password, terms gate, success
- 4-step registration wizard: Account, Property, Verify, Address
- US-default phone + address with /api/geo lookup (PIN auto-fill / search)
- Roofing-themed content, Inter font, logo from public/image

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-27 18:36:08 +05:30
parent 50b120e184
commit 8c5df83d63
13 changed files with 2520 additions and 21 deletions
+3 -21
View File
@@ -1,24 +1,6 @@
import Link from "next/link";
import { siteConfig } from "@/config/site";
import { redirect } from "next/navigation";
// Login is the default first page — send visitors straight to the portal.
export default function Home() {
return (
<main className="flex-1 flex flex-col items-center justify-center text-center px-6 py-24">
<span className="text-sm font-medium text-neutral-500">
{siteConfig.shortName}
</span>
<h1 className="mt-3 text-4xl sm:text-5xl font-bold tracking-tight">
{siteConfig.name}
</h1>
<p className="mt-4 max-w-xl text-neutral-500">
{siteConfig.description}
</p>
<Link
href="/dashboard"
className="mt-8 inline-flex items-center rounded-full bg-neutral-900 text-white dark:bg-white dark:text-neutral-900 px-6 py-3 text-sm font-medium hover:opacity-90 transition-opacity"
>
Go to Dashboard
</Link>
</main>
);
redirect("/portal/login");
}