summaryrefslogtreecommitdiffstats
path: root/src/hooks/useDarkMode.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'src/hooks/useDarkMode.tsx')
-rw-r--r--src/hooks/useDarkMode.tsx21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/hooks/useDarkMode.tsx b/src/hooks/useDarkMode.tsx
new file mode 100644
index 0000000..fe4ce95
--- /dev/null
+++ b/src/hooks/useDarkMode.tsx
@@ -0,0 +1,21 @@
1import {useEffect, useMemo, useState} from "react";
2import {ThemeConfig} from "bootstrap-darkmode";
3
4export interface UseDarkMode {
5 darkMode: boolean
6 toggle: () => void
7}
8
9export default function useDarkMode() {
10 const themeConfig = useMemo(() => new ThemeConfig(), []);
11 const [darkMode, setDarkMode] = useState(() => themeConfig.getTheme() === 'dark')
12
13 useEffect(() => {
14 themeConfig.setTheme(darkMode ? 'dark' : 'light');
15 }, [darkMode])
16
17 return {
18 darkMode,
19 toggle: () => setDarkMode(dm => !dm),
20 }
21}