@fusion.dev/helix 0.145.0 → 0.147.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 (291) hide show
  1. package/custom-elements.json +13218 -3717
  2. package/dist/accordion/item/accordion-item.css.js +4 -92
  3. package/dist/accordion/item/accordion-item.d.ts +8 -0
  4. package/dist/accordion/root/accordion-root.css.js +2 -28
  5. package/dist/announcement/root/announcement-root.css.js +10 -154
  6. package/dist/announcement/root/announcement-root.d.ts +3 -0
  7. package/dist/app-header/root/app-header-root.css.js +2 -118
  8. package/dist/area-chart/root/area-chart-root.css.js +4 -94
  9. package/dist/area-chart/root/area-chart-root.d.ts +1 -0
  10. package/dist/aura/root/aura-root.css.js +2 -54
  11. package/dist/aura/root/aura-root.d.ts +21 -9
  12. package/dist/aura/root/aura-root.js +23 -12
  13. package/dist/avatar/group/avatar-group.css.js +5 -36
  14. package/dist/avatar/group/avatar-group.d.ts +3 -0
  15. package/dist/avatar/root/avatar-root.css.js +1 -53
  16. package/dist/avatar/root/avatar-root.d.ts +2 -0
  17. package/dist/badge/root/badge-root.css.js +17 -142
  18. package/dist/badge/root/badge-root.d.ts +20 -0
  19. package/dist/badge/root/badge-root.js +6 -0
  20. package/dist/bar-chart/root/bar-chart-root.css.js +8 -292
  21. package/dist/blockquote/root/blockquote-root.css.js +1 -43
  22. package/dist/blockquote/root/blockquote-root.d.ts +2 -0
  23. package/dist/breadcrumbs/breadcrumb/breadcrumb.css.js +13 -98
  24. package/dist/breadcrumbs/root/breadcrumbs-root.css.js +7 -21
  25. package/dist/breadcrumbs/root/breadcrumbs-root.d.ts +18 -0
  26. package/dist/breadcrumbs/root/breadcrumbs-root.js +4 -0
  27. package/dist/button/root/button-root.css.js +16 -196
  28. package/dist/button/root/button-root.d.ts +3 -0
  29. package/dist/button-group/root/button-group-root.css.js +2 -52
  30. package/dist/callout/root/callout-root.css.js +5 -137
  31. package/dist/callout/root/callout-root.d.ts +8 -2
  32. package/dist/canvas/node/canvas-node.css.js +10 -367
  33. package/dist/canvas/root/canvas-root.css.js +7 -270
  34. package/dist/card/root/card-root.css.js +5 -134
  35. package/dist/card/root/card-root.d.ts +6 -0
  36. package/dist/carousel/root/carousel-root.css.js +20 -386
  37. package/dist/chat/composer/chat-composer.css.js +4 -105
  38. package/dist/chat/message/chat-message.css.js +5 -301
  39. package/dist/chat/message/chat-message.d.ts +5 -0
  40. package/dist/chat/message/chat-message.js +2 -1
  41. package/dist/chat/root/chat-root.css.js +5 -155
  42. package/dist/chat/root/chat-root.d.ts +2 -0
  43. package/dist/chat/root/chat-root.js +2 -1
  44. package/dist/chat/typing.css.d.ts +1 -0
  45. package/dist/chat/typing.css.js +25 -0
  46. package/dist/checkbox/root/checkbox-root.css.js +12 -162
  47. package/dist/checkbox/root/checkbox-root.d.ts +2 -1
  48. package/dist/checkbox-group/root/checkbox-group-root.css.js +1 -27
  49. package/dist/code/root/code-root.css.js +3 -25
  50. package/dist/code/root/code-root.d.ts +2 -0
  51. package/dist/code-block/root/code-block-root.css.js +9 -250
  52. package/dist/code-block/root/code-block-root.d.ts +2 -1
  53. package/dist/color-input/root/color-input-root.css.js +5 -104
  54. package/dist/color-picker/root/color-picker-root.css.js +39 -329
  55. package/dist/color-picker/root/color-picker-root.d.ts +3 -0
  56. package/dist/combobox/root/combobox-root.css.js +8 -147
  57. package/dist/command/root/command-root.css.js +3 -74
  58. package/dist/copy-button/root/copy-button-root.css.js +5 -36
  59. package/dist/copy-button/root/copy-button-root.d.ts +7 -0
  60. package/dist/data-table/root/data-table-root.css.js +24 -241
  61. package/dist/data-table/root/data-table-root.d.ts +12 -0
  62. package/dist/date-input/root/date-input-root.css.js +8 -93
  63. package/dist/date-picker/root/date-picker-root.css.js +16 -278
  64. package/dist/date-picker/root/date-picker-root.d.ts +1 -0
  65. package/dist/description-list/item/description-list-item.css.js +1 -41
  66. package/dist/description-list/item/description-list-item.d.ts +7 -0
  67. package/dist/description-list/root/description-list-root.css.js +1 -34
  68. package/dist/description-list/root/description-list-root.d.ts +1 -0
  69. package/dist/dialog/root/dialog-root.css.js +7 -221
  70. package/dist/dialog/root/dialog-root.d.ts +3 -0
  71. package/dist/divider/root/divider-root.css.js +6 -81
  72. package/dist/donut-chart/root/donut-chart-root.css.js +7 -174
  73. package/dist/donut-chart/root/donut-chart-root.d.ts +3 -0
  74. package/dist/drawer/root/drawer-root.css.js +14 -193
  75. package/dist/drawer/root/drawer-root.d.ts +5 -0
  76. package/dist/drilldown/item/drilldown-item.css.js +4 -51
  77. package/dist/drilldown/item/drilldown-item.d.ts +7 -0
  78. package/dist/drilldown/root/drilldown-root.css.js +8 -109
  79. package/dist/drilldown/root/drilldown-root.d.ts +10 -0
  80. package/dist/element-events.generated.js +19 -6
  81. package/dist/empty/root/empty-root.css.js +2 -42
  82. package/dist/file-input/root/file-input-root.css.js +7 -172
  83. package/dist/file-input/root/file-input-root.d.ts +15 -0
  84. package/dist/filter-input/chip/filter-chip.css.js +2 -84
  85. package/dist/filter-input/field/filter-field.css.js +1 -3
  86. package/dist/filter-input/menu/filter-menu.css.js +1 -3
  87. package/dist/filter-input/operator/filter-operator.css.js +1 -3
  88. package/dist/filter-input/root/filter-input-root.css.js +6 -112
  89. package/dist/filter-input/root/filter-input-root.d.ts +5 -0
  90. package/dist/flex/root/flex-root.css.js +4 -198
  91. package/dist/flex/root/flex-root.d.ts +19 -8
  92. package/dist/format-date/root/format-date-root.css.js +1 -13
  93. package/dist/graph/root/graph-root.css.js +12 -444
  94. package/dist/graph/root/graph-root.d.ts +8 -0
  95. package/dist/grid/root/grid-root.css.js +1 -171
  96. package/dist/grid/root/grid-root.d.ts +4 -1
  97. package/dist/heatmap/root/heatmap-root.css.js +8 -155
  98. package/dist/heatmap/root/heatmap-root.d.ts +2 -0
  99. package/dist/icon/index.d.ts +1 -1
  100. package/dist/icon/root/icon-root.css.js +1 -18
  101. package/dist/icon/root/index.d.ts +1 -1
  102. package/dist/icon-button/root/icon-button-root.css.js +63 -186
  103. package/dist/icon-button/root/icon-button-root.d.ts +5 -0
  104. package/dist/image/root/image-root.css.js +7 -65
  105. package/dist/image/root/image-root.d.ts +3 -0
  106. package/dist/input/root/input-root.css.js +6 -79
  107. package/dist/kbd/root/kbd-root.css.js +2 -44
  108. package/dist/kbd/root/kbd-root.d.ts +9 -0
  109. package/dist/legend/root/legend-root.css.js +9 -106
  110. package/dist/legend/root/legend-root.d.ts +2 -0
  111. package/dist/lightbox/item/lightbox-item.css.js +1 -33
  112. package/dist/lightbox/root/lightbox-root.css.js +40 -144
  113. package/dist/line-chart/root/line-chart-root.css.js +4 -154
  114. package/dist/line-chart/root/line-chart-root.d.ts +3 -0
  115. package/dist/list/item/list-item.css.js +2 -94
  116. package/dist/list/root/list-root.css.js +4 -88
  117. package/dist/listbox/root/listbox-root.css.js +4 -102
  118. package/dist/listbox/root/listbox-root.d.ts +1 -0
  119. package/dist/loader/root/loader-root.css.js +5 -171
  120. package/dist/loader/root/loader-root.d.ts +2 -0
  121. package/dist/map/area/map-area.css.js +1 -23
  122. package/dist/map/buildings/map-buildings.css.js +1 -26
  123. package/dist/map/contours/map-contours.css.js +2 -5
  124. package/dist/map/landcover/map-landcover.css.js +1 -4
  125. package/dist/map/marker/map-marker.css.js +14 -327
  126. package/dist/map/points/map-points.css.js +1 -86
  127. package/dist/map/position/map-position.css.js +8 -227
  128. package/dist/map/raster/map-raster.css.js +1 -3
  129. package/dist/map/root/map-root.css.js +10 -352
  130. package/dist/map/route/map-route.css.js +1 -24
  131. package/dist/map/terrain/map-terrain.css.js +3 -7
  132. package/dist/megamenu/root/megamenu-root.css.js +15 -163
  133. package/dist/megamenu/root/megamenu-root.d.ts +19 -0
  134. package/dist/menu/item/menu-item.css.js +9 -111
  135. package/dist/menu/item/menu-item.d.ts +1 -0
  136. package/dist/menu/root/menu-root.css.js +1 -110
  137. package/dist/menu/section/menu-section.css.js +1 -13
  138. package/dist/meter/root/meter-root.css.js +20 -207
  139. package/dist/meter/root/meter-root.d.ts +4 -0
  140. package/dist/navigation/root/navigation-root.css.js +2 -54
  141. package/dist/navigation/root/navigation-root.d.ts +7 -0
  142. package/dist/notifications/group/notification-group.css.js +1 -61
  143. package/dist/notifications/notification/notification.css.js +17 -264
  144. package/dist/notifications/root/notifications-root.css.js +7 -119
  145. package/dist/notifications/root/notifications-root.d.ts +3 -1
  146. package/dist/number-input/root/number-input-root.css.js +10 -100
  147. package/dist/number-input/root/number-input-root.d.ts +8 -0
  148. package/dist/object-inspector/root/object-inspector-root.css.js +11 -166
  149. package/dist/option/group/option-group.css.js +1 -22
  150. package/dist/option/index.d.ts +1 -0
  151. package/dist/option/index.js +1 -0
  152. package/dist/option/root/option-root.css.js +3 -85
  153. package/dist/option/separator/option-separator.css.d.ts +1 -0
  154. package/dist/option/separator/option-separator.css.js +3 -0
  155. package/dist/option/separator/option-separator.d.ts +26 -0
  156. package/dist/option/separator/option-separator.js +16 -0
  157. package/dist/orb/root/orb-root.css.js +1 -41
  158. package/dist/orb/root/orb-root.d.ts +14 -6
  159. package/dist/orb/root/orb-root.js +16 -27
  160. package/dist/outline/root/outline-root.css.js +24 -122
  161. package/dist/outline/root/outline-root.d.ts +17 -4
  162. package/dist/pagination/root/pagination-root.css.js +9 -105
  163. package/dist/pagination/size/pagination-size.css.js +1 -22
  164. package/dist/pagination/summary/pagination-summary.css.js +1 -7
  165. package/dist/pin-input/root/pin-input-root.css.js +2 -73
  166. package/dist/pin-input/root/pin-input-root.d.ts +12 -2
  167. package/dist/popover/root/popover-root.css.js +6 -127
  168. package/dist/progress/root/progress-root.css.js +7 -228
  169. package/dist/progress/root/progress-root.d.ts +5 -0
  170. package/dist/qr-code/root/qr-code-root.css.js +1 -57
  171. package/dist/quote/root/quote-root.css.js +1 -17
  172. package/dist/quote/root/quote-root.d.ts +2 -0
  173. package/dist/radio/group/radio-group.css.js +1 -21
  174. package/dist/radio/root/radio-root.css.js +5 -192
  175. package/dist/radio/root/radio-root.d.ts +2 -1
  176. package/dist/rating/root/rating-root.css.js +4 -117
  177. package/dist/sandbox/frame.d.ts +5 -3
  178. package/dist/sandbox/frame.js +20 -6
  179. package/dist/sandbox/index.d.ts +1 -0
  180. package/dist/sandbox/preview/sandbox-preview.css.js +1 -12
  181. package/dist/sandbox/preview/sandbox-preview.d.ts +19 -3
  182. package/dist/sandbox/preview/sandbox-preview.js +17 -11
  183. package/dist/sandbox/root/sandbox-root.css.js +3 -70
  184. package/dist/sandbox/root/sandbox-root.d.ts +16 -4
  185. package/dist/sandbox/root/sandbox-root.js +29 -50
  186. package/dist/sandbox/source/sandbox-source.css.js +3 -25
  187. package/dist/sandbox/source/sandbox-source.d.ts +40 -0
  188. package/dist/sandbox/source/sandbox-source.js +22 -0
  189. package/dist/sandbox/status-bar/sandbox-status-bar.css.js +1 -21
  190. package/dist/sandbox/terminal/sandbox-terminal.css.js +5 -106
  191. package/dist/sandbox/terminal/sandbox-terminal.d.ts +14 -2
  192. package/dist/sandbox/terminal/sandbox-terminal.js +20 -6
  193. package/dist/sandbox/tokens.d.ts +39 -0
  194. package/dist/sandbox/tokens.js +9 -0
  195. package/dist/sandbox/toolbar/sandbox-toolbar.css.js +1 -36
  196. package/dist/scatter-chart/root/scatter-chart-root.css.js +11 -137
  197. package/dist/scatter-chart/root/scatter-chart-root.d.ts +3 -0
  198. package/dist/scroll-area/root/scroll-area-root.css.js +14 -181
  199. package/dist/select/root/select-root.css.js +4 -124
  200. package/dist/shared/chart/series.css.js +1 -36
  201. package/dist/shared/chart/terminus.css.js +1 -47
  202. package/dist/shared/chart/tooltip.css.js +1 -68
  203. package/dist/shared/collection/state.css.js +1 -9
  204. package/dist/shared/field/field-frame.css.js +3 -33
  205. package/dist/shared/field/field-inline.css.js +1 -4
  206. package/dist/shared/field/field-segments.css.js +1 -39
  207. package/dist/shared/field/field-stacked.css.js +1 -5
  208. package/dist/shared/field/field.css.js +3 -57
  209. package/dist/shared/floating/entrance.css.js +3 -34
  210. package/dist/shared/floating/panel.css.js +2 -17
  211. package/dist/shared/glyph/glyph.css.js +1 -5
  212. package/dist/shared/live/live.css.js +1 -8
  213. package/dist/shared/tags/tags.css.js +1 -39
  214. package/dist/shared/viewport/viewport.css.js +8 -135
  215. package/dist/skeleton/root/skeleton-root.css.js +12 -120
  216. package/dist/skeleton/root/skeleton-root.d.ts +1 -0
  217. package/dist/skip-link/root/skip-link-root.css.js +2 -35
  218. package/dist/skip-link/root/skip-link-root.d.ts +3 -3
  219. package/dist/slider/root/slider-root.css.js +35 -320
  220. package/dist/slider/root/slider-root.d.ts +2 -0
  221. package/dist/sparkline/root/sparkline-root.css.js +10 -96
  222. package/dist/sparkline/root/sparkline-root.d.ts +8 -0
  223. package/dist/sparkline/root/sparkline-root.js +2 -1
  224. package/dist/speed-dial/item/speed-dial-item.css.js +6 -74
  225. package/dist/speed-dial/item/speed-dial-item.d.ts +3 -0
  226. package/dist/speed-dial/root/speed-dial-root.css.js +3 -144
  227. package/dist/speed-dial/root/speed-dial-root.d.ts +7 -1
  228. package/dist/speed-dial/root/speed-dial-root.js +0 -1
  229. package/dist/splitter/root/splitter-root.css.js +11 -176
  230. package/dist/stat/group/stat-group.css.js +1 -36
  231. package/dist/stat/root/stat-root.css.js +3 -58
  232. package/dist/steps/root/steps-root.css.js +13 -70
  233. package/dist/steps/root/steps-root.d.ts +5 -0
  234. package/dist/steps/step/step.css.js +5 -156
  235. package/dist/switch/root/switch-root.css.js +2 -110
  236. package/dist/table/cell/table-cell.css.js +1 -33
  237. package/dist/table/column/table-column.css.js +7 -105
  238. package/dist/table/root/table-root.css.js +1 -43
  239. package/dist/table/row/table-row.css.js +6 -18
  240. package/dist/table/row/table-row.d.ts +2 -0
  241. package/dist/tabs/panel/tab-panel.css.js +2 -17
  242. package/dist/tabs/root/tabs-root.css.js +6 -177
  243. package/dist/tabs/root/tabs-root.d.ts +4 -0
  244. package/dist/tabs/tab/tab.css.js +10 -51
  245. package/dist/tabs/tab/tab.d.ts +7 -0
  246. package/dist/tag/group/tag-group.css.js +1 -5
  247. package/dist/tag/root/tag-root.css.js +1 -166
  248. package/dist/tag/root/tag-root.d.ts +2 -0
  249. package/dist/text/clamp.d.ts +5 -2
  250. package/dist/text/clamp.js +3 -1
  251. package/dist/text/root/text-root.css.js +11 -206
  252. package/dist/text/root/text-root.d.ts +2 -1
  253. package/dist/textarea/root/textarea-root.css.js +3 -44
  254. package/dist/time-input/root/time-input-root.css.js +7 -106
  255. package/dist/time-picker/root/time-picker-root.css.js +10 -134
  256. package/dist/time-picker/root/time-picker-root.d.ts +1 -0
  257. package/dist/timeline/group/timeline-group.css.js +1 -31
  258. package/dist/timeline/item/timeline-item.css.js +3 -134
  259. package/dist/timeline/root/timeline-root.css.js +1 -66
  260. package/dist/toast/item/toast-item.css.js +8 -240
  261. package/dist/toast/root/toast-root.css.js +1 -85
  262. package/dist/toast/root/toast-root.d.ts +1 -0
  263. package/dist/toast/root/toast-root.js +3 -1
  264. package/dist/toggle/group/toggle-group.css.js +9 -125
  265. package/dist/toggle/group/toggle-group.d.ts +6 -1
  266. package/dist/toggle/root/toggle-root.css.js +1 -23
  267. package/dist/toggle/root/toggle-root.d.ts +6 -0
  268. package/dist/toolbar/root/toolbar-root.css.js +1 -35
  269. package/dist/toolbar/root/toolbar-root.d.ts +4 -0
  270. package/dist/tooltip/root/tooltip-root.css.js +5 -101
  271. package/dist/tooltip/root/tooltip-root.d.ts +6 -0
  272. package/dist/tour/root/tour-root.css.js +2 -28
  273. package/dist/tour/stop/tour-stop.css.js +2 -109
  274. package/dist/tree/item/tree-item.css.js +14 -230
  275. package/dist/tree/item/tree-item.d.ts +9 -0
  276. package/dist/tree/root/tree-root.css.js +1 -40
  277. package/dist/trend/root/trend-root.css.js +5 -55
  278. package/dist/trend/root/trend-root.d.ts +2 -2
  279. package/dist/video/root/video-root.css.js +16 -398
  280. package/dist/video-playlist/item/video-playlist-item.css.js +12 -86
  281. package/dist/video-playlist/item/video-playlist-item.d.ts +12 -0
  282. package/dist/video-playlist/menu/video-playlist-menu.css.js +1 -41
  283. package/dist/video-playlist/root/video-playlist-root.css.js +1 -19
  284. package/dist/video-playlist/root/video-playlist-root.d.ts +2 -0
  285. package/dist/virtual-list/root/virtual-list-root.css.js +5 -28
  286. package/dist/virtual-list/root/virtual-list-root.d.ts +7 -1
  287. package/lint.json +1 -1
  288. package/package.json +9 -9
  289. package/types/jsx.d.ts +6997 -1154
  290. package/types/svelte.d.ts +1 -0
  291. package/types/vue.d.ts +2081 -271
