A progressive, unstyled, accessible, atomic, highly reusable, flexible and configurable headless UI component library for ReactJS.
HIGHLIGHTS
We all deserve a UI library that allows us to ship minimal CSS to devices, demands minimal boilerplate to create simple and complex components, deploys flexible theming options and doesn't lock us into a particular CSS framework (e.g. Tailwind, Bulma, Bootstrap).
Finally, a UI library that ties UI components to routers (e.g. app/page NextJS_Router, Tanstack_Router, React_Router) to ensure more cohesive functionality and behavior especially for components like <Tabs/> and <Modals/>.
Therefore, react-busser-headless-ui:
- Ships with zero styles (Paint on a blank canvas - no colors and no shadows except the ones you define)
- Uses modern HTML tags for component structure where necessary (e.g. <details>, <summary>, <dialog> and <menu>)
- Minimizes the use of
useState(...)for everything especially for things CSS can already handle. (e.g. toggling the visibility of a DOM node or capturing invalid state) - Reduces boilerplate associated with setting up a component especially around structure, testability and reusability.
- Also, makes use of the very best third-party libraries to handle forms, toasts, utilities and state management (i.e. react-hook-form, react-busser, react-day-picker, react-dropzone & sonner
There are lots of headdless UI libraries out there (e.g. Material UI, Radix UI e.t.c). While many of these UI libraries give you the flexibility and atomicity to build what you want in a fairly easy manner, they don't give you a lot of options for configuration. Sometimes, all you have a set of strict primitives that lock you into a specific pattern for building your components on an atomic level or bloated themeing configurations whose styling defaults aren't helpful to you in relation to your custom design system for UI widgets/components. Furthermore, useState() is over used for things that CSS can do already. react-busser-headless-ui steps into these gaps with superior rendering performance and optimized state management.
One of the reasons i started this project is that i kept waiting for Radix UI to support DatePicker primitives but till date it doesn't.
This project is also inspired (in part) by Base UI which is a collaborative effort from the team members of the Material UI and Radix UI projects. However, still fundamentally different.





