# 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` §6](./DesignSystemIntroduction.md#6-versioning-discipline). ## [Unreleased] _Nothing yet. Add entries above the next `[vX.Y.Z]` block as PRs land._ ## [0.2.0] — 2026-05-25 **Architectural reframe.** The system is now delivered as three stacked layers — tokens + CSS, Lit web components, optional framework adapters. The previous React-only component layer has been removed. ### Added - `MultiFrameworkSupport.md` — full integration guide for React, Django, HTMX, Vue, Svelte, plain HTML. - `src/elements/` — Lit-based web components, light-DOM rendered: - **Atoms** (`atoms.js`): ``, ``, ``, ``, ``, ``, ``. - **Form** (`form.js`): ``, ``, ``, ``, ``. - **Layout** (`layout.js`): ``, ``, `` + `` + ``, ``, `` + ``, ``, ``. - **Chrome** (`chrome.js`): ``, `` + `` + ``, ``, ``, ``. - `src/elements/icons.js` — Lucide-derived inline icon paths (no runtime CDN dependency). - `src/styles/components.css` — utility-class layer (`wn-btn`, `wn-card`, `wn-tag`, etc.). Consumable directly from any HTML for the "Layer 1 only" use case. - `adapters/django/templates/whynot/*.html` — `{% include %}`-ready partials for Django consumers (button, eyebrow, tag, stage-dot, page-header, pipeline, field-row, prototype-card, banner, empty-state). - `adapters/django/README.md` — how to wire the partials into a Django app. - `examples/showcase/index.html` — single-page reference rendering every component. Doubles as the Playwright visual-regression baseline. - `lit` ^3.2.1 as a runtime dependency. ### Changed - `DesignSystemIntroduction.md` — updated to describe the three-layer architecture, multi-framework consumption, and the revised propagation pipeline. - `README.md` — top-level rewrite around the new architecture, with quick-start blocks per framework. - `package.json` — adds per-group `exports` (`@whynot/design/atoms`, `/form`, `/layout`, `/chrome`, `/icons`). - CI now runs visual regression against `examples/showcase/index.html` *and* `examples/whynot-control/index.html`. ### Removed - `src/components/Atoms.jsx`, `src/components/Chrome.jsx` — the React-only component layer. Consumers using these from v0.1.0 should swap to the corresponding custom elements (drop-in replacements; see `MultiFrameworkSupport.md` § React). - `peerDependencies` on React. React is no longer required to consume `@whynot/design`. ### Migration If you were on v0.1.0 with React imports like `import { Button } from "@whynot/design"`: | Before (v0.1.0) | After (v0.2.0) | |---|---| | `import { Button } from "@whynot/design"; ` | `import "@whynot/design"; ` | | `import { Tag } from "@whynot/design"; ` | `` | | `` | `` | CSS imports are unchanged; add the new `components.css` import alongside `colors_and_type.css`. ### Known caveats - IBM Plex is loaded from Google Fonts. Drop `.woff2` files into `fonts/` and swap to a local `@font-face` for offline use. - The showcase uses `importmap` + esm.sh to load Lit (no bundler). Real consumers using `pnpm add` will pick up Lit from `node_modules` via the package's `dependencies` entry. - No TypeScript declarations for JSX yet — deferred until a TS consumer asks. - `` uses a native `