@expressivecss/expressive 0.11.0 → 0.12.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 (140) hide show
  1. package/CHANGELOG.md +162 -7
  2. package/README.md +1 -1
  3. package/dist/css/expressive.css +230 -99
  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/js/chunks/{chunk-IMUPRRI6.mjs → chunk-3VOK6J7U.mjs} +3 -3
  8. package/dist/js/chunks/{chunk-XDB3G6RL.mjs → chunk-6N2XAEFK.mjs} +15 -4
  9. package/dist/js/chunks/{chunk-XDB3G6RL.mjs.map → chunk-6N2XAEFK.mjs.map} +2 -2
  10. package/dist/js/chunks/{chunk-MISGHDUU.mjs → chunk-6OMRGML6.mjs} +9 -7
  11. package/dist/js/chunks/{chunk-MISGHDUU.mjs.map → chunk-6OMRGML6.mjs.map} +2 -2
  12. package/dist/js/chunks/{chunk-A3BJA7V4.mjs → chunk-6WLSDZ4O.mjs} +2 -2
  13. package/dist/js/chunks/{chunk-JODJAGFS.mjs → chunk-CKQP6P76.mjs} +31 -8
  14. package/dist/js/chunks/chunk-CKQP6P76.mjs.map +7 -0
  15. package/dist/js/chunks/{chunk-KR44BSYQ.mjs → chunk-DLWYKFEI.mjs} +3 -3
  16. package/dist/js/chunks/{chunk-SLFNPY5M.mjs → chunk-EC63CHXU.mjs} +2 -2
  17. package/dist/js/chunks/chunk-G3I5H2U3.mjs +7 -0
  18. package/dist/js/chunks/{chunk-PMBPAFAS.mjs.map → chunk-G3I5H2U3.mjs.map} +1 -1
  19. package/dist/js/chunks/{chunk-LZVBJ33S.mjs → chunk-GZWPXXY6.mjs} +15 -8
  20. package/dist/js/chunks/chunk-GZWPXXY6.mjs.map +7 -0
  21. package/dist/js/chunks/{chunk-74N6U5JJ.mjs → chunk-H2WA4XHH.mjs} +36 -35
  22. package/dist/js/chunks/chunk-H2WA4XHH.mjs.map +7 -0
  23. package/dist/js/chunks/{chunk-XFJ452AZ.mjs → chunk-HB6IW7QQ.mjs} +5 -6
  24. package/dist/js/chunks/{chunk-XFJ452AZ.mjs.map → chunk-HB6IW7QQ.mjs.map} +2 -2
  25. package/dist/js/chunks/{chunk-AYYYWUJ4.mjs → chunk-HLDXZ7XB.mjs} +17 -11
  26. package/dist/js/chunks/chunk-HLDXZ7XB.mjs.map +7 -0
  27. package/dist/js/chunks/{chunk-7GKXUG4B.mjs → chunk-HNFSMIBY.mjs} +18 -18
  28. package/dist/js/chunks/{chunk-D4UZ4HFN.mjs → chunk-IFXVDDDH.mjs} +23 -11
  29. package/dist/js/chunks/chunk-IFXVDDDH.mjs.map +7 -0
  30. package/dist/js/chunks/{chunk-QSQ24FYT.mjs → chunk-LTWPGFBR.mjs} +2 -2
  31. package/dist/js/chunks/{chunk-QSQ24FYT.mjs.map → chunk-LTWPGFBR.mjs.map} +2 -2
  32. package/dist/js/chunks/{chunk-I5KR22BY.mjs → chunk-LWBQIX5J.mjs} +15 -15
  33. package/dist/js/chunks/chunk-LWBQIX5J.mjs.map +7 -0
  34. package/dist/js/chunks/{chunk-GY2Z5CJ2.mjs → chunk-NNYP33NB.mjs} +67 -32
  35. package/dist/js/chunks/chunk-NNYP33NB.mjs.map +7 -0
  36. package/dist/js/chunks/{chunk-VAS6JQ6P.mjs → chunk-PIJ2TAR3.mjs} +3 -3
  37. package/dist/js/chunks/{chunk-JR24UB4X.mjs → chunk-PSSHQWCX.mjs} +2 -2
  38. package/dist/js/chunks/{chunk-PIIAEYAJ.mjs → chunk-QDAL4IYN.mjs} +2 -2
  39. package/dist/js/chunks/{chunk-FRB7TOCS.mjs → chunk-QV2JAWIZ.mjs} +2 -2
  40. package/dist/js/chunks/{chunk-N3UHGN3N.mjs → chunk-QVVEWBOF.mjs} +3 -3
  41. package/dist/js/chunks/{chunk-CDW6WIRT.mjs → chunk-RFZZCYVU.mjs} +18 -11
  42. package/dist/js/chunks/chunk-RFZZCYVU.mjs.map +7 -0
  43. package/dist/js/chunks/{chunk-TYM6U5DY.mjs → chunk-UAEAQBRC.mjs} +2 -2
  44. package/dist/js/chunks/{chunk-7UXHSYIA.mjs → chunk-UBLRRJ7N.mjs} +3 -3
  45. package/dist/js/chunks/{chunk-EP3CVKB5.mjs → chunk-UEZUJQ66.mjs} +8 -5
  46. package/dist/js/chunks/chunk-UEZUJQ66.mjs.map +7 -0
  47. package/dist/js/chunks/{chunk-JNPIWFJT.mjs → chunk-UNEMYWEW.mjs} +3 -3
  48. package/dist/js/chunks/{chunk-JKNPQQWY.mjs → chunk-WJXDBPXQ.mjs} +28 -12
  49. package/dist/js/chunks/chunk-WJXDBPXQ.mjs.map +7 -0
  50. package/dist/js/chunks/{chunk-XO5WX3TK.mjs → chunk-YDCS5S3J.mjs} +2 -2
  51. package/dist/js/chunks/{chunk-TK6PX2GC.mjs → chunk-YSBCHYXP.mjs} +16 -8
  52. package/dist/js/chunks/chunk-YSBCHYXP.mjs.map +7 -0
  53. package/dist/js/expressive.cjs +263 -133
  54. package/dist/js/expressive.cjs.map +2 -2
  55. package/dist/js/expressive.js +263 -133
  56. package/dist/js/expressive.js.map +2 -2
  57. package/dist/js/expressive.min.js +9 -9
  58. package/dist/js/expressive.min.js.map +3 -3
  59. package/dist/js/expressive.mjs +30 -30
  60. package/dist/js/internal/behaviors/bottomSheets.mjs +3 -3
  61. package/dist/js/internal/behaviors/dialogs.mjs +2 -2
  62. package/dist/js/internal/behaviors/forms.mjs +2 -2
  63. package/dist/js/internal/behaviors/sheetDrag.mjs +2 -2
  64. package/dist/js/internal/behaviors/sideSheets.mjs +3 -3
  65. package/dist/js/internal/components/appBar.mjs +2 -2
  66. package/dist/js/internal/components/autocomplete.mjs +4 -4
  67. package/dist/js/internal/components/buttonGroup.mjs +2 -2
  68. package/dist/js/internal/components/buttons.mjs +3 -3
  69. package/dist/js/internal/components/cards.mjs +3 -3
  70. package/dist/js/internal/components/carousel.mjs +3 -3
  71. package/dist/js/internal/components/characterCounter.mjs +2 -2
  72. package/dist/js/internal/components/chips.mjs +5 -5
  73. package/dist/js/internal/components/datepicker.mjs +6 -6
  74. package/dist/js/internal/components/expandingCard.mjs +3 -3
  75. package/dist/js/internal/components/index.mjs +23 -23
  76. package/dist/js/internal/components/lightbox.mjs +3 -3
  77. package/dist/js/internal/components/menu.mjs +3 -3
  78. package/dist/js/internal/components/navigationRail.mjs +2 -2
  79. package/dist/js/internal/components/registry.mjs +24 -24
  80. package/dist/js/internal/components/scrollspy.mjs +2 -2
  81. package/dist/js/internal/components/select.mjs +4 -4
  82. package/dist/js/internal/components/slider.mjs +3 -3
  83. package/dist/js/internal/components/snackbar.mjs +2 -2
  84. package/dist/js/internal/components/tabs.mjs +4 -4
  85. package/dist/js/internal/components/timepicker.mjs +4 -4
  86. package/dist/js/internal/components/tooltip.mjs +3 -3
  87. package/dist/js/internal/core/component.mjs +1 -1
  88. package/dist/js/internal/core/utils.mjs +1 -1
  89. package/dist/js/internal/plugins/dockedDisplayPlugin.mjs +2 -2
  90. package/dist/js/modular.mjs +30 -30
  91. package/dist/types/components/appBar.d.ts +1 -1
  92. package/dist/types/components/datepicker.d.ts +5 -2
  93. package/dist/types/components/menu.d.ts +1 -0
  94. package/dist/types/components/slider.d.ts +1 -0
  95. package/dist/types/components/snackbar.d.ts +6 -0
  96. package/dist/types/components/timepicker.d.ts +4 -1
  97. package/dist/types/components/tooltip.d.ts +2 -1
  98. package/dist/types/modular.d.ts +1 -1
  99. package/package.json +1 -1
  100. package/src/sass/components/_carousel.scss +9 -7
  101. package/src/sass/components/_navbar.scss +11 -6
  102. package/src/sass/components/_page-footer.scss +0 -11
  103. package/src/sass/components/_progress.scss +25 -6
  104. package/src/sass/components/_snackbar.scss +1 -1
  105. package/src/sass/components/_timepicker.scss +2 -2
  106. package/src/sass/components/_toolbar.scss +1 -1
  107. package/src/sass/components/forms/_checkboxes.scss +2 -2
  108. package/src/sass/components/forms/_input-fields.scss +35 -15
  109. package/src/sass/components/forms/_radio-buttons.scss +2 -2
  110. package/src/sass/components/forms/_slider.scss +51 -29
  111. package/src/sass/components/forms/_switches.scss +3 -3
  112. package/src/sass/utilities/_helpers.scss +14 -0
  113. package/src/sass/utilities/_spacing.scss +29 -23
  114. package/src/sass/utilities/_visibility.scss +3 -2
  115. package/dist/js/chunks/chunk-74N6U5JJ.mjs.map +0 -7
  116. package/dist/js/chunks/chunk-AYYYWUJ4.mjs.map +0 -7
  117. package/dist/js/chunks/chunk-CDW6WIRT.mjs.map +0 -7
  118. package/dist/js/chunks/chunk-D4UZ4HFN.mjs.map +0 -7
  119. package/dist/js/chunks/chunk-EP3CVKB5.mjs.map +0 -7
  120. package/dist/js/chunks/chunk-GY2Z5CJ2.mjs.map +0 -7
  121. package/dist/js/chunks/chunk-I5KR22BY.mjs.map +0 -7
  122. package/dist/js/chunks/chunk-JKNPQQWY.mjs.map +0 -7
  123. package/dist/js/chunks/chunk-JODJAGFS.mjs.map +0 -7
  124. package/dist/js/chunks/chunk-LZVBJ33S.mjs.map +0 -7
  125. package/dist/js/chunks/chunk-PMBPAFAS.mjs +0 -7
  126. package/dist/js/chunks/chunk-TK6PX2GC.mjs.map +0 -7
  127. /package/dist/js/chunks/{chunk-IMUPRRI6.mjs.map → chunk-3VOK6J7U.mjs.map} +0 -0
  128. /package/dist/js/chunks/{chunk-A3BJA7V4.mjs.map → chunk-6WLSDZ4O.mjs.map} +0 -0
  129. /package/dist/js/chunks/{chunk-KR44BSYQ.mjs.map → chunk-DLWYKFEI.mjs.map} +0 -0
  130. /package/dist/js/chunks/{chunk-SLFNPY5M.mjs.map → chunk-EC63CHXU.mjs.map} +0 -0
  131. /package/dist/js/chunks/{chunk-7GKXUG4B.mjs.map → chunk-HNFSMIBY.mjs.map} +0 -0
  132. /package/dist/js/chunks/{chunk-VAS6JQ6P.mjs.map → chunk-PIJ2TAR3.mjs.map} +0 -0
  133. /package/dist/js/chunks/{chunk-JR24UB4X.mjs.map → chunk-PSSHQWCX.mjs.map} +0 -0
  134. /package/dist/js/chunks/{chunk-PIIAEYAJ.mjs.map → chunk-QDAL4IYN.mjs.map} +0 -0
  135. /package/dist/js/chunks/{chunk-FRB7TOCS.mjs.map → chunk-QV2JAWIZ.mjs.map} +0 -0
  136. /package/dist/js/chunks/{chunk-N3UHGN3N.mjs.map → chunk-QVVEWBOF.mjs.map} +0 -0
  137. /package/dist/js/chunks/{chunk-TYM6U5DY.mjs.map → chunk-UAEAQBRC.mjs.map} +0 -0
  138. /package/dist/js/chunks/{chunk-7UXHSYIA.mjs.map → chunk-UBLRRJ7N.mjs.map} +0 -0
  139. /package/dist/js/chunks/{chunk-JNPIWFJT.mjs.map → chunk-UNEMYWEW.mjs.map} +0 -0
  140. /package/dist/js/chunks/{chunk-XO5WX3TK.mjs.map → chunk-YDCS5S3J.mjs.map} +0 -0
