crucıble

Foundry Cipher

A scramble-reveal card: churning angular neutral glyphs on near-black, with a soft-edged diamond aperture that follows the cursor and resolves glyphs at its center to bright white. A static title sits on top regardless of hover, and keyboard focus opens the aperture dead-center.

canvaspro

Installation

CLI

npx shadcn@latest add @crucible/foundry-cipher

Props

PropTypeDefaultDescription
childrenReact.ReactNodeCard content, rendered above the glyph field (bottom-aligned copy works well).
titlestringStatic label pinned dead-center over the field, visible regardless of hover.
revealRadiusnumber130Half-diagonal of the diamond aperture in px — the distance from the pointer at which glyphs cool back to dormant.
charsetstringCharacters the field churns through. Angular foundry stampings by default.
churnSpeednumber1Churn rate multiplier. 1 = default simmer, 2 = twice as fast.
colors[string, string, string]a neutral silver ramp[cold, mid, bright] — dormant glyph color, the mid ring of the aperture, and the white-bright center.
cellSizenumber16Glyph cell size in px. Bigger = coarser stampings.
heatnumber10–1 master intensity: aperture glow, glyph brightness, churn energy.
pausedbooleanFreeze the churn at its current frame (aperture still follows the pointer).
seednumber7Deterministic seed for the initial glyph layout.
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.