@fusion.dev/helix-headless 0.26.0 → 0.30.1

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 (89) hide show
  1. package/custom-elements.json +4966 -755
  2. package/dist/accordion/root/accordion-root.d.ts +5 -6
  3. package/dist/accordion/root/accordion-root.js +13 -36
  4. package/dist/announcement/root/announcement-root.js +1 -1
  5. package/dist/avatar/root/avatar-root.d.ts +17 -3
  6. package/dist/avatar/root/avatar-root.js +27 -8
  7. package/dist/blockquote/root/blockquote-root.js +1 -1
  8. package/dist/button/root/button-root.js +1 -1
  9. package/dist/carousel/root/carousel-root.js +2 -2
  10. package/dist/chat/root/chat-root.js +1 -1
  11. package/dist/checkbox/root/checkbox-root.js +2 -2
  12. package/dist/checkbox-group/root/checkbox-group-root.js +2 -2
  13. package/dist/color-input/root/color-input-root.d.ts +12 -14
  14. package/dist/color-input/root/color-input-root.js +4 -52
  15. package/dist/color-picker/root/color-picker-root.js +2 -2
  16. package/dist/combobox/root/combobox-root.js +11 -14
  17. package/dist/command/root/command-root.js +2 -3
  18. package/dist/data-table/root/data-table-root.js +1 -1
  19. package/dist/date-input/root/date-input-root.d.ts +5 -77
  20. package/dist/date-input/root/date-input-root.js +16 -108
  21. package/dist/date-picker/root/date-picker-root.js +2 -2
  22. package/dist/divider/root/divider-root.js +1 -1
  23. package/dist/drawer/root/drawer-root.js +1 -1
  24. package/dist/drilldown/item/drilldown-item.js +1 -1
  25. package/dist/file-input/root/file-input-root.js +4 -7
  26. package/dist/filter-input/field/filter-field.d.ts +1 -1
  27. package/dist/filter-input/root/filter-input-root.d.ts +2 -2
  28. package/dist/filter-input/root/filter-input-root.js +12 -15
  29. package/dist/heatmap/root/heatmap-root.js +1 -1
  30. package/dist/image/root/image-root.d.ts +7 -0
  31. package/dist/image/root/image-root.js +6 -2
  32. package/dist/input/root/input-root.js +3 -3
  33. package/dist/listbox/root/listbox-root.js +3 -3
  34. package/dist/megamenu/root/megamenu-root.d.ts +12 -2
  35. package/dist/megamenu/root/megamenu-root.js +20 -15
  36. package/dist/menu/item/menu-item.js +1 -1
  37. package/dist/menu/root/menu-root.js +3 -10
  38. package/dist/navigation/root/navigation-root.d.ts +1 -2
  39. package/dist/navigation/root/navigation-root.js +3 -9
  40. package/dist/number-input/root/number-input-root.js +5 -5
  41. package/dist/object-inspector/root/object-inspector-root.js +4 -4
  42. package/dist/outline/root/outline-root.d.ts +0 -1
  43. package/dist/outline/root/outline-root.js +6 -12
  44. package/dist/pin-input/root/pin-input-root.js +2 -2
  45. package/dist/popover/root/popover-root.js +2 -10
  46. package/dist/radio/root/radio-root.js +1 -1
  47. package/dist/scatter-chart/root/scatter-chart-root.js +1 -1
  48. package/dist/scroll-area/root/scroll-area-root.js +1 -1
  49. package/dist/select/root/select-root.js +8 -9
  50. package/dist/slider/root/slider-root.js +2 -2
  51. package/dist/sparkline/root/sparkline-root.d.ts +2 -1
  52. package/dist/sparkline/root/sparkline-root.js +2 -2
  53. package/dist/speed-dial/item/speed-dial-item.js +1 -1
  54. package/dist/speed-dial/root/speed-dial-root.d.ts +2 -2
  55. package/dist/speed-dial/root/speed-dial-root.js +4 -7
  56. package/dist/switch/root/switch-root.js +3 -3
  57. package/dist/table/column/table-column.js +1 -1
  58. package/dist/tabs/root/tabs-root.d.ts +2 -17
  59. package/dist/tabs/root/tabs-root.js +3 -21
  60. package/dist/tabs/tab/tab.js +1 -1
  61. package/dist/textarea/root/textarea-root.js +3 -3
  62. package/dist/time-input/root/time-input-root.d.ts +5 -64
  63. package/dist/time-input/root/time-input-root.js +15 -107
  64. package/dist/time-picker/root/time-picker-root.js +2 -2
  65. package/dist/toggle/group/toggle-group.d.ts +0 -13
  66. package/dist/toggle/group/toggle-group.js +3 -23
  67. package/dist/toggle/root/toggle-root.js +1 -1
  68. package/dist/tooltip/root/tooltip-root.d.ts +0 -13
  69. package/dist/tooltip/root/tooltip-root.js +8 -16
  70. package/dist/tour/root/tour-root.js +6 -6
  71. package/dist/tour/stop/tour-stop.js +2 -2
  72. package/dist/video/root/captions.d.ts +85 -0
  73. package/dist/video/root/captions.js +45 -0
  74. package/dist/video/root/fullscreen.d.ts +28 -0
  75. package/dist/video/root/fullscreen.js +28 -0
  76. package/dist/video/root/idle.d.ts +34 -0
  77. package/dist/video/root/idle.js +24 -0
  78. package/dist/video/root/media-session.d.ts +54 -0
  79. package/dist/video/root/media-session.js +49 -0
  80. package/dist/video/root/remote-playback.d.ts +34 -0
  81. package/dist/video/root/remote-playback.js +38 -0
  82. package/dist/video/root/video-root.d.ts +11 -89
  83. package/dist/video/root/video-root.js +45 -139
  84. package/dist/video-playlist/menu/video-playlist-menu.d.ts +2 -1
  85. package/dist/video-playlist/menu/video-playlist-menu.js +8 -10
  86. package/dist/virtual-list/root/virtual-list-root.js +1 -1
  87. package/package.json +8 -7
  88. package/types/jsx.d.ts +264 -192
  89. package/types/vue.d.ts +78 -69
package/types/jsx.d.ts CHANGED
@@ -892,6 +892,15 @@ Used for the label and the initials. */
892
892
 
893
893
  Falls back to the slot, or to initials, if it fails. */
894
894
  src?: (HelixHeadlessAvatar["src"]) | undefined;
895
+ /** Where the image stands: still on its way, arrived, or failed and replaced
896
+ by the initials.
897
+
898
+ Read-only to a consumer: it is a report rather than a setting, and the same
899
+ report `Image` gives, for the same reason. `load` and `error` fire once, so
900
+ a listener bound after the picture settled hears neither, which is the
901
+ platform on an `<img>` too, and this is what that listener asks instead.
902
+ Mirrored to `data-status` rather than reflected, as `Image` explains. */
903
+ status?: (HelixHeadlessAvatar["status"]) | undefined;
895
904
 
896
905
  /** Relayed from the image when it fails. */
897
906
  onerror?: ((e: HelixHeadlessAvatarElementEvent) => void) | undefined;
@@ -908,6 +917,15 @@ Used for the label and the initials. */
908
917
 
909
918
  Falls back to the slot, or to initials, if it fails. */
910
919
  "prop:src"?: (HelixHeadlessAvatar["src"]) | undefined;
920
+ /** Where the image stands: still on its way, arrived, or failed and replaced
921
+ by the initials.
922
+
923
+ Read-only to a consumer: it is a report rather than a setting, and the same
924
+ report `Image` gives, for the same reason. `load` and `error` fire once, so
925
+ a listener bound after the picture settled hears neither, which is the
926
+ platform on an `<img>` too, and this is what that listener asks instead.
927
+ Mirrored to `data-status` rather than reflected, as `Image` explains. */
928
+ "prop:status"?: (HelixHeadlessAvatar["status"]) | undefined;
911
929
  /** Relayed from the image when it fails. */
912
930
  "on:error"?: ((e: HelixHeadlessAvatarElementEvent) => void) | undefined;
913
931
  /** Relayed from the image once it has loaded. */
@@ -1759,7 +1777,7 @@ way to stop it, so an autoplaying carousel keeps its pause control on a
1759
1777
  touch device exactly as it does on a desktop. */
1760
1778
  controls?: (HelixHeadlessCarousel["controls"]) | undefined;
1761
1779
  /** Slide to start on, where nothing declared one. */
1762
- "default-index"?: (HelixHeadlessCarousel["defaultIndex"]) | undefined;
1780
+ "default-index"?: (HelixHeadlessCarousel["defaultIndex"] | `${number}`) | undefined;
1763
1781
  /** Slide to start on, where nothing declared one. */
1764
1782
  defaultIndex?: (HelixHeadlessCarousel["defaultIndex"]) | undefined;
1765
1783
  /** How long each slide is held, in milliseconds. */
@@ -1796,7 +1814,7 @@ No default, because it reflects. A reflected property with a value writes
1796
1814
  its attribute on upgrade, and the host then carries something a consumer's
1797
1815
  server markup never had, which React reports as a mismatch. The one-across
1798
1816
  case is the absent attribute, and the styles read it that way. */
1799
- "per-view"?: (HelixHeadlessCarousel["perView"]) | undefined;
1817
+ "per-view"?: (HelixHeadlessCarousel["perView"] | `${number}`) | undefined;
1800
1818
  /** How many slides are shown across the track at once. Absent shows one.
1801
1819
 
1802
1820
  **Here rather than on the styled tier, because it decides how many places
@@ -1860,7 +1878,7 @@ way to stop it, so an autoplaying carousel keeps its pause control on a
1860
1878
  touch device exactly as it does on a desktop. */
1861
1879
  "prop:controls"?: (HelixHeadlessCarousel["controls"]) | undefined;
1862
1880
  /** Slide to start on, where nothing declared one. */
1863
- "attr:default-index"?: (HelixHeadlessCarousel["defaultIndex"]) | undefined;
1881
+ "attr:default-index"?: (HelixHeadlessCarousel["defaultIndex"] | `${number}`) | undefined;
1864
1882
  /** Slide to start on, where nothing declared one. */
1865
1883
  "prop:defaultIndex"?: (HelixHeadlessCarousel["defaultIndex"]) | undefined;
1866
1884
  /** How long each slide is held, in milliseconds. */
@@ -1897,7 +1915,7 @@ No default, because it reflects. A reflected property with a value writes
1897
1915
  its attribute on upgrade, and the host then carries something a consumer's
1898
1916
  server markup never had, which React reports as a mismatch. The one-across
1899
1917
  case is the absent attribute, and the styles read it that way. */
1900
- "attr:per-view"?: (HelixHeadlessCarousel["perView"]) | undefined;
1918
+ "attr:per-view"?: (HelixHeadlessCarousel["perView"] | `${number}`) | undefined;
1901
1919
  /** How many slides are shown across the track at once. Absent shows one.
1902
1920
 
1903
1921
  **Here rather than on the styled tier, because it decides how many places
@@ -3308,7 +3326,7 @@ the resolved state for stylesheets, which is what the mirror is for. */
3308
3326
  /** What the collapsed count is called, since `+3` names nothing. */
