"use client"; import { useEffect, useState } from "react"; import { motion, AnimatePresence } from "framer-motion"; export function Preloader() { const [progress, setProgress] = useState(0); const [complete, setComplete] = useState(false); useEffect(() => { document.body.style.overflow = "hidden"; window.scrollTo(0, 0); const duration = 2500; const interval = 25; const steps = duration / interval; let currentStep = 0; const timer = setInterval(() => { currentStep++; const newProgress = Math.min(Math.floor((currentStep / steps) * 100), 100); setProgress(newProgress); if (currentStep >= steps) { clearInterval(timer); setTimeout(() => { setComplete(true); setTimeout(() => { document.body.style.overflow = "auto"; }, 1000); // Wait for exit animation }, 400); // Pause briefly at exactly 100% } }, interval); return () => { clearInterval(timer); document.body.style.overflow = "auto"; }; }, []); return ( {!complete && (
evandro.dev
Carregando {progress}%
)}
); }