blob: 0074ef57454f0c857ecddbc33c520cfd3a2eff2b (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
"use client"
import { useSyncExternalStore } from "react"
const MOBILE_BREAKPOINT = 768
const MEDIA_QUERY = `(max-width: ${MOBILE_BREAKPOINT - 1}px)`
function subscribe(callback: () => void) {
const mediaQueryList = window.matchMedia(MEDIA_QUERY)
mediaQueryList.addEventListener("change", callback)
return () => mediaQueryList.removeEventListener("change", callback)
}
function getSnapshot() {
return window.matchMedia(MEDIA_QUERY).matches
}
function getServerSnapshot() {
return false
}
export function useIsMobile(): boolean {
return useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot)
}
|