@rcarls/rc-webcomponents 0.5.0 → 0.7.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 (254) hide show
  1. package/CHANGELOG.md +802 -0
  2. package/README.md +89 -56
  3. package/dist/rc-accordion/define.js +3 -0
  4. package/dist/rc-accordion/define.js.map +1 -0
  5. package/dist/rc-accordion/index.js +2 -0
  6. package/dist/rc-accordion/index.js.map +1 -0
  7. package/dist/rc-adaptive-menu/define.js +3 -0
  8. package/dist/rc-adaptive-menu/define.js.map +1 -0
  9. package/dist/rc-adaptive-menu/index.js +2 -0
  10. package/dist/rc-adaptive-menu/index.js.map +1 -0
  11. package/dist/rc-app-bar/define.js +3 -0
  12. package/dist/rc-app-bar/define.js.map +1 -0
  13. package/dist/rc-app-bar/index.js +2 -0
  14. package/dist/rc-app-bar/index.js.map +1 -0
  15. package/dist/rc-bottom-sheet/define.js +3 -0
  16. package/dist/rc-bottom-sheet/define.js.map +1 -0
  17. package/dist/rc-bottom-sheet/index.js +2 -0
  18. package/dist/rc-bottom-sheet/index.js.map +1 -0
  19. package/dist/rc-button/define.js +3 -0
  20. package/dist/rc-button/define.js.map +1 -0
  21. package/dist/rc-button/index.js +2 -0
  22. package/dist/rc-button/index.js.map +1 -0
  23. package/dist/rc-card/define.js +3 -0
  24. package/dist/rc-card/define.js.map +1 -0
  25. package/dist/rc-card/index.js +2 -0
  26. package/dist/rc-card/index.js.map +1 -0
  27. package/dist/rc-carousel/define.js +3 -0
  28. package/dist/rc-carousel/define.js.map +1 -0
  29. package/dist/rc-carousel/index.js +2 -0
  30. package/dist/rc-carousel/index.js.map +1 -0
  31. package/dist/rc-chip/define.js +3 -0
  32. package/dist/rc-chip/define.js.map +1 -0
  33. package/dist/rc-chip/index.js +2 -0
  34. package/dist/rc-chip/index.js.map +1 -0
  35. package/dist/rc-chip-group/define.js +3 -0
  36. package/dist/rc-chip-group/define.js.map +1 -0
  37. package/dist/rc-chip-group/index.js +2 -0
  38. package/dist/rc-chip-group/index.js.map +1 -0
  39. package/dist/rc-combobox/define.js +3 -0
  40. package/dist/rc-combobox/define.js.map +1 -0
  41. package/dist/rc-combobox/index.js +2 -0
  42. package/dist/rc-combobox/index.js.map +1 -0
  43. package/dist/rc-dialog/define.js +3 -0
  44. package/dist/rc-dialog/define.js.map +1 -0
  45. package/dist/rc-dialog/index.js +2 -0
  46. package/dist/rc-dialog/index.js.map +1 -0
  47. package/dist/rc-disclosure/define.js +3 -0
  48. package/dist/rc-disclosure/define.js.map +1 -0
  49. package/dist/rc-disclosure/index.js +2 -0
  50. package/dist/rc-disclosure/index.js.map +1 -0
  51. package/dist/rc-fab/define.js +3 -0
  52. package/dist/rc-fab/define.js.map +1 -0
  53. package/dist/rc-fab/index.js +2 -0
  54. package/dist/rc-fab/index.js.map +1 -0
  55. package/dist/rc-fab-menu/define.js +3 -0
  56. package/dist/rc-fab-menu/define.js.map +1 -0
  57. package/dist/rc-fab-menu/index.js +2 -0
  58. package/dist/rc-fab-menu/index.js.map +1 -0
  59. package/dist/rc-field/define.js +3 -0
  60. package/dist/rc-field/define.js.map +1 -0
  61. package/dist/rc-field/index.js +2 -0
  62. package/dist/rc-field/index.js.map +1 -0
  63. package/dist/rc-list/define.js +3 -0
  64. package/dist/rc-list/define.js.map +1 -0
  65. package/dist/rc-list/index.js +2 -0
  66. package/dist/rc-list/index.js.map +1 -0
  67. package/dist/rc-listbox/define.js +3 -0
  68. package/dist/rc-listbox/define.js.map +1 -0
  69. package/dist/rc-listbox/index.js +2 -0
  70. package/dist/rc-listbox/index.js.map +1 -0
  71. package/dist/rc-markdown-editor/define.js +3 -0
  72. package/dist/rc-markdown-editor/define.js.map +1 -0
  73. package/dist/rc-markdown-editor/index.js +2 -0
  74. package/dist/rc-markdown-editor/index.js.map +1 -0
  75. package/dist/rc-menu/define.js +3 -0
  76. package/dist/rc-menu/define.js.map +1 -0
  77. package/dist/rc-menu/index.js +2 -0
  78. package/dist/rc-menu/index.js.map +1 -0
  79. package/dist/rc-menu-button/define.js +3 -0
  80. package/dist/rc-menu-button/define.js.map +1 -0
  81. package/dist/rc-menu-button/index.js +2 -0
  82. package/dist/rc-menu-button/index.js.map +1 -0
  83. package/dist/rc-menubar/define.js +3 -0
  84. package/dist/rc-menubar/define.js.map +1 -0
  85. package/dist/rc-menubar/index.js +2 -0
  86. package/dist/rc-menubar/index.js.map +1 -0
  87. package/dist/rc-navigation-bar/define.js +3 -0
  88. package/dist/rc-navigation-bar/define.js.map +1 -0
  89. package/dist/rc-navigation-bar/index.js +2 -0
  90. package/dist/rc-navigation-bar/index.js.map +1 -0
  91. package/dist/rc-navigation-rail/define.js +3 -0
  92. package/dist/rc-navigation-rail/define.js.map +1 -0
  93. package/dist/rc-navigation-rail/index.js +2 -0
  94. package/dist/rc-navigation-rail/index.js.map +1 -0
  95. package/dist/rc-popover/define.js +3 -0
  96. package/dist/rc-popover/define.js.map +1 -0
  97. package/dist/rc-popover/index.js +2 -0
  98. package/dist/rc-popover/index.js.map +1 -0
  99. package/dist/rc-progress/define.js +3 -0
  100. package/dist/rc-progress/define.js.map +1 -0
  101. package/dist/rc-progress/index.js +2 -0
  102. package/dist/rc-progress/index.js.map +1 -0
  103. package/dist/rc-range-slider/define.js +3 -0
  104. package/dist/rc-range-slider/define.js.map +1 -0
  105. package/dist/rc-range-slider/index.js +2 -0
  106. package/dist/rc-range-slider/index.js.map +1 -0
  107. package/dist/rc-scroller/define.js +3 -0
  108. package/dist/rc-scroller/define.js.map +1 -0
  109. package/dist/rc-scroller/index.js +2 -0
  110. package/dist/rc-scroller/index.js.map +1 -0
  111. package/dist/rc-search-bar/define.js +3 -0
  112. package/dist/rc-search-bar/define.js.map +1 -0
  113. package/dist/rc-search-bar/index.js +2 -0
  114. package/dist/rc-search-bar/index.js.map +1 -0
  115. package/dist/rc-segmented-button/define.js +3 -0
  116. package/dist/rc-segmented-button/define.js.map +1 -0
  117. package/dist/rc-segmented-button/index.js +2 -0
  118. package/dist/rc-segmented-button/index.js.map +1 -0
  119. package/dist/rc-select/define.js +3 -0
  120. package/dist/rc-select/define.js.map +1 -0
  121. package/dist/rc-select/index.js +2 -0
  122. package/dist/rc-select/index.js.map +1 -0
  123. package/dist/rc-slider/define.js +3 -0
  124. package/dist/rc-slider/define.js.map +1 -0
  125. package/dist/rc-slider/index.js +2 -0
  126. package/dist/rc-slider/index.js.map +1 -0
  127. package/dist/rc-snackbar/define.js +3 -0
  128. package/dist/rc-snackbar/define.js.map +1 -0
  129. package/dist/rc-snackbar/index.js +2 -0
  130. package/dist/rc-snackbar/index.js.map +1 -0
  131. package/dist/rc-splitter/define.js +3 -0
  132. package/dist/rc-splitter/define.js.map +1 -0
  133. package/dist/rc-splitter/index.js +2 -0
  134. package/dist/rc-splitter/index.js.map +1 -0
  135. package/dist/rc-switch/define.js +3 -0
  136. package/dist/rc-switch/define.js.map +1 -0
  137. package/dist/rc-switch/index.js +2 -0
  138. package/dist/rc-switch/index.js.map +1 -0
  139. package/dist/rc-textarea/define.js +3 -0
  140. package/dist/rc-textarea/define.js.map +1 -0
  141. package/dist/rc-textarea/folding.js +2 -0
  142. package/dist/rc-textarea/folding.js.map +1 -0
  143. package/dist/rc-textarea/index.js +2 -0
  144. package/dist/rc-textarea/index.js.map +1 -0
  145. package/dist/rc-toolbar/define.js +3 -0
  146. package/dist/rc-toolbar/define.js.map +1 -0
  147. package/dist/rc-toolbar/index.js +2 -0
  148. package/dist/rc-toolbar/index.js.map +1 -0
  149. package/dist/rc-tooltip/define.js +3 -0
  150. package/dist/rc-tooltip/define.js.map +1 -0
  151. package/dist/rc-tooltip/index.js +2 -0
  152. package/dist/rc-tooltip/index.js.map +1 -0
  153. package/dist/rc-transfer-list/define.js +3 -0
  154. package/dist/rc-transfer-list/define.js.map +1 -0
  155. package/dist/rc-transfer-list/index.js +2 -0
  156. package/dist/rc-transfer-list/index.js.map +1 -0
  157. package/dist/rc-virtual-canvas/define.js +3 -0
  158. package/dist/rc-virtual-canvas/define.js.map +1 -0
  159. package/dist/rc-virtual-canvas/index.js +2 -0
  160. package/dist/rc-virtual-canvas/index.js.map +1 -0
  161. package/dist/rc-virtual-scroller/define.js +3 -0
  162. package/dist/rc-virtual-scroller/define.js.map +1 -0
  163. package/dist/rc-virtual-scroller/index.js +2 -0
  164. package/dist/rc-virtual-scroller/index.js.map +1 -0
  165. package/dist/rc-webcomponents-define.js +24 -4
  166. package/dist/rc-webcomponents-define.js.map +1 -1
  167. package/dist/rc-webcomponents.js +10 -0
  168. package/dist/rc-webcomponents.js.map +1 -1
  169. package/dist/types/index.d.ts +10 -0
  170. package/dist/types/rc-accordion/define.d.ts +1 -0
  171. package/dist/types/rc-accordion/index.d.ts +1 -0
  172. package/dist/types/rc-adaptive-menu/define.d.ts +1 -0
  173. package/dist/types/rc-adaptive-menu/index.d.ts +1 -0
  174. package/dist/types/rc-app-bar/define.d.ts +1 -0
  175. package/dist/types/rc-app-bar/index.d.ts +1 -0
  176. package/dist/types/rc-bottom-sheet/define.d.ts +1 -0
  177. package/dist/types/rc-bottom-sheet/index.d.ts +1 -0
  178. package/dist/types/rc-button/define.d.ts +1 -0
  179. package/dist/types/rc-button/index.d.ts +1 -0
  180. package/dist/types/rc-card/define.d.ts +1 -0
  181. package/dist/types/rc-card/index.d.ts +1 -0
  182. package/dist/types/rc-carousel/define.d.ts +1 -0
  183. package/dist/types/rc-carousel/index.d.ts +1 -0
  184. package/dist/types/rc-chip/define.d.ts +1 -0
  185. package/dist/types/rc-chip/index.d.ts +1 -0
  186. package/dist/types/rc-chip-group/define.d.ts +1 -0
  187. package/dist/types/rc-chip-group/index.d.ts +1 -0
  188. package/dist/types/rc-combobox/define.d.ts +1 -0
  189. package/dist/types/rc-combobox/index.d.ts +1 -0
  190. package/dist/types/rc-dialog/define.d.ts +1 -0
  191. package/dist/types/rc-dialog/index.d.ts +1 -0
  192. package/dist/types/rc-disclosure/define.d.ts +1 -0
  193. package/dist/types/rc-disclosure/index.d.ts +1 -0
  194. package/dist/types/rc-fab/define.d.ts +1 -0
  195. package/dist/types/rc-fab/index.d.ts +1 -0
  196. package/dist/types/rc-fab-menu/define.d.ts +1 -0
  197. package/dist/types/rc-fab-menu/index.d.ts +1 -0
  198. package/dist/types/rc-field/define.d.ts +1 -0
  199. package/dist/types/rc-field/index.d.ts +1 -0
  200. package/dist/types/rc-list/define.d.ts +1 -0
  201. package/dist/types/rc-list/index.d.ts +1 -0
  202. package/dist/types/rc-listbox/define.d.ts +1 -0
  203. package/dist/types/rc-listbox/index.d.ts +1 -0
  204. package/dist/types/rc-markdown-editor/define.d.ts +1 -0
  205. package/dist/types/rc-markdown-editor/index.d.ts +1 -0
  206. package/dist/types/rc-menu/define.d.ts +1 -0
  207. package/dist/types/rc-menu/index.d.ts +1 -0
  208. package/dist/types/rc-menu-button/define.d.ts +1 -0
  209. package/dist/types/rc-menu-button/index.d.ts +1 -0
  210. package/dist/types/rc-menubar/define.d.ts +1 -0
  211. package/dist/types/rc-menubar/index.d.ts +1 -0
  212. package/dist/types/rc-navigation-bar/define.d.ts +1 -0
  213. package/dist/types/rc-navigation-bar/index.d.ts +1 -0
  214. package/dist/types/rc-navigation-rail/define.d.ts +1 -0
  215. package/dist/types/rc-navigation-rail/index.d.ts +1 -0
  216. package/dist/types/rc-popover/define.d.ts +1 -0
  217. package/dist/types/rc-popover/index.d.ts +1 -0
  218. package/dist/types/rc-progress/define.d.ts +1 -0
  219. package/dist/types/rc-progress/index.d.ts +1 -0
  220. package/dist/types/rc-range-slider/define.d.ts +1 -0
  221. package/dist/types/rc-range-slider/index.d.ts +1 -0
  222. package/dist/types/rc-scroller/define.d.ts +1 -0
  223. package/dist/types/rc-scroller/index.d.ts +1 -0
  224. package/dist/types/rc-search-bar/define.d.ts +1 -0
  225. package/dist/types/rc-search-bar/index.d.ts +1 -0
  226. package/dist/types/rc-segmented-button/define.d.ts +1 -0
  227. package/dist/types/rc-segmented-button/index.d.ts +1 -0
  228. package/dist/types/rc-select/define.d.ts +1 -0
  229. package/dist/types/rc-select/index.d.ts +1 -0
  230. package/dist/types/rc-slider/define.d.ts +1 -0
  231. package/dist/types/rc-slider/index.d.ts +1 -0
  232. package/dist/types/rc-snackbar/define.d.ts +1 -0
  233. package/dist/types/rc-snackbar/index.d.ts +1 -0
  234. package/dist/types/rc-splitter/define.d.ts +1 -0
  235. package/dist/types/rc-splitter/index.d.ts +1 -0
  236. package/dist/types/rc-switch/define.d.ts +1 -0
  237. package/dist/types/rc-switch/index.d.ts +1 -0
  238. package/dist/types/rc-textarea/define.d.ts +1 -0
  239. package/dist/types/rc-textarea/folding.d.ts +1 -0
  240. package/dist/types/rc-textarea/index.d.ts +1 -0
  241. package/dist/types/rc-toolbar/define.d.ts +1 -0
  242. package/dist/types/rc-toolbar/index.d.ts +1 -0
  243. package/dist/types/rc-tooltip/define.d.ts +1 -0
  244. package/dist/types/rc-tooltip/index.d.ts +1 -0
  245. package/dist/types/rc-transfer-list/define.d.ts +1 -0
  246. package/dist/types/rc-transfer-list/index.d.ts +1 -0
  247. package/dist/types/rc-virtual-canvas/define.d.ts +1 -0
  248. package/dist/types/rc-virtual-canvas/index.d.ts +1 -0
  249. package/dist/types/rc-virtual-scroller/define.d.ts +1 -0
  250. package/dist/types/rc-virtual-scroller/index.d.ts +1 -0
  251. package/package.json +529 -32
  252. package/src/react.d.ts +544 -38
  253. package/src/solid.d.ts +573 -39
  254. package/themes/base.css +34 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,807 @@
