crucıble

Meniscus

A scroll-progress bar that reads as liquid filling a channel — a cool blue-to-white gradient with a white leading bead that glows while scrolling and settles to a solid neutral fill at 100%.

motionfree

Installation

CLI

npx shadcn@latest add @crucible/meniscus

Manual — install dependencies, then copy the source

npm install motion

Props

PropTypeDefaultDescription
scrollerReact.RefObject<HTMLElement | null>Track the scroll progress of this element instead of the page. Pass a ref to an overflow-y-auto container to drive the bar from an internal scroll region — mirrors the scroller prop on Runnel.
colors[string, string]["#4c6a92", "#dbe9ff"]Fill gradient, tail to leading edge.
heightnumber4Channel + fill thickness in px.
labelstring"Scroll progress"Accessible label.
Also accepts all props of Omit<React.ComponentPropsWithoutRef<"div">, "children">they pass through to the underlying element.

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