VUI for HTML

71 of 97 component families as plain markup. Copy a file out of dist/components/ and style it with vui.css. No build step and no framework.
53 are rendered from the React source, so both editions emit the same document. 18 are overlays, which React builds at runtime through a portal: those ship as the native element for the job wearing the same shared classes, so the styling is identical and the structure is the browser's. Add vui.js for the three things HTML cannot do alone.

Theme

The same 6 presets the React edition ships, applied as custom properties on :root. Every component below follows, because they all read the same tokens.

accordion

Free above 50, three days.

alert

aspect-ratio

avatar

AI

badge

Active

breadcrumb

breadcrumbs

button

calendar

August 2026

card

Northwind Traders

Trialing until 4 September

Eleven branches across two markets.

checkbox

command

command-palette

confirm-dialog

data-table

Invoices
Northwind Traders paid 2026-01-01T00:00:00.000Z 250
Contoso pending 2026-02-08T00:00:00.000Z 387
Fabrikam overdue 2026-03-15T00:00:00.000Z 524
Adventure Works paid 2026-04-22T00:00:00.000Z 661
Tailspin Toys pending 2026-05-02T00:00:00.000Z 798
Wide World Importers overdue 2026-06-09T00:00:00.000Z 935
Proseware paid 2026-07-16T00:00:00.000Z 1072
Northwind Traders pending 2026-08-23T00:00:00.000Z 1209

data-table-panel

Invoices

Every invoice raised this quarter.

Invoices
Northwind Traders paid 2026-01-01T00:00:00.000Z 250
Contoso pending 2026-02-08T00:00:00.000Z 387
Fabrikam overdue 2026-03-15T00:00:00.000Z 524
Adventure Works paid 2026-04-22T00:00:00.000Z 661

Showing 1 to 4 of 8

dialog

empty-state

No Invoices Yet

Invoices appear here once you send one. Nothing has been billed on this account.

error-state

field-grid

Shown on the invoice.

filter-field

input

kbd

⌘K

label

menu

org-switcher

organization-profile

None

page

The page body scrolls; the header does not.

password-input

profile-form

General

Customer
Northwind Traders
Status
paid
Issued
Thu Jan 01 2026 00:00:00 GMT+0000 (Coordinated Universal Time)

button-group

list

  • Northwind Retail
  • Sakura Foods
  • Alpine Logistics

spinner

Loading

page-header

Orders

progress

radio-group

record-field

record-form

General

Customer
Status
Issued

record-view

All Invoices
1–8 of 8
Name Actions

required-mark

scroll-area

A long region that scrolls inside its own frame.

separator

skeleton

steps

  1. AccountWho you are
  2. 2OrganizationWhere you work
  3. 3Done

stepper

switch

table

Organization Country Employees
Acme Industrial Germany 1,204

tabs

Eleven branches, two markets.

tanstack-chart

textarea

toggle

toggle-group

wizard

  1. Account
  2. 2Organization
  3. 3Done

Organization

Where you work.

Overlays, as native HTML

React renders these through a portal that only exists at runtime, so a static copy of its markup would be generated ids and measured transforms rather than a template. These use the element the browser already has for the job, with the same shared classes: the styling is identical and the structure is the browser's.

alert-dialog

Delete Northwind Traders?

Eleven branches and 1,204 employees lose access immediately. This cannot be undone.

cascading-combobox

chart

Revenue by month

collapsible

Branch details
Eleven branches across two markets, opened between 2019 and 2024.

combobox

date-field

dropdown-menu

Actions

Organization

form-actions

hover-card

Northwind Traders

input-otp

multi-combobox

popover

Details

Northwind Traders

Trialing until 4 September.

select

sheet

Filters

Narrow the list without leaving the page.

slider

time-field

toast

Organization saved

Northwind Traders was updated.

tooltip

Data driven, and shipping with the page templates

No markup of their own