From 9419f166ce395858f55b10a5c72268a1fe9fc9d2 Mon Sep 17 00:00:00 2001 From: tegwick Date: Sat, 23 May 2026 16:34:14 +0200 Subject: [PATCH] Seeded claude design --- .gitea/workflows/ci.yml | 70 +++++++ .github/workflows/ci.yml | 70 +++++++ .gitignore | 13 ++ .npmrc | 5 + BOOTSTRAP.md | 53 +++++ CHANGELOG.md | 33 ++++ CONTRIBUTING.md | 95 +++++++++ DesignSystemIntroduction.md | 232 ++++++++++++++++++++++ README.md | 288 ++++++++++++++++++++++++++++ SKILL.md | 34 ++++ assets/whynot-logo-original.png | Bin 0 -> 80936 bytes assets/whynot-logo.png | Bin 0 -> 80936 bytes examples/whynot-control/Atoms.jsx | 102 ++++++++++ examples/whynot-control/Chrome.jsx | 165 ++++++++++++++++ examples/whynot-control/DocView.jsx | 102 ++++++++++ examples/whynot-control/README.md | 31 +++ examples/whynot-control/Screens.jsx | 282 +++++++++++++++++++++++++++ examples/whynot-control/data.jsx | 71 +++++++ examples/whynot-control/index.html | 76 ++++++++ package.json | 55 ++++++ playwright.config.mjs | 30 +++ scripts/check-changelog.mjs | 29 +++ scripts/extract-release-notes.mjs | 22 +++ src/components/Atoms.jsx | 102 ++++++++++ src/components/Chrome.jsx | 165 ++++++++++++++++ src/index.js | 18 ++ src/styles/colors_and_type.css | 273 ++++++++++++++++++++++++++ tests/visual/ui-kit.spec.mjs | 48 +++++ tokens/colors.json | 22 +++ tokens/index.json | 6 + tokens/spacing.json | 28 +++ tokens/type.json | 33 ++++ 32 files changed, 2553 insertions(+) create mode 100644 .gitea/workflows/ci.yml create mode 100644 .github/workflows/ci.yml create mode 100644 .gitignore create mode 100644 .npmrc create mode 100644 BOOTSTRAP.md create mode 100644 CHANGELOG.md create mode 100644 CONTRIBUTING.md create mode 100644 DesignSystemIntroduction.md create mode 100644 README.md create mode 100644 SKILL.md create mode 100644 assets/whynot-logo-original.png create mode 100644 assets/whynot-logo.png create mode 100644 examples/whynot-control/Atoms.jsx create mode 100644 examples/whynot-control/Chrome.jsx create mode 100644 examples/whynot-control/DocView.jsx create mode 100644 examples/whynot-control/README.md create mode 100644 examples/whynot-control/Screens.jsx create mode 100644 examples/whynot-control/data.jsx create mode 100644 examples/whynot-control/index.html create mode 100644 package.json create mode 100644 playwright.config.mjs create mode 100644 scripts/check-changelog.mjs create mode 100644 scripts/extract-release-notes.mjs create mode 100644 src/components/Atoms.jsx create mode 100644 src/components/Chrome.jsx create mode 100644 src/index.js create mode 100644 src/styles/colors_and_type.css create mode 100644 tests/visual/ui-kit.spec.mjs create mode 100644 tokens/colors.json create mode 100644 tokens/index.json create mode 100644 tokens/spacing.json create mode 100644 tokens/type.json diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml new file mode 100644 index 0000000..4146581 --- /dev/null +++ b/.gitea/workflows/ci.yml @@ -0,0 +1,70 @@ +name: ci + +on: + pull_request: + branches: [main] + push: + branches: [main] + +jobs: + check: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: { fetch-depth: 0 } + - uses: pnpm/action-setup@v3 + with: { version: 9 } + - uses: actions/setup-node@v4 + with: + node-version: 20 + cache: pnpm + - run: pnpm install --frozen-lockfile + + - name: Verify CHANGELOG has an entry for this PR + if: github.event_name == 'pull_request' && !contains(github.event.pull_request.labels.*.name, 'no-changelog') + run: node ./scripts/check-changelog.mjs + + - name: Install Playwright browsers + run: pnpm exec playwright install --with-deps chromium + + - name: Visual regression + run: pnpm test:visual + + - name: Upload diff artefacts on failure + if: failure() + uses: actions/upload-artifact@v4 + with: + name: playwright-report + path: playwright-report/ + retention-days: 14 + + release: + if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') + needs: check + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: pnpm/action-setup@v3 + with: { version: 9 } + - uses: actions/setup-node@v4 + with: { node-version: 20, cache: pnpm } + - run: pnpm install --frozen-lockfile + + # When a private registry is in use, uncomment: + # - name: Publish to registry + # run: pnpm publish --no-git-checks + # env: + # NPM_CONFIG_REGISTRY: https://gitea.example.com/api/packages/whynot/npm/ + # NPM_AUTH_TOKEN: ${{ secrets.GITEA_NPM_TOKEN }} + + - name: Extract release notes for this tag + id: notes + run: | + TAG=${GITHUB_REF#refs/tags/} + node ./scripts/extract-release-notes.mjs "$TAG" > release-notes.md + echo "tag=$TAG" >> $GITHUB_OUTPUT + - name: Create Gitea/GitHub release + uses: softprops/action-gh-release@v2 + with: + tag_name: ${{ steps.notes.outputs.tag }} + body_path: release-notes.md diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..4146581 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,70 @@ +name: ci + +on: + pull_request: + branches: [main] + push: + branches: [main] + +jobs: + check: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: { fetch-depth: 0 } + - uses: pnpm/action-setup@v3 + with: { version: 9 } + - uses: actions/setup-node@v4 + with: + node-version: 20 + cache: pnpm + - run: pnpm install --frozen-lockfile + + - name: Verify CHANGELOG has an entry for this PR + if: github.event_name == 'pull_request' && !contains(github.event.pull_request.labels.*.name, 'no-changelog') + run: node ./scripts/check-changelog.mjs + + - name: Install Playwright browsers + run: pnpm exec playwright install --with-deps chromium + + - name: Visual regression + run: pnpm test:visual + + - name: Upload diff artefacts on failure + if: failure() + uses: actions/upload-artifact@v4 + with: + name: playwright-report + path: playwright-report/ + retention-days: 14 + + release: + if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') + needs: check + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: pnpm/action-setup@v3 + with: { version: 9 } + - uses: actions/setup-node@v4 + with: { node-version: 20, cache: pnpm } + - run: pnpm install --frozen-lockfile + + # When a private registry is in use, uncomment: + # - name: Publish to registry + # run: pnpm publish --no-git-checks + # env: + # NPM_CONFIG_REGISTRY: https://gitea.example.com/api/packages/whynot/npm/ + # NPM_AUTH_TOKEN: ${{ secrets.GITEA_NPM_TOKEN }} + + - name: Extract release notes for this tag + id: notes + run: | + TAG=${GITHUB_REF#refs/tags/} + node ./scripts/extract-release-notes.mjs "$TAG" > release-notes.md + echo "tag=$TAG" >> $GITHUB_OUTPUT + - name: Create Gitea/GitHub release + uses: softprops/action-gh-release@v2 + with: + tag_name: ${{ steps.notes.outputs.tag }} + body_path: release-notes.md diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3d40e28 --- /dev/null +++ b/.gitignore @@ -0,0 +1,13 @@ +node_modules +dist +.DS_Store +*.log + +# Playwright +playwright-report +test-results +/tests/visual/**/__diff__ + +# Editor +.vscode +.idea diff --git a/.npmrc b/.npmrc new file mode 100644 index 0000000..3e48c85 --- /dev/null +++ b/.npmrc @@ -0,0 +1,5 @@ +# When ready to publish to Gitea Packages, uncomment and set NPM_AUTH_TOKEN +# in your shell or CI secrets. +# +# @whynot:registry=https://gitea.example.com/api/packages/whynot/npm/ +# //gitea.example.com/api/packages/whynot/npm/:_authToken=${NPM_AUTH_TOKEN} diff --git a/BOOTSTRAP.md b/BOOTSTRAP.md new file mode 100644 index 0000000..e12c412 --- /dev/null +++ b/BOOTSTRAP.md @@ -0,0 +1,53 @@ +# Bootstrap: prime `whynot-design` from this seed + +You're holding a zip — `whynot-design-seed.zip` — that contains a complete first commit for the `whynot-design` repository. + +## Step-by-step + +```sh +# 1. Unzip into your fresh whynot-design clone. +cd /path/to/whynot-design +unzip ~/Downloads/whynot-design-seed.zip +mv whynot-design-seed/* whynot-design-seed/.[!.]* . +rmdir whynot-design-seed + +# 2. Sanity-check the tree. +ls -la +# Expect: README.md DesignSystemIntroduction.md SKILL.md CONTRIBUTING.md +# CHANGELOG.md package.json src/ tokens/ assets/ examples/ +# .gitea/ .github/ scripts/ tests/ + +# 3. First commit. +git add -A +git commit -m "feat: seed whynot-design from atelier — v0.1.0" +git tag v0.1.0 +git push origin main --tags + +# 4. Verify the example renders. +pnpm install +pnpm example +# Open http://localhost:3000 — should show the whynot-control kit. + +# 5. (Optional) Generate Playwright baselines locally. +pnpm exec playwright install --with-deps chromium +pnpm test:visual:update +git add tests/visual/__screenshots__ +git commit -m "test: add initial visual-regression baselines" +git push +``` + +## Notes + +- The `git+ssh` URL in `package.json` (`gitea.example.com/whynot/whynot-design.git`) is a placeholder. Replace with your actual Gitea host. +- The same goes for `.npmrc` and the registry URL in `.gitea/workflows/ci.yml` (commented out — uncomment when you stand up a Gitea Packages registry). +- `.gitea/workflows/ci.yml` and `.github/workflows/ci.yml` are identical. Keep whichever your forge uses and delete the other. + +## After bootstrap + +1. Record the bootstrap as `DEC-004` in `whynot-control/DECISIONS.md`. +2. Mention `whynot-design` in `whynot-control/SCOPE.md` as a sibling repository (out of scope for `whynot-control`, in scope for the org). +3. Add `@whynot/design` as a dependency in your first consuming prototype to close the loop. + +## You can delete this file after bootstrap + +It's only useful for the first push. diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..ac44be2 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,33 @@ +# Changelog + +All notable changes to `@whynot/design` are recorded here. Hand-edited until release cadence makes it painful. + +Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). Versioning rules: see [`DesignSystemIntroduction.md` §5](./DesignSystemIntroduction.md#5-versioning-discipline). + +## [Unreleased] + +_Nothing yet. Add entries above the next `[vX.Y.Z]` block as PRs land._ + +## [0.1.0] — 2026-05-23 + +**Initial seed.** Established `whynot-design` as the implementation surface for the `whynot` visual language. Decision recorded in `whynot-control/DECISIONS.md` as DEC-004 (pending). + +### Added + +- `src/styles/colors_and_type.css` — full token set + semantic element styles. +- `tokens/` — source-of-truth JSON tokens for colours, type, spacing, radii, shadows. +- `src/components/Atoms.jsx` — `Eyebrow`, `Tag`, `Button`, `StageDot`, `Stamp`, `Icon`. +- `src/components/Chrome.jsx` — `TopNav`, `Sidebar`, `PageHeader`, `PipelineStrip`. +- `examples/whynot-control/` — click-through UI kit recreating the `whynot-control` surface (inbox, prototypes, prototype detail, signals, betas, decisions, control-doc viewer). +- `assets/whynot-logo.png` — LEGO-brick + `?!` mark. +- `SKILL.md` — Agent Skill manifest, cross-compatible with Claude Code. +- `README.md` — full design language. +- `DesignSystemIntroduction.md` — integration guide. +- `CONTRIBUTING.md` — contribution flow + house rules. + +### Known caveats + +- IBM Plex is loaded from Google Fonts. Drop `.woff2` files into `fonts/` and swap to a local `@font-face` for offline use. +- No build step — consumers import JSX directly. Promote to a build when the system has >30 components or needs non-React consumers. +- Playwright visual regression covers `examples/whynot-control/index.html` only. Add per-component coverage when component count exceeds ~20. +- `assets/whynot-logo.png` is raster. Re-draw as SVG before promoting to `1.0.0`. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..0632878 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,95 @@ +# Contributing to `whynot-design` + +Thanks for the curiosity. A few things before you open a PR. + +## Where the language is decided + +Visual decisions are made in the **Claude atelier project** (the `WhyNot Design System` template), not in this repo. This repo is the *implementation* — it ships what the atelier agreed. + +If your change is purely visual (a new component, a token tweak, a new variant), do it in the atelier first. Get a designer or `whynot` lead to approve the variation. Then open a PR here with: + +- A link to the atelier project / screenshot of the approved variation. +- A one-sentence rationale, written in `whynot` voice. E.g. *"The hover bar reads as 3px at 14” preview sizes; 2px disappears."* + +If your change is purely mechanical (CI, tooling, dependency bumps, doc typos), skip the atelier — just open the PR. + +## House rules + +These are enforced by review, not CI. Internalise them. + +1. **Quiet voice.** Sentence case. No emoji (except `→` and `?!`). No hype. No marketing language. +2. **No new colour without a fight.** The system is two neutrals and one accent. Adding a colour is a major decision. Add a *token* (e.g. status ramp extension) before adding a *colour*. +3. **No gradients. Anywhere.** +4. **No shadows on cards.** Elevation is intentionally near-zero. Popovers and modals only. +5. **Square corners on big things.** 0–4 px radii for cards/sheets; 8 px for large modals; pill only for label capsules. +6. **No hand-rolled SVG icons or emoji.** Lucide at 1.5 px stroke, or a placeholder. +7. **Lowercase organisation name** (`whynot`) in body copy. + +When in doubt, re-read `README.md` and `SKILL.md`. Both are authoritative. + +## Workflow + +``` +[atelier] [this repo] [consumers] + + explore ──► PR: tokens / components / CSS ──► Renovate PR + decide + CHANGELOG entry (auto, weekly) + + Playwright snapshot updated + │ │ + ▼ ▼ + merge → tag → release consumer CI + (CI handles) + visual regression +``` + +### Branches + +- `main` is always releasable. Tag `vN.N.N` directly from `main`. +- Feature branches: `feat/`. PRs squash-merge. + +### Commits + +Conventional Commits, lightly. + +- `feat: add StageDot pulse variant` +- `fix(button): nudge ghost padding to match secondary` +- `tokens: tighten --tr-tight to -0.025em` +- `docs: clarify Lucide stroke override` +- `chore: bump @playwright/test` + +The `tokens:` prefix is non-standard but useful — it marks PRs that touch `tokens/*.json` or `src/styles/colors_and_type.css` and trigger consumer visual-regression review. + +## What CI checks + +1. `pnpm install` succeeds. +2. `CHANGELOG.md` has a new entry that mentions the PR (this is `scripts/check-changelog.mjs`). Skip with the label `no-changelog` for trivial doc-only PRs. +3. `pnpm test:visual` — Playwright opens `examples/whynot-control/index.html` and compares against snapshots in `examples/whynot-control/__screenshots__/`. + +If a snapshot intentionally needs to change, run `pnpm test:visual:update` locally, commit the new PNGs, and call it out in the PR description: *"Snapshot updated — see `Prototype.png`, hover bar is now 3 px."* + +## Release process + +After PR merge: + +1. Bump `package.json` version following the [versioning rules in `DesignSystemIntroduction.md` §5](./DesignSystemIntroduction.md#5-versioning-discipline). +2. Move the `## [Unreleased]` block in `CHANGELOG.md` under a new `## [vX.Y.Z] — YYYY-MM-DD` header. +3. Tag: `git tag vX.Y.Z && git push --tags`. +4. CI's release workflow attaches the CHANGELOG slice to the Gitea release. (If publishing to a registry, this is where `npm publish` runs.) +5. Renovate picks up the new tag in consumer repos within ~24h. Or manually: + + ```sh + cd ../whynot-prototype-WNO-022 + pnpm up @whynot/design + ``` + +## Promoting past 1.0.0 + +Stay in `0.x.x` until something built with this system is in production for >30 days with at least S2 signal. Promotion to `1.0.0` must be recorded in `whynot-control/DECISIONS.md`, same as promotion to Helix, Coulomb, etc. + +## What we don't accept + +- PRs that add a colour palette without a corresponding atelier decision. +- PRs that import a UI library (Radix, Headless UI, shadcn) and re-export it. The system is small on purpose. +- PRs that add a build step before the system has >20 components. +- PRs that add storybook before the system has >2 contributors. + +> A contribution can be interesting and still be parked. `whynot-design` exists to reduce visual uncertainty, not to absorb every good idea. diff --git a/DesignSystemIntroduction.md b/DesignSystemIntroduction.md new file mode 100644 index 0000000..12c5aa4 --- /dev/null +++ b/DesignSystemIntroduction.md @@ -0,0 +1,232 @@ +# Design System Introduction + +> How `whynot-design` fits into the broader `whynot` workflow — from atelier exploration to production deploys. +> +> Audience: anyone (human or agent) about to add `whynot-design` as a dependency, or contribute changes back to it. + +--- + +## 1. Mental model — three places, three jobs + +`whynot-design` is one of three surfaces. Each has a different job. Don't confuse them. + +| Place | Job | What lives there | +|---|---|---| +| **Claude atelier project** (`WhyNot Design System` template) | Explore, decide, mock | HTML cards, UI-kit JSX prototypes, the README that defines the rules. Source of truth for the *language* of the system. | +| **`whynot-design` repo** (this one) | Distribute | A versioned, publishable package: CSS tokens, components, the logo bundle. Source of truth for the *artefact*. | +| **`whynot-*` consuming repos** (apps, prototypes, marketing sites) | Use | `pnpm add @whynot/design`, import tokens + components, build the app. | + +This mirrors the existing organisational logic. `whynot-control` is the *control* surface (intent, scope, decisions, governance). `whynot-design` is the *implementation* surface for the visual language. Same separation, same vocabulary. + +> The Claude-Design template is the atelier for the *next* design exploration — mocking a new screen, a beta landing page, a signal-record view. It is **not** what production code consumes. Production consumes this repo. + +--- + +## 2. What this repo contains + +``` +whynot-design/ +├── README.md Quick start + manifest. +├── DesignSystemIntroduction.md This file. +├── SKILL.md Agent Skill manifest — also usable by Claude Code. +├── CONTRIBUTING.md How to propose, review, and ship a change. +├── CHANGELOG.md Hand-edited, one entry per release. +├── package.json Name: @whynot/design. +│ +├── tokens/ Source-of-truth design tokens (JSON). +│ ├── colors.json +│ ├── type.json +│ └── spacing.json +│ +├── src/ +│ ├── styles/ +│ │ └── colors_and_type.css Drop-in CSS variables + semantic element styles. +│ ├── components/ JSX, consumed from source (no build step at A1). +│ └── index.js Barrel export. +│ +├── assets/ Logo, favicon-ready marks, future imagery. +├── examples/ +│ └── whynot-control/ Working UI-kit recreation — also the visual-regression target. +└── .gitea/workflows/ + └── ci.yml Lint + Playwright screenshot diff on PR. +``` + +There is intentionally **no build step**. Consumers import the JSX and CSS directly. This keeps the A1 pipeline trivially debuggable. Add a build step when the system grows past ~30 components or needs to support non-React consumers. + +--- + +## 3. Integrating with a consuming codebase + +### 3.1 The two viable distribution channels at A1 + +In order of effort: + +**a) pnpm workspaces (recommended for now)** — put `whynot-design` and your consuming app in the same monorepo (or use `file:` / `link:` references). Zero registry, zero auth, instant updates. + +```jsonc +// consuming-app/package.json +{ + "dependencies": { + "@whynot/design": "workspace:*" + } +} +``` + +**b) Install directly from Gitea** — no registry needed. + +```sh +pnpm add git+ssh://git@gitea.example.com/whynot/whynot-design.git#v0.3.1 +``` + +Pin to a tag, not `main`. Tag-pinning is the entire versioning discipline at A1. + +When you outgrow either of these (a second team needs read access without repo cloning, or you want semver resolution), publish to **Gitea Packages** (supports npm protocol natively) or set up a private Verdaccio. + +### 3.2 What a consumer imports + +```jsx +// At the root of the consuming app — once. +import "@whynot/design/styles/colors_and_type.css"; + +// In any component file. +import { Button, Tag, PrototypeCard, Eyebrow } from "@whynot/design"; + +export default function NewBetaPage() { + return ( +
+ whynot · closed beta +