3309
3327
  expandLabel?: (HelixHeadlessCombobox["expandLabel"]) | undefined;
3310
3328
  /** How many tokens to show before the rest become a count. */
3311
- "max-tags"?: (HelixHeadlessCombobox["maxTags"]) | undefined;
3329
+ "max-tags"?: (HelixHeadlessCombobox["maxTags"] | `${number}`) | undefined;
3312
3330
  /** How many tokens to show before the rest become a count. */
3313
3331
  maxTags?: (HelixHeadlessCombobox["maxTags"]) | undefined;
3314
3332
  /** The value the markup declared, which is where a reset returns to. */
@@ -3474,7 +3492,7 @@ the resolved state for stylesheets, which is what the mirror is for. */
3474
3492
  /** What the collapsed count is called, since `+3` names nothing. */
3475
3493
  "prop:expandLabel"?: (HelixHeadlessCombobox["expandLabel"]) | undefined;
3476
3494
  /** How many tokens to show before the rest become a count. */
3477
- "attr:max-tags"?: (HelixHeadlessCombobox["maxTags"]) | undefined;
3495
+ "attr:max-tags"?: (HelixHeadlessCombobox["maxTags"] | `${number}`) | undefined;
3478
3496
  /** How many tokens to show before the rest become a count. */
3479
3497
  "prop:maxTags"?: (HelixHeadlessCombobox["maxTags"]) | undefined;
3480
3498
  /** The value the markup declared, which is where a reset returns to. */
