Everything frontend

Everything frontend Atomic utilities, story-driven motion — a single system for the frontend craft.

Primitives do one job perfectly. Motion lab ships cinematic UI states.

Primitives — zero-dep TS Motion lab — snap, pit, cover drive Skills — prompts for humans + models
Section A
Primitives

Name borrowed from the atom : one import, one problem, zero transitive drama.

scroll-into-view-promise Stable

Promise when smooth scroll really finishes. Finally hook your UI to the end of the scroll.

~0.6kB npm i scroll-into-view-promise
Docs →

viewport-units-fix Stable

Reliable --vh / --vw on mobile Safari. End the 100vh lie once.

~0.7kB npm i viewport-units-fix
Docs →

paste-rich Stable

Typed paste payloads — image, file, html, text — from one event normalizer.

~0.8kB npm i paste-rich
Docs →

form-dirty Stable

Snapshot and diff forms. Know changed fields, guard navigation — framework-agnostic.

~1.0kB npm i form-dirty
Docs →

hotkey-hint Stable

Shortcut overlay, sequences, and groups — press ? and look professional.

~3kB npm i hotkey-hint
Docs →
Section B
Motion lab

Micro-stories for delete, load, and success — each package is a tiny performant scene, not a generic spinner.

snap-vanish New

Canvas dust-off removal. Map delete / dismiss to a satisfying disintegration. Promise when pixels settle.

View demo →

f1-box-box New

Indeterminate loading with pit lane energy — car, crew, and looped cadence. start(), complete(), reset() your session.

View demo →

cover-drive New

Run-up while you await work; complete() to send the ball to the rope. Boundary flash for success.

View demo →
NPM npm i snap-vanish f1-box-box cover-drive
01

One problem.
One module.

Small surface area, loud clarity. If it needs a README page to justify itself, the scope was wrong.

02

Motion with
plot beats.

Loaders tell a 3-second story. Removals have consequences. These packages encode emotion without shipping a full game engine.

03

Typed &
tree-shake friendly.

ESM + CJS + d.ts on every package. We respect both your bundler and your weekend.

Start with a
scroll you can await

The newest primitive in the set — but every package shares the same install story.

View docs
Quick start
// 1. Install
npm install scroll-into-view-promise

// 2. Import
import scrollIntoView from 'scroll-into-view-promise'

// 3. Await
await scrollIntoView(document.getElementById('pricing'))