Skip to content
productdevbookPublic

About

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

Topics

Resources

Stars

15 stars

Watchers

0 watching

Forks

Latest commit

 

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 

Repository files navigation

productdevbook/ui

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

One component set. Five 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, Angular and Solid. 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, Solid.

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 five frameworks. On the Compare page, pick any component and try it in all five frameworks side by side; open one dialog and the other four follow.

Roadmap

On the website now, 50 components in all five frameworks:

  • Accordion
  • Alert Dialog
  • Autocomplete
  • Avatar
  • Button
  • Calendar
  • Checkbox
  • Checkbox Group
  • Collapsible
  • Combobox
  • Context Menu
  • Date Field
  • Date Picker
  • Date Range Picker
  • Date Time Field
  • Dialog
  • Drawer
  • Field
  • File Upload
  • Filterable Menu
  • Form
  • Input
  • Listbox
  • Menu
  • Menubar
  • Meter
  • Navigation Menu
  • Number Field
  • OTP Field
  • Pagination
  • Popover
  • Preview Card
  • Progress
  • Radio
  • Radio Group
  • Range Calendar
  • Rating
  • Rating Display
  • Scroll Area
  • Select
  • Separator
  • Slider
  • Switch
  • Tabs
  • Time Field
  • Toast
  • Toggle
  • Toggle Group
  • Toolbar
  • Tooltip
  • Server rendering and hydration in React, Vue, Svelte, Angular and Solid

Coming:

  • Fieldset
  • Color Picker
  • A name

The full list of components still to come is in #4.

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, Angular and Solid. Write it once, run it five ways. Work in progress.

Topics

Resources

Stars

15 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors