summaryrefslogtreecommitdiffstats
path: root/src/contexts
diff options
context:
space:
mode:
authorGravatar Tom van der Lee <tom@vanderlee.io>2022-01-25 22:03:00 +0100
committerGravatar Tom van der Lee <tom@vanderlee.io>2022-01-25 22:06:58 +0100
commitf69a7786da3ba21373574ee6c96371769a72ac42 (patch)
treea9e9cc0cb6122223b4f0e3d8a533733b55cb44df /src/contexts
parentf9cd68181137c72e92c6951efd9b8d29c4b73bc1 (diff)
downloadclient-f69a7786da3ba21373574ee6c96371769a72ac42.tar.gz
client-f69a7786da3ba21373574ee6c96371769a72ac42.tar.bz2
client-f69a7786da3ba21373574ee6c96371769a72ac42.zip
Fixed issue with json viewer
Diffstat (limited to 'src/contexts')
-rw-r--r--src/contexts/DarkMode.tsx41
1 files changed, 41 insertions, 0 deletions
diff --git a/src/contexts/DarkMode.tsx b/src/contexts/DarkMode.tsx
new file mode 100644
index 0000000..6dc1c31
--- /dev/null
+++ b/src/contexts/DarkMode.tsx
@@ -0,0 +1,41 @@
1import * as React from "react";
2import {
3 Context,
4 createContext,
5 ReactElement,
6 ReactNode, useEffect,
7 useMemo,
8 useState
9} from "react";
10import {ThemeConfig} from "bootstrap-darkmode";
11
12interface DarkModeApi {
13 darkMode: boolean
14 toggle: () => void
15}
16
17export const DarkModeContext = createContext<Partial<DarkModeApi>>({}) as Context<DarkModeApi>;
18interface DarkModeProviderProps {
19 children: ReactNode
20}
21
22export default function DarkModeProvider({ children }: DarkModeProviderProps) {
23 const themeConfig = useMemo(() => new ThemeConfig(), []);
24 const [darkMode, setDarkMode] = useState(() => themeConfig.getTheme() === 'dark')
25
26 useEffect(() => {
27 themeConfig.setTheme(darkMode ? 'dark' : 'light');
28 }, [darkMode])
29
30 return (
31 <DarkModeContext.Provider
32 value={{
33 darkMode,
34 toggle: () => setDarkMode(dm => !dm),
35 }}
36 >
37
38 {children}
39 </DarkModeContext.Provider>
40 )
41}