Files
whynot-design/ir/INDEX.md
tegwick 2de30beb7b
Some checks failed
ci / check (push) Has been cancelled
ci / release (push) Has been cancelled
feat(consumer): versioned IR manifest + drift-check (WHYNOT-WP-0003 T03-T07,T09)
Make ir/ the unit of versioned downstream consumption so consuming repos can
pin a version, inspect it, and follow changes at their own pace.

- T03 ir/manifest.json: per-version inventory + diff anchor with deterministic
  sha256-over-canonicalised-JSON hashes; no-churn generatedAt; manifest schema.
- T07 ir/INDEX.md: human-readable catalog generated by make ir.
- T04 .whynot-design.lock sync-point format + lock schema.
- T05 npx @whynot/design drift: consumer drift-check (bin entry), exit 0/2/3,
  --json/--update/--manifest/--version/--lock.
- T06 CONSUMING.md guide + examples/consumer-fixture/ runnable demo; README +
  MultiFrameworkSupport cross-links; fix README version pin (@0.3.0 not @v0.3.0).
- T09 CONSUMER_CONTRACT_PARITY.md design-only note (live-UI parity deferred).

T02 (publish) and T08 (showcase, blocked on WP-0002 T11) remain wait. Repo stays
in dev mode; no outward publish performed.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-27 19:35:45 +02:00

4.5 KiB

whynot-design IR catalog

designVersion 0.3.0 · components 10 · generated 2026-06-27T17:28:08.913Z

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-strip>

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:89c40afe4742d64e · 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