crucıble

Dross

A pixel-dissolve card: on hover or click the surface divides into a grid of cells that dissolve away — each flashes white, shrinks and drifts up as a bright particle, with the odd seeded soft-white spark — then the second face condenses back from neutral smoke. Keyboard-operable, instant crossfade under reduced motion.

canvaspro

Installation

CLI

npx shadcn@latest add @crucible/dross

Props

PropTypeDefaultDescription
frontReact.ReactNodeContent shown before the dissolve.
backReact.ReactNodeContent revealed after the dissolve.
rowsnumber7Grid rows the card divides into.
colsnumber10Grid columns the card divides into.
stepDurationnumber8Stagger between cell ignitions in ms — the "step" of the wave.
trigger"hover" | "click""hover"What starts the dissolve. Hover also responds to keyboard focus.
oncebooleanfalseStay on back after the first dissolve instead of reverting.
colorsDrossColorsPalette overrides for the dissolve/smoke effects.
heatnumber10–1 master intensity: flash brightness, spark chance, smoke opacity.
pausedbooleanFreeze the dissolve mid-frame.
seednumber11Deterministic seed for cell order and spark placement.
Also accepts all props of Omit<React.ComponentPropsWithoutRef<"div">, "children" | "onClick">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.