import { useEffect, useState } from 'react' /** Subscribes to `window.matchMedia(query)`; updates on resize / breakpoint changes. */ export function useMediaQuery(query: string): boolean { const [matches, setMatches] = useState(() => typeof window !== 'undefined' ? window.matchMedia(query).matches : false, ) useEffect(() => { const mq = window.matchMedia(query) const onChange = () => setMatches(mq.matches) onChange() mq.addEventListener('change', onChange) return () => mq.removeEventListener('change', onChange) }, [query]) return matches }