50 lines
1.9 KiB
JSON
50 lines
1.9 KiB
JSON
{
|
|
"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."
|
|
]
|
|
}
|