# AdminFormModal THE form-modal shell for admin editors: header (+optional subtitle), a real `
` with Enter-to-submit, one- or two-column scrolling content (`children` XOR `leftColumn`+`rightColumn` — two-column auto-upgrades the panel to `size="wide"`), a skeleton `loading` state whose column count follows the PANEL width (master-detail modals pass `children` at `wide`), an `error` line outside the scroll region, a dirty guard (`useGuardedClose` + chip), and a Cancel/Save footer with `footerExtras` (left, secondary) / `footerActions` (right, beside Save) slots. Migrated from the hub (`components/admin/shared/admin-form-modal.tsx`), where ~35 editor modals standardized on it — the shell belongs in the design system, not per-app. It intentionally does NO field autofocus (ModalV2 owns focus) and its `subtitle` renders in a `
` because callers pass Badges (divs), which are invalid inside `

` and caused hydration mismatches. `source-hash` intentionally omitted — verify against the component directly.