Concierge prototype triage

+

Five seats. Two weeks. One learning question.

+ +
+ ); +} +``` + +Three rules of consumption: + +1. **Import the CSS exactly once**, at the app's root. +2. **Use CSS variables for any colour, type, or spacing decision**, not hex codes. If the token doesn't exist, that's a signal to extend the system — not to invent. +3. **Don't restyle components by overriding their CSS.** If a component doesn't fit a use case, add a variant in `whynot-design` itself. The discipline that makes a design system valuable is the discipline of not forking it locally. + +### 3.3 Bootstrapping a new consuming repo + +```sh +mkdir whynot-prototype-WNO-022 +cd whynot-prototype-WNO-022 +pnpm init +pnpm add react react-dom +pnpm add git+ssh://git@gitea.example.com/whynot/whynot-design.git#v0.1.0 +echo 'import "@whynot/design/styles/colors_and_type.css"' >> src/main.jsx +``` + +That's the whole onboarding. If it takes longer than this, the design system is fighting you. + +--- + +## 4. Propagation pipeline — five hops + +The end-to-end flow for a single design change: + +``` +[Claude atelier] [whynot-design] [Consuming repo] [Deploy] + + explore variants ──► PR with token / ──► Renovate / pnpm ──► staging + in the template component change up opens PR bumping + user approves + Playwright diff @whynot/design │ + + CHANGELOG entry ▼ + │ │ prod + tag v0.3.1 CI runs visual + CI publishes / regression on the + attaches release consuming app + asset │ + │ merge if green + └──────────────────────────────┘ +``` + +### Hop-by-hop + +1. **Atelier → `whynot-design` PR.** Someone (you, a designer, or an agent) takes a change agreed in the Claude project — "the prototype card's hover bar is 3px not 2px" — and opens a PR against `whynot-design`. The PR description quotes the atelier decision, e.g. *"Decided in atelier 2026-04-12: thicker hover bar reads better at 14” preview sizes."* + +2. **`whynot-design` CI** runs: + - Lint + (optional) typecheck. + - **Visual regression** — Playwright screenshots `examples/whynot-control/index.html` and any other registered example, diffs against baselines. This is the single most valuable piece of automation; everything else is bookkeeping. + - A `CHANGELOG.md` entry is required (enforce with a small CI check, or use `changesets` once you outgrow hand-editing). + +3. **Merge → tag → publish.** On merge to `main`: + - Bump `package.json` (patch for token tweaks, minor for new components, major for renames/removals). + - Tag `v0.3.1`. + - Push tag. CI uploads release notes from the CHANGELOG. (Once a registry is in use, this step also runs `npm publish`.) + +4. **Consumer auto-PR.** Renovate or Dependabot watches `@whynot/design` and opens a PR in every consuming repo bumping the version. Renovate config groups these so all `whynot-*` prototypes update on the same schedule (e.g. weekly). + +5. **Consumer CI + deploy.** The consuming repo's *own* CI runs *its* visual regression — does the new token change anything in *this* app's screens? If not, auto-merge (Renovate can do this for patch versions with green CI). If yes, a human reviews. Merge triggers the existing deploy to staging → prod. + +The whole loop, warm, takes minutes. The key insight: **automation works only because every step has a deterministic check** — visual regression on the design-system side, visual regression on the consumer side, semver, changelogs. Skip those and the "pipeline" is a slow manual process with extra tools. + +--- + +## 5. Versioning discipline + +Strict semver, even at A1. + +| Change | Bump | +|---|---| +| Token value tweak that doesn't visibly break any existing example | **patch** — `0.1.0 → 0.1.1` | +| New component, new variant, new token | **minor** — `0.1.1 → 0.2.0` | +| Removing / renaming a component, prop, or token; changing default behaviour | **major** — `0.2.0 → 1.0.0` | + +Stay in `0.x.x` until something is in production. While in `0.x.x`, **minor bumps are allowed to break things** — that's the convention. This gives you permission to iterate without ceremony. + +Promotion past `1.0.0` should appear in `whynot-control/DECISIONS.md`. Same rule as promotion to Helix or Coulomb: it's a deliberate act, not a release-script side-effect. + +--- + +## 6. Where Claude fits + +Two distinct roles, both useful: + +- **The Claude atelier template** — used at hop 1. Designer (or you) opens a new project from the template, mocks variations, decides, hands off a PR description + diff to whoever (or whatever) writes the `whynot-design` PR. The atelier never publishes anything to production directly. + +- **Claude Code with `SKILL.md`** — used at hop 1 *and* hop 5. The same SKILL file works in both contexts: + - Pointed at `whynot-design`, Claude Code knows the rules and can write component PRs. + - Pointed at a consuming repo, Claude Code knows the rules and can build screens that respect them. + +That's why `SKILL.md` ships with this repo. Drop it into `.claude/skills/` of any consuming repo (or copy its contents into a project-level `CLAUDE.md`) and any agent operating in that repo will know the visual language. + +--- + +## 7. Pragmatic A1 staging — don't build the whole pipeline yet + +Right now, `whynot` is at A1 Incubating with one or two prototype apps in flight. Build the smallest pipeline that still has the right *shape*. Promote each piece only when a real signal demands it. + +| Hop | A1 version | Promote to full when… | +|---|---|---| +| Atelier | Claude template, as-is. | Never — stays here. | +| `whynot-design` repo | This seed. CSS + JSX consumed from source. No build step. | Second non-React consumer appears, or bundle size becomes a measurable problem. | +| Distribution | pnpm workspace, or `git+ssh` install from tags. | An external collaborator needs read access without cloning. | +| Visual regression | One Playwright test screenshotting `examples/whynot-control/index.html`. | The system has >20 components or >2 consuming apps. | +| Dependency updates | Manual `pnpm up` once a week. | More than two consuming repos. | +| Release notes | Hand-edited `CHANGELOG.md`. | More than two contributors, or releases become weekly. | +| Component-level visual coverage | One screenshot of the whole UI kit. | The system has >20 components. | + +This staging is exactly the *"low-cost learning first"* posture in `whynot-control/OPERATING_MODEL.md`. A design system with one consumer and one author does not need Chromatic. A design system with five consumers and three authors absolutely does. Don't pay the cost of the second one until you're in it. + +--- + +## 8. First-week checklist + +For whoever is bootstrapping this repo right now: + +- [ ] Push the seed contents to `gitea.example.com/whynot/whynot-design`. +- [ ] Tag `v0.1.0` immediately so consumers can pin. +- [ ] Add the repo as a remote dependency in **one** consuming app and verify imports work. +- [ ] Open one trivial PR against `whynot-design` (e.g. a CHANGELOG typo) to confirm CI passes end-to-end. +- [ ] Record this bootstrap in `whynot-control/DECISIONS.md` as DEC-004 or similar — *"Established whynot-design as the implementation surface for the visual language."* +- [ ] Update `whynot-control/SCOPE.md` to mention `whynot-design` in the out-of-scope list (it's a sibling, not absorbed scope). + +That's it. Anything more is over-engineering for the current stage. + +--- + +> A design system can be interesting and still be parked. `whynot-design` exists to reduce visual uncertainty across prototypes, not to create more obligations. diff --git a/README.md b/README.md new file mode 100644 index 0000000..072f6ca --- /dev/null +++ b/README.md @@ -0,0 +1,288 @@ +# @whynot/design + +The neutral, mostly-black-and-white visual language for **whynot** — Tegwick's prototype and market-signal organisation. Wireframe-leaning. Quiet. Built for artefacts that should look deliberately unfinished. + +> A prototype is a question made tangible. — `whynot-control/INTENT.md` + +This repository is the **implementation surface**. The *language* of the system — voice, casing, motifs, the reasoning behind each rule — lives in this README. The *artefact* — the CSS, the components, the assets — lives in `src/` and `assets/`. + +If you're new here, read these in order: + +1. **`DesignSystemIntroduction.md`** — how this repo relates to `whynot-control`, the Claude atelier, and consuming apps. Pipeline, versioning, propagation. +2. **`SKILL.md`** — the Agent Skill manifest. Read this if you (or an agent) will be generating new artefacts in this style. +3. **This README** — the full design language: tokens, components, content rules, iconography. +4. **`CONTRIBUTING.md`** — how to propose, review, and ship a change. + +## Quick start + +```sh +# in a consuming repo +pnpm add git+ssh://git@gitea.example.com/whynot/whynot-design.git#v0.1.0 +``` + +```jsx +// at the app root, once +import "@whynot/design/styles/colors_and_type.css"; + +// anywhere +import { Button, Tag, Eyebrow, StageDot } from "@whynot/design"; +``` + +## What lives where + +| Path | Contents | +|---|---| +| `tokens/` | Source-of-truth design tokens as JSON. | +| `src/styles/colors_and_type.css` | All CSS variables + semantic element styles. The single file every consumer imports. | +| `src/components/` | React components (JSX, no build step). | +| `src/index.js` | Barrel export. | +| `assets/` | Logo, mark, future imagery. | +| `examples/whynot-control/` | Live click-through UI kit. Also the Playwright visual-regression target. | + +--- + +> The remainder of this README is the full design language — colour reasoning, type stack, content rules, iconography. It is identical to the language defined in the Claude atelier project and should stay in sync. Treat it as authoritative. + + +## CONTENT FUNDAMENTALS + +### Voice + +The voice is **quiet, structured, evidence-oriented, and careful about overclaiming**. It comes directly out of the `AGENT_RULES.md` and `OPERATING_MODEL.md`: + +> Agent outputs should be concise, evidence-oriented, explicit about uncertainty, and careful to separate idea, hypothesis, signal, and decision. +> +> — `whynot-control/AGENT_RULES.md` + +The voice should sound like a careful field-notebook — not a startup landing page, not a product manifesto, not marketing copy. + +### Casing + +- **Sentence case** for headings, buttons, labels, links — *not* Title Case. ("Smallest useful test", not "Smallest Useful Test".) +- **lowercase** for the organization name in body: `whynot`, never `WhyNot` or `WHYNOT`. The logo wordmark may use `WhyWhyNot` for legacy reasons. +- **UPPERCASE** is reserved for short eyebrow labels (`PROTOTYPE`, `SIGNAL S2`, `STAGE`, `IN BETA`) — set in mono, with letterspacing. +- **`code-case`** for repo names, doc names, folder names: `whynot-control`, `INTENT.md`, `inbox/`. Always in monospace. + +### Person + +**Third person, with the project as subject.** Avoid "we", avoid "you", avoid "I". + +- ✅ "A prototype is a question made tangible." +- ✅ "The repository helps the user capture unusual but potentially useful ideas." +- ❌ "We help you discover weird ideas." +- ❌ "You'll love how easy this is." + +Direct second-person is reserved for *imperatives in a checklist* (e.g. "Read `INTENT.md`."). + +### Tone + +- **Curious, not enthusiastic.** "This may be worth a closer look" beats "🚀 huge if true!". +- **Hedged, not promotional.** Use *may*, *could*, *seems*, *appears to*. Avoid *will*, *guaranteed*, *the best*. +- **Distinguish idea / hypothesis / signal / decision.** Never collapse them. +- **Lack of signal is also information.** Silence is a finding, not a failure. + +### Phrasing patterns to imitate + +Lifted from the existing control documents: + +- "A prototype is a question made tangible." +- "Signal beats enthusiasm." +- "Signals are evidence, not vibes." +- "Capture is not commitment." +- "Low-cost learning first." +- "A prototype can be interesting and still be parked." + +The pattern is: **short declarative claim → small qualifier or counter-claim**. Two beats, no exclamation. + +### Phrasing to avoid + +- ❌ "Revolutionize…", "Reimagine…", "Unlock…", "Empower…" +- ❌ "🚀", "✨", "🔥", any other hype emoji. +- ❌ "We believe…", "We're on a mission to…" +- ❌ "Beta — sign up now!" (use "Closed beta. Invitation only.") +- ❌ Numbers without context ("10x faster"). Use signal-record format instead. + +### Examples + +| ❌ Avoid | ✅ Prefer | +|---|---| +| "Get started — it's free!" | "Inbox is open. Capture is not commitment." | +| "Our amazing new prototype" | "Prototype `WNO-014`. Stage: experiment." | +| "Users love it!" | "S2 — repeated interest, three concrete use-cases." | +| "Coming soon — sign up!" | "Closed beta. Five seats. Ends 2026-04-01." | +| "🎉 Launched!" | "Promoted to Helix on 2026-03-12. See `DECISIONS.md`." | + +### Emoji & punctuation + +- **No emoji** in body copy, headings, or UI. +- **`?` and `!`** are the brand's punctuation — they appear in the logo and may appear, sparingly, in display headlines (`try($idea) until success;`, `why? why not!`). +- **`→`** (U+2192) for "promotes to / goes to" links between stages. Not `->`. +- **`—`** (em dash) for parenthetical, not `--`. + +--- + +## VISUAL FOUNDATIONS + +### Overall posture + +The system reads like **engineering graph paper** — precise hairlines, lots of whitespace, monospace labels in margins, content blocks that look like fields in a form rather than cards in a feed. The aesthetic is closer to a Bauhaus wall-chart or a `man` page than to a SaaS dashboard. + +### Color + +- **Mostly black on white**, with a few flat greys. +- **One accent only**: a warm yellow (`--hi: #FFE14A`) lifted from the LEGO brick in the logo. It appears as **highlighter / annotation / signal-marker** — never as a button fill, never as a hero background. +- **No gradients.** Anywhere. Including subtle ones. +- **No tinted whites** — `--paper` is a true `#FFFFFF`; `--paper-2` and `--paper-3` are barely-warm off-whites (`#FAFAF7`, `#F4F4EF`) reserved for sheets and recessed code blocks. +- Status colors (S0–S4 signal strength) are **rendered as desaturated grey ramps**, not red/yellow/green. S4 ("commercial signal") is the only one that uses the yellow accent, because that's the threshold where a prototype actually matters commercially. + +### Type + +- **Family**: `IBM Plex Sans` for everything UI/body. `IBM Plex Mono` for labels, code, and stage markers. `IBM Plex Serif` for the occasional editorial pull-quote. (See font substitution note in *Fonts* below.) +- **Weights**: 300 (display only), 400 (body), 500 (UI / headings), 600 (occasional emphasis). Never 700+ — too marketing. +- **Tracking**: tight on display (`-0.035em`), neutral on body, **wide on uppercase labels** (`0.08em` — this is the one signature move). +- **Eyebrows everywhere**: short uppercase mono labels above titles (`STAGE`, `SIGNAL`, `PROTOTYPE`). They are the system's main rhythmic element. + +### Spacing + +- **4px base unit**, exposed as `--sp-1` (4) through `--sp-10` (128). +- Generous: a content block typically has `--sp-7` (48px) of internal padding. Lists separated by `--sp-5` (24px) minimum. +- **Section breaks are big** (`--sp-9`, 96px). Reads like a printed report. + +### Backgrounds + +- **`--paper` (#FFFFFF) by default.** Period. +- **`--paper-2`** for full-width "sheet" sections (e.g. between hero and content). +- **`--paper-3`** for recessed surfaces only — code blocks, inline pre, inset cards. +- **No images as backgrounds.** No hand-drawn illustrations. No repeating patterns. No textures. No noise. No grain. (Exception: a 1px hairline grid may be used on a literal "wireframe" mock; see `preview/grid-paper.html`.) + +### Animation + +- **Minimal.** This is a document system, not a product UI. +- Transitions on hover only: `120ms ease` on `text-decoration-color` for links, `border-color` for inputs. +- **No spring physics, no bounce, no fade-in-on-scroll.** Anything that draws attention is not in the spirit of "low-cost learning first". +- Exception: the cursor-blink animation on a `` is permitted because it's a literal terminal motif. + +### Hover & press states + +- **Links** — underline color goes from `--border-strong` to `--fg-1` on hover. +- **Buttons (primary, dark)** — `--ink` → `--ink-2` on hover. On press, no transform, just `--ink` (back to baseline). +- **Buttons (secondary, outline)** — border `--border` → `--ink`. On press, background flashes `--bg-3`. +- **Cards** — *do not have hover states.* They are documents, not interactive surfaces. Exception: prototype cards in an index list get a 1px black left border on hover. +- **No scale transforms**, no shadow lifts, no glow effects. + +### Borders + +- **1px solid `--border` (#E5E5E2)** is the default. Used everywhere. +- **`--border-strong` (#C9C9C5)** for section dividers and the outline of a primary block. +- **Hairline `--border-soft` (#F0F0EC)** for internal rules within a card. +- **No double borders, no inset borders, no dashed borders** except in one specific case: dashed `--border-strong` is used to indicate "placeholder / not yet defined" content (see Components / Empty State). + +### Shadows + +- **`--shadow-0`: none.** This is the default. Most cards and panels have no shadow. +- **`--shadow-1`: `0 1px 0 var(--line)`** — a 1px bottom-line, used in place of bottom-border on sticky headers. +- **`--shadow-2`: `0 1px 0 var(--line-strong)`** — slightly stronger version. +- **`--shadow-3`** is reserved for *floating* elements only (a popover, a focus-trapped modal). Even then it's a soft 4-12px diffuse shadow at 10% opacity — never a "card lift" shadow. + +### Protection gradients vs capsules + +- **No protection gradients.** Backgrounds are solid; never overlay a gradient to "rescue" text from a busy background, because backgrounds are never busy. +- **Capsules (pills with rounded ends)** are used only for `--label` and tag elements — never for buttons. Buttons are slightly rounded rectangles (`--r-2`, 4px). + +### Layout rules + +- **Single-column reading width** of ~640px for body, ~880px for documents with sidebars. +- **Constant page padding** of `--sp-7` (48px) on desktop, `--sp-4` (16px) on mobile. +- **Sticky element**: top navigation bar, height 56px, bottom hairline. +- **Sidebar (where used)**: 256px fixed width, `--paper-2` background, no border on right (uses whitespace to separate from main). +- **Grids** for structured data only — never as a "card wall". 12-column with 24px gutters. + +### Transparency & blur + +- **Almost never used.** No frosted glass. No backdrop-filter. +- One permitted use: a `rgba(255,255,255,0.92)` on the sticky top nav so that scrolled content is faintly visible behind it. No blur. + +### Imagery + +- **Black & white only.** All photography (when used) is rendered with `filter: grayscale(1) contrast(0.95)` — slightly low-contrast, like a Risograph print. +- **Aspect ratios**: 4:3 (preferred — feels like a document figure), 1:1 (for portraits / icons). Never 16:9 in body. +- **No people-stock-photography.** Prefer objects, diagrams, or screenshots. +- **No AI-generated imagery** unless explicitly labelled as such with a `[generated]` caption. + +### Corner radii + +- **`--r-1` (2px)** for inputs and tags. +- **`--r-2` (4px)** for buttons and small cards. +- **`--r-3` (8px)** for large cards and modals. +- **`--r-pill` (999px)** for label capsules only. +- **`--r-0` (0px / square)** is the default for documents, sheets, and any element wider than ~600px. Big things are square. + +### Cards + +A "card" in this system is **a bordered rectangle**, not a shadowed object floating off the page. + +- 1px `--border` outline. +- `--paper` background. +- 4px or 8px radius depending on size. +- **No shadow.** +- Internal padding `--sp-5` (24px) minimum. +- A monospace eyebrow at top-left + a stage label at top-right is the canonical card header. +- On hover (when interactive): the top-left eyebrow tints to `--fg-1`, and a 2px black bar appears flush against the left edge. Nothing else moves. + +--- + +## ICONOGRAPHY + +The codebase did **not** ship an icon font, an icon sprite, or any SVG icons — `whynot-control` is a documents-only repo. The only visual asset is the LEGO-brick logo. + +### Approach + +- **Lucide icons via CDN** is the chosen icon set. It matches the system's stroke weight (1.5px), neutral geometry, and "wireframe artefact" feel better than Material, Heroicons, or Phosphor. Load with `` and call `lucide.createIcons()`. +- **Stroke weight is always 1.5px.** Override Lucide's default 2px via `stroke-width="1.5"` on each `` or via CSS. +- **Color**: `currentColor`. Icons inherit from text. No two-tone, no fills. +- **Size**: 16px (inline), 20px (button), 24px (heading-adjacent), 32px (feature). Never larger — large icons read as decoration, and decoration is not in the spirit. + +### When to use icons + +- In navigation labels, button labels, and inline status — **only when the icon adds parsing speed**. If the word reads faster than the icon, skip the icon. +- In document margins to mark stage transitions (e.g. `→ Helix`). +- **Not** as decorative chrome on cards. +- **Not** as "feature icons" in a 3-up grid on a marketing page (this system has no marketing pages). + +### Emoji + +- **Never.** Emoji are not used anywhere — in copy, labels, alt text, or as fallback for missing icons. + +### Unicode characters used as icons + +These are allowed and preferred over raster icons in some contexts: + +| Char | Used for | +|---|---| +| `→` | "promotes to" / pipeline arrow | +| `←` | back / previous | +| `·` | inline bullet separator (in nav, in meta lines) | +| `—` | em dash, in metadata | +| `?` `!` | the brand's signature punctuation, in display headlines only | +| `§` | section marker, in long documents | + +### The logo + +- The primary mark is **the LEGO brick with `?` and `!` underneath**, in pure black & white. `assets/whynot-logo.png` (300×300 raster, transparent background). +- For very small uses (favicon, footer mark), a **simplified mark** is recommended: just the `?!` pair in `IBM Plex Sans 600`, with the brick implied by a 2×4 dot grid above. See `preview/logo.html`. +- The brick should **never be coloured** (no LEGO-red, LEGO-blue, etc). It is always black-outlined on white, or white-outlined on black. +- Minimum size: 32px square. Below that, fall back to the `?!` wordmark. + +--- + +## A note on font substitution + +The control repo did not ship font files. **IBM Plex Sans / Mono / Serif** were chosen as a fresh pairing because: + +- The "Plex" family was designed by IBM as an explicitly *neutral, technical-document* family — the same use-case as this system. +- All three (sans, mono, serif) share metrics, so they mix cleanly in templates and tables. +- They are openly licensed (SIL OFL) and available on Google Fonts. + +Plex is currently loaded from Google Fonts (see top of `colors_and_type.css`). For offline use, drop the `.woff2` files into `fonts/` and swap the `@import` for a local `@font-face` block. + +> **🟨 Substitution flagged**: there was no specified brand font; IBM Plex is a choice made here. If `whynot` later adopts a different brand font, replace `--ff-sans` / `--ff-mono` / `--ff-serif` in `colors_and_type.css` and everything downstream will follow. diff --git a/SKILL.md b/SKILL.md new file mode 100644 index 0000000..4357fbc --- /dev/null +++ b/SKILL.md @@ -0,0 +1,34 @@ +--- +name: whynot-design +description: Use this skill to generate well-branded interfaces and assets for whynot — Tegwick's prototype-and-market-signal organisation that discovers the weird and the useful — either for production or throwaway prototypes, mocks, signal records, beta plans, and decision documents. Contains essential design guidelines, neutral colour system, IBM Plex type stack, the LEGO-brick logo, and a click-through UI kit recreating the whynot-control surface. +user-invocable: true +--- + +Read the `README.md` file within this skill, and explore the other available files. + +If creating visual artefacts (slides, mocks, throwaway prototypes, signal records, beta plans, etc.), copy assets out and create static HTML files for the user to view. If working on production code, you can copy assets and read the rules here to become an expert in designing with this brand. + +If the user invokes this skill without any other guidance, ask them what they want to build or design, ask some questions, and act as an expert designer who outputs HTML artefacts *or* production code, depending on the need. + +## Quick orientation + +- **`README.md`** — full design system: company context, content rules (voice, casing, person, tone), visual foundations (color, type, spacing, animation, hover, borders, shadows, cards, imagery), and iconography. +- **`colors_and_type.css`** — drop-in CSS with every CSS variable and semantic element style. Import this on every artefact. +- **`assets/`** — `whynot-logo.png` (LEGO brick + ?!). +- **`preview/`** — 23 reference cards (palettes, type specimens, components, motifs) you can read to understand any single concept in isolation. +- **`ui_kits/whynot-control/`** — React kit recreating the `whynot-control` web app. Use these components when building prototype dashboards, signal records, decision documents. + +## House rules (do not violate) + +1. **Quiet voice.** No marketing language, no hype, no emoji. Sentence case everywhere. Distinguish idea / hypothesis / signal / decision. +2. **Mostly black & white.** Color is one warm yellow accent (`--hi: #FFE14A`) used only as highlighter / draft stamp / S4 signal indicator. Never as a button fill, never as a hero background, never as a gradient. +3. **No gradients. Anywhere.** +4. **Wireframe vibes.** 1px hairlines, generous whitespace, monospace eyebrow labels in margins. The aesthetic is engineering graph-paper, not SaaS dashboard. +5. **Square corners on big things.** 0–4px radii for cards/sheets; 8px reserved for large modals; pill only for tag capsules. +6. **No shadows on cards.** Elevation is intentionally near-zero; only popovers get a soft 4–12px shadow. +7. **No fake illustrations.** Use the logo, use Lucide icons at 1.5px stroke, use placeholders. Never hand-roll SVG icons or emoji. +8. **Lowercase organisation name** in body: `whynot`. The logo wordmark may use `WhyWhyNot` for legacy reasons. + +## When in doubt + +Read `README.md` and the closest matching card in `preview/`. If still unsure, ask the user — `whynot` prefers explicit uncertainty over confident guesses. diff --git a/assets/whynot-logo-original.png b/assets/whynot-logo-original.png new file mode 100644 index 0000000000000000000000000000000000000000..e267921c47de29d68c28243c73a6f48138d10b30 GIT binary patch literal 80936 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

