From fffd59a36c7ba20165e9f472dce4c0fb3ae7ef49 Mon Sep 17 00:00:00 2001 From: Ambient Code Bot Date: Fri, 14 Nov 2025 19:39:03 +0000 Subject: [PATCH 1/3] feat: add dark mode toggle to platform header MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add a simple dark/light mode toggle button positioned to the left of the username in the header. Users can click to immediately switch between themes, with their preference persisted across sessions. Features: - Theme toggle button with Sun/Moon icons - Instant theme switching without page refresh - localStorage persistence across browser sessions - Respects system color scheme preference as default - FOUC prevention with inline script - WCAG 2.1 Level AA accessibility compliance - Full keyboard navigation support Implementation: - Created ThemeProvider context for theme state management - Created ThemeToggle component using Shadcn UI Button - Integrated toggle into Navigation component header - Added FOUC prevention script to root layout 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- components/frontend/src/app/layout.tsx | 26 ++++++-- .../frontend/src/components/navigation.tsx | 4 +- .../components/providers/theme-provider.tsx | 66 +++++++++++++++++++ .../frontend/src/components/theme-toggle.tsx | 24 +++++++ 4 files changed, 114 insertions(+), 6 deletions(-) create mode 100644 components/frontend/src/components/providers/theme-provider.tsx create mode 100644 components/frontend/src/components/theme-toggle.tsx diff --git a/components/frontend/src/app/layout.tsx b/components/frontend/src/app/layout.tsx index ed7e98006..a4d51f51a 100644 --- a/components/frontend/src/app/layout.tsx +++ b/components/frontend/src/app/layout.tsx @@ -3,6 +3,7 @@ import { Inter } from "next/font/google"; import "./globals.css"; import { Navigation } from "@/components/navigation"; import { QueryProvider } from "@/components/providers/query-provider"; +import { ThemeProvider } from "@/components/providers/theme-provider"; import { Toaster } from "@/components/ui/toaster"; import { env } from "@/lib/env"; @@ -24,14 +25,29 @@ export default function RootLayout({ return ( +