@expressivecss/expressive 0.13.1 → 0.14.1
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/CHANGELOG.md +109 -1
- package/README.md +2 -1
- package/dist/css/expressive.css +234 -72
- package/dist/css/expressive.css.map +1 -1
- package/dist/css/expressive.min.css +1 -1
- package/dist/css/expressive.min.css.map +1 -1
- package/dist/js/chunks/{chunk-55IA2XUC.mjs → chunk-3GVFZ4XO.mjs} +3 -3
- package/dist/js/chunks/{chunk-3CLXLPYS.mjs → chunk-4HZMB7LI.mjs} +22 -8
- package/dist/js/chunks/chunk-4HZMB7LI.mjs.map +7 -0
- package/dist/js/chunks/{chunk-DTKR54I6.mjs → chunk-4KMNFIFZ.mjs} +2 -2
- package/dist/js/chunks/{chunk-K4CJCRGE.mjs → chunk-4TKTLGEM.mjs} +2 -2
- package/dist/js/chunks/{chunk-3VOK6J7U.mjs → chunk-5BKHWHYY.mjs} +13 -6
- package/dist/js/chunks/chunk-5BKHWHYY.mjs.map +7 -0
- package/dist/js/chunks/{chunk-PLYXLSH3.mjs → chunk-5HQSGDZ5.mjs} +18 -9
- package/dist/js/chunks/chunk-5HQSGDZ5.mjs.map +7 -0
- package/dist/js/chunks/{chunk-LWBQIX5J.mjs → chunk-A7ALMYUR.mjs} +41 -44
- package/dist/js/chunks/chunk-A7ALMYUR.mjs.map +7 -0
- package/dist/js/chunks/chunk-BG6ZRB5H.mjs +154 -0
- package/dist/js/chunks/chunk-BG6ZRB5H.mjs.map +7 -0
- package/dist/js/chunks/{chunk-DLWYKFEI.mjs → chunk-CUQPB25U.mjs} +3 -3
- package/dist/js/chunks/{chunk-6WLSDZ4O.mjs → chunk-DAIU5SLG.mjs} +2 -2
- package/dist/js/chunks/{chunk-VTLBW7QS.mjs → chunk-FS7XY3HT.mjs} +2 -2
- package/dist/js/chunks/{chunk-WJXDBPXQ.mjs → chunk-GIW4K4SE.mjs} +8 -12
- package/dist/js/chunks/chunk-GIW4K4SE.mjs.map +7 -0
- package/dist/js/chunks/{chunk-LNCCYGPC.mjs → chunk-GUB3TNO2.mjs} +6 -5
- package/dist/js/chunks/chunk-GUB3TNO2.mjs.map +7 -0
- package/dist/js/chunks/{chunk-XH6BEEMY.mjs → chunk-GZKEFWPM.mjs} +39 -31
- package/dist/js/chunks/chunk-GZKEFWPM.mjs.map +7 -0
- package/dist/js/chunks/{chunk-QKWPQK5N.mjs → chunk-ILP3PDTL.mjs} +11 -3
- package/dist/js/chunks/chunk-ILP3PDTL.mjs.map +7 -0
- package/dist/js/chunks/{chunk-U2OTHOTI.mjs → chunk-JIDMQGK6.mjs} +3 -2
- package/dist/js/chunks/{chunk-U2OTHOTI.mjs.map → chunk-JIDMQGK6.mjs.map} +2 -2
- package/dist/js/chunks/chunk-KBNN3QDH.mjs +7 -0
- package/dist/js/chunks/{chunk-4PWAPV6F.mjs.map → chunk-KBNN3QDH.mjs.map} +1 -1
- package/dist/js/chunks/{chunk-NNYP33NB.mjs → chunk-KHV6DZXX.mjs} +5 -4
- package/dist/js/chunks/chunk-KHV6DZXX.mjs.map +7 -0
- package/dist/js/chunks/{chunk-XGHORT7J.mjs → chunk-KY6U46SM.mjs} +3 -3
- package/dist/js/chunks/{chunk-CKQP6P76.mjs → chunk-LRZMJZ3T.mjs} +4 -3
- package/dist/js/chunks/chunk-LRZMJZ3T.mjs.map +7 -0
- package/dist/js/chunks/{chunk-6OMRGML6.mjs → chunk-MNPROCZF.mjs} +4 -4
- package/dist/js/chunks/{chunk-6OMRGML6.mjs.map → chunk-MNPROCZF.mjs.map} +2 -2
- package/dist/js/chunks/{chunk-QV2JAWIZ.mjs → chunk-MZ6Z24BX.mjs} +3 -2
- package/dist/js/chunks/{chunk-QV2JAWIZ.mjs.map → chunk-MZ6Z24BX.mjs.map} +2 -2
- package/dist/js/chunks/{chunk-CCWDV5CR.mjs → chunk-NS2UMNZV.mjs} +2 -2
- package/dist/js/chunks/{chunk-UBLRRJ7N.mjs → chunk-PM655FXL.mjs} +2 -2
- package/dist/js/chunks/{chunk-IFXVDDDH.mjs → chunk-QERLECVU.mjs} +3 -3
- package/dist/js/chunks/{chunk-GZWPXXY6.mjs → chunk-QJABDLSD.mjs} +5 -2
- package/dist/js/chunks/chunk-QJABDLSD.mjs.map +7 -0
- package/dist/js/chunks/{chunk-UNEMYWEW.mjs → chunk-S3XDFGSZ.mjs} +2 -2
- package/dist/js/chunks/chunk-TBM3FT7G.mjs +398 -0
- package/dist/js/chunks/chunk-TBM3FT7G.mjs.map +7 -0
- package/dist/js/chunks/chunk-UEXCIMJZ.mjs +214 -0
- package/dist/js/chunks/chunk-UEXCIMJZ.mjs.map +7 -0
- package/dist/js/chunks/{chunk-P3G3QHII.mjs → chunk-VGZSAFTX.mjs} +11 -4
- package/dist/js/chunks/{chunk-P3G3QHII.mjs.map → chunk-VGZSAFTX.mjs.map} +2 -2
- package/dist/js/chunks/{chunk-UAEAQBRC.mjs → chunk-X7OCHZVF.mjs} +2 -2
- package/dist/js/chunks/{chunk-EC63CHXU.mjs → chunk-YMSXJON6.mjs} +7 -6
- package/dist/js/chunks/chunk-YMSXJON6.mjs.map +7 -0
- package/dist/js/chunks/{chunk-QVVEWBOF.mjs → chunk-Z2NRKI7R.mjs} +2 -2
- package/dist/js/chunks/{chunk-PIJ2TAR3.mjs → chunk-ZAS25YFD.mjs} +2 -2
- package/dist/js/chunks/chunk-ZKZKNSLC.mjs +1 -0
- package/dist/js/expressive.cjs +905 -117
- package/dist/js/expressive.cjs.map +4 -4
- package/dist/js/expressive.js +905 -117
- package/dist/js/expressive.js.map +4 -4
- package/dist/js/expressive.min.js +10 -10
- package/dist/js/expressive.min.js.map +4 -4
- package/dist/js/expressive.mjs +57 -45
- package/dist/js/expressive.mjs.map +1 -1
- package/dist/js/internal/behaviors/bottomSheets.mjs +3 -3
- package/dist/js/internal/behaviors/dialogs.mjs +2 -2
- package/dist/js/internal/behaviors/forms.mjs +2 -2
- package/dist/js/internal/behaviors/sheetDrag.mjs +2 -2
- package/dist/js/internal/behaviors/sideSheets.mjs +3 -3
- package/dist/js/internal/components/autocomplete.mjs +3 -3
- package/dist/js/internal/components/buttons.mjs +2 -2
- package/dist/js/internal/components/cards.mjs +2 -2
- package/dist/js/internal/components/carousel.mjs +2 -2
- package/dist/js/internal/components/chips.mjs +4 -4
- package/dist/js/internal/components/commandPalette.mjs +2 -2
- package/dist/js/internal/components/confetti.mjs +8 -0
- package/dist/js/internal/components/confetti.mjs.map +7 -0
- package/dist/js/internal/components/datepicker.mjs +5 -5
- package/dist/js/internal/components/expandingCard.mjs +2 -2
- package/dist/js/internal/components/heatmapChart.mjs +1 -1
- package/dist/js/internal/components/index.mjs +50 -38
- package/dist/js/internal/components/lightbox.mjs +2 -2
- package/dist/js/internal/components/mapView.mjs +9 -0
- package/dist/js/internal/components/mapView.mjs.map +7 -0
- package/dist/js/internal/components/menu.mjs +2 -2
- package/dist/js/internal/components/messageScroller.mjs +2 -2
- package/dist/js/internal/components/particles.mjs +8 -0
- package/dist/js/internal/components/particles.mjs.map +7 -0
- package/dist/js/internal/components/pieChart.mjs +1 -1
- package/dist/js/internal/components/questionnaire.mjs +2 -2
- package/dist/js/internal/components/registry.mjs +31 -28
- package/dist/js/internal/components/richTextEditor.mjs +2 -2
- package/dist/js/internal/components/scrollspy.mjs +1 -1
- package/dist/js/internal/components/select.mjs +3 -3
- package/dist/js/internal/components/slider.mjs +2 -2
- package/dist/js/internal/components/snackbar.mjs +2 -2
- package/dist/js/internal/components/tabs.mjs +3 -3
- package/dist/js/internal/components/timepicker.mjs +3 -3
- package/dist/js/internal/components/tooltip.mjs +2 -2
- package/dist/js/internal/core/utils.mjs +1 -1
- package/dist/js/internal/plugins/dockedDisplayPlugin.mjs +2 -2
- package/dist/js/modular.mjs +57 -45
- package/dist/types/behaviors/forms.d.ts +5 -0
- package/dist/types/components/carousel.d.ts +2 -0
- package/dist/types/components/confetti.d.ts +103 -0
- package/dist/types/components/datepicker.d.ts +2 -0
- package/dist/types/components/index.d.ts +3 -0
- package/dist/types/components/mapView.d.ts +151 -0
- package/dist/types/components/particles.d.ts +72 -0
- package/dist/types/components/pieChart.d.ts +3 -0
- package/dist/types/components/registry.d.ts +8 -0
- package/dist/types/components/slider.d.ts +1 -1
- package/dist/types/components/snackbar.d.ts +2 -0
- package/dist/types/components/tabs.d.ts +1 -1
- package/dist/types/modular.d.ts +1 -1
- package/dist/types/plugins/dockedDisplayPlugin.d.ts +3 -3
- package/package.json +2 -1
- package/src/sass/components/_buttons.scss +1 -1
- package/src/sass/components/_confetti.scss +14 -0
- package/src/sass/components/_index.scss +3 -0
- package/src/sass/components/_map.scss +188 -0
- package/src/sass/components/_particles.scss +14 -0
- package/src/sass/components/_table_of_contents.scss +3 -1
- package/src/sass/components/forms/_checkboxes.scss +7 -2
- package/dist/js/chunks/chunk-3CLXLPYS.mjs.map +0 -7
- package/dist/js/chunks/chunk-3VOK6J7U.mjs.map +0 -7
- package/dist/js/chunks/chunk-4PWAPV6F.mjs +0 -7
- package/dist/js/chunks/chunk-CKQP6P76.mjs.map +0 -7
- package/dist/js/chunks/chunk-EC63CHXU.mjs.map +0 -7
- package/dist/js/chunks/chunk-GZWPXXY6.mjs.map +0 -7
- package/dist/js/chunks/chunk-LNCCYGPC.mjs.map +0 -7
- package/dist/js/chunks/chunk-LWBQIX5J.mjs.map +0 -7
- package/dist/js/chunks/chunk-NNYP33NB.mjs.map +0 -7
- package/dist/js/chunks/chunk-NQLC3YMW.mjs +0 -1
- package/dist/js/chunks/chunk-PLYXLSH3.mjs.map +0 -7
- package/dist/js/chunks/chunk-QKWPQK5N.mjs.map +0 -7
- package/dist/js/chunks/chunk-WJXDBPXQ.mjs.map +0 -7
- package/dist/js/chunks/chunk-XH6BEEMY.mjs.map +0 -7
- /package/dist/js/chunks/{chunk-55IA2XUC.mjs.map → chunk-3GVFZ4XO.mjs.map} +0 -0
- /package/dist/js/chunks/{chunk-DTKR54I6.mjs.map → chunk-4KMNFIFZ.mjs.map} +0 -0
- /package/dist/js/chunks/{chunk-K4CJCRGE.mjs.map → chunk-4TKTLGEM.mjs.map} +0 -0
- /package/dist/js/chunks/{chunk-DLWYKFEI.mjs.map → chunk-CUQPB25U.mjs.map} +0 -0
- /package/dist/js/chunks/{chunk-6WLSDZ4O.mjs.map → chunk-DAIU5SLG.mjs.map} +0 -0
- /package/dist/js/chunks/{chunk-VTLBW7QS.mjs.map → chunk-FS7XY3HT.mjs.map} +0 -0
- /package/dist/js/chunks/{chunk-XGHORT7J.mjs.map → chunk-KY6U46SM.mjs.map} +0 -0
- /package/dist/js/chunks/{chunk-CCWDV5CR.mjs.map → chunk-NS2UMNZV.mjs.map} +0 -0
- /package/dist/js/chunks/{chunk-UBLRRJ7N.mjs.map → chunk-PM655FXL.mjs.map} +0 -0
- /package/dist/js/chunks/{chunk-IFXVDDDH.mjs.map → chunk-QERLECVU.mjs.map} +0 -0
- /package/dist/js/chunks/{chunk-UNEMYWEW.mjs.map → chunk-S3XDFGSZ.mjs.map} +0 -0
- /package/dist/js/chunks/{chunk-UAEAQBRC.mjs.map → chunk-X7OCHZVF.mjs.map} +0 -0
- /package/dist/js/chunks/{chunk-QVVEWBOF.mjs.map → chunk-Z2NRKI7R.mjs.map} +0 -0
- /package/dist/js/chunks/{chunk-PIJ2TAR3.mjs.map → chunk-ZAS25YFD.mjs.map} +0 -0
- /package/dist/js/chunks/{chunk-NQLC3YMW.mjs.map → chunk-ZKZKNSLC.mjs.map} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,107 @@ the format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
|
|
|
5
5
|
|
|
6
6
|
## [Unreleased]
|
|
7
7
|
|
|
8
|
+
## [0.14.1] - 2026-10-11
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
|
|
12
|
+
- The capability roadmap's source links point at a commit on `master`. The
|
|
13
|
+
0.14.0 links pointed at a pull request commit that the squash merge left
|
|
14
|
+
off `master`, which stopped the 0.14.0 release before it reached npm. A
|
|
15
|
+
test now fails when the pinned commit is not an ancestor of the checkout.
|
|
16
|
+
0.14.1 contains the 0.14.0 changes below.
|
|
17
|
+
|
|
18
|
+
## [0.14.0] - 2026-10-11
|
|
19
|
+
|
|
20
|
+
### Added
|
|
21
|
+
|
|
22
|
+
- The `expressivecss-review` agent skill reviews a page, template, fragment
|
|
23
|
+
or screenshot with five specialist subagents (theme and tokens, layout,
|
|
24
|
+
component markup, lifecycle and accessibility, framework rules). It reuses
|
|
25
|
+
the `expressivecss` guides, version resolver and `expressivecss-lint`, and
|
|
26
|
+
returns one report scored out of 100 with five 20-point sections. One or two
|
|
27
|
+
critical findings cap the score at 69, and three or more at 49.
|
|
28
|
+
- `.map` is an interactive map built on MapLibre. The page installs
|
|
29
|
+
`maplibre-gl` and passes the module to `MapView.init()`; ExpressiveCSS does
|
|
30
|
+
not bundle it. `.map-marker` children sit at their `data-lng-lat`, can open
|
|
31
|
+
a `.map-popup` named by `aria-controls`, show a `.map-marker-label` and be
|
|
32
|
+
dragged with `data-draggable`. `.map-controls` buttons zoom, reset north,
|
|
33
|
+
locate the reader and go full screen. `addRoute()`, `addArcs()` and
|
|
34
|
+
`addClusters()` draw data in theme colors. The default OpenFreeMap style
|
|
35
|
+
follows the light or dark theme.
|
|
36
|
+
- `.confetti` bursts theme-colored confetti. A button with the class bursts
|
|
37
|
+
from its center over the page when clicked, a `<canvas class="confetti">`
|
|
38
|
+
bursts inside its own box, and `Expressive.Confetti.fire(options)` bursts
|
|
39
|
+
over the page from script. Options cover the count, angle, spread, speed,
|
|
40
|
+
gravity, drift, colors, shapes and size. The page canvas draws above an
|
|
41
|
+
open modal dialog and lets clicks through. Nothing is drawn when the reader
|
|
42
|
+
prefers reduced motion.
|
|
43
|
+
- `<canvas class="particles">` fills its positioned ancestor with drifting
|
|
44
|
+
dots in the theme's on-surface color that lean toward the pointer. Options
|
|
45
|
+
cover the count, size, color, drift and how far and how fast the dots
|
|
46
|
+
follow the pointer. The canvas lets clicks through, and under reduced
|
|
47
|
+
motion the dots are drawn once and stay still.
|
|
48
|
+
|
|
49
|
+
### Changed
|
|
50
|
+
|
|
51
|
+
- The docs site has a new shell. A rail holds the five catalogue groups from
|
|
52
|
+
840px, with the current group's pages beside it from 1200px. Below 1200px
|
|
53
|
+
the menu button opens the catalogue in a side sheet. Each page opens with a
|
|
54
|
+
breadcrumb, title, description and a "View as Markdown" link, and the table
|
|
55
|
+
of contents sits in a sticky column. Page content and URLs are unchanged.
|
|
56
|
+
- The `expressivecss` skill is version 0.10.0. It adds guides for map,
|
|
57
|
+
confetti and particles. Its version resolver sizes file reads to the file
|
|
58
|
+
and reports a file that grows during a read as changed.
|
|
59
|
+
|
|
60
|
+
### Fixed
|
|
61
|
+
|
|
62
|
+
- Idle components no longer listen to the whole document. Carousel attaches
|
|
63
|
+
its pointer listeners while a mouse press is down, Tooltip listens for Escape
|
|
64
|
+
while open, and the docked date picker listens for outside clicks while
|
|
65
|
+
shown.
|
|
66
|
+
- Calling `Forms.Init()`, `BottomSheets.Init()` or `SideSheets.Init()` again,
|
|
67
|
+
as a page that loads both the root and `/modular` entries can, no longer
|
|
68
|
+
adds a second set of document listeners.
|
|
69
|
+
- `Menu.destroy()` no longer throws when the menu's target element is missing,
|
|
70
|
+
which used to leave its listeners attached.
|
|
71
|
+
- `Utils.throttle` times calls with `performance.now()`, so a system clock
|
|
72
|
+
change cannot hold a call back.
|
|
73
|
+
- More hot-path fixes:
|
|
74
|
+
- ScrollSpy skips the document-wide link lookup while the same section
|
|
75
|
+
stays current.
|
|
76
|
+
- MapView finds its zoom buttons once, not on every `move` event.
|
|
77
|
+
- PieChart reuses one percent formatter per legend instead of making one
|
|
78
|
+
per row.
|
|
79
|
+
- Snackbar measures its width once per swipe, not on every pointer move.
|
|
80
|
+
- Slider updates once per drag frame. Its `pointermove` update also ran
|
|
81
|
+
before the browser moved the value.
|
|
82
|
+
- The heatmap tooltip measures its cell before writing to the page.
|
|
83
|
+
- Datepicker checks each calendar row's markup once.
|
|
84
|
+
- Less work on hot paths:
|
|
85
|
+
- Datepicker arrow keys inside the shown month move focus without
|
|
86
|
+
redrawing the grid.
|
|
87
|
+
- Autocomplete renders the result list once per keystroke while its menu is
|
|
88
|
+
open. It used to render the previous results first, and twice more with
|
|
89
|
+
`isMultiSelect`.
|
|
90
|
+
- Particles stop animating and tracking the pointer while the canvas is off
|
|
91
|
+
screen.
|
|
92
|
+
- Carousel reads all item positions before writing parallax offsets and works
|
|
93
|
+
out item sizes before setting them, so scrolling no longer forces a style
|
|
94
|
+
recalculation per item.
|
|
95
|
+
- Tabs throttle their window resize handling.
|
|
96
|
+
- `Utils.throttle` no longer stalls when the system clock moves backwards.
|
|
97
|
+
- Autocomplete with `allowUnsafeHTML` highlights the typed text inside the
|
|
98
|
+
label's text only. It used to insert the highlight into the HTML string, so a
|
|
99
|
+
match inside an attribute value could close the attribute and turn the rest
|
|
100
|
+
of the sanitized label into markup.
|
|
101
|
+
- Table-of-contents links are 48dp tall, the Material touch target, instead
|
|
102
|
+
of 32dp. `--md-comp-toc-item-height` sets a denser height.
|
|
103
|
+
- In Firefox, a carousel that moved several items while its item sizes were
|
|
104
|
+
still changing could slide back to an earlier item after it had settled.
|
|
105
|
+
Firefox re-snapped the track to whichever item it had passed mid-move.
|
|
106
|
+
Snapping is now off while the carousel scrolls to an item and comes back
|
|
107
|
+
once the item is in place.
|
|
108
|
+
|
|
8
109
|
## [0.13.1] - 2026-10-08
|
|
9
110
|
|
|
10
111
|
### Fixed
|
|
@@ -222,6 +323,11 @@ the format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
|
|
|
222
323
|
|
|
223
324
|
### Fixed
|
|
224
325
|
|
|
326
|
+
- A checkbox label written as `<input type="checkbox"><span>…</span>` keeps
|
|
327
|
+
links and other inline elements in its text. The span was a flex box, so
|
|
328
|
+
each text run and link became a separate item: the spaces around a link
|
|
329
|
+
disappeared and the words split into columns. It now lays out as inline
|
|
330
|
+
text, and one line still sits centered in the 48px target.
|
|
225
331
|
- A focused line, column, bar or pie chart no longer cancels Escape when its
|
|
226
332
|
tooltip is already hidden, so a dialog or sheet around the chart can close.
|
|
227
333
|
Pressing a chart's plot away from its marks focuses it without showing the
|
|
@@ -2147,7 +2253,9 @@ are no compatibility aliases.
|
|
|
2147
2253
|
- `.tabs` nested in a header or app bar as a secondary row. `.tabs` is a
|
|
2148
2254
|
standalone component; the `.tabs.transparent` app bar variant is gone with it.
|
|
2149
2255
|
|
|
2150
|
-
[Unreleased]: https://github.com/BaezFJ/ExpressiveCSS/compare/v0.
|
|
2256
|
+
[Unreleased]: https://github.com/BaezFJ/ExpressiveCSS/compare/v0.14.1...HEAD
|
|
2257
|
+
[0.14.1]: https://github.com/BaezFJ/ExpressiveCSS/compare/v0.14.0...v0.14.1
|
|
2258
|
+
[0.14.0]: https://github.com/BaezFJ/ExpressiveCSS/compare/v0.13.1...v0.14.0
|
|
2151
2259
|
[0.13.1]: https://github.com/BaezFJ/ExpressiveCSS/compare/v0.13.0...v0.13.1
|
|
2152
2260
|
[0.13.0]: https://github.com/BaezFJ/ExpressiveCSS/compare/v0.12.0...v0.13.0
|
|
2153
2261
|
[0.12.0]: https://github.com/BaezFJ/ExpressiveCSS/compare/v0.11.0...v0.12.0
|
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 version `0.
|
|
7
|
+
> ExpressiveCSS version `0.14.1` is under active development.
|
|
8
8
|
|
|
9
9
|
Documentation: [www.expressivecss.com](https://www.expressivecss.com)
|
|
10
10
|
|
|
@@ -416,6 +416,7 @@ The documentation source lives in `docs/src/` and is published at
|
|
|
416
416
|
| `docs/src` | Astro documentation and examples | Yes |
|
|
417
417
|
| `mcp/expressivecss` | Independently versioned MCP package | Yes |
|
|
418
418
|
| `skills/expressivecss` | Agent guidance and generated component references | Yes |
|
|
419
|
+
| `skills/expressivecss-review` | Scored interface review that runs five specialist subagents | Yes |
|
|
419
420
|
| `scripts`, `tests`, `visual` | Generators, verification, and test tooling | Source only |
|
|
420
421
|
| `semantics.json`, `llm.md`, `m3-guidelines.md` | Markup rules, API reference, design guidance | Yes |
|
|
421
422
|
| `SEMANTICS.md`, generated skill/MCP data | Derived files checked for drift | Yes |
|