import { useState } from 'react'; import type { FormEvent } from 'react'; import { useLocation, useNavigate } from 'react-router-dom'; import { ArrowRight, CalendarClock, Eye, EyeOff, Lock, Mail, ShieldCheck, Sparkles } from 'lucide-react'; import { Button } from '../components'; import { ZinoLogo } from '../components/ZinoLogo'; import { useZino } from '../api/provider'; const HIGHLIGHTS = [ { Icon: Sparkles, title: 'AI employees do the legwork', body: 'Aria qualifies, engages and schedules leads autonomously.' }, { Icon: ShieldCheck, title: 'Capture → underwrite → issue', body: 'The whole policy lifecycle in one guided console.' }, { Icon: CalendarClock, title: 'Live pipeline & agent scheduling', body: 'Every lead, meeting and decision as it happens.' }, ]; function Field({ label, icon, trailing, ...rest }: { label: string; icon: React.ReactNode; trailing?: React.ReactNode; } & React.InputHTMLAttributes) { return ( ); } export function Login() { const { login } = useZino(); const navigate = useNavigate(); const location = useLocation(); const from = (location.state as { from?: string })?.from ?? '/pipeline'; const [email, setEmail] = useState('admin@getzino.com'); const [password, setPassword] = useState('Zino'); const [show, setShow] = useState(false); const [error, setError] = useState(null); const [busy, setBusy] = useState(false); async function onSubmit(e: FormEvent) { e.preventDefault(); setBusy(true); setError(null); try { await login(email, password); navigate(from, { replace: true }); } catch (err) { setError(err instanceof Error ? err.message : ((err as { message?: string })?.message ?? 'Login failed')); } finally { setBusy(false); } } return (
{/* subtle grid, faded toward the edges */}
{/* one soft static glow for warmth */}
{/* one glass container holding the brand story (left) + the form (right) */}
{/* brand story */}
Lead-to-policy console

The AI-native
lead-to-policy console.

{HIGHLIGHTS.map((h) => (
{h.title}
{h.body}
))}
{/* form side */}
A
Welcome back
Sign in to your console
} type="email" value={email} onChange={(e) => setEmail(e.target.value)} autoComplete="username" placeholder="you@company.com" /> } type={show ? 'text' : 'password'} value={password} onChange={(e) => setPassword(e.target.value)} autoComplete="current-password" placeholder="••••••••" trailing={ } /> {error && (
{error}
)}
); }