@fusion.dev/helix-headless 0.158.0 → 0.160.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 (58) hide show
  1. package/custom-elements.json +1925 -174
  2. package/dist/app-header/root/app-header-root.d.ts +59 -12
  3. package/dist/app-header/root/app-header-root.js +68 -29
  4. package/dist/button/root/button-root.d.ts +8 -0
  5. package/dist/button/root/button-root.js +4 -0
  6. package/dist/button-group/root/button-group-root.d.ts +20 -7
  7. package/dist/button-group/root/button-group-root.js +30 -5
  8. package/dist/date-input/root/date-input-root.d.ts +108 -19
  9. package/dist/date-input/root/date-input-root.js +112 -13
  10. package/dist/date-picker/root/date-picker-root.d.ts +81 -16
  11. package/dist/date-picker/root/date-picker-root.js +140 -36
  12. package/dist/element-events.generated.js +9 -1
  13. package/dist/format-date/fields.js +1 -0
  14. package/dist/format-date/options.d.ts +3 -1
  15. package/dist/format-date/options.js +4 -1
  16. package/dist/format-date/root/format-date-root.d.ts +27 -11
  17. package/dist/format-date/root/format-date-root.js +6 -0
  18. package/dist/lightbox/item/lightbox-item.d.ts +7 -1
  19. package/dist/lightbox/item/lightbox-item.js +15 -2
  20. package/dist/lightbox/root/lightbox-root.d.ts +8 -4
  21. package/dist/lightbox/root/lightbox-root.js +9 -1
  22. package/dist/lightbox/zoom-controller.d.ts +13 -4
  23. package/dist/lightbox/zoom-controller.js +17 -0
  24. package/dist/listbox/root/listbox-root.js +5 -0
  25. package/dist/notifications/notification/notification.d.ts +1 -0
  26. package/dist/notifications/notification/notification.js +2 -1
  27. package/dist/slider/root/slider-root.d.ts +54 -3
  28. package/dist/slider/root/slider-root.js +124 -2
  29. package/dist/steps/root/steps-root.js +8 -6
  30. package/dist/steps/step/step.d.ts +9 -0
  31. package/dist/steps/step/step.js +19 -2
  32. package/dist/tabs/panel/tab-panel.d.ts +22 -1
  33. package/dist/tabs/panel/tab-panel.js +22 -1
  34. package/dist/tabs/root/tabs-root.d.ts +21 -5
  35. package/dist/tabs/root/tabs-root.js +24 -13
  36. package/dist/tabs/tab/tab.d.ts +4 -2
  37. package/dist/tabs/tab/tab.js +3 -1
  38. package/dist/time-input/root/time-input-root.d.ts +55 -7
  39. package/dist/time-input/root/time-input-root.js +70 -10
  40. package/dist/time-picker/root/time-picker-root.d.ts +27 -5
  41. package/dist/time-picker/root/time-picker-root.js +52 -13
  42. package/dist/toast/item/toast-item.d.ts +27 -8
  43. package/dist/toast/item/toast-item.js +47 -11
  44. package/dist/toast/root/toast-root.d.ts +24 -1
  45. package/dist/toast/root/toast-root.js +54 -0
  46. package/dist/toggle/group/toggle-group.d.ts +18 -1
  47. package/dist/toggle/group/toggle-group.js +8 -2
  48. package/dist/toggle/root/toggle-root.d.ts +2 -2
  49. package/dist/toggle/root/toggle-root.js +2 -1
  50. package/dist/tour/root/tour-root.d.ts +34 -0
  51. package/dist/tour/root/tour-root.js +92 -3
  52. package/dist/tour/stop/tour-stop.d.ts +33 -1
  53. package/dist/tour/stop/tour-stop.js +12 -1
  54. package/lint.json +1 -1
  55. package/package.json +5 -5
  56. package/types/jsx.d.ts +1119 -218
  57. package/types/vue.d.ts +278 -51
  58. package/types/words.d.ts +72 -0
package/types/jsx.d.ts CHANGED
@@ -936,9 +936,18 @@ export type HelixHeadlessAppHeaderElementEvent<E = Event> = TypedEvent<
936
936
  HelixHeadlessAppHeader,
937
937
  E
938
938
  >;
939
+ /** `helix-before-close` event type */
940
+ export type HelixHeadlessAppHeaderHelixBeforeCloseElementEvent =
941
+ HelixHeadlessAppHeaderElementEvent<HelixBeforeCloseEvent>;
942
+ /** `helix-before-open` event type */
943
+ export type HelixHeadlessAppHeaderHelixBeforeOpenElementEvent =
944
+ HelixHeadlessAppHeaderElementEvent<HelixBeforeOpenEvent>;
939
945
  /** `helix-scrolled` event type */
940
946
  export type HelixHeadlessAppHeaderHelixScrolledElementEvent =
941
947
  HelixHeadlessAppHeaderElementEvent<HelixScrolledEvent>;
948
+ /** `toggle` event type */
949
+ export type HelixHeadlessAppHeaderToggleElementEvent =
950
+ HelixHeadlessAppHeaderElementEvent<ToggleEvent>;
942
951
 
943
952
  export type HelixHeadlessAppHeaderProps = {
944
953
  /** Where the middle region sits in the bar.
@@ -988,11 +997,50 @@ page scrolls up. */
988
997
  /** The id of the element whose scrolling lifts the bar, for an app shell that
989
998
  scrolls a container instead of the window. Unset is the window. */
990
999
  scroller?: (HelixHeadlessAppHeader["scroller"]) | undefined;
1000
+ /** Where the toggle that opens a folded middle region sits: at the end of the
1001
+ bar, after the trailing content, or with `start`, before the leading
1002
+ content.
1003
+
1004
+ Optional, so the resting bar writes no attribute onto the host. */
1005
+ "toggle-placement"?: (HelixHeadlessAppHeader["togglePlacement"]) | undefined;
1006
+ /** Where the toggle that opens a folded middle region sits: at the end of the
1007
+ bar, after the trailing content, or with `start`, before the leading
1008
+ content.
1009
+
1010
+ Optional, so the resting bar writes no attribute onto the host. */
1011
+ togglePlacement?: (HelixHeadlessAppHeader["togglePlacement"]) | undefined;
1012
+ /** Whether the element starts open. Ignored once `open` is written. */
1013
+ "default-open"?: (HelixHeadlessAppHeader["defaultOpen"]) | undefined;
1014
+ /** Whether the element starts open. Ignored once `open` is written. */
1015
+ defaultOpen?: (HelixHeadlessAppHeader["defaultOpen"]) | undefined;
1016
+ /** Whether the element is open.
1017
+
1018
+ One property, not two, so `dialog.open` answers the question anyone
1019
+ asking it meant. Writing always applies; `<helix-dialog open>` is the
1020
+ same statement in markup.
1021
+
1022
+ **Not reflected, and that is required rather than tidy.** Reflection
1023
+ writes the resolved state back as an attribute, so an element that opened
1024
+ itself would put `open` on its own host: cloned, serialized for
1025
+ hydration, or diffed by a framework, it comes back holding whatever the
1026
+ last reader did rather than what the author wrote. `:state(open)` carries
1027
+ the resolved state for stylesheets, which is what the mirror is for. */
1028
+ open?: (HelixHeadlessAppHeader["open"]) | undefined;
991
1029
 
1030
+ /** The folded region is about to close. Cancelable: cancel it to keep it open. */
1031
+ "onhelix-before-close"?: ((
1032
+ e: HelixHeadlessAppHeaderHelixBeforeCloseElementEvent,
1033
+ ) => void) | undefined;
1034
+ /** The folded region is about to open. Cancelable: cancel it to keep it closed. */
1035
+ "onhelix-before-open"?: ((
1036
+ e: HelixHeadlessAppHeaderHelixBeforeOpenElementEvent,
1037
+ ) => void) | undefined;
992
1038
  /** Fired when the page crosses the scroll threshold, with the new state. A custom state cannot be observed the way an attribute can, so listen for this event to follow it. The event uses the header's own threshold and hysteresis, so you do not need a second scroll listener. */
993
1039
  "onhelix-scrolled"?: ((
994
1040
  e: HelixHeadlessAppHeaderHelixScrolledElementEvent,
995
1041
  ) => void) | undefined;
1042
+ /** The folded region opened or closed. The event carries `newState` and `oldState`. */
1043
+ ontoggle?: ((e: HelixHeadlessAppHeaderToggleElementEvent) => void) | undefined;
996
1044
  };
997
1045
 
