edbnedbn/ui
Get Started
Welcome
ChangelogLicenseOverview
Components
ButtonAlert DialogPopoverDropdown Menu
Motion
Motion ProviderSpring PresetsHooks
ComponentsBlocks

On this page

edbn/ui

Polished components. Thoughtful animation. Open source.

This is a component library for people who notice when something feels off, and care enough to fix it. We've taken shadcn/ui as a starting point and added the polish that makes the difference: spring animations, refined spacing, and small details that add up to interfaces people actually enjoy using.

How it works

You copy the components you need into your project. No wrapper library, no version conflicts, no waiting for us to merge your PR. The code is yours to read, modify, and ship however you like.

  • Full ownership: Every component lives in your codebase. Tweak colors, swap out icons, or rewrite the whole thing. There are no hidden dependencies.
  • Works out of the box: Components ship with sensible defaults and animations already tuned. You can customize later if you want to, but you don't have to.
  • TypeScript and accessibility: Types are included, keyboard navigation works, and screen readers are supported. The boring stuff is already done.

Works well with AI tools

If you use Copilot, Cursor, or similar tools to write code, you'll find these components easy to work with. The patterns are consistent, the naming is predictable, and there's nothing unusual that would confuse an LLM.

  • Clean patterns: Standard React conventions, clear prop names, and straightforward logic. AI models can read and extend these components without much trouble.
  • Self-contained: Each component file has everything it needs. No jumping between files to understand what's happening.
  • Easy to prompt: "Add a loading state to the button" or "make the dialog animate from the bottom on mobile". The code is structured so these kinds of requests just work.

About the animations

We use spring physics instead of fixed durations. Springs respond to interruptions naturally. If a user clicks something before an animation finishes, it doesn't jank or jump. Things feel responsive even when they're moving.

  • Springs, not easing curves: Physics-based animations that respond naturally when interrupted mid-motion. No more waiting for transitions to complete.
  • Tuned for feel: We've spent time adjusting stiffness and damping values. Buttons feel snappy, modals feel smooth, and tooltips get out of the way quickly.
  • Reduced motion support: All animations respect prefers-reduced-motion. If someone has motion sensitivity, animations are disabled automatically.

Built on solid foundations

We didn't start from scratch. This library extends shadcn/ui and uses Radix primitives under the hood. If you're familiar with those projects, you'll feel at home here. We've just added the motion layer and refined some of the defaults.

Where to next?

ComponentsButtons, dialogs, popovers, dropdowns. The building blocks.
MotionSpring presets, reduced motion, global animation control.