1- import React , { useState } from 'react' ;
1+ import React , { useEffect , useState } from 'react' ;
22import NoSSR from 'react-no-ssr' ;
33import { QueryClient , QueryClientProvider } from 'react-query' ;
44import { ReactQueryDevtools } from 'react-query/devtools' ;
@@ -10,10 +10,12 @@ import App, { AppContext, AppInitialProps, AppProps } from 'next/app';
1010import Head from 'next/head' ;
1111import { 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' ;
1415import '@elastic/eui/dist/eui_theme_light.min.css' ;
1516import {
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