UI: indigo/slate theme, border cleanup, rounder edges

theme.css:
- Dark mode palette shifted from navy to dark slate with indigo warmth
  (#111113 / #18181f / #1e1e27). Primary restored to true indigo
  (#818cf8) instead of the blue (#5b9cf6) it had drifted to.
- Borders reduced to near-invisible rgba(99,102,241,0.10) indigo tint.
- --radius-md 8px→12px, --radius-lg 12px→18px.
- Tag/wikilink/status-in-progress colors unified to indigo family.
- Thin indigo-tinted scrollbars (4px, rgba thumb).

ChatMessage.vue:
- Message bubbles 16px→18px radius.
- User bubble: flat primary → indigo gradient (#6366f1→#4f46e5).
- Assistant bubble: border removed, relies on bg-card vs bg contrast.

ChatView.vue:
- Sidebar border-right, chat-header border-bottom, context-sidebar
  border-left all removed.
- Streaming bubble: border removed, radius 16px→18px.
- Active conv item: solid primary fill → 15% opacity indigo tint with
  primary-colored text (softer, more refined selection state).
- Send button: flat primary → indigo gradient + glow on hover.
- New Chat button: glow on hover.
- Queued bubble: matches send button gradient.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Bryan Van Deusen
2026-03-10 14:38:19 -04:00
parent 1a6b4b0a97
commit 4a3899d103
3 changed files with 58 additions and 41 deletions
+42 -26
View File
@@ -39,32 +39,32 @@
--color-input-bar-placeholder: rgba(0, 0, 0, 0.4);
--color-overlay: rgba(0, 0, 0, 0.45);
--radius-sm: 6px;
--radius-md: 8px;
--radius-lg: 12px;
--radius-md: 12px;
--radius-lg: 18px;
--radius-pill: 9999px;
--focus-ring: 0 0 0 2px color-mix(in srgb, var(--color-primary) 40%, transparent);
}
[data-theme="dark"] {
--color-bg: #1a1a2e;
--color-bg-secondary: #16213e;
--color-bg-card: #1f2940;
--color-text: #e0e0e0;
--color-text-secondary: #a0a0b0;
--color-text-muted: #707080;
--color-border: #2a3a5c;
--color-input-border: #3a4a6c;
--color-primary: #5b9cf6;
--color-bg: #111113;
--color-bg-secondary: #18181f;
--color-bg-card: #1e1e27;
--color-text: #e4e4f0;
--color-text-secondary: #8888a8;
--color-text-muted: #52526a;
--color-border: rgba(99, 102, 241, 0.10);
--color-input-border: rgba(99, 102, 241, 0.22);
--color-primary: #818cf8;
--color-danger: #f44336;
--color-tag-bg: #1e3a5f;
--color-tag-text: #7bb8f6;
--color-shadow: rgba(0, 0, 0, 0.3);
--color-tag-bg: #2a2a45;
--color-tag-text: #a5b4fc;
--color-shadow: rgba(0, 0, 0, 0.4);
--color-toast-success: #4caf50;
--color-toast-error: #f44336;
--color-status-todo: #9aa0a6;
--color-status-todo-bg: #2d333b;
--color-status-in-progress: #5b9cf6;
--color-status-in-progress-bg: #1e3a5f;
--color-status-todo-bg: #2a2a35;
--color-status-in-progress: #818cf8;
--color-status-in-progress-bg: #2a2a45;
--color-status-done: #4caf50;
--color-status-done-bg: #1b3a20;
--color-priority-low: #80cbc4;
@@ -73,18 +73,18 @@
--color-priority-medium-bg: #3a3520;
--color-priority-high: #f44336;
--color-priority-high-bg: #3a1a1a;
--color-wikilink: #ce93d8;
--color-wikilink-bg: #2a1a30;
--color-wikilink: #c4b5fd;
--color-wikilink-bg: #2a1a45;
--color-overdue: #f44336;
--color-code-bg: #161b22;
--color-code-inline-bg: #2a3040;
--color-table-stripe: #1a2030;
--color-code-bg: #16161d;
--color-code-inline-bg: #1e1e2d;
--color-table-stripe: #16161e;
--color-success: #4ade80;
--color-warning: #facc15;
--color-input-bar-bg: #1c1c1e;
--color-input-bar-text: #ffffff;
--color-input-bar-placeholder: rgba(255, 255, 255, 0.4);
--color-overlay: rgba(0, 0, 0, 0.6);
--color-input-bar-bg: #1e1e27;
--color-input-bar-text: #e4e4f0;
--color-input-bar-placeholder: rgba(228, 228, 240, 0.35);
--color-overlay: rgba(0, 0, 0, 0.65);
}
*,
@@ -131,6 +131,22 @@ a:focus-visible {
}
}
/* Thin indigo-tinted scrollbars */
::-webkit-scrollbar {
width: 4px;
height: 4px;
}
::-webkit-scrollbar-track {
background: transparent;
}
::-webkit-scrollbar-thumb {
background: rgba(99, 102, 241, 0.25);
border-radius: 9999px;
}
::-webkit-scrollbar-thumb:hover {
background: rgba(99, 102, 241, 0.45);
}
/* Floating inline assist button (teleported to body, cannot be scoped) */
.inline-assist-btn {
position: fixed;
+2 -3
View File
@@ -118,17 +118,16 @@ const timingParts = computed((): string[] => {
.message-bubble {
padding: 0.75rem 1rem;
border-radius: 16px;
border-radius: 18px;
}
.role-user .message-bubble {
background: var(--color-primary);
background: linear-gradient(135deg, #6366f1, #4f46e5);
color: #fff;
border-bottom-right-radius: 4px;
}
.role-assistant .message-bubble {
background: var(--color-bg-card);
border: 1px solid var(--color-border);
border-bottom-left-radius: 4px;
}
+14 -12
View File
@@ -847,7 +847,6 @@ onUnmounted(() => {
.chat-sidebar {
width: 260px;
min-width: 200px;
border-right: 1px solid var(--color-border);
display: flex;
flex-direction: column;
background: var(--color-bg-secondary);
@@ -868,9 +867,11 @@ onUnmounted(() => {
border-radius: var(--radius-sm);
cursor: pointer;
font-size: 0.9rem;
transition: box-shadow 0.15s, opacity 0.15s;
}
.btn-new-conv:hover {
opacity: 0.9;
box-shadow: 0 0 14px rgba(129, 140, 248, 0.35);
}
.btn-select-mode {
@@ -996,8 +997,8 @@ onUnmounted(() => {
background: var(--color-bg-card);
}
.conv-item.active {
background: var(--color-primary);
color: #fff;
background: color-mix(in srgb, var(--color-primary) 15%, transparent);
color: var(--color-primary);
}
.conv-info {
flex: 1;
@@ -1017,7 +1018,7 @@ onUnmounted(() => {
margin-top: 1px;
}
.conv-item.active .conv-date {
color: rgba(255, 255, 255, 0.7);
color: var(--color-text-muted);
}
.btn-delete-conv {
background: none;
@@ -1029,7 +1030,7 @@ onUnmounted(() => {
line-height: 1;
}
.conv-item.active .btn-delete-conv {
color: rgba(255, 255, 255, 0.7);
color: var(--color-text-muted);
}
.btn-delete-conv:hover {
color: var(--color-danger, #e74c3c);
@@ -1047,7 +1048,6 @@ onUnmounted(() => {
align-items: center;
justify-content: space-between;
padding: 0.75rem 1rem;
border-bottom: 1px solid var(--color-border);
}
.chat-header h2 {
margin: 0;
@@ -1116,7 +1116,6 @@ onUnmounted(() => {
.context-sidebar {
width: 220px;
min-width: 180px;
border-left: 1px solid var(--color-border);
background: var(--color-bg-secondary);
display: flex;
flex-direction: column;
@@ -1220,10 +1219,9 @@ onUnmounted(() => {
.streaming-bubble {
max-width: 80%;
padding: 0.75rem 1rem;
border-radius: 16px;
border-radius: 18px;
border-bottom-left-radius: 4px;
background: var(--color-bg-card);
border: 1px solid var(--color-border);
}
.streaming-bubble .message-header {
display: flex;
@@ -1517,13 +1515,17 @@ details[open] .thinking-summary::before {
display: flex;
align-items: center;
justify-content: center;
background: var(--color-primary);
background: linear-gradient(135deg, #6366f1, #4f46e5);
color: #fff;
border: none;
border-radius: 50%;
cursor: pointer;
font-size: 1.1rem;
flex-shrink: 0;
transition: box-shadow 0.15s;
}
.btn-send:not(:disabled):hover {
box-shadow: 0 0 14px rgba(129, 140, 248, 0.5);
}
.btn-send:disabled {
opacity: 0.35;
@@ -1628,9 +1630,9 @@ details[open] .thinking-summary::before {
.queued-bubble {
max-width: 80%;
padding: 0.75rem 1rem;
border-radius: 16px;
border-radius: 18px;
border-bottom-right-radius: 4px;
background: var(--color-primary);
background: linear-gradient(135deg, #6366f1, #4f46e5);
color: #fff;
opacity: 0.45;
font-size: 0.95rem;