diff options
Diffstat (limited to 'apps/web/lib/hooks/use-is-mobile.ts')
| -rw-r--r-- | apps/web/lib/hooks/use-is-mobile.ts | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/apps/web/lib/hooks/use-is-mobile.ts b/apps/web/lib/hooks/use-is-mobile.ts new file mode 100644 index 0000000..a56e36c --- /dev/null +++ b/apps/web/lib/hooks/use-is-mobile.ts @@ -0,0 +1,26 @@ +"use client" + +import { useState, useEffect } from "react" + +const MOBILE_BREAKPOINT = 768 + +export function useIsMobile(): boolean { + const [isMobile, setIsMobile] = useState(false) + + useEffect(() => { + const mediaQuery = window.matchMedia( + `(max-width: ${MOBILE_BREAKPOINT - 1}px)` + ) + + setIsMobile(mediaQuery.matches) + + function handleChange(event: MediaQueryListEvent) { + setIsMobile(event.matches) + } + + mediaQuery.addEventListener("change", handleChange) + return () => mediaQuery.removeEventListener("change", handleChange) + }, []) + + return isMobile +} |