16 lines
393 B
TypeScript
16 lines
393 B
TypeScript
"use client"
|
|
|
|
import { useSyncExternalStore } from "react"
|
|
|
|
export function useMediaQuery(query: string): boolean {
|
|
return useSyncExternalStore(
|
|
(callback) => {
|
|
const mql = window.matchMedia(query)
|
|
mql.addEventListener("change", callback)
|
|
return () => mql.removeEventListener("change", callback)
|
|
},
|
|
() => window.matchMedia(query).matches,
|
|
() => false
|
|
)
|
|
}
|