Files
misode.github.io/src/app/hooks/useMediaQuery.ts
Misode 1b91485bf1 Giscus (#209)
* Test giscus on homepage

* Use @giscus/react and support light theme

* Track prefers color scheme

* Create a discussion tab for each version
2022-03-16 02:39:33 +01:00

20 lines
467 B
TypeScript

import { useEffect, useState } from 'preact/hooks'
export function useMediaQuery(query: string): boolean {
const [prefers, setPrefers] = useState(matchMedia(query).matches)
const onChange = (e: MediaQueryListEvent) => {
setPrefers(e.matches)
}
useEffect(() => {
const mediaQuery = matchMedia(query)
mediaQuery.addEventListener('change', onChange)
return () => {
mediaQuery.removeEventListener('change', onChange)
}
}, [query])
return prefers
}