package/CHANGELOG.md CHANGED
@@ -5,6 +5,160 @@ the format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
5
5
 
6
6
  ## [Unreleased]
7
7
 
8
+ ## [0.12.0] - 2026-10-01
9
+
10
+ ### Added
11
+
12
+ - Utility classes for shrinking flex and grid children, scrolling or clipping
13
+ overflow, logical inline spacing and text alignment, and text wrapping.
14
+ Physical spacing and alignment classes retain their existing behavior.
15
+ - `.visually-hidden-focusable` hides skip links and other content until the
16
+ element or a descendant receives focus. Use it independently of `.visually-hidden`.
17
+
18
+ ### Fixed
19
+
20
+ - Spacing output and documentation omit padding-auto classes, since CSS does
21
+ not accept `auto` for padding. Margin-auto helpers remain available.
22
+ - Carousel preserves an active mouse drag when delayed resize work completes.
23
+ - Snackbar ignores flick velocity after a pause of 100ms or more before release;
24
+ dragging past the distance threshold still dismisses it.
25
+ - Tooltip supports `open()` in its public TypeScript declarations and honors
26
+ `open(true)` without requiring hover or focus.
27
+ - NavigationRail leaves Escape to a nested component that already handled it.
28
+ Its own Escape collapse restores focus to the rail toggle while preserving
29
+ outside focus and focus moved by close callbacks.
30
+ - Menu respects `closeOnClick` inside open and closed shadow roots, preserving
31
+ submenu navigation, outside dismissal, and touch scrolling.
32
+ - Multiple FormSelect options with the same value can be selected and
33
+ deselected independently, matching their native option state.
34
+ - Chips supports programmatic addition without an editable input and accepts
35
+ numeric ID `0` during initialization and addition. An empty autocomplete menu
36
+ does not prevent adding a custom chip.
37
+ - Autocomplete keeps its open state synchronized with its Menu, accepts
38
+ preselected IDs before data loads, and bubbles selection changes to form
39
+ listeners. Chips lets an open suggestion menu handle Enter.
40
+ - Timepicker reloads edited host values when opened and cancels obsolete clock
41
+ updates, so delayed transitions cannot overwrite newer edits or update a
42
+ destroyed instance.
43
+ - Datepicker honors custom parsers during initialization and reopening, rejects
44
+ reversed range edits through every input path, and preserves an empty
45
+ single-date selection after clearing.
46
+ - Each Datepicker range input emits its own change event. Generated date inputs
47
+ opt out of AutoInit so repeated initialization cannot create duplicate pickers.
48
+ - Component `init()` methods return an empty array for empty element collections,
49
+ matching their TypeScript return types.
50
+ - Datepicker can reopen a range when only its end date is set. Clearing
51
+ either endpoint preserves the other and removes incomplete range shading.
52
+ - A cancelled Snackbar swipe cannot carry its velocity into the next gesture.
53
+ - Bottom and side sheets recognize a recent flick when the release coordinates
54
+ match the last pointer move, while paused or reversed short drags stay open.
55
+ - Carousel preserves ordinary button and link clicks inside slides while keeping
56
+ mouse dragging available, including in swipeable tab panels.
57
+ - Chips autocomplete preserves the query while filtering and clears it after
58
+ an item is selected.
59
+ - Destroying a Timepicker cancels pending automatic submission, so an old
60
+ instance cannot overwrite a replacement input value.
61
+ - Datepicker and Timepicker confirmation buttons invoke their callbacks once
62
+ per Enter press. Both TypeScript option interfaces accept `autoSubmit: false`.
63
+ - Closing a Menu preserves focus on an outside input or another control.
64
+ - Docked Datepicker and Timepicker popovers account for their positioning
65
+ parent, including `.field` wrappers and scrolled containers.
66
+ - Destroying Chips also destroys its owned Autocomplete and Menu.
67
+ - Tooltip teardown restores authored rich content and preserves existing
68
+ description associations, allowing the same content to be initialized again.
69
+ - Snackbars can reuse an element supplied through `snackbarId` without deleting
70
+ it or retaining callbacks and controls from an earlier instance.
71
+ - A vertical touch swipe that starts on a carousel scrolls the page again, and
72
+ pinch-zoom works over it. The carousel tracks no longer restrict
73
+ `touch-action`.
74
+ - In Firefox the top app bar is `surface` at rest instead of
75
+ `surface-container`. The scroll fill now runs only where `animation-timeline`
76
+ is supported.
77
+ - `.slider.stops` draws its dots. Each dot sits at a step position on the
78
+ active track, including centered and right-to-left sliders. Vertical and
79
+ two-handle sliders show no dots.
80
+ - In Firefox an indeterminate `<progress class="progress">` shows its track and
81
+ a moving 40% bar, which stays still under reduced motion.
82
+ - In Firefox a date input with a Datepicker shows its value. The formatted
83
+ overlay only applies in engines that render it.
84
+ - Mouse drag moves the carousel track again in the horizontal full-screen
85
+ layout and in `.uncontained.snap`. Snapping used to pull the track back on
86
+ every move.
87
+ - Editing or clearing a Datepicker `<input type="date">` with the keyboard
88
+ updates the formatted date painted over the field in Chrome and Safari.
89
+ After the field lost focus it used to show the previous date.
90
+ - Clicking a Datepicker date input no longer opens the browser's date picker on
91
+ top of a visible Datepicker calendar (`openByDefault` or `container`). When
92
+ the calendar is hidden, the default, the browser picker still opens.
93
+ - Leading `.prefix` and trailing `.suffix` icons stay visible on a Datepicker
94
+ date input in Chrome and Safari. The input's filled background used to cover
95
+ them.
96
+ - `.slider.stops` puts each dot at `min` plus a whole number of steps, so a
97
+ `step` that does not divide the range no longer spreads the dots over the
98
+ whole track. With no `step`, `step="any"`, or a zero or negative step, the
99
+ slider shows no dots. Dots follow the range input's direction and leave the
100
+ inset icon uncovered.
101
+ - `Slider.destroy()` removes the custom properties it set on the input and its
102
+ host, so stop dots and the track fill no longer stay painted. Inline values
103
+ set before init come back.
104
+ - A `<header>` that holds only a `nav.tabs` is no longer styled as a top app
105
+ bar, so it no longer sticks to the top of the page or takes the app bar fill.
106
+ - Medium and large app bars no longer send the page back to the top when they
107
+ collapse. A short or slow scroll near the top used to snap back and leave the
108
+ bar switching between sizes. The bar now collapses once the page has
109
+ scrolled by the height it gives up, and expands when the page returns to the
110
+ top of the bar.
111
+
112
+ ### Changed
113
+
114
+ - The ExpressiveCSS skill bundles the starter page and the five layout
115
+ templates under `assets/templates/`, and the Install and Design guides point
116
+ to them. The Install guide gives a plain `npm install` command, and its
117
+ minimum page no longer puts the page heading in an app bar without
118
+ destinations.
119
+ - Skill guides put their steps under their own headings instead of under
120
+ "Do not use when". The framework contribution path moved to
121
+ `references/contributing.md`.
122
+ - Component guides list the API reference subsections they leave out. Their
123
+ examples use real link targets, and menu actions are buttons. The Buttons
124
+ reference calls `circle` a round common button and points icon buttons to
125
+ `.icon-button`.
126
+ - Documentation examples no longer use `href="#!"` in copyable code. Menu,
127
+ split-button, app-bar and tooltip actions are `<button type="button">`,
128
+ and code samples link to realistic paths. Live navigation demos on the docs
129
+ site keep `#!`. The app-bar Search icon is a button. The API reference drops
130
+ rendered demo text that had been copied into it, and the Lightbox guide
131
+ includes its options and methods.
132
+ - The footer partial no longer carries sticky-footer rules. Their nested
133
+ `:has()` selector was invalid, so browsers had always dropped them. The
134
+ Footer page now gives the two rules to add yourself, as the API reference
135
+ already did.
136
+ - The Auto Init page and the API reference list every component `AutoInit()`
137
+ starts. They add AppBar and ExpandingCard, give Cards its real selector, and
138
+ list both picker spellings, `.datepicker, .date-picker` and
139
+ `.timepicker, .time-picker`. Both name all eight
140
+ behaviors the bundle starts on import, including Dialogs, BottomSheets and
141
+ SideSheets, and call the range control Slider instead of Range.
142
+ - Documentation code samples match their demos and the current framework. The
143
+ Date picker and Time picker samples select `.date-picker` and `.time-picker`,
144
+ the Slider samples and the M3 guidelines use `Expressive.Slider`, and card
145
+ samples drop the unstyled `supporting-text` class. The Grid, circular image,
146
+ character counter, snackbar dismiss and full-screen dialog samples now match
147
+ the demos next to them. The Scrollspy sample uses the canonical
148
+ `hide-on-compact-only` instead of the legacy `hide-on-small-only` alias.
149
+ - Documentation no longer describes removed classes or markup. Typography
150
+ names `body-large`, `body-medium` and `body-small`, and Select describes the
151
+ `.field` wrapper the plugin reuses or creates instead of `.select-wrapper`.
152
+ Tabs no longer mentions `tabs-horizontal`, and Tooltips no longer says the
153
+ plugin adds `.material-tooltip`. Grid offsets use the Compact through
154
+ Extra-large breakpoint names.
155
+ - Getting started lists `fonts/` and `modular.mjs` in the `dist/` tree and
156
+ the minified files in the project tree. Its README link opens the "Reduce
157
+ page downloads" section.
158
+ - On the docs site, the Start navigation item opens the landing page again.
159
+ Slider demos keep their stop dots, and carousel demo links no longer point
160
+ at anchors that do not exist.
161
+
8
162
  ## [0.11.0] - 2026-09-30
