Runs anywhere, needs nothing

UI components built as native HTML elements. No runtime to ship, they work in any framework or none, and each framework gets its own typings.

26 Components
8 Form components
8 Supported frameworks
0 Runtime dependencies
1 Files per component
2.4 Median size, gzipped

Drop it into any stack

Every component is a standard HTML element, so it works wherever HTML does. Each framework gets its own TypeScript types, and your editor autocompletes every tag and attribute.

One file per component

Each component is a single file with zero dependencies. It doesn't even need to be a module, so a plain script tag is enough to bring its tag to life on any page.

Layers of customization

Without a theme, components use the browser's own colors. A theme styles them all at once, each component's CSS variables fine-tune it, CSS parts reach the elements inside, and slots take your own markup.

Behaves like a built-in element

Components expose their state to CSS and join native forms, the same way the browser's own inputs do. No script in between.

State in CSS React to state with CSS only.
Native forms The browser validates it like its own inputs.

Survives upgrades and migrations

Every framework migration replaces its whole ecosystem, from the router to the state library. These components stay. They run on web standards, not on your framework, so they keep working through every switch.

Agents get it right the first time

Components are plain HTML, CSS, and JavaScript, the languages models know best. The docs ship llms.txt and llms-full.txt so an agent reads the whole API in one fetch and writes code that works on the first try.

Need one we don't ship?

Build it with the tooling behind this library. Vite and ESLint plugins, plus a CLI that bundles without a plugin and generates framework types, docs, and editor support.

Start building

Installation, framework setup, theming, and a reference for every component.