@fusion.dev/helix 0.26.0 → 0.30.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 (133) hide show
  1. package/custom-elements.json +6072 -2074
  2. package/dist/accordion/root/accordion-root.css.js +1 -2
  3. package/dist/announcement/root/announcement-root.css.js +0 -1
  4. package/dist/area-chart/root/area-chart-root.css.js +2 -1
  5. package/dist/area-chart/root/area-chart-root.d.ts +1 -1
  6. package/dist/aura/{root/aura-axis.d.ts → axis.d.ts} +2 -2
  7. package/dist/aura/root/aura-root.d.ts +5 -1
  8. package/dist/aura/root/aura-root.js +3 -3
  9. package/dist/avatar/root/avatar-root.css.js +1 -1
  10. package/dist/bar-chart/root/bar-chart-root.css.js +2 -2
  11. package/dist/bar-chart/root/bar-chart-root.d.ts +1 -1
  12. package/dist/blockquote/root/blockquote-root.css.js +1 -2
  13. package/dist/breadcrumbs/root/breadcrumbs-root.css.js +1 -1
  14. package/dist/callout/root/callout-root.css.js +0 -1
  15. package/dist/carousel/root/carousel-root.css.js +0 -1
  16. package/dist/chat/message/chat-message.css.js +4 -1
  17. package/dist/chat/root/chat-root.css.js +5 -1
  18. package/dist/chat/root/chat-root.js +2 -1
  19. package/dist/checkbox/root/checkbox-root.css.js +1 -1
  20. package/dist/checkbox/root/checkbox-root.d.ts +4 -3
  21. package/dist/checkbox-group/root/checkbox-group-root.css.js +0 -1
  22. package/dist/code/root/code-root.css.js +0 -1
  23. package/dist/code-block/root/code-block-root.css.js +0 -1
  24. package/dist/color-input/root/color-input-root.css.js +5 -82
  25. package/dist/color-input/root/color-input-root.js +11 -1
  26. package/dist/color-picker/root/color-picker-root.js +1 -1
  27. package/dist/combobox/root/combobox-root.css.js +4 -83
  28. package/dist/combobox/root/combobox-root.js +12 -1
  29. package/dist/data-table/root/data-table-root.css.js +0 -8
  30. package/dist/data-table/root/data-table-root.js +2 -1
  31. package/dist/date-input/root/date-input-root.css.js +4 -80
  32. package/dist/date-input/root/date-input-root.js +12 -1
  33. package/dist/divider/root/divider-root.css.js +1 -1
  34. package/dist/donut-chart/root/donut-chart-root.css.js +3 -2
  35. package/dist/drilldown/root/drilldown-root.css.js +0 -11
  36. package/dist/drilldown/root/drilldown-root.js +2 -1
  37. package/dist/empty/root/empty-root.css.js +1 -2
  38. package/dist/file-input/root/file-input-root.css.js +3 -21
  39. package/dist/file-input/root/file-input-root.js +9 -2
  40. package/dist/filter-input/root/filter-input-root.css.js +4 -82
  41. package/dist/filter-input/root/filter-input-root.js +7 -1
  42. package/dist/flex/root/flex-root.css.js +1 -1
  43. package/dist/grid/root/grid-root.css.js +1 -1
  44. package/dist/icon/root/icon-root.css.js +1 -1
  45. package/dist/image/root/image-root.css.js +1 -1
  46. package/dist/input/root/input-root.css.js +0 -32
  47. package/dist/input/root/input-root.js +9 -2
  48. package/dist/legend/root/legend-root.css.js +1 -2
  49. package/dist/line-chart/root/line-chart-root.css.js +2 -2
  50. package/dist/line-chart/root/line-chart-root.d.ts +3 -1
  51. package/dist/list/root/list-root.css.js +1 -1
  52. package/dist/listbox/root/listbox-root.css.js +2 -8
  53. package/dist/listbox/root/listbox-root.js +7 -1
  54. package/dist/loader/root/loader-root.css.js +9 -5
  55. package/dist/menu/root/menu-root.css.js +4 -64
  56. package/dist/menu/root/menu-root.js +9 -1
  57. package/dist/meter/root/meter-root.css.js +0 -1
  58. package/dist/notifications/group/notification-group.css.js +1 -0
  59. package/dist/notifications/notification/notification.js +1 -1
  60. package/dist/notifications/root/notifications-root.css.js +2 -7
  61. package/dist/notifications/root/notifications-root.js +2 -1
  62. package/dist/number-input/root/number-input-root.css.js +2 -40
  63. package/dist/number-input/root/number-input-root.d.ts +2 -0
  64. package/dist/number-input/root/number-input-root.js +7 -1
  65. package/dist/option/root/option-root.css.js +0 -1
  66. package/dist/orb/index.d.ts +1 -1
  67. package/dist/orb/index.js +1 -1
  68. package/dist/orb/root/orb-root.d.ts +5 -1
  69. package/dist/orb/root/orb-root.js +3 -3
  70. package/dist/outline/root/outline-root.css.js +1 -1
  71. package/dist/pin-input/root/pin-input-root.css.js +0 -1
  72. package/dist/progress/root/progress-root.css.js +0 -1
  73. package/dist/qr-code/root/qr-code-root.css.js +1 -1
  74. package/dist/quote/root/quote-root.css.js +1 -2
  75. package/dist/radio/root/radio-root.css.js +5 -2
  76. package/dist/rating/root/rating-root.css.js +0 -1
  77. package/dist/scroll-area/root/scroll-area-root.css.js +0 -2
  78. package/dist/select/root/select-root.css.js +3 -57
  79. package/dist/select/root/select-root.js +9 -1
  80. package/dist/shared/chart/series.css.js +4 -1
  81. package/dist/shared/chart/tooltip.css.js +1 -96
  82. package/dist/shared/collection/state.css.js +11 -0
  83. package/dist/shared/field/field-frame.css.d.ts +1 -0
  84. package/dist/shared/field/field-frame.css.js +36 -0
  85. package/dist/shared/field/field.css.js +0 -6
  86. package/dist/shared/floating/entrance.css.d.ts +1 -0
  87. package/dist/shared/floating/entrance.css.js +39 -0
  88. package/dist/shared/floating/panel.css.d.ts +1 -0
  89. package/dist/shared/floating/panel.css.js +18 -0
  90. package/dist/shared/glyph/glyph.css.d.ts +1 -0
  91. package/dist/sparkline/root/sparkline-root.css.js +0 -1
  92. package/dist/speed-dial/root/speed-dial-root.js +1 -1
  93. package/dist/splitter/root/splitter-root.css.js +0 -2
  94. package/dist/stat/root/stat-root.css.js +1 -1
  95. package/dist/steps/root/steps-root.css.js +1 -1
  96. package/dist/switch/root/switch-root.css.js +0 -1
  97. package/dist/table/cell/table-cell.d.ts +4 -3
  98. package/dist/table/root/table-root.css.js +1 -13
  99. package/dist/table/root/table-root.js +2 -1
  100. package/dist/table/row/table-row.d.ts +4 -3
  101. package/dist/tabs/panel/tab-panel.d.ts +3 -3
  102. package/dist/tabs/root/tabs-root.css.js +0 -1
  103. package/dist/tabs/tab/tab.d.ts +4 -3
  104. package/dist/tag/root/tag-root.css.js +1 -1
  105. package/dist/text/root/text-root.css.js +1 -1
  106. package/dist/textarea/root/textarea-root.css.js +2 -36
  107. package/dist/textarea/root/textarea-root.js +7 -1
  108. package/dist/time-input/root/time-input-root.css.js +7 -82
  109. package/dist/time-input/root/time-input-root.js +12 -1
  110. package/dist/time-picker/root/time-picker-root.css.js +0 -1
  111. package/dist/timeline/root/timeline-root.css.js +1 -1
  112. package/dist/tooltip/root/tooltip-root.css.js +1 -0
  113. package/dist/tour/stop/tour-stop.css.js +7 -6
  114. package/dist/tree/root/tree-root.css.js +1 -12
  115. package/dist/tree/root/tree-root.js +2 -1
  116. package/dist/trend/root/trend-root.css.js +1 -1
  117. package/dist/trend/root/trend-root.js +1 -1
  118. package/dist/video/root/video-root.css.js +11 -8
  119. package/dist/video/root/video-root.js +1 -1
  120. package/dist/video-playlist/menu/video-playlist-menu.js +1 -1
  121. package/dist/virtual-list/root/virtual-list-root.css.js +0 -2
  122. package/package.json +9 -8
  123. package/types/jsx.d.ts +493 -405
  124. package/types/vue.d.ts +142 -129
  125. /package/dist/aura/{root/aura-axis.js → axis.js} +0 -0
  126. /package/dist/aura/{root/aura-shader.d.ts → shader.d.ts} +0 -0
  127. /package/dist/aura/{root/aura-shader.js → shader.js} +0 -0
  128. /package/dist/orb/{root/orb-color.d.ts → color.d.ts} +0 -0
  129. /package/dist/orb/{root/orb-color.js → color.js} +0 -0
  130. /package/dist/orb/{root/orb-shapes.d.ts → shapes.d.ts} +0 -0
  131. /package/dist/orb/{root/orb-shapes.js → shapes.js} +0 -0
  132. /package/dist/{icon/glyph.css.d.ts → shared/collection/state.css.d.ts} +0 -0
  133. /package/dist/{icon → shared/glyph}/glyph.css.js +0 -0
