"use client"; import { useEffect, useRef, useState } from "react"; import { animate, useInView } from "framer-motion"; export function AnimatedNumber({ value, duration = 0.9, suffix = "", }: { value: number; duration?: number; suffix?: string; }) { const ref = useRef(null); const inView = useInView(ref, { once: true, margin: "-40px" }); const [display, setDisplay] = useState(0); useEffect(() => { if (!inView) return; const controls = animate(0, value, { duration, ease: [0.16, 1, 0.3, 1], onUpdate: (latest) => setDisplay(Math.round(latest)), }); return () => controls.stop(); }, [inView, value, duration]); return ( {display} {suffix} ); }