feat(foundry): close the operational map data loop

This commit is contained in:
Codex
2026-07-20 20:45:05 +03:00
parent aac44d057f
commit a02c3ff3dd
44 changed files with 4158 additions and 811 deletions
+95
View File
@@ -85,6 +85,24 @@
padding: var(--nodedc-space-6);
}
.nodedc-map-glass,
.nodedc-glass.nodedc-map-glass {
border: 0;
background: var(--nodedc-map-glass-bg);
color: var(--nodedc-map-glass-text);
box-shadow: var(--nodedc-glass-dropdown-shadow);
backdrop-filter: blur(var(--nodedc-blur-control));
-webkit-backdrop-filter: blur(var(--nodedc-blur-control));
}
.nodedc-dropdown-surface.nodedc-map-glass {
background: var(--nodedc-map-glass-bg);
color: var(--nodedc-map-glass-text);
box-shadow: var(--nodedc-glass-dropdown-shadow);
backdrop-filter: blur(var(--nodedc-blur-control));
-webkit-backdrop-filter: blur(var(--nodedc-blur-control));
}
.nodedc-button {
--nodedc-button-bg: var(--nodedc-glass-control-bg);
--nodedc-button-color: var(--nodedc-text-primary);
@@ -2112,6 +2130,83 @@ textarea.nodedc-field__control {
animation: nodedc-window-in var(--nodedc-duration-normal) var(--nodedc-ease-standard);
}
.nodedc-toast-viewport {
position: fixed;
z-index: 1600;
right: max(1rem, env(safe-area-inset-right));
bottom: max(1rem, env(safe-area-inset-bottom));
display: grid;
width: min(24rem, calc(100vw - 2rem));
gap: 0.55rem;
pointer-events: none;
}
.nodedc-toast {
position: relative;
isolation: isolate;
display: grid;
min-height: 4.4rem;
grid-template-columns: 2.45rem minmax(0, 1fr) auto;
align-items: center;
gap: 0.72rem;
overflow: hidden;
border-radius: var(--nodedc-radius-control);
padding: 0.72rem;
pointer-events: auto;
animation: nodedc-window-in var(--nodedc-duration-normal) var(--nodedc-ease-standard);
}
.nodedc-toast__icon {
display: grid;
width: 2.45rem;
height: 2.45rem;
place-items: center;
border-radius: 50%;
background: var(--nodedc-glass-control-bg);
color: var(--nodedc-text-secondary);
box-shadow: var(--nodedc-glass-control-shadow);
}
.nodedc-toast[data-tone="success"] .nodedc-toast__icon { color: rgb(var(--nodedc-success-rgb)); }
.nodedc-toast[data-tone="error"] .nodedc-toast__icon { color: rgb(var(--nodedc-danger-rgb)); }
.nodedc-toast[data-tone="warning"] .nodedc-toast__icon { color: rgb(var(--nodedc-warning-rgb)); }
.nodedc-toast[data-tone="info"] .nodedc-toast__icon { color: var(--nodedc-accent); }
.nodedc-toast[data-tone="loading"] .nodedc-toast__icon svg { animation: nodedc-toast-spin 900ms linear infinite; }
.nodedc-toast__copy {
display: grid;
min-width: 0;
gap: 0.18rem;
}
.nodedc-toast__copy strong {
color: var(--nodedc-text-primary);
font-size: var(--nodedc-font-size-sm);
line-height: 1.25;
}
.nodedc-toast__copy small {
color: var(--nodedc-text-muted);
font-size: var(--nodedc-font-size-xs);
line-height: 1.35;
}
.nodedc-toast__dismiss {
display: grid;
width: 2rem;
height: 2rem;
place-items: center;
border: 0;
border-radius: 50%;
background: transparent;
color: var(--nodedc-text-muted);
cursor: pointer;
}
.nodedc-toast__dismiss:hover { background: var(--nodedc-glass-control-hover); color: var(--nodedc-text-primary); }
@keyframes nodedc-toast-spin { to { transform: rotate(360deg); } }
.nodedc-window[data-size="sm"] {
width: min(28rem, calc(100vw - 2rem));
}