package/types/vue.d.ts CHANGED
@@ -672,6 +672,15 @@ Used for the label and the initials. */
672
672
 
673
673
  Falls back to the slot, or to initials, if it fails. */
674
674
  src?: (HelixAvatar["src"]) | undefined;
675
+ /** Where the image stands: still on its way, arrived, or failed and replaced
676
+ by the initials.
677
+
678
+ Read-only to a consumer: it is a report rather than a setting, and the same
679
+ report `Image` gives, for the same reason. `load` and `error` fire once, so
680
+ a listener bound after the picture settled hears neither, which is the
681
+ platform on an `<img>` too, and this is what that listener asks instead.
682
+ Mirrored to `data-status` rather than reflected, as `Image` explains. */
683
+ status?: (HelixAvatar["status"]) | undefined;
675
684
  };
676
685
 
677
686
  export type HelixAvatarVueEvents = {
@@ -1455,7 +1464,7 @@ way to stop it, so an autoplaying carousel keeps its pause control on a
1455
1464
  touch device exactly as it does on a desktop. */
1456
1465
  controls?: (HelixCarousel["controls"]) | undefined;
1457
1466
  /** Slide to start on, where nothing declared one. */
1458
- "default-index"?: (HelixCarousel["defaultIndex"]) | undefined;
1467
+ "default-index"?: (HelixCarousel["defaultIndex"] | `${number}`) | undefined;
1459
1468
  /** Slide to start on, where nothing declared one. */
1460
1469
  defaultIndex?: (HelixCarousel["defaultIndex"]) | undefined;
1461
1470
  /** How long each slide is held, in milliseconds. */
@@ -1492,7 +1501,7 @@ No default, because it reflects. A reflected property with a value writes
1492
1501
  its attribute on upgrade, and the host then carries something a consumer's
1493
1502
  server markup never had, which React reports as a mismatch. The one-across
1494
1503
  case is the absent attribute, and the styles read it that way. */
1495
- "per-view"?: (HelixCarousel["perView"]) | undefined;
1504
+ "per-view"?: (HelixCarousel["perView"] | `${number}`) | undefined;
1496
1505
  /** How many slides are shown across the track at once. Absent shows one.
1497
1506
 
1498
1507
  **Here rather than on the styled tier, because it decides how many places
@@ -2058,8 +2067,6 @@ Here rather than on each control. */
2058
2067
  };
2059
2068
 
2060
2069
  export type HelixColorInputVueEvents = {
2061
- /** Announced once the value has moved. */
2062
- input: HelixColorInputElementEvent;
2063
2070
  /** Announced once the value has moved. */
2064
2071
  change: HelixColorInputElementEvent;
2065
2072
  /** Fired before the color changes. Cancelable: refusing it takes the decision and nothing moves. */
@@ -2068,6 +2075,8 @@ export type HelixColorInputVueEvents = {
2068
2075
  "helix-before-close": HelixColorInputHelixBeforeCloseElementEvent;
2069
2076
  /** Fired before the panel opens. Cancelable: refusing it takes the decision and nothing moves. */
2070
2077
  "helix-before-open": HelixColorInputHelixBeforeOpenElementEvent;
2078
+ /** Announced once the value has moved. */
2079
+ input: HelixColorInputElementEvent;
2071
2080
  /** Says the state moved, carrying `newState` and `oldState`. */
2072
2081
  toggle: HelixColorInputElementEvent;
2073
2082
  };
@@ -2192,8 +2201,6 @@ Here rather than on each control. */
2192
2201
  };
2193
2202
 
2194
2203
  export type HelixColorPickerVueEvents = {
2195
- /** Announced once the value has moved. */
2196
- input: HelixColorPickerElementEvent;
2197
2204
  /** Announced once the value has moved. */
2198
2205
  change: HelixColorPickerElementEvent;
2199
2206
  /** Fired before the color changes. Cancelable: refusing it takes the decision and nothing moves. */
@@ -2204,6 +2211,8 @@ export type HelixColorPickerVueEvents = {
2204
2211
  "helix-sample-end": HelixColorPickerHelixSampleEndElementEvent;
2205
2212
  /** The eyedropper is opening, so anything covering the page should get out of the way. */
2206
2213
  "helix-sample-start": HelixColorPickerHelixSampleStartElementEvent;
2214
+ /** Announced once the value has moved. */
2215
+ input: HelixColorPickerElementEvent;
2207
2216
  };
2208
2217
 
2209
2218
  /** `HelixCombobox` component event */
@@ -2253,7 +2262,7 @@ the resolved state for stylesheets, which is what the mirror is for. */
2253
2262
  /** What the collapsed count is called, since `+3` names nothing. */
2254
2263
  expandLabel?: (HelixCombobox["expandLabel"]) | undefined;
2255
2264
  /** How many tokens to show before the rest become a count. */
2256
- "max-tags"?: (HelixCombobox["maxTags"]) | undefined;
2265
+ "max-tags"?: (HelixCombobox["maxTags"] | `${number}`) | undefined;
2257
2266
  /** How many tokens to show before the rest become a count. */
2258
2267
  maxTags?: (HelixCombobox["maxTags"]) | undefined;
2259
2268
  /** The value the markup declared, which is where a reset returns to. */
@@ -2368,8 +2377,6 @@ differently: they are one chooser to a consumer. */
2368
2377
  };
2369
2378
 