package/types/vue.d.ts CHANGED
@@ -92,6 +92,7 @@ import type {
92
92
  HelixObjectInspector,
93
93
  HelixOptionGroup,
94
94
  HelixOption,
95
+ HelixOptionSeparator,
95
96
  HelixOrb,
96
97
  HelixOutline,
97
98
  HelixPagination,
@@ -164,6 +165,7 @@ import type {
164
165
  HelixDismissEvent,
165
166
  HelixScrolledEvent,
166
167
  HelixAuraFallbackEvent,
168
+ HelixPressEvent,
167
169
  HelixBeforeMoveEvent,
168
170
  HelixBeforeReconnectEvent,
169
171
  HelixBeforeRelabelEvent,
@@ -190,10 +192,10 @@ import type {
190
192
  HelixSampleStartEvent,
191
193
  HelixCreateEvent,
192
194
  HelixFilterEvent,
195
+ HelixLoadMoreEvent,
193
196
  HelixCopyErrorEvent,
194
197
  HelixExpandEvent,
195
198
  HelixFilteredEvent,
196
- HelixLoadMoreEvent,
197
199
  HelixNavigateEvent,
198
200
  HelixReorderEvent,
199
201
  HelixReorderedEvent,
@@ -222,8 +224,10 @@ import type {
222
224
  HelixMapTiltEvent,
223
225
  HelixMapZoomEvent,
224
226
  HelixToggleEvent,
227
+ HelixBandEvent,
225
228
  HelixReadEvent,
226
229
  HelixCompleteEvent,
230
+ HelixPreviewEvent,
227
231
  HelixConsoleEvent,
228
232
  HelixBeforeEditEvent,
229
233
  HelixBeforePanelResizeEvent,
@@ -237,6 +241,7 @@ import type {
237
241
  HelixCollapseEvent,
238
242
  HelixResizedEvent,
239
243
  HelixTourAskEvent,
244
+ HelixTourStatusEvent,
240
245
  HelixLoadEvent,
241
246
  HelixEndEvent,
242
247
  HelixNextEvent,
@@ -349,18 +354,16 @@ too. */
349
354
  /** Whether find in page searches the section while it is closed, and opens it
350
355
  on a match.
351
356
 
352
- Off by default. A closed section is then `hidden="until-found"`, which
353
- hides through `content-visibility`, so a stylesheet that animates the
354
- section closed shows an empty box for the length of that animation. The
355
- accordion's own `hidden-until-found` turns it on for every section. */
357
+ Unset takes the accordion's `hidden-until-found`, which is on. Write
358
+ `hidden-until-found="false"` to keep find in page out of this section: a
359
+ closed section is then `hidden` and `inert`. */
356
360
  "hidden-until-found"?: (HelixAccordionItem["hiddenUntilFound"]) | undefined;
357
361
  /** Whether find in page searches the section while it is closed, and opens it
358
362
  on a match.
359
363
 
360
- Off by default. A closed section is then `hidden="until-found"`, which
361
- hides through `content-visibility`, so a stylesheet that animates the
362
- section closed shows an empty box for the length of that animation. The
363
- accordion's own `hidden-until-found` turns it on for every section. */
364
+ Unset takes the accordion's `hidden-until-found`, which is on. Write
365
+ `hidden-until-found="false"` to keep find in page out of this section: a
366
+ closed section is then `hidden` and `inert`. */
364
367
  hiddenUntilFound?: (HelixAccordionItem["hiddenUntilFound"]) | undefined;
365
368
  /** A group name. Opening an item closes the other items with the same name,
366
369
  as `<details name>` does.
@@ -423,12 +426,18 @@ Unset is 3. An item's own `heading-level` wins over this. */
423
426
  Unset is 3. An item's own `heading-level` wins over this. */
424
427
  headingLevel?: (HelixAccordion["headingLevel"]) | undefined;
425
428
  /** Whether find in page searches every closed section, and opens the one it
426
- matches in. Each item's own `hidden-until-found` turns it on for that item
427
- alone. */
429
+ matches in.
430
+
431
+ On by default, as in React Aria's disclosure. Write
432
+ `hidden-until-found="false"` to turn it off for every section; an item's
433
+ own `hidden-until-found` wins for that item. */
428
434
  "hidden-until-found"?: (HelixAccordion["hiddenUntilFound"]) | undefined;
429
435
  /** Whether find in page searches every closed section, and opens the one it
430
- matches in. Each item's own `hidden-until-found` turns it on for that item
431
- alone. */
436
+ matches in.
437
+
438
+ On by default, as in React Aria's disclosure. Write
439
+ `hidden-until-found="false"` to turn it off for every section; an item's
440
+ own `hidden-until-found` wins for that item. */
432
441
  hiddenUntilFound?: (HelixAccordion["hiddenUntilFound"]) | undefined;
433
442
  /** How many sections may be open at once.
434
443
 
@@ -644,6 +653,22 @@ percentages and its totals, such as `de` for `1.240` and `32 %`.
644
653
  Absent uses the runtime's own. The table's cells are shown as the table
645
654
  writes them, whatever this says. */
646
655
  locale?: (HelixAreaChart["locale"]) | undefined;
656
+ /** Where a reading the keys moved to stands among the readings, said after
657
+ it. `{position}` and `{count}` are replaced with the numbers, written in
658
+ `locale`.
659
+
660
+ Set it to the words of the page's language, such as `{position} von
661
+ {count}`, or to nothing to say no position. A slice or a series a
662
+ legend hid is not counted. */
663
+ "position-label"?: (HelixAreaChart["positionLabel"]) | undefined;
664
+ /** Where a reading the keys moved to stands among the readings, said after
665
+ it. `{position}` and `{count}` are replaced with the numbers, written in
666
+ `locale`.
667
+
668
+ Set it to the words of the page's language, such as `{position} von
669
+ {count}`, or to nothing to say no position. A slice or a series a
670
+ legend hid is not counted. */
671
+ positionLabel?: (HelixAreaChart["positionLabel"]) | undefined;
647
672
  /** How a band's edge gets from one reading to the next.
648
673
 
649
674
  Three values, and the class doc argues for each: `straight` is absent and
@@ -668,6 +693,13 @@ The same three values `LineChart` takes, with the same fallback: a bare
668
693
  rather than under them, because the bands are opaque and a rule under one is
669
694
  a rule nobody sees. */
670
695
  gridlines?: (HelixAreaChart["gridlines"]) | undefined;
696
+ /** Draws every band from zero, in front of the next, so a band's height is
697
+ its own part's amount and not its place in a stack.
698
+
699
+ Absent stacks the parts, so the top edge is the total. Set, the first
700
+ column is in front and the scale fits the largest part. Reflected, because
701
+ the styled tier lets the bands behind show through the ones in front. */
702
+ overlap?: (HelixAreaChart["overlap"]) | undefined;
671
703
  /** Draws each reading as a hundred percent, so each band shows its share of
672
704
  the total.
673
705
 
@@ -822,15 +854,17 @@ everyone, assigning a matching property rather than an attribute.
822
854
  takes no default**: `max = 0` would stamp `max="0"` onto every host that
823
855
  never asked for a limit, including on the server. */
824
856
  max?: (HelixAvatarGroup["max"]) | undefined;
825
- /** What a screen reader is told the count is, with `{count}` for the number.
857
+ /** What a screen reader is told the count is, with `{count}` for the number
858
+ and `{names}` for the people it stands for, by each avatar's `name`.
826
859
 
827
860
  The count shows "+3", which reads as "plus three" and says nothing about
828
- what was counted. */
861
+ what was counted, nor who. */
829
862
  "overflow-label"?: (HelixAvatarGroup["overflowLabel"]) | undefined;
830
- /** What a screen reader is told the count is, with `{count}` for the number.
863
+ /** What a screen reader is told the count is, with `{count}` for the number
864
+ and `{names}` for the people it stands for, by each avatar's `name`.
831
865
 
832
866
  The count shows "+3", which reads as "plus three" and says nothing about
833
- what was counted. */
867
+ what was counted, nor who. */
834
868
  overflowLabel?: (HelixAvatarGroup["overflowLabel"]) | undefined;
835
869
  };
836
870
 
@@ -866,6 +900,19 @@ replaces them when it arrives, so a slow connection shows who it is
866
900
  without a cached picture flashing initials first. Radix's `delayMs` is the
867
901
  same idea. */
868
902
  fallbackDelay?: (HelixAvatar["fallbackDelay"]) | undefined;
903
+ /** The letters shown where no picture loaded, such as `GH`, in place of the
904
+ ones taken from `name`.
905
+
906
+ For a name whose initials are not its first and last letters, or an
907
+ entity with a short mark of its own. Absent, the first letters of the
908
+ first and last words of `name` are shown. */
909
+ initials?: (HelixAvatar["initials"]) | undefined;
910
+ /** When the browser fetches the picture: `lazy` waits until it is near the
911
+ screen, as an `<img loading="lazy">` does, and `eager` fetches it at once.
912
+
913
+ Absent is the browser's own default, which is `eager`. `lazy` suits a long
914
+ list of people, most of them off screen. */
915
+ loading?: (HelixAvatar["loading"]) | undefined;
869
916
  /** Name of the person or entity.
870
917
 
871
918
  Used for the label and the initials. */
@@ -895,6 +942,19 @@ export type HelixAvatarVueEvents = {
895
942
  };
896
943
 
897
944
  export type HelixBadgeVueProps = {
945
+ /** An effect that draws the eye to the mark: `pulse` swells it in a loop and
946
+ `bounce` hops it, as Web Awesome's badge does.
947
+
948
+ Absent is still, which is right for almost every count: a mark that moves
949
+ is a mark that interrupts. Still for a reader who asked the system for
950
+ less motion, and while the mark is going away. */
951
+ attention?: (HelixBadge["attention"]) | undefined;
952
+ /** How strongly the mark is drawn: `solid`, `outlined` or `subtle`, `Tag`'s
953
+ axis.
954
+
955
+ Absent is `solid`, the tone's fill. `outlined` draws the fill as a ring on
956
+ the page's ground and `subtle` as a tint, both with the page's ink. */
957
+ emphasis?: (HelixBadge["emphasis"]) | undefined;
898
958
  /** Where the mark sits: a corner, `top-start`, `bottom-end` or `bottom-start`,
899
959
  or `inline`, in the line after the content.
900
960
 
@@ -916,10 +976,28 @@ color.
916
976
  `Announcement` gives for its own neutral: a generated page should be able to
917
977
  say what it means rather than express it by leaving an attribute off. */
918
978
  tone?: (HelixBadge["tone"]) | undefined;
979
+ /** `Intl.NumberFormat` options a count is written with, such as
980
+ `{"notation":"compact"}` for `1.2K`, written as JSON in the attribute.
981
+
982
+ Absent, a count is shown as it was given. Text that is not a number is
983
+ shown as it is either way. */
984
+ "format-options"?: (HelixBadge["formatOptions"]) | undefined;
985
+ /** `Intl.NumberFormat` options a count is written with, such as
986
+ `{"notation":"compact"}` for `1.2K`, written as JSON in the attribute.
987
+
988
+ Absent, a count is shown as it was given. Text that is not a number is
989
+ shown as it is either way. */
990
+ formatOptions?: (HelixBadge["formatOptions"]) | undefined;
919
991
  /** The badge's name, read by screen readers.
920
992
 
921
- Required for a dot, which has no text to read. */
993
+ Required for a dot, which has no text to read. `{count}` is replaced with
994
+ what the badge shows, so `label="{count} unread"` reads "8 unread" and
995
+ stays current as `value` changes, with no label of yours to keep in step. */
922
996
  label?: (HelixBadge["label"]) | undefined;
997
+ /** The locale a count is written in under `format-options`, such as `de`.
998
+
999
+ Absent uses the runtime's own. */
1000
+ locale?: (HelixBadge["locale"]) | undefined;
923
1001
  /** The largest number the badge shows.
924
1002
 
925
1003
  Past it the indicator reads `{max}+`. */
@@ -1068,6 +1146,22 @@ percentages and its totals, such as `de` for `1.240` and `32 %`.
1068
1146
  Absent uses the runtime's own. The table's cells are shown as the table
1069
1147
  writes them, whatever this says. */
1070
1148
  locale?: (HelixBarChart["locale"]) | undefined;
1149
+ /** Where a reading the keys moved to stands among the readings, said after
1150
+ it. `{position}` and `{count}` are replaced with the numbers, written in
1151
+ `locale`.
1152
+
1153
+ Set it to the words of the page's language, such as `{position} von
1154
+ {count}`, or to nothing to say no position. A slice or a series a
1155
+ legend hid is not counted. */
1156
+ "position-label"?: (HelixBarChart["positionLabel"]) | undefined;
1157
+ /** Where a reading the keys moved to stands among the readings, said after
1158
+ it. `{position}` and `{count}` are replaced with the numbers, written in
1159
+ `locale`.
1160
+
1161
+ Set it to the words of the page's language, such as `{position} von
1162
+ {count}`, or to nothing to say no position. A slice or a series a
1163
+ legend hid is not counted. */
1164
+ positionLabel?: (HelixBarChart["positionLabel"]) | undefined;
1071
1165
  /** Which gridlines are drawn across the plot, if any.
1072
1166
 
1073
1167
  Absent draws none. `value` rules the axis the columns are *measured* on,
@@ -1158,6 +1252,15 @@ scales at once is a rule that means nothing. The tooltip is unaffected: it
1158
1252
  has always shown every column's own number, which is the reader's way out
1159
1253
  of any scale question the picture raises. */
1160
1254
  secondary?: (HelixBarChart["secondary"]) | undefined;
1255
+ /** Stacks a category's columns into one, each series standing on the ones
1256
+ before it, so the column's height is the category's total.
1257
+
1258
+ Absent stands them side by side, as it always did. A negative reading
1259
+ hangs below zero on the negatives before it, so neither direction hides
1260
+ the other. The scale fits the stacks. A series
1261
+ in `lines` is still a line, measured on its own reading; columns on the
1262
+ second scale stack among themselves. */
1263
+ stacked?: (HelixBarChart["stacked"]) | undefined;
1161
1264
  };
1162
1265
 
1163
1266
  export type HelixBarChartVueEvents = {};
@@ -1201,9 +1304,34 @@ The consumer's decision. */
1201
1304
  export type HelixBreadcrumbVueEvents = {};
1202
1305
 
1203
1306
  export type HelixBreadcrumbsVueProps = {
1307
+ /** How the two halves of a split crumb are told apart. A split crumb is one
1308
+ with a control in its `end` slot, such as a switcher's menu trigger.
1309
+
1310
+ - `plain` is the default. The halves are text at rest, like every other
1311
+ crumb. While one half is under the pointer, both halves take a light fill
1312
+ and that half takes the full hover fill.
1313
+ - `outlined` draws a hairline between the halves, at rest and under the
1314
+ pointer, the way an outlined surface keeps its edge at rest.
1315
+
1316
+ The other crumbs look the same under either value. */
1317
+ separation?: (HelixBreadcrumbs["separation"]) | undefined;
1318
+ /** The name of the button that shows a folded trail's hidden crumbs. `{count}`
1319
+ is replaced by how many it shows. Translate it with the page. */
1320
+ "expand-label"?: (HelixBreadcrumbs["expandLabel"]) | undefined;
1321
+ /** The name of the button that shows a folded trail's hidden crumbs. `{count}`
1322
+ is replaced by how many it shows. Translate it with the page. */
1323
+ expandLabel?: (HelixBreadcrumbs["expandLabel"]) | undefined;
1204
1324
  /** The landmark's name, read by screen readers. An `aria-label` on the host
1205
1325
  wins over it. */
1206
1326
  label?: (HelixBreadcrumbs["label"]) | undefined;
1327
+ /** The most crumbs a trail drawn from `items` shows before it folds its middle
1328
+ into one, counting the first and the last. Unset, it never folds. At least
1329
+ 2, so the first crumb and the current page always show. */
1330
+ "max-items"?: (HelixBreadcrumbs["maxItems"] | `${number}`) | undefined;
1331
+ /** The most crumbs a trail drawn from `items` shows before it folds its middle
1332
+ into one, counting the first and the last. Unset, it never folds. At least
1333
+ 2, so the first crumb and the current page always show. */
1334
+ maxItems?: (HelixBreadcrumbs["maxItems"]) | undefined;
1207
1335
  /** The trail as data, drawn as crumbs before any you slot. The last item is the
1208
1336
  current page.
1209
1337
 
@@ -1252,6 +1380,12 @@ column. */
1252
1380
 
1253
1381
  export type HelixButtonGroupVueEvents = {};
1254
1382
 
1383
+ /** `HelixButton` component event */
1384
+ export type HelixButtonElementEvent<E = Event> = TypedEvent<HelixButton, E>;
1385
+ /** `helix-press` event type */
1386
+ export type HelixButtonHelixPressElementEvent =
1387
+ HelixButtonElementEvent<HelixPressEvent>;
1388
+
1255
1389
  export type HelixButtonVueProps = {
1256
1390
  /** How much of the available width the button takes.
1257
1391
 
@@ -1322,33 +1456,23 @@ is the platform's `commandfor`. */
1322
1456
  commandFor?: (HelixButton["commandFor"]) | undefined;
1323
1457
  /** Where this button's submission goes, overriding the form's own.
1324
1458
 
1325
- **The five `form*` overrides work by writing the form and putting it back**,
1326
- which is the only mechanism available and is closer to the platform than it
1327
- sounds. `requestSubmit(submitter)` is how a native submitter carries these,
1328
- and it refuses ours twice over: the inner `<button>` is `type="button"` so
1329
- it is not a submit button, and it sits in this shadow root so its form owner
1330
- is not the consumer's form. Both throw. So the submission is started with no
1331
- submitter and the overrides are applied to the form for the duration of it.
1332
-
1333
- The whole submit algorithm runs synchronously inside `requestSubmit()`, so
1334
- the window is one call and a `finally` closes it whether or not a listener
1335
- refused. What a `submit` handler observes during that window is the form a
1336
- native submitter would have given it, which is the point. */
1459
+ **The five `form*` overrides ride on a native submit button that stands in
1460
+ for this one**, because `requestSubmit(submitter)` refuses the inner
1461
+ `<button>` twice over: it is `type="button"`, and it sits in this shadow
1462
+ root, so its form owner is not the consumer's form. The stand-in is a
1463
+ hidden `<button type="submit">` in the form for the one synchronous call,
1464
+ so the platform applies the overrides to that submission alone and leaves
1465
+ the form as it was. See `submitAs`. */
1337
1466
  formaction?: (HelixButton["formAction"]) | undefined;
1338
1467
  /** Where this button's submission goes, overriding the form's own.
1339
1468
 
1340
- **The five `form*` overrides work by writing the form and putting it back**,
1341
- which is the only mechanism available and is closer to the platform than it
1342
- sounds. `requestSubmit(submitter)` is how a native submitter carries these,
1343
- and it refuses ours twice over: the inner `<button>` is `type="button"` so
1344
- it is not a submit button, and it sits in this shadow root so its form owner
1345
- is not the consumer's form. Both throw. So the submission is started with no
1346
- submitter and the overrides are applied to the form for the duration of it.
1347
-
1348
- The whole submit algorithm runs synchronously inside `requestSubmit()`, so
1349
- the window is one call and a `finally` closes it whether or not a listener
1350
- refused. What a `submit` handler observes during that window is the form a
1351
- native submitter would have given it, which is the point. */
1469
+ **The five `form*` overrides ride on a native submit button that stands in
1470
+ for this one**, because `requestSubmit(submitter)` refuses the inner
1471
+ `<button>` twice over: it is `type="button"`, and it sits in this shadow
1472
+ root, so its form owner is not the consumer's form. The stand-in is a
1473
+ hidden `<button type="submit">` in the form for the one synchronous call,
1474
+ so the platform applies the overrides to that submission alone and leaves
1475
+ the form as it was. See `submitAs`. */
1352
1476
  formAction?: (HelixButton["formAction"]) | undefined;
1353
1477
  /** How the submission is encoded, overriding the form's own. */
1354
1478
  formenctype?: (HelixButton["formEnctype"]) | undefined;
@@ -1394,13 +1518,10 @@ a press, so focus stays where the reader left it. */
1394
1518
  /** The value this button submits under its own `name`, as a native submit
1395
1519
  button does.
1396
1520
 
1397
- **Reported for exactly the submission this button starts and not otherwise.**
1521
+ **Sent with exactly the submission this button starts and not otherwise.**
1398
1522
  A native submit button contributes `name=value` only when it is the one
1399
- that submitted, and every other button on the form contributes nothing. A
1400
- form-associated element reporting a value continuously would contribute on
1401
- every submission whoever started it, which is a different feature wearing
1402
- the same name, so `submit` below sets it, submits, and clears it inside one
1403
- synchronous call.
1523
+ that submitted, and every other button on the form contributes nothing,
1524
+ which is what the native button standing in for this one at submit does.
1404
1525
 
1405
1526
  `CopyButton` has a `value` of its own meaning the text to put on the
1406
1527
  clipboard, which is not this and is why it is declared there rather than
@@ -1486,7 +1607,10 @@ invoker without an id in the same tree needs. */
1486
1607
  commandForElement?: (HelixButton["commandForElement"]) | undefined;
1487
1608
  };
1488
1609
 
1489
- export type HelixButtonVueEvents = {};
1610
+ export type HelixButtonVueEvents = {
1611
+ /** Fired when a press acts, with `detail.pointerType` saying what pressed the button. */
1612
+ "helix-press": HelixButtonHelixPressElementEvent;
1613
+ };
1490
1614
 
1491
1615
  /** `HelixCallout` component event */
1492
1616
  export type HelixCalloutElementEvent<E = Event> = TypedEvent<HelixCallout, E>;
@@ -1646,9 +1770,10 @@ format does too, and moves them with it. Its `label` is drawn above it. */
1646
1770
  /** The card's name as text. A group shows it, and another card's connections
1647
1771
  read it out.
1648
1772
 
1649
- A group needs one because it has no text of its own; a card that has text
1650
- is named by it, and one holding a picture or a figure is named by nothing
1651
- short enough to read out in another card's connections. */
1773
+ A group needs one because it has no text of its own. A card is named by
1774
+ it where it is set, and by its content where it is not, so a screen reader
1775
+ moving between cards hears each one's name. Set it on a card holding a
1776
+ picture or a figure, which has no words short enough to name it. */
1652
1777
  label?: (HelixCanvasNode["label"]) | undefined;
1653
1778
  /** The name that connections and events use for this card, unique on its
1654
1779
  board.
@@ -2164,6 +2289,12 @@ edge, so a surface with its own color and neither edge nor lift would
2164
2289
  otherwise be unsayable while being one of the four things a theme can ask
2165
2290
  for. */
2166
2291
  separation?: (HelixCard["separation"]) | undefined;
2292
+ /** The card's accessible name, which makes it a named group.
2293
+
2294
+ The name `Stat.Group` and the other named regions take, set through
2295
+ `ElementInternals`. `aria-label` and `aria-labelledby` written on the card
2296
+ name it too, and win over this, as an author's attribute does. */
2297
+ label?: (HelixCard["label"]) | undefined;
2167
2298
  /** Places the media after the content. By default it comes before.
2168
2299
 
2169
2300
  **A figure that concludes a card is the same region as one that opens it**,
@@ -2634,6 +2765,14 @@ it to leave the role as `group`. */
2634
2765
  /** The word screen readers announce in place of a slide's role, set as
2635
2766
  `aria-roledescription`. Translate it with the rest of your text. */
2636
2767
  slideRoleLabel?: (HelixCarousel["slideRoleLabel"]) | undefined;
2768
+ /** How many slides Previous, Next, the indicators, rotation, and a drag move
2769
+ at a time. Unset moves one. The track stops at every `slides-per-move`th
2770
+ position from the first, and at the last. */
2771
+ "slides-per-move"?: (HelixCarousel["slidesPerMove"] | `${number}`) | undefined;
2772
+ /** How many slides Previous, Next, the indicators, rotation, and a drag move
2773
+ at a time. Unset moves one. The track stops at every `slides-per-move`th
2774
+ position from the first, and at the last. */
2775
+ slidesPerMove?: (HelixCarousel["slidesPerMove"]) | undefined;
2637
2776
  /** The name of the rotation control while rotation is stopped. */
2638
2777
  "start-label"?: (HelixCarousel["startLabel"]) | undefined;
2639
2778
  /** The name of the rotation control while rotation is stopped. */
@@ -2854,6 +2993,22 @@ say that without the component knowing what a row looks like. */
2854
2993
  "loading-text"?: (HelixChat["loadingText"]) | undefined;
2855
2994
  /** The text shown and announced while the rows load. */
2856
2995
  loadingText?: (HelixChat["loadingText"]) | undefined;
2996
+ /** Declarations for the turns from `turns` by each author, keyed by `author`,
2997
+ as JSON in the attribute: `{"ada": "--chat-message-background-color: …"}`.
2998
+
2999
+ The message drawn for each turn by that author takes them as its `style`,
3000
+ so the custom properties a message reads, its fill, text color, radius and
3001
+ padding, change for that author alone. A turn by an author with no entry
3002
+ takes none, and looks as it did. JSON that does not parse is no entries. */
3003
+ "author-styles"?: (HelixChat["authorStyles"]) | undefined;
3004
+ /** Declarations for the turns from `turns` by each author, keyed by `author`,
3005
+ as JSON in the attribute: `{"ada": "--chat-message-background-color: …"}`.
3006
+
3007
+ The message drawn for each turn by that author takes them as its `style`,
3008
+ so the custom properties a message reads, its fill, text color, radius and
3009
+ padding, change for that author alone. A turn by an author with no entry
3010
+ takes none, and looks as it did. JSON that does not parse is no entries. */
3011
+ authorStyles?: (HelixChat["authorStyles"]) | undefined;
2857
3012
  /** Whether the transcript opens pinned to the bottom, when `pinned` is not
2858
3013
  set.
2859
3014
 
@@ -2918,6 +3073,23 @@ one of paragraphs, and a reader who has scrolled up by half a message has
2918
3073
  not left. The same distance from the top is what counts as reaching the
2919
3074
  history. */
2920
3075
  threshold?: (HelixChat["threshold"]) | undefined;
3076
+ /** The name a screen reader gives a turn with neither an author it can say
3077
+ nor a time: a turn by `them` with no `author-label`, say. */
3078
+ "turn-label"?: (HelixChat["turnLabel"]) | undefined;
3079
+ /** The name a screen reader gives a turn with neither an author it can say
3080
+ nor a time: a turn by `them` with no `author-label`, say. */
3081
+ turnLabel?: (HelixChat["turnLabel"]) | undefined;
3082
+ /** Who on the other side is typing, by name, or empty while nobody is.
3083
+
3084
+ Set it from your connection, and clear it when they stop or send. The
3085
+ status band says it with `typing-label`. */
3086
+ typing?: (HelixChat["typing"]) | undefined;
3087
+ /** What the status band says while someone is typing. `{author}` is the
3088
+ name in `typing`. */
3089
+ "typing-label"?: (HelixChat["typingLabel"]) | undefined;
3090
+ /** What the status band says while someone is typing. `{author}` is the
3091
+ name in `typing`. */
3092
+ typingLabel?: (HelixChat["typingLabel"]) | undefined;
2921
3093
  /** The turns as data, for a transcript too long to hold as elements.
2922
3094
 
2923
3095
  Drawn a window at a time, so the log needs a block size. Set it or declare
@@ -3081,9 +3253,13 @@ Not reflected: the attribute is the consumer's input and stays as they
3081
3253
  wrote it, and `:state(checked)` carries the resolved state for
3082
3254
  stylesheets. */
3083
3255
  checked?: (HelixCheckbox["checked"]) | undefined;
3084
- /** Whether the control starts checked. A form reset returns it to this state. */
3256
+ /** Whether the control starts checked. A form reset returns it to this state,
3257
+ and to the `checked` attribute where this one is not written, as a native
3258
+ checkbox resets to the `checked` it declares. */
3085
3259
  "default-checked"?: (HelixCheckbox["defaultChecked"]) | undefined;
3086
- /** Whether the control starts checked. A form reset returns it to this state. */
3260
+ /** Whether the control starts checked. A form reset returns it to this state,
3261
+ and to the `checked` attribute where this one is not written, as a native
3262
+ checkbox resets to the `checked` it declares. */
3087
3263
  defaultChecked?: (HelixCheckbox["defaultChecked"]) | undefined;
3088
3264
  /** Whether a reader can see and focus the control and cannot change it. A
3089
3265
  read-only control still submits its value.
@@ -3192,6 +3368,10 @@ significant in code and a wrapped line reads as two. For prose-like code, such a
3192
3368
  a log line, a wrap reads better than a scroll. Line numbers keep the lines
3193
3369
  unwrapped, since a wrapped line would take one number and several rows. */
3194
3370
  wrap?: (HelixCodeBlock["wrap"]) | undefined;
3371
+ /** The expand button's words while the block shows every line. */
3372
+ "collapse-label"?: (HelixCodeBlock["collapseLabel"]) | undefined;
3373
+ /** The expand button's words while the block shows every line. */
3374
+ collapseLabel?: (HelixCodeBlock["collapseLabel"]) | undefined;
3195
3375
  /** The copy button's name and tooltip text after a copy. */
3196
3376
  "copied-label"?: (HelixCodeBlock["copiedLabel"]) | undefined;
3197
3377
  /** The copy button's name and tooltip text after a copy. */
@@ -3213,11 +3393,28 @@ In a diff, that is each file's own name. */
3213
3393
  Reflected, because the stylesheet paints a diff differently from code, and
3214
3394
  `false` reflects as no attribute at all. */
3215
3395
  diff?: (HelixCodeBlock["diff"]) | undefined;
3396
+ /** Whether a block whose height is capped takes a button that shows every
3397
+ line, and fewer again.
3398
+
3399
+ The cap is the page's, `--code-block-max-block-size` on the styled tier;
3400
+ the button is drawn only while the cap hides something, measured as the
3401
+ block lays out. Not for a diff, whose files each scroll on their own. */
3402
+ expandable?: (HelixCodeBlock["expandable"]) | undefined;
3403
+ /** The expand button's words while the cap hides lines. */
3404
+ "expand-label"?: (HelixCodeBlock["expandLabel"]) | undefined;
3405
+ /** The expand button's words while the cap hides lines. */
3406
+ expandLabel?: (HelixCodeBlock["expandLabel"]) | undefined;
3216
3407
  /** The block's name, usually a file name or a language.
3217
3408
 
3218
3409
  In a diff, each file is named from the patch, and this names a patch that
3219
3410
  carries no name of its own. */
3220
3411
  label?: (HelixCodeBlock["label"]) | undefined;
3412
+ /** The language the code is written in, such as `ts` or `css`, handed to
3413
+ `highlight` as its second argument.
3414
+
3415
+ Absent hands it an empty string. It draws nothing of its own: the block's
3416
+ name is `label`. */
3417
+ language?: (HelixCodeBlock["language"]) | undefined;
3221
3418
  /** Whether the lines are numbered in a gutter beside the code.
3222
3419
 
3223
3420
  The numbers are hidden from the accessibility tree and are not part of a
@@ -3281,13 +3478,24 @@ than defaulted, so the host carries no attribute the consumer did not write. */
3281
3478
  /** Turns the code into highlighted markup, which the block draws in place of
3282
3479
  the plain text.
3283
3480
 
3284
- Called with the code as written and returning HTML, such as the output of
3285
- Shiki's `codeToHtml` or Prism's `highlight`. **The markup is drawn as
3286
- given**, so it has to escape the code it was handed, which those
3287
- highlighters do. Bind the language in the function you pass. The code
3288
- stays in the slot, so the copy button copies it as written and a reader
3289
- without the script still has it. Not called on a server, which has no code
3290
- to read, nor for a diff. */
3481
+ Called with the code as written and the block's `language`, and returning
3482
+ HTML, such as the output of Shiki's `codeToHtml` or Prism's `highlight`.
3483
+ One function serves every block on a page, each block saying its own
3484
+ language:
3485
+
3486
+ ```js
3487
+ for (const block of document.querySelectorAll('helix-code-block')) {
3488
+ block.highlight = (code, lang) => codeToHtml(code, { lang, theme: 'github-light' })
3489
+ }
3490
+ ```
3491
+
3492
+ **The markup is drawn as given**, so it has to escape the code it was
3493
+ handed, which those highlighters do. A `<pre>` and `<code>` around the
3494
+ whole of it, which Shiki writes, are taken off, so the lines sit level
3495
+ with the gutter's numbers and the block keeps one tab stop. The code stays
3496
+ in the slot, so the copy button copies it as written and a reader without
3497
+ the script still has it. Not called on a server, which has no code to
3498
+ read, nor for a diff. */
3291
3499
  highlight?: (HelixCodeBlock["highlight"]) | undefined;
3292
3500
  };
3293
3501
 
@@ -3349,9 +3557,13 @@ hydration, or diffed by a framework, it comes back holding whatever the
3349
3557
  last reader did rather than what the author wrote. `:state(open)` carries
3350
3558
  the resolved state for stylesheets, which is what the mirror is for. */
3351
3559
  open?: (HelixColorInput["open"]) | undefined;
3352
- /** The value the control starts with. A form reset returns it to this value. */
3560
+ /** The value the control starts with. A form reset returns it to this value,
3561
+ and to the `value` attribute where this one is not written, as a native
3562
+ control resets to the `value` it declares. */
3353
3563
  "default-value"?: (HelixColorInput["defaultValue"]) | undefined;
3354
- /** The value the control starts with. A form reset returns it to this value. */
3564
+ /** The value the control starts with. A form reset returns it to this value,
3565
+ and to the `value` attribute where this one is not written, as a native
3566
+ control resets to the `value` it declares. */
3355
3567
  defaultValue?: (HelixColorInput["defaultValue"]) | undefined;
3356
3568
  /** The control's current value, which its form submits.
3357
3569
 
@@ -3467,6 +3679,9 @@ The trade is real and is the reason this is not the default: a swatch cannot
3467
3679
  be read or pasted into without opening the panel, which is worse for a form
3468
3680
  where the color is the answer rather than a setting. */
3469
3681
  variant?: (HelixColorInput["variant"]) | undefined;
3682
+ /** Draws the panel's hue as a wheel around the square, in place of the hue
3683
+ ramp. See Color Picker's `wheel`. */
3684
+ wheel?: (HelixColorInput["wheel"]) | undefined;
3470
3685
  /** Whether the control is disabled and cannot be used.
3471
3686
 
3472
3687
  Reflected, because the styled tier selects on it, and mirrored to
@@ -3529,9 +3744,26 @@ export type HelixColorPickerHelixSampleStartElementEvent =
3529
3744
  HelixColorPickerElementEvent<HelixSampleStartEvent>;
3530
3745
 
3531
3746
  export type HelixColorPickerVueProps = {
3532
- /** The value the control starts with. A form reset returns it to this value. */
3747
+ /** A message under the picker, such as what is wrong with the answer.
3748
+
3749
+ While set, the picker is invalid and does not submit, as a field's
3750
+ `feedback` is, it is marked invalid to a reader and to CSS, and the
3751
+ controls a reader answers with are described by it. */
3752
+ feedback?: (HelixColorPicker["feedback"]) | undefined;
3753
+ /** Whether the answer fails validation, marked on the controls a reader
3754
+ answers with and as `:state(invalid)`.
3755
+
3756
+ A flag a field that wraps the picker sets, since that field owns the
3757
+ label, the hint and the message; on its own, `feedback` both marks the
3758
+ picker and says why. */
3759
+ invalid?: (HelixColorPicker["invalid"]) | undefined;
3760
+ /** The value the control starts with. A form reset returns it to this value,
3761
+ and to the `value` attribute where this one is not written, as a native
3762
+ control resets to the `value` it declares. */
3533
3763
  "default-value"?: (HelixColorPicker["defaultValue"]) | undefined;
3534
- /** The value the control starts with. A form reset returns it to this value. */
3764
+ /** The value the control starts with. A form reset returns it to this value,
3765
+ and to the `value` attribute where this one is not written, as a native
3766
+ control resets to the `value` it declares. */
3535
3767
  defaultValue?: (HelixColorPicker["defaultValue"]) | undefined;
3536
3768
  /** The control's current value, which its form submits.
3537
3769
 
@@ -3645,14 +3877,6 @@ Only what is written. Everything is read whatever this says, so a picker on
3645
3877
  "hue-label"?: (HelixColorPicker["hueLabel"]) | undefined;
3646
3878
  /** What the hue channel is called. */
3647
3879
  hueLabel?: (HelixColorPicker["hueLabel"]) | undefined;
3648
- /** Whether the current selection fails validation.
3649
-
3650
- A flag rather than a message, the split Date Picker also draws. A flat
3651
- picker has no room of its own for a sentence: the field that wraps one owns
3652
- the label, the hint and the feedback, and a second message inside the panel
3653
- would be the same error said twice. What is left for the picker is the one
3654
- thing the field cannot draw from outside, the mark on the answer itself. */
3655
- invalid?: (HelixColorPicker["invalid"]) | undefined;
3656
3880
  /** What the lightness channel's field is called, in `channel-fields` with
3657
3881
  hsl. */
3658
3882
  "lightness-label"?: (HelixColorPicker["lightnessLabel"]) | undefined;
@@ -3806,6 +4030,14 @@ speaks it. Absent is the control's own sentence, in English. */
3806
4030
  named for the validity flag it reports, so a form in another language
3807
4031
  speaks it. Absent is the control's own sentence, in English. */
3808
4032
  valueMissingMessage?: (HelixColorPicker["valueMissingMessage"]) | undefined;
4033
+ /** Draws the hue as a wheel around the square, in place of the hue ramp, as
4034
+ React Aria's ColorWheel sits round its ColorArea.
4035
+
4036
+ The ring is one stop, a slider a reader turns with the arrow keys, Home
4037
+ and End, the same way round in either writing direction, and a press or a
4038
+ drag on it takes the hue in that direction. Off, the picker keeps its
4039
+ ramp. */
4040
+ wheel?: (HelixColorPicker["wheel"]) | undefined;
3809
4041
  /** Whether the control is disabled and cannot be used.
3810
4042
 
3811
4043
  Reflected, because the styled tier selects on it, and mirrored to
@@ -3869,6 +4101,9 @@ export type HelixComboboxHelixCreateElementEvent =
3869
4101
  /** `helix-filter` event type */
3870
4102
  export type HelixComboboxHelixFilterElementEvent =
3871
4103
  HelixComboboxElementEvent<HelixFilterEvent>;
4104
+ /** `helix-load-more` event type */
4105
+ export type HelixComboboxHelixLoadMoreElementEvent =
4106
+ HelixComboboxElementEvent<HelixLoadMoreEvent>;
3872
4107
 
3873
4108
  export type HelixComboboxVueProps = {
3874
4109
  /** Whether the element starts open. Ignored once `open` is written. */
@@ -3904,9 +4139,13 @@ as `+3`, does not say what it does. */
3904
4139
  "max-tags"?: (HelixCombobox["maxTags"] | `${number}`) | undefined;
3905
4140
  /** How many tokens to show before the rest become a count. */
3906
4141
  maxTags?: (HelixCombobox["maxTags"]) | undefined;
3907
- /** The value the control starts with. A form reset returns it to this value. */
4142
+ /** The value the control starts with. A form reset returns it to this value,
4143
+ and to the `value` attribute where this one is not written, as a native
4144
+ control resets to the `value` it declares. */
3908
4145
  "default-value"?: (HelixCombobox["defaultValue"]) | undefined;
3909
- /** The value the control starts with. A form reset returns it to this value. */
4146
+ /** The value the control starts with. A form reset returns it to this value,
4147
+ and to the `value` attribute where this one is not written, as a native
4148
+ control resets to the `value` it declares. */
3910
4149
  defaultValue?: (HelixCombobox["defaultValue"]) | undefined;
3911
4150
  /** The control's current value, which its form submits.
3912
4151
 
@@ -3986,10 +4225,34 @@ on it adds what was typed. */
3986
4225
  "empty-text"?: (HelixCombobox["emptyText"]) | undefined;
3987
4226
  /** Text shown when the filter hides every option. */
3988
4227
  emptyText?: (HelixCombobox["emptyText"]) | undefined;
4228
+ /** How long typing rests before the list is narrowed and `helix-filter` is
4229
+ sent, in milliseconds.
4230
+
4231
+ For options filtered on a server, where `helix-filter` starts a request: a
4232
+ delay sends one request for a word instead of one per letter. The arrow
4233
+ keys, Enter and Escape narrow at once on what was typed. `0` narrows on
4234
+ every keystroke. See Listbox's `filter-delay`. */
4235
+ "filter-delay"?: (HelixCombobox["filterDelay"] | `${number}`) | undefined;
4236
+ /** How long typing rests before the list is narrowed and `helix-filter` is
4237
+ sent, in milliseconds.
4238
+
4239
+ For options filtered on a server, where `helix-filter` starts a request: a
4240
+ delay sends one request for a word instead of one per letter. The arrow
4241
+ keys, Enter and Escape narrow at once on what was typed. `0` narrows on
4242
+ every keystroke. See Listbox's `filter-delay`. */
4243
+ filterDelay?: (HelixCombobox["filterDelay"]) | undefined;
3989
4244
  /** The list's name, read by screen readers. The list has no visible name. */
3990
4245
  "list-label"?: (HelixCombobox["listLabel"]) | undefined;
3991
4246
  /** The list's name, read by screen readers. The list has no visible name. */
3992
4247
  listLabel?: (HelixCombobox["listLabel"]) | undefined;
4248
+ /** What the list says when its options could not be loaded, such as after a
4249
+ request to a server fails. Empty is no error. Passed to the list, which
4250
+ shows it under any options there are and tells screen readers. */
4251
+ "load-error"?: (HelixCombobox["loadError"]) | undefined;
4252
+ /** What the list says when its options could not be loaded, such as after a
4253
+ request to a server fails. Empty is no error. Passed to the list, which
4254
+ shows it under any options there are and tells screen readers. */
4255
+ loadError?: (HelixCombobox["loadError"]) | undefined;
3993
4256
  /** Whether the options are still loading.
3994
4257
 
3995
4258
  Passed straight to the list, which is where the rows are and so where the
@@ -4017,6 +4280,22 @@ property the role does not support and no spec here ever asserted: the one
4017
4280
  that covers this says in as many words that telling the list is what this
4018
4281
  element is responsible for. */
4019
4282
  multiple?: (HelixCombobox["multiple"]) | undefined;
4283
+ /** The text shown when typing hides every one of the options, where there are
4284
+ some. Absent, `empty-text` shows. See Listbox's `no-results-text`. */
4285
+ "no-results-text"?: (HelixCombobox["noResultsText"]) | undefined;
4286
+ /** The text shown when typing hides every one of the options, where there are
4287
+ some. Absent, `empty-text` shows. See Listbox's `no-results-text`. */
4288
+ noResultsText?: (HelixCombobox["noResultsText"]) | undefined;
4289
+ /** What opens the list: `input`, typing or pressing Down; `focus`, also
4290
+ arriving in the field, by Tab or a press; or `manual`, only Down, Alt+Down
4291
+ or a press on the caret, so typing narrows a list the reader has asked
4292
+ for. React Aria's `menuTrigger`. */
4293
+ "open-on"?: (HelixCombobox["openOn"]) | undefined;
4294
+ /** What opens the list: `input`, typing or pressing Down; `focus`, also
4295
+ arriving in the field, by Tab or a press; or `manual`, only Down, Alt+Down
4296
+ or a press on the caret, so typing narrows a list the reader has asked
4297
+ for. React Aria's `menuTrigger`. */
4298
+ openOn?: (HelixCombobox["openOn"]) | undefined;
4020
4299
  /** Text shown while nothing has been chosen. */
4021
4300
  placeholder?: (HelixCombobox["placeholder"]) | undefined;
4022
4301
  /** Whether the choice is locked. A read-only combobox still submits its value.
@@ -4112,6 +4391,8 @@ export type HelixComboboxVueEvents = {
4112
4391
  "helix-create": HelixComboboxHelixCreateElementEvent;
4113
4392
  /** Fired as the user types, with the text the list is filtered by. Cancelable: cancel it to leave the list unfiltered and do the filtering yourself. */
4114
4393
  "helix-filter": HelixComboboxHelixFilterElementEvent;
4394
+ /** Fired once the list is scrolled within a screen of its end, once for each number of options, and not while `loading` is set. Add the next page and set `loading` while you fetch it. */
4395
+ "helix-load-more": HelixComboboxHelixLoadMoreElementEvent;
4115
4396
  /** Fired after the value changes. */
4116
4397
  input: HelixComboboxElementEvent;
4117
4398
  };
@@ -4130,6 +4411,9 @@ export type HelixCommandHelixBeforeOpenElementEvent =
4130
4411
  /** `helix-filter` event type */
4131
4412
  export type HelixCommandHelixFilterElementEvent =
4132
4413
  HelixCommandElementEvent<HelixFilterEvent>;
4414
+ /** `helix-load-more` event type */
4415
+ export type HelixCommandHelixLoadMoreElementEvent =
4416
+ HelixCommandElementEvent<HelixLoadMoreEvent>;
4133
4417
  /** `helix-select` event type */
4134
4418
  export type HelixCommandHelixSelectElementEvent =
4135
4419
  HelixCommandElementEvent<HelixSelectEvent>;
@@ -4164,7 +4448,9 @@ so a palette filtered on a server sends one `helix-filter` for a word.
4164
4448
  so a palette filtered on a server sends one `helix-filter` for a word.
4165
4449
  `0` filters on every keystroke. See Listbox's `filter-delay`. */
4166
4450
  filterDelay?: (HelixCommand["filterDelay"]) | undefined;
4167
- /** The key that opens the palette, written as `mod+k`, `shift+p`, or `k`.
4451
+ /** The key that opens the palette, written as `mod+k`, `shift+p`, or `k`,
4452
+ in Kbd's chord spelling: `mod` is Command or Control, `ctrl`, `cmd`,
4453
+ `alt` and `shift` the keys they name.
4168
4454
 
4169
4455
  Empty turns it off, for a consumer who opens the palette from a button or
4170
4456
  from their own shortcut handler. There is no list of defaults to fight
@@ -4172,6 +4458,14 @@ with: one key, said once. */
4172
4458
  hotkey?: (HelixCommand["hotkey"]) | undefined;
4173
4459
  /** Accessible name for the overlay, which has no visible heading. */
4174
4460
  label?: (HelixCommand["label"]) | undefined;
4461
+ /** What the list says when its commands could not be loaded, such as after a
4462
+ request to a server fails. Empty is no error. Passed to the list, which
4463
+ shows it under any commands there are and tells screen readers. */
4464
+ "load-error"?: (HelixCommand["loadError"]) | undefined;
4465
+ /** What the list says when its commands could not be loaded, such as after a
4466
+ request to a server fails. Empty is no error. Passed to the list, which
4467
+ shows it under any commands there are and tells screen readers. */
4468
+ loadError?: (HelixCommand["loadError"]) | undefined;
4175
4469
  /** Whether the commands are still loading, for a palette that asks a server
4176
4470
  for them as the user types.
4177
4471
 
@@ -4181,6 +4475,12 @@ Passed to the list, which shows `loading-text` and tells screen readers. */
4181
4475
  "loading-text"?: (HelixCommand["loadingText"]) | undefined;
4182
4476
  /** The text shown while the commands load. */
4183
4477
  loadingText?: (HelixCommand["loadingText"]) | undefined;
4478
+ /** The text shown when typing hides every one of the commands, where there are
4479
+ some. Absent, `empty-text` shows. See Listbox's `no-results-text`. */
4480
+ "no-results-text"?: (HelixCommand["noResultsText"]) | undefined;
4481
+ /** The text shown when typing hides every one of the commands, where there are
4482
+ some. Absent, `empty-text` shows. See Listbox's `no-results-text`. */
4483
+ noResultsText?: (HelixCommand["noResultsText"]) | undefined;
4184
4484
  /** The text shown in the filter field before anything is typed. */
4185
4485
  placeholder?: (HelixCommand["placeholder"]) | undefined;
4186
4486
  /** What a screen reader hears when typing leaves one command. `{count}` is
@@ -4208,6 +4508,8 @@ export type HelixCommandVueEvents = {
4208
4508
  "helix-before-open": HelixCommandHelixBeforeOpenElementEvent;
4209
4509
  /** Fired as the user types, with the text the list is filtered by. Cancelable: cancel it to leave the list unfiltered and filter the commands yourself, for example on a server while `loading` is set. */
4210
4510
  "helix-filter": HelixCommandHelixFilterElementEvent;
4511
+ /** Fired once the list is scrolled within a screen of its end, once for each number of commands, and not while `loading` is set. Add the next page and set `loading` while you fetch it. */
4512
+ "helix-load-more": HelixCommandHelixLoadMoreElementEvent;
4211
4513
  /** A command was chosen, with its `href` where the option is a link. Cancelable: cancel it to keep the palette open, and to keep the browser from following the link. */
4212
4514
  "helix-select": HelixCommandHelixSelectElementEvent;
4213
4515
  };
@@ -4223,6 +4525,9 @@ export type HelixCopyButtonHelixCopyElementEvent =
4223
4525
  /** `helix-copy-error` event type */
4224
4526
  export type HelixCopyButtonHelixCopyErrorElementEvent =
4225
4527
  HelixCopyButtonElementEvent<HelixCopyErrorEvent>;
4528
+ /** `helix-press` event type */
4529
+ export type HelixCopyButtonHelixPressElementEvent =
4530
+ HelixCopyButtonElementEvent<HelixPressEvent>;
4226
4531
 
4227
4532
  export type HelixCopyButtonVueProps = {
4228
4533
  /** How much fill the control is drawn with.
@@ -4264,6 +4569,12 @@ clipboard. */
4264
4569
  /** The button's name and tooltip text after a press that put nothing on the
4265
4570
  clipboard. */
4266
4571
  errorLabel?: (HelixCopyButton["errorLabel"]) | undefined;
4572
+ /** How long the confirmation or the failure stands, in milliseconds, before
4573
+ the button goes back to `label`. */
4574
+ "feedback-duration"?: (HelixCopyButton["feedbackDuration"] | `${number}`) | undefined;
4575
+ /** How long the confirmation or the failure stands, in milliseconds, before
4576
+ the button goes back to `label`. */
4577
+ feedbackDuration?: (HelixCopyButton["feedbackDuration"]) | undefined;
4267
4578
  /** The element to copy from, by its id: `key` for its text, `key[value]` for
4268
4579
  an attribute, and `key.value` for a property. Read at the press, and used
4269
4580
  in place of `value`. An element that is not there copies nothing, which is
@@ -4350,6 +4661,8 @@ export type HelixCopyButtonVueEvents = {
4350
4661
  "helix-copy": HelixCopyButtonHelixCopyElementEvent;
4351
4662
  /** Fired when a press put nothing on the clipboard: the browser did not allow the write, or there was nothing to copy. */
4352
4663
  "helix-copy-error": HelixCopyButtonHelixCopyErrorElementEvent;
4664
+ /** Fired when a press acts, with `detail.pointerType` saying what pressed the button. */
4665
+ "helix-press": HelixCopyButtonHelixPressElementEvent;
4353
4666
  };
4354
4667
 
4355
4668
  /** `HelixDataTable` component event */
@@ -4825,9 +5138,13 @@ as `+3`, does not say what it does. */
4825
5138
  "max-tags"?: (HelixDateInput["maxTags"] | `${number}`) | undefined;
4826
5139
  /** How many tokens to show before the rest become a count. */
4827
5140
  maxTags?: (HelixDateInput["maxTags"]) | undefined;
4828
- /** The value the control starts with. A form reset returns it to this value. */
5141
+ /** The value the control starts with. A form reset returns it to this value,
5142
+ and to the `value` attribute where this one is not written, as a native
5143
+ control resets to the `value` it declares. */
4829
5144
  "default-value"?: (HelixDateInput["defaultValue"]) | undefined;
4830
- /** The value the control starts with. A form reset returns it to this value. */
5145
+ /** The value the control starts with. A form reset returns it to this value,
5146
+ and to the `value` attribute where this one is not written, as a native
5147
+ control resets to the `value` it declares. */
4831
5148
  defaultValue?: (HelixDateInput["defaultValue"]) | undefined;
4832
5149
  /** The control's current value, which its form submits.
4833
5150
 
@@ -4946,7 +5263,11 @@ Saturday.
4946
5263
  Absent follows `locale`, where the engine knows the week of that language,
4947
5264
  and is Sunday otherwise. */
4948
5265
  firstDayOfWeek?: (HelixDateInput["firstDayOfWeek"]) | undefined;
4949
- /** The language tag for the names of months and days in the calendar. */
5266
+ /** The language tag for the field's order and words, and for the names of
5267
+ months and days in the calendar.
5268
+
5269
+ Absent is the page's: the `lang` of the nearest element with one, as
5270
+ Shoelace and Web Awesome read it, then the runtime's own. */
4950
5271
  locale?: (HelixDateInput["locale"]) | undefined;
4951
5272
  /** The latest date that can be chosen, as `YYYY-MM-DD`. */
4952
5273
  max?: (HelixDateInput["max"]) | undefined;
@@ -5142,9 +5463,26 @@ export type HelixDatePickerHelixNavigateElementEvent =
5142
5463
  HelixDatePickerElementEvent<HelixNavigateEvent>;
5143
5464
 
5144
5465
  export type HelixDatePickerVueProps = {
5145
- /** The value the control starts with. A form reset returns it to this value. */
5466
+ /** A message under the picker, such as what is wrong with the answer.
5467
+
5468
+ While set, the picker is invalid and does not submit, as a field's
5469
+ `feedback` is, it is marked invalid to a reader and to CSS, and the
5470
+ controls a reader answers with are described by it. */
5471
+ feedback?: (HelixDatePicker["feedback"]) | undefined;
5472
+ /** Whether the answer fails validation, marked on the controls a reader
5473
+ answers with and as `:state(invalid)`.
5474
+
5475
+ A flag a field that wraps the picker sets, since that field owns the
5476
+ label, the hint and the message; on its own, `feedback` both marks the
5477
+ picker and says why. */
5478
+ invalid?: (HelixDatePicker["invalid"]) | undefined;
5479
+ /** The value the control starts with. A form reset returns it to this value,
5480
+ and to the `value` attribute where this one is not written, as a native
5481
+ control resets to the `value` it declares. */
5146
5482
  "default-value"?: (HelixDatePicker["defaultValue"]) | undefined;
5147
- /** The value the control starts with. A form reset returns it to this value. */
5483
+ /** The value the control starts with. A form reset returns it to this value,
5484
+ and to the `value` attribute where this one is not written, as a native
5485
+ control resets to the `value` it declares. */
5148
5486
  defaultValue?: (HelixDatePicker["defaultValue"]) | undefined;
5149
5487
  /** The control's current value, which its form submits.
5150
5488
 
@@ -5191,13 +5529,12 @@ Absent follows `locale`, where the engine knows the week of that language
5191
5529
  Absent follows `locale`, where the engine knows the week of that language
5192
5530
  (Firefox does not), and is Sunday otherwise. */
5193
5531
  firstDayOfWeek?: (HelixDatePicker["firstDayOfWeek"]) | undefined;
5194
- /** Whether the current selection fails validation. */
5195
- invalid?: (HelixDatePicker["invalid"]) | undefined;
5196
5532
  /** Accessible name for the grid. */
5197
5533
  label?: (HelixDatePicker["label"]) | undefined;
5198
- /** Locale for month and day names.
5534
+ /** Locale for month and day names, and the day a week starts on.
5199
5535
 
5200
- Absent uses the runtime's own. */
5536
+ Absent is the page's: the `lang` of the nearest element with one, as
5537
+ Shoelace and Web Awesome read it, then the runtime's own. */
5201
5538
  locale?: (HelixDatePicker["locale"]) | undefined;
5202
5539
  /** Latest selectable date, as `YYYY-MM-DD`. */
5203
5540
  max?: (HelixDatePicker["max"]) | undefined;
@@ -5425,6 +5762,10 @@ The fallback of the `label` slot, so slotted content replaces it rather than
5425
5762
  appearing beside it. The value itself is the default slot: it is the half
5426
5763
  that varies and is often more than text. */
5427
5764
  label?: (HelixDescriptionListItem["label"]) | undefined;
5765
+ /** Says the values are several `<dd>` elements of your own, so the item
5766
+ draws no `<dd>` of its own around them, on the server too. Without it the
5767
+ item finds them once it runs, and the served markup wraps them until then. */
5768
+ several?: (HelixDescriptionListItem["several"]) | undefined;
5428
5769
  };
5429
5770
 
5430
5771
  export type HelixDescriptionListItemVueEvents = {};
@@ -5737,6 +6078,22 @@ percentages and its totals, such as `de` for `1.240` and `32 %`.
5737
6078
  Absent uses the runtime's own. The table's cells are shown as the table
5738
6079
  writes them, whatever this says. */
5739
6080
  locale?: (HelixDonutChart["locale"]) | undefined;
6081
+ /** Where a reading the keys moved to stands among the readings, said after
6082
+ it. `{position}` and `{count}` are replaced with the numbers, written in
6083
+ `locale`.
6084
+
6085
+ Set it to the words of the page's language, such as `{position} von
6086
+ {count}`, or to nothing to say no position. A slice or a series a
6087
+ legend hid is not counted. */
6088
+ "position-label"?: (HelixDonutChart["positionLabel"]) | undefined;
6089
+ /** Where a reading the keys moved to stands among the readings, said after
6090
+ it. `{position}` and `{count}` are replaced with the numbers, written in
6091
+ `locale`.
6092
+
6093
+ Set it to the words of the page's language, such as `{position} von
6094
+ {count}`, or to nothing to say no position. A slice or a series a
6095
+ legend hid is not counted. */
6096
+ positionLabel?: (HelixDonutChart["positionLabel"]) | undefined;
5740
6097
  /** The size of the hole in the middle of the ring.
5741
6098
 
5742
6099
  Absent is a ring with room for a total in it. `small` and `large` move the
@@ -5763,6 +6120,22 @@ word is not. Reflected, it wrote a value onto every host a script had set
5763
6120
  it on for nothing to read. `sweep` beside it is the converse and reflects,
5764
6121
  because the styled sheet selects on it. */
5765
6122
  hole?: (HelixDonutChart["hole"]) | undefined;
6123
+ /** Writes each slice's share on the slice, the `slice-label` part, so a
6124
+ reader sees the parts without a legend or a pointer: "29%" in the middle
6125
+ of the band.
6126
+
6127
+ Absent writes none. A slice under a twentieth of the whole takes no
6128
+ label, there being no room on it for one. A screen reader hears every
6129
+ share in the summary, and the labels are hidden from it. */
6130
+ "slice-labels"?: (HelixDonutChart["sliceLabels"]) | undefined;
6131
+ /** Writes each slice's share on the slice, the `slice-label` part, so a
6132
+ reader sees the parts without a legend or a pointer: "29%" in the middle
6133
+ of the band.
6134
+
6135
+ Absent writes none. A slice under a twentieth of the whole takes no
6136
+ label, there being no room on it for one. A screen reader hears every
6137
+ share in the summary, and the labels are hidden from it. */
6138
+ sliceLabels?: (HelixDonutChart["sliceLabels"]) | undefined;
5766
6139
  /** How much of the circle the whole occupies.
5767
6140
 
5768
6141
  Absent is the full turn. `half` is a semi-donut: the same shares spread
@@ -5857,6 +6230,17 @@ the property this component exists to keep.
5857
6230
  Absent by default, which is the platform's `auto` and this library's rule
5858
6231
  that a resting value is an attribute's absence. */
5859
6232
  closedBy?: (HelixDrawer["closedBy"]) | undefined;
6233
+ /** Draws a control that closes the drawer, in the corner where the title is.
6234
+
6235
+ Pressing it is `close()`, so it sends `helix-before-close` like every other
6236
+ way out. */
6237
+ dismissible?: (HelixDrawer["dismissible"]) | undefined;
6238
+ /** The close control's accessible name. Translate it with the rest of your
6239
+ interface. */
6240
+ "dismiss-label"?: (HelixDrawer["dismissLabel"]) | undefined;
6241
+ /** The close control's accessible name. Translate it with the rest of your
6242
+ interface. */
6243
+ dismissLabel?: (HelixDrawer["dismissLabel"]) | undefined;
5860
6244
  /** Accessible name for the panel. When it is empty, the heading in the
5861
6245
  `header` slot names the panel. */
5862
6246
  label?: (HelixDrawer["label"]) | undefined;
@@ -6000,6 +6384,21 @@ export type HelixDrilldownVueEvents = {
6000
6384
  };
6001
6385
 
6002
6386
  export type HelixEmptyVueProps = {
6387
+ /** The heading as words, such as "No results", drawn as a heading when
6388
+ nothing is slotted into `heading`.
6389
+
6390
+ Absent draws none, and the `heading` slot is the only heading. */
6391
+ heading?: (HelixEmpty["heading"]) | undefined;
6392
+ /** The level of the heading `heading` draws, from 1 to 6.
6393
+
6394
+ Absent is 3, the level of a heading inside a page's section. Set it to fit
6395
+ the outline the empty view sits in. A slotted heading keeps its own. */
6396
+ "heading-level"?: (HelixEmpty["headingLevel"] | `${number}`) | undefined;
6397
+ /** The level of the heading `heading` draws, from 1 to 6.
6398
+
6399
+ Absent is 3, the level of a heading inside a page's section. Set it to fit
6400
+ the outline the empty view sits in. A slotted heading keeps its own. */
6401
+ headingLevel?: (HelixEmpty["headingLevel"]) | undefined;
6003
6402
  /** Whether the state is announced when it appears.
6004
6403
 
6005
6404
  On by default: an empty view almost always replaces something that was
@@ -6064,6 +6463,12 @@ the field and does not reach that one. */
6064
6463
  A dropped file the list does not name is left out, because the picker's
6065
6464
  filter is the only check the platform makes and a drop never meets it. */
6066
6465
  accept?: (HelixFileInput["accept"]) | undefined;
6466
+ /** What a reader hears when a drop or a paste adds files, with `{names}` and
6467
+ `{count}` filled in. */
6468
+ "added-text"?: (HelixFileInput["addedText"]) | undefined;
6469
+ /** What a reader hears when a drop or a paste adds files, with `{names}` and
6470
+ `{count}` filled in. */
6471
+ addedText?: (HelixFileInput["addedText"]) | undefined;
6067
6472
  /** Which camera or microphone a mobile picker should offer, if any. */
6068
6473
  capture?: (HelixFileInput["capture"]) | undefined;
6069
6474
  /** Whether the picker chooses a folder, and the field takes every file in
@@ -6085,12 +6490,22 @@ refused. */
6085
6490
  maxFileSize?: (HelixFileInput["maxFileSize"]) | undefined;
6086
6491
  /** Whether more than one file can be chosen. */
6087
6492
  multiple?: (HelixFileInput["multiple"]) | undefined;
6493
+ /** The name of a file's progress bar, read by screen readers, with `{name}`
6494
+ filled in. A label with no `{name}` has it added after it. */
6495
+ "progress-label"?: (HelixFileInput["progressLabel"]) | undefined;
6496
+ /** The name of a file's progress bar, read by screen readers, with `{name}`
6497
+ filled in. A label with no `{name}` has it added after it. */
6498
+ progressLabel?: (HelixFileInput["progressLabel"]) | undefined;
6088
6499
  /** What a reader hears when files are refused, with `{count}` and `{names}`
6089
6500
  filled in. */
6090
6501
  "rejected-text"?: (HelixFileInput["rejectedText"]) | undefined;
6091
6502
  /** What a reader hears when files are refused, with `{count}` and `{names}`
6092
6503
  filled in. */
6093
6504
  rejectedText?: (HelixFileInput["rejectedText"]) | undefined;
6505
+ /** What a reader hears when a file is removed, with `{name}` filled in. */
6506
+ "removed-text"?: (HelixFileInput["removedText"]) | undefined;
6507
+ /** What a reader hears when a file is removed, with `{name}` filled in. */
6508
+ removedText?: (HelixFileInput["removedText"]) | undefined;
6094
6509
  /** The accessible name of the control that removes a file. `{name}` is
6095
6510
  replaced with the file's name.
6096
6511
 
@@ -6135,6 +6550,15 @@ imperatively later, and nothing is hydrating by then.
6135
6550
 
6136
6551
  Here rather than on each control. */
6137
6552
  name?: (HelixFileInput["name"]) | undefined;
6553
+ /** Draws a file's row in place of its name, size, and type: a Lit template, a
6554
+ string, or a DOM node, given the file and its place in the list. The
6555
+ remove button stays beside it. */
6556
+ renderFile?: (HelixFileInput["renderFile"]) | undefined;
6557
+ /** Your own step between taking files and holding them, such as shrinking an
6558
+ image, as Zag's file upload `transformFiles`. It is given the files taken
6559
+ from one pick, drop, or paste and returns the files to hold, or a promise
6560
+ of them. A promise that rejects refuses those files, with its message. */
6561
+ transformFiles?: (HelixFileInput["transformFiles"]) | undefined;
6138
6562
  /** Your own check on each arriving file, which returns why it is refused, or
6139
6563
  nothing to take it. A property, since a function cannot be an attribute. */
6140
6564
  validate?: (HelixFileInput["validate"]) | undefined;
@@ -6380,9 +6804,13 @@ as `+3`, does not say what it does. */
6380
6804
  "max-tags"?: (HelixFilterInput["maxTags"] | `${number}`) | undefined;
6381
6805
  /** How many tokens to show before the rest become a count. */
6382
6806
  maxTags?: (HelixFilterInput["maxTags"]) | undefined;
6383
- /** The value the control starts with. A form reset returns it to this value. */
6807
+ /** The value the control starts with. A form reset returns it to this value,
6808
+ and to the `value` attribute where this one is not written, as a native
6809
+ control resets to the `value` it declares. */
6384
6810
  "default-value"?: (HelixFilterInput["defaultValue"]) | undefined;
6385
- /** The value the control starts with. A form reset returns it to this value. */
6811
+ /** The value the control starts with. A form reset returns it to this value,
6812
+ and to the `value` attribute where this one is not written, as a native
6813
+ control resets to the `value` it declares. */
6386
6814
  defaultValue?: (HelixFilterInput["defaultValue"]) | undefined;
6387
6815
  /** The control's current value, which its form submits.
6388
6816
 
@@ -6578,11 +7006,15 @@ Named for the property it sets, the way `alignItems` is. `between` and
6578
7006
  `around` drop the `space-` prefix and nothing else does, because those two
6579
7007
  are the only values whose CSS spelling is two words. */
6580
7008
  justifyContent?: (HelixFlex["justifyContent"]) | undefined;
6581
- /** A common layout pattern: `cluster`, `split`, `flank` or `flank-end`.
7009
+ /** A common layout pattern: `cluster`, `split`, `flank`, `flank-end` or
7010
+ `switch`.
6582
7011
 
6583
7012
  Each sets the wrapping, alignment and spread it needs, and an attribute
6584
- you write as well wins over it. `flank` holds the first item at its own
6585
- width and gives the last one the rest, and `flank-end` does the reverse. */
7013
+ you write as well wins over it. `split` spreads the items as
7014
+ `justify-content: space-between` does, so a third item sits midway.
7015
+ `flank` holds the first item at its own width and gives the last one the
7016
+ rest, and `flank-end` does the reverse. `switch` puts the items in one
7017
+ row, or one to a line once the flex is narrower than `--flex-switch-at`. */
6586
7018
  layout?: (HelixFlex["layout"]) | undefined;
6587
7019
  /** Space between the lines of a wrapping row, or between the items of a
6588
7020
  column, named on the space scale. Wins over `gap` down the column. */
@@ -6631,6 +7063,17 @@ few characters and a date is not. */
6631
7063
  elapsed?: (HelixFormatDate["elapsed"]) | undefined;
6632
7064
  /** How the era is written, such as AD, where a date is shown. */
6633
7065
  era?: (HelixFormatDate["era"]) | undefined;
7066
+ /** Draws an `elapsed` or `relative` reading once and leaves it, where it
7067
+ would otherwise move on as it goes stale.
7068
+
7069
+ For a reading that describes a moment the page itself is about, such as
7070
+ "3 hours ago" in a report generated then, or a list a reader compares
7071
+ line by line while it should not change under them. The reading is taken
7072
+ when the element draws, and again whenever `date` or another option
7073
+ changes. Turned off, the reading catches up and moves on again.
7074
+ `sl-relative-time` and `wa-relative-time` keep still unless `sync` is
7075
+ set; this keeps moving unless `frozen` is. */
7076
+ frozen?: (HelixFormatDate["frozen"]) | undefined;
6634
7077
  /** How the hour is written, where a time of day is shown. */
6635
7078
  hour?: (HelixFormatDate["hour"]) | undefined;
6636
7079
  /** The clock a time of day is written on: `h12` or `h11` for twelve hours,
@@ -6647,7 +7090,8 @@ reader the same clock whatever their language. */
6647
7090
  hourCycle?: (HelixFormatDate["hourCycle"]) | undefined;
6648
7091
  /** The locale to format the timestamp in.
6649
7092
 
6650
- Empty is the runtime's own. */
7093
+ Absent is the page's: the `lang` of the nearest element with one, as
7094
+ Shoelace and Web Awesome read it, then the runtime's own. */
6651
7095
  locale?: (HelixFormatDate["locale"]) | undefined;
6652
7096
  /** How the minute is written, where a time of day is shown. */
6653
7097
  minute?: (HelixFormatDate["minute"]) | undefined;
@@ -7080,6 +7524,9 @@ export type HelixGridVueEvents = {};
7080
7524
 
7081
7525
  /** `HelixHeatmap` component event */
7082
7526
  export type HelixHeatmapElementEvent<E = Event> = TypedEvent<HelixHeatmap, E>;
7527
+ /** `helix-before-change` event type */
7528
+ export type HelixHeatmapHelixBeforeChangeElementEvent =
7529
+ HelixHeatmapElementEvent<HelixBeforeChangeEvent>;
7083
7530
  /** `helix-resize` event type */
7084
7531
  export type HelixHeatmapHelixResizeElementEvent =
7085
7532
  HelixHeatmapElementEvent<HelixResizeEvent>;
@@ -7105,6 +7552,26 @@ percentages and its totals, such as `de` for `1.240` and `32 %`.
7105
7552
  Absent uses the runtime's own. The table's cells are shown as the table
7106
7553
  writes them, whatever this says. */
7107
7554
  locale?: (HelixHeatmap["locale"]) | undefined;
7555
+ /** Where a reading the keys moved to stands among the readings, said after
7556
+ it. `{position}` and `{count}` are replaced with the numbers, written in
7557
+ `locale`.
7558
+
7559
+ Set it to the words of the page's language, such as `{position} von
7560
+ {count}`, or to nothing to say no position. A slice or a series a
7561
+ legend hid is not counted. */
7562
+ "position-label"?: (HelixHeatmap["positionLabel"]) | undefined;
7563
+ /** Where a reading the keys moved to stands among the readings, said after
7564
+ it. `{position}` and `{count}` are replaced with the numbers, written in
7565
+ `locale`.
7566
+
7567
+ Set it to the words of the page's language, such as `{position} von
7568
+ {count}`, or to nothing to say no position. A slice or a series a
7569
+ legend hid is not counted. */
7570
+ positionLabel?: (HelixHeatmap["positionLabel"]) | undefined;
7571
+ /** The word the `overview` puts before the busiest reading. */
7572
+ "busiest-label"?: (HelixHeatmap["busiestLabel"]) | undefined;
7573
+ /** The word the `overview` puts before the busiest reading. */
7574
+ busiestLabel?: (HelixHeatmap["busiestLabel"]) | undefined;
7108
7575
  /** Shown when the table has no readings in it.
7109
7576
 
7110
7577
  Never shown while the table cannot be read at all, which is a server render
@@ -7162,6 +7629,20 @@ calendar heatmap does: a week is a column, so the strip reads along the
7162
7629
  line in weeks, from the right on a right-to-left page, and top to bottom in
7163
7630
  days. */
7164
7631
  rows?: (HelixHeatmap["rows"]) | undefined;
7632
+ /** What the `selection` part says after the selection changes, with `{count}` for
7633
+ how many cells are selected. */
7634
+ "selection-label"?: (HelixHeatmap["selectionLabel"]) | undefined;
7635
+ /** What the `selection` part says after the selection changes, with `{count}` for
7636
+ how many cells are selected. */
7637
+ selectionLabel?: (HelixHeatmap["selectionLabel"]) | undefined;
7638
+ /** How many cells a reader can select: `single` or `multiple`.
7639
+
7640
+ Absent selects nothing, and a press or Space does what it did. */
7641
+ "selection-mode"?: (HelixHeatmap["selectionMode"]) | undefined;
7642
+ /** How many cells a reader can select: `single` or `multiple`.
7643
+
7644
+ Absent selects nothing, and a press or Space does what it did. */
7645
+ selectionMode?: (HelixHeatmap["selectionMode"]) | undefined;
7165
7646
  /** Lower bounds for the tone buckets, in the order the tones are given.
7166
7647
 
7167
7648
  `thresholds="1 3 6 9"` with `tones="1 2 3 4"` puts 1 and 2 in the ramp's
@@ -7180,13 +7661,36 @@ compare two hues at all. `tones="surface info accent success primary"` for a
7180
7661
  commit count is five unrelated hues for five amounts, which is confetti with
7181
7662
  no order in it. */
7182
7663
  tones?: (HelixHeatmap["tones"]) | undefined;
7664
+ /** The word the `overview` puts before the total of the readings drawn. */
7665
+ "total-label"?: (HelixHeatmap["totalLabel"]) | undefined;
7666
+ /** The word the `overview` puts before the total of the readings drawn. */
7667
+ totalLabel?: (HelixHeatmap["totalLabel"]) | undefined;
7668
+ /** The selected cells, by the names their rows have in the table, such as
7669
+ `2026-06-11`, separated by commas.
7670
+
7671
+ Set it to start with cells selected. Written by a press or a key under
7672
+ `selection-mode`. */
7673
+ value?: (HelixHeatmap["value"]) | undefined;
7183
7674
  };
7184
7675
 
7185
7676
  export type HelixHeatmapVueEvents = {
7677
+ /** Fired once a press or a key has changed which cells are selected. */
7678
+ change: HelixHeatmapElementEvent;
7679
+ /** Fired before a press or a key changes which cells are selected, with the `value` it would leave. Cancelable. */
7680
+ "helix-before-change": HelixHeatmapHelixBeforeChangeElementEvent;
7186
7681
  /** Fired when the number of cells drawn changes, with the new number. */
7187
7682
  "helix-resize": HelixHeatmapHelixResizeElementEvent;
7188
7683
  };
7189
7684
 
7685
+ /** `HelixIconButton` component event */
7686
+ export type HelixIconButtonElementEvent<E = Event> = TypedEvent<
7687
+ HelixIconButton,
7688
+ E
7689
+ >;
7690
+ /** `helix-press` event type */
7691
+ export type HelixIconButtonHelixPressElementEvent =
7692
+ HelixIconButtonElementEvent<HelixPressEvent>;
7693
+
7190
7694
  export type HelixIconButtonVueProps = {
7191
7695
  /** Raises the button off the page with a shadow.
7192
7696
 
@@ -7255,33 +7759,23 @@ is the platform's `commandfor`. */
7255
7759
  commandFor?: (HelixIconButton["commandFor"]) | undefined;
7256
7760
  /** Where this button's submission goes, overriding the form's own.
7257
7761
 
7258
- **The five `form*` overrides work by writing the form and putting it back**,
7259
- which is the only mechanism available and is closer to the platform than it
7260
- sounds. `requestSubmit(submitter)` is how a native submitter carries these,
7261
- and it refuses ours twice over: the inner `<button>` is `type="button"` so
7262
- it is not a submit button, and it sits in this shadow root so its form owner
7263
- is not the consumer's form. Both throw. So the submission is started with no
7264
- submitter and the overrides are applied to the form for the duration of it.
7265
-
7266
- The whole submit algorithm runs synchronously inside `requestSubmit()`, so
7267
- the window is one call and a `finally` closes it whether or not a listener
7268
- refused. What a `submit` handler observes during that window is the form a
7269
- native submitter would have given it, which is the point. */
7762
+ **The five `form*` overrides ride on a native submit button that stands in
7763
+ for this one**, because `requestSubmit(submitter)` refuses the inner
7764
+ `<button>` twice over: it is `type="button"`, and it sits in this shadow
7765
+ root, so its form owner is not the consumer's form. The stand-in is a
7766
+ hidden `<button type="submit">` in the form for the one synchronous call,
7767
+ so the platform applies the overrides to that submission alone and leaves
7768
+ the form as it was. See `submitAs`. */
7270
7769
  formaction?: (HelixIconButton["formAction"]) | undefined;
7271
7770
  /** Where this button's submission goes, overriding the form's own.
7272
7771
 
7273
- **The five `form*` overrides work by writing the form and putting it back**,
7274
- which is the only mechanism available and is closer to the platform than it
7275
- sounds. `requestSubmit(submitter)` is how a native submitter carries these,
7276
- and it refuses ours twice over: the inner `<button>` is `type="button"` so
7277
- it is not a submit button, and it sits in this shadow root so its form owner
7278
- is not the consumer's form. Both throw. So the submission is started with no
7279
- submitter and the overrides are applied to the form for the duration of it.
7280
-
7281
- The whole submit algorithm runs synchronously inside `requestSubmit()`, so
7282
- the window is one call and a `finally` closes it whether or not a listener
7283
- refused. What a `submit` handler observes during that window is the form a
7284
- native submitter would have given it, which is the point. */
7772
+ **The five `form*` overrides ride on a native submit button that stands in
7773
+ for this one**, because `requestSubmit(submitter)` refuses the inner
7774
+ `<button>` twice over: it is `type="button"`, and it sits in this shadow
7775
+ root, so its form owner is not the consumer's form. The stand-in is a
7776
+ hidden `<button type="submit">` in the form for the one synchronous call,
7777
+ so the platform applies the overrides to that submission alone and leaves
7778
+ the form as it was. See `submitAs`. */
7285
7779
  formAction?: (HelixIconButton["formAction"]) | undefined;
7286
7780
  /** How the submission is encoded, overriding the form's own. */
7287
7781
  formenctype?: (HelixIconButton["formEnctype"]) | undefined;
@@ -7327,13 +7821,10 @@ a press, so focus stays where the reader left it. */
7327
7821
  /** The value this button submits under its own `name`, as a native submit
7328
7822
  button does.
7329
7823
 
7330
- **Reported for exactly the submission this button starts and not otherwise.**
7824
+ **Sent with exactly the submission this button starts and not otherwise.**
7331
7825
  A native submit button contributes `name=value` only when it is the one
7332
- that submitted, and every other button on the form contributes nothing. A
7333
- form-associated element reporting a value continuously would contribute on
7334
- every submission whoever started it, which is a different feature wearing
7335
- the same name, so `submit` below sets it, submits, and clears it inside one
7336
- synchronous call.
7826
+ that submitted, and every other button on the form contributes nothing,
7827
+ which is what the native button standing in for this one at submit does.
7337
7828
 
7338
7829
  `CopyButton` has a `value` of its own meaning the text to put on the
7339
7830
  clipboard, which is not this and is why it is declared there rather than
@@ -7419,7 +7910,10 @@ invoker without an id in the same tree needs. */
7419
7910
  commandForElement?: (HelixIconButton["commandForElement"]) | undefined;
7420
7911
  };
7421
7912
 
7422
- export type HelixIconButtonVueEvents = {};
7913
+ export type HelixIconButtonVueEvents = {
7914
+ /** Fired when a press acts, with `detail.pointerType` saying what pressed the button. */
7915
+ "helix-press": HelixIconButtonHelixPressElementEvent;
7916
+ };
7423
7917
 
7424
7918
  /** `HelixIcon` component event */
7425
7919
  export type HelixIconElementEvent<E = Event> = TypedEvent<HelixIcon, E>;
@@ -7565,7 +8059,12 @@ the *first* update mirrors to a custom state instead, which is what
7565
8059
  `:state(open)` and `:state(checked)` are.
7566
8060
 
7567
8061
  `loading` writes nothing, because it is where every image starts and the
7568
- resting state of a mirror is the attribute's absence. */
8062
+ resting state of a mirror is the attribute's absence.
8063
+
8064
+ **Kept beside the custom states, and what the styled tier draws from.** An
8065
+ engine without `CustomStateSet`, Safari before 17.4 and Firefox before
8066
+ 126, records no state, and a picture faded in by `:state(loaded)` alone
8067
+ would stay transparent there for good. A sheet of your own can read either. */
7569
8068
  status?: (HelixImage["status"]) | undefined;
7570
8069
  };
7571
8070
 
@@ -7586,9 +8085,13 @@ export type HelixInputHelixClearElementEvent =
7586
8085
  HelixInputElementEvent<HelixClearEvent>;
7587
8086
 
7588
8087
  export type HelixInputVueProps = {
7589
- /** The value the control starts with. A form reset returns it to this value. */
8088
+ /** The value the control starts with. A form reset returns it to this value,
8089
+ and to the `value` attribute where this one is not written, as a native
8090
+ control resets to the `value` it declares. */
7590
8091
  "default-value"?: (HelixInput["defaultValue"]) | undefined;
7591
- /** The value the control starts with. A form reset returns it to this value. */
8092
+ /** The value the control starts with. A form reset returns it to this value,
8093
+ and to the `value` attribute where this one is not written, as a native
8094
+ control resets to the `value` it declares. */
7592
8095
  defaultValue?: (HelixInput["defaultValue"]) | undefined;
7593
8096
  /** The control's current value, which its form submits.
7594
8097
 
@@ -7779,6 +8282,10 @@ be anyway. */
7779
8282
  selectionEnd?: (HelixInput["selectionEnd"]) | undefined;
7780
8283
  /** Where the selection starts, as an offset into the value. */
7781
8284
  selectionStart?: (HelixInput["selectionStart"]) | undefined;
8285
+ /** Your own rule for the value, run on every change once the browser finds
8286
+ nothing wrong. Return a message, or a list of them, to mark the field
8287
+ invalid, and `true`, `null`, or nothing to accept the value. */
8288
+ validate?: (HelixInput["validate"]) | undefined;
7782
8289
  };
7783
8290
 
7784
8291
  export type HelixInputVueEvents = {
@@ -7799,6 +8306,20 @@ export type HelixKbdHelixShortcutElementEvent =
7799
8306
  HelixKbdElementEvent<HelixShortcutEvent>;
7800
8307
 
7801
8308
  export type HelixKbdVueProps = {
8309
+ /** What the chord does to the control `for` names once it is pressed:
8310
+ `focus` moves focus to the control and `click` presses it.
8311
+
8312
+ Unset, the chord sends `helix-shortcut` and does nothing else, for a page
8313
+ that acts on the event itself. It acts only where `within` listens, after
8314
+ `helix-shortcut`, and not when a listener cancels that event. */
8315
+ activate?: (HelixKbd["activate"]) | undefined;
8316
+ /** Draws a chord under `keys` as one key per key, each a `key` part with a
8317
+ `separator` part between two where the platform writes a `+`, as GitHub
8318
+ and most docs draw `Ctrl` `K`.
8319
+
8320
+ Absent, a chord is one key holding the whole label, as it always was.
8321
+ Reflected, because the styled tier draws the caps on the keys under it. */
8322
+ caps?: (HelixKbd["caps"]) | undefined;
7802
8323
  /** The id of the control the shortcut works, which is given the chord as its
7803
8324
  `aria-keyshortcuts`.
7804
8325
 
@@ -7806,6 +8327,26 @@ Names an element in the same tree, the way `Tooltip.for` does. Separate
7806
8327
  from `within`, which says where the key listens: a key can describe a
7807
8328
  shortcut the page binds itself. */
7808
8329
  for?: (HelixKbd["for"]) | undefined;
8330
+ /** Names for keys in place of the platform's own, by the key's name in
8331
+ `keys`, written as JSON in the attribute: `key-labels='{"mod":"Command",
8332
+ "enter":"Return"}'` shows `Command` and `Return` wherever `mod` and
8333
+ `enter` are written.
8334
+
8335
+ For a page in another language, or a product with its own word for a key.
8336
+ Absent, the platform's glyphs and words are used. Only what is shown
8337
+ changes: the chord written onto `aria-keyshortcuts` keeps the names a
8338
+ screen reader knows. */
8339
+ "key-labels"?: (HelixKbd["keyLabels"]) | undefined;
8340
+ /** Names for keys in place of the platform's own, by the key's name in
8341
+ `keys`, written as JSON in the attribute: `key-labels='{"mod":"Command",
8342
+ "enter":"Return"}'` shows `Command` and `Return` wherever `mod` and
8343
+ `enter` are written.
8344
+
8345
+ For a page in another language, or a product with its own word for a key.
8346
+ Absent, the platform's glyphs and words are used. Only what is shown
8347
+ changes: the chord written onto `aria-keyshortcuts` keeps the names a
8348
+ screen reader knows. */
8349
+ keyLabels?: (HelixKbd["keyLabels"]) | undefined;
7809
8350
  /** The key or chord to show, such as `mod+k`, `?`, or `/`.
7810
8351
 
7811
8352
  `mod` is the platform's own command modifier, which is the reason to write
@@ -7940,14 +8481,18 @@ shadow root reads a table in that root rather than one in the document.
7940
8481
 
7941
8482
  Set it to start with series hidden. Every chart reading the same table
7942
8483
  draws without them. Commas only, because a column's heading may hold a
7943
- space. For a ring the names are the rows. */
8484
+ space. For a ring the names are the rows. An array of names set on the
8485
+ property works too, as React sets `hiddenSeries={['Direct']}`; a toggle
8486
+ writes the list back as a string. */
7944
8487
  "hidden-series"?: (HelixLegend["hiddenSeries"]) | undefined;
7945
8488
  /** The series hidden on the table, by name, separated by commas: what
7946
8489
  `toggles` hides and shows.
7947
8490
 
7948
8491
  Set it to start with series hidden. Every chart reading the same table
7949
8492
  draws without them. Commas only, because a column's heading may hold a
7950
- space. For a ring the names are the rows. */
8493
+ space. For a ring the names are the rows. An array of names set on the
8494
+ property works too, as React sets `hiddenSeries={['Direct']}`; a toggle
8495
+ writes the list back as a string. */
7951
8496
  hiddenSeries?: (HelixLegend["hiddenSeries"]) | undefined;
7952
8497
  /** The name of the list, which a screen reader announces before its entries.
7953
8498
 
@@ -8037,13 +8582,20 @@ hydration, or diffed by a framework, it comes back holding whatever the
8037
8582
  last reader did rather than what the author wrote. `:state(open)` carries
8038
8583
  the resolved state for stylesheets, which is what the mirror is for. */
8039
8584
  open?: (HelixLightbox["open"]) | undefined;
8040
- /** Draws the viewer's own previous, next and close controls over the picture.
8585
+ /** Draws the viewer's own previous, next and close controls over the picture,
8586
+ and zoom-out and zoom-in controls where `max-zoom` allows zooming.
8041
8587
 
8042
8588
  Off by default, for a viewer whose chrome you compose in the `header` and
8043
8589
  `footer` slots. The controls hide with the rest of the chrome while the
8044
- reader is idle, and the previous and next ones say they are unavailable at
8045
- either end of a set that does not `loop`. */
8590
+ reader is idle, the previous and next ones say they are unavailable at
8591
+ either end of a set that does not `loop`, and the zoom ones at either end
8592
+ of the scale. */
8046
8593
  controls?: (HelixLightbox["controls"]) | undefined;
8594
+ /** Draws the place of the shown item in the set over the picture, in the
8595
+ words of `status-label`, such as "2 of 5". It hides with the controls while
8596
+ the reader is idle. Screen readers hear the place from the live region, so
8597
+ the drawn copy is hidden from them. */
8598
+ counter?: (HelixLightbox["counter"]) | undefined;
8047
8599
  /** The close control's accessible name. Translate it with the rest of your
8048
8600
  interface. */
8049
8601
  "dismiss-label"?: (HelixLightbox["dismissLabel"]) | undefined;
@@ -8068,6 +8620,12 @@ keep the chrome up is the consumer's to decide with this. */
8068
8620
  label?: (HelixLightbox["label"]) | undefined;
8069
8621
  /** Whether moving past the last item returns to the first. */
8070
8622
  loop?: (HelixLightbox["loop"]) | undefined;
8623
+ /** How far a reader can zoom into the shown item, as a scale, such as `3`.
8624
+ `1`, the default, turns zooming off. */
8625
+ "max-zoom"?: (HelixLightbox["maxZoom"] | `${number}`) | undefined;
8626
+ /** How far a reader can zoom into the shown item, as a scale, such as `3`.
8627
+ `1`, the default, turns zooming off. */
8628
+ maxZoom?: (HelixLightbox["maxZoom"]) | undefined;
8071
8629
  /** The next control's accessible name. */
8072
8630
  "next-label"?: (HelixLightbox["nextLabel"]) | undefined;
8073
8631
  /** The next control's accessible name. */
@@ -8104,6 +8662,20 @@ Announced rather than only drawn, because the picture changing under a
8104
8662
  reader who cannot see it is otherwise silent. A consumer who has their own
8105
8663
  counter in the chrome can empty this and say it themselves. */
8106
8664
  statusLabel?: (HelixLightbox["statusLabel"]) | undefined;
8665
+ /** The zoom-in control's accessible name. */
8666
+ "zoom-in-label"?: (HelixLightbox["zoomInLabel"]) | undefined;
8667
+ /** The zoom-in control's accessible name. */
8668
+ zoomInLabel?: (HelixLightbox["zoomInLabel"]) | undefined;
8669
+ /** The zoom-out control's accessible name. */
8670
+ "zoom-out-label"?: (HelixLightbox["zoomOutLabel"]) | undefined;
8671
+ /** The zoom-out control's accessible name. */
8672
+ zoomOutLabel?: (HelixLightbox["zoomOutLabel"]) | undefined;
8673
+ /** What the live region says once a reader has stopped zooming, with the
8674
+ scale as a whole `{percent}` filled in. Empty it to say nothing. */
8675
+ "zoom-status-label"?: (HelixLightbox["zoomStatusLabel"]) | undefined;
8676
+ /** What the live region says once a reader has stopped zooming, with the
8677
+ scale as a whole `{percent}` filled in. Empty it to say nothing. */
8678
+ zoomStatusLabel?: (HelixLightbox["zoomStatusLabel"]) | undefined;
8107
8679
  };
8108
8680
 
8109
8681
  export type HelixLightboxVueEvents = {
@@ -8182,6 +8754,22 @@ percentages and its totals, such as `de` for `1.240` and `32 %`.
8182
8754
  Absent uses the runtime's own. The table's cells are shown as the table
8183
8755
  writes them, whatever this says. */
8184
8756
  locale?: (HelixLineChart["locale"]) | undefined;
8757
+ /** Where a reading the keys moved to stands among the readings, said after
8758
+ it. `{position}` and `{count}` are replaced with the numbers, written in
8759
+ `locale`.
8760
+
8761
+ Set it to the words of the page's language, such as `{position} von
8762
+ {count}`, or to nothing to say no position. A slice or a series a
8763
+ legend hid is not counted. */
8764
+ "position-label"?: (HelixLineChart["positionLabel"]) | undefined;
8765
+ /** Where a reading the keys moved to stands among the readings, said after
8766
+ it. `{position}` and `{count}` are replaced with the numbers, written in
8767
+ `locale`.
8768
+
8769
+ Set it to the words of the page's language, such as `{position} von
8770
+ {count}`, or to nothing to say no position. A slice or a series a
8771
+ legend hid is not counted. */
8772
+ positionLabel?: (HelixLineChart["positionLabel"]) | undefined;
8185
8773
  /** Draws a wash under each line, down to the floor of the plot. The washes
8186
8774
  overlap and do not add up, so for parts that make a total, use
8187
8775
  `Area Chart`, which stacks them.
@@ -8214,6 +8802,13 @@ sum can pass under the curve fitted through the sum beneath it, so a
8214
8802
  smoothed stack can draw a part as less than nothing. There is no such edge
8215
8803
  here, which is what lets a line take the reading aid. */
8216
8804
  curve?: (HelixLineChart["curve"]) | undefined;
8805
+ /** The series drawn as a dashed line, by their headings, separated by
8806
+ commas: `dashed="Forecast, Target"`.
8807
+
8808
+ For a series that is not a reading, such as a forecast or a goal, drawn
8809
+ beside the ones that are. Each takes a `line-dashed` part beside `line`,
8810
+ which a stylesheet draws dashed. Absent, every line is solid. */
8811
+ dashed?: (HelixLineChart["dashed"]) | undefined;
8217
8812
  /** Which rules are drawn across the plot, if any.
8218
8813
 
8219
8814
  Absent draws none, which is the honest default rather than a timid one: a
@@ -8236,6 +8831,13 @@ the attribute being absent, which is the one thing a reader cannot debug.
8236
8831
  Furniture rather than data, so the rules are inside the `aria-hidden` plot
8237
8832
  and reach no reader through the table. */
8238
8833
  gridlines?: (HelixLineChart["gridlines"]) | undefined;
8834
+ /** Draws a mark on every reading, the `marker` part, so a reader sees where
8835
+ the readings are, as well as the line between them.
8836
+
8837
+ Absent draws none, except on a reading with a blank on either side: it
8838
+ has no line to be part of, so it takes a mark, the `marker` part with
8839
+ `marker-lone` beside it, or it would not be drawn at all. */
8840
+ markers?: (HelixLineChart["markers"]) | undefined;
8239
8841
  /** The shape of the mark on each series' last reading.
8240
8842
 
8241
8843
  Absent is a dot, and absent rather than defaulted because a reflecting
@@ -8383,6 +8985,14 @@ has to survive with the stylesheet turned off.
8383
8985
  /** Numbers an ordered list downward, so the count falls row by row and ends at
8384
8986
  its last row, as `<ol reversed>` does. */
8385
8987
  reversed?: (HelixList["reversed"]) | undefined;
8988
+ /** What a press does to the rows already selected, in a list that selects:
8989
+ `toggle` adds or takes out the row, and `replace` selects it alone and
8990
+ lets the arrow keys carry the selection. */
8991
+ "selection-behavior"?: (HelixList["selectionBehavior"]) | undefined;
8992
+ /** What a press does to the rows already selected, in a list that selects:
8993
+ `toggle` adds or takes out the row, and `replace` selects it alone and
8994
+ lets the arrow keys carry the selection. */
8995
+ selectionBehavior?: (HelixList["selectionBehavior"]) | undefined;
8386
8996
  /** Makes the list interactive: `single` selects one row, `multiple` any
8387
8997
  number, and `none` moves and acts without selecting. Unset is a list a
8388
8998
  reader reads, with no tab stop of its own. */
@@ -8428,6 +9038,9 @@ export type HelixListboxHelixBeforeChangeElementEvent =
8428
9038
  /** `helix-filter` event type */
8429
9039
  export type HelixListboxHelixFilterElementEvent =
8430
9040
  HelixListboxElementEvent<HelixFilterEvent>;
9041
+ /** `helix-load-more` event type */
9042
+ export type HelixListboxHelixLoadMoreElementEvent =
9043
+ HelixListboxElementEvent<HelixLoadMoreEvent>;
8431
9044
 
8432
9045
  export type HelixListboxVueProps = {
8433
9046
  /** The text shown and announced when there are no rows and none are loading. */
@@ -8444,9 +9057,13 @@ say that without the component knowing what a row looks like. */
8444
9057
  "loading-text"?: (HelixListbox["loadingText"]) | undefined;
8445
9058
  /** The text shown and announced while the rows load. */
8446
9059
  loadingText?: (HelixListbox["loadingText"]) | undefined;
8447
- /** The value the control starts with. A form reset returns it to this value. */
9060
+ /** The value the control starts with. A form reset returns it to this value,
9061
+ and to the `value` attribute where this one is not written, as a native
9062
+ control resets to the `value` it declares. */
8448
9063
  "default-value"?: (HelixListbox["defaultValue"]) | undefined;
8449
- /** The value the control starts with. A form reset returns it to this value. */
9064
+ /** The value the control starts with. A form reset returns it to this value,
9065
+ and to the `value` attribute where this one is not written, as a native
9066
+ control resets to the `value` it declares. */
8450
9067
  defaultValue?: (HelixListbox["defaultValue"]) | undefined;
8451
9068
  /** The control's current value, which its form submits.
8452
9069
 
@@ -8530,6 +9147,18 @@ act on the list the reader expects. */
8530
9147
  "filter-label"?: (HelixListbox["filterLabel"]) | undefined;
8531
9148
  /** Placeholder text for the filter field. */
8532
9149
  filterLabel?: (HelixListbox["filterLabel"]) | undefined;
9150
+ /** What the list says when its options could not be loaded, such as after a
9151
+ request to a server fails. Empty is no error.
9152
+
9153
+ Set, it shows under any options there are, in place of `empty-text` and
9154
+ `loading-text`, and a screen reader hears it. Clear it when you ask again. */
9155
+ "load-error"?: (HelixListbox["loadError"]) | undefined;
9156
+ /** What the list says when its options could not be loaded, such as after a
9157
+ request to a server fails. Empty is no error.
9158
+
9159
+ Set, it shows under any options there are, in place of `empty-text` and
9160
+ `loading-text`, and a screen reader hears it. Clear it when you ask again. */
9161
+ loadError?: (HelixListbox["loadError"]) | undefined;
8533
9162
  /** Stops the arrow keys from choosing each option they move to. Enter, Space
8534
9163
  or a click chooses the highlighted option.
8535
9164
 
@@ -8539,6 +9168,16 @@ a reader can move through the options before closing the panel on one. */
8539
9168
  manual?: (HelixListbox["manual"]) | undefined;
8540
9169
  /** Whether more than one option can be chosen. */
8541
9170
  multiple?: (HelixListbox["multiple"]) | undefined;
9171
+ /** The text shown when a filter hides every option of a list that has some.
9172
+
9173
+ Absent, the list says `empty-text` in both cases. Set it to tell "nothing
9174
+ matches what you typed" from "there is nothing here". */
9175
+ "no-results-text"?: (HelixListbox["noResultsText"]) | undefined;
9176
+ /** The text shown when a filter hides every option of a list that has some.
9177
+
9178
+ Absent, the list says `empty-text` in both cases. Set it to tell "nothing
9179
+ matches what you typed" from "there is nothing here". */
9180
+ noResultsText?: (HelixListbox["noResultsText"]) | undefined;
8542
9181
  /** What a screen reader hears when a filter leaves one option. `{count}` is
8543
9182
  the count. */
8544
9183
  "result-label"?: (HelixListbox["resultLabel"]) | undefined;
@@ -8605,6 +9244,8 @@ export type HelixListboxVueEvents = {
8605
9244
  "helix-before-change": HelixListboxHelixBeforeChangeElementEvent;
8606
9245
  /** Fired before the list is filtered, and cancelable. */
8607
9246
  "helix-filter": HelixListboxHelixFilterElementEvent;
9247
+ /** Fired once the list is scrolled within a screen of its end, once for each number of options, and not while `loading` is set. Add the next page of options and set `loading` while you fetch it. */
9248
+ "helix-load-more": HelixListboxHelixLoadMoreElementEvent;
8608
9249
  /** Fired after the value changes. */
8609
9250
  input: HelixListboxElementEvent;
8610
9251
  };
@@ -9711,6 +10352,12 @@ slot replaces it. */
9711
10352
 
9712
10353
  export type HelixMenuSectionVueEvents = {};
9713
10354
 
10355
+ /** `HelixMeter` component event */
10356
+ export type HelixMeterElementEvent<E = Event> = TypedEvent<HelixMeter, E>;
10357
+ /** `helix-band` event type */
10358
+ export type HelixMeterHelixBandElementEvent =
10359
+ HelixMeterElementEvent<HelixBandEvent>;
10360
+
9714
10361
  export type HelixMeterVueProps = {
9715
10362
  /** How strongly the reading is drawn. `subtle` draws it as a wash of its color.
9716
10363
 
@@ -9759,6 +10406,42 @@ stylesheet outside as `indicator-good`, `-fair` or `-poor` among the fill's
9759
10406
  part names, so reflecting here would write an attribute onto the host for
9760
10407
  no reader. */
9761
10408
  band?: (HelixMeter["band"]) | undefined;
10409
+ /** The words each band is said with under `live`, by its name, written as
10410
+ JSON in the attribute: `band-labels='{"poor":"Almost full"}'`.
10411
+
10412
+ A band left out keeps its default: "Good", "Fair" or "Poor". */
10413
+ "band-labels"?: (HelixMeter["bandLabels"]) | undefined;
10414
+ /** The words each band is said with under `live`, by its name, written as
10415
+ JSON in the attribute: `band-labels='{"poor":"Almost full"}'`.
10416
+
10417
+ A band left out keeps its default: "Good", "Fair" or "Poor". */
10418
+ bandLabels?: (HelixMeter["bandLabels"]) | undefined;
10419
+ /** `Intl.NumberFormat` options the reading is written with, as React Aria's
10420
+ Meter and ProgressBar take them: a unit, a currency, or a number of
10421
+ decimals. Written as JSON in the attribute.
10422
+
10423
+ ```html
10424
+ <helix-meter value="18" max="32" format-options='{"style":"unit","unit":"gigabyte"}'></helix-meter>
10425
+ ```
10426
+
10427
+ A `percent` style writes the share of the range, and any other the value
10428
+ itself, so the example says "18 GB", and a value past an end as it is.
10429
+ Absent is a whole percentage. The words are announced as well as shown.
10430
+ `value-text` still wins. */
10431
+ "format-options"?: (HelixMeter["formatOptions"]) | undefined;
10432
+ /** `Intl.NumberFormat` options the reading is written with, as React Aria's
10433
+ Meter and ProgressBar take them: a unit, a currency, or a number of
10434
+ decimals. Written as JSON in the attribute.
10435
+
10436
+ ```html
10437
+ <helix-meter value="18" max="32" format-options='{"style":"unit","unit":"gigabyte"}'></helix-meter>
10438
+ ```
10439
+
10440
+ A `percent` style writes the share of the range, and any other the value
10441
+ itself, so the example says "18 GB", and a value past an end as it is.
10442
+ Absent is a whole percentage. The words are announced as well as shown.
10443
+ `value-text` still wins. */
10444
+ formatOptions?: (HelixMeter["formatOptions"]) | undefined;
9762
10445
  /** Bottom of the high band.
9763
10446
 
9764
10447
  Absent leaves the range unbanded. */
@@ -9768,6 +10451,13 @@ Absent leaves the range unbanded. */
9768
10451
  A visible label in the `label` slot names it instead, with the words it
9769
10452
  shows, so the name and the label cannot disagree. */
9770
10453
  label?: (HelixMeter["label"]) | undefined;
10454
+ /** Says the reading in a polite `live` region each time it moves into
10455
+ another band, with the band's word, such as "92%, Poor".
10456
+
10457
+ For a meter whose value changes while it is on screen. Off by default,
10458
+ because a meter that reads a fixed level has nothing new to say. A meter
10459
+ with no bands says nothing. */
10460
+ live?: (HelixMeter["live"]) | undefined;
9771
10461
  /** The locale the percentage is written in, such as `fr` for `72 %`.
9772
10462
 
9773
10463
  Absent uses the runtime's own. */
@@ -9833,7 +10523,10 @@ fair summary of a task and a poor one of a quantity. */
9833
10523
  valueText?: (HelixMeter["valueText"]) | undefined;
9834
10524
  };
9835
10525
 
9836
- export type HelixMeterVueEvents = {};
10526
+ export type HelixMeterVueEvents = {
10527
+ /** Fired when the reading moves into another band, with the band it is in now, or `''` where it is in none. Not sent on the first render, since a meter that arrives in a band has not moved. */
10528
+ "helix-band": HelixMeterHelixBandElementEvent;
10529
+ };
9837
10530
 
9838
10531
  export type HelixNavigationVueProps = {
9839
10532
  /** Whether the arrow keys move focus between the destinations.
@@ -10089,9 +10782,13 @@ export type HelixNumberInputHelixBeforeChangeElementEvent =
10089
10782
  HelixNumberInputElementEvent<HelixBeforeChangeEvent>;
10090
10783
 
10091
10784
  export type HelixNumberInputVueProps = {
10092
- /** The value the control starts with. A form reset returns it to this value. */
10785
+ /** The value the control starts with. A form reset returns it to this value,
10786
+ and to the `value` attribute where this one is not written, as a native
10787
+ control resets to the `value` it declares. */
10093
10788
  "default-value"?: (HelixNumberInput["defaultValue"]) | undefined;
10094
- /** The value the control starts with. A form reset returns it to this value. */
10789
+ /** The value the control starts with. A form reset returns it to this value,
10790
+ and to the `value` attribute where this one is not written, as a native
10791
+ control resets to the `value` it declares. */
10095
10792
  defaultValue?: (HelixNumberInput["defaultValue"]) | undefined;
10096
10793
  /** The control's current value, which its form submits.
10097
10794
 
@@ -10224,12 +10921,6 @@ filled in. */
10224
10921
  readonly?: (HelixNumberInput["readOnly"]) | undefined;
10225
10922
  /** Prevents editing. The value is still submitted with the form. */
10226
10923
  readOnly?: (HelixNumberInput["readOnly"]) | undefined;
10227
- /** What the field is described as on iOS and iPadOS, where it carries no
10228
- spinbutton role. See the class description. */
10229
- "role-description"?: (HelixNumberInput["roleDescription"]) | undefined;
10230
- /** What the field is described as on iOS and iPadOS, where it carries no
10231
- spinbutton role. See the class description. */
10232
- roleDescription?: (HelixNumberInput["roleDescription"]) | undefined;
10233
10924
  /** Makes the label a grip that changes the value when it is dragged.
10234
10925
 
10235
10926
  The label is what is dragged, so this adds no chrome at all. Still opt-in,
@@ -10240,7 +10931,13 @@ than states: a duration, a weight, a count they are looking for rather than
10240
10931
  one they already know. */
10241
10932
  scrub?: (HelixNumberInput["scrub"]) | undefined;
10242
10933
  /** How far one step moves. A value off the step grid, counted from `min`, is
10243
- invalid, as it is in a native number field. */
10934
+ invalid, as it is in a native number field.
10935
+
10936
+ Unset, a step moves by one, or by one percent under a percent format, and
10937
+ a typed number is rounded to the smallest amount `format-options` shows
10938
+ rather than to whole steps, as React Aria's NumberField does: a field
10939
+ showing dollars keeps the cents typed into it. Without `format-options`
10940
+ the grid is whole numbers, as in a native number field. */
10244
10941
  step?: (HelixNumberInput["step"]) | undefined;
10245
10942
  /** The message the browser shows when the number is off the step grid, with
10246
10943
  `{below}` and `{above}` filled in with the nearest valid values. */
@@ -10320,6 +11017,12 @@ export type HelixObjectInspectorHelixActivateElementEvent =
10320
11017
  /** `helix-before-activate` event type */
10321
11018
  export type HelixObjectInspectorHelixBeforeActivateElementEvent =
10322
11019
  HelixObjectInspectorElementEvent<HelixBeforeActivateEvent>;
11020
+ /** `helix-before-close` event type */
11021
+ export type HelixObjectInspectorHelixBeforeCloseElementEvent =
11022
+ HelixObjectInspectorElementEvent<HelixBeforeCloseEvent>;
11023
+ /** `helix-before-open` event type */
11024
+ export type HelixObjectInspectorHelixBeforeOpenElementEvent =
11025
+ HelixObjectInspectorElementEvent<HelixBeforeOpenEvent>;
10323
11026
  /** `helix-copy` event type */
10324
11027
  export type HelixObjectInspectorHelixCopyElementEvent =
10325
11028
  HelixObjectInspectorElementEvent<HelixCopyEvent>;
@@ -10329,6 +11032,9 @@ export type HelixObjectInspectorHelixFilterElementEvent =
10329
11032
  /** `helix-filtered` event type */
10330
11033
  export type HelixObjectInspectorHelixFilteredElementEvent =
10331
11034
  HelixObjectInspectorElementEvent<HelixFilteredEvent>;
11035
+ /** `toggle` event type */
11036
+ export type HelixObjectInspectorToggleElementEvent =
11037
+ HelixObjectInspectorElementEvent<ToggleEvent>;
10332
11038
 
10333
11039
  export type HelixObjectInspectorVueProps = {
10334
11040
  /** The active row's path, such as `/meta/tags/0`, and the empty string for the
@@ -10464,12 +11170,18 @@ export type HelixObjectInspectorVueEvents = {
10464
11170
  "helix-activate": HelixObjectInspectorHelixActivateElementEvent;
10465
11171
  /** The active row is about to move, with its new path. Cancelable: cancel it to keep the row where it is. */
10466
11172
  "helix-before-activate": HelixObjectInspectorHelixBeforeActivateElementEvent;
11173
+ /** A reader is about to close the active branch. Cancelable: cancel it to keep the branch open. */
11174
+ "helix-before-close": HelixObjectInspectorHelixBeforeCloseElementEvent;
11175
+ /** A reader is about to open the active branch, or `*` the branches beside it. Cancelable: cancel it to keep them closed. */
11176
+ "helix-before-open": HelixObjectInspectorHelixBeforeOpenElementEvent;
10467
11177
  /** A value was put on the clipboard, from the copy button or the keyboard. */
10468
11178
  "helix-copy": HelixObjectInspectorHelixCopyElementEvent;
10469
11179
  /** Text was typed in the filter field, with what it now holds. Cancelable: cancel it to keep the filter as it was. */
10470
11180
  "helix-filter": HelixObjectInspectorHelixFilterElementEvent;
10471
11181
  /** The filter field changed `filter`, which now holds the text. */
10472
11182
  "helix-filtered": HelixObjectInspectorHelixFilteredElementEvent;
11183
+ /** A reader opened or closed a branch, with `newState` and `oldState`. `expanded` holds every open branch. */
11184
+ toggle: HelixObjectInspectorToggleElementEvent;
10473
11185
  };
10474
11186
 
10475
11187
  export type HelixOptionGroupVueProps = {
@@ -10488,15 +11200,19 @@ export type HelixOptionHelixSelectElementEvent =
10488
11200
  export type HelixOptionVueProps = {
10489
11201
  /** Whether this is the option the keyboard is on.
10490
11202
 
10491
- Written by the listbox, which writes it once a reader moves the highlight.
10492
- It shows as `:state(active)`, and as a `data-active` attribute for the
10493
- stylesheets written before the state existed. */
11203
+ Written by the listbox once a reader moves the highlight. Style it with
11204
+ `:state(active)`, or `::part(item-active)` for an option inside another
11205
+ component's shadow root. The `data-active` attribute sets it from markup;
11206
+ it is also written back for stylesheets from before the state, and no
11207
+ stylesheet of the library's own selects it. */
10494
11208
  "data-active"?: (HelixOption["active"]) | undefined;
10495
11209
  /** Whether this is the option the keyboard is on.
10496
11210
 
10497
- Written by the listbox, which writes it once a reader moves the highlight.
10498
- It shows as `:state(active)`, and as a `data-active` attribute for the
10499
- stylesheets written before the state existed. */
11211
+ Written by the listbox once a reader moves the highlight. Style it with
11212
+ `:state(active)`, or `::part(item-active)` for an option inside another
11213
+ component's shadow root. The `data-active` attribute sets it from markup;
11214
+ it is also written back for stylesheets from before the state, and no
11215
+ stylesheet of the library's own selects it. */
10500
11216
  active?: (HelixOption["active"]) | undefined;
10501
11217
  /** A second destination for the row, opened when you choose it with the
10502
11218
  modifier key held.
@@ -10640,9 +11356,18 @@ export type HelixOptionVueEvents = {
10640
11356
  "helix-select": HelixOptionHelixSelectElementEvent;
10641
11357
  };
10642
11358
 
11359
+ export type HelixOptionSeparatorVueProps = {};
11360
+
11361
+ export type HelixOptionSeparatorVueEvents = {};
11362
+
10643
11363
  export type HelixOrbVueProps = {
10644
- /** Says each new state through a polite live region, such as "Working" and
10645
- then "Done".
11364
+ /** Says each new state politely, such as "Working" and then "Done".
11365
+
11366
+ **The orb becomes the live region**: its role is `status` rather than
11367
+ `progressbar` or `img`, and it holds the state's word. A region inside a
11368
+ progress bar or an image may never be heard, because assistive technology
11369
+ treats what those two hold as presentation. The name is still `label` or
11370
+ the state's word.
10646
11371
 
10647
11372
  Off by default, because the name and the busy state already change with
10648
11373
  the state, and an orb beside a stream of messages would otherwise talk
@@ -10724,6 +11449,11 @@ read at the click rather than cached, because a reader can change it while
10724
11449
  the page is open and this is the only motion in the component that
10725
11450
  JavaScript rather than CSS decides. */
10726
11451
  behavior?: (HelixOutline["behavior"]) | undefined;
11452
+ /** Keeps the link of the section in view in view itself, in an outline
11453
+ longer than the box it scrolls in, such as a contents rail with a
11454
+ scrollbar of its own. Only that box moves: never the page, and never the
11455
+ box the sections scroll in. */
11456
+ follow?: (HelixOutline["follow"]) | undefined;
10727
11457
  /** The navigation's name, read by screen readers. A heading in the `heading`
10728
11458
  slot names it in place of this. */
10729
11459
  label?: (HelixOutline["label"]) | undefined;
@@ -11014,9 +11744,13 @@ export type HelixPinInputHelixCompleteElementEvent =
11014
11744
  HelixPinInputElementEvent<HelixCompleteEvent>;
11015
11745
 
11016
11746
  export type HelixPinInputVueProps = {
11017
- /** The value the control starts with. A form reset returns it to this value. */
11747
+ /** The value the control starts with. A form reset returns it to this value,
11748
+ and to the `value` attribute where this one is not written, as a native
11749
+ control resets to the `value` it declares. */
11018
11750
  "default-value"?: (HelixPinInput["defaultValue"]) | undefined;
11019
- /** The value the control starts with. A form reset returns it to this value. */
11751
+ /** The value the control starts with. A form reset returns it to this value,
11752
+ and to the `value` attribute where this one is not written, as a native
11753
+ control resets to the `value` it declares. */
11020
11754
  defaultValue?: (HelixPinInput["defaultValue"]) | undefined;
11021
11755
  /** The control's current value, which its form submits.
11022
11756
 
@@ -11055,20 +11789,21 @@ and this one was the English a form in another language still spoke in
11055
11789
  the bubble it raises on submit: `feedback` replaces the message under
11056
11790
  the field and does not reach that one. */
11057
11791
  valueMissingMessage?: (HelixPinInput["valueMissingMessage"]) | undefined;
11058
- /** The autofill hint for the browser, set on the first box only.
11059
-
11060
- `one-time-code` is why this defaults to anything at all: it is the token
11061
- that lets a phone offer the code out of a message. Later cells stay `off`
11062
- for the reason in the class comment above, that six cells each offering
11063
- the same code is one offer made six times. */
11792
+ /** The autofill hint for the browser. `one-time-code` is why this defaults to
11793
+ anything at all: it is the token that lets a phone offer the code out of a
11794
+ message. */
11064
11795
  autocomplete?: (HelixPinInput["autocomplete"]) | undefined;
11065
11796
  /** Whether the form is submitted once the last box is filled, as Web
11066
11797
  Awesome's `autosubmit` and Radix's `autoSubmit`. Only for a code the field
11067
11798
  took: a refused last character submits nothing. */
11068
11799
  autosubmit?: (HelixPinInput["autosubmit"]) | undefined;
11069
- /** Accessible name for one box, with `{index}` and `{length}` filled in. */
11800
+ /** How typed and pasted letters are cased: `upper`, `lower`, or `preserve`
11801
+ to keep them as typed. Web Awesome's OTP input takes the same `case`, for
11802
+ a code a service reads in one case. */
11803
+ case?: (HelixPinInput["case"]) | undefined;
11804
+ /** The name each box once had, with `{index}` and `{length}` filled in. */
11070
11805
  "cell-label"?: (HelixPinInput["cellLabel"]) | undefined;
11071
- /** Accessible name for one box, with `{index}` and `{length}` filled in. */
11806
+ /** The name each box once had, with `{index}` and `{length}` filled in. */
11072
11807
  cellLabel?: (HelixPinInput["cellLabel"]) | undefined;
11073
11808
  /** Separators drawn between the boxes: `#` or `*` for a box and anything
11074
11809
  else as it is written, so `###-###` draws a dash after the third. The
@@ -11076,21 +11811,22 @@ separators are hidden from screen readers and are not part of the value. */
11076
11811
  format?: (HelixPinInput["format"]) | undefined;
11077
11812
  /** How many characters the code has. */
11078
11813
  length?: (HelixPinInput["length"]) | undefined;
11079
- /** Whether the characters are hidden, the way a password is. */
11814
+ /** Whether the characters are hidden, the way a password is. The field is a
11815
+ password field, and each filled box draws `mask-character`. */
11080
11816
  mask?: (HelixPinInput["mask"]) | undefined;
11081
- /** What an empty box shows, usually a single dot.
11082
-
11083
- The platform's own placeholder, on each cell, rather than a character
11084
- drawn behind the field: it clears the moment anything is typed, it is
11085
- already excluded from the accessible value, and it works the same under
11086
- `mask`, where the cell is a password input and a hand-drawn glyph would
11087
- have to know that.
11088
-
11089
- Empty by default, because a row of boxes already reads as a row of boxes. */
11817
+ /** What a filled box draws under `mask`, in place of its character, as Web
11818
+ Awesome's `--mask-char`. */
11819
+ "mask-character"?: (HelixPinInput["maskCharacter"]) | undefined;
11820
+ /** What a filled box draws under `mask`, in place of its character, as Web
11821
+ Awesome's `--mask-char`. */
11822
+ maskCharacter?: (HelixPinInput["maskCharacter"]) | undefined;
11823
+ /** What an empty box shows, usually a single dot. It is not shown in the box
11824
+ the caret is in. Empty by default, because a row of boxes already reads as
11825
+ a row of boxes. */
11090
11826
  placeholder?: (HelixPinInput["placeholder"]) | undefined;
11091
- /** Whether the boxes block input. A read-only code still submits its value. */
11827
+ /** Whether the field blocks input. A read-only code still submits its value. */
11092
11828
  readonly?: (HelixPinInput["readOnly"]) | undefined;
11093
- /** Whether the boxes block input. A read-only code still submits its value. */
11829
+ /** Whether the field blocks input. A read-only code still submits its value. */
11094
11830
  readOnly?: (HelixPinInput["readOnly"]) | undefined;
11095
11831
  /** The message shown when the code is started and not finished, with
11096
11832
  `{length}` filled in. When it is unset, an English default is shown. */
@@ -11115,8 +11851,7 @@ marked letters wants `text`, which judges nothing.
11115
11851
 
11116
11852
  **Not reflected**: nothing selects on it, so reflecting only writes
11117
11853
  `type="numeric"` onto every `<helix-headless-pin-input>` ever rendered, an
11118
- attribute no consumer's markup had. The area rules carry the sentence
11119
- "reflect only what CSS selects on". The real inputs take it as a binding,
11854
+ attribute no consumer's markup had. The field takes it as `inputmode`,
11120
11855
  which is what makes the keyboard follow. */
11121
11856
  type?: (HelixPinInput["type"]) | undefined;
11122
11857
  /** Whether the control is disabled and cannot be used.
@@ -11207,8 +11942,9 @@ trigger already reads as belonging to it. */
11207
11942
  /** The panel's name, read by screen readers. Left at `Popover`, the first
11208
11943
  heading in the panel names it instead. */
11209
11944
  label?: (HelixPopover["label"]) | undefined;
11210
- /** Keeps `Tab` inside the panel while it is open, and marks the panel
11211
- `aria-modal`. A press outside and Escape still close it. */
11945
+ /** Keeps `Tab` inside the panel while it is open, marks the panel
11946
+ `aria-modal`, and hides the rest of the page from screen readers. A press
11947
+ outside and Escape still close it. */
11212
11948
  modal?: (HelixPopover["modal"]) | undefined;
11213
11949
  /** Space between the trigger and the panel, in pixels. */
11214
11950
  offset?: (HelixPopover["offset"]) | undefined;
@@ -11227,6 +11963,12 @@ export type HelixPopoverVueEvents = {
11227
11963
  "helix-before-open": HelixPopoverHelixBeforeOpenElementEvent;
11228
11964
  };
11229
11965
 
11966
+ /** `HelixProgress` component event */
11967
+ export type HelixProgressElementEvent<E = Event> = TypedEvent<HelixProgress, E>;
11968
+ /** `helix-complete` event type */
11969
+ export type HelixProgressHelixCompleteElementEvent =
11970
+ HelixProgressElementEvent<HelixCompleteEvent>;
11971
+
11230
11972
  export type HelixProgressVueProps = {
11231
11973
  /** How strongly the bar is drawn.
11232
11974
 
@@ -11246,6 +11988,42 @@ from, so an outline there costs legibility and buys no distinction. `solid`
11246
11988
  is the resting state and is written by not writing it, per the rule that a
11247
11989
  reflected property takes no default. */
11248
11990
  emphasis?: (HelixProgress["emphasis"]) | undefined;
11991
+ /** The words a screen reader hears when the value reaches `max`, such as
11992
+ "Upload complete".
11993
+
11994
+ Said once, politely, as the work finishes. Empty says nothing, for a bar
11995
+ whose page announces the result itself. */
11996
+ "complete-label"?: (HelixProgress["completeLabel"]) | undefined;
11997
+ /** The words a screen reader hears when the value reaches `max`, such as
11998
+ "Upload complete".
11999
+
12000
+ Said once, politely, as the work finishes. Empty says nothing, for a bar
12001
+ whose page announces the result itself. */
12002
+ completeLabel?: (HelixProgress["completeLabel"]) | undefined;
12003
+ /** `Intl.NumberFormat` options the reading is written with, as React Aria's
12004
+ Meter and ProgressBar take them: a unit, a currency, or a number of
12005
+ decimals. Written as JSON in the attribute.
12006
+
12007
+ ```html
12008
+ <helix-progress value="18" max="32" format-options='{"style":"unit","unit":"gigabyte"}'></helix-progress>
12009
+ ```
12010
+
12011
+ A `percent` style writes the share of the range, and any other the value
12012
+ itself, so the example says "18 GB". Absent is a whole percentage. The
12013
+ words are announced as well as shown. `value-text` still wins. */
12014
+ "format-options"?: (HelixProgress["formatOptions"]) | undefined;
12015
+ /** `Intl.NumberFormat` options the reading is written with, as React Aria's
12016
+ Meter and ProgressBar take them: a unit, a currency, or a number of
12017
+ decimals. Written as JSON in the attribute.
12018
+
12019
+ ```html
12020
+ <helix-progress value="18" max="32" format-options='{"style":"unit","unit":"gigabyte"}'></helix-progress>
12021
+ ```
12022
+
12023
+ A `percent` style writes the share of the range, and any other the value
12024
+ itself, so the example says "18 GB". Absent is a whole percentage. The
12025
+ words are announced as well as shown. `value-text` still wins. */
12026
+ formatOptions?: (HelixProgress["formatOptions"]) | undefined;
11249
12027
  /** Whether the length of the task is unknown. The bar then shows activity
11250
12028
  without a value.
11251
12029
 
@@ -11332,12 +12110,21 @@ report progress. */
11332
12110
  valueText?: (HelixProgress["valueText"]) | undefined;
11333
12111
  };
11334
12112
 
11335
- export type HelixProgressVueEvents = {};
12113
+ export type HelixProgressVueEvents = {
12114
+ /** The value reached `max` from below. Its `value` is `max`. Not sent for a bar that starts full. */
12115
+ "helix-complete": HelixProgressHelixCompleteElementEvent;
12116
+ };
11336
12117
 
11337
12118
  /** `HelixQrCode` component event */
11338
12119
  export type HelixQrCodeElementEvent<E = Event> = TypedEvent<HelixQrCode, E>;
11339
12120
 
11340
12121
  export type HelixQrCodeVueProps = {
12122
+ /** The words a code with no `label` is named by, followed by its value where
12123
+ the value is a web address. */
12124
+ "code-label"?: (HelixQrCode["codeLabel"]) | undefined;
12125
+ /** The words a code with no `label` is named by, followed by its value where
12126
+ the value is a web address. */
12127
+ codeLabel?: (HelixQrCode["codeLabel"]) | undefined;
11341
12128
  /** The error correction level, which sets how much of the code can be lost
11342
12129
  and still scan.
11343
12130
 
@@ -11347,10 +12134,13 @@ chosen automatically when the slot is filled: it is the level that makes
11347
12134
  covering safe, and a consumer who fills the slot has said what they want
11348
12135
  without having to know that. */
11349
12136
  correction?: (HelixQrCode["correction"]) | undefined;
11350
- /** The image's accessible name.
12137
+ /** The image's accessible name: what the code is for, such as "Open the
12138
+ menu".
11351
12139
 
11352
- Falling back to the value is deliberate: a code almost always holds a URL,
11353
- and a URL is a better name than "QR code" for a reader who cannot see it. */
12140
+ Absent names it by `code-label` and, for a web address, the address,
12141
+ which is what a reader who cannot scan it needs. Any other value is left
12142
+ out of the name, since it may hold a secret, such as an authenticator's
12143
+ key or a network's password. */
11354
12144
  label?: (HelixQrCode["label"]) | undefined;
11355
12145
  /** How the modules are drawn.
11356
12146
 
@@ -11395,9 +12185,13 @@ export type HelixRadioGroupHelixSelectElementEvent =
11395
12185
  HelixRadioGroupElementEvent<HelixSelectEvent>;
11396
12186
 
11397
12187
  export type HelixRadioGroupVueProps = {
11398
- /** The value the control starts with. A form reset returns it to this value. */
12188
+ /** The value the control starts with. A form reset returns it to this value,
12189
+ and to the `value` attribute where this one is not written, as a native
12190
+ control resets to the `value` it declares. */
11399
12191
  "default-value"?: (HelixRadioGroup["defaultValue"]) | undefined;
11400
- /** The value the control starts with. A form reset returns it to this value. */
12192
+ /** The value the control starts with. A form reset returns it to this value,
12193
+ and to the `value` attribute where this one is not written, as a native
12194
+ control resets to the `value` it declares. */
11401
12195
  defaultValue?: (HelixRadioGroup["defaultValue"]) | undefined;
11402
12196
  /** The control's current value, which its form submits.
11403
12197
 
@@ -11656,6 +12450,9 @@ export type HelixRatingHelixBeforeChangeElementEvent =
11656
12450
  /** `helix-clear` event type */
11657
12451
  export type HelixRatingHelixClearElementEvent =
11658
12452
  HelixRatingElementEvent<HelixClearEvent>;
12453
+ /** `helix-preview` event type */
12454
+ export type HelixRatingHelixPreviewElementEvent =
12455
+ HelixRatingElementEvent<HelixPreviewEvent>;
11659
12456
 
11660
12457
  export type HelixRatingVueProps = {
11661
12458
  /** The shape of each mark. `dots` draws plain circles.
@@ -11680,9 +12477,13 @@ an attribute React holds no prop for and so a hydration mismatch for each
11680
12477
  one. The stylesheet names only `dots`, so an unset one draws the star by
11681
12478
  landing on the base rule. */
11682
12479
  shape?: (HelixRating["shape"]) | undefined;
11683
- /** The value the control starts with. A form reset returns it to this value. */
12480
+ /** The value the control starts with. A form reset returns it to this value,
12481
+ and to the `value` attribute where this one is not written, as a native
12482
+ control resets to the `value` it declares. */
11684
12483
  "default-value"?: (HelixRating["defaultValue"]) | undefined;
11685
- /** The value the control starts with. A form reset returns it to this value. */
12484
+ /** The value the control starts with. A form reset returns it to this value,
12485
+ and to the `value` attribute where this one is not written, as a native
12486
+ control resets to the `value` it declares. */
11686
12487
  defaultValue?: (HelixRating["defaultValue"]) | undefined;
11687
12488
  /** The control's current value, which its form submits.
11688
12489
 
@@ -11872,6 +12673,8 @@ export type HelixRatingVueEvents = {
11872
12673
  "helix-before-change": HelixRatingHelixBeforeChangeElementEvent;
11873
12674
  /** The rating went back to unrated, under `clearable`. Sent after `input` and `change`. */
11874
12675
  "helix-clear": HelixRatingHelixClearElementEvent;
12676
+ /** The score under the pointer, shown before it is chosen, or `''` once the marks show the score again. Sent once each time the preview changes. */
12677
+ "helix-preview": HelixRatingHelixPreviewElementEvent;
11875
12678
  /** The score changed. */
11876
12679
  input: HelixRatingElementEvent;
11877
12680
  };
@@ -12152,6 +12955,18 @@ Not reflected: nothing selects on it, so it keeps a real default instead. */
12152
12955
  tabIndents?: (HelixSandboxSource["tabIndents"]) | undefined;
12153
12956
  /** The source being edited. */
12154
12957
  value?: (HelixSandboxSource["value"]) | undefined;
12958
+ /** Colors the source: a function from the source and the pane's `name` to
12959
+ runs of text, each with an optional kind, such as
12960
+ `[{ text: '<' }, { kind: 'tag', text: 'p' }, { text: '>' }]`.
12961
+
12962
+ Absent, the pane is a plain field. Runs whose text does not add up to the
12963
+ source are drawn as the source, uncolored, so the colors never drift from
12964
+ the caret, and so is the source when the function throws. Set it as a
12965
+ property.
12966
+
12967
+ Named for what it returns, runs of text, where Code Block's `highlight`
12968
+ returns markup. */
12969
+ tokenize?: (HelixSandboxSource["tokenize"]) | undefined;
12155
12970
  };
12156
12971
 
12157
12972
  export type HelixSandboxSourceVueEvents = {
@@ -12178,6 +12993,15 @@ Absent shows no readout. */
12178
12993
 
12179
12994
  export type HelixSandboxStatusBarVueEvents = {};
12180
12995
 
12996
+ /** `HelixSandboxTerminal` component event */
12997
+ export type HelixSandboxTerminalElementEvent<E = Event> = TypedEvent<
12998
+ HelixSandboxTerminal,
12999
+ E
13000
+ >;
13001
+ /** `helix-before-change` event type */
13002
+ export type HelixSandboxTerminalHelixBeforeChangeElementEvent =
13003
+ HelixSandboxTerminalElementEvent<HelixBeforeChangeEvent>;
13004
+
12181
13005
  export type HelixSandboxTerminalVueProps = {
12182
13006
  /** The clear button's text, under `controls`. */
12183
13007
  "clear-label"?: (HelixSandboxTerminal["clearLabel"]) | undefined;
@@ -12206,15 +13030,22 @@ Lines it hides are kept, so lowering it shows them again. The filter under
12206
13030
  levelLabel?: (HelixSandboxTerminal["levelLabel"]) | undefined;
12207
13031
  /** What each choice of the level filter reads, for a page in another
12208
13032
  language, keyed by level, such as `{ warn: '…' }`. A level left out keeps
12209
- its English words. As an attribute it is that object as JSON. */
13033
+ its English words. As an attribute it is that object as JSON, and JSON
13034
+ that does not parse is no words. */
12210
13035
  "level-words"?: (HelixSandboxTerminal["levelWords"]) | undefined;
12211
13036
  /** What each choice of the level filter reads, for a page in another
12212
13037
  language, keyed by level, such as `{ warn: '…' }`. A level left out keeps
12213
- its English words. As an attribute it is that object as JSON. */
13038
+ its English words. As an attribute it is that object as JSON, and JSON
13039
+ that does not parse is no words. */
12214
13040
  levelWords?: (HelixSandboxTerminal["levelWords"]) | undefined;
12215
13041
  };
12216
13042
 
12217
- export type HelixSandboxTerminalVueEvents = {};
13043
+ export type HelixSandboxTerminalVueEvents = {
13044
+ /** Fired after the reader chose another level in the filter. `level` holds it. */
13045
+ change: HelixSandboxTerminalElementEvent;
13046
+ /** Fired before the level filter changes, with the level chosen, `log` for every level. Cancelable: cancel it to keep the current level. */
13047
+ "helix-before-change": HelixSandboxTerminalHelixBeforeChangeElementEvent;
13048
+ };
12218
13049
 
12219
13050
  export type HelixSandboxToolbarVueProps = {};
12220
13051
 
@@ -12241,6 +13072,22 @@ percentages and its totals, such as `de` for `1.240` and `32 %`.
12241
13072
  Absent uses the runtime's own. The table's cells are shown as the table
12242
13073
  writes them, whatever this says. */
12243
13074
  locale?: (HelixScatterChart["locale"]) | undefined;
13075
+ /** Where a reading the keys moved to stands among the readings, said after
13076
+ it. `{position}` and `{count}` are replaced with the numbers, written in
13077
+ `locale`.
13078
+
13079
+ Set it to the words of the page's language, such as `{position} von
13080
+ {count}`, or to nothing to say no position. A slice or a series a
13081
+ legend hid is not counted. */
13082
+ "position-label"?: (HelixScatterChart["positionLabel"]) | undefined;
13083
+ /** Where a reading the keys moved to stands among the readings, said after
13084
+ it. `{position}` and `{count}` are replaced with the numbers, written in
13085
+ `locale`.
13086
+
13087
+ Set it to the words of the page's language, such as `{position} von
13088
+ {count}`, or to nothing to say no position. A slice or a series a
13089
+ legend hid is not counted. */
13090
+ positionLabel?: (HelixScatterChart["positionLabel"]) | undefined;
12244
13091
  /** The word the summary uses for the strength of the relation. */
12245
13092
  "correlation-label"?: (HelixScatterChart["correlationLabel"]) | undefined;
12246
13093
  /** The word the summary uses for the strength of the relation. */
@@ -12256,6 +13103,28 @@ is read along. */
12256
13103
  "points-label"?: (HelixScatterChart["pointsLabel"]) | undefined;
12257
13104
  /** The word the summary uses for a row when it counts them. */
12258
13105
  pointsLabel?: (HelixScatterChart["pointsLabel"]) | undefined;
13106
+ /** The heading of a column whose numbers size the points, such as
13107
+ `Population`, which makes the chart a bubble chart.
13108
+
13109
+ That column is then a measure and no series: it draws no points of its
13110
+ own, and each point's area follows its row's number in it. Absent, every
13111
+ point is one size. */
13112
+ "size-by"?: (HelixScatterChart["sizeBy"]) | undefined;
13113
+ /** The heading of a column whose numbers size the points, such as
13114
+ `Population`, which makes the chart a bubble chart.
13115
+
13116
+ That column is then a measure and no series: it draws no points of its
13117
+ own, and each point's area follows its row's number in it. Absent, every
13118
+ point is one size. */
13119
+ sizeBy?: (HelixScatterChart["sizeBy"]) | undefined;
13120
+ /** Draws each series' line of best fit across the plot, by least squares, in
13121
+ the series' color: the regression line a reader would otherwise draw by
13122
+ eye.
13123
+
13124
+ Absent draws none. A series with fewer than two points, or with every
13125
+ point at one measure across, has no line to draw. The summary already
13126
+ gives each series' correlation, which says how near the points are to it. */
13127
+ trend?: (HelixScatterChart["trend"]) | undefined;
12259
13128
  };
12260
13129
 
12261
13130
  export type HelixScatterChartVueEvents = {};
@@ -12279,6 +13148,9 @@ leaves, in milliseconds. Read under `scrollbars="scroll"` and
12279
13148
 
12280
13149
  Without one there is no region: see the note on the class. */
12281
13150
  label?: (HelixScrollArea["label"]) | undefined;
13151
+ /** The one axis the content scrolls along: `vertical` or `horizontal`. The
13152
+ other axis clips what is past it and has no scrollbar. Unset scrolls both. */
13153
+ orientation?: (HelixScrollArea["orientation"]) | undefined;
12282
13154
  /** Draws scrollbars of the component's own in place of the browser's, and
12283
13155
  says when they show.
12284
13156
 
@@ -12295,7 +13167,7 @@ Absent keeps the browser's scrollbars. */
12295
13167
  export type HelixScrollAreaVueEvents = {
12296
13168
  /** The content scrolled. Sent from the host, because the viewport's own does not leave the shadow root. Does not bubble. */
12297
13169
  scroll: HelixScrollAreaElementEvent;
12298
- /** The content stopped scrolling. Sent from the host, as `scroll` is. Does not bubble. */
13170
+ /** The content stopped scrolling. Sent from the host, as `scroll` is, and once for a thumb dragged across the content. Does not bubble. */
12299
13171
  scrollend: HelixScrollAreaElementEvent;
12300
13172
  };
12301
13173
 
@@ -12316,6 +13188,9 @@ export type HelixSelectHelixBeforeOpenElementEvent =
12316
13188
  /** `helix-filter` event type */
12317
13189
  export type HelixSelectHelixFilterElementEvent =
12318
13190
  HelixSelectElementEvent<HelixFilterEvent>;
13191
+ /** `helix-load-more` event type */
13192
+ export type HelixSelectHelixLoadMoreElementEvent =
13193
+ HelixSelectElementEvent<HelixLoadMoreEvent>;
12319
13194
 
12320
13195
  export type HelixSelectVueProps = {
12321
13196
  /** How strongly the trigger is drawn. Leave it unset for a framed field, or
@@ -12369,9 +13244,13 @@ hydration, or diffed by a framework, it comes back holding whatever the
12369
13244
  last reader did rather than what the author wrote. `:state(open)` carries
12370
13245
  the resolved state for stylesheets, which is what the mirror is for. */
12371
13246
  open?: (HelixSelect["open"]) | undefined;
12372
- /** The value the control starts with. A form reset returns it to this value. */
13247
+ /** The value the control starts with. A form reset returns it to this value,
13248
+ and to the `value` attribute where this one is not written, as a native
13249
+ control resets to the `value` it declares. */
12373
13250
  "default-value"?: (HelixSelect["defaultValue"]) | undefined;
12374
- /** The value the control starts with. A form reset returns it to this value. */
13251
+ /** The value the control starts with. A form reset returns it to this value,
13252
+ and to the `value` attribute where this one is not written, as a native
13253
+ control resets to the `value` it declares. */
12375
13254
  defaultValue?: (HelixSelect["defaultValue"]) | undefined;
12376
13255
  /** The control's current value, which its form submits.
12377
13256
 
@@ -12419,6 +13298,24 @@ the field and does not reach that one. */
12419
13298
  Passed to the listbox rather than acted on here, because the listbox owns
12420
13299
  the filtering, the empty state and the keyboard. */
12421
13300
  filterable?: (HelixSelect["filterable"]) | undefined;
13301
+ /** The open list's name where nothing names the Select, read by screen
13302
+ readers. The list has no visible name.
13303
+
13304
+ A Select named by `label`, `aria-label`, `aria-labelledby` or a `<label>`
13305
+ gives its list that name, and this is not used. Unnamed, the Select is
13306
+ reported once by the missing-name warning, and its list is not reported a
13307
+ second time for a name the page never wrote: the list is this element's,
13308
+ and so is the fallback. Combobox calls its list the same. */
13309
+ "list-label"?: (HelixSelect["listLabel"]) | undefined;
13310
+ /** The open list's name where nothing names the Select, read by screen
13311
+ readers. The list has no visible name.
13312
+
13313
+ A Select named by `label`, `aria-label`, `aria-labelledby` or a `<label>`
13314
+ gives its list that name, and this is not used. Unnamed, the Select is
13315
+ reported once by the missing-name warning, and its list is not reported a
13316
+ second time for a name the page never wrote: the list is this element's,
13317
+ and so is the fallback. Combobox calls its list the same. */
13318
+ listLabel?: (HelixSelect["listLabel"]) | undefined;
12422
13319
  /** Whether the options are still loading.
12423
13320
 
12424
13321
  Passed straight to the list, which is where the rows are and so where the
@@ -12433,6 +13330,16 @@ consumer wiring the same flag twice. */
12433
13330
  multiple?: (HelixSelect["multiple"]) | undefined;
12434
13331
  /** Shown on the trigger while nothing is chosen. */
12435
13332
  placeholder?: (HelixSelect["placeholder"]) | undefined;
13333
+ /** Where the list opens: `floating`, under the trigger and above it where
13334
+ there is no room, or `item-aligned`, over the trigger with the chosen
13335
+ option where the trigger is, as a native select does on macOS and Radix
13336
+ Select does by default.
13337
+
13338
+ Over the trigger, a reader's eye stays on the answer as the list opens
13339
+ round it, and a short move reaches the options either side. Near an edge
13340
+ of the screen the list moves to stay on it, so the option may sit beside
13341
+ the trigger rather than on it. It follows the page as it scrolls. */
13342
+ position?: (HelixSelect["position"]) | undefined;
12436
13343
  /** Whether the control is disabled and cannot be used.
12437
13344
 
12438
13345
  Reflected, because the styled tier selects on it, and mirrored to
@@ -12459,6 +13366,16 @@ imperatively later, and nothing is hydrating by then.
12459
13366
 
12460
13367
  Here rather than on each control. */
12461
13368
  name?: (HelixSelect["name"]) | undefined;
13369
+ /** Whether the trigger holds its group's tab stop.
13370
+
13371
+ A toolbar keeps one tab stop across its controls, and writing `tabindex`
13372
+ onto this element would change markup the consumer rendered, which a React
13373
+ consumer's hydration reports. A toolbar sets this property instead, and
13374
+ the stop moves on the trigger inside the shadow root, as Button's does.
13375
+
13376
+ No attribute, because it is coordination between elements rather than
13377
+ anything a consumer sets. */
13378
+ focusable?: (HelixSelect["focusable"]) | undefined;
12462
13379
  /** What the trigger shows for the chosen options: a function given them, in
12463
13380
  the order they appear, that returns text, an element or a Lit template.
12464
13381
 
@@ -12490,6 +13407,8 @@ export type HelixSelectVueEvents = {
12490
13407
  "helix-before-open": HelixSelectHelixBeforeOpenElementEvent;
12491
13408
  /** Fired as the user types in the filter field of a `filterable` select, with the text the list is filtered by. Cancelable: cancel it to leave the list unfiltered and filter the options yourself. */
12492
13409
  "helix-filter": HelixSelectHelixFilterElementEvent;
13410
+ /** Fired once the list is scrolled within a screen of its end, once for each number of options, and not while `loading` is set. Add the next page and set `loading` while you fetch it. */
13411
+ "helix-load-more": HelixSelectHelixLoadMoreElementEvent;
12493
13412
  /** Fired after the value changes. */
12494
13413
  input: HelixSelectElementEvent;
12495
13414
  };
@@ -12545,9 +13464,13 @@ export type HelixSliderHelixBeforeChangeElementEvent =
12545
13464
  HelixSliderElementEvent<HelixBeforeChangeEvent>;
12546
13465
 
12547
13466
  export type HelixSliderVueProps = {
12548
- /** The value the control starts with. A form reset returns it to this value. */
13467
+ /** The value the control starts with. A form reset returns it to this value,
13468
+ and to the `value` attribute where this one is not written, as a native
13469
+ control resets to the `value` it declares. */
12549
13470
  "default-value"?: (HelixSlider["defaultValue"]) | undefined;
12550
- /** The value the control starts with. A form reset returns it to this value. */
13471
+ /** The value the control starts with. A form reset returns it to this value,
13472
+ and to the `value` attribute where this one is not written, as a native
13473
+ control resets to the `value` it declares. */
12551
13474
  defaultValue?: (HelixSlider["defaultValue"]) | undefined;
12552
13475
  /** The control's current value, which its form submits.
12553
13476
 
@@ -12664,18 +13587,33 @@ takes the width of the row it is in. `--slider-length` is that number and
12664
13587
  defaults to nine rem, so one dropped into a layout is a usable height
12665
13588
  rather than a thumb sitting on nothing. */
12666
13589
  orientation?: (HelixSlider["orientation"]) | undefined;
13590
+ /** Where a single thumb's fill starts: `start` at `min`, `center` at the
13591
+ middle of the track, or `end` at `max`. Absent is `start`. A range fills
13592
+ between its thumbs and ignores it. */
13593
+ origin?: (HelixSlider["origin"]) | undefined;
12667
13594
  /** Adds a second thumb, so the value is a pair.
12668
13595
 
12669
13596
  The pair is one string, `"10,50"`, which is what a form submits and what
12670
13597
  `MixinControllerValue` already holds. `valueAsNumber` reads the lower of
12671
13598
  the two, since a range has no single number. */
12672
13599
  range?: (HelixSlider["range"]) | undefined;
13600
+ /** How the readout joins a range's two values, with `{start}` and `{end}`
13601
+ filled in. Write it in the page's language, such as `{start} bis {end}`. */
13602
+ "range-text"?: (HelixSlider["rangeText"]) | undefined;
13603
+ /** How the readout joins a range's two values, with `{start}` and `{end}`
13604
+ filled in. Write it in the page's language, such as `{start} bis {end}`. */
13605
+ rangeText?: (HelixSlider["rangeText"]) | undefined;
12673
13606
  /** Shows the chosen value beside the track. */
12674
13607
  "show-value"?: (HelixSlider["showValue"]) | undefined;
12675
13608
  /** Shows the chosen value beside the track. */
12676
13609
  showValue?: (HelixSlider["showValue"]) | undefined;
12677
13610
  /** How far one press of an arrow key moves the thumb. */
12678
13611
  step?: (HelixSlider["step"]) | undefined;
13612
+ /** Whether each thumb shows its value in a bubble beside it, as Web
13613
+ Awesome's `with-tooltip`. The styled slider shows the bubbles while the
13614
+ slider is under the pointer or holds focus. They repeat what each thumb
13615
+ already reports, so a screen reader skips them. */
13616
+ tooltip?: (HelixSlider["tooltip"]) | undefined;
12679
13617
  /** What a screen reader says for a thumb's value, with `{value}` filled in,
12680
13618
  such as `{value} degrees`. Empty announces the number alone. */
12681
13619
  "value-text"?: (HelixSlider["valueText"]) | undefined;
@@ -12825,6 +13763,32 @@ the accessible representation of a sparkline, and a list of the fourteen
12825
13763
  numbers is not. Absent, the drawing is hidden from a screen reader rather
12826
13764
  than announced without a name. */
12827
13765
  label?: (HelixSparkline["label"]) | undefined;
13766
+ /** The locale the readout's numbers and positions are written in, such as
13767
+ `de` for `1.240`.
13768
+
13769
+ Absent uses the runtime's own. A table's cells are shown as the table
13770
+ writes them, whatever this says. */
13771
+ locale?: (HelixSparkline["locale"]) | undefined;
13772
+ /** Which readings take a mark of their own: `high`, `low`, or both,
13773
+ separated by spaces.
13774
+
13775
+ Absent marks none, and the drawing is what it was. Each mark is a part,
13776
+ placed at its reading, for a stylesheet to draw. */
13777
+ marks?: (HelixSparkline["marks"]) | undefined;
13778
+ /** What the readings come to, said after the name: `{first}` and `{last}`
13779
+ for the first and the last reading, `{high}` and `{low}` for the highest
13780
+ and the lowest, each written as the readout writes it.
13781
+
13782
+ Set it to the words of the page's language, or to nothing to say no
13783
+ more than the name. Said only where the sparkline is named. */
13784
+ "overview-label"?: (HelixSparkline["overviewLabel"]) | undefined;
13785
+ /** What the readings come to, said after the name: `{first}` and `{last}`
13786
+ for the first and the last reading, `{high}` and `{low}` for the highest
13787
+ and the lowest, each written as the readout writes it.
13788
+
13789
+ Set it to the words of the page's language, or to nothing to say no
13790
+ more than the name. Said only where the sparkline is named. */
13791
+ overviewLabel?: (HelixSparkline["overviewLabel"]) | undefined;
12828
13792
  /** What the readings are drawn as.
12829
13793
 
12830
13794
  Absent is `area`, a line with the region beneath it washed. `line` is the
@@ -12853,6 +13817,26 @@ anywhere the fill would be noise, several of them in one box for instance.
12853
13817
  This tier rather than the one above: a plot type is geometry and geometry
12854
13818
  is markup, the same reason `curve` lives here. */
12855
13819
  plot?: (HelixSparkline["plot"]) | undefined;
13820
+ /** Where a reading the keys moved to stands among the readings, said after
13821
+ it. `{position}` and `{count}` are replaced with the numbers, written in
13822
+ `locale`.
13823
+
13824
+ Set it to the words of the page's language, such as `{position} von
13825
+ {count}`, or to nothing to say no position. */
13826
+ "position-label"?: (HelixSparkline["positionLabel"]) | undefined;
13827
+ /** Where a reading the keys moved to stands among the readings, said after
13828
+ it. `{position}` and `{count}` are replaced with the numbers, written in
13829
+ `locale`.
13830
+
13831
+ Set it to the words of the page's language, such as `{position} von
13832
+ {count}`, or to nothing to say no position. */
13833
+ positionLabel?: (HelixSparkline["positionLabel"]) | undefined;
13834
+ /** Two values a band is drawn between, behind the line, separated by a
13835
+ space: `range="60 100"` marks a normal range.
13836
+
13837
+ The scale stretches to hold the band where the readings do not reach it.
13838
+ Absent draws none. */
13839
+ range?: (HelixSparkline["range"]) | undefined;
12856
13840
  /** The numbers, separated by whitespace or by commas.
12857
13841
 
12858
13842
  An array assigned to the property works too, which is what React 19 does
@@ -13111,6 +14095,8 @@ export type HelixSplitterVueEvents = {
13111
14095
  "helix-collapse": HelixSplitterHelixCollapseElementEvent;
13112
14096
  /** Fired after the divider settles somewhere new, with the new position. */
13113
14097
  "helix-resized": HelixSplitterHelixResizedElementEvent;
14098
+ /** Fired each time a drag moves the divider, before it settles, as a range input does while it is dragged. Read `position` for where it is now. */
14099
+ input: HelixSplitterElementEvent;
13114
14100
  };
13115
14101
 
13116
14102
  export type HelixStatGroupVueProps = {
@@ -13144,10 +14130,9 @@ A property rather than a `Flex` around it, because the unit has to stay on
13144
14130
  the value's baseline whichever way the pair goes, and only this element
13145
14131
  knows which of its children the unit belongs to.
13146
14132
 
13147
- **`Trend` has a `direction` too, and there it means which way a number
13148
- moved:** `up`, `down` or `neutral`. A Stat and a Trend are often written
13149
- side by side, so watch for the mix-up. On a Stat those three words are not
13150
- layouts, and the pair stays the column.
14133
+ The name and the values are `Flex`'s, which lays out the same way. Which
14134
+ way a number moved is `Trend`'s `movement`. On a Stat, `up`, `down` and
14135
+ `neutral` are not layouts, and the pair stays the column.
13151
14136
 
13152
14137
  **Optional rather than defaulted to `column`, which is not a style
13153
14138
  preference.** A reflecting property with a default writes its attribute onto
@@ -13211,6 +14196,12 @@ in both. Of those four combinations three are ones nobody should pick, and
13211
14196
  a property whose job is mostly to be left alone is a property that mostly
13212
14197
  catches people out. */
13213
14198
  orientation?: (HelixSteps["orientation"]) | undefined;
14199
+ /** What the `progress` part says to a screen reader, with `{percent}` filled
14200
+ in with `progress`. */
14201
+ "progress-label"?: (HelixSteps["progressLabel"]) | undefined;
14202
+ /** What the `progress` part says to a screen reader, with `{percent}` filled
14203
+ in with `progress`. */
14204
+ progressLabel?: (HelixSteps["progressLabel"]) | undefined;
13214
14205
  /** What each step is marked with.
13215
14206
 
13216
14207
  Absent is the state itself: a check where a stage is done, a target where
@@ -13222,6 +14213,10 @@ nothing about whether it is finished.
13222
14213
  order is the point, a form that says "step 3 of 5" beside it, or a sequence
13223
14214
  a reader is told to come back to by number. */
13224
14215
  variant?: (HelixSteps["variant"]) | undefined;
14216
+ /** A function that answers whether a stage is valid, asked about the stage a
14217
+ reader is on before they move forward from it. Return `false` to keep them
14218
+ there. Not asked of an `optional` stage, nor for a move back. */
14219
+ validate?: (HelixSteps["validate"]) | undefined;
13225
14220
  };
13226
14221
 
13227
14222
  export type HelixStepsVueEvents = {
@@ -13280,9 +14275,13 @@ Not reflected: the attribute is the consumer's input and stays as they
13280
14275
  wrote it, and `:state(checked)` carries the resolved state for
13281
14276
  stylesheets. */
13282
14277
  checked?: (HelixSwitch["checked"]) | undefined;
13283
- /** Whether the control starts checked. A form reset returns it to this state. */
14278
+ /** Whether the control starts checked. A form reset returns it to this state,
14279
+ and to the `checked` attribute where this one is not written, as a native
14280
+ checkbox resets to the `checked` it declares. */
13284
14281
  "default-checked"?: (HelixSwitch["defaultChecked"]) | undefined;
13285
- /** Whether the control starts checked. A form reset returns it to this state. */
14282
+ /** Whether the control starts checked. A form reset returns it to this state,
14283
+ and to the `checked` attribute where this one is not written, as a native
14284
+ checkbox resets to the `checked` it declares. */
13286
14285
  defaultChecked?: (HelixSwitch["defaultChecked"]) | undefined;
13287
14286
  /** Whether a reader can see and focus the control and cannot change it. A
13288
14287
  read-only control still submits its value.
@@ -13721,6 +14720,13 @@ export type HelixTableVueEvents = {
13721
14720
  };
13722
14721
 
13723
14722
  export type HelixTableRowVueProps = {
14723
+ /** The URL a press on the row follows, which makes the whole row a link.
14724
+ Empty, the default, leaves presses to the row's cells. */
14725
+ href?: (HelixTableRow["href"]) | undefined;
14726
+ /** The `rel` of the row's link. You set it yourself, as on an anchor. */
14727
+ rel?: (HelixTableRow["rel"]) | undefined;
14728
+ /** Where the row's link opens, such as `_blank`. */
14729
+ target?: (HelixTableRow["target"]) | undefined;
13724
14730
  /** The key the table's `selected` lists this row by. Left empty, the row is
13725
14731
  known by its place among the rows as written. */
13726
14732
  value?: (HelixTableRow["value"]) | undefined;
@@ -13871,6 +14877,12 @@ export type HelixTagGroupHelixDismissElementEvent =
13871
14877
  HelixTagGroupElementEvent<HelixDismissEvent>;
13872
14878
 
13873
14879
  export type HelixTagGroupVueProps = {
14880
+ /** The words the group shows and says once its last tag is removed, where
14881
+ nothing is in the `empty` slot. */
14882
+ "empty-label"?: (HelixTagGroup["emptyLabel"]) | undefined;
14883
+ /** The words the group shows and says once its last tag is removed, where
14884
+ nothing is in the `empty` slot. */
14885
+ emptyLabel?: (HelixTagGroup["emptyLabel"]) | undefined;
13874
14886
  /** The name of the set, such as "Filters", which a screen reader announces
13875
14887
  before its tags. */
13876
14888
  label?: (HelixTagGroup["label"]) | undefined;
@@ -14011,7 +15023,8 @@ ellipsis.
14011
15023
  Lays the text out as a block, because a line count needs a width to break
14012
15024
  against. The whole text stays in the page, so a screen reader and a search
14013
15025
  still read all of it. Set it as an attribute, such as `lines="1"` for a
14014
- single line. */
15026
+ single line. A count that is not a whole number above zero, such as `0`,
15027
+ cuts nothing off. */
14015
15028
  lines?: (HelixText["lines"]) | undefined;
14016
15029
  /** How the lines align, set as `text-align`.
14017
15030
 
@@ -14063,11 +15076,18 @@ export type HelixTextareaElementEvent<E = Event> = TypedEvent<HelixTextarea, E>;
14063
15076
  /** `helix-before-change` event type */
14064
15077
  export type HelixTextareaHelixBeforeChangeElementEvent =
14065
15078
  HelixTextareaElementEvent<HelixBeforeChangeEvent>;
15079
+ /** `helix-clear` event type */
15080
+ export type HelixTextareaHelixClearElementEvent =
15081
+ HelixTextareaElementEvent<HelixClearEvent>;
14066
15082
 
14067
15083
  export type HelixTextareaVueProps = {
14068
- /** The value the control starts with. A form reset returns it to this value. */
15084
+ /** The value the control starts with. A form reset returns it to this value,
15085
+ and to the `value` attribute where this one is not written, as a native
15086
+ control resets to the `value` it declares. */
14069
15087
  "default-value"?: (HelixTextarea["defaultValue"]) | undefined;
14070
- /** The value the control starts with. A form reset returns it to this value. */
15088
+ /** The value the control starts with. A form reset returns it to this value,
15089
+ and to the `value` attribute where this one is not written, as a native
15090
+ control resets to the `value` it declares. */
14071
15091
  defaultValue?: (HelixTextarea["defaultValue"]) | undefined;
14072
15092
  /** The control's current value, which its form submits.
14073
15093
 
@@ -14116,6 +15136,12 @@ a token like `email` or `bday` to ask for autofill, or to `off` to refuse. */
14116
15136
  "auto-grow"?: (HelixTextarea["autoGrow"]) | undefined;
14117
15137
  /** Grows the box to fit its content, so it does not scroll. */
14118
15138
  autoGrow?: (HelixTextarea["autoGrow"]) | undefined;
15139
+ /** Draws a button that empties the field while it holds text. */
15140
+ clearable?: (HelixTextarea["clearable"]) | undefined;
15141
+ /** The accessible name of the clear button, which shows only an icon. */
15142
+ "clear-label"?: (HelixTextarea["clearLabel"]) | undefined;
15143
+ /** The accessible name of the clear button, which shows only an icon. */
15144
+ clearLabel?: (HelixTextarea["clearLabel"]) | undefined;
14119
15145
  /** How many characters wide the box is, when the layout does not set its
14120
15146
  width.
14121
15147
 
@@ -14222,6 +15248,10 @@ which is where an empty field's caret would be anyway. */
14222
15248
  selectionEnd?: (HelixTextarea["selectionEnd"]) | undefined;
14223
15249
  /** Where the selection starts, as an offset into the value. */
14224
15250
  selectionStart?: (HelixTextarea["selectionStart"]) | undefined;
15251
+ /** Your own rule for the value, run on every change once the browser finds
15252
+ nothing wrong. Return a message, or a list of them, to mark the field
15253
+ invalid, and `true`, `null`, or nothing to accept the value. */
15254
+ validate?: (HelixTextarea["validate"]) | undefined;
14225
15255
  };
14226
15256
 
14227
15257
  export type HelixTextareaVueEvents = {
@@ -14229,6 +15259,8 @@ export type HelixTextareaVueEvents = {
14229
15259
  change: HelixTextareaElementEvent;
14230
15260
  /** Fired as the text changes, and cancelable. */
14231
15261
  "helix-before-change": HelixTextareaHelixBeforeChangeElementEvent;
15262
+ /** Fired after the clear button has emptied the field, after `input` and `change`. */
15263
+ "helix-clear": HelixTextareaHelixClearElementEvent;
14232
15264
  /** Fired after the value changes. */
14233
15265
  input: HelixTextareaElementEvent;
14234
15266
  };
@@ -14339,9 +15371,13 @@ as `+3`, does not say what it does. */
14339
15371
  "max-tags"?: (HelixTimeInput["maxTags"] | `${number}`) | undefined;
14340
15372
  /** How many tokens to show before the rest become a count. */
14341
15373
  maxTags?: (HelixTimeInput["maxTags"]) | undefined;
14342
- /** The value the control starts with. A form reset returns it to this value. */
15374
+ /** The value the control starts with. A form reset returns it to this value,
15375
+ and to the `value` attribute where this one is not written, as a native
15376
+ control resets to the `value` it declares. */
14343
15377
  "default-value"?: (HelixTimeInput["defaultValue"]) | undefined;
14344
- /** The value the control starts with. A form reset returns it to this value. */
15378
+ /** The value the control starts with. A form reset returns it to this value,
15379
+ and to the `value` attribute where this one is not written, as a native
15380
+ control resets to the `value` it declares. */
14345
15381
  defaultValue?: (HelixTimeInput["defaultValue"]) | undefined;
14346
15382
  /** The control's current value, which its form submits.
14347
15383
 
@@ -14407,7 +15443,8 @@ Handed to the list. The value is `HH:mm` on twenty-four hours either way. */
14407
15443
  hourCycle?: (HelixTimeInput["hourCycle"]) | undefined;
14408
15444
  /** Language tag the times are written in.
14409
15445
 
14410
- Absent uses the runtime's own. */
15446
+ Absent is the page's: the `lang` of the nearest element with one, as
15447
+ Shoelace and Web Awesome read it, then the runtime's own. */
14411
15448
  locale?: (HelixTimeInput["locale"]) | undefined;
14412
15449
  /** Latest time that can be chosen, as `HH:mm`. */
14413
15450
  max?: (HelixTimeInput["max"]) | undefined;
@@ -14566,9 +15603,26 @@ export type HelixTimePickerHelixBeforeChangeElementEvent =
14566
15603
  HelixTimePickerElementEvent<HelixBeforeChangeEvent>;
14567
15604
 
14568
15605
  export type HelixTimePickerVueProps = {
14569
- /** The value the control starts with. A form reset returns it to this value. */
15606
+ /** A message under the picker, such as what is wrong with the answer.
15607
+
15608
+ While set, the picker is invalid and does not submit, as a field's
15609
+ `feedback` is, it is marked invalid to a reader and to CSS, and the
15610
+ controls a reader answers with are described by it. */
15611
+ feedback?: (HelixTimePicker["feedback"]) | undefined;
15612
+ /** Whether the answer fails validation, marked on the controls a reader
15613
+ answers with and as `:state(invalid)`.
15614
+
15615
+ A flag a field that wraps the picker sets, since that field owns the
15616
+ label, the hint and the message; on its own, `feedback` both marks the
15617
+ picker and says why. */
15618
+ invalid?: (HelixTimePicker["invalid"]) | undefined;
15619
+ /** The value the control starts with. A form reset returns it to this value,
15620
+ and to the `value` attribute where this one is not written, as a native
15621
+ control resets to the `value` it declares. */
14570
15622
  "default-value"?: (HelixTimePicker["defaultValue"]) | undefined;
14571
- /** The value the control starts with. A form reset returns it to this value. */
15623
+ /** The value the control starts with. A form reset returns it to this value,
15624
+ and to the `value` attribute where this one is not written, as a native
15625
+ control resets to the `value` it declares. */
14572
15626
  defaultValue?: (HelixTimePicker["defaultValue"]) | undefined;
14573
15627
  /** The control's current value, which its form submits.
14574
15628
 
@@ -14625,25 +15679,24 @@ Absent is the locale's own, which is right for a reader's own form. Set it
14625
15679
  where every reader must see the same clock whatever their language, as a
14626
15680
  timetable does. The value is `HH:mm` on twenty-four hours either way. */
14627
15681
  hourCycle?: (HelixTimePicker["hourCycle"]) | undefined;
14628
- /** What the wheel of hours is called, read by screen readers. */
15682
+ /** What the wheel of hours is called, read by screen readers.
15683
+
15684
+ Absent is the locale's own word, from `Intl.DisplayNames`: "Hour" in
15685
+ English, "Stunde" in German. */
14629
15686
  "hour-label"?: (HelixTimePicker["hourLabel"]) | undefined;
14630
- /** What the wheel of hours is called, read by screen readers. */
14631
- hourLabel?: (HelixTimePicker["hourLabel"]) | undefined;
14632
- /** Whether the current selection fails validation.
15687
+ /** What the wheel of hours is called, read by screen readers.
14633
15688
 
14634
- A flag rather than a message, the same split Date Picker draws. A flat
14635
- picker has no room of its own for a sentence: the field that wraps one owns
14636
- the label, the hint and the feedback, and a second message inside the panel
14637
- would be the same error said twice. What is left for the picker is the one
14638
- thing the field cannot draw from outside, the mark on the answer itself. */
14639
- invalid?: (HelixTimePicker["invalid"]) | undefined;
15689
+ Absent is the locale's own word, from `Intl.DisplayNames`: "Hour" in
15690
+ English, "Stunde" in German. */
15691
+ hourLabel?: (HelixTimePicker["hourLabel"]) | undefined;
14640
15692
  /** Accessible name for the list, which has no visible one of its own.
14641
15693
 
14642
15694
  An `aria-label` or `aria-labelledby` on the host names the list instead. */
14643
15695
  label?: (HelixTimePicker["label"]) | undefined;
14644
- /** Language tag the times are written in.
15696
+ /** Language tag the times and the wheels' names are written in.
14645
15697
 
14646
- Absent uses the runtime's own. */
15698
+ Absent is the page's: the `lang` of the nearest element with one, as
15699
+ Shoelace and Web Awesome read it, then the runtime's own. */
14647
15700
  locale?: (HelixTimePicker["locale"]) | undefined;
14648
15701
  /** Stops the arrow keys in the list from choosing each time they move to.
14649
15702
  Enter, Space or a click chooses.
@@ -14654,16 +15707,28 @@ closes on a time. */
14654
15707
  /** Latest time offered, as `HH:mm`. */
14655
15708
  max?: (HelixTimePicker["max"]) | undefined;
14656
15709
  /** What the wheel of the half of the day is called, read by screen readers.
14657
- Its two options are written as the locale writes them, such as AM and PM. */
15710
+ Its two options are written as the locale writes them, such as AM and PM.
15711
+
15712
+ Absent is the locale's own word, from `Intl.DisplayNames`: "AM/PM" in
15713
+ English, "Tageshälfte" in German. */
14658
15714
  "meridiem-label"?: (HelixTimePicker["meridiemLabel"]) | undefined;
14659
15715
  /** What the wheel of the half of the day is called, read by screen readers.
14660
- Its two options are written as the locale writes them, such as AM and PM. */
15716
+ Its two options are written as the locale writes them, such as AM and PM.
15717
+
15718
+ Absent is the locale's own word, from `Intl.DisplayNames`: "AM/PM" in
15719
+ English, "Tageshälfte" in German. */
14661
15720
  meridiemLabel?: (HelixTimePicker["meridiemLabel"]) | undefined;
14662
15721
  /** Earliest time offered, as `HH:mm`. */
14663
15722
  min?: (HelixTimePicker["min"]) | undefined;
14664
- /** What the wheel of minutes is called, read by screen readers. */
15723
+ /** What the wheel of minutes is called, read by screen readers.
15724
+
15725
+ Absent is the locale's own word, from `Intl.DisplayNames`: "Minute" in
15726
+ English and German, "分" in Japanese. */
14665
15727
  "minute-label"?: (HelixTimePicker["minuteLabel"]) | undefined;
14666
- /** What the wheel of minutes is called, read by screen readers. */
15728
+ /** What the wheel of minutes is called, read by screen readers.
15729
+
15730
+ Absent is the locale's own word, from `Intl.DisplayNames`: "Minute" in
15731
+ English and German, "分" in Japanese. */
14667
15732
  minuteLabel?: (HelixTimePicker["minuteLabel"]) | undefined;
14668
15733
  /** How many times can be held at once.
14669
15734
 
@@ -14721,9 +15786,15 @@ else set needs. */
14721
15786
  readOnly?: (HelixTimePicker["readOnly"]) | undefined;
14722
15787
  /** Stops the form from submitting while no time is chosen. */
14723
15788
  required?: (HelixTimePicker["required"]) | undefined;
14724
- /** What the wheel of seconds is called, read by screen readers. */
15789
+ /** What the wheel of seconds is called, read by screen readers.
15790
+
15791
+ Absent is the locale's own word, from `Intl.DisplayNames`: "Second" in
15792
+ English, "Sekunde" in German. */
14725
15793
  "second-label"?: (HelixTimePicker["secondLabel"]) | undefined;
14726
- /** What the wheel of seconds is called, read by screen readers. */
15794
+ /** What the wheel of seconds is called, read by screen readers.
15795
+
15796
+ Absent is the locale's own word, from `Intl.DisplayNames`: "Second" in
15797
+ English, "Sekunde" in German. */
14727
15798
  secondLabel?: (HelixTimePicker["secondLabel"]) | undefined;
14728
15799
  /** Whether times carry their seconds.
14729
15800
 
@@ -14996,9 +16067,13 @@ because a row of tabs is a row until asked; here it is the resting state,
14996
16067
  because a group of toggles is one control. Same groove, opposite polarity,
14997
16068
  and what decides the polarity is which reading is ordinary for the family. */
14998
16069
  separation?: (HelixToggleGroup["separation"]) | undefined;
14999
- /** The value the control starts with. A form reset returns it to this value. */
16070
+ /** The value the control starts with. A form reset returns it to this value,
16071
+ and to the `value` attribute where this one is not written, as a native
16072
+ control resets to the `value` it declares. */
15000
16073
  "default-value"?: (HelixToggleGroup["defaultValue"]) | undefined;
15001
- /** The value the control starts with. A form reset returns it to this value. */
16074
+ /** The value the control starts with. A form reset returns it to this value,
16075
+ and to the `value` attribute where this one is not written, as a native
16076
+ control resets to the `value` it declares. */
15002
16077
  defaultValue?: (HelixToggleGroup["defaultValue"]) | undefined;
15003
16078
  /** The control's current value, which its form submits.
15004
16079
 
@@ -15289,9 +16364,13 @@ Without one, sweeping across a row of controls flashes a tooltip for each
15289
16364
  of them, which is noise rather than help. Focus opens with no delay: a
15290
16365
  keyboard reader arriving on a control has already committed to it. */
15291
16366
  delay?: (HelixTooltip["delay"]) | undefined;
15292
- /** How long the bubble stays after the pointer leaves, in milliseconds. */
16367
+ /** How long the bubble stays after the pointer leaves the trigger or the
16368
+ bubble, in milliseconds: the close delay. It is the time a reader has to
16369
+ cross the gap onto the bubble. */
15293
16370
  "delay-out"?: (HelixTooltip["delayOut"] | `${number}`) | undefined;
15294
- /** How long the bubble stays after the pointer leaves, in milliseconds. */
16371
+ /** How long the bubble stays after the pointer leaves the trigger or the
16372
+ bubble, in milliseconds: the close delay. It is the time a reader has to
16373
+ cross the gap onto the bubble. */
15295
16374
  delayOut?: (HelixTooltip["delayOut"]) | undefined;
15296
16375
  /** Stops the tooltip from showing. */
15297
16376
  disabled?: (HelixTooltip["disabled"]) | undefined;
@@ -15314,6 +16393,11 @@ through as attributes. Both paths reach the same place through Lit, so
15314
16393
  nothing is broken by it; a `[for]` selector would find nothing, which is
15315
16394
  why this does not reflect and nothing styles on it. */
15316
16395
  for?: (HelixTooltip["for"]) | undefined;
16396
+ /** Whether the pointer can move onto the bubble and the bubble stays, so a
16397
+ reader can read it under a magnifier or select its words, as WCAG 1.4.13
16398
+ asks. `hoverable="false"` hides the bubble once the pointer reaches it,
16399
+ for a bubble that covers something a reader moves on to. */
16400
+ hoverable?: (HelixTooltip["hoverable"]) | undefined;
15317
16401
  /** The space between the trigger and the tip of the bubble, in pixels.
15318
16402
 
15319
16403
  **Measured from the point, which is what the arrow being back changed.**
@@ -15405,6 +16489,9 @@ export type HelixTourHelixCompleteElementEvent =
15405
16489
  /** `helix-tour-ask` event type */
15406
16490
  export type HelixTourHelixTourAskElementEvent =
15407
16491
  HelixTourElementEvent<HelixTourAskEvent>;
16492
+ /** `helix-tour-status` event type */
16493
+ export type HelixTourHelixTourStatusElementEvent =
16494
+ HelixTourElementEvent<HelixTourStatusEvent>;
15408
16495
 
15409
16496
  export type HelixTourVueProps = {
15410
16497
  /** Whether the element starts open. Ignored once `open` is written. */
@@ -15486,6 +16573,8 @@ export type HelixTourVueEvents = {
15486
16573
  "helix-complete": HelixTourHelixCompleteElementEvent;
15487
16574
  /** Fired when a stop's control is pressed to move the tour. The stop sends it, and the tour handles it. */
15488
16575
  "helix-tour-ask": HelixTourHelixTourAskElementEvent;
16576
+ /** Fired when the tour starts waiting at a `wait` stop, is skipped, or is completed, with the stop's index and `detail.status` saying which. */
16577
+ "helix-tour-status": HelixTourHelixTourStatusElementEvent;
15489
16578
  };
15490
16579
 
15491
16580
  /** `HelixTourStop` component event */
@@ -15782,13 +16871,13 @@ branch as a label; a headless consumer reads the attribute and the
15782
16871
  written here appears in the served markup of every tree anybody renders.
15783
16872
  The resting state is the absence of the attribute, which is `peer`. */
15784
16873
  nesting?: (HelixTree["nesting"]) | undefined;
15785
- /** Whether a reader can check many items. Unset, one item is chosen at a
15786
- time.
16874
+ /** Whether a reader can check many items, or choose only the items at the
16875
+ ends. Unset, one item is chosen at a time, branches included.
15787
16876
 
15788
16877
  Optional, so a tree of one choice writes no attribute onto the host. */
15789
16878
  "selection-mode"?: (HelixTree["selectionMode"]) | undefined;
15790
- /** Whether a reader can check many items. Unset, one item is chosen at a
15791
- time.
16879
+ /** Whether a reader can check many items, or choose only the items at the
16880
+ ends. Unset, one item is chosen at a time, branches included.
15792
16881
 
15793
16882
  Optional, so a tree of one choice writes no attribute onto the host. */
15794
16883
  selectionMode?: (HelixTree["selectionMode"]) | undefined;
@@ -15811,26 +16900,56 @@ export type HelixTrendVueProps = {
15811
16900
  "better-label"?: (HelixTrend["betterLabel"]) | undefined;
15812
16901
  /** The word read out after the direction when the move is an improvement. */
15813
16902
  betterLabel?: (HelixTrend["betterLabel"]) | undefined;
15814
- /** Which way the measurement moved.
15815
-
15816
- Absent is neutral, so a trend with nothing to report draws a bar rather
15817
- than picking a direction. Optional rather than defaulted for the reason
15818
- `Stat.direction` is: a reflecting property with a default writes its
15819
- attribute onto the host the moment the element upgrades, and the host is
15820
- markup the consumer rendered, which React compares against what it rendered
15821
- and reports as a hydration mismatch. */
16903
+ /** Which way the measurement moved, as `movement` says it. */
15822
16904
  direction?: (HelixTrend["direction"]) | undefined;
15823
16905
  /** The word read out for a move down. */
15824
16906
  "down-label"?: (HelixTrend["downLabel"]) | undefined;
15825
16907
  /** The word read out for a move down. */
15826
16908
  downLabel?: (HelixTrend["downLabel"]) | undefined;
15827
- /** Which direction counts as an improvement for this metric.
16909
+ /** `Intl.NumberFormat` options `value` is written with, as React Aria's
16910
+ NumberField takes them: a percent, a currency, a unit or a number of
16911
+ decimals. Written as JSON in the attribute.
16912
+
16913
+ ```html
16914
+ <helix-trend value="-0.084" format-options='{"style":"percent","maximumFractionDigits":1}'></helix-trend>
16915
+ ```
16916
+
16917
+ The example says "Down 8.4%". The size is written without a sign, since
16918
+ the arrow and the word say which way; set `signDisplay` for one. Absent
16919
+ writes the number as the locale writes any number. */
16920
+ "format-options"?: (HelixTrend["formatOptions"]) | undefined;
16921
+ /** `Intl.NumberFormat` options `value` is written with, as React Aria's
16922
+ NumberField takes them: a percent, a currency, a unit or a number of
16923
+ decimals. Written as JSON in the attribute.
16924
+
16925
+ ```html
16926
+ <helix-trend value="-0.084" format-options='{"style":"percent","maximumFractionDigits":1}'></helix-trend>
16927
+ ```
16928
+
16929
+ The example says "Down 8.4%". The size is written without a sign, since
16930
+ the arrow and the word say which way; set `signDisplay` for one. Absent
16931
+ writes the number as the locale writes any number. */
16932
+ formatOptions?: (HelixTrend["formatOptions"]) | undefined;
16933
+ /** Which movement counts as an improvement for this metric.
15828
16934
 
15829
16935
  Absent states the movement without judging it, which is the honest default:
15830
16936
  revenue up is good news and latency up is bad news, and only the consumer
15831
16937
  knows which one this is. Set it once per metric and it holds while the
15832
- direction changes underneath. */
16938
+ movement changes underneath. */
15833
16939
  good?: (HelixTrend["good"]) | undefined;
16940
+ /** The locale `value` is written in, such as `de` for `1.234,5`.
16941
+
16942
+ Absent uses the runtime's own. Set it on a page rendered on a server, so
16943
+ the server and the browser write the figure alike. */
16944
+ locale?: (HelixTrend["locale"]) | undefined;
16945
+ /** Which way the measurement moved.
16946
+
16947
+ Absent is neutral, so a trend with nothing to report draws a bar rather
16948
+ than picking a direction. Optional rather than defaulted: a reflecting
16949
+ property with a default writes its attribute onto the host the moment the
16950
+ element upgrades, and the host is markup the consumer rendered, which React
16951
+ compares against what it rendered and reports as a hydration mismatch. */
16952
+ movement?: (HelixTrend["movement"]) | undefined;
15834
16953
  /** The word read out for no move, or for a direction that is not one of the
15835
16954
  three. */
15836
16955
  "unchanged-label"?: (HelixTrend["unchangedLabel"]) | undefined;
@@ -15841,6 +16960,14 @@ three. */
15841
16960
  "up-label"?: (HelixTrend["upLabel"]) | undefined;
15842
16961
  /** The word read out for a move up. */
15843
16962
  upLabel?: (HelixTrend["upLabel"]) | undefined;
16963
+ /** The change as a signed number, such as `0.12` or `-8`, which sets the
16964
+ movement by its sign and is written as the metric.
16965
+
16966
+ Above zero is up, below is down, and zero is neutral; `movement` wins when
16967
+ both are written. The size is written in the `value` part with
16968
+ `format-options` and `locale`, in place of a slotted metric. Absent leaves
16969
+ the movement to `movement` and the metric to the slot. */
16970
+ value?: (HelixTrend["value"]) | undefined;
15844
16971
  /** The word read out after the direction when the move is a setback. */
15845
16972
  "worse-label"?: (HelixTrend["worseLabel"]) | undefined;
15846
16973
  /** The word read out after the direction when the move is a setback. */
@@ -15963,7 +17090,7 @@ arrives or leaves, so previous goes back through what has played. */
15963
17090
  };
15964
17091
 
15965
17092
  export type HelixVideoPlaylistVueEvents = {
15966
- /** The current entry changed. The playlist already holds the new entry when this is sent. */
17093
+ /** The current entry changed. The playlist already holds the new entry when this is sent, and `detail.previous` is the entry it left. `currentEntry` is the entry itself, with its `src`, `poster` and name. */
15967
17094
  "helix-activate": HelixVideoPlaylistHelixActivateElementEvent;
15968
17095
  /** The current entry is about to change. Cancelable: cancel it to keep the current entry. */
15969
17096
  "helix-before-activate": HelixVideoPlaylistHelixBeforeActivateElementEvent;
@@ -16100,7 +17227,11 @@ assumed: it is absent on iPhone and behind a flag in Firefox, and a button
16100
17227
  that cannot work is worse than one that is not there.
16101
17228
 
16102
17229
  The names are `speed`, `pip`, `remote`, `download`, `rewind`, `forward`,
16103
- `previous` and `next`.
17230
+ `previous` and `next`. `full` stands for `rewind`, `forward`, `speed`,
17231
+ `pip` and `remote` in that order, the controls that act on the video by
17232
+ themselves, as Web Awesome's `full` preset does, and a name it already
17233
+ holds is drawn once. `extra-controls="full"` is the whole bar, and
17234
+ `overflow-controls="full"` puts all of it behind one button.
16104
17235
 
16105
17236
  **`previous` and `next` do nothing to the video, and are offered anyway.**
16106
17237
  They announce `helix-previous` and `helix-next` and stop there, so what
@@ -16130,7 +17261,11 @@ assumed: it is absent on iPhone and behind a flag in Firefox, and a button
16130
17261
  that cannot work is worse than one that is not there.
16131
17262
 
16132
17263
  The names are `speed`, `pip`, `remote`, `download`, `rewind`, `forward`,
16133
- `previous` and `next`.
17264
+ `previous` and `next`. `full` stands for `rewind`, `forward`, `speed`,
17265
+ `pip` and `remote` in that order, the controls that act on the video by
17266
+ themselves, as Web Awesome's `full` preset does, and a name it already
17267
+ holds is drawn once. `extra-controls="full"` is the whole bar, and
17268
+ `overflow-controls="full"` puts all of it behind one button.
16134
17269
 
16135
17270
  **`previous` and `next` do nothing to the video, and are offered anyway.**
16136
17271
  They announce `helix-previous` and `helix-next` and stop there, so what
@@ -16430,6 +17565,9 @@ export type HelixVirtualListElementEvent<E = Event> = TypedEvent<
16430
17565
  HelixVirtualList,
16431
17566
  E
16432
17567
  >;
17568
+ /** `helix-before-change` event type */
17569
+ export type HelixVirtualListHelixBeforeChangeElementEvent =
17570
+ HelixVirtualListElementEvent<HelixBeforeChangeEvent>;
16433
17571
  /** `helix-load-more` event type */
16434
17572
  export type HelixVirtualListHelixLoadMoreElementEvent =
16435
17573
  HelixVirtualListElementEvent<HelixLoadMoreEvent>;
@@ -16438,6 +17576,10 @@ export type HelixVirtualListHelixRangeChangeElementEvent =
16438
17576
  HelixVirtualListElementEvent<HelixRangeChangeEvent>;
16439
17577
 
16440
17578
  export type HelixVirtualListVueProps = {
17579
+ /** How many items a line holds. One, the default, is a list; more lays the
17580
+ items out as a grid of that many equal columns, windowed a line at a
17581
+ time, with Left and Right moving along a line. */
17582
+ columns?: (HelixVirtualList["columns"]) | undefined;
16441
17583
  /** The height of one row, in pixels, used to find the row at a scroll offset.
16442
17584
 
16443
17585
  An estimate rather than a measurement while `measured` is off, which is
@@ -16446,21 +17588,61 @@ right whenever the rows really are one height and is the cheaper of the two. */
16446
17588
  /** The id of the script element that holds the items as JSON. `items` wins
16447
17589
  where both are set. */
16448
17590
  for?: (HelixVirtualList["for"]) | undefined;
17591
+ /** The field of each item that is its key in `value`, as a key or a path of
17592
+ keys. Empty reads a string or a number item as its own key, and any
17593
+ other item by its place in the set. */
17594
+ "key-field"?: (HelixVirtualList["keyField"]) | undefined;
17595
+ /** The field of each item that is its key in `value`, as a key or a path of
17596
+ keys. Empty reads a string or a number item as its own key, and any
17597
+ other item by its place in the set. */
17598
+ keyField?: (HelixVirtualList["keyField"]) | undefined;
16449
17599
  /** The list's name, read by screen readers, because only some of its rows
16450
17600
  are rendered at a time.
16451
17601
 
16452
17602
  An `aria-label` or `aria-labelledby` on the host names the list too, and
16453
17603
  wins over this. */
16454
17604
  label?: (HelixVirtualList["label"]) | undefined;
16455
- /** Places rows by their measured height. Without it, every row is placed by
16456
- `estimate`.
17605
+ /** Marks the list as busy fetching more items, and draws a row after the last
17606
+ item that says so.
17607
+
17608
+ Set it when `helix-load-more` starts a fetch, and clear it when the items
17609
+ arrive. The list does not ask for more while it is set. */
17610
+ loading?: (HelixVirtualList["loading"]) | undefined;
17611
+ /** The text of the row drawn while `loading` is set, where the `loading` slot is empty. */
17612
+ "loading-label"?: (HelixVirtualList["loadingLabel"]) | undefined;
17613
+ /** The text of the row drawn while `loading` is set, where the `loading` slot is empty. */
17614
+ loadingLabel?: (HelixVirtualList["loadingLabel"]) | undefined;
17615
+ /** Places each row by its own measured height. Without it, rows are placed
17616
+ by one height: `estimate` until rows are drawn, then the drawn rows' height,
17617
+ read once.
16457
17618
 
16458
17619
  **Off by default, because the straight line is better when it holds.** One
16459
- estimate makes offset and index convert by division, which can never
17620
+ height makes offset and index convert by division, which can never
16460
17621
  disagree with itself; measuring is what a set of genuinely different
16461
17622
  heights needs and costs a read of each row as it renders. A list of
16462
17623
  one-line rows should leave this alone. */
16463
17624
  measured?: (HelixVirtualList["measured"]) | undefined;
17625
+ /** Makes the list a list box a reader chooses from: `single` selects one
17626
+ item, and `multiple` any number. Unset is a list a reader reads. */
17627
+ "selection-mode"?: (HelixVirtualList["selectionMode"]) | undefined;
17628
+ /** Makes the list a list box a reader chooses from: `single` selects one
17629
+ item, and `multiple` any number. Unset is a list a reader reads. */
17630
+ selectionMode?: (HelixVirtualList["selectionMode"]) | undefined;
17631
+ /** The field of each item that typing matches, as a key or a path of keys
17632
+ (`author.name`).
17633
+
17634
+ Empty by default, which matches the first `data-field` of the row
17635
+ template, or the item itself where it is a string or a number. */
17636
+ "text-field"?: (HelixVirtualList["textField"]) | undefined;
17637
+ /** The field of each item that typing matches, as a key or a path of keys
17638
+ (`author.name`).
17639
+
17640
+ Empty by default, which matches the first `data-field` of the row
17641
+ template, or the item itself where it is a string or a number. */
17642
+ textField?: (HelixVirtualList["textField"]) | undefined;
17643
+ /** The keys of the chosen items, separated by commas, in a list with
17644
+ `selection-mode`. Set it to start with items chosen. */
17645
+ value?: (HelixVirtualList["value"]) | undefined;
16464
17646
  /** The items, as an array. Set it as a property.
16465
17647
 
16466
17648
  Each item is drawn by `renderItem`, or into the row `<template>` by its
@@ -16477,6 +17659,10 @@ and place in the set. Where it is unset, the row `<template>` is used. */
16477
17659
  };
16478
17660
 
16479
17661
  export type HelixVirtualListVueEvents = {
17662
+ /** Fired once a press or a key has changed which items are selected, in a list with `selection-mode`. */
17663
+ change: HelixVirtualListElementEvent;
17664
+ /** Fired before a press or a key changes which items are selected, with the `value` it would leave. Cancelable. */
17665
+ "helix-before-change": HelixVirtualListHelixBeforeChangeElementEvent;
16480
17666
  /** Fired when a reader comes within one screen of the last item, once for each length of the set. */
16481
17667
  "helix-load-more": HelixVirtualListHelixLoadMoreElementEvent;
16482
17668
  /** Fired when the items on screen change, with the new `first` and `last`, which `range` also holds. */
@@ -16484,8 +17670,26 @@ export type HelixVirtualListVueEvents = {
16484
17670
  };
16485
17671
 
16486
17672
  export type CustomCssProperties = {
17673
+ /** The color of the open and close indicator. */
17674
+ "--accordion-item-chevron-color"?: (string) | undefined;
17675
+ /** The indicator's color while the pointer is on the trigger. */
17676
+ "--accordion-item-chevron-hover-color"?: (string) | undefined;
17677
+ /** The color of the trigger's text. */
17678
+ "--accordion-item-color"?: (string) | undefined;
17679
+ /** The color of the content's text. */
17680
+ "--accordion-item-content-color"?: (string) | undefined;
17681
+ /** How faint a disabled trigger is drawn. */
17682
+ "--accordion-item-disabled-opacity"?: (string) | undefined;
17683
+ /** The size of the trigger's text. */
17684
+ "--accordion-item-font-size"?: (string) | undefined;
17685
+ /** The weight of the trigger's text. */
17686
+ "--accordion-item-font-weight"?: (string) | undefined;
17687
+ /** The trigger's fill while the pointer is on it. Unset, there is none. */
17688
+ "--accordion-item-hover-background-color"?: (string) | undefined;
16487
17689
  /** The padding of the trigger and the content. */
16488
17690
  "--accordion-item-padding"?: (string) | undefined;
17691
+ /** The height of the content, in pixels, written on the `content` part while the section is open. */
17692
+ "--accordion-content-height"?: (string) | undefined;
16489
17693
  /** The color of the lines between items, and of each item's border when outlined. */
16490
17694
  "--accordion-border-color"?: (string) | undefined;
16491
17695
  /** The space between items when outlined. Otherwise items share an edge. */
@@ -16496,10 +17700,16 @@ export type CustomCssProperties = {
16496
17700
  "--announcement-background-color"?: (string) | undefined;
16497
17701
  /** The band's minimum height, so adding a control to it does not move the page down. A message long enough to wrap makes the band taller. */
16498
17702
  "--announcement-block-size"?: (string) | undefined;
17703
+ /** The size of the message's text. */
17704
+ "--announcement-font-size"?: (string) | undefined;
16499
17705
  /** The message's color, to pair with a fill set through the background hook. */
16500
17706
  "--announcement-foreground-color"?: (string) | undefined;
16501
17707
  /** The inline padding, matched to the page. */
16502
17708
  "--announcement-inset"?: (string) | undefined;
17709
+ /** Where the message sits in the band. Centered by default; `start` lines it up with the page under it. */
17710
+ "--announcement-text-align"?: (string) | undefined;
17711
+ /** The color a toned band's tint and outline are mixed from, in place of the tone's. */
17712
+ "--announcement-tone-color"?: (string) | undefined;
16503
17713
  /** The filter behind the banner. Set it to `none` when you pair the header with a panel. */
16504
17714
  "--app-header-backdrop"?: (string) | undefined;
16505
17715
  /** Fill behind the banner. */
@@ -16520,6 +17730,8 @@ export type CustomCssProperties = {
16520
17730
  "--area-chart-gap"?: (string) | undefined;
16521
17731
  /** Color of the rules drawn across the plot under `gridlines`. */
16522
17732
  "--area-chart-gridline-color"?: (string) | undefined;
17733
+ /** How much of each band shows under `overlap`, where the bands in front let the ones behind show through. */
17734
+ "--area-chart-overlap-opacity"?: (string) | undefined;
16523
17735
  /** Thickness of a band's top edge. Overrides `--chart-stroke`. */
16524
17736
  "--area-chart-width"?: (string) | undefined;
16525
17737
  /** Thickness of a band's top edge. Area Chart, Line Chart, and Bar Chart's `lines` all read this one property. `--area-chart-width` overrides it here. */
@@ -16532,22 +17744,38 @@ export type CustomCssProperties = {
16532
17744
  "--aura-haze"?: (string) | undefined;
16533
17745
  /** The hottest stop, at the center of a shape. Defaults to `--helix-color-primary-active` on a light page and `--helix-color-foreground` on a dark one. */
16534
17746
  "--aura-peak"?: (string) | undefined;
17747
+ /** The fill of the count of avatars past `max`. */
17748
+ "--avatar-group-overflow-background-color"?: (string) | undefined;
17749
+ /** The color of the count of avatars past `max`. */
17750
+ "--avatar-group-overflow-color"?: (string) | undefined;
17751
+ /** The type size of the count of avatars past `max`. */
17752
+ "--avatar-group-overflow-font-size"?: (string) | undefined;
16535
17753
  /** How far each avatar sits over the one before it. */
16536
17754
  "--avatar-group-overlap"?: (string) | undefined;
16537
17755
  /** Color of the ring that separates one avatar from the next. */
16538
17756
  "--avatar-group-ring-color"?: (string) | undefined;
16539
17757
  /** Fill behind the initials. */
16540
17758
  "--avatar-background-color"?: (string) | undefined;
17759
+ /** The color of the initials. */
17760
+ "--avatar-color"?: (string) | undefined;
17761
+ /** The weight of the initials. */
17762
+ "--avatar-font-weight"?: (string) | undefined;
16541
17763
  /** Edge length of the avatar. */
16542
17764
  "--avatar-size"?: (string) | undefined;
17765
+ /** How long one beat of `attention` takes. */
17766
+ "--badge-attention-duration"?: (string) | undefined;
16543
17767
  /** The fill of the indicator. */
16544
17768
  "--badge-background-color"?: (string) | undefined;
16545
17769
  /** The color of the count, to pair with a fill set through `--badge-background-color`. */
16546
17770
  "--badge-color"?: (string) | undefined;
17771
+ /** The weight of the count. */
17772
+ "--badge-font-weight"?: (string) | undefined;
16547
17773
  /** The space between the content and the count under `placement="inline"`. */
16548
17774
  "--badge-gap"?: (string) | undefined;
16549
17775
  /** Pulls the mark in from the corner, along both axes. */
16550
17776
  "--badge-offset"?: (string) | undefined;
17777
+ /** How far the indicator's corners are rounded. */
17778
+ "--badge-radius"?: (string) | undefined;
16551
17779
  /** The color of the ring between the indicator and what is behind it. */
16552
17780
  "--badge-ring-color"?: (string) | undefined;
16553
17781
  /** Fill of the category band under the pointer. */
@@ -16580,8 +17808,12 @@ export type CustomCssProperties = {
16580
17808
  "--blockquote-color"?: (string) | undefined;
16581
17809
  /** The typeface of the quoted passage, the display face by default. */
16582
17810
  "--blockquote-font-family"?: (string) | undefined;
17811
+ /** The weight of the quoted passage, medium by default. */
17812
+ "--blockquote-font-weight"?: (string) | undefined;
16583
17813
  /** The space between the passage and its attribution. */
16584
17814
  "--blockquote-gap"?: (string) | undefined;
17815
+ /** The line height of the quoted passage, the tight leading by default. */
17816
+ "--blockquote-line-height"?: (string) | undefined;
16585
17817
  /** The font size of the quoted passage. */
16586
17818
  "--blockquote-size"?: (string) | undefined;
16587
17819
  /** Inline padding of a control slotted into a crumb, matching the steps either side of it. */
@@ -16604,6 +17836,10 @@ export type CustomCssProperties = {
16604
17836
  "--breadcrumbs-font-size"?: (string) | undefined;
16605
17837
  /** Space between items and separators. */
16606
17838
  "--breadcrumbs-gap"?: (string) | undefined;
17839
+ /** Color of the line between the two halves of a split crumb, under `separation="outlined"`. */
17840
+ "--breadcrumbs-split-divider-color"?: (string) | undefined;
17841
+ /** Fill across both halves of a split crumb while one of them is under the pointer, under the default `plain` separation. */
17842
+ "--breadcrumbs-split-fill"?: (string) | undefined;
16607
17843
  /** Space between the buttons, when `spaced`. */
16608
17844
  "--button-group-gap"?: (string) | undefined;
16609
17845
  /** Fill behind the button, in every state. */
@@ -16636,6 +17872,10 @@ export type CustomCssProperties = {
16636
17872
  "--button-radius-start-start"?: (string) | undefined;
16637
17873
  /** Height of the control, for a row height outside the density steps. */
16638
17874
  "--button-size"?: (string) | undefined;
17875
+ /** Color of the ring a pending button turns. It follows the label's color. */
17876
+ "--button-spinner-color"?: (string) | undefined;
17877
+ /** How long the ring takes to turn once. */
17878
+ "--button-spinner-duration"?: (string) | undefined;
16639
17879
  /** Size of the ring a pending button turns. Defaults to the size of its icons. */
16640
17880
  "--button-spinner-size"?: (string) | undefined;
16641
17881
  /** The color of the bar, the mark and the tint, in place of the tone's. */
@@ -16644,11 +17884,11 @@ export type CustomCssProperties = {
16644
17884
  "--callout-background-color"?: (string) | undefined;
16645
17885
  /** The thickness of the bar on the inline start edge. */
16646
17886
  "--callout-bar-thickness"?: (string) | undefined;
16647
- /** The size of the callout's text. */
17887
+ /** The size of the callout's text. Defaults to the control text step, which follows `data-density`. */
16648
17888
  "--callout-font-size"?: (string) | undefined;
16649
17889
  /** The space between the mark and the content. */
16650
17890
  "--callout-gap"?: (string) | undefined;
16651
- /** The inset around the content, to which the bar's width is added at the start. */
17891
+ /** The inset around the content, to which the bar's width is added at the start. Defaults to the control space step, which follows `data-density`. */
16652
17892
  "--callout-padding"?: (string) | undefined;
16653
17893
  /** The corner radius of the callout. */
16654
17894
  "--callout-radius"?: (string) | undefined;
@@ -16736,8 +17976,18 @@ export type CustomCssProperties = {
16736
17976
  "--chat-message-background-color-me"?: (string) | undefined;
16737
17977
  /** Text color in a turn. */
16738
17978
  "--chat-message-color"?: (string) | undefined;
17979
+ /** Text color in turns by `me`. */
17980
+ "--chat-message-color-me"?: (string) | undefined;
16739
17981
  /** Maximum width of a turn before its text wraps. */
16740
17982
  "--chat-message-measure"?: (string) | undefined;
17983
+ /** Color of the line under a turn, with its time and state. */
17984
+ "--chat-message-meta-color"?: (string) | undefined;
17985
+ /** Space above and below a turn's content inside its bubble. */
17986
+ "--chat-message-padding-block"?: (string) | undefined;
17987
+ /** Space either side of a turn's content inside its bubble. */
17988
+ "--chat-message-padding-inline"?: (string) | undefined;
17989
+ /** Corner radius of a turn's bubble. */
17990
+ "--chat-message-radius"?: (string) | undefined;
16741
17991
  /** Space between turns. */
16742
17992
  "--chat-gap"?: (string) | undefined;
16743
17993
  /** How tall the conversation may get before the transcript scrolls. */
@@ -16752,6 +18002,10 @@ export type CustomCssProperties = {
16752
18002
  "--chat-resume-shadow"?: (string) | undefined;
16753
18003
  /** The hairline under the header. */
16754
18004
  "--chat-rule"?: (string) | undefined;
18005
+ /** The color of the dots and the words that say who is typing. */
18006
+ "--chat-typing-color"?: (string) | undefined;
18007
+ /** The space between the dots and the words that say who is typing. */
18008
+ "--chat-typing-gap"?: (string) | undefined;
16755
18009
  /** The space between the checkboxes. */
16756
18010
  "--checkbox-group-gap"?: (string) | undefined;
16757
18011
  /** The fill of the box. It stays the same when the box is checked. */
@@ -16766,7 +18020,9 @@ export type CustomCssProperties = {
16766
18020
  "--checkbox-card-padding"?: (string) | undefined;
16767
18021
  /** The border color of a checked box when `--checkbox-border-color` is not set. */
16768
18022
  "--checkbox-checked-color"?: (string) | undefined;
16769
- /** The color of the check mark and the dash. */
18023
+ /** The width and height of an icon slotted into `check` or `dash`. It fills the box by default. */
18024
+ "--checkbox-icon-size"?: (string) | undefined;
18025
+ /** The color of the check mark and the dash, and of an icon slotted into `check` or `dash`. */
16770
18026
  "--checkbox-mark-color"?: (string) | undefined;
16771
18027
  /** The width and height of the box. */
16772
18028
  "--checkbox-size"?: (string) | undefined;
@@ -16776,20 +18032,26 @@ export type CustomCssProperties = {
16776
18032
  "--code-block-background-color"?: (string) | undefined;
16777
18033
  /** The line around the block and its header. */
16778
18034
  "--code-block-border-color"?: (string) | undefined;
18035
+ /** The color of the button under a capped block that shows every line. */
18036
+ "--code-block-expand-color"?: (string) | undefined;
16779
18037
  /** The color of the line numbers. */
16780
18038
  "--code-block-gutter-color"?: (string) | undefined;
16781
18039
  /** The background behind the name. The default is `surface-raised`. */
16782
18040
  "--code-block-header-background-color"?: (string) | undefined;
16783
- /** The tallest the code grows before it scrolls. The default is no limit. */
18041
+ /** The tallest the code grows before it scrolls, or until `expandable`'s button shows every line. The default is no limit. */
16784
18042
  "--code-block-max-block-size"?: (string) | undefined;
16785
18043
  /** The corner radius of the header's top and the block's bottom, which form one shape. */
16786
18044
  "--code-block-radius"?: (string) | undefined;
16787
18045
  /** Fill behind the fragment. Defaults to the foreground color at 6%, which looks the same on a light page and a dark one. */
16788
18046
  "--code-background-color"?: (string) | undefined;
18047
+ /** The fragment's typeface. Defaults to the mono face. */
18048
+ "--code-font-family"?: (string) | undefined;
16789
18049
  /** Color of the fragment's text. Defaults to the foreground color mixed toward `foreground-muted`. */
16790
18050
  "--code-foreground-color"?: (string) | undefined;
16791
18051
  /** Space either side of the fragment. Defaults to half of `space-2xs`, so a bracket next to the fragment sits close to it. */
16792
18052
  "--code-padding"?: (string) | undefined;
18053
+ /** Corner radius of the wash. Defaults to `radii-sm`. */
18054
+ "--code-radius"?: (string) | undefined;
16793
18055
  /** The fragment's size. Defaults to `text-sm`. */
16794
18056
  "--code-size"?: (string) | undefined;
16795
18057
  /** Fill behind the field. */
@@ -16808,6 +18070,8 @@ export type CustomCssProperties = {
16808
18070
  "--color-input-swatch-size"?: (string) | undefined;
16809
18071
  /** The chosen color, painted over the checkerboard that shows transparency. */
16810
18072
  "--color-input-swatch"?: (string) | undefined;
18073
+ /** The color of the message under the picker, while `feedback` is set. */
18074
+ "--color-picker-feedback-color"?: (string) | undefined;
16811
18075
  /** The color of the names above the channel number fields, in `channel-fields`. */
16812
18076
  "--color-picker-field-label-color"?: (string) | undefined;
16813
18077
  /** The space between the channel number fields, in `channel-fields`. */
@@ -16822,6 +18086,10 @@ export type CustomCssProperties = {
16822
18086
  "--color-picker-sample-size"?: (string) | undefined;
16823
18087
  /** The width and height of one preset. */
16824
18088
  "--color-picker-swatch-size"?: (string) | undefined;
18089
+ /** The widest the hue ring draws, with `wheel`. The picker's width by default. */
18090
+ "--color-picker-wheel-size"?: (string) | undefined;
18091
+ /** The width of the hue ring's band, with `wheel`. */
18092
+ "--color-picker-wheel-thickness"?: (string) | undefined;
16825
18093
  /** The chosen brightness, 0 to 100, as a percentage. */
16826
18094
  "--color-picker-brightness"?: (string) | undefined;
16827
18095
  /** The chosen hue, 0 to 360, unitless. */
@@ -16846,18 +18114,38 @@ export type CustomCssProperties = {
16846
18114
  "--command-list-size"?: (string) | undefined;
16847
18115
  /** How wide the palette is. Defaults to `40rem`. */
16848
18116
  "--command-size"?: (string) | undefined;
18117
+ /** The icon's color at rest. A `tone` keeps its own. */
18118
+ "--copy-button-color"?: (string) | undefined;
18119
+ /** The icon's color under the pointer. Without it, `--copy-button-color` also applies on hover. */
18120
+ "--copy-button-color-hover"?: (string) | undefined;
18121
+ /** The cross's color after a copy that put nothing on the clipboard. */
18122
+ "--copy-button-error-color"?: (string) | undefined;
18123
+ /** The width and height of the clipboard, check, and cross icons drawn by default. */
18124
+ "--copy-button-icon-size"?: (string) | undefined;
18125
+ /** Edge length of the button. Without it, `--icon-button-size` applies. */
18126
+ "--copy-button-size"?: (string) | undefined;
18127
+ /** The check mark's color after a copy. */
18128
+ "--copy-button-success-color"?: (string) | undefined;
16849
18129
  /** Fill behind the button, in every state. */
16850
18130
  "--icon-button-background-color"?: (string) | undefined;
18131
+ /** Fill behind the button while it is pressed. Without it, a press shows the fill of the state under it. */
18132
+ "--icon-button-background-color-active"?: (string) | undefined;
16851
18133
  /** Fill behind the button under the pointer. Without it, `--icon-button-background-color` also applies on hover. */
16852
18134
  "--icon-button-background-color-hover"?: (string) | undefined;
16853
18135
  /** Icon color. */
16854
18136
  "--icon-button-foreground-color"?: (string) | undefined;
18137
+ /** Icon color while the button is pressed. Without it, a press shows the color of the state under it. */
18138
+ "--icon-button-foreground-color-active"?: (string) | undefined;
16855
18139
  /** Corner radius of the control, which a group flattens through `--button-radius-start` and `--button-radius-end`. */
16856
18140
  "--icon-button-radius"?: (string) | undefined;
16857
18141
  /** Shadow of a raised icon button. */
16858
18142
  "--icon-button-shadow"?: (string) | undefined;
16859
18143
  /** Edge length of the control. */
16860
18144
  "--icon-button-size"?: (string) | undefined;
18145
+ /** Color of the ring a pending button turns. It follows the icon's color. */
18146
+ "--icon-button-spinner-color"?: (string) | undefined;
18147
+ /** How long the ring takes to turn once. */
18148
+ "--icon-button-spinner-duration"?: (string) | undefined;
16861
18149
  /** Size of the ring a pending button turns. */
16862
18150
  "--icon-button-spinner-size"?: (string) | undefined;
16863
18151
  /** The height of the scrolling box while `windowed`. Ignored otherwise, where the grid is as tall as its rows. It is a fixed height, so a short result keeps the full box with space below it. */
@@ -16866,20 +18154,44 @@ export type CustomCssProperties = {
16866
18154
  "--data-table-color"?: (string) | undefined;
16867
18155
  /** The grid track list for the columns. It overrides the list worked out from the columns. */
16868
18156
  "--data-table-columns"?: (string) | undefined;
18157
+ /** The space between the grid and the footer below it. */
18158
+ "--data-table-footer-gap"?: (string) | undefined;
18159
+ /** The space between the pieces of the footer, such as a summary and the pagination. */
18160
+ "--data-table-footer-item-gap"?: (string) | undefined;
16869
18161
  /** The fill behind a heading while `windowed`. It is opaque, because rows scroll under the sticky heading. Unset otherwise. */
16870
18162
  "--data-table-heading-background-color"?: (string) | undefined;
16871
18163
  /** The text color of a heading. */
16872
18164
  "--data-table-heading-color"?: (string) | undefined;
16873
18165
  /** How far a tree grid's row header steps in for each level. It defaults to the width of the mark that opens a row. */
16874
18166
  "--data-table-indent"?: (string) | undefined;
18167
+ /** The color of the edge around the button in the `load-more` row. */
18168
+ "--data-table-more-border-color"?: (string) | undefined;
18169
+ /** The fill behind the button in the `load-more` row while the pointer is over it. */
18170
+ "--data-table-more-hover-background-color"?: (string) | undefined;
18171
+ /** The space above and below the words of the button in the `load-more` row. */
18172
+ "--data-table-more-padding-block"?: (string) | undefined;
18173
+ /** The space either side of the words of the button in the `load-more` row. */
18174
+ "--data-table-more-padding-inline"?: (string) | undefined;
18175
+ /** The corner radius of the button in the `load-more` row. */
18176
+ "--data-table-more-radius"?: (string) | undefined;
16875
18177
  /** The space above and below a cell's content. */
16876
18178
  "--data-table-padding-block"?: (string) | undefined;
16877
18179
  /** The space on either side of a cell's content. */
16878
18180
  "--data-table-padding-inline"?: (string) | undefined;
16879
18181
  /** The color of the line between rows. It takes a color only, because it fills the color in a border shorthand, and a full border value makes the rule invalid. It is drawn on the cells, because the row is `display: contents`. */
16880
18182
  "--data-table-rule-color"?: (string) | undefined;
18183
+ /** The fill across a selected row. */
18184
+ "--data-table-selected-background-color"?: (string) | undefined;
16881
18185
  /** The font size of headings and cells. */
16882
18186
  "--data-table-text"?: (string) | undefined;
18187
+ /** The color of the mark that opens and closes a row of a tree grid. */
18188
+ "--data-table-toggle-color"?: (string) | undefined;
18189
+ /** The space between the mark that opens a row of a tree grid and the row's name, also kept by a row with no children. */
18190
+ "--data-table-toggle-gap"?: (string) | undefined;
18191
+ /** The size of the mark that opens and closes a row of a tree grid, and of the room a row with no children keeps for it. */
18192
+ "--data-table-toggle-size"?: (string) | undefined;
18193
+ /** The space between the toolbar and the grid below it. */
18194
+ "--data-table-toolbar-gap"?: (string) | undefined;
16883
18195
  /** The alignment of the cell's column: `start`, `center`, or `end`. Unset when the column sets none. The component writes it on each cell it draws, and the stylesheet reads it. `Table` sets `--table-cell-align` for the same purpose. */
16884
18196
  "--data-table-cell-align"?: (string) | undefined;
16885
18197
  /** How deep a row is in a tree grid, from 1. The component writes it on each row header cell, and the stylesheet indents by it. */
@@ -16906,6 +18218,8 @@ export type CustomCssProperties = {
16906
18218
  "--date-picker-columns"?: (string) | undefined;
16907
18219
  /** Width and height of a day. */
16908
18220
  "--date-picker-day-size"?: (string) | undefined;
18221
+ /** The color of the message under the calendar, while `feedback` is set. */
18222
+ "--date-picker-feedback-color"?: (string) | undefined;
16909
18223
  /** Height of a month or a year in the months and years views, where `max-view` is set. */
16910
18224
  "--date-picker-period-size"?: (string) | undefined;
16911
18225
  /** Band behind the days in a range. */
@@ -16918,18 +18232,38 @@ export type CustomCssProperties = {
16918
18232
  "--date-picker-track-size"?: (string) | undefined;
16919
18233
  /** How many month columns are drawn, capped at two. `--date-picker-columns` overrides it. */
16920
18234
  "--date-picker-column-count"?: (string) | undefined;
18235
+ /** The space between the value and the controls in `actions`. */
18236
+ "--description-list-actions-gap"?: (string) | undefined;
18237
+ /** The space between a label and its value when the label sits over it. */
18238
+ "--description-list-item-gap"?: (string) | undefined;
18239
+ /** The color of a label. */
18240
+ "--description-list-label-color"?: (string) | undefined;
18241
+ /** The size of a label's text. */
18242
+ "--description-list-label-font-size"?: (string) | undefined;
18243
+ /** The weight of a label's text. */
18244
+ "--description-list-label-weight"?: (string) | undefined;
18245
+ /** The color of a value. */
18246
+ "--description-list-value-color"?: (string) | undefined;
18247
+ /** The space between the column of labels and the column of values, with `direction="row"`. */
18248
+ "--description-list-column-gap"?: (string) | undefined;
16921
18249
  /** Space between one pair and the next. The default is smaller with `direction="row"` than when stacked. Setting this property replaces both defaults. */
16922
18250
  "--description-list-gap"?: (string) | undefined;
18251
+ /** The panel's fill. Follows `--helix-color-surface-overlay`. */
18252
+ "--dialog-background-color"?: (string) | undefined;
16923
18253
  /** Color of the panel's edge. */
16924
18254
  "--dialog-border-color"?: (string) | undefined;
16925
18255
  /** Width of the panel's edge. Follows `--helix-border-floating`, which is `0`, so the panel stands out by its shadow unless your theme sets a border. */
16926
18256
  "--dialog-border-width"?: (string) | undefined;
18257
+ /** Color of the words in the panel. Follows `--helix-color-foreground`. */
18258
+ "--dialog-color"?: (string) | undefined;
16927
18259
  /** How big the mark above the title is. */
16928
18260
  "--dialog-icon-size"?: (string) | undefined;
16929
18261
  /** Width of the panel. */
16930
18262
  "--dialog-inline-size"?: (string) | undefined;
16931
18263
  /** Padding inside the panel. */
16932
18264
  "--dialog-padding"?: (string) | undefined;
18265
+ /** The panel's corner radius. Follows `--helix-radii-sm`. */
18266
+ "--dialog-radius"?: (string) | undefined;
16933
18267
  /** How far the panel rises as it opens. Follows `--helix-space-lg`. */
16934
18268
  "--dialog-rise"?: (string) | undefined;
16935
18269
  /** The tint over the page behind the dialog. Set it on the host, because a `var()` written inside `::backdrop` cannot read a token. */
@@ -16958,6 +18292,12 @@ export type CustomCssProperties = {
16958
18292
  "--donut-chart-edge-stroke"?: (string) | undefined;
16959
18293
  /** Width and height of the ring. */
16960
18294
  "--donut-chart-size"?: (string) | undefined;
18295
+ /** Plate behind a slice's share, under `slice-labels`. */
18296
+ "--donut-chart-slice-label-background-color"?: (string) | undefined;
18297
+ /** Color of a slice's share, under `slice-labels`. */
18298
+ "--donut-chart-slice-label-color"?: (string) | undefined;
18299
+ /** Size of a slice's share, under `slice-labels`. */
18300
+ "--donut-chart-slice-label-font-size"?: (string) | undefined;
16961
18301
  /** Color of the ring under the slices. */
16962
18302
  "--donut-chart-track-color"?: (string) | undefined;
16963
18303
  /** How thick the ring is drawn, derived from `hole`. */
@@ -16986,12 +18326,46 @@ export type CustomCssProperties = {
16986
18326
  "--drawer-swipe-x"?: (string) | undefined;
16987
18327
  /** How far a swipe, or a snap point, has moved the panel down, in pixels. */
16988
18328
  "--drawer-swipe-y"?: (string) | undefined;
18329
+ /** Height of a row. */
18330
+ "--drilldown-item-block-size"?: (string) | undefined;
18331
+ /** Color of a row's words. */
18332
+ "--drilldown-item-color"?: (string) | undefined;
18333
+ /** Color of the line under a row's label. */
18334
+ "--drilldown-item-description-color"?: (string) | undefined;
18335
+ /** How faint a disabled row is drawn. */
18336
+ "--drilldown-item-disabled-opacity"?: (string) | undefined;
18337
+ /** Size of a row's words. */
18338
+ "--drilldown-item-font-size"?: (string) | undefined;
16989
18339
  /** Fill when a row is under the pointer. */
16990
18340
  "--drilldown-item-hover-color"?: (string) | undefined;
18341
+ /** Color of the caret on a row that opens a page. */
18342
+ "--drilldown-item-mark-color"?: (string) | undefined;
18343
+ /** Space at either end of a row. */
18344
+ "--drilldown-item-padding-inline"?: (string) | undefined;
18345
+ /** Color of the back button's icon. */
18346
+ "--drilldown-back-color"?: (string) | undefined;
18347
+ /** Fill of the back button under the pointer. */
18348
+ "--drilldown-back-hover-background-color"?: (string) | undefined;
16991
18349
  /** Fill behind the pages. */
16992
18350
  "--drilldown-background-color"?: (string) | undefined;
18351
+ /** How long a page takes to slide in. */
18352
+ "--drilldown-duration"?: (string) | undefined;
18353
+ /** Height of the bar above a page. */
18354
+ "--drilldown-header-block-size"?: (string) | undefined;
18355
+ /** Color of the rule under the bar above a page. */
18356
+ "--drilldown-header-border-color"?: (string) | undefined;
16993
18357
  /** Width of the region. */
16994
18358
  "--drilldown-inline-size"?: (string) | undefined;
18359
+ /** Space above and below a page's rows. */
18360
+ "--drilldown-page-padding-block"?: (string) | undefined;
18361
+ /** Color of the page's name. */
18362
+ "--drilldown-title-color"?: (string) | undefined;
18363
+ /** Size of the page's name. */
18364
+ "--drilldown-title-font-size"?: (string) | undefined;
18365
+ /** Weight of the page's name. */
18366
+ "--drilldown-title-font-weight"?: (string) | undefined;
18367
+ /** How far a page slides as it arrives, along the line of text. */
18368
+ "--drilldown-travel"?: (string) | undefined;
16995
18369
  /** Space added above the actions. */
16996
18370
  "--empty-actions-gap"?: (string) | undefined;
16997
18371
  /** Space between the icon, the heading, the message and the actions. */
@@ -17014,8 +18388,38 @@ export type CustomCssProperties = {
17014
18388
  "--empty-padding"?: (string) | undefined;
17015
18389
  /** Fill behind the field. */
17016
18390
  "--file-input-background-color"?: (string) | undefined;
18391
+ /** The field's dashed edge at rest. */
18392
+ "--file-input-border-color"?: (string) | undefined;
18393
+ /** Fill behind the field while files are dragged over it. */
18394
+ "--file-input-drop-background-color"?: (string) | undefined;
18395
+ /** The field's edge while files are dragged over it. */
18396
+ "--file-input-drop-border-color"?: (string) | undefined;
18397
+ /** Fill behind each chosen file. */
18398
+ "--file-input-file-background-color"?: (string) | undefined;
18399
+ /** The edge of each chosen file. */
18400
+ "--file-input-file-border-color"?: (string) | undefined;
18401
+ /** Padding above and below each chosen file. */
18402
+ "--file-input-file-padding-block"?: (string) | undefined;
18403
+ /** Padding at each side of each chosen file. */
18404
+ "--file-input-file-padding-inline"?: (string) | undefined;
18405
+ /** Corner radius of each chosen file. */
18406
+ "--file-input-file-radius"?: (string) | undefined;
17017
18407
  /** Padding inside the field. */
17018
18408
  "--file-input-padding"?: (string) | undefined;
18409
+ /** The filled part of a file's upload bar. */
18410
+ "--file-input-progress-color"?: (string) | undefined;
18411
+ /** The unfilled part of a file's upload bar. */
18412
+ "--file-input-progress-track-color"?: (string) | undefined;
18413
+ /** Corner radius of the field. */
18414
+ "--file-input-radius"?: (string) | undefined;
18415
+ /** The remove button's icon at rest. */
18416
+ "--file-input-remove-color"?: (string) | undefined;
18417
+ /** The remove button's icon under the pointer. */
18418
+ "--file-input-remove-color-hover"?: (string) | undefined;
18419
+ /** The words beside a file's upload bar. */
18420
+ "--file-input-status-color"?: (string) | undefined;
18421
+ /** The words beside a file whose upload failed. */
18422
+ "--file-input-status-color-error"?: (string) | undefined;
17019
18423
  /** The fill behind the chip. */
17020
18424
  "--filter-input-chip-background-color"?: (string) | undefined;
17021
18425
  /** The color of the chip's border. */
@@ -17032,12 +18436,22 @@ export type CustomCssProperties = {
17032
18436
  "--filter-input-border-color"?: (string) | undefined;
17033
18437
  /** The width of the suggestion panel's border. It follows `--helix-border-floating`. */
17034
18438
  "--filter-input-border-width"?: (string) | undefined;
18439
+ /** The clear button's icon at rest. */
18440
+ "--filter-input-clear-color"?: (string) | undefined;
18441
+ /** The clear button's icon under the pointer. */
18442
+ "--filter-input-clear-color-hover"?: (string) | undefined;
17035
18443
  /** The smallest width the text keeps as tokens fill the line. Below it, the text wraps to its own line. */
17036
18444
  "--filter-input-control-size"?: (string) | undefined;
18445
+ /** The field's edge at rest. Hover, focus, and an error still draw their own. */
18446
+ "--filter-input-field-border-color"?: (string) | undefined;
17037
18447
  /** The color of the line between the leading box and the text. */
17038
18448
  "--filter-input-lead-border-color"?: (string) | undefined;
18449
+ /** Space at each side of the field, inside its edge. */
18450
+ "--filter-input-padding-inline"?: (string) | undefined;
17039
18451
  /** The width of the suggestion panel. It matches the field by default. */
17040
18452
  "--filter-input-panel-size"?: (string) | undefined;
18453
+ /** Corner radius of the field. */
18454
+ "--filter-input-radius"?: (string) | undefined;
17041
18455
  /** The shadow under the panel. It follows `--helix-shadow-floating`. The panel can sit over any content, so it has a shadow by default. */
17042
18456
  "--filter-input-shadow"?: (string) | undefined;
17043
18457
  /** The height of the empty field. The field grows from this height. */
@@ -17046,12 +18460,30 @@ export type CustomCssProperties = {
17046
18460
  "--flex-flank-min"?: (string) | undefined;
17047
18461
  /** The width of the fixed item of a `flank` layout. Defaults to its own width. */
17048
18462
  "--flex-flank-size"?: (string) | undefined;
18463
+ /** The narrowest a `switch` layout keeps its items in one row, below which each takes a line. Defaults to `30rem`. */
18464
+ "--flex-switch-at"?: (string) | undefined;
17049
18465
  /** The color behind the drawing while it loads. */
17050
18466
  "--graph-background-color"?: (string) | undefined;
17051
18467
  /** The frame's height, as a length. */
17052
18468
  "--graph-block-size"?: (string) | undefined;
17053
18469
  /** The frame's border color. */
17054
18470
  "--graph-border-color"?: (string) | undefined;
18471
+ /** The wash over a note in the list while the pointer is over it, and over the note the keyboard is on. */
18472
+ "--graph-note-hover-color"?: (string) | undefined;
18473
+ /** The space at either end of a note in the list. */
18474
+ "--graph-note-padding-inline"?: (string) | undefined;
18475
+ /** The color of how a note stands to the selected one, such as "Linked from Alpha". */
18476
+ "--graph-note-relation-color"?: (string) | undefined;
18477
+ /** The fill behind the selected note, which leads the list. */
18478
+ "--graph-note-selected-background-color"?: (string) | undefined;
18479
+ /** The weight of the selected note's name. */
18480
+ "--graph-note-selected-weight"?: (string) | undefined;
18481
+ /** The size of a note's name in the list. */
18482
+ "--graph-note-text"?: (string) | undefined;
18483
+ /** The fill behind the search and the list. */
18484
+ "--graph-panel-background-color"?: (string) | undefined;
18485
+ /** The text color of the search and the list. */
18486
+ "--graph-panel-color"?: (string) | undefined;
17055
18487
  /** The list's width beside the drawing, or over it when opened with `no-panel`. */
17056
18488
  "--graph-panel-size"?: (string) | undefined;
17057
18489
  /** The named areas, as `grid-template-areas` takes them, such as `"rail main"`. A child takes its area with `grid-area`. */
@@ -17070,6 +18502,10 @@ export type CustomCssProperties = {
17070
18502
  "--heatmap-cell-size"?: (string) | undefined;
17071
18503
  /** Space between cells. Zero draws one continuous field. */
17072
18504
  "--heatmap-gap"?: (string) | undefined;
18505
+ /** The color of the ring on a selected cell, under `selection-mode`. */
18506
+ "--heatmap-selected-color"?: (string) | undefined;
18507
+ /** How thick the ring on a selected cell is. */
18508
+ "--heatmap-selected-width"?: (string) | undefined;
17073
18509
  /** The weakest step of the magnitude ramp, used by `tones="1 …"`. */
17074
18510
  "--heatmap-tone-1"?: (string) | undefined;
17075
18511
  /** The second step of the magnitude ramp. */
@@ -17102,6 +18538,12 @@ export type CustomCssProperties = {
17102
18538
  "--icon-size"?: (string) | undefined;
17103
18539
  /** The aspect ratio of the box, such as `16 / 9`. */
17104
18540
  "--image-aspect"?: (string) | undefined;
18541
+ /** How long the picture takes to fade in once it loads. `0s` shows it at once. */
18542
+ "--image-fade-duration"?: (string) | undefined;
18543
+ /** The background behind the fallback. Defaults to the placeholder's. */
18544
+ "--image-fallback-background-color"?: (string) | undefined;
18545
+ /** The color of the fallback's text. */
18546
+ "--image-fallback-color"?: (string) | undefined;
17105
18547
  /** How the image fills the box, as an `object-fit` value. */
17106
18548
  "--image-fit"?: (string) | undefined;
17107
18549
  /** The background behind the placeholder and the fallback. */
@@ -17122,12 +18564,34 @@ export type CustomCssProperties = {
17122
18564
  "--input-size"?: (string) | undefined;
17123
18565
  /** The fill of the key. */
17124
18566
  "--kbd-background-color"?: (string) | undefined;
18567
+ /** The height of a key, and the least width of one, in `em` of the text around it. */
18568
+ "--kbd-block-size"?: (string) | undefined;
17125
18569
  /** The color of the key's border and its bottom edge. */
17126
18570
  "--kbd-border-color"?: (string) | undefined;
18571
+ /** The color of the key's label. */
18572
+ "--kbd-color"?: (string) | undefined;
18573
+ /** The face of the key's label. Monospaced by default. */
18574
+ "--kbd-font-family"?: (string) | undefined;
18575
+ /** The size of the key's label, in `em` of the text around it. */
18576
+ "--kbd-font-size"?: (string) | undefined;
18577
+ /** The weight of the key's label. */
18578
+ "--kbd-font-weight"?: (string) | undefined;
18579
+ /** The space between two keys of a chord under `caps`. */
18580
+ "--kbd-gap"?: (string) | undefined;
18581
+ /** The space either side of the key's label. */
18582
+ "--kbd-padding-inline"?: (string) | undefined;
18583
+ /** How far the key's corners are rounded. */
18584
+ "--kbd-radius"?: (string) | undefined;
18585
+ /** The color of the `+` between two keys of a chord under `caps`. */
18586
+ "--kbd-separator-color"?: (string) | undefined;
18587
+ /** The color of the series names. */
18588
+ "--legend-color"?: (string) | undefined;
17127
18589
  /** The direction the entries run: `row`, which wraps, or `column`. */
17128
18590
  "--legend-direction"?: (string) | undefined;
17129
18591
  /** The space between a swatch and its name. */
17130
18592
  "--legend-entry-gap"?: (string) | undefined;
18593
+ /** The type size of the series names. */
18594
+ "--legend-font-size"?: (string) | undefined;
17131
18595
  /** The space between entries. */
17132
18596
  "--legend-gap"?: (string) | undefined;
17133
18597
  /** How strongly a hidden series' entry is drawn, under `toggles`. */
@@ -17152,6 +18616,12 @@ export type CustomCssProperties = {
17152
18616
  "--lightbox-padding"?: (string) | undefined;
17153
18617
  /** The overlay color on the page behind the viewer. Set it on the host, because a `var()` inside `::backdrop` cannot resolve a token. */
17154
18618
  "--lightbox-scrim"?: (string) | undefined;
18619
+ /** How far the zoomed item is moved across from the middle of the viewport, in pixels, toward the right. Written only while zoomed. */
18620
+ "--lightbox-pan-x"?: (string) | undefined;
18621
+ /** How far the zoomed item is moved down from the middle of the viewport, in pixels. Written only while zoomed. */
18622
+ "--lightbox-pan-y"?: (string) | undefined;
18623
+ /** The scale the shown item is zoomed to, such as `2`. Written only while zoomed. */
18624
+ "--lightbox-zoom"?: (string) | undefined;
17155
18625
  /** Fill for the middle of a `ring` terminus, which is otherwise open. Line Chart and Sparkline share this property. */
17156
18626
  "--chart-terminus-hole"?: (string) | undefined;
17157
18627
  /** Size of the mark on each series' last reading. Line Chart and Sparkline share this property. */
@@ -17162,10 +18632,16 @@ export type CustomCssProperties = {
17162
18632
  "--line-chart-band-color"?: (string) | undefined;
17163
18633
  /** Height of the drawing. */
17164
18634
  "--line-chart-block-size"?: (string) | undefined;
18635
+ /** The dash pattern of a series `dashed` names, as `stroke-dasharray` takes it. */
18636
+ "--line-chart-dash"?: (string) | undefined;
17165
18637
  /** Space between the drawing and its labels. */
17166
18638
  "--line-chart-gap"?: (string) | undefined;
17167
18639
  /** Color of the rules drawn across the plot under `gridlines`. */
17168
18640
  "--line-chart-gridline-color"?: (string) | undefined;
18641
+ /** Color of the ring round the mark on a reading, which matches the page. Change it when the chart sits on another surface. */
18642
+ "--line-chart-marker-ring-color"?: (string) | undefined;
18643
+ /** Size of the mark on a reading, under `markers`. */
18644
+ "--line-chart-marker-size"?: (string) | undefined;
17169
18645
  /** Thickness of a line. Overrides `--chart-stroke`. */
17170
18646
  "--line-chart-width"?: (string) | undefined;
17171
18647
  /** Where a series' last reading sits horizontally, as a percentage. Written by the component. */
@@ -17202,14 +18678,20 @@ export type CustomCssProperties = {
17202
18678
  "--listbox-background-color"?: (string) | undefined;
17203
18679
  /** The panel's border, as a shorthand. Set it to `none` when the list is already inside a panel. */
17204
18680
  "--listbox-border"?: (string) | undefined;
18681
+ /** The color of the line shown while `load-error` is set. */
18682
+ "--listbox-error-color"?: (string) | undefined;
17205
18683
  /** Maximum height of the list before it scrolls. */
17206
18684
  "--listbox-max-block-size"?: (string) | undefined;
17207
18685
  /** Color of the moving arc. */
17208
18686
  "--loader-color"?: (string) | undefined;
18687
+ /** How long one turn of the arc takes, 0.8s by default. With motion reduced the turn slows to a crawl whatever this says. */
18688
+ "--loader-duration"?: (string) | undefined;
17209
18689
  /** Diameter. Defaults to the size token that `size` picks, which is 1.5rem at the default density. */
17210
18690
  "--loader-size"?: (string) | undefined;
17211
18691
  /** Color of the circle behind the arc. */
17212
18692
  "--loader-track-color"?: (string) | undefined;
18693
+ /** Width of the arc and the circle behind it, in units of a 24-unit drawing. Defaults to 2. */
18694
+ "--loader-track-width"?: (string) | undefined;
17213
18695
  /** The area's color when no tone is set. */
17214
18696
  "--map-area-color"?: (string) | undefined;
17215
18697
  /** The buildings' color when no tone is set. */
@@ -17270,14 +18752,46 @@ export type CustomCssProperties = {
17270
18752
  "--megamenu-border-width"?: (string) | undefined;
17271
18753
  /** The minimum width of a column before the grid wraps. */
17272
18754
  "--megamenu-column-size"?: (string) | undefined;
18755
+ /** How long the panel takes to open and close. */
18756
+ "--megamenu-duration"?: (string) | undefined;
17273
18757
  /** The maximum width of the band's contents, which are centered in it. */
17274
18758
  "--megamenu-full-size"?: (string) | undefined;
18759
+ /** The space between the panel's columns. */
18760
+ "--megamenu-gap"?: (string) | undefined;
18761
+ /** The space inside the card's edge. */
18762
+ "--megamenu-padding"?: (string) | undefined;
17275
18763
  /** The shadow under the panel. Follows `--helix-shadow-floating`, so the panel has a shadow by default, because it sits over content you cannot predict. */
17276
18764
  "--megamenu-shadow"?: (string) | undefined;
17277
18765
  /** The maximum width of the panel. */
17278
18766
  "--megamenu-size"?: (string) | undefined;
18767
+ /** The trigger's text color at rest. */
18768
+ "--megamenu-trigger-color"?: (string) | undefined;
18769
+ /** The size of the trigger's text. */
18770
+ "--megamenu-trigger-font-size"?: (string) | undefined;
18771
+ /** The weight of the trigger's text. */
18772
+ "--megamenu-trigger-font-weight"?: (string) | undefined;
18773
+ /** The trigger's text color under the pointer. */
18774
+ "--megamenu-trigger-hover-color"?: (string) | undefined;
18775
+ /** The trigger's fill while its panel is open. */
18776
+ "--megamenu-trigger-open-background-color"?: (string) | undefined;
18777
+ /** The trigger's text color while its panel is open. */
18778
+ "--megamenu-trigger-open-color"?: (string) | undefined;
18779
+ /** The space either side of the trigger's text. */
18780
+ "--megamenu-trigger-padding-inline"?: (string) | undefined;
18781
+ /** The trigger's corners. */
18782
+ "--megamenu-trigger-radius"?: (string) | undefined;
18783
+ /** The height of the panel this one took over from, written on the surface while it is open. */
18784
+ "--megamenu-from-block-size"?: (string) | undefined;
18785
+ /** The width of the panel this one took over from, written on the surface while it is open. */
18786
+ "--megamenu-from-inline-size"?: (string) | undefined;
18787
+ /** The panel's own height, written on the surface while it is open. */
18788
+ "--megamenu-surface-block-size"?: (string) | undefined;
18789
+ /** The panel's own width, written on the surface while it is open. */
18790
+ "--megamenu-surface-inline-size"?: (string) | undefined;
17279
18791
  /** Where the panel starts, measured from the bar above it. */
17280
18792
  "--megamenu-top"?: (string) | undefined;
18793
+ /** Color of the line under the label. */
18794
+ "--menu-item-description-color"?: (string) | undefined;
17281
18795
  /** Color of the shortcut and the words in the `end` slot. */
17282
18796
  "--menu-item-detail-color"?: (string) | undefined;
17283
18797
  /** Width of the trailing column, including the gap before it, which holds a check mark or a submenu caret. */
@@ -17298,6 +18812,10 @@ export type CustomCssProperties = {
17298
18812
  "--menu-min-inline-size"?: (string) | undefined;
17299
18813
  /** Shadow under the panel. Defaults to `--helix-shadow-floating`, so the panel keeps a shadow over any content below it. */
17300
18814
  "--menu-shadow"?: (string) | undefined;
18815
+ /** The trigger's width, written on the panel while it is open, as in `min-inline-size: var(--floating-anchor-inline-size)`. Read it; a value set here is written over. */
18816
+ "--floating-anchor-inline-size"?: (string) | undefined;
18817
+ /** The room between the panel and the edge of the screen it opens toward, written on the panel while it is open. Read it; a value set here is written over. */
18818
+ "--floating-available-block-size"?: (string) | undefined;
17301
18819
  /** Color of the heading. */
17302
18820
  "--menu-section-heading-color"?: (string) | undefined;
17303
18821
  /** The fill color. Overrides the band's tone. */
@@ -17318,6 +18836,14 @@ export type CustomCssProperties = {
17318
18836
  "--meter-tick-color"?: (string) | undefined;
17319
18837
  /** The color of the groove behind the fill. */
17320
18838
  "--meter-track-color"?: (string) | undefined;
18839
+ /** How long the fill takes to move to a new reading, and to change its color. `0s` moves it at once. */
18840
+ "--meter-transition-duration"?: (string) | undefined;
18841
+ /** The color of the reading shown under `show-value`. */
18842
+ "--meter-value-color"?: (string) | undefined;
18843
+ /** The space between the bar and the reading under `show-value`. */
18844
+ "--meter-value-gap"?: (string) | undefined;
18845
+ /** The type size of the reading shown under `show-value`. */
18846
+ "--meter-value-size"?: (string) | undefined;
17321
18847
  /** Where a bound sits on the arc, as a length along it. */
17322
18848
  "--meter-along"?: (string) | undefined;
17323
18849
  /** Where a bound sits on a linear track, as a percentage. */
@@ -17340,6 +18866,20 @@ export type CustomCssProperties = {
17340
18866
  "--navigation-item-color"?: (string) | undefined;
17341
18867
  /** Text color of the current destination, the one marked `aria-current="page"`. */
17342
18868
  "--navigation-item-current-color"?: (string) | undefined;
18869
+ /** Weight of the current destination's text. */
18870
+ "--navigation-item-current-font-weight"?: (string) | undefined;
18871
+ /** Size of a destination's text. */
18872
+ "--navigation-item-font-size"?: (string) | undefined;
18873
+ /** Weight of a destination's text. */
18874
+ "--navigation-item-font-weight"?: (string) | undefined;
18875
+ /** Background of a destination under the pointer. */
18876
+ "--navigation-item-hover-background-color"?: (string) | undefined;
18877
+ /** Text color of a destination under the pointer. */
18878
+ "--navigation-item-hover-color"?: (string) | undefined;
18879
+ /** Space either side of a destination's text. */
18880
+ "--navigation-item-padding-inline"?: (string) | undefined;
18881
+ /** Corner radius of a destination, which its hover background follows. */
18882
+ "--navigation-item-radius"?: (string) | undefined;
17343
18883
  /** Text color in a read item. */
17344
18884
  "--notifications-color"?: (string) | undefined;
17345
18885
  /** Color of the dismiss control. It is `danger`, because dismissing an item removes it for good. */
@@ -17378,10 +18918,26 @@ export type CustomCssProperties = {
17378
18918
  "--number-input-background-color"?: (string) | undefined;
17379
18919
  /** Edge of the field at rest. Hover, focus and an error still draw their own. */
17380
18920
  "--number-input-border-color"?: (string) | undefined;
18921
+ /** Space at each side of the number, inside the steppers. */
18922
+ "--number-input-padding-inline"?: (string) | undefined;
17381
18923
  /** Corner radius of the field. */
17382
18924
  "--number-input-radius"?: (string) | undefined;
17383
18925
  /** Height of the field. */
17384
18926
  "--number-input-size"?: (string) | undefined;
18927
+ /** Fill behind each stepper button at rest. */
18928
+ "--number-input-stepper-background-color"?: (string) | undefined;
18929
+ /** Fill behind a stepper button under the pointer. */
18930
+ "--number-input-stepper-background-color-hover"?: (string) | undefined;
18931
+ /** The rule between each stepper button and the number. */
18932
+ "--number-input-stepper-border-color"?: (string) | undefined;
18933
+ /** Icon color of the stepper buttons at rest. */
18934
+ "--number-input-stepper-color"?: (string) | undefined;
18935
+ /** Icon color of a stepper button under the pointer. */
18936
+ "--number-input-stepper-color-hover"?: (string) | undefined;
18937
+ /** Width and height of the stepper icons. */
18938
+ "--number-input-stepper-icon-size"?: (string) | undefined;
18939
+ /** Width of each stepper button. */
18940
+ "--number-input-stepper-size"?: (string) | undefined;
17385
18941
  /** The background of the tree. */
17386
18942
  "--object-inspector-background-color"?: (string) | undefined;
17387
18943
  /** The height of the scrolling box when `windowed` is set. */
@@ -17404,16 +18960,46 @@ export type CustomCssProperties = {
17404
18960
  "--option-padding"?: (string) | undefined;
17405
18961
  /** The corner radius of the row. A listbox and a select remove it. */
17406
18962
  "--option-radius"?: (string) | undefined;
18963
+ /** The rule's color. */
18964
+ "--option-separator-color"?: (string) | undefined;
18965
+ /** The space above and below the rule. */
18966
+ "--option-separator-space"?: (string) | undefined;
18967
+ /** The rule's thickness. */
18968
+ "--option-separator-thickness"?: (string) | undefined;
17407
18969
  /** The color of the nearest dots. Defaults to `currentColor`. */
17408
18970
  "--orb-color"?: (string) | undefined;
17409
18971
  /** The color the farthest dots fade toward. Defaults to the page's background. */
17410
18972
  "--orb-ground"?: (string) | undefined;
17411
18973
  /** The diameter. Overrides `size`. */
17412
18974
  "--orb-size"?: (string) | undefined;
18975
+ /** The color of the heading in the `heading` slot. */
18976
+ "--outline-heading-color"?: (string) | undefined;
17413
18977
  /** How far each level is inset from the one above. */
17414
18978
  "--outline-indent"?: (string) | undefined;
18979
+ /** The color of the mark that moves to the section in view. */
18980
+ "--outline-indicator-color"?: (string) | undefined;
18981
+ /** The color of a link. */
18982
+ "--outline-link-color"?: (string) | undefined;
18983
+ /** The color of the link to the section in view. */
18984
+ "--outline-link-current-color"?: (string) | undefined;
18985
+ /** The weight of the link to the section in view. */
18986
+ "--outline-link-current-weight"?: (string) | undefined;
18987
+ /** The size of a link's text. */
18988
+ "--outline-link-font-size"?: (string) | undefined;
18989
+ /** The fill behind a link under the pointer. */
18990
+ "--outline-link-hover-background-color"?: (string) | undefined;
18991
+ /** The color of a link under the pointer. */
18992
+ "--outline-link-hover-color"?: (string) | undefined;
18993
+ /** The space above and below a link's text. */
18994
+ "--outline-link-padding-block"?: (string) | undefined;
18995
+ /** The space either side of a link's text, before any indent. */
18996
+ "--outline-link-padding-inline"?: (string) | undefined;
18997
+ /** The corner radius of a link's hover fill. */
18998
+ "--outline-link-radius"?: (string) | undefined;
17415
18999
  /** The width of the gutter that holds the line and the moving mark. */
17416
19000
  "--outline-rail"?: (string) | undefined;
19001
+ /** The color of the line down the leading edge. */
19002
+ "--outline-rule-color"?: (string) | undefined;
17417
19003
  /** Fill behind the page you are on. */
17418
19004
  "--pagination-current-color"?: (string) | undefined;
17419
19005
  /** Space between one control and the next. */
@@ -17422,16 +19008,28 @@ export type CustomCssProperties = {
17422
19008
  "--pagination-hover-color"?: (string) | undefined;
17423
19009
  /** The box every control in the row takes. */
17424
19010
  "--pagination-size"?: (string) | undefined;
19011
+ /** The color of the caret drawn in an empty box. Without it, the character color applies. */
19012
+ "--pin-input-caret-color"?: (string) | undefined;
17425
19013
  /** Fill behind each box. */
17426
19014
  "--pin-input-cell-background-color"?: (string) | undefined;
17427
19015
  /** Edge of each box at rest. Hover, focus and an error still draw their own. */
17428
19016
  "--pin-input-cell-border-color"?: (string) | undefined;
19017
+ /** Edge of the box the caret is in. */
19018
+ "--pin-input-cell-border-color-focus"?: (string) | undefined;
19019
+ /** The color of a typed character. */
19020
+ "--pin-input-cell-color"?: (string) | undefined;
19021
+ /** The size of a typed character. */
19022
+ "--pin-input-cell-font-size"?: (string) | undefined;
17429
19023
  /** Corner radius of each box. */
17430
19024
  "--pin-input-cell-radius"?: (string) | undefined;
17431
19025
  /** Width and height of each box. */
17432
19026
  "--pin-input-cell-size"?: (string) | undefined;
17433
19027
  /** The space between one box and the next. */
17434
19028
  "--pin-input-gap"?: (string) | undefined;
19029
+ /** The color of the `placeholder` text in an empty box. */
19030
+ "--pin-input-placeholder-color"?: (string) | undefined;
19031
+ /** The color of the text `format` draws between boxes. */
19032
+ "--pin-input-separator-color"?: (string) | undefined;
17435
19033
  /** Size of the point drawn with `arrow`. Tooltip's point is the same size. */
17436
19034
  "--popover-arrow-size"?: (string) | undefined;
17437
19035
  /** Color of the panel's edge. */
@@ -17454,6 +19052,8 @@ export type CustomCssProperties = {
17454
19052
  "--progress-label-gap"?: (string) | undefined;
17455
19053
  /** Type size of a slotted label. */
17456
19054
  "--progress-label-size"?: (string) | undefined;
19055
+ /** How far the ends of the bar are rounded. */
19056
+ "--progress-radius"?: (string) | undefined;
17457
19057
  /** Diameter of the ring. */
17458
19058
  "--progress-ring-size"?: (string) | undefined;
17459
19059
  /** Thickness of the ring's stroke. */
@@ -17462,6 +19062,14 @@ export type CustomCssProperties = {
17462
19062
  "--progress-size"?: (string) | undefined;
17463
19063
  /** Fill of the part that is not done. */
17464
19064
  "--progress-track-color"?: (string) | undefined;
19065
+ /** How long the fill takes to move to a new value. `0s` moves it at once. */
19066
+ "--progress-transition-duration"?: (string) | undefined;
19067
+ /** The color of the value shown under `show-value`. */
19068
+ "--progress-value-color"?: (string) | undefined;
19069
+ /** The space between the bar and the value under `show-value`. */
19070
+ "--progress-value-gap"?: (string) | undefined;
19071
+ /** The type size of the value shown under `show-value`. */
19072
+ "--progress-value-size"?: (string) | undefined;
17465
19073
  /** The value as a fraction of the range, 0 to 1. Pinned to 1 while indeterminate. */
17466
19074
  "--progress-fraction"?: (string) | undefined;
17467
19075
  /** The fill behind the modules, including the quiet zone and the logo's box. */
@@ -17478,8 +19086,12 @@ export type CustomCssProperties = {
17478
19086
  "--qr-code-size"?: (string) | undefined;
17479
19087
  /** Color of the quoted text. */
17480
19088
  "--quote-color"?: (string) | undefined;
19089
+ /** The typeface of the quoted text, the paragraph's own by default. */
19090
+ "--quote-font-family"?: (string) | undefined;
17481
19091
  /** The slant of the quoted text, `italic` by default. Set `normal` for a face whose italic is too loud, or `oblique` for one with no italic of its own. */
17482
19092
  "--quote-font-style"?: (string) | undefined;
19093
+ /** The weight of the quoted text, the paragraph's own by default. */
19094
+ "--quote-font-weight"?: (string) | undefined;
17483
19095
  /** The space between the choices. */
17484
19096
  "--radio-group-gap"?: (string) | undefined;
17485
19097
  /** The fill of an unselected circle. */
@@ -17494,7 +19106,9 @@ export type CustomCssProperties = {
17494
19106
  "--radio-card-padding"?: (string) | undefined;
17495
19107
  /** The diameter of a chip. */
17496
19108
  "--radio-chip-size"?: (string) | undefined;
17497
- /** The color of the dot. */
19109
+ /** The width and height of an icon slotted into `indicator`. Three quarters of the circle by default. */
19110
+ "--radio-indicator-size"?: (string) | undefined;
19111
+ /** The color of the dot, or of an icon slotted into `indicator`. */
17498
19112
  "--radio-mark-color"?: (string) | undefined;
17499
19113
  /** The diameter of the circle. */
17500
19114
  "--radio-size"?: (string) | undefined;
@@ -17524,8 +19138,24 @@ export type CustomCssProperties = {
17524
19138
  "--sandbox-separator-color"?: (string) | undefined;
17525
19139
  /** Fill behind the source. */
17526
19140
  "--sandbox-source-background-color"?: (string) | undefined;
19141
+ /** Color of a `callable` run, under `tokenize`. Defaults to `--helix-color-syntax-callable`. */
19142
+ "--sandbox-source-callable-color"?: (string) | undefined;
19143
+ /** Color of a `comment` run, under `tokenize`. Defaults to `--helix-color-syntax-comment`. */
19144
+ "--sandbox-source-comment-color"?: (string) | undefined;
19145
+ /** Color of a `constant` run, under `tokenize`. Defaults to `--helix-color-syntax-constant`. */
19146
+ "--sandbox-source-constant-color"?: (string) | undefined;
19147
+ /** Color of an `invalid` run, under `tokenize`. Defaults to `--helix-color-syntax-invalid`. */
19148
+ "--sandbox-source-invalid-color"?: (string) | undefined;
19149
+ /** Color of a `keyword` run, under `tokenize`. Defaults to `--helix-color-syntax-keyword`. */
19150
+ "--sandbox-source-keyword-color"?: (string) | undefined;
17527
19151
  /** Minimum height of the pane. */
17528
19152
  "--sandbox-source-min-block-size"?: (string) | undefined;
19153
+ /** Color of a `name` run, under `tokenize`. Defaults to `--helix-color-syntax-name`. */
19154
+ "--sandbox-source-name-color"?: (string) | undefined;
19155
+ /** Color of a `string` run, under `tokenize`. Defaults to `--helix-color-syntax-string`. */
19156
+ "--sandbox-source-string-color"?: (string) | undefined;
19157
+ /** Color of a `tag` run, under `tokenize`. Defaults to `--helix-color-syntax-tag`. */
19158
+ "--sandbox-source-tag-color"?: (string) | undefined;
17529
19159
  /** Color of the bar's text. */
17530
19160
  "--sandbox-status-bar-color"?: (string) | undefined;
17531
19161
  /** Height of the scrolling region. */
@@ -17536,6 +19166,8 @@ export type CustomCssProperties = {
17536
19166
  "--sandbox-toolbar-size"?: (string) | undefined;
17537
19167
  /** Height of the drawing. */
17538
19168
  "--scatter-chart-block-size"?: (string) | undefined;
19169
+ /** Diameter of the largest point under `size-by`. The smallest is `--scatter-chart-point-size`. */
19170
+ "--scatter-chart-bubble-size"?: (string) | undefined;
17539
19171
  /** Space between the drawing and its axes. */
17540
19172
  "--scatter-chart-gap"?: (string) | undefined;
17541
19173
  /** Color of the gridlines across the plot, drawn when `gridlines` is set. */
@@ -17546,6 +19178,12 @@ export type CustomCssProperties = {
17546
19178
  "--scatter-chart-point-ring-color"?: (string) | undefined;
17547
19179
  /** Diameter of a point. */
17548
19180
  "--scatter-chart-point-size"?: (string) | undefined;
19181
+ /** The dash pattern of a line of best fit, under `trend`, as `stroke-dasharray` takes it. `none` draws it solid. */
19182
+ "--scatter-chart-trend-dash"?: (string) | undefined;
19183
+ /** The thickness of a line of best fit, under `trend`. */
19184
+ "--scatter-chart-trend-width"?: (string) | undefined;
19185
+ /** How large a point is drawn under `size-by`, from 0 to 1, by area. The component writes it, and the stylesheet that sizes the point reads it. */
19186
+ "--chart-point-weight"?: (string) | undefined;
17549
19187
  /** A point's horizontal position, as a percentage. The component writes it. */
17550
19188
  "--chart-point-x"?: (string) | undefined;
17551
19189
  /** A point's vertical position, as a percentage from the top. The component writes it. */
@@ -17638,19 +19276,25 @@ export type CustomCssProperties = {
17638
19276
  "--slider-thumb-ring-color"?: (string) | undefined;
17639
19277
  /** The thumb's size across the track. It equals the length by default, which makes the thumb round. */
17640
19278
  "--slider-thumb-size"?: (string) | undefined;
19279
+ /** The fill of the bubble each thumb shows its value in, under `tooltip`. */
19280
+ "--slider-tooltip-background-color"?: (string) | undefined;
19281
+ /** The color of the value in a thumb's bubble, under `tooltip`. */
19282
+ "--slider-tooltip-color"?: (string) | undefined;
17641
19283
  /** The color of the unfilled part of the track. */
17642
19284
  "--slider-track-color"?: (string) | undefined;
17643
19285
  /** An image for the whole track, such as a gradient for a slider whose value is a color. */
17644
19286
  "--slider-track-image"?: (string) | undefined;
17645
19287
  /** The thickness of the track. It matches the progress bar's size by default. */
17646
19288
  "--slider-track-size"?: (string) | undefined;
19289
+ /** Where a bubble's thumb is, as a fraction of the track, 0 to 1. Set on each `tooltip` part. */
19290
+ "--slider-at"?: (string) | undefined;
17647
19291
  /** The value as a fraction of the range, 0 to 1. */
17648
19292
  "--slider-fraction"?: (string) | undefined;
17649
- /** Where a range's filled span starts, as a fraction of the track, 0 to 1. */
19293
+ /** Where the filled span starts, as a fraction of the track, 0 to 1: a range's lower thumb, or a single thumb's `origin`. */
17650
19294
  "--slider-from"?: (string) | undefined;
17651
19295
  /** Where one marker sits, as a percentage of the track. */
17652
19296
  "--slider-marker-at"?: (string) | undefined;
17653
- /** Where a range's filled span ends, as a fraction of the track, 0 to 1. */
19297
+ /** Where the filled span ends, as a fraction of the track, 0 to 1: a range's upper thumb, or the farther of a single thumb and its `origin`. */
17654
19298
  "--slider-to"?: (string) | undefined;
17655
19299
  /** Opacity of the area fill where it meets the line. */
17656
19300
  "--sparkline-area-opacity"?: (string) | undefined;
@@ -17664,20 +19308,50 @@ export type CustomCssProperties = {
17664
19308
  "--sparkline-color"?: (string) | undefined;
17665
19309
  /** Width of the drawing. */
17666
19310
  "--sparkline-inline-size"?: (string) | undefined;
19311
+ /** Color of the dot on the reading a pointer or a key rests on, and of the `marks` dots. Without it, the line's color. */
19312
+ "--sparkline-mark-color"?: (string) | undefined;
19313
+ /** Color of the ring round the dot on the reading a pointer or a key rests on, which matches the page. Change it when the sparkline sits on another surface. */
19314
+ "--sparkline-mark-ring-color"?: (string) | undefined;
19315
+ /** Size of the dot on the reading a pointer or a key rests on, and of the `marks` dots. */
19316
+ "--sparkline-mark-size"?: (string) | undefined;
19317
+ /** Fill of the band `range` draws. Without it, the line's color. */
19318
+ "--sparkline-range-color"?: (string) | undefined;
19319
+ /** Opacity of the band `range` draws. */
19320
+ "--sparkline-range-opacity"?: (string) | undefined;
19321
+ /** Ground of the reading written above the dot. */
19322
+ "--sparkline-readout-background-color"?: (string) | undefined;
19323
+ /** Color of the reading written above the dot. */
19324
+ "--sparkline-readout-color"?: (string) | undefined;
19325
+ /** Size of the reading written above the dot. */
19326
+ "--sparkline-readout-font-size"?: (string) | undefined;
17667
19327
  /** Thickness of the line, overriding `weight`. */
17668
19328
  "--sparkline-width"?: (string) | undefined;
17669
19329
  /** Fill of the round icon. */
17670
19330
  "--speed-dial-item-background-color"?: (string) | undefined;
17671
19331
  /** Color of the icon. */
17672
19332
  "--speed-dial-item-color"?: (string) | undefined;
19333
+ /** How faint a disabled action is drawn. */
19334
+ "--speed-dial-item-disabled-opacity"?: (string) | undefined;
19335
+ /** Fill of the round icon under the pointer. */
19336
+ "--speed-dial-item-hover-background-color"?: (string) | undefined;
17673
19337
  /** Edge length of the icon. */
17674
19338
  "--speed-dial-item-size"?: (string) | undefined;
17675
19339
  /** Fill of the chip holding the action's name. */
17676
19340
  "--speed-dial-label-background-color"?: (string) | undefined;
17677
19341
  /** Color of the action's name. */
17678
19342
  "--speed-dial-label-color"?: (string) | undefined;
19343
+ /** Size of the action's name. */
19344
+ "--speed-dial-label-font-size"?: (string) | undefined;
19345
+ /** Fill of the trigger the dial draws when none is slotted. */
19346
+ "--speed-dial-background-color"?: (string) | undefined;
19347
+ /** Color of that trigger's icon. */
19348
+ "--speed-dial-color"?: (string) | undefined;
17679
19349
  /** Space between the actions. */
17680
19350
  "--speed-dial-gap"?: (string) | undefined;
19351
+ /** Shadow under that trigger at rest. */
19352
+ "--speed-dial-shadow"?: (string) | undefined;
19353
+ /** Width and height of that trigger. */
19354
+ "--speed-dial-size"?: (string) | undefined;
17681
19355
  /** The wait between one action arriving and the next. */
17682
19356
  "--speed-dial-stagger"?: (string) | undefined;
17683
19357
  /** How far each action moves as it arrives. */
@@ -17730,6 +19404,14 @@ export type CustomCssProperties = {
17730
19404
  "--steps-gap"?: (string) | undefined;
17731
19405
  /** Size of the mark, whether an icon or a digit. */
17732
19406
  "--steps-marker-size"?: (string) | undefined;
19407
+ /** Fill of the progress bar, once a page shows the `progress` part. */
19408
+ "--steps-progress-color"?: (string) | undefined;
19409
+ /** Height of the progress bar. */
19410
+ "--steps-progress-thickness"?: (string) | undefined;
19411
+ /** Color of the progress bar's track. */
19412
+ "--steps-progress-track-color"?: (string) | undefined;
19413
+ /** How far through the sequence is, as a percentage, written on the `progress` part. */
19414
+ "--steps-progress"?: (string) | undefined;
17733
19415
  /** Height of the track. The width follows it. */
17734
19416
  "--switch-block-size"?: (string) | undefined;
17735
19417
  /** Color of the icon on the thumb. Without it, the icon is muted while off and takes the on color while on. */
@@ -17752,12 +19434,18 @@ export type CustomCssProperties = {
17752
19434
  "--table-title-text"?: (string) | undefined;
17753
19435
  /** The column track list the table works out from its columns. The component writes it inline on the element that reads it, so setting it has no effect. Set `columns` to change the tracks. */
17754
19436
  "--table-template"?: (string) | undefined;
19437
+ /** The wash across the cells of a row with `href` under the pointer. */
19438
+ "--table-row-hover-background-color"?: (string) | undefined;
17755
19439
  /** The space between the tab row and the panel's content. */
17756
19440
  "--tabs-panel-padding-block-start"?: (string) | undefined;
17757
19441
  /** The space between tabs. */
17758
19442
  "--tabs-gap"?: (string) | undefined;
17759
19443
  /** The fill of the mark on the current tab: the bar under `underlined`, and the pill otherwise. */
17760
19444
  "--tabs-indicator-color"?: (string) | undefined;
19445
+ /** The corners of the mark. */
19446
+ "--tabs-indicator-radius"?: (string) | undefined;
19447
+ /** The shadow under the mark, which the pill and `segmented` draw. */
19448
+ "--tabs-indicator-shadow"?: (string) | undefined;
17761
19449
  /** The height of the bar under `underlined`. */
17762
19450
  "--tabs-indicator-thickness"?: (string) | undefined;
17763
19451
  /** The color of the rule under the row in `underlined`. */
@@ -17766,8 +19454,22 @@ export type CustomCssProperties = {
17766
19454
  "--tabs-tab-block-size"?: (string) | undefined;
17767
19455
  /** The label color of a tab that is not current. */
17768
19456
  "--tabs-tab-color"?: (string) | undefined;
19457
+ /** How faint a disabled tab is drawn. */
19458
+ "--tabs-tab-disabled-opacity"?: (string) | undefined;
19459
+ /** The size of a tab's label. */
19460
+ "--tabs-tab-font-size"?: (string) | undefined;
19461
+ /** The weight of a tab's label. */
19462
+ "--tabs-tab-font-weight"?: (string) | undefined;
19463
+ /** The wash under the pointer. */
19464
+ "--tabs-tab-hover-background-color"?: (string) | undefined;
19465
+ /** The label color under the pointer. */
19466
+ "--tabs-tab-hover-color"?: (string) | undefined;
17769
19467
  /** The space either side of the label. */
17770
19468
  "--tabs-tab-padding-inline"?: (string) | undefined;
19469
+ /** The corners of a tab, which the hover wash takes. */
19470
+ "--tabs-tab-radius"?: (string) | undefined;
19471
+ /** The fill of the current tab itself, under the moving mark. */
19472
+ "--tabs-tab-selected-background-color"?: (string) | undefined;
17771
19473
  /** The label color of the current tab. */
17772
19474
  "--tabs-tab-selected-color"?: (string) | undefined;
17773
19475
  /** The space between tags, across and between rows. */
@@ -17778,8 +19480,12 @@ export type CustomCssProperties = {
17778
19480
  "--tag-border-color"?: (string) | undefined;
17779
19481
  /** How strongly a `disabled` tag is drawn. */
17780
19482
  "--tag-disabled-opacity"?: (string) | undefined;
19483
+ /** The weight of the label. */
19484
+ "--tag-font-weight"?: (string) | undefined;
17781
19485
  /** The label color. */
17782
19486
  "--tag-foreground-color"?: (string) | undefined;
19487
+ /** The space between the category, the label and the remove button. */
19488
+ "--tag-gap"?: (string) | undefined;
17783
19489
  /** The corner radius of the tag. */
17784
19490
  "--tag-radius"?: (string) | undefined;
17785
19491
  /** The typeface. Overrides the ramp's. */
@@ -17818,6 +19524,8 @@ export type CustomCssProperties = {
17818
19524
  "--time-input-segment-placeholder-color"?: (string) | undefined;
17819
19525
  /** Shadow under the panel. Defaults to `--helix-shadow-floating`, because the panel can sit over any content. */
17820
19526
  "--time-input-shadow"?: (string) | undefined;
19527
+ /** The color of the message under the times, while `feedback` is set. */
19528
+ "--time-picker-feedback-color"?: (string) | undefined;
17821
19529
  /** How tall the list is before it scrolls. */
17822
19530
  "--time-picker-list-block-size"?: (string) | undefined;
17823
19531
  /** Fill behind the times inside a range. */
@@ -17856,28 +19564,72 @@ export type CustomCssProperties = {
17856
19564
  "--toast-inline-size"?: (string) | undefined;
17857
19565
  /** Distance from the edges of the window. */
17858
19566
  "--toast-inset"?: (string) | undefined;
17859
- /** The fill of the moving marker. */
19567
+ /** The groove behind the items, when the group is framed. */
19568
+ "--toggle-group-background-color"?: (string) | undefined;
19569
+ /** The edge of the groove, when the group is framed. */
19570
+ "--toggle-group-border-color"?: (string) | undefined;
19571
+ /** The fill of the moving marker, and of each pressed item under `selection-mode="multiple"`. */
17860
19572
  "--toggle-group-indicator-color"?: (string) | undefined;
19573
+ /** The shadow of the moving marker and of each pressed item. */
19574
+ "--toggle-group-indicator-shadow"?: (string) | undefined;
19575
+ /** Corner radius of each item, the marker, and a pressed item's fill. Without it, the curve stays concentric with the groove. */
19576
+ "--toggle-group-item-radius"?: (string) | undefined;
19577
+ /** Corner radius of the groove, when the group is framed. */
19578
+ "--toggle-group-radius"?: (string) | undefined;
19579
+ /** Text color of an item that is not chosen. Read by the base layer, which styles the `item` part. */
19580
+ "--toggle-item-color"?: (string) | undefined;
19581
+ /** Text color of the chosen item, and of each pressed item in a group that allows several. */
19582
+ "--toggle-item-color-selected"?: (string) | undefined;
19583
+ /** Space either side of an item's label. */
19584
+ "--toggle-item-padding-inline"?: (string) | undefined;
19585
+ /** How the controls line up across the toolbar's axis. Centered unless set; `stretch` makes a vertical toolbar's controls as wide as it is. */
19586
+ "--toolbar-align"?: (string) | undefined;
17861
19587
  /** The fill behind the controls. Transparent unless set. */
17862
19588
  "--toolbar-background-color"?: (string) | undefined;
19589
+ /** The color of the toolbar's edge, once it has a width. */
19590
+ "--toolbar-border-color"?: (string) | undefined;
19591
+ /** The width of the toolbar's edge. None unless set. */
19592
+ "--toolbar-border-width"?: (string) | undefined;
17863
19593
  /** The space between controls. */
17864
19594
  "--toolbar-gap"?: (string) | undefined;
17865
19595
  /** The space between the toolbar's edge and its controls. */
17866
19596
  "--toolbar-padding"?: (string) | undefined;
17867
19597
  /** The corner radius of the toolbar's fill. */
17868
19598
  "--toolbar-radius"?: (string) | undefined;
19599
+ /** Extra space either side of a `Divider` between controls, along the toolbar's axis. None unless set. */
19600
+ "--toolbar-separator-gap"?: (string) | undefined;
17869
19601
  /** The size of the arrow on the bubble's edge. */
17870
19602
  "--tooltip-arrow-size"?: (string) | undefined;
17871
19603
  /** The blur behind a `frosted` or `glass` bubble. */
17872
19604
  "--tooltip-backdrop"?: (string) | undefined;
17873
19605
  /** The fill of the bubble. */
17874
19606
  "--tooltip-background-color"?: (string) | undefined;
19607
+ /** The edge of a `frosted` or `glass` bubble, the only kind that draws one. */
19608
+ "--tooltip-border-color"?: (string) | undefined;
19609
+ /** The color of the bubble's words. */
19610
+ "--tooltip-color"?: (string) | undefined;
19611
+ /** The size of the bubble's words. */
19612
+ "--tooltip-font-size"?: (string) | undefined;
19613
+ /** The space between two things slotted into the bubble, such as a glyph and its words. */
19614
+ "--tooltip-gap"?: (string) | undefined;
17875
19615
  /** The widest the bubble grows before its text wraps. */
17876
19616
  "--tooltip-max-inline-size"?: (string) | undefined;
19617
+ /** The space between the bubble's edge and its words. */
19618
+ "--tooltip-padding"?: (string) | undefined;
19619
+ /** The bubble's corner radius. */
19620
+ "--tooltip-radius"?: (string) | undefined;
17877
19621
  /** The color of the dimmed area outside the spotlight. */
17878
19622
  "--tour-scrim-color"?: (string) | undefined;
17879
19623
  /** The corner radius of the spotlight. */
17880
19624
  "--tour-spotlight-radius"?: (string) | undefined;
19625
+ /** The lit box's height, in pixels, padding included. Written on the spotlight while it lights a target. */
19626
+ "--tour-spotlight-height"?: (string) | undefined;
19627
+ /** The lit box's width, in pixels, padding included. Written on the spotlight while it lights a target. */
19628
+ "--tour-spotlight-width"?: (string) | undefined;
19629
+ /** The lit box's left edge, from the window's left edge, in pixels. Written on the spotlight while it lights a target. */
19630
+ "--tour-spotlight-x"?: (string) | undefined;
19631
+ /** The lit box's top edge, from the window's top edge, in pixels. Written on the spotlight while it lights a target. */
19632
+ "--tour-spotlight-y"?: (string) | undefined;
17881
19633
  /** The size of the arrow's box, before it is rotated. */
17882
19634
  "--tour-arrow-size"?: (string) | undefined;
17883
19635
  /** The width of the panel's border. It follows `--helix-border-floating`, which is `0`, so the panel stands out by its shadow unless a theme sets a border. */
@@ -17904,6 +19656,24 @@ export type CustomCssProperties = {
17904
19656
  "--tree-gap"?: (string) | undefined;
17905
19657
  /** Indent added per level. */
17906
19658
  "--tree-indent"?: (string) | undefined;
19659
+ /** Fill of a checked row, in a tree with `selection-mode="multiple"`. Unset, the box alone marks it. */
19660
+ "--tree-row-checked-background-color"?: (string) | undefined;
19661
+ /** Text color of a checked row, in a tree with `selection-mode="multiple"`. */
19662
+ "--tree-row-checked-color"?: (string) | undefined;
19663
+ /** Text color of a row at rest. */
19664
+ "--tree-row-color"?: (string) | undefined;
19665
+ /** How faint a disabled row is drawn. */
19666
+ "--tree-row-disabled-opacity"?: (string) | undefined;
19667
+ /** Fill of a row under the pointer. */
19668
+ "--tree-row-hover-background-color"?: (string) | undefined;
19669
+ /** Text color of a row under the pointer. */
19670
+ "--tree-row-hover-color"?: (string) | undefined;
19671
+ /** Corners of a row's fill. */
19672
+ "--tree-row-radius"?: (string) | undefined;
19673
+ /** Fill of the chosen row, in a tree of one choice. */
19674
+ "--tree-row-selected-background-color"?: (string) | undefined;
19675
+ /** Text color of the chosen row, in a tree of one choice. */
19676
+ "--tree-row-selected-color"?: (string) | undefined;
17907
19677
  /** Minimum height of a row, so rows with and without an icon match. */
17908
19678
  "--tree-row-size"?: (string) | undefined;
17909
19679
  /** How deep this row sits, counting from one as `aria-level` does, for the indent. */
@@ -17918,7 +19688,7 @@ export type CustomCssProperties = {
17918
19688
  "--trend-color"?: (string) | undefined;
17919
19689
  /** Space between the arrow, the metric and the label. */
17920
19690
  "--trend-gap"?: (string) | undefined;
17921
- /** Size of the arrow, or of a glyph in the `icon` slot. */
19691
+ /** Size of the arrow, or of a glyph in one of the icon slots. */
17922
19692
  "--trend-icon-size"?: (string) | undefined;
17923
19693
  /** Color of the label. */
17924
19694
  "--trend-label-color"?: (string) | undefined;
@@ -17928,6 +19698,30 @@ export type CustomCssProperties = {
17928
19698
  "--trend-worse-color"?: (string) | undefined;
17929
19699
  /** The fill behind a row. */
17930
19700
  "--video-playlist-item-background-color"?: (string) | undefined;
19701
+ /** The color of an entry's name. */
19702
+ "--video-playlist-item-color"?: (string) | undefined;
19703
+ /** The fill behind the entry that is playing. */
19704
+ "--video-playlist-item-current-background-color"?: (string) | undefined;
19705
+ /** The color of the bar beside the entry that is playing. */
19706
+ "--video-playlist-item-current-mark-color"?: (string) | undefined;
19707
+ /** The space between the thumbnail and the name. */
19708
+ "--video-playlist-item-gap"?: (string) | undefined;
19709
+ /** The fill behind a row under the pointer. */
19710
+ "--video-playlist-item-hover-background-color"?: (string) | undefined;
19711
+ /** The color of the content in the `meta` slot. */
19712
+ "--video-playlist-item-meta-color"?: (string) | undefined;
19713
+ /** The space above and below a row's content. */
19714
+ "--video-playlist-item-padding-block"?: (string) | undefined;
19715
+ /** The space after a row's content. */
19716
+ "--video-playlist-item-padding-inline-end"?: (string) | undefined;
19717
+ /** The space before a row's content, where the bar beside the playing entry sits. */
19718
+ "--video-playlist-item-padding-inline-start"?: (string) | undefined;
19719
+ /** The corner radius of a row. */
19720
+ "--video-playlist-item-radius"?: (string) | undefined;
19721
+ /** The shape of the thumbnail column. */
19722
+ "--video-playlist-media-aspect-ratio"?: (string) | undefined;
19723
+ /** The corner radius of the thumbnail. */
19724
+ "--video-playlist-media-radius"?: (string) | undefined;
17931
19725
  /** The width of the thumbnail column. */
17932
19726
  "--video-playlist-media-size"?: (string) | undefined;
17933
19727
  /** The color of the trigger. Defaults to the control bar's color. */
@@ -17936,6 +19730,10 @@ export type CustomCssProperties = {
17936
19730
  "--video-playlist-menu-poster"?: (string) | undefined;
17937
19731
  /** The size of the trigger's icon. */
17938
19732
  "--video-playlist-menu-size"?: (string) | undefined;
19733
+ /** The space between the player and the list. */
19734
+ "--video-playlist-gap"?: (string) | undefined;
19735
+ /** The space between the entries. */
19736
+ "--video-playlist-items-gap"?: (string) | undefined;
17939
19737
  /** The grid columns for the player and the list. */
17940
19738
  "--video-playlist-layout"?: (string) | undefined;
17941
19739
  /** The height the list reaches before it scrolls. */
@@ -17962,6 +19760,12 @@ export type CustomCssProperties = {
17962
19760
  "--video-progress"?: (string) | undefined;
17963
19761
  /** How tall the scrolling box is. */
17964
19762
  "--virtual-list-block-size"?: (string) | undefined;
19763
+ /** The color of the text in the row drawn while `loading` is set. */
19764
+ "--virtual-list-loading-color"?: (string) | undefined;
19765
+ /** The space around the text in the row drawn while `loading` is set. */
19766
+ "--virtual-list-loading-padding"?: (string) | undefined;
19767
+ /** The fill behind a chosen row, in a list with `selection-mode`. */
19768
+ "--virtual-list-selected-background-color"?: (string) | undefined;
17965
19769
  };
17966
19770
 
17967
19771
  // Vue SFC template type-checking (GlobalComponents) for non-Vue custom elements.
@@ -17998,7 +19802,7 @@ export interface WcToolkitVueGlobalComponents {
17998
19802
  HelixAreaChartVueProps,
17999
19803
  HelixAreaChartVueEvents
18000
19804
  >;
18001
- /** One fragment shader draws over a full-screen triangle, and its palette comes from the tokens. A background built on '--helix-color-primary' changes when your brand color changes. Every shape ramps through four token stops, and the token layer inverts each one: the page background, 'primary-subtle', 'primary', and a peak. The peak is the foreground on a dark page and 'primary-active' on a light one, because mixing a saturated hue toward near-black removes its chroma. The component reads which way the page runs from the background's luminance, because the mode is a private token. The geometry is three vertices derived from 'gl_VertexID'. There is no dependency, scene graph, attribute, buffer, or upload. The shader stops drawing in these cases: - The element is off screen or in a background tab. - 'prefers-reduced-motion' is set. The element shows one still frame. - The browser takes back the drawing context, on a GPU reset or past its limit of about sixteen contexts. The gradient shows until the context returns. On a renderer that draws on the CPU, such as a headless browser or a machine with no usable GPU, the element shows the gradient. There the shader costs about 450ms for the first frame of each element, against 2ms on a GPU. Aura is styled only and has behavior, which the tier split does not otherwise allow. Its behavior is drawing to a canvas, so there is no structure for you to restyle and nothing for a headless version to hold. **Content placed inside sits over the field**, in a 'content' part that covers the aura, so an interactive aura answers the pointer over the content too. Clicks still reach the content. Style '::part(content)' to place it, such as centering a hero's heading. **The colors are the theme's, and each has a hook**: '--aura-ground', '--aura-haze', '--aura-glow' and '--aura-peak', read by the shader and by the fallback gradient alike, from wherever on the page you set them. Where the gradient shows in place of the shader, the aura matches ':state(fallback)' and sends 'helix-aura-fallback' with the reason. */
19805
+ /** One fragment shader draws over a full-screen triangle, and its palette comes from the tokens. A background built on '--helix-color-primary' changes when your brand color changes. Every shape ramps through four token stops, and the token layer inverts each one: the page background, 'primary-subtle', 'primary', and a peak. The peak is the foreground on a dark page and 'primary-active' on a light one, because mixing a saturated hue toward near-black removes its chroma. The component reads which way the page runs from the background's luminance, because the mode is a private token. The geometry is three vertices derived from 'gl_VertexID'. There is no dependency, scene graph, attribute, buffer, or upload. The shader stops drawing in these cases: - The element is off screen or in a background tab. - 'prefers-reduced-motion' is set. The element shows one still frame. - The browser takes back the drawing context, on a GPU reset or past its limit of about sixteen contexts. The gradient shows until the context returns. On a renderer that draws on the CPU, such as a headless browser or a machine with no usable GPU, the element shows the gradient. There the shader costs about 450ms for the first frame of each element, against 2ms on a GPU. Aura is styled only and has behavior, which the tier split does not otherwise allow. Its behavior is drawing to a canvas, so there is no structure for you to restyle and nothing for a headless version to hold. **Content placed inside sits over the field**, in a 'content' part that covers the aura, so an interactive aura answers the pointer over the content too. Clicks still reach the content. Style '::part(content)' to place it, such as centering a hero's heading. **The colors are the theme's, and each has a hook**: '--aura-ground', '--aura-haze', '--aura-glow' and '--aura-peak', read by the shader and by the fallback gradient alike, from wherever on the page you set them. A hook changed while the aura draws, by a class, a style or the color mode, reaches the shader on the next frame. Where the gradient shows in place of the shader, the aura matches ':state(fallback)' and sends 'helix-aura-fallback' with the reason. */
18002
19806
  "helix-aura": DefineCustomElement<
18003
19807
  HelixAura,
18004
19808
  HelixAuraVueProps,
@@ -18058,7 +19862,7 @@ export interface WcToolkitVueGlobalComponents {
18058
19862
  HelixButtonVueProps,
18059
19863
  HelixButtonVueEvents
18060
19864
  >;
18061
- /** The background is a tint of the tone's color, mixed with 'color-mix'. A 'neutral' callout is drawn in the muted ink, for a note that reports no status, so it keeps to the palette whatever the brand. A bar on the inline start edge also marks the tone, so it still shows in grayscale and for people who do not distinguish the hues. 'tone' is set on the headless tier and carries the meaning, and this tier draws it. 'separation' is where the box ends: absent is the tint with the bar, 'outlined' an edge with no fill, and 'plain' the bar and the mark alone. */
19865
+ /** The background is a tint of the tone's color, mixed with 'color-mix'. A 'neutral' callout is drawn in the muted ink, for a note that reports no status, so it keeps to the palette whatever the brand. A bar on the inline start edge also marks the tone, so it still shows in grayscale and for people who do not distinguish the hues. 'tone' is set on the headless tier and carries the meaning, and this tier draws it. 'separation' is where the box ends: absent is the tint with the bar, 'outlined' an edge with no fill, and 'plain' the bar and the mark alone. The inset and the type follow 'data-density', as the controls around a callout do: set it on a region for tighter or looser callouts, or on one callout itself, as '<helix-callout data-density="sm">'. That is how one callout is sized, and there is no 'size' beside it. '--callout-padding' and '--callout-font-size' set either to a value of your own. */
18062
19866
  "helix-callout": DefineCustomElement<
18063
19867
  HelixCallout,
18064
19868
  HelixCalloutVueProps,
@@ -18274,7 +20078,7 @@ export interface WcToolkitVueGlobalComponents {
18274
20078
  HelixFilterInputVueProps,
18275
20079
  HelixFilterInputVueEvents
18276
20080
  >;
18277
- /** The host is the flex container and its only child is a slot, so '<helix-flex>' adds no box beyond the '<div>' it replaces. There is no separate Stack component. For a stack, set 'direction="column"'. 'gap' takes a space token name, so spacing stays on the scale. 'row-gap' and 'column-gap' set one axis each and win over 'gap' on theirs. 'layout' sets up one of three common patterns, and any attribute you also write wins over the pattern's own value: - 'cluster': items in a wrapping row, centered on one line, such as tags. - 'split': the first item at the start and the rest pushed to the end, such as a title and its actions. Wraps when there is no room. - 'flank' and 'flank-end': a fixed item beside one that takes the rest, such as an icon and its text, or a field and its button. The item that takes the rest stays at least '--flex-flank-min' wide, and the pair stacks once it cannot. Flex is presentation only, so it has no headless tier. */
20081
+ /** The host is the flex container and its only child is a slot, so '<helix-flex>' adds no box beyond the '<div>' it replaces. There is no separate Stack component. For a stack, set 'direction="column"'. 'gap' takes a space token name, so spacing stays on the scale. 'row-gap' and 'column-gap' set one axis each and win over 'gap' on theirs. 'layout' sets up a common pattern, and any attribute you also write wins over the pattern's own value: - 'cluster': items in a wrapping row, centered on one line, such as tags. - 'split': the first item at the start, the last at the end, and any between them spaced evenly, such as a title and its actions. Put several actions in a flex of their own so they stay together at the end. Wraps when there is no room. - 'flank' and 'flank-end': a fixed item beside one that takes the rest, such as an icon and its text, or a field and its button. The item that takes the rest stays at least '--flex-flank-min' wide, and the pair stacks once it cannot. - 'switch': the items share a row while the flex is at least '--flex-switch-at' wide, and each takes a line of its own below that, such as cards that stack on a narrow screen. It answers the width the flex is given, wherever it sits, with no breakpoint to maintain. Flex is presentation only, so it has no headless tier. */
18278
20082
  "helix-flex": DefineCustomElement<
18279
20083
  HelixFlex,
18280
20084
  HelixFlexVueProps,
@@ -18292,7 +20096,7 @@ export interface WcToolkitVueGlobalComponents {
18292
20096
  HelixGraphVueProps,
18293
20097
  HelixGraphVueEvents
18294
20098
  >;
18295
- /** Set columns in one of two ways: - 'columns' sets a fixed count. - 'min' fits as many equal columns as there is room for at that width, so the layout responds with no breakpoints to maintain. If you set both, 'min' wins. The grid is presentation only, so there is no headless tier. 'row-gap' and 'column-gap' set one axis each and win over 'gap' on theirs. '--grid-rows' and '--grid-areas' set the rows and named areas, and a child takes its place with 'grid-area' in your own stylesheet. **A child can span columns with 'data-grid-span'.** 'data-grid-span="full"' runs from the first column to the last, such as a heading across a set of cards, and a number from '2' to '6' spans that many columns. */
20099
+ /** Set columns in one of two ways: - 'columns' sets a fixed count. - 'min' fits as many equal columns as there is room for at that width, so the layout responds with no breakpoints to maintain. If you set both, 'min' wins. The grid is presentation only, so there is no headless tier. 'row-gap' and 'column-gap' set one axis each and win over 'gap' on theirs. '--grid-rows' and '--grid-areas' set the rows and named areas, and a child takes its place with 'grid-area' in your own stylesheet. **A child can span columns with 'data-grid-span'.** 'data-grid-span="full"' runs from the first column to the last, such as a heading across a set of cards, and a number from '2' to '6' spans that many columns. A number wider than the grid adds columns of no width beside the real ones, as CSS does, so in a 'min' grid, whose count changes with its width, use 'full' for a child that must span them all. */
18296
20100
  "helix-grid": DefineCustomElement<
18297
20101
  HelixGrid,
18298
20102
  HelixGridVueProps,
@@ -18448,7 +20252,7 @@ export interface WcToolkitVueGlobalComponents {
18448
20252
  HelixMapTerrainVueProps,
18449
20253
  HelixMapTerrainVueEvents
18450
20254
  >;
18451
- /** Styles the trigger and lays out the panel it opens as a grid of columns. What opens and closes the panel comes from the base class. */
20255
+ /** Styles the trigger and lays out the panel it opens as a grid of columns. What opens and closes the panel comes from the base class. **The panel's contents are laid out by 'helix.css'**, through attributes you write on your own markup: 'data-megamenu-group' on each column, 'data-megamenu-heading' on a column's heading, and 'data-megamenu-item' on a link that carries a title in '<strong>' and a line of description in '<span>' or '<p>', with an icon before them. A plain '<a>' in a group is drawn as a navigation item. Without the attributes the panel holds your markup as you styled it. */
18452
20256
  "helix-megamenu": DefineCustomElement<
18453
20257
  HelixMegamenu,
18454
20258
  HelixMegamenuVueProps,
@@ -18526,13 +20330,19 @@ export interface WcToolkitVueGlobalComponents {
18526
20330
  HelixOptionVueProps,
18527
20331
  HelixOptionVueEvents
18528
20332
  >;
18529
- /** A cloud of dots drawn to a canvas, with one shape per state: - 'connecting' and 'thinking': the same leaning sash, differing in how agitated it is. - 'waiting' and 'done': the same settled ball at different tempos. - 'fetching': a globe with a light moving around it. - 'listening': a closed sphere with a ripple crossing it. - 'working': a ring. Every state is the same banded grid with different parameters. Changing state interpolates the parameters, so every frame in between is a complete shape. A small change gets less time than a large one, such as a sash becoming a ring. The outline changes first, so the light starts orbiting only after the shape is round. The cloud does not rotate, and all movement happens inside it. The exception is the light, which travels because a ring of evenly spaced dots looks the same when rotated, so a turning state needs something fixed passing over it. Colors come from '--orb-color' and '--orb-ground'. Each dot's color is mixed toward the ground color by its depth, so depth holds when the theme changes. The animation stops when the orb is off screen or in a background tab. With 'prefers-reduced-motion', it draws one still frame. The orb is styled only and has behavior, which the tier split does not otherwise allow. Its role, name and busy state follow 'state', and the rest is drawing dots to a canvas, so there is no structure to restyle. For a drawing of your own, the headless 'Loader' holds the same busy progress bar and its name. Each state is also a custom state, such as ':state(thinking)' or ':state(done)', so a page can style what sits around an orb by what it shows, whether the state was written as an attribute or set from script. */
20333
+ /** A hairline across the panel in the list's border color, with a little air either side. */
20334
+ "helix-option-separator": DefineCustomElement<
20335
+ HelixOptionSeparator,
20336
+ HelixOptionSeparatorVueProps,
20337
+ HelixOptionSeparatorVueEvents
20338
+ >;
20339
+ /** A cloud of dots drawn to a canvas, with one shape per state: - 'connecting' and 'thinking': the same leaning sash, differing in how agitated it is. - 'waiting' and 'done': the same settled ball at different tempos. - 'fetching': a globe with a light moving around it. - 'listening': a closed sphere with a ripple crossing it. - 'working': a ring. Every state is the same banded grid with different parameters. Changing state interpolates the parameters, so every frame in between is a complete shape. A small change gets less time than a large one, such as a sash becoming a ring. The outline changes first, so the light starts orbiting only after the shape is round. The cloud does not rotate, and all movement happens inside it. The exception is the light, which travels because a ring of evenly spaced dots looks the same when rotated, so a turning state needs something fixed passing over it. Colors come from '--orb-color' and '--orb-ground'. Each dot's color is mixed toward the ground color by its depth, so depth holds when the theme changes. The animation stops when the orb is off screen or in a background tab. With 'prefers-reduced-motion', it draws one still frame. The orb is styled only and has behavior, which the tier split does not otherwise allow. Its role, name and busy state follow 'state', unless 'announce' makes it a status region, and the rest is drawing dots to a canvas, so there is no structure to restyle. For a drawing of your own, the headless 'Loader' holds the same busy progress bar and its name. Each state is also a custom state, such as ':state(thinking)' or ':state(done)', so a page can style what sits around an orb by what it shows, whether the state was written as an attribute or set from script. */
18530
20340
  "helix-orb": DefineCustomElement<
18531
20341
  HelixOrb,
18532
20342
  HelixOrbVueProps,
18533
20343
  HelixOrbVueEvents
18534
20344
  >;
18535
- /** A rule runs down the leading edge, and the current section is highlighted along it. Set nesting with 'data-level' on each link, using the heading levels: '2' through '6' each add one step of '--outline-indent', and a link without 'data-level' is at the top level. The outline does not read heading levels from the document, because the headings are not always in the document. Links in a nested '<ul>' take their indentation from your own stylesheet: the outline's styles reach the elements slotted into it and nothing inside them. Write the links flat with 'data-level' for the indentation drawn here, and screen readers still hear them as nested lists. A heading slotted into 'heading' is set above the links, lined up with them. */
20345
+ /** A rule runs down the leading edge, and the current section is highlighted along it. Set nesting with 'data-level' on each link, using the heading levels: '2' through '6' each add one step of '--outline-indent', and a link without 'data-level' is at the top level. The outline does not read heading levels from the document, because the headings are not always in the document. Links in a nested '<ul>' are styled by 'helix.css', since the outline's own styles reach the elements slotted into it and nothing inside them: the lists lose their bullets, each inner list is inset by '--outline-indent', and the links read the same hooks as flat ones. Those rules have no specificity, so any rule of yours wins. Screen readers hear the levels either way. A heading slotted into 'heading' is set above the links, lined up with them. */
18536
20346
  "helix-outline": DefineCustomElement<
18537
20347
  HelixOutline,
18538
20348
  HelixOutlineVueProps,
@@ -18556,7 +20366,7 @@ export interface WcToolkitVueGlobalComponents {
18556
20366
  HelixPaginationSummaryVueProps,
18557
20367
  HelixPaginationSummaryVueEvents
18558
20368
  >;
18559
- /** Square boxes at the control height, with space between them so the code reads as separate characters. The focus ring is on the current box, so you can see which character comes next. Figures are tabular, so every digit takes the same width and the row does not shift as you type. */
20369
+ /** Square boxes at the control height, with space between them so the code reads as separate characters. The focus ring is on the box the caret is in, so you can see which character comes next, and the caret is drawn there while it is empty. Figures are tabular, so every digit takes the same width and the row does not shift as you type. */
18560
20370
  "helix-pin-input": DefineCustomElement<
18561
20371
  HelixPinInput,
18562
20372
  HelixPinInputVueProps,
@@ -18604,7 +20414,7 @@ export interface WcToolkitVueGlobalComponents {
18604
20414
  HelixRatingVueProps,
18605
20415
  HelixRatingVueEvents
18606
20416
  >;
18607
- /** A sandboxed '<iframe>' that loads 'src', a document you provide. That document imports what the examples need, listens for a render message, and writes the markup into itself. **Examples render in a frame**, so an example's styles and scripts do not affect the page around the sandbox, and 'position: fixed' stays inside the pane. The frame starts empty, with its own stylesheets and its own custom element registry, so 'src' must load the styles and components the examples use. **The source is untrusted, and the frame keeps it isolated.** The frame uses 'sandbox="allow-scripts"' and never 'allow-same-origin'. Together, the two let a document on the same origin remove its own sandbox, which is the same as having none. */
20417
+ /** A sandboxed '<iframe>' that loads 'src', a document you provide. That document imports what the examples need, listens for a render message, and writes the markup into itself. **Examples render in a frame**, so an example's styles and scripts do not affect the page around the sandbox, and 'position: fixed' stays inside the pane. The frame starts empty, with its own stylesheets and its own custom element registry, so 'src' must load the styles and components the examples use. **The source is untrusted, and the frame keeps it isolated.** The frame uses 'sandbox="allow-scripts"' and never 'allow-same-origin'. Together, the two let a document on the same origin remove its own sandbox, which is the same as having none. **A preview says where it is.** It is ':state(loading)' from the moment it has a 'src' until that document can take the example, and again through 'reload()'. It is ':state(failed)' once the example throws an error it does not catch, until the next source is sent, which a frame on 'servePreview' reports. A page draws its own spinner or message from either, such as a sibling shown by 'helix-sandbox-preview:state(failed) + .message'. */
18608
20418
  "helix-sandbox-preview": DefineCustomElement<
18609
20419
  HelixSandboxPreview,
18610
20420
  HelixSandboxPreviewVueProps,
@@ -18616,7 +20426,7 @@ export interface WcToolkitVueGlobalComponents {
18616
20426
  HelixSandboxVueProps,
18617
20427
  HelixSandboxVueEvents
18618
20428
  >;
18619
- /** A real '<textarea>', so undo, selection, spellcheck suppression, mobile keyboards, and screen reader support come from the platform. Tab inserts two spaces, so you can indent code. To move focus out of the field, press Escape and then Tab. Shift+Tab moves focus back as it does anywhere else. The field's description says so to a screen reader. */
20429
+ /** A real '<textarea>', so undo, selection, spellcheck suppression, mobile keyboards, and screen reader support come from the platform. Tab inserts two spaces, so you can indent code. To move focus out of the field, press Escape and then Tab. Shift+Tab moves focus back as it does anywhere else. The field's description says so to a screen reader. **'tokenize' colors the source** with a highlighter you bring, such as one built on Lezer, Prism or Shiki. It is a function from the source to runs of text, each with an optional kind, and the pane draws the runs under a transparent field, so typing, selection and undo stay the textarea's. The kinds are 'callable', 'comment', 'constant', 'invalid', 'keyword', 'name', 'string' and 'tag', each colored by the '--helix-color-syntax-*' token of its name and a hook of its own, such as '--sandbox-source-keyword-color'. A run of any other kind is drawn in the field's own color. Every run with a kind is a 'token' part, and carries its kind as 'data-kind'. A 'tokenize' that throws leaves the source drawn plain and the field editable, and the error is reported to the page as an uncaught one. */
18620
20430
  "helix-sandbox-source": DefineCustomElement<
18621
20431
  HelixSandboxSource,
18622
20432
  HelixSandboxSourceVueProps,
@@ -18664,7 +20474,7 @@ export interface WcToolkitVueGlobalComponents {
18664
20474
  HelixSkeletonVueProps,
18665
20475
  HelixSkeletonVueEvents
18666
20476
  >;
18667
- /** Hidden until it receives keyboard focus, then shown in the corner of the viewport. It is hidden with the base layer's visually hidden helper, so it stays in the tab order and the accessibility tree. This stylesheet adds the reveal. It is fixed to the viewport, because the page may already be scrolled when focus arrives, from a restored position or an anchor in the address. Put it first inside '<body>', before the header, and give the content region the id its 'href' names. */
20477
+ /** Hidden until it receives keyboard focus, then shown in the corner of the viewport. Its own stylesheet hides it with the visually hidden recipe the base layer uses, so it stays in the tab order and the accessibility tree, and is hidden with or without the base layer. It is fixed to the viewport, because the page may already be scrolled when focus arrives, from a restored position or an anchor in the address. Put it first inside '<body>', before the header, and give the content region the id its 'href' names. */
18668
20478
  "helix-skip-link": DefineCustomElement<
18669
20479
  HelixSkipLink,
18670
20480
  HelixSkipLinkVueProps,
@@ -18688,7 +20498,7 @@ export interface WcToolkitVueGlobalComponents {
18688
20498
  HelixSpeedDialItemVueProps,
18689
20499
  HelixSpeedDialItemVueEvents
18690
20500
  >;
18691
- /** Presentation only: the column the actions fan into, and the end they align to. The base class handles opening, closing, and keyboard movement. */
20501
+ /** Presentation only: the column the actions fan into, and the end they align to. The base class handles opening, closing, and keyboard movement. It draws no 'helix-icon' of its own, so it does not register one: import '@fusion.dev/helix/icon' where your trigger or your actions use it. */
18692
20502
  "helix-speed-dial": DefineCustomElement<
18693
20503
  HelixSpeedDial,
18694
20504
  HelixSpeedDialVueProps,
@@ -18885,7 +20695,7 @@ export interface WcToolkitVueGlobalComponents {
18885
20695
  HelixTreeVueProps,
18886
20696
  HelixTreeVueEvents
18887
20697
  >;
18888
- /** The arrow takes the judgment color and the number keeps the foreground color. In light mode the success token has 3.8:1 contrast on the surface, enough for a glyph and short of what 13px text needs, and the ramp has no darker green. The number stays the most legible part. Trend has no 'emphasis', 'material', or 'wash'. It has no mark for emphasis, no surface for material, and no area for a wash. The text weight comes from 'Text' and the size from the region. The meaning axis is derived: 'direction' and 'good' resolve to success, danger, or muted, so you state the metric's polarity once. There is no 'tone', because a declared tone could disagree with the arrow. */
20698
+ /** The arrow takes the judgment color and the number keeps the foreground color. In light mode the success token has 3.8:1 contrast on the surface, enough for a glyph and short of what 13px text needs, and the ramp has no darker green. The number stays the most legible part. Trend has no 'emphasis', 'material', or 'wash'. It has no mark for emphasis, no surface for material, and no area for a wash. The text weight comes from 'Text' and the size from the region. The meaning axis is derived: 'movement' and 'good' resolve to success, danger, or muted, so you state the metric's polarity once. There is no 'tone', because a declared tone could disagree with the arrow. */
18889
20699
  "helix-trend": DefineCustomElement<
18890
20700
  HelixTrend,
18891
20701
  HelixTrendVueProps,
@@ -18915,7 +20725,7 @@ export interface WcToolkitVueGlobalComponents {
18915
20725
  HelixVideoVueProps,
18916
20726
  HelixVideoVueEvents
18917
20727
  >;
18918
- /** The styled tier styles the scrolling box and draws the focus ring on the row holding focus. Rows are your markup in the light DOM, so your stylesheet styles them the same as any other content, and a rule of yours on a row wins over the ring. */
20728
+ /** The styled tier styles the scrolling box and draws the focus ring on the row holding focus. Rows are your markup in the light DOM, so your stylesheet styles them the same as any other content, and a rule of yours on a row wins over the ring. While 'loading' is set, a muted, centered row after the last item says "Loading more". In a list with 'selection-mode', a chosen row takes the fill a chosen List row takes. */
18919
20729
  "helix-virtual-list": DefineCustomElement<
18920
20730
  HelixVirtualList,
18921
20731
  HelixVirtualListVueProps,