// Metrics: dark ink band with count-up stats + an animated growth chart. const NS_MET = window.AnsysDigitalDesignSystem_4543d7; function useInView(ref, rootMargin = "-12% 0px") { const [seen, setSeen] = React.useState(false); React.useEffect(() => { if (!ref.current || seen) return; const io = new IntersectionObserver((es) => { if (es.some((e) => e.isIntersecting)) { setSeen(true); io.disconnect(); } }, { rootMargin }); io.observe(ref.current); return () => io.disconnect(); }, [seen]); return seen; } function CountUp({ value, suffix, accent }) { const ref = React.useRef(null); const seen = useInView(ref); const numeric = /^[0-9]+$/.test(value); const [n, setN] = React.useState(numeric ? 0 : value); React.useEffect(() => { if (!seen || !numeric) return; const target = parseInt(value, 10); const dur = 1400; const t0 = performance.now(); let raf = 0; const tick = (t) => { const p = Math.min(1, (t - t0) / dur); const eased = 1 - Math.pow(1 - p, 3); setN(Math.round(target * eased)); if (p < 1) raf = requestAnimationFrame(tick); }; raf = requestAnimationFrame(tick); return () => cancelAnimationFrame(raf); }, [seen]); return (
Every store we build is measured on outcomes — speed, conversion, and revenue that keeps climbing after launch.
Metrics are averages across managed client stores over the stated period. Individual results vary by product, pricing, market and marketing spend, and are not a guarantee of future performance.