{ "id": "entity-modal", "name": "EntityModal", "kind": "component", "status": "draft-stable", "summary": "Dark glass edit/create modal used for services, clients, users, and groups.", "sourceRefs": [ { "project": "nodedc_launcher", "file": "src/widgets/admin-overlay/AdminOverlay.tsx", "functions": ["ServiceContentModal", "ClientEditorModal", "UserEditorModal", "GroupEditorModal", "EntityModalHead", "EntityModalFoot"] }, { "project": "nodedc_launcher", "file": "src/styles/globals.css", "classes": ["service-content-modal-layer", "service-content-modal", "service-content-field"] }, { "project": "nodedc_taskmanager", "file": "plane-src/apps/web/styles/globals.css", "classes": ["nodedc-glass-modal", "nodedc-modal-input", "nodedc-modal-editor", "nodedc-modal-primary-button"] } ], "anatomy": [ "fixed overlay layer", "modal shell", "head with eyebrow/title/close circle", "scrollable responsive grid", "fields", "footer with cancel, optional delete, save" ], "visualContract": { "shellWidth": "min(58rem, viewport - 2.8rem)", "radius": "modal", "background": "dark matte glass", "blur": "modal", "fieldRadius": "1rem to 1.25rem", "footerButtonHeight": "2.75rem" }, "rules": [ "Delete is left of Save inside the right footer action group.", "Footer buttons use the shared Button primitive with surface='modal'.", "Inline delete buttons inside edit modals use Button variant='danger' surface='modal', stay transparent until hover, and do not use red danger fills.", "Save uses Button variant='accent' surface='modal' with local white launcher accent and computed on-accent text.", "Cancel stays on the left.", "Close action is circular and transparent until hover.", "Fields/selects/textareas share the same glass family." ] }