diff --git a/apps/operator/assets/styles/tokens.css b/apps/operator/assets/styles/tokens.css index bb40023..0da2f4c 100644 --- a/apps/operator/assets/styles/tokens.css +++ b/apps/operator/assets/styles/tokens.css @@ -37,4 +37,47 @@ --font-mono: 'JetBrains Mono', ui-monospace, 'Menlo', monospace; --input-bg: rgba(244, 243, 238, 0.04); + + /* Cosmetic density. comfy=1, compact≈0.78. Used by page chrome that opts in + (PageHeader / table cells). Reading via calc() keeps layouts in one place. */ + --density-scale: 1; +} + +/* Tweaks: density overrides */ +:root[data-density='compact'] { --density-scale: 0.78; } + +/* Tweaks: light theme (warm cream, charcoal text). Overrides every surface + token so any component that uses var(--bg / --surface / --text / ...) flips + without code changes. Components that hard-code rgba(244,243,238,...) will + not flip — those should switch to tokens if they care about light mode. */ +:root[data-theme='light'] { + --bg: #F6F4EF; + --surface: #FAF8F2; + --elevated: #FFFFFF; + --border: #E2DED2; + --border-hi: #D0CBBC; + + --text: #1C1B17; + --text-dim: rgba(28, 27, 23, 0.72); + --text-mute: rgba(28, 27, 23, 0.50); + + --side-bg: #F0EDE4; + --side-surf: #FAF8F2; + --side-border: #E2DED2; + --side-text: #1C1B17; + --side-dim: rgba(28, 27, 23, 0.62); + --side-mute: rgba(28, 27, 23, 0.42); + --side-hover: rgba(28, 27, 23, 0.05); + --side-active: rgba(28, 27, 23, 0.08); + + --accent: #1F8A5B; + --accent-fg: #FAF8F2; + --signal: #1F8A5B; + + --ok: #1F8A5B; + --warn: #C97F1F; + --bad: #C03A3A; + --info: #2A6FDB; + + --input-bg: rgba(28, 27, 23, 0.04); } diff --git a/apps/operator/components/CommandPalette.vue b/apps/operator/components/CommandPalette.vue new file mode 100644 index 0000000..c777043 --- /dev/null +++ b/apps/operator/components/CommandPalette.vue @@ -0,0 +1,366 @@ + + + + + diff --git a/apps/operator/components/ImpersonationBanner.vue b/apps/operator/components/ImpersonationBanner.vue new file mode 100644 index 0000000..4a58d24 --- /dev/null +++ b/apps/operator/components/ImpersonationBanner.vue @@ -0,0 +1,86 @@ + + + + + diff --git a/apps/operator/components/ImpersonationModal.vue b/apps/operator/components/ImpersonationModal.vue new file mode 100644 index 0000000..82d7994 --- /dev/null +++ b/apps/operator/components/ImpersonationModal.vue @@ -0,0 +1,158 @@ + + + + + diff --git a/apps/operator/components/IncidentModal.vue b/apps/operator/components/IncidentModal.vue new file mode 100644 index 0000000..f6b43ed --- /dev/null +++ b/apps/operator/components/IncidentModal.vue @@ -0,0 +1,167 @@ + + + + + diff --git a/apps/operator/components/OpTopbar.vue b/apps/operator/components/OpTopbar.vue index d2701ed..06d6082 100644 --- a/apps/operator/components/OpTopbar.vue +++ b/apps/operator/components/OpTopbar.vue @@ -1,12 +1,9 @@