diff --git a/src/lib/use-media-query.ts b/src/lib/use-media-query.ts new file mode 100644 index 0000000..e5f9936 --- /dev/null +++ b/src/lib/use-media-query.ts @@ -0,0 +1,21 @@ +"use client"; + +import { useEffect, useState } from "react"; + +export function useMediaQuery(query: string): boolean { + const [matches, setMatches] = useState(() => { + 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; +}