9
163
 
10
164
  ### Added
@@ -94,7 +248,7 @@ the format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
94
248
 
95
249
  - **Offline design context for the ExpressiveCSS skill.** The generator now
96
250
  copies the hard rules, window-size tables, component chooser, screen recipes,
97
- anatomy cheat sheet, and Materialize name map from `m3-guidelines.md` into
251
+ anatomy cheat sheet, and retired name map from `m3-guidelines.md` into
98
252
  `skills/expressivecss/references/design-rules.md`, and the root, Design,
99
253
  Usage, and Install guides route to it. JavaScript component guides inline the
100
254
  options table and method names from `llm.md`. The Install guide carries a
@@ -703,7 +857,7 @@ semantics sweep keeps rendering — nothing warns at runtime — so each
703
857
  the same promise with no keyboard model behind it. `semantics.json` records
704
858
  the rejection.
705
859
 
706
- **Migration.** `.searchbar`, the pre-1.0 Materialize navbar search field,
860
+ **Migration.** `.searchbar`, the pre-1.0 navbar search field,
707
861
  is now an alias of `.search-bar` and moves out of `forms/_input-fields.scss`
708
862
  into `components/_search.scss`. Old markup keeps working and picks up the M3
709
863
  container; `tests/m3-naming.test.js` holds the alias to every rule.
