prepare later theme toggle
This commit is contained in:
		| @@ -3,21 +3,26 @@ import { BrowserRouter, Routes, Route } from 'react-router-dom'; | |||||||
| import { Auth, Login, Logout, NavBar, Overview } from './components'; | import { Auth, Login, Logout, NavBar, Overview } from './components'; | ||||||
| import { AuthProvider, TimeProvider } from './contexts'; | import { AuthProvider, TimeProvider } from './contexts'; | ||||||
| import './App.css'; | import './App.css'; | ||||||
|  | import { Airport } from './components/airport'; | ||||||
|  | import { ThemeProvider } from './contexts/themecontext'; | ||||||
|  |  | ||||||
| const App: React.FC = () => ( | const App: React.FC = () => ( | ||||||
|   <> |   <> | ||||||
|     <BrowserRouter> |     <BrowserRouter> | ||||||
|  |       <ThemeProvider> | ||||||
|         <TimeProvider> |         <TimeProvider> | ||||||
|           <AuthProvider> |           <AuthProvider> | ||||||
|             <NavBar /> |             <NavBar /> | ||||||
|             <Routes> |             <Routes> | ||||||
|               <Route index element={<Login />} /> |               <Route index element={<Login />} /> | ||||||
|  |               <Route path='/admin/airports' element={<Airport />} /> | ||||||
|               <Route path='/auth' element={<Auth />} /> |               <Route path='/auth' element={<Auth />} /> | ||||||
|               <Route path='/overview' element={<Overview />} /> |               <Route path='/overview' element={<Overview />} /> | ||||||
|               <Route path='/logout' element={<Logout />} /> |               <Route path='/logout' element={<Logout />} /> | ||||||
|             </Routes> |             </Routes> | ||||||
|           </AuthProvider> |           </AuthProvider> | ||||||
|         </TimeProvider> |         </TimeProvider> | ||||||
|  |       </ThemeProvider> | ||||||
|     </BrowserRouter> |     </BrowserRouter> | ||||||
|   </> |   </> | ||||||
| ); | ); | ||||||
|   | |||||||
							
								
								
									
										40
									
								
								src/contexts/themecontext.tsx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								src/contexts/themecontext.tsx
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,40 @@ | |||||||
|  | import React, { Dispatch, SetStateAction, useEffect, useRef, useState } from 'react'; | ||||||
|  | import { Session } from '../services'; | ||||||
|  |  | ||||||
|  | // TODO dynamic theming | ||||||
|  | import 'primereact/resources/themes/bootstrap4-dark-blue/theme.css'; | ||||||
|  | import 'primereact/resources/primereact.min.css'; | ||||||
|  | import "primeicons/primeicons.css"; | ||||||
|  | import "primeflex/primeflex.css"  | ||||||
|  |  | ||||||
|  | const ThemeContext = React.createContext<{ | ||||||
|  |   darkMode: boolean; | ||||||
|  |   setDarkMode: Dispatch<SetStateAction<boolean>>; | ||||||
|  | }>({ darkMode: false, setDarkMode: () => false }); | ||||||
|  |  | ||||||
|  | export const ThemeProvider = ({ children }: { children: any }) => { | ||||||
|  |   const [darkMode, setDarkMode] = useState<boolean>(Session.theme() === 'dark'); | ||||||
|  |   const refDarkMode = useRef<boolean>(); | ||||||
|  |   refDarkMode.current = darkMode; | ||||||
|  |  | ||||||
|  |   //useEffect(() => { | ||||||
|  |   //  Session.setTheme(refDarkMode.current ? 'dark' : 'light'); | ||||||
|  |   //  window.location.reload(); | ||||||
|  |   //}, [darkMode]); | ||||||
|  |  | ||||||
|  |   //if (darkMode) { | ||||||
|  |   //  import('primereact/resources/themes/bootstrap4-dark-blue/theme.css'); | ||||||
|  |   //} else { | ||||||
|  |   //  import('primereact/resources/themes/bootstrap4-light-blue/theme.css'); | ||||||
|  |   //} | ||||||
|  |  | ||||||
|  |   return ( | ||||||
|  |     <> | ||||||
|  |       <ThemeContext.Provider value={{ darkMode, setDarkMode }}> | ||||||
|  |         {children} | ||||||
|  |       </ThemeContext.Provider> | ||||||
|  |     </> | ||||||
|  |   ); | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | export default ThemeContext; | ||||||
| @@ -4,12 +4,6 @@ import './index.css'; | |||||||
| import App from './App'; | import App from './App'; | ||||||
| import reportWebVitals from './reportWebVitals'; | import reportWebVitals from './reportWebVitals'; | ||||||
|  |  | ||||||
| import 'primereact/resources/themes/lara-light-blue/theme.css'; |  | ||||||
| import 'primereact/resources/primereact.min.css'; |  | ||||||
| import "primeicons/primeicons.css"; |  | ||||||
| import "primeflex/primeflex.css"  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| const root = ReactDOM.createRoot( | const root = ReactDOM.createRoot( | ||||||
|   document.getElementById('root') as HTMLElement |   document.getElementById('root') as HTMLElement | ||||||
| ); | ); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user