/* Shared building blocks for platform/contact pages */ function PageHero({ eyebrow, title, italic, lead, primary, secondary, micro, signals, aside, crumb, basePath = "../" }) { useReveal(); return (
Auctera {crumb || "Platform"}
{eyebrow}

{title}{italic && <> {italic}}

{lead}

{primary && {primary.label} } {secondary && {secondary.label}}
{micro &&

{micro}

}
{aside}
{signals && (
{signals.map((s,i)=>(
{s[0]}
{s[1]}
))}
)}
); } function SectionHeader({ eyebrow, title, italic, lead, center, actions }) { return (
{eyebrow &&
{eyebrow}
}

{title}{italic && <> {italic}}

{lead &&

{lead}

} {actions &&
{actions}
}
); } function FinalCTASection({ title, italic, body, primary, secondary, micro }) { useReveal(); return (

{title}{italic && <> {italic}}

{body &&

{body}

} {micro &&

{micro}

}
{primary && {primary.label} } {secondary && {secondary.label}}
); } function Benefits({ items }) { useReveal(); return (
{[0,1].map(row => (
{items.slice(row*2, row*2+2).map((b,i)=>(

{b.title}

{b.body}

{b.callout &&
{b.callout}
}
))}
))}
); } function FitSplit({ good, bad }) { useReveal(); return (
GOOD FIT IF…
NOT FOR YOU IF…
); } function UseCases({ items }) { useReveal(); return (
{items.map((u,i)=>(
0{i+1}
PROBLEM

{u.title}

{u.problem}

TRANSPARENT RESOLUTION

{u.solution}

))}
); } function PhaseList({ phases }) { useReveal(); return (
{phases.map((p,i)=>(
{p.num}
{p.timeline}
PHASE {p.num}

{p.title}

{p.body}

))}
); } /* ========================================================== * NEW BUILDING BLOCKS — Solutions / Capabilities / About * Additive only; does not modify existing components. * ========================================================== */ /* Problem / Resolution narrative block — used by Solutions pages */ function ProblemResolution({ problem, resolution }) { useReveal(); return (
{problem.eyebrow || "THE PROBLEM"}

{problem.title}

{resolution.eyebrow || "HOW AUCTERA HELPS"}

{resolution.title}

); } /* Capability blocks — 4-up with supporting detail. Used by Capabilities pages + Solutions "What you get" sections. */ function CapabilityBlocks({ items, columns = 2 }) { useReveal(); return (
{items.map((it, i) => { const col = i % columns; const row = Math.floor(i / columns); return (
0 ? "1px solid var(--line)" : "none" }}>
0{i+1} {it.tag || "CAPABILITY"}

{it.title}

{it.body}

{it.detail && (

{it.detail}

)} {it.callout && !it.detail && (
{it.callout}
)}
); })}
); } /* Numbered steps — used in "How It Works" sections within Solutions/Capabilities pages */ function NumberedSteps({ steps, compact = false }) { useReveal(); return (
{steps.map((s, i) => (
0{i+1} {i < steps.length - 1 && ( )}

{s.title}

{s.body}

))}
); } /* Stages list — e.g. Growing Brands / Mid-Market / Enterprise in advertisers */ function StageCards({ stages }) { useReveal(); return (
{stages.map((s, i) => (
STAGE 0{i+1} {[...Array(i+1)].map((_, j) => ( ))}

{s.title}

{s.body}

{s.points && ( )}
))}
); } /* Pill / chip cloud — segment lists */ function ChipCloud({ items, eyebrow }) { useReveal(); return (
{items.map((it, i) => ( {it} ))}
); } /* Feature group grid — 3 groups with bulleted features each */ function FeatureGroups({ groups }) { useReveal(); return (
{groups.map((g, i) => (
GROUP 0{i+1}

{g.title}

))}
); } /* Principles grid — 6 numbered brand principles (About page) */ function PrincipleGrid({ principles }) { useReveal(); return (
{principles.map((p, i) => { const col = i % 3, row = Math.floor(i / 3); return (
0 ? "1px solid var(--line)" : "none" }}>
0{i+1}

{p.title}

{p.body}

); })}
); } /* Problem + italic quote pairs — About page "Why we built this" */ function QuoteProblems({ items }) { useReveal(); return (
{items.map((it, i) => (
0{i+1}
PROBLEM

{it.title}

OPERATOR NOTE

"{it.quote}"

))}
); } /* Outcome stats — 3-up or 4-up large stat row used on Solutions pages */ function OutcomeStats({ stats }) { useReveal(); return (
{stats.map((s, i) => (
{s.label}
{s.value}
{s.sub &&

{s.sub}

}
))}
); } /* Toggle audience / comparison (reusable two-sided) */ function AudienceToggle({ options, value, onChange }) { return (
{options.map(o => ( ))}
); } /* Related / see-also cross-links strip */ function RelatedLinks({ items, basePath = "" }) { useReveal(); return (
{items.map((it, i) => ( e.currentTarget.style.background="var(--paper-2)"} onMouseLeave={e=>e.currentTarget.style.background="var(--paper)"}>
{it.eyebrow || "SEE ALSO"}
{it.title}
{it.desc}
EXPLORE →
))}
); } function LogoCloud() { const logos = [ { name: "Walmart", src: "walmart.png" }, { name: "Nike", src: "nike.png" }, { name: "Samsung", src: "samsung.png" }, { name: "Uber", src: "uber.png" }, { name: "Agoda", src: "agoda.svg" }, { name: "Decathlon", src: "decathlon.png" }, { name: "Nespresso", src: "nespresso.png" }, { name: "Forever 21", src: "forever21.png" }, { name: "Lotto", src: "lotto.jpg" }, { name: "Bershka", src: "bershka.jpg" }, { name: "Mango", src: "mango.png" }, { name: "Samsonite", src: "samsonite.jpg" }, { name: "Motorola", src: "motorola.png" }, { name: "Psafe", src: "psafe.jpg" }, { name: "XT", src: "xt.jpg" }, { name: "Movavi", src: "movavi.png" }, { name: "Chicco", src: "chicco.jpg" }, { name: "Electrolux", src: "electrolux.jpg" }, { name: "Alibaba", src: "alibaba.jpg" }, { name: "Bitgate", src: "bitgate.jpg" }, { name: "LightInTheBox", src: "lightinthebox.jpg" }, { name: "PatPat", src: "patpat.png" }, { name: "Oziva", src: "oziva.jpg" }, { name: "Vivo", src: "vivo.jpg" } ]; return (
Trusted by global commerce leaders
{logos.map((logo, i) => (
{logo.name}
))}
); } function LegalContent({ sections }) { return (
CONTENTS
{sections.map((s, i) => (

{s.title}

{s.content}
))}
); } function ConferenceSection() { const events = [ { name: "Affiliate World Conferences", loc: "Global" }, { name: "Affiliate Summit", loc: "Las Vegas / New York" }, { name: "DMEXCO", loc: "Cologne" }, { name: "Adtech", loc: "London / Tokyo" }, { name: "Mobile World Congress", loc: "Barcelona" }, { name: "GITEX", loc: "Dubai" }, { name: "Token 2049", loc: "Singapore / Dubai" } ]; return (
Initialize offline connectivity

Meet Us In Person.

Attending TES or Affiliate World? Let's discuss performance architecture face-to-face. Secure your meeting slot below.

Book a meeting
{events.map((e, i) => (
0{i + 1} · EVENT

{e.name}

{e.loc}

))}
); } Object.assign(window, { PageHero, SectionHeader, FinalCTASection, Benefits, FitSplit, UseCases, PhaseList, ProblemResolution, CapabilityBlocks, NumberedSteps, StageCards, ChipCloud, FeatureGroups, PrincipleGrid, QuoteProblems, OutcomeStats, AudienceToggle, RelatedLinks, LogoCloud, LegalContent, ConferenceSection });