@fusion.dev/helix-headless 0.159.0 → 0.161.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 (61) hide show
  1. package/custom-elements.json +2980 -189
  2. package/dist/canvas/root/canvas-root.d.ts +59 -2
  3. package/dist/canvas/root/canvas-root.js +123 -8
  4. package/dist/chat/message/chat-message.d.ts +8 -0
  5. package/dist/chat/message/chat-message.js +11 -0
  6. package/dist/chat/root/chat-root.d.ts +47 -1
  7. package/dist/chat/root/chat-root.js +130 -4
  8. package/dist/code-block/lines.d.ts +12 -0
  9. package/dist/code-block/lines.js +41 -0
  10. package/dist/code-block/root/code-block-root.d.ts +88 -5
  11. package/dist/code-block/root/code-block-root.js +154 -10
  12. package/dist/date-input/root/date-input-root.d.ts +108 -19
  13. package/dist/date-input/root/date-input-root.js +112 -13
  14. package/dist/date-picker/root/date-picker-root.d.ts +81 -16
  15. package/dist/date-picker/root/date-picker-root.js +140 -36
  16. package/dist/element-events.generated.js +6 -0
  17. package/dist/format-date/fields.js +1 -0
  18. package/dist/format-date/options.d.ts +3 -1
  19. package/dist/format-date/options.js +4 -1
  20. package/dist/format-date/root/format-date-root.d.ts +27 -11
  21. package/dist/format-date/root/format-date-root.js +6 -0
  22. package/dist/listbox/root/listbox-root.js +5 -0
  23. package/dist/notifications/notification/notification.d.ts +1 -0
  24. package/dist/notifications/notification/notification.js +2 -1
  25. package/dist/slider/root/slider-root.d.ts +54 -3
  26. package/dist/slider/root/slider-root.js +124 -2
  27. package/dist/splitter/root/splitter-root.d.ts +15 -0
  28. package/dist/splitter/root/splitter-root.js +16 -2
  29. package/dist/table/grid-controller.d.ts +7 -1
  30. package/dist/table/grid-controller.js +9 -1
  31. package/dist/table/root/table-root.d.ts +122 -0
  32. package/dist/table/root/table-root.js +293 -17
  33. package/dist/table/row/table-row.d.ts +41 -0
  34. package/dist/table/row/table-row.js +56 -2
  35. package/dist/time-input/root/time-input-root.d.ts +55 -7
  36. package/dist/time-input/root/time-input-root.js +70 -10
  37. package/dist/time-picker/root/time-picker-root.d.ts +27 -5
  38. package/dist/time-picker/root/time-picker-root.js +52 -13
  39. package/dist/timeline/item/timeline-item.d.ts +47 -10
  40. package/dist/timeline/item/timeline-item.js +36 -4
  41. package/dist/toggle/group/toggle-group.d.ts +18 -1
  42. package/dist/toggle/group/toggle-group.js +8 -2
  43. package/dist/toggle/root/toggle-root.d.ts +2 -2
  44. package/dist/toggle/root/toggle-root.js +2 -1
  45. package/dist/video-playlist/item/video-playlist-item.d.ts +11 -0
  46. package/dist/video-playlist/item/video-playlist-item.js +5 -0
  47. package/dist/video-playlist/menu/video-playlist-menu.d.ts +6 -0
  48. package/dist/video-playlist/menu/video-playlist-menu.js +11 -0
  49. package/dist/video-playlist/root/video-playlist-root.d.ts +59 -5
  50. package/dist/video-playlist/root/video-playlist-root.js +82 -10
  51. package/dist/virtual-list/fill.d.ts +6 -1
  52. package/dist/virtual-list/fill.js +1 -1
  53. package/dist/virtual-list/keys.d.ts +8 -0
  54. package/dist/virtual-list/keys.js +20 -0
  55. package/dist/virtual-list/root/virtual-list-root.d.ts +98 -13
  56. package/dist/virtual-list/root/virtual-list-root.js +195 -20
  57. package/lint.json +1 -1
  58. package/package.json +5 -5
  59. package/types/jsx.d.ts +1596 -224
  60. package/types/vue.d.ts +404 -49
  61. package/types/words.d.ts +151 -0
package/types/jsx.d.ts CHANGED
@@ -3405,6 +3405,10 @@ what the controls drive rather than the mechanism. */
3405
3405
  /** The name of the group of controls, read by screen readers, which names
3406
3406
  what the controls drive rather than the mechanism. */
3407
3407
  controlsLabel?: (HelixHeadlessCanvas["controlsLabel"]) | undefined;
3408
+ /** What screen readers hear after a copy, with `{count}` for the cards copied. */
3409
+ "copied-label"?: (HelixHeadlessCanvas["copiedLabel"]) | undefined;
3410
+ /** What screen readers hear after a copy, with `{count}` for the cards copied. */
3411
+ copiedLabel?: (HelixHeadlessCanvas["copiedLabel"]) | undefined;
3408
3412
  /** The board's name where `label` is empty. */
3409
3413
  "fallback-label"?: (HelixHeadlessCanvas["fallbackLabel"]) | undefined;
3410
3414
  /** The board's name where `label` is empty. */
@@ -3492,6 +3496,10 @@ walk the cards. */
3492
3496
  /** The text announced when a connection's end is picked up, with `{from}` and
3493
3497
  `{to}`. */
3494
3498
  reconnectingLabel?: (HelixHeadlessCanvas["reconnectingLabel"]) | undefined;
3499
+ /** What screen readers hear after a move or a resize is made again. */
3500
+ "redone-label"?: (HelixHeadlessCanvas["redoneLabel"]) | undefined;
3501
+ /** What screen readers hear after a move or a resize is made again. */
3502
+ redoneLabel?: (HelixHeadlessCanvas["redoneLabel"]) | undefined;
3495
3503
  /** What screen readers hear after a key resizes a card, with `{name}` for the
3496
3504
  card and `{width}` and `{height}` for its new size, in the document's
3497
3505
  units. */
@@ -3594,6 +3602,10 @@ told the same. A tone left out is not read. */
3594
3602
  "two-finger-hint-label"?: (HelixHeadlessCanvas["twoFingerHintLabel"]) | undefined;
3595
3603
  /** The hint shown when one finger swipes over the board with `gestures="cooperative"`. */
3596
3604
  twoFingerHintLabel?: (HelixHeadlessCanvas["twoFingerHintLabel"]) | undefined;
3605
+ /** What screen readers hear after a move or a resize is undone. */
3606
+ "undone-label"?: (HelixHeadlessCanvas["undoneLabel"]) | undefined;
3607
+ /** What screen readers hear after a move or a resize is undone. */
3608
+ undoneLabel?: (HelixHeadlessCanvas["undoneLabel"]) | undefined;
3597
3609
  /** The line shown while the board, with `gestures="activate"`, has the gestures. */
3598
3610
  "using-label"?: (HelixHeadlessCanvas["usingLabel"]) | undefined;
3599
3611
  /** The line shown while the board, with `gestures="activate"`, has the gestures. */
@@ -3841,6 +3853,10 @@ what the controls drive rather than the mechanism. */
3841
3853
  /** The name of the group of controls, read by screen readers, which names
3842
3854
  what the controls drive rather than the mechanism. */
3843
3855
  "prop:controlsLabel"?: (HelixHeadlessCanvas["controlsLabel"]) | undefined;
3856
+ /** What screen readers hear after a copy, with `{count}` for the cards copied. */
3857
+ "attr:copied-label"?: (HelixHeadlessCanvas["copiedLabel"]) | undefined;
3858
+ /** What screen readers hear after a copy, with `{count}` for the cards copied. */
3859
+ "prop:copiedLabel"?: (HelixHeadlessCanvas["copiedLabel"]) | undefined;
3844
3860
  /** The board's name where `label` is empty. */
3845
3861
  "attr:fallback-label"?: (HelixHeadlessCanvas["fallbackLabel"]) | undefined;
3846
3862
  /** The board's name where `label` is empty. */
@@ -3928,6 +3944,10 @@ walk the cards. */
3928
3944
  /** The text announced when a connection's end is picked up, with `{from}` and
3929
3945
  `{to}`. */
3930
3946
  "prop:reconnectingLabel"?: (HelixHeadlessCanvas["reconnectingLabel"]) | undefined;
3947
+ /** What screen readers hear after a move or a resize is made again. */
3948
+ "attr:redone-label"?: (HelixHeadlessCanvas["redoneLabel"]) | undefined;
3949
+ /** What screen readers hear after a move or a resize is made again. */
3950
+ "prop:redoneLabel"?: (HelixHeadlessCanvas["redoneLabel"]) | undefined;
3931
3951
  /** What screen readers hear after a key resizes a card, with `{name}` for the
3932
3952
  card and `{width}` and `{height}` for its new size, in the document's
3933
3953
  units. */
@@ -4030,6 +4050,10 @@ told the same. A tone left out is not read. */
4030
4050
  "attr:two-finger-hint-label"?: (HelixHeadlessCanvas["twoFingerHintLabel"]) | undefined;
4031
4051
  /** The hint shown when one finger swipes over the board with `gestures="cooperative"`. */
4032
4052
  "prop:twoFingerHintLabel"?: (HelixHeadlessCanvas["twoFingerHintLabel"]) | undefined;
4053
+ /** What screen readers hear after a move or a resize is undone. */
4054
+ "attr:undone-label"?: (HelixHeadlessCanvas["undoneLabel"]) | undefined;
4055
+ /** What screen readers hear after a move or a resize is undone. */
4056
+ "prop:undoneLabel"?: (HelixHeadlessCanvas["undoneLabel"]) | undefined;
4033
4057
  /** The line shown while the board, with `gestures="activate"`, has the gestures. */
4034
4058
  "attr:using-label"?: (HelixHeadlessCanvas["usingLabel"]) | undefined;
4035
4059
  /** The line shown while the board, with `gestures="activate"`, has the gestures. */
@@ -5281,6 +5305,10 @@ is the way back, and that is a part inside the shadow tree where a
5281
5305
  stylesheet can already reach it. Measured rather than assumed: `label,
5282
5306
  pinned` after upgrade against `label` from the server. */
5283
5307
  pinned?: (HelixHeadlessChat["pinned"]) | undefined;
5308
+ /** The words on the button that returns to the newest turn, where `resume` is empty. */
5309
+ "resume-label"?: (HelixHeadlessChat["resumeLabel"]) | undefined;
5310
+ /** The words on the button that returns to the newest turn, where `resume` is empty. */
5311
+ resumeLabel?: (HelixHeadlessChat["resumeLabel"]) | undefined;
5284
5312
  /** How near the bottom still counts as being at it, in pixels.
5285
5313
 
5286
5314
  A hook rather than a constant, because the right number depends on how tall
@@ -5443,6 +5471,10 @@ is the way back, and that is a part inside the shadow tree where a
5443
5471
  stylesheet can already reach it. Measured rather than assumed: `label,
5444
5472
  pinned` after upgrade against `label` from the server. */
5445
5473
  "prop:pinned"?: (HelixHeadlessChat["pinned"]) | undefined;
5474
+ /** The words on the button that returns to the newest turn, where `resume` is empty. */
5475
+ "attr:resume-label"?: (HelixHeadlessChat["resumeLabel"]) | undefined;
5476
+ /** The words on the button that returns to the newest turn, where `resume` is empty. */
5477
+ "prop:resumeLabel"?: (HelixHeadlessChat["resumeLabel"]) | undefined;
5446
5478
  /** How near the bottom still counts as being at it, in pixels.
5447
5479
 
5448
5480
  A hook rather than a constant, because the right number depends on how tall
@@ -6014,6 +6046,18 @@ Here rather than on each control. */
6014
6046
  textContent?: (string | number) | undefined;
6015
6047
  };
6016
6048
 
6049
+ /** `HelixHeadlessCodeBlock` component event */
6050
+ export type HelixHeadlessCodeBlockElementEvent<E = Event> = TypedEvent<
6051
+ HelixHeadlessCodeBlock,
6052
+ E
6053
+ >;
6054
+ /** `helix-before-toggle` event type */
6055
+ export type HelixHeadlessCodeBlockHelixBeforeToggleElementEvent =
6056
+ HelixHeadlessCodeBlockElementEvent<HelixBeforeToggleEvent>;
6057
+ /** `helix-toggle` event type */
6058
+ export type HelixHeadlessCodeBlockHelixToggleElementEvent =
6059
+ HelixHeadlessCodeBlockElementEvent<HelixToggleEvent>;
6060
+
6017
6061
  export type HelixHeadlessCodeBlockProps = {
6018
6062
  /** The name of a block that scrolls, which is a tab stop while it does.
6019
6063
 
@@ -6100,6 +6144,14 @@ copy, which takes the code alone. Reflected, because the stylesheet lays
6100
6144
  the gutter out beside the code. A diff numbers its lines from its hunks
6101
6145
  whether or not this is set. */
6102
6146
  lineNumbers?: (HelixHeadlessCodeBlock["lineNumbers"]) | undefined;
6147
+ /** The lines to mark, as numbers and ranges counted from 1, such as `2, 4-6`.
6148
+ Each run is drawn as a band behind its lines. Not for a diff, which marks
6149
+ its own changes. */
6150
+ "mark-lines"?: (HelixHeadlessCodeBlock["markLines"]) | undefined;
6151
+ /** The lines to mark, as numbers and ranges counted from 1, such as `2, 4-6`.
6152
+ Each run is drawn as a band behind its lines. Not for a diff, which marks
6153
+ its own changes. */
6154
+ markLines?: (HelixHeadlessCodeBlock["markLines"]) | undefined;
6103
6155
  /** Whether to leave the copy button off.
6104
6156
 
6105
6157
  Negative, which is not a style choice. A boolean attribute is true whenever
@@ -6146,6 +6198,22 @@ Absent is unified, each removal above its replacement, which fits any
6146
6198
  width. `split` sets the old version beside the new one. Optional rather
6147
6199
  than defaulted, so the host carries no attribute the consumer did not write. */
6148
6200
  variant?: (HelixHeadlessCodeBlock["variant"]) | undefined;
6201
+ /** Whether long lines wrap. Without it they scroll.
6202
+
6203
+ Off by default, so long lines scroll, because a line break can be
6204
+ significant in code and a wrapped line reads as two. For prose-like code,
6205
+ such as a long command or a log line, a wrap reads better than a scroll.
6206
+ With `line-numbers`, each number stands beside the line it numbers
6207
+ however many rows that line takes. Reflected, because the stylesheet
6208
+ wraps the lines. */
6209
+ wrap?: (HelixHeadlessCodeBlock["wrap"]) | undefined;
6210
+ /** The wrap button's name, which it keeps whether it is pressed or not. */
6211
+ "wrap-label"?: (HelixHeadlessCodeBlock["wrapLabel"]) | undefined;
6212
+ /** The wrap button's name, which it keeps whether it is pressed or not. */
6213
+ wrapLabel?: (HelixHeadlessCodeBlock["wrapLabel"]) | undefined;
6214
+ /** Whether the header has a button that wraps the lines and unwraps them. The
6215
+ block draws a header for it even with no name. */
6216
+ wrappable?: (HelixHeadlessCodeBlock["wrappable"]) | undefined;
6149
6217
  /** Turns the code into highlighted markup, which the block draws in place of
6150
6218
  the plain text.
6151
6219
 
@@ -6168,6 +6236,13 @@ in the slot, so the copy button copies it as written and a reader without
6168
6236
  the script still has it. Not called on a server, which has no code to
6169
6237
  read, nor for a diff. */
6170
6238
  highlight?: (HelixHeadlessCodeBlock["highlight"]) | undefined;
6239
+
6240
+ /** The wrap button was pressed, with the `wrap` it asks for in `detail.checked`. Cancelable: cancel it to keep the lines as they are. */
6241
+ "onhelix-before-toggle"?: ((
6242
+ e: HelixHeadlessCodeBlockHelixBeforeToggleElementEvent,
6243
+ ) => void) | undefined;
6244
+ /** Fired after the wrap button changed `wrap`, with the new value in `detail.checked`. */
6245
+ "onhelix-toggle"?: ((e: HelixHeadlessCodeBlockHelixToggleElementEvent) => void) | undefined;
6171
6246
  };
6172
6247
 