2370
2379
  export type HelixComboboxVueEvents = {
2371
- /** Announced once the value has moved. */
2372
- input: HelixComboboxElementEvent;
2373
2380
  /** Announced once the value has moved. */
2374
2381
  change: HelixComboboxElementEvent;
2375
2382
  /** Fired before the chosen option changes. Cancelable: refusing it takes the decision and nothing moves. */
@@ -2382,6 +2389,8 @@ export type HelixComboboxVueEvents = {
2382
2389
  "helix-create": HelixComboboxHelixCreateElementEvent;
2383
2390
  /** Fired as the reader types, carrying the text the list is being narrowed to. Cancelable: refusing it leaves the list whole, and is how a consumer takes the filtering for themselves. */
2384
2391
  "helix-filter": HelixComboboxHelixFilterElementEvent;
2392
+ /** Announced once the value has moved. */
2393
+ input: HelixComboboxElementEvent;
2385
2394
  /** Says the state moved, carrying `newState` and `oldState`. */
2386
2395
  toggle: HelixComboboxElementEvent;
2387
2396
  };
@@ -2691,11 +2700,11 @@ say that without the component knowing what a row looks like. */
2691
2700
  /** Column order to open with, where nothing declared one. */
2692
2701
  defaultOrder?: (HelixDataTable["defaultOrder"]) | undefined;
2693
2702
  /** Page to open on, where nothing declared one. */
2694
- "default-page"?: (HelixDataTable["defaultPage"]) | undefined;
2703
+ "default-page"?: (HelixDataTable["defaultPage"] | `${number}`) | undefined;
2695
2704
  /** Page to open on, where nothing declared one. */
2696
2705
  defaultPage?: (HelixDataTable["defaultPage"]) | undefined;
2697
2706
  /** Page size to open with, where nothing declared one. */
2698
- "default-page-size"?: (HelixDataTable["defaultPageSize"]) | undefined;
2707
+ "default-page-size"?: (HelixDataTable["defaultPageSize"] | `${number}`) | undefined;
2699
2708
  /** Page size to open with, where nothing declared one. */
2700
2709
  defaultPageSize?: (HelixDataTable["defaultPageSize"]) | undefined;
2701
2710
  /** Keys to open with selected, comma separated, where nothing declared any. */
@@ -2802,7 +2811,7 @@ element ever asks for a different page size: a size selector is
2802
2811
  `helix-pagination-size`, which a consumer puts in the `footer` slot and
2803
2812
  answers themselves. Routing this through `requestChange` would announce an
2804
2813
  event the element never has cause to fire. */
2805
- "page-size"?: (HelixDataTable["pageSize"]) | undefined;
2814
+ "page-size"?: (HelixDataTable["pageSize"] | `${number}`) | undefined;
2806
2815
  /** How many rows a page holds. Zero is every row, which is what "no paging" means.
2807
2816
 
2808
2817
  **It announces nothing, and that is not an omission.** Nothing in this
@@ -2884,6 +2893,30 @@ export type HelixDateInputHelixBeforeOpenElementEvent =
2884
2893
  HelixDateInputElementEvent<HelixBeforeOpenEvent>;
2885
2894
 
2886
2895
  export type HelixDateInputVueProps = {
2896
+ /** Whether the control refuses changes while still submitting its value.
2897
+
2898
+ **Enforced by refusing every request in one place**, which is the seam this
2899
+ component already has: `requestValue` is what every path here comes through,
2900
+ and gating it once is what stops the next call site from being written
2901
+ without the check.
2902
+
2903
+ Not `disabled`, which is the confusion worth naming: a disabled control
2904
+ submits nothing and leaves the tab order, and a read-only one submits its
2905
+ value and stays reachable, which is what a form showing a value somebody
2906
+ else set needs. */
2907
+ readonly?: (HelixDateInput["readOnly"]) | undefined;
2908
+ /** Whether the control refuses changes while still submitting its value.
2909
+
2910
+ **Enforced by refusing every request in one place**, which is the seam this
2911
+ component already has: `requestValue` is what every path here comes through,
2912
+ and gating it once is what stops the next call site from being written
2913
+ without the check.
2914
+
2915
+ Not `disabled`, which is the confusion worth naming: a disabled control
2916
+ submits nothing and leaves the tab order, and a read-only one submits its
2917
+ value and stays reachable, which is what a form showing a value somebody
2918
+ else set needs. */
2919
+ readOnly?: (HelixDateInput["readOnly"]) | undefined;
2887
2920
  /** Whether the element is open.
2888
2921
 
2889
2922
  One property, not two, so `dialog.open` answers the question anyone
@@ -2912,7 +2945,7 @@ the resolved state for stylesheets, which is what the mirror is for. */
2912
2945
  /** What the collapsed count is called, since `+3` names nothing. */
2913
2946
  expandLabel?: (HelixDateInput["expandLabel"]) | undefined;
2914
2947
  /** How many tokens to show before the rest become a count. */
2915
- "max-tags"?: (HelixDateInput["maxTags"]) | undefined;
2948
+ "max-tags"?: (HelixDateInput["maxTags"] | `${number}`) | undefined;
2916
2949
  /** How many tokens to show before the rest become a count. */
2917
2950
  maxTags?: (HelixDateInput["maxTags"]) | undefined;
2918
2951
  /** The value the markup declared, which is where a reset returns to. */
@@ -2995,7 +3028,7 @@ submits and what `min` and `max` compare against. */
2995
3028
  /** Days of the week that cannot be chosen, `0` for Sunday through `6`. */
2996
3029
  disableDays?: (HelixDateInput["disableDays"]) | undefined;
2997
3030
  /** First column of the week in the calendar, `0` for Sunday through `6`. */
2998
- "first-day-of-week"?: (HelixDateInput["firstDayOfWeek"]) | undefined;
3031
+ "first-day-of-week"?: (HelixDateInput["firstDayOfWeek"] | `${number}`) | undefined;
2999
3032
  /** First column of the week in the calendar, `0` for Sunday through `6`. */
3000
3033
  firstDayOfWeek?: (HelixDateInput["firstDayOfWeek"]) | undefined;
3001
3034
  /** Language tag the calendar names its months and days in. */
@@ -3018,30 +3051,6 @@ first. The panel is sized by its content, so this widens it. */
3018
3051
  months?: (HelixDateInput["months"]) | undefined;
3019
3052
  /** What the field says before a date is in it. */
3020
3053
  placeholder?: (HelixDateInput["placeholder"]) | undefined;
3021
- /** Whether the control refuses changes while still submitting its value.
3022
-
3023
- **Enforced by refusing every request in one place**, which is the seam this
3024
- component already has: `requestValue` is what every path here comes through,
3025
- and gating it once is what stops the next call site from being written
3026
- without the check.
3027
-
3028
- Not `disabled`, which is the confusion worth naming: a disabled control
3029
- submits nothing and leaves the tab order, and a read-only one submits its
3030
- value and stays reachable, which is what a form showing a value somebody
3031
- else set needs. */
3032
- readonly?: (HelixDateInput["readOnly"]) | undefined;
3033
- /** Whether the control refuses changes while still submitting its value.
3034
-
3035
- **Enforced by refusing every request in one place**, which is the seam this
3036
- component already has: `requestValue` is what every path here comes through,
3037
- and gating it once is what stops the next call site from being written
3038
- without the check.
3039
-
3040
- Not `disabled`, which is the confusion worth naming: a disabled control
3041
- submits nothing and leaves the tab order, and a read-only one submits its
3042
- value and stays reachable, which is what a form showing a value somebody
3043
- else set needs. */
3044
- readOnly?: (HelixDateInput["readOnly"]) | undefined;
3045
3054
  /** How far apart the selectable dates are, in days.
3046
3055
 
3047
3056
  `<input type="date" step>`'s own unit, handed to the calendar this renders
@@ -3096,8 +3105,6 @@ reader makes in one of these. */
3096
3105
  };
3097
3106
 
3098
3107
  export type HelixDateInputVueEvents = {
3099
- /** Announced once the value has moved. */
3100
- input: HelixDateInputElementEvent;
3101
3108
  /** Announced once the value has moved. */
3102
3109
  change: HelixDateInputElementEvent;
3103
3110
  /** Fired before the date changes. Cancelable: refusing it takes the decision and nothing moves. */
@@ -3106,6 +3113,8 @@ export type HelixDateInputVueEvents = {
3106
3113
  "helix-before-close": HelixDateInputHelixBeforeCloseElementEvent;
3107
3114
  /** Fired before the calendar opens. Cancelable: refusing it takes the decision and nothing moves. */
3108
3115
  "helix-before-open": HelixDateInputHelixBeforeOpenElementEvent;
3116
+ /** Announced once the value has moved. */
3117
+ input: HelixDateInputElementEvent;
3109
3118
  /** Says the state moved, carrying `newState` and `oldState`. */
3110
3119
  toggle: HelixDateInputElementEvent;
3111
3120
  };
@@ -3147,7 +3156,7 @@ a reset should return to. */
3147
3156
  /** Days of the week that cannot be chosen, comma separated, `0` to `6`. */
3148
3157
  disableDays?: (HelixDatePicker["disableDays"]) | undefined;
3149
3158
  /** First column of the week, `0` for Sunday through `6` for Saturday. */
3150
- "first-day-of-week"?: (HelixDatePicker["firstDayOfWeek"]) | undefined;
3159
+ "first-day-of-week"?: (HelixDatePicker["firstDayOfWeek"] | `${number}`) | undefined;
3151
3160
  /** First column of the week, `0` for Sunday through `6` for Saturday. */
3152
3161
  firstDayOfWeek?: (HelixDatePicker["firstDayOfWeek"]) | undefined;
3153
3162
  /** Whether the current selection fails validation. */
@@ -3271,14 +3280,14 @@ reader makes in one of these. */
3271
3280
  };
3272
3281
 
3273
3282
  export type HelixDatePickerVueEvents = {
3274
- /** Announced once the value has moved. */
3275
- input: HelixDatePickerElementEvent;
3276
3283
  /** Announced once the value has moved. */
3277
3284
  change: HelixDatePickerElementEvent;
3278
3285
  /** Fired before the dates change, and cancelable. */
3279
3286
  "helix-before-change": HelixDatePickerHelixBeforeChangeElementEvent;
3280
3287
  /** Fired before the month on show changes, and cancelable. */
3281
3288
  "helix-navigate": HelixDatePickerHelixNavigateElementEvent;
3289
+ /** Announced once the value has moved. */
3290
+ input: HelixDatePickerElementEvent;
3282
3291
  };
3283
3292
 
3284
3293
  export type HelixDescriptionListItemVueProps = {
@@ -3813,12 +3822,12 @@ Here rather than on each control. */
3813
3822
  };
3814
3823
 
3815
3824
  export type HelixFileInputVueEvents = {
3816
- /** Announced once the value has moved. */
3817
- input: HelixFileInputElementEvent;
3818
3825
  /** Announced once the value has moved. */
3819
3826
  change: HelixFileInputElementEvent;
3820
3827
  /** Fired before the chosen files change, with their names. Cancelable: refusing it takes the decision and nothing moves. */
3821
3828
  "helix-before-change": HelixFileInputHelixBeforeChangeElementEvent;
3829
+ /** Announced once the value has moved. */
3830
+ input: HelixFileInputElementEvent;
3822
3831
  };