@@ -1049,7 +1203,7 @@ semantics sweep keeps rendering — nothing warns at runtime — so each
1049
1203
  `height` above and leave `full-screen` off.
1050
1204
 
1051
1205
  - **The coverflow carousel layout is gone.** `.coverflow` was the 3D
1052
- perspective tween inherited from the vendored MaterializeCSS source, and
1206
+ perspective tween inherited from the older source, and
1053
1207
  Material 3 defines it at no layout and no size. It hand-wrote a momentum
1054
1208
  simulation the browser already performs — velocity smoothing over a
1055
1209
  `Date.now()` delta, exponential-decay easing toward a target, modular index
@@ -1216,7 +1370,7 @@ semantics sweep keeps rendering — nothing warns at runtime — so each
1216
1370
  instead of the spec's 56. Keyed on the shared `$icon` list now, the way
1217
1371
  `_buttons` and `_toolbar` already were.
1218
1372
  - **Five more tokens were declared or referenced but not both**, found by the
1219
- new check below. The time picker's AM/PM buttons referenced Materialize's
1373
+ new check below. The time picker's AM/PM buttons referenced retired
1220
1374
  `--btn-padding` and `--btn-border-radius`, which no longer exist — the
1221
1375
  declarations were invalid at computed-value time, which does *not* fall back
