One script tag. Every framework.
BMX components are standards-based custom elements. They work unchanged in plain HTML, React, Angular, Vue, Blazor and ASP.NET MVC — because the browser, not a framework, is what renders them. Everything on these pages is the same markup you would write.
The quickest way to judge them is a form: seven of them inside one <form>,
submitting real FormData with no adapter in between — or the settings panel,
where the switches take effect as you move them and everything else waits for Save. Then
open a record from a list, delete it, and watch where the focus goes.
The library
Built in order, so each one can reuse what the ones before it established. Actions, Fields, Choices and Navigation are complete — twenty-five of them — and Feedback and display adds twelve more, which finishes the set of controls. One page per family; everything below with a link works.
Actions
The button itself — six variants, six tones, every size and state, the click effects, and the guards that stop an action being taken twice.
1 liveGroups
The two components built out of the button: a group that is one widget with one Tab stop however many buttons are in it, and a split button whose menu is the real bmx-menu rather than a copy of one.
Fields
Input, textarea, a virtualised select and combobox, a date picker and an upload field. The controls you type, search or drop into.
6 liveChoices
Checkbox, radio group, switch, slider and rating. The controls you toggle, slide or score with.
7 liveNavigation
Menu, tabs, accordion, a toolbar that collapses what does not fit into a menu, a breadcrumb that collapses its middle, pagination and a splitter.
7 liveFeedback
Dialog and drawer over a native modal in the browser's top layer, the tooltip and popover pair — one describes, the other contains — a toast with a queue behind it, and progress and skeletons for the waiting.
7 liveDisplay
Badge, chip, avatar and the two sets that hold them — the components that label what is already on the page. A count that reaches the control it belongs to, a chip that is three different elements, and a stack of faces that says who is behind it.
5 liveApplications
The large components — a carousel over the platform's own scroller, a calendar whose layout is arithmetic rather than pixels, and an org chart that is a tidy-tree algorithm behind a diagram. Applications in their own right rather than controls, and the tier is complete.
3 liveEvery component here is the same custom element you would write into your own markup — no wrapper, no framework, and nothing on these pages is a screenshot. The upload rows filling in on the Fields page are running the component's own queue against a stand-in server; the five thousand options in the select are really there, and really windowed.
Theming
Ten themes, switchable at any level of the page. Everything below is one attribute on a wrapper element.
<!-- Whole page -->
<html data-theme="ocean">
<!-- Or one panel, scoped -->
<div data-bmx-theme="ocean">
<bmx-button>Ocean</bmx-button>
</div>
<!-- Or override the seed colours and every state derives from them -->
<style>
:root {
--bmx-primary: #1d4ed8;
--bmx-radius-md: 2px;
--bmx-font-family: 'Your Brand Sans', system-ui;
}
</style>