// Login screen — única tela pública. Autentica via POST /v1/auth/login (email + senha). function LoginScreen({ onAuth }) { const [email, setEmail] = useState(''); const [senha, setSenha] = useState(''); const [loading, setLoading] = useState(false); const [err, setErr] = useState(null); const submit = async (e) => { e.preventDefault(); setErr(null); if (!email || !senha) { setErr('Informe e-mail e senha.'); return; } setLoading(true); try { const res = await fetch(`${API_BASE}/v1/auth/login`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ email, password: senha }), }); if (!res.ok) { const body = await res.json().catch(() => ({})); setErr(body.detail || 'Não foi possível entrar. Verifique e-mail e senha.'); return; } const data = await res.json(); onAuth({ token: data.access_token, user: data.user, tenant: data.tenant, expiresAt: data.expires_at }); } catch (_e) { setErr('Falha de conexão com o servidor. Tente novamente em instantes.'); } finally { setLoading(false); } }; return (
{/* Left brand panel */}
Plataforma de viabilidade pericial

Análise revisional de contratos
em minutos, não em dias.

Envie o contrato em PDF e receba planilha de cálculo, painel de viabilidade e memória técnica detalhada. Taxa abusiva, capitalização e CET XIRR verificados nos parâmetros do Bacen na data-base.

{[ ['Critérios objetivos', 'Excesso de taxa vs. média Bacen, capitalização em periodicidade inferior à anual.'], ['Alertas operacionais', 'Urgência processual, custódia frágil e refinanciamento sinalizados ao perito.'], ['Memória de cálculo verificável', 'CET via XIRR, seguros listados 1-a-1 e fontes citadas.'], ].map(([t, d]) => (
{t}
{d}
))}
Análise prévia sem validade jurídica · Documento interno e comercial
{/* Right login form */}

Entrar na sua conta

Acesso restrito a peritos credenciados.

setEmail(e.target.value)} placeholder="voce@escritorio.com.br" autoComplete="username" autoFocus /> setSenha(e.target.value)} placeholder="••••••••" autoComplete="current-password" /> {err && (
{err}
)}
Periciei v1.0
); } window.LoginScreen = LoginScreen;