@fusion.dev/helix 0.142.1 → 0.143.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 (83) hide show
  1. package/README.md +9 -5
  2. package/custom-elements.json +19275 -1410
  3. package/dist/accordion/item/accordion-item.css.js +6 -1
  4. package/dist/accordion/item/accordion-item.d.ts +1 -0
  5. package/dist/announcement/root/announcement-root.d.ts +3 -3
  6. package/dist/app-header/root/app-header-root.d.ts +1 -3
  7. package/dist/aura/shader.d.ts +5 -1
  8. package/dist/aura/shader.js +88 -613
  9. package/dist/avatar/root/avatar-root.d.ts +3 -3
  10. package/dist/badge/root/badge-root.css.js +3 -2
  11. package/dist/badge/root/badge-root.d.ts +1 -0
  12. package/dist/bar-chart/root/bar-chart-root.css.js +10 -0
  13. package/dist/blockquote/root/blockquote-root.css.js +4 -0
  14. package/dist/card/root/card-root.css.js +1 -0
  15. package/dist/carousel/root/carousel-root.js +2 -1
  16. package/dist/checkbox/root/checkbox-root.css.js +3 -3
  17. package/dist/color-picker/root/color-picker-root.d.ts +0 -1
  18. package/dist/color-picker/root/color-picker-root.js +0 -1
  19. package/dist/combobox/root/combobox-root.css.js +5 -4
  20. package/dist/data-table/root/data-table-root.css.js +7 -0
  21. package/dist/date-picker/root/date-picker-root.css.js +15 -3
  22. package/dist/donut-chart/root/donut-chart-root.css.js +10 -0
  23. package/dist/drawer/root/drawer-root.css.js +25 -4
  24. package/dist/element-events.generated.js +41 -10
  25. package/dist/file-input/root/file-input-root.d.ts +0 -1
  26. package/dist/file-input/root/file-input-root.js +0 -1
  27. package/dist/filter-input/root/filter-input-root.d.ts +0 -1
  28. package/dist/filter-input/root/filter-input-root.js +0 -1
  29. package/dist/grid/root/grid-root.d.ts +15 -11
  30. package/dist/grid/root/grid-root.js +49 -15
  31. package/dist/icon-button/root/icon-button-root.css.js +43 -16
  32. package/dist/icon-button/root/icon-button-root.d.ts +4 -1
  33. package/dist/image/root/image-root.css.js +1 -1
  34. package/dist/input/root/input-root.d.ts +0 -1
  35. package/dist/input/root/input-root.js +0 -1
  36. package/dist/line-chart/root/line-chart-root.css.js +10 -0
  37. package/dist/list/item/list-item.css.js +7 -1
  38. package/dist/loader/root/loader-root.d.ts +7 -4
  39. package/dist/menu/item/menu-item.css.js +1 -1
  40. package/dist/menu/root/menu-root.d.ts +0 -3
  41. package/dist/meter/root/meter-root.css.js +4 -4
  42. package/dist/number-input/root/number-input-root.d.ts +3 -0
  43. package/dist/orb/root/orb-root.d.ts +11 -2
  44. package/dist/orb/root/orb-root.js +5 -1
  45. package/dist/qr-code/root/qr-code-root.css.js +2 -1
  46. package/dist/qr-code/root/qr-code-root.d.ts +2 -2
  47. package/dist/rating/root/rating-root.d.ts +3 -0
  48. package/dist/sandbox/index.d.ts +2 -2
  49. package/dist/sandbox/root/sandbox-root.d.ts +20 -1
  50. package/dist/sandbox/root/sandbox-root.js +27 -10
  51. package/dist/sandbox/source/sandbox-source.d.ts +6 -1
  52. package/dist/sandbox/source/sandbox-source.js +13 -3
  53. package/dist/sandbox/terminal/sandbox-terminal.d.ts +3 -1
  54. package/dist/sandbox/terminal/sandbox-terminal.js +3 -1
  55. package/dist/skeleton/root/skeleton-root.css.js +4 -0
  56. package/dist/skeleton/root/skeleton-root.d.ts +4 -1
  57. package/dist/table/column/table-column.css.js +5 -0
  58. package/dist/tabs/panel/tab-panel.css.js +1 -1
  59. package/dist/tabs/panel/tab-panel.d.ts +2 -0
  60. package/dist/tabs/root/tabs-root.css.js +13 -7
  61. package/dist/tabs/root/tabs-root.d.ts +5 -0
  62. package/dist/tabs/tab/tab.css.js +4 -4
  63. package/dist/tabs/tab/tab.d.ts +5 -0
  64. package/dist/tag/root/tag-root.d.ts +2 -3
  65. package/dist/text/root/text-root.css.js +58 -1
  66. package/dist/text/root/text-root.d.ts +11 -2
  67. package/dist/text/root/text-root.js +19 -1
  68. package/dist/time-input/root/time-input-root.d.ts +0 -1
  69. package/dist/time-input/root/time-input-root.js +0 -1
  70. package/dist/toast/root/toast-root.css.js +31 -7
  71. package/dist/toast/root/toast-root.d.ts +6 -9
  72. package/dist/toggle/group/toggle-group.d.ts +3 -0
  73. package/dist/tour/stop/tour-stop.css.js +5 -0
  74. package/dist/trend/root/trend-root.d.ts +0 -1
  75. package/dist/trend/root/trend-root.js +0 -1
  76. package/dist/video/root/video-root.d.ts +0 -1
  77. package/dist/video/root/video-root.js +0 -1
  78. package/dist/video-playlist/menu/video-playlist-menu.d.ts +0 -1
  79. package/dist/video-playlist/menu/video-playlist-menu.js +0 -1
  80. package/lint.json +1 -1
  81. package/package.json +6 -6
  82. package/types/jsx.d.ts +4973 -1964
  83. package/types/vue.d.ts +998 -212
package/types/vue.d.ts CHANGED
@@ -155,6 +155,7 @@ import type {
155
155
  HelixVideoPlaylist,
156
156
  HelixVideo,
157
157
  HelixVirtualList,
158
+ ToggleEvent,
158
159
  HelixBeforeCloseEvent,
159
160
  HelixBeforeOpenEvent,
160
161
  HelixDismissEvent,
@@ -172,9 +173,11 @@ import type {
172
173
  HelixRelabelEvent,
173
174
  HelixRemoveEvent,
174
175
  HelixSelectEvent,
176
+ HelixActivateEvent,
175
177
  HelixSendEvent,
176
178
  HelixBeforePinEvent,
177
179
  HelixHistoryEvent,
180
+ HelixPinEvent,
178
181
  HelixBeforeChangeEvent,
179
182
  HelixBeforeToggleEvent,
180
183
  HelixCopyEvent,
@@ -182,11 +185,14 @@ import type {
182
185
  HelixSampleStartEvent,
183
186
  HelixCreateEvent,
184
187
  HelixFilterEvent,
188
+ HelixFilteredEvent,
185
189
  HelixNavigateEvent,
186
190
  HelixReorderEvent,
191
+ HelixReorderedEvent,
192
+ HelixSelectedEvent,
187
193
  HelixSortEvent,
194
+ HelixSortedEvent,
188
195
  HelixFacetEvent,
189
- HelixActivateEvent,
190
196
  HelixBeforeActivateEvent,
191
197
  HelixGraphFilterEvent,
192
198
  HelixGraphLayoutEvent,
@@ -213,6 +219,8 @@ import type {
213
219
  HelixCaretEvent,
214
220
  HelixBeforeCollapseEvent,
215
221
  HelixBeforeResizeEvent,
222
+ HelixCollapseEvent,
223
+ HelixResizedEvent,
216
224
  HelixTourAskEvent,
217
225
  HelixNextEvent,
218
226
  HelixPreviousEvent,
@@ -261,6 +269,9 @@ export type HelixAccordionItemElementEvent<E = Event> = TypedEvent<
261
269
  HelixAccordionItem,
262
270
  E
263
271
  >;
272
+ /** `toggle` event type */
273
+ export type HelixAccordionItemToggleElementEvent =
274
+ HelixAccordionItemElementEvent<ToggleEvent>;
264
275
  /** `helix-before-close` event type */
265
276
  export type HelixAccordionItemHelixBeforeCloseElementEvent =
266
277
  HelixAccordionItemElementEvent<HelixBeforeCloseEvent>;
@@ -304,6 +315,19 @@ indicator is found once at the edge rather than shifting with the text.
304
315
  `none` is for a row that carries its own affordance and would otherwise
305
316
  have two. */
306
317
  chevronPlacement?: (HelixAccordionItem["chevronPlacement"]) | undefined;
318
+ /** Whether the section is disabled, so its trigger cannot be pressed or
319
+ reached with the arrow keys. A script can still open and close it. */
320
+ disabled?: (HelixAccordionItem["disabled"]) | undefined;
321
+ /** The level of the heading around the trigger, from 1 to 6.
322
+
323
+ Unset takes the accordion's `heading-level`, and 3 where that is unset
324
+ too. */
325
+ "heading-level"?: (HelixAccordionItem["headingLevel"] | `${number}`) | undefined;
326
+ /** The level of the heading around the trigger, from 1 to 6.
327
+
328
+ Unset takes the accordion's `heading-level`, and 3 where that is unset
329
+ too. */
330
+ headingLevel?: (HelixAccordionItem["headingLevel"]) | undefined;
307
331
  /** A group name. Opening an item closes the other items with the same name,
308
332
  as `<details name>` does.
309
333
 
@@ -326,12 +350,12 @@ absence. Caught by `hydration.dom.spec.ts`. */
326
350
  };
327
351
 
328
352
  export type HelixAccordionItemVueEvents = {
353
+ /** The section opened or closed. The event carries `newState` and `oldState`. */
354
+ toggle: HelixAccordionItemToggleElementEvent;
329
355
  /** The section is about to close. Cancelable: cancel it to keep it open. */
330
356
  "helix-before-close": HelixAccordionItemHelixBeforeCloseElementEvent;
331
357
  /** The section is about to open. Cancelable: cancel it to keep it closed. */
332
358
  "helix-before-open": HelixAccordionItemHelixBeforeOpenElementEvent;
333
- /** The section opened or closed. The event carries `newState` and `oldState`. */
334
- toggle: HelixAccordionItemElementEvent;
335
359
  };
336
360
 
337
361
  export type HelixAccordionVueProps = {
@@ -356,12 +380,25 @@ third statement and a fill a second.
356
380
  Both are writable, so a generated page can say which it means rather than
357
381
  relying on the absence of an attribute. */
358
382
  separation?: (HelixAccordion["separation"]) | undefined;
383
+ /** The level of the heading around each trigger, from 1 to 6.
384
+
385
+ Unset is 3. An item's own `heading-level` wins over this. */
386
+ "heading-level"?: (HelixAccordion["headingLevel"] | `${number}`) | undefined;
387
+ /** The level of the heading around each trigger, from 1 to 6.
388
+
389
+ Unset is 3. An item's own `heading-level` wins over this. */
390
+ headingLevel?: (HelixAccordion["headingLevel"]) | undefined;
359
391
  /** How many sections may be open at once.
360
392
 
361
393
  Absent is `multiple`, so nothing closes unexpectedly and the default costs
362
394
  no attribute on the host. `single` keeps exactly one open and refuses to
363
395
  close the last; `single-collapsible` keeps at most one and lets it close.
364
396
 
397
+ Held however a section opens: a press, `open` set from a script,
398
+ `toggleOpen()`, or `default-open` in the markup. Opening one closes the
399
+ others, and on first render only the first section written open stays
400
+ open. Under `single` the first section opens when none is written open.
401
+
365
402
  A union rather than a mode plus a `collapsible` boolean, which would make
366
403
  `collapsible` alongside `multiple` expressible and meaningless. */
367
404
  mode?: (HelixAccordion["mode"]) | undefined;
@@ -422,9 +459,8 @@ to match `Tag` while differing from it in both directions: it carried
422
459
  components saying what a thing means, in three vocabularies, one of which
423
460
  described itself as a fourth.
424
461
 
425
- `accent` is the second emphasis, a rotation off the brand seed rather than a
426
- color of its own, so it stays in relation when somebody rethemes. `primary`
427
- is the seed itself.
462
+ `accent` is the second emphasis, the second color a theme names, and the
463
+ brand itself until one is named. `primary` is the brand.
428
464
 
429
465
  **`surface` was never a color and has moved to `separation`**, which is the
430
466
  axis that owns where a box sits relative to the page. It said the band rode
@@ -529,6 +565,9 @@ the wordmark and the actions happen to measure.
529
565
  takes a search field or a breadcrumb trail as readily as a `Navigation`, so
530
566
  the property carries the part's name, `content`. */
531
567
  contentAlign?: (HelixAppHeader["contentAlign"]) | undefined;
568
+ /** The id of the element whose scrolling lifts the bar, for an app shell that
569
+ scrolls a container instead of the window. Unset is the window. */
570
+ scroller?: (HelixAppHeader["scroller"]) | undefined;
532
571
  };
533
572
 
534
573
  export type HelixAppHeaderVueEvents = {
@@ -551,6 +590,12 @@ shadow root reads a table in that root rather than one in the document. A
551
590
  Absent falls back to the table's own caption, which is usually the right
552
591
  words and is already written. */
553
592
  label?: (HelixAreaChart["label"]) | undefined;
593
+ /** The locale the chart's own numbers are written in: its axis, its
594
+ percentages and its totals, such as `de` for `1.240` and `32 %`.
595
+
596
+ Absent uses the runtime's own. The table's cells are shown as the table
597
+ writes them, whatever this says. */
598
+ locale?: (HelixAreaChart["locale"]) | undefined;
554
599
  /** How a band's edge gets from one reading to the next.
555
600
 
556
601
  Three values, and the class doc argues for each: `straight` is absent and
@@ -720,6 +765,16 @@ everyone, assigning a matching property rather than an attribute.
720
765
  takes no default**: `max = 0` would stamp `max="0"` onto every host that
721
766
  never asked for a limit, including on the server. */
722
767
  max?: (HelixAvatarGroup["max"]) | undefined;
768
+ /** What a screen reader is told the count is, with `{count}` for the number.
769
+
770
+ The count shows "+3", which reads as "plus three" and says nothing about
771
+ what was counted. */
772
+ "overflow-label"?: (HelixAvatarGroup["overflowLabel"]) | undefined;
773
+ /** What a screen reader is told the count is, with `{count}` for the number.
774
+
775
+ The count shows "+3", which reads as "plus three" and says nothing about
776
+ what was counted. */
777
+ overflowLabel?: (HelixAvatarGroup["overflowLabel"]) | undefined;
723
778
  };
724
779
 
725
780
  export type HelixAvatarGroupVueEvents = {};
@@ -745,7 +800,9 @@ Used for the label and the initials. */
745
800
  Falls back to the slot, or to initials, if it fails. */
746
801
  src?: (HelixAvatar["src"]) | undefined;
747
802
  /** The image's state: `loading` while it is on its way, `loaded` once it
748
- arrives, or `error` when it fails and the initials replace it.
803
+ arrives, or `error` when it fails and the initials replace it. An avatar
804
+ with no `src` has no image to wait for, and reports `error` as well, since
805
+ the initials are what it shows.
749
806
 
750
807
  Read-only to a consumer: it is a report rather than a setting, and the same
751
808
  report `Image` gives, for the same reason. `load` and `error` fire once, so
@@ -923,6 +980,12 @@ shadow root reads a table in that root rather than one in the document. A
923
980
  Absent falls back to the table's own caption, which is usually the right
924
981
  words and is already written. */
925
982
  label?: (HelixBarChart["label"]) | undefined;
983
+ /** The locale the chart's own numbers are written in: its axis, its
984
+ percentages and its totals, such as `de` for `1.240` and `32 %`.
985
+
986
+ Absent uses the runtime's own. The table's cells are shown as the table
987
+ writes them, whatever this says. */
988
+ locale?: (HelixBarChart["locale"]) | undefined;
926
989
  /** Which gridlines are drawn across the plot, if any.
927
990
 
928
991
  Absent draws none. `value` rules the axis the columns are *measured* on,
@@ -942,6 +1005,10 @@ of many thin bars, where the eye has stopped counting.
942
1005
  Furniture rather than data, so the rules are inside the `aria-hidden` plot
943
1006
  and reach no reader through the table. */
944
1007
  gridlines?: (HelixBarChart["gridlines"]) | undefined;
1008
+ /** The word the summary puts before each series' highest reading. */
1009
+ "highest-label"?: (HelixBarChart["highestLabel"]) | undefined;
1010
+ /** The word the summary puts before each series' highest reading. */
1011
+ highestLabel?: (HelixBarChart["highestLabel"]) | undefined;
945
1012
  /** The names of the series to draw as lines. The other series are drawn as
946
1013
  columns.
947
1014
 
@@ -973,8 +1040,8 @@ names are words rather than dates: a row of long names either overlaps or
973
1040
  turns on its side, and neither is as readable as putting them down the left
974
1041
  where they read normally.
975
1042
 
976
- `orientation` and not `orientation`, which `Trend` uses in the same group for
977
- which way a number moved. */
1043
+ Named `orientation` because `direction` is taken: `Trend` uses it in the
1044
+ same group for which way a number moved. */
978
1045
  orientation?: (HelixBarChart["orientation"]) | undefined;
979
1046
  /** The names of the series measured against a second scale of their own.
980
1047
 
@@ -1051,7 +1118,11 @@ The consumer's decision. */
1051
1118
 
1052
1119
  export type HelixBreadcrumbVueEvents = {};
1053
1120
 
1054
- export type HelixBreadcrumbsVueProps = {};
1121
+ export type HelixBreadcrumbsVueProps = {
1122
+ /** The landmark's name, read by screen readers. An `aria-label` on the host
1123
+ wins over it. */
1124
+ label?: (HelixBreadcrumbs["label"]) | undefined;
1125
+ };
1055
1126
 
1056
1127
  export type HelixBreadcrumbsVueEvents = {};
1057
1128
 
@@ -1321,6 +1392,16 @@ callout reports a status, or `neutral` for an aside that reports none, and
1321
1392
  never a brand role, so it takes five of the seven values. One word per axis
1322
1393
  is the whole of the registry, which is why there is no `severity` beside it. */
1323
1394
  tone?: (HelixCallout["tone"]) | undefined;
1395
+ /** What a screen reader is told the tone is, such as "Fehler".
1396
+
1397
+ Absent is the English for the tone: "Error", "Information", "Note",
1398
+ "Success" or "Warning". */
1399
+ "tone-label"?: (HelixCallout["toneLabel"]) | undefined;
1400
+ /** What a screen reader is told the tone is, such as "Fehler".
1401
+
1402
+ Absent is the English for the tone: "Error", "Information", "Note",
1403
+ "Success" or "Warning". */
1404
+ toneLabel?: (HelixCallout["toneLabel"]) | undefined;
1324
1405
  };
1325
1406
 
1326
1407
  export type HelixCalloutVueEvents = {};
@@ -1973,6 +2054,9 @@ export type HelixCardVueEvents = {};
1973
2054
 
1974
2055
  /** `HelixCarousel` component event */
1975
2056
  export type HelixCarouselElementEvent<E = Event> = TypedEvent<HelixCarousel, E>;
2057
+ /** `helix-activate` event type */
2058
+ export type HelixCarouselHelixActivateElementEvent =
2059
+ HelixCarouselElementEvent<HelixActivateEvent>;
1976
2060
  /** `helix-select` event type */
1977
2061
  export type HelixCarouselHelixSelectElementEvent =
1978
2062
  HelixCarouselElementEvent<HelixSelectEvent>;
@@ -2397,6 +2481,8 @@ case is the absent attribute, and the styles read it that way. */
2397
2481
  };
2398
2482
 
2399
2483
  export type HelixCarouselVueEvents = {
2484
+ /** Fired after the slide in view changes, with the new index as a string in `detail.value`. */
2485
+ "helix-activate": HelixCarouselHelixActivateElementEvent;
2400
2486
  /** Fired before the slide in view changes, with the requested index. Cancelable: cancel it to keep the current slide. Nothing moves, and a drag returns to the slide the index still holds. See `handleScroll`. */
2401
2487
  "helix-select": HelixCarouselHelixSelectElementEvent;
2402
2488
  };
@@ -2441,13 +2527,16 @@ has to mean a new line and nothing else. */
2441
2527
  submitOn?: (HelixChatComposer["submitOn"]) | undefined;
2442
2528
  /** The text the user has written.
2443
2529
 
2444
- Read it, or set it to seed a draft. */
2530
+ It follows typing, so reading it gives the draft. Set it to seed a draft or
2531
+ to replace the one in the field, and set it to `''` to clear it. */
2445
2532
  value?: (HelixChatComposer["value"]) | undefined;
2446
2533
  };
2447
2534
 
2448
2535
  export type HelixChatComposerVueEvents = {
2449
2536
  /** Fired when the user sends their turn, and cancelable. */
2450
2537
  "helix-send": HelixChatComposerHelixSendElementEvent;
2538
+ /** The user changed the text. Read it from `value`, for a typing indicator or a saved draft. Sent on the composer and does not bubble. */
2539
+ input: HelixChatComposerElementEvent;
2451
2540
  };
2452
2541
 
2453
2542
  /** `HelixChatMessage` component event */
@@ -2532,6 +2621,9 @@ export type HelixChatHelixBeforePinElementEvent =
2532
2621
  /** `helix-history` event type */
2533
2622
  export type HelixChatHelixHistoryElementEvent =
2534
2623
  HelixChatElementEvent<HelixHistoryEvent>;
2624
+ /** `helix-pin` event type */
2625
+ export type HelixChatHelixPinElementEvent =
2626
+ HelixChatElementEvent<HelixPinEvent>;
2535
2627
  /** `helix-send` event type */
2536
2628
  export type HelixChatHelixSendElementEvent =
2537
2629
  HelixChatElementEvent<HelixSendEvent>;
@@ -2619,6 +2711,8 @@ export type HelixChatVueEvents = {
2619
2711
  "helix-before-pin": HelixChatHelixBeforePinElementEvent;
2620
2712
  /** Fired when the user reaches the oldest turn while `history` is `more`. It reports the position and cannot be canceled. */
2621
2713
  "helix-history": HelixChatHelixHistoryElementEvent;
2714
+ /** Fired after the transcript is pinned or unpinned, with `true` or `false` in `detail.value`. */
2715
+ "helix-pin": HelixChatHelixPinElementEvent;
2622
2716
  /** Fired when the user sends a turn from the composer or retries a failed one. It is fired inside and handled here, so you can listen for it on the conversation. Cancelable: canceling it sends nothing and leaves the decision to you. */
2623
2717
  "helix-send": HelixChatHelixSendElementEvent;
2624
2718
  };
