Primitives do one job perfectly. Motion lab ships cinematic UI states.
Name borrowed from the atom : one import, one problem, zero transitive drama.
Promise when smooth scroll really finishes. Finally hook your UI to the end of the scroll.
Reliable --vh / --vw on mobile Safari. End the 100vh lie once.
Typed paste payloads — image, file, html, text — from one event normalizer.
Snapshot and diff forms. Know changed fields, guard navigation — framework-agnostic.
Shortcut overlay, sequences, and groups — press ? and look professional.
Micro-stories for delete, load, and success — each package is a tiny performant scene, not a generic spinner.
Canvas dust-off removal. Map delete / dismiss to a satisfying disintegration. Promise when pixels settle.
Indeterminate loading with pit lane energy — car, crew, and looped cadence. start(), complete(), reset() your session.
Run-up while you await work; complete() to send the ball to the rope. Boundary flash for success.
npm i snap-vanish f1-box-box cover-drive
Small surface area, loud clarity. If it needs a README page to justify itself, the scope was wrong.
Loaders tell a 3-second story. Removals have consequences. These packages encode emotion without shipping a full game engine.
ESM + CJS + d.ts on every package. We respect both your bundler and your weekend.
The newest primitive in the set — but every package shares the same install story.
View docs →// 1. Install npm install scroll-into-view-promise // 2. Import import scrollIntoView from 'scroll-into-view-promise' // 3. Await await scrollIntoView(document.getElementById('pricing'))