import React, { useEffect, useState } from 'react'; import { createRoot } from 'react-dom/client'; import { Workspace } from './pages/Workspace'; function App() { const [state, setState] = useState<'loading' | 'login' | 'workspace' | 'error'>('loading'); useEffect(() => { fetch('/api/session').then(response => setState(response.ok ? 'workspace' : response.status === 401 ? 'login' : 'error')).catch(() => setState('error')); }, []); if (state === 'loading') return

Loading workspace…

; if (state === 'error') return

Workspace unavailable. Reload to retry.

; if (state === 'workspace') return ; return

Sign in

{ event.preventDefault(); const form = new FormData(event.currentTarget); const response = await fetch('/api/login', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ email: form.get('email'), password: form.get('password') }) }).catch(() => null); if (response?.ok) location.assign('/workspace'); else setState('error'); }}>
; } createRoot(document.getElementById('root')!).render();