@@ -2637,9 +2731,7 @@ export type HelixCheckboxGroupVueProps = {
2637
2731
  column. */
2638
2732
  orientation?: (HelixCheckboxGroup["orientation"]) | undefined;
2639
2733
  /** */
2640
- "aria-label"?: (HelixCheckboxGroup["namedBy"]) | undefined;
2641
- /** */
2642
- namedBy?: (HelixCheckboxGroup["namedBy"]) | undefined;
2734
+ "aria-label"?: unknown;
2643
2735
  /** The validation message shown under the control. It replaces the
2644
2736
  browser's message. */
2645
2737
  feedback?: (HelixCheckboxGroup["feedback"]) | undefined;
@@ -2668,7 +2760,10 @@ and this one was the English a form in another language still spoke in
2668
2760
  the bubble it raises on submit: `feedback` replaces the message under
2669
2761
  the field and does not reach that one. */
2670
2762
  valueMissingMessage?: (HelixCheckboxGroup["valueMissingMessage"]) | undefined;
2671
- /** The checked values, comma separated. */
2763
+ /** The checked values, comma separated.
2764
+
2765
+ Read from the boxes once they are known, so a box a script ticks directly
2766
+ is in it at once. Written, it is pushed onto the boxes. */
2672
2767
  value?: (HelixCheckboxGroup["value"]) | undefined;
2673
2768
  /** Whether the control is disabled and cannot be used.
2674
2769
 
@@ -2754,9 +2849,7 @@ stylesheets. */
2754
2849
  /** Whether the control starts checked. A form reset returns it to this state. */
2755
2850
  defaultChecked?: (HelixCheckbox["defaultChecked"]) | undefined;
2756
2851
  /** */
2757
- "aria-label"?: (HelixCheckbox["namedBy"]) | undefined;
2758
- /** */
2759
- namedBy?: (HelixCheckbox["namedBy"]) | undefined;
2852
+ "aria-label"?: unknown;
2760
2853
  /** The validation message shown under the control. It replaces the
2761
2854
  browser's message. */
2762
2855
  feedback?: (HelixCheckbox["feedback"]) | undefined;
@@ -2787,7 +2880,11 @@ the field and does not reach that one. */
2787
2880
  valueMissingMessage?: (HelixCheckbox["valueMissingMessage"]) | undefined;
2788
2881
  /** Shows the box as neither checked nor unchecked.
2789
2882
 
2790
- Presentation only. It never submits, and the first change resolves it. */
2883
+ Presentation only. It never submits, and the first change resolves it.
2884
+
2885
+ Not reflected, as no state is: the element resolves it itself, and a
2886
+ reflected one removed the attribute the consumer wrote. A stylesheet
2887
+ reads it as `:state(indeterminate)`. */
2791
2888
  indeterminate?: (HelixCheckbox["indeterminate"]) | undefined;
2792
2889
  /** The value submitted when the box is checked. */
2793
2890
  value?: (HelixCheckbox["value"]) | undefined;
@@ -2829,6 +2926,14 @@ export type HelixCheckboxVueEvents = {
2829
2926
  };
2830
2927
 
2831
2928
  export type HelixCodeBlockVueProps = {
2929
+ /** The copy button's name and tooltip text after a copy. */
2930
+ "copied-label"?: (HelixCodeBlock["copiedLabel"]) | undefined;
2931
+ /** The copy button's name and tooltip text after a copy. */
2932
+ copiedLabel?: (HelixCodeBlock["copiedLabel"]) | undefined;
2933
+ /** The copy button's name and tooltip text before a copy. */
2934
+ "copy-label"?: (HelixCodeBlock["copyLabel"]) | undefined;
2935
+ /** The copy button's name and tooltip text before a copy. */
2936
+ copyLabel?: (HelixCodeBlock["copyLabel"]) | undefined;
2832
2937
  /** Whether the content is a unified diff, drawn as the lines it changed.
2833
2938
 
2834
2939
  Reflected, because the stylesheet paints a diff differently from code, and
@@ -2898,6 +3003,9 @@ export type HelixColorInputElementEvent<E = Event> = TypedEvent<
2898
3003
  HelixColorInput,
2899
3004
  E
2900
3005
  >;
3006
+ /** `toggle` event type */
3007
+ export type HelixColorInputToggleElementEvent =
3008
+ HelixColorInputElementEvent<ToggleEvent>;
2901
3009
  /** `helix-before-change` event type */
2902
3010
  export type HelixColorInputHelixBeforeChangeElementEvent =
2903
3011
  HelixColorInputElementEvent<HelixBeforeChangeEvent>;
@@ -2954,9 +3062,7 @@ same statement in markup, and `default-value` is how markup seeds a value
2954
3062
  a reset should return to. */
2955
3063
  value?: (HelixColorInput["value"]) | undefined;
2956
3064
  /** */
2957
- "aria-label"?: (HelixColorInput["namedBy"]) | undefined;
2958
- /** */
2959
- namedBy?: (HelixColorInput["namedBy"]) | undefined;
3065
+ "aria-label"?: unknown;
2960
3066
  /** The validation message shown under the control. It replaces the
2961
3067
  browser's message. */
2962
3068
  feedback?: (HelixColorInput["feedback"]) | undefined;
@@ -3010,6 +3116,16 @@ value spelled out. */
3010
3116
  noFormat?: (HelixColorInput["noFormat"]) | undefined;
3011
3117
  /** The text the field shows before a color is entered. */
3012
3118
  placeholder?: (HelixColorInput["placeholder"]) | undefined;
3119
+ /** Whether the color is locked. A read-only field still submits its value.
3120
+
3121
+ The field can be read and copied from, and the panel does not open, as on
3122
+ Date Input and Time Input. */
3123
+ readonly?: (HelixColorInput["readOnly"]) | undefined;
3124
+ /** Whether the color is locked. A read-only field still submits its value.
3125
+
3126
+ The field can be read and copied from, and the panel does not open, as on
3127
+ Date Input and Time Input. */
3128
+ readOnly?: (HelixColorInput["readOnly"]) | undefined;
3013
3129
  /** Colors offered under the picker, as a comma-separated list. */
3014
3130
  swatches?: (HelixColorInput["swatches"]) | undefined;
3015
3131
  /** Accessible name for the control that opens the panel. */
@@ -3061,6 +3177,8 @@ Here rather than on each control. */
3061
3177
  };
3062
3178
 
3063
3179
  export type HelixColorInputVueEvents = {
3180
+ /** The panel opened or closed. The event carries `newState` and `oldState`. */
3181
+ toggle: HelixColorInputToggleElementEvent;
3064
3182
  /** Sent when the user finishes changing the value. */
3065
3183
  change: HelixColorInputElementEvent;
3066
3184
  /** The color is about to change. Cancelable: cancel it to keep the current color. */
@@ -3071,8 +3189,6 @@ export type HelixColorInputVueEvents = {
3071
3189
  "helix-before-open": HelixColorInputHelixBeforeOpenElementEvent;
3072
3190
  /** Fired as the value changes. */
3073
3191
  input: HelixColorInputElementEvent;
3074
- /** The panel opened or closed. The event carries `newState` and `oldState`. */
3075
- toggle: HelixColorInputElementEvent;
3076
3192
  };
3077
3193
 
3078
3194
  /** `HelixColorPicker` component event */
@@ -3117,6 +3233,10 @@ point.** The field holds a color, so a browser offering to fill it with a
3117
3233
  saved address is competing for the same keystrokes as the square and the
3118
3234
  ramps. A consumer who wants autofill can still ask. */
3119
3235
  autocomplete?: (HelixColorPicker["autocomplete"]) | undefined;
3236
+ /** The message shown when the value is text that is not a color. */
3237
+ "bad-input-message"?: (HelixColorPicker["badInputMessage"]) | undefined;
3238
+ /** The message shown when the value is text that is not a color. */
3239
+ badInputMessage?: (HelixColorPicker["badInputMessage"]) | undefined;
3120
3240
  /** What the square's vertical ramp is called.
3121
3241
 
3122
3242
  **Every word the picker speaks is a property**, so a page in another
@@ -3273,13 +3393,11 @@ a panel composed *into* a field that already has all three, so taking it
3273
3393
  would give one control two of each. What is left is the validity call and
3274
3394
  the anchor the browser points its bubble at.
3275
3395
 
3276
- **Emptiness is the only fault reported, and bad input deliberately is
3277
- not.** The value row is typed into a character at a time and every
3278
- keystroke reaches `requestValue`, so `#0`, `#00` and `#00f` would each be a
3279
- reported fault on the way to `#00ff00`. Date Picker and Time Picker can
3280
- report bad input because their value moves only on a commit. Color Input
3281
- reports it for this family instead, once, against the field the reader
3282
- typed into. */
3396
+ **Text that is not a color is bad input**, so a form does not submit
3397
+ `#00` from a half-typed value. The picker draws no message of its own, so
3398
+ reporting it as each keystroke arrives shows nothing until the form asks;
3399
+ Color Input shows its own message against the field the reader typed
3400
+ into. */
3283
3401
  required?: (HelixColorPicker["required"]) | undefined;
3284
3402
  /** What the square's horizontal ramp is called. */
3285
3403
  "saturation-label"?: (HelixColorPicker["saturationLabel"]) | undefined;
@@ -3352,6 +3470,9 @@ export type HelixColorPickerVueEvents = {
3352
3470
 
3353
3471
  /** `HelixCombobox` component event */
3354
3472
  export type HelixComboboxElementEvent<E = Event> = TypedEvent<HelixCombobox, E>;
3473
+ /** `toggle` event type */
3474
+ export type HelixComboboxToggleElementEvent =
3475
+ HelixComboboxElementEvent<ToggleEvent>;
3355
3476
  /** `helix-before-change` event type */
3356
3477
  export type HelixComboboxHelixBeforeChangeElementEvent =
3357
3478
  HelixComboboxElementEvent<HelixBeforeChangeEvent>;
@@ -3414,9 +3535,7 @@ same statement in markup, and `default-value` is how markup seeds a value
3414
3535
  a reset should return to. */
3415
3536
  value?: (HelixCombobox["value"]) | undefined;
3416
3537
  /** */
3417
- "aria-label"?: (HelixCombobox["namedBy"]) | undefined;
3418
- /** */
3419
- namedBy?: (HelixCombobox["namedBy"]) | undefined;
3538
+ "aria-label"?: unknown;
3420
3539
  /** The validation message shown under the control. It replaces the
3421
3540
  browser's message. */
3422
3541
  feedback?: (HelixCombobox["feedback"]) | undefined;
@@ -3457,7 +3576,8 @@ keystrokes as the listbox. A consumer who wants autofill can still ask. */
3457
3576
  The row appears while what is typed matches no option's words exactly, so
3458
3577
  it is offered next to near misses too: a reader typing "Ruby on Rails" with
3459
3578
  "Ruby" in the list wants the one they are typing, not the one they are
3460
- halfway through. */
3579
+ halfway through. The arrow keys reach it after the last option, and Enter
3580
+ on it adds what was typed. */
3461
3581
  creatable?: (HelixCombobox["creatable"]) | undefined;
3462
3582
  /** The text of the create row, shown before the typed words it adds. */
3463
3583
  "create-label"?: (HelixCombobox["createLabel"]) | undefined;
@@ -3500,6 +3620,16 @@ element is responsible for. */
3500
3620
  multiple?: (HelixCombobox["multiple"]) | undefined;
3501
3621
  /** Text shown while nothing has been chosen. */
3502
3622
  placeholder?: (HelixCombobox["placeholder"]) | undefined;
3623
+ /** Whether the choice is locked. A read-only combobox still submits its value.
3624
+
3625
+ The field can be read and focused, the list does not open, and the tags of
3626
+ a `multiple` combobox cannot be dismissed. */
3627
+ readonly?: (HelixCombobox["readOnly"]) | undefined;
3628
+ /** Whether the choice is locked. A read-only combobox still submits its value.
3629
+
3630
+ The field can be read and focused, the list does not open, and the tags of
3631
+ a `multiple` combobox cannot be dismissed. */
3632
+ readOnly?: (HelixCombobox["readOnly"]) | undefined;
3503
3633
  /** The name of the control that removes one chosen option, with `{name}`
3504
3634
  filled in.
3505
3635
 
@@ -3555,6 +3685,8 @@ differently: they are one chooser to a consumer. */
3555
3685
  };
3556
3686
 
3557
3687
  export type HelixComboboxVueEvents = {
3688
+ /** Fired when the panel opens or closes, with `newState` and `oldState`. */
3689
+ toggle: HelixComboboxToggleElementEvent;
3558
3690
  /** Fired after the value changes. */
3559
3691
  change: HelixComboboxElementEvent;
3560
3692
  /** Fired before the chosen option changes. Cancelable: cancel it to keep the current option. */
@@ -3569,18 +3701,22 @@ export type HelixComboboxVueEvents = {
3569
3701
  "helix-filter": HelixComboboxHelixFilterElementEvent;
3570
3702
  /** Fired after the value changes. */
3571
3703
  input: HelixComboboxElementEvent;
3572
- /** Fired when the panel opens or closes, with `newState` and `oldState`. */
3573
- toggle: HelixComboboxElementEvent;
3574
3704
  };
3575
3705
 
3576
3706
  /** `HelixCommand` component event */
3577
3707
  export type HelixCommandElementEvent<E = Event> = TypedEvent<HelixCommand, E>;
3708
+ /** `toggle` event type */
3709
+ export type HelixCommandToggleElementEvent =
3710
+ HelixCommandElementEvent<ToggleEvent>;
3578
3711
  /** `helix-before-close` event type */
3579
3712
  export type HelixCommandHelixBeforeCloseElementEvent =
3580
3713
  HelixCommandElementEvent<HelixBeforeCloseEvent>;
3581
3714
  /** `helix-before-open` event type */
3582
3715
  export type HelixCommandHelixBeforeOpenElementEvent =
3583
3716
  HelixCommandElementEvent<HelixBeforeOpenEvent>;
3717
+ /** `helix-filter` event type */
3718
+ export type HelixCommandHelixFilterElementEvent =
3719
+ HelixCommandElementEvent<HelixFilterEvent>;
3584
3720
  /** `helix-select` event type */
3585
3721
  export type HelixCommandHelixSelectElementEvent =
3586
3722
  HelixCommandElementEvent<HelixSelectEvent>;
@@ -3615,19 +3751,30 @@ with: one key, said once. */
3615
3751
  hotkey?: (HelixCommand["hotkey"]) | undefined;
3616
3752
  /** Accessible name for the overlay, which has no visible heading. */
3617
3753
  label?: (HelixCommand["label"]) | undefined;
3754
+ /** Whether the commands are still loading, for a palette that asks a server
3755
+ for them as the user types.
3756
+
3757
+ Passed to the list, which shows `loading-text` and tells screen readers. */
3758
+ loading?: (HelixCommand["loading"]) | undefined;
3759
+ /** The text shown while the commands load. */
3760
+ "loading-text"?: (HelixCommand["loadingText"]) | undefined;
3761
+ /** The text shown while the commands load. */
3762
+ loadingText?: (HelixCommand["loadingText"]) | undefined;
3618
3763
  /** The text shown in the filter field before anything is typed. */
3619
3764
  placeholder?: (HelixCommand["placeholder"]) | undefined;
3620
3765
  };
3621
3766
 
3622
3767
  export type HelixCommandVueEvents = {
3768
+ /** The palette opened or closed. The event carries `newState` and `oldState`. */
3769
+ toggle: HelixCommandToggleElementEvent;
3623
3770
  /** The palette is about to close. Cancelable: cancel it to keep it open. */
3624
3771
  "helix-before-close": HelixCommandHelixBeforeCloseElementEvent;
3625
3772
  /** The palette is about to open. Cancelable: cancel it to keep it closed. */
3626
3773
  "helix-before-open": HelixCommandHelixBeforeOpenElementEvent;
3774
+ /** 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. */
3775
+ "helix-filter": HelixCommandHelixFilterElementEvent;
3627
3776
  /** A command was chosen. Cancelable: cancel it to keep the palette open. */
3628
3777
  "helix-select": HelixCommandHelixSelectElementEvent;
3629
- /** The palette opened or closed. The event carries `newState` and `oldState`. */
3630
- toggle: HelixCommandElementEvent;
3631
3778
  };
3632
3779
 
3633
3780
  /** `HelixCopyButton` component event */
@@ -3681,13 +3828,11 @@ world is called Copy. A consumer with a better word still sets it. */
3681
3828
  label?: (HelixCopyButton["label"]) | undefined;
3682
3829
  /** The text copied to the clipboard.
3683
3830
 
3684
- **Narrows `Button.value`, which is the submit value, and the two agree.**
3685
- A copy button is `type="button"` and never submits, so the inherited
3686
- meaning has nothing to act on; where a consumer changes the type, what it
3687
- submits is what it copies, which is the reading anybody would expect of one
3688
- property called `value`. Declared here rather than inherited because the
3689
- clipboard is what this component is about and its own page should say so. */
3831
+ It replaces `Button.value`, the submit value: a copy button never submits,
3832
+ whatever its `type`. Declared here so its own page says what it holds. */
3690
3833
  value?: (HelixCopyButton["value"]) | undefined;
3834
+ /** */
3835
+ "aria-label"?: unknown;
3691
3836
  /** What to send when the button is activated, and what to send it to.
3692
3837
 
3693
3838
  The platform's invoker attributes, forwarded onto the inner `<button>`
@@ -3846,21 +3991,36 @@ export type HelixDataTableElementEvent<E = Event> = TypedEvent<
3846
3991
  HelixDataTable,
3847
3992
  E
3848
3993
  >;
3994
+ /** `helix-activate` event type */
3995
+ export type HelixDataTableHelixActivateElementEvent =
3996
+ HelixDataTableElementEvent<HelixActivateEvent>;
3849
3997
  /** `helix-filter` event type */
3850
3998
  export type HelixDataTableHelixFilterElementEvent =
3851
3999
  HelixDataTableElementEvent<HelixFilterEvent>;
4000
+ /** `helix-filtered` event type */
4001
+ export type HelixDataTableHelixFilteredElementEvent =
4002
+ HelixDataTableElementEvent<HelixFilteredEvent>;
3852
4003
  /** `helix-navigate` event type */
3853
4004
  export type HelixDataTableHelixNavigateElementEvent =
3854
4005
  HelixDataTableElementEvent<HelixNavigateEvent>;
3855
4006
  /** `helix-reorder` event type */
3856
4007
  export type HelixDataTableHelixReorderElementEvent =
3857
4008
  HelixDataTableElementEvent<HelixReorderEvent>;
4009
+ /** `helix-reordered` event type */
4010
+ export type HelixDataTableHelixReorderedElementEvent =
4011
+ HelixDataTableElementEvent<HelixReorderedEvent>;
3858
4012
  /** `helix-select` event type */
3859
4013
  export type HelixDataTableHelixSelectElementEvent =
3860
4014
  HelixDataTableElementEvent<HelixSelectEvent>;
4015
+ /** `helix-selected` event type */
4016
+ export type HelixDataTableHelixSelectedElementEvent =
4017
+ HelixDataTableElementEvent<HelixSelectedEvent>;
3861
4018
  /** `helix-sort` event type */
3862
4019
  export type HelixDataTableHelixSortElementEvent =
3863
4020
  HelixDataTableElementEvent<HelixSortEvent>;
4021
+ /** `helix-sorted` event type */
4022
+ export type HelixDataTableHelixSortedElementEvent =
4023
+ HelixDataTableElementEvent<HelixSortedEvent>;
3864
4024
 
3865
4025
  export type HelixDataTableVueProps = {
3866
4026
  /** The text shown and announced when there are no rows and none are loading. */
@@ -3925,6 +4085,12 @@ One query rather than a predicate per column, which is what a reader means
3925
4085
  by a search box above a table. It matches on each column's ordering value,
3926
4086
  so search and sort cannot disagree about what a column holds. */
3927
4087
  filter?: (HelixDataTable["filter"]) | undefined;
4088
+ /** The built-in pagination's name for a gap in its run of pages. `{page}` is
4089
+ replaced with the page it jumps to. */
4090
+ "gap-label"?: (HelixDataTable["gapLabel"]) | undefined;
4091
+ /** The built-in pagination's name for a gap in its run of pages. `{page}` is
4092
+ replaced with the page it jumps to. */
4093
+ gapLabel?: (HelixDataTable["gapLabel"]) | undefined;
3928
4094
  /** The grid's name, read by screen readers. */
3929
4095
  label?: (HelixDataTable["label"]) | undefined;
3930
4096
  /** Where filtering, sorting, and paging happen. `client` does them in the
@@ -3937,6 +4103,10 @@ the client cannot hold the data, so this is not an optimization, it is the
3937
4103
  only mode that works, and it is here from the start because adding it later
3938
4104
  inverts the data flow. */
3939
4105
  mode?: (HelixDataTable["mode"]) | undefined;
4106
+ /** The built-in pagination's name for the button that moves forward a page. */
4107
+ "next-label"?: (HelixDataTable["nextLabel"]) | undefined;
4108
+ /** The built-in pagination's name for the button that moves forward a page. */
4109
+ nextLabel?: (HelixDataTable["nextLabel"]) | undefined;
3940
4110
  /** The column order, as field names separated by spaces.
3941
4111
 
3942
4112
  A reader's move fires `helix-reorder` first, and refusing it leaves the
@@ -3951,6 +4121,12 @@ Clamped on the way out, so what this reports is the page it drew: a
3951
4121
  bookmarked link to page 99 of a result that has since shrunk reads back as
3952
4122
  the last page rather than as 99. */
3953
4123
  page?: (HelixDataTable["page"]) | undefined;
4124
+ /** The built-in pagination's name for one page. `{page}` and `{pages}` are
4125
+ replaced with the page number and the page count. */
4126
+ "page-label"?: (HelixDataTable["pageLabel"]) | undefined;
4127
+ /** The built-in pagination's name for one page. `{page}` and `{pages}` are
4128
+ replaced with the page number and the page count. */
4129
+ pageLabel?: (HelixDataTable["pageLabel"]) | undefined;
3954
4130
  /** The number of rows on a page. `0` shows every row, with no paging.
3955
4131
 
3956
4132
  **It announces nothing, and that is not an omission.** Nothing in this
@@ -3974,11 +4150,29 @@ change pages shows a reader the first twenty rows and no way to know there
3974
4150
  are more. Off for a consumer supplying their own through the `footer` slot,
3975
4151
  which is why the slot replaces this rather than sitting beside it. */
3976
4152
  paginated?: (HelixDataTable["paginated"]) | undefined;
4153
+ /** The name of the built-in pagination's navigation landmark. */
4154
+ "pagination-label"?: (HelixDataTable["paginationLabel"]) | undefined;
4155
+ /** The name of the built-in pagination's navigation landmark. */
4156
+ paginationLabel?: (HelixDataTable["paginationLabel"]) | undefined;
4157
+ /** The built-in pagination's name for the button that moves back a page. */
4158
+ "previous-label"?: (HelixDataTable["previousLabel"]) | undefined;
4159
+ /** The built-in pagination's name for the button that moves back a page. */
4160
+ previousLabel?: (HelixDataTable["previousLabel"]) | undefined;
3977
4161
  /** Lets users reorder the columns.
3978
4162
 
3979
4163
  Each heading with a `field` gets a grip, dragged along the header or moved a
3980
4164
  place at a time with the arrow keys once it has focus. */
3981
4165
  reorderable?: (HelixDataTable["reorderable"]) | undefined;
4166
+ /** What screen readers hear when a search leaves one row. `{count}` is the count. */
4167
+ "result-label"?: (HelixDataTable["resultLabel"]) | undefined;
4168
+ /** What screen readers hear when a search leaves one row. `{count}` is the count. */
4169
+ resultLabel?: (HelixDataTable["resultLabel"]) | undefined;
4170
+ /** What screen readers hear when a search leaves any other number of rows.
4171
+ `{count}` is the count. */
4172
+ "results-label"?: (HelixDataTable["resultsLabel"]) | undefined;
4173
+ /** What screen readers hear when a search leaves any other number of rows.
4174
+ `{count}` is the count. */
4175
+ resultsLabel?: (HelixDataTable["resultsLabel"]) | undefined;
3982
4176
  /** The field that identifies each row.
3983
4177
 
3984
4178
  **Needed before selection exists, not after.** Lit keys the rendered rows by
@@ -4010,6 +4204,10 @@ the element, so a React page could not tell the table which field a row is. */
4010
4204
  Wants `row-key`: a selection is a set of identities, and without one the rows
4011
4205
  are known by their place in the result, which a sort changes. */
4012
4206
  selectable?: (HelixDataTable["selectable"]) | undefined;
4207
+ /** The name of the checkbox in the heading that selects every row. */
4208
+ "select-all-label"?: (HelixDataTable["selectAllLabel"]) | undefined;
4209
+ /** The name of the checkbox in the heading that selects every row. */
4210
+ selectAllLabel?: (HelixDataTable["selectAllLabel"]) | undefined;
4013
4211
  /** The keys of the selected rows, separated by commas.
4014
4212
 
4015
4213
  A string rather than an array, so it is an attribute a server writes and a
@@ -4024,11 +4222,18 @@ rows are chosen. */
4024
4222
  /** What screen readers hear when the chosen rows change. `{count}` is how many
4025
4223
  rows are chosen. */
4026
4224
  selectedLabel?: (HelixDataTable["selectedLabel"]) | undefined;
4225
+ /** The name of a row's checkbox. `{row}` is replaced with the row's value in
4226
+ the first column that has a field, or with its key. */
4227
+ "select-row-label"?: (HelixDataTable["selectRowLabel"]) | undefined;
4228
+ /** The name of a row's checkbox. `{row}` is replaced with the row's value in
4229
+ the first column that has a field, or with its key. */
4230
+ selectRowLabel?: (HelixDataTable["selectRowLabel"]) | undefined;
4027
4231
  /** The sort order, as `field:direction`.
4028
4232
 
4029
- Set it and this element defers: a reader's click fires `helix-sort` and
4030
- changes nothing until a new value arrives. `default-sort` seeds an order this
4031
- element then owns. */
4233
+ A reader's click on a sortable heading fires `helix-sort` first, and
4234
+ refusing it leaves the order as it was. To own the order yourself, refuse
4235
+ the event and set this to the order you chose. `default-sort` seeds an
4236
+ order this element then owns. */
4032
4237
  sort?: (HelixDataTable["sort"]) | undefined;
4033
4238
  /** What screen readers hear when the table is sorted. `{column}` is the
4034
4239
  column's heading and `{order}` is `ascending-label` or `descending-label`. */
@@ -4079,16 +4284,26 @@ holds and reordering it under them is a mutation they did not ask for. */
4079
4284
  };
4080
4285
 
4081
4286
  export type HelixDataTableVueEvents = {
4287
+ /** Fired after the page changes, with the new page as a string in `detail.value`. */
4288
+ "helix-activate": HelixDataTableHelixActivateElementEvent;
4082
4289
  /** The search query is about to change. Cancelable: cancel it to keep the current query. */
4083
4290
  "helix-filter": HelixDataTableHelixFilterElementEvent;
4291
+ /** Fired after the search query changes, with the new query. */
4292
+ "helix-filtered": HelixDataTableHelixFilteredElementEvent;
4084
4293
  /** Another page was requested. Cancelable: cancel it to stay on the current page. */
4085
4294
  "helix-navigate": HelixDataTableHelixNavigateElementEvent;
4086
- /** The columns were moved. The event carries every field in the new order. Cancelable: cancel it to keep the current order. */
4295
+ /** The columns are about to move. The event carries every field in the new order. Cancelable: cancel it to keep the current order. */
4087
4296
  "helix-reorder": HelixDataTableHelixReorderElementEvent;
4088
- /** The selection changed. The event carries every selected key, separated by commas. Cancelable: cancel it to keep the current selection. */
4297
+ /** Fired after the columns move, with every field in the new order. */
4298
+ "helix-reordered": HelixDataTableHelixReorderedElementEvent;
4299
+ /** The selection is about to change. The event carries every selected key, separated by commas. Cancelable: cancel it to keep the current selection. */
4089
4300
  "helix-select": HelixDataTableHelixSelectElementEvent;
4301
+ /** Fired after the selection changes, with every selected key, separated by commas. */
4302
+ "helix-selected": HelixDataTableHelixSelectedElementEvent;
4090
4303
  /** A different sort order was requested. Cancelable: cancel it to keep the current order. */
4091
4304
  "helix-sort": HelixDataTableHelixSortElementEvent;
4305
+ /** Fired after the sort order changes, with the new order. */
4306
+ "helix-sorted": HelixDataTableHelixSortedElementEvent;
4092
4307
  };
4093
4308
 
4094
4309
  /** `HelixDateInput` component event */
@@ -4096,6 +4311,9 @@ export type HelixDateInputElementEvent<E = Event> = TypedEvent<
4096
4311
  HelixDateInput,
4097
4312
  E
4098
4313
  >;
4314
+ /** `toggle` event type */
4315
+ export type HelixDateInputToggleElementEvent =
4316
+ HelixDateInputElementEvent<ToggleEvent>;
4099
4317
  /** `helix-before-change` event type */
4100
4318
  export type HelixDateInputHelixBeforeChangeElementEvent =
4101
4319
  HelixDateInputElementEvent<HelixBeforeChangeEvent>;
@@ -4192,9 +4410,7 @@ same statement in markup, and `default-value` is how markup seeds a value
4192
4410
  a reset should return to. */
4193
4411
  value?: (HelixDateInput["value"]) | undefined;
4194
4412
  /** */
4195
- "aria-label"?: (HelixDateInput["namedBy"]) | undefined;
4196
- /** */
4197
- namedBy?: (HelixDateInput["namedBy"]) | undefined;
4413
+ "aria-label"?: unknown;
4198
4414
  /** The validation message shown under the control. It replaces the
4199
4415
  browser's message. */
4200
4416
  feedback?: (HelixDateInput["feedback"]) | undefined;
@@ -4229,6 +4445,10 @@ Empty leaves the attribute off, which is the browser's default and is what
4229
4445
  lets autofill work at all: hardcoding `off` here means a birthday or a
4230
4446
  postal code can never be filled in for a reader. */
4231
4447
  autocomplete?: (HelixDateInput["autocomplete"]) | undefined;
4448
+ /** The name of the calendar's grid of days, read by screen readers. */
4449
+ "calendar-label"?: (HelixDateInput["calendarLabel"]) | undefined;
4450
+ /** The name of the calendar's grid of days, read by screen readers. */
4451
+ calendarLabel?: (HelixDateInput["calendarLabel"]) | undefined;
4232
4452
  /** How a date is written in the field: `short` through `full`, or ISO.
4233
4453
 
4234
4454
  **The field renders when it is idle and holds the value when it is being
@@ -4275,21 +4495,29 @@ rather than reading it, or where the ISO form is itself the point.
4275
4495
  The value is always `YYYY-MM-DD` regardless, because that is what a form
4276
4496
  submits and what `min` and `max` compare against. */
4277
4497
  dateStyle?: (HelixDateInput["dateStyle"]) | undefined;
4278
- /** Dates that cannot be chosen, as a comma-separated `YYYY-MM-DD` list. */
4498
+ /** Dates that cannot be chosen, as `YYYY-MM-DD`, separated by commas or
4499
+ spaces. */
4279
4500
  "disable-dates"?: (HelixDateInput["disableDates"]) | undefined;
4280
- /** Dates that cannot be chosen, as a comma-separated `YYYY-MM-DD` list. */
4501
+ /** Dates that cannot be chosen, as `YYYY-MM-DD`, separated by commas or
4502
+ spaces. */
4281
4503
  disableDates?: (HelixDateInput["disableDates"]) | undefined;
4282
4504
  /** Days of the week that cannot be chosen, from `0` for Sunday to `6` for
4283
- Saturday. */
4505
+ Saturday, separated by commas or spaces. */
4284
4506
  "disable-days"?: (HelixDateInput["disableDays"]) | undefined;
4285
4507
  /** Days of the week that cannot be chosen, from `0` for Sunday to `6` for
4286
- Saturday. */
4508
+ Saturday, separated by commas or spaces. */
4287
4509
  disableDays?: (HelixDateInput["disableDays"]) | undefined;
4288
4510
  /** The day in the calendar's first column, from `0` for Sunday to `6` for
4289
- Saturday. */
4511
+ Saturday.
4512
+
4513
+ Absent follows `locale`, where the engine knows the week of that language,
4514
+ and is Sunday otherwise. */
4290
4515
  "first-day-of-week"?: (HelixDateInput["firstDayOfWeek"] | `${number}`) | undefined;
4291
4516
  /** The day in the calendar's first column, from `0` for Sunday to `6` for
4292
- Saturday. */
4517
+ Saturday.
4518
+
4519
+ Absent follows `locale`, where the engine knows the week of that language,
4520
+ and is Sunday otherwise. */
4293
4521
  firstDayOfWeek?: (HelixDateInput["firstDayOfWeek"]) | undefined;
4294
4522
  /** The language tag for the names of months and days in the calendar. */
4295
4523
  locale?: (HelixDateInput["locale"]) | undefined;
@@ -4310,8 +4538,16 @@ an end in April otherwise means paging between them and losing sight of the
4310
4538
  first. The panel is sized by its content, so this widens it, and where the
4311
4539
  window has no room for that width it shows one month until there is. */
4312
4540
  months?: (HelixDateInput["months"]) | undefined;
4541
+ /** The name of the calendar's control that moves to the next month. */
4542
+ "next-label"?: (HelixDateInput["nextLabel"]) | undefined;
4543
+ /** The name of the calendar's control that moves to the next month. */
4544
+ nextLabel?: (HelixDateInput["nextLabel"]) | undefined;
4313
4545
  /** The text the field shows before a date is entered. */
4314
4546
  placeholder?: (HelixDateInput["placeholder"]) | undefined;
4547
+ /** The name of the calendar's control that moves to the previous month. */
4548
+ "previous-label"?: (HelixDateInput["previousLabel"]) | undefined;
4549
+ /** The name of the calendar's control that moves to the previous month. */
4550
+ previousLabel?: (HelixDateInput["previousLabel"]) | undefined;
4315
4551
  /** The message shown when a range holds more than two dates.
4316
4552
 
4317
4553
  **Every sentence a control raises in the browser's bubble is a property**,
@@ -4355,10 +4591,18 @@ so the field and the grid agree about which dates exist. Counted from `min`
4355
4591
  where there is one and from 1 January 1970 where there is not, which is the
4356
4592
  platform's base. */
4357
4593
  step?: (HelixDateInput["step"]) | undefined;
4594
+ /** The message shown when a date is not on `step`. */
4595
+ "step-mismatch-message"?: (HelixDateInput["stepMismatchMessage"]) | undefined;
4596
+ /** The message shown when a date is not on `step`. */
4597
+ stepMismatchMessage?: (HelixDateInput["stepMismatchMessage"]) | undefined;
4358
4598
  /** The name of the button that opens the calendar, read by screen readers. */
4359
4599
  "trigger-label"?: (HelixDateInput["triggerLabel"]) | undefined;
4360
4600
  /** The name of the button that opens the calendar, read by screen readers. */
4361
4601
  triggerLabel?: (HelixDateInput["triggerLabel"]) | undefined;
4602
+ /** The message shown when `disable-dates` or `disable-days` bars a date. */
4603
+ "unavailable-message"?: (HelixDateInput["unavailableMessage"]) | undefined;
4604
+ /** The message shown when `disable-dates` or `disable-days` bars a date. */
4605
+ unavailableMessage?: (HelixDateInput["unavailableMessage"]) | undefined;
4362
4606
  /** Whether the control is disabled and cannot be used.
4363
4607
 
4364
4608
  Reflected, because the styled tier selects on it, and mirrored to
@@ -4402,6 +4646,8 @@ reader makes in one of these. */
4402
4646
  };
4403
4647
 
4404
4648
  export type HelixDateInputVueEvents = {
4649
+ /** Fired when the calendar opens or closes, with `newState` and `oldState`. */
4650
+ toggle: HelixDateInputToggleElementEvent;
4405
4651
  /** Fired after the value changes. */
4406
4652
  change: HelixDateInputElementEvent;
4407
4653
  /** Fired before the date changes. Cancelable: call `preventDefault()` to keep the current date. */
@@ -4412,8 +4658,6 @@ export type HelixDateInputVueEvents = {
4412
4658
  "helix-before-open": HelixDateInputHelixBeforeOpenElementEvent;
4413
4659
  /** Fired after the value changes. */
4414
4660
  input: HelixDateInputElementEvent;
4415
- /** Fired when the calendar opens or closes, with `newState` and `oldState`. */
4416
- toggle: HelixDateInputElementEvent;
4417
4661
  };
4418
4662
 
4419
4663
  /** `HelixDatePicker` component event */
@@ -4456,17 +4700,27 @@ speaks it. Absent is the control's own sentence, in English. */
4456
4700
  "default-month"?: (HelixDatePicker["defaultMonth"]) | undefined;
4457
4701
  /** The month to open on when `month` is not set. */
4458
4702
  defaultMonth?: (HelixDatePicker["defaultMonth"]) | undefined;
4459
- /** Dates that cannot be chosen, comma separated, as `YYYY-MM-DD`. */
4703
+ /** Dates that cannot be chosen, as `YYYY-MM-DD`, separated by commas or
4704
+ spaces. */
4460
4705
  "disable-dates"?: (HelixDatePicker["disableDates"]) | undefined;
4461
- /** Dates that cannot be chosen, comma separated, as `YYYY-MM-DD`. */
4706
+ /** Dates that cannot be chosen, as `YYYY-MM-DD`, separated by commas or
4707
+ spaces. */
4462
4708
  disableDates?: (HelixDatePicker["disableDates"]) | undefined;
4463
- /** Days of the week that cannot be chosen, comma separated, `0` to `6`. */
4709
+ /** Days of the week that cannot be chosen, `0` for Sunday to `6` for
4710
+ Saturday, separated by commas or spaces. */
4464
4711
  "disable-days"?: (HelixDatePicker["disableDays"]) | undefined;
4465
- /** Days of the week that cannot be chosen, comma separated, `0` to `6`. */
4712
+ /** Days of the week that cannot be chosen, `0` for Sunday to `6` for
4713
+ Saturday, separated by commas or spaces. */
4466
4714
  disableDays?: (HelixDatePicker["disableDays"]) | undefined;
4467
- /** First column of the week, `0` for Sunday through `6` for Saturday. */
4715
+ /** First column of the week, `0` for Sunday through `6` for Saturday.
4716
+
4717
+ Absent follows `locale`, where the engine knows the week of that language
4718
+ (Firefox does not), and is Sunday otherwise. */
4468
4719
  "first-day-of-week"?: (HelixDatePicker["firstDayOfWeek"] | `${number}`) | undefined;
4469
- /** First column of the week, `0` for Sunday through `6` for Saturday. */
4720
+ /** First column of the week, `0` for Sunday through `6` for Saturday.
4721
+
4722
+ Absent follows `locale`, where the engine knows the week of that language
4723
+ (Firefox does not), and is Sunday otherwise. */
4470
4724
  firstDayOfWeek?: (HelixDatePicker["firstDayOfWeek"]) | undefined;
4471
4725
  /** Whether the current selection fails validation. */
4472
4726
  invalid?: (HelixDatePicker["invalid"]) | undefined;
@@ -4509,6 +4763,18 @@ would otherwise still announce its controls in English. `attribute:`
4509
4763
  spelled out, since Lit lowercases a camelCase name rather than dash-casing
4510
4764
  it. */
4511
4765
  previousLabel?: (HelixDatePicker["previousLabel"]) | undefined;
4766
+ /** The validation message for a date after `max`. `{max}` is replaced with
4767
+ `max`, written as a date in `locale`. */
4768
+ "range-overflow-message"?: (HelixDatePicker["rangeOverflowMessage"]) | undefined;
4769
+ /** The validation message for a date after `max`. `{max}` is replaced with
4770
+ `max`, written as a date in `locale`. */
4771
+ rangeOverflowMessage?: (HelixDatePicker["rangeOverflowMessage"]) | undefined;
4772
+ /** The validation message for a date before `min`. `{min}` is replaced with
4773
+ `min`, written as a date in `locale`. */
4774
+ "range-underflow-message"?: (HelixDatePicker["rangeUnderflowMessage"]) | undefined;
4775
+ /** The validation message for a date before `min`. `{min}` is replaced with
4776
+ `min`, written as a date in `locale`. */
4777
+ rangeUnderflowMessage?: (HelixDatePicker["rangeUnderflowMessage"]) | undefined;
4512
4778
  /** Blocks changes to the dates. The value is still submitted with the form.
4513
4779
 
4514
4780
  **Enforced by refusing every request in one place**, which is the seam this
@@ -4547,6 +4813,16 @@ One is every date and needs no rule, which is why anything below one is
4547
4813
  treated as one rather than as an error: a step of zero would block every
4548
4814
  date including the one already chosen. */
4549
4815
  step?: (HelixDatePicker["step"]) | undefined;
4816
+ /** The validation message for a date that `step` skips. */
4817
+ "step-mismatch-message"?: (HelixDatePicker["stepMismatchMessage"]) | undefined;
4818
+ /** The validation message for a date that `step` skips. */
4819
+ stepMismatchMessage?: (HelixDatePicker["stepMismatchMessage"]) | undefined;
4820
+ /** The validation message for a date that `disable-dates` or `disable-days`
4821
+ bars. */
4822
+ "unavailable-message"?: (HelixDatePicker["unavailableMessage"]) | undefined;
4823
+ /** The validation message for a date that `disable-dates` or `disable-days`
4824
+ bars. */
4825
+ unavailableMessage?: (HelixDatePicker["unavailableMessage"]) | undefined;
4550
4826
  /** The validation message for a required date picker with no date chosen. */
4551
4827
  "value-missing-message"?: (HelixDatePicker["valueMissingMessage"]) | undefined;
4552
4828
  /** The validation message for a required date picker with no date chosen. */
@@ -4660,6 +4936,9 @@ export type HelixDescriptionListVueEvents = {};
4660
4936
 
4661
4937
  /** `HelixDialog` component event */
4662
4938
  export type HelixDialogElementEvent<E = Event> = TypedEvent<HelixDialog, E>;
4939
+ /** `toggle` event type */
4940
+ export type HelixDialogToggleElementEvent =
4941
+ HelixDialogElementEvent<ToggleEvent>;
4663
4942
  /** `helix-before-close` event type */
4664
4943
  export type HelixDialogHelixBeforeCloseElementEvent =
4665
4944
  HelixDialogElementEvent<HelixBeforeCloseEvent>;
@@ -4765,7 +5044,8 @@ the property this component exists to keep.
4765
5044
  Absent by default, which is the platform's `auto` and this library's rule
4766
5045
  that a resting value is an attribute's absence. */
4767
5046
  closedBy?: (HelixDialog["closedBy"]) | undefined;
4768
- /** Accessible name for the dialog. */
5047
+ /** Accessible name for the dialog. When it is empty, the heading in the
5048
+ `header` slot names the dialog. */
4769
5049
  label?: (HelixDialog["label"]) | undefined;
4770
5050
  /** Stops Escape and a press on the backdrop from closing the dialog.
4771
5051
 
@@ -4791,14 +5071,14 @@ survives to it and a consumer reading one back gets what they wrote. */
4791
5071
  };
4792
5072
 
4793
5073
  export type HelixDialogVueEvents = {
5074
+ /** Sent when the dialog opens or closes, with `newState` and `oldState`. */
5075
+ toggle: HelixDialogToggleElementEvent;
4794
5076
  /** Sent from the host after the dialog closes, because the native `close` event does not leave the shadow root. */
4795
5077
  close: HelixDialogElementEvent;
4796
5078
  /** Fired before it closes, and cancelable. */
4797
5079
  "helix-before-close": HelixDialogHelixBeforeCloseElementEvent;
4798
5080
  /** Fired before it opens, and cancelable. */
4799
5081
  "helix-before-open": HelixDialogHelixBeforeOpenElementEvent;
4800
- /** Sent when the dialog opens or closes, with `newState` and `oldState`. */
4801
- toggle: HelixDialogElementEvent;
4802
5082
  };
4803
5083
 
4804
5084
  export type HelixDividerVueProps = {
@@ -4877,6 +5157,12 @@ shadow root reads a table in that root rather than one in the document. A
4877
5157
  Absent falls back to the table's own caption, which is usually the right
4878
5158
  words and is already written. */
4879
5159
  label?: (HelixDonutChart["label"]) | undefined;
5160
+ /** The locale the chart's own numbers are written in: its axis, its
5161
+ percentages and its totals, such as `de` for `1.240` and `32 %`.
5162
+
5163
+ Absent uses the runtime's own. The table's cells are shown as the table
5164
+ writes them, whatever this says. */
5165
+ locale?: (HelixDonutChart["locale"]) | undefined;
4880
5166
  /** The size of the hole in the middle of the ring.
4881
5167
 
4882
5168
  Absent is a ring with room for a total in it. `small` and `large` move the
@@ -4931,6 +5217,9 @@ export type HelixDonutChartVueEvents = {};
4931
5217
 
4932
5218
  /** `HelixDrawer` component event */
4933
5219
  export type HelixDrawerElementEvent<E = Event> = TypedEvent<HelixDrawer, E>;
5220
+ /** `toggle` event type */
5221
+ export type HelixDrawerToggleElementEvent =
5222
+ HelixDrawerElementEvent<ToggleEvent>;
4934
5223
  /** `helix-before-close` event type */
4935
5224
  export type HelixDrawerHelixBeforeCloseElementEvent =
4936
5225
  HelixDrawerElementEvent<HelixBeforeCloseEvent>;
@@ -4994,7 +5283,8 @@ the property this component exists to keep.
4994
5283
  Absent by default, which is the platform's `auto` and this library's rule
4995
5284
  that a resting value is an attribute's absence. */
4996
5285
  closedBy?: (HelixDrawer["closedBy"]) | undefined;
4997
- /** Accessible name for the panel. */
5286
+ /** Accessible name for the panel. When it is empty, the heading in the
5287
+ `header` slot names the panel. */
4998
5288
  label?: (HelixDrawer["label"]) | undefined;
4999
5289
  /** Whether the drawer blocks the page behind it.
5000
5290
 
@@ -5033,14 +5323,14 @@ survives to it and a consumer reading one back gets what they wrote. */
5033
5323
  };
5034
5324
 
5035
5325
  export type HelixDrawerVueEvents = {
5326
+ /** Sent when the drawer opens or closes, with `newState` and `oldState`. */
5327
+ toggle: HelixDrawerToggleElementEvent;
5036
5328
  /** Sent from the host after the drawer closes, because the native `close` event does not leave the shadow root. */
5037
5329
  close: HelixDrawerElementEvent;
5038
5330
  /** Fired before the panel closes, and cancelable. */
5039
5331
  "helix-before-close": HelixDrawerHelixBeforeCloseElementEvent;
5040
5332
  /** Fired before the panel opens, and cancelable. Canceling it keeps the panel closed. */
5041
5333
  "helix-before-open": HelixDrawerHelixBeforeOpenElementEvent;
5042
- /** Sent when the drawer opens or closes, with `newState` and `oldState`. */
5043
- toggle: HelixDrawerElementEvent;
5044
5334
  };
5045
5335
 
5046
5336
  /** `HelixDrilldownItem` component event */
@@ -5108,7 +5398,11 @@ say that without the component knowing what a row looks like. */
5108
5398
  "loading-text"?: (HelixDrilldown["loadingText"]) | undefined;
5109
5399
  /** The text shown and announced while the rows load. */
5110
5400
  loadingText?: (HelixDrilldown["loadingText"]) | undefined;
5111
- /** The region's name, read by screen readers. */
5401
+ /** The name of the top page's menu, read by screen readers. A page below it is
5402
+ named by its title.
5403
+
5404
+ An `aria-label` or `aria-labelledby` on the host names the top page too,
5405
+ and wins over this. */
5112
5406
  label?: (HelixDrilldown["label"]) | undefined;
5113
5407
  /** The text of the back button. */
5114
5408
  "back-label"?: (HelixDrilldown["backLabel"]) | undefined;
@@ -5149,9 +5443,7 @@ export type HelixFileInputHelixBeforeChangeElementEvent =
5149
5443
 
5150
5444
  export type HelixFileInputVueProps = {
5151
5445
  /** */
5152
- "aria-label"?: (HelixFileInput["namedBy"]) | undefined;
5153
- /** */
5154
- namedBy?: (HelixFileInput["namedBy"]) | undefined;
5446
+ "aria-label"?: unknown;
5155
5447
  /** The validation message shown under the control. It replaces the
5156
5448
  browser's message. */
5157
5449
  feedback?: (HelixFileInput["feedback"]) | undefined;
@@ -5180,7 +5472,10 @@ and this one was the English a form in another language still spoke in
5180
5472
  the bubble it raises on submit: `feedback` replaces the message under
5181
5473
  the field and does not reach that one. */
5182
5474
  valueMissingMessage?: (HelixFileInput["valueMissingMessage"]) | undefined;
5183
- /** Which files the picker offers, as a native `accept` list. */
5475
+ /** Which files the picker offers and a drop takes, as a native `accept` list.
5476
+
5477
+ A dropped file the list does not name is left out, because the picker's
5478
+ filter is the only check the platform makes and a drop never meets it. */
5184
5479
  accept?: (HelixFileInput["accept"]) | undefined;
5185
5480
  /** Which camera or microphone a mobile picker should offer, if any. */
5186
5481
  capture?: (HelixFileInput["capture"]) | undefined;
@@ -5418,6 +5713,9 @@ export type HelixFilterInputElementEvent<E = Event> = TypedEvent<
5418
5713
  HelixFilterInput,
5419
5714
  E
5420
5715
  >;
5716
+ /** `toggle` event type */
5717
+ export type HelixFilterInputToggleElementEvent =
5718
+ HelixFilterInputElementEvent<ToggleEvent>;
5421
5719
  /** `helix-before-change` event type */
5422
5720
  export type HelixFilterInputHelixBeforeChangeElementEvent =
5423
5721
  HelixFilterInputElementEvent<HelixBeforeChangeEvent>;
@@ -5483,9 +5781,7 @@ same statement in markup, and `default-value` is how markup seeds a value
5483
5781
  a reset should return to. */
5484
5782
  value?: (HelixFilterInput["value"]) | undefined;
5485
5783
  /** */
5486
- "aria-label"?: (HelixFilterInput["namedBy"]) | undefined;
5487
- /** */
5488
- namedBy?: (HelixFilterInput["namedBy"]) | undefined;
5784
+ "aria-label"?: unknown;
5489
5785
  /** The validation message shown under the control. It replaces the
5490
5786
  browser's message. */
5491
5787
  feedback?: (HelixFilterInput["feedback"]) | undefined;
@@ -5560,6 +5856,8 @@ Here rather than on each control. */
5560
5856
  };
5561
5857
 
5562
5858
  export type HelixFilterInputVueEvents = {
5859
+ /** Fired when the suggestions panel opens or closes, with `newState` and `oldState`. */
5860
+ toggle: HelixFilterInputToggleElementEvent;
5563
5861
  /** Fired from the input when the user finishes editing the text. */
5564
5862
  change: HelixFilterInputElementEvent;
5565
5863
  /** Fired as the text changes. Cancelable: call `preventDefault()` to keep the current text. */
@@ -5576,8 +5874,6 @@ export type HelixFilterInputVueEvents = {
5576
5874
  "helix-select": HelixFilterInputHelixSelectElementEvent;
5577
5875
  /** Fired when the text changes. */
5578
5876
  input: HelixFilterInputElementEvent;
5579
- /** Fired when the suggestions panel opens or closes, with `newState` and `oldState`. */
5580
- toggle: HelixFilterInputElementEvent;
5581
5877
  };
5582
5878
 
5583
5879
  export type HelixFlexVueProps = {
@@ -6024,12 +6320,19 @@ There is no `justifyContent` here for the same reason: the tracks are
6024
6320
  distribute. `columns`, `min` and `--grid-columns` are how a grid says how
6025
6321
  wide its tracks are. */
6026
6322
  alignItems?: (HelixGrid["alignItems"]) | undefined;
6027
- /** A fixed number of equal columns. */
6323
+ /** A fixed number of equal columns.
6324
+
6325
+ Two to six are plain CSS. Any other count is written into the shadow
6326
+ root's rule, which the server renders too. */
6028
6327
  columns?: (HelixGrid["columns"]) | undefined;
6029
6328
  /** The space between cells, as a step on the space scale. */
6030
6329
  gap?: (HelixGrid["gap"]) | undefined;
6031
6330
  /** The minimum column width. The grid fits as many columns as the width allows.
6032
6331
 
6332
+ A length, such as `12rem`, or `calc()`, `clamp()`, `min()`, `max()` and
6333
+ `var()` over lengths. Anything else is refused with a warning, and the grid
6334
+ lays out by `columns`.
6335
+
6033
6336
  Takes precedence over `columns`: a grid that both fixes a count and reflows
6034
6337
  is two intentions in one element. */
6035
6338
  min?: (HelixGrid["min"]) | undefined;
@@ -6058,6 +6361,12 @@ shadow root reads a table in that root rather than one in the document. A
6058
6361
  Absent falls back to the table's own caption, which is usually the right
6059
6362
  words and is already written. */
6060
6363
  label?: (HelixHeatmap["label"]) | undefined;
6364
+ /** The locale the chart's own numbers are written in: its axis, its
6365
+ percentages and its totals, such as `de` for `1.240` and `32 %`.
6366
+
6367
+ Absent uses the runtime's own. The table's cells are shown as the table
6368
+ writes them, whatever this says. */
6369
+ locale?: (HelixHeatmap["locale"]) | undefined;
6061
6370
  /** Shown when the table has no readings in it.
6062
6371
 
6063
6372
  Never shown while the table cannot be read at all, which is a server render
@@ -6358,6 +6667,9 @@ invoker without an id in the same tree needs. */
6358
6667
 
6359
6668
  export type HelixIconButtonVueEvents = {};
6360
6669
 
6670
+ /** `HelixIcon` component event */
6671
+ export type HelixIconElementEvent<E = Event> = TypedEvent<HelixIcon, E>;
6672
+
6361
6673
  export type HelixIconVueProps = {
6362
6674
  /** The icon's name, read by screen readers. Set it for an icon that is not
6363
6675
  decorative. */
@@ -6393,7 +6705,10 @@ for. Set both and this wins, the value being the more specific statement. */
6393
6705
  icon?: (HelixIcon["icon"]) | undefined;
6394
6706
  };
6395
6707
 
6396
- export type HelixIconVueEvents = {};
6708
+ export type HelixIconVueEvents = {
6709
+ /** `name` matches no icon in the set, so nothing is drawn. */
6710
+ error: HelixIconElementEvent;
6711
+ };
6397
6712
 
6398
6713
  /** `HelixImage` component event */
6399
6714
  export type HelixImageElementEvent<E = Event> = TypedEvent<HelixImage, E>;
@@ -6410,7 +6725,9 @@ is answering is whether this picture is a card's surface or a page's.
6410
6725
  /** A text description of the image, read by screen readers.
6411
6726
 
6412
6727
  Empty is a real answer and means decoration. Omitting the attribute is not
6413
- the same thing: a reader with nothing to read announces the file name. */
6728
+ the same thing: the inner image is then written with no `alt` either, as a
6729
+ native one would be, so a screen reader announces the file name and an
6730
+ accessibility checker reports the missing description. */
6414
6731
  alt?: (HelixImage["alt"]) | undefined;
6415
6732
  /** How the image is fetched across origins. It decides whether a canvas can
6416
6733
  read the image. */
@@ -6506,9 +6823,7 @@ same statement in markup, and `default-value` is how markup seeds a value
6506
6823
  a reset should return to. */
6507
6824
  value?: (HelixInput["value"]) | undefined;
6508
6825
  /** */
6509
- "aria-label"?: (HelixInput["namedBy"]) | undefined;
6510
- /** */
6511
- namedBy?: (HelixInput["namedBy"]) | undefined;
6826
+ "aria-label"?: unknown;
6512
6827
  /** The validation message shown under the control. It replaces the
6513
6828
  browser's message. */
6514
6829
  feedback?: (HelixInput["feedback"]) | undefined;
@@ -6537,6 +6852,9 @@ and this one was the English a form in another language still spoke in
6537
6852
  the bubble it raises on submit: `feedback` replaces the message under
6538
6853
  the field and does not reach that one. */
6539
6854
  valueMissingMessage?: (HelixInput["valueMissingMessage"]) | undefined;
6855
+ /** Whether a phone capitalizes as the reader types: `off`, `sentences`,
6856
+ `words` or `characters`, as the platform's `autocapitalize`. */
6857
+ autocapitalize?: (HelixInput["autocapitalize"]) | undefined;
6540
6858
  /** What the browser may autofill in the field, as an HTML `autocomplete`
6541
6859
  token.
6542
6860
 
@@ -6554,10 +6872,29 @@ is broken. */
6554
6872
  "clear-label"?: (HelixInput["clearLabel"]) | undefined;
6555
6873
  /** The accessible name of the clear button, which shows only an icon. */
6556
6874
  clearLabel?: (HelixInput["clearLabel"]) | undefined;
6875
+ /** The key the on-screen keyboard shows for Enter, as the platform's
6876
+ `enterkeyhint`: `search`, `send`, `go`, `next`, `previous`, `done` or
6877
+ `enter`. */
6878
+ enterkeyhint?: (HelixInput["enterKeyHint"]) | undefined;
6879
+ /** The key the on-screen keyboard shows for Enter, as the platform's
6880
+ `enterkeyhint`: `search`, `send`, `go`, `next`, `previous`, `done` or
6881
+ `enter`. */
6882
+ enterKeyHint?: (HelixInput["enterKeyHint"]) | undefined;
6883
+ /** The keyboard a phone offers, as the platform's `inputmode`, such as
6884
+ `numeric` for a code typed as text. */
6885
+ inputmode?: (HelixInput["inputMode"]) | undefined;
6886
+ /** The keyboard a phone offers, as the platform's `inputmode`, such as
6887
+ `numeric` for a code typed as text. */
6888
+ inputMode?: (HelixInput["inputMode"]) | undefined;
6889
+ /** The greatest value, for `type="number"`. Number Input adds steppers and
6890
+ keys to the same bounds. */
6891
+ max?: (HelixInput["max"]) | undefined;
6557
6892
  /** Most characters the value may have. */
6558
6893
  maxlength?: (HelixInput["maxLength"] | `${number}`) | undefined;
6559
6894
  /** Most characters the value may have. */
6560
6895
  maxLength?: (HelixInput["maxLength"]) | undefined;
6896
+ /** The least value, for `type="number"`. */
6897
+ min?: (HelixInput["min"]) | undefined;
6561
6898
  /** Fewest characters the value may have. */
6562
6899
  minlength?: (HelixInput["minLength"] | `${number}`) | undefined;
6563
6900
  /** Fewest characters the value may have. */
@@ -6609,6 +6946,9 @@ The state is `aria-pressed`, not this. */
6609
6946
 
6610
6947
  The state is `aria-pressed`, not this. */
6611
6948
  revealLabel?: (HelixInput["revealLabel"]) | undefined;
6949
+ /** The step a valid value is a multiple of, counted from `min`, for
6950
+ `type="number"`. */
6951
+ step?: (HelixInput["step"]) | undefined;
6612
6952
  /** The kind of text the field accepts. It sets the on-screen keyboard and the
6613
6953
  validation.
6614
6954
 
@@ -6682,11 +7022,16 @@ export type HelixKbdHelixShortcutElementEvent =
6682
7022
  HelixKbdElementEvent<HelixShortcutEvent>;
6683
7023
 
6684
7024
  export type HelixKbdVueProps = {
6685
- /** The key or chord to show, such as `mod+k`, `shift+?`, or `/`.
7025
+ /** The key or chord to show, such as `mod+k`, `?`, or `/`.
6686
7026
 
6687
7027
  `mod` is the platform's own command modifier, which is the reason to write
6688
7028
  a chord here rather than a glyph: it is the one token whose right answer
6689
- differs per reader. */
7029
+ differs per reader.
7030
+
7031
+ A symbol such as `?` or `!` is written as itself, without `shift`. It is
7032
+ matched whether or not Shift was held to type it, since that depends on
7033
+ the keyboard layout. Bound to the document, a chord that types a character
7034
+ is not taken from a field a reader is typing in. */
6690
7035
  keys?: (HelixKbd["keys"]) | undefined;
6691
7036
  /** Where the chord is listened for. `control` listens inside the control the
6692
7037
  key sits in, and `document` listens on the whole page.
@@ -6800,6 +7145,11 @@ shadow root reads a table in that root rather than one in the document.
6800
7145
  **In React this arrives as a property and not as an attribute**, the way
6801
7146
  `Tooltip.for` does, so it does not reflect and nothing styles on it. */
6802
7147
  for?: (HelixLegend["for"]) | undefined;
7148
+ /** The name of the list, which a screen reader announces before its entries.
7149
+
7150
+ Absent names the list after the table's caption, so a page with several
7151
+ charts has a legend list for each that says which chart it keys. */
7152
+ label?: (HelixLegend["label"]) | undefined;
6803
7153
  };
6804
7154
 
6805
7155
  export type HelixLegendVueEvents = {};
@@ -6809,7 +7159,8 @@ export type HelixLightboxItemVueProps = {
6809
7159
 
6810
7160
  Written by the root, which is the only thing that sees the set. */
6811
7161
  current?: (HelixLightboxItem["current"]) | undefined;
6812
- /** The item's name, used in the status text that says which item is shown. */
7162
+ /** The item's name. It names the item's group, and fills `{label}` in the
7163
+ lightbox's `status-label`. */
6813
7164
  label?: (HelixLightboxItem["label"]) | undefined;
6814
7165
  /** The item's identifier. The root compares its `active` value against it. */
6815
7166
  value?: (HelixLightboxItem["value"]) | undefined;
@@ -6822,6 +7173,9 @@ export type HelixLightboxElementEvent<E = Event> = TypedEvent<HelixLightbox, E>;
6822
7173
  /** `helix-activate` event type */
6823
7174
  export type HelixLightboxHelixActivateElementEvent =
6824
7175
  HelixLightboxElementEvent<HelixActivateEvent>;
7176
+ /** `toggle` event type */
7177
+ export type HelixLightboxToggleElementEvent =
7178
+ HelixLightboxElementEvent<ToggleEvent>;
6825
7179
  /** `helix-before-activate` event type */
6826
7180
  export type HelixLightboxHelixBeforeActivateElementEvent =
6827
7181
  HelixLightboxElementEvent<HelixBeforeActivateEvent>;
@@ -6885,15 +7239,15 @@ keep the chrome up is the consumer's to decide with this. */
6885
7239
  label?: (HelixLightbox["label"]) | undefined;
6886
7240
  /** Whether moving past the last item returns to the first. */
6887
7241
  loop?: (HelixLightbox["loop"]) | undefined;
6888
- /** The status text that says which item is shown, with `{index}` and `{count}`
6889
- filled in.
7242
+ /** The status text that says which item is shown, with `{index}`, `{count}`
7243
+ and the item's `{label}` filled in.
6890
7244
 
6891
7245
  Announced rather than only drawn, because the picture changing under a
6892
7246
  reader who cannot see it is otherwise silent. A consumer who has their own
6893
7247
  counter in the chrome can empty this and say it themselves. */
6894
7248
  "status-label"?: (HelixLightbox["statusLabel"]) | undefined;
6895
- /** The status text that says which item is shown, with `{index}` and `{count}`
6896
- filled in.
7249
+ /** The status text that says which item is shown, with `{index}`, `{count}`
7250
+ and the item's `{label}` filled in.
6897
7251
 
6898
7252
  Announced rather than only drawn, because the picture changing under a
6899
7253
  reader who cannot see it is otherwise silent. A consumer who has their own
@@ -6904,6 +7258,8 @@ counter in the chrome can empty this and say it themselves. */
6904
7258
  export type HelixLightboxVueEvents = {
6905
7259
  /** Fired after the shown item changes, when the element already holds the new item. */
6906
7260
  "helix-activate": HelixLightboxHelixActivateElementEvent;
7261
+ /** Fired when the viewer opens or closes, with `newState` and `oldState`. */
7262
+ toggle: HelixLightboxToggleElementEvent;
6907
7263
  /** Fired when the viewer closes. The component dispatches it again from the host, because the dialog's own event does not leave the shadow root. */
6908
7264
  close: HelixLightboxElementEvent;
6909
7265
  /** Fired before the shown item changes. Cancelable: cancel it to keep the current item. It is the only way to stop the change. */
@@ -6912,8 +7268,6 @@ export type HelixLightboxVueEvents = {
6912
7268
  "helix-before-close": HelixLightboxHelixBeforeCloseElementEvent;
6913
7269
  /** Fired before the viewer opens. Cancelable. */
6914
7270
  "helix-before-open": HelixLightboxHelixBeforeOpenElementEvent;
6915
- /** Fired when the viewer opens or closes, with `newState` and `oldState`. */
6916
- toggle: HelixLightboxElementEvent;
6917
7271
  };
6918
7272
 
6919
7273
  export type HelixLineChartVueProps = {
@@ -6971,6 +7325,12 @@ shadow root reads a table in that root rather than one in the document. A
6971
7325
  Absent falls back to the table's own caption, which is usually the right
6972
7326
  words and is already written. */
6973
7327
  label?: (HelixLineChart["label"]) | undefined;
7328
+ /** The locale the chart's own numbers are written in: its axis, its
7329
+ percentages and its totals, such as `de` for `1.240` and `32 %`.
7330
+
7331
+ Absent uses the runtime's own. The table's cells are shown as the table
7332
+ writes them, whatever this says. */
7333
+ locale?: (HelixLineChart["locale"]) | undefined;
6974
7334
  /** Draws a wash under each line, down to the floor of the plot. The washes
6975
7335
  overlap and do not add up, so for parts that make a total, use
6976
7336
  `Area Chart`, which stacks them.
@@ -7181,9 +7541,7 @@ same statement in markup, and `default-value` is how markup seeds a value
7181
7541
  a reset should return to. */
7182
7542
  value?: (HelixListbox["value"]) | undefined;
7183
7543
  /** */
7184
- "aria-label"?: (HelixListbox["namedBy"]) | undefined;
7185
- /** */
7186
- namedBy?: (HelixListbox["namedBy"]) | undefined;
7544
+ "aria-label"?: unknown;
7187
7545
  /** The validation message shown under the control. It replaces the
7188
7546
  browser's message. */
7189
7547
  feedback?: (HelixListbox["feedback"]) | undefined;
@@ -7241,6 +7599,13 @@ own search boxes would be three copies of one field. */
7241
7599
  "filter-label"?: (HelixListbox["filterLabel"]) | undefined;
7242
7600
  /** Placeholder text for the filter field. */
7243
7601
  filterLabel?: (HelixListbox["filterLabel"]) | undefined;
7602
+ /** Stops the arrow keys from choosing each option they move to. Enter, Space
7603
+ or a click chooses the highlighted option.
7604
+
7605
+ By default a single-choice list chooses as the arrows move, as a radio
7606
+ group does. Select and Time Input set this on the list in their panel, so
7607
+ a reader can move through the options before closing the panel on one. */
7608
+ manual?: (HelixListbox["manual"]) | undefined;
7244
7609
  /** Whether more than one option can be chosen. */
7245
7610
  multiple?: (HelixListbox["multiple"]) | undefined;
7246
7611
  /** Whether the control is disabled and cannot be used.
@@ -7294,7 +7659,7 @@ export type HelixListboxVueEvents = {
7294
7659
  };
7295
7660
 
7296
7661
  export type HelixLoaderVueProps = {
7297
- /** Diameter relative to the surrounding text. */
7662
+ /** Diameter, from the loader size tokens. */
7298
7663
  size?: (HelixLoader["size"]) | undefined;
7299
7664
  /** How the loader is drawn. Leave it unset for a spinning arc, or set `pulse`.
7300
7665
 
@@ -7649,6 +8014,12 @@ export type HelixMapElementEvent<E = Event> = TypedEvent<HelixMap, E>;
7649
8014
  /** `helix-activate` event type */
7650
8015
  export type HelixMapHelixActivateElementEvent =
7651
8016
  HelixMapElementEvent<HelixActivateEvent>;
8017
+ /** `helix-before-change` event type */
8018
+ export type HelixMapHelixBeforeChangeElementEvent =
8019
+ HelixMapElementEvent<HelixBeforeChangeEvent>;
8020
+ /** `helix-before-toggle` event type */
8021
+ export type HelixMapHelixBeforeToggleElementEvent =
8022
+ HelixMapElementEvent<HelixBeforeToggleEvent>;
7652
8023
  /** `helix-map-cluster` event type */
7653
8024
  export type HelixMapHelixMapClusterElementEvent =
7654
8025
  HelixMapElementEvent<HelixMapClusterEvent>;
@@ -7973,8 +8344,14 @@ current, and the map says it after a zoom. */
7973
8344
  };
7974
8345
 
7975
8346
  export type HelixMapVueEvents = {
8347
+ /** The layers menu changed the map type, which `map-type` now holds. */
8348
+ change: HelixMapElementEvent;
7976
8349
  /** A marker was pressed. The value is the marker's `name`, or its `label` if it has no name. A cluster sends `helix-map-cluster` instead. */
7977
8350
  "helix-activate": HelixMapHelixActivateElementEvent;
8351
+ /** A map type was chosen in the layers menu, with its name: `standard`, `hybrid`, or `satellite`. Cancelable: cancel it to keep the current type. */
8352
+ "helix-before-change": HelixMapHelixBeforeChangeElementEvent;
8353
+ /** A layer's tile in the layers menu was pressed. Sent from the layer, with `checked` true when it is to be shown. Cancelable: cancel it to keep the layer as it is. */
8354
+ "helix-before-toggle": HelixMapHelixBeforeToggleElementEvent;
7978
8355
  /** A cluster was pressed. Sent from the marker that shows the cluster, with the names of its places. */
7979
8356
  "helix-map-cluster": HelixMapHelixMapClusterElementEvent;
7980
8357
  /** A pan button or arrow key was pressed. Move your map in response. */
@@ -8069,6 +8446,9 @@ export type HelixMapTerrainVueEvents = {
8069
8446
 
8070
8447
  /** `HelixMegamenu` component event */
8071
8448
  export type HelixMegamenuElementEvent<E = Event> = TypedEvent<HelixMegamenu, E>;
8449
+ /** `toggle` event type */
8450
+ export type HelixMegamenuToggleElementEvent =
8451
+ HelixMegamenuElementEvent<ToggleEvent>;
8072
8452
  /** `helix-before-close` event type */
8073
8453
  export type HelixMegamenuHelixBeforeCloseElementEvent =
8074
8454
  HelixMegamenuElementEvent<HelixBeforeCloseEvent>;
@@ -8186,16 +8566,19 @@ no other family is being asked the same question. */
8186
8566
  };
8187
8567
 
8188
8568
  export type HelixMegamenuVueEvents = {
8569
+ /** The panel opened or closed. Carries `newState` and `oldState`. */
8570
+ toggle: HelixMegamenuToggleElementEvent;
8189
8571
  /** The panel is about to close. Cancelable. */
8190
8572
  "helix-before-close": HelixMegamenuHelixBeforeCloseElementEvent;
8191
8573
  /** The panel is about to open. Cancelable. */
8192
8574
  "helix-before-open": HelixMegamenuHelixBeforeOpenElementEvent;
8193
- /** The panel opened or closed. Carries `newState` and `oldState`. */
8194
- toggle: HelixMegamenuElementEvent;
8195
8575
  };
8196
8576
 
8197
8577
  /** `HelixMenuItem` component event */
8198
8578
  export type HelixMenuItemElementEvent<E = Event> = TypedEvent<HelixMenuItem, E>;
8579
+ /** `helix-before-toggle` event type */
8580
+ export type HelixMenuItemHelixBeforeToggleElementEvent =
8581
+ HelixMenuItemElementEvent<HelixBeforeToggleEvent>;
8199
8582
  /** `helix-select` event type */
8200
8583
  export type HelixMenuItemHelixSelectElementEvent =
8201
8584
  HelixMenuItemElementEvent<HelixSelectEvent>;
@@ -8209,9 +8592,15 @@ was never tickable look identical from here. Announcing only the ticked one
8209
8592
  as a checkbox tells a reader its siblings are commands, which is the one
8210
8593
  thing they are not.
8211
8594
 
8212
- `checked` implies it, so a row that is on never has to say both. */
8595
+ `checked` implies it, so a row that is on never has to say both.
8596
+
8597
+ Choosing the row checks or unchecks it, after a `helix-before-toggle` that
8598
+ you can cancel. */
8213
8599
  checkable?: (HelixMenuItem["checkable"]) | undefined;
8214
- /** Whether the row is checked. */
8600
+ /** Whether the row is checked.
8601
+
8602
+ The row changes it when it is chosen. Not reflected: the attribute is the
8603
+ state you start the row in, and `:state(checked)` carries the current one. */
8215
8604
  checked?: (HelixMenuItem["checked"]) | undefined;
8216
8605
  /** Whether the row is disabled, so it cannot be chosen. */
8217
8606
  disabled?: (HelixMenuItem["disabled"]) | undefined;
@@ -8223,11 +8612,11 @@ about who may name a file on somebody's disk rather than a gap here. */
8223
8612
  download?: (HelixMenuItem["download"]) | undefined;
8224
8613
  /** Whether only one row in its set can be checked at a time.
8225
8614
 
8226
- Announcement and nothing else, the way `checkable` is: this element applies
8227
- no choice and polices no group, so what it does is tell a reader which kind
8228
- of set they are in. `menuitemcheckbox` says every row here is independent,
8229
- which for a run of comparisons, or the values of a filter that compares
8230
- against one, is the opposite of true.
8615
+ The set is the run of `exclusive` rows next to this one, up to the first
8616
+ element that is not one, such as a divider. Choosing a row in it checks
8617
+ that row and unchecks the others. Choosing the row that is checked leaves
8618
+ it checked. `menuitemradio` tells a reader which kind of set they are in,
8619
+ where `menuitemcheckbox` says every row is independent.
8231
8620
 
8232
8621
  Meaningless without `checkable`, since a row that cannot be ticked is not
8233
8622
  one of a set of anything. */
@@ -8275,12 +8664,16 @@ Three levels deep, the topmost row holds the slot the middle one lives in. */
8275
8664
  };
8276
8665
 
8277
8666
  export type HelixMenuItemVueEvents = {
8667
+ /** A choice row is about to be checked or unchecked, carrying the state asked for. Cancelable: cancel it to keep the row as it is. */
8668
+ "helix-before-toggle": HelixMenuItemHelixBeforeToggleElementEvent;
8278
8669
  /** The row was chosen. Cancelable: cancel it to keep the menu open. */
8279
8670
  "helix-select": HelixMenuItemHelixSelectElementEvent;
8280
8671
  };
8281
8672
 
8282
8673
  /** `HelixMenu` component event */
8283
8674
  export type HelixMenuElementEvent<E = Event> = TypedEvent<HelixMenu, E>;
8675
+ /** `toggle` event type */
8676
+ export type HelixMenuToggleElementEvent = HelixMenuElementEvent<ToggleEvent>;
8284
8677
  /** `helix-before-close` event type */
8285
8678
  export type HelixMenuHelixBeforeCloseElementEvent =
8286
8679
  HelixMenuElementEvent<HelixBeforeCloseEvent>;
@@ -8327,7 +8720,11 @@ the resolved state for stylesheets, which is what the mirror is for. */
8327
8720
  "back-label"?: (HelixMenu["backLabel"]) | undefined;
8328
8721
  /** The text of the row that returns from a submenu. */
8329
8722
  backLabel?: (HelixMenu["backLabel"]) | undefined;
8330
- /** Accessible name for the surface. */
8723
+ /** Accessible name for the surface.
8724
+
8725
+ Empty by default, which names the surface by its trigger, so a menu opened
8726
+ from "Actions" is announced as "Actions". An `aria-label` or
8727
+ `aria-labelledby` on the host names it too, and wins over both. */
8331
8728
  label?: (HelixMenu["label"]) | undefined;
8332
8729
  /** Space between the trigger and the surface, in pixels. */
8333
8730
  offset?: (HelixMenu["offset"]) | undefined;
@@ -8338,14 +8735,14 @@ It moves if that side does not fit. */
8338
8735
  };
8339
8736
 
8340
8737
  export type HelixMenuVueEvents = {
8738
+ /** The menu opened or closed. The event carries `newState` and `oldState`. */
8739
+ toggle: HelixMenuToggleElementEvent;
8341
8740
  /** The menu is about to close. Cancelable: cancel it to keep it open. */
8342
8741
  "helix-before-close": HelixMenuHelixBeforeCloseElementEvent;
8343
8742
  /** The menu is about to open. Cancelable: cancel it to keep it closed. */
8344
8743
  "helix-before-open": HelixMenuHelixBeforeOpenElementEvent;
8345
8744
  /** An item was chosen. Cancelable: cancel it to keep the menu open. */
8346
8745
  "helix-select": HelixMenuHelixSelectElementEvent;
8347
- /** The menu opened or closed. The event carries `newState` and `oldState`. */
8348
- toggle: HelixMenuElementEvent;
8349
8746
  };
8350
8747
 
8351
8748
  export type HelixMeterVueProps = {
@@ -8402,6 +8799,10 @@ Absent leaves the range unbanded. */
8402
8799
  high?: (HelixMeter["high"]) | undefined;
8403
8800
  /** Accessible name for the reading. */
8404
8801
  label?: (HelixMeter["label"]) | undefined;
8802
+ /** The locale the percentage is written in, such as `fr` for `72 %`.
8803
+
8804
+ Absent uses the runtime's own. */
8805
+ locale?: (HelixMeter["locale"]) | undefined;
8405
8806
  /** Top of the low band.
8406
8807
 
8407
8808
  Absent leaves the range unbanded. */
@@ -8466,7 +8867,11 @@ fair summary of a task and a poor one of a quantity. */
8466
8867
  export type HelixMeterVueEvents = {};
8467
8868
 
8468
8869
  export type HelixNavigationVueProps = {
8469
- /** The landmark's name, read by screen readers. */
8870
+ /** The landmark's name, read by screen readers.
8871
+
8872
+ An `aria-label` or `aria-labelledby` on the host names the landmark too,
8873
+ and wins over this, so a footer navigation written the usual way is not a
8874
+ second "Main". */
8470
8875
  label?: (HelixNavigation["label"]) | undefined;
8471
8876
  /** Stacks the destinations in a column, for a sidebar, where unset is a row
8472
8877
  for a header or a footer. The marker follows the current destination down
@@ -8487,6 +8892,9 @@ export type HelixNotificationGroupHelixBeforeCloseElementEvent =
8487
8892
  /** `helix-before-open` event type */
8488
8893
  export type HelixNotificationGroupHelixBeforeOpenElementEvent =
8489
8894
  HelixNotificationGroupElementEvent<HelixBeforeOpenEvent>;
8895
+ /** `toggle` event type */
8896
+ export type HelixNotificationGroupToggleElementEvent =
8897
+ HelixNotificationGroupElementEvent<ToggleEvent>;
8490
8898
 
8491
8899
  export type HelixNotificationGroupVueProps = {
8492
8900
  /** Whether the element starts open. Ignored once `open` is written. */
@@ -8531,6 +8939,8 @@ export type HelixNotificationGroupVueEvents = {
8531
8939
  "helix-before-close": HelixNotificationGroupHelixBeforeCloseElementEvent;
8532
8940
  /** Fired before the group expands. Cancelable: cancel it to keep the group collapsed. */
8533
8941
  "helix-before-open": HelixNotificationGroupHelixBeforeOpenElementEvent;
8942
+ /** The group expanded or collapsed. The event carries `newState` and `oldState`. */
8943
+ toggle: HelixNotificationGroupToggleElementEvent;
8534
8944
  };
8535
8945
 
8536
8946
  /** `HelixNotification` component event */
@@ -8609,6 +9019,16 @@ as a hydration mismatch, and which a copy of the serialized element
8609
9019
  re-parses as a declaration. `:state(read)` is what the stylesheet reads.
8610
9020
  `hydration.dom.spec.ts` holds it. */
8611
9021
  read?: (HelixNotification["read"]) | undefined;
9022
+ /** What a screen reader hears before an unread notification's text.
9023
+
9024
+ The unread mark is drawn, so a reader who cannot see it hears this word in
9025
+ its place. Translate it with the rest of your interface. */
9026
+ "unread-label"?: (HelixNotification["unreadLabel"]) | undefined;
9027
+ /** What a screen reader hears before an unread notification's text.
9028
+
9029
+ The unread mark is drawn, so a reader who cannot see it hears this word in
9030
+ its place. Translate it with the rest of your interface. */
9031
+ unreadLabel?: (HelixNotification["unreadLabel"]) | undefined;
8612
9032
  };
8613
9033
 
8614
9034
  export type HelixNotificationVueEvents = {
@@ -8686,9 +9106,7 @@ same statement in markup, and `default-value` is how markup seeds a value
8686
9106
  a reset should return to. */
8687
9107
  value?: (HelixNumberInput["value"]) | undefined;
8688
9108
  /** */
8689
- "aria-label"?: (HelixNumberInput["namedBy"]) | undefined;
8690
- /** */
8691
- namedBy?: (HelixNumberInput["namedBy"]) | undefined;
9109
+ "aria-label"?: unknown;
8692
9110
  /** The validation message shown under the control. It replaces the
8693
9111
  browser's message. */
8694
9112
  feedback?: (HelixNumberInput["feedback"]) | undefined;
@@ -8760,6 +9178,13 @@ Ten steps, which is the convention every spinner on the platform follows,
8760
9178
  and a property because ten of a step of `0.01` is a hundredth and rarely
8761
9179
  what a reader wants from a whole key. */
8762
9180
  largeStep?: (HelixNumberInput["largeStep"]) | undefined;
9181
+ /** The locale a typed number is read in, such as `de-DE`. Empty reads it in
9182
+ the browser's language.
9183
+
9184
+ Where the locale writes a decimal comma, `1,5` is read as one and a half,
9185
+ which is what the decimal keypad on a phone in that locale types. A dot is
9186
+ read as a decimal point in every locale. */
9187
+ locale?: (HelixNumberInput["locale"]) | undefined;
8763
9188
  /** The largest value allowed.
8764
9189
 
8765
9190
  Absent has no ceiling. */
@@ -8797,8 +9222,29 @@ been asked for. Where it earns its place is a value a reader tunes rather
8797
9222
  than states: a duration, a weight, a count they are looking for rather than
8798
9223
  one they already know. */
8799
9224
  scrub?: (HelixNumberInput["scrub"]) | undefined;
8800
- /** How far one step moves. */
9225
+ /** How far one step moves. A value off the step grid, counted from `min`, is
9226
+ invalid, as it is in a native number field. */
8801
9227
  step?: (HelixNumberInput["step"]) | undefined;
9228
+ /** The message the browser shows when the number is off the step grid, with
9229
+ `{below}` and `{above}` filled in with the nearest valid values. */
9230
+ "step-mismatch-message"?: (HelixNumberInput["stepMismatchMessage"]) | undefined;
9231
+ /** The message the browser shows when the number is off the step grid, with
9232
+ `{below}` and `{above}` filled in with the nearest valid values. */
9233
+ stepMismatchMessage?: (HelixNumberInput["stepMismatchMessage"]) | undefined;
9234
+ /** What a screen reader says for the value, with `{value}` filled in, such as
9235
+ `{value} kilograms`.
9236
+
9237
+ A unit slotted into `end` is drawn beside the number and is not part of
9238
+ what the spinbutton announces, so it goes here too. Empty announces the
9239
+ number alone. */
9240
+ "value-text"?: (HelixNumberInput["valueText"]) | undefined;
9241
+ /** What a screen reader says for the value, with `{value}` filled in, such as
9242
+ `{value} kilograms`.
9243
+
9244
+ A unit slotted into `end` is drawn beside the number and is not part of
9245
+ what the spinbutton announces, so it goes here too. Empty announces the
9246
+ number alone. */
9247
+ valueText?: (HelixNumberInput["valueText"]) | undefined;
8802
9248
  /** Whether the control is disabled and cannot be used.
8803
9249
 
8804
9250
  Reflected, because the styled tier selects on it, and mirrored to
@@ -8888,6 +9334,22 @@ Read once the document exists, and again whenever this changes. Text that
8888
9334
  does not parse leaves the inspector empty rather than throwing, since a
8889
9335
  page's markup should not take the page down over a comma. */
8890
9336
  for?: (HelixObjectInspector["for"]) | undefined;
9337
+ /** How an array of one entry counts it. `{count}` is replaced with the count. */
9338
+ "item-label"?: (HelixObjectInspector["itemLabel"]) | undefined;
9339
+ /** How an array of one entry counts it. `{count}` is replaced with the count. */
9340
+ itemLabel?: (HelixObjectInspector["itemLabel"]) | undefined;
9341
+ /** How an array of any other number of entries counts them. `{count}` is replaced with the count. */
9342
+ "items-label"?: (HelixObjectInspector["itemsLabel"]) | undefined;
9343
+ /** How an array of any other number of entries counts them. `{count}` is replaced with the count. */
9344
+ itemsLabel?: (HelixObjectInspector["itemsLabel"]) | undefined;
9345
+ /** How an object of one key counts it. `{count}` is replaced with the count. */
9346
+ "key-label"?: (HelixObjectInspector["keyLabel"]) | undefined;
9347
+ /** How an object of one key counts it. `{count}` is replaced with the count. */
9348
+ keyLabel?: (HelixObjectInspector["keyLabel"]) | undefined;
9349
+ /** How an object of any other number of keys counts them. `{count}` is replaced with the count. */
9350
+ "keys-label"?: (HelixObjectInspector["keysLabel"]) | undefined;
9351
+ /** How an object of any other number of keys counts them. `{count}` is replaced with the count. */
9352
+ keysLabel?: (HelixObjectInspector["keysLabel"]) | undefined;
8891
9353
  /** Accessible name for the tree, and the text of the header where there is one. */
8892
9354
  label?: (HelixObjectInspector["label"]) | undefined;
8893
9355
  /** Hides the copy button.
@@ -8914,6 +9376,12 @@ who set the property. This button is positioned out of the flow and takes no
8914
9376
  room, so nothing selects on it, and reflection exists so that a selector can
8915
9377
  reach a value. */
8916
9378
  noCopy?: (HelixObjectInspector["noCopy"]) | undefined;
9379
+ /** The tree's accessible name when `label` is empty and the host names it
9380
+ with neither `aria-label` nor `aria-labelledby`. */
9381
+ "tree-label"?: (HelixObjectInspector["treeLabel"]) | undefined;
9382
+ /** The tree's accessible name when `label` is empty and the host names it
9383
+ with neither `aria-label` nor `aria-labelledby`. */
9384
+ treeLabel?: (HelixObjectInspector["treeLabel"]) | undefined;
8917
9385
  /** Whether to draw only the rows in view.
8918
9386
 
8919
9387
  For a value of thousands of entries. Reflected, because the box it scrolls
@@ -8947,11 +9415,15 @@ export type HelixOptionHelixSelectElementEvent =
8947
9415
  export type HelixOptionVueProps = {
8948
9416
  /** Whether this is the option the keyboard is on.
8949
9417
 
8950
- Written by the listbox. */
9418
+ Written by the listbox, which writes it once a reader moves the highlight.
9419
+ It shows as `:state(active)`, and as a `data-active` attribute for the
9420
+ stylesheets written before the state existed. */
8951
9421
  "data-active"?: (HelixOption["active"]) | undefined;
8952
9422
  /** Whether this is the option the keyboard is on.
8953
9423
 
8954
- Written by the listbox. */
9424
+ Written by the listbox, which writes it once a reader moves the highlight.
9425
+ It shows as `:state(active)`, and as a `data-active` attribute for the
9426
+ stylesheets written before the state existed. */
8955
9427
  active?: (HelixOption["active"]) | undefined;
8956
9428
  /** A second destination for the row, opened when you choose it with the
8957
9429
  modifier key held.
@@ -9089,6 +9561,11 @@ Not reflected: no rule selects on it, because the state is drawn rather than
9089
9561
  styled. A consumer writing the attribute can still select on their own
9090
9562
  markup. */
9091
9563
  state?: (HelixOrb["state"]) | undefined;
9564
+ /** The word for each state, for a page in another language.
9565
+
9566
+ A state left out keeps its English word, and `label` wins over both. It is
9567
+ a property with no attribute, keyed by state, such as `{ thinking: '…' }`. */
9568
+ stateLabels?: (HelixOrb["stateLabels"]) | undefined;
9092
9569
  };
9093
9570
 
9094
9571
  export type HelixOrbVueEvents = {};
@@ -9142,6 +9619,9 @@ export type HelixPaginationElementEvent<E = Event> = TypedEvent<
9142
9619
  HelixPagination,
9143
9620
  E
9144
9621
  >;
9622
+ /** `helix-activate` event type */
9623
+ export type HelixPaginationHelixActivateElementEvent =
9624
+ HelixPaginationElementEvent<HelixActivateEvent>;
9145
9625
  /** `helix-navigate` event type */
9146
9626
  export type HelixPaginationHelixNavigateElementEvent =
9147
9627
  HelixPaginationElementEvent<HelixNavigateEvent>;
@@ -9289,7 +9769,9 @@ to a reader, and takes its own. */
9289
9769
  };
9290
9770
 
9291
9771
  export type HelixPaginationVueEvents = {
9292
- /** Fired before the page changes, and cancelable. Canceling it is the only way to stop a page change. */
9772
+ /** Fired after the page changes, with the new page as a string in `detail.value`. In `href` mode it comes a task after the click, once the page has moved. */
9773
+ "helix-activate": HelixPaginationHelixActivateElementEvent;
9774
+ /** Fired before the page changes, and cancelable. Canceling it is the only way to stop a page change. `detail.page` is the page asked for, as a number, and `detail.value` is the same page as a string. */
9293
9775
  "helix-navigate": HelixPaginationHelixNavigateElementEvent;
9294
9776
  };
9295
9777
 
@@ -9328,8 +9810,12 @@ Reading gives the real one; writing declares it the consumer's, and
9328
9810
  };
9329
9811
 
9330
9812
  export type HelixPaginationSizeVueEvents = {
9813
+ /** Fired after the size changes. */
9814
+ change: HelixPaginationSizeElementEvent;
9331
9815
  /** Fired before the size changes, and cancelable. Canceling it is the only way to stop a size change. */
9332
9816
  "helix-before-change": HelixPaginationSizeHelixBeforeChangeElementEvent;
9817
+ /** Fired after the size changes, with `change`. */
9818
+ input: HelixPaginationSizeElementEvent;
9333
9819
  };
9334
9820
 
9335
9821
  export type HelixPaginationSummaryVueProps = {
@@ -9386,9 +9872,7 @@ same statement in markup, and `default-value` is how markup seeds a value
9386
9872
  a reset should return to. */
9387
9873
  value?: (HelixPinInput["value"]) | undefined;
9388
9874
  /** */
9389
- "aria-label"?: (HelixPinInput["namedBy"]) | undefined;
9390
- /** */
9391
- namedBy?: (HelixPinInput["namedBy"]) | undefined;
9875
+ "aria-label"?: unknown;
9392
9876
  /** The validation message shown under the control. It replaces the
9393
9877
  browser's message. */
9394
9878
  feedback?: (HelixPinInput["feedback"]) | undefined;
@@ -9514,6 +9998,9 @@ export type HelixPinInputVueEvents = {
9514
9998
 
9515
9999
  /** `HelixPopover` component event */
9516
10000
  export type HelixPopoverElementEvent<E = Event> = TypedEvent<HelixPopover, E>;
10001
+ /** `toggle` event type */
10002
+ export type HelixPopoverToggleElementEvent =
10003
+ HelixPopoverElementEvent<ToggleEvent>;
9517
10004
  /** `helix-before-close` event type */
9518
10005
  export type HelixPopoverHelixBeforeCloseElementEvent =
9519
10006
  HelixPopoverElementEvent<HelixBeforeCloseEvent>;
@@ -9561,12 +10048,12 @@ It moves if that side does not fit. */
9561
10048
  };
9562
10049
 
9563
10050
  export type HelixPopoverVueEvents = {
10051
+ /** Fired after the panel opens or closes, with `newState` and `oldState`. */
10052
+ toggle: HelixPopoverToggleElementEvent;
9564
10053
  /** Fired before it closes, and cancelable. */
9565
10054
  "helix-before-close": HelixPopoverHelixBeforeCloseElementEvent;
9566
10055
  /** Fired before it opens, and cancelable. */
9567
10056
  "helix-before-open": HelixPopoverHelixBeforeOpenElementEvent;
9568
- /** Fired after the panel opens or closes, with `newState` and `oldState`. */
9569
- toggle: HelixPopoverElementEvent;
9570
10057
  };
9571
10058
 
9572
10059
  export type HelixProgressVueProps = {
@@ -9603,8 +10090,17 @@ place in the layout when the answer arrives and it becomes determinate. */
9603
10090
  indeterminate?: (HelixProgress["indeterminate"]) | undefined;
9604
10091
  /** Accessible name for what is in progress. */
9605
10092
  label?: (HelixProgress["label"]) | undefined;
10093
+ /** The locale the percentage is written in, such as `fr` for `72 %`.
10094
+
10095
+ Absent uses the runtime's own. */
10096
+ locale?: (HelixProgress["locale"]) | undefined;
9606
10097
  /** The total the work is measured against. */
9607
10098
  max?: (HelixProgress["max"]) | undefined;
10099
+ /** Where the work starts, in the same units as `max`. Defaults to zero.
10100
+
10101
+ For a measure that does not start at nothing, such as a migration from
10102
+ version 12 to version 20, where 12 is the empty bar. */
10103
+ min?: (HelixProgress["min"]) | undefined;
9608
10104
  /** Whether the value is drawn as a bar or as a ring.
9609
10105
 
9610
10106
  **On this tier because it changes the markup**, which is the headless tier's to
@@ -9641,7 +10137,7 @@ saying "uploading" while the bar runs. */
9641
10137
  showValue?: (HelixProgress["showValue"]) | undefined;
9642
10138
  /** What has been done so far, in the same units as `max`.
9643
10139
 
9644
- Clamped between zero and `max` for both the fill and the announcement, so
10140
+ Clamped between `min` and `max` for both the fill and the announcement, so
9645
10141
  the two can never disagree about what is on screen. */
9646
10142
  value?: (HelixProgress["value"]) | undefined;
9647
10143
  /** Text that describes the value when the number alone is not enough, such as
@@ -9664,6 +10160,9 @@ report progress. */
9664
10160
 
9665
10161
  export type HelixProgressVueEvents = {};
9666
10162
 
10163
+ /** `HelixQrCode` component event */
10164
+ export type HelixQrCodeElementEvent<E = Event> = TypedEvent<HelixQrCode, E>;
10165
+
9667
10166
  export type HelixQrCodeVueProps = {
9668
10167
  /** The error correction level, which sets how much of the code can be lost
9669
10168
  and still scan.
@@ -9697,7 +10196,10 @@ which is what makes it read as dots rather than as a softened square code. */
9697
10196
  value?: (HelixQrCode["value"]) | undefined;
9698
10197
  };
9699
10198
 
9700
- export type HelixQrCodeVueEvents = {};
10199
+ export type HelixQrCodeVueEvents = {
10200
+ /** The value is too long for a code at the correction level, so no code is drawn. */
10201
+ error: HelixQrCodeElementEvent;
10202
+ };
9701
10203
 
9702
10204
  export type HelixQuoteVueProps = {
9703
10205
  /** URL identifying where the quotation came from. */
@@ -9731,9 +10233,7 @@ same statement in markup, and `default-value` is how markup seeds a value
9731
10233
  a reset should return to. */
9732
10234
  value?: (HelixRadioGroup["value"]) | undefined;
9733
10235
  /** */
9734
- "aria-label"?: (HelixRadioGroup["namedBy"]) | undefined;
9735
- /** */
9736
- namedBy?: (HelixRadioGroup["namedBy"]) | undefined;
10236
+ "aria-label"?: unknown;
9737
10237
  /** The validation message shown under the control. It replaces the
9738
10238
  browser's message. */
9739
10239
  feedback?: (HelixRadioGroup["feedback"]) | undefined;
@@ -9797,6 +10297,16 @@ imperatively later, and nothing is hydrating by then.
9797
10297
 
9798
10298
  Here rather than on each control. */
9799
10299
  name?: (HelixRadioGroup["name"]) | undefined;
10300
+ /** Whether the group holds a tab stop of its own.
10301
+
10302
+ A toolbar is one tab stop, so a toolbar the group sits in sets this to
10303
+ `false` while its stop is on another control, and every radio, the chosen
10304
+ one too, is then out of the tab order. The arrow keys inside the group
10305
+ work as before once focus is in it.
10306
+
10307
+ No attribute: it is coordination between elements, and a consumer has no
10308
+ reason to set it. */
10309
+ focusable?: (HelixRadioGroup["focusable"]) | undefined;
9800
10310
  };
9801
10311
 
9802
10312
  export type HelixRadioGroupVueEvents = {
@@ -9923,11 +10433,14 @@ name is the fault `TreeItem` avoids by mirroring to `data-selected`.
9923
10433
  Splitting them means moving what every stylesheet selects on, which is a
9924
10434
  change of its own rather than a property being added. */
9925
10435
  defaultSelected?: (HelixRadio["defaultSelected"]) | undefined;
9926
- /** Whether the radio holds the group's tab stop while nothing is chosen.
10436
+ /** Whether the radio holds the group's tab stop. Unset, the chosen radio
10437
+ holds it.
9927
10438
 
9928
10439
  The stop rides on the selection, and an unanswered group has no selection,
9929
10440
  so without this every choice is `tabindex="-1"` and the keyboard cannot
9930
- enter the set at all.
10441
+ enter the set at all. The group writes `true` for the chosen radio, or for
10442
+ the first that can be chosen while nothing is, and `false` for every radio,
10443
+ the chosen one too, while a toolbar the group sits in holds the stop.
9931
10444
 
9932
10445
  **Written by the group, with no attribute, and it reaches the control
9933
10446
  rather than the host.** A `tabindex` on the host is two faults at once: it
@@ -9986,9 +10499,7 @@ same statement in markup, and `default-value` is how markup seeds a value
9986
10499
  a reset should return to. */
9987
10500
  value?: (HelixRating["value"]) | undefined;
9988
10501
  /** */
9989
- "aria-label"?: (HelixRating["namedBy"]) | undefined;
9990
- /** */
9991
- namedBy?: (HelixRating["namedBy"]) | undefined;
10502
+ "aria-label"?: unknown;
9992
10503
  /** The validation message shown under the control. It replaces the
9993
10504
  browser's message. */
9994
10505
  feedback?: (HelixRating["feedback"]) | undefined;
@@ -10060,6 +10571,18 @@ read as `max`, which collapses the scale to its top score rather than
10060
10571
  leaving a rating with nothing to press. A property that silently accepts
10061
10572
  nonsense is the fault this pays off, so neither case is quietly ignored. */
10062
10573
  min?: (HelixRating["min"]) | undefined;
10574
+ /** The name of each mark a reader can choose, with `{score}` and `{max}`
10575
+ filled in. Set it to translate "3 out of 5".
10576
+
10577
+ Also what a read-only rating says for its score where `value-text` is
10578
+ empty. */
10579
+ "option-label"?: (HelixRating["optionLabel"]) | undefined;
10580
+ /** The name of each mark a reader can choose, with `{score}` and `{max}`
10581
+ filled in. Set it to translate "3 out of 5".
10582
+
10583
+ Also what a read-only rating says for its score where `value-text` is
10584
+ empty. */
10585
+ optionLabel?: (HelixRating["optionLabel"]) | undefined;
10063
10586
  /** Shows the score without letting users change it.
10064
10587
 
10065
10588
  A readout is not a control that has been switched off. It takes no focus,
@@ -10348,11 +10871,18 @@ gives. */
10348
10871
  "panel-size"?: (HelixSandbox["panelSize"] | `${number}`) | undefined;
10349
10872
  /** Height of the panel, in pixels. */
10350
10873
  panelSize?: (HelixSandbox["panelSize"]) | undefined;
10351
- /** The name of the divider between the panes, read by screen readers. */
10874
+ /** The name of the divider between the panes, read by screen readers.
10875
+
10876
+ Empty names the lead pane, "Resize source pane" or "Resize preview pane",
10877
+ since the divider's value is that pane's share. */
10352
10878
  "separator-label"?: (HelixSandbox["separatorLabel"]) | undefined;
10353
- /** The name of the divider between the panes, read by screen readers. */
10879
+ /** The name of the divider between the panes, read by screen readers.
10880
+
10881
+ Empty names the lead pane, "Resize source pane" or "Resize preview pane",
10882
+ since the divider's value is that pane's share. */
10354
10883
  separatorLabel?: (HelixSandbox["separatorLabel"]) | undefined;
10355
- /** Percentage of the sandbox given to the source pane. */
10884
+ /** Percentage of the sandbox given to the lead pane: the source, unless `lead`
10885
+ is `preview`. */
10356
10886
  split?: (HelixSandbox["split"]) | undefined;
10357
10887
  };
10358
10888
 
@@ -10388,6 +10918,10 @@ export type HelixSandboxSourceVueProps = {
10388
10918
  "field-label"?: (HelixSandboxSource["fieldLabel"]) | undefined;
10389
10919
  /** The editable region's name, read by screen readers. */
10390
10920
  fieldLabel?: (HelixSandboxSource["fieldLabel"]) | undefined;
10921
+ /** The field's description, read by screen readers while Tab indents. */
10922
+ "keys-description"?: (HelixSandboxSource["keysDescription"]) | undefined;
10923
+ /** The field's description, read by screen readers while Tab indents. */
10924
+ keysDescription?: (HelixSandboxSource["keysDescription"]) | undefined;
10391
10925
  /** Which source this pane holds. Every `helix-before-edit` event includes it.
10392
10926
 
10393
10927
  `html` and `css` are what the sandbox root routes on; any other name is
@@ -10455,6 +10989,12 @@ shadow root reads a table in that root rather than one in the document. A
10455
10989
  Absent falls back to the table's own caption, which is usually the right
10456
10990
  words and is already written. */
10457
10991
  label?: (HelixScatterChart["label"]) | undefined;
10992
+ /** The locale the chart's own numbers are written in: its axis, its
10993
+ percentages and its totals, such as `de` for `1.240` and `32 %`.
10994
+
10995
+ Absent uses the runtime's own. The table's cells are shown as the table
10996
+ writes them, whatever this says. */
10997
+ locale?: (HelixScatterChart["locale"]) | undefined;
10458
10998
  /** The word the summary uses for the strength of the relation. */
10459
10999
  "correlation-label"?: (HelixScatterChart["correlationLabel"]) | undefined;
10460
11000
  /** The word the summary uses for the strength of the relation. */
@@ -10485,6 +11025,9 @@ export type HelixScrollAreaVueEvents = {};
10485
11025
 
10486
11026
  /** `HelixSelect` component event */
10487
11027
  export type HelixSelectElementEvent<E = Event> = TypedEvent<HelixSelect, E>;
11028
+ /** `toggle` event type */
11029
+ export type HelixSelectToggleElementEvent =
11030
+ HelixSelectElementEvent<ToggleEvent>;
10488
11031
  /** `helix-before-change` event type */
10489
11032
  export type HelixSelectHelixBeforeChangeElementEvent =
10490
11033
  HelixSelectElementEvent<HelixBeforeChangeEvent>;
@@ -10494,6 +11037,9 @@ export type HelixSelectHelixBeforeCloseElementEvent =
10494
11037
  /** `helix-before-open` event type */
10495
11038
  export type HelixSelectHelixBeforeOpenElementEvent =
10496
11039
  HelixSelectElementEvent<HelixBeforeOpenEvent>;
11040
+ /** `helix-filter` event type */
11041
+ export type HelixSelectHelixFilterElementEvent =
11042
+ HelixSelectElementEvent<HelixFilterEvent>;
10497
11043
 
10498
11044
  export type HelixSelectVueProps = {
10499
11045
  /** How strongly the trigger is drawn. Leave it unset for a framed field, or
@@ -10559,9 +11105,7 @@ same statement in markup, and `default-value` is how markup seeds a value
10559
11105
  a reset should return to. */
10560
11106
  value?: (HelixSelect["value"]) | undefined;
10561
11107
  /** */
10562
- "aria-label"?: (HelixSelect["namedBy"]) | undefined;
10563
- /** */
10564
- namedBy?: (HelixSelect["namedBy"]) | undefined;
11108
+ "aria-label"?: unknown;
10565
11109
  /** The validation message shown under the control. It replaces the
10566
11110
  browser's message. */
10567
11111
  feedback?: (HelixSelect["feedback"]) | undefined;
@@ -10649,6 +11193,8 @@ differently: they are one chooser to a consumer. */
10649
11193
  };
10650
11194
 
10651
11195
  export type HelixSelectVueEvents = {
11196
+ /** Fired after the list opens or closes, with `newState` and `oldState`. */
11197
+ toggle: HelixSelectToggleElementEvent;
10652
11198
  /** Fired after the value changes. */
10653
11199
  change: HelixSelectElementEvent;
10654
11200
  /** Relayed from the listbox when the value is about to change. Cancelable: canceling it stops the change and leaves the decision to you. */
@@ -10657,17 +11203,24 @@ export type HelixSelectVueEvents = {
10657
11203
  "helix-before-close": HelixSelectHelixBeforeCloseElementEvent;
10658
11204
  /** Fired before the list opens. Cancelable: canceling it keeps the list closed and leaves the decision to you. */
10659
11205
  "helix-before-open": HelixSelectHelixBeforeOpenElementEvent;
11206
+ /** 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. */
11207
+ "helix-filter": HelixSelectHelixFilterElementEvent;
10660
11208
  /** Fired after the value changes. */
10661
11209
  input: HelixSelectElementEvent;
10662
- /** Fired after the list opens or closes, with `newState` and `oldState`. */
10663
- toggle: HelixSelectElementEvent;
10664
11210
  };
10665
11211
 
10666
11212
  export type HelixSkeletonVueProps = {
10667
11213
  /** The shape of the placeholder: `text`, `circle`, or a block when unset.
10668
11214
 
10669
- Unset is a block, which is what most missing things are. */
11215
+ Unset is a block, which is what most missing things are. A block is the
11216
+ control height until you size it, with a height on the element or
11217
+ `--skeleton-block-size`. */
10670
11218
  shape?: (HelixSkeleton["shape"]) | undefined;
11219
+ /** What is loading, read out as the placeholder's name, such as "Loading
11220
+ profile".
11221
+
11222
+ Absent hides the placeholder from screen readers. */
11223
+ label?: (HelixSkeleton["label"]) | undefined;
10671
11224
  };
10672
11225
 
10673
11226
  export type HelixSkeletonVueEvents = {};
@@ -10708,9 +11261,7 @@ same statement in markup, and `default-value` is how markup seeds a value
10708
11261
  a reset should return to. */
10709
11262
  value?: (HelixSlider["value"]) | undefined;
10710
11263
  /** */
10711
- "aria-label"?: (HelixSlider["namedBy"]) | undefined;
10712
- /** */
10713
- namedBy?: (HelixSlider["namedBy"]) | undefined;
11264
+ "aria-label"?: unknown;
10714
11265
  /** The validation message shown under the control. It replaces the
10715
11266
  browser's message. */
10716
11267
  feedback?: (HelixSlider["feedback"]) | undefined;
@@ -10804,6 +11355,12 @@ the two, since a range has no single number. */
10804
11355
  showValue?: (HelixSlider["showValue"]) | undefined;
10805
11356
  /** How far one press of an arrow key moves the thumb. */
10806
11357
  step?: (HelixSlider["step"]) | undefined;
11358
+ /** What a screen reader says for a thumb's value, with `{value}` filled in,
11359
+ such as `{value} degrees`. Empty announces the number alone. */
11360
+ "value-text"?: (HelixSlider["valueText"]) | undefined;
11361
+ /** What a screen reader says for a thumb's value, with `{value}` filled in,
11362
+ such as `{value} degrees`. Empty announces the number alone. */
11363
+ valueText?: (HelixSlider["valueText"]) | undefined;
10807
11364
  /** Whether the control is disabled and cannot be used.
10808
11365
 
10809
11366
  Reflected, because the styled tier selects on it, and mirrored to
@@ -10945,8 +11502,8 @@ than announced without a name. */
10945
11502
  label?: (HelixSparkline["label"]) | undefined;
10946
11503
  /** What the readings are drawn as.
10947
11504
 
10948
- Absent is a line, `area` is a line with the region beneath it washed, and
10949
- `bar` is a column per reading.
11505
+ Absent is `area`, a line with the region beneath it washed. `line` is the
11506
+ bare stroke, and `bar` is a column per reading.
10950
11507
 
10951
11508
  **A bar plot measures from zero and the other two measure from the data's
10952
11509
  own range**, which is the one way the plots are not interchangeable. A line
@@ -10973,10 +11530,10 @@ is markup, the same reason `curve` lives here. */
10973
11530
  plot?: (HelixSparkline["plot"]) | undefined;
10974
11531
  /** The numbers, separated by whitespace or by commas.
10975
11532
 
10976
- Both separators, so `values="1240 1318"` and an array assigned to the
10977
- property both work: assigning `[1240, 1318]` stringifies to `1240,1318`,
10978
- and a string is what survives React's hydration where an array property
10979
- does not. */
11533
+ An array assigned to the property works too, which is what React 19 does
11534
+ with `values={[1240, 1318]}`. The attribute is the form to prefer, because
11535
+ a string is what survives React's hydration where an array property does
11536
+ not. */
10980
11537
  values?: (HelixSparkline["values"]) | undefined;
10981
11538
  };
10982
11539
 
@@ -11008,6 +11565,9 @@ export type HelixSpeedDialElementEvent<E = Event> = TypedEvent<
11008
11565
  HelixSpeedDial,
11009
11566
  E
11010
11567
  >;
11568
+ /** `toggle` event type */
11569
+ export type HelixSpeedDialToggleElementEvent =
11570
+ HelixSpeedDialElementEvent<ToggleEvent>;
11011
11571
  /** `helix-before-close` event type */
11012
11572
  export type HelixSpeedDialHelixBeforeCloseElementEvent =
11013
11573
  HelixSpeedDialElementEvent<HelixBeforeCloseEvent>;
@@ -11049,14 +11609,14 @@ bottom of the window and there is nothing below it to fan into. */
11049
11609
  };
11050
11610
 
11051
11611
  export type HelixSpeedDialVueEvents = {
11612
+ /** The dial opened or closed. The event carries `newState` and `oldState`. */
11613
+ toggle: HelixSpeedDialToggleElementEvent;
11052
11614
  /** The actions are about to close. Cancelable: cancel it to keep them open. */
11053
11615
  "helix-before-close": HelixSpeedDialHelixBeforeCloseElementEvent;
11054
11616
  /** The actions are about to open. Cancelable: cancel it to keep them closed. */
11055
11617
  "helix-before-open": HelixSpeedDialHelixBeforeOpenElementEvent;
11056
11618
  /** An action was chosen. The action sends the event, and the dial closes after it. Cancelable: cancel it to keep the dial open. */
11057
11619
  "helix-select": HelixSpeedDialHelixSelectElementEvent;
11058
- /** The dial opened or closed. The event carries `newState` and `oldState`. */
11059
- toggle: HelixSpeedDialElementEvent;
11060
11620
  };
11061
11621
 
11062
11622
  /** `HelixSplitter` component event */
@@ -11067,6 +11627,12 @@ export type HelixSplitterHelixBeforeCollapseElementEvent =
11067
11627
  /** `helix-before-resize` event type */
11068
11628
  export type HelixSplitterHelixBeforeResizeElementEvent =
11069
11629
  HelixSplitterElementEvent<HelixBeforeResizeEvent>;
11630
+ /** `helix-collapse` event type */
11631
+ export type HelixSplitterHelixCollapseElementEvent =
11632
+ HelixSplitterElementEvent<HelixCollapseEvent>;
11633
+ /** `helix-resized` event type */
11634
+ export type HelixSplitterHelixResizedElementEvent =
11635
+ HelixSplitterElementEvent<HelixResizedEvent>;
11070
11636
 
11071
11637
  export type HelixSplitterVueProps = {
11072
11638
  /** Whether the divider shows a grip.
@@ -11137,7 +11703,10 @@ consumer's to set. */
11137
11703
  "default-position"?: (HelixSplitter["defaultPosition"] | `${number}`) | undefined;
11138
11704
  /** Where the divider starts, when `position` is not set. */
11139
11705
  defaultPosition?: (HelixSplitter["defaultPosition"]) | undefined;
11140
- /** The divider's name, read by screen readers. */
11706
+ /** The divider's name, read by screen readers.
11707
+
11708
+ An `aria-label` or `aria-labelledby` on the host names the divider too,
11709
+ and wins over this. */
11141
11710
  label?: (HelixSplitter["label"]) | undefined;
11142
11711
  /** How close the divider can come to the end, in the same units as `min`. */
11143
11712
  max?: (HelixSplitter["max"]) | undefined;
@@ -11199,6 +11768,10 @@ export type HelixSplitterVueEvents = {
11199
11768
  "helix-before-collapse": HelixSplitterHelixBeforeCollapseElementEvent;
11200
11769
  /** Fired before the divider settles, and only when the gesture moved it. A press that moved nothing, a drag that came back, an arrow key with no room left, and a corner that moved only the other divider do not fire it. Cancelable: canceling it leaves the position to you and keeps the rest of the gesture, so a collapse the gesture reached still fires `helix-before-collapse`, which you can also cancel. A dragged divider stays where it was dropped until you set your own `position`. */
11201
11770
  "helix-before-resize": HelixSplitterHelixBeforeResizeElementEvent;
11771
+ /** Fired after a pane shuts or reopens, with the side that is shut, or empty where both are open. */
11772
+ "helix-collapse": HelixSplitterHelixCollapseElementEvent;
11773
+ /** Fired after the divider settles somewhere new, with the new position. */
11774
+ "helix-resized": HelixSplitterHelixResizedElementEvent;
11202
11775
  };
11203
11776
 
11204
11777
  export type HelixStatGroupVueProps = {
@@ -11232,6 +11805,11 @@ A property rather than a `Flex` around it, because the unit has to stay on
11232
11805
  the value's baseline whichever way the pair goes, and only this element
11233
11806
  knows which of its children the unit belongs to.
11234
11807
 
11808
+ **`Trend` has a `direction` too, and there it means which way a number
11809
+ moved:** `up`, `down` or `neutral`. A Stat and a Trend are often written
11810
+ side by side, so watch for the mix-up. On a Stat those three words are not
11811
+ layouts, and the pair stays the column.
11812
+
11235
11813
  **Optional rather than defaulted to `column`, which is not a style
11236
11814
  preference.** A reflecting property with a default writes its attribute onto
11237
11815
  the host the moment the element upgrades, and the host is markup the
@@ -11356,9 +11934,7 @@ stylesheets. */
11356
11934
  /** Whether the control starts checked. A form reset returns it to this state. */
11357
11935
  defaultChecked?: (HelixSwitch["defaultChecked"]) | undefined;
11358
11936
  /** */
11359
- "aria-label"?: (HelixSwitch["namedBy"]) | undefined;
11360
- /** */
11361
- namedBy?: (HelixSwitch["namedBy"]) | undefined;
11937
+ "aria-label"?: unknown;
11362
11938
  /** The validation message shown under the control. It replaces the
11363
11939
  browser's message. */
11364
11940
  feedback?: (HelixSwitch["feedback"]) | undefined;
@@ -11427,7 +12003,8 @@ export type HelixSwitchVueEvents = {
11427
12003
  };
11428
12004
 
11429
12005
  export type HelixTableCellVueProps = {
11430
- /** Whether the cell is the header cell of its column. */
12006
+ /** Whether the cell is a header: of its row in a row of values, and of its
12007
+ column in a row of headers alone. */
11431
12008
  header?: (HelixTableCell["header"]) | undefined;
11432
12009
  };
11433
12010
 
@@ -11611,6 +12188,12 @@ export type HelixTableColumnVueEvents = {
11611
12188
  "helix-before-resize": HelixTableColumnHelixBeforeResizeElementEvent;
11612
12189
  };
11613
12190
 
12191
+ /** `HelixTable` component event */
12192
+ export type HelixTableElementEvent<E = Event> = TypedEvent<HelixTable, E>;
12193
+ /** `helix-sort` event type */
12194
+ export type HelixTableHelixSortElementEvent =
12195
+ HelixTableElementEvent<HelixSortEvent>;
12196
+
11614
12197
  export type HelixTableVueProps = {
11615
12198
  /** The text shown and announced when there are no rows and none are loading. */
11616
12199
  "empty-text"?: (HelixTable["emptyText"]) | undefined;
@@ -11626,6 +12209,10 @@ say that without the component knowing what a row looks like. */
11626
12209
  "loading-text"?: (HelixTable["loadingText"]) | undefined;
11627
12210
  /** The text shown and announced while the rows load. */
11628
12211
  loadingText?: (HelixTable["loadingText"]) | undefined;
12212
+ /** The word for an ascending sort, in `sorted-label`. */
12213
+ "ascending-label"?: (HelixTable["ascendingLabel"]) | undefined;
12214
+ /** The word for an ascending sort, in `sorted-label`. */
12215
+ ascendingLabel?: (HelixTable["ascendingLabel"]) | undefined;
11629
12216
  /** The column widths as one track list, written once on the table.
11630
12217
 
11631
12218
  With `TableColumn` children, each track sizes the column in its place, a
@@ -11655,11 +12242,43 @@ and a list here would be a second way to say what that says. This table's
11655
12242
  cells are markup, and a table written as rows of cells with no column
11656
12243
  declared in it has nowhere else to be sized from. */
11657
12244
  columns?: (HelixTable["columns"]) | undefined;
11658
- /** Accessible name for the table. */
12245
+ /** The starting sort order, used until `sort` is set. */
12246
+ "default-sort"?: (HelixTable["defaultSort"]) | undefined;
12247
+ /** The starting sort order, used until `sort` is set. */
12248
+ defaultSort?: (HelixTable["defaultSort"]) | undefined;
12249
+ /** The word for a descending sort, in `sorted-label`. */
12250
+ "descending-label"?: (HelixTable["descendingLabel"]) | undefined;
12251
+ /** The word for a descending sort, in `sorted-label`. */
12252
+ descendingLabel?: (HelixTable["descendingLabel"]) | undefined;
12253
+ /** Accessible name for the table.
12254
+
12255
+ An `aria-label` or `aria-labelledby` on the host names the table too, and
12256
+ wins over this. */
11659
12257
  label?: (HelixTable["label"]) | undefined;
12258
+ /** The sort order, as `field:direction`, where `field` is a sortable column's
12259
+ `field`.
12260
+
12261
+ The rows are compared by the text of their cells in that column, numbers by
12262
+ their value. A reader's click on a sortable heading fires `helix-sort`
12263
+ first, and refusing it leaves the order as it was. `default-sort` seeds an
12264
+ order this element then owns. */
12265
+ sort?: (HelixTable["sort"]) | undefined;
12266
+ /** What screen readers hear when the table is sorted. `{column}` is the
12267
+ column's heading and `{order}` is `ascending-label` or `descending-label`. */
12268
+ "sorted-label"?: (HelixTable["sortedLabel"]) | undefined;
12269
+ /** What screen readers hear when the table is sorted. `{column}` is the
12270
+ column's heading and `{order}` is `ascending-label` or `descending-label`. */
12271
+ sortedLabel?: (HelixTable["sortedLabel"]) | undefined;
12272
+ /** What screen readers hear when the table stops being sorted. */
12273
+ "unsorted-label"?: (HelixTable["unsortedLabel"]) | undefined;
12274
+ /** What screen readers hear when the table stops being sorted. */
12275
+ unsortedLabel?: (HelixTable["unsortedLabel"]) | undefined;
11660
12276
  };
11661
12277
 
11662
- export type HelixTableVueEvents = {};
12278
+ export type HelixTableVueEvents = {
12279
+ /** A different sort order was requested, as `field:direction`, or empty for the order the rows were written in. Cancelable: cancel it to keep the current order. */
12280
+ "helix-sort": HelixTableHelixSortElementEvent;
12281
+ };
11663
12282
 
11664
12283
  export type HelixTableRowVueProps = {};
11665
12284
 
@@ -11716,7 +12335,10 @@ Ignored once `active` is written. */
11716
12335
 
11717
12336
  Ignored once `active` is written. */
11718
12337
  defaultActive?: (HelixTabs["defaultActive"]) | undefined;
11719
- /** The tab list's name, read by screen readers. */
12338
+ /** The tab list's name, read by screen readers.
12339
+
12340
+ An `aria-label` or `aria-labelledby` on the host names the tab list too,
12341
+ and wins over this. */
11720
12342
  label?: (HelixTabs["label"]) | undefined;
11721
12343
  /** Stops the arrow keys from selecting each tab they move to. By default,
11722
12344
  arrowing to a tab also selects it.
@@ -11810,9 +12432,8 @@ neither. That is the test the whole axis registry answers to. */
11810
12432
  already calls them. `helix component`'s `axes` holds the vocabulary.
11811
12433
 
11812
12434
  **Not all seven are statuses, and `accent` is the one worth saying out
11813
- loud**: it is the second emphasis, a rotation off the brand seed rather than
11814
- a color of its own, so it stays in relation when somebody rethemes.
11815
- `primary` is the seed itself. The four that are statuses are the four
12435
+ loud**: it is the second emphasis, the second color a theme names, and the
12436
+ brand itself until one is named. `primary` is the brand. The four that are statuses are the four
11816
12437
  `HelixStatusTone` names, and those are the ones that would carry a glyph
11817
12438
  somewhere that draws one.
11818
12439
 
@@ -11845,7 +12466,12 @@ export type HelixTagVueEvents = {
11845
12466
  export type HelixTextVueProps = {
11846
12467
  /** The HTML element to render.
11847
12468
 
11848
- Decides the outline and the semantics. */
12469
+ Decides the outline and the semantics.
12470
+
12471
+ **`label` gives the label ramp and labels no control.** The element is in
12472
+ this one's shadow root, which neither `for` nor a wrapped control can
12473
+ reach, so a page that writes either is warned. Name a Helix field with its
12474
+ own `label`, and a native control with `<label data-text="label">`. */
11849
12475
  as?: (HelixText["as"]) | undefined;
11850
12476
  /** Makes the text quieter: `muted`, or the quieter `subtle`.
11851
12477
 
@@ -11874,7 +12500,8 @@ why `muted` and `subtle` moved there. */
11874
12500
  tone?: (HelixText["tone"]) | undefined;
11875
12501
  /** The type style, which sets the size, weight, leading, and tracking.
11876
12502
 
11877
- Defaults to the one that matches `as`. */
12503
+ Defaults to the one that matches `as`: `body` for `p`, `body-strong` for
12504
+ `strong`, `h5` and `h6`. A `span` or an `em` keeps the type around it. */
11878
12505
  variant?: (HelixText["variant"]) | undefined;
11879
12506
  };
11880
12507
 
@@ -11899,9 +12526,7 @@ same statement in markup, and `default-value` is how markup seeds a value
11899
12526
  a reset should return to. */
11900
12527
  value?: (HelixTextarea["value"]) | undefined;
11901
12528
  /** */
11902
- "aria-label"?: (HelixTextarea["namedBy"]) | undefined;
11903
- /** */
11904
- namedBy?: (HelixTextarea["namedBy"]) | undefined;
12529
+ "aria-label"?: unknown;
11905
12530
  /** The validation message shown under the control. It replaces the
11906
12531
  browser's message. */
11907
12532
  feedback?: (HelixTextarea["feedback"]) | undefined;
@@ -12056,6 +12681,9 @@ export type HelixTimeInputElementEvent<E = Event> = TypedEvent<
12056
12681
  HelixTimeInput,
12057
12682
  E
12058
12683
  >;
12684
+ /** `toggle` event type */
12685
+ export type HelixTimeInputToggleElementEvent =
12686
+ HelixTimeInputElementEvent<ToggleEvent>;
12059
12687
  /** `helix-before-change` event type */
12060
12688
  export type HelixTimeInputHelixBeforeChangeElementEvent =
12061
12689
  HelixTimeInputElementEvent<HelixBeforeChangeEvent>;
@@ -12152,9 +12780,7 @@ same statement in markup, and `default-value` is how markup seeds a value
12152
12780
  a reset should return to. */
12153
12781
  value?: (HelixTimeInput["value"]) | undefined;
12154
12782
  /** */
12155
- "aria-label"?: (HelixTimeInput["namedBy"]) | undefined;
12156
- /** */
12157
- namedBy?: (HelixTimeInput["namedBy"]) | undefined;
12783
+ "aria-label"?: unknown;
12158
12784
  /** The validation message shown under the control. It replaces the
12159
12785
  browser's message. */
12160
12786
  feedback?: (HelixTimeInput["feedback"]) | undefined;
@@ -12188,6 +12814,16 @@ the field and does not reach that one. */
12188
12814
  Empty leaves the attribute off, which is the browser's default and is what
12189
12815
  lets autofill work at all. */
12190
12816
  autocomplete?: (HelixTimeInput["autocomplete"]) | undefined;
12817
+ /** Times that cannot be chosen, as `HH:mm`, separated by commas or spaces.
12818
+
12819
+ Handed to the list, which offers them as unavailable, and checked against
12820
+ a typed time, which is then invalid. */
12821
+ "disable-times"?: (HelixTimeInput["disableTimes"]) | undefined;
12822
+ /** Times that cannot be chosen, as `HH:mm`, separated by commas or spaces.
12823
+
12824
+ Handed to the list, which offers them as unavailable, and checked against
12825
+ a typed time, which is then invalid. */
12826
+ disableTimes?: (HelixTimeInput["disableTimes"]) | undefined;
12191
12827
  /** Language tag the times are written in.
12192
12828
 
12193
12829
  Absent uses the runtime's own. */
@@ -12261,6 +12897,10 @@ never something this element would refuse to read back. */
12261
12897
  "trigger-label"?: (HelixTimeInput["triggerLabel"]) | undefined;
12262
12898
  /** The name of the button that opens the list, read by screen readers. */
12263
12899
  triggerLabel?: (HelixTimeInput["triggerLabel"]) | undefined;
12900
+ /** The message shown when `disable-times` bars a time. */
12901
+ "unavailable-message"?: (HelixTimeInput["unavailableMessage"]) | undefined;
12902
+ /** The message shown when `disable-times` bars a time. */
12903
+ unavailableMessage?: (HelixTimeInput["unavailableMessage"]) | undefined;
12264
12904
  /** Whether the panel shows one list of times or a column for each part of the
12265
12905
  time.
12266
12906
 
@@ -12316,6 +12956,8 @@ a consumer handing over `new Date()` gets the time of day they expected. */
12316
12956
  };
12317
12957
 
12318
12958
  export type HelixTimeInputVueEvents = {
12959
+ /** Fired after the list opens or closes, with `newState` and `oldState`. */
12960
+ toggle: HelixTimeInputToggleElementEvent;
12319
12961
  /** Fired after the value changes. */
12320
12962
  change: HelixTimeInputElementEvent;
12321
12963
  /** Fired before the time changes. Cancelable: canceling it stops the change and leaves the decision to you. */
@@ -12326,8 +12968,6 @@ export type HelixTimeInputVueEvents = {
12326
12968
  "helix-before-open": HelixTimeInputHelixBeforeOpenElementEvent;
12327
12969
  /** Fired after the value changes. */
12328
12970
  input: HelixTimeInputElementEvent;
12329
- /** Fired after the list opens or closes, with `newState` and `oldState`. */
12330
- toggle: HelixTimeInputElementEvent;
12331
12971
  };
12332
12972
 
12333
12973
  /** `HelixTimePicker` component event */
@@ -12363,7 +13003,7 @@ speaks it. Absent is the control's own sentence, in English. */
12363
13003
  named for the validity flag it reports, so a form in another language
12364
13004
  speaks it. Absent is the control's own sentence, in English. */
12365
13005
  badInputMessage?: (HelixTimePicker["badInputMessage"]) | undefined;
12366
- /** Times that cannot be chosen, comma separated, as `HH:mm`.
13006
+ /** Times that cannot be chosen, as `HH:mm`, separated by commas or spaces.
12367
13007
 
12368
13008
  The counterpart to Date Picker's `disable-dates`, and it exists for the same
12369
13009
  shape of problem: `min` and `max` take away a span, and what a booking
@@ -12374,7 +13014,7 @@ A time not on the step is simply never offered, so it is not an error to
12374
13014
  name one, and naming every time in the list is how the empty state is
12375
13015
  reached honestly rather than by handing over an empty range. */
12376
13016
  "disable-times"?: (HelixTimePicker["disableTimes"]) | undefined;
12377
- /** Times that cannot be chosen, comma separated, as `HH:mm`.
13017
+ /** Times that cannot be chosen, as `HH:mm`, separated by commas or spaces.
12378
13018
 
12379
13019
  The counterpart to Date Picker's `disable-dates`, and it exists for the same
12380
13020
  shape of problem: `min` and `max` take away a span, and what a booking
@@ -12385,6 +13025,10 @@ A time not on the step is simply never offered, so it is not an error to
12385
13025
  name one, and naming every time in the list is how the empty state is
12386
13026
  reached honestly rather than by handing over an empty range. */
12387
13027
  disableTimes?: (HelixTimePicker["disableTimes"]) | undefined;
13028
+ /** What the wheel of hours is called, read by screen readers. */
13029
+ "hour-label"?: (HelixTimePicker["hourLabel"]) | undefined;
13030
+ /** What the wheel of hours is called, read by screen readers. */
13031
+ hourLabel?: (HelixTimePicker["hourLabel"]) | undefined;
12388
13032
  /** Whether the current selection fails validation.
12389
13033
 
12390
13034
  A flag rather than a message, the same split Date Picker draws. A flat
@@ -12393,16 +13037,34 @@ the label, the hint and the feedback, and a second message inside the panel
12393
13037
  would be the same error said twice. What is left for the picker is the one
12394
13038
  thing the field cannot draw from outside, the mark on the answer itself. */
12395
13039
  invalid?: (HelixTimePicker["invalid"]) | undefined;
12396
- /** Accessible name for the list, which has no visible one of its own. */
13040
+ /** Accessible name for the list, which has no visible one of its own.
13041
+
13042
+ An `aria-label` or `aria-labelledby` on the host names the list instead. */
12397
13043
  label?: (HelixTimePicker["label"]) | undefined;
12398
13044
  /** Language tag the times are written in.
12399
13045
 
12400
13046
  Absent uses the runtime's own. */
12401
13047
  locale?: (HelixTimePicker["locale"]) | undefined;
13048
+ /** Stops the arrow keys in the list from choosing each time they move to.
13049
+ Enter, Space or a click chooses.
13050
+
13051
+ Time Input sets it, so a reader moves through the list before the panel
13052
+ closes on a time. */
13053
+ manual?: (HelixTimePicker["manual"]) | undefined;
12402
13054
  /** Latest time offered, as `HH:mm`. */
12403
13055
  max?: (HelixTimePicker["max"]) | undefined;
13056
+ /** What the wheel of the half of the day is called, read by screen readers.
13057
+ Its two options are written as the locale writes them, such as AM and PM. */
13058
+ "meridiem-label"?: (HelixTimePicker["meridiemLabel"]) | undefined;
13059
+ /** What the wheel of the half of the day is called, read by screen readers.
13060
+ Its two options are written as the locale writes them, such as AM and PM. */
13061
+ meridiemLabel?: (HelixTimePicker["meridiemLabel"]) | undefined;
12404
13062
  /** Earliest time offered, as `HH:mm`. */
12405
13063
  min?: (HelixTimePicker["min"]) | undefined;
13064
+ /** What the wheel of minutes is called, read by screen readers. */
13065
+ "minute-label"?: (HelixTimePicker["minuteLabel"]) | undefined;
13066
+ /** What the wheel of minutes is called, read by screen readers. */
13067
+ minuteLabel?: (HelixTimePicker["minuteLabel"]) | undefined;
12406
13068
  /** How many times can be held at once.
12407
13069
 
12408
13070
  Absent is one. `range` holds a start and an end with everything between
@@ -12421,6 +13083,18 @@ and a wheel has exactly one value by construction. Rather than draw
12421
13083
  something that cannot say what it holds, `wheels` renders as a list
12422
13084
  whenever a mode is set. */
12423
13085
  mode?: (HelixTimePicker["mode"]) | undefined;
13086
+ /** The validation message for a time after `max`. `{max}` is replaced with
13087
+ `max`, written in `locale`. */
13088
+ "range-overflow-message"?: (HelixTimePicker["rangeOverflowMessage"]) | undefined;
13089
+ /** The validation message for a time after `max`. `{max}` is replaced with
13090
+ `max`, written in `locale`. */
13091
+ rangeOverflowMessage?: (HelixTimePicker["rangeOverflowMessage"]) | undefined;
13092
+ /** The validation message for a time before `min`. `{min}` is replaced with
13093
+ `min`, written in `locale`. */
13094
+ "range-underflow-message"?: (HelixTimePicker["rangeUnderflowMessage"]) | undefined;
13095
+ /** The validation message for a time before `min`. `{min}` is replaced with
13096
+ `min`, written in `locale`. */
13097
+ rangeUnderflowMessage?: (HelixTimePicker["rangeUnderflowMessage"]) | undefined;
12424
13098
  /** Blocks changes to the time. The value is still submitted with the form.
12425
13099
 
12426
13100
  **Enforced by refusing every request in one place**, which is the seam this
@@ -12453,6 +13127,14 @@ Fifteen, which is four rows an hour and ninety-six in a day: enough that a
12453
13127
  reader scrolls rather than hunts, and few enough that the list is a list.
12454
13128
  Anything under five is a thousand rows and wants a field instead. */
12455
13129
  step?: (HelixTimePicker["step"]) | undefined;
13130
+ /** The validation message for a time that `step` skips. */
13131
+ "step-mismatch-message"?: (HelixTimePicker["stepMismatchMessage"]) | undefined;
13132
+ /** The validation message for a time that `step` skips. */
13133
+ stepMismatchMessage?: (HelixTimePicker["stepMismatchMessage"]) | undefined;
13134
+ /** The validation message for a time that `disable-times` bars. */
13135
+ "unavailable-message"?: (HelixTimePicker["unavailableMessage"]) | undefined;
13136
+ /** The validation message for a time that `disable-times` bars. */
13137
+ unavailableMessage?: (HelixTimePicker["unavailableMessage"]) | undefined;
12456
13138
  /** The validation message for a required time picker with no time chosen. */
12457
13139
  "value-missing-message"?: (HelixTimePicker["valueMissingMessage"]) | undefined;
12458
13140
  /** The validation message for a required time picker with no time chosen. */
@@ -12687,9 +13369,7 @@ same statement in markup, and `default-value` is how markup seeds a value
12687
13369
  a reset should return to. */
12688
13370
  value?: (HelixToggleGroup["value"]) | undefined;
12689
13371
  /** */
12690
- "aria-label"?: (HelixToggleGroup["namedBy"]) | undefined;
12691
- /** */
12692
- namedBy?: (HelixToggleGroup["namedBy"]) | undefined;
13372
+ "aria-label"?: unknown;
12693
13373
  /** The validation message shown under the control. It replaces the
12694
13374
  browser's message. */
12695
13375
  feedback?: (HelixToggleGroup["feedback"]) | undefined;
@@ -12774,12 +13454,22 @@ imperatively later, and nothing is hydrating by then.
12774
13454
 
12775
13455
  Here rather than on each control. */
12776
13456
  name?: (HelixToggleGroup["name"]) | undefined;
13457
+ /** Whether the group holds a tab stop of its own.
13458
+
13459
+ A toolbar is one tab stop, so a toolbar the group sits in sets this to
13460
+ `false` while its stop is on another control, and every item, the chosen
13461
+ one too, is then out of the tab order. The arrow keys inside the group
13462
+ work as before once focus is in it.
13463
+
13464
+ No attribute: it is coordination between elements, and a consumer has no
13465
+ reason to set it. */
13466
+ focusable?: (HelixToggleGroup["focusable"]) | undefined;
12777
13467
  };
12778
13468
 
12779
13469
  export type HelixToggleGroupVueEvents = {
12780
13470
  /** Fired after the value changes. */
12781
13471
  change: HelixToggleGroupElementEvent;
12782
- /** Fired before the choice changes. Cancelable: call `preventDefault()` to keep the current choice. It is the only way to block a change. */
13472
+ /** Fired before the choice changes. Cancelable: call `preventDefault()` to keep the current choice. */
12783
13473
  "helix-before-change": HelixToggleGroupHelixBeforeChangeElementEvent;
12784
13474
  /** Fired when an item is chosen. The item sends it, and you listen for it on the group. Cancelable: call `preventDefault()` to keep the current choice. */
12785
13475
  "helix-select": HelixToggleGroupHelixSelectElementEvent;
@@ -12831,13 +13521,15 @@ name is the fault `TreeItem` avoids by mirroring to `data-selected`.
12831
13521
  Splitting them means moving what every stylesheet selects on, which is a
12832
13522
  change of its own rather than a property being added. */
12833
13523
  defaultSelected?: (HelixToggle["defaultSelected"]) | undefined;
12834
- /** Whether the item holds the group's tab stop while nothing is chosen.
13524
+ /** Whether the item holds the group's tab stop. Unset, the chosen item holds
13525
+ it.
12835
13526
 
12836
- The stop normally rides on the selection, and an unanswered group has no
12837
- selection, so without this the keyboard cannot reach it. Written by the
12838
- group, with no attribute: it is coordination between elements, and
12839
- `tabindex` on a host the consumer rendered is the change a React consumer's
12840
- hydration reports and does not patch up. */
13527
+ Written by the group on every item: `true` for the chosen item, or for the
13528
+ first item that can be chosen while there is no selection to carry the
13529
+ stop, and `false` for every item, the chosen one too, while a toolbar the
13530
+ group sits in holds the stop. No attribute: it is coordination between
13531
+ elements, and `tabindex` on a host the consumer rendered is the change a
13532
+ React consumer's hydration reports and does not patch up. */
12841
13533
  focusable?: (HelixToggle["focusable"]) | undefined;
12842
13534
  };
12843
13535
 
@@ -12847,7 +13539,10 @@ export type HelixToggleVueEvents = {
12847
13539
  };
12848
13540
 
12849
13541
  export type HelixToolbarVueProps = {
12850
- /** The toolbar's name, read by screen readers. */
13542
+ /** The toolbar's name, read by screen readers.
13543
+
13544
+ An `aria-label` or `aria-labelledby` on the host names the toolbar too,
13545
+ and wins over this. */
12851
13546
  label?: (HelixToolbar["label"]) | undefined;
12852
13547
  /** The direction the arrow keys move focus in. */
12853
13548
  orientation?: (HelixToolbar["orientation"]) | undefined;
@@ -12857,6 +13552,9 @@ export type HelixToolbarVueEvents = {};
12857
13552
 
12858
13553
  /** `HelixTooltip` component event */
12859
13554
  export type HelixTooltipElementEvent<E = Event> = TypedEvent<HelixTooltip, E>;
13555
+ /** `toggle` event type */
13556
+ export type HelixTooltipToggleElementEvent =
13557
+ HelixTooltipElementEvent<ToggleEvent>;
12860
13558
  /** `helix-before-close` event type */
12861
13559
  export type HelixTooltipHelixBeforeCloseElementEvent =
12862
13560
  HelixTooltipElementEvent<HelixBeforeCloseEvent>;
@@ -12992,22 +13690,30 @@ at a box the bubble genuinely does not fit inside. See `within` on
12992
13690
  };
12993
13691
 
12994
13692
  export type HelixTooltipVueEvents = {
13693
+ /** The bubble opened or closed. The event carries `newState` and `oldState`. */
13694
+ toggle: HelixTooltipToggleElementEvent;
12995
13695
  /** The bubble is about to hide. Cancelable: cancel it to keep it shown. */
12996
13696
  "helix-before-close": HelixTooltipHelixBeforeCloseElementEvent;
12997
13697
  /** The bubble is about to show. Cancelable: cancel it to keep it hidden. */
12998
13698
  "helix-before-open": HelixTooltipHelixBeforeOpenElementEvent;
12999
- /** The bubble opened or closed. The event carries `newState` and `oldState`. */
13000
- toggle: HelixTooltipElementEvent;
13001
13699
  };
13002
13700
 
13003
13701
  /** `HelixTour` component event */
13004
13702
  export type HelixTourElementEvent<E = Event> = TypedEvent<HelixTour, E>;
13703
+ /** `toggle` event type */
13704
+ export type HelixTourToggleElementEvent = HelixTourElementEvent<ToggleEvent>;
13705
+ /** `helix-activate` event type */
13706
+ export type HelixTourHelixActivateElementEvent =
13707
+ HelixTourElementEvent<HelixActivateEvent>;
13005
13708
  /** `helix-before-activate` event type */
13006
13709
  export type HelixTourHelixBeforeActivateElementEvent =
13007
13710
  HelixTourElementEvent<HelixBeforeActivateEvent>;
13008
13711
  /** `helix-before-close` event type */
13009
13712
  export type HelixTourHelixBeforeCloseElementEvent =
13010
13713
  HelixTourElementEvent<HelixBeforeCloseEvent>;
13714
+ /** `helix-before-open` event type */
13715
+ export type HelixTourHelixBeforeOpenElementEvent =
13716
+ HelixTourElementEvent<HelixBeforeOpenEvent>;
13011
13717
  /** `helix-complete` event type */
13012
13718
  export type HelixTourHelixCompleteElementEvent =
13013
13719
  HelixTourElementEvent<HelixCompleteEvent>;
@@ -13016,6 +13722,23 @@ export type HelixTourHelixTourAskElementEvent =
13016
13722
  HelixTourElementEvent<HelixTourAskEvent>;
13017
13723
 
13018
13724
  export type HelixTourVueProps = {
13725
+ /** Whether the element starts open. Ignored once `open` is written. */
13726
+ "default-open"?: (HelixTour["defaultOpen"]) | undefined;
13727
+ /** Whether the element starts open. Ignored once `open` is written. */
13728
+ defaultOpen?: (HelixTour["defaultOpen"]) | undefined;
13729
+ /** Whether the element is open.
13730
+
13731
+ One property, not two, so `dialog.open` answers the question anyone
13732
+ asking it meant. Writing always applies; `<helix-dialog open>` is the
13733
+ same statement in markup.
13734
+
13735
+ **Not reflected, and that is required rather than tidy.** Reflection
13736
+ writes the resolved state back as an attribute, so an element that opened
13737
+ itself would put `open` on its own host: cloned, serialized for
13738
+ hydration, or diffed by a framework, it comes back holding whatever the
13739
+ last reader did rather than what the author wrote. `:state(open)` carries
13740
+ the resolved state for stylesheets, which is what the mirror is for. */
13741
+ open?: (HelixTour["open"]) | undefined;
13019
13742
  /** Label for the control that goes back, passed to every stop. */
13020
13743
  "back-label"?: (HelixTour["backLabel"]) | undefined;
13021
13744
  /** Label for the control that goes back, passed to every stop. */
@@ -13045,8 +13768,6 @@ The shape is `Carousel`'s, which is the nearest thing in the library: a
13045
13768
  "next-label"?: (HelixTour["nextLabel"]) | undefined;
13046
13769
  /** Label for the control that goes on. */
13047
13770
  nextLabel?: (HelixTour["nextLabel"]) | undefined;
13048
- /** Whether the tour is running. */
13049
- open?: (HelixTour["open"]) | undefined;
13050
13771
  /** Label for the control that leaves the tour. */
13051
13772
  "skip-label"?: (HelixTour["skipLabel"]) | undefined;
13052
13773
  /** Label for the control that leaves the tour. */
@@ -13058,10 +13779,16 @@ The shape is `Carousel`'s, which is the nearest thing in the library: a
13058
13779
  };
13059
13780
 
13060
13781
  export type HelixTourVueEvents = {
13782
+ /** Sent when the tour starts or ends, with `newState` and `oldState`. */
13783
+ toggle: HelixTourToggleElementEvent;
13784
+ /** Fired after the current stop changes, with the new index. */
13785
+ "helix-activate": HelixTourHelixActivateElementEvent;
13061
13786
  /** Fired before the current stop changes, with the new index. Cancelable: call `preventDefault()` to stay on the current stop. */
13062
13787
  "helix-before-activate": HelixTourHelixBeforeActivateElementEvent;
13063
13788
  /** Fired before the user ends the tour early. Cancelable: call `preventDefault()` to keep the tour open. */
13064
13789
  "helix-before-close": HelixTourHelixBeforeCloseElementEvent;
13790
+ /** Fired before `requestOpen(true)` starts the tour. Cancelable: call `preventDefault()` to keep it closed. */
13791
+ "helix-before-open": HelixTourHelixBeforeOpenElementEvent;
13065
13792
  /** Fired when the last stop is finished. */
13066
13793
  "helix-complete": HelixTourHelixCompleteElementEvent;
13067
13794
  /** Fired when a stop's control is pressed to move the tour. The stop sends it, and the tour handles it. */
@@ -13119,6 +13846,9 @@ export type HelixTreeItemElementEvent<E = Event> = TypedEvent<HelixTreeItem, E>;
13119
13846
  /** `helix-select` event type */
13120
13847
  export type HelixTreeItemHelixSelectElementEvent =
13121
13848
  HelixTreeItemElementEvent<HelixSelectEvent>;
13849
+ /** `toggle` event type */
13850
+ export type HelixTreeItemToggleElementEvent =
13851
+ HelixTreeItemElementEvent<ToggleEvent>;
13122
13852
  /** `helix-before-close` event type */
13123
13853
  export type HelixTreeItemHelixBeforeCloseElementEvent =
13124
13854
  HelixTreeItemElementEvent<HelixBeforeCloseEvent>;
@@ -13198,12 +13928,12 @@ hydrates. */
13198
13928
  export type HelixTreeItemVueEvents = {
13199
13929
  /** Fired when the item is chosen, and cancelable. Canceling it changes nothing. */
13200
13930
  "helix-select": HelixTreeItemHelixSelectElementEvent;
13931
+ /** Sent when the branch opens or closes, with `newState` and `oldState`. */
13932
+ toggle: HelixTreeItemToggleElementEvent;
13201
13933
  /** Fired before a branch closes, and cancelable. */
13202
13934
  "helix-before-close": HelixTreeItemHelixBeforeCloseElementEvent;
13203
13935
  /** Fired before a branch opens, and cancelable. */
13204
13936
  "helix-before-open": HelixTreeItemHelixBeforeOpenElementEvent;
13205
- /** Sent when the branch opens or closes, with `newState` and `oldState`. */
13206
- toggle: HelixTreeItemElementEvent;
13207
13937
  };
13208
13938
 
13209
13939
  /** `HelixTree` component event */
@@ -13294,7 +14024,10 @@ Ignored once `active` is written. */
13294
14024
 
13295
14025
  Ignored once `active` is written. */
13296
14026
  defaultActive?: (HelixTree["defaultActive"]) | undefined;
13297
- /** Accessible name for the tree. */
14027
+ /** Accessible name for the tree.
14028
+
14029
+ An `aria-label` or `aria-labelledby` on the host names the tree too, and
14030
+ wins over this. */
13298
14031
  label?: (HelixTree["label"]) | undefined;
13299
14032
  /** What a deeper level means: `peer` for no change, `subordinate` for a lower
13300
14033
  rank, or `heading` for a parent that heads the items under it.
@@ -13343,6 +14076,10 @@ export type HelixTreeVueEvents = {
13343
14076
  };
13344
14077
 
13345
14078
  export type HelixTrendVueProps = {
14079
+ /** The word read out after the direction when the move is an improvement. */
14080
+ "better-label"?: (HelixTrend["betterLabel"]) | undefined;
14081
+ /** The word read out after the direction when the move is an improvement. */
14082
+ betterLabel?: (HelixTrend["betterLabel"]) | undefined;
13346
14083
  /** Which way the measurement moved.
13347
14084
 
13348
14085
  Absent is neutral, so a trend with nothing to report draws a bar rather
@@ -13352,6 +14089,10 @@ attribute onto the host the moment the element upgrades, and the host is
13352
14089
  markup the consumer rendered, which React compares against what it rendered
13353
14090
  and reports as a hydration mismatch. */
13354
14091
  direction?: (HelixTrend["direction"]) | undefined;
14092
+ /** The word read out for a move down. */
14093
+ "down-label"?: (HelixTrend["downLabel"]) | undefined;
14094
+ /** The word read out for a move down. */
14095
+ downLabel?: (HelixTrend["downLabel"]) | undefined;
13355
14096
  /** Which direction counts as an improvement for this metric.
13356
14097
 
13357
14098
  Absent states the movement without judging it, which is the honest default:
@@ -13359,6 +14100,20 @@ revenue up is good news and latency up is bad news, and only the consumer
13359
14100
  knows which one this is. Set it once per metric and it holds while the
13360
14101
  direction changes underneath. */
13361
14102
  good?: (HelixTrend["good"]) | undefined;
14103
+ /** The word read out for no move, or for a direction that is not one of the
14104
+ three. */
14105
+ "unchanged-label"?: (HelixTrend["unchangedLabel"]) | undefined;
14106
+ /** The word read out for no move, or for a direction that is not one of the
14107
+ three. */
14108
+ unchangedLabel?: (HelixTrend["unchangedLabel"]) | undefined;
14109
+ /** The word read out for a move up. */
14110
+ "up-label"?: (HelixTrend["upLabel"]) | undefined;
14111
+ /** The word read out for a move up. */
14112
+ upLabel?: (HelixTrend["upLabel"]) | undefined;
14113
+ /** The word read out after the direction when the move is a setback. */
14114
+ "worse-label"?: (HelixTrend["worseLabel"]) | undefined;
14115
+ /** The word read out after the direction when the move is a setback. */
14116
+ worseLabel?: (HelixTrend["worseLabel"]) | undefined;
13362
14117
  };
13363
14118
 
13364
14119
  export type HelixTrendVueEvents = {};
@@ -13869,7 +14624,10 @@ right whenever the rows really are one height and is the cheaper of the two. */
13869
14624
  /** The id of the script element that holds the rows as JSON. */
13870
14625
  for?: (HelixVirtualList["for"]) | undefined;
13871
14626
  /** The list's name, read by screen readers, because only some of its rows
13872
- are rendered at a time. */
14627
+ are rendered at a time.
14628
+
14629
+ An `aria-label` or `aria-labelledby` on the host names the list too, and
14630
+ wins over this. */
13873
14631
  label?: (HelixVirtualList["label"]) | undefined;
13874
14632
  /** Places rows by their measured height. Without it, every row is placed by
13875
14633
  `estimate`.
@@ -13935,6 +14693,8 @@ export type CustomCssProperties = {
13935
14693
  "--avatar-size"?: (string) | undefined;
13936
14694
  /** The fill of the indicator. */
13937
14695
  "--badge-background-color"?: (string) | undefined;
14696
+ /** The color of the count, to pair with a fill set through `--badge-background-color`. */
14697
+ "--badge-color"?: (string) | undefined;
13938
14698
  /** Pulls the mark in from the corner, along both axes. */
13939
14699
  "--badge-offset"?: (string) | undefined;
13940
14700
  /** The color of the ring between the indicator and what is behind it. */
@@ -14191,6 +14951,12 @@ export type CustomCssProperties = {
14191
14951
  "--command-list-size"?: (string) | undefined;
14192
14952
  /** How wide the palette is. Defaults to `40rem`. */
14193
14953
  "--command-size"?: (string) | undefined;
14954
+ /** Fill behind the button, in every state. */
14955
+ "--icon-button-background-color"?: (string) | undefined;
14956
+ /** Fill behind the button under the pointer. Without it, `--icon-button-background-color` also applies on hover. */
14957
+ "--icon-button-background-color-hover"?: (string) | undefined;
14958
+ /** Icon color. */
14959
+ "--icon-button-foreground-color"?: (string) | undefined;
14194
14960
  /** Corner radius of the control, which a group flattens through `--button-radius-start` and `--button-radius-end`. */
14195
14961
  "--icon-button-radius"?: (string) | undefined;
14196
14962
  /** Shadow of a raised icon button. */
@@ -14469,7 +15235,7 @@ export type CustomCssProperties = {
14469
15235
  "--listbox-max-block-size"?: (string) | undefined;
14470
15236
  /** Color of the moving arc. */
14471
15237
  "--loader-color"?: (string) | undefined;
14472
- /** Diameter. Defaults to 1.5em. */
15238
+ /** Diameter. Defaults to the size token that `size` picks, which is 1.5rem at the default density. */
14473
15239
  "--loader-size"?: (string) | undefined;
14474
15240
  /** Color of the circle behind the arc. */
14475
15241
  "--loader-track-color"?: (string) | undefined;
@@ -14551,13 +15317,13 @@ export type CustomCssProperties = {
14551
15317
  "--menu-background-color"?: (string) | undefined;
14552
15318
  /** Color of the panel's edge. */
14553
15319
  "--menu-border-color"?: (string) | undefined;
14554
- /** Width of the panel's edge. Defaults to `--helix-border-floating`, which is `0`, so the panel stands out by its shadow unless a theme sets a border. `--helix-border-floating`, which is `0`, so the panel is told apart by its lift unless a theme says otherwise. */
15320
+ /** Width of the panel's edge. Defaults to `--helix-border-floating`, which is `0`, so the panel stands out by its shadow unless a theme sets a border. */
14555
15321
  "--menu-border-width"?: (string) | undefined;
14556
15322
  /** The tallest the menu grows before it scrolls. */
14557
15323
  "--menu-max-block-size"?: (string) | undefined;
14558
15324
  /** The narrowest the menu gets. */
14559
15325
  "--menu-min-inline-size"?: (string) | undefined;
14560
- /** Shadow under the panel. Defaults to `--helix-shadow-floating`, so the panel keeps a shadow over any content below it. floating surface sits over content nobody can predict, so it keeps a lift by default. */
15326
+ /** Shadow under the panel. Defaults to `--helix-shadow-floating`, so the panel keeps a shadow over any content below it. */
14561
15327
  "--menu-shadow"?: (string) | undefined;
14562
15328
  /** The fill color. Overrides the band's tone. */
14563
15329
  "--meter-color"?: (string) | undefined;
@@ -14683,9 +15449,9 @@ export type CustomCssProperties = {
14683
15449
  "--progress-track-color"?: (string) | undefined;
14684
15450
  /** The value as a fraction of the range, 0 to 1. Pinned to 1 while indeterminate. */
14685
15451
  "--progress-fraction"?: (string) | undefined;
14686
- /** The fill behind the modules, including the quiet zone. */
15452
+ /** The fill behind the modules, including the quiet zone and the logo's box. */
14687
15453
  "--qr-code-background-color"?: (string) | undefined;
14688
- /** Color of the dark modules. Defaults to the page's text color. */
15454
+ /** Color of the dark modules. Defaults to the dark media ink, which is the same in both color schemes so the code scans. */
14689
15455
  "--qr-code-color"?: (string) | undefined;
14690
15456
  /** Color of the three corner squares. Defaults to the color of the modules. */
14691
15457
  "--qr-code-finder-color"?: (string) | undefined;
@@ -14795,6 +15561,8 @@ export type CustomCssProperties = {
14795
15561
  "--select-shadow"?: (string) | undefined;
14796
15562
  /** Maximum height of the panel. */
14797
15563
  "--select-surface-max-block-size"?: (string) | undefined;
15564
+ /** The height of the block shape, which is the shape when `shape` is unset. Defaults to the control height. */
15565
+ "--skeleton-block-size"?: (string) | undefined;
14798
15566
  /** The diameter of the circle shape. */
14799
15567
  "--skeleton-size"?: (string) | undefined;
14800
15568
  /** The border color of the link while it is shown. */
@@ -14901,6 +15669,24 @@ export type CustomCssProperties = {
14901
15669
  "--table-columns"?: (string) | undefined;
14902
15670
  /** 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. */
14903
15671
  "--table-template"?: (string) | undefined;
15672
+ /** The space between the tab row and the panel's content. */
15673
+ "--tabs-panel-padding-block-start"?: (string) | undefined;
15674
+ /** The space between tabs. */
15675
+ "--tabs-gap"?: (string) | undefined;
15676
+ /** The fill of the mark on the current tab: the bar under `underlined`, and the pill otherwise. */
15677
+ "--tabs-indicator-color"?: (string) | undefined;
15678
+ /** The height of the bar under `underlined`. */
15679
+ "--tabs-indicator-thickness"?: (string) | undefined;
15680
+ /** The color of the rule under the row in `underlined`. */
15681
+ "--tabs-rule-color"?: (string) | undefined;
15682
+ /** The height of a tab. `segmented` sizes its tabs to the track and does not read it. */
15683
+ "--tabs-tab-block-size"?: (string) | undefined;
15684
+ /** The label color of a tab that is not current. */
15685
+ "--tabs-tab-color"?: (string) | undefined;
15686
+ /** The space either side of the label. */
15687
+ "--tabs-tab-padding-inline"?: (string) | undefined;
15688
+ /** The label color of the current tab. */
15689
+ "--tabs-tab-selected-color"?: (string) | undefined;
14904
15690
  /** The fill behind the tag. */
14905
15691
  "--tag-background-color"?: (string) | undefined;
14906
15692
  /** The color of the tag's edge. */
@@ -15053,7 +15839,7 @@ export interface WcToolkitVueGlobalComponents {
15053
15839
  HelixAccordionVueProps,
15054
15840
  HelixAccordionVueEvents
15055
15841
  >;
15056
- /** Full width and flat. The tone is a tinted fill and a hairline along the bottom edge, with no border on the other sides, so the announcement is a band across the top of the page. */
15842
+ /** Full width and flat. The tone is a tinted fill with no border, so the announcement is a band across the top of the page. 'separation="outlined"' adds a hairline along the bottom edge. */
15057
15843
  "helix-announcement": DefineCustomElement<
15058
15844
  HelixAnnouncement,
15059
15845
  HelixAnnouncementVueProps,
@@ -15083,7 +15869,7 @@ export interface WcToolkitVueGlobalComponents {
15083
15869
  HelixAvatarGroupVueProps,
15084
15870
  HelixAvatarGroupVueEvents
15085
15871
  >;
15086
- /** The font size of the initials is set in 'em' against the avatar's own dimension, so the initials scale with every size, including a size you set through '--avatar-size'. */
15872
+ /** The font size of the initials is a share of the avatar's own size, so the initials scale with every size, including a size you set through '--avatar-size'. */
15087
15873
  "helix-avatar": DefineCustomElement<
15088
15874
  HelixAvatar,
15089
15875
  HelixAvatarVueProps,
@@ -15449,7 +16235,7 @@ export interface WcToolkitVueGlobalComponents {
15449
16235
  HelixListboxVueProps,
15450
16236
  HelixListboxVueEvents
15451
16237
  >;
15452
- /** Sized in 'em', so it matches the text beside it. The color is 'currentColor', so it matches the text color around it, including inside a primary button. */
16238
+ /** Sized from the loader size tokens, so a loader is the same size wherever it is placed and follows the density region it sits in. Set '--loader-size: 1em' to match the text beside it, as inside a button. The color is 'currentColor', so it matches the text color around it, including inside a primary button. */
15453
16239
  "helix-loader": DefineCustomElement<
15454
16240
  HelixLoader,
15455
16241
  HelixLoaderVueProps,
@@ -15593,7 +16379,7 @@ export interface WcToolkitVueGlobalComponents {
15593
16379
  HelixOptionVueProps,
15594
16380
  HelixOptionVueEvents
15595
16381
  >;
15596
- /** 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. The behavior is drawing dots to a canvas, so there is no structure to restyle and nothing for a headless element to hold. */
16382
+ /** 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. */
15597
16383
  "helix-orb": DefineCustomElement<
15598
16384
  HelixOrb,
15599
16385
  HelixOrbVueProps,
@@ -15683,7 +16469,7 @@ export interface WcToolkitVueGlobalComponents {
15683
16469
  HelixSandboxVueProps,
15684
16470
  HelixSandboxVueEvents
15685
16471
  >;
15686
- /** 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. */
16472
+ /** 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. */
15687
16473
  "helix-sandbox-source": DefineCustomElement<
15688
16474
  HelixSandboxSource,
15689
16475
  HelixSandboxSourceVueProps,
@@ -15695,7 +16481,7 @@ export interface WcToolkitVueGlobalComponents {
15695
16481
  HelixSandboxStatusBarVueProps,
15696
16482
  HelixSandboxStatusBarVueEvents
15697
16483
  >;
15698
- /** The sandbox receives 'helix-console' events from the preview and passes them to the terminal. The preview is a separate document, so messages cross 'postMessage' and arrive as text. **Repeats collapse.** Consecutive identical lines show as one line with a count, so an example with a render loop does not fill the panel with the same warning. Only consecutive repeats collapse, so the order of messages is kept. The panel has 'role="log"', the role for an append-only stream. Screen readers announce new output without reading the whole panel again. */
16484
+ /** The sandbox receives 'helix-console' events from the preview and passes them to the terminal. The preview is a separate document, so messages cross 'postMessage' and arrive as text. **Repeats collapse.** Consecutive identical lines show as one line with a count, so an example with a render loop does not fill the panel with the same warning. Only consecutive repeats collapse, so the order of messages is kept. The panel has 'role="log"', the role for an append-only stream. Screen readers announce new output without reading the whole panel again. A line's level is read before it, except a plain 'log', so an error does not sound like any other line. */
15699
16485
  "helix-sandbox-terminal": DefineCustomElement<
15700
16486
  HelixSandboxTerminal,
15701
16487
  HelixSandboxTerminalVueProps,
@@ -15886,7 +16672,7 @@ export interface WcToolkitVueGlobalComponents {
15886
16672
  HelixToastItemVueProps,
15887
16673
  HelixToastItemVueEvents
15888
16674
  >;
15889
- /** Fixed to the window. The region spans a whole edge, so it ignores the pointer and only the messages receive clicks. Content beside a message stays clickable. **Place the region at the root of your application.** 'position: fixed' positions against the viewport only while no ancestor has 'transform', 'filter', 'perspective', or 'contain'. Any of these makes that ancestor the containing block, and an ancestor with 'overflow: hidden' still clips the region. The other floating surfaces in Helix use the top layer for the same reason. */
16675
+ /** Fixed to the window, in the top layer. The region spans a whole edge, so it ignores the pointer and only the messages receive clicks. Content beside a message stays clickable. Because the stack is in the top layer, an ancestor with 'transform', 'filter', 'contain', or 'overflow: hidden' does not move or clip it, and a message that arrives while a modal dialog is open shows above the dialog. */
15890
16676
  "helix-toast": DefineCustomElement<
15891
16677
  HelixToast,
15892
16678
  HelixToastVueProps,