Triage the three surfaced divergences the governance-correct way (no stack->React back-edit, no ir/ hand-edit); make adapt-lit/parity-lit/designbook-refresh now exit 0: - PipelineStrip: documented TAG_OVERRIDES in scripts/ir-extract.mjs maps the React 'PipelineStrip' to the established tag wn-pipeline (the web-component tag is an IR-projection detail, not React-dictated; the component name stays faithful). Tag now matches the element; parity tests it (no longer skipped). - PageHeader.actions: the drift detector now collects each element's named slots and treats an IR prop honoured by a same-named slot (<slot name="actions">) as satisfied (prop-via-slot, informational) rather than prop-missing. - Sidebar.current: recorded as an auditable accepted divergence in adapters/lit/drift.accepted.json (React monolithic 'current' key vs Lit per-item 'active' on composable <wn-sidebar-item>) — listed, downgraded to info, not gated. Rendered surfaces (src/, examples/) untouched — verified zero diff; parity renders all 10 components green. Adapt/parity outputs idempotent (stable re-run). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
4.5 KiB
whynot-design IR catalog
designVersion 0.4.0 · components 10 · generated 2026-06-30T07:46:35.138Z
Machine-readable companion: manifest.json (per-component + token hashes).
atoms
Button <wn-button>
Button — extracted from designbook ui_kits/whynot-control/Atoms.jsx.
| prop | attribute | type | default |
|---|---|---|---|
variant |
variant |
enum(secondary | primary | ghost) | secondary |
icon |
icon |
boolean | — |
Non-portable (React-only) props: onClick, style.
Slots: default
Events: wn-click
Variants: variant (secondary/primary/ghost)
Contract: components/Button.json · hash sha256:4a32713049e433dd · exemplar: exemplars/Button.html
Eyebrow <wn-eyebrow>
Eyebrow — extracted from designbook ui_kits/whynot-control/Atoms.jsx.
Non-portable (React-only) props: style.
Slots: default
Contract: components/Eyebrow.json · hash sha256:56baa59a49b5f32c · exemplar: exemplars/Eyebrow.html
Icon <wn-icon>
Icon — extracted from designbook ui_kits/whynot-control/Atoms.jsx.
| prop | attribute | type | default |
|---|---|---|---|
name |
name |
string | — |
size |
size |
number | 16 |
Non-portable (React-only) props: style.
Contract: components/Icon.json · hash sha256:2557fbffb3aa6ee1
StageDot <wn-stage-dot>
StageDot — extracted from designbook ui_kits/whynot-control/Atoms.jsx.
| prop | attribute | type | default |
|---|---|---|---|
level |
level |
string | S2 |
label |
label |
string | — |
Non-portable (React-only) props: style.
Contract: components/StageDot.json · hash sha256:f6f7790aa886261e · exemplar: exemplars/StageDot.html
Stamp <wn-stamp>
Stamp — extracted from designbook ui_kits/whynot-control/Atoms.jsx.
Non-portable (React-only) props: style.
Slots: default
Contract: components/Stamp.json · hash sha256:0b32f43ed19ac470
Tag <wn-tag>
Tag — extracted from designbook ui_kits/whynot-control/Atoms.jsx.
| prop | attribute | type | default |
|---|---|---|---|
active |
active |
boolean | — |
draft |
draft |
boolean | — |
Non-portable (React-only) props: style.
Slots: default
Contract: components/Tag.json · hash sha256:91ee34eac1457016 · exemplar: exemplars/Tag.html
chrome
PageHeader <wn-page-header>
PageHeader — extracted from designbook ui_kits/whynot-control/Chrome.jsx.
| prop | attribute | type | default |
|---|---|---|---|
eyebrow |
eyebrow |
boolean | — |
title |
title |
string | — |
lede |
lede |
boolean | — |
actions |
actions |
boolean | — |
Contract: components/PageHeader.json · hash sha256:93e12068e2f58f10 · exemplar: exemplars/PageHeader.html
PipelineStrip <wn-pipeline>
PipelineStrip — extracted from designbook ui_kits/whynot-control/Chrome.jsx.
| prop | attribute | type | default |
|---|---|---|---|
activeIdx |
active-idx |
number | 3 |
Contract: components/PipelineStrip.json · hash sha256:167717c21cceff79 · exemplar: exemplars/PipelineStrip.html
Sidebar <wn-sidebar>
Sidebar — extracted from designbook ui_kits/whynot-control/Chrome.jsx.
| prop | attribute | type | default |
|---|---|---|---|
current |
current |
enum(doc:) | — |
Non-portable (React-only) props: onNav.
Events: wn-nav
Variants: current (doc:)
Contract: components/Sidebar.json · hash sha256:8340b292fff7a80d · exemplar: exemplars/Sidebar.html
TopNav <wn-top-nav>
TopNav — extracted from designbook ui_kits/whynot-control/Chrome.jsx.
Non-portable (React-only) props: onNew.
Events: wn-new
Contract: components/TopNav.json · hash sha256:32ebc6e46db38f93 · exemplar: exemplars/TopNav.html