1222
1376
  to the rule underneath, so the padding rendered as 0 while a base button rule
@@ -1597,7 +1751,7 @@ LLM-facing documentation, and the docs site's own templates.
1597
1751
  ### Fixed
1598
1752
 
1599
1753
  - **`llm.md` taught classes that do not exist.** It is the markup contract other
1600
- tools and models read, and several sections still carried Materialize-era
1754
+ tools and models read, and several sections still carried retired
1601
1755
  names the Material Design 3 rewrite removed. Each replacement was verified
1602
1756
  against `dist/css/expressive.css` and `src/ts`:
1603
1757
  - `.btn-floating`, `.btn-large` and `.btn-small` (16 references) — a FAB is
@@ -1680,7 +1834,7 @@ guidelines document. No breaking changes.
1680
1834
 
1681
1835
  ## [0.5.0] - 2026-08-19
1682
1836
 
1683
- The release that finishes moving the vendored Materialize surface onto Material
1837
+ The release that finishes moving the older component set onto Material
1684
1838
  Design 3 Expressive. Components with no M3 counterpart are gone, several were
1685
1839
  renamed to their M3 names, and the color layer now carries the full role set.
1686
1840
  Pre-1.0, so the breaking changes below are not gated behind a deprecation cycle
@@ -1765,7 +1919,8 @@ are no compatibility aliases.
1765
1919
  - `.tabs` nested in a header or app bar as a secondary row. `.tabs` is a
1766
1920
  standalone component; the `.tabs.transparent` app bar variant is gone with it.
1767
1921
 
1768
- [Unreleased]: https://github.com/BaezFJ/ExpressiveCSS/compare/v0.11.0...HEAD
1922
+ [Unreleased]: https://github.com/BaezFJ/ExpressiveCSS/compare/v0.12.0...HEAD
1923
+ [0.12.0]: https://github.com/BaezFJ/ExpressiveCSS/compare/v0.11.0...v0.12.0
1769
1924
  [0.11.0]: https://github.com/BaezFJ/ExpressiveCSS/compare/v0.10.1...v0.11.0
1770
1925
  [0.10.1]: https://github.com/BaezFJ/ExpressiveCSS/compare/v0.10.0...v0.10.1
1771
1926
  [0.10.0]: https://github.com/BaezFJ/ExpressiveCSS/compare/v0.9.1...v0.10.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.11.0` is under active development.
7
+ > ExpressiveCSS version `0.12.0` is under active development.
8
8
 
9
9
  Documentation: [www.expressivecss.com](https://www.expressivecss.com)
10
10