"use client"; import { useEffect, useState } from "react"; export default function Loader() { const [done, setDone] = useState(false); const [gone, setGone] = useState(false); useEffect(() => { const hide = () => setDone(true); const reduced = window.matchMedia("(prefers-reduced-motion: reduce)").matches; const delay = reduced ? 0 : 380; if (document.readyState === "complete") { const t = setTimeout(hide, delay); return () => clearTimeout(t); } const onLoad = () => setTimeout(hide, delay); window.addEventListener("load", onLoad); const fallback = setTimeout(hide, reduced ? 200 : 1200); return () => { window.removeEventListener("load", onLoad); clearTimeout(fallback); }; }, []); useEffect(() => { if (!done) return; const t = setTimeout(() => setGone(true), 500); return () => clearTimeout(t); }, [done]); if (gone) return null; return (
nomadro