17 lines
488 B
TypeScript
17 lines
488 B
TypeScript
import { useState, useEffect } from 'react'
|
|
|
|
export function useReducedMotion(): boolean {
|
|
const [reducedMotion, setReducedMotion] = useState(false)
|
|
|
|
useEffect(() => {
|
|
const mq = window.matchMedia('(prefers-reduced-motion: reduce)')
|
|
setReducedMotion(mq.matches)
|
|
|
|
const handler = (e: MediaQueryListEvent) => setReducedMotion(e.matches)
|
|
mq.addEventListener('change', handler)
|
|
return () => mq.removeEventListener('change', handler)
|
|
}, [])
|
|
|
|
return reducedMotion
|
|
}
|