"use client" import { useState, useEffect } from 'react' export function useMediaQuery(query: string): boolean { // Определяем начальное состояние на стороне сервера (SSR) const [matches, setMatches] = useState(false) useEffect(() => { // После монтирования компонента проверяем соответствие const media = window.matchMedia(query) // Устанавливаем начальное значение setMatches(media.matches) // Создаем функцию-обработчик, которая будет вызываться при изменении медиа-запроса const listener = (event: MediaQueryListEvent) => { setMatches(event.matches) } // Добавляем слушатель изменений media.addEventListener('change', listener) // Очищаем слушатель при размонтировании компонента return () => { media.removeEventListener('change', listener) } }, [query]) // Перезапускаем эффект только при изменении запроса return matches }