A diagonal 3D conveyor belt ferries labelled packages through install / test / build / deploy arches. Each stage lights up and emits a particle puff as a package passes; the final cube emerges glowing 'deployed.' Built for high-end CI/CD platform landing pages.
import BuildPipelineConveyor from '@crazygl/hero-build-pipeline-conveyor';
export default function Page() {
return (
<BuildPipelineConveyor
heading="Ship every commit."
cameraPreset="three-quarter"
ctaLabel="Start shipping →"
onCTAClick="/signup"
/>
);
}cameraPreset (side / three-quarter / overhead), cameraZoom, cameraHeight, cameraFOV, parallaxStrength.archCount (2–6), archShape (round torus / square portal / minimal pillars / hidden light-only), archIntensity, stageColor1..4, stageLabels.packageShape (cube / sphere / rounded-box), packageColor, deployedColor, spawnRate, conveyorSpeed, packageScale.labelPosition, labelTextColor, labelBackgroundColor, labelFontWeight, labelScale.contentType (heading / two-columns / custom), heading, subheading, ctaLabel, onCTAClick (URL string or callback), CTA colours.transparentBackground, bgTop, bgBottom.npm install @crazygl/hero-build-pipeline-conveyorThe component takes the same props you see in the live customizer on the right — every default ships poster-quality.
import BuildPipelineConveyor from '@crazygl/hero-build-pipeline-conveyor';
export default function Landing() {
return (
<BuildPipelineConveyor />
);
}The wrapper renders static HTML on the server and only initialises the canvas after hydration, so search engines see your copy.
// app/page.tsx — works in SSR-first frameworks (Next, Remix, Astro, etc.)
'use client';
import BuildPipelineConveyor from '@crazygl/hero-build-pipeline-conveyor';
export default function Page() {
return (
<section>
<BuildPipelineConveyor
heading="Say hi."
subheading="Your new hero."
/>
<article>
<h2>Welcome</h2>
<p>Your content keeps its own voice below the hero.</p>
</article>
</section>
);
}