style: unify all views on Mission Control V2 design tokens
CI - Build & Test / Backend (.NET) (push) Successful in 31s
CI - Build & Test / Frontend (Vue/TS) (push) Successful in 16s
CI - Build & Test / Security Check (push) Successful in 3s
CI - Build & Test / Deploy Nexus (push) Has been skipped

- Map legacy v1 CSS variables (--nx-*, --panel, --text-*, --surface*) to V2 tokens in nexus-tokens.css
- Restyle global shell (main.css), AppSidebar, AppHeader to match V2 Sidebar/Topbar (glass, gradients, Space Grotesk)
- Add GalaxyBackground to the v1 shell in App.vue
- Replace hardcoded v1 hex colors with V2 tokens in all deviating views (Agents, Calendar, Docs, Incidents, Memory, Notifications, ProjectDetail, Security, Team, TaskDetail, Settings)
- Keep JS status colors as hex where alpha suffixes are concatenated (AgentsIndex, Team, Notifications)
- Add Settings nav item (System group) + gear icon to V2 sidebar so it shows on the dashboard
- No component or layout structure changes; LoginView and TaskBoardView untouched

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-10 08:05:52 +02:00
parent 706ff82ccd
commit 86ceb2bcce
18 changed files with 523 additions and 431 deletions
+29 -29
View File
@@ -409,7 +409,7 @@ onMounted(() => {
}
.grad-text {
background: linear-gradient(135deg, #4f7cff, #b557f6);
background: linear-gradient(135deg, var(--a-blue), var(--a-purple));
-webkit-background-clip: text;
background-clip: text;
color: transparent;
@@ -418,7 +418,7 @@ onMounted(() => {
.settings-subtitle {
margin: 4px 0 0;
font-size: 11px;
color: #6f6aa0;
color: var(--tx-3);
font-family: 'Manrope', sans-serif;
}
@@ -444,7 +444,7 @@ onMounted(() => {
display: flex;
align-items: center;
gap: 10px;
color: #ece9ff;
color: var(--tx);
padding-bottom: 14px;
border-bottom: 1px solid rgba(150, 140, 255, 0.08);
}
@@ -470,7 +470,7 @@ onMounted(() => {
.field label {
font-size: 10px;
font-weight: 600;
color: #a8a3d6;
color: var(--tx-2);
text-transform: uppercase;
letter-spacing: 0.05em;
}
@@ -490,7 +490,7 @@ onMounted(() => {
border: 1px solid rgba(150, 140, 255, 0.12);
border-radius: 11px;
background: rgba(10, 9, 24, 0.55);
color: #ece9ff;
color: var(--tx);
font-size: 13.5px;
font-family: 'Manrope', sans-serif;
outline: none;
@@ -513,13 +513,13 @@ onMounted(() => {
}
.galaxy-select option {
background: #141130;
color: #ece9ff;
background: var(--space-3);
color: var(--tx);
}
.value-tag {
font-size: 14px;
color: #ece9ff;
color: var(--tx);
font-weight: 500;
}
@@ -538,7 +538,7 @@ onMounted(() => {
text-transform: uppercase;
letter-spacing: 0.05em;
background: linear-gradient(135deg, rgba(79, 124, 255, 0.15), rgba(181, 87, 246, 0.15));
color: #b8adff;
color: var(--a-mid);
border: 1px solid rgba(124, 108, 255, 0.15);
width: fit-content;
}
@@ -589,14 +589,14 @@ onMounted(() => {
border: none;
border-radius: 8px;
background: transparent;
color: #6f6aa0;
color: var(--tx-3);
cursor: pointer;
transition: background 0.15s, color 0.15s;
}
.pw-toggle:hover {
background: rgba(124, 108, 255, 0.08);
color: #a8a3d6;
color: var(--tx-2);
}
/* ── Messages ──────────────────────────────────── */
@@ -613,13 +613,13 @@ onMounted(() => {
.msg.error {
background: rgba(244, 63, 94, 0.1);
border: 1px solid rgba(244, 63, 94, 0.2);
color: #fda4af;
color: var(--st-block);
}
.msg.success {
background: rgba(34, 197, 94, 0.1);
border: 1px solid rgba(34, 197, 94, 0.2);
color: #86efac;
color: var(--st-work);
}
/* ── Buttons ──────────────────────────────────── */
@@ -630,7 +630,7 @@ onMounted(() => {
padding: 9px 16px;
border: none;
border-radius: 10px;
background: linear-gradient(135deg, #4f7cff, #7c6cff, #b557f6);
background: linear-gradient(135deg, var(--a-blue), var(--a-mid), var(--a-purple));
color: #fff;
font-size: 12.5px;
font-weight: 600;
@@ -665,7 +665,7 @@ onMounted(() => {
font-family: 'Manrope', sans-serif;
background: transparent;
border: 1px solid rgba(150, 140, 255, 0.12);
color: #a8a3d6;
color: var(--tx-2);
border-radius: 8px;
cursor: pointer;
transition: background 0.15s, color 0.15s;
@@ -673,7 +673,7 @@ onMounted(() => {
.btn-ghost:hover {
background: rgba(124, 108, 255, 0.08);
color: #ece9ff;
color: var(--tx);
}
/* ── Admin User Management ───────────────────── */
@@ -711,7 +711,7 @@ onMounted(() => {
place-items: center;
background: linear-gradient(135deg, rgba(79, 124, 255, 0.2), rgba(181, 87, 246, 0.2));
border: 1px solid rgba(124, 108, 255, 0.15);
color: #b8adff;
color: var(--a-mid);
font-weight: 700;
font-size: 14px;
flex-shrink: 0;
@@ -725,12 +725,12 @@ onMounted(() => {
.user-name {
font-size: 13px;
font-weight: 600;
color: #ece9ff;
color: var(--tx);
}
.user-email {
font-size: 11px;
color: #6f6aa0;
color: var(--tx-3);
display: flex;
align-items: center;
gap: 4px;
@@ -754,31 +754,31 @@ onMounted(() => {
text-transform: uppercase;
letter-spacing: 0.04em;
background: rgba(124, 108, 255, 0.1);
color: #b8adff;
color: var(--a-mid);
border: 1px solid rgba(124, 108, 255, 0.1);
}
.role-tag.owner {
background: linear-gradient(135deg, rgba(244, 63, 94, 0.15), rgba(251, 191, 36, 0.15));
color: #fde68a;
color: var(--st-queue);
border-color: rgba(251, 191, 36, 0.2);
}
.role-tag.admin {
background: rgba(79, 124, 255, 0.12);
color: #93c5fd;
color: var(--a-blue);
border-color: rgba(79, 124, 255, 0.2);
}
.role-tag.viewer {
background: rgba(107, 103, 150, 0.15);
color: #a8a3d6;
color: var(--tx-2);
border-color: rgba(107, 103, 150, 0.2);
}
.user-date {
font-size: 10px;
color: #6f6aa0;
color: var(--tx-3);
}
.loading-pulse {
@@ -806,7 +806,7 @@ onMounted(() => {
align-items: center;
gap: 12px;
padding: 32px;
color: #6f6aa0;
color: var(--tx-3);
}
.empty-state p {
@@ -849,7 +849,7 @@ onMounted(() => {
margin: 0;
font-size: 16px;
font-weight: 700;
color: #ece9ff;
color: var(--tx);
font-family: 'Space Grotesk', sans-serif;
}
@@ -861,7 +861,7 @@ onMounted(() => {
justify-content: center;
border: none;
background: transparent;
color: #6f6aa0;
color: var(--tx-3);
cursor: pointer;
border-radius: 6px;
font-size: 20px;
@@ -870,11 +870,11 @@ onMounted(() => {
.modal-close:hover {
background: rgba(124, 108, 255, 0.08);
color: #ece9ff;
color: var(--tx);
}
.req {
color: #fb7185;
color: var(--st-block);
}
.modal-form {