New

Components that feel finished.

65 copy-paste React components and a full token system. Copy it, edit it, own it.

Built on

Sign in

At least 8 characters.

or
Button
Switch
Tabs
Badge
NewWebiOS 26

Connected apps

Figma

Sync frames to collections

Slack

Post new screens to #design

Linear

Attach flows to issues

Input
Kbd
⌘K
Toggle
Card

Checkout flow

12 screens · updated today

Pro

$19per monthPopular
  • Unlimited collections
  • Full-flow screen recordings
  • Figma export
Alert
Message
Did you see the new flow?
Saving it now.
Progress
Uploading
x
Avatar

Share

A
Ada Lovelace
B
Ben Ng
C
Cy Park
Checkbox
Radio
Slider
Spinner
Syncing library…

Filters

Screens
Skeleton
A growing library of65 components183 color tokens9 type sizes

Both themes from one token layer.

Checkout flow12 screens · updated today
New
Uploading
x
Notify collaborators

Light

The default. Every color is named by role, not by value.

Checkout flow12 screens · updated today
New
Uploading
x
Notify collaborators

Dark

Put a dark class on any element and everything inside follows.

From install to shipped.

Every component is a JSON file at a public URL. The CLI reads it, and so does any coding agent you point at it.

$ npx yeaui init

1. Init the style

Pulls the token layer into your globals.css and installs the cn helper.

$ npx yeaui add dialog tabs toast

2. Add a component

One file lands in your project. Dependencies resolve on their own.

$ components/ui/dialog.tsx

3. Edit it

It is your code now. No package to upgrade around, no theme API to learn.

A scale you can say out loud.

Nine named sizes from caption to showcase, and a 1px spacing base so px-16 means sixteen pixels. Design and code share one vocabulary.

captionEvery screen, every flow
compactEvery screen, every flow
bodyEvery screen, every flow
featureEvery screen, every flow
title-3Every screen, every flow
title-2Every screen, every flow
title-1Every screen, every flow
spotlightEvery screen, every flow
showcaseEvery screen, every flow

Never start from a blank button again.

Add one component. If it feels right, add the rest.