Skip to content

Commit 98dadd7

Browse files
authored
Merge pull request #12 from workfloworchestrator/99-theme-toggle
99-theme-toggle: Add basic theme toggle code
2 parents 4cd3cd0 + 2ea72f2 commit 98dadd7

File tree

1 file changed

+29
-3
lines changed

1 file changed

+29
-3
lines changed

pages/_app.tsx

Lines changed: 29 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React, { useState } from 'react';
1+
import React, { useEffect, useState } from 'react';
22
import NoSSR from 'react-no-ssr';
33
import { QueryClient, QueryClientProvider } from 'react-query';
44
import { ReactQueryDevtools } from 'react-query/devtools';
@@ -10,10 +10,12 @@ import App, { AppContext, AppInitialProps, AppProps } from 'next/app';
1010
import Head from 'next/head';
1111
import { QueryParamProvider } from 'use-query-params';
1212

13-
import { EuiProvider } from '@elastic/eui';
13+
import { EuiProvider, EuiThemeColorMode } from '@elastic/eui';
14+
import '@elastic/eui/dist/eui_theme_dark.min.css';
1415
import '@elastic/eui/dist/eui_theme_light.min.css';
1516
import {
1617
ApiClientContextProvider,
18+
ColorModes,
1719
ConfirmationDialogContextWrapper,
1820
OrchestratorConfig,
1921
OrchestratorConfigProvider,
@@ -49,6 +51,27 @@ function CustomApp({
4951
}: AppProps & AppOwnProps) {
5052
const [queryClient] = useState(() => new QueryClient(queryClientConfig));
5153

54+
const [themeMode, setThemeMode] = useState<EuiThemeColorMode>(
55+
ColorModes.LIGHT,
56+
);
57+
58+
const handleThemeSwitch = (newThemeMode: EuiThemeColorMode) => {
59+
setThemeMode(newThemeMode);
60+
localStorage.setItem('themeMode', newThemeMode);
61+
};
62+
63+
useEffect(() => {
64+
// Initialize theme mode from localStorage or set it to 'light' if not present
65+
const storedTheme = localStorage.getItem('themeMode');
66+
if (
67+
!storedTheme ||
68+
(storedTheme !== ColorModes.LIGHT &&
69+
storedTheme !== ColorModes.DARK)
70+
) {
71+
handleThemeSwitch(ColorModes.LIGHT);
72+
}
73+
}, []);
74+
5275
return (
5376
<WfoErrorBoundary>
5477
<OrchestratorConfigProvider
@@ -59,7 +82,7 @@ function CustomApp({
5982
<NoSSR>
6083
<WfoAuth>
6184
<EuiProvider
62-
colorMode="light"
85+
colorMode={themeMode}
6386
modify={defaultOrchestratorTheme}
6487
>
6588
<ApiClientContextProvider>
@@ -84,6 +107,9 @@ function CustomApp({
84107
getAppLogo={
85108
getAppLogo
86109
}
110+
onThemeSwitch={
111+
handleThemeSwitch
112+
}
87113
>
88114
<QueryParamProvider
89115
adapter={

0 commit comments

Comments
 (0)