Components
Everything on this site, installable
The site is built from these, so what you install is what you are looking at. Every preview below is the real component running, not a picture of one.
Add the registry once
export CTA_REGISTRY=https://adamjurek.com/r/registry.jsonBoot Loader
Scroll effects
No dependencies
A count to a hundred that stalls at ninety until what it is covering has actually arrived. Fills its parent, not the viewport.
Preview: A mark, a number climbing, and a rule filling
Reveal
Scroll effects
No dependencies
Fades and rises its children the first time they reach the viewport. Never un-reveals.
Preview: A card fading and rising into place
Scroll Spin
Scroll effects
No dependencies
Rotates its children with the page scroll, in a rAF callback rather than React state.
Preview: A mark turning as the frame scrolls
Smooth Scroll
Scroll effects
lenis
Mounts Lenis for the page and renders nothing. Respects reduced motion.
Preview: Nothing to see - it changes how the page scrolls
Typed Mark
Text effects
No dependencies
Types a word out one character at a time, cycling the syntax palette. No JavaScript, no state, and it runs with scripting off.
Preview: A name typing itself in nine colours
useScrollProgress
Scroll effects
No dependencies
How far one element has travelled up the viewport, 0 to 1, once per frame. Gated by an observer so an off-screen element costs nothing.
Preview: No UI - it hands you a number between 0 and 1
useScrollTurn
Scroll effects
No dependencies
Scroll position as a rotation, delivered once per frame. Drives a CSS transform or a three.js object, never React state.
Preview: No UI - it hands you an angle every frame
Accordion
Disclosure
No dependencies
details, stacked - every behaviour ships in the element, and items open independently on purpose.
Preview: Three rows, one open, chevrons turning
Archive
Containers
zod
A filterable grid with categories, subcategories and tags. Renders its own links through a callback so the router stays yours.
Preview: A grid of cards above a row of category filters
Aspect Ratio
Page structure
No dependencies
A box that keeps its shape and fills whatever is put in it. CSS aspect-ratio, as a prop.
Preview: A 16:9 frame holding an image to its crop
Card
Containers
No dependencies
Title, optional meta, arbitrary body. Heading level is a prop so the outline stays correct.
Preview: Two cards: one with meta, one as a link
Collapsible
Disclosure
No dependencies
One details, dressed - a sentence that opens, for prose rather than lists.
Preview: A line that opens into a paragraph
Context Menu
Overlays
react-dom
One menu, reachable by right-click, by long press, and by a button. Escape and arrow keys included.
Preview: A menu opening at the pointer with four actions in it
Desk Window
Overlays
No dependencies
A window you can drag, close and stack. Position is written to the element during a drag and to state only on release.
Preview: Two windows on a desk, one dragged in front of the other
Device
Scenes
No dependencies
A phone, a tablet or a laptop in CSS 3D, chosen by the stylesheet rather than by JavaScript, whose screen is a real scroll container with real controls in it.
Preview: The same screen drawn as all three machines
Dialog
Overlays
No dependencies
A native dialog driven by props: top layer, focus trap and Escape from the element, click-outside from here.
Preview: A titled box over a dimmed page
Dock
Page structure
No dependencies
A launcher, what is open, and a corner. Search opens upward and results are the consumer's to compute.
Preview: A dock with a launcher open above it
Folder Shelf
Containers
No dependencies
A desktop of folders that open into draggable windows, several at once, remembered between visits.
Preview: Folders on a desk with a window open over them