Headless components for React, Vue, Svelte, Angular and Solid. Write it once, run it five ways.
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.
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.
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.
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.
The package scope is @▢▢▢▢ for now. Suggest one, vote for the ones you like. The shortlist is decided in public.
No account, no sign-in. Leave your email, the frameworks you use and, if you like, your GitHub username.
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.
MIT
