import { useEffect, useState } from 'react' const MOBILE_VIEWPORT_QUERY = '(max-width: 767px)' function getInitialMobileViewport() { if (typeof window === 'undefined' || typeof window.matchMedia !== 'function') return false return window.matchMedia(MOBILE_VIEWPORT_QUERY).matches } export function useMobileViewport() { const [isMobile, setIsMobile] = useState(getInitialMobileViewport) useEffect(() => { if (typeof window === 'undefined' || typeof window.matchMedia !== 'function') return const mediaQuery = window.matchMedia(MOBILE_VIEWPORT_QUERY) const handleChange = (event: MediaQueryListEvent) => { setIsMobile(event.matches) } setIsMobile(mediaQuery.matches) if (typeof mediaQuery.addEventListener === 'function') { mediaQuery.addEventListener('change', handleChange) } else { mediaQuery.addListener(handleChange) } return () => { if (typeof mediaQuery.removeEventListener === 'function') { mediaQuery.removeEventListener('change', handleChange) } else { mediaQuery.removeListener(handleChange) } } }, []) return isMobile }