"use client"; import React, { useState, useEffect, useRef } from "react"; const ProgressCircle = ({ max }) => { const [countedNumber, setCountedNumber] = useState(0); const targetElement = useRef(null); const startCountup = () => { const intervalId = setInterval(() => { setCountedNumber((prev) => { if (prev >= max) { clearInterval(intervalId); return prev; } return prev + 1; }); }, 2000 / max); }; useEffect(() => { const handleIntersection = (entries, observer) => { entries.forEach((entry) => { if (entry.isIntersecting) { startCountup(); observer.unobserve(entry.target); } }); }; const options = { root: null, rootMargin: "0px", threshold: 0.5, }; const observer = new IntersectionObserver(handleIntersection, options); if (targetElement.current) { observer.observe(targetElement.current); } return () => { if (targetElement.current) { observer.unobserve(targetElement.current); } }; }, [max]); return ( <>