// 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 (
{n}{suffix}
); } function GrowthChart() { const ref = React.useRef(null); const seen = useInView(ref, "-8% 0px"); const W = 460, H = 240, pad = 14; const pts = [12, 20, 17, 34, 40, 58, 72, 88]; const max = 100; const stepX = (W - pad * 2) / (pts.length - 1); const xy = pts.map((v, i) => [pad + i * stepX, H - pad - (v / max) * (H - pad * 2)]); const line = xy.map((p, i) => (i ? "L" : "M") + p[0].toFixed(1) + " " + p[1].toFixed(1)).join(" "); const area = line + " L" + xy[xy.length - 1][0].toFixed(1) + " " + (H - pad) + " L" + xy[0][0].toFixed(1) + " " + (H - pad) + " Z"; const bars = [40, 55, 48, 70, 82, 95]; const bw = (W - pad * 2) / bars.length; return (
Conversion rate — 12 months
+38%
{[0, 1, 2, 3].map((i) => ( ))} {bars.map((b, i) => { const bh = (b / max) * (H - pad * 2); return ; })} {xy.map((p, i) => { const last = i === xy.length - 1; return ; })}
LaunchQ2Q3Now
); } function Metrics() { const { Eyebrow } = NS_MET; const stats = [ { value: "250", suffix: "+", label: "Shopify projects delivered", icon: "rocket" }, { value: "98", suffix: "%", label: "Client satisfaction", accent: "gold", icon: "heart" }, { value: "6", suffix: "+", label: "Countries served worldwide", icon: "globe" }, { value: "24/7", suffix: "", label: "Dedicated support", icon: "life-buoy" }, ]; return (
Proof, not promises

Results that compound

Every store we build is measured on outcomes — speed, conversion, and revenue that keeps climbing after launch.

{stats.map((s) => (
{s.label}
))}

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.

); } Object.assign(window, { Metrics });