whynot-control UI kit
A click-through high-fidelity recreation of the whynot-control repository — rendered not as a folder of Markdown files, but as the lightweight web application it implies.
This kit demonstrates the WhyNot Design System applied to its primary use case: a prototype-and-signal control surface. Everything here is cosmetic — there's no backend, no persistence, no real router. Each screen is a working visual artefact you can drop into a design review.
Screens
| Screen | Source doc(s) | Component |
|---|---|---|
| Inbox | inbox/ |
Inbox.jsx |
| Prototypes (index) | prototypes/ + PROTOTYPE_PIPELINE.md |
PrototypesIndex.jsx |
| Prototype (detail) | templates/prototype-card.md + example-prototype-card.md |
PrototypeDetail.jsx |
| Signals | signals/ + MARKET_SIGNAL.md |
SignalsIndex.jsx |
| Document viewer | INTENT.md, OPERATING_MODEL.md |
DocView.jsx |
Components
TopNav.jsx— sticky 56px hairline top bar (search + new-idea action).Sidebar.jsx— left rail with org slug, repo nav, activation indicator.PrototypeCard.jsx— the card frompreview/comp-prototype-card.html, factored.PipelineStrip.jsx— the 5-stage progress strip frompreview/comp-pipeline.html.SignalRow.jsx— one row in the signals table.Tag.jsx,Eyebrow.jsx,Button.jsx,StageDot.jsx,Stamp.jsx— atoms used everywhere.
Conventions
- All components are flat function components, no hooks beyond
useStatefor screen routing. - Components export themselves onto
windowso each<script type="text/babel">file can find them. - Style objects are inline or scoped (e.g.
cardStyles,navStyles) to avoid name collisions. - Icons are Lucide via CDN, rendered as
<i data-lucide="…">and hydrated bylucide.createIcons().