From 439ebafbd721cf6da1ebd82185b586b22169c654 Mon Sep 17 00:00:00 2001 From: Charles de Dreuille Date: Wed, 2 Jul 2025 09:14:23 +0100 Subject: [PATCH] Update playground-context.tsx Signed-off-by: Charles de Dreuille --- canon-docs/src/utils/playground-context.tsx | 33 ++++++++++++++------- 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/canon-docs/src/utils/playground-context.tsx b/canon-docs/src/utils/playground-context.tsx index 9d4e23217f..35c881b2d8 100644 --- a/canon-docs/src/utils/playground-context.tsx +++ b/canon-docs/src/utils/playground-context.tsx @@ -40,16 +40,29 @@ export const PlaygroundProvider = ({ children }: { children: ReactNode }) => { const [selectedComponents, setSelectedComponents] = useState( components.map(component => component.slug), ); - const [selectedTheme, setSelectedTheme] = useState(() => { - return isBrowser - ? (localStorage.getItem('theme') as Theme) || 'light' - : 'light'; - }); - const [selectedThemeName, setSelectedThemeName] = useState(() => { - return isBrowser - ? (localStorage.getItem('theme-name') as ThemeName) || 'default' - : 'default'; - }); + const [selectedTheme, setSelectedTheme] = useState('light'); + const [selectedThemeName, setSelectedThemeName] = + useState('default'); + + // Load saved theme from localStorage after hydration + useEffect(() => { + if (isBrowser) { + const savedTheme = localStorage.getItem('theme') as Theme; + if (savedTheme) { + setSelectedTheme(savedTheme); + } + } + }, [isBrowser]); + + // Load saved theme name from localStorage after hydration + useEffect(() => { + if (isBrowser) { + const savedThemeName = localStorage.getItem('theme-name') as ThemeName; + if (savedThemeName) { + setSelectedThemeName(savedThemeName); + } + } + }, [isBrowser]); useEffect(() => { if (isBrowser) {