import { useState, type FormEvent } from 'react' import { useAuth } from '../../contexts/AuthContext' import api from '../../services/api' import { Button } from '@/components/ui/button' import { Input } from '@/components/ui/input' import { Label } from '@/components/ui/label' import { Alert, AlertDescription } from '@/components/ui/alert' export function SetupPage() { const { onSetupComplete } = useAuth() const [username, setUsername] = useState('') const [password, setPassword] = useState('') const [confirmPassword, setConfirmPassword] = useState('') const [error, setError] = useState(null) const [loading, setLoading] = useState(false) const handleSubmit = async (e: FormEvent) => { e.preventDefault() setError(null) if (password !== confirmPassword) { setError('Passwords do not match.') return } if (password.length < 6) { setError('Password must be at least 6 characters.') return } if (username.trim().length < 2) { setError('Username must be at least 2 characters.') return } setLoading(true) try { const res = await api.post('/auth/setup', { username: username.trim(), password, }) const { access_token, refresh_token } = res.data await onSetupComplete(access_token, refresh_token) } catch (err: any) { setError( err.response?.data?.detail ?? 'Setup failed. Please try again.', ) } finally { setLoading(false) } } return (

Welcome to Mulita

Create your admin account to get started.

{error && ( {error} )}
setUsername(e.target.value)} required autoFocus />
setPassword(e.target.value)} required />
setConfirmPassword(e.target.value)} required />
) }