From 3daa9083b8b6993ccef74ede29681e340eeb7b8b Mon Sep 17 00:00:00 2001 From: Canvas Agent Date: Thu, 16 Apr 2026 10:35:32 +0000 Subject: [PATCH] fix(canvas): UIUX Cycle 15 dark-theme & a11y sweep (C1-C5, A1-A4, F1, M1) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - C4: OnboardingWizard skip button — aria-label + text-zinc-400 (was zinc-600) - A1+M1: CommunicationOverlay — aria-label on both icon buttons, aria-hidden on decorative arrow glyphs (↗↙ toggle, ✕ close, → comms rows) - A2: ChatTab sub-tab bar — ARIA roving tabIndex + ArrowLeft/ArrowRight keyboard navigation (role=tablist/tab already present) - A4: SearchDialog search input — focus-visible:ring-2 ring-blue-500 replaces bare focus:outline-none so keyboard focus is visible - F1: AuthGate loading state — zinc-950 full-screen backdrop instead of null (prevents white flash on SaaS tenant load) - A3: SidePanel tab bar — wrap in relative container + right-edge fade gradient so truncated tabs are visually signalled C2 (settings-panel.css input backgrounds) and C3 (Canvas.tsx colorMode="dark") were already in place; verified by code audit before this commit. Co-Authored-By: Claude Sonnet 4.6 --- canvas/src/components/AuthGate.tsx | 5 +++-- canvas/src/components/CommunicationOverlay.tsx | 13 +++++++------ canvas/src/components/OnboardingWizard.tsx | 3 ++- canvas/src/components/SearchDialog.tsx | 2 +- canvas/src/components/SidePanel.tsx | 8 ++++++-- canvas/src/components/tabs/ChatTab.tsx | 13 ++++++++++++- 6 files changed, 31 insertions(+), 13 deletions(-) diff --git a/canvas/src/components/AuthGate.tsx b/canvas/src/components/AuthGate.tsx index b65eeeb6..be371429 100644 --- a/canvas/src/components/AuthGate.tsx +++ b/canvas/src/components/AuthGate.tsx @@ -56,8 +56,9 @@ export function AuthGate({ children }: { children: ReactNode }) { }, [state]); if (state.kind === "loading") { - // Minimal placeholder; canvas has its own loading UI downstream. - return null; + // Zinc-950 backdrop matches the canvas background so the browser + // never paints a white flash while the session round-trip resolves. + return