18 lines
645 B
JavaScript
18 lines
645 B
JavaScript
export function prefersReducedMotion() {
|
|
return typeof window.matchMedia === "function" && window.matchMedia("(prefers-reduced-motion: reduce)").matches;
|
|
}
|
|
|
|
export function prefersColorSchemeDark() {
|
|
return typeof window.matchMedia === "function" && window.matchMedia("(prefers-color-scheme: dark)").matches;
|
|
}
|
|
|
|
export function subscribePrefersColorSchemeChange(handler) {
|
|
const mq = window.matchMedia?.("(prefers-color-scheme: dark)");
|
|
if (!mq) return;
|
|
if (typeof mq.addEventListener === "function") {
|
|
mq.addEventListener("change", handler);
|
|
} else if (typeof mq.addListener === "function") {
|
|
mq.addListener(handler);
|
|
}
|
|
}
|