From b757523a7718d6155e9904e1ade01ed363f76ea1 Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 3 Oct 2026 13:00:00 +0000 Subject: [PATCH] fix(ui): make the light theme a real light theme The web shell hardcoded dark surfaces (panel hex, white/black alphas, white text), so switching to light left the sidebar, chat, composer and side panel dark with ink text on top. Shell surfaces now use the shared tokens: light gets a warm paper frame with white panels, hairline borders and short soft shadows; dark keeps its look via dark: variants. - Light palette: visible borders (border was equal to muted), white primary-foreground, lighter user bubble, readable warning/success. - Selected sidebar row lives in one place (roster-row-style). - Markdown, inline code, code blocks, quotes and scrollbars follow tokens. - cn() now knows the text-ui-* scale is a font size; tailwind-merge treated it as a color and dropped labels' color on resized buttons (sign-up submit rendered ink on ink). - Stage bloom was offset left by a double translateX. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_016or6oqCqP8wbNafvhnbLQT --- apps/web/e2e/ui-appearance.spec.ts | 3 + apps/web/index.html | 2 +- .../onboarding/OnboardingScanProgress.tsx | 4 +- apps/web/src/components/stage/OoStage.tsx | 6 +- apps/web/src/components/stage/StageHero.tsx | 30 ++--- .../src/components/stage/TextStageCanvas.tsx | 9 +- .../components/voice/VoiceAwarenessStrip.tsx | 6 +- apps/web/src/pages/Shell.tsx | 116 ++++++++++-------- apps/web/src/pages/shell/message-cards.tsx | 8 +- apps/web/src/pages/shell/roster-row-style.ts | 17 +-- apps/web/src/styles.css | 74 +++++++++-- packages/ui-tokens/src/index.ts | 34 ++--- packages/ui-tokens/src/tokens.css | 34 ++--- packages/ui-web/src/bot-avatar.tsx | 4 +- packages/ui-web/src/evoo-brand.tsx | 2 +- packages/ui-web/src/lib/utils.test.ts | 19 +++ packages/ui-web/src/lib/utils.ts | 24 +++- 17 files changed, 253 insertions(+), 139 deletions(-) create mode 100644 packages/ui-web/src/lib/utils.test.ts diff --git a/apps/web/e2e/ui-appearance.spec.ts b/apps/web/e2e/ui-appearance.spec.ts index e72d12e..6bda945 100644 --- a/apps/web/e2e/ui-appearance.spec.ts +++ b/apps/web/e2e/ui-appearance.spec.ts @@ -67,6 +67,9 @@ test("account settings appearance control switches to light mode", async ({ page await settings.getByRole("button", { name: "Close user settings" }).click(); await expect(settings).toBeHidden(); await expect(page.locator("html")).toHaveAttribute("data-theme", "light"); + // Light surfaces stay light: no dark panel or white-on-paper text survives the switch. + await expect(page.locator("main").first()).toHaveCSS("background-color", "rgb(255, 255, 255)"); + await expect(page.locator("aside").first()).toHaveCSS("background-color", "rgb(245, 245, 242)"); await captureScreenshot(page, testInfo, "ui-appearance-light-shell"); await captureSidebarSearchSelected(page, testInfo, "sidebar-search-selected-light"); diff --git a/apps/web/index.html b/apps/web/index.html index c626fbd..3d2749a 100644 --- a/apps/web/index.html +++ b/apps/web/index.html @@ -26,7 +26,7 @@ document.documentElement.dataset.theme = theme; document.documentElement.style.colorScheme = theme; const meta = document.querySelector('meta[name="theme-color"]'); - if (meta) meta.setAttribute("content", theme === "light" ? "#fafaf8" : "#07080a"); + if (meta) meta.setAttribute("content", theme === "light" ? "#ffffff" : "#07080a"); })();