Crucible

Vault

Dome-style circular drag gallery on a CSS 3D perspective ring — drag, throw, or scroll to spin with inertia and detent snapping while off-focus panels rest in museum duotone and the front panel blooms to full color. Arrow keys rotate; panels are focusable with announced captions.

gsappro

Installation

CLI

npx shadcn@latest add @crucible/vault

Manual — install dependencies, then copy the source

npm install gsap

Props

PropTypeDefaultDescription
itemsVaultItem[]a built-in set of gradient artworksPanels to arrange around the ring.
radiusnumbercomputed from panel width and item count so panels never overlapRing radius in px (distance from center to each panel).
autoRotatenumber4Idle drift speed in degrees per second. Set 0 to disable. Pauses on hover, focus, and interaction.
panelWidthnumber150Panel width in px.
panelHeightnumber210Panel height in px.
onItemClick(index: number, item: VaultItem) => voidFires when the front-facing panel is clicked. Clicking any other panel rotates it to the front.
pausedbooleanfalseHalts the idle auto-rotation (drag, wheel, and keys still work).
labelstring"Drag gallery"Accessible name for the gallery.
Also accepts all props of React.ComponentPropsWithoutRef<"div">they pass through to the underlying element.

Honors prefers-reduced-motion with a designed static fallback, and passes className through.