@expressivecss/expressive 0.7.0 → 0.9.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.
Files changed (122) hide show
  1. package/CHANGELOG.md +1313 -1
  2. package/README.md +76 -30
  3. package/dist/css/expressive.css +4896 -1777
  4. package/dist/css/expressive.css.map +1 -1
  5. package/dist/css/expressive.min.css +1 -1
  6. package/dist/css/expressive.min.css.map +1 -1
  7. package/dist/fonts/LICENSE-material-symbols +93 -0
  8. package/dist/fonts/LICENSE-noto-sans +93 -0
  9. package/dist/fonts/LICENSE-roboto +93 -0
  10. package/dist/fonts/material-symbols-outlined.woff2 +0 -0
  11. package/dist/fonts/material-symbols-rounded.woff2 +0 -0
  12. package/dist/fonts/material-symbols-sharp.woff2 +0 -0
  13. package/dist/fonts/noto-sans-latin-400.woff2 +0 -0
  14. package/dist/fonts/noto-sans-latin-500.woff2 +0 -0
  15. package/dist/fonts/roboto-latin-400.woff2 +0 -0
  16. package/dist/fonts/roboto-latin-500.woff2 +0 -0
  17. package/dist/js/expressive.cjs +1673 -1338
  18. package/dist/js/expressive.cjs.map +4 -4
  19. package/dist/js/expressive.js +1673 -1338
  20. package/dist/js/expressive.js.map +4 -4
  21. package/dist/js/expressive.min.js +13 -13
  22. package/dist/js/expressive.min.js.map +4 -4
  23. package/dist/js/expressive.mjs +1673 -1338
  24. package/dist/js/expressive.mjs.map +4 -4
  25. package/dist/types/behaviors/bottomSheets.d.ts +19 -11
  26. package/dist/types/behaviors/sheetDrag.d.ts +40 -0
  27. package/dist/types/behaviors/sideSheets.d.ts +2 -9
  28. package/dist/types/components/appBar.d.ts +26 -0
  29. package/dist/types/components/autocomplete.d.ts +15 -3
  30. package/dist/types/components/buttonGroup.d.ts +39 -0
  31. package/dist/types/components/buttons.d.ts +5 -1
  32. package/dist/types/components/cards.d.ts +11 -13
  33. package/dist/types/components/carousel.d.ts +87 -53
  34. package/dist/types/components/chips.d.ts +21 -1
  35. package/dist/types/components/expandingCard.d.ts +31 -0
  36. package/dist/types/components/index.d.ts +23 -20
  37. package/dist/types/components/lightbox.d.ts +1 -0
  38. package/dist/types/components/menu.d.ts +11 -1
  39. package/dist/types/components/{sidenav.d.ts → navigationDrawer.d.ts} +16 -16
  40. package/dist/types/components/registry.d.ts +18 -8
  41. package/dist/types/components/slider.d.ts +26 -85
  42. package/dist/types/components/snackbar.d.ts +20 -5
  43. package/dist/types/components/tabs.d.ts +12 -0
  44. package/dist/types/components/timepicker.d.ts +12 -10
  45. package/dist/types/components/tooltip.d.ts +1 -0
  46. package/dist/types/core/utils.d.ts +64 -53
  47. package/dist/types/index.d.ts +8 -9
  48. package/package.json +39 -3
  49. package/src/sass/README.md +61 -11
  50. package/src/sass/abstracts/_breakpoints.scss +17 -19
  51. package/src/sass/abstracts/_mixins.scss +155 -21
  52. package/src/sass/abstracts/_variables.scss +69 -5
  53. package/src/sass/base/_fonts.scss +63 -0
  54. package/src/sass/base/_global.scss +6 -24
  55. package/src/sass/base/_grid.scss +15 -12
  56. package/src/sass/base/_normalize.scss +34 -38
  57. package/src/sass/base/_typography.scss +4 -18
  58. package/src/sass/components/_badges.scss +3 -5
  59. package/src/sass/components/_banners.scss +298 -0
  60. package/src/sass/components/_bottom-app-bar.scss +180 -0
  61. package/src/sass/components/_bottom-sheet.scss +12 -4
  62. package/src/sass/components/_button-groups.scss +358 -0
  63. package/src/sass/components/_buttons.scss +245 -92
  64. package/src/sass/components/_cards.scss +514 -78
  65. package/src/sass/components/_carousel.scss +562 -68
  66. package/src/sass/components/_chips.scss +64 -5
  67. package/src/sass/components/_datepicker.scss +24 -24
  68. package/src/sass/components/_dialog.scss +17 -11
  69. package/src/sass/components/_drag-handle.scss +130 -0
  70. package/src/sass/components/_expanding-card.scss +226 -0
  71. package/src/sass/components/_fab-menu.scss +232 -0
  72. package/src/sass/components/_floating-sheet.scss +86 -0
  73. package/src/sass/components/_icon-buttons.scss +172 -0
  74. package/src/sass/components/_icons-material-design.scss +22 -10
  75. package/src/sass/components/_index.scss +22 -6
  76. package/src/sass/components/_list.scss +16 -13
  77. package/src/sass/components/_loading-indicator.scss +106 -0
  78. package/src/sass/components/_menu.scss +335 -61
  79. package/src/sass/components/_navbar.scss +245 -45
  80. package/src/sass/components/_navigation-bar.scss +22 -11
  81. package/src/sass/components/{_sidenav.scss → _navigation-drawer.scss} +123 -33
  82. package/src/sass/components/_navigation-rail.scss +31 -23
  83. package/src/sass/components/_page-footer.scss +19 -16
  84. package/src/sass/components/_pagination.scss +24 -6
  85. package/src/sass/components/_panes.scss +52 -11
  86. package/src/sass/components/{_preloader.scss → _progress.scss} +11 -3
  87. package/src/sass/components/_scrim.scss +37 -0
  88. package/src/sass/components/_search.scss +259 -0
  89. package/src/sass/components/_segmented-buttons.scss +188 -0
  90. package/src/sass/components/_side-sheet.scss +2 -2
  91. package/src/sass/components/_snackbar.scss +20 -15
  92. package/src/sass/components/_split-button.scss +196 -0
  93. package/src/sass/components/_tabs.scss +7 -8
  94. package/src/sass/components/_timepicker.scss +67 -58
  95. package/src/sass/components/_toolbar.scss +206 -80
  96. package/src/sass/components/_transitions.scss +8 -1
  97. package/src/sass/components/forms/_checkboxes.scss +49 -12
  98. package/src/sass/components/forms/_fieldset.scss +4 -4
  99. package/src/sass/components/forms/_file-input.scss +8 -1
  100. package/src/sass/components/forms/_index.scss +1 -1
  101. package/src/sass/components/forms/_input-fields.scss +50 -44
  102. package/src/sass/components/forms/_radio-buttons.scss +42 -10
  103. package/src/sass/components/forms/_select.scss +38 -1
  104. package/src/sass/components/forms/{_range.scss → _slider.scss} +8 -9
  105. package/src/sass/components/forms/_switches.scss +6 -7
  106. package/src/sass/expressive.scss +5 -0
  107. package/src/sass/tokens/_index.scss +4 -1
  108. package/src/sass/tokens/_reference.scss +70 -61
  109. package/src/sass/tokens/_state.scss +24 -0
  110. package/src/sass/tokens/_theme.scss +6 -3
  111. package/src/sass/tokens/_vibrant.scss +76 -0
  112. package/src/sass/utilities/_colors.scss +14 -1
  113. package/src/sass/utilities/_helpers.scss +5 -5
  114. package/src/sass/utilities/_visibility.scss +48 -26
  115. package/dist/types/behaviors/waves.d.ts +0 -15
  116. package/dist/types/components/parallax.d.ts +0 -16
  117. package/dist/types/components/range.d.ts +0 -43
  118. package/dist/types/core/bounding.d.ts +0 -6
  119. package/dist/types/core/edges.d.ts +0 -6
  120. package/src/sass/components/_parallax.scss +0 -104
  121. package/src/sass/components/_pulse.scss +0 -37
  122. package/src/sass/components/_slider.scss +0 -129
