From 2f3e04cfc38712e1f42049e19f5baf3bbe1c93b9 Mon Sep 17 00:00:00 2001 From: Zac Gaetano Date: Thu, 21 May 2026 12:30:36 -0400 Subject: [PATCH] =?UTF-8?q?web-ui:=20wave-1=20foundation=20=E2=80=94=20ser?= =?UTF-8?q?vices/web-ui/src/css/components/card-operational.css?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/css/components/card-operational.css | 90 +++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 services/web-ui/src/css/components/card-operational.css diff --git a/services/web-ui/src/css/components/card-operational.css b/services/web-ui/src/css/components/card-operational.css new file mode 100644 index 0000000..1118660 --- /dev/null +++ b/services/web-ui/src/css/components/card-operational.css @@ -0,0 +1,90 @@ +/* card-operational.css ─ header + content + footer, for recorders/cluster/jobs. + * Different SHAPE than asset cards on purpose (impeccable ban: identical card grids). */ + +.wd-card-op { + display: flex; + flex-direction: column; + gap: 10px; + padding: 14px; + background: var(--bg-panel); + border: 1px solid var(--border-faint); + border-radius: 6px; + transition: border-color 120ms cubic-bezier(0.25, 1, 0.5, 1); +} +.wd-card-op:hover { border-color: var(--border); } +.wd-card-op.is-active { border-color: var(--accent-border); } + +.wd-card-op-header { + display: flex; + align-items: center; + justify-content: space-between; + gap: 8px; +} +.wd-card-op-name { + font: 600 14px/1.2 var(--font); + color: var(--text-primary); + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.wd-card-op-content { + display: flex; + flex-direction: column; + gap: 8px; + font: 400 13px/1.4 var(--font); + color: var(--text-secondary); +} + +.wd-card-op-footer { + display: flex; + align-items: center; + justify-content: space-between; + gap: 8px; + padding-top: 8px; + border-top: 1px solid var(--border-faint); +} +.wd-card-op-meta { + font: 400 11px/1 var(--font-mono); + color: var(--text-tertiary); + letter-spacing: 0.02em; +} +.wd-card-op-actions { display: flex; gap: 6px; } + +/* Mini bars (CPU/mem on cluster cards) */ +.wd-mini-bar { + width: 100%; + height: 4px; + background: var(--bg-deep); + border-radius: 2px; + overflow: hidden; +} +.wd-mini-bar-fill { + height: 100%; + background: var(--accent); + transition: width 240ms cubic-bezier(0.16, 1, 0.3, 1); +} +.wd-mini-bar-fill--warn { background: var(--signal-warn); } +.wd-mini-bar-fill--bad { background: var(--signal-bad); } + +/* Signal strip (recorder live indicator) */ +.wd-signal-strip { + position: relative; + height: 4px; + background: var(--bg-deep); + border-radius: 2px; + overflow: hidden; +} +.wd-signal-strip-fill { + position: absolute; + inset: 0; + width: 100%; + background: linear-gradient(90deg, var(--accent), oklch(70% 0.18 266)); +} + +/* Grid container */ +.wd-card-op-grid { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(380px, 1fr)); + gap: 14px; +}