Motion-first React components and blocks for shadcn, with tuned springs, light and dark themes, and an MCP server for AI agents.
A native scroller with a thin themed overlay scrollbar that thickens under the pointer, and edge fades that appear only when there is more to scroll. Base UI Scroll Area underneath.
An activity feed with a horizontally scrolling filter row and a vertical list.
Edge feathers that appear only where there is more to scroll (scrollFadeMask, useScrollEdges) and the stacked masked backdrop layers behind Progressive Blur (blurRamp, BlurStack).
A single-choice segmented control whose thumb glides to the selection on a spring. Base UI RadioGroup behaviour, concentric thumb, labels that never change weight.
A traffic card: a metric switch in the header and a date-range control that redraws the chart.
A soft band of light sweeps across a label while something is working. Every shimmer on the page shares one phase, status changes swap in without restarting the band, and turning it off fades the band out in place.
An agent's activity: a research status rotating mid-sweep, and a task list whose running row shimmers and settles as each task finishes.
Loading placeholders with one page-wide shimmer: every skeleton shares a viewport-space highlight and one phase, so a single band sweeps across all of them. Wrap the real content and it hands off in place, fading in from a soft blur.
An activity feed that loads behind skeletons shaped by its own content, then hands off without moving a pixel.
A one-line command with a $ prompt and a copy button that morphs into a check. When the command changes (pnpm ↔ npm) the text swaps and the width springs, so the copy button glides instead of jumping.
An install card: a package-manager switch drives two commands, plus a long git clone that scrolls under edge fades.
A word-sized line chart that draws in once, rings its newest point in the surface colour and morphs to new values from the shape on screen. Optional scrub readout.
A product-health card: a scrubbable daily-active-users line over four metric rows, all morphing with the range.
A quarter arc turning on a faint ring, the eased.dev status-badge mark. Spins on the compositor, pauses off-screen, freezes under reduced motion, announces itself unless visible text already does.
A deploy that walks its steps, each spinner swapping to a check, with the size scale underneath.
A premium hairline table on TanStack Table: half-pixel row rules, a quiet sentence-case header, numbers right-aligned on one edge, one emphasised cell per row, a sticky header, and dense or comfortable rows.
The layer under every Eased table: a TanStack Table v9 feature set with typed column meta, hairline rules, dense and comfortable densities, a hover-revealed sort button, a semantic table renderer, and two motion hooks: useRowFlip (rows glide to a new order) and useSelectionStagger (a range selection lights up row by row).
An invoices table with mono IDs you can copy, avatars, status badges, amounts and relative dates, with a density toggle.
Tabs with a gliding indicator (underline or pill) and panels that cross-fade 6px in the direction of travel while their container's height springs. Base UI Tabs behaviour.
A project page with Overview, Activity, Members and Settings tabs of different heights.
A textarea that grows with its text on a smooth height spring instead of jumping a line at a time. The character counter rolls its digits and turns warning-coloured at 90%.
A support reply that springs open as you write, with a rolling counter.
Change a label, status or short value with y + blur, and spring the width to fit, so neighbours glide instead of jumping. Direction-aware for counts and steps.
An order tracker, a billing toggle and a copy button, each changing text with Text Swap.
The text-change engine: outgoing text lifts 3px and blurs out, incoming rises 4px and sharpens, and the box springs to the new width. Shared by Button, Field messages and toasts.
The line above a reasoning model's answer: the label shimmers while a seconds counter rolls, then "Thinking" morphs into "Thought for 12s" and the reasoning folds away a second after the answer starts.
A billing question: the assistant thinks for six seconds with its reasoning streaming in, then answers while the bar settles to "Thought for 6s" and folds away.
The clocks, models and contracts behind Eased's thinking states: useElapsed (seconds on the start's own grid), useTokenRate (a smoothed stream rate as motion values), useStatusCarousel, the step model, and the frozen StepStatus and ToolState types with an AI SDK tool-part adapter.
Events and timelines for matter histories, ledgers, deploy logs and activity feeds: a typed event model, Intl day grouping (Today, Yesterday, weekday), relative time on a shared hydration-safe clock, live append with a once-only capped enter stagger, and lane packing with a time axis for span timelines.
Toggle buttons sharing one highlight: it travels between items in single mode, and pressed neighbours fuse into one shape in multiple mode. Base UI ToggleGroup behaviour.
An editor toolbar: bold, italic, underline and strikethrough (multiple) beside text alignment (single).
A short label that waits 400ms for the first trigger, then follows the pointer instantly across its neighbours. Enters 3px toward its trigger, shows an optional shortcut, never appears on touch.
An editor toolbar whose tooltips form one delay group, with keyboard shortcuts.
A file tree whose folders open on a height spring as the chevron turns, both interruptible. One selection glides between rows, guides mark each level, and keys follow WAI-ARIA.
A Next.js repository with git status markers and the selected path in the footer.
A pill that rises after a destructive action with a draining countdown ring. Undo (or ⌘Z) reverts it; only expiry commits it. Hover or focus pauses the countdown.
A file list where deleting a row shows the Undo Pill.