68zIMPE9hJpf#4SWt+4jfY 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 literal 0 HcmV?d00001 diff --git a/assets/whynot-logo.png b/assets/whynot-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..e267921c47de29d68c28243c73a6f48138d10b30 GIT binary patch literal 80936 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

68zIMPE9hJpf#4SWt+4jfY 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 literal 0 HcmV?d00001 diff --git a/examples/whynot-control/Atoms.jsx b/examples/whynot-control/Atoms.jsx new file mode 100644 index 0000000..868b24f --- /dev/null +++ b/examples/whynot-control/Atoms.jsx @@ -0,0 +1,102 @@ +// ============================================================= +// Atoms — Eyebrow, Tag, Button, StageDot, Stamp, IconBtn +// ============================================================= + +function Eyebrow({ children, style }) { + return ( + {children} + ); +} + +function Tag({ children, active, draft, style }) { + const base = { + font: '500 10px/1 var(--ff-mono)', + letterSpacing: '0.1em', + textTransform: 'uppercase', + padding: '5px 10px', + borderRadius: 'var(--r-pill)', + border: '1px solid var(--border)', + color: 'var(--fg-2)', + background: 'var(--paper)', + display: 'inline-block', + }; + if (active) Object.assign(base, { background: 'var(--ink)', color: 'var(--paper)', borderColor: 'var(--ink)' }); + if (draft) Object.assign(base, { background: 'var(--hi)', color: 'var(--hi-ink)', borderColor: 'transparent' }); + return {children}; +} + +function Button({ children, variant = 'secondary', onClick, style, icon }) { + const base = { + font: '500 13px var(--ff-sans)', + letterSpacing: '-0.005em', + padding: '9px 14px', + borderRadius: 'var(--r-2)', + border: '1px solid var(--border)', + background: 'var(--paper)', + color: 'var(--ink)', + cursor: 'pointer', + display: 'inline-flex', + alignItems: 'center', + gap: 8, + whiteSpace: 'nowrap', + transition: 'background 120ms ease, border-color 120ms ease', + }; + if (variant === 'primary') Object.assign(base, { background: 'var(--ink)', color: 'var(--paper)', borderColor: 'var(--ink)' }); + if (variant === 'ghost') Object.assign(base, { background: 'transparent', borderColor: 'transparent', padding: '7px 10px' }); + return ( + + ); +} + +const STAGE_COLORS = { + S0: '#B5B5B3', S1: '#8A8A8A', S2: '#5C5C5C', S3: '#0A0A0A', S4: '#FFD400', +}; + +function StageDot({ level = 'S2', label, style }) { + return ( + + + {label || level} + + ); +} + +function Stamp({ children, style }) { + return ( + {children} + ); +} + +function Icon({ name, size = 16, style }) { + return ; +} + +Object.assign(window, { Eyebrow, Tag, Button, StageDot, Stamp, Icon, STAGE_COLORS }); diff --git a/examples/whynot-control/Chrome.jsx b/examples/whynot-control/Chrome.jsx new file mode 100644 index 0000000..045bb3c --- /dev/null +++ b/examples/whynot-control/Chrome.jsx @@ -0,0 +1,165 @@ +// ============================================================= +// Chrome — TopNav, Sidebar, PageHeader, PipelineStrip +// ============================================================= + +function TopNav({ onNew }) { + return ( +

