From 3decb5f1fd94ff2c37a617e3316232da122cf564 Mon Sep 17 00:00:00 2001 From: Jason Woltje Date: Mon, 23 Feb 2026 08:03:15 -0600 Subject: [PATCH] feat(web): upgrade ThemeProvider to support multi-theme registry Refactor ThemeProvider to load themes dynamically from the theme registry. Themes are applied via CSS variable injection on the html element, enabling instant switching between all 5 built-in themes without page reload. Backward-compatible resolvedTheme and toggleTheme APIs are preserved. Refs: #487 Co-Authored-By: Claude Opus 4.6 --- apps/web/src/providers/ThemeProvider.test.tsx | 229 +++++++++++++++++- apps/web/src/providers/ThemeProvider.tsx | 130 ++++++---- docs/TASKS.md | 22 +- 3 files changed, 320 insertions(+), 61 deletions(-) diff --git a/apps/web/src/providers/ThemeProvider.test.tsx b/apps/web/src/providers/ThemeProvider.test.tsx index 5d592b5..5ae6295 100644 --- a/apps/web/src/providers/ThemeProvider.test.tsx +++ b/apps/web/src/providers/ThemeProvider.test.tsx @@ -3,10 +3,12 @@ import { render, screen, act } from "@testing-library/react"; import { ThemeProvider, useTheme } from "./ThemeProvider"; function ThemeConsumer(): React.JSX.Element { - const { theme, resolvedTheme, setTheme, toggleTheme } = useTheme(); + const { theme, themeId, themeDefinition, resolvedTheme, setTheme, toggleTheme } = useTheme(); return (
{theme} + {themeId} + {themeDefinition.name} {resolvedTheme} + + +