2023-06-03 15:34:35 +08:00

28 lines
672 B
TypeScript

import { inject, provide, ref } from 'vue'
import type { InjectionKey, Ref } from 'vue'
export type DarkModeRef = Ref<boolean>
export const darkModeSymbol: InjectionKey<DarkModeRef> = Symbol(
__VUEPRESS_DEV__ ? 'darkMode' : ''
)
/**
* Inject dark mode global computed
*/
export const useDarkMode = (): DarkModeRef => {
const isDark = inject(darkModeSymbol)
if (isDark === undefined) {
throw new Error('useDarkMode() is called without provider.')
}
return isDark
}
/**
* Create dark mode ref and provide as global computed in setup
*/
export const setupDarkMode = (): void => {
const isDark = ref<boolean>(false)
provide(darkModeSymbol, isDark)
}