import { inject, onMounted, provide, ref } from 'vue' import type { InjectionKey, Ref } from 'vue' export type DarkModeRef = Ref export const darkModeSymbol: InjectionKey = Symbol( __VUEPRESS_DEV__ ? 'darkMode' : '', ) /** * Inject dark mode global computed */ export function 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 function setupDarkMode(): void { const isDark = ref(false) onMounted(() => { if (document.documentElement.classList.contains('dark')) isDark.value = true }) provide(darkModeSymbol, isDark) }