@egstad/detect-theme
Version:
A micro ES6 module (~0.5KB) for detecting a users preferred-color-scheme and watching for changes.
29 lines (24 loc) • 586 B
JavaScript
const mediaQuery = window.matchMedia("(prefers-color-scheme: dark)");
const watch = () => {
mediaQuery.addEventListener("change", get, false);
get()
}
const teardown = () => {
mediaQuery.removeEventListener("change", get, false);
}
export const get = () => {
const theme = ["dark", "light", "no-preference"].find(
(scheme) => window.matchMedia(`(prefers-color-scheme: ${scheme})`).matches
);
const event = new CustomEvent("colorSchemeUpdated", {
detail: {
theme,
},
});
window.dispatchEvent(event);
}
export default {
watch,
teardown,
get
};