crucıble

Amalgam

A wordmark cast in living liquid chrome: a glyph alpha mask shaded by an original OGL metal shader — domain-warped churn, thin specular bands over dark troughs, a fresnel-lit rim, a whisper of chromatic fringing, and one crisp highlight that sweeps the full mark every few seconds, after a one-shot pour-in on first view. Polished cool steel by default; tint reaches warm bronze/gold.

oglpro

Installation

CLI

npx shadcn@latest add @crucible/amalgam

Manual — install dependencies, then copy the source

npm install ogl

Props

PropTypeDefaultDescription
textstring"AMALGAM"The wordmark rendered as liquid metal.
fontSizenumber120Cap height of the wordmark, in CSS pixels.
fontWeightnumber | string800Font weight of the mask glyphs.
fontFamilystringa heavy cross-platform sans stackFont family used to render the mask. Must be a concrete family (canvas cannot inherit CSS fonts).
letterSpacingnumber2Extra letter spacing in CSS pixels.
colorsAmalgamColorspolished cool steelMetal ramp: { dark, light, tint }.
speednumber1Flow speed multiplier. 1 = default, 0 = frozen churn.
intensitynumber1Overall surface brightness. 1 = default.
amplitudenumber1Liquid wave amplitude — how far the metal churns. 1 = default.
scalenumber1Pattern scale of the flow field. Higher = finer marbling.
sharpnessnumber1Specular band sharpness. Higher = thinner, crisper highlights.
fresnelnumber1Fresnel rim strength along the silhouette.
chromanumber0.14Chromatic-aberration amount — a faint per-channel split at the bands. Defaults to a whisper; push up for a rainbow oil-slick edge.
sweepIntervalnumber6Seconds between the single crisp highlight sweeps that travel the full mark. 0 disables the sweep, leaving only ambient churn.
mouseAnimationbooleanfalseSwap the auto flow loop for pointer-driven flow.
pausedbooleanfalseFreeze the animation at its current frame.
introbooleantrueDesigned intro: the first time the mark scrolls into view, liquid metal pours across it behind a bright leading edge (~1.2s, once). Off renders the full mark immediately. Never under reduced motion.
idlebooleantrueIdle autoplay for mouseAnimation: after 1.5s with no pointer over the mark, a ghost point drifts a slow Lissajous path so the pointer-driven flow keeps leaning and churning; a real pointer takes over instantly. No effect without mouseAnimation.
refReact.Ref<AmalgamHandle>React 19 ref prop — imperative replay() of the intro.
Also accepts all props of React.ComponentPropsWithoutRef<"div"> — they pass through to the underlying element.

Honors prefers-reduced-motion with a designed static fallback, pauses offscreen and on hidden tabs, and passes className through.