// Shared tiny helpers const Icon = ({ name, size = 20, stroke = 1.75, className = "" }) => { const paths = { play: , trend: <>, target: <>, zap: , cpu: <>, clapper: <>, arrowRight: <>, check: , dollar: <>, bar: <>, menu: <>, close: <>, sparkles: , trophy: <>, }; return ( {paths[name]} ); }; const Logo = ({ size = 32, color = "#051B42" }) => ( ); const Eyebrow = ({ children, color = "#4361EE" }) => (
{children}
); const Button = ({ children, variant = "primary", href = "#", onClick, icon }) => { const base = { display: "inline-flex", alignItems: "center", gap: 8, fontFamily: "'Inter',sans-serif", fontWeight: 500, fontSize: 15, padding: "12px 24px", borderRadius: 999, border: 0, cursor: "pointer", textDecoration: "none", transition: "all 180ms cubic-bezier(.2,.7,.2,1)", }; const variants = { primary: { background: "#051B42", color: "#fff" }, secondary: { background: "#fff", color: "#051B42", border: "1.5px solid #051B42", padding: "10.5px 22.5px" }, cta: { background: "#4361EE", color: "#fff" }, ghost: { background: "transparent", color: "#fff", border: "1.5px solid rgba(255,255,255,.25)", padding: "10.5px 22.5px" }, }; return ( { e.currentTarget.style.transform = "translateY(-1px)"; }} onMouseLeave={(e) => { e.currentTarget.style.transform = "translateY(0)"; }}> {children}{icon && } ); }; // Responsive breakpoint hook. Returns "mobile" (<768), "tablet" (768–1023), or "desktop" (≥1024). const useBreakpoint = () => { const compute = () => { if (typeof window === "undefined") return "desktop"; const w = window.innerWidth; return w < 768 ? "mobile" : w < 1024 ? "tablet" : "desktop"; }; const [bp, setBp] = React.useState(compute); React.useEffect(() => { const onResize = () => setBp(compute()); window.addEventListener("resize", onResize); return () => window.removeEventListener("resize", onResize); }, []); return bp; }; Object.assign(window, { Icon, Logo, Eyebrow, Button, useBreakpoint });