EmberField
Named pills rising through a spark bed, dimming to a legible floor inside your content column and consumed at the ceiling element.
Backdrops, demo surfaces and primitives that measure your real DOM boxes, read your design tokens, and settle into a composed still frame the moment a reader asks for less motion. Every component certifies against the same contract.
The catalogue isn’t bounded by technique — canvas, DOM and pure CSS all appear below. It’s bounded by a test: does it need to measure something, read your tokens, or hold a still frame? Everything here does. Everything that doesn’t belongs to shadcn/ui, not to Wisp.
The wedge. Backdrops that measure your layout before they draw a single pixel. Nobody else ships this, so it is what gets written about.
Named pills rising through a spark bed, dimming to a legible floor inside your content column and consumed at the ceiling element.
Nodes and links, rebuilt to the standard: nodes deflect off measured boxes and every link is clipped exactly at the boundary.
The pill layer without the spark bed — quieter, and cheap enough to run below the fold.
Three zero-JavaScript layers meant to stack. The wash breathes on an irregular cadence so it reads as coals, not a mechanical fade.
A fine blueprint grid whose lines and intersection dots dissolve around measured content, clearing a fade-edged space around every headline instead of ruling straight through it.
A field of drifting glow motes that yield to the cursor — repelled within a falloff radius and lit in the accent as they scatter — while deflecting off your measured content boxes.
Glowing motes that trace the perimeter of your measured content, flowing around each box's outline like current along a wire.
The sleeper. Every dev-tool landing page has to show the product working, and everyone hand-rolls it.
A scripted terminal that lands lines in sequence, shimmers while it thinks and flashes the beats that carry the story.
A live top/htop pane whose meters and columns wander on seamless harmonics — a long, non-repeating cycle that reads as a running machine, not a looping GIF.
A code pane that reveals line by line and lands a diff. Rows are laid out before the first frame, so the pane never reflows mid-play.
A scripted exchange with a real thinking state. Every AI product ships one of these and every one of them is bespoke.
An auto-advancing gallery where the progress bar is the clock — hover pauses the bar, which pauses the rotation, so the two can never desync.
A scripted HTTP request/response pane that plays a sequence of API calls — each lands, holds pending, then flashes its status pill and latency, resting on the full resolved transcript.
const wisp = useTokenColor("--wisp", [162, 72, 52]);
useCanvasScene(ref, {
draw: ({ ctx, width, height, dt }) => {
ctx.clearRect(0, 0, width, height);
paint(ctx, width, height, dt, wisp);
},
});A code pane that types itself out character by character with a blinking caret, holding its final box so the page never reflows mid-play.
The on-ramp. Low differentiation, highest install counts. Kept deliberately short — people arrive for these and stay for the tiers above.
A comet travelling a card's border — a conic gradient driven by a registered @property angle, so it animates on the compositor.
Eased counting on scroll into view, with tabular figures so climbing digits never jitter the layout.
The staggered reveal everyone installs first. Filter and transform only, so it never touches layout.
The signature primitive. Name two hues once and every rule, clipped headline and tick draws from them — canvas effects included.
A spotlight that follows the pointer across a card. Listens on pointer rather than mouse, so a stylus or touch drag lights it too, and resets on leave.
A row that scrolls forever, horizontally or vertically. Stops under reduced motion with every item still visible — a marquee that hid its content when stilled would be worse than one that never moved.
One focal call to action with a light sweeping across it, filled from the seam so the loudest element on the page introduces no third colour.
A headline that decodes into place without moving the page. The settled text holds the box while the noise is painted over it and clipped, so the line can never rewrap mid-effect.
A headline word that cycles through a list on an interval while the box stays locked to the widest word, so nothing around it ever reflows.
The product tier. The same contract pointed at numbers instead of atmosphere. Sells to people building products, not landing pages.
The categorical sibling of Sparkline — not every metric is temporal. Bars land in sequence from a real zero line, so a negative is never drawn as a short positive.
The percentage change beside a number. The arrow reports direction, the colour reports sentiment, and the two come apart for metrics where falling is the win.
Ticker, delta chip and sparkline on a single clock, with the delta's colour on a semantic token rather than the brand accent.
A donut whose slices sweep in while the centre total counts up on the same clock — the number is written from inside the draw loop, so the two cannot desync.
Single-value progress: an open ring whose arc and centre count-up share one reveal clock, and a tone-coloured semantic meter bar that holds a completed still frame when motion is off.
A streaming sparkline whose window scrolls smoothly left as the parent appends live data, easing each new point in from the right under an emphasised head.
A cell that tints its own token colour when live data changes under it. The tint sits on negative margins, so a flashing figure never nudges the ones beside it.
A line that draws on, then a crosshair whose tooltip measures itself against the container so it can never run off an edge.
Rows cascade in, then travel to their new positions when the sort changes — FLIP is measure-before-you-draw applied to layout.
Both layers share one reserved frame, so the swap is a cross-fade and the surrounding layout physically cannot move.
The first frame. The screen a product shows before it has one. Every layer draws from your two tokens, and the moment motion is off each settles to a composed frame — so the wait is never a blank box, only a still one.
A floating orb with two pinging rings and a mark turning at its centre — the full-page hold, seated on your seam and your own logo rather than a stock spinner.
The one everyone reaches for, drawn once from the seam: a conic tail masked to a ring and rotated on the compositor, so it costs nothing to spin.
A blueprint of ticks that light in a diagonal wave — the loader that looks like the library measuring your layout, because that is the house style.
The indeterminate bar a route wears while it fetches. Sweeps edge to edge from the seam, and holds a filled track rather than vanishing when motion is off.