summaryrefslogtreecommitdiffstats
path: root/src/hooks/useDarkMode.tsx
blob: fe4ce95a461d1e1f8ee5aff4f80560021c1bffeb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import {useEffect, useMemo, useState} from "react";
import {ThemeConfig} from "bootstrap-darkmode";

export interface UseDarkMode {
  darkMode: boolean
  toggle: () => void
}

export default function useDarkMode() {
  const themeConfig = useMemo(() => new ThemeConfig(), []);
  const [darkMode, setDarkMode] = useState(() => themeConfig.getTheme() === 'dark')

  useEffect(() => {
    themeConfig.setTheme(darkMode ? 'dark' : 'light');
  }, [darkMode])

  return {
    darkMode,
    toggle: () => setDarkMode(dm => !dm),
  }
}