998
1046
  export type HelixHeadlessAppHeaderSolidJsProps = {
@@ -1043,10 +1091,49 @@ page scrolls up. */
1043
1091
  /** The id of the element whose scrolling lifts the bar, for an app shell that
1044
1092
  scrolls a container instead of the window. Unset is the window. */
1045
1093
  "prop:scroller"?: (HelixHeadlessAppHeader["scroller"]) | undefined;
1094
+ /** Where the toggle that opens a folded middle region sits: at the end of the
1095
+ bar, after the trailing content, or with `start`, before the leading
1096
+ content.
1097
+
1098
+ Optional, so the resting bar writes no attribute onto the host. */
1099
+ "attr:toggle-placement"?: (HelixHeadlessAppHeader["togglePlacement"]) | undefined;
1100
+ /** Where the toggle that opens a folded middle region sits: at the end of the
1101
+ bar, after the trailing content, or with `start`, before the leading
1102
+ content.
1103
+
1104
+ Optional, so the resting bar writes no attribute onto the host. */
1105
+ "prop:togglePlacement"?: (HelixHeadlessAppHeader["togglePlacement"]) | undefined;
1106
+ /** Whether the element starts open. Ignored once `open` is written. */
1107
+ "bool:default-open"?: (HelixHeadlessAppHeader["defaultOpen"]) | undefined;
1108
+ /** Whether the element starts open. Ignored once `open` is written. */
1109
+ "prop:defaultOpen"?: (HelixHeadlessAppHeader["defaultOpen"]) | undefined;
1110
+ /** Whether the element is open.
1111
+
1112
+ One property, not two, so `dialog.open` answers the question anyone
1113
+ asking it meant. Writing always applies; `<helix-dialog open>` is the
1114
+ same statement in markup.
1115
+
1116
+ **Not reflected, and that is required rather than tidy.** Reflection
1117
+ writes the resolved state back as an attribute, so an element that opened
1118
+ itself would put `open` on its own host: cloned, serialized for
1119
+ hydration, or diffed by a framework, it comes back holding whatever the
1120
+ last reader did rather than what the author wrote. `:state(open)` carries
1121
+ the resolved state for stylesheets, which is what the mirror is for. */
1122
+ "prop:open"?: (HelixHeadlessAppHeader["open"]) | undefined;
1123
+ /** The folded region is about to close. Cancelable: cancel it to keep it open. */
1124
+ "on:helix-before-close"?: ((
1125
+ e: HelixHeadlessAppHeaderHelixBeforeCloseElementEvent,
1126
+ ) => void) | undefined;
1127
+ /** The folded region is about to open. Cancelable: cancel it to keep it closed. */
1128
+ "on:helix-before-open"?: ((
1129
+ e: HelixHeadlessAppHeaderHelixBeforeOpenElementEvent,
1130
+ ) => void) | undefined;
1046
1131
  /** Fired when the page crosses the scroll threshold, with the new state. A custom state cannot be observed the way an attribute can, so listen for this event to follow it. The event uses the header's own threshold and hysteresis, so you do not need a second scroll listener. */
1047
1132
  "on:helix-scrolled"?: ((
1048
1133
  e: HelixHeadlessAppHeaderHelixScrolledElementEvent,
1049
1134
  ) => void) | undefined;
1135
+ /** The folded region opened or closed. The event carries `newState` and `oldState`. */
1136
+ "on:toggle"?: ((e: HelixHeadlessAppHeaderToggleElementEvent) => void) | undefined;
1050
1137
 
1051
1138
  /** Set the innerHTML of the element */
1052
1139
  innerHTML?: (string) | undefined;
@@ -2317,6 +2404,14 @@ export type HelixHeadlessButtonGroupHelixBeforeChangeElementEvent =
2317
2404
  HelixHeadlessButtonGroupElementEvent<HelixBeforeChangeEvent>;
2318
2405
 
2319
2406
  export type HelixHeadlessButtonGroupProps = {
2407
+ /** Keeps at least one button pressed once one is, as React Aria's
2408
+ `disallowEmptySelection`: a press that would leave none pressed is
2409
+ refused. */
2410
+ "disallow-empty-selection"?: (HelixHeadlessButtonGroup["disallowEmptySelection"]) | undefined;
2411
+ /** Keeps at least one button pressed once one is, as React Aria's
2412
+ `disallowEmptySelection`: a press that would leave none pressed is
2413
+ refused. */
2414
+ disallowEmptySelection?: (HelixHeadlessButtonGroup["disallowEmptySelection"]) | undefined;
2320
2415
  /** The group's name, read by screen readers.
2321
2416
 
2322
2417
  On the host through internals, so an author's `aria-label` still overrides
@@ -2368,6 +2463,14 @@ not reflect, as a native control's `value` does not. */
2368
2463
  };
2369
2464
 
2370
2465
  export type HelixHeadlessButtonGroupSolidJsProps = {
2466
+ /** Keeps at least one button pressed once one is, as React Aria's
2467
+ `disallowEmptySelection`: a press that would leave none pressed is
2468
+ refused. */
2469
+ "bool:disallow-empty-selection"?: (HelixHeadlessButtonGroup["disallowEmptySelection"]) | undefined;
2470
+ /** Keeps at least one button pressed once one is, as React Aria's
2471
+ `disallowEmptySelection`: a press that would leave none pressed is
2472
+ refused. */
2473
+ "prop:disallowEmptySelection"?: (HelixHeadlessButtonGroup["disallowEmptySelection"]) | undefined;
2371
2474
  /** The group's name, read by screen readers.
2372
2475
 
2373
2476
  On the host through internals, so an author's `aria-label` still overrides
@@ -9774,37 +9877,56 @@ export type HelixHeadlessDateInputHelixBeforeCloseElementEvent =
9774
9877
  /** `helix-before-open` event type */
9775
9878
  export type HelixHeadlessDateInputHelixBeforeOpenElementEvent =
9776
9879
  HelixHeadlessDateInputElementEvent<HelixBeforeOpenEvent>;
9880
+ /** `helix-clear` event type */
9881
+ export type HelixHeadlessDateInputHelixClearElementEvent =
9882
+ HelixHeadlessDateInputElementEvent<HelixClearEvent>;
9777
9883
  /** `toggle` event type */
9778
9884
  export type HelixHeadlessDateInputToggleElementEvent =
9779
9885
  HelixHeadlessDateInputElementEvent<ToggleEvent>;
9780
9886
 
9781
9887
  export type HelixHeadlessDateInputProps = {
9782
- /** What the browser may autofill here, as one of the platform's own tokens.
9888
+ /** What the browser may autofill here, as one of the platform's own tokens,
9889
+ such as `bday`.
9783
9890
 
9784
9891
  Empty leaves the attribute off, which is the browser's default and is what
9785
9892
  lets autofill work at all: hardcoding `off` here means a birthday or a
9786
- postal code can never be filled in for a reader. */
9893
+ postal code can never be filled in for a reader. With `segmented`, a
9894
+ hidden native date input carries it, since no browser fills the segments. */
9787
9895
  autocomplete?: (HelixHeadlessDateInput["autocomplete"]) | undefined;
9788
- /** The calendar the written date and the calendar's days are in: `gregory`,
9789
- `buddhist`, `japanese`, `roc`, or `iso8601`.
9790
-
9791
- Absent is the locale's own where it is one of the five, and `gregory` for
9792
- every other, as Date Picker's `calendar` is. The value is `YYYY-MM-DD` in
9793
- every calendar, and a focused field is ISO in every calendar. In
9794
- `segmented`, the segments are the Gregorian day, month, and year, in the
9795
- order the locale writes them, or ISO order for `iso8601`. */
9896
+ /** The calendar the written date, the segments, and the calendar's days are
9897
+ in: `gregory`, `buddhist`, `japanese`, `roc`, or `iso8601`, or a calendar
9898
+ with months of its own that Date Picker's `calendar` names, such as
9899
+ `persian`, `hebrew`, `islamic-umalqura`, `ethiopic`, or `chinese`.
9900
+
9901
+ Absent is the locale's own where its months are the Gregorian months, and
9902
+ `gregory` for every other, as Date Picker's `calendar` is. The value is
9903
+ `YYYY-MM-DD` in every calendar, and a focused text field is ISO in every
9904
+ calendar. In `segmented`, the segments are the day, month, and year as
9905
+ the calendar counts them, in the order the locale writes them: Mehr 14,
9906
+ 1405 is month 7 and day 14 of 1405 under `persian`. Under the five with
9907
+ Gregorian months they are the Gregorian day, month, and year, or ISO order
9908
+ for `iso8601`. */
9796
9909
  calendar?: (HelixHeadlessDateInput["calendar"]) | undefined;
9797
9910
  /** The name of the calendar's grid of days, read by screen readers. */
9798
9911
  "calendar-label"?: (HelixHeadlessDateInput["calendarLabel"]) | undefined;
9799
9912
  /** The name of the calendar's grid of days, read by screen readers. */
9800
9913
  calendarLabel?: (HelixHeadlessDateInput["calendarLabel"]) | undefined;
9914
+ /** Whether the field shows a button that empties it, as Input's `clearable`
9915
+ does. Shown only while the field holds something to clear and is neither
9916
+ disabled nor read-only. */
9917
+ clearable?: (HelixHeadlessDateInput["clearable"]) | undefined;
9918
+ /** The accessible name of the clear button, which shows only an icon. */
9919
+ "clear-label"?: (HelixHeadlessDateInput["clearLabel"]) | undefined;
9920
+ /** The accessible name of the clear button, which shows only an icon. */
9921
+ clearLabel?: (HelixHeadlessDateInput["clearLabel"]) | undefined;
9801
9922
  /** How a date is written in the field: `short` through `full`, or ISO.
9802
9923
 
9803
9924
  **The field renders when it is idle and holds the value when it is being
9804
9925
  edited.** A written date is a rendering, and a document being edited must
9805
9926
  not be a rendering of something else: `Intl.DateTimeFormat` formats and does
9806
- not parse, so `4 August 2026` cannot be typed back, and writing a parser per
9807
- locale is how a field ends up rejecting what it just displayed.
9927
+ not parse, so a rendering such as `Tuesday, August 4, 2026` is no text to
9928
+ edit. The field does read a date typed in the locale's order and digits as
9929
+ you leave it, which covers what a reader types.
9808
9930
 
9809
9931
  The way out is not to choose between the two but to separate them in time.
9810
9932
  Idle, the field shows `4 August 2026`, which is what a date is for reading.
@@ -9826,8 +9948,9 @@ submits and what `min` and `max` compare against. */
9826
9948
  **The field renders when it is idle and holds the value when it is being
9827
9949
  edited.** A written date is a rendering, and a document being edited must
9828
9950
  not be a rendering of something else: `Intl.DateTimeFormat` formats and does
9829
- not parse, so `4 August 2026` cannot be typed back, and writing a parser per
9830
- locale is how a field ends up rejecting what it just displayed.
9951
+ not parse, so a rendering such as `Tuesday, August 4, 2026` is no text to
9952
+ edit. The field does read a date typed in the locale's order and digits as
9953
+ you leave it, which covers what a reader types.
9831
9954
 
9832
9955
  The way out is not to choose between the two but to separate them in time.
9833
9956
  Idle, the field shows `4 August 2026`, which is what a date is for reading.
@@ -9965,6 +10088,14 @@ the date.
9965
10088
  **The name goes in**, so a row of them is heard as which one each
9966
10089
  removes rather than as "Remove" said once per date. */
9967
10090
  removeLabel?: (HelixHeadlessDateInput["removeLabel"]) | undefined;
10091
+ /** What a screen reader hears about the dates chosen in the calendar, with
10092
+ `{kind}`, `{start}`, `{end}` and `{count}` filled in as Date Picker's
10093
+ `selection-label` says. */
10094
+ "selection-label"?: (HelixHeadlessDateInput["selectionLabel"]) | undefined;
10095
+ /** What a screen reader hears about the dates chosen in the calendar, with
10096
+ `{kind}`, `{start}`, `{end}` and `{count}` filled in as Date Picker's
10097
+ `selection-label` says. */
10098
+ selectionLabel?: (HelixHeadlessDateInput["selectionLabel"]) | undefined;
9968
10099
  /** How far apart the selectable dates are, in days.
9969
10100
 
9970
10101
  `<input type="date" step>`'s own unit, handed to the calendar this renders
@@ -9976,6 +10107,14 @@ platform's base. */
9976
10107
  "step-mismatch-message"?: (HelixHeadlessDateInput["stepMismatchMessage"]) | undefined;
9977
10108
  /** The message shown when a date is not on `step`. */
9978
10109
  stepMismatchMessage?: (HelixHeadlessDateInput["stepMismatchMessage"]) | undefined;
10110
+ /** The time zone today is read in, such as `America/New_York`, handed to the
10111
+ calendar: the day marked today, and the month an empty field opens on.
10112
+ Empty is the reader's own. Dates are plain `YYYY-MM-DD` and carry no zone. */
10113
+ "time-zone"?: (HelixHeadlessDateInput["timeZone"]) | undefined;
10114
+ /** The time zone today is read in, such as `America/New_York`, handed to the
10115
+ calendar: the day marked today, and the month an empty field opens on.
10116
+ Empty is the reader's own. Dates are plain `YYYY-MM-DD` and carry no zone. */
10117
+ timeZone?: (HelixHeadlessDateInput["timeZone"]) | undefined;
9979
10118
  /** The name of the button that opens the calendar, read by screen readers. */
9980
10119
  "trigger-label"?: (HelixHeadlessDateInput["triggerLabel"]) | undefined;
9981
10120
  /** The name of the button that opens the calendar, read by screen readers. */
@@ -9984,6 +10123,12 @@ platform's base. */
9984
10123
  "unavailable-message"?: (HelixHeadlessDateInput["unavailableMessage"]) | undefined;
9985
10124
  /** The message shown when `disable-dates` or `disable-days` bars a date. */
9986
10125
  unavailableMessage?: (HelixHeadlessDateInput["unavailableMessage"]) | undefined;
10126
+ /** The message for text that is no date, where `bad-input-message` is not
10127
+ set. `{mode}` is `single`, `range`, or `multiple`. */
10128
+ "unreadable-message"?: (HelixHeadlessDateInput["unreadableMessage"]) | undefined;
10129
+ /** The message for text that is no date, where `bad-input-message` is not
10130
+ set. `{mode}` is `single`, `range`, or `multiple`. */
10131
+ unreadableMessage?: (HelixHeadlessDateInput["unreadableMessage"]) | undefined;
9987
10132
  /** The name of the calendar's heading where it shows a page of years, with
9988
10133
  `{heading}` filled in. */
9989
10134
  "year-view-label"?: (HelixHeadlessDateInput["yearViewLabel"]) | undefined;
@@ -10012,6 +10157,18 @@ are not, where `bad-input-message` is not set. `{kind}` is `date` or
10012
10157
  are not, where `bad-input-message` is not set. `{kind}` is `date` or
10013
10158
  `time`. */
10014
10159
  incompleteMessage?: (HelixHeadlessDateInput["incompleteMessage"]) | undefined;
10160
+ /** What a screen reader hears before the segments of a range's second date
10161
+ or time, after each segment's own name. */
10162
+ "range-end-label"?: (HelixHeadlessDateInput["rangeEndLabel"]) | undefined;
10163
+ /** What a screen reader hears before the segments of a range's second date
10164
+ or time, after each segment's own name. */
10165
+ rangeEndLabel?: (HelixHeadlessDateInput["rangeEndLabel"]) | undefined;
10166
+ /** What a screen reader hears before the segments of a range's first date
10167
+ or time, after each segment's own name: "month, Start, Stay". */
10168
+ "range-start-label"?: (HelixHeadlessDateInput["rangeStartLabel"]) | undefined;
10169
+ /** What a screen reader hears before the segments of a range's first date
10170
+ or time, after each segment's own name: "month, Start, Stay". */
10171
+ rangeStartLabel?: (HelixHeadlessDateInput["rangeStartLabel"]) | undefined;
10015
10172
  /** Whether the field is a row of segments, one for each part of the date or
10016
10173
  time, in place of a line of text.
10017
10174
 
@@ -10239,6 +10396,8 @@ reader makes in one of these. */
10239
10396
  "onhelix-before-open"?: ((
10240
10397
  e: HelixHeadlessDateInputHelixBeforeOpenElementEvent,
10241
10398
  ) => void) | undefined;
10399
+ /** Fired after the clear button has emptied the field, after `input` and `change`. */
10400
+ "onhelix-clear"?: ((e: HelixHeadlessDateInputHelixClearElementEvent) => void) | undefined;
10242
10401
  /** Fired after the value changes. */
10243
10402
  oninput?: ((e: HelixHeadlessDateInputElementEvent) => void) | undefined;
10244
10403
  /** Fired when the calendar opens or closes, with `newState` and `oldState`. */
@@ -10246,32 +10405,48 @@ reader makes in one of these. */
10246
10405
  };
10247
10406
 
10248
10407
  export type HelixHeadlessDateInputSolidJsProps = {
10249
- /** What the browser may autofill here, as one of the platform's own tokens.
10408
+ /** What the browser may autofill here, as one of the platform's own tokens,
10409
+ such as `bday`.
10250
10410
 
10251
10411
  Empty leaves the attribute off, which is the browser's default and is what
10252
10412
  lets autofill work at all: hardcoding `off` here means a birthday or a
10253
- postal code can never be filled in for a reader. */
10413
+ postal code can never be filled in for a reader. With `segmented`, a
10414
+ hidden native date input carries it, since no browser fills the segments. */
10254
10415
  "prop:autocomplete"?: (HelixHeadlessDateInput["autocomplete"]) | undefined;
10255
- /** The calendar the written date and the calendar's days are in: `gregory`,
10256
- `buddhist`, `japanese`, `roc`, or `iso8601`.
10257
-
10258
- Absent is the locale's own where it is one of the five, and `gregory` for
10259
- every other, as Date Picker's `calendar` is. The value is `YYYY-MM-DD` in
10260
- every calendar, and a focused field is ISO in every calendar. In
10261
- `segmented`, the segments are the Gregorian day, month, and year, in the
10262
- order the locale writes them, or ISO order for `iso8601`. */
10416
+ /** The calendar the written date, the segments, and the calendar's days are
10417
+ in: `gregory`, `buddhist`, `japanese`, `roc`, or `iso8601`, or a calendar
10418
+ with months of its own that Date Picker's `calendar` names, such as
10419
+ `persian`, `hebrew`, `islamic-umalqura`, `ethiopic`, or `chinese`.
10420
+
10421
+ Absent is the locale's own where its months are the Gregorian months, and
10422
+ `gregory` for every other, as Date Picker's `calendar` is. The value is
10423
+ `YYYY-MM-DD` in every calendar, and a focused text field is ISO in every
10424
+ calendar. In `segmented`, the segments are the day, month, and year as
10425
+ the calendar counts them, in the order the locale writes them: Mehr 14,
10426
+ 1405 is month 7 and day 14 of 1405 under `persian`. Under the five with
10427
+ Gregorian months they are the Gregorian day, month, and year, or ISO order
10428
+ for `iso8601`. */
10263
10429
  "prop:calendar"?: (HelixHeadlessDateInput["calendar"]) | undefined;
10264
10430
  /** The name of the calendar's grid of days, read by screen readers. */
10265
10431
  "attr:calendar-label"?: (HelixHeadlessDateInput["calendarLabel"]) | undefined;
10266
10432
  /** The name of the calendar's grid of days, read by screen readers. */
10267
10433
  "prop:calendarLabel"?: (HelixHeadlessDateInput["calendarLabel"]) | undefined;
10434
+ /** Whether the field shows a button that empties it, as Input's `clearable`
10435
+ does. Shown only while the field holds something to clear and is neither
10436
+ disabled nor read-only. */
10437
+ "prop:clearable"?: (HelixHeadlessDateInput["clearable"]) | undefined;
10438
+ /** The accessible name of the clear button, which shows only an icon. */
10439
+ "attr:clear-label"?: (HelixHeadlessDateInput["clearLabel"]) | undefined;
10440
+ /** The accessible name of the clear button, which shows only an icon. */
10441
+ "prop:clearLabel"?: (HelixHeadlessDateInput["clearLabel"]) | undefined;
10268
10442
  /** How a date is written in the field: `short` through `full`, or ISO.
10269
10443
 
10270
10444
  **The field renders when it is idle and holds the value when it is being
10271
10445
  edited.** A written date is a rendering, and a document being edited must
10272
10446
  not be a rendering of something else: `Intl.DateTimeFormat` formats and does
10273
- not parse, so `4 August 2026` cannot be typed back, and writing a parser per
10274
- locale is how a field ends up rejecting what it just displayed.
10447
+ not parse, so a rendering such as `Tuesday, August 4, 2026` is no text to
10448
+ edit. The field does read a date typed in the locale's order and digits as
10449
+ you leave it, which covers what a reader types.
10275
10450
 
10276
10451
  The way out is not to choose between the two but to separate them in time.
10277
10452
  Idle, the field shows `4 August 2026`, which is what a date is for reading.
@@ -10293,8 +10468,9 @@ submits and what `min` and `max` compare against. */
10293
10468
  **The field renders when it is idle and holds the value when it is being
10294
10469
  edited.** A written date is a rendering, and a document being edited must
10295
10470
  not be a rendering of something else: `Intl.DateTimeFormat` formats and does
10296
- not parse, so `4 August 2026` cannot be typed back, and writing a parser per
10297
- locale is how a field ends up rejecting what it just displayed.
10471
+ not parse, so a rendering such as `Tuesday, August 4, 2026` is no text to
10472
+ edit. The field does read a date typed in the locale's order and digits as
10473
+ you leave it, which covers what a reader types.
10298
10474
 
10299
10475
  The way out is not to choose between the two but to separate them in time.
10300
10476
  Idle, the field shows `4 August 2026`, which is what a date is for reading.
@@ -10432,6 +10608,14 @@ the date.
10432
10608
  **The name goes in**, so a row of them is heard as which one each
10433
10609
  removes rather than as "Remove" said once per date. */
10434
10610
  "prop:removeLabel"?: (HelixHeadlessDateInput["removeLabel"]) | undefined;
10611
+ /** What a screen reader hears about the dates chosen in the calendar, with
10612
+ `{kind}`, `{start}`, `{end}` and `{count}` filled in as Date Picker's
10613
+ `selection-label` says. */
10614
+ "attr:selection-label"?: (HelixHeadlessDateInput["selectionLabel"]) | undefined;
10615
+ /** What a screen reader hears about the dates chosen in the calendar, with
10616
+ `{kind}`, `{start}`, `{end}` and `{count}` filled in as Date Picker's
10617
+ `selection-label` says. */
10618
+ "prop:selectionLabel"?: (HelixHeadlessDateInput["selectionLabel"]) | undefined;
10435
10619
  /** How far apart the selectable dates are, in days.
10436
10620
 
10437
10621
  `<input type="date" step>`'s own unit, handed to the calendar this renders
@@ -10443,6 +10627,14 @@ platform's base. */
10443
10627
  "attr:step-mismatch-message"?: (HelixHeadlessDateInput["stepMismatchMessage"]) | undefined;
10444
10628
  /** The message shown when a date is not on `step`. */
10445
10629
  "prop:stepMismatchMessage"?: (HelixHeadlessDateInput["stepMismatchMessage"]) | undefined;
10630
+ /** The time zone today is read in, such as `America/New_York`, handed to the
10631
+ calendar: the day marked today, and the month an empty field opens on.
10632
+ Empty is the reader's own. Dates are plain `YYYY-MM-DD` and carry no zone. */
10633
+ "attr:time-zone"?: (HelixHeadlessDateInput["timeZone"]) | undefined;
10634
+ /** The time zone today is read in, such as `America/New_York`, handed to the
10635
+ calendar: the day marked today, and the month an empty field opens on.
10636
+ Empty is the reader's own. Dates are plain `YYYY-MM-DD` and carry no zone. */
10637
+ "prop:timeZone"?: (HelixHeadlessDateInput["timeZone"]) | undefined;
10446
10638
  /** The name of the button that opens the calendar, read by screen readers. */
10447
10639
  "attr:trigger-label"?: (HelixHeadlessDateInput["triggerLabel"]) | undefined;
10448
10640
  /** The name of the button that opens the calendar, read by screen readers. */
@@ -10451,6 +10643,12 @@ platform's base. */
10451
10643
  "attr:unavailable-message"?: (HelixHeadlessDateInput["unavailableMessage"]) | undefined;
10452
10644
  /** The message shown when `disable-dates` or `disable-days` bars a date. */
10453
10645
  "prop:unavailableMessage"?: (HelixHeadlessDateInput["unavailableMessage"]) | undefined;
10646
+ /** The message for text that is no date, where `bad-input-message` is not
10647
+ set. `{mode}` is `single`, `range`, or `multiple`. */
10648
+ "attr:unreadable-message"?: (HelixHeadlessDateInput["unreadableMessage"]) | undefined;
10649
+ /** The message for text that is no date, where `bad-input-message` is not
10650
+ set. `{mode}` is `single`, `range`, or `multiple`. */
10651
+ "prop:unreadableMessage"?: (HelixHeadlessDateInput["unreadableMessage"]) | undefined;
10454
10652
  /** The name of the calendar's heading where it shows a page of years, with
10455
10653
  `{heading}` filled in. */
10456
10654
  "attr:year-view-label"?: (HelixHeadlessDateInput["yearViewLabel"]) | undefined;
@@ -10479,6 +10677,18 @@ are not, where `bad-input-message` is not set. `{kind}` is `date` or
10479
10677
  are not, where `bad-input-message` is not set. `{kind}` is `date` or
10480
10678
  `time`. */
10481
10679
  "prop:incompleteMessage"?: (HelixHeadlessDateInput["incompleteMessage"]) | undefined;
10680
+ /** What a screen reader hears before the segments of a range's second date
10681
+ or time, after each segment's own name. */
10682
+ "attr:range-end-label"?: (HelixHeadlessDateInput["rangeEndLabel"]) | undefined;
10683
+ /** What a screen reader hears before the segments of a range's second date
10684
+ or time, after each segment's own name. */
10685
+ "prop:rangeEndLabel"?: (HelixHeadlessDateInput["rangeEndLabel"]) | undefined;
10686
+ /** What a screen reader hears before the segments of a range's first date
10687
+ or time, after each segment's own name: "month, Start, Stay". */
10688
+ "attr:range-start-label"?: (HelixHeadlessDateInput["rangeStartLabel"]) | undefined;
10689
+ /** What a screen reader hears before the segments of a range's first date
10690
+ or time, after each segment's own name: "month, Start, Stay". */
10691
+ "prop:rangeStartLabel"?: (HelixHeadlessDateInput["rangeStartLabel"]) | undefined;
10482
10692
  /** Whether the field is a row of segments, one for each part of the date or
10483
10693
  time, in place of a line of text.
10484
10694
 
@@ -10705,6 +10915,8 @@ reader makes in one of these. */
10705
10915
  "on:helix-before-open"?: ((
10706
10916
  e: HelixHeadlessDateInputHelixBeforeOpenElementEvent,
10707
10917
  ) => void) | undefined;
10918
+ /** Fired after the clear button has emptied the field, after `input` and `change`. */
10919
+ "on:helix-clear"?: ((e: HelixHeadlessDateInputHelixClearElementEvent) => void) | undefined;
10708
10920
  /** Fired after the value changes. */
10709
10921
  "on:input"?: ((e: HelixHeadlessDateInputElementEvent) => void) | undefined;
10710
10922
  /** Fired when the calendar opens or closes, with `newState` and `oldState`. */
@@ -10753,14 +10965,16 @@ it is one of the five, such as `buddhist` for `th-TH` or `japanese` for
10753
10965
  `ja-JP-u-ca-japanese`, and `gregory` for every other, such as `persian`
10754
10966
  for `fa-IR`.
10755
10967
 
10756
- `persian`, `hebrew`, `islamic-umalqura`, `islamic-civil`, `ethiopic`,
10757
- `coptic`, and `indian` draw a calendar with months of its own, as React
10758
- Aria's calendars do: each grid is one of that calendar's months, the
10759
- Hebrew leap month and Ethiopia's five-day thirteenth month included, and
10760
- Previous, Next and the page keys move by those months. `month` and
10968
+ `persian`, `hebrew`, `islamic`, `islamic-umalqura`, `islamic-civil`,
10969
+ `islamic-tbla`, `islamic-rgsa`, `ethiopic`, `ethioaa`, `coptic`,
10970
+ `indian`, `chinese`, and `dangi` draw a calendar with months of its own,
10971
+ as React Aria's calendars do: each grid is one of that calendar's months,
10972
+ the Hebrew and Chinese leap months and Ethiopia's five-day thirteenth
10973
+ month included, and Previous, Next and the page keys move by those
10974
+ months. With `max-view`, the months view shows that calendar's year, of
10975
+ twelve or thirteen months, and the years view its years. `month` and
10761
10976
  `helix-navigate` then name a month by its first day, `YYYY-MM-DD`. The
10762
- heading stays text, as the months and years views are drawn in Gregorian
10763
- months only. The value is `YYYY-MM-DD` in every calendar. */
10977
+ value is `YYYY-MM-DD` in every calendar. */
10764
10978
  calendar?: (HelixHeadlessDatePicker["calendar"]) | undefined;
10765
10979
  /** The month to open on when `month` is not set. */
10766
10980
  "default-month"?: (HelixHeadlessDatePicker["defaultMonth"]) | undefined;
@@ -10907,6 +11121,18 @@ else set needs. */
10907
11121
  readOnly?: (HelixHeadlessDatePicker["readOnly"]) | undefined;
10908
11122
  /** Stops the form from submitting while no date is chosen. */
10909
11123
  required?: (HelixHeadlessDatePicker["required"]) | undefined;
11124
+ /** What a screen reader hears about the chosen dates: the grid's
11125
+ description, said again whenever the dates change. `{kind}` is `date`,
11126
+ `start` while a range holds one end, `range`, or `dates` for `multiple`.
11127
+ `{start}` and `{end}` are dates written in `locale`, and `{count}` is how
11128
+ many dates are chosen. */
11129
+ "selection-label"?: (HelixHeadlessDatePicker["selectionLabel"]) | undefined;
11130
+ /** What a screen reader hears about the chosen dates: the grid's
11131
+ description, said again whenever the dates change. `{kind}` is `date`,
11132
+ `start` while a range holds one end, `range`, or `dates` for `multiple`.
11133
+ `{start}` and `{end}` are dates written in `locale`, and `{count}` is how
11134
+ many dates are chosen. */
11135
+ selectionLabel?: (HelixHeadlessDatePicker["selectionLabel"]) | undefined;
10910
11136
  /** How far apart the selectable dates are, in days.
10911
11137
 
10912
11138
  `<input type="date" step>`'s own unit, counted from `min` where there is
@@ -11086,14 +11312,16 @@ it is one of the five, such as `buddhist` for `th-TH` or `japanese` for
11086
11312
  `ja-JP-u-ca-japanese`, and `gregory` for every other, such as `persian`
11087
11313
  for `fa-IR`.
11088
11314
 
11089
- `persian`, `hebrew`, `islamic-umalqura`, `islamic-civil`, `ethiopic`,
11090
- `coptic`, and `indian` draw a calendar with months of its own, as React
11091
- Aria's calendars do: each grid is one of that calendar's months, the
11092
- Hebrew leap month and Ethiopia's five-day thirteenth month included, and
11093
- Previous, Next and the page keys move by those months. `month` and
11315
+ `persian`, `hebrew`, `islamic`, `islamic-umalqura`, `islamic-civil`,
11316
+ `islamic-tbla`, `islamic-rgsa`, `ethiopic`, `ethioaa`, `coptic`,
11317
+ `indian`, `chinese`, and `dangi` draw a calendar with months of its own,
11318
+ as React Aria's calendars do: each grid is one of that calendar's months,
11319
+ the Hebrew and Chinese leap months and Ethiopia's five-day thirteenth
11320
+ month included, and Previous, Next and the page keys move by those
11321
+ months. With `max-view`, the months view shows that calendar's year, of
11322
+ twelve or thirteen months, and the years view its years. `month` and
11094
11323
  `helix-navigate` then name a month by its first day, `YYYY-MM-DD`. The
11095
- heading stays text, as the months and years views are drawn in Gregorian
11096
- months only. The value is `YYYY-MM-DD` in every calendar. */
11324
+ value is `YYYY-MM-DD` in every calendar. */
11097
11325
  "prop:calendar"?: (HelixHeadlessDatePicker["calendar"]) | undefined;
11098
11326
  /** The month to open on when `month` is not set. */
11099
11327
  "attr:default-month"?: (HelixHeadlessDatePicker["defaultMonth"]) | undefined;
@@ -11240,6 +11468,18 @@ else set needs. */
11240
11468
  "prop:readOnly"?: (HelixHeadlessDatePicker["readOnly"]) | undefined;
11241
11469
  /** Stops the form from submitting while no date is chosen. */
11242
11470
  "prop:required"?: (HelixHeadlessDatePicker["required"]) | undefined;
11471
+ /** What a screen reader hears about the chosen dates: the grid's
11472
+ description, said again whenever the dates change. `{kind}` is `date`,
11473
+ `start` while a range holds one end, `range`, or `dates` for `multiple`.
11474
+ `{start}` and `{end}` are dates written in `locale`, and `{count}` is how
11475
+ many dates are chosen. */
11476
+ "attr:selection-label"?: (HelixHeadlessDatePicker["selectionLabel"]) | undefined;
11477
+ /** What a screen reader hears about the chosen dates: the grid's
11478
+ description, said again whenever the dates change. `{kind}` is `date`,
11479
+ `start` while a range holds one end, `range`, or `dates` for `multiple`.
11480
+ `{start}` and `{end}` are dates written in `locale`, and `{count}` is how
11481
+ many dates are chosen. */
11482
+ "prop:selectionLabel"?: (HelixHeadlessDatePicker["selectionLabel"]) | undefined;
11243
11483
  /** How far apart the selectable dates are, in days.
11244
11484
 
11245
11485
  `<input type="date" step>`'s own unit, counted from `min` where there is
@@ -13737,12 +13977,14 @@ Here rather than on each control. */
13737
13977
 
13738
13978
  export type HelixHeadlessFormatDateProps = {
13739
13979
  /** The calendar a date is written in: `gregory`, `buddhist`, `japanese`,
13740
- `roc`, or `iso8601`, the calendars Date Picker and Date Input draw.
13741
-
13742
- Absent is the locale's own where it is one of the five, such as
13743
- `buddhist` for `th-TH`, and `gregory` for every other, such as `persian`
13744
- for `fa-IR`, so a date written here reads as the same date a Date Picker
13745
- beside it shows. */
13980
+ `roc`, or `iso8601`, or a calendar with months of its own, such as
13981
+ `persian`, `hebrew`, `islamic-umalqura`, `ethiopic`, or `chinese`: every
13982
+ calendar Date Picker and Date Input draw.
13983
+
13984
+ Absent is the locale's own where its months are the Gregorian months,
13985
+ such as `buddhist` for `th-TH`, and `gregory` for every other, such as
13986
+ `persian` for `fa-IR`, so a date written here reads as the same date a
13987
+ Date Picker beside it shows. Write `calendar="persian"` for Mehr 14, 1405. */
13746
13988
  calendar?: (HelixHeadlessFormatDate["calendar"]) | undefined;
13747
13989
  /** The timestamp, in any format `Date` can parse.
13748
13990
 
@@ -13768,6 +14010,14 @@ browser may use either. */
13768
14010
  dateStyle?: (HelixHeadlessFormatDate["dateStyle"]) | undefined;
13769
14011
  /** How the day of the month is written, where a date is shown. */
13770
14012
  day?: (HelixHeadlessFormatDate["day"]) | undefined;
14013
+ /** Writes the part of the day in words, such as "in the morning" or "at
14014
+ night", in its `long`, `short`, or `narrow` form, where `hour` is on a
14015
+ twelve-hour clock. */
14016
+ "day-period"?: (HelixHeadlessFormatDate["dayPeriod"]) | undefined;
14017
+ /** Writes the part of the day in words, such as "in the morning" or "at
14018
+ night", in its `long`, `short`, or `narrow` form, where `hour` is on a
14019
+ twelve-hour clock. */
14020
+ dayPeriod?: (HelixHeadlessFormatDate["dayPeriod"]) | undefined;
13771
14021
  /** Shows how long ago the timestamp was, in a compact form such as "3h", in
13772
14022
  place of the date.
13773
14023
 
@@ -13785,6 +14035,12 @@ Off by default, which draws the date as one run of text, as Shoelace and
13785
14035
  Web Awesome do. An `elapsed` or `relative` reading is one phrase either
13786
14036
  way. */
13787
14037
  fields?: (HelixHeadlessFormatDate["fields"]) | undefined;
14038
+ /** How many digits of a fraction of a second to write after `second`: 1, 2,
14039
+ or 3, as in 09:41:07.250. */
14040
+ "fractional-second-digits"?: (HelixHeadlessFormatDate["fractionalSecondDigits"]) | undefined;
14041
+ /** How many digits of a fraction of a second to write after `second`: 1, 2,
14042
+ or 3, as in 09:41:07.250. */
14043
+ fractionalSecondDigits?: (HelixHeadlessFormatDate["fractionalSecondDigits"]) | undefined;
13788
14044
  /** Draws an `elapsed` or `relative` reading once and leaves it, where it
13789
14045
  would otherwise move on as it goes stale.
13790
14046
 
@@ -13847,9 +14103,13 @@ Empty is the runtime's own. */
13847
14103
 
13848
14104
  Empty is the runtime's own. */
13849
14105
  timeZone?: (HelixHeadlessFormatDate["timeZone"]) | undefined;
13850
- /** Shows the name of the time zone, in its `long` or `short` form. */
14106
+ /** Shows the name of the time zone: `long` or `short`, as Pacific Daylight
14107
+ Time or PDT, `longOffset` or `shortOffset`, as GMT-07:00 or GMT-7, or
14108
+ `longGeneric` or `shortGeneric`, as Pacific Time or PT. */
13851
14109
  "time-zone-name"?: (HelixHeadlessFormatDate["timeZoneName"]) | undefined;
13852
- /** Shows the name of the time zone, in its `long` or `short` form. */
14110
+ /** Shows the name of the time zone: `long` or `short`, as Pacific Daylight
14111
+ Time or PDT, `longOffset` or `shortOffset`, as GMT-07:00 or GMT-7, or
14112
+ `longGeneric` or `shortGeneric`, as Pacific Time or PT. */
13853
14113
  timeZoneName?: (HelixHeadlessFormatDate["timeZoneName"]) | undefined;
13854
14114
  /** How the weekday is written, where one is shown. */
13855
14115
  weekday?: (HelixHeadlessFormatDate["weekday"]) | undefined;
@@ -13859,12 +14119,14 @@ Empty is the runtime's own. */
13859
14119
 
13860
14120
  export type HelixHeadlessFormatDateSolidJsProps = {
13861
14121
  /** The calendar a date is written in: `gregory`, `buddhist`, `japanese`,
13862
- `roc`, or `iso8601`, the calendars Date Picker and Date Input draw.
13863
-
13864
- Absent is the locale's own where it is one of the five, such as
13865
- `buddhist` for `th-TH`, and `gregory` for every other, such as `persian`
13866
- for `fa-IR`, so a date written here reads as the same date a Date Picker
13867
- beside it shows. */
14122
+ `roc`, or `iso8601`, or a calendar with months of its own, such as
14123
+ `persian`, `hebrew`, `islamic-umalqura`, `ethiopic`, or `chinese`: every
14124
+ calendar Date Picker and Date Input draw.
14125
+
14126
+ Absent is the locale's own where its months are the Gregorian months,
14127
+ such as `buddhist` for `th-TH`, and `gregory` for every other, such as
14128
+ `persian` for `fa-IR`, so a date written here reads as the same date a
14129
+ Date Picker beside it shows. Write `calendar="persian"` for Mehr 14, 1405. */
13868
14130
  "prop:calendar"?: (HelixHeadlessFormatDate["calendar"]) | undefined;
13869
14131
  /** The timestamp, in any format `Date` can parse.
13870
14132
 
@@ -13890,6 +14152,14 @@ browser may use either. */
13890
14152
  "prop:dateStyle"?: (HelixHeadlessFormatDate["dateStyle"]) | undefined;
13891
14153
  /** How the day of the month is written, where a date is shown. */
13892
14154
  "prop:day"?: (HelixHeadlessFormatDate["day"]) | undefined;
14155
+ /** Writes the part of the day in words, such as "in the morning" or "at
14156
+ night", in its `long`, `short`, or `narrow` form, where `hour` is on a
14157
+ twelve-hour clock. */
14158
+ "attr:day-period"?: (HelixHeadlessFormatDate["dayPeriod"]) | undefined;
14159
+ /** Writes the part of the day in words, such as "in the morning" or "at
14160
+ night", in its `long`, `short`, or `narrow` form, where `hour` is on a
14161
+ twelve-hour clock. */
14162
+ "prop:dayPeriod"?: (HelixHeadlessFormatDate["dayPeriod"]) | undefined;
13893
14163
  /** Shows how long ago the timestamp was, in a compact form such as "3h", in
13894
14164
  place of the date.
13895
14165
 
@@ -13907,6 +14177,12 @@ Off by default, which draws the date as one run of text, as Shoelace and
13907
14177
  Web Awesome do. An `elapsed` or `relative` reading is one phrase either
13908
14178
  way. */
13909
14179
  "prop:fields"?: (HelixHeadlessFormatDate["fields"]) | undefined;
14180
+ /** How many digits of a fraction of a second to write after `second`: 1, 2,
14181
+ or 3, as in 09:41:07.250. */
14182
+ "attr:fractional-second-digits"?: (HelixHeadlessFormatDate["fractionalSecondDigits"]) | undefined;
14183
+ /** How many digits of a fraction of a second to write after `second`: 1, 2,
14184
+ or 3, as in 09:41:07.250. */
14185
+ "prop:fractionalSecondDigits"?: (HelixHeadlessFormatDate["fractionalSecondDigits"]) | undefined;
13910
14186
  /** Draws an `elapsed` or `relative` reading once and leaves it, where it
13911
14187
  would otherwise move on as it goes stale.
13912
14188
 
@@ -13969,9 +14245,13 @@ Empty is the runtime's own. */
13969
14245
 
13970
14246
  Empty is the runtime's own. */
13971
14247
  "prop:timeZone"?: (HelixHeadlessFormatDate["timeZone"]) | undefined;
13972
- /** Shows the name of the time zone, in its `long` or `short` form. */
14248
+ /** Shows the name of the time zone: `long` or `short`, as Pacific Daylight
14249
+ Time or PDT, `longOffset` or `shortOffset`, as GMT-07:00 or GMT-7, or
14250
+ `longGeneric` or `shortGeneric`, as Pacific Time or PT. */
13973
14251
  "attr:time-zone-name"?: (HelixHeadlessFormatDate["timeZoneName"]) | undefined;
13974
- /** Shows the name of the time zone, in its `long` or `short` form. */
14252
+ /** Shows the name of the time zone: `long` or `short`, as Pacific Daylight
14253
+ Time or PDT, `longOffset` or `shortOffset`, as GMT-07:00 or GMT-7, or
14254
+ `longGeneric` or `shortGeneric`, as Pacific Time or PT. */
13975
14255
  "prop:timeZoneName"?: (HelixHeadlessFormatDate["timeZoneName"]) | undefined;
13976
14256
  /** How the weekday is written, where one is shown. */
13977
14257
  "prop:weekday"?: (HelixHeadlessFormatDate["weekday"]) | undefined;
@@ -26252,6 +26532,14 @@ rather than a thumb sitting on nothing. */
26252
26532
  middle of the track, or `end` at `max`. Absent is `start`. A range fills
26253
26533
  between its thumbs and ignores it. */
26254
26534
  origin?: (HelixHeadlessSlider["origin"]) | undefined;
26535
+ /** How far Page Up and Page Down move a thumb, in the slider's own units, as
26536
+ React Aria's `pageSize` and Zag's `largeStep` do. Absent leaves the keys
26537
+ to the platform, which moves a tenth of the track. */
26538
+ "page-step"?: (HelixHeadlessSlider["pageStep"] | `${number}`) | undefined;
26539
+ /** How far Page Up and Page Down move a thumb, in the slider's own units, as
26540
+ React Aria's `pageSize` and Zag's `largeStep` do. Absent leaves the keys
26541
+ to the platform, which moves a tenth of the track. */
26542
+ pageStep?: (HelixHeadlessSlider["pageStep"]) | undefined;
26255
26543
  /** Adds a second thumb, so the value is a pair.
26256
26544
 
26257
26545
  The pair is one string, `"10,50"`, which is what `value` and
@@ -26506,6 +26794,14 @@ rather than a thumb sitting on nothing. */
26506
26794
  middle of the track, or `end` at `max`. Absent is `start`. A range fills
26507
26795
  between its thumbs and ignores it. */
26508
26796
  "prop:origin"?: (HelixHeadlessSlider["origin"]) | undefined;
26797
+ /** How far Page Up and Page Down move a thumb, in the slider's own units, as
26798
+ React Aria's `pageSize` and Zag's `largeStep` do. Absent leaves the keys
26799
+ to the platform, which moves a tenth of the track. */
26800
+ "attr:page-step"?: (HelixHeadlessSlider["pageStep"] | `${number}`) | undefined;
26801
+ /** How far Page Up and Page Down move a thumb, in the slider's own units, as
26802
+ React Aria's `pageSize` and Zag's `largeStep` do. Absent leaves the keys
26803
+ to the platform, which moves a tenth of the track. */
26804
+ "prop:pageStep"?: (HelixHeadlessSlider["pageStep"]) | undefined;
26509
26805
  /** Adds a second thumb, so the value is a pair.
26510
26806
 
26511
26807
  The pair is one string, `"10,50"`, which is what `value` and
@@ -29059,7 +29355,19 @@ known by its place among the rows as written. */
29059
29355
  textContent?: (string | number) | undefined;
29060
29356
  };
29061
29357
 
29358
+ /** `HelixHeadlessTabPanel` component event */
29359
+ export type HelixHeadlessTabPanelElementEvent<E = Event> = TypedEvent<
29360
+ HelixHeadlessTabPanel,
29361
+ E
29362
+ >;
29363
+ /** `helix-load` event type */
29364
+ export type HelixHeadlessTabPanelHelixLoadElementEvent =
29365
+ HelixHeadlessTabPanelElementEvent<HelixLoadEvent>;
29366
+
29062
29367
  export type HelixHeadlessTabPanelProps = {
29368
+ /** Whether the panel's content waits in a `<template>` until the panel is
29369
+ first shown. */
29370
+ lazy?: (HelixHeadlessTabPanel["lazy"]) | undefined;
29063
29371
  /** Whether this panel is the visible one. */
29064
29372
  selected?: (HelixHeadlessTabPanel["selected"]) | undefined;
29065
29373
  /** Pairs the panel with the tab of the same value. */
@@ -29075,9 +29383,15 @@ written in, and the tab's control is inside the tab's shadow root, which no
29075
29383
  reference from the light DOM can reach. `aria-label` on a `tabpanel` is how
29076
29384
  the pattern names one anyway. */
29077
29385
  label?: (HelixHeadlessTabPanel["label"]) | undefined;
29386
+
29387
+ /** Fired the first time a `lazy` panel is shown, once its template's content is in. */
29388
+ "onhelix-load"?: ((e: HelixHeadlessTabPanelHelixLoadElementEvent) => void) | undefined;
29078
29389
  };
29079
29390
 
29080
29391
  export type HelixHeadlessTabPanelSolidJsProps = {
29392
+ /** Whether the panel's content waits in a `<template>` until the panel is
29393
+ first shown. */
29394
+ "prop:lazy"?: (HelixHeadlessTabPanel["lazy"]) | undefined;
29081
29395
  /** Whether this panel is the visible one. */
29082
29396
  "prop:selected"?: (HelixHeadlessTabPanel["selected"]) | undefined;
29083
29397
  /** Pairs the panel with the tab of the same value. */
@@ -29093,6 +29407,8 @@ written in, and the tab's control is inside the tab's shadow root, which no
29093
29407
  reference from the light DOM can reach. `aria-label` on a `tabpanel` is how
29094
29408
  the pattern names one anyway. */
29095
29409
  "prop:label"?: (HelixHeadlessTabPanel["label"]) | undefined;
29410
+ /** Fired the first time a `lazy` panel is shown, once its template's content is in. */
29411
+ "on:helix-load"?: ((e: HelixHeadlessTabPanelHelixLoadElementEvent) => void) | undefined;
29096
29412
 
29097
29413
  /** Set the innerHTML of the element */
29098
29414
  innerHTML?: (string) | undefined;
@@ -30070,6 +30386,9 @@ export type HelixHeadlessTimeInputHelixBeforeCloseElementEvent =
30070
30386
  /** `helix-before-open` event type */
30071
30387
  export type HelixHeadlessTimeInputHelixBeforeOpenElementEvent =
30072
30388
  HelixHeadlessTimeInputElementEvent<HelixBeforeOpenEvent>;
30389
+ /** `helix-clear` event type */
30390
+ export type HelixHeadlessTimeInputHelixClearElementEvent =
30391
+ HelixHeadlessTimeInputElementEvent<HelixClearEvent>;
30073
30392
  /** `toggle` event type */
30074
30393
  export type HelixHeadlessTimeInputToggleElementEvent =
30075
30394
  HelixHeadlessTimeInputElementEvent<ToggleEvent>;
@@ -30080,6 +30399,14 @@ export type HelixHeadlessTimeInputProps = {
30080
30399
  Empty leaves the attribute off, which is the browser's default and is what
30081
30400
  lets autofill work at all. */
30082
30401
  autocomplete?: (HelixHeadlessTimeInput["autocomplete"]) | undefined;
30402
+ /** Whether the field shows a button that empties it, as Input's `clearable`
30403
+ does. Shown only while the field holds something to clear and is neither
30404
+ disabled nor read-only. */
30405
+ clearable?: (HelixHeadlessTimeInput["clearable"]) | undefined;
30406
+ /** The accessible name of the clear button, which shows only an icon. */
30407
+ "clear-label"?: (HelixHeadlessTimeInput["clearLabel"]) | undefined;
30408
+ /** The accessible name of the clear button, which shows only an icon. */
30409
+ clearLabel?: (HelixHeadlessTimeInput["clearLabel"]) | undefined;
30083
30410
  /** Times that cannot be chosen, as `HH:mm`, separated by commas or spaces.
30084
30411
 
30085
30412
  Handed to the list, which offers them as unavailable, and checked against
@@ -30183,6 +30510,12 @@ never something this element would refuse to read back. */
30183
30510
  "unavailable-message"?: (HelixHeadlessTimeInput["unavailableMessage"]) | undefined;
30184
30511
  /** The message shown when `disable-times` bars a time. */
30185
30512
  unavailableMessage?: (HelixHeadlessTimeInput["unavailableMessage"]) | undefined;
30513
+ /** The message for text that is no time, where `bad-input-message` is not
30514
+ set. `{mode}` is `single`, `range`, or `multiple`, and `{shape}` is `HH:mm`, or `HH:mm:ss` with `seconds`. */
30515
+ "unreadable-message"?: (HelixHeadlessTimeInput["unreadableMessage"]) | undefined;
30516
+ /** The message for text that is no time, where `bad-input-message` is not
30517
+ set. `{mode}` is `single`, `range`, or `multiple`, and `{shape}` is `HH:mm`, or `HH:mm:ss` with `seconds`. */
30518
+ unreadableMessage?: (HelixHeadlessTimeInput["unreadableMessage"]) | undefined;
30186
30519
  /** Whether the panel shows one list of times or a column for each part of the
30187
30520
  time.
30188
30521
 
@@ -30220,6 +30553,18 @@ are not, where `bad-input-message` is not set. `{kind}` is `date` or
30220
30553
  are not, where `bad-input-message` is not set. `{kind}` is `date` or
30221
30554
  `time`. */
30222
30555
  incompleteMessage?: (HelixHeadlessTimeInput["incompleteMessage"]) | undefined;
30556
+ /** What a screen reader hears before the segments of a range's second date
30557
+ or time, after each segment's own name. */
30558
+ "range-end-label"?: (HelixHeadlessTimeInput["rangeEndLabel"]) | undefined;
30559
+ /** What a screen reader hears before the segments of a range's second date
30560
+ or time, after each segment's own name. */
30561
+ rangeEndLabel?: (HelixHeadlessTimeInput["rangeEndLabel"]) | undefined;
30562
+ /** What a screen reader hears before the segments of a range's first date
30563
+ or time, after each segment's own name: "month, Start, Stay". */
30564
+ "range-start-label"?: (HelixHeadlessTimeInput["rangeStartLabel"]) | undefined;
30565
+ /** What a screen reader hears before the segments of a range's first date
30566
+ or time, after each segment's own name: "month, Start, Stay". */
30567
+ rangeStartLabel?: (HelixHeadlessTimeInput["rangeStartLabel"]) | undefined;
30223
30568
  /** Whether the field is a row of segments, one for each part of the date or
30224
30569
  time, in place of a line of text.
30225
30570
 
@@ -30436,6 +30781,8 @@ a consumer handing over `new Date()` gets the time of day they expected. */
30436
30781
  "onhelix-before-open"?: ((
30437
30782
  e: HelixHeadlessTimeInputHelixBeforeOpenElementEvent,
30438
30783
  ) => void) | undefined;
30784
+ /** Fired after the clear button has emptied the field, after `input` and `change`. */
30785
+ "onhelix-clear"?: ((e: HelixHeadlessTimeInputHelixClearElementEvent) => void) | undefined;
30439
30786
  /** Fired after the value changes. */
30440
30787
  oninput?: ((e: HelixHeadlessTimeInputElementEvent) => void) | undefined;
30441
30788
  /** Fired after the list opens or closes, with `newState` and `oldState`. */
@@ -30448,6 +30795,14 @@ export type HelixHeadlessTimeInputSolidJsProps = {
30448
30795
  Empty leaves the attribute off, which is the browser's default and is what
30449
30796
  lets autofill work at all. */
30450
30797
  "prop:autocomplete"?: (HelixHeadlessTimeInput["autocomplete"]) | undefined;
30798
+ /** Whether the field shows a button that empties it, as Input's `clearable`
30799
+ does. Shown only while the field holds something to clear and is neither
30800
+ disabled nor read-only. */
30801
+ "prop:clearable"?: (HelixHeadlessTimeInput["clearable"]) | undefined;
30802
+ /** The accessible name of the clear button, which shows only an icon. */
30803
+ "attr:clear-label"?: (HelixHeadlessTimeInput["clearLabel"]) | undefined;
30804
+ /** The accessible name of the clear button, which shows only an icon. */
30805
+ "prop:clearLabel"?: (HelixHeadlessTimeInput["clearLabel"]) | undefined;
30451
30806
  /** Times that cannot be chosen, as `HH:mm`, separated by commas or spaces.
30452
30807
 
30453
30808
  Handed to the list, which offers them as unavailable, and checked against
@@ -30551,6 +30906,12 @@ never something this element would refuse to read back. */
30551
30906
  "attr:unavailable-message"?: (HelixHeadlessTimeInput["unavailableMessage"]) | undefined;
30552
30907
  /** The message shown when `disable-times` bars a time. */
30553
30908
  "prop:unavailableMessage"?: (HelixHeadlessTimeInput["unavailableMessage"]) | undefined;
30909
+ /** The message for text that is no time, where `bad-input-message` is not
30910
+ set. `{mode}` is `single`, `range`, or `multiple`, and `{shape}` is `HH:mm`, or `HH:mm:ss` with `seconds`. */
30911
+ "attr:unreadable-message"?: (HelixHeadlessTimeInput["unreadableMessage"]) | undefined;
30912
+ /** The message for text that is no time, where `bad-input-message` is not
30913
+ set. `{mode}` is `single`, `range`, or `multiple`, and `{shape}` is `HH:mm`, or `HH:mm:ss` with `seconds`. */
30914
+ "prop:unreadableMessage"?: (HelixHeadlessTimeInput["unreadableMessage"]) | undefined;
30554
30915
  /** Whether the panel shows one list of times or a column for each part of the
30555
30916
  time.
30556
30917
 
@@ -30588,6 +30949,18 @@ are not, where `bad-input-message` is not set. `{kind}` is `date` or
30588
30949
  are not, where `bad-input-message` is not set. `{kind}` is `date` or
30589
30950
  `time`. */
30590
30951
  "prop:incompleteMessage"?: (HelixHeadlessTimeInput["incompleteMessage"]) | undefined;
30952
+ /** What a screen reader hears before the segments of a range's second date
30953
+ or time, after each segment's own name. */
30954
+ "attr:range-end-label"?: (HelixHeadlessTimeInput["rangeEndLabel"]) | undefined;
30955
+ /** What a screen reader hears before the segments of a range's second date
30956
+ or time, after each segment's own name. */
30957
+ "prop:rangeEndLabel"?: (HelixHeadlessTimeInput["rangeEndLabel"]) | undefined;
30958
+ /** What a screen reader hears before the segments of a range's first date
30959
+ or time, after each segment's own name: "month, Start, Stay". */
30960
+ "attr:range-start-label"?: (HelixHeadlessTimeInput["rangeStartLabel"]) | undefined;
30961
+ /** What a screen reader hears before the segments of a range's first date
30962
+ or time, after each segment's own name: "month, Start, Stay". */
30963
+ "prop:rangeStartLabel"?: (HelixHeadlessTimeInput["rangeStartLabel"]) | undefined;
30591
30964
  /** Whether the field is a row of segments, one for each part of the date or
30592
30965
  time, in place of a line of text.
30593
30966
 
@@ -30803,6 +31176,8 @@ a consumer handing over `new Date()` gets the time of day they expected. */
30803
31176
  "on:helix-before-open"?: ((
30804
31177
  e: HelixHeadlessTimeInputHelixBeforeOpenElementEvent,
30805
31178
  ) => void) | undefined;
31179
+ /** Fired after the clear button has emptied the field, after `input` and `change`. */
31180
+ "on:helix-clear"?: ((e: HelixHeadlessTimeInputHelixClearElementEvent) => void) | undefined;
30806
31181
  /** Fired after the value changes. */
30807
31182
  "on:input"?: ((e: HelixHeadlessTimeInputElementEvent) => void) | undefined;
30808
31183
  /** Fired after the list opens or closes, with `newState` and `oldState`. */
@@ -31716,6 +32091,12 @@ consumer's server markup does not have. A sheet carries the resting
31716
32091
  arrangement in its own `:host` rule and the selectors describe only the
31717
32092
  departures, which is what `orientation` does. */
31718
32093
  placement?: (HelixHeadlessToast["placement"]) | undefined;
32094
+ /** The edge a touch or a pen swipes a message toward to dismiss it: `end`,
32095
+ the end of the line, or `start`, `top` or `bottom`. Unset is `end`. */
32096
+ "swipe-direction"?: (HelixHeadlessToast["swipeDirection"]) | undefined;
32097
+ /** The edge a touch or a pen swipes a message toward to dismiss it: `end`,
32098
+ the end of the line, or `start`, `top` or `bottom`. Unset is `end`. */
32099
+ swipeDirection?: (HelixHeadlessToast["swipeDirection"]) | undefined;
31719
32100
 
31720
32101
  /** A message is being dismissed, by its control or by its timer. The message sends it, and you can listen for it on the region. Cancelable: canceling it keeps the message. */
31721
32102
  "onhelix-dismiss"?: ((e: HelixHeadlessToastHelixDismissElementEvent) => void) | undefined;
@@ -31763,6 +32144,12 @@ consumer's server markup does not have. A sheet carries the resting
31763
32144
  arrangement in its own `:host` rule and the selectors describe only the
31764
32145
  departures, which is what `orientation` does. */
31765
32146
  "prop:placement"?: (HelixHeadlessToast["placement"]) | undefined;
32147
+ /** The edge a touch or a pen swipes a message toward to dismiss it: `end`,
32148
+ the end of the line, or `start`, `top` or `bottom`. Unset is `end`. */
32149
+ "attr:swipe-direction"?: (HelixHeadlessToast["swipeDirection"]) | undefined;
32150
+ /** The edge a touch or a pen swipes a message toward to dismiss it: `end`,
32151
+ the end of the line, or `start`, `top` or `bottom`. Unset is `end`. */
32152
+ "prop:swipeDirection"?: (HelixHeadlessToast["swipeDirection"]) | undefined;
31766
32153
  /** A message is being dismissed, by its control or by its timer. The message sends it, and you can listen for it on the region. Cancelable: canceling it keeps the message. */
31767
32154
  "on:helix-dismiss"?: ((e: HelixHeadlessToastHelixDismissElementEvent) => void) | undefined;
31768
32155
 
@@ -31785,6 +32172,18 @@ export type HelixHeadlessToggleGroupHelixSelectElementEvent =
31785
32172
  HelixHeadlessToggleGroupElementEvent<HelixSelectEvent>;
31786
32173
 
31787
32174
  export type HelixHeadlessToggleGroupProps = {
32175
+ /** Whether a press on the chosen item, or Space or Enter on it, takes it
32176
+ back so nothing is chosen, as React Aria's `ToggleButtonGroup` and
32177
+ Radix's `ToggleGroup` do in a single group. Absent, a single group always
32178
+ keeps its choice once it has one, as a radio group does. A multiple group
32179
+ releases a pressed item either way. */
32180
+ "allow-empty-selection"?: (HelixHeadlessToggleGroup["allowEmptySelection"]) | undefined;
32181
+ /** Whether a press on the chosen item, or Space or Enter on it, takes it
32182
+ back so nothing is chosen, as React Aria's `ToggleButtonGroup` and
32183
+ Radix's `ToggleGroup` do in a single group. Absent, a single group always
32184
+ keeps its choice once it has one, as a radio group does. A multiple group
32185
+ releases a pressed item either way. */
32186
+ allowEmptySelection?: (HelixHeadlessToggleGroup["allowEmptySelection"]) | undefined;
31788
32187
  /** Where the group's label sits. `start` puts it on the track's line.
31789
32188
 
31790
32189
  Absent is above, which is what a field looks like and what almost every
@@ -31963,6 +32362,18 @@ Where one item is chosen, it is that one value, or none. */
31963
32362
  };
31964
32363
 
31965
32364
  export type HelixHeadlessToggleGroupSolidJsProps = {
32365
+ /** Whether a press on the chosen item, or Space or Enter on it, takes it
32366
+ back so nothing is chosen, as React Aria's `ToggleButtonGroup` and
32367
+ Radix's `ToggleGroup` do in a single group. Absent, a single group always
32368
+ keeps its choice once it has one, as a radio group does. A multiple group
32369
+ releases a pressed item either way. */
32370
+ "bool:allow-empty-selection"?: (HelixHeadlessToggleGroup["allowEmptySelection"]) | undefined;
32371
+ /** Whether a press on the chosen item, or Space or Enter on it, takes it
32372
+ back so nothing is chosen, as React Aria's `ToggleButtonGroup` and
32373
+ Radix's `ToggleGroup` do in a single group. Absent, a single group always
32374
+ keeps its choice once it has one, as a radio group does. A multiple group
32375
+ releases a pressed item either way. */
32376
+ "prop:allowEmptySelection"?: (HelixHeadlessToggleGroup["allowEmptySelection"]) | undefined;
31966
32377
  /** Where the group's label sits. `start` puts it on the track's line.
31967
32378
 
31968
32379
  Absent is above, which is what a field looks like and what almost every
@@ -32679,6 +33090,14 @@ The shape is `Carousel`'s, which is the nearest thing in the library: a
32679
33090
  "next-label"?: (HelixHeadlessTour["nextLabel"]) | undefined;
32680
33091
  /** Label for the control that goes on. */
32681
33092
  nextLabel?: (HelixHeadlessTour["nextLabel"]) | undefined;
33093
+ /** What a press outside the current stop and its target does while the tour
33094
+ runs. Unset, nothing: the page stays usable. `close` ends the tour, as
33095
+ Skip does, and `block` refuses the press. */
33096
+ "outside-press"?: (HelixHeadlessTour["outsidePress"]) | undefined;
33097
+ /** What a press outside the current stop and its target does while the tour
33098
+ runs. Unset, nothing: the page stays usable. `close` ends the tour, as
33099
+ Skip does, and `block` refuses the press. */
33100
+ outsidePress?: (HelixHeadlessTour["outsidePress"]) | undefined;
32682
33101
  /** Draws each stop's place in the run in its panel, as well as saying it. */
32683
33102
  progress?: (HelixHeadlessTour["progress"]) | undefined;
32684
33103
  /** Each stop's place in the run, with `{index}` and `{count}` filled in and
@@ -32769,6 +33188,14 @@ The shape is `Carousel`'s, which is the nearest thing in the library: a
32769
33188
  "attr:next-label"?: (HelixHeadlessTour["nextLabel"]) | undefined;
32770
33189
  /** Label for the control that goes on. */
32771
33190
  "prop:nextLabel"?: (HelixHeadlessTour["nextLabel"]) | undefined;
33191
+ /** What a press outside the current stop and its target does while the tour
33192
+ runs. Unset, nothing: the page stays usable. `close` ends the tour, as
33193
+ Skip does, and `block` refuses the press. */
33194
+ "attr:outside-press"?: (HelixHeadlessTour["outsidePress"]) | undefined;
33195
+ /** What a press outside the current stop and its target does while the tour
33196
+ runs. Unset, nothing: the page stays usable. `close` ends the tour, as
33197
+ Skip does, and `block` refuses the press. */
33198
+ "prop:outsidePress"?: (HelixHeadlessTour["outsidePress"]) | undefined;
32772
33199
  /** Draws each stop's place in the run in its panel, as well as saying it. */
32773
33200
  "prop:progress"?: (HelixHeadlessTour["progress"]) | undefined;
32774
33201
  /** Each stop's place in the run, with `{index}` and `{count}` filled in and
@@ -32887,6 +33314,9 @@ heading. */
32887
33314
  Reflected, because the styled tier places a dialog and a floating panel by
32888
33315
  it, and unset at rest, so no default is written onto the host. */
32889
33316
  type?: (HelixHeadlessTourStop["type"]) | undefined;
33317
+ /** Run as the tour reaches the stop, before it is shown: see the description
33318
+ above. A function, so it is set from script and has no attribute. */
33319
+ effect?: (HelixHeadlessTourStop["effect"]) | undefined;
32890
33320
 
32891
33321
  /** Fired when one of the stop's controls is pressed, to move the tour. */
32892
33322
  "onhelix-tour-ask"?: ((
@@ -32939,6 +33369,9 @@ heading. */
32939
33369
  Reflected, because the styled tier places a dialog and a floating panel by
32940
33370
  it, and unset at rest, so no default is written onto the host. */
32941
33371
  "prop:type"?: (HelixHeadlessTourStop["type"]) | undefined;
33372
+ /** Run as the tour reaches the stop, before it is shown: see the description
33373
+ above. A function, so it is set from script and has no attribute. */
33374
+ "prop:effect"?: (HelixHeadlessTourStop["effect"]) | undefined;
32942
33375
  /** Fired when one of the stop's controls is pressed, to move the tour. */
32943
33376
  "on:helix-tour-ask"?: ((
32944
33377
  e: HelixHeadlessTourStopHelixTourAskElementEvent,
@@ -35558,12 +35991,21 @@ export type CustomElements = {
35558
35991
  *
35559
35992
  * **Set `fold-below` to fold the middle region on a narrow screen.** Below that
35560
35993
  * many pixels of the bar's own width, the middle region is hidden behind a
35561
- * toggle at the end of the bar, named by `menu-label`. The toggle says whether
35562
- * the region is open with `aria-expanded`, and the region opens below the row.
35563
- * Escape closes it and puts focus back on the toggle. The custom state
35564
- * `folded` is on the host while the bar is that narrow, and `open` while the
35565
- * folded region is open. A server serves the bar unfolded, and the browser
35566
- * folds it once it has measured it.
35994
+ * toggle at the end of the bar, named by `menu-label`, or at its start with
35995
+ * `toggle-placement="start"`. The toggle says whether the region is open with
35996
+ * `aria-expanded`, and the region opens below the row. The region follows the
35997
+ * toggle's region in focus order, so Tab from the toggle at the end goes into
35998
+ * the open region. The custom state `folded` is on the host while the bar is
35999
+ * that narrow, and `open` while the folded region is open. A server serves the
36000
+ * bar unfolded, and the browser folds it once it has measured it.
36001
+ *
36002
+ * **`open` says whether the folded region is open, and setting it opens or
36003
+ * closes the region.** `requestOpen(true)` and `requestOpen(false)` do the same
36004
+ * and send `helix-before-open` or `helix-before-close` first, which you can
36005
+ * cancel, and `toggleOpen()` asks for the opposite. `toggle` follows every
36006
+ * change. The region closes on Escape, which puts focus back on the toggle,
36007
+ * when focus moves to something outside the header, and on a press outside
36008
+ * it. A bar that widens past `fold-below` closes its region.
35567
36009
  *
35568
36010
  * The host is the page's `banner` landmark. Placed inside `main`, `article`,
35569
36011
  * `aside`, `nav` or `section`, it is a plain box instead, as a native
@@ -35598,6 +36040,24 @@ export type CustomElements = {
35598
36040
  * - `menu-label`/`menuLabel`: The name of the toggle that opens a folded middle region.
35599
36041
  * - `scroller`: The id of the element whose scrolling lifts the bar, for an app shell that
35600
36042
  * scrolls a container instead of the window. Unset is the window.
36043
+ * - `toggle-placement`/`togglePlacement`: Where the toggle that opens a folded middle region sits: at the end of the
36044
+ * bar, after the trailing content, or with `start`, before the leading
36045
+ * content.
36046
+ *
36047
+ * Optional, so the resting bar writes no attribute onto the host.
36048
+ * - `default-open`/`defaultOpen`: Whether the element starts open. Ignored once `open` is written.
36049
+ * - `open`: Whether the element is open.
36050
+ *
36051
+ * One property, not two, so `dialog.open` answers the question anyone
36052
+ * asking it meant. Writing always applies; `<helix-dialog open>` is the
36053
+ * same statement in markup.
36054
+ *
36055
+ * **Not reflected, and that is required rather than tidy.** Reflection
36056
+ * writes the resolved state back as an attribute, so an element that opened
36057
+ * itself would put `open` on its own host: cloned, serialized for
36058
+ * hydration, or diffed by a framework, it comes back holding whatever the
36059
+ * last reader did rather than what the author wrote. `:state(open)` carries
36060
+ * the resolved state for stylesheets, which is what the mirror is for.
35601
36061
  * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
35602
36062
  *
35603
36063
  * **Named `whenSettled` because `settled` is taken four times over**, by
@@ -35623,7 +36083,10 @@ export type CustomElements = {
35623
36083
  *
35624
36084
  * Events that will be emitted by the component.
35625
36085
  *
36086
+ * - `helix-before-close`: The folded region is about to close. Cancelable: cancel it to keep it open.
36087
+ * - `helix-before-open`: The folded region is about to open. Cancelable: cancel it to keep it closed.
35626
36088
  * - `helix-scrolled`: Fired when the page crosses the scroll threshold, with the new state. A custom state cannot be observed the way an attribute can, so listen for this event to follow it. The event uses the header's own threshold and hysteresis, so you do not need a second scroll listener.
36089
+ * - `toggle`: The folded region opened or closed. The event carries `newState` and `oldState`.
35627
36090
  *
35628
36091
  * ## Slots
35629
36092
  *
@@ -35634,6 +36097,20 @@ export type CustomElements = {
35634
36097
  * - `menu-icon`: Replaces the glyph inside the toggle that opens a folded middle region.
35635
36098
  * - `start`: Leading content, usually a wordmark.
35636
36099
  *
36100
+ * ## Methods
36101
+ *
36102
+ * Methods that can be called to access component functionality.
36103
+ *
36104
+ * - `requestOpen(next: boolean) => boolean`: Requests that the element open or close, and returns whether the change
36105
+ * was applied.
36106
+ *
36107
+ * Announces before it acts, so `preventDefault()` on the `helix-before-open` or
36108
+ * `helix-before-close` is a refusal and nothing moves. Nobody refusing means the
36109
+ * element opens or closes itself, whether or not a consumer declared
36110
+ * `open`: a declared property is a seed and a correction, and a consumer
36111
+ * who wants the decision for themselves refuses it and assigns their own.
36112
+ * - `toggleOpen() => boolean`: Requests the opposite of the current state.
36113
+ *
35637
36114
  * ## CSS Parts
35638
36115
  *
35639
36116
  * Custom selectors for styling elements within the component.
@@ -37018,11 +37495,15 @@ export type CustomElements = {
37018
37495
  * appearance and size.
37019
37496
  *
37020
37497
  * **Buttons that stay pressed.** With `selection-mode`, each button with a
37021
- * `value` is a toggle button: a press presses or releases it, and it says so
37022
- * with `aria-pressed`. `single` keeps one pressed at a time, and a press on the
37023
- * pressed one releases it. `multiple` lets any number be pressed. `value` is
37024
- * the pressed values, comma separated. A press sends a cancelable
37025
- * `helix-before-change` with the value it would leave, then `change`.
37498
+ * `value` is a toggle button: a press presses or releases it. `multiple` lets
37499
+ * any number be pressed, and each button says so with `aria-pressed`. `single`
37500
+ * keeps one pressed at a time: the group is a `radiogroup` and each button a
37501
+ * `radio` that says so with `aria-checked`, as React Aria's toggle button
37502
+ * group is. A press on the pressed one releases it, unless
37503
+ * `disallow-empty-selection` keeps one pressed. `value` is the pressed values,
37504
+ * comma separated. A press sends a cancelable `helix-before-change` with the
37505
+ * value it would leave, then `change`. A pressed Helix button has
37506
+ * `:state(pressed)` on its own element.
37026
37507
  *
37027
37508
  * The pressed state is written on the control inside each button's shadow
37028
37509
  * root, so the markup you rendered is never changed and a framework hydrating
@@ -37050,15 +37531,18 @@ export type CustomElements = {
37050
37531
  * | Space, Enter | Presses or releases the focused button. |
37051
37532
  *
37052
37533
  * Left and Right swap on a right-to-left page, and a disabled button is
37053
- * passed over. In a selection mode the group is a `toolbar`, with
37534
+ * passed over. Under `multiple` the group is a `toolbar`, with
37054
37535
  * `aria-orientation` under `orientation="vertical"`. Inside a toolbar it stays
37055
37536
  * a named `group`, and the toolbar's own arrow keys walk its buttons, so a
37056
- * reader meets one toolbar.
37537
+ * reader meets one toolbar. Under `single` it is a `radiogroup` either way.
37057
37538
  *
37058
37539
  * ## Attributes & Properties
37059
37540
  *
37060
37541
  * Component attributes and properties that can be applied to the element or by using JavaScript.
37061
37542
  *
37543
+ * - `disallow-empty-selection`/`disallowEmptySelection`: Keeps at least one button pressed once one is, as React Aria's
37544
+ * `disallowEmptySelection`: a press that would leave none pressed is
37545
+ * refused.
37062
37546
  * - `label`: The group's name, read by screen readers.
37063
37547
  *
37064
37548
  * On the host through internals, so an author's `aria-label` still overrides
@@ -37426,6 +37910,7 @@ export type CustomElements = {
37426
37910
  * These can be used to apply styling when a component is in a given state.
37427
37911
  *
37428
37912
  * - `pending`: The button is pending: `pending` is set.
37913
+ * - `pressed`: A Button Group in a selection mode has this button pressed.
37429
37914
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
37430
37915
  */
37431
37916
  "helix-headless-button": Partial<
@@ -41607,6 +42092,7 @@ export type CustomElements = {
41607
42092
  * - `copied`: The moment after a successful copy, while `copied-label` names the button.
41608
42093
  * - `failed`: The moment after a press that put nothing on the clipboard, while `error-label` names the button.
41609
42094
  * - `pending`: The button is pending: `pending` is set.
42095
+ * - `pressed`: A Button Group in a selection mode has this button pressed.
41610
42096
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
41611
42097
  */
41612
42098
  "helix-headless-copy-button": Partial<
@@ -42109,17 +42595,24 @@ export type CustomElements = {
42109
42595
  * gives a picker and locale formatting but allows almost no styling, so the
42110
42596
  * field is a text field. Typing sends `input` on each keystroke and `change`
42111
42597
  * when you leave the field, as a text field does. A date picked from the
42112
- * calendar sends both.
42598
+ * calendar sends both. The field reads ISO, `2026-08-04`, and a date written
42599
+ * in the order, the digits, and the month names of `locale`, `8/4/2026` or
42600
+ * `Aug 4, 2026` in `en-US` and `4.8.2026` in `de-DE`, which becomes the value
42601
+ * as you leave the field.
42113
42602
  *
42114
42603
  * The trigger and ArrowDown open the calendar with focus on the selected day,
42115
42604
  * Tab moves between the calendar's controls without leaving it, and Escape
42116
42605
  * closes it and returns focus to the field. A press into the field opens the
42117
42606
  * calendar too. Tab into the field opens nothing, and Tab out of the field
42118
- * closes the calendar.
42607
+ * closes the calendar. The text field is a `combobox` with
42608
+ * `aria-haspopup="dialog"`, `aria-expanded`, and `aria-controls`, as in the
42609
+ * APG date picker combobox, since Down opens the calendar from it.
42119
42610
  *
42120
42611
  * With `segmented`, the field is a row of segments in place of the text: a
42121
42612
  * month, a day and a year in the order the locale writes them, each set with
42122
- * digits or the arrow keys. Alt+Down opens the calendar from a segment.
42613
+ * digits or the arrow keys. Alt+Down opens the calendar from a segment. A
42614
+ * `range` is two rows with a dash between them, the start and the end, as
42615
+ * React Aria's DateRangePicker draws them, and `multiple` keeps the text.
42123
42616
  *
42124
42617
  * Text that is not a date gives the form an empty value, as a native date
42125
42618
  * field does, and `value` keeps the text so it can be corrected.
@@ -42149,27 +42642,39 @@ export type CustomElements = {
42149
42642
  *
42150
42643
  * Component attributes and properties that can be applied to the element or by using JavaScript.
42151
42644
  *
42152
- * - `autocomplete`: What the browser may autofill here, as one of the platform's own tokens.
42645
+ * - `autocomplete`: What the browser may autofill here, as one of the platform's own tokens,
42646
+ * such as `bday`.
42153
42647
  *
42154
42648
  * Empty leaves the attribute off, which is the browser's default and is what
42155
42649
  * lets autofill work at all: hardcoding `off` here means a birthday or a
42156
- * postal code can never be filled in for a reader.
42157
- * - `calendar`: The calendar the written date and the calendar's days are in: `gregory`,
42158
- * `buddhist`, `japanese`, `roc`, or `iso8601`.
42159
- *
42160
- * Absent is the locale's own where it is one of the five, and `gregory` for
42161
- * every other, as Date Picker's `calendar` is. The value is `YYYY-MM-DD` in
42162
- * every calendar, and a focused field is ISO in every calendar. In
42163
- * `segmented`, the segments are the Gregorian day, month, and year, in the
42164
- * order the locale writes them, or ISO order for `iso8601`.
42650
+ * postal code can never be filled in for a reader. With `segmented`, a
42651
+ * hidden native date input carries it, since no browser fills the segments.
42652
+ * - `calendar`: The calendar the written date, the segments, and the calendar's days are
42653
+ * in: `gregory`, `buddhist`, `japanese`, `roc`, or `iso8601`, or a calendar
42654
+ * with months of its own that Date Picker's `calendar` names, such as
42655
+ * `persian`, `hebrew`, `islamic-umalqura`, `ethiopic`, or `chinese`.
42656
+ *
42657
+ * Absent is the locale's own where its months are the Gregorian months, and
42658
+ * `gregory` for every other, as Date Picker's `calendar` is. The value is
42659
+ * `YYYY-MM-DD` in every calendar, and a focused text field is ISO in every
42660
+ * calendar. In `segmented`, the segments are the day, month, and year as
42661
+ * the calendar counts them, in the order the locale writes them: Mehr 14,
42662
+ * 1405 is month 7 and day 14 of 1405 under `persian`. Under the five with
42663
+ * Gregorian months they are the Gregorian day, month, and year, or ISO order
42664
+ * for `iso8601`.
42165
42665
  * - `calendar-label`/`calendarLabel`: The name of the calendar's grid of days, read by screen readers.
42666
+ * - `clearable`: Whether the field shows a button that empties it, as Input's `clearable`
42667
+ * does. Shown only while the field holds something to clear and is neither
42668
+ * disabled nor read-only.
42669
+ * - `clear-label`/`clearLabel`: The accessible name of the clear button, which shows only an icon.
42166
42670
  * - `date-style`/`dateStyle`: How a date is written in the field: `short` through `full`, or ISO.
42167
42671
  *
42168
42672
  * **The field renders when it is idle and holds the value when it is being
42169
42673
  * edited.** A written date is a rendering, and a document being edited must
42170
42674
  * not be a rendering of something else: `Intl.DateTimeFormat` formats and does
42171
- * not parse, so `4 August 2026` cannot be typed back, and writing a parser per
42172
- * locale is how a field ends up rejecting what it just displayed.
42675
+ * not parse, so a rendering such as `Tuesday, August 4, 2026` is no text to
42676
+ * edit. The field does read a date typed in the locale's order and digits as
42677
+ * you leave it, which covers what a reader types.
42173
42678
  *
42174
42679
  * The way out is not to choose between the two but to separate them in time.
42175
42680
  * Idle, the field shows `4 August 2026`, which is what a date is for reading.
@@ -42237,6 +42742,9 @@ export type CustomElements = {
42237
42742
  *
42238
42743
  * **The name goes in**, so a row of them is heard as which one each
42239
42744
  * removes rather than as "Remove" said once per date.
42745
+ * - `selection-label`/`selectionLabel`: What a screen reader hears about the dates chosen in the calendar, with
42746
+ * `{kind}`, `{start}`, `{end}` and `{count}` filled in as Date Picker's
42747
+ * `selection-label` says.
42240
42748
  * - `step`: How far apart the selectable dates are, in days.
42241
42749
  *
42242
42750
  * `<input type="date" step>`'s own unit, handed to the calendar this renders
@@ -42244,8 +42752,13 @@ export type CustomElements = {
42244
42752
  * where there is one and from 1 January 1970 where there is not, which is the
42245
42753
  * platform's base.
42246
42754
  * - `step-mismatch-message`/`stepMismatchMessage`: The message shown when a date is not on `step`.
42755
+ * - `time-zone`/`timeZone`: The time zone today is read in, such as `America/New_York`, handed to the
42756
+ * calendar: the day marked today, and the month an empty field opens on.
42757
+ * Empty is the reader's own. Dates are plain `YYYY-MM-DD` and carry no zone.
42247
42758
  * - `trigger-label`/`triggerLabel`: The name of the button that opens the calendar, read by screen readers.
42248
42759
  * - `unavailable-message`/`unavailableMessage`: The message shown when `disable-dates` or `disable-days` bars a date.
42760
+ * - `unreadable-message`/`unreadableMessage`: The message for text that is no date, where `bad-input-message` is not
42761
+ * set. `{mode}` is `single`, `range`, or `multiple`.
42249
42762
  * - `year-view-label`/`yearViewLabel`: The name of the calendar's heading where it shows a page of years, with
42250
42763
  * `{heading}` filled in.
42251
42764
  * - `empty-message`/`emptyMessage`: What a row of segments reports when the field is required and every
@@ -42256,6 +42769,10 @@ export type CustomElements = {
42256
42769
  * - `incomplete-message`/`incompleteMessage`: What a row of segments reports while some segments are set and others
42257
42770
  * are not, where `bad-input-message` is not set. `{kind}` is `date` or
42258
42771
  * `time`.
42772
+ * - `range-end-label`/`rangeEndLabel`: What a screen reader hears before the segments of a range's second date
42773
+ * or time, after each segment's own name.
42774
+ * - `range-start-label`/`rangeStartLabel`: What a screen reader hears before the segments of a range's first date
42775
+ * or time, after each segment's own name: "month, Start, Stay".
42259
42776
  * - `segmented`: Whether the field is a row of segments, one for each part of the date or
42260
42777
  * time, in place of a line of text.
42261
42778
  *
@@ -42416,6 +42933,7 @@ export type CustomElements = {
42416
42933
  * - `helix-before-change`: Fired before the date changes. Cancelable: call `preventDefault()` to keep the current date.
42417
42934
  * - `helix-before-close`: Fired before the calendar closes. Cancelable: call `preventDefault()` to keep it open.
42418
42935
  * - `helix-before-open`: Fired before the calendar opens. Cancelable: call `preventDefault()` to keep it closed.
42936
+ * - `helix-clear`: Fired after the clear button has emptied the field, after `input` and `change`.
42419
42937
  * - `input`: Fired after the value changes.
42420
42938
  * - `toggle`: Fired when the calendar opens or closes, with `newState` and `oldState`.
42421
42939
  *
@@ -42423,6 +42941,7 @@ export type CustomElements = {
42423
42941
  *
42424
42942
  * Areas where markup can be added to the component.
42425
42943
  *
42944
+ * - `clear-icon`: Replaces the cross on the clear button, under `clearable`.
42426
42945
  * - `end`: Content after the date, before the trigger, such as a clear button.
42427
42946
  * - `feedback`: The error message under the field.
42428
42947
  * - `hint`: The help text under the field.
@@ -42498,6 +43017,7 @@ export type CustomElements = {
42498
43017
  *
42499
43018
  * Custom selectors for styling elements within the component.
42500
43019
  *
43020
+ * - `clear`: The button that empties the field, under `clearable`, while it holds a date.
42501
43021
  * - `control`: The text input.
42502
43022
  * - `date`: One held date, as a tag, in `multiple`.
42503
43023
  * - `date-cell`: The tag's grid cell, which a tag draws only inside a tag group.
@@ -42539,8 +43059,10 @@ export type CustomElements = {
42539
43059
  * - `picker-periods`: The grid of months or years.
42540
43060
  * - `picker-previous`: The control that moves to the previous month.
42541
43061
  * - `picker-previous-mark`: The icon on the previous month control.
43062
+ * - `picker-selection`: The chosen date or range in words, which screen readers hear when it changes. Drawn for screen readers only.
42542
43063
  * - `picker-week`: One row of days.
42543
43064
  * - `picker-weekday`: A column header naming a day of the week.
43065
+ * - `range-separator`: The dash between a range's two rows of segments, in `segmented`, beside `literal`.
42544
43066
  * - `rest`: The count of dates beyond the ones shown. It is a `<button>` with `expandable` and a `<span>` without it.
42545
43067
  * - `segment`: One part of the date, a year, a month or a day, in `segmented`.
42546
43068
  * - `segment-placeholder`: A segment with nothing in it yet. Applied with `segment`.
@@ -42554,6 +43076,7 @@ export type CustomElements = {
42554
43076
  *
42555
43077
  * These can be used to apply styling when a component is in a given state.
42556
43078
  *
43079
+ * - `blank`: The field holds no date.
42557
43080
  * - `invalid`: The field has an error to show, from the browser's validation or from your `feedback`.
42558
43081
  * - `open`: The calendar is open.
42559
43082
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
@@ -42573,9 +43096,11 @@ export type CustomElements = {
42573
43096
  * **Dates are `YYYY-MM-DD` strings, and every calculation is in UTC**, because
42574
43097
  * a local-time `Date` shifts across a time zone or daylight-saving boundary.
42575
43098
  *
42576
- * **The days are the Gregorian calendar's**, written in `calendar`: the
42577
- * locale's own where its months are the Gregorian months, as `th-TH` writes
42578
- * 2569 for 2026, and `gregory` where they are not, as for `fa-IR`.
43099
+ * **The months are the ones `calendar` counts**: the Gregorian months for the
43100
+ * locale's own calendar where its months are the Gregorian months, as `th-TH`
43101
+ * writes 2569 for 2026, and `gregory` where they are not, as for `fa-IR`
43102
+ * with no `calendar`. Name a calendar with months of its own, such as
43103
+ * `persian`, and every view counts its days, months, and years from `Intl`.
42579
43104
  *
42580
43105
  * `month` sets which month the grid shows, separately from `value`, so paging
42581
43106
  * selects nothing and you can control the view. When unset, it follows the
@@ -42583,7 +43108,14 @@ export type CustomElements = {
42583
43108
  *
42584
43109
  * `mode` sets how many dates are held. Unset holds one, `range` holds two and
42585
43110
  * marks the dates between them, and `multiple` toggles each date. All three
42586
- * read and write the same comma-separated `value`.
43111
+ * read and write the same comma-separated `value`. With a `mode`, the grid
43112
+ * carries `aria-multiselectable`. While a range holds one end, the grid draws
43113
+ * the range to the day under the pointer or the focus, marking those cells
43114
+ * `data-range-preview`.
43115
+ *
43116
+ * The chosen date, range, or count of dates is the grid's description, in a
43117
+ * region screen readers announce when it changes, as React Aria's calendars
43118
+ * do. `selection-label` words it.
42587
43119
  *
42588
43120
  * `max-view` makes the heading a button that steps back to the months of the
42589
43121
  * year, and with `year` to a page of years, as Zag's date picker does. The
@@ -42618,14 +43150,16 @@ export type CustomElements = {
42618
43150
  * `ja-JP-u-ca-japanese`, and `gregory` for every other, such as `persian`
42619
43151
  * for `fa-IR`.
42620
43152
  *
42621
- * `persian`, `hebrew`, `islamic-umalqura`, `islamic-civil`, `ethiopic`,
42622
- * `coptic`, and `indian` draw a calendar with months of its own, as React
42623
- * Aria's calendars do: each grid is one of that calendar's months, the
42624
- * Hebrew leap month and Ethiopia's five-day thirteenth month included, and
42625
- * Previous, Next and the page keys move by those months. `month` and
43153
+ * `persian`, `hebrew`, `islamic`, `islamic-umalqura`, `islamic-civil`,
43154
+ * `islamic-tbla`, `islamic-rgsa`, `ethiopic`, `ethioaa`, `coptic`,
43155
+ * `indian`, `chinese`, and `dangi` draw a calendar with months of its own,
43156
+ * as React Aria's calendars do: each grid is one of that calendar's months,
43157
+ * the Hebrew and Chinese leap months and Ethiopia's five-day thirteenth
43158
+ * month included, and Previous, Next and the page keys move by those
43159
+ * months. With `max-view`, the months view shows that calendar's year, of
43160
+ * twelve or thirteen months, and the years view its years. `month` and
42626
43161
  * `helix-navigate` then name a month by its first day, `YYYY-MM-DD`. The
42627
- * heading stays text, as the months and years views are drawn in Gregorian
42628
- * months only. The value is `YYYY-MM-DD` in every calendar.
43162
+ * value is `YYYY-MM-DD` in every calendar.
42629
43163
  * - `default-month`/`defaultMonth`: The month to open on when `month` is not set.
42630
43164
  * - `disable-dates`/`disableDates`: Dates that cannot be chosen, as `YYYY-MM-DD`, separated by commas or
42631
43165
  * spaces.
@@ -42688,6 +43222,11 @@ export type CustomElements = {
42688
43222
  * value and stays reachable, which is what a form showing a value somebody
42689
43223
  * else set needs.
42690
43224
  * - `required`: Stops the form from submitting while no date is chosen.
43225
+ * - `selection-label`/`selectionLabel`: What a screen reader hears about the chosen dates: the grid's
43226
+ * description, said again whenever the dates change. `{kind}` is `date`,
43227
+ * `start` while a range holds one end, `range`, or `dates` for `multiple`.
43228
+ * `{start}` and `{end}` are dates written in `locale`, and `{count}` is how
43229
+ * many dates are chosen.
42691
43230
  * - `step`: How far apart the selectable dates are, in days.
42692
43231
  *
42693
43232
  * `<input type="date" step>`'s own unit, counted from `min` where there is
@@ -42842,6 +43381,13 @@ export type CustomElements = {
42842
43381
  * Date Input calls this when its trigger opens the calendar, which is where
42843
43382
  * the APG date picker dialog puts focus. The host is not focusable, so a
42844
43383
  * plain `focus()` on it did nothing and focus stayed on the trigger.
43384
+ * - `showChosen() => void`: Shows the days again, on the month of the chosen date, with the tab stop
43385
+ * on that date, forgetting the month and the day the reader browsed to.
43386
+ *
43387
+ * Date Input calls it each time its panel opens, which is where the APG
43388
+ * date picker dialog puts focus. Measured before this: from August 4, two
43389
+ * presses of Page Down, Escape, and Down again opened on October 4.
43390
+ * A `month` you set stays until the reader pages away from it.
42845
43391
  * - `requestValue(next: string) => boolean`: Refuses every change while read-only. See `readOnly`.
42846
43392
  * - `formResetCallback() => void`: Returns the control to its `defaultValue`, or to its `value` attribute
42847
43393
  * where there is no `default-value`.
@@ -42905,7 +43451,7 @@ export type CustomElements = {
42905
43451
  * Custom selectors for styling elements within the component.
42906
43452
  *
42907
43453
  * - `cell`: One column of a week row. A range is painted on the cells.
42908
- * - `cell-range-end`: The cell of a range's last day, beside `cell`.
43454
+ * - `cell-range-end`: The cell of a range's last day, beside `cell`, or of the day a waiting range is drawn to.
42909
43455
  * - `cell-range-middle`: A cell between a range's ends, beside `cell`.
42910
43456
  * - `cell-range-start`: The cell of a range's first day, beside `cell`.
42911
43457
  * - `day`: The shape inside a cell. A single chosen date is painted on it.
@@ -42931,6 +43477,7 @@ export type CustomElements = {
42931
43477
  * - `periods`: The grid of months or years.
42932
43478
  * - `previous`: The control that moves to the previous month.
42933
43479
  * - `previous-mark`: The glyph on the previous month control, where none is slotted.
43480
+ * - `selection`: The chosen date or range in words, which screen readers hear when it changes. Drawn for screen readers only.
42934
43481
  * - `week`: One row of days.
42935
43482
  * - `weekday`: A column header naming a day of the week. It shows the short name and says the full one.
42936
43483
  *
@@ -42938,7 +43485,11 @@ export type CustomElements = {
42938
43485
  *
42939
43486
  * These can be used to apply styling when a component is in a given state.
42940
43487
  *
42941
- * - `invalid`: While `invalid` is set or `feedback` says what is wrong.
43488
+ * - `blank`: While no date is chosen.
43489
+ * - `invalid`: While `invalid` is set, `feedback` says what is wrong, the picker holds a date outside `min` and `max` or one it bars, or it is `required`, holds no date, and the reader has answered once or a form has refused it.
43490
+ * - `month-view`: While the months of a year are shown, where `max-view` is set.
43491
+ * - `range-pending`: While a `range` holds its first end and waits for the second.
43492
+ * - `year-view`: While a page of years is shown, where `max-view` is `year`.
42942
43493
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
42943
43494
  */
42944
43495
  "helix-headless-date-picker": Partial<
@@ -45552,20 +46103,22 @@ export type CustomElements = {
45552
46103
  *
45553
46104
  * **A date is written in a calendar Date Picker draws**: the locale's own
45554
46105
  * where its months are the Gregorian months, as `th-TH` writes 2569 for 2026,
45555
- * and `gregory` where they are not, as for `fa-IR`. `calendar` picks one of
45556
- * the five.
46106
+ * and `gregory` where they are not, as for `fa-IR`. `calendar` picks any of
46107
+ * them, `persian` and `hebrew` included.
45557
46108
  *
45558
46109
  * ## Attributes & Properties
45559
46110
  *
45560
46111
  * Component attributes and properties that can be applied to the element or by using JavaScript.
45561
46112
  *
45562
46113
  * - `calendar`: The calendar a date is written in: `gregory`, `buddhist`, `japanese`,
45563
- * `roc`, or `iso8601`, the calendars Date Picker and Date Input draw.
45564
- *
45565
- * Absent is the locale's own where it is one of the five, such as
45566
- * `buddhist` for `th-TH`, and `gregory` for every other, such as `persian`
45567
- * for `fa-IR`, so a date written here reads as the same date a Date Picker
45568
- * beside it shows.
46114
+ * `roc`, or `iso8601`, or a calendar with months of its own, such as
46115
+ * `persian`, `hebrew`, `islamic-umalqura`, `ethiopic`, or `chinese`: every
46116
+ * calendar Date Picker and Date Input draw.
46117
+ *
46118
+ * Absent is the locale's own where its months are the Gregorian months,
46119
+ * such as `buddhist` for `th-TH`, and `gregory` for every other, such as
46120
+ * `persian` for `fa-IR`, so a date written here reads as the same date a
46121
+ * Date Picker beside it shows. Write `calendar="persian"` for Mehr 14, 1405.
45569
46122
  * - `date`: The timestamp, in any format `Date` can parse.
45570
46123
  *
45571
46124
  * An ISO string is what an API sends and what `<time datetime>` takes, so it
@@ -45584,6 +46137,9 @@ export type CustomElements = {
45584
46137
  * - `date-style`/`dateStyle`: The locale's own pattern for the date: `full`, `long`, `medium`, or
45585
46138
  * `short`. Set, it stands in for `weekday`, `day`, `month`, `year` and `era`.
45586
46139
  * - `day`: How the day of the month is written, where a date is shown.
46140
+ * - `day-period`/`dayPeriod`: Writes the part of the day in words, such as "in the morning" or "at
46141
+ * night", in its `long`, `short`, or `narrow` form, where `hour` is on a
46142
+ * twelve-hour clock.
45587
46143
  * - `elapsed`: Shows how long ago the timestamp was, in a compact form such as "3h", in
45588
46144
  * place of the date.
45589
46145
  *
@@ -45598,6 +46154,8 @@ export type CustomElements = {
45598
46154
  * Off by default, which draws the date as one run of text, as Shoelace and
45599
46155
  * Web Awesome do. An `elapsed` or `relative` reading is one phrase either
45600
46156
  * way.
46157
+ * - `fractional-second-digits`/`fractionalSecondDigits`: How many digits of a fraction of a second to write after `second`: 1, 2,
46158
+ * or 3, as in 09:41:07.250.
45601
46159
  * - `frozen`: Draws an `elapsed` or `relative` reading once and leaves it, where it
45602
46160
  * would otherwise move on as it goes stale.
45603
46161
  *
@@ -45635,7 +46193,9 @@ export type CustomElements = {
45635
46193
  * - `time-zone`/`timeZone`: The time zone to read the timestamp in.
45636
46194
  *
45637
46195
  * Empty is the runtime's own.
45638
- * - `time-zone-name`/`timeZoneName`: Shows the name of the time zone, in its `long` or `short` form.
46196
+ * - `time-zone-name`/`timeZoneName`: Shows the name of the time zone: `long` or `short`, as Pacific Daylight
46197
+ * Time or PDT, `longOffset` or `shortOffset`, as GMT-07:00 or GMT-7, or
46198
+ * `longGeneric` or `shortGeneric`, as Pacific Time or PT.
45639
46199
  * - `weekday`: How the weekday is written, where one is shown.
45640
46200
  * - `year`: How the year is written, where a date is shown.
45641
46201
  * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
@@ -45666,6 +46226,7 @@ export type CustomElements = {
45666
46226
  * - `day`: The day of the month, with `fields`.
45667
46227
  * - `day-period`: AM or PM, or the locale's word for the part of the day, with `fields`.
45668
46228
  * - `era`: The era, such as AD, with `fields` and `era`.
46229
+ * - `fractional-second`: The fraction of a second, with `fields` and `fractional-second-digits`.
45669
46230
  * - `hour`: The hour, with `fields`.
45670
46231
  * - `minute`: The minute, with `fields`.
45671
46232
  * - `month`: The month, with `fields`.
@@ -46632,6 +47193,7 @@ export type CustomElements = {
46632
47193
  * These can be used to apply styling when a component is in a given state.
46633
47194
  *
46634
47195
  * - `pending`: The button is pending: `pending` is set.
47196
+ * - `pressed`: A Button Group in a selection mode has this button pressed.
46635
47197
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
46636
47198
  */
46637
47199
  "helix-headless-icon-button": Partial<
@@ -47518,7 +48080,8 @@ export type CustomElements = {
47518
48080
  * Each item is a `group` with the role description `slide`, named by its
47519
48081
  * `label` or, without one, by its place in the set, such as "2 of 5", as the
47520
48082
  * APG carousel pattern names a slide. The lightbox supplies both words, so they
47521
- * are translated on the lightbox.
48083
+ * are translated on the lightbox. A `description`, while there is one,
48084
+ * describes the group, so a screen reader says it with the name.
47522
48085
  *
47523
48086
  * An item that is not current is hidden and stays in the DOM, as a `TabPanel`
47524
48087
  * does. Crawlers can read it, it is in the server-rendered markup, and an
@@ -47602,9 +48165,10 @@ export type CustomElements = {
47602
48165
  * buttons that send `--previous`, `--next` and `--close`.
47603
48166
  *
47604
48167
  * **Set `max-zoom` to let a reader zoom into the shown item**, such as `3`.
47605
- * Two fingers pinch it, a double click or a double tap zooms all the way in
47606
- * about the point pressed and back out, and once zoomed one pointer drags it
47607
- * about. `+` and `-` zoom in and out from the keyboard, and `0` puts it back.
48168
+ * Two fingers pinch it, and so does a trackpad pinch or the wheel with Ctrl
48169
+ * held, about the point under the pointer. A double click or a double tap
48170
+ * zooms all the way in about the point pressed and back out, and once zoomed
48171
+ * one pointer drags it about and the wheel moves it. `+` and `-` zoom in and out from the keyboard, and `0` puts it back.
47608
48172
  * The scale and the offset are on the `viewport` part as `--lightbox-zoom`,
47609
48173
  * `--lightbox-pan-x` and `--lightbox-pan-y`, written only while zoomed, and a
47610
48174
  * swipe moves to the next item only while the item is at its own size. With
@@ -47825,6 +48389,8 @@ export type CustomElements = {
47825
48389
  *
47826
48390
  * These can be used to apply styling when a component is in a given state.
47827
48391
  *
48392
+ * - `entering`: From the moment the viewer opens until its entrance has finished.
48393
+ * - `exiting`: From the moment the viewer closes until its exit has finished.
47828
48394
  * - `fullscreen`: While the viewer fills the screen.
47829
48395
  * - `idle`: The user has been still long enough for the controls to hide.
47830
48396
  * - `open`: While the viewer is open.
@@ -51418,6 +51984,7 @@ export type CustomElements = {
51418
51984
  * - `time-day`: Format Date's `day`, forwarded for a time drawn as fields. An elapsed time draws none.
51419
51985
  * - `time-day-period`: Format Date's `day-period`, forwarded for a time drawn as fields. An elapsed time draws none.
51420
51986
  * - `time-era`: Format Date's `era`, forwarded for a time drawn as fields. An elapsed time draws none.
51987
+ * - `time-fractional-second`: Format Date's `fractional-second`, forwarded for a time drawn as fields. An elapsed time draws none.
51421
51988
  * - `time-hour`: Format Date's `hour`, forwarded for a time drawn as fields. An elapsed time draws none.
51422
51989
  * - `time-minute`: Format Date's `minute`, forwarded for a time drawn as fields. An elapsed time draws none.
51423
51990
  * - `time-month`: Format Date's `month`, forwarded for a time drawn as fields. An elapsed time draws none.
@@ -55795,6 +56362,10 @@ export type CustomElements = {
55795
56362
  * `min-steps-between-thumbs` keeps them that many steps apart, and the readout
55796
56363
  * joins the two as `range-text` writes them.
55797
56364
  *
56365
+ * A press on a range's track takes the nearest thumb to the point pressed,
56366
+ * and moving the pointer drags it, as React Aria's and Web Awesome's sliders
56367
+ * do. The thumb takes focus, and `change` is sent as the press ends.
56368
+ *
55798
56369
  * `origin` sets where a single thumb's fill starts: at `min`, at the middle of
55799
56370
  * the track, or at `max`. A balance or an offset from zero fills from the
55800
56371
  * middle, as Zag's slider `origin` does. The fill's ends are published as
@@ -55819,7 +56390,7 @@ export type CustomElements = {
55819
56390
  * |---|---|
55820
56391
  * | Right, Up | Moves the thumb up by `step`. |
55821
56392
  * | Left, Down | Moves the thumb down by `step`. |
55822
- * | Page Up, Page Down | Moves the thumb by a larger step. |
56393
+ * | Page Up, Page Down | Moves the thumb by `page-step`, or by the platform's larger step where it is not set. |
55823
56394
  * | Home, End | Moves the thumb to its lowest or highest value. |
55824
56395
  *
55825
56396
  * Under `readonly` none of these move the thumb, and Tab still reaches it.
@@ -55880,6 +56451,9 @@ export type CustomElements = {
55880
56451
  * - `origin`: Where a single thumb's fill starts: `start` at `min`, `center` at the
55881
56452
  * middle of the track, or `end` at `max`. Absent is `start`. A range fills
55882
56453
  * between its thumbs and ignores it.
56454
+ * - `page-step`/`pageStep`: How far Page Up and Page Down move a thumb, in the slider's own units, as
56455
+ * React Aria's `pageSize` and Zag's `largeStep` do. Absent leaves the keys
56456
+ * to the platform, which moves a tenth of the track.
55883
56457
  * - `range`: Adds a second thumb, so the value is a pair.
55884
56458
  *
55885
56459
  * The pair is one string, `"10,50"`, which is what `value` and
@@ -56112,6 +56686,8 @@ export type CustomElements = {
56112
56686
  *
56113
56687
  * These can be used to apply styling when a component is in a given state.
56114
56688
  *
56689
+ * - `dragging`: A thumb is being dragged, by its thumb or from a press on the track.
56690
+ * - `focus-visible`: A thumb has focus that the keyboard brought, where the browser draws a focus ring.
56115
56691
  * - `invalid`: The slider has an error to show, from the browser's validation or from your `feedback`.
56116
56692
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
56117
56693
  */
@@ -57275,6 +57851,10 @@ export type CustomElements = {
57275
57851
  * region. The current stage's button carries `aria-current="step"`, and only
57276
57852
  * the button, so the state is said once, on the control.
57277
57853
  *
57854
+ * A stage's `content`, while it holds anything, is a group named by the
57855
+ * stage's name, so a screen reader moving into it hears which stage it
57856
+ * belongs to.
57857
+ *
57278
57858
  * ## Attributes & Properties
57279
57859
  *
57280
57860
  * Component attributes and properties that can be applied to the element or by using JavaScript.
@@ -58321,10 +58901,18 @@ export type CustomElements = {
58321
58901
  * the tab list lands on the panel's first link or control where there is one,
58322
58902
  * and on the panel itself where there is none.
58323
58903
  *
58904
+ * **Set `lazy` for a panel that is expensive to draw.** Its content waits in a
58905
+ * `<template>` inside it, and goes into the panel the first time the panel is
58906
+ * shown, so it costs nothing until a reader opens that tab. Once in, it stays.
58907
+ * The panel sends `helix-load` at the same moment, for content your code
58908
+ * renders itself.
58909
+ *
58324
58910
  * ## Attributes & Properties
58325
58911
  *
58326
58912
  * Component attributes and properties that can be applied to the element or by using JavaScript.
58327
58913
  *
58914
+ * - `lazy`: Whether the panel's content waits in a `<template>` until the panel is
58915
+ * first shown.
58328
58916
  * - `selected`: Whether this panel is the visible one.
58329
58917
  * - `value`: Pairs the panel with the tab of the same value.
58330
58918
  * - `label`: The name of the panel, which is the text of the tab that opens it.
@@ -58358,11 +58946,17 @@ export type CustomElements = {
58358
58946
  * browser harness's awaits it alone: a browser always runs the frame, and a
58359
58947
  * timer beside it was a bet on how long one takes, which a busy run lost. (property only) (readonly)
58360
58948
  *
58949
+ * ## Events
58950
+ *
58951
+ * Events that will be emitted by the component.
58952
+ *
58953
+ * - `helix-load`: Fired the first time a `lazy` panel is shown, once its template's content is in.
58954
+ *
58361
58955
  * ## Slots
58362
58956
  *
58363
58957
  * Areas where markup can be added to the component.
58364
58958
  *
58365
- * - `(default)`: The panel's content.
58959
+ * - `(default)`: The panel's content. Under `lazy`, a `<template>` holding it.
58366
58960
  *
58367
58961
  * ## CSS Parts
58368
58962
  *
@@ -58374,6 +58968,7 @@ export type CustomElements = {
58374
58968
  *
58375
58969
  * These can be used to apply styling when a component is in a given state.
58376
58970
  *
58971
+ * - `loaded`: Once a `lazy` panel has been shown and its content is in.
58377
58972
  * - `selected`: While its tab is the one selected.
58378
58973
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
58379
58974
  */
@@ -58423,9 +59018,9 @@ export type CustomElements = {
58423
59018
  * | Enter, Space | Selects the tab with focus, or follows its link. |
58424
59019
  * | Tab | Leaves the list for the selected panel. |
58425
59020
  *
58426
- * Removing the selected tab selects the first enabled tab that is left, and
58427
- * `active` says so, with `helix-activate`. Where the removed tab had focus,
58428
- * focus moves to the tab now selected.
59021
+ * Removing the selected tab selects the enabled tab beside it, the next one
59022
+ * or else the one before, and `active` says so, with `helix-activate`. Where
59023
+ * the removed tab had focus, focus moves to the tab now selected.
58429
59024
  *
58430
59025
  * **More tabs than fit.** With `scroll-controls`, a strip that scrolls shows a
58431
59026
  * button at each end it can scroll toward, as Web Awesome's tab group does,
@@ -58531,6 +59126,8 @@ export type CustomElements = {
58531
59126
  * - `(default)`: The tabs, as direct children of this element.
58532
59127
  * - `indicator`: A mark of your own, drawn inside the `indicator` part, where `--indicator-x`, `--indicator-y`, `--indicator-inline-size` and `--indicator-block-size` reach it.
58533
59128
  * - `panels`: The panels, as direct children of this element. Panels inside a wrapper are not paired with tabs, because pairing reads only the direct children.
59129
+ * - `scroll-end-icon`: Replaces the glyph on the button that scrolls the strip toward its end.
59130
+ * - `scroll-start-icon`: Replaces the glyph on the button that scrolls the strip toward its start.
58534
59131
  *
58535
59132
  * ## Methods
58536
59133
  *
@@ -58552,7 +59149,9 @@ export type CustomElements = {
58552
59149
  * - `indicator`: The marker that moves to the selected tab. It carries the selected tab's place and size as `--indicator-x`, `--indicator-y`, `--indicator-inline-size` and `--indicator-block-size`, and `data-placed` once it has been placed, for a mark you draw and animate yourself.
58553
59150
  * - `panels`: The panel container.
58554
59151
  * - `scroll-end`: The button that scrolls the strip toward its end, shown under `scroll-controls` while there is more that way.
59152
+ * - `scroll-end-mark`: The glyph on that button, where none is slotted.
58555
59153
  * - `scroll-start`: The button that scrolls the strip toward its start, shown under `scroll-controls` while there is more that way.
59154
+ * - `scroll-start-mark`: The glyph on that button, where none is slotted.
58556
59155
  * - `tabs`: The tab list.
58557
59156
  *
58558
59157
  * ## CSS States
@@ -58577,8 +59176,8 @@ export type CustomElements = {
58577
59176
  * can: a press on its `dismiss` mark, or Delete or Backspace while the tab
58578
59177
  * has focus, sends `helix-dismiss`. The tab does not remove itself, because
58579
59178
  * your code owns the set, so remove the tab and its panel in your handler.
58580
- * Focus moves to the tab beside it, and the tab set selects a tab that is
58581
- * left.
59179
+ * Focus moves to the tab beside it, and where the tab was selected, the tab
59180
+ * set selects that same tab.
58582
59181
  * The tab says the key through `aria-keyshortcuts`, and the mark is for the
58583
59182
  * pointer, hidden from screen readers.
58584
59183
  *
@@ -58635,6 +59234,7 @@ export type CustomElements = {
58635
59234
  * Areas where markup can be added to the component.
58636
59235
  *
58637
59236
  * - `(default)`: The tab's label.
59237
+ * - `dismiss-icon`: Replaces the glyph on the mark that closes a `dismissible` tab.
58638
59238
  *
58639
59239
  * ## Methods
58640
59240
  *
@@ -58659,6 +59259,7 @@ export type CustomElements = {
58659
59259
  * Custom selectors for styling elements within the component.
58660
59260
  *
58661
59261
  * - `dismiss`: The mark a pointer presses to close a `dismissible` tab.
59262
+ * - `dismiss-mark`: The glyph on that mark, where none is slotted.
58662
59263
  * - `tab`: The tab itself.
58663
59264
  *
58664
59265
  * ## CSS States
@@ -59211,20 +59812,25 @@ export type CustomElements = {
59211
59812
  * `seconds`, because that is what the form
59212
59813
  * submits, what `min` and `max` compare against, and what sorts correctly as a
59213
59814
  * string. While idle, the field shows the time in the user's locale format.
59214
- * Once the caret is in the field, it shows the value itself, because a
59215
- * formatted time such as `2:30 PM` cannot be typed back and `Intl` has no
59216
- * parser for it.
59815
+ * Once the caret is in the field, it shows the value itself. You can type
59816
+ * `14:30`, or a time as you write one, such as `2:30 PM`, `2.30pm`, or
59817
+ * `14h30`, and the field reads it as you leave it, with AM and PM in the
59818
+ * locale's words.
59217
59819
  *
59218
59820
  * Typing sends `input` on each keystroke and `change` when you leave the
59219
59821
  * field. The trigger and ArrowDown open the list, and so does a press into the
59220
- * field; Tab into the field opens nothing. In the list, the arrow keys, typed digits and PageUp and PageDown
59822
+ * field; Tab into the field opens nothing. The text field is a `combobox`
59823
+ * with `aria-haspopup="dialog"`, `aria-expanded`, and `aria-controls`, since
59824
+ * Down opens the list from it. In the list, the arrow keys, typed digits and PageUp and PageDown
59221
59825
  * move through the times, and Enter, Space or a click chooses one and closes
59222
59826
  * the panel. With `variant="wheels"` each wheel moves the time as you turn it,
59223
59827
  * the panel stays open, and Enter or Escape closes it.
59224
59828
  *
59225
59829
  * With `segmented`, the field is a row of segments in place of the text: an
59226
59830
  * hour, a minute, and AM or PM where the clock has them, each set with digits
59227
- * or the arrow keys. Alt+Down opens the list from a segment.
59831
+ * or the arrow keys. Alt+Down opens the list from a segment. A `range` is two
59832
+ * rows with a dash between them, the start and the end, and `multiple` keeps
59833
+ * the text.
59228
59834
  *
59229
59835
  * Text that is not a time gives the form an empty value, as a native time
59230
59836
  * field does, and `value` keeps the text so it can be corrected.
@@ -59256,6 +59862,10 @@ export type CustomElements = {
59256
59862
  *
59257
59863
  * Empty leaves the attribute off, which is the browser's default and is what
59258
59864
  * lets autofill work at all.
59865
+ * - `clearable`: Whether the field shows a button that empties it, as Input's `clearable`
59866
+ * does. Shown only while the field holds something to clear and is neither
59867
+ * disabled nor read-only.
59868
+ * - `clear-label`/`clearLabel`: The accessible name of the clear button, which shows only an icon.
59259
59869
  * - `disable-times`/`disableTimes`: Times that cannot be chosen, as `HH:mm`, separated by commas or spaces.
59260
59870
  *
59261
59871
  * Handed to the list, which offers them as unavailable, and checked against
@@ -59304,6 +59914,8 @@ export type CustomElements = {
59304
59914
  * never something this element would refuse to read back.
59305
59915
  * - `trigger-label`/`triggerLabel`: The name of the button that opens the list, read by screen readers.
59306
59916
  * - `unavailable-message`/`unavailableMessage`: The message shown when `disable-times` bars a time.
59917
+ * - `unreadable-message`/`unreadableMessage`: The message for text that is no time, where `bad-input-message` is not
59918
+ * set. `{mode}` is `single`, `range`, or `multiple`, and `{shape}` is `HH:mm`, or `HH:mm:ss` with `seconds`.
59307
59919
  * - `variant`: Whether the panel shows one list of times or a column for each part of the
59308
59920
  * time.
59309
59921
  *
@@ -59326,6 +59938,10 @@ export type CustomElements = {
59326
59938
  * - `incomplete-message`/`incompleteMessage`: What a row of segments reports while some segments are set and others
59327
59939
  * are not, where `bad-input-message` is not set. `{kind}` is `date` or
59328
59940
  * `time`.
59941
+ * - `range-end-label`/`rangeEndLabel`: What a screen reader hears before the segments of a range's second date
59942
+ * or time, after each segment's own name.
59943
+ * - `range-start-label`/`rangeStartLabel`: What a screen reader hears before the segments of a range's first date
59944
+ * or time, after each segment's own name: "month, Start, Stay".
59329
59945
  * - `segmented`: Whether the field is a row of segments, one for each part of the date or
59330
59946
  * time, in place of a line of text.
59331
59947
  *
@@ -59477,6 +60093,7 @@ export type CustomElements = {
59477
60093
  * - `helix-before-change`: Fired before the time changes. Cancelable: canceling it stops the change and leaves the decision to you.
59478
60094
  * - `helix-before-close`: Fired before the list closes. Cancelable: canceling it keeps the list open and leaves the decision to you.
59479
60095
  * - `helix-before-open`: Fired before the list opens. Cancelable: canceling it keeps the list closed and leaves the decision to you.
60096
+ * - `helix-clear`: Fired after the clear button has emptied the field, after `input` and `change`.
59480
60097
  * - `input`: Fired after the value changes.
59481
60098
  * - `toggle`: Fired after the list opens or closes, with `newState` and `oldState`.
59482
60099
  *
@@ -59484,6 +60101,7 @@ export type CustomElements = {
59484
60101
  *
59485
60102
  * Areas where markup can be added to the component.
59486
60103
  *
60104
+ * - `clear-icon`: Replaces the cross on the clear button, under `clearable`.
59487
60105
  * - `end`: Content after the time, before the trigger, such as a clear button.
59488
60106
  * - `feedback`: The message that says what is wrong with the value.
59489
60107
  * - `hint`: Help under the field.
@@ -59557,6 +60175,7 @@ export type CustomElements = {
59557
60175
  *
59558
60176
  * Custom selectors for styling elements within the component.
59559
60177
  *
60178
+ * - `clear`: The button that empties the field, under `clearable`, while it holds a time.
59560
60179
  * - `control`: The text input.
59561
60180
  * - `feedback`: The message that says what is wrong with the value.
59562
60181
  * - `field`: The box that holds the text and the trigger.
@@ -59602,6 +60221,7 @@ export type CustomElements = {
59602
60221
  * - `picker-option-item-selected`: The row of a chosen time: the one time, or either end of a range.
59603
60222
  * - `picker-option-label`: The option's label.
59604
60223
  * - `picker-option-text`: The label and the caption, as one column.
60224
+ * - `range-separator`: The dash between a range's two rows of segments, in `segmented`, beside `literal`.
59605
60225
  * - `rest`: The count of times held beyond the ones shown. A `<button>` with `expandable`, and a `<span>` without it.
59606
60226
  * - `segment`: One part of the time, an hour, a minute, a second or AM and PM, in `segmented`.
59607
60227
  * - `segment-placeholder`: A segment with nothing in it yet. Applied with `segment`.
@@ -59622,6 +60242,7 @@ export type CustomElements = {
59622
60242
  *
59623
60243
  * These can be used to apply styling when a component is in a given state.
59624
60244
  *
60245
+ * - `blank`: The field holds no time.
59625
60246
  * - `invalid`: The control has an error to show, from the browser's validation or from your `feedback`.
59626
60247
  * - `open`: While the clock is open.
59627
60248
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
@@ -59675,7 +60296,10 @@ export type CustomElements = {
59675
60296
  * host's `aria-label` or its `aria-labelledby`. A development build warns
59676
60297
  * where all four are empty. The list is described by the hint, or by the
59677
60298
  * message in `feedback` in its place, and carries `aria-multiselectable` with
59678
- * a `mode` and `aria-invalid` while `feedback` says what is wrong. The wheels
60299
+ * a `mode`. It carries `aria-invalid` while `feedback` says what is wrong,
60300
+ * while it holds a time outside `min` and `max` or one the picker does not
60301
+ * offer, and, for a `required` picker with no time, once the reader has
60302
+ * chosen one or a form has refused the picker. The wheels
59679
60303
  * are a `group` with that name, holding one `listbox` per wheel, named "Hour",
59680
60304
  * "Minute", "Second" and "AM/PM" in the page's language, and each described
59681
60305
  * the same way.
@@ -60033,7 +60657,7 @@ export type CustomElements = {
60033
60657
  * - `list-loading`: The text shown while the options load.
60034
60658
  * - `list-search`: The region that holds the filter field.
60035
60659
  * - `list-search-field`: The filter field.
60036
- * - `option`: One time in the list. It carries `data-between` inside a range.
60660
+ * - `option`: One time in the list. It carries `data-between` inside a range, and inside the run to the time under the pointer while a range waits for its second end.
60037
60661
  * - `option-between`: A time inside a chosen range, excluding its ends, beside `option`.
60038
60662
  * - `option-description`: The caption under the time's label, when there is one.
60039
60663
  * - `option-item`: The row.
@@ -60047,7 +60671,8 @@ export type CustomElements = {
60047
60671
  * These can be used to apply styling when a component is in a given state.
60048
60672
  *
60049
60673
  * - `blank`: While no time is chosen.
60050
- * - `invalid`: While `invalid` is set or `feedback` says what is wrong.
60674
+ * - `invalid`: While `invalid` is set, `feedback` says what is wrong, or the list carries `aria-invalid`.
60675
+ * - `range-pending`: While a `range` holds its first time and waits for the second.
60051
60676
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
60052
60677
  */
60053
60678
  "helix-headless-time-picker": Partial<
@@ -60277,8 +60902,9 @@ export type CustomElements = {
60277
60902
  *
60278
60903
  * **Each item runs its own timer.** A timer held by the region would restart
60279
60904
  * with each new message, and the last of three messages would stay for nine
60280
- * seconds. It pauses while the pointer or focus is on the message, and while
60281
- * the page is hidden, so a message is not spent in a background tab.
60905
+ * seconds. It pauses while the pointer or focus is on the message or anywhere
60906
+ * in the region's stack, and while the page is hidden, so a message is not
60907
+ * spent in a background tab.
60282
60908
  *
60283
60909
  * **Each message is an `alertdialog` named by its words**, which is how a reader
60284
60910
  * who moves into the stack hears which message they are on. Give it a
@@ -60287,10 +60913,11 @@ export type CustomElements = {
60287
60913
  * says each message once as it arrives, a `danger` one assertively, so a
60288
60914
  * message is never a live region of its own.
60289
60915
  *
60290
- * A touch or a pen swipes a message toward the end of the line, and past
60291
- * halfway, or quickly, dismisses it through the same `helix-dismiss` as its
60292
- * control. While it moves, the distance is on the `item` part as
60293
- * `--toast-swipe-x`.
60916
+ * A touch or a pen swipes a message toward the end of the line, or toward the
60917
+ * edge the region's `swipe-direction` names, and past halfway, or quickly,
60918
+ * dismisses it through the same `helix-dismiss` as its control. While it
60919
+ * moves, the distance is on the `item` part as `--toast-swipe-x` or
60920
+ * `--toast-swipe-y`.
60294
60921
  *
60295
60922
  * **Escape dismisses the message holding focus**, through the same
60296
60923
  * `helix-dismiss`, and focus moves to the next message.
@@ -60392,6 +61019,7 @@ export type CustomElements = {
60392
61019
  *
60393
61020
  * - `--toast-duration`: How long this message stays, in milliseconds, for a progress hint.
60394
61021
  * - `--toast-swipe-x`: How far a swipe has moved the message across, in pixels, toward the right.
61022
+ * - `--toast-swipe-y`: How far a swipe has moved the message down, in pixels, under a `swipe-direction` of `top` or `bottom`.
60395
61023
  *
60396
61024
  * ## CSS Parts
60397
61025
  *
@@ -60413,7 +61041,7 @@ export type CustomElements = {
60413
61041
  * These can be used to apply styling when a component is in a given state.
60414
61042
  *
60415
61043
  * - `closed`: The message has been dismissed and is hidden, or leaving.
60416
- * - `paused`: The dismiss timer is paused, while a pointer or focus is on the message, or while the page is hidden.
61044
+ * - `paused`: The dismiss timer is paused, while a pointer or focus is on the message or in the stack, or while the page is hidden.
60417
61045
  * - `waiting`: The region holds the message back, past its `max-visible`, until a message before it goes.
60418
61046
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
60419
61047
  */
@@ -60452,7 +61080,12 @@ export type CustomElements = {
60452
61080
  * to render them from: it appends a message of the region's own tier and
60453
61081
  * removes it once it has been dismissed and has finished leaving. Messages
60454
61082
  * you render yourself stay yours, and the region never removes them. A touch
60455
- * or a pen swipes a message away toward the end of the line.
61083
+ * or a pen swipes a message away toward the end of the line, or toward the
61084
+ * edge `swipe-direction` names.
61085
+ *
61086
+ * **Every message's timer waits while a pointer or focus is in the stack**, as
61087
+ * React Aria's and Radix's regions do, so a reader moving from one message to
61088
+ * the next does not lose the one behind them.
60456
61089
  *
60457
61090
  * **The stack is in the top layer.** The `region` part is a `popover="manual"`
60458
61091
  * shown while a message is showing, and shown again above a modal dialog that
@@ -60517,6 +61150,8 @@ export type CustomElements = {
60517
61150
  * consumer's server markup does not have. A sheet carries the resting
60518
61151
  * arrangement in its own `:host` rule and the selectors describe only the
60519
61152
  * departures, which is what `orientation` does.
61153
+ * - `swipe-direction`/`swipeDirection`: The edge a touch or a pen swipes a message toward to dismiss it: `end`,
61154
+ * the end of the line, or `start`, `top` or `bottom`. Unset is `end`.
60520
61155
  * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
60521
61156
  *
60522
61157
  * **Named `whenSettled` because `settled` is taken four times over**, by
@@ -60621,7 +61256,7 @@ export type CustomElements = {
60621
61256
  * | Right, Down | Moves to the next item, from the last back to the first. In a single group, chooses it. |
60622
61257
  * | Left, Up | Moves to the item before, from the first round to the last. In a single group, chooses it. |
60623
61258
  * | Home, End | Moves to the first or the last item. In a single group, chooses it. |
60624
- * | Space, Enter | Chooses the focused item, or presses or releases it in a multiple group. |
61259
+ * | Space, Enter | Chooses the focused item, or presses or releases it in a multiple group. With `allow-empty-selection`, takes back the chosen item. |
60625
61260
  *
60626
61261
  * Left and Right swap on a right-to-left page, and a disabled item is passed
60627
61262
  * over. A single group is a `radiogroup` of items with `role="radio"` and
@@ -60633,6 +61268,11 @@ export type CustomElements = {
60633
61268
  *
60634
61269
  * Component attributes and properties that can be applied to the element or by using JavaScript.
60635
61270
  *
61271
+ * - `allow-empty-selection`/`allowEmptySelection`: Whether a press on the chosen item, or Space or Enter on it, takes it
61272
+ * back so nothing is chosen, as React Aria's `ToggleButtonGroup` and
61273
+ * Radix's `ToggleGroup` do in a single group. Absent, a single group always
61274
+ * keeps its choice once it has one, as a radio group does. A multiple group
61275
+ * releases a pressed item either way.
60636
61276
  * - `label-placement`/`labelPlacement`: Where the group's label sits. `start` puts it on the track's line.
60637
61277
  *
60638
61278
  * Absent is above, which is what a field looks like and what almost every
@@ -60977,13 +61617,13 @@ export type CustomElements = {
60977
61617
  *
60978
61618
  * Custom selectors for styling elements within the component.
60979
61619
  *
60980
- * - `item`: The radio button.
61620
+ * - `item`: The button: a radio in a group where one is chosen, and a button with `aria-pressed` on its own or in a group where several can be.
60981
61621
  *
60982
61622
  * ## CSS States
60983
61623
  *
60984
61624
  * These can be used to apply styling when a component is in a given state.
60985
61625
  *
60986
- * - `pressed`: The item is pressed, in a group where several can be.
61626
+ * - `pressed`: The item is pressed, on its own or in a group where several can be.
60987
61627
  * - `selected`: The item is chosen.
60988
61628
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
60989
61629
  */
@@ -61385,6 +62025,17 @@ export type CustomElements = {
61385
62025
  * least distance that brings it on screen, so the stop that points at it is
61386
62026
  * on screen too.
61387
62027
  *
62028
+ * **A stop's `effect` runs as the tour reaches it**, before it is shown, and
62029
+ * the stop waits for a promise it returns, with `:state(preparing)` on the
62030
+ * tour meanwhile. A function it returns runs when the tour leaves the stop.
62031
+ *
62032
+ * **A press outside the current stop and its target does nothing by
62033
+ * default**, so a reader can use the page the tour is describing. Set
62034
+ * `outside-press="close"` to end the tour on one, through `helix-before-close`
62035
+ * as Skip does, or `outside-press="block"` to refuse it, so the stop and its
62036
+ * target are all a pointer can reach while the tour runs, as Zag's
62037
+ * `preventInteraction` does.
62038
+ *
61388
62039
  * **Keyboard.** Focus is on the current stop's panel, which is not in the
61389
62040
  * `Tab` order itself.
61390
62041
  *
@@ -61422,6 +62073,9 @@ export type CustomElements = {
61422
62073
  * `undefined` until somebody sets one.
61423
62074
  * - `label`: The tour's name, read by screen readers, such as "Getting started".
61424
62075
  * - `next-label`/`nextLabel`: Label for the control that goes on.
62076
+ * - `outside-press`/`outsidePress`: What a press outside the current stop and its target does while the tour
62077
+ * runs. Unset, nothing: the page stays usable. `close` ends the tour, as
62078
+ * Skip does, and `block` refuses the press.
61425
62079
  * - `progress`: Draws each stop's place in the run in its panel, as well as saying it.
61426
62080
  * - `progress-label`/`progressLabel`: Each stop's place in the run, with `{index}` and `{count}` filled in and
61427
62081
  * written in the locale. Translate it with the rest of your text.
@@ -61525,6 +62179,7 @@ export type CustomElements = {
61525
62179
  * These can be used to apply styling when a component is in a given state.
61526
62180
  *
61527
62181
  * - `open`: While the tour is running.
62182
+ * - `preparing`: While the tour waits for the current stop's `effect` before showing the stop.
61528
62183
  * - `waiting`: While the tour waits at a `wait` stop for its target to be on the page.
61529
62184
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
61530
62185
  */
@@ -61558,6 +62213,13 @@ export type CustomElements = {
61558
62213
  * get Back, Next, and Skip, already wired. Slot your own `actions` and drive
61559
62214
  * them with `next()`, `back()`, and `skip()` on the root.
61560
62215
  *
62216
+ * **Set `effect` to prepare the page for a stop**, such as opening the menu
62217
+ * it points into or loading what it describes. It is a function, set from
62218
+ * script, that the tour runs as it reaches the stop. Return a promise and the
62219
+ * stop waits for it, and the tour has `:state(preparing)` meanwhile; return a
62220
+ * function, or resolve to one, and the tour runs it when it leaves the stop.
62221
+ * Zag's tour step has the same `effect`.
62222
+ *
61561
62223
  * **`for` is an id, as with `Tooltip`**, so you can point at a target elsewhere
61562
62224
  * on the page from markup. It resolves against the stop's root node, so a stop
61563
62225
  * inside a shadow tree points at a target in that tree.
@@ -61599,6 +62261,8 @@ export type CustomElements = {
61599
62261
  *
61600
62262
  * Reflected, because the styled tier places a dialog and a floating panel by
61601
62263
  * it, and unset at rest, so no default is written onto the host.
62264
+ * - `effect`: Run as the tour reaches the stop, before it is shown: see the description
62265
+ * above. A function, so it is set from script and has no attribute. (property only)
61602
62266
  * - `target`: The element the stop points at, or `null` when no element has the `for` id. (property only) (readonly)
61603
62267
  * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
61604
62268
  *
@@ -61681,6 +62345,8 @@ export type CustomElements = {
61681
62345
  *
61682
62346
  * These can be used to apply styling when a component is in a given state.
61683
62347
  *
62348
+ * - `entering`: From the moment the stop is shown until its entrance has finished.
62349
+ * - `exiting`: From the moment the stop is left until its exit has finished.
61684
62350
  * - `placed-bottom`: The panel sits below its target.
61685
62351
  * - `placed-left`: The panel sits to the left of its target.
61686
62352
  * - `placed-right`: The panel sits to the right of its target.
@@ -63729,12 +64395,21 @@ export type CustomElementsSolidJs = {
63729
64395
  *
63730
64396
  * **Set `fold-below` to fold the middle region on a narrow screen.** Below that
63731
64397
  * many pixels of the bar's own width, the middle region is hidden behind a
63732
- * toggle at the end of the bar, named by `menu-label`. The toggle says whether
63733
- * the region is open with `aria-expanded`, and the region opens below the row.
63734
- * Escape closes it and puts focus back on the toggle. The custom state
63735
- * `folded` is on the host while the bar is that narrow, and `open` while the
63736
- * folded region is open. A server serves the bar unfolded, and the browser
63737
- * folds it once it has measured it.
64398
+ * toggle at the end of the bar, named by `menu-label`, or at its start with
64399
+ * `toggle-placement="start"`. The toggle says whether the region is open with
64400
+ * `aria-expanded`, and the region opens below the row. The region follows the
64401
+ * toggle's region in focus order, so Tab from the toggle at the end goes into
64402
+ * the open region. The custom state `folded` is on the host while the bar is
64403
+ * that narrow, and `open` while the folded region is open. A server serves the
64404
+ * bar unfolded, and the browser folds it once it has measured it.
64405
+ *
64406
+ * **`open` says whether the folded region is open, and setting it opens or
64407
+ * closes the region.** `requestOpen(true)` and `requestOpen(false)` do the same
64408
+ * and send `helix-before-open` or `helix-before-close` first, which you can
64409
+ * cancel, and `toggleOpen()` asks for the opposite. `toggle` follows every
64410
+ * change. The region closes on Escape, which puts focus back on the toggle,
64411
+ * when focus moves to something outside the header, and on a press outside
64412
+ * it. A bar that widens past `fold-below` closes its region.
63738
64413
  *
63739
64414
  * The host is the page's `banner` landmark. Placed inside `main`, `article`,
63740
64415
  * `aside`, `nav` or `section`, it is a plain box instead, as a native
@@ -63769,6 +64444,24 @@ export type CustomElementsSolidJs = {
63769
64444
  * - `menu-label`/`menuLabel`: The name of the toggle that opens a folded middle region.
63770
64445
  * - `scroller`: The id of the element whose scrolling lifts the bar, for an app shell that
63771
64446
  * scrolls a container instead of the window. Unset is the window.
64447
+ * - `toggle-placement`/`togglePlacement`: Where the toggle that opens a folded middle region sits: at the end of the
64448
+ * bar, after the trailing content, or with `start`, before the leading
64449
+ * content.
64450
+ *
64451
+ * Optional, so the resting bar writes no attribute onto the host.
64452
+ * - `default-open`/`defaultOpen`: Whether the element starts open. Ignored once `open` is written.
64453
+ * - `open`: Whether the element is open.
64454
+ *
64455
+ * One property, not two, so `dialog.open` answers the question anyone
64456
+ * asking it meant. Writing always applies; `<helix-dialog open>` is the
64457
+ * same statement in markup.
64458
+ *
64459
+ * **Not reflected, and that is required rather than tidy.** Reflection
64460
+ * writes the resolved state back as an attribute, so an element that opened
64461
+ * itself would put `open` on its own host: cloned, serialized for
64462
+ * hydration, or diffed by a framework, it comes back holding whatever the
64463
+ * last reader did rather than what the author wrote. `:state(open)` carries
64464
+ * the resolved state for stylesheets, which is what the mirror is for.
63772
64465
  * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
63773
64466
  *
63774
64467
  * **Named `whenSettled` because `settled` is taken four times over**, by
@@ -63794,7 +64487,10 @@ export type CustomElementsSolidJs = {
63794
64487
  *
63795
64488
  * Events that will be emitted by the component.
63796
64489
  *
64490
+ * - `helix-before-close`: The folded region is about to close. Cancelable: cancel it to keep it open.
64491
+ * - `helix-before-open`: The folded region is about to open. Cancelable: cancel it to keep it closed.
63797
64492
  * - `helix-scrolled`: Fired when the page crosses the scroll threshold, with the new state. A custom state cannot be observed the way an attribute can, so listen for this event to follow it. The event uses the header's own threshold and hysteresis, so you do not need a second scroll listener.
64493
+ * - `toggle`: The folded region opened or closed. The event carries `newState` and `oldState`.
63798
64494
  *
63799
64495
  * ## Slots
63800
64496
  *
@@ -63805,6 +64501,20 @@ export type CustomElementsSolidJs = {
63805
64501
  * - `menu-icon`: Replaces the glyph inside the toggle that opens a folded middle region.
63806
64502
  * - `start`: Leading content, usually a wordmark.
63807
64503
  *
64504
+ * ## Methods
64505
+ *
64506
+ * Methods that can be called to access component functionality.
64507
+ *
64508
+ * - `requestOpen(next: boolean) => boolean`: Requests that the element open or close, and returns whether the change
64509
+ * was applied.
64510
+ *
64511
+ * Announces before it acts, so `preventDefault()` on the `helix-before-open` or
64512
+ * `helix-before-close` is a refusal and nothing moves. Nobody refusing means the
64513
+ * element opens or closes itself, whether or not a consumer declared
64514
+ * `open`: a declared property is a seed and a correction, and a consumer
64515
+ * who wants the decision for themselves refuses it and assigns their own.
64516
+ * - `toggleOpen() => boolean`: Requests the opposite of the current state.
64517
+ *
63808
64518
  * ## CSS Parts
63809
64519
  *
63810
64520
  * Custom selectors for styling elements within the component.
@@ -65208,11 +65918,15 @@ export type CustomElementsSolidJs = {
65208
65918
  * appearance and size.
65209
65919
  *
65210
65920
  * **Buttons that stay pressed.** With `selection-mode`, each button with a
65211
- * `value` is a toggle button: a press presses or releases it, and it says so
65212
- * with `aria-pressed`. `single` keeps one pressed at a time, and a press on the
65213
- * pressed one releases it. `multiple` lets any number be pressed. `value` is
65214
- * the pressed values, comma separated. A press sends a cancelable
65215
- * `helix-before-change` with the value it would leave, then `change`.
65921
+ * `value` is a toggle button: a press presses or releases it. `multiple` lets
65922
+ * any number be pressed, and each button says so with `aria-pressed`. `single`
65923
+ * keeps one pressed at a time: the group is a `radiogroup` and each button a
65924
+ * `radio` that says so with `aria-checked`, as React Aria's toggle button
65925
+ * group is. A press on the pressed one releases it, unless
65926
+ * `disallow-empty-selection` keeps one pressed. `value` is the pressed values,
65927
+ * comma separated. A press sends a cancelable `helix-before-change` with the
65928
+ * value it would leave, then `change`. A pressed Helix button has
65929
+ * `:state(pressed)` on its own element.
65216
65930
  *
65217
65931
  * The pressed state is written on the control inside each button's shadow
65218
65932
  * root, so the markup you rendered is never changed and a framework hydrating
@@ -65240,15 +65954,18 @@ export type CustomElementsSolidJs = {
65240
65954
  * | Space, Enter | Presses or releases the focused button. |
65241
65955
  *
65242
65956
  * Left and Right swap on a right-to-left page, and a disabled button is
65243
- * passed over. In a selection mode the group is a `toolbar`, with
65957
+ * passed over. Under `multiple` the group is a `toolbar`, with
65244
65958
  * `aria-orientation` under `orientation="vertical"`. Inside a toolbar it stays
65245
65959
  * a named `group`, and the toolbar's own arrow keys walk its buttons, so a
65246
- * reader meets one toolbar.
65960
+ * reader meets one toolbar. Under `single` it is a `radiogroup` either way.
65247
65961
  *
65248
65962
  * ## Attributes & Properties
65249
65963
  *
65250
65964
  * Component attributes and properties that can be applied to the element or by using JavaScript.
65251
65965
  *
65966
+ * - `disallow-empty-selection`/`disallowEmptySelection`: Keeps at least one button pressed once one is, as React Aria's
65967
+ * `disallowEmptySelection`: a press that would leave none pressed is
65968
+ * refused.
65252
65969
  * - `label`: The group's name, read by screen readers.
65253
65970
  *
65254
65971
  * On the host through internals, so an author's `aria-label` still overrides
@@ -65617,6 +66334,7 @@ export type CustomElementsSolidJs = {
65617
66334
  * These can be used to apply styling when a component is in a given state.
65618
66335
  *
65619
66336
  * - `pending`: The button is pending: `pending` is set.
66337
+ * - `pressed`: A Button Group in a selection mode has this button pressed.
65620
66338
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
65621
66339
  */
65622
66340
  "helix-headless-button": Partial<
@@ -69838,6 +70556,7 @@ export type CustomElementsSolidJs = {
69838
70556
  * - `copied`: The moment after a successful copy, while `copied-label` names the button.
69839
70557
  * - `failed`: The moment after a press that put nothing on the clipboard, while `error-label` names the button.
69840
70558
  * - `pending`: The button is pending: `pending` is set.
70559
+ * - `pressed`: A Button Group in a selection mode has this button pressed.
69841
70560
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
69842
70561
  */
69843
70562
  "helix-headless-copy-button": Partial<
@@ -70344,17 +71063,24 @@ export type CustomElementsSolidJs = {
70344
71063
  * gives a picker and locale formatting but allows almost no styling, so the
70345
71064
  * field is a text field. Typing sends `input` on each keystroke and `change`
70346
71065
  * when you leave the field, as a text field does. A date picked from the
70347
- * calendar sends both.
71066
+ * calendar sends both. The field reads ISO, `2026-08-04`, and a date written
71067
+ * in the order, the digits, and the month names of `locale`, `8/4/2026` or
71068
+ * `Aug 4, 2026` in `en-US` and `4.8.2026` in `de-DE`, which becomes the value
71069
+ * as you leave the field.
70348
71070
  *
70349
71071
  * The trigger and ArrowDown open the calendar with focus on the selected day,
70350
71072
  * Tab moves between the calendar's controls without leaving it, and Escape
70351
71073
  * closes it and returns focus to the field. A press into the field opens the
70352
71074
  * calendar too. Tab into the field opens nothing, and Tab out of the field
70353
- * closes the calendar.
71075
+ * closes the calendar. The text field is a `combobox` with
71076
+ * `aria-haspopup="dialog"`, `aria-expanded`, and `aria-controls`, as in the
71077
+ * APG date picker combobox, since Down opens the calendar from it.
70354
71078
  *
70355
71079
  * With `segmented`, the field is a row of segments in place of the text: a
70356
71080
  * month, a day and a year in the order the locale writes them, each set with
70357
- * digits or the arrow keys. Alt+Down opens the calendar from a segment.
71081
+ * digits or the arrow keys. Alt+Down opens the calendar from a segment. A
71082
+ * `range` is two rows with a dash between them, the start and the end, as
71083
+ * React Aria's DateRangePicker draws them, and `multiple` keeps the text.
70358
71084
  *
70359
71085
  * Text that is not a date gives the form an empty value, as a native date
70360
71086
  * field does, and `value` keeps the text so it can be corrected.
@@ -70384,27 +71110,39 @@ export type CustomElementsSolidJs = {
70384
71110
  *
70385
71111
  * Component attributes and properties that can be applied to the element or by using JavaScript.
70386
71112
  *
70387
- * - `autocomplete`: What the browser may autofill here, as one of the platform's own tokens.
71113
+ * - `autocomplete`: What the browser may autofill here, as one of the platform's own tokens,
71114
+ * such as `bday`.
70388
71115
  *
70389
71116
  * Empty leaves the attribute off, which is the browser's default and is what
70390
71117
  * lets autofill work at all: hardcoding `off` here means a birthday or a
70391
- * postal code can never be filled in for a reader.
70392
- * - `calendar`: The calendar the written date and the calendar's days are in: `gregory`,
70393
- * `buddhist`, `japanese`, `roc`, or `iso8601`.
70394
- *
70395
- * Absent is the locale's own where it is one of the five, and `gregory` for
70396
- * every other, as Date Picker's `calendar` is. The value is `YYYY-MM-DD` in
70397
- * every calendar, and a focused field is ISO in every calendar. In
70398
- * `segmented`, the segments are the Gregorian day, month, and year, in the
70399
- * order the locale writes them, or ISO order for `iso8601`.
71118
+ * postal code can never be filled in for a reader. With `segmented`, a
71119
+ * hidden native date input carries it, since no browser fills the segments.
71120
+ * - `calendar`: The calendar the written date, the segments, and the calendar's days are
71121
+ * in: `gregory`, `buddhist`, `japanese`, `roc`, or `iso8601`, or a calendar
71122
+ * with months of its own that Date Picker's `calendar` names, such as
71123
+ * `persian`, `hebrew`, `islamic-umalqura`, `ethiopic`, or `chinese`.
71124
+ *
71125
+ * Absent is the locale's own where its months are the Gregorian months, and
71126
+ * `gregory` for every other, as Date Picker's `calendar` is. The value is
71127
+ * `YYYY-MM-DD` in every calendar, and a focused text field is ISO in every
71128
+ * calendar. In `segmented`, the segments are the day, month, and year as
71129
+ * the calendar counts them, in the order the locale writes them: Mehr 14,
71130
+ * 1405 is month 7 and day 14 of 1405 under `persian`. Under the five with
71131
+ * Gregorian months they are the Gregorian day, month, and year, or ISO order
71132
+ * for `iso8601`.
70400
71133
  * - `calendar-label`/`calendarLabel`: The name of the calendar's grid of days, read by screen readers.
71134
+ * - `clearable`: Whether the field shows a button that empties it, as Input's `clearable`
71135
+ * does. Shown only while the field holds something to clear and is neither
71136
+ * disabled nor read-only.
71137
+ * - `clear-label`/`clearLabel`: The accessible name of the clear button, which shows only an icon.
70401
71138
  * - `date-style`/`dateStyle`: How a date is written in the field: `short` through `full`, or ISO.
70402
71139
  *
70403
71140
  * **The field renders when it is idle and holds the value when it is being
70404
71141
  * edited.** A written date is a rendering, and a document being edited must
70405
71142
  * not be a rendering of something else: `Intl.DateTimeFormat` formats and does
70406
- * not parse, so `4 August 2026` cannot be typed back, and writing a parser per
70407
- * locale is how a field ends up rejecting what it just displayed.
71143
+ * not parse, so a rendering such as `Tuesday, August 4, 2026` is no text to
71144
+ * edit. The field does read a date typed in the locale's order and digits as
71145
+ * you leave it, which covers what a reader types.
70408
71146
  *
70409
71147
  * The way out is not to choose between the two but to separate them in time.
70410
71148
  * Idle, the field shows `4 August 2026`, which is what a date is for reading.
@@ -70472,6 +71210,9 @@ export type CustomElementsSolidJs = {
70472
71210
  *
70473
71211
  * **The name goes in**, so a row of them is heard as which one each
70474
71212
  * removes rather than as "Remove" said once per date.
71213
+ * - `selection-label`/`selectionLabel`: What a screen reader hears about the dates chosen in the calendar, with
71214
+ * `{kind}`, `{start}`, `{end}` and `{count}` filled in as Date Picker's
71215
+ * `selection-label` says.
70475
71216
  * - `step`: How far apart the selectable dates are, in days.
70476
71217
  *
70477
71218
  * `<input type="date" step>`'s own unit, handed to the calendar this renders
@@ -70479,8 +71220,13 @@ export type CustomElementsSolidJs = {
70479
71220
  * where there is one and from 1 January 1970 where there is not, which is the
70480
71221
  * platform's base.
70481
71222
  * - `step-mismatch-message`/`stepMismatchMessage`: The message shown when a date is not on `step`.
71223
+ * - `time-zone`/`timeZone`: The time zone today is read in, such as `America/New_York`, handed to the
71224
+ * calendar: the day marked today, and the month an empty field opens on.
71225
+ * Empty is the reader's own. Dates are plain `YYYY-MM-DD` and carry no zone.
70482
71226
  * - `trigger-label`/`triggerLabel`: The name of the button that opens the calendar, read by screen readers.
70483
71227
  * - `unavailable-message`/`unavailableMessage`: The message shown when `disable-dates` or `disable-days` bars a date.
71228
+ * - `unreadable-message`/`unreadableMessage`: The message for text that is no date, where `bad-input-message` is not
71229
+ * set. `{mode}` is `single`, `range`, or `multiple`.
70484
71230
  * - `year-view-label`/`yearViewLabel`: The name of the calendar's heading where it shows a page of years, with
70485
71231
  * `{heading}` filled in.
70486
71232
  * - `empty-message`/`emptyMessage`: What a row of segments reports when the field is required and every
@@ -70491,6 +71237,10 @@ export type CustomElementsSolidJs = {
70491
71237
  * - `incomplete-message`/`incompleteMessage`: What a row of segments reports while some segments are set and others
70492
71238
  * are not, where `bad-input-message` is not set. `{kind}` is `date` or
70493
71239
  * `time`.
71240
+ * - `range-end-label`/`rangeEndLabel`: What a screen reader hears before the segments of a range's second date
71241
+ * or time, after each segment's own name.
71242
+ * - `range-start-label`/`rangeStartLabel`: What a screen reader hears before the segments of a range's first date
71243
+ * or time, after each segment's own name: "month, Start, Stay".
70494
71244
  * - `segmented`: Whether the field is a row of segments, one for each part of the date or
70495
71245
  * time, in place of a line of text.
70496
71246
  *
@@ -70651,6 +71401,7 @@ export type CustomElementsSolidJs = {
70651
71401
  * - `helix-before-change`: Fired before the date changes. Cancelable: call `preventDefault()` to keep the current date.
70652
71402
  * - `helix-before-close`: Fired before the calendar closes. Cancelable: call `preventDefault()` to keep it open.
70653
71403
  * - `helix-before-open`: Fired before the calendar opens. Cancelable: call `preventDefault()` to keep it closed.
71404
+ * - `helix-clear`: Fired after the clear button has emptied the field, after `input` and `change`.
70654
71405
  * - `input`: Fired after the value changes.
70655
71406
  * - `toggle`: Fired when the calendar opens or closes, with `newState` and `oldState`.
70656
71407
  *
@@ -70658,6 +71409,7 @@ export type CustomElementsSolidJs = {
70658
71409
  *
70659
71410
  * Areas where markup can be added to the component.
70660
71411
  *
71412
+ * - `clear-icon`: Replaces the cross on the clear button, under `clearable`.
70661
71413
  * - `end`: Content after the date, before the trigger, such as a clear button.
70662
71414
  * - `feedback`: The error message under the field.
70663
71415
  * - `hint`: The help text under the field.
@@ -70733,6 +71485,7 @@ export type CustomElementsSolidJs = {
70733
71485
  *
70734
71486
  * Custom selectors for styling elements within the component.
70735
71487
  *
71488
+ * - `clear`: The button that empties the field, under `clearable`, while it holds a date.
70736
71489
  * - `control`: The text input.
70737
71490
  * - `date`: One held date, as a tag, in `multiple`.
70738
71491
  * - `date-cell`: The tag's grid cell, which a tag draws only inside a tag group.
@@ -70774,8 +71527,10 @@ export type CustomElementsSolidJs = {
70774
71527
  * - `picker-periods`: The grid of months or years.
70775
71528
  * - `picker-previous`: The control that moves to the previous month.
70776
71529
  * - `picker-previous-mark`: The icon on the previous month control.
71530
+ * - `picker-selection`: The chosen date or range in words, which screen readers hear when it changes. Drawn for screen readers only.
70777
71531
  * - `picker-week`: One row of days.
70778
71532
  * - `picker-weekday`: A column header naming a day of the week.
71533
+ * - `range-separator`: The dash between a range's two rows of segments, in `segmented`, beside `literal`.
70779
71534
  * - `rest`: The count of dates beyond the ones shown. It is a `<button>` with `expandable` and a `<span>` without it.
70780
71535
  * - `segment`: One part of the date, a year, a month or a day, in `segmented`.
70781
71536
  * - `segment-placeholder`: A segment with nothing in it yet. Applied with `segment`.
@@ -70789,6 +71544,7 @@ export type CustomElementsSolidJs = {
70789
71544
  *
70790
71545
  * These can be used to apply styling when a component is in a given state.
70791
71546
  *
71547
+ * - `blank`: The field holds no date.
70792
71548
  * - `invalid`: The field has an error to show, from the browser's validation or from your `feedback`.
70793
71549
  * - `open`: The calendar is open.
70794
71550
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
@@ -70811,9 +71567,11 @@ export type CustomElementsSolidJs = {
70811
71567
  * **Dates are `YYYY-MM-DD` strings, and every calculation is in UTC**, because
70812
71568
  * a local-time `Date` shifts across a time zone or daylight-saving boundary.
70813
71569
  *
70814
- * **The days are the Gregorian calendar's**, written in `calendar`: the
70815
- * locale's own where its months are the Gregorian months, as `th-TH` writes
70816
- * 2569 for 2026, and `gregory` where they are not, as for `fa-IR`.
71570
+ * **The months are the ones `calendar` counts**: the Gregorian months for the
71571
+ * locale's own calendar where its months are the Gregorian months, as `th-TH`
71572
+ * writes 2569 for 2026, and `gregory` where they are not, as for `fa-IR`
71573
+ * with no `calendar`. Name a calendar with months of its own, such as
71574
+ * `persian`, and every view counts its days, months, and years from `Intl`.
70817
71575
  *
70818
71576
  * `month` sets which month the grid shows, separately from `value`, so paging
70819
71577
  * selects nothing and you can control the view. When unset, it follows the
@@ -70821,7 +71579,14 @@ export type CustomElementsSolidJs = {
70821
71579
  *
70822
71580
  * `mode` sets how many dates are held. Unset holds one, `range` holds two and
70823
71581
  * marks the dates between them, and `multiple` toggles each date. All three
70824
- * read and write the same comma-separated `value`.
71582
+ * read and write the same comma-separated `value`. With a `mode`, the grid
71583
+ * carries `aria-multiselectable`. While a range holds one end, the grid draws
71584
+ * the range to the day under the pointer or the focus, marking those cells
71585
+ * `data-range-preview`.
71586
+ *
71587
+ * The chosen date, range, or count of dates is the grid's description, in a
71588
+ * region screen readers announce when it changes, as React Aria's calendars
71589
+ * do. `selection-label` words it.
70825
71590
  *
70826
71591
  * `max-view` makes the heading a button that steps back to the months of the
70827
71592
  * year, and with `year` to a page of years, as Zag's date picker does. The
@@ -70856,14 +71621,16 @@ export type CustomElementsSolidJs = {
70856
71621
  * `ja-JP-u-ca-japanese`, and `gregory` for every other, such as `persian`
70857
71622
  * for `fa-IR`.
70858
71623
  *
70859
- * `persian`, `hebrew`, `islamic-umalqura`, `islamic-civil`, `ethiopic`,
70860
- * `coptic`, and `indian` draw a calendar with months of its own, as React
70861
- * Aria's calendars do: each grid is one of that calendar's months, the
70862
- * Hebrew leap month and Ethiopia's five-day thirteenth month included, and
70863
- * Previous, Next and the page keys move by those months. `month` and
71624
+ * `persian`, `hebrew`, `islamic`, `islamic-umalqura`, `islamic-civil`,
71625
+ * `islamic-tbla`, `islamic-rgsa`, `ethiopic`, `ethioaa`, `coptic`,
71626
+ * `indian`, `chinese`, and `dangi` draw a calendar with months of its own,
71627
+ * as React Aria's calendars do: each grid is one of that calendar's months,
71628
+ * the Hebrew and Chinese leap months and Ethiopia's five-day thirteenth
71629
+ * month included, and Previous, Next and the page keys move by those
71630
+ * months. With `max-view`, the months view shows that calendar's year, of
71631
+ * twelve or thirteen months, and the years view its years. `month` and
70864
71632
  * `helix-navigate` then name a month by its first day, `YYYY-MM-DD`. The
70865
- * heading stays text, as the months and years views are drawn in Gregorian
70866
- * months only. The value is `YYYY-MM-DD` in every calendar.
71633
+ * value is `YYYY-MM-DD` in every calendar.
70867
71634
  * - `default-month`/`defaultMonth`: The month to open on when `month` is not set.
70868
71635
  * - `disable-dates`/`disableDates`: Dates that cannot be chosen, as `YYYY-MM-DD`, separated by commas or
70869
71636
  * spaces.
@@ -70926,6 +71693,11 @@ export type CustomElementsSolidJs = {
70926
71693
  * value and stays reachable, which is what a form showing a value somebody
70927
71694
  * else set needs.
70928
71695
  * - `required`: Stops the form from submitting while no date is chosen.
71696
+ * - `selection-label`/`selectionLabel`: What a screen reader hears about the chosen dates: the grid's
71697
+ * description, said again whenever the dates change. `{kind}` is `date`,
71698
+ * `start` while a range holds one end, `range`, or `dates` for `multiple`.
71699
+ * `{start}` and `{end}` are dates written in `locale`, and `{count}` is how
71700
+ * many dates are chosen.
70929
71701
  * - `step`: How far apart the selectable dates are, in days.
70930
71702
  *
70931
71703
  * `<input type="date" step>`'s own unit, counted from `min` where there is
@@ -71080,6 +71852,13 @@ export type CustomElementsSolidJs = {
71080
71852
  * Date Input calls this when its trigger opens the calendar, which is where
71081
71853
  * the APG date picker dialog puts focus. The host is not focusable, so a
71082
71854
  * plain `focus()` on it did nothing and focus stayed on the trigger.
71855
+ * - `showChosen() => void`: Shows the days again, on the month of the chosen date, with the tab stop
71856
+ * on that date, forgetting the month and the day the reader browsed to.
71857
+ *
71858
+ * Date Input calls it each time its panel opens, which is where the APG
71859
+ * date picker dialog puts focus. Measured before this: from August 4, two
71860
+ * presses of Page Down, Escape, and Down again opened on October 4.
71861
+ * A `month` you set stays until the reader pages away from it.
71083
71862
  * - `requestValue(next: string) => boolean`: Refuses every change while read-only. See `readOnly`.
71084
71863
  * - `formResetCallback() => void`: Returns the control to its `defaultValue`, or to its `value` attribute
71085
71864
  * where there is no `default-value`.
@@ -71143,7 +71922,7 @@ export type CustomElementsSolidJs = {
71143
71922
  * Custom selectors for styling elements within the component.
71144
71923
  *
71145
71924
  * - `cell`: One column of a week row. A range is painted on the cells.
71146
- * - `cell-range-end`: The cell of a range's last day, beside `cell`.
71925
+ * - `cell-range-end`: The cell of a range's last day, beside `cell`, or of the day a waiting range is drawn to.
71147
71926
  * - `cell-range-middle`: A cell between a range's ends, beside `cell`.
71148
71927
  * - `cell-range-start`: The cell of a range's first day, beside `cell`.
71149
71928
  * - `day`: The shape inside a cell. A single chosen date is painted on it.
@@ -71169,6 +71948,7 @@ export type CustomElementsSolidJs = {
71169
71948
  * - `periods`: The grid of months or years.
71170
71949
  * - `previous`: The control that moves to the previous month.
71171
71950
  * - `previous-mark`: The glyph on the previous month control, where none is slotted.
71951
+ * - `selection`: The chosen date or range in words, which screen readers hear when it changes. Drawn for screen readers only.
71172
71952
  * - `week`: One row of days.
71173
71953
  * - `weekday`: A column header naming a day of the week. It shows the short name and says the full one.
71174
71954
  *
@@ -71176,7 +71956,11 @@ export type CustomElementsSolidJs = {
71176
71956
  *
71177
71957
  * These can be used to apply styling when a component is in a given state.
71178
71958
  *
71179
- * - `invalid`: While `invalid` is set or `feedback` says what is wrong.
71959
+ * - `blank`: While no date is chosen.
71960
+ * - `invalid`: While `invalid` is set, `feedback` says what is wrong, the picker holds a date outside `min` and `max` or one it bars, or it is `required`, holds no date, and the reader has answered once or a form has refused it.
71961
+ * - `month-view`: While the months of a year are shown, where `max-view` is set.
71962
+ * - `range-pending`: While a `range` holds its first end and waits for the second.
71963
+ * - `year-view`: While a page of years is shown, where `max-view` is `year`.
71180
71964
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
71181
71965
  */
71182
71966
  "helix-headless-date-picker": Partial<
@@ -73818,20 +74602,22 @@ export type CustomElementsSolidJs = {
73818
74602
  *
73819
74603
  * **A date is written in a calendar Date Picker draws**: the locale's own
73820
74604
  * where its months are the Gregorian months, as `th-TH` writes 2569 for 2026,
73821
- * and `gregory` where they are not, as for `fa-IR`. `calendar` picks one of
73822
- * the five.
74605
+ * and `gregory` where they are not, as for `fa-IR`. `calendar` picks any of
74606
+ * them, `persian` and `hebrew` included.
73823
74607
  *
73824
74608
  * ## Attributes & Properties
73825
74609
  *
73826
74610
  * Component attributes and properties that can be applied to the element or by using JavaScript.
73827
74611
  *
73828
74612
  * - `calendar`: The calendar a date is written in: `gregory`, `buddhist`, `japanese`,
73829
- * `roc`, or `iso8601`, the calendars Date Picker and Date Input draw.
73830
- *
73831
- * Absent is the locale's own where it is one of the five, such as
73832
- * `buddhist` for `th-TH`, and `gregory` for every other, such as `persian`
73833
- * for `fa-IR`, so a date written here reads as the same date a Date Picker
73834
- * beside it shows.
74613
+ * `roc`, or `iso8601`, or a calendar with months of its own, such as
74614
+ * `persian`, `hebrew`, `islamic-umalqura`, `ethiopic`, or `chinese`: every
74615
+ * calendar Date Picker and Date Input draw.
74616
+ *
74617
+ * Absent is the locale's own where its months are the Gregorian months,
74618
+ * such as `buddhist` for `th-TH`, and `gregory` for every other, such as
74619
+ * `persian` for `fa-IR`, so a date written here reads as the same date a
74620
+ * Date Picker beside it shows. Write `calendar="persian"` for Mehr 14, 1405.
73835
74621
  * - `date`: The timestamp, in any format `Date` can parse.
73836
74622
  *
73837
74623
  * An ISO string is what an API sends and what `<time datetime>` takes, so it
@@ -73850,6 +74636,9 @@ export type CustomElementsSolidJs = {
73850
74636
  * - `date-style`/`dateStyle`: The locale's own pattern for the date: `full`, `long`, `medium`, or
73851
74637
  * `short`. Set, it stands in for `weekday`, `day`, `month`, `year` and `era`.
73852
74638
  * - `day`: How the day of the month is written, where a date is shown.
74639
+ * - `day-period`/`dayPeriod`: Writes the part of the day in words, such as "in the morning" or "at
74640
+ * night", in its `long`, `short`, or `narrow` form, where `hour` is on a
74641
+ * twelve-hour clock.
73853
74642
  * - `elapsed`: Shows how long ago the timestamp was, in a compact form such as "3h", in
73854
74643
  * place of the date.
73855
74644
  *
@@ -73864,6 +74653,8 @@ export type CustomElementsSolidJs = {
73864
74653
  * Off by default, which draws the date as one run of text, as Shoelace and
73865
74654
  * Web Awesome do. An `elapsed` or `relative` reading is one phrase either
73866
74655
  * way.
74656
+ * - `fractional-second-digits`/`fractionalSecondDigits`: How many digits of a fraction of a second to write after `second`: 1, 2,
74657
+ * or 3, as in 09:41:07.250.
73867
74658
  * - `frozen`: Draws an `elapsed` or `relative` reading once and leaves it, where it
73868
74659
  * would otherwise move on as it goes stale.
73869
74660
  *
@@ -73901,7 +74692,9 @@ export type CustomElementsSolidJs = {
73901
74692
  * - `time-zone`/`timeZone`: The time zone to read the timestamp in.
73902
74693
  *
73903
74694
  * Empty is the runtime's own.
73904
- * - `time-zone-name`/`timeZoneName`: Shows the name of the time zone, in its `long` or `short` form.
74695
+ * - `time-zone-name`/`timeZoneName`: Shows the name of the time zone: `long` or `short`, as Pacific Daylight
74696
+ * Time or PDT, `longOffset` or `shortOffset`, as GMT-07:00 or GMT-7, or
74697
+ * `longGeneric` or `shortGeneric`, as Pacific Time or PT.
73905
74698
  * - `weekday`: How the weekday is written, where one is shown.
73906
74699
  * - `year`: How the year is written, where a date is shown.
73907
74700
  * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
@@ -73932,6 +74725,7 @@ export type CustomElementsSolidJs = {
73932
74725
  * - `day`: The day of the month, with `fields`.
73933
74726
  * - `day-period`: AM or PM, or the locale's word for the part of the day, with `fields`.
73934
74727
  * - `era`: The era, such as AD, with `fields` and `era`.
74728
+ * - `fractional-second`: The fraction of a second, with `fields` and `fractional-second-digits`.
73935
74729
  * - `hour`: The hour, with `fields`.
73936
74730
  * - `minute`: The minute, with `fields`.
73937
74731
  * - `month`: The month, with `fields`.
@@ -74905,6 +75699,7 @@ export type CustomElementsSolidJs = {
74905
75699
  * These can be used to apply styling when a component is in a given state.
74906
75700
  *
74907
75701
  * - `pending`: The button is pending: `pending` is set.
75702
+ * - `pressed`: A Button Group in a selection mode has this button pressed.
74908
75703
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
74909
75704
  */
74910
75705
  "helix-headless-icon-button": Partial<
@@ -75807,7 +76602,8 @@ export type CustomElementsSolidJs = {
75807
76602
  * Each item is a `group` with the role description `slide`, named by its
75808
76603
  * `label` or, without one, by its place in the set, such as "2 of 5", as the
75809
76604
  * APG carousel pattern names a slide. The lightbox supplies both words, so they
75810
- * are translated on the lightbox.
76605
+ * are translated on the lightbox. A `description`, while there is one,
76606
+ * describes the group, so a screen reader says it with the name.
75811
76607
  *
75812
76608
  * An item that is not current is hidden and stays in the DOM, as a `TabPanel`
75813
76609
  * does. Crawlers can read it, it is in the server-rendered markup, and an
@@ -75892,9 +76688,10 @@ export type CustomElementsSolidJs = {
75892
76688
  * buttons that send `--previous`, `--next` and `--close`.
75893
76689
  *
75894
76690
  * **Set `max-zoom` to let a reader zoom into the shown item**, such as `3`.
75895
- * Two fingers pinch it, a double click or a double tap zooms all the way in
75896
- * about the point pressed and back out, and once zoomed one pointer drags it
75897
- * about. `+` and `-` zoom in and out from the keyboard, and `0` puts it back.
76691
+ * Two fingers pinch it, and so does a trackpad pinch or the wheel with Ctrl
76692
+ * held, about the point under the pointer. A double click or a double tap
76693
+ * zooms all the way in about the point pressed and back out, and once zoomed
76694
+ * one pointer drags it about and the wheel moves it. `+` and `-` zoom in and out from the keyboard, and `0` puts it back.
75898
76695
  * The scale and the offset are on the `viewport` part as `--lightbox-zoom`,
75899
76696
  * `--lightbox-pan-x` and `--lightbox-pan-y`, written only while zoomed, and a
75900
76697
  * swipe moves to the next item only while the item is at its own size. With
@@ -76115,6 +76912,8 @@ export type CustomElementsSolidJs = {
76115
76912
  *
76116
76913
  * These can be used to apply styling when a component is in a given state.
76117
76914
  *
76915
+ * - `entering`: From the moment the viewer opens until its entrance has finished.
76916
+ * - `exiting`: From the moment the viewer closes until its exit has finished.
76118
76917
  * - `fullscreen`: While the viewer fills the screen.
76119
76918
  * - `idle`: The user has been still long enough for the controls to hide.
76120
76919
  * - `open`: While the viewer is open.
@@ -79764,6 +80563,7 @@ export type CustomElementsSolidJs = {
79764
80563
  * - `time-day`: Format Date's `day`, forwarded for a time drawn as fields. An elapsed time draws none.
79765
80564
  * - `time-day-period`: Format Date's `day-period`, forwarded for a time drawn as fields. An elapsed time draws none.
79766
80565
  * - `time-era`: Format Date's `era`, forwarded for a time drawn as fields. An elapsed time draws none.
80566
+ * - `time-fractional-second`: Format Date's `fractional-second`, forwarded for a time drawn as fields. An elapsed time draws none.
79767
80567
  * - `time-hour`: Format Date's `hour`, forwarded for a time drawn as fields. An elapsed time draws none.
79768
80568
  * - `time-minute`: Format Date's `minute`, forwarded for a time drawn as fields. An elapsed time draws none.
79769
80569
  * - `time-month`: Format Date's `month`, forwarded for a time drawn as fields. An elapsed time draws none.
@@ -84189,6 +84989,10 @@ export type CustomElementsSolidJs = {
84189
84989
  * `min-steps-between-thumbs` keeps them that many steps apart, and the readout
84190
84990
  * joins the two as `range-text` writes them.
84191
84991
  *
84992
+ * A press on a range's track takes the nearest thumb to the point pressed,
84993
+ * and moving the pointer drags it, as React Aria's and Web Awesome's sliders
84994
+ * do. The thumb takes focus, and `change` is sent as the press ends.
84995
+ *
84192
84996
  * `origin` sets where a single thumb's fill starts: at `min`, at the middle of
84193
84997
  * the track, or at `max`. A balance or an offset from zero fills from the
84194
84998
  * middle, as Zag's slider `origin` does. The fill's ends are published as
@@ -84213,7 +85017,7 @@ export type CustomElementsSolidJs = {
84213
85017
  * |---|---|
84214
85018
  * | Right, Up | Moves the thumb up by `step`. |
84215
85019
  * | Left, Down | Moves the thumb down by `step`. |
84216
- * | Page Up, Page Down | Moves the thumb by a larger step. |
85020
+ * | Page Up, Page Down | Moves the thumb by `page-step`, or by the platform's larger step where it is not set. |
84217
85021
  * | Home, End | Moves the thumb to its lowest or highest value. |
84218
85022
  *
84219
85023
  * Under `readonly` none of these move the thumb, and Tab still reaches it.
@@ -84274,6 +85078,9 @@ export type CustomElementsSolidJs = {
84274
85078
  * - `origin`: Where a single thumb's fill starts: `start` at `min`, `center` at the
84275
85079
  * middle of the track, or `end` at `max`. Absent is `start`. A range fills
84276
85080
  * between its thumbs and ignores it.
85081
+ * - `page-step`/`pageStep`: How far Page Up and Page Down move a thumb, in the slider's own units, as
85082
+ * React Aria's `pageSize` and Zag's `largeStep` do. Absent leaves the keys
85083
+ * to the platform, which moves a tenth of the track.
84277
85084
  * - `range`: Adds a second thumb, so the value is a pair.
84278
85085
  *
84279
85086
  * The pair is one string, `"10,50"`, which is what `value` and
@@ -84506,6 +85313,8 @@ export type CustomElementsSolidJs = {
84506
85313
  *
84507
85314
  * These can be used to apply styling when a component is in a given state.
84508
85315
  *
85316
+ * - `dragging`: A thumb is being dragged, by its thumb or from a press on the track.
85317
+ * - `focus-visible`: A thumb has focus that the keyboard brought, where the browser draws a focus ring.
84509
85318
  * - `invalid`: The slider has an error to show, from the browser's validation or from your `feedback`.
84510
85319
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
84511
85320
  */
@@ -85692,6 +86501,10 @@ export type CustomElementsSolidJs = {
85692
86501
  * region. The current stage's button carries `aria-current="step"`, and only
85693
86502
  * the button, so the state is said once, on the control.
85694
86503
  *
86504
+ * A stage's `content`, while it holds anything, is a group named by the
86505
+ * stage's name, so a screen reader moving into it hears which stage it
86506
+ * belongs to.
86507
+ *
85695
86508
  * ## Attributes & Properties
85696
86509
  *
85697
86510
  * Component attributes and properties that can be applied to the element or by using JavaScript.
@@ -86754,10 +87567,18 @@ export type CustomElementsSolidJs = {
86754
87567
  * the tab list lands on the panel's first link or control where there is one,
86755
87568
  * and on the panel itself where there is none.
86756
87569
  *
87570
+ * **Set `lazy` for a panel that is expensive to draw.** Its content waits in a
87571
+ * `<template>` inside it, and goes into the panel the first time the panel is
87572
+ * shown, so it costs nothing until a reader opens that tab. Once in, it stays.
87573
+ * The panel sends `helix-load` at the same moment, for content your code
87574
+ * renders itself.
87575
+ *
86757
87576
  * ## Attributes & Properties
86758
87577
  *
86759
87578
  * Component attributes and properties that can be applied to the element or by using JavaScript.
86760
87579
  *
87580
+ * - `lazy`: Whether the panel's content waits in a `<template>` until the panel is
87581
+ * first shown.
86761
87582
  * - `selected`: Whether this panel is the visible one.
86762
87583
  * - `value`: Pairs the panel with the tab of the same value.
86763
87584
  * - `label`: The name of the panel, which is the text of the tab that opens it.
@@ -86791,11 +87612,17 @@ export type CustomElementsSolidJs = {
86791
87612
  * browser harness's awaits it alone: a browser always runs the frame, and a
86792
87613
  * timer beside it was a bet on how long one takes, which a busy run lost. (property only) (readonly)
86793
87614
  *
87615
+ * ## Events
87616
+ *
87617
+ * Events that will be emitted by the component.
87618
+ *
87619
+ * - `helix-load`: Fired the first time a `lazy` panel is shown, once its template's content is in.
87620
+ *
86794
87621
  * ## Slots
86795
87622
  *
86796
87623
  * Areas where markup can be added to the component.
86797
87624
  *
86798
- * - `(default)`: The panel's content.
87625
+ * - `(default)`: The panel's content. Under `lazy`, a `<template>` holding it.
86799
87626
  *
86800
87627
  * ## CSS Parts
86801
87628
  *
@@ -86807,6 +87634,7 @@ export type CustomElementsSolidJs = {
86807
87634
  *
86808
87635
  * These can be used to apply styling when a component is in a given state.
86809
87636
  *
87637
+ * - `loaded`: Once a `lazy` panel has been shown and its content is in.
86810
87638
  * - `selected`: While its tab is the one selected.
86811
87639
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
86812
87640
  */
@@ -86859,9 +87687,9 @@ export type CustomElementsSolidJs = {
86859
87687
  * | Enter, Space | Selects the tab with focus, or follows its link. |
86860
87688
  * | Tab | Leaves the list for the selected panel. |
86861
87689
  *
86862
- * Removing the selected tab selects the first enabled tab that is left, and
86863
- * `active` says so, with `helix-activate`. Where the removed tab had focus,
86864
- * focus moves to the tab now selected.
87690
+ * Removing the selected tab selects the enabled tab beside it, the next one
87691
+ * or else the one before, and `active` says so, with `helix-activate`. Where
87692
+ * the removed tab had focus, focus moves to the tab now selected.
86865
87693
  *
86866
87694
  * **More tabs than fit.** With `scroll-controls`, a strip that scrolls shows a
86867
87695
  * button at each end it can scroll toward, as Web Awesome's tab group does,
@@ -86967,6 +87795,8 @@ export type CustomElementsSolidJs = {
86967
87795
  * - `(default)`: The tabs, as direct children of this element.
86968
87796
  * - `indicator`: A mark of your own, drawn inside the `indicator` part, where `--indicator-x`, `--indicator-y`, `--indicator-inline-size` and `--indicator-block-size` reach it.
86969
87797
  * - `panels`: The panels, as direct children of this element. Panels inside a wrapper are not paired with tabs, because pairing reads only the direct children.
87798
+ * - `scroll-end-icon`: Replaces the glyph on the button that scrolls the strip toward its end.
87799
+ * - `scroll-start-icon`: Replaces the glyph on the button that scrolls the strip toward its start.
86970
87800
  *
86971
87801
  * ## Methods
86972
87802
  *
@@ -86988,7 +87818,9 @@ export type CustomElementsSolidJs = {
86988
87818
  * - `indicator`: The marker that moves to the selected tab. It carries the selected tab's place and size as `--indicator-x`, `--indicator-y`, `--indicator-inline-size` and `--indicator-block-size`, and `data-placed` once it has been placed, for a mark you draw and animate yourself.
86989
87819
  * - `panels`: The panel container.
86990
87820
  * - `scroll-end`: The button that scrolls the strip toward its end, shown under `scroll-controls` while there is more that way.
87821
+ * - `scroll-end-mark`: The glyph on that button, where none is slotted.
86991
87822
  * - `scroll-start`: The button that scrolls the strip toward its start, shown under `scroll-controls` while there is more that way.
87823
+ * - `scroll-start-mark`: The glyph on that button, where none is slotted.
86992
87824
  * - `tabs`: The tab list.
86993
87825
  *
86994
87826
  * ## CSS States
@@ -87016,8 +87848,8 @@ export type CustomElementsSolidJs = {
87016
87848
  * can: a press on its `dismiss` mark, or Delete or Backspace while the tab
87017
87849
  * has focus, sends `helix-dismiss`. The tab does not remove itself, because
87018
87850
  * your code owns the set, so remove the tab and its panel in your handler.
87019
- * Focus moves to the tab beside it, and the tab set selects a tab that is
87020
- * left.
87851
+ * Focus moves to the tab beside it, and where the tab was selected, the tab
87852
+ * set selects that same tab.
87021
87853
  * The tab says the key through `aria-keyshortcuts`, and the mark is for the
87022
87854
  * pointer, hidden from screen readers.
87023
87855
  *
@@ -87074,6 +87906,7 @@ export type CustomElementsSolidJs = {
87074
87906
  * Areas where markup can be added to the component.
87075
87907
  *
87076
87908
  * - `(default)`: The tab's label.
87909
+ * - `dismiss-icon`: Replaces the glyph on the mark that closes a `dismissible` tab.
87077
87910
  *
87078
87911
  * ## Methods
87079
87912
  *
@@ -87098,6 +87931,7 @@ export type CustomElementsSolidJs = {
87098
87931
  * Custom selectors for styling elements within the component.
87099
87932
  *
87100
87933
  * - `dismiss`: The mark a pointer presses to close a `dismissible` tab.
87934
+ * - `dismiss-mark`: The glyph on that mark, where none is slotted.
87101
87935
  * - `tab`: The tab itself.
87102
87936
  *
87103
87937
  * ## CSS States
@@ -87662,20 +88496,25 @@ export type CustomElementsSolidJs = {
87662
88496
  * `seconds`, because that is what the form
87663
88497
  * submits, what `min` and `max` compare against, and what sorts correctly as a
87664
88498
  * string. While idle, the field shows the time in the user's locale format.
87665
- * Once the caret is in the field, it shows the value itself, because a
87666
- * formatted time such as `2:30 PM` cannot be typed back and `Intl` has no
87667
- * parser for it.
88499
+ * Once the caret is in the field, it shows the value itself. You can type
88500
+ * `14:30`, or a time as you write one, such as `2:30 PM`, `2.30pm`, or
88501
+ * `14h30`, and the field reads it as you leave it, with AM and PM in the
88502
+ * locale's words.
87668
88503
  *
87669
88504
  * Typing sends `input` on each keystroke and `change` when you leave the
87670
88505
  * field. The trigger and ArrowDown open the list, and so does a press into the
87671
- * field; Tab into the field opens nothing. In the list, the arrow keys, typed digits and PageUp and PageDown
88506
+ * field; Tab into the field opens nothing. The text field is a `combobox`
88507
+ * with `aria-haspopup="dialog"`, `aria-expanded`, and `aria-controls`, since
88508
+ * Down opens the list from it. In the list, the arrow keys, typed digits and PageUp and PageDown
87672
88509
  * move through the times, and Enter, Space or a click chooses one and closes
87673
88510
  * the panel. With `variant="wheels"` each wheel moves the time as you turn it,
87674
88511
  * the panel stays open, and Enter or Escape closes it.
87675
88512
  *
87676
88513
  * With `segmented`, the field is a row of segments in place of the text: an
87677
88514
  * hour, a minute, and AM or PM where the clock has them, each set with digits
87678
- * or the arrow keys. Alt+Down opens the list from a segment.
88515
+ * or the arrow keys. Alt+Down opens the list from a segment. A `range` is two
88516
+ * rows with a dash between them, the start and the end, and `multiple` keeps
88517
+ * the text.
87679
88518
  *
87680
88519
  * Text that is not a time gives the form an empty value, as a native time
87681
88520
  * field does, and `value` keeps the text so it can be corrected.
@@ -87707,6 +88546,10 @@ export type CustomElementsSolidJs = {
87707
88546
  *
87708
88547
  * Empty leaves the attribute off, which is the browser's default and is what
87709
88548
  * lets autofill work at all.
88549
+ * - `clearable`: Whether the field shows a button that empties it, as Input's `clearable`
88550
+ * does. Shown only while the field holds something to clear and is neither
88551
+ * disabled nor read-only.
88552
+ * - `clear-label`/`clearLabel`: The accessible name of the clear button, which shows only an icon.
87710
88553
  * - `disable-times`/`disableTimes`: Times that cannot be chosen, as `HH:mm`, separated by commas or spaces.
87711
88554
  *
87712
88555
  * Handed to the list, which offers them as unavailable, and checked against
@@ -87755,6 +88598,8 @@ export type CustomElementsSolidJs = {
87755
88598
  * never something this element would refuse to read back.
87756
88599
  * - `trigger-label`/`triggerLabel`: The name of the button that opens the list, read by screen readers.
87757
88600
  * - `unavailable-message`/`unavailableMessage`: The message shown when `disable-times` bars a time.
88601
+ * - `unreadable-message`/`unreadableMessage`: The message for text that is no time, where `bad-input-message` is not
88602
+ * set. `{mode}` is `single`, `range`, or `multiple`, and `{shape}` is `HH:mm`, or `HH:mm:ss` with `seconds`.
87758
88603
  * - `variant`: Whether the panel shows one list of times or a column for each part of the
87759
88604
  * time.
87760
88605
  *
@@ -87777,6 +88622,10 @@ export type CustomElementsSolidJs = {
87777
88622
  * - `incomplete-message`/`incompleteMessage`: What a row of segments reports while some segments are set and others
87778
88623
  * are not, where `bad-input-message` is not set. `{kind}` is `date` or
87779
88624
  * `time`.
88625
+ * - `range-end-label`/`rangeEndLabel`: What a screen reader hears before the segments of a range's second date
88626
+ * or time, after each segment's own name.
88627
+ * - `range-start-label`/`rangeStartLabel`: What a screen reader hears before the segments of a range's first date
88628
+ * or time, after each segment's own name: "month, Start, Stay".
87780
88629
  * - `segmented`: Whether the field is a row of segments, one for each part of the date or
87781
88630
  * time, in place of a line of text.
87782
88631
  *
@@ -87928,6 +88777,7 @@ export type CustomElementsSolidJs = {
87928
88777
  * - `helix-before-change`: Fired before the time changes. Cancelable: canceling it stops the change and leaves the decision to you.
87929
88778
  * - `helix-before-close`: Fired before the list closes. Cancelable: canceling it keeps the list open and leaves the decision to you.
87930
88779
  * - `helix-before-open`: Fired before the list opens. Cancelable: canceling it keeps the list closed and leaves the decision to you.
88780
+ * - `helix-clear`: Fired after the clear button has emptied the field, after `input` and `change`.
87931
88781
  * - `input`: Fired after the value changes.
87932
88782
  * - `toggle`: Fired after the list opens or closes, with `newState` and `oldState`.
87933
88783
  *
@@ -87935,6 +88785,7 @@ export type CustomElementsSolidJs = {
87935
88785
  *
87936
88786
  * Areas where markup can be added to the component.
87937
88787
  *
88788
+ * - `clear-icon`: Replaces the cross on the clear button, under `clearable`.
87938
88789
  * - `end`: Content after the time, before the trigger, such as a clear button.
87939
88790
  * - `feedback`: The message that says what is wrong with the value.
87940
88791
  * - `hint`: Help under the field.
@@ -88008,6 +88859,7 @@ export type CustomElementsSolidJs = {
88008
88859
  *
88009
88860
  * Custom selectors for styling elements within the component.
88010
88861
  *
88862
+ * - `clear`: The button that empties the field, under `clearable`, while it holds a time.
88011
88863
  * - `control`: The text input.
88012
88864
  * - `feedback`: The message that says what is wrong with the value.
88013
88865
  * - `field`: The box that holds the text and the trigger.
@@ -88053,6 +88905,7 @@ export type CustomElementsSolidJs = {
88053
88905
  * - `picker-option-item-selected`: The row of a chosen time: the one time, or either end of a range.
88054
88906
  * - `picker-option-label`: The option's label.
88055
88907
  * - `picker-option-text`: The label and the caption, as one column.
88908
+ * - `range-separator`: The dash between a range's two rows of segments, in `segmented`, beside `literal`.
88056
88909
  * - `rest`: The count of times held beyond the ones shown. A `<button>` with `expandable`, and a `<span>` without it.
88057
88910
  * - `segment`: One part of the time, an hour, a minute, a second or AM and PM, in `segmented`.
88058
88911
  * - `segment-placeholder`: A segment with nothing in it yet. Applied with `segment`.
@@ -88073,6 +88926,7 @@ export type CustomElementsSolidJs = {
88073
88926
  *
88074
88927
  * These can be used to apply styling when a component is in a given state.
88075
88928
  *
88929
+ * - `blank`: The field holds no time.
88076
88930
  * - `invalid`: The control has an error to show, from the browser's validation or from your `feedback`.
88077
88931
  * - `open`: While the clock is open.
88078
88932
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
@@ -88129,7 +88983,10 @@ export type CustomElementsSolidJs = {
88129
88983
  * host's `aria-label` or its `aria-labelledby`. A development build warns
88130
88984
  * where all four are empty. The list is described by the hint, or by the
88131
88985
  * message in `feedback` in its place, and carries `aria-multiselectable` with
88132
- * a `mode` and `aria-invalid` while `feedback` says what is wrong. The wheels
88986
+ * a `mode`. It carries `aria-invalid` while `feedback` says what is wrong,
88987
+ * while it holds a time outside `min` and `max` or one the picker does not
88988
+ * offer, and, for a `required` picker with no time, once the reader has
88989
+ * chosen one or a form has refused the picker. The wheels
88133
88990
  * are a `group` with that name, holding one `listbox` per wheel, named "Hour",
88134
88991
  * "Minute", "Second" and "AM/PM" in the page's language, and each described
88135
88992
  * the same way.
@@ -88487,7 +89344,7 @@ export type CustomElementsSolidJs = {
88487
89344
  * - `list-loading`: The text shown while the options load.
88488
89345
  * - `list-search`: The region that holds the filter field.
88489
89346
  * - `list-search-field`: The filter field.
88490
- * - `option`: One time in the list. It carries `data-between` inside a range.
89347
+ * - `option`: One time in the list. It carries `data-between` inside a range, and inside the run to the time under the pointer while a range waits for its second end.
88491
89348
  * - `option-between`: A time inside a chosen range, excluding its ends, beside `option`.
88492
89349
  * - `option-description`: The caption under the time's label, when there is one.
88493
89350
  * - `option-item`: The row.
@@ -88501,7 +89358,8 @@ export type CustomElementsSolidJs = {
88501
89358
  * These can be used to apply styling when a component is in a given state.
88502
89359
  *
88503
89360
  * - `blank`: While no time is chosen.
88504
- * - `invalid`: While `invalid` is set or `feedback` says what is wrong.
89361
+ * - `invalid`: While `invalid` is set, `feedback` says what is wrong, or the list carries `aria-invalid`.
89362
+ * - `range-pending`: While a `range` holds its first time and waits for the second.
88505
89363
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
88506
89364
  */
88507
89365
  "helix-headless-time-picker": Partial<
@@ -88737,8 +89595,9 @@ export type CustomElementsSolidJs = {
88737
89595
  *
88738
89596
  * **Each item runs its own timer.** A timer held by the region would restart
88739
89597
  * with each new message, and the last of three messages would stay for nine
88740
- * seconds. It pauses while the pointer or focus is on the message, and while
88741
- * the page is hidden, so a message is not spent in a background tab.
89598
+ * seconds. It pauses while the pointer or focus is on the message or anywhere
89599
+ * in the region's stack, and while the page is hidden, so a message is not
89600
+ * spent in a background tab.
88742
89601
  *
88743
89602
  * **Each message is an `alertdialog` named by its words**, which is how a reader
88744
89603
  * who moves into the stack hears which message they are on. Give it a
@@ -88747,10 +89606,11 @@ export type CustomElementsSolidJs = {
88747
89606
  * says each message once as it arrives, a `danger` one assertively, so a
88748
89607
  * message is never a live region of its own.
88749
89608
  *
88750
- * A touch or a pen swipes a message toward the end of the line, and past
88751
- * halfway, or quickly, dismisses it through the same `helix-dismiss` as its
88752
- * control. While it moves, the distance is on the `item` part as
88753
- * `--toast-swipe-x`.
89609
+ * A touch or a pen swipes a message toward the end of the line, or toward the
89610
+ * edge the region's `swipe-direction` names, and past halfway, or quickly,
89611
+ * dismisses it through the same `helix-dismiss` as its control. While it
89612
+ * moves, the distance is on the `item` part as `--toast-swipe-x` or
89613
+ * `--toast-swipe-y`.
88754
89614
  *
88755
89615
  * **Escape dismisses the message holding focus**, through the same
88756
89616
  * `helix-dismiss`, and focus moves to the next message.
@@ -88852,6 +89712,7 @@ export type CustomElementsSolidJs = {
88852
89712
  *
88853
89713
  * - `--toast-duration`: How long this message stays, in milliseconds, for a progress hint.
88854
89714
  * - `--toast-swipe-x`: How far a swipe has moved the message across, in pixels, toward the right.
89715
+ * - `--toast-swipe-y`: How far a swipe has moved the message down, in pixels, under a `swipe-direction` of `top` or `bottom`.
88855
89716
  *
88856
89717
  * ## CSS Parts
88857
89718
  *
@@ -88873,7 +89734,7 @@ export type CustomElementsSolidJs = {
88873
89734
  * These can be used to apply styling when a component is in a given state.
88874
89735
  *
88875
89736
  * - `closed`: The message has been dismissed and is hidden, or leaving.
88876
- * - `paused`: The dismiss timer is paused, while a pointer or focus is on the message, or while the page is hidden.
89737
+ * - `paused`: The dismiss timer is paused, while a pointer or focus is on the message or in the stack, or while the page is hidden.
88877
89738
  * - `waiting`: The region holds the message back, past its `max-visible`, until a message before it goes.
88878
89739
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
88879
89740
  */
@@ -88915,7 +89776,12 @@ export type CustomElementsSolidJs = {
88915
89776
  * to render them from: it appends a message of the region's own tier and
88916
89777
  * removes it once it has been dismissed and has finished leaving. Messages
88917
89778
  * you render yourself stay yours, and the region never removes them. A touch
88918
- * or a pen swipes a message away toward the end of the line.
89779
+ * or a pen swipes a message away toward the end of the line, or toward the
89780
+ * edge `swipe-direction` names.
89781
+ *
89782
+ * **Every message's timer waits while a pointer or focus is in the stack**, as
89783
+ * React Aria's and Radix's regions do, so a reader moving from one message to
89784
+ * the next does not lose the one behind them.
88919
89785
  *
88920
89786
  * **The stack is in the top layer.** The `region` part is a `popover="manual"`
88921
89787
  * shown while a message is showing, and shown again above a modal dialog that
@@ -88980,6 +89846,8 @@ export type CustomElementsSolidJs = {
88980
89846
  * consumer's server markup does not have. A sheet carries the resting
88981
89847
  * arrangement in its own `:host` rule and the selectors describe only the
88982
89848
  * departures, which is what `orientation` does.
89849
+ * - `swipe-direction`/`swipeDirection`: The edge a touch or a pen swipes a message toward to dismiss it: `end`,
89850
+ * the end of the line, or `start`, `top` or `bottom`. Unset is `end`.
88983
89851
  * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
88984
89852
  *
88985
89853
  * **Named `whenSettled` because `settled` is taken four times over**, by
@@ -89087,7 +89955,7 @@ export type CustomElementsSolidJs = {
89087
89955
  * | Right, Down | Moves to the next item, from the last back to the first. In a single group, chooses it. |
89088
89956
  * | Left, Up | Moves to the item before, from the first round to the last. In a single group, chooses it. |
89089
89957
  * | Home, End | Moves to the first or the last item. In a single group, chooses it. |
89090
- * | Space, Enter | Chooses the focused item, or presses or releases it in a multiple group. |
89958
+ * | Space, Enter | Chooses the focused item, or presses or releases it in a multiple group. With `allow-empty-selection`, takes back the chosen item. |
89091
89959
  *
89092
89960
  * Left and Right swap on a right-to-left page, and a disabled item is passed
89093
89961
  * over. A single group is a `radiogroup` of items with `role="radio"` and
@@ -89099,6 +89967,11 @@ export type CustomElementsSolidJs = {
89099
89967
  *
89100
89968
  * Component attributes and properties that can be applied to the element or by using JavaScript.
89101
89969
  *
89970
+ * - `allow-empty-selection`/`allowEmptySelection`: Whether a press on the chosen item, or Space or Enter on it, takes it
89971
+ * back so nothing is chosen, as React Aria's `ToggleButtonGroup` and
89972
+ * Radix's `ToggleGroup` do in a single group. Absent, a single group always
89973
+ * keeps its choice once it has one, as a radio group does. A multiple group
89974
+ * releases a pressed item either way.
89102
89975
  * - `label-placement`/`labelPlacement`: Where the group's label sits. `start` puts it on the track's line.
89103
89976
  *
89104
89977
  * Absent is above, which is what a field looks like and what almost every
@@ -89444,13 +90317,13 @@ export type CustomElementsSolidJs = {
89444
90317
  *
89445
90318
  * Custom selectors for styling elements within the component.
89446
90319
  *
89447
- * - `item`: The radio button.
90320
+ * - `item`: The button: a radio in a group where one is chosen, and a button with `aria-pressed` on its own or in a group where several can be.
89448
90321
  *
89449
90322
  * ## CSS States
89450
90323
  *
89451
90324
  * These can be used to apply styling when a component is in a given state.
89452
90325
  *
89453
- * - `pressed`: The item is pressed, in a group where several can be.
90326
+ * - `pressed`: The item is pressed, on its own or in a group where several can be.
89454
90327
  * - `selected`: The item is chosen.
89455
90328
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
89456
90329
  */
@@ -89861,6 +90734,17 @@ export type CustomElementsSolidJs = {
89861
90734
  * least distance that brings it on screen, so the stop that points at it is
89862
90735
  * on screen too.
89863
90736
  *
90737
+ * **A stop's `effect` runs as the tour reaches it**, before it is shown, and
90738
+ * the stop waits for a promise it returns, with `:state(preparing)` on the
90739
+ * tour meanwhile. A function it returns runs when the tour leaves the stop.
90740
+ *
90741
+ * **A press outside the current stop and its target does nothing by
90742
+ * default**, so a reader can use the page the tour is describing. Set
90743
+ * `outside-press="close"` to end the tour on one, through `helix-before-close`
90744
+ * as Skip does, or `outside-press="block"` to refuse it, so the stop and its
90745
+ * target are all a pointer can reach while the tour runs, as Zag's
90746
+ * `preventInteraction` does.
90747
+ *
89864
90748
  * **Keyboard.** Focus is on the current stop's panel, which is not in the
89865
90749
  * `Tab` order itself.
89866
90750
  *
@@ -89898,6 +90782,9 @@ export type CustomElementsSolidJs = {
89898
90782
  * `undefined` until somebody sets one.
89899
90783
  * - `label`: The tour's name, read by screen readers, such as "Getting started".
89900
90784
  * - `next-label`/`nextLabel`: Label for the control that goes on.
90785
+ * - `outside-press`/`outsidePress`: What a press outside the current stop and its target does while the tour
90786
+ * runs. Unset, nothing: the page stays usable. `close` ends the tour, as
90787
+ * Skip does, and `block` refuses the press.
89901
90788
  * - `progress`: Draws each stop's place in the run in its panel, as well as saying it.
89902
90789
  * - `progress-label`/`progressLabel`: Each stop's place in the run, with `{index}` and `{count}` filled in and
89903
90790
  * written in the locale. Translate it with the rest of your text.
@@ -90001,6 +90888,7 @@ export type CustomElementsSolidJs = {
90001
90888
  * These can be used to apply styling when a component is in a given state.
90002
90889
  *
90003
90890
  * - `open`: While the tour is running.
90891
+ * - `preparing`: While the tour waits for the current stop's `effect` before showing the stop.
90004
90892
  * - `waiting`: While the tour waits at a `wait` stop for its target to be on the page.
90005
90893
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
90006
90894
  */
@@ -90037,6 +90925,13 @@ export type CustomElementsSolidJs = {
90037
90925
  * get Back, Next, and Skip, already wired. Slot your own `actions` and drive
90038
90926
  * them with `next()`, `back()`, and `skip()` on the root.
90039
90927
  *
90928
+ * **Set `effect` to prepare the page for a stop**, such as opening the menu
90929
+ * it points into or loading what it describes. It is a function, set from
90930
+ * script, that the tour runs as it reaches the stop. Return a promise and the
90931
+ * stop waits for it, and the tour has `:state(preparing)` meanwhile; return a
90932
+ * function, or resolve to one, and the tour runs it when it leaves the stop.
90933
+ * Zag's tour step has the same `effect`.
90934
+ *
90040
90935
  * **`for` is an id, as with `Tooltip`**, so you can point at a target elsewhere
90041
90936
  * on the page from markup. It resolves against the stop's root node, so a stop
90042
90937
  * inside a shadow tree points at a target in that tree.
@@ -90078,6 +90973,8 @@ export type CustomElementsSolidJs = {
90078
90973
  *
90079
90974
  * Reflected, because the styled tier places a dialog and a floating panel by
90080
90975
  * it, and unset at rest, so no default is written onto the host.
90976
+ * - `effect`: Run as the tour reaches the stop, before it is shown: see the description
90977
+ * above. A function, so it is set from script and has no attribute. (property only)
90081
90978
  * - `target`: The element the stop points at, or `null` when no element has the `for` id. (property only) (readonly)
90082
90979
  * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
90083
90980
  *
@@ -90160,6 +91057,8 @@ export type CustomElementsSolidJs = {
90160
91057
  *
90161
91058
  * These can be used to apply styling when a component is in a given state.
90162
91059
  *
91060
+ * - `entering`: From the moment the stop is shown until its entrance has finished.
91061
+ * - `exiting`: From the moment the stop is left until its exit has finished.
90163
91062
  * - `placed-bottom`: The panel sits below its target.
90164
91063
  * - `placed-left`: The panel sits to the left of its target.
90165
91064
  * - `placed-right`: The panel sits to the right of its target.
@@ -91932,6 +92831,8 @@ export type CustomCssProperties = {
91932
92831
  "--toast-duration"?: (string) | undefined;
91933
92832
  /** How far a swipe has moved the message across, in pixels, toward the right. */
91934
92833
  "--toast-swipe-x"?: (string) | undefined;
92834
+ /** How far a swipe has moved the message down, in pixels, under a `swipe-direction` of `top` or `bottom`. */
92835
+ "--toast-swipe-y"?: (string) | undefined;
91935
92836
  /** The lit box's height, in pixels, padding included. Written on the spotlight while it lights a target. */
91936
92837
  "--tour-spotlight-height"?: (string) | undefined;
91937
92838
  /** The lit box's width, in pixels, padding included. Written on the spotlight while it lights a target. */