fix(ui): restore dark tab and tool output styling
Use tokenized border contrast so dark mode borders stay subtle, keep instance tab status dots vivid in dark themes, and adjust tool-call code block header background via a dedicated token.
This commit is contained in:
@@ -175,7 +175,7 @@
|
|||||||
|
|
||||||
.message-reasoning {
|
.message-reasoning {
|
||||||
@apply my-2 border rounded;
|
@apply my-2 border rounded;
|
||||||
--reasoning-border-color: color-mix(in oklab, var(--border-base) 62%, var(--text-primary));
|
--reasoning-border-color: var(--border-strong, var(--border-base));
|
||||||
border-color: var(--reasoning-border-color);
|
border-color: var(--reasoning-border-color);
|
||||||
background-color: var(--surface-secondary);
|
background-color: var(--surface-secondary);
|
||||||
color: inherit;
|
color: inherit;
|
||||||
@@ -287,7 +287,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.message-reasoning-card {
|
.message-reasoning-card {
|
||||||
--reasoning-border-color: color-mix(in oklab, var(--border-base) 62%, var(--text-primary));
|
--reasoning-border-color: var(--border-strong, var(--border-base));
|
||||||
background-color: var(--message-assistant-bg);
|
background-color: var(--message-assistant-bg);
|
||||||
border-left: 4px solid var(--message-assistant-border);
|
border-left: 4px solid var(--message-assistant-border);
|
||||||
margin-top: 0;
|
margin-top: 0;
|
||||||
|
|||||||
@@ -66,8 +66,8 @@
|
|||||||
|
|
||||||
.tool-call {
|
.tool-call {
|
||||||
@apply border overflow-hidden;
|
@apply border overflow-hidden;
|
||||||
/* Tool-call output borders need more contrast in light mode. */
|
/* Tokenized so dark mode doesn't get overly bright borders. */
|
||||||
--tool-call-border-color: color-mix(in oklab, var(--border-base) 62%, var(--text-primary));
|
--tool-call-border-color: var(--border-strong, var(--border-base));
|
||||||
border-color: var(--tool-call-border-color);
|
border-color: var(--tool-call-border-color);
|
||||||
color: inherit;
|
color: inherit;
|
||||||
--tool-call-line-unit: 1.4em;
|
--tool-call-line-unit: 1.4em;
|
||||||
@@ -419,7 +419,7 @@
|
|||||||
position: sticky;
|
position: sticky;
|
||||||
top: 0;
|
top: 0;
|
||||||
z-index: auto;
|
z-index: auto;
|
||||||
background-color: color-mix(in oklab, var(--surface-secondary) 70%, var(--text-primary));
|
background-color: var(--code-block-header-bg, var(--surface-secondary));
|
||||||
border-bottom: 1px solid var(--tool-call-border-color);
|
border-bottom: 1px solid var(--tool-call-border-color);
|
||||||
box-shadow: none;
|
box-shadow: none;
|
||||||
}
|
}
|
||||||
@@ -447,6 +447,14 @@
|
|||||||
overflow-y: visible;
|
overflow-y: visible;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Shiki injects inline background colors; force token surfaces. */
|
||||||
|
.tool-call-markdown pre.shiki,
|
||||||
|
.tool-call-markdown pre.shiki code,
|
||||||
|
.tool-call-markdown .shiki {
|
||||||
|
background: transparent !important;
|
||||||
|
background-color: transparent !important;
|
||||||
|
}
|
||||||
|
|
||||||
.tool-call-markdown::-webkit-scrollbar {
|
.tool-call-markdown::-webkit-scrollbar {
|
||||||
width: 8px;
|
width: 8px;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -104,6 +104,38 @@
|
|||||||
--session-status-dot: color-mix(in oklab, var(--session-status-permission-fg) 55%, var(--surface-base));
|
--session-status-dot: color-mix(in oklab, var(--session-status-permission-fg) 55%, var(--surface-base));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Dark mode: keep dots vivid (avoid muddy mixes). */
|
||||||
|
@media (prefers-color-scheme: dark) {
|
||||||
|
:root:not([data-theme]) .tab-base .status-indicator.session-status.session-working {
|
||||||
|
--session-status-dot: var(--session-status-working-fg);
|
||||||
|
}
|
||||||
|
:root:not([data-theme]) .tab-base .status-indicator.session-status.session-compacting {
|
||||||
|
--session-status-dot: var(--session-status-compacting-fg);
|
||||||
|
}
|
||||||
|
:root:not([data-theme]) .tab-base .status-indicator.session-status.session-idle {
|
||||||
|
--session-status-dot: var(--session-status-idle-fg);
|
||||||
|
}
|
||||||
|
:root:not([data-theme]) .tab-base .status-indicator.session-status.session-permission {
|
||||||
|
--session-status-dot: var(--session-status-permission-fg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[data-theme="dark"] .tab-base .status-indicator.session-status.session-working {
|
||||||
|
--session-status-dot: var(--session-status-working-fg);
|
||||||
|
}
|
||||||
|
|
||||||
|
[data-theme="dark"] .tab-base .status-indicator.session-status.session-compacting {
|
||||||
|
--session-status-dot: var(--session-status-compacting-fg);
|
||||||
|
}
|
||||||
|
|
||||||
|
[data-theme="dark"] .tab-base .status-indicator.session-status.session-idle {
|
||||||
|
--session-status-dot: var(--session-status-idle-fg);
|
||||||
|
}
|
||||||
|
|
||||||
|
[data-theme="dark"] .tab-base .status-indicator.session-status.session-permission {
|
||||||
|
--session-status-dot: var(--session-status-permission-fg);
|
||||||
|
}
|
||||||
|
|
||||||
.new-tab-button {
|
.new-tab-button {
|
||||||
@apply inline-flex items-center justify-center w-8 h-8 rounded-md transition-colors;
|
@apply inline-flex items-center justify-center w-8 h-8 rounded-md transition-colors;
|
||||||
background-color: var(--new-tab-bg);
|
background-color: var(--new-tab-bg);
|
||||||
|
|||||||
@@ -11,6 +11,7 @@
|
|||||||
--border-base: #e0e0e0;
|
--border-base: #e0e0e0;
|
||||||
--border-secondary: #e0e0e0;
|
--border-secondary: #e0e0e0;
|
||||||
--border-muted: #e0e0e0;
|
--border-muted: #e0e0e0;
|
||||||
|
--border-strong: color-mix(in oklab, var(--border-base) 62%, var(--text-primary));
|
||||||
|
|
||||||
/* Text tokens */
|
/* Text tokens */
|
||||||
--text-primary: #111827;
|
--text-primary: #111827;
|
||||||
@@ -81,6 +82,7 @@
|
|||||||
--panel-shadow: 0 6px 24px rgba(0, 0, 0, 0.12);
|
--panel-shadow: 0 6px 24px rgba(0, 0, 0, 0.12);
|
||||||
--panel-shadow-strong: 0 12px 32px rgba(0, 0, 0, 0.18);
|
--panel-shadow-strong: 0 12px 32px rgba(0, 0, 0, 0.18);
|
||||||
--popover-shadow: 0 16px 40px rgba(0, 0, 0, 0.18);
|
--popover-shadow: 0 16px 40px rgba(0, 0, 0, 0.18);
|
||||||
|
--code-block-header-bg: color-mix(in oklab, var(--surface-secondary) 78%, var(--text-primary));
|
||||||
--message-error-bg: rgba(244, 67, 54, 0.1);
|
--message-error-bg: rgba(244, 67, 54, 0.1);
|
||||||
--message-error-bg-strong: rgba(244, 67, 54, 0.15);
|
--message-error-bg-strong: rgba(244, 67, 54, 0.15);
|
||||||
--danger-soft-bg: rgba(239, 68, 68, 0.1);
|
--danger-soft-bg: rgba(239, 68, 68, 0.1);
|
||||||
@@ -182,6 +184,7 @@
|
|||||||
--border-base: #3a3a3a;
|
--border-base: #3a3a3a;
|
||||||
--border-secondary: #3a3a3a;
|
--border-secondary: #3a3a3a;
|
||||||
--border-muted: #3a3a3a;
|
--border-muted: #3a3a3a;
|
||||||
|
--border-strong: var(--border-base);
|
||||||
|
|
||||||
/* Text tokens */
|
/* Text tokens */
|
||||||
--text-primary: #cfd4dc;
|
--text-primary: #cfd4dc;
|
||||||
@@ -248,6 +251,7 @@
|
|||||||
--panel-shadow: 0 6px 24px rgba(0, 0, 0, 0.35);
|
--panel-shadow: 0 6px 24px rgba(0, 0, 0, 0.35);
|
||||||
--panel-shadow-strong: 0 12px 32px rgba(0, 0, 0, 0.45);
|
--panel-shadow-strong: 0 12px 32px rgba(0, 0, 0, 0.45);
|
||||||
--popover-shadow: 0 16px 40px rgba(0, 0, 0, 0.55);
|
--popover-shadow: 0 16px 40px rgba(0, 0, 0, 0.55);
|
||||||
|
--code-block-header-bg: var(--surface-secondary);
|
||||||
--border-critical: var(--status-error);
|
--border-critical: var(--status-error);
|
||||||
--timeline-segment-active-bg: #0f5b44;
|
--timeline-segment-active-bg: #0f5b44;
|
||||||
--timeline-segment-active-text: #ffffff;
|
--timeline-segment-active-text: #ffffff;
|
||||||
@@ -346,6 +350,7 @@
|
|||||||
--border-base: #3a3a3a;
|
--border-base: #3a3a3a;
|
||||||
--border-secondary: #3a3a3a;
|
--border-secondary: #3a3a3a;
|
||||||
--border-muted: #3a3a3a;
|
--border-muted: #3a3a3a;
|
||||||
|
--border-strong: var(--border-base);
|
||||||
|
|
||||||
/* Text tokens */
|
/* Text tokens */
|
||||||
--text-primary: #cfd4dc;
|
--text-primary: #cfd4dc;
|
||||||
@@ -412,6 +417,7 @@
|
|||||||
--panel-shadow: 0 6px 24px rgba(0, 0, 0, 0.35);
|
--panel-shadow: 0 6px 24px rgba(0, 0, 0, 0.35);
|
||||||
--panel-shadow-strong: 0 12px 32px rgba(0, 0, 0, 0.45);
|
--panel-shadow-strong: 0 12px 32px rgba(0, 0, 0, 0.45);
|
||||||
--popover-shadow: 0 16px 40px rgba(0, 0, 0, 0.55);
|
--popover-shadow: 0 16px 40px rgba(0, 0, 0, 0.55);
|
||||||
|
--code-block-header-bg: var(--surface-secondary);
|
||||||
--border-critical: var(--status-error);
|
--border-critical: var(--status-error);
|
||||||
--timeline-segment-active-bg: #0f5b44;
|
--timeline-segment-active-bg: #0f5b44;
|
||||||
--timeline-segment-active-text: #ffffff;
|
--timeline-segment-active-text: #ffffff;
|
||||||
@@ -430,6 +436,18 @@
|
|||||||
--kbd-bg: var(--surface-secondary);
|
--kbd-bg: var(--surface-secondary);
|
||||||
--kbd-border: var(--border-base);
|
--kbd-border: var(--border-base);
|
||||||
--kbd-text: var(--text-primary);
|
--kbd-text: var(--text-primary);
|
||||||
|
--button-primary-bg: #3f3f46;
|
||||||
|
--button-primary-hover-bg: #52525b;
|
||||||
|
--button-primary-text: #f5f6f8;
|
||||||
|
--tab-active-bg: #3f3f46;
|
||||||
|
--tab-active-hover-bg: #52525b;
|
||||||
|
--tab-active-text: #f5f6f8;
|
||||||
|
--tab-inactive-bg: #2a2a31;
|
||||||
|
--tab-inactive-hover-bg: #3f3f46;
|
||||||
|
--tab-inactive-text: #d4d4d8;
|
||||||
|
--new-tab-bg: #3f3f46;
|
||||||
|
--new-tab-hover-bg: #52525b;
|
||||||
|
--new-tab-text: #f5f6f8;
|
||||||
|
|
||||||
/* Layout & spacing tokens */
|
/* Layout & spacing tokens */
|
||||||
--space-2xs: 2px;
|
--space-2xs: 2px;
|
||||||
|
|||||||
Reference in New Issue
Block a user