easeUI

Interfaces thatfeel considered

easeUI is a set of React components with the easing and spring motion already tuned. Copy the source into your project with the shadcn CLI, no package to depend on.

Install any component with a single shadcn command.

$ bunx --bun shadcn add @easeui/toast

Accordion

Expanding sections that grow to their natural height with no measuring, with arrow key navigation and closed panels skipped by Tab.

Alert

Banner with a colored accent stripe. Body text stays neutral so contrast never depends on the variant.

Avatar

Round avatar whose image fades in on load and crossfades to initials if it fails.

Badge

Small status pill in five colors, with a crossfade for when its variant changes.

Button

Button with a quick press, hairline rings instead of borders, four variants, and a 44px tap area even at small sizes.

Card

Bordered surface with header, content, and footer parts for grouping related content.

Checkbox

Checkbox on a real checkbox input, with a check mark that pops in rather than just appearing.

Command Palette

Command-K style search overlay that filters as you type, with arrow keys to move the highlight and Enter to select.

Copy Button

Copies text to the clipboard and trades its icon for a check for a moment, with a label or as a single icon.

Diff View

A line-by-line diff with an added or removed mark in the gutter and a tinted row for each side. Renders a diff, doesn't compute one.

Drawer

Sheet that slides up from the bottom edge on the native dialog element. Drag the handle down, or flick it, to dismiss.

Dropdown Menu

Action menu that opens from a trigger, flips upward when there is no room below, and supports a destructive item.

Dynamic Island

A pill that morphs between a compact status line and any number of named live-activity views, the same element reshaping via layout animation each time.

Expandable Tabs

A row of icon tabs where the selected one expands to reveal its label, sliding a shared background pill to match.

File Upload

Dropzone that also opens the native file picker, with a list below it that pops each file in and collapses smoothly on remove.

Gradient Text

Text filled with a slowly drifting rainbow. It pauses while off screen and holds still when reduced motion is on.

Hold to Confirm

Button for destructive actions that fills while you hold it and only fires once the fill completes. Letting go early drains it back quickly.

Input

Text input whose focus ring grows from a hairline to two px, with a destructive ring for aria-invalid.

Insight Card

A stat tile: a label, a headline value, and an optional trend pill. Pass a Number Ticker as the value to have it roll in on change.

Modal

Centered dialog on the native dialog element that fades and scales in, leaves faster than it arrives, and keeps focus inside while open.

Morphing Search

A circular search button that morphs into a text field: the same element grows and reshapes via a layout animation, rather than a new one popping in beside it.