3823
3832
 
3824
3833
  /** `HelixFilterChip` component event */
@@ -4039,7 +4048,7 @@ the resolved state for stylesheets, which is what the mirror is for. */
4039
4048
  /** What the collapsed count is called, since `+3` names nothing. */
4040
4049
  expandLabel?: (HelixFilterInput["expandLabel"]) | undefined;
4041
4050
  /** How many tokens to show before the rest become a count. */
4042
- "max-tags"?: (HelixFilterInput["maxTags"]) | undefined;
4051
+ "max-tags"?: (HelixFilterInput["maxTags"] | `${number}`) | undefined;
4043
4052
  /** How many tokens to show before the rest become a count. */
4044
4053
  maxTags?: (HelixFilterInput["maxTags"]) | undefined;
4045
4054
  /** The value the markup declared, which is where a reset returns to. */
@@ -4105,8 +4114,6 @@ Here rather than on each control. */
4105
4114
  };
4106
4115
 
4107
4116
  export type HelixFilterInputVueEvents = {
4108
- /** Announced once the text has moved. */
4109
- input: HelixFilterInputElementEvent;
4110
4117
  /** Relayed from the input once the reader has finished. */
4111
4118
  change: HelixFilterInputElementEvent;
4112
4119
  /** Fired as the text changes, and cancelable. */
@@ -4121,6 +4128,8 @@ export type HelixFilterInputVueEvents = {
4121
4128
  "helix-facet": HelixFilterInputHelixFacetElementEvent;
4122
4129
  /** A suggestion was chosen: the option's own, heard here because it bubbles out of `suggestions`. Cancelable: refusing it takes the decision from any other listener, and this field never acts on a choice itself, since what it means is the page's. */
4123
4130
  "helix-select": HelixFilterInputHelixSelectElementEvent;
4131
+ /** Announced once the text has moved. */
4132
+ input: HelixFilterInputElementEvent;
4124
4133
  /** Says the panel moved, carrying `newState` and `oldState`. */
4125
4134
  toggle: HelixFilterInputElementEvent;
4126
4135
  };
@@ -4259,7 +4268,7 @@ arithmetic should plan around.
4259
4268
 
4260
4269
  Zero turns the dropping off altogether, which is right for a strip in a
4261
4270
  container that cannot get narrow. */
4262
- "min-cell"?: (HelixHeatmap["minCell"]) | undefined;
4271
+ "min-cell"?: (HelixHeatmap["minCell"] | `${number}`) | undefined;
4263
4272
  /** The smallest a cell may get before the strip draws fewer of them, in CSS pixels.
4264
4273
 
4265
4274
  **Set this only to overrule what the strip actually draws.** The arithmetic
@@ -4658,11 +4667,11 @@ is broken. */
4658
4667
  /** What the clear button is called, since an icon has no name of its own. */
4659
4668
  clearLabel?: (HelixInput["clearLabel"]) | undefined;
4660
4669
  /** Most characters the value may have. */
4661
- maxlength?: (HelixInput["maxLength"]) | undefined;
4670
+ maxlength?: (HelixInput["maxLength"] | `${number}`) | undefined;
4662
4671
  /** Most characters the value may have. */
4663
4672
  maxLength?: (HelixInput["maxLength"]) | undefined;
4664
4673
  /** Fewest characters the value may have. */
4665
- minlength?: (HelixInput["minLength"]) | undefined;
4674
+ minlength?: (HelixInput["minLength"] | `${number}`) | undefined;
4666
4675
  /** Fewest characters the value may have. */
4667
4676
  minLength?: (HelixInput["minLength"]) | undefined;
4668
4677
  /** A regular expression the value has to match, as the platform reads it.
@@ -4777,12 +4786,12 @@ be anyway. */
4777
4786
  };
4778
4787
 
4779
4788
  export type HelixInputVueEvents = {
4780
- /** Announced once the value has moved. */
4781
- input: HelixInputElementEvent;
4782
4789
  /** Relayed from the input once the reader has finished. */
4783
4790
  change: HelixInputElementEvent;
4784
4791
  /** Fired as the text changes, and cancelable. */
4785
4792
  "helix-before-change": HelixInputHelixBeforeChangeElementEvent;
4793
+ /** Announced once the value has moved. */
4794
+ input: HelixInputElementEvent;
4786
4795
  };
4787
4796
 
4788
4797
  /** `HelixKbd` component event */
@@ -5226,14 +5235,14 @@ that can. */
5226
5235
  };
5227
5236
 
5228
5237
  export type HelixListboxVueEvents = {
5229
- /** Announced once the value has moved. */
5230
- input: HelixListboxElementEvent;
5231
5238
  /** Announced once the value has moved. */
5232
5239
  change: HelixListboxElementEvent;
5233
5240
  /** Fired when the answer changes, and cancelable. */
5234
5241
  "helix-before-change": HelixListboxHelixBeforeChangeElementEvent;
5235
5242
  /** Fired before the list narrows, and cancelable. */
5236
5243
  "helix-filter": HelixListboxHelixFilterElementEvent;
5244
+ /** Announced once the value has moved. */
5245
+ input: HelixListboxElementEvent;
5237
5246
  };
5238
5247
 
5239
5248
  export type HelixLoaderVueProps = {
@@ -5297,7 +5306,7 @@ so the controller has to be told not to measure, and that decision is here
5297
5306
  whatever the stylesheet says. Writing the width in both places would be one
5298
5307
  number in two languages, drifting the first time either moved. This sets
5299
5308
  `data-narrow` on the host and the stylesheet arranges itself off that. */
5300
- "full-below"?: (HelixMegamenu["fullBelow"]) | undefined;
5309
+ "full-below"?: (HelixMegamenu["fullBelow"] | `${number}`) | undefined;
5301
5310
  /** The width, in pixels, under which a card becomes a band. Zero never does.
5302
5311
 
5303
5312
  A card is a panel hung off one word, and there is no room to hang anything
@@ -5853,7 +5862,7 @@ consumer to ask for it. */
5853
5862
  Ten steps, which is the convention every spinner on the platform follows,
5854
5863
  and a property because ten of a step of `0.01` is a hundredth and rarely
5855
5864
  what a reader wants from a whole key. */
5856
- "large-step"?: (HelixNumberInput["largeStep"]) | undefined;
5865
+ "large-step"?: (HelixNumberInput["largeStep"] | `${number}`) | undefined;
5857
5866
  /** How far `PageUp` and `PageDown` move.
5858
5867
 
5859
5868
  Ten steps, which is the convention every spinner on the platform follows,
@@ -5922,12 +5931,12 @@ form would submit it. */
5922
5931
  };
5923
5932
 
5924
5933
  export type HelixNumberInputVueEvents = {
5925
- /** Announced once the value has moved. */
5926
- input: HelixNumberInputElementEvent;
5927
5934
  /** Relayed from the field once the reader has finished. */
5928
5935
  change: HelixNumberInputElementEvent;
5929
5936
  /** Fired as the value changes, and cancelable. */
5930
5937
  "helix-before-change": HelixNumberInputHelixBeforeChangeElementEvent;
5938
+ /** Announced once the value has moved. */
5939
+ input: HelixNumberInputElementEvent;
5931
5940
  };
5932
5941
 
5933
5942
  /** `HelixObjectInspector` component event */
@@ -5946,7 +5955,7 @@ One by default: the root is open and everything under it closed, so a
5946
5955
  reader sees the shape of the value before its contents. `0` starts with the
5947
5956
  root closed; a large number opens everything, which on a big value is the
5948
5957
  wall of text this exists to avoid. */
5949
- "default-depth"?: (HelixObjectInspector["defaultDepth"]) | undefined;
5958
+ "default-depth"?: (HelixObjectInspector["defaultDepth"] | `${number}`) | undefined;
5950
5959
  /** How many levels start open.
5951
5960
 
5952
5961
  One by default: the root is open and everything under it closed, so a
@@ -6193,7 +6202,7 @@ Not reflected, for the reason `ends` is not: it decides what renders, so
6193
6202
  nothing has to select on it. */
6194
6203
  compact?: (HelixPagination["compact"]) | undefined;
6195
6204
  /** Page to open on, where nothing declared one. */
6196
- "default-page"?: (HelixPagination["defaultPage"]) | undefined;
6205
+ "default-page"?: (HelixPagination["defaultPage"] | `${number}`) | undefined;
6197
6206
  /** Page to open on, where nothing declared one. */
6198
6207
  defaultPage?: (HelixPagination["defaultPage"]) | undefined;
