From 15ff6db1d339507207f2187ea8da2bffaec88ab3 Mon Sep 17 00:00:00 2001 From: Marcel Date: Sat, 13 Jun 2026 22:45:39 +0200 Subject: [PATCH] feat(timeline): add EventForm curator create/edit form One component for both routes: /new renders it empty, /[id]/edit seeds it from a TimelineEventView. Composes EventTypeSelect, the shared DatePrecisionField, a plain-textarea description, PersonMultiSelect and DocumentMultiSelect (personIds /documentIds hidden inputs). lg:grid-cols-[2fr_1fr] collapsing to one column below lg, sticky save bar, beforeNavigate unsaved-changes guard, submitting flag via use:enhance (disabled submit), and a delete form gated by getConfirmService() read lazily so the component mounts cleanly in isolation. Title/description/chip labels render via default {...} escaping (CWE-79). Seeded DocumentRefs degrade gracefully to DocumentOption (no precision fields). Pickers gain an inputId prop so