diff --git a/ar-aging-app/frontend/src/pages/Login.tsx b/ar-aging-app/frontend/src/pages/Login.tsx index f9da737..184266d 100644 --- a/ar-aging-app/frontend/src/pages/Login.tsx +++ b/ar-aging-app/frontend/src/pages/Login.tsx @@ -1,12 +1,18 @@ import { FormEvent, useState } from "react"; -import { Landmark, LogIn } from "lucide-react"; +import { BadgeCheck, Eye, EyeOff, Landmark, Lock, LogIn, ShieldCheck, User } from "lucide-react"; import { Spinner } from "../components/ui"; import { useAuth } from "../auth"; +/** + * Sign-in screen: navy brand panel (desktop) + form on the app canvas. + * Uses the app's "ledgr" tokens — periwinkle primary, navy, lavender canvas — so the + * login feels like the first screen of the dashboard, not a bolt-on. + */ export default function Login() { const { login } = useAuth(); const [username, setUsername] = useState(""); const [password, setPassword] = useState(""); + const [showPw, setShowPw] = useState(false); const [error, setError] = useState(null); const [busy, setBusy] = useState(false); @@ -24,41 +30,147 @@ export default function Login() { }; return ( -
-
-
- - +
+ {/* ---------------- brand panel (desktop) ---------------- */} +
+ + + {/* ---------------- sign-in form ---------------- */} +
+
+ {/* compact brand header for mobile, where the panel is hidden */} +
+ + + +
+
Amazon A/R Aging
+
Month-End Closing
+
+
+ +

Welcome back

+

Sign in to continue to this month's closing.

+ +
+
+ +
+ + setUsername(e.target.value)} + /> +
+
+ +
+ +
+ + setPassword(e.target.value)} + /> + +
+
+ + {error && ( +
+ {error} +
+ )} + + +
+ +

+ No account or forgot your password? Ask the administrator — accounts are + created and reset on the server, never self-service. +

+
+
+ + {/* one-time entrance; browsers honouring reduced motion skip it via motion-safe */} +
); }