UNPKG

vueless

Version:

Vue Styleless UI Component Library, powered by Tailwind CSS.

24 lines (18 loc) 807 B
import { onMounted, ref, nextTick } from "vue"; import { COLOR_MODE_KEY, DARK_MODE_CLASS } from "../constants.js"; import { ColorMode } from "../types.js"; export function useDarkMode() { const isDarkMode = ref(false); onMounted(async () => { await nextTick(() => { const isDarkModeClass = document.documentElement.classList.contains(DARK_MODE_CLASS); const cashedDarkMode = localStorage.getItem(COLOR_MODE_KEY) as ColorMode | null; const isDarkModeCashed = cashedDarkMode !== null && cashedDarkMode === ColorMode.Dark; isDarkMode.value = isDarkModeCashed || isDarkModeClass; window.addEventListener("darkModeChange", ((event: CustomEvent) => { isDarkMode.value = Boolean(event.detail); }) as EventListener); }); }); return { isDarkMode }; }