6199
6208
  /** Whether to offer a jump to the first and last pages.
@@ -6279,7 +6288,7 @@ so there is never a question of which of two sources is current. */
6279
6288
  Only arithmetic: this does not slice anything, because the component never
6280
6289
  sees the items. It is what turns `total` into a page count, and nothing
6281
6290
  else. */
6282
- "page-size"?: (HelixPagination["pageSize"]) | undefined;
6291
+ "page-size"?: (HelixPagination["pageSize"] | `${number}`) | undefined;
6283
6292
  /** How many items are on a page.
6284
6293
 
6285
6294
  Only arithmetic: this does not slice anything, because the component never
@@ -6332,7 +6341,7 @@ export type HelixPaginationSizeHelixBeforeChangeElementEvent =
6332
6341
 
6333
6342
  export type HelixPaginationSizeVueProps = {
6334
6343
  /** Size to start on, where nothing declared one. */
6335
- "default-value"?: (HelixPaginationSize["defaultValue"]) | undefined;
6344
+ "default-value"?: (HelixPaginationSize["defaultValue"] | `${number}`) | undefined;
6336
6345
  /** Size to start on, where nothing declared one. */
6337
6346
  defaultValue?: (HelixPaginationSize["defaultValue"]) | undefined;
6338
6347
  /** The size in force.
@@ -6382,7 +6391,7 @@ Absent uses the runtime's own. */
6382
6391
  /** The page on show, one-based. */
6383
6392
  page?: (HelixPaginationSummary["page"]) | undefined;
6384
6393
  /** How many items are on a page. */
6385
- "page-size"?: (HelixPaginationSummary["pageSize"]) | undefined;
6394
+ "page-size"?: (HelixPaginationSummary["pageSize"] | `${number}`) | undefined;
6386
6395
  /** How many items are on a page. */
6387
6396
  pageSize?: (HelixPaginationSummary["pageSize"]) | undefined;
6388
6397
  /** How many items there are across every page. */
@@ -6499,14 +6508,14 @@ Here rather than on each control. */
6499
6508
  };
6500
6509
 
6501
6510
  export type HelixPinInputVueEvents = {
6502
- /** Announced once the value has moved. */
6503
- input: HelixPinInputElementEvent;
6504
6511
  /** Announced with a filled code, and when an edited one loses focus. */
6505
6512
  change: HelixPinInputElementEvent;
6506
6513
  /** Fired as the code changes, and cancelable. */
6507
6514
  "helix-before-change": HelixPinInputHelixBeforeChangeElementEvent;
6508
6515
  /** Fired when the last box is filled. */
6509
6516
  "helix-complete": HelixPinInputHelixCompleteElementEvent;
6517
+ /** Announced once the value has moved. */
6518
+ input: HelixPinInputElementEvent;
6510
6519
  };
6511
6520
 
6512
6521
  /** `HelixPopover` component event */
@@ -6765,14 +6774,14 @@ Here rather than on each control. */
6765
6774
  };
6766
6775
 
6767
6776
  export type HelixRadioGroupVueEvents = {
6768
- /** Announced once the value has moved. */
6769
- input: HelixRadioGroupElementEvent;
6770
6777
  /** Announced once the value has moved. */
6771
6778
  change: HelixRadioGroupElementEvent;
6772
6779
  /** Fired when the answer changes, and cancelable. */
6773
6780
  "helix-before-change": HelixRadioGroupHelixBeforeChangeElementEvent;
6774
6781
  /** Fired when an answer is chosen. Dispatched by the radio and listened for here, because the group is what a consumer holds. Cancelable: refusing it takes the decision and nothing moves. */
6775
6782
  "helix-select": HelixRadioGroupHelixSelectElementEvent;
6783
+ /** Announced once the value has moved. */
6784
+ input: HelixRadioGroupElementEvent;
6776
6785
  };
6777
6786
 
6778
6787
  /** `HelixRadio` component event */
@@ -6998,12 +7007,12 @@ form would submit it. */
6998
7007
  };
6999
7008
 
7000
7009
  export type HelixRatingVueEvents = {
7001
- /** Announced once the value has moved. */
7002
- input: HelixRatingElementEvent;
7003
7010
  /** Announced with it, the choice being the commit. */
7004
7011
  change: HelixRatingElementEvent;
7005
7012
  /** Fired before the score changes, and cancelable. */
7006
7013
  "helix-before-change": HelixRatingHelixBeforeChangeElementEvent;
7014
+ /** Announced once the value has moved. */
7015
+ input: HelixRatingElementEvent;
7007
7016
  };
7008
7017
 
7009
7018
  /** `HelixSandboxPreview` component event */
@@ -7097,7 +7106,7 @@ export type HelixSandboxVueProps = {
7097
7106
  /** What a reset makes the panel, in pixels.
7098
7107
 
7099
7108
  The pair to `panel-size`. */
7100
- "default-panel-size"?: (HelixSandbox["defaultPanelSize"]) | undefined;
7109
+ "default-panel-size"?: (HelixSandbox["defaultPanelSize"] | `${number}`) | undefined;
7101
7110
  /** What a reset makes the panel, in pixels.
7102
7111
 
7103
7112
  The pair to `panel-size`. */
@@ -7113,7 +7122,7 @@ sandbox back to the size it already was.
7113
7122
 
7114
7123
  Declared rather than captured, so it is a number a consumer states and can
7115
7124
  change, and it needs no first frame to be read on. */
7116
- "default-split"?: (HelixSandbox["defaultSplit"]) | undefined;
7125
+ "default-split"?: (HelixSandbox["defaultSplit"] | `${number}`) | undefined;
7117
7126
  /** Where a reset puts the divider, where nothing declared it.
7118
7127
 
7119
7128
  Separate from `split` for the reason `Splitter` keeps `default-position`
@@ -7149,7 +7158,7 @@ the same thing in both directions: thirty percent to whatever comes first. */
7149
7158
  Zero closes it outright. A panel whose contents include the control that
7150
7159
  reopens it, a row of tabs being the usual one, wants that row left showing,
7151
7160
  and only whoever slotted it knows how tall that is. */
7152
- "panel-collapsed-size"?: (HelixSandbox["panelCollapsedSize"]) | undefined;
7161
+ "panel-collapsed-size"?: (HelixSandbox["panelCollapsedSize"] | `${number}`) | undefined;
7153
7162
  /** What the panel's height becomes when it is closed.
7154
7163
 
7155
7164
  Zero closes it outright. A panel whose contents include the control that
@@ -7161,7 +7170,7 @@ and only whoever slotted it knows how tall that is. */
7161
7170
  /** Accessible name for the panel's divider. */
7162
7171
  panelLabel?: (HelixSandbox["panelLabel"]) | undefined;
7163
7172
  /** Height of the panel, in pixels. */
7164
- "panel-size"?: (HelixSandbox["panelSize"]) | undefined;
7173
+ "panel-size"?: (HelixSandbox["panelSize"] | `${number}`) | undefined;
7165
7174
  /** Height of the panel, in pixels. */
7166
7175
  panelSize?: (HelixSandbox["panelSize"]) | undefined;
7167
7176
  /** Accessible name for the divider. */
@@ -7437,8 +7446,6 @@ differently: they are one chooser to a consumer. */
7437
7446
  };
7438
7447
 
7439
7448
  export type HelixSelectVueEvents = {
7440
- /** Announced once the value has moved. */
7441
- input: HelixSelectElementEvent;
7442
7449
  /** Announced once the value has moved. */
7443
7450
  change: HelixSelectElementEvent;
7444
7451
  /** Relayed from the listbox when the answer changes. Cancelable: refusing it takes the decision and nothing moves. */
@@ -7447,6 +7454,8 @@ export type HelixSelectVueEvents = {
7447
7454
  "helix-before-close": HelixSelectHelixBeforeCloseElementEvent;
7448
7455
  /** Fired before the list opens. Cancelable: refusing it takes the decision and nothing moves. */
7449
7456
  "helix-before-open": HelixSelectHelixBeforeOpenElementEvent;
7457
+ /** Announced once the value has moved. */
7458
+ input: HelixSelectElementEvent;
7450
7459
  /** Says the state moved, carrying `newState` and `oldState`. */
7451
7460
  toggle: HelixSelectElementEvent;
7452
7461
  };
@@ -7577,12 +7586,12 @@ Here rather than on each control. */
7577
7586
  };
7578
7587
 
7579
7588
  export type HelixSliderVueEvents = {
7580
- /** Announced once the value has moved. */
7581
- input: HelixSliderElementEvent;
7582
7589
  /** Relayed once the reader has let go. */
7583
7590
  change: HelixSliderElementEvent;
7584
7591
  /** Fired as the value changes, and cancelable. */
7585
7592
  "helix-before-change": HelixSliderHelixBeforeChangeElementEvent;
7593
+ /** Announced once the value has moved. */
7594
+ input: HelixSliderElementEvent;
7586
7595
  };
