// FRAZIER Finance OS β€” login. Real session auth (see api/lib/fin-auth.php), // no self-signup β€” accounts are provisioned manually. Founder-only per spec. function FinLogin({ onLoggedIn }) { const [loginId, setLoginId] = React.useState(''); const [password, setPassword] = React.useState(''); const [busy, setBusy] = React.useState(false); const [err, setErr] = React.useState(null); const submit = async (e) => { e.preventDefault(); if (busy || !loginId.trim() || !password) return; setBusy(true); setErr(null); try { const d = await finApi('fin_login', { body: { loginId: loginId.trim(), password } }); onLoggedIn(d.user); } catch (e2) { setErr((e2 && e2.message) || 'Could not log in.'); } finally { setBusy(false); } }; return (

FRAZIER Finance OS

Private β€” founder access only.

{err ?
{err}
: null}
); } Object.assign(window, { FinLogin });