import { type FormEvent, useEffect, useState } from 'react' import { useNavigate } from 'react-router-dom' import { createStaff, fetchStaffFormOptions, type RoleOption } from '../../api/staff' export function StaffCreatePage() { const navigate = useNavigate() const [roles, setRoles] = useState([]) const [firstname, setFirstname] = useState('') const [lastname, setLastname] = useState('') const [email, setEmail] = useState('') const [password, setPassword] = useState('') const [roleId, setRoleId] = useState(0) const [error, setError] = useState(null) useEffect(() => { let cancelled = false ;(async () => { try { const data = await fetchStaffFormOptions() if (cancelled) return const list = data.roles ?? [] setRoles(list) if (list[0]?.id) setRoleId(Number(list[0].id)) } catch { if (!cancelled) setRoles([]) } })() return () => { cancelled = true } }, []) async function onSubmit(e: FormEvent) { e.preventDefault() if (!roleId) { setError('Please select a role.') return } try { await createStaff({ firstname, lastname, email, password, role_id: roleId }) navigate('/app/staff') } catch (err) { setError(err instanceof Error ? err.message : 'Unable to create staff.') } } return (

Add Staff Member

{error ?
{error}
: null}
void onSubmit(e)}>
setFirstname(e.target.value)} required />
setLastname(e.target.value)} required />
setEmail(e.target.value)} required />
setPassword(e.target.value)} required />
) }