7587
7596
 
7588
7597
  export type HelixSparklineVueProps = {
@@ -7826,7 +7835,7 @@ Zero by default, which is a pane fully gone. A tab strip or a title bar
7826
7835
  that should survive its own collapse says how much of itself to keep, and
7827
7836
  only whoever put it there knows that, which is the same reason `min` is a
7828
7837
  consumer's to set. */
7829
- "collapsed-size"?: (HelixSplitter["collapsedSize"]) | undefined;
7838
+ "collapsed-size"?: (HelixSplitter["collapsedSize"] | `${number}`) | undefined;
7830
7839
  /** How much of a shut pane is still shown, as a percentage.
7831
7840
 
7832
7841
  Zero by default, which is a pane fully gone. A tab strip or a title bar
@@ -7861,7 +7870,7 @@ of a pane during a drag; this is the thing that says the sliver can go. */
7861
7870
  /** Which pane starts shut, where nothing declared it. */
7862
7871
  defaultCollapsed?: (HelixSplitter["defaultCollapsed"]) | undefined;
7863
7872
  /** Where the divider starts, where nothing declared it. */
7864
- "default-position"?: (HelixSplitter["defaultPosition"]) | undefined;
7873
+ "default-position"?: (HelixSplitter["defaultPosition"] | `${number}`) | undefined;
7865
7874
  /** Where the divider starts, where nothing declared it. */
7866
7875
  defaultPosition?: (HelixSplitter["defaultPosition"]) | undefined;
7867
7876
  /** Accessible name for the divider. */
@@ -8509,7 +8518,7 @@ submitted nothing. `ElementInternals` takes a `FormData`, which is how one
8509
8518
  element sends two entries, and that is what this does. */
8510
8519
  dirName?: (HelixTextarea["dirName"]) | undefined;
8511
8520
  /** Most characters the value may have. */
8512
- maxlength?: (HelixTextarea["maxLength"]) | undefined;
8521
+ maxlength?: (HelixTextarea["maxLength"] | `${number}`) | undefined;
8513
8522
  /** Most characters the value may have. */
8514
8523
  maxLength?: (HelixTextarea["maxLength"]) | undefined;
8515
8524
  /** Fewest characters the value may have.
@@ -8518,7 +8527,7 @@ Forwarded to the real `<textarea>` rather than checked here, which is what
8518
8527
  makes the message the browser's and therefore the reader's own language.
8519
8528
  No `pattern`: the platform does not give a textarea one, and inventing it
8520
8529
  would be this library guessing where the point is to stop guessing. */
8521
- minlength?: (HelixTextarea["minLength"]) | undefined;
8530
+ minlength?: (HelixTextarea["minLength"] | `${number}`) | undefined;
8522
8531
  /** Fewest characters the value may have.
8523
8532
 
8524
8533
  Forwarded to the real `<textarea>` rather than checked here, which is what
@@ -8584,12 +8593,12 @@ which is where an empty field's caret would be anyway. */
8584
8593
  };
8585
8594
 
8586
8595
  export type HelixTextareaVueEvents = {
8587
- /** Announced once the value has moved. */
8588
- input: HelixTextareaElementEvent;
8589
8596
  /** Relayed from the textarea once the reader has finished. */
8590
8597
  change: HelixTextareaElementEvent;
8591
8598
  /** Fired as the text changes, and cancelable. */
8592
8599
  "helix-before-change": HelixTextareaHelixBeforeChangeElementEvent;
8600
+ /** Announced once the value has moved. */
8601
+ input: HelixTextareaElementEvent;
8593
8602
  };
8594
8603
 
8595
8604
  /** `HelixTimeInput` component event */
@@ -8608,6 +8617,30 @@ export type HelixTimeInputHelixBeforeOpenElementEvent =
8608
8617
  HelixTimeInputElementEvent<HelixBeforeOpenEvent>;
8609
8618
 
8610
8619
  export type HelixTimeInputVueProps = {
8620
+ /** Whether the control refuses changes while still submitting its value.
8621
+
8622
+ **Enforced by refusing every request in one place**, which is the seam this
8623
+ component already has: `requestValue` is what every path here comes through,
8624
+ and gating it once is what stops the next call site from being written
8625
+ without the check.
8626
+
8627
+ Not `disabled`, which is the confusion worth naming: a disabled control
8628
+ submits nothing and leaves the tab order, and a read-only one submits its
8629
+ value and stays reachable, which is what a form showing a value somebody
8630
+ else set needs. */
8631
+ readonly?: (HelixTimeInput["readOnly"]) | undefined;
8632
+ /** Whether the control refuses changes while still submitting its value.
8633
+
8634
+ **Enforced by refusing every request in one place**, which is the seam this
8635
+ component already has: `requestValue` is what every path here comes through,
8636
+ and gating it once is what stops the next call site from being written
8637
+ without the check.
8638
+
8639
+ Not `disabled`, which is the confusion worth naming: a disabled control
8640
+ submits nothing and leaves the tab order, and a read-only one submits its
8641
+ value and stays reachable, which is what a form showing a value somebody
8642
+ else set needs. */
8643
+ readOnly?: (HelixTimeInput["readOnly"]) | undefined;
8611
8644
  /** Whether the element is open.
8612
8645
 
8613
8646
  One property, not two, so `dialog.open` answers the question anyone
@@ -8636,7 +8669,7 @@ the resolved state for stylesheets, which is what the mirror is for. */
8636
8669
  /** What the collapsed count is called, since `+3` names nothing. */
8637
8670
  expandLabel?: (HelixTimeInput["expandLabel"]) | undefined;
8638
8671
  /** How many tokens to show before the rest become a count. */
8639
- "max-tags"?: (HelixTimeInput["maxTags"]) | undefined;
8672
+ "max-tags"?: (HelixTimeInput["maxTags"] | `${number}`) | undefined;
8640
8673
  /** How many tokens to show before the rest become a count. */
8641
8674
  maxTags?: (HelixTimeInput["maxTags"]) | undefined;
8642
8675
  /** The value the markup declared, which is where a reset returns to. */
@@ -8680,30 +8713,6 @@ why a wheel cannot do either. */
8680
8713
  mode?: (HelixTimeInput["mode"]) | undefined;
8681
8714
  /** What the field says before a time is in it. */
8682
8715
  placeholder?: (HelixTimeInput["placeholder"]) | undefined;
8683
- /** Whether the control refuses changes while still submitting its value.
8684
-
8685
- **Enforced by refusing every request in one place**, which is the seam this
8686
- component already has: `requestValue` is what every path here comes through,
8687
- and gating it once is what stops the next call site from being written
8688
- without the check.
8689
-
8690
- Not `disabled`, which is the confusion worth naming: a disabled control
8691
- submits nothing and leaves the tab order, and a read-only one submits its
8692
- value and stays reachable, which is what a form showing a value somebody
8693
- else set needs. */
8694
- readonly?: (HelixTimeInput["readOnly"]) | undefined;
8695
- /** Whether the control refuses changes while still submitting its value.
8696
-
8697
- **Enforced by refusing every request in one place**, which is the seam this
8698
- component already has: `requestValue` is what every path here comes through,
8699
- and gating it once is what stops the next call site from being written
8700
- without the check.
8701
-
8702
- Not `disabled`, which is the confusion worth naming: a disabled control
8703
- submits nothing and leaves the tab order, and a read-only one submits its
8704
- value and stays reachable, which is what a form showing a value somebody
8705
- else set needs. */
8706
- readOnly?: (HelixTimeInput["readOnly"]) | undefined;
8707
8716
  /** How far apart the offered times are, in minutes. */
8708
8717
  step?: (HelixTimeInput["step"]) | undefined;
8709
8718
  /** Whether the field writes the time out, or holds the value as it is.
@@ -8777,8 +8786,6 @@ a consumer handing over `new Date()` gets the time of day they expected. */
8777
8786
  };
8778
8787
 
8779
8788
  export type HelixTimeInputVueEvents = {
8780
- /** Announced once the value has moved. */
8781
- input: HelixTimeInputElementEvent;
8782
8789
  /** Announced once the value has moved. */
8783
8790
  change: HelixTimeInputElementEvent;
8784
8791
  /** Fired before the time changes. Cancelable: refusing it takes the decision and nothing moves. */
@@ -8787,6 +8794,8 @@ export type HelixTimeInputVueEvents = {
8787
8794
  "helix-before-close": HelixTimeInputHelixBeforeCloseElementEvent;
8788
8795
  /** Fired before the list opens. Cancelable: refusing it takes the decision and nothing moves. */
8789
8796
  "helix-before-open": HelixTimeInputHelixBeforeOpenElementEvent;
8797
+ /** Announced once the value has moved. */
8798
+ input: HelixTimeInputElementEvent;
8790
8799
  /** Says the state moved, carrying `newState` and `oldState`. */
8791
8800
  toggle: HelixTimeInputElementEvent;
8792
8801
  };
@@ -8966,12 +8975,12 @@ a consumer handing over `new Date()` gets the time of day they expected. */
8966
8975
  };
