Files
bambuddy/frontend/src/hooks/useIsSidebarCompact.ts
T

25 lines
696 B
TypeScript

import { useState, useEffect } from 'react';
const SIDEBAR_COMPACT_BREAKPOINT = 1144;
export function useIsSidebarCompact(): boolean {
const [isCompact, setIsCompact] = useState(() =>
typeof window !== 'undefined' ? window.innerWidth < SIDEBAR_COMPACT_BREAKPOINT : false
);
useEffect(() => {
const mediaQuery = window.matchMedia(`(max-width: ${SIDEBAR_COMPACT_BREAKPOINT - 1}px)`);
const handleChange = (e: MediaQueryListEvent) => {
setIsCompact(e.matches);
};
setIsCompact(mediaQuery.matches);
mediaQuery.addEventListener('change', handleChange);
return () => mediaQuery.removeEventListener('change', handleChange);
}, []);
return isCompact;
}