Skip to main content

Component library

Semantic by construction

30 components across 6 categories. Every one is built on a real HTML element — <button>, <dialog>, <details>, <table> — with data-bn-* attributes for variants and zero CSS classes.

No components match.

Form Controls

Input primitives wired to native form events with help text, error states, and field semantics.

Feedback

Status surfaces — alerts, toasts, progress, spinners, and loading skeletons.

Cards & Layout

Article-shaped cards, accordions, and tabs that use native disclosure semantics.

Navigation

Wayfinding primitives. Breadcrumbs, pagination, and command palette.

Data Display

Tables and grids — from a basic table to a virtualized data grid and tree.

Overlays

Layered surfaces built on native dialog and the Popover API.

Design axioms

  1. No namespace theater

    Components are built on W3C primitives. No app-button, no my-dialog. A button is a <button>.

  2. Zero inline styles

    All CSS lives in cascade layers. No style="", no CSS-in-JS. Variants are addressed with data-variant="".

  3. display: contents on hosts

    Wrappers don't affect layout. The component you ask for is the box you get.

  4. Trinity standard

    State, logic, and template fuse in one file. No splitting across three.