feat(hooks): add useMediaQuery hook for responsive component logic

This commit is contained in:
Tyler
2026-06-17 14:20:31 -06:00
parent 9edbfc2e1b
commit 895defa453
+21
View File
@@ -0,0 +1,21 @@
"use client";
import { useEffect, useState } from "react";
export function useMediaQuery(query: string): boolean {
const [matches, setMatches] = useState<boolean>(() => {
if (typeof window === "undefined") return false;
return window.matchMedia(query).matches;
});
useEffect(() => {
if (typeof window === "undefined") return;
const mq = window.matchMedia(query);
const handler = (e: MediaQueryListEvent) => setMatches(e.matches);
mq.addEventListener("change", handler);
setMatches(mq.matches);
return () => mq.removeEventListener("change", handler);
}, [query]);
return matches;
}