8967
8976
 
8968
8977
  export type HelixTimePickerVueEvents = {
8969
- /** Announced once the value has moved. */
8970
- input: HelixTimePickerElementEvent;
8971
8978
  /** Announced once the value has moved. */
8972
8979
  change: HelixTimePickerElementEvent;
8973
8980
  /** Fired before the time changes. Cancelable: refusing it takes the decision and nothing moves. */
8974
8981
  "helix-before-change": HelixTimePickerHelixBeforeChangeElementEvent;
8982
+ /** Announced once the value has moved. */
8983
+ input: HelixTimePickerElementEvent;
8975
8984
  };
8976
8985
 
8977
8986
  export type HelixTimelineItemVueProps = {
@@ -9177,14 +9186,14 @@ Here rather than on each control. */
9177
9186
  };
9178
9187
 
9179
9188
  export type HelixToggleGroupVueEvents = {
9180
- /** Announced once the value has moved. */
9181
- input: HelixToggleGroupElementEvent;
9182
9189
  /** Announced once the value has moved. */
9183
9190
  change: HelixToggleGroupElementEvent;
9184
9191
  /** Fired before the answer moves, and cancelable. The only way to refuse one. */
9185
9192
  "helix-before-change": HelixToggleGroupHelixBeforeChangeElementEvent;
9186
9193
  /** Fired when an item is chosen. Dispatched by the item and listened for here. Cancelable: refusing it takes the decision and nothing moves. */
9187
9194
  "helix-select": HelixToggleGroupHelixSelectElementEvent;
9195
+ /** Announced once the value has moved. */
9196
+ input: HelixToggleGroupElementEvent;
9188
9197
  };
9189
9198
 
9190
9199
  /** `HelixToggle` component event */
@@ -9305,7 +9314,7 @@ of them, which is noise rather than help. Focus opens with no delay: a
9305
9314
  keyboard reader arriving on a control has already committed to it. */
9306
9315
  delay?: (HelixTooltip["delay"]) | undefined;
9307
9316
  /** How long the bubble stays after the pointer leaves, in milliseconds. */
9308
- "delay-out"?: (HelixTooltip["delayOut"]) | undefined;
9317
+ "delay-out"?: (HelixTooltip["delayOut"] | `${number}`) | undefined;
9309
9318
  /** How long the bubble stays after the pointer leaves, in milliseconds. */
9310
9319
  delayOut?: (HelixTooltip["delayOut"]) | undefined;
9311
9320
  /** Whether the tooltip never shows. */
@@ -9412,7 +9421,7 @@ The shape is `Carousel`'s, which is the nearest thing in the library: a
9412
9421
  `undefined` until somebody sets one. */
9413
9422
  index?: (HelixTour["index"]) | undefined;
9414
9423
  /** Stop to start on, where nothing declared one. */
9415
- "default-index"?: (HelixTour["defaultIndex"]) | undefined;
9424
+ "default-index"?: (HelixTour["defaultIndex"] | `${number}`) | undefined;
9416
9425
  /** Stop to start on, where nothing declared one. */
9417
9426
  defaultIndex?: (HelixTour["defaultIndex"]) | undefined;
9418
9427
  /** Label for the control that goes on from the last stop. */
@@ -9432,7 +9441,7 @@ The shape is `Carousel`'s, which is the nearest thing in the library: a
9432
9441
  /** Label for the control that leaves the tour. */
9433
9442
  skipLabel?: (HelixTour["skipLabel"]) | undefined;
9434
9443
  /** Space left around the target when it is lit, in pixels. */
9435
- "spotlight-padding"?: (HelixTour["spotlightPadding"]) | undefined;
9444
+ "spotlight-padding"?: (HelixTour["spotlightPadding"] | `${number}`) | undefined;
9436
9445
  /** Space left around the target when it is lit, in pixels. */
9437
9446
  spotlightPadding?: (HelixTour["spotlightPadding"]) | undefined;
9438
9447
  };
@@ -9931,7 +9940,7 @@ as long as anyone is likely to look.
9931
9940
 
9932
9941
  The wait is only ever about *idling*. A video that is paused keeps its bar
9933
9942
  regardless, because a reader who stopped it is deciding what to do next. */
9934
- "idle-delay"?: (HelixVideo["idleDelay"]) | undefined;
9943
+ "idle-delay"?: (HelixVideo["idleDelay"] | `${number}`) | undefined;
9935
9944
  /** How long the bar waits after the pointer stops before it goes, in ms.
9936
9945
 
9937
9946
  A wait rather than leaving with the pointer, or a reader moving across the
@@ -10117,7 +10126,7 @@ export type CustomCssProperties = {
10117
10126
  "--area-chart-gap"?: (string) | undefined;
10118
10127
  /** One rule across the plot, under `gridlines`. */
10119
10128
  "--area-chart-gridline-color"?: (string) | undefined;
10120
- /** Thickness of a band's top edge. */
10129
+ /** Thickness of a band's top edge, over `--chart-stroke`. */
10121
10130
  "--area-chart-width"?: (string) | undefined;
10122
10131
  /** How far each avatar sits over the one before it. */
10123
10132
  "--avatar-group-overlap"?: (string) | undefined;
