Skip to content
productdevbookPublic

About

Headless components for React, Vue, Svelte and Angular. Write it once, run it four ways. Work in progress.

Topics

Resources

Stars

4 stars

Watchers

0 watching

Forks

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 

Repository files navigation

productdevbook/ui

Headless components for React, Vue, Svelte and Angular. Write it once, run it four ways.

One component set. Four frameworks.

Website · Docs · Compare · Help name it · Early access

Warning

This is work in progress, still research. I'm building it in public. You can follow along on X @productdevbook and on the website.

Why

Focus. Keyboard. ARIA. State. The parts that take months, written once, below the framework. Above it, a thin layer that speaks React, Vue, Svelte and Angular. No styles. Your rules.

How it works

Three layers. One behavior.

Layer What it holds
core State and logic. No framework, no DOM.
dom Focus, keyboard, pointer, positioning, ARIA. No framework.
adapters Components, props and events in your framework: React, Vue, Svelte, Angular.

Every adapter runs the same upstream behavior tests, and a parity harness drives the same scenarios with real input in Chromium, Firefox and WebKit and compares the DOM, the events and the focus of all four frameworks. On the Compare page, pick any component and try it in all four frameworks side by side; open one dialog and the other three follow.

Roadmap

On the website now, 35 components in all four frameworks:

  • Accordion
  • Alert Dialog
  • Avatar
  • Button
  • Checkbox
  • Checkbox Group
  • Collapsible
  • Context Menu
  • Dialog
  • Drawer
  • Field
  • Filterable Menu
  • Form
  • Input
  • Menu
  • Menubar
  • Meter
  • Navigation Menu
  • Number Field
  • OTP Field
  • Popover
  • Preview Card
  • Progress
  • Radio
  • Radio Group
  • Scroll Area
  • Separator
  • Slider
  • Switch
  • Tabs
  • Toast
  • Toggle
  • Toggle Group
  • Toolbar
  • Tooltip
  • Server rendering and hydration in React, Vue, Svelte and Angular

Coming:

  • Autocomplete
  • Combobox
  • Fieldset
  • Select
  • A name

It does not have a name yet

The package scope is @▢▢▢▢ for now. Suggest one, vote for the ones you like. The shortlist is decided in public.

Early access

No account, no sign-in. Leave your email, the frameworks you use and, if you like, your GitHub username.

Credits

The behavior is ported from Base UI by the MUI team, and its test suite is what every adapter is checked against. This project is not affiliated with MUI.

License

MIT

About

Headless components for React, Vue, Svelte and Angular. Write it once, run it four ways. Work in progress.

Topics

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors