vue-hooks-plus
Version:
Vue hooks library
29 lines (28 loc) • 1.19 kB
JavaScript
const vue = require("vue");
const useLocalStorageState = require("../useLocalStorageState");
const useMedia = require("../useMedia");
const _interopDefaultLegacy = (e) => e && typeof e === "object" && "default" in e ? e : { default: e };
const useLocalStorageState__default = /* @__PURE__ */ _interopDefaultLegacy(useLocalStorageState);
const useMedia__default = /* @__PURE__ */ _interopDefaultLegacy(useMedia);
function useDarkMode() {
const [enabledState, setEnabledState] = useLocalStorageState__default.default("dark-mode-enabled");
const prefersDarkMode = usePrefersDarkMode();
const enabled = vue.computed(() => {
return typeof enabledState.value !== "undefined" ? enabledState.value : prefersDarkMode.value;
});
vue.watchEffect(() => {
const className = "[vue-hooks-plus]-dark-mode";
const element = window.document.body;
if (enabled.value) {
element.classList.add(className);
} else {
element.classList.remove(className);
}
});
return [enabled, setEnabledState];
}
function usePrefersDarkMode() {
return useMedia__default.default(["(prefers-color-scheme: dark)"], [true], false);
}
module.exports = useDarkMode;
;