@@ -10147,7 +10156,7 @@ export type CustomCssProperties = {
10147
10156
  "--bar-chart-gridline-color"?: (string) | undefined;
10148
10157
  /** A `lines` series, overriding its series color. */
10149
10158
  "--bar-chart-line-color"?: (string) | undefined;
10150
- /** Thickness of a `lines` series. */
10159
+ /** Thickness of a `lines` series, over `--chart-stroke`. */
10151
10160
  "--bar-chart-line-width"?: (string) | undefined;
10152
10161
  /** The color of a single-series axis, taken from that series. */
10153
10162
  "--bar-chart-axis"?: (string) | undefined;
@@ -10555,6 +10564,8 @@ export type CustomCssProperties = {
10555
10564
  "--legend-swatch-size"?: (string) | undefined;
10556
10565
  /** Width of the edge an `outlined` or `subtle` swatch is drawn with. */
10557
10566
  "--legend-swatch-stroke"?: (string) | undefined;
10567
+ /** Thickness of a series drawn as a line, here and on Area Chart's top edge and Bar Chart's `lines`. Each family's own width hook overrides it. */
10568
+ "--chart-stroke"?: (string) | undefined;
10558
10569
  /** How much of a line's color its wash takes. */
10559
10570
  "--line-chart-area-opacity"?: (string) | undefined;
10560
10571
  /** The slot the pointer is resting in. */
@@ -10565,7 +10576,7 @@ export type CustomCssProperties = {
10565
10576
  "--line-chart-gap"?: (string) | undefined;
10566
10577
  /** One rule across the plot, under `gridlines`. */
10567
10578
  "--line-chart-gridline-color"?: (string) | undefined;
10568
- /** Thickness of a line. */
10579
+ /** Thickness of a line, over `--chart-stroke`. */
10569
10580
  "--line-chart-width"?: (string) | undefined;
10570
10581
  /** Padding inside the row. */
10571
10582
  "--list-item-padding"?: (string) | undefined;
@@ -10687,6 +10698,8 @@ export type CustomCssProperties = {
10687
10698
  "--notifications-max-block-size"?: (string) | undefined;
10688
10699
  /** The gutter every item holds open where something in the feed has media. */
10689
10700
  "--notifications-media-column"?: (string) | undefined;
10701
+ /** Fill behind the number. */
10702
+ "--number-input-background-color"?: (string) | undefined;
10690
10703
  /** Ground under the tree. */
10691
10704
  "--object-inspector-background-color"?: (string) | undefined;
10692
10705
  /** Height of the scrolling box, when windowed. */
@@ -11139,7 +11152,7 @@ export interface WcToolkitVueGlobalComponents {
11139
11152
  HelixAreaChartVueProps,
11140
11153
  HelixAreaChartVueEvents
11141
11154
  >;
11142
- /** One fragment shader over a full-screen triangle, with the palette read from the tokens rather than given as colors. A background written with hex values is an asset that has to be re-cut when the brand moves; one written against '--helix-color-primary' is a consequence of it. **Every shape ramps through four token stops**, and the token layer inverts each: the page's background, 'primary-subtle', 'primary', then a peak. The peak is the foreground on a dark page and 'primary-active' on a light one, because mixing a saturated hue toward near-black takes the chroma out of the pixels carrying most of it. Which way the page runs is read off the ground's own luminance rather than asked of the mode, which is a private token. **No dependency, and no scene graph.** The geometry is three vertices derived from 'gl_VertexID', so there is no attribute, no buffer and no upload. **It stops when nobody is looking**, off screen and in a background tab, and 'prefers-reduced-motion' gets one still frame rather than an empty box. */
11155
+ /** One fragment shader over a full-screen triangle, with the palette read from the tokens rather than given as colors. A background written with hex values is an asset that has to be re-cut when the brand moves; one written against '--helix-color-primary' is a consequence of it. **Every shape ramps through four token stops**, and the token layer inverts each: the page's background, 'primary-subtle', 'primary', then a peak. The peak is the foreground on a dark page and 'primary-active' on a light one, because mixing a saturated hue toward near-black takes the chroma out of the pixels carrying most of it. Which way the page runs is read off the ground's own luminance rather than asked of the mode, which is a private token. **No dependency, and no scene graph.** The geometry is three vertices derived from 'gl_VertexID', so there is no attribute, no buffer and no upload. **It stops when nobody is looking**, off screen and in a background tab, and 'prefers-reduced-motion' gets one still frame rather than an empty box. Styled only, and with behavior, which the tier split does not otherwise allow: the behavior is drawing to a canvas, so there is no structure a consumer could restyle and nothing for a headless twin to hold. */
11143
11156
  "helix-aura": DefineCustomElement<
11144
11157
  HelixAura,
11145
11158
  HelixAuraVueProps,
@@ -11241,7 +11254,7 @@ export interface WcToolkitVueGlobalComponents {
11241
11254
  HelixCheckboxGroupVueProps,
11242
11255
  HelixCheckboxGroupVueEvents
11243
11256
  >;
11244
- /** The box is the native input, restyled rather than replaced, so the tick and the indeterminate dash are the browser's own and the control stays a control for anything reading the page. The label sits beside it and the whole thing is the click target, which is what a native '<label>' wrapping a checkbox gives and what a reader expects. */
11257
+ /** The box is the native input with its own drawing switched off, so the control stays a control for anything reading the page while the tick and the indeterminate dash are drawn here, as masks over a mark beside it, and their weight, color and motion are the design system's rather than the browser's. The label sits beside it and the whole thing is the click target, which is what a native '<label>' wrapping a checkbox gives and what a reader expects. */
11245
11258
  "helix-checkbox": DefineCustomElement<
11246
11259
  HelixCheckbox,
11247
11260
  HelixCheckboxVueProps,
@@ -11559,7 +11572,7 @@ export interface WcToolkitVueGlobalComponents {
11559
11572
  HelixOptionVueProps,
11560
11573
  HelixOptionVueEvents
11561
11574
  >;
11562
- /** A cloud of dots, drawn to a canvas, with one shape per state. 'connecting' and 'thinking' are the same leaning sash and differ in how agitated it is; 'waiting' and 'done' are the same settled ball at different tempos, which is the difference between not having started and having finished. 'fetching' is a globe with a light going round it, 'listening' a closed sphere with a ripple crossing it, and 'working' a ring. **None of them is a separate drawing.** Each is the same banded grid given different numbers, so changing state interpolates the numbers and every frame in between is a whole shape. A loader that cuts between pictures says the work restarted; one that carries a shape into the next says it moved on. **A change is measured before it is played.** Two states differing in one small number are given less time than a sash becoming a ring, and the silhouette leads what the shape is doing, so a light is never seen orbiting something that has not finished becoming round. **Nothing spins.** The whole cloud holds still and everything that moves is moving inside it, which is what makes it read as thought rather than as a thing being rotated. The one exception is the light, which travels because a ring of evenly spaced dots is unchanged by rotation: without something fixed in space passing over them, a state that turns has nothing a reader can see turning. **The palette is read from the tokens**, not given as colors: a dot's ink is mixed toward the ground by how far away it is, and both ends come from '--orb-color' and '--orb-ground'. That is what makes depth survive a theme change without the consumer restating anything. **It stops when nobody is looking**, off screen and in a background tab, and 'prefers-reduced-motion' gets one still frame rather than an empty box. */
11575
+ /** A cloud of dots, drawn to a canvas, with one shape per state. 'connecting' and 'thinking' are the same leaning sash and differ in how agitated it is; 'waiting' and 'done' are the same settled ball at different tempos, which is the difference between not having started and having finished. 'fetching' is a globe with a light going round it, 'listening' a closed sphere with a ripple crossing it, and 'working' a ring. **None of them is a separate drawing.** Each is the same banded grid given different numbers, so changing state interpolates the numbers and every frame in between is a whole shape. A loader that cuts between pictures says the work restarted; one that carries a shape into the next says it moved on. **A change is measured before it is played.** Two states differing in one small number are given less time than a sash becoming a ring, and the silhouette leads what the shape is doing, so a light is never seen orbiting something that has not finished becoming round. **Nothing spins.** The whole cloud holds still and everything that moves is moving inside it, which is what makes it read as thought rather than as a thing being rotated. The one exception is the light, which travels because a ring of evenly spaced dots is unchanged by rotation: without something fixed in space passing over them, a state that turns has nothing a reader can see turning. **The palette is read from the tokens**, not given as colors: a dot's ink is mixed toward the ground by how far away it is, and both ends come from '--orb-color' and '--orb-ground'. That is what makes depth survive a theme change without the consumer restating anything. **It stops when nobody is looking**, off screen and in a background tab, and 'prefers-reduced-motion' gets one still frame rather than an empty box. Styled only, and with behavior, which the tier split does not otherwise allow: the behavior is drawing dots to a canvas, so there is no structure a consumer could restyle and nothing for a headless twin to hold. */
11563
11576
  "helix-orb": DefineCustomElement<
11564
11577
  HelixOrb,
11565
11578
  HelixOrbVueProps,
@@ -11762,7 +11775,7 @@ export interface WcToolkitVueGlobalComponents {
11762
11775
  HelixSwitchVueProps,
11763
11776
  HelixSwitchVueEvents
11764
11777
  >;
11765
- /** Hairline rules between rows and no fill, per the rule that depth comes from a single border rather than from elevation. A dense table earns its density by decorating none of it. */
11778
+ /** Every cell is the same height whatever it holds, so a row with a tag or an icon button in it sits level with a row of text. Content is set in full foreground, since the cells are what a reader is reading, and a long identifier breaks rather than running into the next column. */
11766
11779
  "helix-table-cell": DefineCustomElement<
11767
11780
  HelixTableCell,
11768
11781
  HelixTableCellVueProps,
@@ -11780,13 +11793,13 @@ export interface WcToolkitVueGlobalComponents {
11780
11793
  HelixTableVueProps,
11781
11794
  HelixTableVueEvents
11782
11795
  >;
11783
- /** Hairline rules between rows and no fill, per the rule that depth comes from a single border rather than from elevation. A dense table earns its density by decorating none of it. */
11796
+ /** No box of its own, so its cells become items of the table's grid and line up with every other row's. The element still exists, which is what lets a row be selected, hidden or made interactive without a wrapper that would break the columns. */
11784
11797
  "helix-table-row": DefineCustomElement<
11785
11798
  HelixTableRow,
11786
11799
  HelixTableRowVueProps,
11787
11800
  HelixTableRowVueEvents
11788
11801
  >;
11789
- /** Selection is marked with a rule under the active tab rather than a filled pill, which keeps the row flat and lets the underline animate between tabs as a movement instead of two separate fills. */
11802
+ /** No box of its own, so only the panel that is showing takes space: a tab set with four panels gives the visible one the whole height rather than a quarter of it. */
11790
11803
  "helix-tab-panel": DefineCustomElement<
11791
11804
  HelixTabPanel,
11792
11805
  HelixTabPanelVueProps,
@@ -11798,7 +11811,7 @@ export interface WcToolkitVueGlobalComponents {
11798
11811
  HelixTabsVueProps,
11799
11812
  HelixTabsVueEvents
11800
11813
  >;
11801
- /** Selection is marked with a rule under the active tab rather than a filled pill, which keeps the row flat and lets the underline animate between tabs as a movement instead of two separate fills. */
11814
+ /** A control's height, so a tab row sits level with the buttons beside it. The current tab is not marked here: one indicator travels along the tab list, and each tab keeps a transparent edge of the same width so its box does not move when it becomes current. */
11802
11815
  "helix-tab": DefineCustomElement<
11803
11816
  HelixTab,
11804
11817
  HelixTabVueProps,