2025-09-01 21:02:50 +05:30

26 lines
645 B
JavaScript

'use client'
import { useEffect, useState } from 'react'
export default function Counter({ end, duration = 2 }) {
const [count, setCount] = useState(0)
useEffect(() => {
let start = 0
const totalFrames = duration * 60 // 60 FPS
const increment = end / totalFrames
const counter = setInterval(() => {
start += increment
if (start >= end) {
start = end
clearInterval(counter)
}
setCount(Math.floor(start))
}, 1000 / 60)
return () => clearInterval(counter)
}, [end, duration])
return <>{count}</>
}