+ ); +} + +const NAV_ITEMS = [ + { key: 'inbox', label: 'Inbox', icon: 'inbox', count: 7 }, + { key: 'prototypes', label: 'Prototypes', icon: 'flask-conical', count: 4 }, + { key: 'signals', label: 'Signals', icon: 'activity', count: 12 }, + { key: 'betas', label: 'Betas', icon: 'users', count: 1 }, + { key: 'decisions', label: 'Decisions', icon: 'check-square', count: 3 }, +]; + +const DOC_ITEMS = [ + { key: 'intent', label: 'INTENT.md' }, + { key: 'scope', label: 'SCOPE.md' }, + { key: 'operating', label: 'OPERATING_MODEL.md' }, + { key: 'pipeline', label: 'PROTOTYPE_PIPELINE.md' }, + { key: 'agent', label: 'AGENT_RULES.md' }, +]; + +function Sidebar({ current, onNav }) { + const itemStyle = (active) => ({ + display: 'flex', + alignItems: 'center', + gap: 10, + padding: '8px 12px', + borderRadius: 4, + color: active ? 'var(--fg-1)' : 'var(--fg-2)', + background: active ? 'var(--paper)' : 'transparent', + boxShadow: active ? '0 0 0 1px var(--border) inset' : 'none', + font: '500 13px var(--ff-sans)', + cursor: 'pointer', + textDecoration: 'none', + transition: 'background 120ms ease, color 120ms ease', + }); + return ( + + ); +} + +function PageHeader({ eyebrow, title, lede, actions }) { + return ( +
+ {eyebrow && {eyebrow}} +
+

{title}

+ {actions &&
{actions}
} +
+ {lede &&

{lede}

} +
+ ); +} + +function PipelineStrip({ activeIdx = 3 }) { + const stages = [ + { num: 'Stage 0', name: 'Raw idea', meta: 'inbox/' }, + { num: 'Stage 1', name: 'Triage', meta: '2026-02-12' }, + { num: 'Stage 2', name: 'Prototype card', meta: 'prototypes/' }, + { num: 'Stage 3', name: 'Experiment', meta: 'ends 2026-04-01' }, + { num: 'Stage 4', name: 'Signal review', meta: '— pending' }, + ]; + return ( +
+ {stages.map((s, i) => { + const state = i < activeIdx ? 'done' : i === activeIdx ? 'active' : 'pending'; + const topColor = state === 'done' ? 'var(--ink)' : state === 'active' ? 'var(--hi-2)' : 'var(--border)'; + return ( +
+ {s.num} + {s.name} + {s.meta} + {i > 0 && ( + + )} +
+ ); + })} +
+ ); +} + +Object.assign(window, { TopNav, Sidebar, PageHeader, PipelineStrip, NAV_ITEMS, DOC_ITEMS }); diff --git a/examples/whynot-control/DocView.jsx b/examples/whynot-control/DocView.jsx new file mode 100644 index 0000000..8580e6c --- /dev/null +++ b/examples/whynot-control/DocView.jsx @@ -0,0 +1,102 @@ +// ============================================================= +// Document viewer — renders one of the control docs +// ============================================================= + +const DOC_CONTENT = { + intent: { + title: 'INTENT.md', + eyebrow: 'whynot-control · control document', + sections: [ + { h: 'Purpose', p: 'whynot-control exists to serve as the control repository for the whynot organisation: a prototype, feedback, and market-signal space for discovering the weird and the useful.' }, + { h: 'Primary utility', list: [ + 'capture unusual but potentially useful ideas;', + 'distinguish curiosity from commitment;', + 'shape rough ideas into testable prototypes;', + 'collect early feedback and market signals;', + 'run closed beta concepts in a controlled way;', + 'identify which ideas should move toward Helix, Coulomb, Sloppers, Plenitude, Binky, or Tegwick;', + 'prevent premature productisation.', + ]}, + { h: 'Operating principle', quote: 'A prototype is a question made tangible. The purpose of a prototype is not to prove that an idea is brilliant. The purpose is to learn what is actually useful, desirable, feasible, or irrelevant.' }, + ], + }, + scope: { + title: 'SCOPE.md', + eyebrow: 'whynot-control · control document', + sections: [ + { h: 'Current reality', p: 'whynot-control is the control repository for organising prototype exploration and early market-signal capture.' }, + { h: 'In scope', list: ['Prototype idea capture.', 'Prototype classification.', 'Early user feedback notes.', 'Market-signal tracking.', 'Closed beta planning.', 'Experiment records.', 'Promotion recommendations.', 'Agent-assisted drafting and analysis.'] }, + { h: 'Out of scope', list: ['Production implementation.', 'Long-term product maintenance.', 'Payment processing.', 'Legal investment documentation.', 'Public launch operations.', 'Binding financial, legal, or tax conclusions.'] }, + { h: 'Scope guardrail', quote: 'whynot-control explores and validates. It does not absorb all product development.' }, + ], + }, + operating: { + title: 'OPERATING_MODEL.md', + eyebrow: 'whynot-control · control document', + sections: [ + { h: 'Core rules', list: [ + 'Prototypes are questions. Each prototype should express a question about usefulness, desirability, feasibility, or willingness to pay.', + 'Signal beats enthusiasm. An idea should not be promoted only because it is exciting.', + 'Low-cost learning first. Prefer sketches, mockups, demos, landing pages, conversations.', + 'Closed beta before broad launch.', + 'Promotion requires criteria.', + ]}, + { h: 'Burnout guardrail', quote: 'A prototype can be interesting and still be parked. whynot exists to reduce uncertainty, not to create more obligations.' }, + ], + }, + pipeline: { + title: 'PROTOTYPE_PIPELINE.md', + eyebrow: 'whynot-control · control document', + sections: [ + { h: 'Stage 0 — Raw capture', p: 'Capture ideas without judging them immediately. Located in inbox/. Done when the idea is saved and no longer needs to be held in memory.' }, + { h: 'Stage 1 — Triage', p: 'Decide whether an idea deserves a prototype card. Outcomes: create card, park, merge, reject.' }, + { h: 'Stage 2 — Prototype card', p: 'Turn the idea into a structured prototype candidate. Located in prototypes/.' }, + { h: 'Stage 3 — Experiment', p: 'Test the idea with minimal cost: concept note, landing page, clickable mockup, CLI/demo script, Wizard-of-Oz, manual concierge test, closed conversation, private beta.' }, + { h: 'Stage 4 — Signal review', p: 'Evaluate what was learned. Interest, usefulness, retention, referral, payment, contribution, strategic fit.' }, + { h: 'Stage 5 — Decision', p: 'Park, iterate, promote, reject, or merge. Promotion requires an explicit record in DECISIONS.md.' }, + ], + }, + agent: { + title: 'AGENT_RULES.md', + eyebrow: 'whynot-control · control document', + sections: [ + { h: 'General principle', p: 'Agents may help clarify, structure, draft, compare, and analyse prototype ideas. They must not silently turn experiments into product commitments.' }, + { h: 'Allowed', list: ['draft prototype cards', 'classify ideas by lifecycle stage', 'propose smallest useful tests', 'summarise feedback', 'compare prototype candidates', 'improve wording and structure'] }, + { h: 'Forbidden', list: ['create artificial urgency', 'treat all prototype ideas as products', 'infer willingness to pay without evidence', 'present weak signals as strong validation', 'create legal, financial, or investment commitments'] }, + { h: 'Preferred output style', quote: 'Agent outputs should be concise, evidence-oriented, explicit about uncertainty, and careful to separate idea, hypothesis, signal, and decision.' }, + ], + }, +}; + +function DocView({ docKey }) { + const doc = DOC_CONTENT[docKey]; + if (!doc) return
Doc not found.
; + return ( +
+ {doc.eyebrow} +

{doc.title}

+ {doc.sections.map((s, i) => ( +
+

{s.h}

+ {s.p &&

{s.p}

} + {s.list && ( +
    + {s.list.map((li, j) =>
  • {li}
  • )} +
+ )} + {s.quote && ( +
+

{s.quote}

+
+ )} +
+ ))} +
+ whynot-control / {doc.title} + A1 · Incubating · 2026 +
+
+ ); +} + +Object.assign(window, { DocView, DOC_CONTENT }); diff --git a/examples/whynot-control/README.md b/examples/whynot-control/README.md new file mode 100644 index 0000000..8021233 --- /dev/null +++ b/examples/whynot-control/README.md @@ -0,0 +1,31 @@ +# 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 from `preview/comp-prototype-card.html`, factored. +- `PipelineStrip.jsx` — the 5-stage progress strip from `preview/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 `useState` for screen routing. +- Components export themselves onto `window` so each ` + + + + + +
+ + + + + + + + + + diff --git a/package.json b/package.json new file mode 100644 index 0000000..c0dbbed --- /dev/null +++ b/package.json @@ -0,0 +1,55 @@ +{ + "name": "@whynot/design", + "version": "0.1.0", + "description": "The neutral, mostly-black-and-white visual language for whynot — prototypes, signal records, beta plans, decision documents, and any other deliberately-unfinished artefact.", + "private": true, + "type": "module", + "main": "./src/index.js", + "module": "./src/index.js", + "exports": { + ".": "./src/index.js", + "./styles/colors_and_type.css": "./src/styles/colors_and_type.css", + "./styles": "./src/styles/colors_and_type.css", + "./tokens": "./tokens/index.json", + "./tokens/colors": "./tokens/colors.json", + "./tokens/type": "./tokens/type.json", + "./tokens/spacing": "./tokens/spacing.json", + "./assets/*": "./assets/*", + "./skill": "./SKILL.md" + }, + "files": [ + "src", + "tokens", + "assets", + "SKILL.md", + "DesignSystemIntroduction.md", + "README.md", + "CHANGELOG.md" + ], + "sideEffects": [ + "**/*.css" + ], + "scripts": { + "check": "node ./scripts/check-changelog.mjs", + "test:visual": "playwright test", + "test:visual:update": "playwright test --update-snapshots", + "example": "npx --yes serve examples/whynot-control" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + }, + "peerDependenciesMeta": { + "react": { "optional": true }, + "react-dom": { "optional": true } + }, + "devDependencies": { + "@playwright/test": "^1.45.0" + }, + "keywords": ["whynot", "design-system", "wireframe", "prototype", "minimal"], + "repository": { + "type": "git", + "url": "git+ssh://git@gitea.example.com/whynot/whynot-design.git" + }, + "license": "UNLICENSED" +} diff --git a/playwright.config.mjs b/playwright.config.mjs new file mode 100644 index 0000000..4a2d592 --- /dev/null +++ b/playwright.config.mjs @@ -0,0 +1,30 @@ +import { defineConfig, devices } from "@playwright/test"; + +export default defineConfig({ + testDir: "./tests/visual", + fullyParallel: true, + forbidOnly: !!process.env.CI, + retries: 0, + reporter: [["html", { open: "never" }], ["list"]], + use: { + headless: true, + viewport: { width: 1280, height: 800 }, + deviceScaleFactor: 2, + }, + projects: [ + { name: "chromium", use: { ...devices["Desktop Chrome"] } }, + ], + webServer: { + command: "npx --yes serve -l 4321 examples/whynot-control", + url: "http://localhost:4321", + reuseExistingServer: !process.env.CI, + stdout: "ignore", + stderr: "pipe", + }, + expect: { + toHaveScreenshot: { + // Reasonable tolerance for font hinting / sub-pixel jitter. + maxDiffPixelRatio: 0.005, + }, + }, +}); diff --git a/scripts/check-changelog.mjs b/scripts/check-changelog.mjs new file mode 100644 index 0000000..f0790ea --- /dev/null +++ b/scripts/check-changelog.mjs @@ -0,0 +1,29 @@ +#!/usr/bin/env node +// Verify that CHANGELOG.md gained at least one entry under [Unreleased] +// or that a [vX.Y.Z] block was added since main. Fails CI if not. +// +// Skip with the PR label `no-changelog` for trivial doc-only changes. + +import { execSync } from "node:child_process"; +import { readFileSync } from "node:fs"; + +const base = process.env.GITHUB_BASE_REF || "main"; +let diff; +try { + execSync(`git fetch --no-tags --depth=50 origin ${base}`, { stdio: "ignore" }); + diff = execSync(`git diff --unified=0 origin/${base}...HEAD -- CHANGELOG.md`).toString(); +} catch (err) { + console.error("Could not diff CHANGELOG.md:", err.message); + process.exit(1); +} + +const additions = diff.split("\n").filter(l => l.startsWith("+") && !l.startsWith("+++")); +const meaningful = additions.filter(l => l.replace(/^\+/, "").trim().length > 0 && !l.includes("Unreleased")); + +if (meaningful.length === 0) { + console.error("CHANGELOG.md has no new entries on this PR."); + console.error("Either add an entry under [Unreleased], or label this PR `no-changelog`."); + process.exit(1); +} + +console.log(`OK — ${meaningful.length} CHANGELOG line(s) added.`); diff --git a/scripts/extract-release-notes.mjs b/scripts/extract-release-notes.mjs new file mode 100644 index 0000000..6961e91 --- /dev/null +++ b/scripts/extract-release-notes.mjs @@ -0,0 +1,22 @@ +#!/usr/bin/env node +// Print the CHANGELOG slice for a given tag to stdout. +// Used by the release workflow to attach release notes. + +import { readFileSync } from "node:fs"; + +const tag = process.argv[2]; +if (!tag) { + console.error("Usage: extract-release-notes.mjs vX.Y.Z"); + process.exit(1); +} + +const version = tag.replace(/^v/, ""); +const changelog = readFileSync("CHANGELOG.md", "utf8"); +const re = new RegExp(`## \\[${version.replace(/\./g, "\\.")}\\][\\s\\S]*?(?=\\n## \\[|$)`, "m"); +const m = changelog.match(re); + +if (!m) { + console.error(`No CHANGELOG section found for [${version}].`); + process.exit(1); +} +process.stdout.write(m[0].trim() + "\n"); diff --git a/src/components/Atoms.jsx b/src/components/Atoms.jsx new file mode 100644 index 0000000..868b24f --- /dev/null +++ b/src/components/Atoms.jsx @@ -0,0 +1,102 @@ +// ============================================================= +// Atoms — Eyebrow, Tag, Button, StageDot, Stamp, IconBtn +// ============================================================= + +function Eyebrow({ children, style }) { + return ( + {children} + ); +} + +function Tag({ children, active, draft, style }) { + const base = { + font: '500 10px/1 var(--ff-mono)', + letterSpacing: '0.1em', + textTransform: 'uppercase', + padding: '5px 10px', + borderRadius: 'var(--r-pill)', + border: '1px solid var(--border)', + color: 'var(--fg-2)', + background: 'var(--paper)', + display: 'inline-block', + }; + if (active) Object.assign(base, { background: 'var(--ink)', color: 'var(--paper)', borderColor: 'var(--ink)' }); + if (draft) Object.assign(base, { background: 'var(--hi)', color: 'var(--hi-ink)', borderColor: 'transparent' }); + return {children}; +} + +function Button({ children, variant = 'secondary', onClick, style, icon }) { + const base = { + font: '500 13px var(--ff-sans)', + letterSpacing: '-0.005em', + padding: '9px 14px', + borderRadius: 'var(--r-2)', + border: '1px solid var(--border)', + background: 'var(--paper)', + color: 'var(--ink)', + cursor: 'pointer', + display: 'inline-flex', + alignItems: 'center', + gap: 8, + whiteSpace: 'nowrap', + transition: 'background 120ms ease, border-color 120ms ease', + }; + if (variant === 'primary') Object.assign(base, { background: 'var(--ink)', color: 'var(--paper)', borderColor: 'var(--ink)' }); + if (variant === 'ghost') Object.assign(base, { background: 'transparent', borderColor: 'transparent', padding: '7px 10px' }); + return ( + + ); +} + +const STAGE_COLORS = { + S0: '#B5B5B3', S1: '#8A8A8A', S2: '#5C5C5C', S3: '#0A0A0A', S4: '#FFD400', +}; + +function StageDot({ level = 'S2', label, style }) { + return ( + + + {label || level} + + ); +} + +function Stamp({ children, style }) { + return ( + {children} + ); +} + +function Icon({ name, size = 16, style }) { + return ; +} + +Object.assign(window, { Eyebrow, Tag, Button, StageDot, Stamp, Icon, STAGE_COLORS }); diff --git a/src/components/Chrome.jsx b/src/components/Chrome.jsx new file mode 100644 index 0000000..045bb3c --- /dev/null +++ b/src/components/Chrome.jsx @@ -0,0 +1,165 @@ +// ============================================================= +// Chrome — TopNav, Sidebar, PageHeader, PipelineStrip +// ============================================================= + +function TopNav({ onNew }) { + return ( + + ); +} + +const NAV_ITEMS = [ + { key: 'inbox', label: 'Inbox', icon: 'inbox', count: 7 }, + { key: 'prototypes', label: 'Prototypes', icon: 'flask-conical', count: 4 }, + { key: 'signals', label: 'Signals', icon: 'activity', count: 12 }, + { key: 'betas', label: 'Betas', icon: 'users', count: 1 }, + { key: 'decisions', label: 'Decisions', icon: 'check-square', count: 3 }, +]; + +const DOC_ITEMS = [ + { key: 'intent', label: 'INTENT.md' }, + { key: 'scope', label: 'SCOPE.md' }, + { key: 'operating', label: 'OPERATING_MODEL.md' }, + { key: 'pipeline', label: 'PROTOTYPE_PIPELINE.md' }, + { key: 'agent', label: 'AGENT_RULES.md' }, +]; + +function Sidebar({ current, onNav }) { + const itemStyle = (active) => ({ + display: 'flex', + alignItems: 'center', + gap: 10, + padding: '8px 12px', + borderRadius: 4, + color: active ? 'var(--fg-1)' : 'var(--fg-2)', + background: active ? 'var(--paper)' : 'transparent', + boxShadow: active ? '0 0 0 1px var(--border) inset' : 'none', + font: '500 13px var(--ff-sans)', + cursor: 'pointer', + textDecoration: 'none', + transition: 'background 120ms ease, color 120ms ease', + }); + return ( + + ); +} + +function PageHeader({ eyebrow, title, lede, actions }) { + return ( +
+ {eyebrow && {eyebrow}} +
+

{title}

+ {actions &&
{actions}
} +
+ {lede &&

{lede}

} +
+ ); +} + +function PipelineStrip({ activeIdx = 3 }) { + const stages = [ + { num: 'Stage 0', name: 'Raw idea', meta: 'inbox/' }, + { num: 'Stage 1', name: 'Triage', meta: '2026-02-12' }, + { num: 'Stage 2', name: 'Prototype card', meta: 'prototypes/' }, + { num: 'Stage 3', name: 'Experiment', meta: 'ends 2026-04-01' }, + { num: 'Stage 4', name: 'Signal review', meta: '— pending' }, + ]; + return ( +
+ {stages.map((s, i) => { + const state = i < activeIdx ? 'done' : i === activeIdx ? 'active' : 'pending'; + const topColor = state === 'done' ? 'var(--ink)' : state === 'active' ? 'var(--hi-2)' : 'var(--border)'; + return ( +
+ {s.num} + {s.name} + {s.meta} + {i > 0 && ( + + )} +
+ ); + })} +
+ ); +} + +Object.assign(window, { TopNav, Sidebar, PageHeader, PipelineStrip, NAV_ITEMS, DOC_ITEMS }); diff --git a/src/index.js b/src/index.js new file mode 100644 index 0000000..feffae5 --- /dev/null +++ b/src/index.js @@ -0,0 +1,18 @@ +// @whynot/design — barrel export. +// +// At A1 there is no build step: consumers import these JSX files directly. +// Any modern bundler (Vite, Next.js, Webpack 5 with @babel/preset-react, +// esbuild, Bun) handles JSX-in-.jsx out of the box. +// +// If you need to support a bundler that doesn't, fall back to either +// (a) importing from `examples/whynot-control/` as inline