"use client"; import { useEffect, useState } from "react"; const QUERY = "(prefers-reduced-motion: reduce)"; /** * Preferência `prefers-reduced-motion` do sistema operacional, lida com matchMedia (sem biblioteca de animação). * Falso no servidor e na primeira renderização no navegador, para o HTML hidratar igual ao do servidor. * * @example * const reducedMotion = useReducedMotion(); * return
; */ export function useReducedMotion(): boolean { const [reduced, setReduced] = useState(false); useEffect(() => { if (typeof window.matchMedia !== "function") return; const query = window.matchMedia(QUERY); const update = () => setReduced(query.matches); update(); query.addEventListener("change", update); return () => query.removeEventListener("change", update); }, []); return reduced; }