6173
6248
  export type HelixHeadlessCodeBlockSolidJsProps = {
@@ -6256,6 +6331,14 @@ copy, which takes the code alone. Reflected, because the stylesheet lays
6256
6331
  the gutter out beside the code. A diff numbers its lines from its hunks
6257
6332
  whether or not this is set. */
6258
6333
  "prop:lineNumbers"?: (HelixHeadlessCodeBlock["lineNumbers"]) | undefined;
6334
+ /** The lines to mark, as numbers and ranges counted from 1, such as `2, 4-6`.
6335
+ Each run is drawn as a band behind its lines. Not for a diff, which marks
6336
+ its own changes. */
6337
+ "attr:mark-lines"?: (HelixHeadlessCodeBlock["markLines"]) | undefined;
6338
+ /** The lines to mark, as numbers and ranges counted from 1, such as `2, 4-6`.
6339
+ Each run is drawn as a band behind its lines. Not for a diff, which marks
6340
+ its own changes. */
6341
+ "prop:markLines"?: (HelixHeadlessCodeBlock["markLines"]) | undefined;
6259
6342
  /** Whether to leave the copy button off.
6260
6343
 
6261
6344
  Negative, which is not a style choice. A boolean attribute is true whenever
@@ -6302,6 +6385,22 @@ Absent is unified, each removal above its replacement, which fits any
6302
6385
  width. `split` sets the old version beside the new one. Optional rather
6303
6386
  than defaulted, so the host carries no attribute the consumer did not write. */
6304
6387
  "prop:variant"?: (HelixHeadlessCodeBlock["variant"]) | undefined;
6388
+ /** Whether long lines wrap. Without it they scroll.
6389
+
6390
+ Off by default, so long lines scroll, because a line break can be
6391
+ significant in code and a wrapped line reads as two. For prose-like code,
6392
+ such as a long command or a log line, a wrap reads better than a scroll.
6393
+ With `line-numbers`, each number stands beside the line it numbers
6394
+ however many rows that line takes. Reflected, because the stylesheet
6395
+ wraps the lines. */
6396
+ "prop:wrap"?: (HelixHeadlessCodeBlock["wrap"]) | undefined;
6397
+ /** The wrap button's name, which it keeps whether it is pressed or not. */
6398
+ "attr:wrap-label"?: (HelixHeadlessCodeBlock["wrapLabel"]) | undefined;
6399
+ /** The wrap button's name, which it keeps whether it is pressed or not. */
6400
+ "prop:wrapLabel"?: (HelixHeadlessCodeBlock["wrapLabel"]) | undefined;
6401
+ /** Whether the header has a button that wraps the lines and unwraps them. The
6402
+ block draws a header for it even with no name. */
6403
+ "prop:wrappable"?: (HelixHeadlessCodeBlock["wrappable"]) | undefined;
6305
6404
  /** Turns the code into highlighted markup, which the block draws in place of
6306
6405
  the plain text.
6307
6406
 
@@ -6324,6 +6423,14 @@ in the slot, so the copy button copies it as written and a reader without
6324
6423
  the script still has it. Not called on a server, which has no code to
6325
6424
  read, nor for a diff. */
6326
6425
  "prop:highlight"?: (HelixHeadlessCodeBlock["highlight"]) | undefined;
6426
+ /** The wrap button was pressed, with the `wrap` it asks for in `detail.checked`. Cancelable: cancel it to keep the lines as they are. */
6427
+ "on:helix-before-toggle"?: ((
6428
+ e: HelixHeadlessCodeBlockHelixBeforeToggleElementEvent,
6429
+ ) => void) | undefined;
6430
+ /** Fired after the wrap button changed `wrap`, with the new value in `detail.checked`. */
6431
+ "on:helix-toggle"?: ((
6432
+ e: HelixHeadlessCodeBlockHelixToggleElementEvent,
6433
+ ) => void) | undefined;
6327
6434
 
6328
6435
  /** Set the innerHTML of the element */
6329
6436
  innerHTML?: (string) | undefined;
@@ -9877,37 +9984,56 @@ export type HelixHeadlessDateInputHelixBeforeCloseElementEvent =
9877
9984
  /** `helix-before-open` event type */
9878
9985
  export type HelixHeadlessDateInputHelixBeforeOpenElementEvent =
9879
9986
  HelixHeadlessDateInputElementEvent<HelixBeforeOpenEvent>;
9987
+ /** `helix-clear` event type */
9988
+ export type HelixHeadlessDateInputHelixClearElementEvent =
9989
+ HelixHeadlessDateInputElementEvent<HelixClearEvent>;
9880
9990
  /** `toggle` event type */
9881
9991
  export type HelixHeadlessDateInputToggleElementEvent =
9882
9992
  HelixHeadlessDateInputElementEvent<ToggleEvent>;
9883
9993
 
9884
9994
  export type HelixHeadlessDateInputProps = {
9885
- /** What the browser may autofill here, as one of the platform's own tokens.
9995
+ /** What the browser may autofill here, as one of the platform's own tokens,
9996
+ such as `bday`.
9886
9997
 
9887
9998
  Empty leaves the attribute off, which is the browser's default and is what
9888
9999
  lets autofill work at all: hardcoding `off` here means a birthday or a
9889
- postal code can never be filled in for a reader. */
10000
+ postal code can never be filled in for a reader. With `segmented`, a
10001
+ hidden native date input carries it, since no browser fills the segments. */
9890
10002
  autocomplete?: (HelixHeadlessDateInput["autocomplete"]) | undefined;
9891
- /** The calendar the written date and the calendar's days are in: `gregory`,
9892
- `buddhist`, `japanese`, `roc`, or `iso8601`.
9893
-
9894
- Absent is the locale's own where it is one of the five, and `gregory` for
9895
- every other, as Date Picker's `calendar` is. The value is `YYYY-MM-DD` in
9896
- every calendar, and a focused field is ISO in every calendar. In
9897
- `segmented`, the segments are the Gregorian day, month, and year, in the
9898
- order the locale writes them, or ISO order for `iso8601`. */
10003
+ /** The calendar the written date, the segments, and the calendar's days are
10004
+ in: `gregory`, `buddhist`, `japanese`, `roc`, or `iso8601`, or a calendar
10005
+ with months of its own that Date Picker's `calendar` names, such as
10006
+ `persian`, `hebrew`, `islamic-umalqura`, `ethiopic`, or `chinese`.
10007
+
10008
+ Absent is the locale's own where its months are the Gregorian months, and
10009
+ `gregory` for every other, as Date Picker's `calendar` is. The value is
10010
+ `YYYY-MM-DD` in every calendar, and a focused text field is ISO in every
10011
+ calendar. In `segmented`, the segments are the day, month, and year as
10012
+ the calendar counts them, in the order the locale writes them: Mehr 14,
10013
+ 1405 is month 7 and day 14 of 1405 under `persian`. Under the five with
10014
+ Gregorian months they are the Gregorian day, month, and year, or ISO order
10015
+ for `iso8601`. */
9899
10016
  calendar?: (HelixHeadlessDateInput["calendar"]) | undefined;
9900
10017
  /** The name of the calendar's grid of days, read by screen readers. */
9901
10018
  "calendar-label"?: (HelixHeadlessDateInput["calendarLabel"]) | undefined;
9902
10019
  /** The name of the calendar's grid of days, read by screen readers. */
9903
10020
  calendarLabel?: (HelixHeadlessDateInput["calendarLabel"]) | undefined;
10021
+ /** Whether the field shows a button that empties it, as Input's `clearable`
10022
+ does. Shown only while the field holds something to clear and is neither
10023
+ disabled nor read-only. */
10024
+ clearable?: (HelixHeadlessDateInput["clearable"]) | undefined;
10025
+ /** The accessible name of the clear button, which shows only an icon. */
10026
+ "clear-label"?: (HelixHeadlessDateInput["clearLabel"]) | undefined;
10027
+ /** The accessible name of the clear button, which shows only an icon. */
10028
+ clearLabel?: (HelixHeadlessDateInput["clearLabel"]) | undefined;
9904
10029
  /** How a date is written in the field: `short` through `full`, or ISO.
9905
10030
 
9906
10031
  **The field renders when it is idle and holds the value when it is being
9907
10032
  edited.** A written date is a rendering, and a document being edited must
9908
10033
  not be a rendering of something else: `Intl.DateTimeFormat` formats and does
9909
- not parse, so `4 August 2026` cannot be typed back, and writing a parser per
9910
- locale is how a field ends up rejecting what it just displayed.
10034
+ not parse, so a rendering such as `Tuesday, August 4, 2026` is no text to
10035
+ edit. The field does read a date typed in the locale's order and digits as
10036
+ you leave it, which covers what a reader types.
9911
10037
 
9912
10038
  The way out is not to choose between the two but to separate them in time.
9913
10039
  Idle, the field shows `4 August 2026`, which is what a date is for reading.
@@ -9929,8 +10055,9 @@ submits and what `min` and `max` compare against. */
9929
10055
  **The field renders when it is idle and holds the value when it is being
9930
10056
  edited.** A written date is a rendering, and a document being edited must
9931
10057
  not be a rendering of something else: `Intl.DateTimeFormat` formats and does
9932
- not parse, so `4 August 2026` cannot be typed back, and writing a parser per
9933
- locale is how a field ends up rejecting what it just displayed.
10058
+ not parse, so a rendering such as `Tuesday, August 4, 2026` is no text to
10059
+ edit. The field does read a date typed in the locale's order and digits as
10060
+ you leave it, which covers what a reader types.
9934
10061
 
9935
10062
  The way out is not to choose between the two but to separate them in time.
9936
10063
  Idle, the field shows `4 August 2026`, which is what a date is for reading.
@@ -10068,6 +10195,14 @@ the date.
10068
10195
  **The name goes in**, so a row of them is heard as which one each
10069
10196
  removes rather than as "Remove" said once per date. */
10070
10197
  removeLabel?: (HelixHeadlessDateInput["removeLabel"]) | undefined;
10198
+ /** What a screen reader hears about the dates chosen in the calendar, with
10199
+ `{kind}`, `{start}`, `{end}` and `{count}` filled in as Date Picker's
10200
+ `selection-label` says. */
10201
+ "selection-label"?: (HelixHeadlessDateInput["selectionLabel"]) | undefined;
10202
+ /** What a screen reader hears about the dates chosen in the calendar, with
10203
+ `{kind}`, `{start}`, `{end}` and `{count}` filled in as Date Picker's
10204
+ `selection-label` says. */
10205
+ selectionLabel?: (HelixHeadlessDateInput["selectionLabel"]) | undefined;
10071
10206
  /** How far apart the selectable dates are, in days.
10072
10207
 
10073
10208
  `<input type="date" step>`'s own unit, handed to the calendar this renders
@@ -10079,6 +10214,14 @@ platform's base. */
10079
10214
  "step-mismatch-message"?: (HelixHeadlessDateInput["stepMismatchMessage"]) | undefined;
10080
10215
  /** The message shown when a date is not on `step`. */
10081
10216
  stepMismatchMessage?: (HelixHeadlessDateInput["stepMismatchMessage"]) | undefined;
10217
+ /** The time zone today is read in, such as `America/New_York`, handed to the
10218
+ calendar: the day marked today, and the month an empty field opens on.
10219
+ Empty is the reader's own. Dates are plain `YYYY-MM-DD` and carry no zone. */
10220
+ "time-zone"?: (HelixHeadlessDateInput["timeZone"]) | undefined;
10221
+ /** The time zone today is read in, such as `America/New_York`, handed to the
10222
+ calendar: the day marked today, and the month an empty field opens on.
10223
+ Empty is the reader's own. Dates are plain `YYYY-MM-DD` and carry no zone. */
10224
+ timeZone?: (HelixHeadlessDateInput["timeZone"]) | undefined;
10082
10225
  /** The name of the button that opens the calendar, read by screen readers. */
10083
10226
  "trigger-label"?: (HelixHeadlessDateInput["triggerLabel"]) | undefined;
10084
10227
  /** The name of the button that opens the calendar, read by screen readers. */
@@ -10087,6 +10230,12 @@ platform's base. */
10087
10230
  "unavailable-message"?: (HelixHeadlessDateInput["unavailableMessage"]) | undefined;
10088
10231
  /** The message shown when `disable-dates` or `disable-days` bars a date. */
10089
10232
  unavailableMessage?: (HelixHeadlessDateInput["unavailableMessage"]) | undefined;
10233
+ /** The message for text that is no date, where `bad-input-message` is not
10234
+ set. `{mode}` is `single`, `range`, or `multiple`. */
10235
+ "unreadable-message"?: (HelixHeadlessDateInput["unreadableMessage"]) | undefined;
10236
+ /** The message for text that is no date, where `bad-input-message` is not
10237
+ set. `{mode}` is `single`, `range`, or `multiple`. */
10238
+ unreadableMessage?: (HelixHeadlessDateInput["unreadableMessage"]) | undefined;
10090
10239
  /** The name of the calendar's heading where it shows a page of years, with
10091
10240
  `{heading}` filled in. */
10092
10241
  "year-view-label"?: (HelixHeadlessDateInput["yearViewLabel"]) | undefined;
@@ -10115,6 +10264,18 @@ are not, where `bad-input-message` is not set. `{kind}` is `date` or
10115
10264
  are not, where `bad-input-message` is not set. `{kind}` is `date` or
10116
10265
  `time`. */
10117
10266
  incompleteMessage?: (HelixHeadlessDateInput["incompleteMessage"]) | undefined;
10267
+ /** What a screen reader hears before the segments of a range's second date
10268
+ or time, after each segment's own name. */
10269
+ "range-end-label"?: (HelixHeadlessDateInput["rangeEndLabel"]) | undefined;
10270
+ /** What a screen reader hears before the segments of a range's second date
10271
+ or time, after each segment's own name. */
10272
+ rangeEndLabel?: (HelixHeadlessDateInput["rangeEndLabel"]) | undefined;
10273
+ /** What a screen reader hears before the segments of a range's first date
10274
+ or time, after each segment's own name: "month, Start, Stay". */
10275
+ "range-start-label"?: (HelixHeadlessDateInput["rangeStartLabel"]) | undefined;
10276
+ /** What a screen reader hears before the segments of a range's first date
10277
+ or time, after each segment's own name: "month, Start, Stay". */
10278
+ rangeStartLabel?: (HelixHeadlessDateInput["rangeStartLabel"]) | undefined;
10118
10279
  /** Whether the field is a row of segments, one for each part of the date or
10119
10280
  time, in place of a line of text.
10120
10281
 
@@ -10342,6 +10503,8 @@ reader makes in one of these. */
10342
10503
  "onhelix-before-open"?: ((
10343
10504
  e: HelixHeadlessDateInputHelixBeforeOpenElementEvent,
10344
10505
  ) => void) | undefined;
10506
+ /** Fired after the clear button has emptied the field, after `input` and `change`. */
10507
+ "onhelix-clear"?: ((e: HelixHeadlessDateInputHelixClearElementEvent) => void) | undefined;
10345
10508
  /** Fired after the value changes. */
10346
10509
  oninput?: ((e: HelixHeadlessDateInputElementEvent) => void) | undefined;
10347
10510
  /** Fired when the calendar opens or closes, with `newState` and `oldState`. */
@@ -10349,32 +10512,48 @@ reader makes in one of these. */
10349
10512
  };
10350
10513
 
10351
10514
  export type HelixHeadlessDateInputSolidJsProps = {
10352
- /** What the browser may autofill here, as one of the platform's own tokens.
10515
+ /** What the browser may autofill here, as one of the platform's own tokens,
10516
+ such as `bday`.
10353
10517
 
10354
10518
  Empty leaves the attribute off, which is the browser's default and is what
10355
10519
  lets autofill work at all: hardcoding `off` here means a birthday or a
10356
- postal code can never be filled in for a reader. */
10520
+ postal code can never be filled in for a reader. With `segmented`, a
10521
+ hidden native date input carries it, since no browser fills the segments. */
10357
10522
  "prop:autocomplete"?: (HelixHeadlessDateInput["autocomplete"]) | undefined;
10358
- /** The calendar the written date and the calendar's days are in: `gregory`,
10359
- `buddhist`, `japanese`, `roc`, or `iso8601`.
10360
-
10361
- Absent is the locale's own where it is one of the five, and `gregory` for
10362
- every other, as Date Picker's `calendar` is. The value is `YYYY-MM-DD` in
10363
- every calendar, and a focused field is ISO in every calendar. In
10364
- `segmented`, the segments are the Gregorian day, month, and year, in the
10365
- order the locale writes them, or ISO order for `iso8601`. */
10523
+ /** The calendar the written date, the segments, and the calendar's days are
10524
+ in: `gregory`, `buddhist`, `japanese`, `roc`, or `iso8601`, or a calendar
10525
+ with months of its own that Date Picker's `calendar` names, such as
10526
+ `persian`, `hebrew`, `islamic-umalqura`, `ethiopic`, or `chinese`.
10527
+
10528
+ Absent is the locale's own where its months are the Gregorian months, and
10529
+ `gregory` for every other, as Date Picker's `calendar` is. The value is
10530
+ `YYYY-MM-DD` in every calendar, and a focused text field is ISO in every
10531
+ calendar. In `segmented`, the segments are the day, month, and year as
10532
+ the calendar counts them, in the order the locale writes them: Mehr 14,
10533
+ 1405 is month 7 and day 14 of 1405 under `persian`. Under the five with
10534
+ Gregorian months they are the Gregorian day, month, and year, or ISO order
10535
+ for `iso8601`. */
10366
10536
  "prop:calendar"?: (HelixHeadlessDateInput["calendar"]) | undefined;
10367
10537
  /** The name of the calendar's grid of days, read by screen readers. */
10368
10538
  "attr:calendar-label"?: (HelixHeadlessDateInput["calendarLabel"]) | undefined;
10369
10539
  /** The name of the calendar's grid of days, read by screen readers. */
10370
10540
  "prop:calendarLabel"?: (HelixHeadlessDateInput["calendarLabel"]) | undefined;
10541
+ /** Whether the field shows a button that empties it, as Input's `clearable`
10542
+ does. Shown only while the field holds something to clear and is neither
10543
+ disabled nor read-only. */
10544
+ "prop:clearable"?: (HelixHeadlessDateInput["clearable"]) | undefined;
10545
+ /** The accessible name of the clear button, which shows only an icon. */
10546
+ "attr:clear-label"?: (HelixHeadlessDateInput["clearLabel"]) | undefined;
10547
+ /** The accessible name of the clear button, which shows only an icon. */
10548
+ "prop:clearLabel"?: (HelixHeadlessDateInput["clearLabel"]) | undefined;
10371
10549
  /** How a date is written in the field: `short` through `full`, or ISO.
10372
10550
 
10373
10551
  **The field renders when it is idle and holds the value when it is being
10374
10552
  edited.** A written date is a rendering, and a document being edited must
10375
10553
  not be a rendering of something else: `Intl.DateTimeFormat` formats and does
10376
- not parse, so `4 August 2026` cannot be typed back, and writing a parser per
10377
- locale is how a field ends up rejecting what it just displayed.
10554
+ not parse, so a rendering such as `Tuesday, August 4, 2026` is no text to
10555
+ edit. The field does read a date typed in the locale's order and digits as
10556
+ you leave it, which covers what a reader types.
10378
10557
 
10379
10558
  The way out is not to choose between the two but to separate them in time.
10380
10559
  Idle, the field shows `4 August 2026`, which is what a date is for reading.
@@ -10396,8 +10575,9 @@ submits and what `min` and `max` compare against. */
10396
10575
  **The field renders when it is idle and holds the value when it is being
10397
10576
  edited.** A written date is a rendering, and a document being edited must
10398
10577
  not be a rendering of something else: `Intl.DateTimeFormat` formats and does
10399
- not parse, so `4 August 2026` cannot be typed back, and writing a parser per
10400
- locale is how a field ends up rejecting what it just displayed.
10578
+ not parse, so a rendering such as `Tuesday, August 4, 2026` is no text to
10579
+ edit. The field does read a date typed in the locale's order and digits as
10580
+ you leave it, which covers what a reader types.
10401
10581
 
10402
10582
  The way out is not to choose between the two but to separate them in time.
10403
10583
  Idle, the field shows `4 August 2026`, which is what a date is for reading.
@@ -10535,6 +10715,14 @@ the date.
10535
10715
  **The name goes in**, so a row of them is heard as which one each
10536
10716
  removes rather than as "Remove" said once per date. */
10537
10717
  "prop:removeLabel"?: (HelixHeadlessDateInput["removeLabel"]) | undefined;
10718
+ /** What a screen reader hears about the dates chosen in the calendar, with
10719
+ `{kind}`, `{start}`, `{end}` and `{count}` filled in as Date Picker's
10720
+ `selection-label` says. */
10721
+ "attr:selection-label"?: (HelixHeadlessDateInput["selectionLabel"]) | undefined;
10722
+ /** What a screen reader hears about the dates chosen in the calendar, with
10723
+ `{kind}`, `{start}`, `{end}` and `{count}` filled in as Date Picker's
10724
+ `selection-label` says. */
10725
+ "prop:selectionLabel"?: (HelixHeadlessDateInput["selectionLabel"]) | undefined;
10538
10726
  /** How far apart the selectable dates are, in days.
10539
10727
 
10540
10728
  `<input type="date" step>`'s own unit, handed to the calendar this renders
@@ -10546,6 +10734,14 @@ platform's base. */
10546
10734
  "attr:step-mismatch-message"?: (HelixHeadlessDateInput["stepMismatchMessage"]) | undefined;
10547
10735
  /** The message shown when a date is not on `step`. */
10548
10736
  "prop:stepMismatchMessage"?: (HelixHeadlessDateInput["stepMismatchMessage"]) | undefined;
10737
+ /** The time zone today is read in, such as `America/New_York`, handed to the
10738
+ calendar: the day marked today, and the month an empty field opens on.
10739
+ Empty is the reader's own. Dates are plain `YYYY-MM-DD` and carry no zone. */
10740
+ "attr:time-zone"?: (HelixHeadlessDateInput["timeZone"]) | undefined;
10741
+ /** The time zone today is read in, such as `America/New_York`, handed to the
10742
+ calendar: the day marked today, and the month an empty field opens on.
10743
+ Empty is the reader's own. Dates are plain `YYYY-MM-DD` and carry no zone. */
10744
+ "prop:timeZone"?: (HelixHeadlessDateInput["timeZone"]) | undefined;
10549
10745
  /** The name of the button that opens the calendar, read by screen readers. */
10550
10746
  "attr:trigger-label"?: (HelixHeadlessDateInput["triggerLabel"]) | undefined;
10551
10747
  /** The name of the button that opens the calendar, read by screen readers. */
@@ -10554,6 +10750,12 @@ platform's base. */
10554
10750
  "attr:unavailable-message"?: (HelixHeadlessDateInput["unavailableMessage"]) | undefined;
10555
10751
  /** The message shown when `disable-dates` or `disable-days` bars a date. */
10556
10752
  "prop:unavailableMessage"?: (HelixHeadlessDateInput["unavailableMessage"]) | undefined;
10753
+ /** The message for text that is no date, where `bad-input-message` is not
10754
+ set. `{mode}` is `single`, `range`, or `multiple`. */
10755
+ "attr:unreadable-message"?: (HelixHeadlessDateInput["unreadableMessage"]) | undefined;
10756
+ /** The message for text that is no date, where `bad-input-message` is not
10757
+ set. `{mode}` is `single`, `range`, or `multiple`. */
10758
+ "prop:unreadableMessage"?: (HelixHeadlessDateInput["unreadableMessage"]) | undefined;
10557
10759
  /** The name of the calendar's heading where it shows a page of years, with
10558
10760
  `{heading}` filled in. */
10559
10761
  "attr:year-view-label"?: (HelixHeadlessDateInput["yearViewLabel"]) | undefined;
@@ -10582,6 +10784,18 @@ are not, where `bad-input-message` is not set. `{kind}` is `date` or
10582
10784
  are not, where `bad-input-message` is not set. `{kind}` is `date` or
10583
10785
  `time`. */
10584
10786
  "prop:incompleteMessage"?: (HelixHeadlessDateInput["incompleteMessage"]) | undefined;
10787
+ /** What a screen reader hears before the segments of a range's second date
10788
+ or time, after each segment's own name. */
10789
+ "attr:range-end-label"?: (HelixHeadlessDateInput["rangeEndLabel"]) | undefined;
10790
+ /** What a screen reader hears before the segments of a range's second date
10791
+ or time, after each segment's own name. */
10792
+ "prop:rangeEndLabel"?: (HelixHeadlessDateInput["rangeEndLabel"]) | undefined;
10793
+ /** What a screen reader hears before the segments of a range's first date
10794
+ or time, after each segment's own name: "month, Start, Stay". */
10795
+ "attr:range-start-label"?: (HelixHeadlessDateInput["rangeStartLabel"]) | undefined;
10796
+ /** What a screen reader hears before the segments of a range's first date
10797
+ or time, after each segment's own name: "month, Start, Stay". */
10798
+ "prop:rangeStartLabel"?: (HelixHeadlessDateInput["rangeStartLabel"]) | undefined;
10585
10799
  /** Whether the field is a row of segments, one for each part of the date or
10586
10800
  time, in place of a line of text.
10587
10801
 
@@ -10808,6 +11022,8 @@ reader makes in one of these. */
10808
11022
  "on:helix-before-open"?: ((
10809
11023
  e: HelixHeadlessDateInputHelixBeforeOpenElementEvent,
10810
11024
  ) => void) | undefined;
11025
+ /** Fired after the clear button has emptied the field, after `input` and `change`. */
11026
+ "on:helix-clear"?: ((e: HelixHeadlessDateInputHelixClearElementEvent) => void) | undefined;
10811
11027
  /** Fired after the value changes. */
10812
11028
  "on:input"?: ((e: HelixHeadlessDateInputElementEvent) => void) | undefined;
10813
11029
  /** Fired when the calendar opens or closes, with `newState` and `oldState`. */
@@ -10856,14 +11072,16 @@ it is one of the five, such as `buddhist` for `th-TH` or `japanese` for
10856
11072
  `ja-JP-u-ca-japanese`, and `gregory` for every other, such as `persian`
10857
11073
  for `fa-IR`.
10858
11074
 
10859
- `persian`, `hebrew`, `islamic-umalqura`, `islamic-civil`, `ethiopic`,
10860
- `coptic`, and `indian` draw a calendar with months of its own, as React
10861
- Aria's calendars do: each grid is one of that calendar's months, the
10862
- Hebrew leap month and Ethiopia's five-day thirteenth month included, and
10863
- Previous, Next and the page keys move by those months. `month` and
11075
+ `persian`, `hebrew`, `islamic`, `islamic-umalqura`, `islamic-civil`,
11076
+ `islamic-tbla`, `islamic-rgsa`, `ethiopic`, `ethioaa`, `coptic`,
11077
+ `indian`, `chinese`, and `dangi` draw a calendar with months of its own,
11078
+ as React Aria's calendars do: each grid is one of that calendar's months,
11079
+ the Hebrew and Chinese leap months and Ethiopia's five-day thirteenth
11080
+ month included, and Previous, Next and the page keys move by those
11081
+ months. With `max-view`, the months view shows that calendar's year, of
11082
+ twelve or thirteen months, and the years view its years. `month` and
10864
11083
  `helix-navigate` then name a month by its first day, `YYYY-MM-DD`. The
10865
- heading stays text, as the months and years views are drawn in Gregorian
10866
- months only. The value is `YYYY-MM-DD` in every calendar. */
11084
+ value is `YYYY-MM-DD` in every calendar. */
10867
11085
  calendar?: (HelixHeadlessDatePicker["calendar"]) | undefined;
10868
11086
  /** The month to open on when `month` is not set. */
10869
11087
  "default-month"?: (HelixHeadlessDatePicker["defaultMonth"]) | undefined;
@@ -11010,6 +11228,18 @@ else set needs. */
11010
11228
  readOnly?: (HelixHeadlessDatePicker["readOnly"]) | undefined;
11011
11229
  /** Stops the form from submitting while no date is chosen. */
11012
11230
  required?: (HelixHeadlessDatePicker["required"]) | undefined;
11231
+ /** What a screen reader hears about the chosen dates: the grid's
11232
+ description, said again whenever the dates change. `{kind}` is `date`,
11233
+ `start` while a range holds one end, `range`, or `dates` for `multiple`.
11234
+ `{start}` and `{end}` are dates written in `locale`, and `{count}` is how
11235
+ many dates are chosen. */
11236
+ "selection-label"?: (HelixHeadlessDatePicker["selectionLabel"]) | undefined;
11237
+ /** What a screen reader hears about the chosen dates: the grid's
11238
+ description, said again whenever the dates change. `{kind}` is `date`,
11239
+ `start` while a range holds one end, `range`, or `dates` for `multiple`.
11240
+ `{start}` and `{end}` are dates written in `locale`, and `{count}` is how
11241
+ many dates are chosen. */
11242
+ selectionLabel?: (HelixHeadlessDatePicker["selectionLabel"]) | undefined;
11013
11243
  /** How far apart the selectable dates are, in days.
11014
11244
 
11015
11245
  `<input type="date" step>`'s own unit, counted from `min` where there is
@@ -11189,14 +11419,16 @@ it is one of the five, such as `buddhist` for `th-TH` or `japanese` for
11189
11419
  `ja-JP-u-ca-japanese`, and `gregory` for every other, such as `persian`
11190
11420
  for `fa-IR`.
11191
11421
 
11192
- `persian`, `hebrew`, `islamic-umalqura`, `islamic-civil`, `ethiopic`,
11193
- `coptic`, and `indian` draw a calendar with months of its own, as React
11194
- Aria's calendars do: each grid is one of that calendar's months, the
11195
- Hebrew leap month and Ethiopia's five-day thirteenth month included, and
11196
- Previous, Next and the page keys move by those months. `month` and
11422
+ `persian`, `hebrew`, `islamic`, `islamic-umalqura`, `islamic-civil`,
11423
+ `islamic-tbla`, `islamic-rgsa`, `ethiopic`, `ethioaa`, `coptic`,
11424
+ `indian`, `chinese`, and `dangi` draw a calendar with months of its own,
11425
+ as React Aria's calendars do: each grid is one of that calendar's months,
11426
+ the Hebrew and Chinese leap months and Ethiopia's five-day thirteenth
11427
+ month included, and Previous, Next and the page keys move by those
11428
+ months. With `max-view`, the months view shows that calendar's year, of
11429
+ twelve or thirteen months, and the years view its years. `month` and
11197
11430
  `helix-navigate` then name a month by its first day, `YYYY-MM-DD`. The
11198
- heading stays text, as the months and years views are drawn in Gregorian
11199
- months only. The value is `YYYY-MM-DD` in every calendar. */
11431
+ value is `YYYY-MM-DD` in every calendar. */
11200
11432
  "prop:calendar"?: (HelixHeadlessDatePicker["calendar"]) | undefined;
11201
11433
  /** The month to open on when `month` is not set. */
11202
11434
  "attr:default-month"?: (HelixHeadlessDatePicker["defaultMonth"]) | undefined;
@@ -11343,6 +11575,18 @@ else set needs. */
11343
11575
  "prop:readOnly"?: (HelixHeadlessDatePicker["readOnly"]) | undefined;
11344
11576
  /** Stops the form from submitting while no date is chosen. */
11345
11577
  "prop:required"?: (HelixHeadlessDatePicker["required"]) | undefined;
11578
+ /** What a screen reader hears about the chosen dates: the grid's
11579
+ description, said again whenever the dates change. `{kind}` is `date`,
11580
+ `start` while a range holds one end, `range`, or `dates` for `multiple`.
11581
+ `{start}` and `{end}` are dates written in `locale`, and `{count}` is how
11582
+ many dates are chosen. */
11583
+ "attr:selection-label"?: (HelixHeadlessDatePicker["selectionLabel"]) | undefined;
11584
+ /** What a screen reader hears about the chosen dates: the grid's
11585
+ description, said again whenever the dates change. `{kind}` is `date`,
11586
+ `start` while a range holds one end, `range`, or `dates` for `multiple`.
11587
+ `{start}` and `{end}` are dates written in `locale`, and `{count}` is how
11588
+ many dates are chosen. */
11589
+ "prop:selectionLabel"?: (HelixHeadlessDatePicker["selectionLabel"]) | undefined;
11346
11590
  /** How far apart the selectable dates are, in days.
11347
11591
 
11348
11592
  `<input type="date" step>`'s own unit, counted from `min` where there is
@@ -13840,12 +14084,14 @@ Here rather than on each control. */
13840
14084
 
13841
14085
  export type HelixHeadlessFormatDateProps = {
13842
14086
  /** The calendar a date is written in: `gregory`, `buddhist`, `japanese`,
13843
- `roc`, or `iso8601`, the calendars Date Picker and Date Input draw.
13844
-
13845
- Absent is the locale's own where it is one of the five, such as
13846
- `buddhist` for `th-TH`, and `gregory` for every other, such as `persian`
13847
- for `fa-IR`, so a date written here reads as the same date a Date Picker
13848
- beside it shows. */
14087
+ `roc`, or `iso8601`, or a calendar with months of its own, such as
14088
+ `persian`, `hebrew`, `islamic-umalqura`, `ethiopic`, or `chinese`: every
14089
+ calendar Date Picker and Date Input draw.
14090
+
14091
+ Absent is the locale's own where its months are the Gregorian months,
14092
+ such as `buddhist` for `th-TH`, and `gregory` for every other, such as
14093
+ `persian` for `fa-IR`, so a date written here reads as the same date a
14094
+ Date Picker beside it shows. Write `calendar="persian"` for Mehr 14, 1405. */
13849
14095
  calendar?: (HelixHeadlessFormatDate["calendar"]) | undefined;
13850
14096
  /** The timestamp, in any format `Date` can parse.
13851
14097
 
@@ -13871,6 +14117,14 @@ browser may use either. */
13871
14117
  dateStyle?: (HelixHeadlessFormatDate["dateStyle"]) | undefined;
13872
14118
  /** How the day of the month is written, where a date is shown. */
13873
14119
  day?: (HelixHeadlessFormatDate["day"]) | undefined;
14120
+ /** Writes the part of the day in words, such as "in the morning" or "at
14121
+ night", in its `long`, `short`, or `narrow` form, where `hour` is on a
14122
+ twelve-hour clock. */
14123
+ "day-period"?: (HelixHeadlessFormatDate["dayPeriod"]) | undefined;
14124
+ /** Writes the part of the day in words, such as "in the morning" or "at
14125
+ night", in its `long`, `short`, or `narrow` form, where `hour` is on a
14126
+ twelve-hour clock. */
14127
+ dayPeriod?: (HelixHeadlessFormatDate["dayPeriod"]) | undefined;
13874
14128
  /** Shows how long ago the timestamp was, in a compact form such as "3h", in
13875
14129
  place of the date.
13876
14130
 
@@ -13888,6 +14142,12 @@ Off by default, which draws the date as one run of text, as Shoelace and
13888
14142
  Web Awesome do. An `elapsed` or `relative` reading is one phrase either
13889
14143
  way. */
13890
14144
  fields?: (HelixHeadlessFormatDate["fields"]) | undefined;
14145
+ /** How many digits of a fraction of a second to write after `second`: 1, 2,
14146
+ or 3, as in 09:41:07.250. */
14147
+ "fractional-second-digits"?: (HelixHeadlessFormatDate["fractionalSecondDigits"]) | undefined;
14148
+ /** How many digits of a fraction of a second to write after `second`: 1, 2,
14149
+ or 3, as in 09:41:07.250. */
14150
+ fractionalSecondDigits?: (HelixHeadlessFormatDate["fractionalSecondDigits"]) | undefined;
13891
14151
  /** Draws an `elapsed` or `relative` reading once and leaves it, where it
13892
14152
  would otherwise move on as it goes stale.
13893
14153
 
@@ -13950,9 +14210,13 @@ Empty is the runtime's own. */
13950
14210
 
13951
14211
  Empty is the runtime's own. */
13952
14212
  timeZone?: (HelixHeadlessFormatDate["timeZone"]) | undefined;
13953
- /** Shows the name of the time zone, in its `long` or `short` form. */
14213
+ /** Shows the name of the time zone: `long` or `short`, as Pacific Daylight
14214
+ Time or PDT, `longOffset` or `shortOffset`, as GMT-07:00 or GMT-7, or
14215
+ `longGeneric` or `shortGeneric`, as Pacific Time or PT. */
13954
14216
  "time-zone-name"?: (HelixHeadlessFormatDate["timeZoneName"]) | undefined;
13955
- /** Shows the name of the time zone, in its `long` or `short` form. */
14217
+ /** Shows the name of the time zone: `long` or `short`, as Pacific Daylight
14218
+ Time or PDT, `longOffset` or `shortOffset`, as GMT-07:00 or GMT-7, or
14219
+ `longGeneric` or `shortGeneric`, as Pacific Time or PT. */
13956
14220
  timeZoneName?: (HelixHeadlessFormatDate["timeZoneName"]) | undefined;
13957
14221
  /** How the weekday is written, where one is shown. */
13958
14222
  weekday?: (HelixHeadlessFormatDate["weekday"]) | undefined;
@@ -13962,12 +14226,14 @@ Empty is the runtime's own. */
13962
14226
 
13963
14227
  export type HelixHeadlessFormatDateSolidJsProps = {
13964
14228
  /** The calendar a date is written in: `gregory`, `buddhist`, `japanese`,
13965
- `roc`, or `iso8601`, the calendars Date Picker and Date Input draw.
13966
-
13967
- Absent is the locale's own where it is one of the five, such as
13968
- `buddhist` for `th-TH`, and `gregory` for every other, such as `persian`
13969
- for `fa-IR`, so a date written here reads as the same date a Date Picker
13970
- beside it shows. */
14229
+ `roc`, or `iso8601`, or a calendar with months of its own, such as
14230
+ `persian`, `hebrew`, `islamic-umalqura`, `ethiopic`, or `chinese`: every
14231
+ calendar Date Picker and Date Input draw.
14232
+
14233
+ Absent is the locale's own where its months are the Gregorian months,
14234
+ such as `buddhist` for `th-TH`, and `gregory` for every other, such as
14235
+ `persian` for `fa-IR`, so a date written here reads as the same date a
14236
+ Date Picker beside it shows. Write `calendar="persian"` for Mehr 14, 1405. */
13971
14237
  "prop:calendar"?: (HelixHeadlessFormatDate["calendar"]) | undefined;
13972
14238
  /** The timestamp, in any format `Date` can parse.
13973
14239
 
@@ -13993,6 +14259,14 @@ browser may use either. */
13993
14259
  "prop:dateStyle"?: (HelixHeadlessFormatDate["dateStyle"]) | undefined;
13994
14260
  /** How the day of the month is written, where a date is shown. */
13995
14261
  "prop:day"?: (HelixHeadlessFormatDate["day"]) | undefined;
14262
+ /** Writes the part of the day in words, such as "in the morning" or "at
14263
+ night", in its `long`, `short`, or `narrow` form, where `hour` is on a
14264
+ twelve-hour clock. */
14265
+ "attr:day-period"?: (HelixHeadlessFormatDate["dayPeriod"]) | undefined;
14266
+ /** Writes the part of the day in words, such as "in the morning" or "at
14267
+ night", in its `long`, `short`, or `narrow` form, where `hour` is on a
14268
+ twelve-hour clock. */
14269
+ "prop:dayPeriod"?: (HelixHeadlessFormatDate["dayPeriod"]) | undefined;
13996
14270
  /** Shows how long ago the timestamp was, in a compact form such as "3h", in
13997
14271
  place of the date.
13998
14272
 
@@ -14010,6 +14284,12 @@ Off by default, which draws the date as one run of text, as Shoelace and
14010
14284
  Web Awesome do. An `elapsed` or `relative` reading is one phrase either
14011
14285
  way. */
14012
14286
  "prop:fields"?: (HelixHeadlessFormatDate["fields"]) | undefined;
14287
+ /** How many digits of a fraction of a second to write after `second`: 1, 2,
14288
+ or 3, as in 09:41:07.250. */
14289
+ "attr:fractional-second-digits"?: (HelixHeadlessFormatDate["fractionalSecondDigits"]) | undefined;
14290
+ /** How many digits of a fraction of a second to write after `second`: 1, 2,
14291
+ or 3, as in 09:41:07.250. */
14292
+ "prop:fractionalSecondDigits"?: (HelixHeadlessFormatDate["fractionalSecondDigits"]) | undefined;
14013
14293
  /** Draws an `elapsed` or `relative` reading once and leaves it, where it
14014
14294
  would otherwise move on as it goes stale.
14015
14295
 
@@ -14072,9 +14352,13 @@ Empty is the runtime's own. */
14072
14352
 
14073
14353
  Empty is the runtime's own. */
14074
14354
  "prop:timeZone"?: (HelixHeadlessFormatDate["timeZone"]) | undefined;
14075
- /** Shows the name of the time zone, in its `long` or `short` form. */
14355
+ /** Shows the name of the time zone: `long` or `short`, as Pacific Daylight
14356
+ Time or PDT, `longOffset` or `shortOffset`, as GMT-07:00 or GMT-7, or
14357
+ `longGeneric` or `shortGeneric`, as Pacific Time or PT. */
14076
14358
  "attr:time-zone-name"?: (HelixHeadlessFormatDate["timeZoneName"]) | undefined;
14077
- /** Shows the name of the time zone, in its `long` or `short` form. */
14359
+ /** Shows the name of the time zone: `long` or `short`, as Pacific Daylight
14360
+ Time or PDT, `longOffset` or `shortOffset`, as GMT-07:00 or GMT-7, or
14361
+ `longGeneric` or `shortGeneric`, as Pacific Time or PT. */
14078
14362
  "prop:timeZoneName"?: (HelixHeadlessFormatDate["timeZoneName"]) | undefined;
14079
14363
  /** How the weekday is written, where one is shown. */
14080
14364
  "prop:weekday"?: (HelixHeadlessFormatDate["weekday"]) | undefined;
@@ -26355,6 +26639,14 @@ rather than a thumb sitting on nothing. */
26355
26639
  middle of the track, or `end` at `max`. Absent is `start`. A range fills
26356
26640
  between its thumbs and ignores it. */
26357
26641
  origin?: (HelixHeadlessSlider["origin"]) | undefined;
26642
+ /** How far Page Up and Page Down move a thumb, in the slider's own units, as
26643
+ React Aria's `pageSize` and Zag's `largeStep` do. Absent leaves the keys
26644
+ to the platform, which moves a tenth of the track. */
26645
+ "page-step"?: (HelixHeadlessSlider["pageStep"] | `${number}`) | undefined;
26646
+ /** How far Page Up and Page Down move a thumb, in the slider's own units, as
26647
+ React Aria's `pageSize` and Zag's `largeStep` do. Absent leaves the keys
26648
+ to the platform, which moves a tenth of the track. */
26649
+ pageStep?: (HelixHeadlessSlider["pageStep"]) | undefined;
26358
26650
  /** Adds a second thumb, so the value is a pair.
26359
26651
 
26360
26652
  The pair is one string, `"10,50"`, which is what `value` and
@@ -26609,6 +26901,14 @@ rather than a thumb sitting on nothing. */
26609
26901
  middle of the track, or `end` at `max`. Absent is `start`. A range fills
26610
26902
  between its thumbs and ignores it. */
26611
26903
  "prop:origin"?: (HelixHeadlessSlider["origin"]) | undefined;
26904
+ /** How far Page Up and Page Down move a thumb, in the slider's own units, as
26905
+ React Aria's `pageSize` and Zag's `largeStep` do. Absent leaves the keys
26906
+ to the platform, which moves a tenth of the track. */
26907
+ "attr:page-step"?: (HelixHeadlessSlider["pageStep"] | `${number}`) | undefined;
26908
+ /** How far Page Up and Page Down move a thumb, in the slider's own units, as
26909
+ React Aria's `pageSize` and Zag's `largeStep` do. Absent leaves the keys
26910
+ to the platform, which moves a tenth of the track. */
26911
+ "prop:pageStep"?: (HelixHeadlessSlider["pageStep"]) | undefined;
26612
26912
  /** Adds a second thumb, so the value is a pair.
26613
26913
 
26614
26914
  The pair is one string, `"10,50"`, which is what `value` and
@@ -27352,6 +27652,22 @@ consumer's to set. */
27352
27652
  "corner-label"?: (HelixHeadlessSplitter["cornerLabel"]) | undefined;
27353
27653
  /** The name of the handle where two dividers cross, read by screen readers. */
27354
27654
  cornerLabel?: (HelixHeadlessSplitter["cornerLabel"]) | undefined;
27655
+ /** What the handle where two dividers cross says it is set to, both dividers
27656
+ at once: `{across}` is where the divider that runs down stands, and
27657
+ `{down}` where the one that runs across stands, each a percentage.
27658
+
27659
+ **Both, because the handle moves both**, and a number names one: the
27660
+ handle's `aria-valuenow` is the divider its `aria-orientation` names, and
27661
+ these words are the whole of where it is. */
27662
+ "corner-value-label"?: (HelixHeadlessSplitter["cornerValueLabel"]) | undefined;
27663
+ /** What the handle where two dividers cross says it is set to, both dividers
27664
+ at once: `{across}` is where the divider that runs down stands, and
27665
+ `{down}` where the one that runs across stands, each a percentage.
27666
+
27667
+ **Both, because the handle moves both**, and a number names one: the
27668
+ handle's `aria-valuenow` is the divider its `aria-orientation` names, and
27669
+ these words are the whole of where it is. */
27670
+ cornerValueLabel?: (HelixHeadlessSplitter["cornerValueLabel"]) | undefined;
27355
27671
  /** Which pane starts shut, when `collapsed` is not set. */
27356
27672
  "default-collapsed"?: (HelixHeadlessSplitter["defaultCollapsed"]) | undefined;
27357
27673
  /** Which pane starts shut, when `collapsed` is not set. */
@@ -27496,6 +27812,22 @@ consumer's to set. */
27496
27812
  "attr:corner-label"?: (HelixHeadlessSplitter["cornerLabel"]) | undefined;
27497
27813
  /** The name of the handle where two dividers cross, read by screen readers. */
27498
27814
  "prop:cornerLabel"?: (HelixHeadlessSplitter["cornerLabel"]) | undefined;
27815
+ /** What the handle where two dividers cross says it is set to, both dividers
27816
+ at once: `{across}` is where the divider that runs down stands, and
27817
+ `{down}` where the one that runs across stands, each a percentage.
27818
+
27819
+ **Both, because the handle moves both**, and a number names one: the
27820
+ handle's `aria-valuenow` is the divider its `aria-orientation` names, and
27821
+ these words are the whole of where it is. */
27822
+ "attr:corner-value-label"?: (HelixHeadlessSplitter["cornerValueLabel"]) | undefined;
27823
+ /** What the handle where two dividers cross says it is set to, both dividers
27824
+ at once: `{across}` is where the divider that runs down stands, and
27825
+ `{down}` where the one that runs across stands, each a percentage.
27826
+
27827
+ **Both, because the handle moves both**, and a number names one: the
27828
+ handle's `aria-valuenow` is the divider its `aria-orientation` names, and
27829
+ these words are the whole of where it is. */
27830
+ "prop:cornerValueLabel"?: (HelixHeadlessSplitter["cornerValueLabel"]) | undefined;
27499
27831
  /** Which pane starts shut, when `collapsed` is not set. */
27500
27832
  "attr:default-collapsed"?: (HelixHeadlessSplitter["defaultCollapsed"]) | undefined;
27501
27833
  /** Which pane starts shut, when `collapsed` is not set. */
@@ -28691,6 +29023,12 @@ export type HelixHeadlessTableElementEvent<E = Event> = TypedEvent<
28691
29023
  /** `helix-before-reorder` event type */
28692
29024
  export type HelixHeadlessTableHelixBeforeReorderElementEvent =
28693
29025
  HelixHeadlessTableElementEvent<HelixBeforeReorderEvent>;
29026
+ /** `helix-before-toggle` event type */
29027
+ export type HelixHeadlessTableHelixBeforeToggleElementEvent =
29028
+ HelixHeadlessTableElementEvent<HelixBeforeToggleEvent>;
29029
+ /** `helix-load-more` event type */
29030
+ export type HelixHeadlessTableHelixLoadMoreElementEvent =
29031
+ HelixHeadlessTableElementEvent<HelixLoadMoreEvent>;
28694
29032
  /** `helix-reorder` event type */
28695
29033
  export type HelixHeadlessTableHelixReorderElementEvent =
28696
29034
  HelixHeadlessTableElementEvent<HelixReorderEvent>;
@@ -28706,6 +29044,9 @@ export type HelixHeadlessTableHelixSortElementEvent =
28706
29044
  /** `helix-sorted` event type */
28707
29045
  export type HelixHeadlessTableHelixSortedElementEvent =
28708
29046
  HelixHeadlessTableElementEvent<HelixSortedEvent>;
29047
+ /** `helix-toggle` event type */
29048
+ export type HelixHeadlessTableHelixToggleElementEvent =
29049
+ HelixHeadlessTableElementEvent<HelixToggleEvent>;
28709
29050
 
28710
29051
  export type HelixHeadlessTableProps = {
28711
29052
  /** The word for an ascending sort, in a `sorted-label` that writes `{order}`. */
@@ -28747,6 +29088,12 @@ and a list here would be a second way to say what that says. This table's
28747
29088
  cells are markup, and a table written as rows of cells with no column
28748
29089
  declared in it has nowhere else to be sized from. */
28749
29090
  columns?: (HelixHeadlessTable["columns"]) | undefined;
29091
+ /** The keys of the rows whose rows are shown at the start, separated by
29092
+ commas. Used until `expanded` is set. */
29093
+ "default-expanded"?: (HelixHeadlessTable["defaultExpanded"]) | undefined;
29094
+ /** The keys of the rows whose rows are shown at the start, separated by
29095
+ commas. Used until `expanded` is set. */
29096
+ defaultExpanded?: (HelixHeadlessTable["defaultExpanded"]) | undefined;
28750
29097
  /** The keys selected at the start, separated by commas. Used until `selected`
28751
29098
  is set. */
28752
29099
  "default-selected"?: (HelixHeadlessTable["defaultSelected"]) | undefined;
@@ -28781,6 +29128,18 @@ While it is set, a line after the rows shows it, or your own content in the
28781
29128
  `error` slot, in place of the empty and loading lines, and the live region
28782
29129
  says it. */
28783
29130
  errorText?: (HelixHeadlessTable["errorText"]) | undefined;
29131
+ /** The name of the heading over the disclosure buttons. */
29132
+ "expand-column-label"?: (HelixHeadlessTable["expandColumnLabel"]) | undefined;
29133
+ /** The name of the heading over the disclosure buttons. */
29134
+ expandColumnLabel?: (HelixHeadlessTable["expandColumnLabel"]) | undefined;
29135
+ /** The keys of the rows whose rows are shown, separated by commas, in a table
29136
+ whose rows nest. A press on a row's disclosure button asks first, and
29137
+ `default-expanded` seeds what this element then owns. */
29138
+ expanded?: (HelixHeadlessTable["expanded"]) | undefined;
29139
+ /** The name of a row's disclosure button. `{row}` is the words of the row's first cell. */
29140
+ "expand-row-label"?: (HelixHeadlessTable["expandRowLabel"]) | undefined;
29141
+ /** The name of a row's disclosure button. `{row}` is the words of the row's first cell. */
29142
+ expandRowLabel?: (HelixHeadlessTable["expandRowLabel"]) | undefined;
28784
29143
  /** The table's name where neither `label` nor an `aria-label` or
28785
29144
  `aria-labelledby` on the host gives it one. */
28786
29145
  "fallback-label"?: (HelixHeadlessTable["fallbackLabel"]) | undefined;
@@ -28800,6 +29159,12 @@ cells, which is the one way a cell of your markup can take focus. */
28800
29159
  An `aria-label` or `aria-labelledby` on the host names the table too, and
28801
29160
  wins over this. */
28802
29161
  label?: (HelixHeadlessTable["label"]) | undefined;
29162
+ /** Sends `helix-load-more` once the end of the table comes within a screen
29163
+ of view, so you can add the next rows as a reader nears them. */
29164
+ "load-more"?: (HelixHeadlessTable["loadMore"]) | undefined;
29165
+ /** Sends `helix-load-more` once the end of the table comes within a screen
29166
+ of view, so you can add the next rows as a reader nears them. */
29167
+ loadMore?: (HelixHeadlessTable["loadMore"]) | undefined;
28803
29168
  /** What screen readers hear each time a key moves a held row, in a
28804
29169
  `reorderable` table. `{name}` is the row's words, `{position}` the place it
28805
29170
  would go, counting from 1, and `{count}` the number of rows. */
@@ -28834,6 +29199,12 @@ table moves no row itself: you move your rows on `helix-reorder`. */
28834
29199
  "select-all-label"?: (HelixHeadlessTable["selectAllLabel"]) | undefined;
28835
29200
  /** The name of the checkbox in the heading that selects every row. */
28836
29201
  selectAllLabel?: (HelixHeadlessTable["selectAllLabel"]) | undefined;
29202
+ /** The name of the heading over the checkboxes under
29203
+ `selection-mode="single"`, where it holds no checkbox of its own. */
29204
+ "select-column-label"?: (HelixHeadlessTable["selectColumnLabel"]) | undefined;
29205
+ /** The name of the heading over the checkboxes under
29206
+ `selection-mode="single"`, where it holds no checkbox of its own. */
29207
+ selectColumnLabel?: (HelixHeadlessTable["selectColumnLabel"]) | undefined;
28837
29208
  /** The keys of the selected rows, separated by commas.
28838
29209
 
28839
29210
  A reader's press fires `helix-select` first, and refusing it leaves the
@@ -28850,6 +29221,20 @@ rows are chosen, written in the locale, and a language that needs plural
28850
29221
  forms writes them: `{count, plural, one {# wybrany} few {# wybrane} many
28851
29222
  {# wybranych} other {# wybranego}}`. */
28852
29223
  selectedLabel?: (HelixHeadlessTable["selectedLabel"]) | undefined;
29224
+ /** What a press on a row, or in a `grid` table a key that moves to one, does
29225
+ to the rows already selected: `toggle`, the default, leaves them to the
29226
+ checkboxes, and `replace` selects the row alone. */
29227
+ "selection-behavior"?: (HelixHeadlessTable["selectionBehavior"]) | undefined;
29228
+ /** What a press on a row, or in a `grid` table a key that moves to one, does
29229
+ to the rows already selected: `toggle`, the default, leaves them to the
29230
+ checkboxes, and `replace` selects the row alone. */
29231
+ selectionBehavior?: (HelixHeadlessTable["selectionBehavior"]) | undefined;
29232
+ /** How many rows a `selectable` table selects: `multiple`, the default, or
29233
+ `single`, one at a time. */
29234
+ "selection-mode"?: (HelixHeadlessTable["selectionMode"]) | undefined;
29235
+ /** How many rows a `selectable` table selects: `multiple`, the default, or
29236
+ `single`, one at a time. */
29237
+ selectionMode?: (HelixHeadlessTable["selectionMode"]) | undefined;
28853
29238
  /** The name of a row's checkbox. `{row}` is replaced with the words of the
28854
29239
  row's first cell. */
28855
29240
  "select-row-label"?: (HelixHeadlessTable["selectRowLabel"]) | undefined;
@@ -28897,6 +29282,14 @@ say that without the component knowing what a row looks like. */
28897
29282
  "onhelix-before-reorder"?: ((
28898
29283
  e: HelixHeadlessTableHelixBeforeReorderElementEvent,
28899
29284
  ) => void) | undefined;
29285
+ /** Fired from a row when its disclosure button is pressed, with whether it would be open in `detail.checked`. Cancelable: cancel it to keep the row as it is. */
29286
+ "onhelix-before-toggle"?: ((
29287
+ e: HelixHeadlessTableHelixBeforeToggleElementEvent,
29288
+ ) => void) | undefined;
29289
+ /** Fired, in a table with `load-more`, when the end of the table comes within a screen of view, once for each number of rows. */
29290
+ "onhelix-load-more"?: ((
29291
+ e: HelixHeadlessTableHelixLoadMoreElementEvent,
29292
+ ) => void) | undefined;
28900
29293
  /** Fired after `helix-before-reorder` when nobody canceled it. Move your rows to the order in `keys`. Cancelable: cancel it to say the move did not happen. */
28901
29294
  "onhelix-reorder"?: ((e: HelixHeadlessTableHelixReorderElementEvent) => void) | undefined;
28902
29295
  /** The selection is about to change. The event carries every selected key, separated by commas. Cancelable: cancel it to keep the current selection. */
@@ -28907,6 +29300,8 @@ say that without the component knowing what a row looks like. */
28907
29300
  "onhelix-sort"?: ((e: HelixHeadlessTableHelixSortElementEvent) => void) | undefined;
28908
29301
  /** Fired after the sort order changes, with the new order. */
28909
29302
  "onhelix-sorted"?: ((e: HelixHeadlessTableHelixSortedElementEvent) => void) | undefined;
29303
+ /** Fired from a row once the rows under it are shown or hidden, with whether it is open in `detail.checked`. */
29304
+ "onhelix-toggle"?: ((e: HelixHeadlessTableHelixToggleElementEvent) => void) | undefined;
28910
29305
  };
28911
29306
 
28912
29307
  export type HelixHeadlessTableSolidJsProps = {
@@ -28949,6 +29344,12 @@ and a list here would be a second way to say what that says. This table's
28949
29344
  cells are markup, and a table written as rows of cells with no column
28950
29345
  declared in it has nowhere else to be sized from. */
28951
29346
  "prop:columns"?: (HelixHeadlessTable["columns"]) | undefined;
29347
+ /** The keys of the rows whose rows are shown at the start, separated by
29348
+ commas. Used until `expanded` is set. */
29349
+ "attr:default-expanded"?: (HelixHeadlessTable["defaultExpanded"]) | undefined;
29350
+ /** The keys of the rows whose rows are shown at the start, separated by
29351
+ commas. Used until `expanded` is set. */
29352
+ "prop:defaultExpanded"?: (HelixHeadlessTable["defaultExpanded"]) | undefined;
28952
29353
  /** The keys selected at the start, separated by commas. Used until `selected`
28953
29354
  is set. */
28954
29355
  "attr:default-selected"?: (HelixHeadlessTable["defaultSelected"]) | undefined;
@@ -28983,6 +29384,18 @@ While it is set, a line after the rows shows it, or your own content in the
28983
29384
  `error` slot, in place of the empty and loading lines, and the live region
28984
29385
  says it. */
28985
29386
  "prop:errorText"?: (HelixHeadlessTable["errorText"]) | undefined;
29387
+ /** The name of the heading over the disclosure buttons. */
29388
+ "attr:expand-column-label"?: (HelixHeadlessTable["expandColumnLabel"]) | undefined;
29389
+ /** The name of the heading over the disclosure buttons. */
29390
+ "prop:expandColumnLabel"?: (HelixHeadlessTable["expandColumnLabel"]) | undefined;
29391
+ /** The keys of the rows whose rows are shown, separated by commas, in a table
29392
+ whose rows nest. A press on a row's disclosure button asks first, and
29393
+ `default-expanded` seeds what this element then owns. */
29394
+ "prop:expanded"?: (HelixHeadlessTable["expanded"]) | undefined;
29395
+ /** The name of a row's disclosure button. `{row}` is the words of the row's first cell. */
29396
+ "attr:expand-row-label"?: (HelixHeadlessTable["expandRowLabel"]) | undefined;
29397
+ /** The name of a row's disclosure button. `{row}` is the words of the row's first cell. */
29398
+ "prop:expandRowLabel"?: (HelixHeadlessTable["expandRowLabel"]) | undefined;
28986
29399
  /** The table's name where neither `label` nor an `aria-label` or
28987
29400
  `aria-labelledby` on the host gives it one. */
28988
29401
  "attr:fallback-label"?: (HelixHeadlessTable["fallbackLabel"]) | undefined;
@@ -29002,6 +29415,12 @@ cells, which is the one way a cell of your markup can take focus. */
29002
29415
  An `aria-label` or `aria-labelledby` on the host names the table too, and
29003
29416
  wins over this. */
29004
29417
  "prop:label"?: (HelixHeadlessTable["label"]) | undefined;
29418
+ /** Sends `helix-load-more` once the end of the table comes within a screen
29419
+ of view, so you can add the next rows as a reader nears them. */
29420
+ "bool:load-more"?: (HelixHeadlessTable["loadMore"]) | undefined;
29421
+ /** Sends `helix-load-more` once the end of the table comes within a screen
29422
+ of view, so you can add the next rows as a reader nears them. */
29423
+ "prop:loadMore"?: (HelixHeadlessTable["loadMore"]) | undefined;
29005
29424
  /** What screen readers hear each time a key moves a held row, in a
29006
29425
  `reorderable` table. `{name}` is the row's words, `{position}` the place it
29007
29426
  would go, counting from 1, and `{count}` the number of rows. */
@@ -29036,6 +29455,12 @@ table moves no row itself: you move your rows on `helix-reorder`. */
29036
29455
  "attr:select-all-label"?: (HelixHeadlessTable["selectAllLabel"]) | undefined;
29037
29456
  /** The name of the checkbox in the heading that selects every row. */
29038
29457
  "prop:selectAllLabel"?: (HelixHeadlessTable["selectAllLabel"]) | undefined;
29458
+ /** The name of the heading over the checkboxes under
29459
+ `selection-mode="single"`, where it holds no checkbox of its own. */
29460
+ "attr:select-column-label"?: (HelixHeadlessTable["selectColumnLabel"]) | undefined;
29461
+ /** The name of the heading over the checkboxes under
29462
+ `selection-mode="single"`, where it holds no checkbox of its own. */
29463
+ "prop:selectColumnLabel"?: (HelixHeadlessTable["selectColumnLabel"]) | undefined;
29039
29464
  /** The keys of the selected rows, separated by commas.
29040
29465
 
29041
29466
  A reader's press fires `helix-select` first, and refusing it leaves the
@@ -29052,6 +29477,20 @@ rows are chosen, written in the locale, and a language that needs plural
29052
29477
  forms writes them: `{count, plural, one {# wybrany} few {# wybrane} many
29053
29478
  {# wybranych} other {# wybranego}}`. */
29054
29479
  "prop:selectedLabel"?: (HelixHeadlessTable["selectedLabel"]) | undefined;
29480
+ /** What a press on a row, or in a `grid` table a key that moves to one, does
29481
+ to the rows already selected: `toggle`, the default, leaves them to the
29482
+ checkboxes, and `replace` selects the row alone. */
29483
+ "attr:selection-behavior"?: (HelixHeadlessTable["selectionBehavior"]) | undefined;
29484
+ /** What a press on a row, or in a `grid` table a key that moves to one, does
29485
+ to the rows already selected: `toggle`, the default, leaves them to the
29486
+ checkboxes, and `replace` selects the row alone. */
29487
+ "prop:selectionBehavior"?: (HelixHeadlessTable["selectionBehavior"]) | undefined;
29488
+ /** How many rows a `selectable` table selects: `multiple`, the default, or
29489
+ `single`, one at a time. */
29490
+ "attr:selection-mode"?: (HelixHeadlessTable["selectionMode"]) | undefined;
29491
+ /** How many rows a `selectable` table selects: `multiple`, the default, or
29492
+ `single`, one at a time. */
29493
+ "prop:selectionMode"?: (HelixHeadlessTable["selectionMode"]) | undefined;
29055
29494
  /** The name of a row's checkbox. `{row}` is replaced with the words of the
29056
29495
  row's first cell. */
29057
29496
  "attr:select-row-label"?: (HelixHeadlessTable["selectRowLabel"]) | undefined;
@@ -29098,6 +29537,14 @@ say that without the component knowing what a row looks like. */
29098
29537
  "on:helix-before-reorder"?: ((
29099
29538
  e: HelixHeadlessTableHelixBeforeReorderElementEvent,
29100
29539
  ) => void) | undefined;
29540
+ /** Fired from a row when its disclosure button is pressed, with whether it would be open in `detail.checked`. Cancelable: cancel it to keep the row as it is. */
29541
+ "on:helix-before-toggle"?: ((
29542
+ e: HelixHeadlessTableHelixBeforeToggleElementEvent,
29543
+ ) => void) | undefined;
29544
+ /** Fired, in a table with `load-more`, when the end of the table comes within a screen of view, once for each number of rows. */
29545
+ "on:helix-load-more"?: ((
29546
+ e: HelixHeadlessTableHelixLoadMoreElementEvent,
29547
+ ) => void) | undefined;
29101
29548
  /** Fired after `helix-before-reorder` when nobody canceled it. Move your rows to the order in `keys`. Cancelable: cancel it to say the move did not happen. */
29102
29549
  "on:helix-reorder"?: ((e: HelixHeadlessTableHelixReorderElementEvent) => void) | undefined;
29103
29550
  /** The selection is about to change. The event carries every selected key, separated by commas. Cancelable: cancel it to keep the current selection. */
@@ -29110,6 +29557,8 @@ say that without the component knowing what a row looks like. */
29110
29557
  "on:helix-sort"?: ((e: HelixHeadlessTableHelixSortElementEvent) => void) | undefined;
29111
29558
  /** Fired after the sort order changes, with the new order. */
29112
29559
  "on:helix-sorted"?: ((e: HelixHeadlessTableHelixSortedElementEvent) => void) | undefined;
29560
+ /** Fired from a row once the rows under it are shown or hidden, with whether it is open in `detail.checked`. */
29561
+ "on:helix-toggle"?: ((e: HelixHeadlessTableHelixToggleElementEvent) => void) | undefined;
29113
29562
 
29114
29563
  /** Set the innerHTML of the element */
29115
29564
  innerHTML?: (string) | undefined;
@@ -29128,6 +29577,10 @@ reached. */
29128
29577
  /** The URL a press on the row follows, which makes the whole row a link.
29129
29578
  Empty, the default, leaves presses to the row's cells. */
29130
29579
  href?: (HelixHeadlessTableRow["href"]) | undefined;
29580
+ /** The key of the row this one sits under, in a table whose rows nest: that
29581
+ row's `value`, or its place among the rows where it has none. Empty, the
29582
+ default, is a row at the top. */
29583
+ parent?: (HelixHeadlessTableRow["parent"]) | undefined;
29131
29584
  /** The `rel` of the row's link. You set it yourself, as on an anchor. */
29132
29585
  rel?: (HelixHeadlessTableRow["rel"]) | undefined;
29133
29586
  /** Where the row's link opens, such as `_blank`. */
@@ -29148,6 +29601,10 @@ reached. */
29148
29601
  /** The URL a press on the row follows, which makes the whole row a link.
29149
29602
  Empty, the default, leaves presses to the row's cells. */
29150
29603
  "prop:href"?: (HelixHeadlessTableRow["href"]) | undefined;
29604
+ /** The key of the row this one sits under, in a table whose rows nest: that
29605
+ row's `value`, or its place among the rows where it has none. Empty, the
29606
+ default, is a row at the top. */
29607
+ "prop:parent"?: (HelixHeadlessTableRow["parent"]) | undefined;
29151
29608
  /** The `rel` of the row's link. You set it yourself, as on an anchor. */
29152
29609
  "prop:rel"?: (HelixHeadlessTableRow["rel"]) | undefined;
29153
29610
  /** Where the row's link opens, such as `_blank`. */
@@ -30193,6 +30650,9 @@ export type HelixHeadlessTimeInputHelixBeforeCloseElementEvent =
30193
30650
  /** `helix-before-open` event type */
30194
30651
  export type HelixHeadlessTimeInputHelixBeforeOpenElementEvent =
30195
30652
  HelixHeadlessTimeInputElementEvent<HelixBeforeOpenEvent>;
30653
+ /** `helix-clear` event type */
30654
+ export type HelixHeadlessTimeInputHelixClearElementEvent =
30655
+ HelixHeadlessTimeInputElementEvent<HelixClearEvent>;
30196
30656
  /** `toggle` event type */
30197
30657
  export type HelixHeadlessTimeInputToggleElementEvent =
30198
30658
  HelixHeadlessTimeInputElementEvent<ToggleEvent>;
@@ -30203,6 +30663,14 @@ export type HelixHeadlessTimeInputProps = {
30203
30663
  Empty leaves the attribute off, which is the browser's default and is what
30204
30664
  lets autofill work at all. */
30205
30665
  autocomplete?: (HelixHeadlessTimeInput["autocomplete"]) | undefined;
30666
+ /** Whether the field shows a button that empties it, as Input's `clearable`
30667
+ does. Shown only while the field holds something to clear and is neither
30668
+ disabled nor read-only. */
30669
+ clearable?: (HelixHeadlessTimeInput["clearable"]) | undefined;
30670
+ /** The accessible name of the clear button, which shows only an icon. */
30671
+ "clear-label"?: (HelixHeadlessTimeInput["clearLabel"]) | undefined;
30672
+ /** The accessible name of the clear button, which shows only an icon. */
30673
+ clearLabel?: (HelixHeadlessTimeInput["clearLabel"]) | undefined;
30206
30674
  /** Times that cannot be chosen, as `HH:mm`, separated by commas or spaces.
30207
30675
 
30208
30676
  Handed to the list, which offers them as unavailable, and checked against
@@ -30306,6 +30774,12 @@ never something this element would refuse to read back. */
30306
30774
  "unavailable-message"?: (HelixHeadlessTimeInput["unavailableMessage"]) | undefined;
30307
30775
  /** The message shown when `disable-times` bars a time. */
30308
30776
  unavailableMessage?: (HelixHeadlessTimeInput["unavailableMessage"]) | undefined;
30777
+ /** The message for text that is no time, where `bad-input-message` is not
30778
+ set. `{mode}` is `single`, `range`, or `multiple`, and `{shape}` is `HH:mm`, or `HH:mm:ss` with `seconds`. */
30779
+ "unreadable-message"?: (HelixHeadlessTimeInput["unreadableMessage"]) | undefined;
30780
+ /** The message for text that is no time, where `bad-input-message` is not
30781
+ set. `{mode}` is `single`, `range`, or `multiple`, and `{shape}` is `HH:mm`, or `HH:mm:ss` with `seconds`. */
30782
+ unreadableMessage?: (HelixHeadlessTimeInput["unreadableMessage"]) | undefined;
30309
30783
  /** Whether the panel shows one list of times or a column for each part of the
30310
30784
  time.
30311
30785
 
@@ -30343,6 +30817,18 @@ are not, where `bad-input-message` is not set. `{kind}` is `date` or
30343
30817
  are not, where `bad-input-message` is not set. `{kind}` is `date` or
30344
30818
  `time`. */
30345
30819
  incompleteMessage?: (HelixHeadlessTimeInput["incompleteMessage"]) | undefined;
30820
+ /** What a screen reader hears before the segments of a range's second date
30821
+ or time, after each segment's own name. */
30822
+ "range-end-label"?: (HelixHeadlessTimeInput["rangeEndLabel"]) | undefined;
30823
+ /** What a screen reader hears before the segments of a range's second date
30824
+ or time, after each segment's own name. */
30825
+ rangeEndLabel?: (HelixHeadlessTimeInput["rangeEndLabel"]) | undefined;
30826
+ /** What a screen reader hears before the segments of a range's first date
30827
+ or time, after each segment's own name: "month, Start, Stay". */
30828
+ "range-start-label"?: (HelixHeadlessTimeInput["rangeStartLabel"]) | undefined;
30829
+ /** What a screen reader hears before the segments of a range's first date
30830
+ or time, after each segment's own name: "month, Start, Stay". */
30831
+ rangeStartLabel?: (HelixHeadlessTimeInput["rangeStartLabel"]) | undefined;
30346
30832
  /** Whether the field is a row of segments, one for each part of the date or
30347
30833
  time, in place of a line of text.
30348
30834
 
@@ -30559,6 +31045,8 @@ a consumer handing over `new Date()` gets the time of day they expected. */
30559
31045
  "onhelix-before-open"?: ((
30560
31046
  e: HelixHeadlessTimeInputHelixBeforeOpenElementEvent,
30561
31047
  ) => void) | undefined;
31048
+ /** Fired after the clear button has emptied the field, after `input` and `change`. */
31049
+ "onhelix-clear"?: ((e: HelixHeadlessTimeInputHelixClearElementEvent) => void) | undefined;
30562
31050
  /** Fired after the value changes. */
30563
31051
  oninput?: ((e: HelixHeadlessTimeInputElementEvent) => void) | undefined;
30564
31052
  /** Fired after the list opens or closes, with `newState` and `oldState`. */
@@ -30571,6 +31059,14 @@ export type HelixHeadlessTimeInputSolidJsProps = {
30571
31059
  Empty leaves the attribute off, which is the browser's default and is what
30572
31060
  lets autofill work at all. */
30573
31061
  "prop:autocomplete"?: (HelixHeadlessTimeInput["autocomplete"]) | undefined;
31062
+ /** Whether the field shows a button that empties it, as Input's `clearable`
31063
+ does. Shown only while the field holds something to clear and is neither
31064
+ disabled nor read-only. */
31065
+ "prop:clearable"?: (HelixHeadlessTimeInput["clearable"]) | undefined;
31066
+ /** The accessible name of the clear button, which shows only an icon. */
31067
+ "attr:clear-label"?: (HelixHeadlessTimeInput["clearLabel"]) | undefined;
31068
+ /** The accessible name of the clear button, which shows only an icon. */
31069
+ "prop:clearLabel"?: (HelixHeadlessTimeInput["clearLabel"]) | undefined;
30574
31070
  /** Times that cannot be chosen, as `HH:mm`, separated by commas or spaces.
30575
31071
 
30576
31072
  Handed to the list, which offers them as unavailable, and checked against
@@ -30674,6 +31170,12 @@ never something this element would refuse to read back. */
30674
31170
  "attr:unavailable-message"?: (HelixHeadlessTimeInput["unavailableMessage"]) | undefined;
30675
31171
  /** The message shown when `disable-times` bars a time. */
30676
31172
  "prop:unavailableMessage"?: (HelixHeadlessTimeInput["unavailableMessage"]) | undefined;
31173
+ /** The message for text that is no time, where `bad-input-message` is not
31174
+ set. `{mode}` is `single`, `range`, or `multiple`, and `{shape}` is `HH:mm`, or `HH:mm:ss` with `seconds`. */
31175
+ "attr:unreadable-message"?: (HelixHeadlessTimeInput["unreadableMessage"]) | undefined;
31176
+ /** The message for text that is no time, where `bad-input-message` is not
31177
+ set. `{mode}` is `single`, `range`, or `multiple`, and `{shape}` is `HH:mm`, or `HH:mm:ss` with `seconds`. */
31178
+ "prop:unreadableMessage"?: (HelixHeadlessTimeInput["unreadableMessage"]) | undefined;
30677
31179
  /** Whether the panel shows one list of times or a column for each part of the
30678
31180
  time.
30679
31181
 
@@ -30711,6 +31213,18 @@ are not, where `bad-input-message` is not set. `{kind}` is `date` or
30711
31213
  are not, where `bad-input-message` is not set. `{kind}` is `date` or
30712
31214
  `time`. */
30713
31215
  "prop:incompleteMessage"?: (HelixHeadlessTimeInput["incompleteMessage"]) | undefined;
31216
+ /** What a screen reader hears before the segments of a range's second date
31217
+ or time, after each segment's own name. */
31218
+ "attr:range-end-label"?: (HelixHeadlessTimeInput["rangeEndLabel"]) | undefined;
31219
+ /** What a screen reader hears before the segments of a range's second date
31220
+ or time, after each segment's own name. */
31221
+ "prop:rangeEndLabel"?: (HelixHeadlessTimeInput["rangeEndLabel"]) | undefined;
31222
+ /** What a screen reader hears before the segments of a range's first date
31223
+ or time, after each segment's own name: "month, Start, Stay". */
31224
+ "attr:range-start-label"?: (HelixHeadlessTimeInput["rangeStartLabel"]) | undefined;
31225
+ /** What a screen reader hears before the segments of a range's first date
31226
+ or time, after each segment's own name: "month, Start, Stay". */
31227
+ "prop:rangeStartLabel"?: (HelixHeadlessTimeInput["rangeStartLabel"]) | undefined;
30714
31228
  /** Whether the field is a row of segments, one for each part of the date or
30715
31229
  time, in place of a line of text.
30716
31230
 
@@ -30926,6 +31440,8 @@ a consumer handing over `new Date()` gets the time of day they expected. */
30926
31440
  "on:helix-before-open"?: ((
30927
31441
  e: HelixHeadlessTimeInputHelixBeforeOpenElementEvent,
30928
31442
  ) => void) | undefined;
31443
+ /** Fired after the clear button has emptied the field, after `input` and `change`. */
31444
+ "on:helix-clear"?: ((e: HelixHeadlessTimeInputHelixClearElementEvent) => void) | undefined;
30929
31445
  /** Fired after the value changes. */
30930
31446
  "on:input"?: ((e: HelixHeadlessTimeInputElementEvent) => void) | undefined;
30931
31447
  /** Fired after the list opens or closes, with `newState` and `oldState`. */
@@ -31613,13 +32129,35 @@ Whatever `<time>` accepts, which is a date, a time, both, a duration or a
31613
32129
  week. Unset, the label is written as it was given and nothing claims to
31614
32130
  know what instant it names. */
31615
32131
  datetime?: (HelixHeadlessTimelineItem["datetime"]) | undefined;
32132
+ /** Marks an event that has not happened yet, such as one that is scheduled.
32133
+ The mark is the open circle, and a screen reader hears `pending-label`. */
32134
+ pending?: (HelixHeadlessTimelineItem["pending"]) | undefined;
32135
+ /** What a screen reader hears for an entry that is `pending`. */
32136
+ "pending-label"?: (HelixHeadlessTimelineItem["pendingLabel"]) | undefined;
32137
+ /** What a screen reader hears for an entry that is `pending`. */
32138
+ pendingLabel?: (HelixHeadlessTimelineItem["pendingLabel"]) | undefined;
31616
32139
  /** Writes the time as how long ago it was, or how long until it, from
31617
32140
  `datetime`, where the `time` slot is empty: `long` ("3 hours ago"),
31618
32141
  `short` ("3 hr. ago") or `narrow` ("3h ago"). Set with no value, it is
31619
32142
  `long`. The words move on as they go stale. */
31620
32143
  relative?: (HelixHeadlessTimelineItem["relative"]) | undefined;
31621
- /** The kind of event. It sets the color of the mark and nothing else. */
32144
+ /** The kind of event. It sets the color of the mark, and a screen reader
32145
+ hears it as the word `tone-labels` gives it. */
31622
32146
  tone?: (HelixHeadlessTimelineItem["tone"]) | undefined;
32147
+ /** What a screen reader is told this entry's tone is, such as "Failed".
32148
+ Absent is the tone's word in `tone-labels`. */
32149
+ "tone-label"?: (HelixHeadlessTimelineItem["toneLabel"]) | undefined;
32150
+ /** What a screen reader is told this entry's tone is, such as "Failed".
32151
+ Absent is the tone's word in `tone-labels`. */
32152
+ toneLabel?: (HelixHeadlessTimelineItem["toneLabel"]) | undefined;
32153
+ /** What a screen reader is told each tone is, by the tone's name, written as
32154
+ JSON in the attribute: `tone-labels='{"danger":"Failed"}'`. A tone with no
32155
+ word is not read, which is `neutral` and `primary` in English. */
32156
+ "tone-labels"?: (HelixHeadlessTimelineItem["toneLabels"]) | undefined;
32157
+ /** What a screen reader is told each tone is, by the tone's name, written as
32158
+ JSON in the attribute: `tone-labels='{"danger":"Failed"}'`. A tone with no
32159
+ word is not read, which is `neutral` and `primary` in English. */
32160
+ toneLabels?: (HelixHeadlessTimelineItem["toneLabels"]) | undefined;
31623
32161
  };
31624
32162
 
31625
32163
  export type HelixHeadlessTimelineItemSolidJsProps = {
@@ -31630,13 +32168,35 @@ Whatever `<time>` accepts, which is a date, a time, both, a duration or a
31630
32168
  week. Unset, the label is written as it was given and nothing claims to
31631
32169
  know what instant it names. */
31632
32170
  "prop:datetime"?: (HelixHeadlessTimelineItem["datetime"]) | undefined;
32171
+ /** Marks an event that has not happened yet, such as one that is scheduled.
32172
+ The mark is the open circle, and a screen reader hears `pending-label`. */
32173
+ "prop:pending"?: (HelixHeadlessTimelineItem["pending"]) | undefined;
32174
+ /** What a screen reader hears for an entry that is `pending`. */
32175
+ "attr:pending-label"?: (HelixHeadlessTimelineItem["pendingLabel"]) | undefined;
32176
+ /** What a screen reader hears for an entry that is `pending`. */
32177
+ "prop:pendingLabel"?: (HelixHeadlessTimelineItem["pendingLabel"]) | undefined;
31633
32178
  /** Writes the time as how long ago it was, or how long until it, from
31634
32179
  `datetime`, where the `time` slot is empty: `long` ("3 hours ago"),
31635
32180
  `short` ("3 hr. ago") or `narrow` ("3h ago"). Set with no value, it is
31636
32181
  `long`. The words move on as they go stale. */
31637
32182
  "prop:relative"?: (HelixHeadlessTimelineItem["relative"]) | undefined;
31638
- /** The kind of event. It sets the color of the mark and nothing else. */
32183
+ /** The kind of event. It sets the color of the mark, and a screen reader
32184
+ hears it as the word `tone-labels` gives it. */
31639
32185
  "prop:tone"?: (HelixHeadlessTimelineItem["tone"]) | undefined;
32186
+ /** What a screen reader is told this entry's tone is, such as "Failed".
32187
+ Absent is the tone's word in `tone-labels`. */
32188
+ "attr:tone-label"?: (HelixHeadlessTimelineItem["toneLabel"]) | undefined;
32189
+ /** What a screen reader is told this entry's tone is, such as "Failed".
32190
+ Absent is the tone's word in `tone-labels`. */
32191
+ "prop:toneLabel"?: (HelixHeadlessTimelineItem["toneLabel"]) | undefined;
32192
+ /** What a screen reader is told each tone is, by the tone's name, written as
32193
+ JSON in the attribute: `tone-labels='{"danger":"Failed"}'`. A tone with no
32194
+ word is not read, which is `neutral` and `primary` in English. */
32195
+ "attr:tone-labels"?: (HelixHeadlessTimelineItem["toneLabels"]) | undefined;
32196
+ /** What a screen reader is told each tone is, by the tone's name, written as
32197
+ JSON in the attribute: `tone-labels='{"danger":"Failed"}'`. A tone with no
32198
+ word is not read, which is `neutral` and `primary` in English. */
32199
+ "prop:toneLabels"?: (HelixHeadlessTimelineItem["toneLabels"]) | undefined;
31640
32200
 
31641
32201
  /** Set the innerHTML of the element */
31642
32202
  innerHTML?: (string) | undefined;
@@ -31920,6 +32480,18 @@ export type HelixHeadlessToggleGroupHelixSelectElementEvent =
31920
32480
  HelixHeadlessToggleGroupElementEvent<HelixSelectEvent>;
31921
32481
 
31922
32482
  export type HelixHeadlessToggleGroupProps = {
32483
+ /** Whether a press on the chosen item, or Space or Enter on it, takes it
32484
+ back so nothing is chosen, as React Aria's `ToggleButtonGroup` and
32485
+ Radix's `ToggleGroup` do in a single group. Absent, a single group always
32486
+ keeps its choice once it has one, as a radio group does. A multiple group
32487
+ releases a pressed item either way. */
32488
+ "allow-empty-selection"?: (HelixHeadlessToggleGroup["allowEmptySelection"]) | undefined;
32489
+ /** Whether a press on the chosen item, or Space or Enter on it, takes it
32490
+ back so nothing is chosen, as React Aria's `ToggleButtonGroup` and
32491
+ Radix's `ToggleGroup` do in a single group. Absent, a single group always
32492
+ keeps its choice once it has one, as a radio group does. A multiple group
32493
+ releases a pressed item either way. */
32494
+ allowEmptySelection?: (HelixHeadlessToggleGroup["allowEmptySelection"]) | undefined;
31923
32495
  /** Where the group's label sits. `start` puts it on the track's line.
31924
32496
 
31925
32497
  Absent is above, which is what a field looks like and what almost every
@@ -32098,6 +32670,18 @@ Where one item is chosen, it is that one value, or none. */
32098
32670
  };
32099
32671
 
32100
32672
  export type HelixHeadlessToggleGroupSolidJsProps = {
32673
+ /** Whether a press on the chosen item, or Space or Enter on it, takes it
32674
+ back so nothing is chosen, as React Aria's `ToggleButtonGroup` and
32675
+ Radix's `ToggleGroup` do in a single group. Absent, a single group always
32676
+ keeps its choice once it has one, as a radio group does. A multiple group
32677
+ releases a pressed item either way. */
32678
+ "bool:allow-empty-selection"?: (HelixHeadlessToggleGroup["allowEmptySelection"]) | undefined;
32679
+ /** Whether a press on the chosen item, or Space or Enter on it, takes it
32680
+ back so nothing is chosen, as React Aria's `ToggleButtonGroup` and
32681
+ Radix's `ToggleGroup` do in a single group. Absent, a single group always
32682
+ keeps its choice once it has one, as a radio group does. A multiple group
32683
+ releases a pressed item either way. */
32684
+ "prop:allowEmptySelection"?: (HelixHeadlessToggleGroup["allowEmptySelection"]) | undefined;
32101
32685
  /** Where the group's label sits. `start` puts it on the track's line.
32102
32686
 
32103
32687
  Absent is above, which is what a field looks like and what almost every
@@ -33854,6 +34438,13 @@ Written by the playlist rather than by the entry, the way an option's
33854
34438
  selection is: an entry that made itself current would be a second answer to
33855
34439
  which one is playing. */
33856
34440
  current?: (HelixHeadlessVideoPlaylistItem["current"]) | undefined;
34441
+ /** Whether the entry holds the playlist's tab stop. Unset, every entry is in
34442
+ the tab order, which is what a server renders.
34443
+
34444
+ **Written by the playlist, with no attribute, and it reaches the button.**
34445
+ The playlist gives the stop to the entry a reader last focused, or to the
34446
+ current one, and the arrow keys reach the rest. */
34447
+ focusable?: (HelixHeadlessVideoPlaylistItem["focusable"]) | undefined;
33857
34448
 
33858
34449
  /** The entry was chosen. Cancelable: cancel it to keep the current entry. */
33859
34450
  "onhelix-select"?: ((
@@ -33882,6 +34473,13 @@ Written by the playlist rather than by the entry, the way an option's
33882
34473
  selection is: an entry that made itself current would be a second answer to
33883
34474
  which one is playing. */
33884
34475
  "prop:current"?: (HelixHeadlessVideoPlaylistItem["current"]) | undefined;
34476
+ /** Whether the entry holds the playlist's tab stop. Unset, every entry is in
34477
+ the tab order, which is what a server renders.
34478
+
34479
+ **Written by the playlist, with no attribute, and it reaches the button.**
34480
+ The playlist gives the stop to the entry a reader last focused, or to the
34481
+ current one, and the arrow keys reach the rest. */
34482
+ "prop:focusable"?: (HelixHeadlessVideoPlaylistItem["focusable"]) | undefined;
33885
34483
  /** The entry was chosen. Cancelable: cancel it to keep the current entry. */
33886
34484
  "on:helix-select"?: ((
33887
34485
  e: HelixHeadlessVideoPlaylistItemHelixSelectElementEvent,
@@ -33958,8 +34556,20 @@ export type HelixHeadlessVideoPlaylistHelixEndElementEvent =
33958
34556
  HelixHeadlessVideoPlaylistElementEvent<HelixEndEvent>;
33959
34557
 
33960
34558
  export type HelixHeadlessVideoPlaylistProps = {
34559
+ /** What the playlist says while it has no entries. The `empty` slot replaces it. */
34560
+ "empty-label"?: (HelixHeadlessVideoPlaylist["emptyLabel"]) | undefined;
34561
+ /** What the playlist says while it has no entries. The `empty` slot replaces it. */
34562
+ emptyLabel?: (HelixHeadlessVideoPlaylist["emptyLabel"]) | undefined;
33961
34563
  /** The list's name, read by screen readers. */
33962
34564
  label?: (HelixHeadlessVideoPlaylist["label"]) | undefined;
34565
+ /** Stays on an entry when its clip ends, where the playlist would otherwise
34566
+ play the next one. The player's controls, a press, and `next()` still
34567
+ move. `repeat="one"` still plays the entry again. */
34568
+ "no-advance"?: (HelixHeadlessVideoPlaylist["noAdvance"]) | undefined;
34569
+ /** Stays on an entry when its clip ends, where the playlist would otherwise
34570
+ play the next one. The player's controls, a press, and `next()` still
34571
+ move. `repeat="one"` still plays the entry again. */
34572
+ noAdvance?: (HelixHeadlessVideoPlaylist["noAdvance"]) | undefined;
33963
34573
  /** What the live region says when the playlist moves to another entry.
33964
34574
  `{title}` is the entry's name.
33965
34575
 
@@ -34008,7 +34618,7 @@ Ignored once `active` is written. */
34008
34618
  "onhelix-activate"?: ((
34009
34619
  e: HelixHeadlessVideoPlaylistHelixActivateElementEvent,
34010
34620
  ) => void) | undefined;
34011
- /** The current entry is about to change. Cancelable: cancel it to keep the current entry. */
34621
+ /** The current entry is about to change, and `detail.cause` says why: `press`, `next`, `previous`, `ended`, or `removed`. Cancelable: cancel it to keep the current entry. */
34012
34622
  "onhelix-before-activate"?: ((
34013
34623
  e: HelixHeadlessVideoPlaylistHelixBeforeActivateElementEvent,
34014
34624
  ) => void) | undefined;
@@ -34017,8 +34627,20 @@ Ignored once `active` is written. */
34017
34627
  };
34018
34628
 
34019
34629
  export type HelixHeadlessVideoPlaylistSolidJsProps = {
34630
+ /** What the playlist says while it has no entries. The `empty` slot replaces it. */
34631
+ "attr:empty-label"?: (HelixHeadlessVideoPlaylist["emptyLabel"]) | undefined;
34632
+ /** What the playlist says while it has no entries. The `empty` slot replaces it. */
34633
+ "prop:emptyLabel"?: (HelixHeadlessVideoPlaylist["emptyLabel"]) | undefined;
34020
34634
  /** The list's name, read by screen readers. */
34021
34635
  "prop:label"?: (HelixHeadlessVideoPlaylist["label"]) | undefined;
34636
+ /** Stays on an entry when its clip ends, where the playlist would otherwise
34637
+ play the next one. The player's controls, a press, and `next()` still
34638
+ move. `repeat="one"` still plays the entry again. */
34639
+ "bool:no-advance"?: (HelixHeadlessVideoPlaylist["noAdvance"]) | undefined;
34640
+ /** Stays on an entry when its clip ends, where the playlist would otherwise
34641
+ play the next one. The player's controls, a press, and `next()` still
34642
+ move. `repeat="one"` still plays the entry again. */
34643
+ "prop:noAdvance"?: (HelixHeadlessVideoPlaylist["noAdvance"]) | undefined;
34022
34644
  /** What the live region says when the playlist moves to another entry.
34023
34645
  `{title}` is the entry's name.
34024
34646
 
@@ -34066,7 +34688,7 @@ Ignored once `active` is written. */
34066
34688
  "on:helix-activate"?: ((
34067
34689
  e: HelixHeadlessVideoPlaylistHelixActivateElementEvent,
34068
34690
  ) => void) | undefined;
34069
- /** The current entry is about to change. Cancelable: cancel it to keep the current entry. */
34691
+ /** The current entry is about to change, and `detail.cause` says why: `press`, `next`, `previous`, `ended`, or `removed`. Cancelable: cancel it to keep the current entry. */
34070
34692
  "on:helix-before-activate"?: ((
34071
34693
  e: HelixHeadlessVideoPlaylistHelixBeforeActivateElementEvent,
34072
34694
  ) => void) | undefined;
@@ -35051,6 +35673,12 @@ export type HelixHeadlessVirtualListProps = {
35051
35673
  items out as a grid of that many equal columns, windowed a line at a
35052
35674
  time, with Left and Right moving along a line. */
35053
35675
  columns?: (HelixHeadlessVirtualList["columns"]) | undefined;
35676
+ /** The keys of the items a reader cannot choose or move to, separated by
35677
+ commas, as `value` writes keys. Their rows carry `aria-disabled`. */
35678
+ "disabled-keys"?: (HelixHeadlessVirtualList["disabledKeys"]) | undefined;
35679
+ /** The keys of the items a reader cannot choose or move to, separated by
35680
+ commas, as `value` writes keys. Their rows carry `aria-disabled`. */
35681
+ disabledKeys?: (HelixHeadlessVirtualList["disabledKeys"]) | undefined;
35054
35682
  /** The text of the row shown when there are no items and none are loading,
35055
35683
  where the `empty` slot is empty. Empty, the default, shows no row. */
35056
35684
  "empty-label"?: (HelixHeadlessVirtualList["emptyLabel"]) | undefined;
@@ -35065,6 +35693,11 @@ right whenever the rows really are one height and is the cheaper of the two. */
35065
35693
  /** The id of the script element that holds the items as JSON. `items` wins
35066
35694
  where both are set. */
35067
35695
  for?: (HelixHeadlessVirtualList["for"]) | undefined;
35696
+ /** The space between two rows, and between two columns in a grid, in
35697
+ pixels. The list counts it in each row's place, so a gap does not walk
35698
+ the rows away from the scroll position the way a margin on each row
35699
+ would. */
35700
+ gap?: (HelixHeadlessVirtualList["gap"]) | undefined;
35068
35701
  /** The field of each item that is its key in `value`, as a key or a path of
35069
35702
  keys. Empty reads a string or a number item as its own key, and any
35070
35703
  other item by its place in the set. */
@@ -35100,6 +35733,22 @@ disagree with itself; measuring is what a set of genuinely different
35100
35733
  heights needs and costs a read of each row as it renders. A list of
35101
35734
  one-line rows should leave this alone. */
35102
35735
  measured?: (HelixHeadlessVirtualList["measured"]) | undefined;
35736
+ /** The narrowest a column of a grid may be, in pixels. Set, the list lays
35737
+ out as many columns as fit the box at that width, at least one, and
35738
+ follows the box as it resizes, which `columns` then does not decide. */
35739
+ "min-column-width"?: (HelixHeadlessVirtualList["minColumnWidth"] | `${number}`) | undefined;
35740
+ /** The narrowest a column of a grid may be, in pixels. Set, the list lays
35741
+ out as many columns as fit the box at that width, at least one, and
35742
+ follows the box as it resizes, which `columns` then does not decide. */
35743
+ minColumnWidth?: (HelixHeadlessVirtualList["minColumnWidth"]) | undefined;
35744
+ /** What a press does to the items already chosen: `toggle` adds or takes out
35745
+ the item, and `replace` selects it alone and lets the arrow keys carry the
35746
+ selection, with Control or Command adding or taking out one item. */
35747
+ "selection-behavior"?: (HelixHeadlessVirtualList["selectionBehavior"]) | undefined;
35748
+ /** What a press does to the items already chosen: `toggle` adds or takes out
35749
+ the item, and `replace` selects it alone and lets the arrow keys carry the
35750
+ selection, with Control or Command adding or taking out one item. */
35751
+ selectionBehavior?: (HelixHeadlessVirtualList["selectionBehavior"]) | undefined;
35103
35752
  /** Makes the list a list box a reader chooses from: `single` selects one
35104
35753
  item, and `multiple` any number. Unset is a list a reader reads. */
35105
35754
  "selection-mode"?: (HelixHeadlessVirtualList["selectionMode"]) | undefined;
@@ -35156,6 +35805,12 @@ export type HelixHeadlessVirtualListSolidJsProps = {
35156
35805
  items out as a grid of that many equal columns, windowed a line at a
35157
35806
  time, with Left and Right moving along a line. */
35158
35807
  "prop:columns"?: (HelixHeadlessVirtualList["columns"]) | undefined;
35808
+ /** The keys of the items a reader cannot choose or move to, separated by
35809
+ commas, as `value` writes keys. Their rows carry `aria-disabled`. */
35810
+ "attr:disabled-keys"?: (HelixHeadlessVirtualList["disabledKeys"]) | undefined;
35811
+ /** The keys of the items a reader cannot choose or move to, separated by
35812
+ commas, as `value` writes keys. Their rows carry `aria-disabled`. */
35813
+ "prop:disabledKeys"?: (HelixHeadlessVirtualList["disabledKeys"]) | undefined;
35159
35814
  /** The text of the row shown when there are no items and none are loading,
35160
35815
  where the `empty` slot is empty. Empty, the default, shows no row. */
35161
35816
  "attr:empty-label"?: (HelixHeadlessVirtualList["emptyLabel"]) | undefined;
@@ -35170,6 +35825,11 @@ right whenever the rows really are one height and is the cheaper of the two. */
35170
35825
  /** The id of the script element that holds the items as JSON. `items` wins
35171
35826
  where both are set. */
35172
35827
  "prop:for"?: (HelixHeadlessVirtualList["for"]) | undefined;
35828
+ /** The space between two rows, and between two columns in a grid, in
35829
+ pixels. The list counts it in each row's place, so a gap does not walk
35830
+ the rows away from the scroll position the way a margin on each row
35831
+ would. */
35832
+ "prop:gap"?: (HelixHeadlessVirtualList["gap"]) | undefined;
35173
35833
  /** The field of each item that is its key in `value`, as a key or a path of
35174
35834
  keys. Empty reads a string or a number item as its own key, and any
35175
35835
  other item by its place in the set. */
@@ -35205,6 +35865,22 @@ disagree with itself; measuring is what a set of genuinely different
35205
35865
  heights needs and costs a read of each row as it renders. A list of
35206
35866
  one-line rows should leave this alone. */
35207
35867
  "prop:measured"?: (HelixHeadlessVirtualList["measured"]) | undefined;
35868
+ /** The narrowest a column of a grid may be, in pixels. Set, the list lays
35869
+ out as many columns as fit the box at that width, at least one, and
35870
+ follows the box as it resizes, which `columns` then does not decide. */
35871
+ "attr:min-column-width"?: (HelixHeadlessVirtualList["minColumnWidth"] | `${number}`) | undefined;
35872
+ /** The narrowest a column of a grid may be, in pixels. Set, the list lays
35873
+ out as many columns as fit the box at that width, at least one, and
35874
+ follows the box as it resizes, which `columns` then does not decide. */
35875
+ "prop:minColumnWidth"?: (HelixHeadlessVirtualList["minColumnWidth"]) | undefined;
35876
+ /** What a press does to the items already chosen: `toggle` adds or takes out
35877
+ the item, and `replace` selects it alone and lets the arrow keys carry the
35878
+ selection, with Control or Command adding or taking out one item. */
35879
+ "attr:selection-behavior"?: (HelixHeadlessVirtualList["selectionBehavior"]) | undefined;
35880
+ /** What a press does to the items already chosen: `toggle` adds or takes out
35881
+ the item, and `replace` selects it alone and lets the arrow keys carry the
35882
+ selection, with Control or Command adding or taking out one item. */
35883
+ "prop:selectionBehavior"?: (HelixHeadlessVirtualList["selectionBehavior"]) | undefined;
35208
35884
  /** Makes the list a list box a reader chooses from: `single` selects one
35209
35885
  item, and `multiple` any number. Unset is a list a reader reads. */
35210
35886
  "attr:selection-mode"?: (HelixHeadlessVirtualList["selectionMode"]) | undefined;
@@ -38041,6 +38717,16 @@ export type CustomElements = {
38041
38717
  * - What a key changes that a reader cannot see is said: where a card moved
38042
38718
  * to, its new size, how many cards are selected, and the zoom. A selected
38043
38719
  * card or connection says so when a reader arrives on it.
38720
+ * - Control or Command with C copies the selected cards, and the connections
38721
+ * between them, as a JSON Canvas document in text, which another board or
38722
+ * an app that reads the format takes. A paste is your page's: listen for
38723
+ * `paste` on the board, read the text with `fromJsonCanvas`, and add the
38724
+ * cards it holds.
38725
+ * - Control or Command with Z undoes the last move or resize the board made,
38726
+ * and with Shift, or Control with Y, makes it again. `undo()` and `redo()`
38727
+ * do the same from a script. Each asks with `helix-before-move` and tells
38728
+ * with `helix-move`, as a move does, so a board that holds its positions in
38729
+ * your state is undone through your state.
38044
38730
  *
38045
38731
  * Every drag also works with clicks, as WCAG 2.5.7 requires for a pointer that
38046
38732
  * cannot hold a button down. Click a selected card's move handle, a corner, a
@@ -38091,6 +38777,7 @@ export type CustomElements = {
38091
38777
  * this, so a reader hears the ends first and what the line says after.
38092
38778
  * - `controls-label`/`controlsLabel`: The name of the group of controls, read by screen readers, which names
38093
38779
  * what the controls drive rather than the mechanism.
38780
+ * - `copied-label`/`copiedLabel`: What screen readers hear after a copy, with `{count}` for the cards copied.
38094
38781
  * - `fallback-label`/`fallbackLabel`: The board's name where `label` is empty.
38095
38782
  * - `label`: The accessible name for the board. Required.
38096
38783
  *
@@ -38136,6 +38823,7 @@ export type CustomElements = {
38136
38823
  * walk the cards.
38137
38824
  * - `reconnecting-label`/`reconnectingLabel`: The text announced when a connection's end is picked up, with `{from}` and
38138
38825
  * `{to}`.
38826
+ * - `redone-label`/`redoneLabel`: What screen readers hear after a move or a resize is made again.
38139
38827
  * - `resized-label`/`resizedLabel`: What screen readers hear after a key resizes a card, with `{name}` for the
38140
38828
  * card and `{width}` and `{height}` for its new size, in the document's
38141
38829
  * units.
@@ -38193,6 +38881,7 @@ export type CustomElements = {
38193
38881
  * see the board is told by the color; this is how a reader who cannot is
38194
38882
  * told the same. A tone left out is not read.
38195
38883
  * - `two-finger-hint-label`/`twoFingerHintLabel`: The hint shown when one finger swipes over the board with `gestures="cooperative"`.
38884
+ * - `undone-label`/`undoneLabel`: What screen readers hear after a move or a resize is undone.
38196
38885
  * - `using-label`/`usingLabel`: The line shown while the board, with `gestures="activate"`, has the gestures.
38197
38886
  * - `wheel-hint-label`/`wheelHintLabel`: The hint shown when the wheel scrolls past the board with
38198
38887
  * `gestures="cooperative"`. `{key}` is ⌘ on a Mac and Ctrl elsewhere.
@@ -38365,6 +39054,11 @@ export type CustomElements = {
38365
39054
  *
38366
39055
  * What a reader landing on a card off the edge of the view gets, and what a
38367
39056
  * page's own search or outline can call to take a reader to one.
39057
+ * - `undo() => boolean`: Puts the cards of the last move or resize back where they stood, asking
39058
+ * with `helix-before-move` first. Returns whether anything moved: false
39059
+ * with nothing to undo, or when the request was refused.
39060
+ * - `redo() => boolean`: Makes the last move or resize `undo` took back again, asking with
39061
+ * `helix-before-move` first. Returns whether anything moved.
38368
39062
  * - `toJsonCanvas() => CanvasDocument`: The board as a JSON Canvas document, for saving it.
38369
39063
  *
38370
39064
  * What each card holds is the consumer's DOM, so a card comes back as a card
@@ -39195,6 +39889,19 @@ export type CustomElements = {
39195
39889
  * "Ada is typing" (`typing-label`), which a screen reader hears, and clearing
39196
39890
  * it takes them away. Anything slotted into `status` is drawn first.
39197
39891
  *
39892
+ * **Keyboard.** The transcript moves between turns the way a feed does. Each
39893
+ * turn says its place, such as "3 of 40", windowed or not.
39894
+ *
39895
+ * | Key | What it does |
39896
+ * |---|---|
39897
+ * | Page Down, Page Up | On a turn or inside one, moves focus to the next or the previous turn. On the transcript itself, moves focus to the turn at the top of the view. |
39898
+ * | Control with End | Moves focus to the composer. |
39899
+ * | Control with Home | Moves focus to the first control above the transcript, or to the transcript. |
39900
+ *
39901
+ * While you are scrolled away from the newest turn, the `resume` region shows
39902
+ * a button that takes you back, named by `resume-label`, "Jump to latest".
39903
+ * Slot your own control into `resume` to replace it.
39904
+ *
39198
39905
  * A screen reader names each turn by its author and its time, such as "You, 2
39199
39906
  * minutes ago". Set `me-label` and `message-label` to say it in your language,
39200
39907
  * and give each turn by `them` an `author-label`. A turn with neither an author
@@ -39265,6 +39972,7 @@ export type CustomElements = {
39265
39972
  * is the way back, and that is a part inside the shadow tree where a
39266
39973
  * stylesheet can already reach it. Measured rather than assumed: `label,
39267
39974
  * pinned` after upgrade against `label` from the server.
39975
+ * - `resume-label`/`resumeLabel`: The words on the button that returns to the newest turn, where `resume` is empty.
39268
39976
  * - `threshold`: How near the bottom still counts as being at it, in pixels.
39269
39977
  *
39270
39978
  * A hook rather than a constant, because the right number depends on how tall
@@ -39334,7 +40042,7 @@ export type CustomElements = {
39334
40042
  * - `actions`: Controls for the whole conversation, beside the header.
39335
40043
  * - `composer`: The composer, below the transcript.
39336
40044
  * - `header`: Content above the transcript that names the conversation.
39337
- * - `resume`: The control that returns to the bottom, shown while the user has scrolled away.
40045
+ * - `resume`: The control that returns to the bottom, shown while the user has scrolled away. Defaults to a button named by `resume-label`.
39338
40046
  * - `status`: Status beside the composer, such as someone typing or a lost connection.
39339
40047
  *
39340
40048
  * ## Methods
@@ -39383,6 +40091,8 @@ export type CustomElements = {
39383
40091
  * - `message-state`: The state text of a turn from `turns`, when there is one to show.
39384
40092
  * - `message-time`: The time of a turn from `turns`.
39385
40093
  * - `resume`: The control shown while the user is scrolled away from the bottom.
40094
+ * - `resume-button`: The button the `resume` region shows when nothing is slotted into it.
40095
+ * - `resume-mark`: The arrow on the default `resume-button`.
39386
40096
  * - `status`: The status region, outside the log.
39387
40097
  * - `turn`: The wrapper around the message drawn for one turn from `turns`.
39388
40098
  * - `typing`: The words that say who is typing, in the status band, while `typing` names someone.
@@ -39892,7 +40602,18 @@ export type CustomElements = {
39892
40602
  * For a fragment of code inside a sentence, use `Code`.
39893
40603
  *
39894
40604
  * Set `line-numbers` to number the lines in a gutter beside the code, hidden
39895
- * from the accessibility tree and left out of a copy. Set `highlight` to a
40605
+ * from the accessibility tree and left out of a copy. Set `mark-lines` to
40606
+ * mark lines a reader should look at, such as `2, 4-6`: the block draws a
40607
+ * band behind each run, placed where the lines are laid out, so it follows a
40608
+ * highlighter's markup and lines that wrap. Set `wrap` to wrap long lines
40609
+ * rather than scroll them; a gutter then numbers each line where it starts.
40610
+ * Set `wrappable` for a button in the header that turns `wrap` on and off,
40611
+ * pressed while the lines wrap.
40612
+ *
40613
+ * The header holds the name, the `actions` slot, and the copy button. Slot a
40614
+ * control into `actions`, such as a button that sets `wrap` or one that opens
40615
+ * the code in an editor, and the block draws a header for it even with no
40616
+ * name. `copy-icon` and `copied-icon` replace the copy button's two icons. Set `highlight` to a
39896
40617
  * function that turns the code into highlighted markup, such as one wrapping
39897
40618
  * Shiki or Prism, and the block draws what it returns; it is handed the
39898
40619
  * block's `language`, so one function serves every block. The code stays in
@@ -39979,6 +40700,9 @@ export type CustomElements = {
39979
40700
  * copy, which takes the code alone. Reflected, because the stylesheet lays
39980
40701
  * the gutter out beside the code. A diff numbers its lines from its hunks
39981
40702
  * whether or not this is set.
40703
+ * - `mark-lines`/`markLines`: The lines to mark, as numbers and ranges counted from 1, such as `2, 4-6`.
40704
+ * Each run is drawn as a band behind its lines. Not for a diff, which marks
40705
+ * its own changes.
39982
40706
  * - `no-copy`/`noCopy`: Whether to leave the copy button off.
39983
40707
  *
39984
40708
  * Negative, which is not a style choice. A boolean attribute is true whenever
@@ -40003,6 +40727,17 @@ export type CustomElements = {
40003
40727
  * Absent is unified, each removal above its replacement, which fits any
40004
40728
  * width. `split` sets the old version beside the new one. Optional rather
40005
40729
  * than defaulted, so the host carries no attribute the consumer did not write.
40730
+ * - `wrap`: Whether long lines wrap. Without it they scroll.
40731
+ *
40732
+ * Off by default, so long lines scroll, because a line break can be
40733
+ * significant in code and a wrapped line reads as two. For prose-like code,
40734
+ * such as a long command or a log line, a wrap reads better than a scroll.
40735
+ * With `line-numbers`, each number stands beside the line it numbers
40736
+ * however many rows that line takes. Reflected, because the stylesheet
40737
+ * wraps the lines.
40738
+ * - `wrap-label`/`wrapLabel`: The wrap button's name, which it keeps whether it is pressed or not.
40739
+ * - `wrappable`: Whether the header has a button that wraps the lines and unwraps them. The
40740
+ * block draws a header for it even with no name.
40006
40741
  * - `highlight`: Turns the code into highlighted markup, which the block draws in place of
40007
40742
  * the plain text.
40008
40743
  *
@@ -40045,16 +40780,36 @@ export type CustomElements = {
40045
40780
  * browser harness's awaits it alone: a browser always runs the frame, and a
40046
40781
  * timer beside it was a bet on how long one takes, which a busy run lost. (property only) (readonly)
40047
40782
  *
40783
+ * ## Events
40784
+ *
40785
+ * Events that will be emitted by the component.
40786
+ *
40787
+ * - `helix-before-toggle`: The wrap button was pressed, with the `wrap` it asks for in `detail.checked`. Cancelable: cancel it to keep the lines as they are.
40788
+ * - `helix-toggle`: Fired after the wrap button changed `wrap`, with the new value in `detail.checked`.
40789
+ *
40048
40790
  * ## Slots
40049
40791
  *
40050
40792
  * Areas where markup can be added to the component.
40051
40793
  *
40052
40794
  * - `(default)`: The code.
40795
+ * - `actions`: Controls for the block, in the header before the copy button.
40796
+ * - `copied-icon`: The copy button's icon after a copy. Defaults to a check mark.
40797
+ * - `copy-icon`: The copy button's icon before a copy. Defaults to a clipboard.
40798
+ *
40799
+ * ## CSS Custom Properties
40800
+ *
40801
+ * CSS variables available for styling the component.
40802
+ *
40803
+ * - `--code-block-line-size`: Written by the block on each `number` in a `wrap` block with `line-numbers`: how tall the line it numbers is laid out. Do not set it.
40804
+ * - `--code-block-mark-inline-size`: Written by the block on each `mark`: how wide the code is, scrolled part included. Do not set it.
40805
+ * - `--code-block-mark-size`: Written by the block on each `mark`: how tall its run of lines is. Do not set it.
40806
+ * - `--code-block-mark-start`: Written by the block on each `mark`: how far down the code its run of lines starts. Do not set it.
40053
40807
  *
40054
40808
  * ## CSS Parts
40055
40809
  *
40056
40810
  * Custom selectors for styling elements within the component.
40057
40811
  *
40812
+ * - `actions`: The box in the header that holds the `actions` slot, drawn while something is slotted there.
40058
40813
  * - `added`: In a diff, a line only the new version has, an `<ins>`.
40059
40814
  * - `block`: The scrolling `<pre>`.
40060
40815
  * - `code`: The `<code>` inside it.
@@ -40083,13 +40838,15 @@ export type CustomElements = {
40083
40838
  * - `header`: The bar that holds the name and the copy button, shown when there is a name.
40084
40839
  * - `hunk`: In a diff, a `@@` line saying where the lines under it are.
40085
40840
  * - `label`: The block's name: its `label`, or its `language` where it has no label.
40841
+ * - `mark`: The band behind a run of lines `mark-lines` names. The block writes where the run is laid out into `--code-block-mark-start`, `--code-block-mark-size`, and `--code-block-mark-inline-size` on it. Hidden from the accessibility tree.
40086
40842
  * - `marker`: In a diff, the `+`, `-`, or space that starts a line.
40087
40843
  * - `new`: In a split diff, the new version's `<pre>`.
40088
- * - `number`: In a diff, a line number.
40844
+ * - `number`: In a diff, a line number. In a `wrap` block with `line-numbers`, one line's number in the gutter, which the block makes as tall as the line it numbers through `--code-block-line-size`.
40089
40845
  * - `old`: In a split diff, the old version's `<pre>`.
40090
40846
  * - `removed`: In a diff, a line only the old version has, a `<del>`.
40091
40847
  * - `split`: In a split diff, the two versions side by side.
40092
40848
  * - `text`: In a diff, a line's code.
40849
+ * - `wrap-toggle`: The button in the header that wraps the lines and unwraps them, drawn when `wrappable` is set.
40093
40850
  *
40094
40851
  * ## CSS States
40095
40852
  *
@@ -42319,17 +43076,24 @@ export type CustomElements = {
42319
43076
  * gives a picker and locale formatting but allows almost no styling, so the
42320
43077
  * field is a text field. Typing sends `input` on each keystroke and `change`
42321
43078
  * when you leave the field, as a text field does. A date picked from the
42322
- * calendar sends both.
43079
+ * calendar sends both. The field reads ISO, `2026-08-04`, and a date written
43080
+ * in the order, the digits, and the month names of `locale`, `8/4/2026` or
43081
+ * `Aug 4, 2026` in `en-US` and `4.8.2026` in `de-DE`, which becomes the value
43082
+ * as you leave the field.
42323
43083
  *
42324
43084
  * The trigger and ArrowDown open the calendar with focus on the selected day,
42325
43085
  * Tab moves between the calendar's controls without leaving it, and Escape
42326
43086
  * closes it and returns focus to the field. A press into the field opens the
42327
43087
  * calendar too. Tab into the field opens nothing, and Tab out of the field
42328
- * closes the calendar.
43088
+ * closes the calendar. The text field is a `combobox` with
43089
+ * `aria-haspopup="dialog"`, `aria-expanded`, and `aria-controls`, as in the
43090
+ * APG date picker combobox, since Down opens the calendar from it.
42329
43091
  *
42330
43092
  * With `segmented`, the field is a row of segments in place of the text: a
42331
43093
  * month, a day and a year in the order the locale writes them, each set with
42332
- * digits or the arrow keys. Alt+Down opens the calendar from a segment.
43094
+ * digits or the arrow keys. Alt+Down opens the calendar from a segment. A
43095
+ * `range` is two rows with a dash between them, the start and the end, as
43096
+ * React Aria's DateRangePicker draws them, and `multiple` keeps the text.
42333
43097
  *
42334
43098
  * Text that is not a date gives the form an empty value, as a native date
42335
43099
  * field does, and `value` keeps the text so it can be corrected.
@@ -42359,27 +43123,39 @@ export type CustomElements = {
42359
43123
  *
42360
43124
  * Component attributes and properties that can be applied to the element or by using JavaScript.
42361
43125
  *
42362
- * - `autocomplete`: What the browser may autofill here, as one of the platform's own tokens.
43126
+ * - `autocomplete`: What the browser may autofill here, as one of the platform's own tokens,
43127
+ * such as `bday`.
42363
43128
  *
42364
43129
  * Empty leaves the attribute off, which is the browser's default and is what
42365
43130
  * lets autofill work at all: hardcoding `off` here means a birthday or a
42366
- * postal code can never be filled in for a reader.
42367
- * - `calendar`: The calendar the written date and the calendar's days are in: `gregory`,
42368
- * `buddhist`, `japanese`, `roc`, or `iso8601`.
42369
- *
42370
- * Absent is the locale's own where it is one of the five, and `gregory` for
42371
- * every other, as Date Picker's `calendar` is. The value is `YYYY-MM-DD` in
42372
- * every calendar, and a focused field is ISO in every calendar. In
42373
- * `segmented`, the segments are the Gregorian day, month, and year, in the
42374
- * order the locale writes them, or ISO order for `iso8601`.
43131
+ * postal code can never be filled in for a reader. With `segmented`, a
43132
+ * hidden native date input carries it, since no browser fills the segments.
43133
+ * - `calendar`: The calendar the written date, the segments, and the calendar's days are
43134
+ * in: `gregory`, `buddhist`, `japanese`, `roc`, or `iso8601`, or a calendar
43135
+ * with months of its own that Date Picker's `calendar` names, such as
43136
+ * `persian`, `hebrew`, `islamic-umalqura`, `ethiopic`, or `chinese`.
43137
+ *
43138
+ * Absent is the locale's own where its months are the Gregorian months, and
43139
+ * `gregory` for every other, as Date Picker's `calendar` is. The value is
43140
+ * `YYYY-MM-DD` in every calendar, and a focused text field is ISO in every
43141
+ * calendar. In `segmented`, the segments are the day, month, and year as
43142
+ * the calendar counts them, in the order the locale writes them: Mehr 14,
43143
+ * 1405 is month 7 and day 14 of 1405 under `persian`. Under the five with
43144
+ * Gregorian months they are the Gregorian day, month, and year, or ISO order
43145
+ * for `iso8601`.
42375
43146
  * - `calendar-label`/`calendarLabel`: The name of the calendar's grid of days, read by screen readers.
43147
+ * - `clearable`: Whether the field shows a button that empties it, as Input's `clearable`
43148
+ * does. Shown only while the field holds something to clear and is neither
43149
+ * disabled nor read-only.
43150
+ * - `clear-label`/`clearLabel`: The accessible name of the clear button, which shows only an icon.
42376
43151
  * - `date-style`/`dateStyle`: How a date is written in the field: `short` through `full`, or ISO.
42377
43152
  *
42378
43153
  * **The field renders when it is idle and holds the value when it is being
42379
43154
  * edited.** A written date is a rendering, and a document being edited must
42380
43155
  * not be a rendering of something else: `Intl.DateTimeFormat` formats and does
42381
- * not parse, so `4 August 2026` cannot be typed back, and writing a parser per
42382
- * locale is how a field ends up rejecting what it just displayed.
43156
+ * not parse, so a rendering such as `Tuesday, August 4, 2026` is no text to
43157
+ * edit. The field does read a date typed in the locale's order and digits as
43158
+ * you leave it, which covers what a reader types.
42383
43159
  *
42384
43160
  * The way out is not to choose between the two but to separate them in time.
42385
43161
  * Idle, the field shows `4 August 2026`, which is what a date is for reading.
@@ -42447,6 +43223,9 @@ export type CustomElements = {
42447
43223
  *
42448
43224
  * **The name goes in**, so a row of them is heard as which one each
42449
43225
  * removes rather than as "Remove" said once per date.
43226
+ * - `selection-label`/`selectionLabel`: What a screen reader hears about the dates chosen in the calendar, with
43227
+ * `{kind}`, `{start}`, `{end}` and `{count}` filled in as Date Picker's
43228
+ * `selection-label` says.
42450
43229
  * - `step`: How far apart the selectable dates are, in days.
42451
43230
  *
42452
43231
  * `<input type="date" step>`'s own unit, handed to the calendar this renders
@@ -42454,8 +43233,13 @@ export type CustomElements = {
42454
43233
  * where there is one and from 1 January 1970 where there is not, which is the
42455
43234
  * platform's base.
42456
43235
  * - `step-mismatch-message`/`stepMismatchMessage`: The message shown when a date is not on `step`.
43236
+ * - `time-zone`/`timeZone`: The time zone today is read in, such as `America/New_York`, handed to the
43237
+ * calendar: the day marked today, and the month an empty field opens on.
43238
+ * Empty is the reader's own. Dates are plain `YYYY-MM-DD` and carry no zone.
42457
43239
  * - `trigger-label`/`triggerLabel`: The name of the button that opens the calendar, read by screen readers.
42458
43240
  * - `unavailable-message`/`unavailableMessage`: The message shown when `disable-dates` or `disable-days` bars a date.
43241
+ * - `unreadable-message`/`unreadableMessage`: The message for text that is no date, where `bad-input-message` is not
43242
+ * set. `{mode}` is `single`, `range`, or `multiple`.
42459
43243
  * - `year-view-label`/`yearViewLabel`: The name of the calendar's heading where it shows a page of years, with
42460
43244
  * `{heading}` filled in.
42461
43245
  * - `empty-message`/`emptyMessage`: What a row of segments reports when the field is required and every
@@ -42466,6 +43250,10 @@ export type CustomElements = {
42466
43250
  * - `incomplete-message`/`incompleteMessage`: What a row of segments reports while some segments are set and others
42467
43251
  * are not, where `bad-input-message` is not set. `{kind}` is `date` or
42468
43252
  * `time`.
43253
+ * - `range-end-label`/`rangeEndLabel`: What a screen reader hears before the segments of a range's second date
43254
+ * or time, after each segment's own name.
43255
+ * - `range-start-label`/`rangeStartLabel`: What a screen reader hears before the segments of a range's first date
43256
+ * or time, after each segment's own name: "month, Start, Stay".
42469
43257
  * - `segmented`: Whether the field is a row of segments, one for each part of the date or
42470
43258
  * time, in place of a line of text.
42471
43259
  *
@@ -42626,6 +43414,7 @@ export type CustomElements = {
42626
43414
  * - `helix-before-change`: Fired before the date changes. Cancelable: call `preventDefault()` to keep the current date.
42627
43415
  * - `helix-before-close`: Fired before the calendar closes. Cancelable: call `preventDefault()` to keep it open.
42628
43416
  * - `helix-before-open`: Fired before the calendar opens. Cancelable: call `preventDefault()` to keep it closed.
43417
+ * - `helix-clear`: Fired after the clear button has emptied the field, after `input` and `change`.
42629
43418
  * - `input`: Fired after the value changes.
42630
43419
  * - `toggle`: Fired when the calendar opens or closes, with `newState` and `oldState`.
42631
43420
  *
@@ -42633,6 +43422,7 @@ export type CustomElements = {
42633
43422
  *
42634
43423
  * Areas where markup can be added to the component.
42635
43424
  *
43425
+ * - `clear-icon`: Replaces the cross on the clear button, under `clearable`.
42636
43426
  * - `end`: Content after the date, before the trigger, such as a clear button.
42637
43427
  * - `feedback`: The error message under the field.
42638
43428
  * - `hint`: The help text under the field.
@@ -42708,6 +43498,7 @@ export type CustomElements = {
42708
43498
  *
42709
43499
  * Custom selectors for styling elements within the component.
42710
43500
  *
43501
+ * - `clear`: The button that empties the field, under `clearable`, while it holds a date.
42711
43502
  * - `control`: The text input.
42712
43503
  * - `date`: One held date, as a tag, in `multiple`.
42713
43504
  * - `date-cell`: The tag's grid cell, which a tag draws only inside a tag group.
@@ -42749,8 +43540,10 @@ export type CustomElements = {
42749
43540
  * - `picker-periods`: The grid of months or years.
42750
43541
  * - `picker-previous`: The control that moves to the previous month.
42751
43542
  * - `picker-previous-mark`: The icon on the previous month control.
43543
+ * - `picker-selection`: The chosen date or range in words, which screen readers hear when it changes. Drawn for screen readers only.
42752
43544
  * - `picker-week`: One row of days.
42753
43545
  * - `picker-weekday`: A column header naming a day of the week.
43546
+ * - `range-separator`: The dash between a range's two rows of segments, in `segmented`, beside `literal`.
42754
43547
  * - `rest`: The count of dates beyond the ones shown. It is a `<button>` with `expandable` and a `<span>` without it.
42755
43548
  * - `segment`: One part of the date, a year, a month or a day, in `segmented`.
42756
43549
  * - `segment-placeholder`: A segment with nothing in it yet. Applied with `segment`.
@@ -42764,6 +43557,7 @@ export type CustomElements = {
42764
43557
  *
42765
43558
  * These can be used to apply styling when a component is in a given state.
42766
43559
  *
43560
+ * - `blank`: The field holds no date.
42767
43561
  * - `invalid`: The field has an error to show, from the browser's validation or from your `feedback`.
42768
43562
  * - `open`: The calendar is open.
42769
43563
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
@@ -42783,9 +43577,11 @@ export type CustomElements = {
42783
43577
  * **Dates are `YYYY-MM-DD` strings, and every calculation is in UTC**, because
42784
43578
  * a local-time `Date` shifts across a time zone or daylight-saving boundary.
42785
43579
  *
42786
- * **The days are the Gregorian calendar's**, written in `calendar`: the
42787
- * locale's own where its months are the Gregorian months, as `th-TH` writes
42788
- * 2569 for 2026, and `gregory` where they are not, as for `fa-IR`.
43580
+ * **The months are the ones `calendar` counts**: the Gregorian months for the
43581
+ * locale's own calendar where its months are the Gregorian months, as `th-TH`
43582
+ * writes 2569 for 2026, and `gregory` where they are not, as for `fa-IR`
43583
+ * with no `calendar`. Name a calendar with months of its own, such as
43584
+ * `persian`, and every view counts its days, months, and years from `Intl`.
42789
43585
  *
42790
43586
  * `month` sets which month the grid shows, separately from `value`, so paging
42791
43587
  * selects nothing and you can control the view. When unset, it follows the
@@ -42793,7 +43589,14 @@ export type CustomElements = {
42793
43589
  *
42794
43590
  * `mode` sets how many dates are held. Unset holds one, `range` holds two and
42795
43591
  * marks the dates between them, and `multiple` toggles each date. All three
42796
- * read and write the same comma-separated `value`.
43592
+ * read and write the same comma-separated `value`. With a `mode`, the grid
43593
+ * carries `aria-multiselectable`. While a range holds one end, the grid draws
43594
+ * the range to the day under the pointer or the focus, marking those cells
43595
+ * `data-range-preview`.
43596
+ *
43597
+ * The chosen date, range, or count of dates is the grid's description, in a
43598
+ * region screen readers announce when it changes, as React Aria's calendars
43599
+ * do. `selection-label` words it.
42797
43600
  *
42798
43601
  * `max-view` makes the heading a button that steps back to the months of the
42799
43602
  * year, and with `year` to a page of years, as Zag's date picker does. The
@@ -42828,14 +43631,16 @@ export type CustomElements = {
42828
43631
  * `ja-JP-u-ca-japanese`, and `gregory` for every other, such as `persian`
42829
43632
  * for `fa-IR`.
42830
43633
  *
42831
- * `persian`, `hebrew`, `islamic-umalqura`, `islamic-civil`, `ethiopic`,
42832
- * `coptic`, and `indian` draw a calendar with months of its own, as React
42833
- * Aria's calendars do: each grid is one of that calendar's months, the
42834
- * Hebrew leap month and Ethiopia's five-day thirteenth month included, and
42835
- * Previous, Next and the page keys move by those months. `month` and
43634
+ * `persian`, `hebrew`, `islamic`, `islamic-umalqura`, `islamic-civil`,
43635
+ * `islamic-tbla`, `islamic-rgsa`, `ethiopic`, `ethioaa`, `coptic`,
43636
+ * `indian`, `chinese`, and `dangi` draw a calendar with months of its own,
43637
+ * as React Aria's calendars do: each grid is one of that calendar's months,
43638
+ * the Hebrew and Chinese leap months and Ethiopia's five-day thirteenth
43639
+ * month included, and Previous, Next and the page keys move by those
43640
+ * months. With `max-view`, the months view shows that calendar's year, of
43641
+ * twelve or thirteen months, and the years view its years. `month` and
42836
43642
  * `helix-navigate` then name a month by its first day, `YYYY-MM-DD`. The
42837
- * heading stays text, as the months and years views are drawn in Gregorian
42838
- * months only. The value is `YYYY-MM-DD` in every calendar.
43643
+ * value is `YYYY-MM-DD` in every calendar.
42839
43644
  * - `default-month`/`defaultMonth`: The month to open on when `month` is not set.
42840
43645
  * - `disable-dates`/`disableDates`: Dates that cannot be chosen, as `YYYY-MM-DD`, separated by commas or
42841
43646
  * spaces.
@@ -42898,6 +43703,11 @@ export type CustomElements = {
42898
43703
  * value and stays reachable, which is what a form showing a value somebody
42899
43704
  * else set needs.
42900
43705
  * - `required`: Stops the form from submitting while no date is chosen.
43706
+ * - `selection-label`/`selectionLabel`: What a screen reader hears about the chosen dates: the grid's
43707
+ * description, said again whenever the dates change. `{kind}` is `date`,
43708
+ * `start` while a range holds one end, `range`, or `dates` for `multiple`.
43709
+ * `{start}` and `{end}` are dates written in `locale`, and `{count}` is how
43710
+ * many dates are chosen.
42901
43711
  * - `step`: How far apart the selectable dates are, in days.
42902
43712
  *
42903
43713
  * `<input type="date" step>`'s own unit, counted from `min` where there is
@@ -43052,6 +43862,13 @@ export type CustomElements = {
43052
43862
  * Date Input calls this when its trigger opens the calendar, which is where
43053
43863
  * the APG date picker dialog puts focus. The host is not focusable, so a
43054
43864
  * plain `focus()` on it did nothing and focus stayed on the trigger.
43865
+ * - `showChosen() => void`: Shows the days again, on the month of the chosen date, with the tab stop
43866
+ * on that date, forgetting the month and the day the reader browsed to.
43867
+ *
43868
+ * Date Input calls it each time its panel opens, which is where the APG
43869
+ * date picker dialog puts focus. Measured before this: from August 4, two
43870
+ * presses of Page Down, Escape, and Down again opened on October 4.
43871
+ * A `month` you set stays until the reader pages away from it.
43055
43872
  * - `requestValue(next: string) => boolean`: Refuses every change while read-only. See `readOnly`.
43056
43873
  * - `formResetCallback() => void`: Returns the control to its `defaultValue`, or to its `value` attribute
43057
43874
  * where there is no `default-value`.
@@ -43115,7 +43932,7 @@ export type CustomElements = {
43115
43932
  * Custom selectors for styling elements within the component.
43116
43933
  *
43117
43934
  * - `cell`: One column of a week row. A range is painted on the cells.
43118
- * - `cell-range-end`: The cell of a range's last day, beside `cell`.
43935
+ * - `cell-range-end`: The cell of a range's last day, beside `cell`, or of the day a waiting range is drawn to.
43119
43936
  * - `cell-range-middle`: A cell between a range's ends, beside `cell`.
43120
43937
  * - `cell-range-start`: The cell of a range's first day, beside `cell`.
43121
43938
  * - `day`: The shape inside a cell. A single chosen date is painted on it.
@@ -43141,6 +43958,7 @@ export type CustomElements = {
43141
43958
  * - `periods`: The grid of months or years.
43142
43959
  * - `previous`: The control that moves to the previous month.
43143
43960
  * - `previous-mark`: The glyph on the previous month control, where none is slotted.
43961
+ * - `selection`: The chosen date or range in words, which screen readers hear when it changes. Drawn for screen readers only.
43144
43962
  * - `week`: One row of days.
43145
43963
  * - `weekday`: A column header naming a day of the week. It shows the short name and says the full one.
43146
43964
  *
@@ -43148,7 +43966,11 @@ export type CustomElements = {
43148
43966
  *
43149
43967
  * These can be used to apply styling when a component is in a given state.
43150
43968
  *
43151
- * - `invalid`: While `invalid` is set or `feedback` says what is wrong.
43969
+ * - `blank`: While no date is chosen.
43970
+ * - `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.
43971
+ * - `month-view`: While the months of a year are shown, where `max-view` is set.
43972
+ * - `range-pending`: While a `range` holds its first end and waits for the second.
43973
+ * - `year-view`: While a page of years is shown, where `max-view` is `year`.
43152
43974
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
43153
43975
  */
43154
43976
  "helix-headless-date-picker": Partial<
@@ -45762,20 +46584,22 @@ export type CustomElements = {
45762
46584
  *
45763
46585
  * **A date is written in a calendar Date Picker draws**: the locale's own
45764
46586
  * where its months are the Gregorian months, as `th-TH` writes 2569 for 2026,
45765
- * and `gregory` where they are not, as for `fa-IR`. `calendar` picks one of
45766
- * the five.
46587
+ * and `gregory` where they are not, as for `fa-IR`. `calendar` picks any of
46588
+ * them, `persian` and `hebrew` included.
45767
46589
  *
45768
46590
  * ## Attributes & Properties
45769
46591
  *
45770
46592
  * Component attributes and properties that can be applied to the element or by using JavaScript.
45771
46593
  *
45772
46594
  * - `calendar`: The calendar a date is written in: `gregory`, `buddhist`, `japanese`,
45773
- * `roc`, or `iso8601`, the calendars Date Picker and Date Input draw.
45774
- *
45775
- * Absent is the locale's own where it is one of the five, such as
45776
- * `buddhist` for `th-TH`, and `gregory` for every other, such as `persian`
45777
- * for `fa-IR`, so a date written here reads as the same date a Date Picker
45778
- * beside it shows.
46595
+ * `roc`, or `iso8601`, or a calendar with months of its own, such as
46596
+ * `persian`, `hebrew`, `islamic-umalqura`, `ethiopic`, or `chinese`: every
46597
+ * calendar Date Picker and Date Input draw.
46598
+ *
46599
+ * Absent is the locale's own where its months are the Gregorian months,
46600
+ * such as `buddhist` for `th-TH`, and `gregory` for every other, such as
46601
+ * `persian` for `fa-IR`, so a date written here reads as the same date a
46602
+ * Date Picker beside it shows. Write `calendar="persian"` for Mehr 14, 1405.
45779
46603
  * - `date`: The timestamp, in any format `Date` can parse.
45780
46604
  *
45781
46605
  * An ISO string is what an API sends and what `<time datetime>` takes, so it
@@ -45794,6 +46618,9 @@ export type CustomElements = {
45794
46618
  * - `date-style`/`dateStyle`: The locale's own pattern for the date: `full`, `long`, `medium`, or
45795
46619
  * `short`. Set, it stands in for `weekday`, `day`, `month`, `year` and `era`.
45796
46620
  * - `day`: How the day of the month is written, where a date is shown.
46621
+ * - `day-period`/`dayPeriod`: Writes the part of the day in words, such as "in the morning" or "at
46622
+ * night", in its `long`, `short`, or `narrow` form, where `hour` is on a
46623
+ * twelve-hour clock.
45797
46624
  * - `elapsed`: Shows how long ago the timestamp was, in a compact form such as "3h", in
45798
46625
  * place of the date.
45799
46626
  *
@@ -45808,6 +46635,8 @@ export type CustomElements = {
45808
46635
  * Off by default, which draws the date as one run of text, as Shoelace and
45809
46636
  * Web Awesome do. An `elapsed` or `relative` reading is one phrase either
45810
46637
  * way.
46638
+ * - `fractional-second-digits`/`fractionalSecondDigits`: How many digits of a fraction of a second to write after `second`: 1, 2,
46639
+ * or 3, as in 09:41:07.250.
45811
46640
  * - `frozen`: Draws an `elapsed` or `relative` reading once and leaves it, where it
45812
46641
  * would otherwise move on as it goes stale.
45813
46642
  *
@@ -45845,7 +46674,9 @@ export type CustomElements = {
45845
46674
  * - `time-zone`/`timeZone`: The time zone to read the timestamp in.
45846
46675
  *
45847
46676
  * Empty is the runtime's own.
45848
- * - `time-zone-name`/`timeZoneName`: Shows the name of the time zone, in its `long` or `short` form.
46677
+ * - `time-zone-name`/`timeZoneName`: Shows the name of the time zone: `long` or `short`, as Pacific Daylight
46678
+ * Time or PDT, `longOffset` or `shortOffset`, as GMT-07:00 or GMT-7, or
46679
+ * `longGeneric` or `shortGeneric`, as Pacific Time or PT.
45849
46680
  * - `weekday`: How the weekday is written, where one is shown.
45850
46681
  * - `year`: How the year is written, where a date is shown.
45851
46682
  * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
@@ -45876,6 +46707,7 @@ export type CustomElements = {
45876
46707
  * - `day`: The day of the month, with `fields`.
45877
46708
  * - `day-period`: AM or PM, or the locale's word for the part of the day, with `fields`.
45878
46709
  * - `era`: The era, such as AD, with `fields` and `era`.
46710
+ * - `fractional-second`: The fraction of a second, with `fields` and `fractional-second-digits`.
45879
46711
  * - `hour`: The hour, with `fields`.
45880
46712
  * - `minute`: The minute, with `fields`.
45881
46713
  * - `month`: The month, with `fields`.
@@ -46144,14 +46976,15 @@ export type CustomElements = {
46144
46976
  * - `pan(to: ViewportWay) => void`: Pans the view one step in a direction.
46145
46977
  * - `zoom(by: number) => void`: Zooms the view one step: `1` zooms in and `-1` zooms out.
46146
46978
  * - `toggleFullscreen() => void`: Turns fullscreen on or off.
46147
- * - `requestActive(next: string) => boolean`: Requests a new current item, and returns whether the change was applied.
46979
+ * - `requestActive(next: string, cause?: string) => boolean`: Requests a new current item, and returns whether the change was applied.
46148
46980
  *
46149
46981
  * Announces before it acts, so `preventDefault()` on the `helix-before-activate` is
46150
46982
  * a refusal and nothing moves. Unlike a native control, nothing has moved
46151
46983
  * by the time this runs, so refusing is simply not writing: there is
46152
46984
  * nothing to put back. Nobody refusing means the set updates itself,
46153
46985
  * whether or not a consumer declared `active`, a declared property being a
46154
- * seed and a correction.
46986
+ * seed and a correction. `cause` says why, where the family names its
46987
+ * causes, and reaches the event as `detail.cause`.
46155
46988
  *
46156
46989
  * ## CSS Parts
46157
46990
  *
@@ -47987,14 +48820,15 @@ export type CustomElements = {
47987
48820
  * - `previous() => void`: Shows the previous item. Before the first item, it shows the last when
47988
48821
  * `loop` is set.
47989
48822
  * - `toggleFullscreen() => void`: Makes the viewer fill the screen, or exits fullscreen.
47990
- * - `requestActive(next: string) => boolean`: Requests a new current item, and returns whether the change was applied.
48823
+ * - `requestActive(next: string, cause?: string) => boolean`: Requests a new current item, and returns whether the change was applied.
47991
48824
  *
47992
48825
  * Announces before it acts, so `preventDefault()` on the `helix-before-activate` is
47993
48826
  * a refusal and nothing moves. Unlike a native control, nothing has moved
47994
48827
  * by the time this runs, so refusing is simply not writing: there is
47995
48828
  * nothing to put back. Nobody refusing means the set updates itself,
47996
48829
  * whether or not a consumer declared `active`, a declared property being a
47997
- * seed and a correction.
48830
+ * seed and a correction. `cause` says why, where the family names its
48831
+ * causes, and reaches the event as `detail.cause`.
47998
48832
  * - `requestOpen(next: boolean) => boolean`: Requests that the element open or close, and returns whether the change
47999
48833
  * was applied.
48000
48834
  *
@@ -51633,6 +52467,7 @@ export type CustomElements = {
51633
52467
  * - `time-day`: Format Date's `day`, forwarded for a time drawn as fields. An elapsed time draws none.
51634
52468
  * - `time-day-period`: Format Date's `day-period`, forwarded for a time drawn as fields. An elapsed time draws none.
51635
52469
  * - `time-era`: Format Date's `era`, forwarded for a time drawn as fields. An elapsed time draws none.
52470
+ * - `time-fractional-second`: Format Date's `fractional-second`, forwarded for a time drawn as fields. An elapsed time draws none.
51636
52471
  * - `time-hour`: Format Date's `hour`, forwarded for a time drawn as fields. An elapsed time draws none.
51637
52472
  * - `time-minute`: Format Date's `minute`, forwarded for a time drawn as fields. An elapsed time draws none.
51638
52473
  * - `time-month`: Format Date's `month`, forwarded for a time drawn as fields. An elapsed time draws none.
@@ -56010,6 +56845,10 @@ export type CustomElements = {
56010
56845
  * `min-steps-between-thumbs` keeps them that many steps apart, and the readout
56011
56846
  * joins the two as `range-text` writes them.
56012
56847
  *
56848
+ * A press on a range's track takes the nearest thumb to the point pressed,
56849
+ * and moving the pointer drags it, as React Aria's and Web Awesome's sliders
56850
+ * do. The thumb takes focus, and `change` is sent as the press ends.
56851
+ *
56013
56852
  * `origin` sets where a single thumb's fill starts: at `min`, at the middle of
56014
56853
  * the track, or at `max`. A balance or an offset from zero fills from the
56015
56854
  * middle, as Zag's slider `origin` does. The fill's ends are published as
@@ -56034,7 +56873,7 @@ export type CustomElements = {
56034
56873
  * |---|---|
56035
56874
  * | Right, Up | Moves the thumb up by `step`. |
56036
56875
  * | Left, Down | Moves the thumb down by `step`. |
56037
- * | Page Up, Page Down | Moves the thumb by a larger step. |
56876
+ * | Page Up, Page Down | Moves the thumb by `page-step`, or by the platform's larger step where it is not set. |
56038
56877
  * | Home, End | Moves the thumb to its lowest or highest value. |
56039
56878
  *
56040
56879
  * Under `readonly` none of these move the thumb, and Tab still reaches it.
@@ -56095,6 +56934,9 @@ export type CustomElements = {
56095
56934
  * - `origin`: Where a single thumb's fill starts: `start` at `min`, `center` at the
56096
56935
  * middle of the track, or `end` at `max`. Absent is `start`. A range fills
56097
56936
  * between its thumbs and ignores it.
56937
+ * - `page-step`/`pageStep`: How far Page Up and Page Down move a thumb, in the slider's own units, as
56938
+ * React Aria's `pageSize` and Zag's `largeStep` do. Absent leaves the keys
56939
+ * to the platform, which moves a tenth of the track.
56098
56940
  * - `range`: Adds a second thumb, so the value is a pair.
56099
56941
  *
56100
56942
  * The pair is one string, `"10,50"`, which is what `value` and
@@ -56327,6 +57169,8 @@ export type CustomElements = {
56327
57169
  *
56328
57170
  * These can be used to apply styling when a component is in a given state.
56329
57171
  *
57172
+ * - `dragging`: A thumb is being dragged, by its thumb or from a press on the track.
57173
+ * - `focus-visible`: A thumb has focus that the keyboard brought, where the browser draws a focus ring.
56330
57174
  * - `invalid`: The slider has an error to show, from the browser's validation or from your `feedback`.
56331
57175
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
56332
57176
  */
@@ -56949,6 +57793,13 @@ export type CustomElements = {
56949
57793
  * only whoever put it there knows that, which is the same reason `min` is a
56950
57794
  * consumer's to set.
56951
57795
  * - `corner-label`/`cornerLabel`: The name of the handle where two dividers cross, read by screen readers.
57796
+ * - `corner-value-label`/`cornerValueLabel`: What the handle where two dividers cross says it is set to, both dividers
57797
+ * at once: `{across}` is where the divider that runs down stands, and
57798
+ * `{down}` where the one that runs across stands, each a percentage.
57799
+ *
57800
+ * **Both, because the handle moves both**, and a number names one: the
57801
+ * handle's `aria-valuenow` is the divider its `aria-orientation` names, and
57802
+ * these words are the whole of where it is.
56952
57803
  * - `default-collapsed`/`defaultCollapsed`: Which pane starts shut, when `collapsed` is not set.
56953
57804
  * - `default-position`/`defaultPosition`: Where the divider starts, when `position` is not set.
56954
57805
  * - `label`: The divider's name, read by screen readers.
@@ -57435,14 +58286,15 @@ export type CustomElements = {
57435
58286
  * and the invalid mark from every stage, as Ark UI's `resetStep` does.
57436
58287
  * Returns whether it moved: a listener can refuse the move with
57437
58288
  * `helix-before-activate`, and the stages then keep their marks.
57438
- * - `requestActive(next: string) => boolean`: Requests a new current item, and returns whether the change was applied.
58289
+ * - `requestActive(next: string, cause?: string) => boolean`: Requests a new current item, and returns whether the change was applied.
57439
58290
  *
57440
58291
  * Announces before it acts, so `preventDefault()` on the `helix-before-activate` is
57441
58292
  * a refusal and nothing moves. Unlike a native control, nothing has moved
57442
58293
  * by the time this runs, so refusing is simply not writing: there is
57443
58294
  * nothing to put back. Nobody refusing means the set updates itself,
57444
58295
  * whether or not a consumer declared `active`, a declared property being a
57445
- * seed and a correction.
58296
+ * seed and a correction. `cause` says why, where the family names its
58297
+ * causes, and reaches the event as `detail.cause`.
57446
58298
  *
57447
58299
  * ## CSS Custom Properties
57448
58300
  *
@@ -58173,6 +59025,27 @@ export type CustomElements = {
58173
59025
  * Tab reaches each checkbox, and Space ticks it. To act on one row, put a
58174
59026
  * link or a button in a cell, or give the row an `href`.
58175
59027
  *
59028
+ * `selection-mode="single"` selects one row at a time: ticking a row lets go
59029
+ * of the one before, the heading holds no checkbox, and Shift and Control with
59030
+ * A take in nothing more. `selection-behavior="replace"` makes a press on a
59031
+ * row, anywhere but its own controls, select it alone, as a file list does,
59032
+ * and in a `grid` table the arrow keys carry the selection with them. Control
59033
+ * or Command with a press adds or takes out the row, and with an arrow moves
59034
+ * without selecting. Shift with a press takes in the rows from the one last
59035
+ * chosen.
59036
+ *
59037
+ * **Nesting rows.** A row with `parent` sits under the row of that key, as
59038
+ * a file sits in a folder. The table then draws a column of disclosure
59039
+ * buttons, under a heading named by `expand-column-label`: a row with rows
59040
+ * under it has a button named by `expand-row-label` ("Expand {row}") that
59041
+ * says with `aria-expanded` whether it is open, and the rows under a shut row
59042
+ * are not drawn. `expanded` holds the open rows' keys, comma separated, and
59043
+ * `default-expanded` is where it starts. A press asks with
59044
+ * `helix-before-toggle` and tells with `helix-toggle`, both from the row, so
59045
+ * you can refuse it or load the rows on the way. A sort orders the rows
59046
+ * under each row among themselves, and in a `grid` table the table is a
59047
+ * `treegrid` whose rows say their depth.
59048
+ *
58176
59049
  * **Moving rows.** `reorderable` adds a column of grips before the checkboxes,
58177
59050
  * under a heading named by `row-grips-label`.
58178
59051
  *
@@ -58209,13 +59082,20 @@ export type CustomElements = {
58209
59082
  * | Enter on a cell of a row with `href` | Follows the row's link. |
58210
59083
  * | Enter, Space on a sortable heading | Sorts by the column. |
58211
59084
  * | Space on a row, Enter or Space on its checkbox cell | Selects the row, in a `selectable` table. |
59085
+ * | Enter or Space on a disclosure cell | Shows or hides the rows under the row, in a table whose rows nest. |
58212
59086
  * | Enter or Space on a grip cell | Picks the row up, or drops it, in a `reorderable` table. Up, Down, Home, and End move a row picked up, and Escape puts it back. |
59087
+ * | Down, Up, Page Down, Page Up under `selection-behavior="replace"` | Selects the row it moves to alone. Control or Command with the key moves without selecting. |
58213
59088
  * | Shift with Down or Up | Selects the rows it moves across, in a `selectable` table. |
58214
59089
  * | Shift with Space | Selects every row from the one last chosen, in a `selectable` table. |
58215
59090
  * | Control or Command with A | Selects every row, in a `selectable` table. |
58216
59091
  * | A letter or a word | Moves to the next row whose first cell starts with what you typed. |
58217
59092
  * | Tab | Leaves the table. |
58218
59093
  *
59094
+ * **Loading more.** `load-more` sends `helix-load-more` once the end of the
59095
+ * table comes within a screen of view, in the box that scrolls it or the
59096
+ * page, once for each number of rows: add rows and it can send it again. Set
59097
+ * `loading` while you fetch, and the table asks for nothing until it clears.
59098
+ *
58219
59099
  * When the rows did not load, set `error-text`, such as "The orders did not
58220
59100
  * load", and put a button that tries again in the `error` slot. The line shows
58221
59101
  * after the rows in place of the empty and loading lines, the live region says
@@ -58261,6 +59141,8 @@ export type CustomElements = {
58261
59141
  * and a list here would be a second way to say what that says. This table's
58262
59142
  * cells are markup, and a table written as rows of cells with no column
58263
59143
  * declared in it has nowhere else to be sized from.
59144
+ * - `default-expanded`/`defaultExpanded`: The keys of the rows whose rows are shown at the start, separated by
59145
+ * commas. Used until `expanded` is set.
58264
59146
  * - `default-selected`/`defaultSelected`: The keys selected at the start, separated by commas. Used until `selected`
58265
59147
  * is set.
58266
59148
  * - `default-sort`/`defaultSort`: The starting sort order, used until `sort` is set.
@@ -58273,6 +59155,11 @@ export type CustomElements = {
58273
59155
  * While it is set, a line after the rows shows it, or your own content in the
58274
59156
  * `error` slot, in place of the empty and loading lines, and the live region
58275
59157
  * says it.
59158
+ * - `expand-column-label`/`expandColumnLabel`: The name of the heading over the disclosure buttons.
59159
+ * - `expanded`: The keys of the rows whose rows are shown, separated by commas, in a table
59160
+ * whose rows nest. A press on a row's disclosure button asks first, and
59161
+ * `default-expanded` seeds what this element then owns.
59162
+ * - `expand-row-label`/`expandRowLabel`: The name of a row's disclosure button. `{row}` is the words of the row's first cell.
58276
59163
  * - `fallback-label`/`fallbackLabel`: The table's name where neither `label` nor an `aria-label` or
58277
59164
  * `aria-labelledby` on the host gives it one.
58278
59165
  * - `grid`: Makes the table a grid: one tab stop, and the arrow keys, Home, End and the
@@ -58286,6 +59173,8 @@ export type CustomElements = {
58286
59173
  *
58287
59174
  * An `aria-label` or `aria-labelledby` on the host names the table too, and
58288
59175
  * wins over this.
59176
+ * - `load-more`/`loadMore`: Sends `helix-load-more` once the end of the table comes within a screen
59177
+ * of view, so you can add the next rows as a reader nears them.
58289
59178
  * - `moved-label`/`movedLabel`: What screen readers hear each time a key moves a held row, in a
58290
59179
  * `reorderable` table. `{name}` is the row's words, `{position}` the place it
58291
59180
  * would go, counting from 1, and `{count}` the number of rows.
@@ -58299,6 +59188,8 @@ export type CustomElements = {
58299
59188
  * - `selectable`: Adds a column of checkboxes for selecting rows. Each row is known by its
58300
59189
  * `value`, and by its place among the rows as written where it has none.
58301
59190
  * - `select-all-label`/`selectAllLabel`: The name of the checkbox in the heading that selects every row.
59191
+ * - `select-column-label`/`selectColumnLabel`: The name of the heading over the checkboxes under
59192
+ * `selection-mode="single"`, where it holds no checkbox of its own.
58302
59193
  * - `selected`: The keys of the selected rows, separated by commas.
58303
59194
  *
58304
59195
  * A reader's press fires `helix-select` first, and refusing it leaves the
@@ -58308,6 +59199,11 @@ export type CustomElements = {
58308
59199
  * rows are chosen, written in the locale, and a language that needs plural
58309
59200
  * forms writes them: `{count, plural, one {# wybrany} few {# wybrane} many
58310
59201
  * {# wybranych} other {# wybranego}}`.
59202
+ * - `selection-behavior`/`selectionBehavior`: What a press on a row, or in a `grid` table a key that moves to one, does
59203
+ * to the rows already selected: `toggle`, the default, leaves them to the
59204
+ * checkboxes, and `replace` selects the row alone.
59205
+ * - `selection-mode`/`selectionMode`: How many rows a `selectable` table selects: `multiple`, the default, or
59206
+ * `single`, one at a time.
58311
59207
  * - `select-row-label`/`selectRowLabel`: The name of a row's checkbox. `{row}` is replaced with the words of the
58312
59208
  * row's first cell.
58313
59209
  * - `sort`: The sort order, as `field:direction`, where `field` is a sortable column's
@@ -58356,11 +59252,14 @@ export type CustomElements = {
58356
59252
  * Events that will be emitted by the component.
58357
59253
  *
58358
59254
  * - `helix-before-reorder`: Fired when a row is dropped at a new place, in a `reorderable` table, with every row's key in the new order. Cancelable: cancel it to keep the row where it is.
59255
+ * - `helix-before-toggle`: Fired from a row when its disclosure button is pressed, with whether it would be open in `detail.checked`. Cancelable: cancel it to keep the row as it is.
59256
+ * - `helix-load-more`: Fired, in a table with `load-more`, when the end of the table comes within a screen of view, once for each number of rows.
58359
59257
  * - `helix-reorder`: Fired after `helix-before-reorder` when nobody canceled it. Move your rows to the order in `keys`. Cancelable: cancel it to say the move did not happen.
58360
59258
  * - `helix-select`: The selection is about to change. The event carries every selected key, separated by commas. Cancelable: cancel it to keep the current selection.
58361
59259
  * - `helix-selected`: Fired after the selection changes, with every selected key, separated by commas.
58362
59260
  * - `helix-sort`: A different sort order was requested, as `field:direction`, or empty for the order the rows were written in. Cancelable: cancel it to keep the current order.
58363
59261
  * - `helix-sorted`: Fired after the sort order changes, with the new order.
59262
+ * - `helix-toggle`: Fired from a row once the rows under it are shown or hidden, with whether it is open in `detail.checked`.
58364
59263
  *
58365
59264
  * ## Slots
58366
59265
  *
@@ -58404,6 +59303,7 @@ export type CustomElements = {
58404
59303
  * - `drag-preview`: A copy of the row a pointer drags by its grip, which follows the pointer in the top layer until the row is let go, in a `reorderable` table. Hidden from assistive technology.
58405
59304
  * - `empty`: The text shown when there are no rows.
58406
59305
  * - `error`: The line shown after the rows while `error-text` is set, in place of the empty and loading text.
59306
+ * - `expand-head`: The heading over the disclosure buttons, in a table whose rows nest.
58407
59307
  * - `grid-end`: An empty box after the rows, in a `grid` table. Tab focuses it on its way out of the table, so the key leaves from the end.
58408
59308
  * - `grid-start`: An empty box before the rows, in a `grid` table. Shift with Tab focuses it on its way out of the table.
58409
59309
  * - `grip-head`: The heading over the row grips, in a `reorderable` table.
@@ -58441,6 +59341,12 @@ export type CustomElements = {
58441
59341
  * the drop indicator is, with the `dragging`, `drop-before`, and `drop-after`
58442
59342
  * states.
58443
59343
  *
59344
+ * **`parent` nests the row under another**, by that row's key. The table
59345
+ * then draws a column of disclosure buttons: a row with rows under it has one,
59346
+ * named by the table's `expand-row-label` and saying whether it is open with
59347
+ * `aria-expanded`, and its rows are drawn only while it is open. The cell is
59348
+ * indented by the row's depth through `--table-row-level`.
59349
+ *
58444
59350
  * **`href` makes the whole row a link**, as a row action does in React Aria's
58445
59351
  * table: a press anywhere on the row follows it, except on a link or a control
58446
59352
  * of the row's own, and Control, Command or Shift open it the way they open a
@@ -58461,6 +59367,9 @@ export type CustomElements = {
58461
59367
  * reached.
58462
59368
  * - `href`: The URL a press on the row follows, which makes the whole row a link.
58463
59369
  * Empty, the default, leaves presses to the row's cells.
59370
+ * - `parent`: The key of the row this one sits under, in a table whose rows nest: that
59371
+ * row's `value`, or its place among the rows where it has none. Empty, the
59372
+ * default, is a row at the top.
58464
59373
  * - `rel`: The `rel` of the row's link. You set it yourself, as on an anchor.
58465
59374
  * - `target`: Where the row's link opens, such as `_blank`.
58466
59375
  * - `value`: The key the table's `selected` lists this row by. Left empty, the row is
@@ -58492,6 +59401,12 @@ export type CustomElements = {
58492
59401
  *
58493
59402
  * - `(default)`: The row's cells.
58494
59403
  *
59404
+ * ## CSS Custom Properties
59405
+ *
59406
+ * CSS variables available for styling the component.
59407
+ *
59408
+ * - `--table-row-level`: Written by the row on its `expand` cell: how deep the row sits, from 1. Do not set it.
59409
+ *
58495
59410
  * ## CSS Parts
58496
59411
  *
58497
59412
  * Custom selectors for styling elements within the component.
@@ -58507,6 +59422,9 @@ export type CustomElements = {
58507
59422
  * - `checkbox-mark-checked`: Added to `checkbox-mark` while its box is checked.
58508
59423
  * - `checkbox-mark-dash`: Added to `checkbox-mark` while it draws the dash, which it keeps until its box is checked.
58509
59424
  * - `checkbox-mark-indeterminate`: Added to `checkbox-mark` while only some rows are selected.
59425
+ * - `expand`: The cell that holds the row's disclosure button, in a table whose rows nest. It carries `--table-row-level`, the row's depth from 1.
59426
+ * - `expand-button`: The button that shows and hides the rows under this one.
59427
+ * - `expand-mark`: The caret on the disclosure button, which points along the line, turned down by the styled tier while the row is open.
58510
59428
  * - `grip`: The cell that holds the row's grip, in a `reorderable` table.
58511
59429
  * - `grip-button`: The button that moves the row.
58512
59430
  * - `grip-mark`: The icon on the grip.
@@ -58520,6 +59438,7 @@ export type CustomElements = {
58520
59438
  * - `dragging`: The row is being moved, in a `reorderable` table.
58521
59439
  * - `drop-after`: The row being moved goes after this one when it is dropped.
58522
59440
  * - `drop-before`: The row being moved goes before this one when it is dropped.
59441
+ * - `expanded`: While the rows under this one are shown.
58523
59442
  * - `link`: While the row has `href` and is not `disabled`, so a press on it follows the link.
58524
59443
  * - `selected`: While the row is selected, in a `selectable` table.
58525
59444
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
@@ -58772,14 +59691,15 @@ export type CustomElements = {
58772
59691
  *
58773
59692
  * Methods that can be called to access component functionality.
58774
59693
  *
58775
- * - `requestActive(next: string) => boolean`: Requests a new current item, and returns whether the change was applied.
59694
+ * - `requestActive(next: string, cause?: string) => boolean`: Requests a new current item, and returns whether the change was applied.
58776
59695
  *
58777
59696
  * Announces before it acts, so `preventDefault()` on the `helix-before-activate` is
58778
59697
  * a refusal and nothing moves. Unlike a native control, nothing has moved
58779
59698
  * by the time this runs, so refusing is simply not writing: there is
58780
59699
  * nothing to put back. Nobody refusing means the set updates itself,
58781
59700
  * whether or not a consumer declared `active`, a declared property being a
58782
- * seed and a correction.
59701
+ * seed and a correction. `cause` says why, where the family names its
59702
+ * causes, and reaches the event as `detail.cause`.
58783
59703
  *
58784
59704
  * ## CSS Parts
58785
59705
  *
@@ -59451,20 +60371,25 @@ export type CustomElements = {
59451
60371
  * `seconds`, because that is what the form
59452
60372
  * submits, what `min` and `max` compare against, and what sorts correctly as a
59453
60373
  * string. While idle, the field shows the time in the user's locale format.
59454
- * Once the caret is in the field, it shows the value itself, because a
59455
- * formatted time such as `2:30 PM` cannot be typed back and `Intl` has no
59456
- * parser for it.
60374
+ * Once the caret is in the field, it shows the value itself. You can type
60375
+ * `14:30`, or a time as you write one, such as `2:30 PM`, `2.30pm`, or
60376
+ * `14h30`, and the field reads it as you leave it, with AM and PM in the
60377
+ * locale's words.
59457
60378
  *
59458
60379
  * Typing sends `input` on each keystroke and `change` when you leave the
59459
60380
  * field. The trigger and ArrowDown open the list, and so does a press into the
59460
- * field; Tab into the field opens nothing. In the list, the arrow keys, typed digits and PageUp and PageDown
60381
+ * field; Tab into the field opens nothing. The text field is a `combobox`
60382
+ * with `aria-haspopup="dialog"`, `aria-expanded`, and `aria-controls`, since
60383
+ * Down opens the list from it. In the list, the arrow keys, typed digits and PageUp and PageDown
59461
60384
  * move through the times, and Enter, Space or a click chooses one and closes
59462
60385
  * the panel. With `variant="wheels"` each wheel moves the time as you turn it,
59463
60386
  * the panel stays open, and Enter or Escape closes it.
59464
60387
  *
59465
60388
  * With `segmented`, the field is a row of segments in place of the text: an
59466
60389
  * hour, a minute, and AM or PM where the clock has them, each set with digits
59467
- * or the arrow keys. Alt+Down opens the list from a segment.
60390
+ * or the arrow keys. Alt+Down opens the list from a segment. A `range` is two
60391
+ * rows with a dash between them, the start and the end, and `multiple` keeps
60392
+ * the text.
59468
60393
  *
59469
60394
  * Text that is not a time gives the form an empty value, as a native time
59470
60395
  * field does, and `value` keeps the text so it can be corrected.
@@ -59496,6 +60421,10 @@ export type CustomElements = {
59496
60421
  *
59497
60422
  * Empty leaves the attribute off, which is the browser's default and is what
59498
60423
  * lets autofill work at all.
60424
+ * - `clearable`: Whether the field shows a button that empties it, as Input's `clearable`
60425
+ * does. Shown only while the field holds something to clear and is neither
60426
+ * disabled nor read-only.
60427
+ * - `clear-label`/`clearLabel`: The accessible name of the clear button, which shows only an icon.
59499
60428
  * - `disable-times`/`disableTimes`: Times that cannot be chosen, as `HH:mm`, separated by commas or spaces.
59500
60429
  *
59501
60430
  * Handed to the list, which offers them as unavailable, and checked against
@@ -59544,6 +60473,8 @@ export type CustomElements = {
59544
60473
  * never something this element would refuse to read back.
59545
60474
  * - `trigger-label`/`triggerLabel`: The name of the button that opens the list, read by screen readers.
59546
60475
  * - `unavailable-message`/`unavailableMessage`: The message shown when `disable-times` bars a time.
60476
+ * - `unreadable-message`/`unreadableMessage`: The message for text that is no time, where `bad-input-message` is not
60477
+ * set. `{mode}` is `single`, `range`, or `multiple`, and `{shape}` is `HH:mm`, or `HH:mm:ss` with `seconds`.
59547
60478
  * - `variant`: Whether the panel shows one list of times or a column for each part of the
59548
60479
  * time.
59549
60480
  *
@@ -59566,6 +60497,10 @@ export type CustomElements = {
59566
60497
  * - `incomplete-message`/`incompleteMessage`: What a row of segments reports while some segments are set and others
59567
60498
  * are not, where `bad-input-message` is not set. `{kind}` is `date` or
59568
60499
  * `time`.
60500
+ * - `range-end-label`/`rangeEndLabel`: What a screen reader hears before the segments of a range's second date
60501
+ * or time, after each segment's own name.
60502
+ * - `range-start-label`/`rangeStartLabel`: What a screen reader hears before the segments of a range's first date
60503
+ * or time, after each segment's own name: "month, Start, Stay".
59569
60504
  * - `segmented`: Whether the field is a row of segments, one for each part of the date or
59570
60505
  * time, in place of a line of text.
59571
60506
  *
@@ -59717,6 +60652,7 @@ export type CustomElements = {
59717
60652
  * - `helix-before-change`: Fired before the time changes. Cancelable: canceling it stops the change and leaves the decision to you.
59718
60653
  * - `helix-before-close`: Fired before the list closes. Cancelable: canceling it keeps the list open and leaves the decision to you.
59719
60654
  * - `helix-before-open`: Fired before the list opens. Cancelable: canceling it keeps the list closed and leaves the decision to you.
60655
+ * - `helix-clear`: Fired after the clear button has emptied the field, after `input` and `change`.
59720
60656
  * - `input`: Fired after the value changes.
59721
60657
  * - `toggle`: Fired after the list opens or closes, with `newState` and `oldState`.
59722
60658
  *
@@ -59724,6 +60660,7 @@ export type CustomElements = {
59724
60660
  *
59725
60661
  * Areas where markup can be added to the component.
59726
60662
  *
60663
+ * - `clear-icon`: Replaces the cross on the clear button, under `clearable`.
59727
60664
  * - `end`: Content after the time, before the trigger, such as a clear button.
59728
60665
  * - `feedback`: The message that says what is wrong with the value.
59729
60666
  * - `hint`: Help under the field.
@@ -59797,6 +60734,7 @@ export type CustomElements = {
59797
60734
  *
59798
60735
  * Custom selectors for styling elements within the component.
59799
60736
  *
60737
+ * - `clear`: The button that empties the field, under `clearable`, while it holds a time.
59800
60738
  * - `control`: The text input.
59801
60739
  * - `feedback`: The message that says what is wrong with the value.
59802
60740
  * - `field`: The box that holds the text and the trigger.
@@ -59842,6 +60780,7 @@ export type CustomElements = {
59842
60780
  * - `picker-option-item-selected`: The row of a chosen time: the one time, or either end of a range.
59843
60781
  * - `picker-option-label`: The option's label.
59844
60782
  * - `picker-option-text`: The label and the caption, as one column.
60783
+ * - `range-separator`: The dash between a range's two rows of segments, in `segmented`, beside `literal`.
59845
60784
  * - `rest`: The count of times held beyond the ones shown. A `<button>` with `expandable`, and a `<span>` without it.
59846
60785
  * - `segment`: One part of the time, an hour, a minute, a second or AM and PM, in `segmented`.
59847
60786
  * - `segment-placeholder`: A segment with nothing in it yet. Applied with `segment`.
@@ -59862,6 +60801,7 @@ export type CustomElements = {
59862
60801
  *
59863
60802
  * These can be used to apply styling when a component is in a given state.
59864
60803
  *
60804
+ * - `blank`: The field holds no time.
59865
60805
  * - `invalid`: The control has an error to show, from the browser's validation or from your `feedback`.
59866
60806
  * - `open`: While the clock is open.
59867
60807
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
@@ -59915,7 +60855,10 @@ export type CustomElements = {
59915
60855
  * host's `aria-label` or its `aria-labelledby`. A development build warns
59916
60856
  * where all four are empty. The list is described by the hint, or by the
59917
60857
  * message in `feedback` in its place, and carries `aria-multiselectable` with
59918
- * a `mode` and `aria-invalid` while `feedback` says what is wrong. The wheels
60858
+ * a `mode`. It carries `aria-invalid` while `feedback` says what is wrong,
60859
+ * while it holds a time outside `min` and `max` or one the picker does not
60860
+ * offer, and, for a `required` picker with no time, once the reader has
60861
+ * chosen one or a form has refused the picker. The wheels
59919
60862
  * are a `group` with that name, holding one `listbox` per wheel, named "Hour",
59920
60863
  * "Minute", "Second" and "AM/PM" in the page's language, and each described
59921
60864
  * the same way.
@@ -60273,7 +61216,7 @@ export type CustomElements = {
60273
61216
  * - `list-loading`: The text shown while the options load.
60274
61217
  * - `list-search`: The region that holds the filter field.
60275
61218
  * - `list-search-field`: The filter field.
60276
- * - `option`: One time in the list. It carries `data-between` inside a range.
61219
+ * - `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.
60277
61220
  * - `option-between`: A time inside a chosen range, excluding its ends, beside `option`.
60278
61221
  * - `option-description`: The caption under the time's label, when there is one.
60279
61222
  * - `option-item`: The row.
@@ -60287,7 +61230,8 @@ export type CustomElements = {
60287
61230
  * These can be used to apply styling when a component is in a given state.
60288
61231
  *
60289
61232
  * - `blank`: While no time is chosen.
60290
- * - `invalid`: While `invalid` is set or `feedback` says what is wrong.
61233
+ * - `invalid`: While `invalid` is set, `feedback` says what is wrong, or the list carries `aria-invalid`.
61234
+ * - `range-pending`: While a `range` holds its first time and waits for the second.
60291
61235
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
60292
61236
  */
60293
61237
  "helix-headless-time-picker": Partial<
@@ -60378,7 +61322,14 @@ export type CustomElements = {
60378
61322
  * counting parent, and no script. `Steps` and `Breadcrumbs` work the same way.
60379
61323
  *
60380
61324
  * `tone` sets the kind of event and is the only thing that colors the mark. It
60381
- * uses the same values as `Announcement`.
61325
+ * uses the same values as `Announcement`. **A screen reader hears the tone as
61326
+ * a word**, from `tone-labels`: the mark is an image named "Error",
61327
+ * "Information", "Success" or "Warning", so the color is not the only place
61328
+ * the meaning is. `neutral` and `primary` say nothing unless you name them.
61329
+ *
61330
+ * **`pending` marks an event that has not happened yet**, such as one that is
61331
+ * scheduled. The mark is the open circle, and a screen reader hears
61332
+ * `pending-label`, "Scheduled", with the tone's word.
60382
61333
  *
60383
61334
  * ## Attributes & Properties
60384
61335
  *
@@ -60390,11 +61341,20 @@ export type CustomElements = {
60390
61341
  * Whatever `<time>` accepts, which is a date, a time, both, a duration or a
60391
61342
  * week. Unset, the label is written as it was given and nothing claims to
60392
61343
  * know what instant it names.
61344
+ * - `pending`: Marks an event that has not happened yet, such as one that is scheduled.
61345
+ * The mark is the open circle, and a screen reader hears `pending-label`.
61346
+ * - `pending-label`/`pendingLabel`: What a screen reader hears for an entry that is `pending`.
60393
61347
  * - `relative`: Writes the time as how long ago it was, or how long until it, from
60394
61348
  * `datetime`, where the `time` slot is empty: `long` ("3 hours ago"),
60395
61349
  * `short` ("3 hr. ago") or `narrow` ("3h ago"). Set with no value, it is
60396
61350
  * `long`. The words move on as they go stale.
60397
- * - `tone`: The kind of event. It sets the color of the mark and nothing else.
61351
+ * - `tone`: The kind of event. It sets the color of the mark, and a screen reader
61352
+ * hears it as the word `tone-labels` gives it.
61353
+ * - `tone-label`/`toneLabel`: What a screen reader is told this entry's tone is, such as "Failed".
61354
+ * Absent is the tone's word in `tone-labels`.
61355
+ * - `tone-labels`/`toneLabels`: What a screen reader is told each tone is, by the tone's name, written as
61356
+ * JSON in the attribute: `tone-labels='{"danger":"Failed"}'`. A tone with no
61357
+ * word is not read, which is `neutral` and `primary` in English.
60398
61358
  * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
60399
61359
  *
60400
61360
  * **Named `whenSettled` because `settled` is taken four times over**, by
@@ -60421,7 +61381,7 @@ export type CustomElements = {
60421
61381
  * Areas where markup can be added to the component.
60422
61382
  *
60423
61383
  * - `(default)`: What happened.
60424
- * - `marker`: The mark on the line. Defaults to a dot, which is the slot's fallback content.
61384
+ * - `marker`: The mark on the line. Defaults to a dot, which is the slot's fallback content. A mark you slot is read as the tone's word, where the entry has one.
60425
61385
  * - `time`: When it happened, written the way you want it shown.
60426
61386
  *
60427
61387
  * ## CSS Parts
@@ -60430,7 +61390,7 @@ export type CustomElements = {
60430
61390
  *
60431
61391
  * - `content`: What happened, and the time above it.
60432
61392
  * - `dot`: The dot drawn when no marker is slotted.
60433
- * - `marker`: The mark on the line.
61393
+ * - `marker`: The mark on the line. An image named by the tone's word, and by `pending-label`, where either applies.
60434
61394
  * - `rail`: The column that holds the mark and the line. Draw the two halves of the line with `::part(rail)::before` and `::part(rail)::after` in your stylesheet. This tier ships no CSS and renders no extra box for the line.
60435
61395
  * - `time`: When it happened.
60436
61396
  *
@@ -60871,7 +61831,7 @@ export type CustomElements = {
60871
61831
  * | Right, Down | Moves to the next item, from the last back to the first. In a single group, chooses it. |
60872
61832
  * | Left, Up | Moves to the item before, from the first round to the last. In a single group, chooses it. |
60873
61833
  * | Home, End | Moves to the first or the last item. In a single group, chooses it. |
60874
- * | Space, Enter | Chooses the focused item, or presses or releases it in a multiple group. |
61834
+ * | Space, Enter | Chooses the focused item, or presses or releases it in a multiple group. With `allow-empty-selection`, takes back the chosen item. |
60875
61835
  *
60876
61836
  * Left and Right swap on a right-to-left page, and a disabled item is passed
60877
61837
  * over. A single group is a `radiogroup` of items with `role="radio"` and
@@ -60883,6 +61843,11 @@ export type CustomElements = {
60883
61843
  *
60884
61844
  * Component attributes and properties that can be applied to the element or by using JavaScript.
60885
61845
  *
61846
+ * - `allow-empty-selection`/`allowEmptySelection`: Whether a press on the chosen item, or Space or Enter on it, takes it
61847
+ * back so nothing is chosen, as React Aria's `ToggleButtonGroup` and
61848
+ * Radix's `ToggleGroup` do in a single group. Absent, a single group always
61849
+ * keeps its choice once it has one, as a radio group does. A multiple group
61850
+ * releases a pressed item either way.
60886
61851
  * - `label-placement`/`labelPlacement`: Where the group's label sits. `start` puts it on the track's line.
60887
61852
  *
60888
61853
  * Absent is above, which is what a field looks like and what almost every
@@ -61227,13 +62192,13 @@ export type CustomElements = {
61227
62192
  *
61228
62193
  * Custom selectors for styling elements within the component.
61229
62194
  *
61230
- * - `item`: The radio button.
62195
+ * - `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.
61231
62196
  *
61232
62197
  * ## CSS States
61233
62198
  *
61234
62199
  * These can be used to apply styling when a component is in a given state.
61235
62200
  *
61236
- * - `pressed`: The item is pressed, in a group where several can be.
62201
+ * - `pressed`: The item is pressed, on its own or in a group where several can be.
61237
62202
  * - `selected`: The item is chosen.
61238
62203
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
61239
62204
  */
@@ -62360,14 +63325,15 @@ export type CustomElements = {
62360
63325
  *
62361
63326
  * Methods that can be called to access component functionality.
62362
63327
  *
62363
- * - `requestActive(next: string) => boolean`: Requests a new current item, and returns whether the change was applied.
63328
+ * - `requestActive(next: string, cause?: string) => boolean`: Requests a new current item, and returns whether the change was applied.
62364
63329
  *
62365
63330
  * Announces before it acts, so `preventDefault()` on the `helix-before-activate` is
62366
63331
  * a refusal and nothing moves. Unlike a native control, nothing has moved
62367
63332
  * by the time this runs, so refusing is simply not writing: there is
62368
63333
  * nothing to put back. Nobody refusing means the set updates itself,
62369
63334
  * whether or not a consumer declared `active`, a declared property being a
62370
- * seed and a correction.
63335
+ * seed and a correction. `cause` says why, where the family names its
63336
+ * causes, and reaches the event as `detail.cause`.
62371
63337
  *
62372
63338
  * ## CSS Parts
62373
63339
  *
@@ -62561,6 +63527,12 @@ export type CustomElements = {
62561
63527
  * Written by the playlist rather than by the entry, the way an option's
62562
63528
  * selection is: an entry that made itself current would be a second answer to
62563
63529
  * which one is playing. (property only)
63530
+ * - `focusable`: Whether the entry holds the playlist's tab stop. Unset, every entry is in
63531
+ * the tab order, which is what a server renders.
63532
+ *
63533
+ * **Written by the playlist, with no attribute, and it reaches the button.**
63534
+ * The playlist gives the stop to the entry a reader last focused, or to the
63535
+ * current one, and the arrow keys reach the rest. (property only)
62564
63536
  * - `text`: The entry's name: its own text, without the content in its named slots.
62565
63537
  *
62566
63538
  * `textContent` takes the whole subtree: a row with a duration in `meta`
@@ -62602,6 +63574,7 @@ export type CustomElements = {
62602
63574
  * Areas where markup can be added to the component.
62603
63575
  *
62604
63576
  * - `(default)`: The entry's name.
63577
+ * - `indicator`: A mark shown on the entry that is playing, such as an equalizer icon. Rendered only while the entry is current.
62605
63578
  * - `media`: A thumbnail. Defaults to an image of `poster`.
62606
63579
  * - `meta`: Content after the name, such as a duration or a date.
62607
63580
  *
@@ -62617,6 +63590,7 @@ export type CustomElements = {
62617
63590
  * Custom selectors for styling elements within the component.
62618
63591
  *
62619
63592
  * - `container`: The list item that holds the button.
63593
+ * - `indicator`: The `indicator` slot, at the end of the row, rendered only while the entry is playing. It draws no box until you give it one.
62620
63594
  * - `item`: The row, which is a button.
62621
63595
  * - `item-current`: Added to `item` for the entry that is playing.
62622
63596
  * - `label`: The name and the content after it.
@@ -62744,19 +63718,31 @@ export type CustomElements = {
62744
63718
  * - the player reaches the end.
62745
63719
  *
62746
63720
  * On `ended` the playlist advances and the next clip starts playing, because
62747
- * the user already pressed play once. `repeat` decides what happens at the
63721
+ * the user already pressed play once. `no-advance` turns that off, and the
63722
+ * playlist stays on the entry that ended. `repeat` decides what happens at the
62748
63723
  * end: `one` plays the same entry again, and `all` goes from the last entry
62749
63724
  * back to the first. Without it, the playlist stops on the last entry and
62750
63725
  * sends `helix-end`. `shuffle` plays the entries in a random order, starting
62751
63726
  * from the one that is current, and `previous` retraces that order.
62752
63727
  *
63728
+ * **`helix-before-activate` says why the playlist is moving**, in
63729
+ * `detail.cause`: `press` for an entry or a menu choice, `next` and
63730
+ * `previous` for the player's controls and the methods, `ended` at the end of
63731
+ * a clip, and `removed` when the current entry leaves the playlist. Cancel an
63732
+ * `ended` move to show your own "Up next" countdown, then call `next()`.
63733
+ *
63734
+ * **Removing the current entry moves the playlist on**, to the entry after it,
63735
+ * or to the one before it when it was the last. A clip that was playing keeps
63736
+ * playing in the entry that takes its place.
63737
+ *
62753
63738
  * **The player is named by the current entry**, and the device's own media
62754
63739
  * controls show the entry as the title. A player you gave a `label` keeps
62755
63740
  * your name, and only the title follows the entry.
62756
63741
  *
62757
- * **Keyboard.** Each entry is a button in the tab order, and Enter or Space
62758
- * plays it. The arrow keys move focus to the entry before or after, and Home
62759
- * and End to the first and the last, passing over disabled entries. The
63742
+ * **Keyboard.** The entries take one stop in the tab order: the entry you
63743
+ * last focused, or the current entry before you have focused one. Enter or
63744
+ * Space plays it. The arrow keys move focus to the entry before or after, and
63745
+ * Home and End to the first and the last, passing over disabled entries. The
62760
63746
  * current entry carries `aria-current`. While focus is on the player, the
62761
63747
  * player's own keys work, and `Video` lists them, and Shift with N or P plays
62762
63748
  * the next or the previous entry. The player's previous and next controls
@@ -62771,7 +63757,11 @@ export type CustomElements = {
62771
63757
  *
62772
63758
  * Component attributes and properties that can be applied to the element or by using JavaScript.
62773
63759
  *
63760
+ * - `empty-label`/`emptyLabel`: What the playlist says while it has no entries. The `empty` slot replaces it.
62774
63761
  * - `label`: The list's name, read by screen readers.
63762
+ * - `no-advance`/`noAdvance`: Stays on an entry when its clip ends, where the playlist would otherwise
63763
+ * play the next one. The player's controls, a press, and `next()` still
63764
+ * move. `repeat="one"` still plays the entry again.
62775
63765
  * - `playing-label`/`playingLabel`: What the live region says when the playlist moves to another entry.
62776
63766
  * `{title}` is the entry's name.
62777
63767
  *
@@ -62831,7 +63821,7 @@ export type CustomElements = {
62831
63821
  * Events that will be emitted by the component.
62832
63822
  *
62833
63823
  * - `helix-activate`: The current entry changed. The playlist already holds the new entry when this is sent, and `detail.previous` is the entry it left. `currentEntry` is the entry itself, with its `src`, `poster` and name.
62834
- * - `helix-before-activate`: The current entry is about to change. Cancelable: cancel it to keep the current entry.
63824
+ * - `helix-before-activate`: The current entry is about to change, and `detail.cause` says why: `press`, `next`, `previous`, `ended`, or `removed`. Cancelable: cancel it to keep the current entry.
62835
63825
  * - `helix-end`: The last entry finished playing, and the playlist stopped there. Not sent while `repeat` is set.
62836
63826
  *
62837
63827
  * ## Slots
@@ -62839,6 +63829,7 @@ export type CustomElements = {
62839
63829
  * Areas where markup can be added to the component.
62840
63830
  *
62841
63831
  * - `(default)`: The entries.
63832
+ * - `empty`: Shown while the playlist has no entries. Defaults to `empty-label`.
62842
63833
  * - `player`: The player that plays the entries.
62843
63834
  *
62844
63835
  * ## Methods
@@ -62850,19 +63841,21 @@ export type CustomElements = {
62850
63841
  * entry otherwise.
62851
63842
  * - `previous() => void`: Moves to the previous entry and plays it, as the player's previous control
62852
63843
  * does. Under `shuffle` it goes back through the order that played.
62853
- * - `requestActive(next: string) => boolean`: Requests a new current item, and returns whether the change was applied.
63844
+ * - `requestActive(next: string, cause?: string) => boolean`: Requests a new current item, and returns whether the change was applied.
62854
63845
  *
62855
63846
  * Announces before it acts, so `preventDefault()` on the `helix-before-activate` is
62856
63847
  * a refusal and nothing moves. Unlike a native control, nothing has moved
62857
63848
  * by the time this runs, so refusing is simply not writing: there is
62858
63849
  * nothing to put back. Nobody refusing means the set updates itself,
62859
63850
  * whether or not a consumer declared `active`, a declared property being a
62860
- * seed and a correction.
63851
+ * seed and a correction. `cause` says why, where the family names its
63852
+ * causes, and reaches the event as `detail.cause`.
62861
63853
  *
62862
63854
  * ## CSS Parts
62863
63855
  *
62864
63856
  * Custom selectors for styling elements within the component.
62865
63857
  *
63858
+ * - `empty`: The box that holds the `empty` slot, drawn while there are no entries.
62866
63859
  * - `items`: The list of entries.
62867
63860
  * - `live`: A live region that says which entry plays after the playlist moves.
62868
63861
  * - `player`: The region that holds the player.
@@ -63341,8 +64334,10 @@ export type CustomElements = {
63341
64334
  * **A grid.** `columns` lays the items out that many to a line, as a grid of
63342
64335
  * equal columns, and windows the set a line at a time, as React Aria's grid
63343
64336
  * layout does. Each item draws one element, a cell of the grid, and
63344
- * `estimate` is the height of a line. Space the items with padding inside
63345
- * each one, which the list measures with the line.
64337
+ * `estimate` is the height of a line. `min-column-width` lays out as many
64338
+ * columns as fit the box instead, as React Aria's grid layout does with its
64339
+ * smallest item size, and follows the box as it resizes. `gap` spaces the rows, and the columns
64340
+ * of a grid, by a number of pixels the list counts in each row's place.
63346
64341
  *
63347
64342
  * **Keyboard.** The list is one tab stop.
63348
64343
  *
@@ -63353,6 +64348,7 @@ export type CustomElements = {
63353
64348
  * | Home, End | Moves to the first or the last item. |
63354
64349
  * | Page Down, Page Up | Moves by the number of items, or of lines in a grid, on screen. |
63355
64350
  * | A letter or a word | Moves to the next item whose text starts with what you typed. |
64351
+ * | Escape | Lets go of every chosen item, in a list with `selection-mode`. |
63356
64352
  * | Tab | Moves into the focused row's own links and buttons, then out of the list. |
63357
64353
  *
63358
64354
  * An item that is not drawn is scrolled into view and focused, so a keyboard
@@ -63369,12 +64365,23 @@ export type CustomElements = {
63369
64365
  * from: `single` selects one item and `multiple` any number. Space or a press
63370
64366
  * selects an item, Shift with Space, an arrow, Home, End or a press takes in
63371
64367
  * the items from the last one chosen, and Control or Command with A selects
63372
- * them all, in `multiple`. `value` holds the chosen items' keys, separated by
63373
- * commas, in the order of the set: `key-field` names each item's key, and a
63374
- * string or a number item is its own key. A change asks with
63375
- * `helix-before-change` and tells with `change`. Each row is an `option`
63376
- * marked `aria-selected`, so a row's own links and buttons are not reached
63377
- * there: keep those to a list without `selection-mode`.
64368
+ * them all, in `multiple`. Escape lets go of every chosen item, and keeps the
64369
+ * key from the dialog or menu around the list while there was something to
64370
+ * let go of. `value` holds the chosen items' keys, separated by commas, in
64371
+ * the order of the set: `key-field` names each item's key, and a string or a
64372
+ * number item is its own key. A change asks with `helix-before-change` and
64373
+ * tells with `change`. Each row is an `option` marked `aria-selected`, so a
64374
+ * row's own links and buttons are not reached there: keep those to a list
64375
+ * without `selection-mode`.
64376
+ *
64377
+ * `selection-behavior="replace"` selects the item pressed alone, as a file
64378
+ * list does, and the arrow keys carry the selection with them. Control or
64379
+ * Command with a press or with Space adds or takes out one item, and with an
64380
+ * arrow moves without selecting.
64381
+ *
64382
+ * **Disabled items.** `disabled-keys` names items by their keys, separated by
64383
+ * commas. Their rows carry `aria-disabled`, the keys and typing pass over
64384
+ * them, and a press, Space, or Control with A does not select them.
63378
64385
  *
63379
64386
  * **Loading more.** `helix-range-change` fires as the items on screen change,
63380
64387
  * and `range` holds them. `helix-load-more` fires once a reader is within one
@@ -63416,6 +64423,8 @@ export type CustomElements = {
63416
64423
  * - `columns`: How many items a line holds. One, the default, is a list; more lays the
63417
64424
  * items out as a grid of that many equal columns, windowed a line at a
63418
64425
  * time, with Left and Right moving along a line.
64426
+ * - `disabled-keys`/`disabledKeys`: The keys of the items a reader cannot choose or move to, separated by
64427
+ * commas, as `value` writes keys. Their rows carry `aria-disabled`.
63419
64428
  * - `empty-label`/`emptyLabel`: The text of the row shown when there are no items and none are loading,
63420
64429
  * where the `empty` slot is empty. Empty, the default, shows no row.
63421
64430
  * - `estimate`: The height of one row, in pixels, used to find the row at a scroll offset.
@@ -63424,6 +64433,10 @@ export type CustomElements = {
63424
64433
  * right whenever the rows really are one height and is the cheaper of the two.
63425
64434
  * - `for`: The id of the script element that holds the items as JSON. `items` wins
63426
64435
  * where both are set.
64436
+ * - `gap`: The space between two rows, and between two columns in a grid, in
64437
+ * pixels. The list counts it in each row's place, so a gap does not walk
64438
+ * the rows away from the scroll position the way a margin on each row
64439
+ * would.
63427
64440
  * - `key-field`/`keyField`: The field of each item that is its key in `value`, as a key or a path of
63428
64441
  * keys. Empty reads a string or a number item as its own key, and any
63429
64442
  * other item by its place in the set.
@@ -63448,6 +64461,12 @@ export type CustomElements = {
63448
64461
  * disagree with itself; measuring is what a set of genuinely different
63449
64462
  * heights needs and costs a read of each row as it renders. A list of
63450
64463
  * one-line rows should leave this alone.
64464
+ * - `min-column-width`/`minColumnWidth`: The narrowest a column of a grid may be, in pixels. Set, the list lays
64465
+ * out as many columns as fit the box at that width, at least one, and
64466
+ * follows the box as it resizes, which `columns` then does not decide.
64467
+ * - `selection-behavior`/`selectionBehavior`: What a press does to the items already chosen: `toggle` adds or takes out
64468
+ * the item, and `replace` selects it alone and lets the arrow keys carry the
64469
+ * selection, with Control or Command adding or taking out one item.
63451
64470
  * - `selection-mode`/`selectionMode`: Makes the list a list box a reader chooses from: `single` selects one
63452
64471
  * item, and `multiple` any number. Unset is a list a reader reads.
63453
64472
  * - `text-field`/`textField`: The field of each item that typing matches, as a key or a path of keys
@@ -66359,6 +67378,16 @@ export type CustomElementsSolidJs = {
66359
67378
  * - What a key changes that a reader cannot see is said: where a card moved
66360
67379
  * to, its new size, how many cards are selected, and the zoom. A selected
66361
67380
  * card or connection says so when a reader arrives on it.
67381
+ * - Control or Command with C copies the selected cards, and the connections
67382
+ * between them, as a JSON Canvas document in text, which another board or
67383
+ * an app that reads the format takes. A paste is your page's: listen for
67384
+ * `paste` on the board, read the text with `fromJsonCanvas`, and add the
67385
+ * cards it holds.
67386
+ * - Control or Command with Z undoes the last move or resize the board made,
67387
+ * and with Shift, or Control with Y, makes it again. `undo()` and `redo()`
67388
+ * do the same from a script. Each asks with `helix-before-move` and tells
67389
+ * with `helix-move`, as a move does, so a board that holds its positions in
67390
+ * your state is undone through your state.
66362
67391
  *
66363
67392
  * Every drag also works with clicks, as WCAG 2.5.7 requires for a pointer that
66364
67393
  * cannot hold a button down. Click a selected card's move handle, a corner, a
@@ -66409,6 +67438,7 @@ export type CustomElementsSolidJs = {
66409
67438
  * this, so a reader hears the ends first and what the line says after.
66410
67439
  * - `controls-label`/`controlsLabel`: The name of the group of controls, read by screen readers, which names
66411
67440
  * what the controls drive rather than the mechanism.
67441
+ * - `copied-label`/`copiedLabel`: What screen readers hear after a copy, with `{count}` for the cards copied.
66412
67442
  * - `fallback-label`/`fallbackLabel`: The board's name where `label` is empty.
66413
67443
  * - `label`: The accessible name for the board. Required.
66414
67444
  *
@@ -66454,6 +67484,7 @@ export type CustomElementsSolidJs = {
66454
67484
  * walk the cards.
66455
67485
  * - `reconnecting-label`/`reconnectingLabel`: The text announced when a connection's end is picked up, with `{from}` and
66456
67486
  * `{to}`.
67487
+ * - `redone-label`/`redoneLabel`: What screen readers hear after a move or a resize is made again.
66457
67488
  * - `resized-label`/`resizedLabel`: What screen readers hear after a key resizes a card, with `{name}` for the
66458
67489
  * card and `{width}` and `{height}` for its new size, in the document's
66459
67490
  * units.
@@ -66511,6 +67542,7 @@ export type CustomElementsSolidJs = {
66511
67542
  * see the board is told by the color; this is how a reader who cannot is
66512
67543
  * told the same. A tone left out is not read.
66513
67544
  * - `two-finger-hint-label`/`twoFingerHintLabel`: The hint shown when one finger swipes over the board with `gestures="cooperative"`.
67545
+ * - `undone-label`/`undoneLabel`: What screen readers hear after a move or a resize is undone.
66514
67546
  * - `using-label`/`usingLabel`: The line shown while the board, with `gestures="activate"`, has the gestures.
66515
67547
  * - `wheel-hint-label`/`wheelHintLabel`: The hint shown when the wheel scrolls past the board with
66516
67548
  * `gestures="cooperative"`. `{key}` is ⌘ on a Mac and Ctrl elsewhere.
@@ -66683,6 +67715,11 @@ export type CustomElementsSolidJs = {
66683
67715
  *
66684
67716
  * What a reader landing on a card off the edge of the view gets, and what a
66685
67717
  * page's own search or outline can call to take a reader to one.
67718
+ * - `undo() => boolean`: Puts the cards of the last move or resize back where they stood, asking
67719
+ * with `helix-before-move` first. Returns whether anything moved: false
67720
+ * with nothing to undo, or when the request was refused.
67721
+ * - `redo() => boolean`: Makes the last move or resize `undo` took back again, asking with
67722
+ * `helix-before-move` first. Returns whether anything moved.
66686
67723
  * - `toJsonCanvas() => CanvasDocument`: The board as a JSON Canvas document, for saving it.
66687
67724
  *
66688
67725
  * What each card holds is the consumer's DOM, so a card comes back as a card
@@ -67524,6 +68561,19 @@ export type CustomElementsSolidJs = {
67524
68561
  * "Ada is typing" (`typing-label`), which a screen reader hears, and clearing
67525
68562
  * it takes them away. Anything slotted into `status` is drawn first.
67526
68563
  *
68564
+ * **Keyboard.** The transcript moves between turns the way a feed does. Each
68565
+ * turn says its place, such as "3 of 40", windowed or not.
68566
+ *
68567
+ * | Key | What it does |
68568
+ * |---|---|
68569
+ * | Page Down, Page Up | On a turn or inside one, moves focus to the next or the previous turn. On the transcript itself, moves focus to the turn at the top of the view. |
68570
+ * | Control with End | Moves focus to the composer. |
68571
+ * | Control with Home | Moves focus to the first control above the transcript, or to the transcript. |
68572
+ *
68573
+ * While you are scrolled away from the newest turn, the `resume` region shows
68574
+ * a button that takes you back, named by `resume-label`, "Jump to latest".
68575
+ * Slot your own control into `resume` to replace it.
68576
+ *
67527
68577
  * A screen reader names each turn by its author and its time, such as "You, 2
67528
68578
  * minutes ago". Set `me-label` and `message-label` to say it in your language,
67529
68579
  * and give each turn by `them` an `author-label`. A turn with neither an author
@@ -67594,6 +68644,7 @@ export type CustomElementsSolidJs = {
67594
68644
  * is the way back, and that is a part inside the shadow tree where a
67595
68645
  * stylesheet can already reach it. Measured rather than assumed: `label,
67596
68646
  * pinned` after upgrade against `label` from the server.
68647
+ * - `resume-label`/`resumeLabel`: The words on the button that returns to the newest turn, where `resume` is empty.
67597
68648
  * - `threshold`: How near the bottom still counts as being at it, in pixels.
67598
68649
  *
67599
68650
  * A hook rather than a constant, because the right number depends on how tall
@@ -67663,7 +68714,7 @@ export type CustomElementsSolidJs = {
67663
68714
  * - `actions`: Controls for the whole conversation, beside the header.
67664
68715
  * - `composer`: The composer, below the transcript.
67665
68716
  * - `header`: Content above the transcript that names the conversation.
67666
- * - `resume`: The control that returns to the bottom, shown while the user has scrolled away.
68717
+ * - `resume`: The control that returns to the bottom, shown while the user has scrolled away. Defaults to a button named by `resume-label`.
67667
68718
  * - `status`: Status beside the composer, such as someone typing or a lost connection.
67668
68719
  *
67669
68720
  * ## Methods
@@ -67712,6 +68763,8 @@ export type CustomElementsSolidJs = {
67712
68763
  * - `message-state`: The state text of a turn from `turns`, when there is one to show.
67713
68764
  * - `message-time`: The time of a turn from `turns`.
67714
68765
  * - `resume`: The control shown while the user is scrolled away from the bottom.
68766
+ * - `resume-button`: The button the `resume` region shows when nothing is slotted into it.
68767
+ * - `resume-mark`: The arrow on the default `resume-button`.
67715
68768
  * - `status`: The status region, outside the log.
67716
68769
  * - `turn`: The wrapper around the message drawn for one turn from `turns`.
67717
68770
  * - `typing`: The words that say who is typing, in the status band, while `typing` names someone.
@@ -68228,7 +69281,18 @@ export type CustomElementsSolidJs = {
68228
69281
  * For a fragment of code inside a sentence, use `Code`.
68229
69282
  *
68230
69283
  * Set `line-numbers` to number the lines in a gutter beside the code, hidden
68231
- * from the accessibility tree and left out of a copy. Set `highlight` to a
69284
+ * from the accessibility tree and left out of a copy. Set `mark-lines` to
69285
+ * mark lines a reader should look at, such as `2, 4-6`: the block draws a
69286
+ * band behind each run, placed where the lines are laid out, so it follows a
69287
+ * highlighter's markup and lines that wrap. Set `wrap` to wrap long lines
69288
+ * rather than scroll them; a gutter then numbers each line where it starts.
69289
+ * Set `wrappable` for a button in the header that turns `wrap` on and off,
69290
+ * pressed while the lines wrap.
69291
+ *
69292
+ * The header holds the name, the `actions` slot, and the copy button. Slot a
69293
+ * control into `actions`, such as a button that sets `wrap` or one that opens
69294
+ * the code in an editor, and the block draws a header for it even with no
69295
+ * name. `copy-icon` and `copied-icon` replace the copy button's two icons. Set `highlight` to a
68232
69296
  * function that turns the code into highlighted markup, such as one wrapping
68233
69297
  * Shiki or Prism, and the block draws what it returns; it is handed the
68234
69298
  * block's `language`, so one function serves every block. The code stays in
@@ -68315,6 +69379,9 @@ export type CustomElementsSolidJs = {
68315
69379
  * copy, which takes the code alone. Reflected, because the stylesheet lays
68316
69380
  * the gutter out beside the code. A diff numbers its lines from its hunks
68317
69381
  * whether or not this is set.
69382
+ * - `mark-lines`/`markLines`: The lines to mark, as numbers and ranges counted from 1, such as `2, 4-6`.
69383
+ * Each run is drawn as a band behind its lines. Not for a diff, which marks
69384
+ * its own changes.
68318
69385
  * - `no-copy`/`noCopy`: Whether to leave the copy button off.
68319
69386
  *
68320
69387
  * Negative, which is not a style choice. A boolean attribute is true whenever
@@ -68339,6 +69406,17 @@ export type CustomElementsSolidJs = {
68339
69406
  * Absent is unified, each removal above its replacement, which fits any
68340
69407
  * width. `split` sets the old version beside the new one. Optional rather
68341
69408
  * than defaulted, so the host carries no attribute the consumer did not write.
69409
+ * - `wrap`: Whether long lines wrap. Without it they scroll.
69410
+ *
69411
+ * Off by default, so long lines scroll, because a line break can be
69412
+ * significant in code and a wrapped line reads as two. For prose-like code,
69413
+ * such as a long command or a log line, a wrap reads better than a scroll.
69414
+ * With `line-numbers`, each number stands beside the line it numbers
69415
+ * however many rows that line takes. Reflected, because the stylesheet
69416
+ * wraps the lines.
69417
+ * - `wrap-label`/`wrapLabel`: The wrap button's name, which it keeps whether it is pressed or not.
69418
+ * - `wrappable`: Whether the header has a button that wraps the lines and unwraps them. The
69419
+ * block draws a header for it even with no name.
68342
69420
  * - `highlight`: Turns the code into highlighted markup, which the block draws in place of
68343
69421
  * the plain text.
68344
69422
  *
@@ -68381,16 +69459,36 @@ export type CustomElementsSolidJs = {
68381
69459
  * browser harness's awaits it alone: a browser always runs the frame, and a
68382
69460
  * timer beside it was a bet on how long one takes, which a busy run lost. (property only) (readonly)
68383
69461
  *
69462
+ * ## Events
69463
+ *
69464
+ * Events that will be emitted by the component.
69465
+ *
69466
+ * - `helix-before-toggle`: The wrap button was pressed, with the `wrap` it asks for in `detail.checked`. Cancelable: cancel it to keep the lines as they are.
69467
+ * - `helix-toggle`: Fired after the wrap button changed `wrap`, with the new value in `detail.checked`.
69468
+ *
68384
69469
  * ## Slots
68385
69470
  *
68386
69471
  * Areas where markup can be added to the component.
68387
69472
  *
68388
69473
  * - `(default)`: The code.
69474
+ * - `actions`: Controls for the block, in the header before the copy button.
69475
+ * - `copied-icon`: The copy button's icon after a copy. Defaults to a check mark.
69476
+ * - `copy-icon`: The copy button's icon before a copy. Defaults to a clipboard.
69477
+ *
69478
+ * ## CSS Custom Properties
69479
+ *
69480
+ * CSS variables available for styling the component.
69481
+ *
69482
+ * - `--code-block-line-size`: Written by the block on each `number` in a `wrap` block with `line-numbers`: how tall the line it numbers is laid out. Do not set it.
69483
+ * - `--code-block-mark-inline-size`: Written by the block on each `mark`: how wide the code is, scrolled part included. Do not set it.
69484
+ * - `--code-block-mark-size`: Written by the block on each `mark`: how tall its run of lines is. Do not set it.
69485
+ * - `--code-block-mark-start`: Written by the block on each `mark`: how far down the code its run of lines starts. Do not set it.
68389
69486
  *
68390
69487
  * ## CSS Parts
68391
69488
  *
68392
69489
  * Custom selectors for styling elements within the component.
68393
69490
  *
69491
+ * - `actions`: The box in the header that holds the `actions` slot, drawn while something is slotted there.
68394
69492
  * - `added`: In a diff, a line only the new version has, an `<ins>`.
68395
69493
  * - `block`: The scrolling `<pre>`.
68396
69494
  * - `code`: The `<code>` inside it.
@@ -68419,13 +69517,15 @@ export type CustomElementsSolidJs = {
68419
69517
  * - `header`: The bar that holds the name and the copy button, shown when there is a name.
68420
69518
  * - `hunk`: In a diff, a `@@` line saying where the lines under it are.
68421
69519
  * - `label`: The block's name: its `label`, or its `language` where it has no label.
69520
+ * - `mark`: The band behind a run of lines `mark-lines` names. The block writes where the run is laid out into `--code-block-mark-start`, `--code-block-mark-size`, and `--code-block-mark-inline-size` on it. Hidden from the accessibility tree.
68422
69521
  * - `marker`: In a diff, the `+`, `-`, or space that starts a line.
68423
69522
  * - `new`: In a split diff, the new version's `<pre>`.
68424
- * - `number`: In a diff, a line number.
69523
+ * - `number`: In a diff, a line number. In a `wrap` block with `line-numbers`, one line's number in the gutter, which the block makes as tall as the line it numbers through `--code-block-line-size`.
68425
69524
  * - `old`: In a split diff, the old version's `<pre>`.
68426
69525
  * - `removed`: In a diff, a line only the old version has, a `<del>`.
68427
69526
  * - `split`: In a split diff, the two versions side by side.
68428
69527
  * - `text`: In a diff, a line's code.
69528
+ * - `wrap-toggle`: The button in the header that wraps the lines and unwraps them, drawn when `wrappable` is set.
68429
69529
  *
68430
69530
  * ## CSS States
68431
69531
  *
@@ -70673,17 +71773,24 @@ export type CustomElementsSolidJs = {
70673
71773
  * gives a picker and locale formatting but allows almost no styling, so the
70674
71774
  * field is a text field. Typing sends `input` on each keystroke and `change`
70675
71775
  * when you leave the field, as a text field does. A date picked from the
70676
- * calendar sends both.
71776
+ * calendar sends both. The field reads ISO, `2026-08-04`, and a date written
71777
+ * in the order, the digits, and the month names of `locale`, `8/4/2026` or
71778
+ * `Aug 4, 2026` in `en-US` and `4.8.2026` in `de-DE`, which becomes the value
71779
+ * as you leave the field.
70677
71780
  *
70678
71781
  * The trigger and ArrowDown open the calendar with focus on the selected day,
70679
71782
  * Tab moves between the calendar's controls without leaving it, and Escape
70680
71783
  * closes it and returns focus to the field. A press into the field opens the
70681
71784
  * calendar too. Tab into the field opens nothing, and Tab out of the field
70682
- * closes the calendar.
71785
+ * closes the calendar. The text field is a `combobox` with
71786
+ * `aria-haspopup="dialog"`, `aria-expanded`, and `aria-controls`, as in the
71787
+ * APG date picker combobox, since Down opens the calendar from it.
70683
71788
  *
70684
71789
  * With `segmented`, the field is a row of segments in place of the text: a
70685
71790
  * month, a day and a year in the order the locale writes them, each set with
70686
- * digits or the arrow keys. Alt+Down opens the calendar from a segment.
71791
+ * digits or the arrow keys. Alt+Down opens the calendar from a segment. A
71792
+ * `range` is two rows with a dash between them, the start and the end, as
71793
+ * React Aria's DateRangePicker draws them, and `multiple` keeps the text.
70687
71794
  *
70688
71795
  * Text that is not a date gives the form an empty value, as a native date
70689
71796
  * field does, and `value` keeps the text so it can be corrected.
@@ -70713,27 +71820,39 @@ export type CustomElementsSolidJs = {
70713
71820
  *
70714
71821
  * Component attributes and properties that can be applied to the element or by using JavaScript.
70715
71822
  *
70716
- * - `autocomplete`: What the browser may autofill here, as one of the platform's own tokens.
71823
+ * - `autocomplete`: What the browser may autofill here, as one of the platform's own tokens,
71824
+ * such as `bday`.
70717
71825
  *
70718
71826
  * Empty leaves the attribute off, which is the browser's default and is what
70719
71827
  * lets autofill work at all: hardcoding `off` here means a birthday or a
70720
- * postal code can never be filled in for a reader.
70721
- * - `calendar`: The calendar the written date and the calendar's days are in: `gregory`,
70722
- * `buddhist`, `japanese`, `roc`, or `iso8601`.
70723
- *
70724
- * Absent is the locale's own where it is one of the five, and `gregory` for
70725
- * every other, as Date Picker's `calendar` is. The value is `YYYY-MM-DD` in
70726
- * every calendar, and a focused field is ISO in every calendar. In
70727
- * `segmented`, the segments are the Gregorian day, month, and year, in the
70728
- * order the locale writes them, or ISO order for `iso8601`.
71828
+ * postal code can never be filled in for a reader. With `segmented`, a
71829
+ * hidden native date input carries it, since no browser fills the segments.
71830
+ * - `calendar`: The calendar the written date, the segments, and the calendar's days are
71831
+ * in: `gregory`, `buddhist`, `japanese`, `roc`, or `iso8601`, or a calendar
71832
+ * with months of its own that Date Picker's `calendar` names, such as
71833
+ * `persian`, `hebrew`, `islamic-umalqura`, `ethiopic`, or `chinese`.
71834
+ *
71835
+ * Absent is the locale's own where its months are the Gregorian months, and
71836
+ * `gregory` for every other, as Date Picker's `calendar` is. The value is
71837
+ * `YYYY-MM-DD` in every calendar, and a focused text field is ISO in every
71838
+ * calendar. In `segmented`, the segments are the day, month, and year as
71839
+ * the calendar counts them, in the order the locale writes them: Mehr 14,
71840
+ * 1405 is month 7 and day 14 of 1405 under `persian`. Under the five with
71841
+ * Gregorian months they are the Gregorian day, month, and year, or ISO order
71842
+ * for `iso8601`.
70729
71843
  * - `calendar-label`/`calendarLabel`: The name of the calendar's grid of days, read by screen readers.
71844
+ * - `clearable`: Whether the field shows a button that empties it, as Input's `clearable`
71845
+ * does. Shown only while the field holds something to clear and is neither
71846
+ * disabled nor read-only.
71847
+ * - `clear-label`/`clearLabel`: The accessible name of the clear button, which shows only an icon.
70730
71848
  * - `date-style`/`dateStyle`: How a date is written in the field: `short` through `full`, or ISO.
70731
71849
  *
70732
71850
  * **The field renders when it is idle and holds the value when it is being
70733
71851
  * edited.** A written date is a rendering, and a document being edited must
70734
71852
  * not be a rendering of something else: `Intl.DateTimeFormat` formats and does
70735
- * not parse, so `4 August 2026` cannot be typed back, and writing a parser per
70736
- * locale is how a field ends up rejecting what it just displayed.
71853
+ * not parse, so a rendering such as `Tuesday, August 4, 2026` is no text to
71854
+ * edit. The field does read a date typed in the locale's order and digits as
71855
+ * you leave it, which covers what a reader types.
70737
71856
  *
70738
71857
  * The way out is not to choose between the two but to separate them in time.
70739
71858
  * Idle, the field shows `4 August 2026`, which is what a date is for reading.
@@ -70801,6 +71920,9 @@ export type CustomElementsSolidJs = {
70801
71920
  *
70802
71921
  * **The name goes in**, so a row of them is heard as which one each
70803
71922
  * removes rather than as "Remove" said once per date.
71923
+ * - `selection-label`/`selectionLabel`: What a screen reader hears about the dates chosen in the calendar, with
71924
+ * `{kind}`, `{start}`, `{end}` and `{count}` filled in as Date Picker's
71925
+ * `selection-label` says.
70804
71926
  * - `step`: How far apart the selectable dates are, in days.
70805
71927
  *
70806
71928
  * `<input type="date" step>`'s own unit, handed to the calendar this renders
@@ -70808,8 +71930,13 @@ export type CustomElementsSolidJs = {
70808
71930
  * where there is one and from 1 January 1970 where there is not, which is the
70809
71931
  * platform's base.
70810
71932
  * - `step-mismatch-message`/`stepMismatchMessage`: The message shown when a date is not on `step`.
71933
+ * - `time-zone`/`timeZone`: The time zone today is read in, such as `America/New_York`, handed to the
71934
+ * calendar: the day marked today, and the month an empty field opens on.
71935
+ * Empty is the reader's own. Dates are plain `YYYY-MM-DD` and carry no zone.
70811
71936
  * - `trigger-label`/`triggerLabel`: The name of the button that opens the calendar, read by screen readers.
70812
71937
  * - `unavailable-message`/`unavailableMessage`: The message shown when `disable-dates` or `disable-days` bars a date.
71938
+ * - `unreadable-message`/`unreadableMessage`: The message for text that is no date, where `bad-input-message` is not
71939
+ * set. `{mode}` is `single`, `range`, or `multiple`.
70813
71940
  * - `year-view-label`/`yearViewLabel`: The name of the calendar's heading where it shows a page of years, with
70814
71941
  * `{heading}` filled in.
70815
71942
  * - `empty-message`/`emptyMessage`: What a row of segments reports when the field is required and every
@@ -70820,6 +71947,10 @@ export type CustomElementsSolidJs = {
70820
71947
  * - `incomplete-message`/`incompleteMessage`: What a row of segments reports while some segments are set and others
70821
71948
  * are not, where `bad-input-message` is not set. `{kind}` is `date` or
70822
71949
  * `time`.
71950
+ * - `range-end-label`/`rangeEndLabel`: What a screen reader hears before the segments of a range's second date
71951
+ * or time, after each segment's own name.
71952
+ * - `range-start-label`/`rangeStartLabel`: What a screen reader hears before the segments of a range's first date
71953
+ * or time, after each segment's own name: "month, Start, Stay".
70823
71954
  * - `segmented`: Whether the field is a row of segments, one for each part of the date or
70824
71955
  * time, in place of a line of text.
70825
71956
  *
@@ -70980,6 +72111,7 @@ export type CustomElementsSolidJs = {
70980
72111
  * - `helix-before-change`: Fired before the date changes. Cancelable: call `preventDefault()` to keep the current date.
70981
72112
  * - `helix-before-close`: Fired before the calendar closes. Cancelable: call `preventDefault()` to keep it open.
70982
72113
  * - `helix-before-open`: Fired before the calendar opens. Cancelable: call `preventDefault()` to keep it closed.
72114
+ * - `helix-clear`: Fired after the clear button has emptied the field, after `input` and `change`.
70983
72115
  * - `input`: Fired after the value changes.
70984
72116
  * - `toggle`: Fired when the calendar opens or closes, with `newState` and `oldState`.
70985
72117
  *
@@ -70987,6 +72119,7 @@ export type CustomElementsSolidJs = {
70987
72119
  *
70988
72120
  * Areas where markup can be added to the component.
70989
72121
  *
72122
+ * - `clear-icon`: Replaces the cross on the clear button, under `clearable`.
70990
72123
  * - `end`: Content after the date, before the trigger, such as a clear button.
70991
72124
  * - `feedback`: The error message under the field.
70992
72125
  * - `hint`: The help text under the field.
@@ -71062,6 +72195,7 @@ export type CustomElementsSolidJs = {
71062
72195
  *
71063
72196
  * Custom selectors for styling elements within the component.
71064
72197
  *
72198
+ * - `clear`: The button that empties the field, under `clearable`, while it holds a date.
71065
72199
  * - `control`: The text input.
71066
72200
  * - `date`: One held date, as a tag, in `multiple`.
71067
72201
  * - `date-cell`: The tag's grid cell, which a tag draws only inside a tag group.
@@ -71103,8 +72237,10 @@ export type CustomElementsSolidJs = {
71103
72237
  * - `picker-periods`: The grid of months or years.
71104
72238
  * - `picker-previous`: The control that moves to the previous month.
71105
72239
  * - `picker-previous-mark`: The icon on the previous month control.
72240
+ * - `picker-selection`: The chosen date or range in words, which screen readers hear when it changes. Drawn for screen readers only.
71106
72241
  * - `picker-week`: One row of days.
71107
72242
  * - `picker-weekday`: A column header naming a day of the week.
72243
+ * - `range-separator`: The dash between a range's two rows of segments, in `segmented`, beside `literal`.
71108
72244
  * - `rest`: The count of dates beyond the ones shown. It is a `<button>` with `expandable` and a `<span>` without it.
71109
72245
  * - `segment`: One part of the date, a year, a month or a day, in `segmented`.
71110
72246
  * - `segment-placeholder`: A segment with nothing in it yet. Applied with `segment`.
@@ -71118,6 +72254,7 @@ export type CustomElementsSolidJs = {
71118
72254
  *
71119
72255
  * These can be used to apply styling when a component is in a given state.
71120
72256
  *
72257
+ * - `blank`: The field holds no date.
71121
72258
  * - `invalid`: The field has an error to show, from the browser's validation or from your `feedback`.
71122
72259
  * - `open`: The calendar is open.
71123
72260
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
@@ -71140,9 +72277,11 @@ export type CustomElementsSolidJs = {
71140
72277
  * **Dates are `YYYY-MM-DD` strings, and every calculation is in UTC**, because
71141
72278
  * a local-time `Date` shifts across a time zone or daylight-saving boundary.
71142
72279
  *
71143
- * **The days are the Gregorian calendar's**, written in `calendar`: the
71144
- * locale's own where its months are the Gregorian months, as `th-TH` writes
71145
- * 2569 for 2026, and `gregory` where they are not, as for `fa-IR`.
72280
+ * **The months are the ones `calendar` counts**: the Gregorian months for the
72281
+ * locale's own calendar where its months are the Gregorian months, as `th-TH`
72282
+ * writes 2569 for 2026, and `gregory` where they are not, as for `fa-IR`
72283
+ * with no `calendar`. Name a calendar with months of its own, such as
72284
+ * `persian`, and every view counts its days, months, and years from `Intl`.
71146
72285
  *
71147
72286
  * `month` sets which month the grid shows, separately from `value`, so paging
71148
72287
  * selects nothing and you can control the view. When unset, it follows the
@@ -71150,7 +72289,14 @@ export type CustomElementsSolidJs = {
71150
72289
  *
71151
72290
  * `mode` sets how many dates are held. Unset holds one, `range` holds two and
71152
72291
  * marks the dates between them, and `multiple` toggles each date. All three
71153
- * read and write the same comma-separated `value`.
72292
+ * read and write the same comma-separated `value`. With a `mode`, the grid
72293
+ * carries `aria-multiselectable`. While a range holds one end, the grid draws
72294
+ * the range to the day under the pointer or the focus, marking those cells
72295
+ * `data-range-preview`.
72296
+ *
72297
+ * The chosen date, range, or count of dates is the grid's description, in a
72298
+ * region screen readers announce when it changes, as React Aria's calendars
72299
+ * do. `selection-label` words it.
71154
72300
  *
71155
72301
  * `max-view` makes the heading a button that steps back to the months of the
71156
72302
  * year, and with `year` to a page of years, as Zag's date picker does. The
@@ -71185,14 +72331,16 @@ export type CustomElementsSolidJs = {
71185
72331
  * `ja-JP-u-ca-japanese`, and `gregory` for every other, such as `persian`
71186
72332
  * for `fa-IR`.
71187
72333
  *
71188
- * `persian`, `hebrew`, `islamic-umalqura`, `islamic-civil`, `ethiopic`,
71189
- * `coptic`, and `indian` draw a calendar with months of its own, as React
71190
- * Aria's calendars do: each grid is one of that calendar's months, the
71191
- * Hebrew leap month and Ethiopia's five-day thirteenth month included, and
71192
- * Previous, Next and the page keys move by those months. `month` and
72334
+ * `persian`, `hebrew`, `islamic`, `islamic-umalqura`, `islamic-civil`,
72335
+ * `islamic-tbla`, `islamic-rgsa`, `ethiopic`, `ethioaa`, `coptic`,
72336
+ * `indian`, `chinese`, and `dangi` draw a calendar with months of its own,
72337
+ * as React Aria's calendars do: each grid is one of that calendar's months,
72338
+ * the Hebrew and Chinese leap months and Ethiopia's five-day thirteenth
72339
+ * month included, and Previous, Next and the page keys move by those
72340
+ * months. With `max-view`, the months view shows that calendar's year, of
72341
+ * twelve or thirteen months, and the years view its years. `month` and
71193
72342
  * `helix-navigate` then name a month by its first day, `YYYY-MM-DD`. The
71194
- * heading stays text, as the months and years views are drawn in Gregorian
71195
- * months only. The value is `YYYY-MM-DD` in every calendar.
72343
+ * value is `YYYY-MM-DD` in every calendar.
71196
72344
  * - `default-month`/`defaultMonth`: The month to open on when `month` is not set.
71197
72345
  * - `disable-dates`/`disableDates`: Dates that cannot be chosen, as `YYYY-MM-DD`, separated by commas or
71198
72346
  * spaces.
@@ -71255,6 +72403,11 @@ export type CustomElementsSolidJs = {
71255
72403
  * value and stays reachable, which is what a form showing a value somebody
71256
72404
  * else set needs.
71257
72405
  * - `required`: Stops the form from submitting while no date is chosen.
72406
+ * - `selection-label`/`selectionLabel`: What a screen reader hears about the chosen dates: the grid's
72407
+ * description, said again whenever the dates change. `{kind}` is `date`,
72408
+ * `start` while a range holds one end, `range`, or `dates` for `multiple`.
72409
+ * `{start}` and `{end}` are dates written in `locale`, and `{count}` is how
72410
+ * many dates are chosen.
71258
72411
  * - `step`: How far apart the selectable dates are, in days.
71259
72412
  *
71260
72413
  * `<input type="date" step>`'s own unit, counted from `min` where there is
@@ -71409,6 +72562,13 @@ export type CustomElementsSolidJs = {
71409
72562
  * Date Input calls this when its trigger opens the calendar, which is where
71410
72563
  * the APG date picker dialog puts focus. The host is not focusable, so a
71411
72564
  * plain `focus()` on it did nothing and focus stayed on the trigger.
72565
+ * - `showChosen() => void`: Shows the days again, on the month of the chosen date, with the tab stop
72566
+ * on that date, forgetting the month and the day the reader browsed to.
72567
+ *
72568
+ * Date Input calls it each time its panel opens, which is where the APG
72569
+ * date picker dialog puts focus. Measured before this: from August 4, two
72570
+ * presses of Page Down, Escape, and Down again opened on October 4.
72571
+ * A `month` you set stays until the reader pages away from it.
71412
72572
  * - `requestValue(next: string) => boolean`: Refuses every change while read-only. See `readOnly`.
71413
72573
  * - `formResetCallback() => void`: Returns the control to its `defaultValue`, or to its `value` attribute
71414
72574
  * where there is no `default-value`.
@@ -71472,7 +72632,7 @@ export type CustomElementsSolidJs = {
71472
72632
  * Custom selectors for styling elements within the component.
71473
72633
  *
71474
72634
  * - `cell`: One column of a week row. A range is painted on the cells.
71475
- * - `cell-range-end`: The cell of a range's last day, beside `cell`.
72635
+ * - `cell-range-end`: The cell of a range's last day, beside `cell`, or of the day a waiting range is drawn to.
71476
72636
  * - `cell-range-middle`: A cell between a range's ends, beside `cell`.
71477
72637
  * - `cell-range-start`: The cell of a range's first day, beside `cell`.
71478
72638
  * - `day`: The shape inside a cell. A single chosen date is painted on it.
@@ -71498,6 +72658,7 @@ export type CustomElementsSolidJs = {
71498
72658
  * - `periods`: The grid of months or years.
71499
72659
  * - `previous`: The control that moves to the previous month.
71500
72660
  * - `previous-mark`: The glyph on the previous month control, where none is slotted.
72661
+ * - `selection`: The chosen date or range in words, which screen readers hear when it changes. Drawn for screen readers only.
71501
72662
  * - `week`: One row of days.
71502
72663
  * - `weekday`: A column header naming a day of the week. It shows the short name and says the full one.
71503
72664
  *
@@ -71505,7 +72666,11 @@ export type CustomElementsSolidJs = {
71505
72666
  *
71506
72667
  * These can be used to apply styling when a component is in a given state.
71507
72668
  *
71508
- * - `invalid`: While `invalid` is set or `feedback` says what is wrong.
72669
+ * - `blank`: While no date is chosen.
72670
+ * - `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.
72671
+ * - `month-view`: While the months of a year are shown, where `max-view` is set.
72672
+ * - `range-pending`: While a `range` holds its first end and waits for the second.
72673
+ * - `year-view`: While a page of years is shown, where `max-view` is `year`.
71509
72674
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
71510
72675
  */
71511
72676
  "helix-headless-date-picker": Partial<
@@ -74147,20 +75312,22 @@ export type CustomElementsSolidJs = {
74147
75312
  *
74148
75313
  * **A date is written in a calendar Date Picker draws**: the locale's own
74149
75314
  * where its months are the Gregorian months, as `th-TH` writes 2569 for 2026,
74150
- * and `gregory` where they are not, as for `fa-IR`. `calendar` picks one of
74151
- * the five.
75315
+ * and `gregory` where they are not, as for `fa-IR`. `calendar` picks any of
75316
+ * them, `persian` and `hebrew` included.
74152
75317
  *
74153
75318
  * ## Attributes & Properties
74154
75319
  *
74155
75320
  * Component attributes and properties that can be applied to the element or by using JavaScript.
74156
75321
  *
74157
75322
  * - `calendar`: The calendar a date is written in: `gregory`, `buddhist`, `japanese`,
74158
- * `roc`, or `iso8601`, the calendars Date Picker and Date Input draw.
74159
- *
74160
- * Absent is the locale's own where it is one of the five, such as
74161
- * `buddhist` for `th-TH`, and `gregory` for every other, such as `persian`
74162
- * for `fa-IR`, so a date written here reads as the same date a Date Picker
74163
- * beside it shows.
75323
+ * `roc`, or `iso8601`, or a calendar with months of its own, such as
75324
+ * `persian`, `hebrew`, `islamic-umalqura`, `ethiopic`, or `chinese`: every
75325
+ * calendar Date Picker and Date Input draw.
75326
+ *
75327
+ * Absent is the locale's own where its months are the Gregorian months,
75328
+ * such as `buddhist` for `th-TH`, and `gregory` for every other, such as
75329
+ * `persian` for `fa-IR`, so a date written here reads as the same date a
75330
+ * Date Picker beside it shows. Write `calendar="persian"` for Mehr 14, 1405.
74164
75331
  * - `date`: The timestamp, in any format `Date` can parse.
74165
75332
  *
74166
75333
  * An ISO string is what an API sends and what `<time datetime>` takes, so it
@@ -74179,6 +75346,9 @@ export type CustomElementsSolidJs = {
74179
75346
  * - `date-style`/`dateStyle`: The locale's own pattern for the date: `full`, `long`, `medium`, or
74180
75347
  * `short`. Set, it stands in for `weekday`, `day`, `month`, `year` and `era`.
74181
75348
  * - `day`: How the day of the month is written, where a date is shown.
75349
+ * - `day-period`/`dayPeriod`: Writes the part of the day in words, such as "in the morning" or "at
75350
+ * night", in its `long`, `short`, or `narrow` form, where `hour` is on a
75351
+ * twelve-hour clock.
74182
75352
  * - `elapsed`: Shows how long ago the timestamp was, in a compact form such as "3h", in
74183
75353
  * place of the date.
74184
75354
  *
@@ -74193,6 +75363,8 @@ export type CustomElementsSolidJs = {
74193
75363
  * Off by default, which draws the date as one run of text, as Shoelace and
74194
75364
  * Web Awesome do. An `elapsed` or `relative` reading is one phrase either
74195
75365
  * way.
75366
+ * - `fractional-second-digits`/`fractionalSecondDigits`: How many digits of a fraction of a second to write after `second`: 1, 2,
75367
+ * or 3, as in 09:41:07.250.
74196
75368
  * - `frozen`: Draws an `elapsed` or `relative` reading once and leaves it, where it
74197
75369
  * would otherwise move on as it goes stale.
74198
75370
  *
@@ -74230,7 +75402,9 @@ export type CustomElementsSolidJs = {
74230
75402
  * - `time-zone`/`timeZone`: The time zone to read the timestamp in.
74231
75403
  *
74232
75404
  * Empty is the runtime's own.
74233
- * - `time-zone-name`/`timeZoneName`: Shows the name of the time zone, in its `long` or `short` form.
75405
+ * - `time-zone-name`/`timeZoneName`: Shows the name of the time zone: `long` or `short`, as Pacific Daylight
75406
+ * Time or PDT, `longOffset` or `shortOffset`, as GMT-07:00 or GMT-7, or
75407
+ * `longGeneric` or `shortGeneric`, as Pacific Time or PT.
74234
75408
  * - `weekday`: How the weekday is written, where one is shown.
74235
75409
  * - `year`: How the year is written, where a date is shown.
74236
75410
  * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
@@ -74261,6 +75435,7 @@ export type CustomElementsSolidJs = {
74261
75435
  * - `day`: The day of the month, with `fields`.
74262
75436
  * - `day-period`: AM or PM, or the locale's word for the part of the day, with `fields`.
74263
75437
  * - `era`: The era, such as AD, with `fields` and `era`.
75438
+ * - `fractional-second`: The fraction of a second, with `fields` and `fractional-second-digits`.
74264
75439
  * - `hour`: The hour, with `fields`.
74265
75440
  * - `minute`: The minute, with `fields`.
74266
75441
  * - `month`: The month, with `fields`.
@@ -74530,14 +75705,15 @@ export type CustomElementsSolidJs = {
74530
75705
  * - `pan(to: ViewportWay) => void`: Pans the view one step in a direction.
74531
75706
  * - `zoom(by: number) => void`: Zooms the view one step: `1` zooms in and `-1` zooms out.
74532
75707
  * - `toggleFullscreen() => void`: Turns fullscreen on or off.
74533
- * - `requestActive(next: string) => boolean`: Requests a new current item, and returns whether the change was applied.
75708
+ * - `requestActive(next: string, cause?: string) => boolean`: Requests a new current item, and returns whether the change was applied.
74534
75709
  *
74535
75710
  * Announces before it acts, so `preventDefault()` on the `helix-before-activate` is
74536
75711
  * a refusal and nothing moves. Unlike a native control, nothing has moved
74537
75712
  * by the time this runs, so refusing is simply not writing: there is
74538
75713
  * nothing to put back. Nobody refusing means the set updates itself,
74539
75714
  * whether or not a consumer declared `active`, a declared property being a
74540
- * seed and a correction.
75715
+ * seed and a correction. `cause` says why, where the family names its
75716
+ * causes, and reaches the event as `detail.cause`.
74541
75717
  *
74542
75718
  * ## CSS Parts
74543
75719
  *
@@ -76396,14 +77572,15 @@ export type CustomElementsSolidJs = {
76396
77572
  * - `previous() => void`: Shows the previous item. Before the first item, it shows the last when
76397
77573
  * `loop` is set.
76398
77574
  * - `toggleFullscreen() => void`: Makes the viewer fill the screen, or exits fullscreen.
76399
- * - `requestActive(next: string) => boolean`: Requests a new current item, and returns whether the change was applied.
77575
+ * - `requestActive(next: string, cause?: string) => boolean`: Requests a new current item, and returns whether the change was applied.
76400
77576
  *
76401
77577
  * Announces before it acts, so `preventDefault()` on the `helix-before-activate` is
76402
77578
  * a refusal and nothing moves. Unlike a native control, nothing has moved
76403
77579
  * by the time this runs, so refusing is simply not writing: there is
76404
77580
  * nothing to put back. Nobody refusing means the set updates itself,
76405
77581
  * whether or not a consumer declared `active`, a declared property being a
76406
- * seed and a correction.
77582
+ * seed and a correction. `cause` says why, where the family names its
77583
+ * causes, and reaches the event as `detail.cause`.
76407
77584
  * - `requestOpen(next: boolean) => boolean`: Requests that the element open or close, and returns whether the change
76408
77585
  * was applied.
76409
77586
  *
@@ -80098,6 +81275,7 @@ export type CustomElementsSolidJs = {
80098
81275
  * - `time-day`: Format Date's `day`, forwarded for a time drawn as fields. An elapsed time draws none.
80099
81276
  * - `time-day-period`: Format Date's `day-period`, forwarded for a time drawn as fields. An elapsed time draws none.
80100
81277
  * - `time-era`: Format Date's `era`, forwarded for a time drawn as fields. An elapsed time draws none.
81278
+ * - `time-fractional-second`: Format Date's `fractional-second`, forwarded for a time drawn as fields. An elapsed time draws none.
80101
81279
  * - `time-hour`: Format Date's `hour`, forwarded for a time drawn as fields. An elapsed time draws none.
80102
81280
  * - `time-minute`: Format Date's `minute`, forwarded for a time drawn as fields. An elapsed time draws none.
80103
81281
  * - `time-month`: Format Date's `month`, forwarded for a time drawn as fields. An elapsed time draws none.
@@ -84523,6 +85701,10 @@ export type CustomElementsSolidJs = {
84523
85701
  * `min-steps-between-thumbs` keeps them that many steps apart, and the readout
84524
85702
  * joins the two as `range-text` writes them.
84525
85703
  *
85704
+ * A press on a range's track takes the nearest thumb to the point pressed,
85705
+ * and moving the pointer drags it, as React Aria's and Web Awesome's sliders
85706
+ * do. The thumb takes focus, and `change` is sent as the press ends.
85707
+ *
84526
85708
  * `origin` sets where a single thumb's fill starts: at `min`, at the middle of
84527
85709
  * the track, or at `max`. A balance or an offset from zero fills from the
84528
85710
  * middle, as Zag's slider `origin` does. The fill's ends are published as
@@ -84547,7 +85729,7 @@ export type CustomElementsSolidJs = {
84547
85729
  * |---|---|
84548
85730
  * | Right, Up | Moves the thumb up by `step`. |
84549
85731
  * | Left, Down | Moves the thumb down by `step`. |
84550
- * | Page Up, Page Down | Moves the thumb by a larger step. |
85732
+ * | Page Up, Page Down | Moves the thumb by `page-step`, or by the platform's larger step where it is not set. |
84551
85733
  * | Home, End | Moves the thumb to its lowest or highest value. |
84552
85734
  *
84553
85735
  * Under `readonly` none of these move the thumb, and Tab still reaches it.
@@ -84608,6 +85790,9 @@ export type CustomElementsSolidJs = {
84608
85790
  * - `origin`: Where a single thumb's fill starts: `start` at `min`, `center` at the
84609
85791
  * middle of the track, or `end` at `max`. Absent is `start`. A range fills
84610
85792
  * between its thumbs and ignores it.
85793
+ * - `page-step`/`pageStep`: How far Page Up and Page Down move a thumb, in the slider's own units, as
85794
+ * React Aria's `pageSize` and Zag's `largeStep` do. Absent leaves the keys
85795
+ * to the platform, which moves a tenth of the track.
84611
85796
  * - `range`: Adds a second thumb, so the value is a pair.
84612
85797
  *
84613
85798
  * The pair is one string, `"10,50"`, which is what `value` and
@@ -84840,6 +86025,8 @@ export type CustomElementsSolidJs = {
84840
86025
  *
84841
86026
  * These can be used to apply styling when a component is in a given state.
84842
86027
  *
86028
+ * - `dragging`: A thumb is being dragged, by its thumb or from a press on the track.
86029
+ * - `focus-visible`: A thumb has focus that the keyboard brought, where the browser draws a focus ring.
84843
86030
  * - `invalid`: The slider has an error to show, from the browser's validation or from your `feedback`.
84844
86031
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
84845
86032
  */
@@ -85473,6 +86660,13 @@ export type CustomElementsSolidJs = {
85473
86660
  * only whoever put it there knows that, which is the same reason `min` is a
85474
86661
  * consumer's to set.
85475
86662
  * - `corner-label`/`cornerLabel`: The name of the handle where two dividers cross, read by screen readers.
86663
+ * - `corner-value-label`/`cornerValueLabel`: What the handle where two dividers cross says it is set to, both dividers
86664
+ * at once: `{across}` is where the divider that runs down stands, and
86665
+ * `{down}` where the one that runs across stands, each a percentage.
86666
+ *
86667
+ * **Both, because the handle moves both**, and a number names one: the
86668
+ * handle's `aria-valuenow` is the divider its `aria-orientation` names, and
86669
+ * these words are the whole of where it is.
85476
86670
  * - `default-collapsed`/`defaultCollapsed`: Which pane starts shut, when `collapsed` is not set.
85477
86671
  * - `default-position`/`defaultPosition`: Where the divider starts, when `position` is not set.
85478
86672
  * - `label`: The divider's name, read by screen readers.
@@ -85968,14 +87162,15 @@ export type CustomElementsSolidJs = {
85968
87162
  * and the invalid mark from every stage, as Ark UI's `resetStep` does.
85969
87163
  * Returns whether it moved: a listener can refuse the move with
85970
87164
  * `helix-before-activate`, and the stages then keep their marks.
85971
- * - `requestActive(next: string) => boolean`: Requests a new current item, and returns whether the change was applied.
87165
+ * - `requestActive(next: string, cause?: string) => boolean`: Requests a new current item, and returns whether the change was applied.
85972
87166
  *
85973
87167
  * Announces before it acts, so `preventDefault()` on the `helix-before-activate` is
85974
87168
  * a refusal and nothing moves. Unlike a native control, nothing has moved
85975
87169
  * by the time this runs, so refusing is simply not writing: there is
85976
87170
  * nothing to put back. Nobody refusing means the set updates itself,
85977
87171
  * whether or not a consumer declared `active`, a declared property being a
85978
- * seed and a correction.
87172
+ * seed and a correction. `cause` says why, where the family names its
87173
+ * causes, and reaches the event as `detail.cause`.
85979
87174
  *
85980
87175
  * ## CSS Custom Properties
85981
87176
  *
@@ -86719,6 +87914,27 @@ export type CustomElementsSolidJs = {
86719
87914
  * Tab reaches each checkbox, and Space ticks it. To act on one row, put a
86720
87915
  * link or a button in a cell, or give the row an `href`.
86721
87916
  *
87917
+ * `selection-mode="single"` selects one row at a time: ticking a row lets go
87918
+ * of the one before, the heading holds no checkbox, and Shift and Control with
87919
+ * A take in nothing more. `selection-behavior="replace"` makes a press on a
87920
+ * row, anywhere but its own controls, select it alone, as a file list does,
87921
+ * and in a `grid` table the arrow keys carry the selection with them. Control
87922
+ * or Command with a press adds or takes out the row, and with an arrow moves
87923
+ * without selecting. Shift with a press takes in the rows from the one last
87924
+ * chosen.
87925
+ *
87926
+ * **Nesting rows.** A row with `parent` sits under the row of that key, as
87927
+ * a file sits in a folder. The table then draws a column of disclosure
87928
+ * buttons, under a heading named by `expand-column-label`: a row with rows
87929
+ * under it has a button named by `expand-row-label` ("Expand {row}") that
87930
+ * says with `aria-expanded` whether it is open, and the rows under a shut row
87931
+ * are not drawn. `expanded` holds the open rows' keys, comma separated, and
87932
+ * `default-expanded` is where it starts. A press asks with
87933
+ * `helix-before-toggle` and tells with `helix-toggle`, both from the row, so
87934
+ * you can refuse it or load the rows on the way. A sort orders the rows
87935
+ * under each row among themselves, and in a `grid` table the table is a
87936
+ * `treegrid` whose rows say their depth.
87937
+ *
86722
87938
  * **Moving rows.** `reorderable` adds a column of grips before the checkboxes,
86723
87939
  * under a heading named by `row-grips-label`.
86724
87940
  *
@@ -86755,13 +87971,20 @@ export type CustomElementsSolidJs = {
86755
87971
  * | Enter on a cell of a row with `href` | Follows the row's link. |
86756
87972
  * | Enter, Space on a sortable heading | Sorts by the column. |
86757
87973
  * | Space on a row, Enter or Space on its checkbox cell | Selects the row, in a `selectable` table. |
87974
+ * | Enter or Space on a disclosure cell | Shows or hides the rows under the row, in a table whose rows nest. |
86758
87975
  * | Enter or Space on a grip cell | Picks the row up, or drops it, in a `reorderable` table. Up, Down, Home, and End move a row picked up, and Escape puts it back. |
87976
+ * | Down, Up, Page Down, Page Up under `selection-behavior="replace"` | Selects the row it moves to alone. Control or Command with the key moves without selecting. |
86759
87977
  * | Shift with Down or Up | Selects the rows it moves across, in a `selectable` table. |
86760
87978
  * | Shift with Space | Selects every row from the one last chosen, in a `selectable` table. |
86761
87979
  * | Control or Command with A | Selects every row, in a `selectable` table. |
86762
87980
  * | A letter or a word | Moves to the next row whose first cell starts with what you typed. |
86763
87981
  * | Tab | Leaves the table. |
86764
87982
  *
87983
+ * **Loading more.** `load-more` sends `helix-load-more` once the end of the
87984
+ * table comes within a screen of view, in the box that scrolls it or the
87985
+ * page, once for each number of rows: add rows and it can send it again. Set
87986
+ * `loading` while you fetch, and the table asks for nothing until it clears.
87987
+ *
86765
87988
  * When the rows did not load, set `error-text`, such as "The orders did not
86766
87989
  * load", and put a button that tries again in the `error` slot. The line shows
86767
87990
  * after the rows in place of the empty and loading lines, the live region says
@@ -86807,6 +88030,8 @@ export type CustomElementsSolidJs = {
86807
88030
  * and a list here would be a second way to say what that says. This table's
86808
88031
  * cells are markup, and a table written as rows of cells with no column
86809
88032
  * declared in it has nowhere else to be sized from.
88033
+ * - `default-expanded`/`defaultExpanded`: The keys of the rows whose rows are shown at the start, separated by
88034
+ * commas. Used until `expanded` is set.
86810
88035
  * - `default-selected`/`defaultSelected`: The keys selected at the start, separated by commas. Used until `selected`
86811
88036
  * is set.
86812
88037
  * - `default-sort`/`defaultSort`: The starting sort order, used until `sort` is set.
@@ -86819,6 +88044,11 @@ export type CustomElementsSolidJs = {
86819
88044
  * While it is set, a line after the rows shows it, or your own content in the
86820
88045
  * `error` slot, in place of the empty and loading lines, and the live region
86821
88046
  * says it.
88047
+ * - `expand-column-label`/`expandColumnLabel`: The name of the heading over the disclosure buttons.
88048
+ * - `expanded`: The keys of the rows whose rows are shown, separated by commas, in a table
88049
+ * whose rows nest. A press on a row's disclosure button asks first, and
88050
+ * `default-expanded` seeds what this element then owns.
88051
+ * - `expand-row-label`/`expandRowLabel`: The name of a row's disclosure button. `{row}` is the words of the row's first cell.
86822
88052
  * - `fallback-label`/`fallbackLabel`: The table's name where neither `label` nor an `aria-label` or
86823
88053
  * `aria-labelledby` on the host gives it one.
86824
88054
  * - `grid`: Makes the table a grid: one tab stop, and the arrow keys, Home, End and the
@@ -86832,6 +88062,8 @@ export type CustomElementsSolidJs = {
86832
88062
  *
86833
88063
  * An `aria-label` or `aria-labelledby` on the host names the table too, and
86834
88064
  * wins over this.
88065
+ * - `load-more`/`loadMore`: Sends `helix-load-more` once the end of the table comes within a screen
88066
+ * of view, so you can add the next rows as a reader nears them.
86835
88067
  * - `moved-label`/`movedLabel`: What screen readers hear each time a key moves a held row, in a
86836
88068
  * `reorderable` table. `{name}` is the row's words, `{position}` the place it
86837
88069
  * would go, counting from 1, and `{count}` the number of rows.
@@ -86845,6 +88077,8 @@ export type CustomElementsSolidJs = {
86845
88077
  * - `selectable`: Adds a column of checkboxes for selecting rows. Each row is known by its
86846
88078
  * `value`, and by its place among the rows as written where it has none.
86847
88079
  * - `select-all-label`/`selectAllLabel`: The name of the checkbox in the heading that selects every row.
88080
+ * - `select-column-label`/`selectColumnLabel`: The name of the heading over the checkboxes under
88081
+ * `selection-mode="single"`, where it holds no checkbox of its own.
86848
88082
  * - `selected`: The keys of the selected rows, separated by commas.
86849
88083
  *
86850
88084
  * A reader's press fires `helix-select` first, and refusing it leaves the
@@ -86854,6 +88088,11 @@ export type CustomElementsSolidJs = {
86854
88088
  * rows are chosen, written in the locale, and a language that needs plural
86855
88089
  * forms writes them: `{count, plural, one {# wybrany} few {# wybrane} many
86856
88090
  * {# wybranych} other {# wybranego}}`.
88091
+ * - `selection-behavior`/`selectionBehavior`: What a press on a row, or in a `grid` table a key that moves to one, does
88092
+ * to the rows already selected: `toggle`, the default, leaves them to the
88093
+ * checkboxes, and `replace` selects the row alone.
88094
+ * - `selection-mode`/`selectionMode`: How many rows a `selectable` table selects: `multiple`, the default, or
88095
+ * `single`, one at a time.
86857
88096
  * - `select-row-label`/`selectRowLabel`: The name of a row's checkbox. `{row}` is replaced with the words of the
86858
88097
  * row's first cell.
86859
88098
  * - `sort`: The sort order, as `field:direction`, where `field` is a sortable column's
@@ -86902,11 +88141,14 @@ export type CustomElementsSolidJs = {
86902
88141
  * Events that will be emitted by the component.
86903
88142
  *
86904
88143
  * - `helix-before-reorder`: Fired when a row is dropped at a new place, in a `reorderable` table, with every row's key in the new order. Cancelable: cancel it to keep the row where it is.
88144
+ * - `helix-before-toggle`: Fired from a row when its disclosure button is pressed, with whether it would be open in `detail.checked`. Cancelable: cancel it to keep the row as it is.
88145
+ * - `helix-load-more`: Fired, in a table with `load-more`, when the end of the table comes within a screen of view, once for each number of rows.
86905
88146
  * - `helix-reorder`: Fired after `helix-before-reorder` when nobody canceled it. Move your rows to the order in `keys`. Cancelable: cancel it to say the move did not happen.
86906
88147
  * - `helix-select`: The selection is about to change. The event carries every selected key, separated by commas. Cancelable: cancel it to keep the current selection.
86907
88148
  * - `helix-selected`: Fired after the selection changes, with every selected key, separated by commas.
86908
88149
  * - `helix-sort`: A different sort order was requested, as `field:direction`, or empty for the order the rows were written in. Cancelable: cancel it to keep the current order.
86909
88150
  * - `helix-sorted`: Fired after the sort order changes, with the new order.
88151
+ * - `helix-toggle`: Fired from a row once the rows under it are shown or hidden, with whether it is open in `detail.checked`.
86910
88152
  *
86911
88153
  * ## Slots
86912
88154
  *
@@ -86950,6 +88192,7 @@ export type CustomElementsSolidJs = {
86950
88192
  * - `drag-preview`: A copy of the row a pointer drags by its grip, which follows the pointer in the top layer until the row is let go, in a `reorderable` table. Hidden from assistive technology.
86951
88193
  * - `empty`: The text shown when there are no rows.
86952
88194
  * - `error`: The line shown after the rows while `error-text` is set, in place of the empty and loading text.
88195
+ * - `expand-head`: The heading over the disclosure buttons, in a table whose rows nest.
86953
88196
  * - `grid-end`: An empty box after the rows, in a `grid` table. Tab focuses it on its way out of the table, so the key leaves from the end.
86954
88197
  * - `grid-start`: An empty box before the rows, in a `grid` table. Shift with Tab focuses it on its way out of the table.
86955
88198
  * - `grip-head`: The heading over the row grips, in a `reorderable` table.
@@ -86990,6 +88233,12 @@ export type CustomElementsSolidJs = {
86990
88233
  * the drop indicator is, with the `dragging`, `drop-before`, and `drop-after`
86991
88234
  * states.
86992
88235
  *
88236
+ * **`parent` nests the row under another**, by that row's key. The table
88237
+ * then draws a column of disclosure buttons: a row with rows under it has one,
88238
+ * named by the table's `expand-row-label` and saying whether it is open with
88239
+ * `aria-expanded`, and its rows are drawn only while it is open. The cell is
88240
+ * indented by the row's depth through `--table-row-level`.
88241
+ *
86993
88242
  * **`href` makes the whole row a link**, as a row action does in React Aria's
86994
88243
  * table: a press anywhere on the row follows it, except on a link or a control
86995
88244
  * of the row's own, and Control, Command or Shift open it the way they open a
@@ -87010,6 +88259,9 @@ export type CustomElementsSolidJs = {
87010
88259
  * reached.
87011
88260
  * - `href`: The URL a press on the row follows, which makes the whole row a link.
87012
88261
  * Empty, the default, leaves presses to the row's cells.
88262
+ * - `parent`: The key of the row this one sits under, in a table whose rows nest: that
88263
+ * row's `value`, or its place among the rows where it has none. Empty, the
88264
+ * default, is a row at the top.
87013
88265
  * - `rel`: The `rel` of the row's link. You set it yourself, as on an anchor.
87014
88266
  * - `target`: Where the row's link opens, such as `_blank`.
87015
88267
  * - `value`: The key the table's `selected` lists this row by. Left empty, the row is
@@ -87041,6 +88293,12 @@ export type CustomElementsSolidJs = {
87041
88293
  *
87042
88294
  * - `(default)`: The row's cells.
87043
88295
  *
88296
+ * ## CSS Custom Properties
88297
+ *
88298
+ * CSS variables available for styling the component.
88299
+ *
88300
+ * - `--table-row-level`: Written by the row on its `expand` cell: how deep the row sits, from 1. Do not set it.
88301
+ *
87044
88302
  * ## CSS Parts
87045
88303
  *
87046
88304
  * Custom selectors for styling elements within the component.
@@ -87056,6 +88314,9 @@ export type CustomElementsSolidJs = {
87056
88314
  * - `checkbox-mark-checked`: Added to `checkbox-mark` while its box is checked.
87057
88315
  * - `checkbox-mark-dash`: Added to `checkbox-mark` while it draws the dash, which it keeps until its box is checked.
87058
88316
  * - `checkbox-mark-indeterminate`: Added to `checkbox-mark` while only some rows are selected.
88317
+ * - `expand`: The cell that holds the row's disclosure button, in a table whose rows nest. It carries `--table-row-level`, the row's depth from 1.
88318
+ * - `expand-button`: The button that shows and hides the rows under this one.
88319
+ * - `expand-mark`: The caret on the disclosure button, which points along the line, turned down by the styled tier while the row is open.
87059
88320
  * - `grip`: The cell that holds the row's grip, in a `reorderable` table.
87060
88321
  * - `grip-button`: The button that moves the row.
87061
88322
  * - `grip-mark`: The icon on the grip.
@@ -87069,6 +88330,7 @@ export type CustomElementsSolidJs = {
87069
88330
  * - `dragging`: The row is being moved, in a `reorderable` table.
87070
88331
  * - `drop-after`: The row being moved goes after this one when it is dropped.
87071
88332
  * - `drop-before`: The row being moved goes before this one when it is dropped.
88333
+ * - `expanded`: While the rows under this one are shown.
87072
88334
  * - `link`: While the row has `href` and is not `disabled`, so a press on it follows the link.
87073
88335
  * - `selected`: While the row is selected, in a `selectable` table.
87074
88336
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
@@ -87327,14 +88589,15 @@ export type CustomElementsSolidJs = {
87327
88589
  *
87328
88590
  * Methods that can be called to access component functionality.
87329
88591
  *
87330
- * - `requestActive(next: string) => boolean`: Requests a new current item, and returns whether the change was applied.
88592
+ * - `requestActive(next: string, cause?: string) => boolean`: Requests a new current item, and returns whether the change was applied.
87331
88593
  *
87332
88594
  * Announces before it acts, so `preventDefault()` on the `helix-before-activate` is
87333
88595
  * a refusal and nothing moves. Unlike a native control, nothing has moved
87334
88596
  * by the time this runs, so refusing is simply not writing: there is
87335
88597
  * nothing to put back. Nobody refusing means the set updates itself,
87336
88598
  * whether or not a consumer declared `active`, a declared property being a
87337
- * seed and a correction.
88599
+ * seed and a correction. `cause` says why, where the family names its
88600
+ * causes, and reaches the event as `detail.cause`.
87338
88601
  *
87339
88602
  * ## CSS Parts
87340
88603
  *
@@ -88021,20 +89284,25 @@ export type CustomElementsSolidJs = {
88021
89284
  * `seconds`, because that is what the form
88022
89285
  * submits, what `min` and `max` compare against, and what sorts correctly as a
88023
89286
  * string. While idle, the field shows the time in the user's locale format.
88024
- * Once the caret is in the field, it shows the value itself, because a
88025
- * formatted time such as `2:30 PM` cannot be typed back and `Intl` has no
88026
- * parser for it.
89287
+ * Once the caret is in the field, it shows the value itself. You can type
89288
+ * `14:30`, or a time as you write one, such as `2:30 PM`, `2.30pm`, or
89289
+ * `14h30`, and the field reads it as you leave it, with AM and PM in the
89290
+ * locale's words.
88027
89291
  *
88028
89292
  * Typing sends `input` on each keystroke and `change` when you leave the
88029
89293
  * field. The trigger and ArrowDown open the list, and so does a press into the
88030
- * field; Tab into the field opens nothing. In the list, the arrow keys, typed digits and PageUp and PageDown
89294
+ * field; Tab into the field opens nothing. The text field is a `combobox`
89295
+ * with `aria-haspopup="dialog"`, `aria-expanded`, and `aria-controls`, since
89296
+ * Down opens the list from it. In the list, the arrow keys, typed digits and PageUp and PageDown
88031
89297
  * move through the times, and Enter, Space or a click chooses one and closes
88032
89298
  * the panel. With `variant="wheels"` each wheel moves the time as you turn it,
88033
89299
  * the panel stays open, and Enter or Escape closes it.
88034
89300
  *
88035
89301
  * With `segmented`, the field is a row of segments in place of the text: an
88036
89302
  * hour, a minute, and AM or PM where the clock has them, each set with digits
88037
- * or the arrow keys. Alt+Down opens the list from a segment.
89303
+ * or the arrow keys. Alt+Down opens the list from a segment. A `range` is two
89304
+ * rows with a dash between them, the start and the end, and `multiple` keeps
89305
+ * the text.
88038
89306
  *
88039
89307
  * Text that is not a time gives the form an empty value, as a native time
88040
89308
  * field does, and `value` keeps the text so it can be corrected.
@@ -88066,6 +89334,10 @@ export type CustomElementsSolidJs = {
88066
89334
  *
88067
89335
  * Empty leaves the attribute off, which is the browser's default and is what
88068
89336
  * lets autofill work at all.
89337
+ * - `clearable`: Whether the field shows a button that empties it, as Input's `clearable`
89338
+ * does. Shown only while the field holds something to clear and is neither
89339
+ * disabled nor read-only.
89340
+ * - `clear-label`/`clearLabel`: The accessible name of the clear button, which shows only an icon.
88069
89341
  * - `disable-times`/`disableTimes`: Times that cannot be chosen, as `HH:mm`, separated by commas or spaces.
88070
89342
  *
88071
89343
  * Handed to the list, which offers them as unavailable, and checked against
@@ -88114,6 +89386,8 @@ export type CustomElementsSolidJs = {
88114
89386
  * never something this element would refuse to read back.
88115
89387
  * - `trigger-label`/`triggerLabel`: The name of the button that opens the list, read by screen readers.
88116
89388
  * - `unavailable-message`/`unavailableMessage`: The message shown when `disable-times` bars a time.
89389
+ * - `unreadable-message`/`unreadableMessage`: The message for text that is no time, where `bad-input-message` is not
89390
+ * set. `{mode}` is `single`, `range`, or `multiple`, and `{shape}` is `HH:mm`, or `HH:mm:ss` with `seconds`.
88117
89391
  * - `variant`: Whether the panel shows one list of times or a column for each part of the
88118
89392
  * time.
88119
89393
  *
@@ -88136,6 +89410,10 @@ export type CustomElementsSolidJs = {
88136
89410
  * - `incomplete-message`/`incompleteMessage`: What a row of segments reports while some segments are set and others
88137
89411
  * are not, where `bad-input-message` is not set. `{kind}` is `date` or
88138
89412
  * `time`.
89413
+ * - `range-end-label`/`rangeEndLabel`: What a screen reader hears before the segments of a range's second date
89414
+ * or time, after each segment's own name.
89415
+ * - `range-start-label`/`rangeStartLabel`: What a screen reader hears before the segments of a range's first date
89416
+ * or time, after each segment's own name: "month, Start, Stay".
88139
89417
  * - `segmented`: Whether the field is a row of segments, one for each part of the date or
88140
89418
  * time, in place of a line of text.
88141
89419
  *
@@ -88287,6 +89565,7 @@ export type CustomElementsSolidJs = {
88287
89565
  * - `helix-before-change`: Fired before the time changes. Cancelable: canceling it stops the change and leaves the decision to you.
88288
89566
  * - `helix-before-close`: Fired before the list closes. Cancelable: canceling it keeps the list open and leaves the decision to you.
88289
89567
  * - `helix-before-open`: Fired before the list opens. Cancelable: canceling it keeps the list closed and leaves the decision to you.
89568
+ * - `helix-clear`: Fired after the clear button has emptied the field, after `input` and `change`.
88290
89569
  * - `input`: Fired after the value changes.
88291
89570
  * - `toggle`: Fired after the list opens or closes, with `newState` and `oldState`.
88292
89571
  *
@@ -88294,6 +89573,7 @@ export type CustomElementsSolidJs = {
88294
89573
  *
88295
89574
  * Areas where markup can be added to the component.
88296
89575
  *
89576
+ * - `clear-icon`: Replaces the cross on the clear button, under `clearable`.
88297
89577
  * - `end`: Content after the time, before the trigger, such as a clear button.
88298
89578
  * - `feedback`: The message that says what is wrong with the value.
88299
89579
  * - `hint`: Help under the field.
@@ -88367,6 +89647,7 @@ export type CustomElementsSolidJs = {
88367
89647
  *
88368
89648
  * Custom selectors for styling elements within the component.
88369
89649
  *
89650
+ * - `clear`: The button that empties the field, under `clearable`, while it holds a time.
88370
89651
  * - `control`: The text input.
88371
89652
  * - `feedback`: The message that says what is wrong with the value.
88372
89653
  * - `field`: The box that holds the text and the trigger.
@@ -88412,6 +89693,7 @@ export type CustomElementsSolidJs = {
88412
89693
  * - `picker-option-item-selected`: The row of a chosen time: the one time, or either end of a range.
88413
89694
  * - `picker-option-label`: The option's label.
88414
89695
  * - `picker-option-text`: The label and the caption, as one column.
89696
+ * - `range-separator`: The dash between a range's two rows of segments, in `segmented`, beside `literal`.
88415
89697
  * - `rest`: The count of times held beyond the ones shown. A `<button>` with `expandable`, and a `<span>` without it.
88416
89698
  * - `segment`: One part of the time, an hour, a minute, a second or AM and PM, in `segmented`.
88417
89699
  * - `segment-placeholder`: A segment with nothing in it yet. Applied with `segment`.
@@ -88432,6 +89714,7 @@ export type CustomElementsSolidJs = {
88432
89714
  *
88433
89715
  * These can be used to apply styling when a component is in a given state.
88434
89716
  *
89717
+ * - `blank`: The field holds no time.
88435
89718
  * - `invalid`: The control has an error to show, from the browser's validation or from your `feedback`.
88436
89719
  * - `open`: While the clock is open.
88437
89720
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
@@ -88488,7 +89771,10 @@ export type CustomElementsSolidJs = {
88488
89771
  * host's `aria-label` or its `aria-labelledby`. A development build warns
88489
89772
  * where all four are empty. The list is described by the hint, or by the
88490
89773
  * message in `feedback` in its place, and carries `aria-multiselectable` with
88491
- * a `mode` and `aria-invalid` while `feedback` says what is wrong. The wheels
89774
+ * a `mode`. It carries `aria-invalid` while `feedback` says what is wrong,
89775
+ * while it holds a time outside `min` and `max` or one the picker does not
89776
+ * offer, and, for a `required` picker with no time, once the reader has
89777
+ * chosen one or a form has refused the picker. The wheels
88492
89778
  * are a `group` with that name, holding one `listbox` per wheel, named "Hour",
88493
89779
  * "Minute", "Second" and "AM/PM" in the page's language, and each described
88494
89780
  * the same way.
@@ -88846,7 +90132,7 @@ export type CustomElementsSolidJs = {
88846
90132
  * - `list-loading`: The text shown while the options load.
88847
90133
  * - `list-search`: The region that holds the filter field.
88848
90134
  * - `list-search-field`: The filter field.
88849
- * - `option`: One time in the list. It carries `data-between` inside a range.
90135
+ * - `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.
88850
90136
  * - `option-between`: A time inside a chosen range, excluding its ends, beside `option`.
88851
90137
  * - `option-description`: The caption under the time's label, when there is one.
88852
90138
  * - `option-item`: The row.
@@ -88860,7 +90146,8 @@ export type CustomElementsSolidJs = {
88860
90146
  * These can be used to apply styling when a component is in a given state.
88861
90147
  *
88862
90148
  * - `blank`: While no time is chosen.
88863
- * - `invalid`: While `invalid` is set or `feedback` says what is wrong.
90149
+ * - `invalid`: While `invalid` is set, `feedback` says what is wrong, or the list carries `aria-invalid`.
90150
+ * - `range-pending`: While a `range` holds its first time and waits for the second.
88864
90151
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
88865
90152
  */
88866
90153
  "helix-headless-time-picker": Partial<
@@ -88953,7 +90240,14 @@ export type CustomElementsSolidJs = {
88953
90240
  * counting parent, and no script. `Steps` and `Breadcrumbs` work the same way.
88954
90241
  *
88955
90242
  * `tone` sets the kind of event and is the only thing that colors the mark. It
88956
- * uses the same values as `Announcement`.
90243
+ * uses the same values as `Announcement`. **A screen reader hears the tone as
90244
+ * a word**, from `tone-labels`: the mark is an image named "Error",
90245
+ * "Information", "Success" or "Warning", so the color is not the only place
90246
+ * the meaning is. `neutral` and `primary` say nothing unless you name them.
90247
+ *
90248
+ * **`pending` marks an event that has not happened yet**, such as one that is
90249
+ * scheduled. The mark is the open circle, and a screen reader hears
90250
+ * `pending-label`, "Scheduled", with the tone's word.
88957
90251
  *
88958
90252
  * ## Attributes & Properties
88959
90253
  *
@@ -88965,11 +90259,20 @@ export type CustomElementsSolidJs = {
88965
90259
  * Whatever `<time>` accepts, which is a date, a time, both, a duration or a
88966
90260
  * week. Unset, the label is written as it was given and nothing claims to
88967
90261
  * know what instant it names.
90262
+ * - `pending`: Marks an event that has not happened yet, such as one that is scheduled.
90263
+ * The mark is the open circle, and a screen reader hears `pending-label`.
90264
+ * - `pending-label`/`pendingLabel`: What a screen reader hears for an entry that is `pending`.
88968
90265
  * - `relative`: Writes the time as how long ago it was, or how long until it, from
88969
90266
  * `datetime`, where the `time` slot is empty: `long` ("3 hours ago"),
88970
90267
  * `short` ("3 hr. ago") or `narrow` ("3h ago"). Set with no value, it is
88971
90268
  * `long`. The words move on as they go stale.
88972
- * - `tone`: The kind of event. It sets the color of the mark and nothing else.
90269
+ * - `tone`: The kind of event. It sets the color of the mark, and a screen reader
90270
+ * hears it as the word `tone-labels` gives it.
90271
+ * - `tone-label`/`toneLabel`: What a screen reader is told this entry's tone is, such as "Failed".
90272
+ * Absent is the tone's word in `tone-labels`.
90273
+ * - `tone-labels`/`toneLabels`: What a screen reader is told each tone is, by the tone's name, written as
90274
+ * JSON in the attribute: `tone-labels='{"danger":"Failed"}'`. A tone with no
90275
+ * word is not read, which is `neutral` and `primary` in English.
88973
90276
  * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
88974
90277
  *
88975
90278
  * **Named `whenSettled` because `settled` is taken four times over**, by
@@ -88996,7 +90299,7 @@ export type CustomElementsSolidJs = {
88996
90299
  * Areas where markup can be added to the component.
88997
90300
  *
88998
90301
  * - `(default)`: What happened.
88999
- * - `marker`: The mark on the line. Defaults to a dot, which is the slot's fallback content.
90302
+ * - `marker`: The mark on the line. Defaults to a dot, which is the slot's fallback content. A mark you slot is read as the tone's word, where the entry has one.
89000
90303
  * - `time`: When it happened, written the way you want it shown.
89001
90304
  *
89002
90305
  * ## CSS Parts
@@ -89005,7 +90308,7 @@ export type CustomElementsSolidJs = {
89005
90308
  *
89006
90309
  * - `content`: What happened, and the time above it.
89007
90310
  * - `dot`: The dot drawn when no marker is slotted.
89008
- * - `marker`: The mark on the line.
90311
+ * - `marker`: The mark on the line. An image named by the tone's word, and by `pending-label`, where either applies.
89009
90312
  * - `rail`: The column that holds the mark and the line. Draw the two halves of the line with `::part(rail)::before` and `::part(rail)::after` in your stylesheet. This tier ships no CSS and renders no extra box for the line.
89010
90313
  * - `time`: When it happened.
89011
90314
  *
@@ -89456,7 +90759,7 @@ export type CustomElementsSolidJs = {
89456
90759
  * | Right, Down | Moves to the next item, from the last back to the first. In a single group, chooses it. |
89457
90760
  * | Left, Up | Moves to the item before, from the first round to the last. In a single group, chooses it. |
89458
90761
  * | Home, End | Moves to the first or the last item. In a single group, chooses it. |
89459
- * | Space, Enter | Chooses the focused item, or presses or releases it in a multiple group. |
90762
+ * | Space, Enter | Chooses the focused item, or presses or releases it in a multiple group. With `allow-empty-selection`, takes back the chosen item. |
89460
90763
  *
89461
90764
  * Left and Right swap on a right-to-left page, and a disabled item is passed
89462
90765
  * over. A single group is a `radiogroup` of items with `role="radio"` and
@@ -89468,6 +90771,11 @@ export type CustomElementsSolidJs = {
89468
90771
  *
89469
90772
  * Component attributes and properties that can be applied to the element or by using JavaScript.
89470
90773
  *
90774
+ * - `allow-empty-selection`/`allowEmptySelection`: Whether a press on the chosen item, or Space or Enter on it, takes it
90775
+ * back so nothing is chosen, as React Aria's `ToggleButtonGroup` and
90776
+ * Radix's `ToggleGroup` do in a single group. Absent, a single group always
90777
+ * keeps its choice once it has one, as a radio group does. A multiple group
90778
+ * releases a pressed item either way.
89471
90779
  * - `label-placement`/`labelPlacement`: Where the group's label sits. `start` puts it on the track's line.
89472
90780
  *
89473
90781
  * Absent is above, which is what a field looks like and what almost every
@@ -89813,13 +91121,13 @@ export type CustomElementsSolidJs = {
89813
91121
  *
89814
91122
  * Custom selectors for styling elements within the component.
89815
91123
  *
89816
- * - `item`: The radio button.
91124
+ * - `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.
89817
91125
  *
89818
91126
  * ## CSS States
89819
91127
  *
89820
91128
  * These can be used to apply styling when a component is in a given state.
89821
91129
  *
89822
- * - `pressed`: The item is pressed, in a group where several can be.
91130
+ * - `pressed`: The item is pressed, on its own or in a group where several can be.
89823
91131
  * - `selected`: The item is chosen.
89824
91132
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
89825
91133
  */
@@ -90964,14 +92272,15 @@ export type CustomElementsSolidJs = {
90964
92272
  *
90965
92273
  * Methods that can be called to access component functionality.
90966
92274
  *
90967
- * - `requestActive(next: string) => boolean`: Requests a new current item, and returns whether the change was applied.
92275
+ * - `requestActive(next: string, cause?: string) => boolean`: Requests a new current item, and returns whether the change was applied.
90968
92276
  *
90969
92277
  * Announces before it acts, so `preventDefault()` on the `helix-before-activate` is
90970
92278
  * a refusal and nothing moves. Unlike a native control, nothing has moved
90971
92279
  * by the time this runs, so refusing is simply not writing: there is
90972
92280
  * nothing to put back. Nobody refusing means the set updates itself,
90973
92281
  * whether or not a consumer declared `active`, a declared property being a
90974
- * seed and a correction.
92282
+ * seed and a correction. `cause` says why, where the family names its
92283
+ * causes, and reaches the event as `detail.cause`.
90975
92284
  *
90976
92285
  * ## CSS Parts
90977
92286
  *
@@ -91171,6 +92480,12 @@ export type CustomElementsSolidJs = {
91171
92480
  * Written by the playlist rather than by the entry, the way an option's
91172
92481
  * selection is: an entry that made itself current would be a second answer to
91173
92482
  * which one is playing. (property only)
92483
+ * - `focusable`: Whether the entry holds the playlist's tab stop. Unset, every entry is in
92484
+ * the tab order, which is what a server renders.
92485
+ *
92486
+ * **Written by the playlist, with no attribute, and it reaches the button.**
92487
+ * The playlist gives the stop to the entry a reader last focused, or to the
92488
+ * current one, and the arrow keys reach the rest. (property only)
91174
92489
  * - `text`: The entry's name: its own text, without the content in its named slots.
91175
92490
  *
91176
92491
  * `textContent` takes the whole subtree: a row with a duration in `meta`
@@ -91212,6 +92527,7 @@ export type CustomElementsSolidJs = {
91212
92527
  * Areas where markup can be added to the component.
91213
92528
  *
91214
92529
  * - `(default)`: The entry's name.
92530
+ * - `indicator`: A mark shown on the entry that is playing, such as an equalizer icon. Rendered only while the entry is current.
91215
92531
  * - `media`: A thumbnail. Defaults to an image of `poster`.
91216
92532
  * - `meta`: Content after the name, such as a duration or a date.
91217
92533
  *
@@ -91227,6 +92543,7 @@ export type CustomElementsSolidJs = {
91227
92543
  * Custom selectors for styling elements within the component.
91228
92544
  *
91229
92545
  * - `container`: The list item that holds the button.
92546
+ * - `indicator`: The `indicator` slot, at the end of the row, rendered only while the entry is playing. It draws no box until you give it one.
91230
92547
  * - `item`: The row, which is a button.
91231
92548
  * - `item-current`: Added to `item` for the entry that is playing.
91232
92549
  * - `label`: The name and the content after it.
@@ -91356,19 +92673,31 @@ export type CustomElementsSolidJs = {
91356
92673
  * - the player reaches the end.
91357
92674
  *
91358
92675
  * On `ended` the playlist advances and the next clip starts playing, because
91359
- * the user already pressed play once. `repeat` decides what happens at the
92676
+ * the user already pressed play once. `no-advance` turns that off, and the
92677
+ * playlist stays on the entry that ended. `repeat` decides what happens at the
91360
92678
  * end: `one` plays the same entry again, and `all` goes from the last entry
91361
92679
  * back to the first. Without it, the playlist stops on the last entry and
91362
92680
  * sends `helix-end`. `shuffle` plays the entries in a random order, starting
91363
92681
  * from the one that is current, and `previous` retraces that order.
91364
92682
  *
92683
+ * **`helix-before-activate` says why the playlist is moving**, in
92684
+ * `detail.cause`: `press` for an entry or a menu choice, `next` and
92685
+ * `previous` for the player's controls and the methods, `ended` at the end of
92686
+ * a clip, and `removed` when the current entry leaves the playlist. Cancel an
92687
+ * `ended` move to show your own "Up next" countdown, then call `next()`.
92688
+ *
92689
+ * **Removing the current entry moves the playlist on**, to the entry after it,
92690
+ * or to the one before it when it was the last. A clip that was playing keeps
92691
+ * playing in the entry that takes its place.
92692
+ *
91365
92693
  * **The player is named by the current entry**, and the device's own media
91366
92694
  * controls show the entry as the title. A player you gave a `label` keeps
91367
92695
  * your name, and only the title follows the entry.
91368
92696
  *
91369
- * **Keyboard.** Each entry is a button in the tab order, and Enter or Space
91370
- * plays it. The arrow keys move focus to the entry before or after, and Home
91371
- * and End to the first and the last, passing over disabled entries. The
92697
+ * **Keyboard.** The entries take one stop in the tab order: the entry you
92698
+ * last focused, or the current entry before you have focused one. Enter or
92699
+ * Space plays it. The arrow keys move focus to the entry before or after, and
92700
+ * Home and End to the first and the last, passing over disabled entries. The
91372
92701
  * current entry carries `aria-current`. While focus is on the player, the
91373
92702
  * player's own keys work, and `Video` lists them, and Shift with N or P plays
91374
92703
  * the next or the previous entry. The player's previous and next controls
@@ -91383,7 +92712,11 @@ export type CustomElementsSolidJs = {
91383
92712
  *
91384
92713
  * Component attributes and properties that can be applied to the element or by using JavaScript.
91385
92714
  *
92715
+ * - `empty-label`/`emptyLabel`: What the playlist says while it has no entries. The `empty` slot replaces it.
91386
92716
  * - `label`: The list's name, read by screen readers.
92717
+ * - `no-advance`/`noAdvance`: Stays on an entry when its clip ends, where the playlist would otherwise
92718
+ * play the next one. The player's controls, a press, and `next()` still
92719
+ * move. `repeat="one"` still plays the entry again.
91387
92720
  * - `playing-label`/`playingLabel`: What the live region says when the playlist moves to another entry.
91388
92721
  * `{title}` is the entry's name.
91389
92722
  *
@@ -91443,7 +92776,7 @@ export type CustomElementsSolidJs = {
91443
92776
  * Events that will be emitted by the component.
91444
92777
  *
91445
92778
  * - `helix-activate`: The current entry changed. The playlist already holds the new entry when this is sent, and `detail.previous` is the entry it left. `currentEntry` is the entry itself, with its `src`, `poster` and name.
91446
- * - `helix-before-activate`: The current entry is about to change. Cancelable: cancel it to keep the current entry.
92779
+ * - `helix-before-activate`: The current entry is about to change, and `detail.cause` says why: `press`, `next`, `previous`, `ended`, or `removed`. Cancelable: cancel it to keep the current entry.
91447
92780
  * - `helix-end`: The last entry finished playing, and the playlist stopped there. Not sent while `repeat` is set.
91448
92781
  *
91449
92782
  * ## Slots
@@ -91451,6 +92784,7 @@ export type CustomElementsSolidJs = {
91451
92784
  * Areas where markup can be added to the component.
91452
92785
  *
91453
92786
  * - `(default)`: The entries.
92787
+ * - `empty`: Shown while the playlist has no entries. Defaults to `empty-label`.
91454
92788
  * - `player`: The player that plays the entries.
91455
92789
  *
91456
92790
  * ## Methods
@@ -91462,19 +92796,21 @@ export type CustomElementsSolidJs = {
91462
92796
  * entry otherwise.
91463
92797
  * - `previous() => void`: Moves to the previous entry and plays it, as the player's previous control
91464
92798
  * does. Under `shuffle` it goes back through the order that played.
91465
- * - `requestActive(next: string) => boolean`: Requests a new current item, and returns whether the change was applied.
92799
+ * - `requestActive(next: string, cause?: string) => boolean`: Requests a new current item, and returns whether the change was applied.
91466
92800
  *
91467
92801
  * Announces before it acts, so `preventDefault()` on the `helix-before-activate` is
91468
92802
  * a refusal and nothing moves. Unlike a native control, nothing has moved
91469
92803
  * by the time this runs, so refusing is simply not writing: there is
91470
92804
  * nothing to put back. Nobody refusing means the set updates itself,
91471
92805
  * whether or not a consumer declared `active`, a declared property being a
91472
- * seed and a correction.
92806
+ * seed and a correction. `cause` says why, where the family names its
92807
+ * causes, and reaches the event as `detail.cause`.
91473
92808
  *
91474
92809
  * ## CSS Parts
91475
92810
  *
91476
92811
  * Custom selectors for styling elements within the component.
91477
92812
  *
92813
+ * - `empty`: The box that holds the `empty` slot, drawn while there are no entries.
91478
92814
  * - `items`: The list of entries.
91479
92815
  * - `live`: A live region that says which entry plays after the playlist moves.
91480
92816
  * - `player`: The region that holds the player.
@@ -91957,8 +93293,10 @@ export type CustomElementsSolidJs = {
91957
93293
  * **A grid.** `columns` lays the items out that many to a line, as a grid of
91958
93294
  * equal columns, and windows the set a line at a time, as React Aria's grid
91959
93295
  * layout does. Each item draws one element, a cell of the grid, and
91960
- * `estimate` is the height of a line. Space the items with padding inside
91961
- * each one, which the list measures with the line.
93296
+ * `estimate` is the height of a line. `min-column-width` lays out as many
93297
+ * columns as fit the box instead, as React Aria's grid layout does with its
93298
+ * smallest item size, and follows the box as it resizes. `gap` spaces the rows, and the columns
93299
+ * of a grid, by a number of pixels the list counts in each row's place.
91962
93300
  *
91963
93301
  * **Keyboard.** The list is one tab stop.
91964
93302
  *
@@ -91969,6 +93307,7 @@ export type CustomElementsSolidJs = {
91969
93307
  * | Home, End | Moves to the first or the last item. |
91970
93308
  * | Page Down, Page Up | Moves by the number of items, or of lines in a grid, on screen. |
91971
93309
  * | A letter or a word | Moves to the next item whose text starts with what you typed. |
93310
+ * | Escape | Lets go of every chosen item, in a list with `selection-mode`. |
91972
93311
  * | Tab | Moves into the focused row's own links and buttons, then out of the list. |
91973
93312
  *
91974
93313
  * An item that is not drawn is scrolled into view and focused, so a keyboard
@@ -91985,12 +93324,23 @@ export type CustomElementsSolidJs = {
91985
93324
  * from: `single` selects one item and `multiple` any number. Space or a press
91986
93325
  * selects an item, Shift with Space, an arrow, Home, End or a press takes in
91987
93326
  * the items from the last one chosen, and Control or Command with A selects
91988
- * them all, in `multiple`. `value` holds the chosen items' keys, separated by
91989
- * commas, in the order of the set: `key-field` names each item's key, and a
91990
- * string or a number item is its own key. A change asks with
91991
- * `helix-before-change` and tells with `change`. Each row is an `option`
91992
- * marked `aria-selected`, so a row's own links and buttons are not reached
91993
- * there: keep those to a list without `selection-mode`.
93327
+ * them all, in `multiple`. Escape lets go of every chosen item, and keeps the
93328
+ * key from the dialog or menu around the list while there was something to
93329
+ * let go of. `value` holds the chosen items' keys, separated by commas, in
93330
+ * the order of the set: `key-field` names each item's key, and a string or a
93331
+ * number item is its own key. A change asks with `helix-before-change` and
93332
+ * tells with `change`. Each row is an `option` marked `aria-selected`, so a
93333
+ * row's own links and buttons are not reached there: keep those to a list
93334
+ * without `selection-mode`.
93335
+ *
93336
+ * `selection-behavior="replace"` selects the item pressed alone, as a file
93337
+ * list does, and the arrow keys carry the selection with them. Control or
93338
+ * Command with a press or with Space adds or takes out one item, and with an
93339
+ * arrow moves without selecting.
93340
+ *
93341
+ * **Disabled items.** `disabled-keys` names items by their keys, separated by
93342
+ * commas. Their rows carry `aria-disabled`, the keys and typing pass over
93343
+ * them, and a press, Space, or Control with A does not select them.
91994
93344
  *
91995
93345
  * **Loading more.** `helix-range-change` fires as the items on screen change,
91996
93346
  * and `range` holds them. `helix-load-more` fires once a reader is within one
@@ -92032,6 +93382,8 @@ export type CustomElementsSolidJs = {
92032
93382
  * - `columns`: How many items a line holds. One, the default, is a list; more lays the
92033
93383
  * items out as a grid of that many equal columns, windowed a line at a
92034
93384
  * time, with Left and Right moving along a line.
93385
+ * - `disabled-keys`/`disabledKeys`: The keys of the items a reader cannot choose or move to, separated by
93386
+ * commas, as `value` writes keys. Their rows carry `aria-disabled`.
92035
93387
  * - `empty-label`/`emptyLabel`: The text of the row shown when there are no items and none are loading,
92036
93388
  * where the `empty` slot is empty. Empty, the default, shows no row.
92037
93389
  * - `estimate`: The height of one row, in pixels, used to find the row at a scroll offset.
@@ -92040,6 +93392,10 @@ export type CustomElementsSolidJs = {
92040
93392
  * right whenever the rows really are one height and is the cheaper of the two.
92041
93393
  * - `for`: The id of the script element that holds the items as JSON. `items` wins
92042
93394
  * where both are set.
93395
+ * - `gap`: The space between two rows, and between two columns in a grid, in
93396
+ * pixels. The list counts it in each row's place, so a gap does not walk
93397
+ * the rows away from the scroll position the way a margin on each row
93398
+ * would.
92043
93399
  * - `key-field`/`keyField`: The field of each item that is its key in `value`, as a key or a path of
92044
93400
  * keys. Empty reads a string or a number item as its own key, and any
92045
93401
  * other item by its place in the set.
@@ -92064,6 +93420,12 @@ export type CustomElementsSolidJs = {
92064
93420
  * disagree with itself; measuring is what a set of genuinely different
92065
93421
  * heights needs and costs a read of each row as it renders. A list of
92066
93422
  * one-line rows should leave this alone.
93423
+ * - `min-column-width`/`minColumnWidth`: The narrowest a column of a grid may be, in pixels. Set, the list lays
93424
+ * out as many columns as fit the box at that width, at least one, and
93425
+ * follows the box as it resizes, which `columns` then does not decide.
93426
+ * - `selection-behavior`/`selectionBehavior`: What a press does to the items already chosen: `toggle` adds or takes out
93427
+ * the item, and `replace` selects it alone and lets the arrow keys carry the
93428
+ * selection, with Control or Command adding or taking out one item.
92067
93429
  * - `selection-mode`/`selectionMode`: Makes the list a list box a reader chooses from: `single` selects one
92068
93430
  * item, and `multiple` any number. Unset is a list a reader reads.
92069
93431
  * - `text-field`/`textField`: The field of each item that typing matches, as a key or a path of keys
@@ -92187,6 +93549,14 @@ export type CustomCssProperties = {
92187
93549
  "--carousel-run-end"?: (string) | undefined;
92188
93550
  /** The narrowest a slide may be. `per-view="auto"` uses it to fit slides into the track. It must be a length, because the stylesheet divides by it. When unset, it is the whole track, which shows one slide across. */
92189
93551
  "--carousel-slide-min"?: (string) | undefined;
93552
+ /** Written by the block on each `number` in a `wrap` block with `line-numbers`: how tall the line it numbers is laid out. Do not set it. */
93553
+ "--code-block-line-size"?: (string) | undefined;
93554
+ /** Written by the block on each `mark`: how wide the code is, scrolled part included. Do not set it. */
93555
+ "--code-block-mark-inline-size"?: (string) | undefined;
93556
+ /** Written by the block on each `mark`: how tall its run of lines is. Do not set it. */
93557
+ "--code-block-mark-size"?: (string) | undefined;
93558
+ /** Written by the block on each `mark`: how far down the code its run of lines starts. Do not set it. */
93559
+ "--code-block-mark-start"?: (string) | undefined;
92190
93560
  /** The chosen color, painted over the checkerboard that shows transparency. */
92191
93561
  "--color-input-swatch"?: (string) | undefined;
92192
93562
  /** The chosen brightness, 0 to 100, as a percentage. */
@@ -92323,6 +93693,8 @@ export type CustomCssProperties = {
92323
93693
  "--table-cell-align"?: (string) | undefined;
92324
93694
  /** The column track list the table works out from its columns. The component writes it inline on the element that reads it, so setting it has no effect. Set `columns` to change the tracks. */
92325
93695
  "--table-template"?: (string) | undefined;
93696
+ /** Written by the row on its `expand` cell: how deep the row sits, from 1. Do not set it. */
93697
+ "--table-row-level"?: (string) | undefined;
92326
93698
  /** How long this message stays, in milliseconds, for a progress hint. */
92327
93699
  "--toast-duration"?: (string) | undefined;
92328
93700
  /** How far a swipe has moved the message across, in pixels, toward the right. */