@@ -4053,11 +4071,11 @@ export type HelixHeadlessDataTableProps = {
4053
4071
  /** Column order to open with, where nothing declared one. */
4054
4072
  defaultOrder?: (HelixHeadlessDataTable["defaultOrder"]) | undefined;
4055
4073
  /** Page to open on, where nothing declared one. */
4056
- "default-page"?: (HelixHeadlessDataTable["defaultPage"]) | undefined;
4074
+ "default-page"?: (HelixHeadlessDataTable["defaultPage"] | `${number}`) | undefined;
4057
4075
  /** Page to open on, where nothing declared one. */
4058
4076
  defaultPage?: (HelixHeadlessDataTable["defaultPage"]) | undefined;
4059
4077
  /** Page size to open with, where nothing declared one. */
4060
- "default-page-size"?: (HelixHeadlessDataTable["defaultPageSize"]) | undefined;
4078
+ "default-page-size"?: (HelixHeadlessDataTable["defaultPageSize"] | `${number}`) | undefined;
4061
4079
  /** Page size to open with, where nothing declared one. */
4062
4080
  defaultPageSize?: (HelixHeadlessDataTable["defaultPageSize"]) | undefined;
4063
4081
  /** Keys to open with selected, comma separated, where nothing declared any. */
@@ -4164,7 +4182,7 @@ element ever asks for a different page size: a size selector is
4164
4182
  `helix-pagination-size`, which a consumer puts in the `footer` slot and
4165
4183
  answers themselves. Routing this through `requestChange` would announce an
4166
4184
  event the element never has cause to fire. */
4167
- "page-size"?: (HelixHeadlessDataTable["pageSize"]) | undefined;
4185
+ "page-size"?: (HelixHeadlessDataTable["pageSize"] | `${number}`) | undefined;
4168
4186
  /** How many rows a page holds. Zero is every row, which is what "no paging" means.
4169
4187
 
4170
4188
  **It announces nothing, and that is not an omission.** Nothing in this
@@ -4256,11 +4274,11 @@ export type HelixHeadlessDataTableSolidJsProps = {
4256
4274
  /** Column order to open with, where nothing declared one. */
4257
4275
  "prop:defaultOrder"?: (HelixHeadlessDataTable["defaultOrder"]) | undefined;
4258
4276
  /** Page to open on, where nothing declared one. */
4259
- "attr:default-page"?: (HelixHeadlessDataTable["defaultPage"]) | undefined;
4277
+ "attr:default-page"?: (HelixHeadlessDataTable["defaultPage"] | `${number}`) | undefined;
4260
4278
  /** Page to open on, where nothing declared one. */
4261
4279
  "prop:defaultPage"?: (HelixHeadlessDataTable["defaultPage"]) | undefined;
4262
4280
  /** Page size to open with, where nothing declared one. */
4263
- "attr:default-page-size"?: (HelixHeadlessDataTable["defaultPageSize"]) | undefined;
4281
+ "attr:default-page-size"?: (HelixHeadlessDataTable["defaultPageSize"] | `${number}`) | undefined;
4264
4282
  /** Page size to open with, where nothing declared one. */
4265
4283
  "prop:defaultPageSize"?: (HelixHeadlessDataTable["defaultPageSize"]) | undefined;
4266
4284
  /** Keys to open with selected, comma separated, where nothing declared any. */
@@ -4367,7 +4385,7 @@ element ever asks for a different page size: a size selector is
4367
4385
  `helix-pagination-size`, which a consumer puts in the `footer` slot and
4368
4386
  answers themselves. Routing this through `requestChange` would announce an
4369
4387
  event the element never has cause to fire. */
4370
- "attr:page-size"?: (HelixHeadlessDataTable["pageSize"]) | undefined;
4388
+ "attr:page-size"?: (HelixHeadlessDataTable["pageSize"] | `${number}`) | undefined;
4371
4389
  /** How many rows a page holds. Zero is every row, which is what "no paging" means.
4372
4390
 
4373
4391
  **It announces nothing, and that is not an omission.** Nothing in this
@@ -4534,7 +4552,7 @@ submits and what `min` and `max` compare against. */
4534
4552
  /** Days of the week that cannot be chosen, `0` for Sunday through `6`. */
4535
4553
  disableDays?: (HelixHeadlessDateInput["disableDays"]) | undefined;
4536
4554
  /** First column of the week in the calendar, `0` for Sunday through `6`. */
4537
- "first-day-of-week"?: (HelixHeadlessDateInput["firstDayOfWeek"]) | undefined;
4555
+ "first-day-of-week"?: (HelixHeadlessDateInput["firstDayOfWeek"] | `${number}`) | undefined;
4538
4556
  /** First column of the week in the calendar, `0` for Sunday through `6`. */
4539
4557
  firstDayOfWeek?: (HelixHeadlessDateInput["firstDayOfWeek"]) | undefined;
4540
4558
  /** Language tag the calendar names its months and days in. */
@@ -4557,6 +4575,17 @@ first. The panel is sized by its content, so this widens it. */
4557
4575
  months?: (HelixHeadlessDateInput["months"]) | undefined;
4558
4576
  /** What the field says before a date is in it. */
4559
4577
  placeholder?: (HelixHeadlessDateInput["placeholder"]) | undefined;
4578
+ /** How far apart the selectable dates are, in days.
4579
+
4580
+ `<input type="date" step>`'s own unit, handed to the calendar this renders
4581
+ so the field and the grid agree about which dates exist. Counted from `min`
4582
+ where there is one and from 1 January 1970 where there is not, which is the
4583
+ platform's base. */
4584
+ step?: (HelixHeadlessDateInput["step"]) | undefined;
4585
+ /** Accessible name for the control that opens the calendar. */
4586
+ "trigger-label"?: (HelixHeadlessDateInput["triggerLabel"]) | undefined;
4587
+ /** Accessible name for the control that opens the calendar. */
4588
+ triggerLabel?: (HelixHeadlessDateInput["triggerLabel"]) | undefined;
4560
4589
  /** Whether the control refuses changes while still submitting its value.
4561
4590
 
4562
4591
  **Enforced by refusing every request in one place**, which is the seam this
@@ -4581,17 +4610,6 @@ submits nothing and leaves the tab order, and a read-only one submits its
4581
4610
  value and stays reachable, which is what a form showing a value somebody
4582
4611
  else set needs. */
4583
4612
  readOnly?: (HelixHeadlessDateInput["readOnly"]) | undefined;
4584
- /** How far apart the selectable dates are, in days.
4585
-
4586
- `<input type="date" step>`'s own unit, handed to the calendar this renders
4587
- so the field and the grid agree about which dates exist. Counted from `min`
4588
- where there is one and from 1 January 1970 where there is not, which is the
4589
- platform's base. */
4590
- step?: (HelixHeadlessDateInput["step"]) | undefined;
4591
- /** Accessible name for the control that opens the calendar. */
4592
- "trigger-label"?: (HelixHeadlessDateInput["triggerLabel"]) | undefined;
4593
- /** Accessible name for the control that opens the calendar. */
4594
- triggerLabel?: (HelixHeadlessDateInput["triggerLabel"]) | undefined;
4595
4613
  /** Whether the element is open.
4596
4614
 
4597
4615
  One property, not two, so `dialog.open` answers the question anyone
@@ -4620,7 +4638,7 @@ the resolved state for stylesheets, which is what the mirror is for. */
4620
4638
  /** What the collapsed count is called, since `+3` names nothing. */
4621
4639
  expandLabel?: (HelixHeadlessDateInput["expandLabel"]) | undefined;
4622
4640
  /** How many tokens to show before the rest become a count. */
4623
- "max-tags"?: (HelixHeadlessDateInput["maxTags"]) | undefined;
4641
+ "max-tags"?: (HelixHeadlessDateInput["maxTags"] | `${number}`) | undefined;
4624
4642
  /** How many tokens to show before the rest become a count. */
4625
4643
  maxTags?: (HelixHeadlessDateInput["maxTags"]) | undefined;
4626
4644
  /** The value the markup declared, which is where a reset returns to. */
@@ -4765,7 +4783,7 @@ submits and what `min` and `max` compare against. */
4765
4783
  /** Days of the week that cannot be chosen, `0` for Sunday through `6`. */
4766
4784
  "prop:disableDays"?: (HelixHeadlessDateInput["disableDays"]) | undefined;
4767
4785
  /** First column of the week in the calendar, `0` for Sunday through `6`. */
4768
- "attr:first-day-of-week"?: (HelixHeadlessDateInput["firstDayOfWeek"]) | undefined;
4786
+ "attr:first-day-of-week"?: (HelixHeadlessDateInput["firstDayOfWeek"] | `${number}`) | undefined;
4769
4787
  /** First column of the week in the calendar, `0` for Sunday through `6`. */
4770
4788
  "prop:firstDayOfWeek"?: (HelixHeadlessDateInput["firstDayOfWeek"]) | undefined;
4771
4789
  /** Language tag the calendar names its months and days in. */
@@ -4788,6 +4806,17 @@ first. The panel is sized by its content, so this widens it. */
4788
4806
  "prop:months"?: (HelixHeadlessDateInput["months"]) | undefined;
4789
4807
  /** What the field says before a date is in it. */
4790
4808
  "prop:placeholder"?: (HelixHeadlessDateInput["placeholder"]) | undefined;
4809
+ /** How far apart the selectable dates are, in days.
4810
+
4811
+ `<input type="date" step>`'s own unit, handed to the calendar this renders
4812
+ so the field and the grid agree about which dates exist. Counted from `min`
4813
+ where there is one and from 1 January 1970 where there is not, which is the
4814
+ platform's base. */
4815
+ "prop:step"?: (HelixHeadlessDateInput["step"]) | undefined;
4816
+ /** Accessible name for the control that opens the calendar. */
4817
+ "attr:trigger-label"?: (HelixHeadlessDateInput["triggerLabel"]) | undefined;
4818
+ /** Accessible name for the control that opens the calendar. */
4819
+ "prop:triggerLabel"?: (HelixHeadlessDateInput["triggerLabel"]) | undefined;
4791
4820
  /** Whether the control refuses changes while still submitting its value.
4792
4821
 
4793
4822
  **Enforced by refusing every request in one place**, which is the seam this
@@ -4812,17 +4841,6 @@ submits nothing and leaves the tab order, and a read-only one submits its
4812
4841
  value and stays reachable, which is what a form showing a value somebody
4813
4842
  else set needs. */
4814
4843
  "prop:readOnly"?: (HelixHeadlessDateInput["readOnly"]) | undefined;
4815
- /** How far apart the selectable dates are, in days.
4816
-
4817
- `<input type="date" step>`'s own unit, handed to the calendar this renders
4818
- so the field and the grid agree about which dates exist. Counted from `min`
4819
- where there is one and from 1 January 1970 where there is not, which is the
4820
- platform's base. */
4821
- "prop:step"?: (HelixHeadlessDateInput["step"]) | undefined;
4822
- /** Accessible name for the control that opens the calendar. */
4823
- "attr:trigger-label"?: (HelixHeadlessDateInput["triggerLabel"]) | undefined;
4824
- /** Accessible name for the control that opens the calendar. */
4825
- "prop:triggerLabel"?: (HelixHeadlessDateInput["triggerLabel"]) | undefined;
4826
4844
  /** Whether the element is open.
4827
4845
 
4828
4846
  One property, not two, so `dialog.open` answers the question anyone
@@ -4851,7 +4869,7 @@ the resolved state for stylesheets, which is what the mirror is for. */
4851
4869
  /** What the collapsed count is called, since `+3` names nothing. */
4852
4870
  "prop:expandLabel"?: (HelixHeadlessDateInput["expandLabel"]) | undefined;
4853
4871
  /** How many tokens to show before the rest become a count. */
4854
- "attr:max-tags"?: (HelixHeadlessDateInput["maxTags"]) | undefined;
4872
+ "attr:max-tags"?: (HelixHeadlessDateInput["maxTags"] | `${number}`) | undefined;
4855
4873
  /** How many tokens to show before the rest become a count. */
4856
4874
  "prop:maxTags"?: (HelixHeadlessDateInput["maxTags"]) | undefined;
4857
4875
  /** The value the markup declared, which is where a reset returns to. */
@@ -4964,7 +4982,7 @@ export type HelixHeadlessDatePickerProps = {
4964
4982
  /** Days of the week that cannot be chosen, comma separated, `0` to `6`. */
4965
4983
  disableDays?: (HelixHeadlessDatePicker["disableDays"]) | undefined;
4966
4984
  /** First column of the week, `0` for Sunday through `6` for Saturday. */
4967
- "first-day-of-week"?: (HelixHeadlessDatePicker["firstDayOfWeek"]) | undefined;
4985
+ "first-day-of-week"?: (HelixHeadlessDatePicker["firstDayOfWeek"] | `${number}`) | undefined;
4968
4986
  /** First column of the week, `0` for Sunday through `6` for Saturday. */
4969
4987
  firstDayOfWeek?: (HelixHeadlessDatePicker["firstDayOfWeek"]) | undefined;
4970
4988
  /** Whether the current selection fails validation. */
@@ -5125,7 +5143,7 @@ export type HelixHeadlessDatePickerSolidJsProps = {
5125
5143
  /** Days of the week that cannot be chosen, comma separated, `0` to `6`. */
5126
5144
  "prop:disableDays"?: (HelixHeadlessDatePicker["disableDays"]) | undefined;
5127
5145
  /** First column of the week, `0` for Sunday through `6` for Saturday. */
5128
- "attr:first-day-of-week"?: (HelixHeadlessDatePicker["firstDayOfWeek"]) | undefined;
5146
+ "attr:first-day-of-week"?: (HelixHeadlessDatePicker["firstDayOfWeek"] | `${number}`) | undefined;
5129
5147
  /** First column of the week, `0` for Sunday through `6` for Saturday. */
5130
5148
  "prop:firstDayOfWeek"?: (HelixHeadlessDatePicker["firstDayOfWeek"]) | undefined;
5131
5149
  /** Whether the current selection fails validation. */
@@ -6108,14 +6126,14 @@ imperatively later, and nothing is hydrating by then.
6108
6126
  Here rather than on each control. */
6109
6127
  name?: (HelixHeadlessFileInput["name"]) | undefined;
6110
6128
 
6111
- /** Announced once the value has moved. */
6112
- oninput?: ((e: HelixHeadlessFileInputElementEvent) => void) | undefined;
6113
6129
  /** Announced once the value has moved. */
6114
6130
  onchange?: ((e: HelixHeadlessFileInputElementEvent) => void) | undefined;
6115
6131
  /** Fired before the chosen files change, with their names. Cancelable: refusing it takes the decision and nothing moves. */
6116
6132
  "onhelix-before-change"?: ((
6117
6133
  e: HelixHeadlessFileInputHelixBeforeChangeElementEvent,
6118
6134
  ) => void) | undefined;
6135
+ /** Announced once the value has moved. */
6136
+ oninput?: ((e: HelixHeadlessFileInputElementEvent) => void) | undefined;
6119
6137
  };
6120
6138
 
6121
6139
  export type HelixHeadlessFileInputSolidJsProps = {
@@ -6172,13 +6190,13 @@ imperatively later, and nothing is hydrating by then.
6172
6190
  Here rather than on each control. */
6173
6191
  "prop:name"?: (HelixHeadlessFileInput["name"]) | undefined;
6174
6192
  /** Announced once the value has moved. */
6175
- "on:input"?: ((e: HelixHeadlessFileInputElementEvent) => void) | undefined;
6176
- /** Announced once the value has moved. */
6177
6193
  "on:change"?: ((e: HelixHeadlessFileInputElementEvent) => void) | undefined;
6178
6194
  /** Fired before the chosen files change, with their names. Cancelable: refusing it takes the decision and nothing moves. */
6179
6195
  "on:helix-before-change"?: ((
6180
6196
  e: HelixHeadlessFileInputHelixBeforeChangeElementEvent,
6181
6197
  ) => void) | undefined;
6198
+ /** Announced once the value has moved. */
6199
+ "on:input"?: ((e: HelixHeadlessFileInputElementEvent) => void) | undefined;
6182
6200
 
6183
6201
  /** Set the innerHTML of the element */
6184
6202
  innerHTML?: (string) | undefined;
@@ -6572,7 +6590,7 @@ the resolved state for stylesheets, which is what the mirror is for. */
6572
6590
  /** What the collapsed count is called, since `+3` names nothing. */
6573
6591
  expandLabel?: (HelixHeadlessFilterInput["expandLabel"]) | undefined;
6574
6592
  /** How many tokens to show before the rest become a count. */
6575
- "max-tags"?: (HelixHeadlessFilterInput["maxTags"]) | undefined;
6593
+ "max-tags"?: (HelixHeadlessFilterInput["maxTags"] | `${number}`) | undefined;
6576
6594
  /** How many tokens to show before the rest become a count. */
6577
6595
  maxTags?: (HelixHeadlessFilterInput["maxTags"]) | undefined;
6578
6596
  /** The value the markup declared, which is where a reset returns to. */
@@ -6695,7 +6713,7 @@ the resolved state for stylesheets, which is what the mirror is for. */
6695
6713
  /** What the collapsed count is called, since `+3` names nothing. */
6696
6714
  "prop:expandLabel"?: (HelixHeadlessFilterInput["expandLabel"]) | undefined;
6697
6715
  /** How many tokens to show before the rest become a count. */
6698
- "attr:max-tags"?: (HelixHeadlessFilterInput["maxTags"]) | undefined;
6716
+ "attr:max-tags"?: (HelixHeadlessFilterInput["maxTags"] | `${number}`) | undefined;
6699
6717
  /** How many tokens to show before the rest become a count. */
6700
6718
  "prop:maxTags"?: (HelixHeadlessFilterInput["maxTags"]) | undefined;
6701
6719
  /** The value the markup declared, which is where a reset returns to. */
@@ -6927,7 +6945,7 @@ arithmetic should plan around.
6927
6945
 
6928
6946
  Zero turns the dropping off altogether, which is right for a strip in a
6929
6947
  container that cannot get narrow. */
6930
- "min-cell"?: (HelixHeadlessHeatmap["minCell"]) | undefined;
6948
+ "min-cell"?: (HelixHeadlessHeatmap["minCell"] | `${number}`) | undefined;
6931
6949
  /** The smallest a cell may get before the strip draws fewer of them, in CSS pixels.
6932
6950
 
6933
6951
  **Set this only to overrule what the strip actually draws.** The arithmetic
@@ -7015,7 +7033,7 @@ arithmetic should plan around.
7015
7033
 
7016
7034
  Zero turns the dropping off altogether, which is right for a strip in a
7017
7035
  container that cannot get narrow. */
7018
- "attr:min-cell"?: (HelixHeadlessHeatmap["minCell"]) | undefined;
7036
+ "attr:min-cell"?: (HelixHeadlessHeatmap["minCell"] | `${number}`) | undefined;
7019
7037
  /** The smallest a cell may get before the strip draws fewer of them, in CSS pixels.
7020
7038
 
7021
7039
  **Set this only to overrule what the strip actually draws.** The arithmetic
@@ -7617,11 +7635,11 @@ is broken. */
7617
7635
  /** What the clear button is called, since an icon has no name of its own. */
7618
7636
  clearLabel?: (HelixHeadlessInput["clearLabel"]) | undefined;
7619
7637
  /** Most characters the value may have. */
7620
- maxlength?: (HelixHeadlessInput["maxLength"]) | undefined;
7638
+ maxlength?: (HelixHeadlessInput["maxLength"] | `${number}`) | undefined;
7621
7639
  /** Most characters the value may have. */
7622
7640
  maxLength?: (HelixHeadlessInput["maxLength"]) | undefined;
7623
7641
  /** Fewest characters the value may have. */
7624
- minlength?: (HelixHeadlessInput["minLength"]) | undefined;
7642
+ minlength?: (HelixHeadlessInput["minLength"] | `${number}`) | undefined;
7625
7643
  /** Fewest characters the value may have. */
7626
7644
  minLength?: (HelixHeadlessInput["minLength"]) | undefined;
7627
7645
  /** A regular expression the value has to match, as the platform reads it.
@@ -7781,11 +7799,11 @@ is broken. */
7781
7799
  /** What the clear button is called, since an icon has no name of its own. */
7782
7800
  "prop:clearLabel"?: (HelixHeadlessInput["clearLabel"]) | undefined;
7783
7801
  /** Most characters the value may have. */
7784
- "attr:maxlength"?: (HelixHeadlessInput["maxLength"]) | undefined;
7802
+ "attr:maxlength"?: (HelixHeadlessInput["maxLength"] | `${number}`) | undefined;
7785
7803
  /** Most characters the value may have. */
7786
7804
  "prop:maxLength"?: (HelixHeadlessInput["maxLength"]) | undefined;
7787
7805
  /** Fewest characters the value may have. */
7788
- "attr:minlength"?: (HelixHeadlessInput["minLength"]) | undefined;
7806
+ "attr:minlength"?: (HelixHeadlessInput["minLength"] | `${number}`) | undefined;
7789
7807
  /** Fewest characters the value may have. */
7790
7808
  "prop:minLength"?: (HelixHeadlessInput["minLength"]) | undefined;
7791
7809
  /** A regular expression the value has to match, as the platform reads it.
@@ -8647,7 +8665,7 @@ so the controller has to be told not to measure, and that decision is here
8647
8665
  whatever the stylesheet says. Writing the width in both places would be one
8648
8666
  number in two languages, drifting the first time either moved. This sets
8649
8667
  `data-narrow` on the host and the stylesheet arranges itself off that. */
8650
- "full-below"?: (HelixHeadlessMegamenu["fullBelow"]) | undefined;
8668
+ "full-below"?: (HelixHeadlessMegamenu["fullBelow"] | `${number}`) | undefined;
8651
8669
  /** The width, in pixels, under which a card becomes a band. Zero never does.
8652
8670
 
8653
8671
  A card is a panel hung off one word, and there is no room to hang anything
@@ -8740,7 +8758,7 @@ so the controller has to be told not to measure, and that decision is here
8740
8758
  whatever the stylesheet says. Writing the width in both places would be one
8741
8759
  number in two languages, drifting the first time either moved. This sets
8742
8760
  `data-narrow` on the host and the stylesheet arranges itself off that. */
8743
- "attr:full-below"?: (HelixHeadlessMegamenu["fullBelow"]) | undefined;
8761
+ "attr:full-below"?: (HelixHeadlessMegamenu["fullBelow"] | `${number}`) | undefined;
8744
8762
  /** The width, in pixels, under which a card becomes a band. Zero never does.
8745
8763
 
8746
8764
  A card is a panel hung off one word, and there is no room to hang anything
@@ -9659,7 +9677,7 @@ consumer to ask for it. */
9659
9677
  Ten steps, which is the convention every spinner on the platform follows,
9660
9678
  and a property because ten of a step of `0.01` is a hundredth and rarely
9661
9679
  what a reader wants from a whole key. */
9662
- "large-step"?: (HelixHeadlessNumberInput["largeStep"]) | undefined;
9680
+ "large-step"?: (HelixHeadlessNumberInput["largeStep"] | `${number}`) | undefined;
9663
9681
  /** How far `PageUp` and `PageDown` move.
9664
9682
 
9665
9683
  Ten steps, which is the convention every spinner on the platform follows,
@@ -9776,7 +9794,7 @@ consumer to ask for it. */
9776
9794
  Ten steps, which is the convention every spinner on the platform follows,
9777
9795
  and a property because ten of a step of `0.01` is a hundredth and rarely
9778
9796
  what a reader wants from a whole key. */
9779
- "attr:large-step"?: (HelixHeadlessNumberInput["largeStep"]) | undefined;
9797
+ "attr:large-step"?: (HelixHeadlessNumberInput["largeStep"] | `${number}`) | undefined;
9780
9798
  /** How far `PageUp` and `PageDown` move.
9781
9799
 
9782
9800
  Ten steps, which is the convention every spinner on the platform follows,
@@ -9892,7 +9910,7 @@ One by default: the root is open and everything under it closed, so a
9892
9910
  reader sees the shape of the value before its contents. `0` starts with the
9893
9911
  root closed; a large number opens everything, which on a big value is the
9894
9912
  wall of text this exists to avoid. */
9895
- "default-depth"?: (HelixHeadlessObjectInspector["defaultDepth"]) | undefined;
9913
+ "default-depth"?: (HelixHeadlessObjectInspector["defaultDepth"] | `${number}`) | undefined;
9896
9914
  /** How many levels start open.
9897
9915
 
9898
9916
  One by default: the root is open and everything under it closed, so a
@@ -9942,7 +9960,7 @@ One by default: the root is open and everything under it closed, so a
9942
9960
  reader sees the shape of the value before its contents. `0` starts with the
9943
9961
  root closed; a large number opens everything, which on a big value is the
9944
9962
  wall of text this exists to avoid. */
9945
- "attr:default-depth"?: (HelixHeadlessObjectInspector["defaultDepth"]) | undefined;
9963
+ "attr:default-depth"?: (HelixHeadlessObjectInspector["defaultDepth"] | `${number}`) | undefined;
9946
9964
  /** How many levels start open.
9947
9965
 
9948
9966
  One by default: the root is open and everything under it closed, so a
@@ -10317,7 +10335,7 @@ Not reflected, for the reason `ends` is not: it decides what renders, so
10317
10335
  nothing has to select on it. */
10318
10336
  compact?: (HelixHeadlessPagination["compact"]) | undefined;
10319
10337
  /** Page to open on, where nothing declared one. */
10320
- "default-page"?: (HelixHeadlessPagination["defaultPage"]) | undefined;
10338
+ "default-page"?: (HelixHeadlessPagination["defaultPage"] | `${number}`) | undefined;
10321
10339
  /** Page to open on, where nothing declared one. */
10322
10340
  defaultPage?: (HelixHeadlessPagination["defaultPage"]) | undefined;
10323
10341
  /** Whether to offer a jump to the first and last pages.
@@ -10403,7 +10421,7 @@ so there is never a question of which of two sources is current. */
10403
10421
  Only arithmetic: this does not slice anything, because the component never
10404
10422
  sees the items. It is what turns `total` into a page count, and nothing
10405
10423
  else. */
10406
- "page-size"?: (HelixHeadlessPagination["pageSize"]) | undefined;
10424
+ "page-size"?: (HelixHeadlessPagination["pageSize"] | `${number}`) | undefined;
10407
10425
  /** How many items are on a page.
10408
10426
 
10409
10427
  Only arithmetic: this does not slice anything, because the component never
@@ -10459,7 +10477,7 @@ Not reflected, for the reason `ends` is not: it decides what renders, so
10459
10477
  nothing has to select on it. */
10460
10478
  "prop:compact"?: (HelixHeadlessPagination["compact"]) | undefined;
10461
10479
  /** Page to open on, where nothing declared one. */
10462
- "attr:default-page"?: (HelixHeadlessPagination["defaultPage"]) | undefined;
10480
+ "attr:default-page"?: (HelixHeadlessPagination["defaultPage"] | `${number}`) | undefined;
10463
10481
  /** Page to open on, where nothing declared one. */
10464
10482
  "prop:defaultPage"?: (HelixHeadlessPagination["defaultPage"]) | undefined;
10465
10483
  /** Whether to offer a jump to the first and last pages.
@@ -10545,7 +10563,7 @@ so there is never a question of which of two sources is current. */
10545
10563
  Only arithmetic: this does not slice anything, because the component never
10546
10564
  sees the items. It is what turns `total` into a page count, and nothing
10547
10565
  else. */
10548
- "attr:page-size"?: (HelixHeadlessPagination["pageSize"]) | undefined;
10566
+ "attr:page-size"?: (HelixHeadlessPagination["pageSize"] | `${number}`) | undefined;
10549
10567
  /** How many items are on a page.
10550
10568
 
10551
10569
  Only arithmetic: this does not slice anything, because the component never
@@ -10602,7 +10620,7 @@ export type HelixHeadlessPaginationSizeHelixBeforeChangeElementEvent =
10602
10620
 
10603
10621
  export type HelixHeadlessPaginationSizeProps = {
10604
10622
  /** Size to start on, where nothing declared one. */
10605
- "default-value"?: (HelixHeadlessPaginationSize["defaultValue"]) | undefined;
10623
+ "default-value"?: (HelixHeadlessPaginationSize["defaultValue"] | `${number}`) | undefined;
10606
10624
  /** Size to start on, where nothing declared one. */
10607
10625
  defaultValue?: (HelixHeadlessPaginationSize["defaultValue"]) | undefined;
10608
10626
  /** The size in force.
@@ -10632,7 +10650,7 @@ is dropped rather than rendered as an option that cannot mean anything. */
10632
10650
 
10633
10651
  export type HelixHeadlessPaginationSizeSolidJsProps = {
10634
10652
  /** Size to start on, where nothing declared one. */
10635
- "attr:default-value"?: (HelixHeadlessPaginationSize["defaultValue"]) | undefined;
10653
+ "attr:default-value"?: (HelixHeadlessPaginationSize["defaultValue"] | `${number}`) | undefined;
10636
10654
  /** Size to start on, where nothing declared one. */
10637
10655
  "prop:defaultValue"?: (HelixHeadlessPaginationSize["defaultValue"]) | undefined;
10638
10656
  /** The size in force.
@@ -10686,7 +10704,7 @@ Absent uses the runtime's own. */
10686
10704
  /** The page on show, one-based. */
10687
10705
  page?: (HelixHeadlessPaginationSummary["page"]) | undefined;
10688
10706
  /** How many items are on a page. */
10689
- "page-size"?: (HelixHeadlessPaginationSummary["pageSize"]) | undefined;
10707
+ "page-size"?: (HelixHeadlessPaginationSummary["pageSize"] | `${number}`) | undefined;
10690
10708
  /** How many items are on a page. */
10691
10709
  pageSize?: (HelixHeadlessPaginationSummary["pageSize"]) | undefined;
10692
10710
  /** How many items there are across every page. */
@@ -10715,7 +10733,7 @@ Absent uses the runtime's own. */
10715
10733
  /** The page on show, one-based. */
10716
10734
  "prop:page"?: (HelixHeadlessPaginationSummary["page"]) | undefined;
10717
10735
  /** How many items are on a page. */
10718
- "attr:page-size"?: (HelixHeadlessPaginationSummary["pageSize"]) | undefined;
10736
+ "attr:page-size"?: (HelixHeadlessPaginationSummary["pageSize"] | `${number}`) | undefined;
10719
10737
  /** How many items are on a page. */
10720
10738
  "prop:pageSize"?: (HelixHeadlessPaginationSummary["pageSize"]) | undefined;
10721
10739
  /** How many items there are across every page. */
@@ -12682,7 +12700,7 @@ Zero by default, which is a pane fully gone. A tab strip or a title bar
12682
12700
  that should survive its own collapse says how much of itself to keep, and
12683
12701
  only whoever put it there knows that, which is the same reason `min` is a
12684
12702
  consumer's to set. */
12685
- "collapsed-size"?: (HelixHeadlessSplitter["collapsedSize"]) | undefined;
12703
+ "collapsed-size"?: (HelixHeadlessSplitter["collapsedSize"] | `${number}`) | undefined;
12686
12704
  /** How much of a shut pane is still shown, as a percentage.
12687
12705
 
12688
12706
  Zero by default, which is a pane fully gone. A tab strip or a title bar
@@ -12717,7 +12735,7 @@ of a pane during a drag; this is the thing that says the sliver can go. */
12717
12735
  /** Which pane starts shut, where nothing declared it. */
12718
12736
  defaultCollapsed?: (HelixHeadlessSplitter["defaultCollapsed"]) | undefined;
12719
12737
  /** Where the divider starts, where nothing declared it. */
12720
- "default-position"?: (HelixHeadlessSplitter["defaultPosition"]) | undefined;
12738
+ "default-position"?: (HelixHeadlessSplitter["defaultPosition"] | `${number}`) | undefined;
12721
12739
  /** Where the divider starts, where nothing declared it. */
12722
12740
  defaultPosition?: (HelixHeadlessSplitter["defaultPosition"]) | undefined;
12723
12741
  /** Accessible name for the divider. */
@@ -12787,7 +12805,7 @@ Zero by default, which is a pane fully gone. A tab strip or a title bar
12787
12805
  that should survive its own collapse says how much of itself to keep, and
12788
12806
  only whoever put it there knows that, which is the same reason `min` is a
12789
12807
  consumer's to set. */
12790
- "attr:collapsed-size"?: (HelixHeadlessSplitter["collapsedSize"]) | undefined;
12808
+ "attr:collapsed-size"?: (HelixHeadlessSplitter["collapsedSize"] | `${number}`) | undefined;
12791
12809
  /** How much of a shut pane is still shown, as a percentage.
12792
12810
 
12793
12811
  Zero by default, which is a pane fully gone. A tab strip or a title bar
@@ -12822,7 +12840,7 @@ of a pane during a drag; this is the thing that says the sliver can go. */
12822
12840
  /** Which pane starts shut, where nothing declared it. */
12823
12841
  "prop:defaultCollapsed"?: (HelixHeadlessSplitter["defaultCollapsed"]) | undefined;
12824
12842
  /** Where the divider starts, where nothing declared it. */
12825
- "attr:default-position"?: (HelixHeadlessSplitter["defaultPosition"]) | undefined;
12843
+ "attr:default-position"?: (HelixHeadlessSplitter["defaultPosition"] | `${number}`) | undefined;
12826
12844
  /** Where the divider starts, where nothing declared it. */
12827
12845
  "prop:defaultPosition"?: (HelixHeadlessSplitter["defaultPosition"]) | undefined;
12828
12846
  /** Accessible name for the divider. */
@@ -13832,7 +13850,7 @@ submitted nothing. `ElementInternals` takes a `FormData`, which is how one
13832
13850
  element sends two entries, and that is what this does. */
13833
13851
  dirName?: (HelixHeadlessTextarea["dirName"]) | undefined;
13834
13852
  /** Most characters the value may have. */
13835
- maxlength?: (HelixHeadlessTextarea["maxLength"]) | undefined;
13853
+ maxlength?: (HelixHeadlessTextarea["maxLength"] | `${number}`) | undefined;
13836
13854
  /** Most characters the value may have. */
13837
13855
  maxLength?: (HelixHeadlessTextarea["maxLength"]) | undefined;
13838
13856
  /** Fewest characters the value may have.
@@ -13841,7 +13859,7 @@ Forwarded to the real `<textarea>` rather than checked here, which is what
13841
13859
  makes the message the browser's and therefore the reader's own language.
13842
13860
  No `pattern`: the platform does not give a textarea one, and inventing it
13843
13861
  would be this library guessing where the point is to stop guessing. */
13844
- minlength?: (HelixHeadlessTextarea["minLength"]) | undefined;
13862
+ minlength?: (HelixHeadlessTextarea["minLength"] | `${number}`) | undefined;
13845
13863
  /** Fewest characters the value may have.
13846
13864
 
13847
13865
  Forwarded to the real `<textarea>` rather than checked here, which is what
@@ -13971,7 +13989,7 @@ submitted nothing. `ElementInternals` takes a `FormData`, which is how one
13971
13989
  element sends two entries, and that is what this does. */
13972
13990
  "prop:dirName"?: (HelixHeadlessTextarea["dirName"]) | undefined;
13973
13991
  /** Most characters the value may have. */
13974
- "attr:maxlength"?: (HelixHeadlessTextarea["maxLength"]) | undefined;
13992
+ "attr:maxlength"?: (HelixHeadlessTextarea["maxLength"] | `${number}`) | undefined;
13975
13993
  /** Most characters the value may have. */
13976
13994
  "prop:maxLength"?: (HelixHeadlessTextarea["maxLength"]) | undefined;
13977
13995
  /** Fewest characters the value may have.
@@ -13980,7 +13998,7 @@ Forwarded to the real `<textarea>` rather than checked here, which is what
13980
13998
  makes the message the browser's and therefore the reader's own language.
13981
13999
  No `pattern`: the platform does not give a textarea one, and inventing it
13982
14000
  would be this library guessing where the point is to stop guessing. */
13983
- "attr:minlength"?: (HelixHeadlessTextarea["minLength"]) | undefined;
14001
+ "attr:minlength"?: (HelixHeadlessTextarea["minLength"] | `${number}`) | undefined;
13984
14002
  /** Fewest characters the value may have.
13985
14003
 
13986
14004
  Forwarded to the real `<textarea>` rather than checked here, which is what
@@ -14115,30 +14133,6 @@ why a wheel cannot do either. */
14115
14133
  mode?: (HelixHeadlessTimeInput["mode"]) | undefined;
14116
14134
  /** What the field says before a time is in it. */
14117
14135
  placeholder?: (HelixHeadlessTimeInput["placeholder"]) | undefined;
14118
- /** Whether the control refuses changes while still submitting its value.
14119
-
14120
- **Enforced by refusing every request in one place**, which is the seam this
14121
- component already has: `requestValue` is what every path here comes through,
14122
- and gating it once is what stops the next call site from being written
14123
- without the check.
14124
-
14125
- Not `disabled`, which is the confusion worth naming: a disabled control
14126
- submits nothing and leaves the tab order, and a read-only one submits its
14127
- value and stays reachable, which is what a form showing a value somebody
14128
- else set needs. */
14129
- readonly?: (HelixHeadlessTimeInput["readOnly"]) | undefined;
14130
- /** Whether the control refuses changes while still submitting its value.
14131
-
14132
- **Enforced by refusing every request in one place**, which is the seam this
14133
- component already has: `requestValue` is what every path here comes through,
14134
- and gating it once is what stops the next call site from being written
14135
- without the check.
14136
-
14137
- Not `disabled`, which is the confusion worth naming: a disabled control
14138
- submits nothing and leaves the tab order, and a read-only one submits its
14139
- value and stays reachable, which is what a form showing a value somebody
14140
- else set needs. */
14141
- readOnly?: (HelixHeadlessTimeInput["readOnly"]) | undefined;
14142
14136
  /** How far apart the offered times are, in minutes. */
14143
14137
  step?: (HelixHeadlessTimeInput["step"]) | undefined;
14144
14138
  /** Whether the field writes the time out, or holds the value as it is.
@@ -14173,6 +14167,30 @@ not touch, and React reads that as a hydration mismatch. The absent
14173
14167
  attribute *is* the list, which the stylesheet reads as the base rule, so
14174
14168
  only the departure has to be named. */
14175
14169
  variant?: (HelixHeadlessTimeInput["variant"]) | undefined;
14170
+ /** Whether the control refuses changes while still submitting its value.
14171
+
14172
+ **Enforced by refusing every request in one place**, which is the seam this
14173
+ component already has: `requestValue` is what every path here comes through,
14174
+ and gating it once is what stops the next call site from being written
14175
+ without the check.
14176
+
14177
+ Not `disabled`, which is the confusion worth naming: a disabled control
14178
+ submits nothing and leaves the tab order, and a read-only one submits its
14179
+ value and stays reachable, which is what a form showing a value somebody
14180
+ else set needs. */
14181
+ readonly?: (HelixHeadlessTimeInput["readOnly"]) | undefined;
14182
+ /** Whether the control refuses changes while still submitting its value.
14183
+
14184
+ **Enforced by refusing every request in one place**, which is the seam this
14185
+ component already has: `requestValue` is what every path here comes through,
14186
+ and gating it once is what stops the next call site from being written
14187
+ without the check.
14188
+
14189
+ Not `disabled`, which is the confusion worth naming: a disabled control
14190
+ submits nothing and leaves the tab order, and a read-only one submits its
14191
+ value and stays reachable, which is what a form showing a value somebody
14192
+ else set needs. */
14193
+ readOnly?: (HelixHeadlessTimeInput["readOnly"]) | undefined;
14176
14194
  /** Whether the element is open.
14177
14195
 
14178
14196
  One property, not two, so `dialog.open` answers the question anyone
@@ -14201,7 +14219,7 @@ the resolved state for stylesheets, which is what the mirror is for. */
14201
14219
  /** What the collapsed count is called, since `+3` names nothing. */
14202
14220
  expandLabel?: (HelixHeadlessTimeInput["expandLabel"]) | undefined;
14203
14221
  /** How many tokens to show before the rest become a count. */
14204
- "max-tags"?: (HelixHeadlessTimeInput["maxTags"]) | undefined;
14222
+ "max-tags"?: (HelixHeadlessTimeInput["maxTags"] | `${number}`) | undefined;
14205
14223
  /** How many tokens to show before the rest become a count. */
14206
14224
  maxTags?: (HelixHeadlessTimeInput["maxTags"]) | undefined;
14207
14225
  /** The value the markup declared, which is where a reset returns to. */
@@ -14303,30 +14321,6 @@ why a wheel cannot do either. */
14303
14321
  "prop:mode"?: (HelixHeadlessTimeInput["mode"]) | undefined;
14304
14322
  /** What the field says before a time is in it. */
14305
14323
  "prop:placeholder"?: (HelixHeadlessTimeInput["placeholder"]) | undefined;
14306
- /** Whether the control refuses changes while still submitting its value.
14307
-
14308
- **Enforced by refusing every request in one place**, which is the seam this
14309
- component already has: `requestValue` is what every path here comes through,
14310
- and gating it once is what stops the next call site from being written
14311
- without the check.
14312
-
14313
- Not `disabled`, which is the confusion worth naming: a disabled control
14314
- submits nothing and leaves the tab order, and a read-only one submits its
14315
- value and stays reachable, which is what a form showing a value somebody
14316
- else set needs. */
14317
- "bool:readonly"?: (HelixHeadlessTimeInput["readOnly"]) | undefined;
14318
- /** Whether the control refuses changes while still submitting its value.
14319
-
14320
- **Enforced by refusing every request in one place**, which is the seam this
14321
- component already has: `requestValue` is what every path here comes through,
14322
- and gating it once is what stops the next call site from being written
14323
- without the check.
14324
-
14325
- Not `disabled`, which is the confusion worth naming: a disabled control
14326
- submits nothing and leaves the tab order, and a read-only one submits its
14327
- value and stays reachable, which is what a form showing a value somebody
14328
- else set needs. */
14329
- "prop:readOnly"?: (HelixHeadlessTimeInput["readOnly"]) | undefined;
14330
14324
  /** How far apart the offered times are, in minutes. */
14331
14325
  "prop:step"?: (HelixHeadlessTimeInput["step"]) | undefined;
14332
14326
  /** Whether the field writes the time out, or holds the value as it is.
@@ -14361,6 +14355,30 @@ not touch, and React reads that as a hydration mismatch. The absent
14361
14355
  attribute *is* the list, which the stylesheet reads as the base rule, so
14362
14356
  only the departure has to be named. */
14363
14357
  "prop:variant"?: (HelixHeadlessTimeInput["variant"]) | undefined;
14358
+ /** Whether the control refuses changes while still submitting its value.
14359
+
14360
+ **Enforced by refusing every request in one place**, which is the seam this
14361
+ component already has: `requestValue` is what every path here comes through,
14362
+ and gating it once is what stops the next call site from being written
14363
+ without the check.
14364
+
14365
+ Not `disabled`, which is the confusion worth naming: a disabled control
14366
+ submits nothing and leaves the tab order, and a read-only one submits its
14367
+ value and stays reachable, which is what a form showing a value somebody
14368
+ else set needs. */
14369
+ "bool:readonly"?: (HelixHeadlessTimeInput["readOnly"]) | undefined;
14370
+ /** Whether the control refuses changes while still submitting its value.
14371
+
14372
+ **Enforced by refusing every request in one place**, which is the seam this
14373
+ component already has: `requestValue` is what every path here comes through,
14374
+ and gating it once is what stops the next call site from being written
14375
+ without the check.
14376
+
14377
+ Not `disabled`, which is the confusion worth naming: a disabled control
14378
+ submits nothing and leaves the tab order, and a read-only one submits its
14379
+ value and stays reachable, which is what a form showing a value somebody
14380
+ else set needs. */
14381
+ "prop:readOnly"?: (HelixHeadlessTimeInput["readOnly"]) | undefined;
14364
14382
  /** Whether the element is open.
14365
14383
 
14366
14384
  One property, not two, so `dialog.open` answers the question anyone
@@ -14389,7 +14407,7 @@ the resolved state for stylesheets, which is what the mirror is for. */
14389
14407
  /** What the collapsed count is called, since `+3` names nothing. */
14390
14408
  "prop:expandLabel"?: (HelixHeadlessTimeInput["expandLabel"]) | undefined;
14391
14409
  /** How many tokens to show before the rest become a count. */
14392
- "attr:max-tags"?: (HelixHeadlessTimeInput["maxTags"]) | undefined;
14410
+ "attr:max-tags"?: (HelixHeadlessTimeInput["maxTags"] | `${number}`) | undefined;
14393
14411
  /** How many tokens to show before the rest become a count. */
14394
14412
  "prop:maxTags"?: (HelixHeadlessTimeInput["maxTags"]) | undefined;
14395
14413
  /** The value the markup declared, which is where a reset returns to. */
@@ -15355,7 +15373,7 @@ of them, which is noise rather than help. Focus opens with no delay: a
15355
15373
  keyboard reader arriving on a control has already committed to it. */
15356
15374
  delay?: (HelixHeadlessTooltip["delay"]) | undefined;
15357
15375
  /** How long the bubble stays after the pointer leaves, in milliseconds. */
15358
- "delay-out"?: (HelixHeadlessTooltip["delayOut"]) | undefined;
15376
+ "delay-out"?: (HelixHeadlessTooltip["delayOut"] | `${number}`) | undefined;
15359
15377
  /** How long the bubble stays after the pointer leaves, in milliseconds. */
15360
15378
  delayOut?: (HelixHeadlessTooltip["delayOut"]) | undefined;
15361
15379
  /** Whether the tooltip never shows. */
@@ -15463,7 +15481,7 @@ of them, which is noise rather than help. Focus opens with no delay: a
15463
15481
  keyboard reader arriving on a control has already committed to it. */
15464
15482
  "prop:delay"?: (HelixHeadlessTooltip["delay"]) | undefined;
15465
15483
  /** How long the bubble stays after the pointer leaves, in milliseconds. */
15466
- "attr:delay-out"?: (HelixHeadlessTooltip["delayOut"]) | undefined;
15484
+ "attr:delay-out"?: (HelixHeadlessTooltip["delayOut"] | `${number}`) | undefined;
15467
15485
  /** How long the bubble stays after the pointer leaves, in milliseconds. */
15468
15486
  "prop:delayOut"?: (HelixHeadlessTooltip["delayOut"]) | undefined;
15469
15487
  /** Whether the tooltip never shows. */
@@ -15596,7 +15614,7 @@ The shape is `Carousel`'s, which is the nearest thing in the library: a
15596
15614
  `undefined` until somebody sets one. */
15597
15615
  index?: (HelixHeadlessTour["index"]) | undefined;
15598
15616
  /** Stop to start on, where nothing declared one. */
15599
- "default-index"?: (HelixHeadlessTour["defaultIndex"]) | undefined;
15617
+ "default-index"?: (HelixHeadlessTour["defaultIndex"] | `${number}`) | undefined;
15600
15618
  /** Stop to start on, where nothing declared one. */
15601
15619
  defaultIndex?: (HelixHeadlessTour["defaultIndex"]) | undefined;
15602
15620
  /** Label for the control that goes on from the last stop. */
@@ -15616,7 +15634,7 @@ The shape is `Carousel`'s, which is the nearest thing in the library: a
15616
15634
  /** Label for the control that leaves the tour. */
15617
15635
  skipLabel?: (HelixHeadlessTour["skipLabel"]) | undefined;
15618
15636
  /** Space left around the target when it is lit, in pixels. */
15619
- "spotlight-padding"?: (HelixHeadlessTour["spotlightPadding"]) | undefined;
15637
+ "spotlight-padding"?: (HelixHeadlessTour["spotlightPadding"] | `${number}`) | undefined;
15620
15638
  /** Space left around the target when it is lit, in pixels. */
15621
15639
  spotlightPadding?: (HelixHeadlessTour["spotlightPadding"]) | undefined;
15622
15640
 
@@ -15653,7 +15671,7 @@ The shape is `Carousel`'s, which is the nearest thing in the library: a
15653
15671
  `undefined` until somebody sets one. */
15654
15672
  "prop:index"?: (HelixHeadlessTour["index"]) | undefined;
15655
15673
  /** Stop to start on, where nothing declared one. */
15656
- "attr:default-index"?: (HelixHeadlessTour["defaultIndex"]) | undefined;
15674
+ "attr:default-index"?: (HelixHeadlessTour["defaultIndex"] | `${number}`) | undefined;
15657
15675
  /** Stop to start on, where nothing declared one. */
15658
15676
  "prop:defaultIndex"?: (HelixHeadlessTour["defaultIndex"]) | undefined;
15659
15677
  /** Label for the control that goes on from the last stop. */
@@ -15673,7 +15691,7 @@ The shape is `Carousel`'s, which is the nearest thing in the library: a
15673
15691
  /** Label for the control that leaves the tour. */
15674
15692
  "prop:skipLabel"?: (HelixHeadlessTour["skipLabel"]) | undefined;
15675
15693
  /** Space left around the target when it is lit, in pixels. */
15676
- "attr:spotlight-padding"?: (HelixHeadlessTour["spotlightPadding"]) | undefined;
15694
+ "attr:spotlight-padding"?: (HelixHeadlessTour["spotlightPadding"] | `${number}`) | undefined;
15677
15695
  /** Space left around the target when it is lit, in pixels. */
15678
15696
  "prop:spotlightPadding"?: (HelixHeadlessTour["spotlightPadding"]) | undefined;
15679
15697
  /** Fired before the current stop moves, carrying the new index. Cancelable: refusing it takes the decision and nothing moves. */
@@ -16425,7 +16443,7 @@ as long as anyone is likely to look.
16425
16443
 
16426
16444
  The wait is only ever about *idling*. A video that is paused keeps its bar
16427
16445
  regardless, because a reader who stopped it is deciding what to do next. */
16428
- "idle-delay"?: (HelixHeadlessVideo["idleDelay"]) | undefined;
16446
+ "idle-delay"?: (HelixHeadlessVideo["idleDelay"] | `${number}`) | undefined;
16429
16447
  /** How long the bar waits after the pointer stops before it goes, in ms.
16430
16448
 
16431
16449
  A wait rather than leaving with the pointer, or a reader moving across the
@@ -16672,7 +16690,7 @@ as long as anyone is likely to look.
16672
16690
 
16673
16691
  The wait is only ever about *idling*. A video that is paused keeps its bar
16674
16692
  regardless, because a reader who stopped it is deciding what to do next. */
16675
- "attr:idle-delay"?: (HelixHeadlessVideo["idleDelay"]) | undefined;
16693
+ "attr:idle-delay"?: (HelixHeadlessVideo["idleDelay"] | `${number}`) | undefined;
16676
16694
  /** How long the bar waits after the pointer stops before it goes, in ms.
16677
16695
 
16678
16696
  A wait rather than leaving with the pointer, or a reader moving across the
@@ -16989,8 +17007,9 @@ export type CustomElements = {
16989
17007
  * Items are matched with `instanceof HelixHeadlessAccordionItem`, never by tag
16990
17008
  * name. Matching `helix-accordion-item` would tie this tier to the styled one.
16991
17009
  *
16992
- * Every listener is attached on connect, so none of it runs on the server,
16993
- * where there is no tree to walk and no events to hear.
17010
+ * The keyboard listener is the controller's and is attached on connect, so
17011
+ * none of it runs on the server, where there is no tree to walk and no events
17012
+ * to hear.
16994
17013
  *
16995
17014
  * ## Attributes & Properties
16996
17015
  *
@@ -17292,7 +17311,10 @@ export type CustomElements = {
17292
17311
  * cannot be cast onto across unrelated classes, so it would be invisible to
17293
17312
  * every chart that needs it. Reading where a pointer is resting is a fair
17294
17313
  * thing to ask a chart anyway. (property only) (readonly)
17295
- * - `series`: The columns of the table, one series each, or none if there is no table. (property only) (readonly)
17314
+ * - `series`: The columns of the table, one series each, or none if there is no table.
17315
+ *
17316
+ * Held by the controller between edits, so a render reading this five
17317
+ * times parses the table once. See `SourceController.series`. (property only) (readonly)
17296
17318
  * - `named`: What to call the drawing, the consumer's word or the table's own.
17297
17319
  *
17298
17320
  * The fallback is the reason this is shared rather than copied: a caption is
@@ -17456,6 +17478,14 @@ export type CustomElements = {
17456
17478
  * - `src`: Image to show.
17457
17479
  *
17458
17480
  * Falls back to the slot, or to initials, if it fails.
17481
+ * - `status`: Where the image stands: still on its way, arrived, or failed and replaced
17482
+ * by the initials.
17483
+ *
17484
+ * Read-only to a consumer: it is a report rather than a setting, and the same
17485
+ * report `Image` gives, for the same reason. `load` and `error` fire once, so
17486
+ * a listener bound after the picture settled hears neither, which is the
17487
+ * platform on an `<img>` too, and this is what that listener asks instead.
17488
+ * Mirrored to `data-status` rather than reflected, as `Image` explains. (property only)
17459
17489
  * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
17460
17490
  *
17461
17491
  * **Named `whenSettled` because `settled` is taken four times over**, by
@@ -17684,7 +17714,10 @@ export type CustomElements = {
17684
17714
  * cannot be cast onto across unrelated classes, so it would be invisible to
17685
17715
  * every chart that needs it. Reading where a pointer is resting is a fair
17686
17716
  * thing to ask a chart anyway. (property only) (readonly)
17687
- * - `series`: The columns of the table, one series each, or none if there is no table. (property only) (readonly)
17717
+ * - `series`: The columns of the table, one series each, or none if there is no table.
17718
+ *
17719
+ * Held by the controller between edits, so a render reading this five
17720
+ * times parses the table once. See `SourceController.series`. (property only) (readonly)
17688
17721
  * - `named`: What to call the drawing, the consumer's word or the table's own.
17689
17722
  *
17690
17723
  * The fallback is the reason this is shared rather than copied: a caption is
@@ -20819,6 +20852,13 @@ export type CustomElements = {
20819
20852
  * an end in April otherwise means paging between them and losing sight of the
20820
20853
  * first. The panel is sized by its content, so this widens it.
20821
20854
  * - `placeholder`: What the field says before a date is in it.
20855
+ * - `step`: How far apart the selectable dates are, in days.
20856
+ *
20857
+ * `<input type="date" step>`'s own unit, handed to the calendar this renders
20858
+ * so the field and the grid agree about which dates exist. Counted from `min`
20859
+ * where there is one and from 1 January 1970 where there is not, which is the
20860
+ * platform's base.
20861
+ * - `trigger-label`/`triggerLabel`: Accessible name for the control that opens the calendar.
20822
20862
  * - `readonly`/`readOnly`: Whether the control refuses changes while still submitting its value.
20823
20863
  *
20824
20864
  * **Enforced by refusing every request in one place**, which is the seam this
@@ -20830,13 +20870,6 @@ export type CustomElements = {
20830
20870
  * submits nothing and leaves the tab order, and a read-only one submits its
20831
20871
  * value and stays reachable, which is what a form showing a value somebody
20832
20872
  * else set needs.
20833
- * - `step`: How far apart the selectable dates are, in days.
20834
- *
20835
- * `<input type="date" step>`'s own unit, handed to the calendar this renders
20836
- * so the field and the grid agree about which dates exist. Counted from `min`
20837
- * where there is one and from 1 January 1970 where there is not, which is the
20838
- * platform's base.
20839
- * - `trigger-label`/`triggerLabel`: Accessible name for the control that opens the calendar.
20840
20873
  * - `open`: Whether the element is open.
20841
20874
  *
20842
20875
  * One property, not two, so `dialog.open` answers the question anyone
@@ -21654,7 +21687,10 @@ export type CustomElements = {
21654
21687
  * cannot be cast onto across unrelated classes, so it would be invisible to
21655
21688
  * every chart that needs it. Reading where a pointer is resting is a fair
21656
21689
  * thing to ask a chart anyway. (property only) (readonly)
21657
- * - `series`: The columns of the table, one series each, or none if there is no table. (property only) (readonly)
21690
+ * - `series`: The columns of the table, one series each, or none if there is no table.
21691
+ *
21692
+ * Held by the controller between edits, so a render reading this five
21693
+ * times parses the table once. See `SourceController.series`. (property only) (readonly)
21658
21694
  * - `named`: What to call the drawing, the consumer's word or the table's own.
21659
21695
  *
21660
21696
  * The fallback is the reason this is shared rather than copied: a caption is
@@ -22193,9 +22229,9 @@ export type CustomElements = {
22193
22229
  *
22194
22230
  * Events that will be emitted by the component.
22195
22231
  *
22196
- * - `input`: Announced once the value has moved.
22197
22232
  * - `change`: Announced once the value has moved.
22198
22233
  * - `helix-before-change`: Fired before the chosen files change, with their names. Cancelable: refusing it takes the decision and nothing moves.
22234
+ * - `input`: Announced once the value has moved.
22199
22235
  *
22200
22236
  * ## Slots
22201
22237
  *
@@ -22445,7 +22481,7 @@ export type CustomElements = {
22445
22481
  * mean, so declaring them was ceremony for the case every product has; the
22446
22482
  * example above is what a consumer writes when the words matter, not the price
22447
22483
  * of admission. Declaring one comparison replaces both rather than joining
22448
- * them — see `vocabulary`, which is where that is decided once for the menu and
22484
+ * them: see `vocabulary`, which is where that is decided once for the menu and
22449
22485
  * the grammar together.
22450
22486
  *
22451
22487
  * **Values are `Option`s, which is the element a consumer already has.** They
@@ -22763,8 +22799,8 @@ export type CustomElements = {
22763
22799
  * pointer has already handled the keyboard.
22764
22800
  *
22765
22801
  * **It reads what was declared, and nothing that was not.** Write
22766
- * `FilterField`s — usually inside the `FilterMenu` slotted into `start`, so the
22767
- * picker and the text work off one set — and Enter reads the box against them:
22802
+ * `FilterField`s (usually inside the `FilterMenu` slotted into `start`, so the
22803
+ * picker and the text work off one set), and Enter reads the box against them:
22768
22804
  * `disposition:refunded,settled` and `-disposition:refunded` announce
22769
22805
  * `helix-facet`, exactly as ticking those values in the picker would, and the
22770
22806
  * text they were read from goes. Everything else stays where it was typed, so
@@ -23231,7 +23267,10 @@ export type CustomElements = {
23231
23267
  * cannot be cast onto across unrelated classes, so it would be invisible to
23232
23268
  * every chart that needs it. Reading where a pointer is resting is a fair
23233
23269
  * thing to ask a chart anyway. (property only) (readonly)
23234
- * - `series`: The columns of the table, one series each, or none if there is no table. (property only) (readonly)
23270
+ * - `series`: The columns of the table, one series each, or none if there is no table.
23271
+ *
23272
+ * Held by the controller between edits, so a render reading this five
23273
+ * times parses the table once. See `SourceController.series`. (property only) (readonly)
23235
23274
  * - `named`: What to call the drawing, the consumer's word or the table's own.
23236
23275
  *
23237
23276
  * The fallback is the reason this is shared rather than copied: a caption is
@@ -24216,7 +24255,10 @@ export type CustomElements = {
24216
24255
  * cannot be cast onto across unrelated classes, so it would be invisible to
24217
24256
  * every chart that needs it. Reading where a pointer is resting is a fair
24218
24257
  * thing to ask a chart anyway. (property only) (readonly)
24219
- * - `series`: The columns of the table, one series each, or none if there is no table. (property only) (readonly)
24258
+ * - `series`: The columns of the table, one series each, or none if there is no table.
24259
+ *
24260
+ * Held by the controller between edits, so a render reading this five
24261
+ * times parses the table once. See `SourceController.series`. (property only) (readonly)
24220
24262
  * - `named`: What to call the drawing, the consumer's word or the table's own.
24221
24263
  *
24222
24264
  * The fallback is the reason this is shared rather than copied: a caption is
@@ -27782,7 +27824,10 @@ export type CustomElements = {
27782
27824
  * cannot be cast onto across unrelated classes, so it would be invisible to
27783
27825
  * every chart that needs it. Reading where a pointer is resting is a fair
27784
27826
  * thing to ask a chart anyway. (property only) (readonly)
27785
- * - `series`: The columns of the table, one series each, or none if there is no table. (property only) (readonly)
27827
+ * - `series`: The columns of the table, one series each, or none if there is no table.
27828
+ *
27829
+ * Held by the controller between edits, so a render reading this five
27830
+ * times parses the table once. See `SourceController.series`. (property only) (readonly)
27786
27831
  * - `named`: What to call the drawing, the consumer's word or the table's own.
27787
27832
  *
27788
27833
  * The fallback is the reason this is shared rather than copied: a caption is
@@ -30307,17 +30352,6 @@ export type CustomElements = {
30307
30352
  * form submits. `helix-time-picker` carries the longer note on the interaction and on
30308
30353
  * why a wheel cannot do either.
30309
30354
  * - `placeholder`: What the field says before a time is in it.
30310
- * - `readonly`/`readOnly`: Whether the control refuses changes while still submitting its value.
30311
- *
30312
- * **Enforced by refusing every request in one place**, which is the seam this
30313
- * component already has: `requestValue` is what every path here comes through,
30314
- * and gating it once is what stops the next call site from being written
30315
- * without the check.
30316
- *
30317
- * Not `disabled`, which is the confusion worth naming: a disabled control
30318
- * submits nothing and leaves the tab order, and a read-only one submits its
30319
- * value and stays reachable, which is what a form showing a value somebody
30320
- * else set needs.
30321
30355
  * - `step`: How far apart the offered times are, in minutes.
30322
30356
  * - `time-style`/`timeStyle`: Whether the field writes the time out, or holds the value as it is.
30323
30357
  *
@@ -30339,6 +30373,17 @@ export type CustomElements = {
30339
30373
  * not touch, and React reads that as a hydration mismatch. The absent
30340
30374
  * attribute *is* the list, which the stylesheet reads as the base rule, so
30341
30375
  * only the departure has to be named.
30376
+ * - `readonly`/`readOnly`: Whether the control refuses changes while still submitting its value.
30377
+ *
30378
+ * **Enforced by refusing every request in one place**, which is the seam this
30379
+ * component already has: `requestValue` is what every path here comes through,
30380
+ * and gating it once is what stops the next call site from being written
30381
+ * without the check.
30382
+ *
30383
+ * Not `disabled`, which is the confusion worth naming: a disabled control
30384
+ * submits nothing and leaves the tab order, and a read-only one submits its
30385
+ * value and stays reachable, which is what a form showing a value somebody
30386
+ * else set needs.
30342
30387
  * - `open`: Whether the element is open.
30343
30388
  *
30344
30389
  * One property, not two, so `dialog.open` answers the question anyone
@@ -32922,8 +32967,9 @@ export type CustomElementsSolidJs = {
32922
32967
  * Items are matched with `instanceof HelixHeadlessAccordionItem`, never by tag
32923
32968
  * name. Matching `helix-accordion-item` would tie this tier to the styled one.
32924
32969
  *
32925
- * Every listener is attached on connect, so none of it runs on the server,
32926
- * where there is no tree to walk and no events to hear.
32970
+ * The keyboard listener is the controller's and is attached on connect, so
32971
+ * none of it runs on the server, where there is no tree to walk and no events
32972
+ * to hear.
32927
32973
  *
32928
32974
  * ## Attributes & Properties
32929
32975
  *
@@ -33232,7 +33278,10 @@ export type CustomElementsSolidJs = {
33232
33278
  * cannot be cast onto across unrelated classes, so it would be invisible to
33233
33279
  * every chart that needs it. Reading where a pointer is resting is a fair
33234
33280
  * thing to ask a chart anyway. (property only) (readonly)
33235
- * - `series`: The columns of the table, one series each, or none if there is no table. (property only) (readonly)
33281
+ * - `series`: The columns of the table, one series each, or none if there is no table.
33282
+ *
33283
+ * Held by the controller between edits, so a render reading this five
33284
+ * times parses the table once. See `SourceController.series`. (property only) (readonly)
33236
33285
  * - `named`: What to call the drawing, the consumer's word or the table's own.
33237
33286
  *
33238
33287
  * The fallback is the reason this is shared rather than copied: a caption is
@@ -33400,6 +33449,14 @@ export type CustomElementsSolidJs = {
33400
33449
  * - `src`: Image to show.
33401
33450
  *
33402
33451
  * Falls back to the slot, or to initials, if it fails.
33452
+ * - `status`: Where the image stands: still on its way, arrived, or failed and replaced
33453
+ * by the initials.
33454
+ *
33455
+ * Read-only to a consumer: it is a report rather than a setting, and the same
33456
+ * report `Image` gives, for the same reason. `load` and `error` fire once, so
33457
+ * a listener bound after the picture settled hears neither, which is the
33458
+ * platform on an `<img>` too, and this is what that listener asks instead.
33459
+ * Mirrored to `data-status` rather than reflected, as `Image` explains. (property only)
33403
33460
  * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
33404
33461
  *
33405
33462
  * **Named `whenSettled` because `settled` is taken four times over**, by
@@ -33634,7 +33691,10 @@ export type CustomElementsSolidJs = {
33634
33691
  * cannot be cast onto across unrelated classes, so it would be invisible to
33635
33692
  * every chart that needs it. Reading where a pointer is resting is a fair
33636
33693
  * thing to ask a chart anyway. (property only) (readonly)
33637
- * - `series`: The columns of the table, one series each, or none if there is no table. (property only) (readonly)
33694
+ * - `series`: The columns of the table, one series each, or none if there is no table.
33695
+ *
33696
+ * Held by the controller between edits, so a render reading this five
33697
+ * times parses the table once. See `SourceController.series`. (property only) (readonly)
33638
33698
  * - `named`: What to call the drawing, the consumer's word or the table's own.
33639
33699
  *
33640
33700
  * The fallback is the reason this is shared rather than copied: a caption is
@@ -36815,6 +36875,13 @@ export type CustomElementsSolidJs = {
36815
36875
  * an end in April otherwise means paging between them and losing sight of the
36816
36876
  * first. The panel is sized by its content, so this widens it.
36817
36877
  * - `placeholder`: What the field says before a date is in it.
36878
+ * - `step`: How far apart the selectable dates are, in days.
36879
+ *
36880
+ * `<input type="date" step>`'s own unit, handed to the calendar this renders
36881
+ * so the field and the grid agree about which dates exist. Counted from `min`
36882
+ * where there is one and from 1 January 1970 where there is not, which is the
36883
+ * platform's base.
36884
+ * - `trigger-label`/`triggerLabel`: Accessible name for the control that opens the calendar.
36818
36885
  * - `readonly`/`readOnly`: Whether the control refuses changes while still submitting its value.
36819
36886
  *
36820
36887
  * **Enforced by refusing every request in one place**, which is the seam this
@@ -36826,13 +36893,6 @@ export type CustomElementsSolidJs = {
36826
36893
  * submits nothing and leaves the tab order, and a read-only one submits its
36827
36894
  * value and stays reachable, which is what a form showing a value somebody
36828
36895
  * else set needs.
36829
- * - `step`: How far apart the selectable dates are, in days.
36830
- *
36831
- * `<input type="date" step>`'s own unit, handed to the calendar this renders
36832
- * so the field and the grid agree about which dates exist. Counted from `min`
36833
- * where there is one and from 1 January 1970 where there is not, which is the
36834
- * platform's base.
36835
- * - `trigger-label`/`triggerLabel`: Accessible name for the control that opens the calendar.
36836
36896
  * - `open`: Whether the element is open.
36837
36897
  *
36838
36898
  * One property, not two, so `dialog.open` answers the question anyone
@@ -37662,7 +37722,10 @@ export type CustomElementsSolidJs = {
37662
37722
  * cannot be cast onto across unrelated classes, so it would be invisible to
37663
37723
  * every chart that needs it. Reading where a pointer is resting is a fair
37664
37724
  * thing to ask a chart anyway. (property only) (readonly)
37665
- * - `series`: The columns of the table, one series each, or none if there is no table. (property only) (readonly)
37725
+ * - `series`: The columns of the table, one series each, or none if there is no table.
37726
+ *
37727
+ * Held by the controller between edits, so a render reading this five
37728
+ * times parses the table once. See `SourceController.series`. (property only) (readonly)
37666
37729
  * - `named`: What to call the drawing, the consumer's word or the table's own.
37667
37730
  *
37668
37731
  * The fallback is the reason this is shared rather than copied: a caption is
@@ -38212,9 +38275,9 @@ export type CustomElementsSolidJs = {
38212
38275
  *
38213
38276
  * Events that will be emitted by the component.
38214
38277
  *
38215
- * - `input`: Announced once the value has moved.
38216
38278
  * - `change`: Announced once the value has moved.
38217
38279
  * - `helix-before-change`: Fired before the chosen files change, with their names. Cancelable: refusing it takes the decision and nothing moves.
38280
+ * - `input`: Announced once the value has moved.
38218
38281
  *
38219
38282
  * ## Slots
38220
38283
  *
@@ -38468,7 +38531,7 @@ export type CustomElementsSolidJs = {
38468
38531
  * mean, so declaring them was ceremony for the case every product has; the
38469
38532
  * example above is what a consumer writes when the words matter, not the price
38470
38533
  * of admission. Declaring one comparison replaces both rather than joining
38471
- * them — see `vocabulary`, which is where that is decided once for the menu and
38534
+ * them: see `vocabulary`, which is where that is decided once for the menu and
38472
38535
  * the grammar together.
38473
38536
  *
38474
38537
  * **Values are `Option`s, which is the element a consumer already has.** They
@@ -38789,8 +38852,8 @@ export type CustomElementsSolidJs = {
38789
38852
  * pointer has already handled the keyboard.
38790
38853
  *
38791
38854
  * **It reads what was declared, and nothing that was not.** Write
38792
- * `FilterField`s — usually inside the `FilterMenu` slotted into `start`, so the
38793
- * picker and the text work off one set — and Enter reads the box against them:
38855
+ * `FilterField`s (usually inside the `FilterMenu` slotted into `start`, so the
38856
+ * picker and the text work off one set), and Enter reads the box against them:
38794
38857
  * `disposition:refunded,settled` and `-disposition:refunded` announce
38795
38858
  * `helix-facet`, exactly as ticking those values in the picker would, and the
38796
38859
  * text they were read from goes. Everything else stays where it was typed, so
@@ -39259,7 +39322,10 @@ export type CustomElementsSolidJs = {
39259
39322
  * cannot be cast onto across unrelated classes, so it would be invisible to
39260
39323
  * every chart that needs it. Reading where a pointer is resting is a fair
39261
39324
  * thing to ask a chart anyway. (property only) (readonly)
39262
- * - `series`: The columns of the table, one series each, or none if there is no table. (property only) (readonly)
39325
+ * - `series`: The columns of the table, one series each, or none if there is no table.
39326
+ *
39327
+ * Held by the controller between edits, so a render reading this five
39328
+ * times parses the table once. See `SourceController.series`. (property only) (readonly)
39263
39329
  * - `named`: What to call the drawing, the consumer's word or the table's own.
39264
39330
  *
39265
39331
  * The fallback is the reason this is shared rather than copied: a caption is
@@ -40263,7 +40329,10 @@ export type CustomElementsSolidJs = {
40263
40329
  * cannot be cast onto across unrelated classes, so it would be invisible to
40264
40330
  * every chart that needs it. Reading where a pointer is resting is a fair
40265
40331
  * thing to ask a chart anyway. (property only) (readonly)
40266
- * - `series`: The columns of the table, one series each, or none if there is no table. (property only) (readonly)
40332
+ * - `series`: The columns of the table, one series each, or none if there is no table.
40333
+ *
40334
+ * Held by the controller between edits, so a render reading this five
40335
+ * times parses the table once. See `SourceController.series`. (property only) (readonly)
40267
40336
  * - `named`: What to call the drawing, the consumer's word or the table's own.
40268
40337
  *
40269
40338
  * The fallback is the reason this is shared rather than copied: a caption is
@@ -43894,7 +43963,10 @@ export type CustomElementsSolidJs = {
43894
43963
  * cannot be cast onto across unrelated classes, so it would be invisible to
43895
43964
  * every chart that needs it. Reading where a pointer is resting is a fair
43896
43965
  * thing to ask a chart anyway. (property only) (readonly)
43897
- * - `series`: The columns of the table, one series each, or none if there is no table. (property only) (readonly)
43966
+ * - `series`: The columns of the table, one series each, or none if there is no table.
43967
+ *
43968
+ * Held by the controller between edits, so a render reading this five
43969
+ * times parses the table once. See `SourceController.series`. (property only) (readonly)
43898
43970
  * - `named`: What to call the drawing, the consumer's word or the table's own.
43899
43971
  *
43900
43972
  * The fallback is the reason this is shared rather than copied: a caption is
@@ -46483,17 +46555,6 @@ export type CustomElementsSolidJs = {
46483
46555
  * form submits. `helix-time-picker` carries the longer note on the interaction and on
46484
46556
  * why a wheel cannot do either.
46485
46557
  * - `placeholder`: What the field says before a time is in it.
46486
- * - `readonly`/`readOnly`: Whether the control refuses changes while still submitting its value.
46487
- *
46488
- * **Enforced by refusing every request in one place**, which is the seam this
46489
- * component already has: `requestValue` is what every path here comes through,
46490
- * and gating it once is what stops the next call site from being written
46491
- * without the check.
46492
- *
46493
- * Not `disabled`, which is the confusion worth naming: a disabled control
46494
- * submits nothing and leaves the tab order, and a read-only one submits its
46495
- * value and stays reachable, which is what a form showing a value somebody
46496
- * else set needs.
46497
46558
  * - `step`: How far apart the offered times are, in minutes.
46498
46559
  * - `time-style`/`timeStyle`: Whether the field writes the time out, or holds the value as it is.
46499
46560
  *
@@ -46515,6 +46576,17 @@ export type CustomElementsSolidJs = {
46515
46576
  * not touch, and React reads that as a hydration mismatch. The absent
46516
46577
  * attribute *is* the list, which the stylesheet reads as the base rule, so
46517
46578
  * only the departure has to be named.
46579
+ * - `readonly`/`readOnly`: Whether the control refuses changes while still submitting its value.
46580
+ *
46581
+ * **Enforced by refusing every request in one place**, which is the seam this
46582
+ * component already has: `requestValue` is what every path here comes through,
46583
+ * and gating it once is what stops the next call site from being written
46584
+ * without the check.
46585
+ *
46586
+ * Not `disabled`, which is the confusion worth naming: a disabled control
46587
+ * submits nothing and leaves the tab order, and a read-only one submits its
46588
+ * value and stays reachable, which is what a form showing a value somebody
46589
+ * else set needs.
46518
46590
  * - `open`: Whether the element is open.
46519
46591
  *
46520
46592
  * One property, not two, so `dialog.open` answers the question anyone