added advertising
This commit is contained in:
26
src/hooks/useIsDesktop.js
Normal file
26
src/hooks/useIsDesktop.js
Normal file
@@ -0,0 +1,26 @@
|
||||
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;
|
||||
}
|
||||
Reference in New Issue
Block a user