Headline cast in soft wax that drips slowly downward — vertices stretch into icicle-like extensions while letters stay readable. Hovering speeds up the melt; moving away lets the letters re-form. Glossy droplets fall from the bottoms.
import MeltingTypography from '@crazygl/hero-melting-typography';
export default function Page() {
return (
<MeltingTypography
heading="MELT"
textColor="#d34a4a"
dripAmount={0.6}
clearcoat={0.85}
/>
);
}heading (the word that melts; 4–8 letters read best), subheading, ctaLabel, onCTAClick.extrudeDepth, letterSpacing.dripAmount, dripSpeed, dripVariability.hoverMeltMultiplier, reformSpeed.dropParticleCount.textColor, roughness, clearcoat.envIntensity (studio reflection), keyLightIntensity.transparentBackground, bgColor.headingFontFamily (drives the 3D word, default Changa One), headingFontWeight.npm install @crazygl/hero-melting-typographyThe component takes the same props you see in the live customizer on the right — every default ships poster-quality.
import MeltingTypography from '@crazygl/hero-melting-typography';
export default function Landing() {
return (
<MeltingTypography />
);
}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 MeltingTypography from '@crazygl/hero-melting-typography';
export default function Page() {
return (
<section>
<MeltingTypography
heading="Say hi."
subheading="Your new hero."
/>
<article>
<h2>Welcome</h2>
<p>Your content keeps its own voice below the hero.</p>
</article>
</section>
);
}