import { useRouter } from 'next/router'; import { FormEvent, useState } from 'react'; import Layout from '../../components/Layout'; import { api } from '../../lib/api'; import { useRequireAuth } from '../../lib/auth-context'; export default function NewJobPage() { const { user, activeOrg, loading } = useRequireAuth(); const router = useRouter(); const [form, setForm] = useState({ ticketNumber: '', title: '', address: '', description: '', dueAt: '' }); const [error, setError] = useState(null); const [submitting, setSubmitting] = useState(false); const set = (key: keyof typeof form) => (e: { target: { value: string } }) => setForm((f) => ({ ...f, [key]: e.target.value })); const onSubmit = async (e: FormEvent) => { e.preventDefault(); if (!activeOrg) { return; } setError(null); setSubmitting(true); try { const job = await api.post<{ id: string }>(`/api/orgs/${activeOrg.org.id}/jobs`, { ticketNumber: form.ticketNumber, title: form.title, address: form.address || undefined, description: form.description || undefined, dueAt: form.dueAt ? new Date(form.dueAt).toISOString() : undefined, }); router.push(`/jobs/${job.id}`); } catch (err: any) { setError(err.message || 'Failed to create job'); setSubmitting(false); } }; if (loading || !user) { return null; } return (

New job