css-is-awesome 1.1.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +4 -2
- package/CHANGELOG.md +20 -0
- package/README.md +17 -13
- package/css-is-awesome.instructions.md +3 -3
- package/dist/tokens.d.ts +1 -1
- package/package.json +7 -7
package/AGENTS.md
CHANGED
|
@@ -8,7 +8,7 @@ A token-driven SCSS design system with a **single mixin-router per component**.
|
|
|
8
8
|
|
|
9
9
|
**Every mixin is a knob-board.** Each look/feel dimension is an *input*, so a consumer can restyle any mixin at any time by changing an argument — row→column is just `@include cia.flex($direction: column)`, never a hand-written `flex-direction`. Customization lives in the mixin's arguments; the consumer stays one line. **If a visual dimension can only be reached by overriding in CSS, that's a missing input — add it to the mixin.** Fewer SCSS lines always wins.
|
|
10
10
|
|
|
11
|
-
**v1.0 architecture (locked 2026-05-23):** humans-first, AI-second. The 5-pillar priority is **(1) users first, (2) tokens, (3) theme editor on the website, (4) mixin-first speed, (5) AI as composer via recipes book + MCP server**. v1.0
|
|
11
|
+
**v1.0 architecture (locked 2026-05-23):** humans-first, AI-second. The 5-pillar priority is **(1) users first, (2) tokens, (3) theme editor on the website, (4) mixin-first speed, (5) AI as composer via recipes book + MCP server**. v1.0 shipped the recipes book + theme editor polish + Tailwind/Bootstrap migration CLI + playground + MCP polish. No separate React component library (Jerry's call — recipes are the deliverable). Full backlog: [`roadmap/epics/v1-0/`](./roadmap/epics/v1-0/).
|
|
12
12
|
|
|
13
13
|
Three authoring tiers, in primary-to-fallback order:
|
|
14
14
|
|
|
@@ -273,6 +273,8 @@ self-contained and needs no setup.
|
|
|
273
273
|
|
|
274
274
|
## Where to read deeper
|
|
275
275
|
|
|
276
|
+
Live docs site: **https://jerry2d3d.github.io/css-is-awesome/** — mixin reference, recipes, theme authoring, MCP setup.
|
|
277
|
+
|
|
276
278
|
Inside this package (all whitelisted in `files`):
|
|
277
279
|
|
|
278
280
|
- **`css-is-awesome.instructions.md`** — full authoring rules (~14 KB, Cursor/Copilot pick up via `applyTo: "**"` frontmatter)
|
|
@@ -340,4 +342,4 @@ The markdown files above, the `cia` CLI, and the MCP server are the source of tr
|
|
|
340
342
|
|
|
341
343
|
---
|
|
342
344
|
|
|
343
|
-
If you're a human reading this and want full developer docs, start at `README.md
|
|
345
|
+
If you're a human reading this and want full developer docs, start at `README.md` or the docs site: https://jerry2d3d.github.io/css-is-awesome/.
|
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,23 @@
|
|
|
1
|
+
# [1.2.0](https://github.com/Jerry2d3d/css-is-awesome/compare/v1.1.1...v1.2.0) (2026-09-04)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Features
|
|
5
|
+
|
|
6
|
+
* **mobile:** docs bottom dock + hamburger site menu (Concept B pack) ([71f915d](https://github.com/Jerry2d3d/css-is-awesome/commit/71f915de63eb6c1b92f2cd0fe76d272823d94c0c))
|
|
7
|
+
|
|
8
|
+
## [1.1.1](https://github.com/Jerry2d3d/css-is-awesome/compare/v1.1.0...v1.1.1) (2026-09-04)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Bug Fixes
|
|
12
|
+
|
|
13
|
+
* **mobile:** breathing room for page text on phones ([c22bf77](https://github.com/Jerry2d3d/css-is-awesome/commit/c22bf7769784bb5ac3a746e93783b29c90161f69))
|
|
14
|
+
* **mobile:** clear the theme-picker disc at the foot of the landing page ([800e3dc](https://github.com/Jerry2d3d/css-is-awesome/commit/800e3dc2050ca4ba4a7fcee137c53f6e3f9abb45))
|
|
15
|
+
* **mobile:** collapse the theme picker below sm, not md ([01383d8](https://github.com/Jerry2d3d/css-is-awesome/commit/01383d8e131b34c733eb240b36fd5ef26165942a))
|
|
16
|
+
* **mobile:** front page - stamp anchored, stats stacked, nav wraps ([04d85fc](https://github.com/Jerry2d3d/css-is-awesome/commit/04d85fc725c2b395c0a9d8f57db8e9dbea297049))
|
|
17
|
+
* **mobile:** theme picker collapses to a corner disc on phones ([6338c11](https://github.com/Jerry2d3d/css-is-awesome/commit/6338c11e4b62863c2f63b6de08ecb8ca4274ae75))
|
|
18
|
+
* **mobile:** toggle no longer leaks into desktop - scope button reset to the row ([4e9e439](https://github.com/Jerry2d3d/css-is-awesome/commit/4e9e439839e104a779708a2e66e978562ea7ee72))
|
|
19
|
+
* **mobile:** use real spacing-scale keys; palette icon joins the theme box ([1c7a331](https://github.com/Jerry2d3d/css-is-awesome/commit/1c7a331d9bd6cd702bb60de060654eb563ac3191))
|
|
20
|
+
|
|
1
21
|
# [1.1.0](https://github.com/Jerry2d3d/css-is-awesome/compare/v1.0.0...v1.1.0) (2026-09-01)
|
|
2
22
|
|
|
3
23
|
|
package/README.md
CHANGED
|
@@ -2,11 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
> A tiny, mixin-first SCSS design system with one-file theme swap.
|
|
4
4
|
|
|
5
|
-
[](https://github.com/Jerry2d3d/css-is-awesome/actions/workflows/ci.yml) [](./package.json) [](./LICENSE) [](https://github.com/semantic-release/semantic-release)
|
|
5
|
+
[](https://www.npmjs.com/package/css-is-awesome) [](https://github.com/Jerry2d3d/css-is-awesome/actions/workflows/ci.yml) [](./package.json) [](./LICENSE) [](https://github.com/semantic-release/semantic-release)
|
|
6
6
|
|
|
7
7
|
**Bring your own selectors. We bring the design system.** One CSS file per theme — drop it in and the page restyles, no markup change. 24 themes. Zero JavaScript in the npm package. Six browser-native interactive components. Small enough to read in an afternoon.
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
**Docs:** [jerry2d3d.github.io/css-is-awesome](https://jerry2d3d.github.io/css-is-awesome/) · **Install:** `npm install css-is-awesome`
|
|
10
|
+
|
|
11
|
+
> **Shipped in 1.0.0:** a **recipes book** for building any component in any framework using cia mixins — `dialog`, `combobox` and `print-to-pdf` today, with `datepicker`, `data-table` and `command-palette` queued. AI agents read recipes via MCP and generate components in your stack; humans read them at [`/docs/recipes`](https://jerry2d3d.github.io/css-is-awesome/docs/recipes/).
|
|
10
12
|
|
|
11
13
|
## For AI agents — start here
|
|
12
14
|
|
|
@@ -31,7 +33,7 @@ npm install -D @modelcontextprotocol/sdk zod # required — npm will NOT insta
|
|
|
31
33
|
|
|
32
34
|
The SDK and `zod` are declared as *optional* peer dependencies, so a plain `npm install css-is-awesome` skips them and the server exits with `@modelcontextprotocol/sdk is not installed`. Install both. `npx css-is-awesome-mcp` does **not** work around this — npx fetches the package but not its optional peers.
|
|
33
35
|
|
|
34
|
-
Why it matters more here than for older frameworks: no model has memorised cia's API the way it has memorised Tailwind's class names. Without `llm.txt` or MCP, an agent will confidently invent a Tailwind-shaped API. With them, it reads the real thing. Details at [`/docs/mcp`](
|
|
36
|
+
Why it matters more here than for older frameworks: no model has memorised cia's API the way it has memorised Tailwind's class names. Without `llm.txt` or MCP, an agent will confidently invent a Tailwind-shaped API. With them, it reads the real thing. Details at [`/docs/mcp`](https://jerry2d3d.github.io/css-is-awesome/docs/mcp/).
|
|
35
37
|
|
|
36
38
|
## Three ways to use it
|
|
37
39
|
|
|
@@ -57,7 +59,7 @@ npm install -D sass
|
|
|
57
59
|
<link rel="stylesheet" href="/cia/themes/boilerplate/theme.css">
|
|
58
60
|
```
|
|
59
61
|
|
|
60
|
-
Author your own class names; the mixin handles the styling. Mixins for buttons, forms, layout, typography, color, motion, plus the six zero-JS components: `accordion`, `modal`, `tooltip`, `dropdown`, `tabs`, `copy-button` — plus print-to-PDF via a pure-CSS `@media print` layer. Full reference at [`/docs/mixins`](https://github.
|
|
62
|
+
Author your own class names; the mixin handles the styling. Mixins for buttons, forms, layout, typography, color, motion, plus the six zero-JS components: `accordion`, `modal`, `tooltip`, `dropdown`, `tabs`, `copy-button` — plus print-to-PDF via a pure-CSS `@media print` layer. Full reference at [`/docs/mixins`](https://jerry2d3d.github.io/css-is-awesome/docs/mixins/).
|
|
61
63
|
|
|
62
64
|
**Two imports, two jobs.** Emit the tokens once from your root/global stylesheet (`@use 'css-is-awesome';` or `<link>` a theme file), then import the **zero-emit authoring barrel** in each component stylesheet:
|
|
63
65
|
|
|
@@ -120,7 +122,7 @@ One line styles the whole site. Zero classes. Wrapped in `:where()` (specificity
|
|
|
120
122
|
<link rel="stylesheet" href="/themes/terminal-dark/theme.css" media="(prefers-color-scheme: dark)">
|
|
121
123
|
```
|
|
122
124
|
|
|
123
|
-
Newspaper by day, hacker terminal by night. No JS, no mixin — pure browser behavior. Most design systems give you dark mode; cia lets you ship a second brand at night. See [`/docs/themes/pairing`](
|
|
125
|
+
Newspaper by day, hacker terminal by night. No JS, no mixin — pure browser behavior. Most design systems give you dark mode; cia lets you ship a second brand at night. See [`/docs/themes/pairing`](https://jerry2d3d.github.io/css-is-awesome/docs/themes/pairing/).
|
|
124
126
|
|
|
125
127
|
Each theme is one file of CSS custom properties. Tokens only — no component rules. See `public/themes/<name>/theme.css` for the compiled output and `scss/themes/<name>.scss` for the sources. Full contract documented in [THEMING.md](./THEMING.md).
|
|
126
128
|
|
|
@@ -147,7 +149,7 @@ node scripts/theme-validator.js public/themes/midnight/theme.css
|
|
|
147
149
|
# <link rel="stylesheet" href="/themes/midnight/theme.css">
|
|
148
150
|
```
|
|
149
151
|
|
|
150
|
-
Full authoring walkthrough: [`/docs/authoring/themes`](
|
|
152
|
+
Full authoring walkthrough: [`/docs/authoring/themes`](https://jerry2d3d.github.io/css-is-awesome/docs/authoring/themes/). The contract (127 required + 36 optional tokens) is at [`scripts/theme-contract.json`](./scripts/theme-contract.json).
|
|
151
153
|
|
|
152
154
|
## Token contract
|
|
153
155
|
|
|
@@ -200,9 +202,9 @@ Missing font files don't error, so a silent tofu box is the failure mode. If you
|
|
|
200
202
|
|
|
201
203
|
cia ships **no component library** — deliberately. Interactive patterns arrive as *recipes*: portable markdown files at [`scss/recipes/`](./scss/recipes/) that give you the correct HTML, the `cia.X` mixin calls to style it, and an a11y checklist graded against WCAG 2.2 AA. Copy the pattern into your own framework; you own the component, cia owns the styling and the accessibility homework.
|
|
202
204
|
|
|
203
|
-
**Shipped:** `dialog`, `combobox`, `print-to-pdf`. Queued
|
|
205
|
+
**Shipped:** `dialog`, `combobox`, `print-to-pdf`. Queued next: `datepicker`, `data-table`, `command-palette`.
|
|
204
206
|
|
|
205
|
-
Humans read them at [`/docs/recipes`](
|
|
207
|
+
Humans read them at [`/docs/recipes`](https://jerry2d3d.github.io/css-is-awesome/docs/recipes/); AI agents pull them over MCP with `list_recipes` / `get_recipe`.
|
|
206
208
|
|
|
207
209
|
## Migrating from Tailwind or Bootstrap
|
|
208
210
|
|
|
@@ -213,7 +215,7 @@ npx cia migrate tailwind ./tailwind.config.js # auto-detects tailwind.config.*
|
|
|
213
215
|
npx cia migrate bootstrap ./scss/_variables.scss
|
|
214
216
|
```
|
|
215
217
|
|
|
216
|
-
Both accept `--help` for the full option list. Prose walkthroughs live at [`/docs/migration-tailwind`](
|
|
218
|
+
Both accept `--help` for the full option list. Prose walkthroughs live at [`/docs/migration-tailwind`](https://jerry2d3d.github.io/css-is-awesome/docs/migration-tailwind/) and [`/docs/migration-bootstrap`](https://jerry2d3d.github.io/css-is-awesome/docs/migration-bootstrap/).
|
|
217
219
|
|
|
218
220
|
## Print / PDF (zero JS)
|
|
219
221
|
|
|
@@ -252,7 +254,7 @@ The scope is kept narrow: 8 `!important` declarations, all inside `@media print`
|
|
|
252
254
|
|
|
253
255
|
## MCP server (for AI agents)
|
|
254
256
|
|
|
255
|
-
cia ships a Model Context Protocol stdio server (JSON-RPC over stdio, protocol `2024-11-05`) at [`mcp/server.cjs`](./mcp/server.cjs), exposed as the `css-is-awesome-mcp` bin. It's in the `files` manifest, so it lands in every consumer's `node_modules`. Any MCP-aware client (Claude Code, Cursor, Aider, Gemini, Copilot) can then query cia's real design system — mixin signatures, tokens, themes, recipes — instead of guessing, without grep-walking the repo. Exposes **30 tools** across 8 families (themes, mixins, functions, tokens · 127 required of them, animations, components, recipes, doc readers) plus `assemble_prompt` (context bundles) and `resolve_size` (snap design px values to cia's 4px grid). Full reference: [`/docs/mcp`](
|
|
257
|
+
cia ships a Model Context Protocol stdio server (JSON-RPC over stdio, protocol `2024-11-05`) at [`mcp/server.cjs`](./mcp/server.cjs), exposed as the `css-is-awesome-mcp` bin. It's in the `files` manifest, so it lands in every consumer's `node_modules`. Any MCP-aware client (Claude Code, Cursor, Aider, Gemini, Copilot) can then query cia's real design system — mixin signatures, tokens, themes, recipes — instead of guessing, without grep-walking the repo. Exposes **30 tools** across 8 families (themes, mixins, functions, tokens · 127 required of them, animations, components, recipes, doc readers) plus `assemble_prompt` (context bundles) and `resolve_size` (snap design px values to cia's 4px grid). Full reference: [`/docs/mcp`](https://jerry2d3d.github.io/css-is-awesome/docs/mcp/).
|
|
256
258
|
|
|
257
259
|
**Setup is two steps — do both, or the server won't start.**
|
|
258
260
|
|
|
@@ -277,7 +279,9 @@ cia ships a Model Context Protocol stdio server (JSON-RPC over stdio, protocol `
|
|
|
277
279
|
|
|
278
280
|
Equivalent explicit path: `"command": "node", "args": ["node_modules/css-is-awesome/mcp/server.cjs"]`.
|
|
279
281
|
|
|
280
|
-
##
|
|
282
|
+
## Docs site
|
|
283
|
+
|
|
284
|
+
The docs site is live at **https://jerry2d3d.github.io/css-is-awesome/** — it auto-deploys from `main` via GitHub Pages. To run it locally:
|
|
281
285
|
|
|
282
286
|
```bash
|
|
283
287
|
git clone https://github.com/Jerry2d3d/css-is-awesome.git
|
|
@@ -333,7 +337,7 @@ Eleven checks, all gated in CI on every PR. Each one exists because the failure
|
|
|
333
337
|
|
|
334
338
|
**Known gaps**, stated plainly: **a11y runs on routes, not component states** — axe checks a set of pages; individual component states are not swept. (Cross-engine coverage used to be the gap here; the suite now runs chromium, firefox and webkit, which matters because cia leans on `light-dark()`, `:has()`, `[popover]` and `mask`.)
|
|
335
339
|
|
|
336
|
-
Full detail: [`/docs/testing`](
|
|
340
|
+
Full detail: [`/docs/testing`](https://jerry2d3d.github.io/css-is-awesome/docs/testing/).
|
|
337
341
|
|
|
338
342
|
## Size (gzipped)
|
|
339
343
|
|
|
@@ -348,7 +352,7 @@ Full detail: [`/docs/testing`](./src/app/docs/testing/page.tsx).
|
|
|
348
352
|
|
|
349
353
|
## Status
|
|
350
354
|
|
|
351
|
-
**
|
|
355
|
+
**Stable, [published on npm](https://www.npmjs.com/package/css-is-awesome)** (first published 2026-09-01). The mixin API, functions, token contract, and theme architecture are stable and under strict SemVer — breaking changes require a major bump. See [`VERSIONING.md`](./VERSIONING.md) for the policy.
|
|
352
356
|
|
|
353
357
|
The 1.0 surface is the v0.8 mixin-first reframe — twelve mixin renames, theme system collapsed to 8 single-file theme families, six zero-JS components, intrinsic-layout vocabulary, opt-in utilities — plus the recipes book, the Tailwind/Bootstrap migration on-ramp, print/PDF support, and the 30-tool MCP server. The npm package ships ZERO JavaScript by hard rule.
|
|
354
358
|
|
|
@@ -385,7 +385,7 @@ Library defaults emit under **`:where(:root)`** (specificity 0,0,0), so any them
|
|
|
385
385
|
|
|
386
386
|
**Never hand-edit `public/theme.css` or `public/themes/**/theme.css`.** They are generated from `scss/themes/*.scss` and gated by `check:theme-drift`.
|
|
387
387
|
|
|
388
|
-
See `/docs/authoring/themes` for the full guide.
|
|
388
|
+
See `/docs/authoring/themes` on the docs site (https://jerry2d3d.github.io/css-is-awesome/docs/authoring/themes/) for the full guide.
|
|
389
389
|
|
|
390
390
|
### Spacing is themeable — set the numbered step
|
|
391
391
|
|
|
@@ -477,14 +477,14 @@ A recipe is a markdown file at `scss/recipes/<name>.md` carrying:
|
|
|
477
477
|
- an a11y checklist graded against WCAG 2.2 AA
|
|
478
478
|
- framework-neutral notes so it ports to React / Vue / Svelte / vanilla
|
|
479
479
|
|
|
480
|
-
**Shipped today:** `dialog`, `combobox`, `print-to-pdf`. Queued
|
|
480
|
+
**Shipped today:** `dialog`, `combobox`, `print-to-pdf`. Queued next:
|
|
481
481
|
`datepicker`, `data-table`, `command-palette`.
|
|
482
482
|
|
|
483
483
|
How to reach them:
|
|
484
484
|
|
|
485
485
|
- **AI agents** — `list_recipes` / `get_recipe(name)` over MCP. Prefer this over
|
|
486
486
|
writing an interactive pattern from memory; the recipe encodes the a11y work.
|
|
487
|
-
- **Humans** — `/docs/recipes
|
|
487
|
+
- **Humans** — `/docs/recipes` on the docs site (https://jerry2d3d.github.io/css-is-awesome/docs/recipes/), or read the markdown directly.
|
|
488
488
|
|
|
489
489
|
Note the two different things living in `scss/recipes/`: `<slug>.md` files are
|
|
490
490
|
*pattern* recipes (read them, don't import them), while `_<slug>.scss` files —
|
package/dist/tokens.d.ts
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "css-is-awesome",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.0",
|
|
4
4
|
"description": "A token-driven SCSS design system with light/dark theming, semantic color tokens, and a 800+ LOC mixin API.",
|
|
5
5
|
"homepage": "https://github.com/Jerry2d3d/css-is-awesome#readme",
|
|
6
6
|
"bugs": {
|
|
@@ -98,8 +98,8 @@
|
|
|
98
98
|
"dev": "next dev -p 5173",
|
|
99
99
|
"build": "next build",
|
|
100
100
|
"start": "next start -p 5173",
|
|
101
|
-
"lint": "
|
|
102
|
-
"lint:fix": "
|
|
101
|
+
"lint": "eslint .",
|
|
102
|
+
"lint:fix": "eslint . --fix",
|
|
103
103
|
"lint:scss": "stylelint \"scss/**/*.scss\"",
|
|
104
104
|
"lint:scss:fix": "stylelint \"scss/**/*.scss\" --fix",
|
|
105
105
|
"build:css": "sass scss/main.scss dist/css-is-awesome.css --no-source-map",
|
|
@@ -176,20 +176,20 @@
|
|
|
176
176
|
"@semantic-release/commit-analyzer": "^13.0.0",
|
|
177
177
|
"@semantic-release/git": "^10.0.1",
|
|
178
178
|
"@semantic-release/github": "^11.0.0",
|
|
179
|
-
"@semantic-release/npm": "^
|
|
179
|
+
"@semantic-release/npm": "^13.1.5",
|
|
180
180
|
"@semantic-release/release-notes-generator": "^14.0.1",
|
|
181
181
|
"@types/node": "^22.0.0",
|
|
182
182
|
"@types/react": "^19.0.0",
|
|
183
183
|
"@types/react-dom": "^19.0.0",
|
|
184
184
|
"eslint": "^9.17.0",
|
|
185
|
-
"eslint-config-next": "^
|
|
185
|
+
"eslint-config-next": "^16.3.4",
|
|
186
186
|
"jiti": "^2.7.0",
|
|
187
187
|
"marked": "^15.0.12",
|
|
188
|
-
"next": "^
|
|
188
|
+
"next": "^16.3.4",
|
|
189
189
|
"react": "^19.0.0",
|
|
190
190
|
"react-dom": "^19.0.0",
|
|
191
191
|
"sass": "^1.97.1",
|
|
192
|
-
"semantic-release": "^
|
|
192
|
+
"semantic-release": "^25.0.9",
|
|
193
193
|
"serve": "^14.2.6",
|
|
194
194
|
"stylelint": "^17.8.0",
|
|
195
195
|
"stylelint-config-standard-scss": "^17.0.0",
|