crucıble

Eclipse

A total solar eclipse: a black moon disk occludes a dead-center sun ringed by a white-hot corona of writhing radial streamers, a razor limb ring, and one warm diamond-ring bead drifting around the rim over a seeded starfield. Original OGL fragment shader, dithered, offscreen-paused, reduced-motion-safe.

oglfree

Installation

CLI

npx shadcn@latest add @crucible/eclipse

Manual — install dependencies, then copy the source

npm install ogl

Props

PropTypeDefaultDescription
colors[string, string, string]["#f4f6ff", "#a8c2ec", "#ffcf8a"]Three tones: [core, streamer, glint]. core is the white-hot inner corona hugging the limb, streamer is the cooler outer corona the rays fade into, glint is the warm diamond-ring bead. Any hex string.
speednumber1Animation speed multiplier: scales the corona's writhe and the diamond glint's travel around the ring. 1 = default, 2 = twice as fast.
intensitynumber1Corona brightness 0–2: scales the glow, streamers, limb ring, and diamond glint together. The starfield stays fixed so raising it never blows out the sky.
pausedbooleanfalseFreeze the animation at its current frame.
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.