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.

Framework-neutral WCAG 2.2 AA Keyboard complete 10 themes RTL ready Typed wrappers Zero runtime dependencies

The library

Eight families, all complete. Thirty-six components, plus six companion elements that take their content as markup rather than as a data array — forty-two custom elements in all. One page per family; everything below 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 live

Groups

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.

2 live

Fields

Input, textarea, a virtualised select and combobox, a date picker and an upload field. The controls you type, search or drop into.

6 live

Choices

Checkbox, radio group, switch, slider and rating. The controls you toggle, slide or score with.

5 live

Navigation

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 live

Feedback

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 live

Display

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 live

Applications

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 live

Every 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.