diff --git a/src/lib/hooks/useMediaQuery.ts b/src/lib/hooks/useMediaQuery.ts new file mode 100644 index 0000000..0d7a61d --- /dev/null +++ b/src/lib/hooks/useMediaQuery.ts @@ -0,0 +1,16 @@ +import { useEffect, useMemo, useState } from 'react'; + +export function useMediaQuery(mq: string) { + + const mql = useMemo(() => matchMedia(mq), [mq]); + const [matches, setMatch] = useState(mql.matches); + + useEffect(() => { + const listener = (e: any) => setMatch(e.matches); + mql.addEventListener('change', listener); + + return () => mql.removeEventListener('change', listener); + }, [mq, mql]); + + return matches; +}