import { ArrowRight, CircleHelp, Sparkles } from 'lucide-react' import { SyntheticEvent, useState } from 'react' import Logo from '../../components/layout/Logo' import { FormField } from '../../components/form' import { ErrorAlert, errorMessage } from '../../components/actions' import { api, authStorage } from '../../api/client' export function LoginPage({ onLogin, sessionExpired, }: { onLogin: () => void sessionExpired: boolean }) { const [loading, setLoading] = useState(false) const [error, setError] = useState('') async function submit(event: SyntheticEvent) { event.preventDefault() setLoading(true) setError('') const form = new FormData(event.currentTarget) try { const auth = await api.login(String(form.get('email')), String(form.get('password'))) authStorage.save(auth) onLogin() } catch (requestError) { setError(errorMessage(requestError)) } finally { setLoading(false) } } return (
Better hiring, clearly connected

Find the right person for every journey.

Bring roles, assessments, and candidate insight together in one workspace.

Skills-first matching Structured signals for confident decisions

Designed for fair, collaborative recruitment.

Welcome back

Sign in to your workspace

{sessionExpired && (
Your session is no longer active. Sign in again to continue.
)}

Use your work account to continue.

{error && }

Contact your administrator for access.

) }