package/README.md CHANGED
@@ -4,7 +4,7 @@ ExpressiveCSS is a Material Design 3 front-end framework built with Sass and
4
4
  TypeScript. It provides theme tokens, layout and utility classes, styled form
5
5
  controls, and JavaScript components in browser, ES module, and CommonJS builds.
6
6
 
7
- > ExpressiveCSS is currently at version `0.7.0` and under active development.
7
+ > ExpressiveCSS is currently at version `0.9.0` and under active development.
8
8
 
9
9
  Documentation: [www.expressivecss.com](https://www.expressivecss.com)
10
10
 
@@ -23,17 +23,45 @@ Documentation: [www.expressivecss.com](https://www.expressivecss.com)
23
23
 
24
24
  - [Node.js](https://nodejs.org/) 20 or newer
25
25
  - npm
26
- - Python 3.14 or newer and [uv](https://docs.astral.sh/uv/) to run the local
27
- documentation site
28
26
 
29
- Python is not required to build or use the framework itself.
27
+ Use Node 24 for repository development, selected by `.nvmrc`. The framework's
28
+ runtime compatibility range remains unchanged. See [CONTRIBUTING.md](CONTRIBUTING.md)
29
+ for setup, checks, and the community workflow.
30
+
31
+ ## MCP server for AI workflows
32
+
33
+ This repository includes a local MCP server at `mcp/expressivecss/` that exposes an
34
+ ExpressiveCSS design-to-QA workflow:
35
+
36
+ - Setup Expert
37
+ - Rules Enforcer
38
+ - Creative Director
39
+ - Page Arcjitect (`page_arcjitect`, with conventional `page_architect` compatibility)
40
+ - Component Syntax Expert
41
+ - Quality Inspector
42
+
43
+ The MCP entry point is `mcp/expressivecss/server.js`, with sample config in
44
+ `mcp/expressivecss/mcp.json`.
45
+
46
+ Quick start:
47
+
48
+ ```sh
49
+ cd mcp/expressivecss
50
+ npm ci
51
+ node server.js
52
+ ```
53
+
54
+ To use it with your MCP client, point the command to:
55
+
56
+ - `node mcp/expressivecss/server.js`
57
+ - or `node ./server.js` from `mcp/expressivecss` as the working directory.
30
58
 
31
59
  ## Getting started
32
60
 
33
61
  Clone the repository and install the JavaScript dependencies:
34
62
 
35
63
  ```sh
36
- npm install
64
+ npm ci
37
65
  npm run build
38
66
  ```
39
67
 
@@ -44,6 +72,14 @@ dist/
44
72
  ├── css/
45
73
  │ ├── expressive.css
46
74
  │ └── expressive.min.css
75
+ ├── fonts/
76
+ │ ├── material-symbols-outlined.woff2
77
+ │ ├── material-symbols-rounded.woff2
78
+ │ ├── material-symbols-sharp.woff2
79
+ │ ├── roboto-latin-400.woff2
80
+ │ ├── roboto-latin-500.woff2
81
+ │ ├── noto-sans-latin-400.woff2
82
+ │ └── noto-sans-latin-500.woff2
47
83
  ├── js/
48
84
  │ ├── expressive.cjs
49
85
  │ ├── expressive.js
@@ -52,7 +88,9 @@ dist/
52
88
  └── types/
53
89
  ```
54
90
 
55
- Source maps are produced alongside the CSS and JavaScript bundles.
91
+ Source maps are produced alongside the CSS and JavaScript bundles. The
92
+ stylesheet loads fonts from `../fonts/`, so keep `dist/fonts/` next to
93
+ `dist/css/`.
56
94
 
57
95
  ## Usage
58
96
 
@@ -138,37 +176,44 @@ Available npm commands include:
138
176
  | `npm run build:js` | Build ESM, CommonJS, and browser bundles |
139
177
  | `npm run build:types` | Generate TypeScript declarations |
140
178
  | `npm run watch` | Watch Sass and TypeScript sources |
179
+ | `npm run verify` | Build, typecheck, test, check generated data, and verify docs |
141
180
  | `npm run typecheck` | Check the TypeScript source without emitting files |
142
- | `npm test` | Build the ESM bundle and run the test suite |
181
+ | `npm test` | Build all JavaScript bundles and CSS, then run the test suite |
143
182
  | `npm run clean` | Remove generated build output |
183
+ | `npm run docs:dev` | Build the framework, then watch it beside the docs server |
184
+ | `npm run docs:build` | Build the documentation site into `_site/` and verify it |
185
+ | `npm run docs:preview` | Serve what `docs:build` wrote |
144
186
 
145
- Run the local documentation and smoke-test site in a second terminal:
187
+ Run the documentation and smoke-test site:
146
188
 
147
189
  ```sh
148
- uv sync
149
- uv run python docs/app.py
190
+ npm run docs:dev
150
191
  ```
151
192
 
152
- Then open `http://127.0.0.1:5000`. The Flask app serves assets directly from
153
- `dist/`, so changes made by `npm run watch` appear after a browser refresh.
193
+ This builds the framework, then starts the Sass and esbuild watchers alongside
194
+ the documentation server. Refresh the browser to see source changes. Astro
195
+ prints the server URL.
154
196
 
155
197
  It is the same site published at
156
- [www.expressivecss.com](https://www.expressivecss.com), built from `docs/`.
198
+ [www.expressivecss.com](https://www.expressivecss.com), authored in
199
+ `docs/src/`.
157
200
 
158
201
  ## Project structure
159
202
 
160
- ```text
161
- src/
162
- ├── sass/ Design tokens, utilities, base styles, and component styles
163
- └── ts/ Core APIs, behaviors, plugins, and interactive components
164
- docs/ Local Flask documentation and build smoke test
165
- tests/ Node test runner and jsdom tests
166
- dist/ Generated distributable files
167
- ```
168
-
169
- See [`src/sass/README.md`](src/sass/README.md) for Sass architecture and
170
- [`src/ts/README.md`](src/ts/README.md) for component conventions and testing
171
- guidance.
203
+ | Location | Purpose | Tracked? |
204
+ | --- | --- | --- |
205
+ | `src/sass`, `src/ts` | Framework source | Yes |
206
+ | `docs/src` | Astro documentation and examples | Yes |
207
+ | `mcp/expressivecss` | Independently versioned MCP package | Yes |
208
+ | `skills/expressivecss` | Agent guidance and generated component references | Yes |
209
+ | `scripts`, `tests`, `visual` | Generators, verification, and test tooling | Source only |
210
+ | `semantics.json`, `llm.md`, `m3-guidelines.md` | Markup rules, API reference, design guidance | Yes |
211
+ | `SEMANTICS.md`, generated skill/MCP data | Derived files checked for drift | Yes |
212
+ | `dist`, `_site`, visual reports and caches | Build output | No |
213
+ | `.design-sync` | Optional external design previews | Configuration and source only |
214
+
215
+ See [Sass architecture](src/sass/README.md), [TypeScript conventions](src/ts/README.md),
216
+ and [development notes](docs/development-notes.md).
172
217
 
173
218
  ## Testing
174
219
 
@@ -185,8 +230,9 @@ behavior rather than geometry or visual transitions.
185
230
 
186
231
  ## Contributing
187
232
 
188
- Keep generated files out of commits, add tests for behavior changes, and run
189
- both the test suite and type checker before submitting a change. New JavaScript
190
- components must be exported from `src/ts/components/index.ts`; components that
191
- support automatic initialization must also be registered in
192
- `src/ts/components/registry.ts`.
233
+ Start with [CONTRIBUTING.md](CONTRIBUTING.md). Use
234
+ [Discussions](https://github.com/BaezFJ/ExpressiveCSS/discussions) for questions and
235
+ proposals, and [Issues](https://github.com/BaezFJ/ExpressiveCSS/issues) for accepted
236
+ work and reproducible bugs. Read our [governance](GOVERNANCE.md),
237
+ [code of conduct](CODE_OF_CONDUCT.md), [security policy](SECURITY.md), and
238
+ [release workflow](RELEASING.md).