Files
nahodka-front/src/hooks/useIsDesktop.js
2026-09-23 23:38:54 +03:00

26 lines
1.0 KiB
JavaScript

import { useEffect, useState } from "react";
// Тот же брейкпоинт, что использует sidebar.css: на >=900px левая навигация
// становится статичной (десктоп-раскладка), ниже — мобильная.
const DESKTOP_QUERY = "(min-width: 900px)";
function matchesDesktop() {
return typeof window !== "undefined" && window.matchMedia(DESKTOP_QUERY).matches;
}
/**
* Хук «шире 900px». Используется для десктоп-only страниц (админ-панель):
* весь связанный UI не показывается на мобильной раскладке вообще.
*/
export function useIsDesktop() {
const [isDesktop, setIsDesktop] = useState(matchesDesktop);
useEffect(() => {
const mql = window.matchMedia(DESKTOP_QUERY);
const onChange = (e) => setIsDesktop(e.matches);
mql.addEventListener("change", onChange);
return () => mql.removeEventListener("change", onChange);
}, []);
return isDesktop;
}