ui

Eased is a library of motion-first React components for shadcn, installed with the shadcn CLI.

#ItemInstall
1
eased-tokens

The colours, shadows, radius roles, UI type sizes, springs, utilities (radius-nested, hit-area, focus-ring …) and variants (hover-fine, reduced) every Eased component reads. Installs into your global CSS without touching shadcn/ui's theme or Tailwind's defaults: every raw variable is prefixed --eased-, light follows :root, dark follows .dark.

2
eased-motion

The named springs (snappy, smooth, bouncy), tweens, a hydration-safe useSafeReducedMotion and press classes every Eased component shares, matching the springs in the Eased stylesheet, plus small DOM and platform helpers (isEditable, useScrollFades, useIsMac) and a true-minus number formatter.

3
eased-demo-frame

The shell every Eased demo renders in: 420px tall, shrinks to its container, one 48px header style.

4
undo-pill

An animated undo pill for React and shadcn, with a countdown ring that commits the action only when it runs out.

5
undo-pill-demo

A file list where deleting a row shows the Undo Pill.

6
concentric-frame

A layout frame for React and shadcn that keeps nested corner radii concentric through CSS variables.

7
concentric-frame-demo

Demo for Concentric Frame.

8
accordion-demo

A billing FAQ with answers of different lengths.

9
accordion

An animated accordion for React and shadcn, built on Base UI Accordion.

10
avatar-demo

A members card: a stacked group with a rolling +N, a list with photos, initials and a failed image, and Invite.

11
avatar

An animated avatar for React and shadcn, with groups that spread apart on hover.

12
badge-demo

A mail sidebar with rolling unread counts (98 → 99+) and service status badges with a live dot.

13
badge

An animated badge for React and shadcn, for statuses and counts, with an optional live dot.

14
button-demo

An invoice with Send (loading, then “Sent”), Download and a two-step Void.

15
button

An animated button for React and shadcn, with a loading state that keeps its width.

16
eased-auto-height

The height:auto spring primitive: a wrapper whose height springs to its content, opens and closes with the content fading in after the height lands, and rests at height:auto with no clipping.

17
eased-field

Label, description ⇄ error message slot and the bordered input group, on Base UI Field. Focus is the border alone; turning invalid shakes the group once, 6px, and the message swaps with y + blur while its height springs.

18
eased-floating-demo

One popover per side; each enters toward its trigger and flips on collision.

19
eased-floating

The motion and material every Eased popup shares: grows from the trigger's transform-origin, enters a few pixels toward the trigger, closes at half the distance and faster, and reverses mid-flight because open and close are transitions. FloatingLayer renders any Base UI popup family (Tooltip, Popover, PreviewCard, Menu) with it.

20
eased-gesture-demo

A three-detent sheet over a map: flicks project onto detents, pulls past the top rubber-band, and the list hands its scroll over to the sheet.