|
1 | 1 | import { watchEffect, computed, ComputedRef } from 'vue'
|
2 |
| -import { useLocalStorageState } from '..' |
| 2 | +import useLocalStorageState from '../useLocalStorageState' |
3 | 3 |
|
4 | 4 | import useMedia from '../useMedia'
|
5 | 5 |
|
6 |
| -export default function useDarkMode(): [ |
7 |
| - ComputedRef<any>, |
8 |
| - (value?: unknown) => void |
9 |
| -] { |
10 |
| - const [enabledState, setEnabledState] = useLocalStorageState( |
11 |
| - 'dark-mode-enabled' |
12 |
| - ) |
| 6 | +export default function useDarkMode(): [ComputedRef<any>, (value?: unknown) => void] { |
| 7 | + const [enabledState, setEnabledState] = useLocalStorageState('dark-mode-enabled') |
13 | 8 |
|
14 |
| - const prefersDarkMode = usePrefersDarkMode() |
| 9 | + const prefersDarkMode = usePrefersDarkMode() |
15 | 10 |
|
16 |
| - const enabled = computed(() => { |
17 |
| - return typeof enabledState.value !== 'undefined' |
18 |
| - ? enabledState.value |
19 |
| - : prefersDarkMode.value |
20 |
| - }) |
| 11 | + /** |
| 12 | + * Is it in dark mode |
| 13 | + */ |
| 14 | + const enabled = computed(() => { |
| 15 | + return typeof enabledState.value !== 'undefined' ? enabledState.value : prefersDarkMode.value |
| 16 | + }) |
21 | 17 |
|
22 |
| - watchEffect(() => { |
23 |
| - const className = 'dark-mode' |
24 |
| - const element = window.document.body |
25 |
| - if (enabled.value) { |
26 |
| - element.classList.add(className) |
27 |
| - } else { |
28 |
| - element.classList.remove(className) |
29 |
| - } |
30 |
| - }) |
31 |
| - return [enabled, setEnabledState] |
| 18 | + watchEffect(() => { |
| 19 | + const className = 'dark-mode' |
| 20 | + const element = window.document.body |
| 21 | + if (enabled.value) { |
| 22 | + element.classList.add(className) |
| 23 | + } else { |
| 24 | + element.classList.remove(className) |
| 25 | + } |
| 26 | + }) |
| 27 | + return [enabled, setEnabledState] |
32 | 28 | }
|
33 | 29 |
|
34 | 30 | function usePrefersDarkMode() {
|
35 |
| - return useMedia(['(prefers-color-scheme: dark)'], [true], false) |
| 31 | + return useMedia(['(prefers-color-scheme: dark)'], [true], false) |
36 | 32 | }
|
0 commit comments