Skip to content

Components

Each page has a live preview, the markup in three languages, and the reasoning behind anything in it that looks unusual.

The preview runs inside a frame against /v2/wayne-ui.css, which is the file packages/css/dist produced on the build that published this page. It has its own light and dark switch, because most of the color defects found while building this system were visible in only one theme.

The three code samples are checked rather than trusted. When this site builds, every wsu- class name in every sample is looked up in contract/markup-contract.json and in the shipped stylesheet, and a name that appears in neither fails the build. Documentation showing markup that nothing renders is worse than no documentation.

Chrome

The frame around an application. Layout, navigation, identity.

Content

What goes inside main.

Forms

Every control carries its own label, hint and error wiring.

Feedback

Telling someone what happened, or that nothing is there.

What the contract is

apps/examples/static-html/index.html and public-app.html are the source of truth for what WayneUI markup looks like. The Vue components, the Blade components and the framework-free PHP helpers all emit the same class names, the same ARIA and the same data attributes, which is the only reason the four consumer paths render identically rather than merely similarly.

That is not held together by anyone remembering. The templates are extracted:

bash
node scripts/extract-contract.mjs            # regenerate
node scripts/extract-contract.mjs --check    # fail if stale

Every package tests against the result. If a template changes on purpose, every other path needs the same change, which is exactly what the failing check is telling you.