/* Trust/Partners, Solutions, Infrastructure (light, responsive). */
const { Card, Badge, Button, Icon } = window.HudsonPayDesignSystem_198a48;
/* Animated count-up — fires once when scrolled into view. Parses an optional
prefix ($), the number (commas tolerated) and a suffix (+, B, etc). */
function CountUp({ value }) {
const ref = React.useRef(null);
const m = String(value).match(/^([^\d]*)([\d,]+)(.*)$/);
const prefix = m ? m[1] : "";
const suffix = m ? m[3] : "";
const target = m ? parseInt(m[2].replace(/,/g, ""), 10) : 0;
const [display, setDisplay] = React.useState(m ? prefix + "0" + suffix : value);
React.useEffect(() => {
if (!m) return;
const el = ref.current;
if (!el) return;
const reduce = window.matchMedia && window.matchMedia("(prefers-reduced-motion: reduce)").matches;
if (reduce) { setDisplay(value); return; }
let done = false;
const io = new IntersectionObserver((entries) => {
entries.forEach((e) => {
if (!e.isIntersecting || done) return;
done = true;
io.disconnect();
const dur = 1500;
const t0 = performance.now();
const tick = (now) => {
const p = Math.min(1, (now - t0) / dur);
const eased = 1 - Math.pow(1 - p, 3);
const cur = Math.round(target * eased);
setDisplay(prefix + cur.toLocaleString("en-US") + suffix);
if (p < 1) requestAnimationFrame(tick);
else setDisplay(value);
};
requestAnimationFrame(tick);
});
}, { threshold: 0.5 });
io.observe(el);
return () => io.disconnect();
}, []);
return {display};
}
/* ---------- SECTION 2 — Trust & Partners ---------- */
/* Two concentric starbursts spinning in opposite directions — a gear-like motif. */
function GearStack({ outer = 620, inner = 400 }) {
const { Starburst } = window.HPSite;
return (
);
}
function TrustPartners() {
const { Container, Starburst, useIsMobile } = window.HPSite;
const mobile = useIsMobile();
const metrics = [
{ v: "190+", l: "Countries supported" },
{ v: "64", l: "Currencies settled" },
{ v: "$48B", l: "Annual volume" },
{ v: "1,200+", l: "Enterprise clients" },
];
const partnerCard = (name) => (
{name}
);
const groups = [
{ t: "Banking Partners", n: ["Citco", "Northbank", "Meridian", "Arc Trust"] },
{ t: "Liquidity Providers", n: ["Lumen LP", "B2C2", "Galaxy", "Cumberland"] },
{ t: "Infrastructure", n: ["Aurora", "Fireblocks", "Modulr", "Stripe"] },
{ t: "Payment Networks", n: ["Visa", "Mastercard", "SWIFT", "SEPA"] },
];
return (
{mobile ? (
Access institutional-grade over-the-counter trading with dedicated relationship managers.
In partnership with
{["Citco", "Northbank", "Clear Trust", "Modulr"].map(partnerCard)}
{partnerCard("Visa")}
) : (
Access institutional-grade over-the-counter trading with dedicated relationship managers.
In partnership with
{partnerCard("Citco")}
{partnerCard("Northbank")}
{partnerCard("Clear Trust")}
{partnerCard("Modulr")}
Trusted by forward-thinking companies
{partnerCard("Visa")}
)}
{groups.map(g => (
{g.t}
{g.n.map(name => (
{name}
))}
))}
);
}
/* ---------- SECTION 3 — Solutions ---------- */
function Solutions({ onPage }) {
const { Container, DashChip, useIsMobile } = window.HPSite;
const mobile = useIsMobile();
const items = [
{ icon: "globe", t: "Global Payments", d: "Move money across 190+ countries on local rails with FX baked in.", chips: ["Local Payout", "Transparent FX"], currencies: ["USDT", "BTC", "GBP", "EUR", "USD"] },
{ icon: "arrow-left-right", t: "OTC Trading", d: "Deep institutional liquidity for large fiat and stablecoin trades.", chips: ["Dedicated Desk", "Institutional Rates", "24/7 Support"] },
{ icon: "credit-card", t: "Corporate Cards", d: "Spend digital assets anywhere with premium cards backed by stablecoins.", chips: ["Global Acceptance", "Real-Time Settlement", "Premium Rewards"] },
{ icon: "wallet", t: "Multi-Currency Accounts", d: "Hold, receive and convert 64 currencies from one named account.", chips: ["Local IBANs", "No Lock-In"] },
{ icon: "circle-dollar", t: "Stablecoin Settlement", d: "Settle in USDC/USDT with instant on/off-ramps to fiat.", chips: ["Sub-Second", "1:1 Redemption"] },
{ icon: "trending-up", t: "Treasury Solutions", d: "Automate cash sweeps, hedging and yield across entities.", chips: ["Auto-Convert", "Risk Dashboards"] },
];
const coin = { USDT: "$", BTC: "₿", GBP: "£", EUR: "€", USD: "$" };
return (
Comprehensive financial services designed for sophisticated clients
OUR SOLUTIONS
{items.map(it => (
{it.chips.map(c => {c})}
{it.currencies && (
{it.currencies.map(cur => (
{coin[cur]}
{cur}
))}
)}
))}
);
}
/* ---------- SECTION 4 — Infrastructure ---------- */
function Infrastructure() {
const { Container, Eyebrow, useIsMobile } = window.HPSite;
const mobile = useIsMobile();
const rails = [
{ icon: "zap", t: "Real-Time Settlement", d: "Funds finalize in seconds, not days." },
{ icon: "arrow-left-right", t: "Cross-Border Transfers", d: "Local rails in every major corridor." },
{ icon: "wallet", t: "Multi-Currency Support", d: "Hold and net 64 currencies natively." },
{ icon: "layout-grid", t: "Enterprise APIs", d: "REST + webhooks, 99.99% uptime SLA." },
{ icon: "trending-up", t: "Institutional Liquidity", d: "Aggregated depth from tier-1 LPs." },
{ icon: "globe", t: "Global Payment Rails", d: "SWIFT, SEPA, ACH, FPS, PIX & more." },
];
const steps = ["Originate", "Route", "Convert", "Settle"];
return (
Infrastructure
A single rail network connecting every market
{steps.map((s, i) => (
0{i + 1}
{s}
{i < steps.length - 1 && }
))}
);
}
Object.assign(window, { HPParts: Object.assign(window.HPParts || {}, { TrustPartners, Solutions, Infrastructure }) });