1
1
  # @rcarls/rc-webcomponents
2
2
 
3
+ ## 0.7.0
4
+
5
+ ### Minor Changes
6
+
7
+ - d0ad1e1: Add a per-component subpath for every component in the aggregate package.
8
+
9
+ Registering elements from `@rcarls/rc-webcomponents` was previously
10
+ all-or-nothing: the only side-effectful entry was `./define`, which imports all
11
+ 37 components, so an app using three of them still paid for the collection.
12
+ Anyone who wanted tree-shaking had to install the standalone packages instead,
13
+ trading one dependency for 37.
14
+
15
+ Each component now has its own subpath (`@rcarls/rc-webcomponents/rc-button`
16
+ for the classes, `@rcarls/rc-webcomponents/rc-button/define` to register the
17
+ element), mirroring the `.` and `./define` pair each standalone package already
18
+ exposes. The subpath is the package name, so migrating between the two spellings
19
+ is a prefix swap, and the generated entries are re-exports rather than copies:
20
+ importing `@rcarls/rc-webcomponents/rc-button/define` produces a byte-identical
21
+ bundle to importing `@rcarls/rc-button/define`, 11.7 kB compressed against
22
+ 192 kB for the collection-wide `./define`.
23
+
24
+ Installing the aggregate and installing individual packages now cost the same
25
+ bundle bytes, so the choice is about dependency management rather than size.
26
+ `./define` still registers everything for apps that want it.
27
+
28
+ - 8d6edf2: With `scroll-behavior="hide"`, `rc-app-bar` now publishes read-only geometry onto its scroll
29
+ target: `--rc-app-bar-block-size`, its measured block size, and
30
+ `--rc-app-bar-visible-block-size`, the same value or `0px` while hidden. Hiding only translates
31
+ the bar, so a layout can now give its space back: stack the bar over the scroll container,
32
+ reserve the block size as the container's block-start padding and scroll padding, and pin
33
+ sticky content at the visible size minus the block size, since sticky offsets are measured
34
+ inside that padding. The bar removes both values when it stops hiding, changes
35
+ target, or disconnects.
36
+
37
+ The Material design guide documents this recipe and the compact-height patterns for landscape
38
+ phones: app bars that hide on scroll, side sheets instead of modal bottom sheets, full-screen
39
+ task dialogs, media capped by the pane's height, and single-row sticky chips.
40
+
41
+ - f31cca3: Add `--rc-bottom-sheet-handle-offset` to position the handle indicator within its target. It
42
+ defaults to `50%`, which keeps the indicator centered. Set a length to keep the indicator in its
43
+ own row at the top of a handle that also holds the sheet's title.
44
+ - ec6ebc6: Load dialog move and resize behavior on demand. `rc-dialog` now imports its
45
+ drag and resize controllers only the first time `movable`, `move-handle`, or
46
+ `resize` enables them, so dialogs that never move or resize, including the
47
+ popups inside `rc-select`, `rc-combobox`, and `rc-markdown-editor`, no longer
48
+ ship that code. The new `@rcarls/rc-dialog/geometry` entry exports
49
+ `DialogGeometry` for subclasses that always resize; `rc-bottom-sheet` uses it,
50
+ so its resize stays available immediately.
51
+
52
+ Breaking changes and migration:
53
+
54
+ - `rc-dialog` and `rc-bottom-sheet` remove `light-dismiss` / `lightDismiss`.
55
+ Use `closed-by="any"`, which closes on Escape or a backdrop click and now
56
+ falls back to a backdrop click listener where the browser has no native
57
+ `closedby`.
58
+ - `rc-bottom-sheet` now defaults `closed-by` to `any` instead of defaulting
59
+ `light-dismiss` to true. Set `closed-by="closerequest"` to keep backdrop
60
+ clicks from closing a sheet, or `closed-by="none"` to allow only explicit
61
+ actions.
62
+
63
+ - 4341311: Add reusable fullscreen dialogs and declarative dialog popup mode to `rc-select` and
64
+ `rc-combobox`. Dialog selection and creation are staged until Done, while close and Escape
65
+ discard the draft. Fullscreen surfaces follow the visual viewport under browser zoom and
66
+ software keyboards, and anchored popups now clamp to the visual viewport.
67
+ - 5a7a1dd: `rc-dialog` gains `variant="side"`, a modal side sheet. The surface docks to the inline end at
68
+ full block size, pads every edge for the physical safe-area insets, and rounds only its start
69
+ corners. Like the fullscreen variant, it never moves or resizes. Theme it with
70
+ `--rc-dialog-side-inline-size`, `--rc-dialog-side-background`, `--rc-dialog-side-radius`, and
71
+ `--rc-dialog-side-shadow`. A landscape phone can now show a sheet's content beside the page
72
+ instead of in a bottom sheet that leaves only a strip of content visible.
73
+
74
+ A theme or consumer can now set a standard dialog's preferred width through
75
+ `--rc-dialog-inline-size`, which defaults to `fit-content`. Set it to `100%` for a dialog with
76
+ fluid content, such as a search field or a list, which otherwise shrinks to its minimum width.
77
+
78
+ The Material theme maps the side sheet to Material 3: `surface-container-low`, large leading
79
+ corners, and level 1 elevation. Its design guide documents side sheets, task dialog sizing, and
80
+ full-screen dialogs when the window is compact in either dimension. The React and Solid typings
81
+ accept the new variant.
82
+
83
+ - 19278d4: Group several native controls into one `rc-field` with a direct `<fieldset>`. Its `<legend>` names
84
+ the group and shows as the field label, each control keeps its own accessible name, and supporting
85
+ text describes the fieldset. The first text-like input or textarea is the primary control behind
86
+ `control`, `focus()`, and `data-populated`; focus moving between grouped controls keeps the field
87
+ focused; and `data-disabled`, `data-required`, and `data-invalid` reflect the whole group. New
88
+ read-only `group` and `controls` properties and a `data-group` host attribute support the mode.
89
+
90
+ The primary control grows and other controls attach before or after it. In Material, the legend uses
91
+ the floating label mechanics: it rests on the input line while the group is idle and its primary
92
+ input empty, and floats on focus or once that input has a value; a group with a control before its
93
+ primary input keeps it floated. Grouped placeholders wait for focus. Substrate colors an invalid
94
+ group's legend, and Win31 spaces it like a single field's label.
95
+
96
+ - 6ec0857: Add `ordered` to `rc-list`. Visible items in an ordered list receive `aria-posinset` and
97
+ `aria-setsize` so assistive technology reports their position; no counters render, and authored
98
+ positions from a rendered slice of a longer list are kept.
99
+
100
+ Add an expandable `details` region to `rc-list-item`. A button marked
101
+ `data-rc-list-item-toggle` toggles it; the item wires `aria-expanded`, `aria-controls`, and the
102
+ region's `hidden` state, supports controlled `expanded` and uncontrolled `default-expanded`
103
+ state, and fires `rc-list-item-toggle`. Material styles the region as list supporting text.
104
+
105
+ - 54d9ead: Localize every component's built-in text. Button names, role
106
+ descriptions, announcements, and default labels now resolve per key from
107
+ the element's `messages` property, then from text registered with
108
+ `registerMessages(locale, catalog)` in `@rcarls/rc-common`, then from the
109
+ English defaults. The locale is the element's own `lang`, else
110
+ `<html lang>`; an ancestor's `lang` is ignored, because it usually marks
111
+ content rather than the interface. Components re-render when that locale
112
+ changes or new text is registered. `RcMessageCatalog` types the catalog,
113
+ and each package adds its scope to it.
114
+
115
+ Numbers a component formats as text follow the same locale:
116
+ `rc-progress`'s default percentage and `rc-splitter`'s `aria-valuetext`
117
+ use `Intl.NumberFormat`. `TypeaheadController` matches prefixes with an
118
+ `Intl.Collator`, so case and accents are ignored the way the locale
119
+ ignores them, and takes a `locale` option. `ItemsCollectionController`'s
120
+ `setCreateOption(text, label?)` takes the option's visible text from its
121
+ caller.
122
+
123
+ `rc-transfer-list`'s direction arrows are now decorative: screen readers
124
+ read only the action name, and the arrows turn over in RTL.
125
+
126
+ **Breaking:** chrome-text properties are replaced by `messages`. Migrate:
127
+
128
+ - `rc-search-bar` `clear-label` / `clearLabel` → `messages.clear`
129
+ - `rc-adaptive-menu` `overflow-label` / `overflowLabel` → `messages.overflow`
130
+ - `rc-chip-group` `show-all-label` / `showAllLabel` and `show-less-label` /
131
+ `showLessLabel` → `messages.showAll` and `messages.showLess`
132
+ - `rc-select` and `rc-combobox` `dialog-confirm-label` /
133
+ `dialogConfirmLabel` and `dialog-cancel-label` / `dialogCancelLabel` →
134
+ `messages.done` and `messages.cancel`
135
+ - `rc-editor-toolbar` `label` → `messages.toolbar`
136
+
137
+ Per-instance names stay attributes, but now default to `undefined` and fall
138
+ back to a message: `label` on `rc-adaptive-menu`, `rc-chip-group`,
139
+ `rc-menubar`, and `rc-splitter`; `available-label` and `selected-label`
140
+ on `rc-transfer-list`; `low-label` and `high-label` on `rc-range-slider`.
141
+ Read the resolved name from the rendered `aria-label` instead of the
142
+ property.
143
+
144
+ - 873592e: Add four directional motion tokens to the shared base contract:
145
+ `--rc-motion-effects-easing-enter`/`-exit` and
146
+ `--rc-motion-spatial-easing-enter`/`-exit`. An opening element decelerates
147
+ into place; a closing one accelerates out. There are no matching enter/exit
148
+ duration tokens; pair `-easing-exit` with an existing `-duration-fast` token
149
+ instead.
150
+
151
+ All three themes map the new tokens: Material pairs them with its
152
+ standard/emphasized decelerate and accelerate curves, Substrate keeps its one
153
+ curve as the enter curve and adds a generic accelerate shape for exit
154
+ (refined further once Substrate gets its own full spatial/effects scale), and
155
+ `rc-theme-win31` declares all four as `step-end`, matching its zero-motion
156
+ contract, so an application that loads the shared base tokens alongside
157
+ `rc-theme-win31` does not inherit the base defaults' real easing curves for
158
+ these two directions.
159
+
160
+ - f1ca82d: Add an anchored, non-modal popover package with a Material rich-tooltip recipe. Share native Popover API visibility and fallback behavior across existing popup components.
161
+ - 687a9be: Add shared popup surface tokens: `--rc-popup-background`, `--rc-popup-color`,
162
+ `--rc-popup-border`, `--rc-popup-radius`, `--rc-popup-shadow`, and
163
+ `--rc-popup-padding-block`. Menus, adaptive-menu popups, and select and
164
+ combobox listboxes read them before their own fallbacks. Themes set them at the
165
+ theme root, so popups rendered inside other shadow roots keep the theme's
166
+ surface. Select and combobox add `--rc-*-listbox-background` and
167
+ `--rc-*-listbox-color`.
168
+
169
+ Breaking: popup surfaces no longer fall back to `--rc-control-radius`. Set
170
+ `--rc-popup-radius` (or the per-component radius token) to change popup
171
+ corners. The Material, Substrate, and Win31 themes no longer set per-component
172
+ popup surface tokens such as `--rc-menu-radius` or
173
+ `--rc-adaptive-menu-popup-background`; override the `--rc-popup-*` tokens
174
+ instead. Material select and combobox listboxes now use the menu container
175
+ color, Material forced-colors popups gain a border, and Substrate listboxes use
176
+ the menu shadow and padding. Material retains its two-layer adaptive-menu popup
177
+ shadow through a component token while other popups continue using the shared
178
+ shadow.
179
+
180
+ - c130173: Add pointer and keyboard reordering to `rc-list`.
181
+
182
+ Set `reorderable` and give each item a native `<button data-rc-reorder-handle>`. People can drag
183
+ a handle, and the items it passes shift out of the way while the nearest scroll container
184
+ scrolls near its edges. On touch and pen, a long press on an item also starts a drag, while
185
+ movement before activation remains available for scrolling. Or they can focus a handle and use
186
+ Space, the block-axis arrow keys, Home, End, and Escape. Each step is announced, focus stays on
187
+ the moved item's handle, and geometry and keys follow the writing mode. `reorderable` implies
188
+ `ordered`.
189
+
190
+ Each committed move fires a cancelable `rc-list-reorder` event with `{ item, from, to }`. Left
191
+ alone, the list moves the node itself; a framework that renders the items cancels the event and
192
+ reorders its own data. `reorderMessages` overrides the announcements and the handle hint.
193
+
194
+ `rc-common` gains the `ReorderController` behind it and a `LiveAnnouncer` live-region helper.
195
+ `rc-theme-material` styles the lifted item with the dragged elevation, surface, and state layer,
196
+ animates the shifting items with standard motion, and presents plain handles as standard icon
197
+ buttons.
198
+
199
+ - aed2034: Add `rc-virtual-scroller`, a headless virtualization wrapper.
200
+
201
+ Mounting a large collection as custom elements costs real time regardless of
202
+ `content-visibility: auto`: upgrade happens at parse and insertion, before
203
+ style resolves, so containment cannot prevent element construction. This
204
+ package stops the count of mounted elements from scaling with collection
205
+ size, without taking over rendering.
206
+
207
+ The element measures geometry against a slotted container and dispatches
208
+ `rc-virtual-scroller-range` with the visible `[start, end)` index range; the
209
+ consumer renders that slice into its own container with whatever it already
210
+ uses, and two spacer parts reserve the off-range scroll space. Items per line
211
+ and line pitch are measured from the container's own grid tracks rather than
212
+ configured, so `auto-fill` and container queries stay authoritative. The
213
+ focused item is never dropped from the reported range, so scrolling never
214
+ silently resets keyboard focus to `<body>`.
215
+
216
+ `axis="block|inline"` is logical: `block` windows stacked lines, `inline`
217
+ windows a row of items such as a horizontal shelf. Direction and writing mode
218
+ are read from computed style, so RTL pages and vertical text work without
219
+ configuration.
220
+
221
+ - 6d126fd: Add shared item type tokens: `--rc-item-font-family`, `--rc-item-font-size`,
222
+ `--rc-item-font-weight`, `--rc-item-line-height`, `--rc-item-letter-spacing`,
223
+ and `--rc-item-icon-size`. Menu, listbox, and adaptive-menu items read them.
224
+ Adaptive menu adds `--rc-adaptive-menu-trigger-hover-background`,
225
+ `--rc-adaptive-menu-trigger-shadow`, and
226
+ `--rc-adaptive-menu-trigger-active-shadow`, and styles overflowed `rc-button`
227
+ and `rc-menu-button` rows from its item tokens. Themes declare their menu,
228
+ adaptive-menu, and item tokens on the theme root, so menus inside other shadow
229
+ roots match menus in the document. Substrate's adaptive-menu trigger now shows
230
+ its hover background.
231
+
232
+ Breaking: theme menu and adaptive-menu tokens are inherited from the theme root
233
+ instead of set on each element, so a value set on an ancestor now reaches
234
+ nested menus. Material sets menu, listbox, and adaptive-menu item type through
235
+ `--rc-item-*` instead of per-component rules; override those tokens to change
236
+ item type. Themes no longer style the adaptive-menu trigger through
237
+ `::part(overflow-trigger)` hover and pressed rules; use the new trigger tokens.
238
+
239
+ - e23a39c: Add an accessible native input and textarea field wrapper with Material 3 filled and outlined
240
+ theme treatments, including an explicit provider contract for enhanced native controls.
241
+ - 905083b: Give `rc-textarea` a content language and direction separate from its
242
+ interface. The slotted `<textarea>` describes the text: its `lang` and
243
+ `spellcheck` are mirrored onto the editor, so the browser picks the right
244
+ glyphs and spelling dictionary, and its `dir` sets the editor's base
245
+ direction. `dir="auto"` resolves from the value's first strong character,
246
+ uses LTR when there is none (matching native HTML), and updates as the value changes.
247
+ Without `dir`, the editor inherits as before. The host's own `lang` stays
248
+ the interface language.
249
+
250
+ A new `line-direction` attribute (`lineDirection` property) chooses how
251
+ each line's direction is set. `base`, the default, keeps every line in the
252
+ editor's direction. `auto` orders and aligns each line with a letter by its
253
+ own first strong character, for prose that mixes scripts, and holds lines
254
+ without one (empty lines, quantities) to the base direction. Widgets and
255
+ line messages are now bidi-isolated, so they never reorder neighboring
256
+ text.
257
+
258
+ Changes to the native textarea's `lang` or `dir` rerun plugin rendering.
259
+ The plugin API adds `contentDirection`, `contentLang` and
260
+ `lineDirection(line)`. The React and Solid typings add `lineDirection` and
261
+ `line-direction`.
262
+
263
+ **Breaking:**
264
+
265
+ - Line numbers are formatted with `Intl.NumberFormat` for the interface
266
+ locale (the host's `lang`, else `<html lang>`), so an `ar-EG` interface
267
+ shows Arabic-Indic digits. Set `lang="ar-EG-u-nu-latn"`, or another
268
+ `-u-nu-latn` tag, on the host to keep Latin digits.
269
+ - `getWordAtCursor()` segments words with `Intl.Segmenter` for the
270
+ textarea's `lang` instead of matching ASCII `\w`. Accented and non-Latin
271
+ words are now found whole, and `don't` and `3.14` are one word each;
272
+ `snake_case` still is. Without `Intl.Segmenter` it scans letters, digits
273
+ and `_`.
274
+
275
+ - 6b99ced: **Breaking:** replace `LineDisclosureController` with `FoldingActionController`.
276
+ Pass a caller-owned panel as `target` and render it through a block widget, or pass
277
+ `{ fromLine, toLine }` to fold source lines. Panel creation and content revision now
278
+ belong to the plugin. Set `initiallyExpanded: false` to retain the old diagnostic
279
+ panel default; call `clear()` when document identity changes.
280
+
281
+ Folding actions keep source text, form values, and undo history intact. The Markdown
282
+ plugin adds gutter folds for heading sections, lists, code blocks, block quotes,
283
+ and GFM tables. The base gutter has a 24px minimum width; Material uses 48px.
284
+ Folding buttons expose `fold-trigger` and `fold-icon` CSS parts, and
285
+ `createMarkdownPlugin({ folding: { createTriggerIcon } })` lets consumers choose
286
+ the Markdown fold icon.
287
+
288
+ - 3325191: **Breaking:** take `rc-textarea`'s read-only state from the slotted `<textarea readonly>` and
289
+ remove the `read-only` attribute and its display styling without border or padding. A read-only
290
+ editor keeps the enabled field appearance, stays focusable and selectable, announces `aria-
291
+ readonly` with the native control's label, and rejects edits. The host reflects `data-readonly`,
292
+ and `readOnly` is now a getter. The plugin `transform()` hook runs while the textarea is
293
+ `readonly`.
294
+
295
+ `rc-markdown-editor` passes its `read-only` state to a native textarea in its source editor.
296
+ Material and Substrate fields skip the hover affordance for a read-only control and keep its
297
+ focus indicator.
298
+
299
+ Migration: replace `<rc-textarea read-only>` with `readonly` on the slotted textarea, for
300
+ example `<rc-textarea><textarea aria-label="Notes" readonly></textarea></rc-textarea>`. Replace
301
+ `editor.readOnly = value` with `textarea.readOnly = value`. Read-only content that is not a form
302
+ value belongs in ordinary text or list markup instead.
303
+
304
+ - 0e2d878: **Breaking:** replace `--rc-textarea-padding` with `--rc-textarea-padding-block` and
305
+ `--rc-textarea-padding-inline`. The active line highlight bleeds through the inline padding by
306
+ negating it, which a multi-value shorthand made invalid: inside a Material filled `rc-field`
307
+ (`0 1rem 0.5rem`) the highlight stopped short of the field's edges in the editor and gutter.
308
+ `--rc-textarea-padding-inline` is one length applied to both inline sides, so the bleed stays
309
+ valid and follows RTL and vertical writing modes through logical insets.
310
+ `--rc-textarea-padding-block` accepts any `padding-block` value.
311
+
312
+ Migration: split each `--rc-textarea-padding` declaration. A single length `L` becomes
313
+ `--rc-textarea-padding-block: L; --rc-textarea-padding-inline: L`. A shorthand
314
+ `T X B` becomes `--rc-textarea-padding-block: T B; --rc-textarea-padding-inline: X`.
315
+
316
+ - fb747f6: Declare `rc-base` before each theme's own layers. Components inject their structural
317
+ light-DOM CSS into `rc-base` at runtime, after the theme has loaded, which made it the last
318
+ and strongest layer on pages that don't declare their own order, so it could override theme
319
+ rules. Theme rules now win either way. Apps that declare their own layer order should list
320
+ `rc-base` before the theme layers.
321
+
322
+ Add a fourth theme layer, `rc-theme-*.overrides`, after `.components`. Each theme uses it to
323
+ keep `rc-adaptive-menu` overflow rows on the menu's item tokens. Theme button and menu-button
324
+ variants, such as Material's icon-only sizing and filled colors or Win31's bevelled native
325
+ buttons, no longer restyle an overflowed action as a standalone control. A demoted
326
+ icon-only `rc-menu-button` keeps its row padding and indicator inset.
327
+
328
+ - 877a03f: Add a scoped type scale. An element with `data-rc-type-scale` multiplies every Material
329
+ type size and line height beneath it by `--rc-type-scale`, and derives the RC text
330
+ tokens built on them (`--rc-item-font-size`, `--rc-font-size`, `--rc-button-font`, and
331
+ related line heights) again from the scaled values, so lists, buttons, menus, and plain
332
+ text in the region grow together.
333
+
334
+ Marking the theme root itself scales the whole page, for an app-wide text size setting.
335
+ With `bridge.css` alone, RC text scales from the application's Material type tokens;
336
+ the application's Material tokens remain unchanged.
337
+
338
+ ### Patch Changes
339
+
340
+ - aee912a: Single-open accordions now close a sibling `rc-disclosure` through its native `<details>`
341
+ instead of its `open` property. Writing the property switched the disclosure into
342
+ controlled mode, so a panel the accordion had closed would not reopen from its summary.
343
+ A controlled sibling now receives the close as an `rc-disclosure-toggle` request and
344
+ keeps the state its owner sets.
345
+
346
+ The Solid JSX types now declare `rc-disclosure`'s `default-open` attribute and its
347
+ `open` and `defaultOpen` properties.
348
+
349
+ - 51aac05: `rc-adaptive-menu` no longer throws when actions are added while its first render is still
350
+ pending. The action observer tried to give the overflow trigger a tab stop before the shadow
351
+ tree existed; changes before the first render are now left to the initial sync.
352
+ - 9ee769c: Anchor popups in logical terms only. A placement is now `block-start`,
353
+ `block-end`, `inline-start`, or `inline-end`, each with an optional
354
+ `-start`/`-end` edge alignment, and all of them follow the writing mode and
355
+ direction. Block sides open above or below a row in horizontal text and
356
+ beside it in vertical text; inline sides open along the reading direction,
357
+ so `inline-end` opens to the left in RTL. `resolveAnchorPlacement` exposes
358
+ the resolution for other consumers.
359
+
360
+ **Breaking:** the physical placements `top*`, `bottom*`, `left*`, and
361
+ `right*` are removed from `AnchorPlacement`, `rc-menu-button`'s and
362
+ `rc-fab-menu`'s `placement`, and the React and Solid typings. Migrate:
363
+
364
+ - `bottom*` → `block-end*`
365
+ - `top*` → `block-start*`
366
+ - `right*` → `inline-end*` (in LTR)
367
+ - `left*` → `inline-start*` (in LTR)
368
+
369
+ Defaults move with them and render the same in horizontal LTR text:
370
+ `rc-menu-button`, `rc-select`, and `rc-combobox` open at `block-end-start`,
371
+ `rc-adaptive-menu`'s overflow menu at `block-end-end`, and `rc-fab-menu` at
372
+ `block-start-end`. In vertical text these popups now open beside their
373
+ trigger instead of over the next item. Vertical menubars and vertical
374
+ adaptive menus open submenus at `inline-end-start`. Open popups also
375
+ re-resolve their physical side and alignment when an ancestor's `dir`
376
+ changes, and `rc-fab-menu` keeps its corner-aware default even when nested in
377
+ a vertical menubar.
378
+
379
+ - 6f1df83: A bar with `scroll-behavior="hide"` now hides or reveals only after its scroll target travels
380
+ `hide-distance` (32px by default) in one direction. It used to reveal on any upward scroll, so a
381
+ 1px reversal while reading or as a fling settled brought it back. Near the top it still always
382
+ shows. A hidden bar reveals itself when focus moves into it and stays visible until focus leaves.
383
+ - 12f443f: Keep `rc-bottom-sheet` docked at its block-end edge. Snapping now sets only
384
+ the sheet's height and leaves its position to CSS, releasing the edge pins a
385
+ drag gesture leaves inline. A viewport resize, such as a software keyboard
386
+ opening under `interactive-widget=resizes-content`, or a containing block that
387
+ moves after a snap no longer strands the sheet off-screen. A field that takes
388
+ focus inside the sheet is scrolled into view within the sheet, and the sheet
389
+ grows past its snap height and maximum block size only when scrolling cannot
390
+ reveal the field, returning to its snap point when focus leaves. A drag now
391
+ interrupts a running snap animation instead of being overridden by it.
392
+ - 9f590f2: Keep a labeled button at least as wide as its label in content-sized layouts.
393
+ The slotted button clipped its content with `overflow: hidden`, which made it
394
+ a scroll container with a zero automatic minimum size, so a min-content table
395
+ column or an auto grid track could squeeze it narrower than its label. It now
396
+ clips with `overflow: clip`, which looks the same but keeps the label's width
397
+ as the button's minimum.
398
+ - 9720b36: Keep a just-selected chip in view when chips resize after the selection. An app that moves a
399
+ filter chip's check mark a frame later first shortens the row, which clamps the scroll offset,
400
+ and then widens the selected chip past the row's end. The group now reveals that chip again
401
+ after later resizes, until the user scrolls the row themselves.
402
+ - 2934328: `rc-chip-group` measures its rows once when it first lays out, not twice. Its resize observer's
403
+ first report of each chip no longer schedules another when it matches the first measurement;
404
+ a changed size still triggers another row measurement.
405
+ A collapsed row at its start is no longer scrolled back into place after each measurement,
406
+ which saves a forced layout.
407
+ - 3d050f1: Keep wrapped chip rows evenly spaced. Readonly chips in an `rc-chip-group`
408
+ keep the touch-target block size, so expanded rows share the disclosure
409
+ toggle's pitch. `rc-combobox` and `rc-select` return the chip touch-target
410
+ overlap tokens as row gap, so interior chip rows no longer collapse onto each
411
+ other inside a field. Material combobox and select input chips drop their
412
+ extra block padding to render at the 2rem chip height.
413
+ - 5c006de: Ship component CSS minified. Package builds now run the CSS in Lit `css` styles
414
+ and light-DOM structural styles through Lightning CSS, removing comments and
415
+ whitespace while keeping source maps that resolve to each template. Rendered
416
+ styles are unchanged.
417
+
418
+ `@rcarls/rc-common` adds `cssText`, an identity tag that marks a plain CSS
419
+ string for minification. `rc-chip`, `rc-disclosure`, and `rc-accordion` now
420
+ depend on `@rcarls/rc-common` for it.
421
+
422
+ - 011f3c6: Keep combobox chips clear of their trailing toggle, reset native selects inside
423
+ `rc-field`, keep controlled carousel accessibility state synchronized, and align
424
+ Material chips, menus, lists, disclosures, nested editors, and bottom-sheet
425
+ motion with their MD3 defaults.
426
+ - 899bb5e: Make `rc-dialog` move and resize options reactive. Toggling `movable`,
427
+ changing `resize`, or changing any other `move-*` or `resize-*` option after
428
+ setup now rebuilds that behavior, so `resize="none"` turns resizing off on a
429
+ mounted `rc-dialog` or `rc-bottom-sheet` and a later value turns it back on.
430
+ Re-wiring the inner `<dialog>` no longer leaves stale move or resize
431
+ controllers attached. `DragController`, `ResizeController`, and
432
+ `DragGestureController` gain `dispose()`. Detaching a handle restores its
433
+ focusability and inline resize styles when they still have controller-written
434
+ values, while preserving later author edits. Active gestures cancel
435
+ and release pointer capture when their controller is removed. `rc-fab` uses
436
+ the new `ScrollObserverController.dispose()` for its optional scroll fallback.
437
+ - f2fdbcc: The React JSX declarations now include `rc-disclosure`'s `default-open` attribute and
438
+ `rc-disclosure-toggle` event. React and Solid ref types accept `undefined` when releasing
439
+ control of the `open` property.
440
+ - 2d79bd0: Name the `position` corners for what they already do: each pins to a
441
+ logical block and inline edge, so they turn with the writing mode.
442
+
443
+ **Breaking:** the `position` values are renamed. Migrate:
444
+
445
+ - `bottom-end` → `block-end-inline-end` (the default)
446
+ - `bottom-start` → `block-end-inline-start`
447
+ - `top-end` → `block-start-inline-end`
448
+ - `top-start` → `block-start-inline-start`
449
+
450
+ - d50f18c: The open `rc-fab-menu` popup no longer draws the browser's default popover border, padding,
451
+ and background around its menu. Its styles replace `rc-menu-button`'s instead of extending
452
+ them, so the popup now resets those defaults itself and the slotted `rc-menu` draws the
453
+ only surface.
454
+ - 25375fa: Drop the inner focus ring from `rc-combobox` and `rc-select` when they are
455
+ composed as `rc-field` controls, since the field's label and active indicator
456
+ already show focus.
457
+ - 3f8d110: Clear a page-level focus outline from a native input, select, or textarea inside `rc-field`. The
458
+ field already shows focus, but rc-field's `::slotted()` reset loses to page rules such as a CSS
459
+ reset's Firefox `:-moz-focusring` outline, which drew a dotted box inside the focused field.
460
+ - b764a3c: Observe interface locale changes through containing shadow roots and the host's own document.
461
+ An explicit empty `lang` now means an unknown locale rather than falling back to `<html lang>`.
462
+ Typeahead compares complete grapheme prefixes, including decomposed accents and collation
463
+ expansions. Default interpolating messages format numeric positions in the interface locale
464
+ while translation callbacks continue to receive numbers and can accept an optional locale.
465
+ Default messages isolate consumer text whose direction is unknown. Textarea content direction
466
+ uses the native LTR fallback for neutral `dir="auto"` content, recognizes Arabic Letter Mark and
467
+ isolate controls, and reruns plugins when the native textarea's `lang` or `dir` changes.
468
+ - 6771ce6: Pin floated Material field labels to the container instead of centering them
469
+ with the control. Filled fields reserve 8px of block padding, so every floated
470
+ label sits at the same offset and a taller control grows the field downward;
471
+ outlined labels now ride the top border for select and combobox controls too. Full-size
472
+ chips in a filled field keep a 0.25rem gap below the floated label.
473
+ Select and combobox controls drop their own block padding inside fields, and
474
+ `rc-textarea` text starts on the input line like a native textarea.
475
+
476
+ Add `rc-combobox--dense` and `rc-select--dense`, which render 1.5rem chips so a
477
+ populated chip field keeps the standard 56px height.
478
+
479
+ - c8b762b: `observeLocale(listener, host)` notifies only for a `dir` or `lang` change on the host, one of its
480
+ ancestors across shadow roots, or inside its subtree. A `lang` on unrelated content no longer
481
+ makes every component on the page re-read its writing direction, a forced layout each, including
482
+ components inside a `content-visibility: hidden` subtree. An optional `scope` names extra elements
483
+ whose locale matters; `AnchorController` passes the popup and its anchor. Subscribers without a host
484
+ still hear every change. Scoped anchors inside shadow roots are observed as well.
485
+ - 622a4f8: Theme popovers and tooltips through the shared token layers. `rc-popover` now
486
+ reads the shared `--rc-popup-*` surface tokens before its own fallbacks, like
487
+ menus and listboxes, and `rc-tooltip` takes its default corner from
488
+ `--rc-radius-sm`. The Material theme sets its popover and tooltip tokens on the
489
+ theme root, so surfaces inside other shadow roots inherit them, and the
490
+ Substrate theme adds popover and tooltip styles.
491
+ - 7b36b34: Fix the aggregate Solid JSX type declarations for `rc-field`, `rc-select`, and `rc-combobox`,
492
+ stale relative to their real current APIs: `RCFieldControl` was missing `select`; `RCSelectRef`
493
+ (and `RCComboboxRef` through it) predated a listbox option-type refactor and was missing
494
+ `required`, `focus()`, and `blur()`. Also adds the `data-rc-field-control` attribute to the
495
+ `rc-select`/`rc-combobox` intrinsic element types.
496
+ - ac65b5b: A pointer resize now starts only after the pointer moves 8 pixels, like Android's touch slop.
497
+ A tap on a resize handle that is also a button, such as a bottom sheet's drag handle, stays a
498
+ click: it no longer starts a resize, settles the sheet to its nearest snap point, and fires
499
+ resize events before the click runs.
500
+ - 8387c20: Extend the `rc-textarea` active-line highlight edge to edge. The active line
501
+ and its gutter cell now paint `--rc-textarea-active-line-bg` through the editor
502
+ and gutter padding, so the row reads as one band across the whole control.
503
+ - c328259: Keep textarea gutter rows aligned with editor lines in vertical writing modes.
504
+ - 11ef1ad: Harden virtual scrolling for document and element scroll containers, viewport resizing,
505
+ shadow-root focus, hidden panes, and uniform spanning grids. Separate layout
506
+ sampling from range calculation and avoid repeating item measurements during
507
+ unchanged scroll frames. Scroll ancestor discovery now follows slots and shadow hosts.
508
+
509
+ Breaking: `first` and `last` are read-only computed outputs. Use `scrollToIndex()`
510
+ for navigation and read `range` for rendering instead of assigning output values.
511
+ Virtualization requires uniform line pitch and capacity in sequential DOM order;
512
+ detected unsupported layouts render the full collection. Set `items-per-line`
513
+ for ambiguous uniform grid capacity, or remove it to restore automatic inference.
514
+ Numeric inputs now normalize invalid values and floor integer configuration.
515
+
516
+ - Updated dependencies [aee912a]
517
+ - Updated dependencies [51aac05]
518
+ - Updated dependencies [9ee769c]
519
+ - Updated dependencies [1179f24]
520
+ - Updated dependencies [6f1df83]
521
+ - Updated dependencies [8d6edf2]
522
+ - Updated dependencies [b0a63ef]
523
+ - Updated dependencies [06f195f]
524
+ - Updated dependencies [12f443f]
525
+ - Updated dependencies [e232e9d]
526
+ - Updated dependencies [f31cca3]
527
+ - Updated dependencies [d3a91dc]
528
+ - Updated dependencies [9f590f2]
529
+ - Updated dependencies [fbf240b]
530
+ - Updated dependencies [9720b36]
531
+ - Updated dependencies [2934328]
532
+ - Updated dependencies [9059bce]
533
+ - Updated dependencies [3d050f1]
534
+ - Updated dependencies [595fe37]
535
+ - Updated dependencies [38cd00c]
536
+ - Updated dependencies [5c006de]
537
+ - Updated dependencies [011f3c6]
538
+ - Updated dependencies [079e025]
539
+ - Updated dependencies [a6553ff]
540
+ - Updated dependencies [8300209]
541
+ - Updated dependencies [2205478]
542
+ - Updated dependencies [8cbc627]
543
+ - Updated dependencies [ec6ebc6]
544
+ - Updated dependencies [4341311]
545
+ - Updated dependencies [899bb5e]
546
+ - Updated dependencies [5a7a1dd]
547
+ - Updated dependencies [2c7c80a]
548
+ - Updated dependencies [25fcfe0]
549
+ - Updated dependencies [75f1dbd]
550
+ - Updated dependencies [0de2332]
551
+ - Updated dependencies [4b9bfe6]
552
+ - Updated dependencies [3f19f57]
553
+ - Updated dependencies [2d79bd0]
554
+ - Updated dependencies [d50f18c]
555
+ - Updated dependencies [19278d4]
556
+ - Updated dependencies [51f6403]
557
+ - Updated dependencies [6ec0857]
558
+ - Updated dependencies [b764a3c]
559
+ - Updated dependencies [cc0205d]
560
+ - Updated dependencies [bdb8753]
561
+ - Updated dependencies [54d9ead]
562
+ - Updated dependencies [94dc987]
563
+ - Updated dependencies [6e548d9]
564
+ - Updated dependencies [57338f5]
565
+ - Updated dependencies [b9175e9]
566
+ - Updated dependencies [253ba66]
567
+ - Updated dependencies [50c0657]
568
+ - Updated dependencies [f1ca82d]
569
+ - Updated dependencies [622a4f8]
570
+ - Updated dependencies [687a9be]
571
+ - Updated dependencies [98628f7]
572
+ - Updated dependencies [ca309b6]
573
+ - Updated dependencies [3fe08cb]
574
+ - Updated dependencies [a86edce]
575
+ - Updated dependencies [8363cb8]
576
+ - Updated dependencies [c5b62c9]
577
+ - Updated dependencies [f4c0244]
578
+ - Updated dependencies [9ab269c]
579
+ - Updated dependencies [f6eea6f]
580
+ - Updated dependencies [c130173]
581
+ - Updated dependencies [2dbeccf]
582
+ - Updated dependencies [f0f7511]
583
+ - Updated dependencies [c5b6f15]
584
+ - Updated dependencies [cc7289f]
585
+ - Updated dependencies [114e38a]
586
+ - Updated dependencies [c590dd9]
587
+ - Updated dependencies [2abffd2]
588
+ - Updated dependencies [8a30e96]
589
+ - Updated dependencies [9499263]
590
+ - Updated dependencies [d7e7208]
591
+ - Updated dependencies [a63ded3]
592
+ - Updated dependencies [182fcfd]
593
+ - Updated dependencies [0c9d563]
594
+ - Updated dependencies [aed2034]
595
+ - Updated dependencies [16420f9]
596
+ - Updated dependencies [11680b6]
597
+ - Updated dependencies [223d36c]
598
+ - Updated dependencies [7b91a44]
599
+ - Updated dependencies [ac65b5b]
600
+ - Updated dependencies [2599c19]
601
+ - Updated dependencies [fef89dc]
602
+ - Updated dependencies [fb54f77]
603
+ - Updated dependencies [f0d0fba]
604
+ - Updated dependencies [6d126fd]
605
+ - Updated dependencies [afcfef8]
606
+ - Updated dependencies [e23a39c]
607
+ - Updated dependencies [1102fd6]
608
+ - Updated dependencies [cd1b85b]
609
+ - Updated dependencies [77f9c63]
610
+ - Updated dependencies [905083b]
611
+ - Updated dependencies [6b99ced]
612
+ - Updated dependencies [8387c20]
613
+ - Updated dependencies [c328259]
614
+ - Updated dependencies [f1433a9]
615
+ - Updated dependencies [d3fc2f3]
616
+ - Updated dependencies [3325191]
617
+ - Updated dependencies [4617b45]
618
+ - Updated dependencies [0e2d878]
619
+ - Updated dependencies [54067cc]
620
+ - Updated dependencies [57d6371]
621
+ - Updated dependencies [1740c28]
622
+ - Updated dependencies [7c1c7c4]
623
+ - Updated dependencies [11ef1ad]
624
+ - @rcarls/rc-accordion@0.7.0
625
+ - @rcarls/rc-adaptive-menu@0.7.0
626
+ - @rcarls/rc-menu-button@0.7.0
627
+ - @rcarls/rc-fab-menu@0.7.0
628
+ - @rcarls/rc-select@0.7.0
629
+ - @rcarls/rc-combobox@0.7.0
630
+ - @rcarls/rc-popover@0.7.0
631
+ - @rcarls/rc-tooltip@0.7.0
632
+ - @rcarls/rc-app-bar@0.7.0
633
+ - @rcarls/rc-bottom-sheet@0.7.0
634
+ - @rcarls/rc-button@0.7.0
635
+ - @rcarls/rc-chip-group@0.7.0
636
+ - @rcarls/rc-chip@0.7.0
637
+ - @rcarls/rc-list@0.7.0
638
+ - @rcarls/rc-navigation-bar@0.7.0
639
+ - @rcarls/rc-navigation-rail@0.7.0
640
+ - @rcarls/rc-card@0.7.0
641
+ - @rcarls/rc-carousel@0.7.0
642
+ - @rcarls/rc-dialog@0.7.0
643
+ - @rcarls/rc-disclosure@0.7.0
644
+ - @rcarls/rc-fab@0.7.0
645
+ - @rcarls/rc-field@0.7.0
646
+ - @rcarls/rc-listbox@0.7.0
647
+ - @rcarls/rc-markdown-editor@0.7.0
648
+ - @rcarls/rc-menu@0.7.0
649
+ - @rcarls/rc-menubar@0.7.0
650
+ - @rcarls/rc-progress@0.7.0
651
+ - @rcarls/rc-range-slider@0.7.0
652
+ - @rcarls/rc-scroller@0.7.0
653
+ - @rcarls/rc-search-bar@0.7.0
654
+ - @rcarls/rc-segmented-button@0.7.0
655
+ - @rcarls/rc-slider@0.7.0
656
+ - @rcarls/rc-snackbar@0.7.0
657
+ - @rcarls/rc-splitter@0.7.0
658
+ - @rcarls/rc-switch@0.7.0
659
+ - @rcarls/rc-textarea@0.7.0
660
+ - @rcarls/rc-toolbar@0.7.0
661
+ - @rcarls/rc-transfer-list@0.7.0
662
+ - @rcarls/rc-virtual-canvas@0.7.0
663
+ - @rcarls/rc-virtual-scroller@0.7.0
664
+
665
+ ## 0.6.0
666
+
667
+ ### Minor Changes
668
+
669
+ - 7382c71: Add a priority-aware action toolbar that moves original controls into an
670
+ overflow menu. Which actions are promoted is a purely declarative computation
671
+ from `max-shown` and each action's `data-priority`/authored `slot`, with no
672
+ runtime measurement of the toolbar's or its children's rendered size: a
673
+ consumer whose promoted count needs to react to available space owns that
674
+ decision and writes the resulting `max-shown` value down. Include controlled
675
+ and uncontrolled open state, keyboard navigation, light dismissal, and a
676
+ non-Popover fallback.
677
+
678
+ Fix `--rc-adaptive-menu-touch-target-overlap-inline-start`/`-end`: the host's
679
+ own `max-inline-size: 100%` self-referenced a shrink-to-fit ancestor's
680
+ already-margin-reduced auto size (an app bar's own trailing group, for
681
+ example), quietly clamping the host back down and canceling the overlap out
682
+ from under it. The cap now grows by the overlap amount so it only ever bounds
683
+ the host's real content.
684
+
685
+ - ffcbf11: Add adaptive chip-group layouts, native-backed filter chips, and shared
686
+ input-chip rendering. Native-backed chips preserve controlled host state,
687
+ follow form resets when uncontrolled, and accept native link actions. Groups
688
+ restore author-owned chip variants when coordination ends. Keep search input
689
+ chrome inside the search surface and align contextual icon sizes with Material 3.
690
+ - b639e04: Add coordinated list and list-item layout tokens so container queries can
691
+ stack unchanged content regions while preserving shared subgrid alignment.
692
+
693
+ Breaking for the pre-1.0 carousel API: remove the redundant
694
+ `variant="hero|multi-browse"` attribute and property. The variant only
695
+ changed slide geometry, which is already controlled by
696
+ `--rc-carousel-slide-size`. Remove `variant="hero"` without replacement;
697
+ replace `variant="multi-browse"` with
698
+ `--rc-carousel-slide-size: min(75%, 300px)`.
699
+
700
+ - 40f9776: Add an APG carousel built on native CSS scroll snap, with optional navigation,
701
+ pagination, mouse dragging, looping, and consumer-controlled slide sizing.
702
+ Preserve controlled active-index behavior after rejected swipes, keep visual
703
+ loop clones inert and out of forms, and degrade safely without intersection
704
+ observation.
705
+ - a108336: Add shared-column `rc-list` and `rc-list-item` elements with standard and
706
+ segmented appearances, default content truncation, and native-backed single or
707
+ multiple selection coordination. Restore author-owned item state when native
708
+ selection coordination ends.
709
+ - 509ee64: Add `rc-progress`, a native `<progress>` enhancer with a formatted value
710
+ display, a track and fill you can restyle with CSS custom properties, and a
711
+ built-in fix for the indeterminate/undefined-binding footgun.
712
+
713
+ Keep the native element as the uncontrolled source of truth, support releasing
714
+ a controlled value, and react to live native `value`/`max` changes. Preserve a
715
+ native determinate value while `indeterminate` temporarily removes its
716
+ attribute.
717
+
718
+ The bar renders at its intended height with no `display` attribute set,
719
+ matching its own documented default: previously the track/fill/native
720
+ `<progress>` are all absolutely positioned, contributing nothing to the
721
+ control's normal-flow height, so with no value-display text sharing its grid
722
+ row to give it one, the whole bar collapsed to 0px.
723
+
724
+ - d67efde: Add a native-host scroll region with optional centered content and fullbleed
725
+ layout tracks, aggregate framework typings, RTL-aware boundary state, and
726
+ Material layout defaults.
727
+ - 6683eb9: Add shared, lifecycle-safe click delegation and let interactive list items
728
+ forward plain surface clicks to same-root native action targets while
729
+ preserving nested and modified clicks.
730
+ - 30eb232: Add icon-only activation-area sizing and Material icon-button variants. Align menu
731
+ selection and submenu affordances, and keep anchored popups within the viewport
732
+ across native and fallback positioning.
733
+ - f099b02: Add declarative horizontal cards with a two-fifths media column and symmetric
734
+ row and column grid coordination properties.
735
+
736
+ ### Patch Changes
737
+
738
+ - e0de31d: Avoid scheduling a redundant carousel update during the initial Lit lifecycle
739
+ while retaining initial pagination and dynamic slide synchronization.
740
+ - 57370e4: Align component metadata, aggregate framework typings, development-time native-child
741
+ validation, controlled menu state, package declarations, and public documentation before the
742
+ next release.
743
+ - Updated dependencies [a108336]
744
+ - Updated dependencies [7382c71]
745
+ - Updated dependencies [ffcbf11]
746
+ - Updated dependencies [b639e04]
747
+ - Updated dependencies [40f9776]
748
+ - Updated dependencies [a108336]
749
+ - Updated dependencies [509ee64]
750
+ - Updated dependencies [d67efde]
751
+ - Updated dependencies [b6f52a2]
752
+ - Updated dependencies [e0de31d]
753
+ - Updated dependencies [6683eb9]
754
+ - Updated dependencies [7adbd76]
755
+ - Updated dependencies [57370e4]
756
+ - Updated dependencies [ee7ba6c]
757
+ - Updated dependencies [30eb232]
758
+ - Updated dependencies [7382c71]
759
+ - Updated dependencies [b6f52a2]
760
+ - Updated dependencies [53baa54]
761
+ - Updated dependencies [53baa54]
762
+ - Updated dependencies [f099b02]
763
+ - Updated dependencies [0a462c5]
764
+ - Updated dependencies [30eb232]
765
+ - Updated dependencies [d67efde]
766
+ - Updated dependencies [985067e]
767
+ - Updated dependencies [57370e4]
768
+ - @rcarls/rc-card@0.6.0
769
+ - @rcarls/rc-list@0.6.0
770
+ - @rcarls/rc-adaptive-menu@0.6.0
771
+ - @rcarls/rc-menu@0.6.0
772
+ - @rcarls/rc-menu-button@0.6.0
773
+ - @rcarls/rc-chip-group@0.6.0
774
+ - @rcarls/rc-chip@0.6.0
775
+ - @rcarls/rc-select@0.6.0
776
+ - @rcarls/rc-combobox@0.6.0
777
+ - @rcarls/rc-search-bar@0.6.0
778
+ - @rcarls/rc-carousel@0.6.0
779
+ - @rcarls/rc-progress@0.6.0
780
+ - @rcarls/rc-scroller@0.6.0
781
+ - @rcarls/rc-app-bar@0.6.0
782
+ - @rcarls/rc-button@0.6.0
783
+ - @rcarls/rc-disclosure@0.6.0
784
+ - @rcarls/rc-bottom-sheet@0.6.0
785
+ - @rcarls/rc-textarea@0.6.0
786
+ - @rcarls/rc-dialog@0.6.0
787
+ - @rcarls/rc-fab-menu@0.6.0
788
+ - @rcarls/rc-range-slider@0.6.0
789
+ - @rcarls/rc-slider@0.6.0
790
+ - @rcarls/rc-toolbar@0.6.0
791
+ - @rcarls/rc-virtual-canvas@0.6.0
792
+ - @rcarls/rc-menubar@0.6.0
793
+ - @rcarls/rc-markdown-editor@0.6.0
794
+ - @rcarls/rc-fab@0.6.0
795
+ - @rcarls/rc-listbox@0.6.0
796
+ - @rcarls/rc-navigation-bar@0.6.0
797
+ - @rcarls/rc-navigation-rail@0.6.0
798
+ - @rcarls/rc-splitter@0.6.0
799
+ - @rcarls/rc-transfer-list@0.6.0
800
+ - @rcarls/rc-accordion@0.6.0
801
+ - @rcarls/rc-segmented-button@0.6.0
802
+ - @rcarls/rc-snackbar@0.6.0
803
+ - @rcarls/rc-switch@0.6.0
804
+
3
805
  ## 0.5.0
4
806
 
5
807
  ### Minor Changes