Files
thrilltrack-explorer/src-old/hooks/use-mobile.tsx

31 lines
823 B
TypeScript

import * as React from "react";
const MOBILE_BREAKPOINT = 768;
export function useIsMobile(): boolean | undefined {
const [isMobile, setIsMobile] = React.useState<boolean | undefined>(undefined);
React.useEffect(() => {
// Guard against server-side rendering
if (typeof window === 'undefined') return;
const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);
// Use MediaQueryList.matches instead of window.innerWidth for consistency
const onChange = () => {
setIsMobile(mql.matches);
};
// Set initial value
setIsMobile(mql.matches);
// Listen for changes
mql.addEventListener("change", onChange);
// Cleanup listener on unmount
return () => mql.removeEventListener("change", onChange);
}, []);
return isMobile;
}