crucıble

Kintsugi

Canvas headline that crazes like glazed ceramic: seeded branching hairline cracks race out from the cursor, then a metallic gold seam flows along every fracture; click to split the glyphs into fragments that drop and spring back before gilding.

canvaspro

Installation

CLI

npx shadcn@latest add @crucible/kintsugi

Props

PropTypeDefaultDescription
textstring"Kintsugi"The headline (also rendered as a visually hidden heading for screen readers + SEO).
as"h1" | "h2" | "h3" | "p""h2"Element the visually hidden real text is rendered as, so it stays a heading.
fontSizenumberauto (~45% of the height)Maximum glyph size in px; the headline scales down (and wraps to two lines) to fit.
fontFamilystringa bold old-style serif stackCanvas font stack. Web fonts are picked up once document.fonts is ready.
colorstring"#efe9dd"Glaze (glyph body) color. A subtle ceramic sheen is layered on top of any color.
goldColorsstring[]["#f5d27a", "#b8862b"]Gold seam gradient stops, light to dark (two or more).
healDelaynumber1100Milliseconds between a crack racing out and the gold seam starting to flow along it.
densitynumber1Crack density: number of fractures and how eagerly they branch. 0.25–2.
autoplaybooleantrueWhen untouched, a seeded crack appears every ~7s; those seams fade 12s after gilding so it never saturates.
pausedbooleanfalseFreeze all motion. Imperative calls still add seams, fully gilded.
seednumber11Deterministic seed for every crack graph and autoplay origin.
refReact.Ref<KintsugiHandle>Imperative handle: crack(x?, y?), shatter(x?, y?), reset().
Also accepts all props of Omit<React.HTMLAttributes<HTMLDivElement>, "children" | "color"> — 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.