@fusion.dev/helix-headless 0.163.0 → 0.165.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 (47) hide show
  1. package/custom-elements.json +1068 -46
  2. package/dist/callout/root/callout-root.d.ts +43 -4
  3. package/dist/callout/root/callout-root.js +58 -2
  4. package/dist/code-block/patch.d.ts +42 -0
  5. package/dist/code-block/patch.js +118 -0
  6. package/dist/code-block/root/code-block-root.d.ts +37 -1
  7. package/dist/code-block/root/code-block-root.js +57 -9
  8. package/dist/color-picker/root/color-picker-root.d.ts +7 -3
  9. package/dist/color-picker/root/color-picker-root.js +7 -4
  10. package/dist/combobox/root/combobox-root.d.ts +1 -0
  11. package/dist/combobox/root/combobox-root.js +10 -1
  12. package/dist/data-table/root/data-table-root.d.ts +1 -0
  13. package/dist/data-table/root/data-table-root.js +1 -0
  14. package/dist/date-input/root/date-input-root.d.ts +3 -3
  15. package/dist/date-input/root/date-input-root.js +8 -5
  16. package/dist/element-events.generated.js +7 -1
  17. package/dist/format-date/root/format-date-root.d.ts +3 -1
  18. package/dist/format-date/root/format-date-root.js +4 -1
  19. package/dist/lightbox/item/lightbox-item.js +3 -1
  20. package/dist/lightbox/root/lightbox-root.d.ts +28 -0
  21. package/dist/lightbox/root/lightbox-root.js +21 -2
  22. package/dist/number-input/root/number-input-root.d.ts +32 -9
  23. package/dist/number-input/root/number-input-root.js +53 -9
  24. package/dist/object-inspector/root/object-inspector-root.d.ts +23 -0
  25. package/dist/object-inspector/root/object-inspector-root.js +19 -1
  26. package/dist/option/root/index.d.ts +1 -0
  27. package/dist/option/root/index.js +1 -0
  28. package/dist/table/grid-controller.d.ts +7 -0
  29. package/dist/table/grid-controller.js +15 -1
  30. package/dist/table/root/table-root.d.ts +10 -0
  31. package/dist/table/root/table-root.js +18 -1
  32. package/dist/tag/root/index.d.ts +1 -0
  33. package/dist/tag/root/index.js +1 -0
  34. package/dist/time-input/root/time-input-root.d.ts +4 -3
  35. package/dist/time-input/root/time-input-root.js +5 -4
  36. package/dist/time-picker/root/time-picker-root.d.ts +1 -1
  37. package/dist/time-picker/root/time-picker-root.js +5 -2
  38. package/dist/video/root/video-root.js +2 -1
  39. package/dist/video-playlist/item/video-playlist-item.d.ts +8 -0
  40. package/dist/video-playlist/item/video-playlist-item.js +7 -0
  41. package/dist/video-playlist/root/video-playlist-root.d.ts +60 -0
  42. package/dist/video-playlist/root/video-playlist-root.js +55 -1
  43. package/lint.json +1 -1
  44. package/package.json +5 -5
  45. package/types/jsx.d.ts +388 -40
  46. package/types/vue.d.ts +95 -13
  47. package/types/words.d.ts +58 -0
package/types/jsx.d.ts CHANGED
@@ -2926,6 +2926,11 @@ none.
2926
2926
  takes away, where every button was "Dismiss". A label without `{label}` is
2927
2927
  read as written. */
2928
2928
  dismissLabel?: (HelixHeadlessCallout["dismissLabel"]) | undefined;
2929
+ /** Whether the callout is showing. A dismissal nobody canceled turns it
2930
+ false and the callout hides itself, and setting it true shows the callout
2931
+ again. Not reflected: open is the resting state, so an `open` attribute
2932
+ would appear on markup a server sent without it. */
2933
+ open?: (HelixHeadlessCallout["open"]) | undefined;
2929
2934
  /** What kind of attention the passage needs.
2930
2935
 
2931
2936
  `tone` is the axis for what a thing means, and this is a subset of it: a
@@ -2960,7 +2965,7 @@ out keeps its English, and `tone-label` wins over both.
2960
2965
  /** Whether the element shows a control that dismisses it. */
2961
2966
  dismissible?: (HelixHeadlessCallout["dismissible"]) | undefined;
2962
2967
 
2963
- /** The dismiss button was pressed. The callout does not remove itself, so remove it in response. Cancelable. */
2968
+ /** The dismiss button was pressed. Unless a listener cancels it, the callout hides itself, and a listener may remove it instead. Cancelable: cancel it to keep the callout showing. */
2964
2969
  "onhelix-dismiss"?: ((e: HelixHeadlessCalloutHelixDismissElementEvent) => void) | undefined;
2965
2970
  };
2966
2971
 
@@ -2981,6 +2986,11 @@ none.
2981
2986
  takes away, where every button was "Dismiss". A label without `{label}` is
2982
2987
  read as written. */
2983
2988
  "prop:dismissLabel"?: (HelixHeadlessCallout["dismissLabel"]) | undefined;
2989
+ /** Whether the callout is showing. A dismissal nobody canceled turns it
2990
+ false and the callout hides itself, and setting it true shows the callout
2991
+ again. Not reflected: open is the resting state, so an `open` attribute
2992
+ would appear on markup a server sent without it. */
2993
+ "prop:open"?: (HelixHeadlessCallout["open"]) | undefined;
2984
2994
  /** What kind of attention the passage needs.
2985
2995
 
2986
2996
  `tone` is the axis for what a thing means, and this is a subset of it: a
@@ -3014,7 +3024,7 @@ out keeps its English, and `tone-label` wins over both.
3014
3024
  "prop:toneLabels"?: (HelixHeadlessCallout["toneLabels"]) | undefined;
3015
3025
  /** Whether the element shows a control that dismisses it. */
3016
3026
  "prop:dismissible"?: (HelixHeadlessCallout["dismissible"]) | undefined;
3017
- /** The dismiss button was pressed. The callout does not remove itself, so remove it in response. Cancelable. */
3027
+ /** The dismiss button was pressed. Unless a listener cancels it, the callout hides itself, and a listener may remove it instead. Cancelable: cancel it to keep the callout showing. */
3018
3028
  "on:helix-dismiss"?: ((
3019
3029
  e: HelixHeadlessCalloutHelixDismissElementEvent,
3020
3030
  ) => void) | undefined;
@@ -6093,6 +6103,14 @@ app.ts", as `code-name-label` puts it. */
6093
6103
  "collapse-label"?: (HelixHeadlessCodeBlock["collapseLabel"]) | undefined;
6094
6104
  /** The expand button's words while the block shows every line. */
6095
6105
  collapseLabel?: (HelixHeadlessCodeBlock["collapseLabel"]) | undefined;
6106
+ /** In a diff, how many unchanged lines to keep beside each change. Each
6107
+ longer run of unchanged lines is folded behind a button that shows it.
6108
+ Unset shows every line the diff holds. */
6109
+ "context-lines"?: (HelixHeadlessCodeBlock["contextLines"] | `${number}`) | undefined;
6110
+ /** In a diff, how many unchanged lines to keep beside each change. Each
6111
+ longer run of unchanged lines is folded behind a button that shows it.
6112
+ Unset shows every line the diff holds. */
6113
+ contextLines?: (HelixHeadlessCodeBlock["contextLines"]) | undefined;
6096
6114
  /** The copy button's name and tooltip text after a copy. */
6097
6115
  "copied-label"?: (HelixHeadlessCodeBlock["copiedLabel"]) | undefined;
6098
6116
  /** The copy button's name and tooltip text after a copy. */
@@ -6131,6 +6149,14 @@ block lays out. Not for a diff, whose files each scroll on their own. */
6131
6149
  "expand-label"?: (HelixHeadlessCodeBlock["expandLabel"]) | undefined;
6132
6150
  /** The expand button's words while the cap hides lines. */
6133
6151
  expandLabel?: (HelixHeadlessCodeBlock["expandLabel"]) | undefined;
6152
+ /** The words of a button that hides a run of unchanged lines it showed, in a
6153
+ diff with `context-lines`. `{count}` is how many, and each language
6154
+ writes the forms it has. */
6155
+ "hide-unchanged-label"?: (HelixHeadlessCodeBlock["hideUnchangedLabel"]) | undefined;
6156
+ /** The words of a button that hides a run of unchanged lines it showed, in a
6157
+ diff with `context-lines`. `{count}` is how many, and each language
6158
+ writes the forms it has. */
6159
+ hideUnchangedLabel?: (HelixHeadlessCodeBlock["hideUnchangedLabel"]) | undefined;
6134
6160
  /** The block's name, usually a file name, drawn in the header.
6135
6161
 
6136
6162
  Absent, the block is named by `language` where there is one. In a diff,
@@ -6206,6 +6232,12 @@ A false boolean reflects as the attribute's absence, so this costs no
6206
6232
  reflected property taking no default is satisfied by the default being
6207
6233
  `false`. */
6208
6234
  noCopy?: (HelixHeadlessCodeBlock["noCopy"]) | undefined;
6235
+ /** The words of a button that shows a folded run of unchanged lines, in a
6236
+ diff with `context-lines`. `{count}` is how many. */
6237
+ "show-unchanged-label"?: (HelixHeadlessCodeBlock["showUnchangedLabel"]) | undefined;
6238
+ /** The words of a button that shows a folded run of unchanged lines, in a
6239
+ diff with `context-lines`. `{count}` is how many. */
6240
+ showUnchangedLabel?: (HelixHeadlessCodeBlock["showUnchangedLabel"]) | undefined;
6209
6241
  /** How a diff's two versions are arranged. It has no effect without `diff`.
6210
6242
 
6211
6243
  Absent is unified, each removal above its replacement, which fits any
@@ -6280,6 +6312,14 @@ app.ts", as `code-name-label` puts it. */
6280
6312
  "attr:collapse-label"?: (HelixHeadlessCodeBlock["collapseLabel"]) | undefined;
6281
6313
  /** The expand button's words while the block shows every line. */
6282
6314
  "prop:collapseLabel"?: (HelixHeadlessCodeBlock["collapseLabel"]) | undefined;
6315
+ /** In a diff, how many unchanged lines to keep beside each change. Each
6316
+ longer run of unchanged lines is folded behind a button that shows it.
6317
+ Unset shows every line the diff holds. */
6318
+ "attr:context-lines"?: (HelixHeadlessCodeBlock["contextLines"] | `${number}`) | undefined;
6319
+ /** In a diff, how many unchanged lines to keep beside each change. Each
6320
+ longer run of unchanged lines is folded behind a button that shows it.
6321
+ Unset shows every line the diff holds. */
6322
+ "prop:contextLines"?: (HelixHeadlessCodeBlock["contextLines"]) | undefined;
6283
6323
  /** The copy button's name and tooltip text after a copy. */
6284
6324
  "attr:copied-label"?: (HelixHeadlessCodeBlock["copiedLabel"]) | undefined;
6285
6325
  /** The copy button's name and tooltip text after a copy. */
@@ -6318,6 +6358,14 @@ block lays out. Not for a diff, whose files each scroll on their own. */
6318
6358
  "attr:expand-label"?: (HelixHeadlessCodeBlock["expandLabel"]) | undefined;
6319
6359
  /** The expand button's words while the cap hides lines. */
6320
6360
  "prop:expandLabel"?: (HelixHeadlessCodeBlock["expandLabel"]) | undefined;
6361
+ /** The words of a button that hides a run of unchanged lines it showed, in a
6362
+ diff with `context-lines`. `{count}` is how many, and each language
6363
+ writes the forms it has. */
6364
+ "attr:hide-unchanged-label"?: (HelixHeadlessCodeBlock["hideUnchangedLabel"]) | undefined;
6365
+ /** The words of a button that hides a run of unchanged lines it showed, in a
6366
+ diff with `context-lines`. `{count}` is how many, and each language
6367
+ writes the forms it has. */
6368
+ "prop:hideUnchangedLabel"?: (HelixHeadlessCodeBlock["hideUnchangedLabel"]) | undefined;
6321
6369
  /** The block's name, usually a file name, drawn in the header.
6322
6370
 
6323
6371
  Absent, the block is named by `language` where there is one. In a diff,
@@ -6393,6 +6441,12 @@ A false boolean reflects as the attribute's absence, so this costs no
6393
6441
  reflected property taking no default is satisfied by the default being
6394
6442
  `false`. */
6395
6443
  "prop:noCopy"?: (HelixHeadlessCodeBlock["noCopy"]) | undefined;
6444
+ /** The words of a button that shows a folded run of unchanged lines, in a
6445
+ diff with `context-lines`. `{count}` is how many. */
6446
+ "attr:show-unchanged-label"?: (HelixHeadlessCodeBlock["showUnchangedLabel"]) | undefined;
6447
+ /** The words of a button that shows a folded run of unchanged lines, in a
6448
+ diff with `context-lines`. `{count}` is how many. */
6449
+ "prop:showUnchangedLabel"?: (HelixHeadlessCodeBlock["showUnchangedLabel"]) | undefined;
6396
6450
  /** How a diff's two versions are arranged. It has no effect without `diff`.
6397
6451
 
6398
6452
  Absent is unified, each removal above its replacement, which fits any
@@ -14204,7 +14258,9 @@ place of the date: `long` ("3 hours ago"), `short` ("3 hr. ago") or
14204
14258
  `narrow` ("3h ago").
14205
14259
 
14206
14260
  The reading refreshes as it goes stale, as `elapsed` does, and the whole
14207
- date is its title. `elapsed` wins where both are set. */
14261
+ date is its title. `elapsed` wins where both are set. Written with no
14262
+ value, as `elapsed` is, or with a style `Intl` does not know, it reads
14263
+ `long`. */
14208
14264
  relative?: (HelixHeadlessFormatDate["relative"]) | undefined;
14209
14265
  /** How the second is written, where a time of day is shown. */
14210
14266
  second?: (HelixHeadlessFormatDate["second"]) | undefined;
@@ -14346,7 +14402,9 @@ place of the date: `long` ("3 hours ago"), `short` ("3 hr. ago") or
14346
14402
  `narrow` ("3h ago").
14347
14403
 
14348
14404
  The reading refreshes as it goes stale, as `elapsed` does, and the whole
14349
- date is its title. `elapsed` wins where both are set. */
14405
+ date is its title. `elapsed` wins where both are set. Written with no
14406
+ value, as `elapsed` is, or with a style `Intl` does not know, it reads
14407
+ `long`. */
14350
14408
  "prop:relative"?: (HelixHeadlessFormatDate["relative"]) | undefined;
14351
14409
  /** How the second is written, where a time of day is shown. */
14352
14410
  "prop:second"?: (HelixHeadlessFormatDate["second"]) | undefined;
@@ -21988,10 +22046,11 @@ one they already know. */
21988
22046
  invalid, as it is in a native number field.
21989
22047
 
21990
22048
  Unset, a step moves by one, or by one percent under a percent format, and
21991
- a typed number is rounded to the smallest amount `format-options` shows
21992
- rather than to whole steps, as React Aria's NumberField does: a field
21993
- showing dollars keeps the cents typed into it. Without `format-options`
21994
- the grid is whole numbers, as in a native number field. */
22049
+ a typed number is rounded to the smallest amount the format shows, as
22050
+ React Aria's NumberField does: a field showing dollars keeps the cents
22051
+ typed into it, and one with no `format-options` keeps three decimal
22052
+ places. `any` puts the number on no grid, as it does in a native number
22053
+ field: a step moves by one, and any number in range is valid. */
21995
22054
  step?: (HelixHeadlessNumberInput["step"]) | undefined;
21996
22055
  /** The message the browser shows when the number is off the step grid, with
21997
22056
  `{below}` and `{above}` filled in with the nearest valid values, written in
@@ -22266,10 +22325,11 @@ one they already know. */
22266
22325
  invalid, as it is in a native number field.
22267
22326
 
22268
22327
  Unset, a step moves by one, or by one percent under a percent format, and
22269
- a typed number is rounded to the smallest amount `format-options` shows
22270
- rather than to whole steps, as React Aria's NumberField does: a field
22271
- showing dollars keeps the cents typed into it. Without `format-options`
22272
- the grid is whole numbers, as in a native number field. */
22328
+ a typed number is rounded to the smallest amount the format shows, as
22329
+ React Aria's NumberField does: a field showing dollars keeps the cents
22330
+ typed into it, and one with no `format-options` keeps three decimal
22331
+ places. `any` puts the number on no grid, as it does in a native number
22332
+ field: a step moves by one, and any number in range is valid. */
22273
22333
  "prop:step"?: (HelixHeadlessNumberInput["step"]) | undefined;
22274
22334
  /** The message the browser shows when the number is off the step grid, with
22275
22335
  `{below}` and `{above}` filled in with the nearest valid values, written in
@@ -22493,6 +22553,12 @@ reader sees the shape of the value before its contents. `0` starts with the
22493
22553
  root closed; a large number opens everything, which on a big value is the
22494
22554
  wall of text this exists to avoid. */
22495
22555
  defaultDepth?: (HelixHeadlessObjectInspector["defaultDepth"]) | undefined;
22556
+ /** What the tree says while there is no value to show, such as before a
22557
+ fetch answers. The `empty` slot replaces it. */
22558
+ "empty-label"?: (HelixHeadlessObjectInspector["emptyLabel"]) | undefined;
22559
+ /** What the tree says while there is no value to show, such as before a
22560
+ fetch answers. The `empty` slot replaces it. */
22561
+ emptyLabel?: (HelixHeadlessObjectInspector["emptyLabel"]) | undefined;
22496
22562
  /** Text the tree is narrowed to: the entries whose key or value holds it,
22497
22563
  ignoring case, and the branches that lead to them. Empty shows everything. */
22498
22564
  filter?: (HelixHeadlessObjectInspector["filter"]) | undefined;
@@ -22562,6 +22628,12 @@ who set the property. This button is positioned out of the flow and takes no
22562
22628
  room, so nothing selects on it, and reflection exists so that a selector can
22563
22629
  reach a value. */
22564
22630
  noCopy?: (HelixHeadlessObjectInspector["noCopy"]) | undefined;
22631
+ /** What the tree says while a filter matched no entry. The `empty` slot
22632
+ replaces it. */
22633
+ "no-matches-label"?: (HelixHeadlessObjectInspector["noMatchesLabel"]) | undefined;
22634
+ /** What the tree says while a filter matched no entry. The `empty` slot
22635
+ replaces it. */
22636
+ noMatchesLabel?: (HelixHeadlessObjectInspector["noMatchesLabel"]) | undefined;
22565
22637
  /** What a screen reader hears when a filter matches one entry, where
22566
22638
  `results-label` should not say it. `{count}` is the count. */
22567
22639
  "result-label"?: (HelixHeadlessObjectInspector["resultLabel"]) | undefined;
@@ -22679,6 +22751,12 @@ reader sees the shape of the value before its contents. `0` starts with the
22679
22751
  root closed; a large number opens everything, which on a big value is the
22680
22752
  wall of text this exists to avoid. */
22681
22753
  "prop:defaultDepth"?: (HelixHeadlessObjectInspector["defaultDepth"]) | undefined;
22754
+ /** What the tree says while there is no value to show, such as before a
22755
+ fetch answers. The `empty` slot replaces it. */
22756
+ "attr:empty-label"?: (HelixHeadlessObjectInspector["emptyLabel"]) | undefined;
22757
+ /** What the tree says while there is no value to show, such as before a
22758
+ fetch answers. The `empty` slot replaces it. */
22759
+ "prop:emptyLabel"?: (HelixHeadlessObjectInspector["emptyLabel"]) | undefined;
22682
22760
  /** Text the tree is narrowed to: the entries whose key or value holds it,
22683
22761
  ignoring case, and the branches that lead to them. Empty shows everything. */
22684
22762
  "prop:filter"?: (HelixHeadlessObjectInspector["filter"]) | undefined;
@@ -22748,6 +22826,12 @@ who set the property. This button is positioned out of the flow and takes no
22748
22826
  room, so nothing selects on it, and reflection exists so that a selector can
22749
22827
  reach a value. */
22750
22828
  "prop:noCopy"?: (HelixHeadlessObjectInspector["noCopy"]) | undefined;
22829
+ /** What the tree says while a filter matched no entry. The `empty` slot
22830
+ replaces it. */
22831
+ "attr:no-matches-label"?: (HelixHeadlessObjectInspector["noMatchesLabel"]) | undefined;
22832
+ /** What the tree says while a filter matched no entry. The `empty` slot
22833
+ replaces it. */
22834
+ "prop:noMatchesLabel"?: (HelixHeadlessObjectInspector["noMatchesLabel"]) | undefined;
22751
22835
  /** What a screen reader hears when a filter matches one entry, where
22752
22836
  `results-label` should not say it. `{count}` is the count. */
22753
22837
  "attr:result-label"?: (HelixHeadlessObjectInspector["resultLabel"]) | undefined;
@@ -34613,17 +34697,43 @@ export type HelixHeadlessVideoPlaylistHelixActivateElementEvent =
34613
34697
  /** `helix-before-activate` event type */
34614
34698
  export type HelixHeadlessVideoPlaylistHelixBeforeActivateElementEvent =
34615
34699
  HelixHeadlessVideoPlaylistElementEvent<HelixBeforeActivateEvent>;
34700
+ /** `helix-before-reorder` event type */
34701
+ export type HelixHeadlessVideoPlaylistHelixBeforeReorderElementEvent =
34702
+ HelixHeadlessVideoPlaylistElementEvent<HelixBeforeReorderEvent>;
34616
34703
  /** `helix-end` event type */
34617
34704
  export type HelixHeadlessVideoPlaylistHelixEndElementEvent =
34618
34705
  HelixHeadlessVideoPlaylistElementEvent<HelixEndEvent>;
34706
+ /** `helix-reorder` event type */
34707
+ export type HelixHeadlessVideoPlaylistHelixReorderElementEvent =
34708
+ HelixHeadlessVideoPlaylistElementEvent<HelixReorderEvent>;
34619
34709
 
34620
34710
  export type HelixHeadlessVideoPlaylistProps = {
34711
+ /** What screen readers hear when a move is put back, in a `reorderable`
34712
+ playlist. `{name}` is the entry's words. */
34713
+ "canceled-label"?: (HelixHeadlessVideoPlaylist["canceledLabel"]) | undefined;
34714
+ /** What screen readers hear when a move is put back, in a `reorderable`
34715
+ playlist. `{name}` is the entry's words. */
34716
+ canceledLabel?: (HelixHeadlessVideoPlaylist["canceledLabel"]) | undefined;
34717
+ /** What screen readers hear when a moved entry is let go, in a `reorderable`
34718
+ playlist. `{name}` is the entry's words. */
34719
+ "dropped-label"?: (HelixHeadlessVideoPlaylist["droppedLabel"]) | undefined;
34720
+ /** What screen readers hear when a moved entry is let go, in a `reorderable`
34721
+ playlist. `{name}` is the entry's words. */
34722
+ droppedLabel?: (HelixHeadlessVideoPlaylist["droppedLabel"]) | undefined;
34621
34723
  /** What the playlist says while it has no entries. The `empty` slot replaces it. */
34622
34724
  "empty-label"?: (HelixHeadlessVideoPlaylist["emptyLabel"]) | undefined;
34623
34725
  /** What the playlist says while it has no entries. The `empty` slot replaces it. */
34624
34726
  emptyLabel?: (HelixHeadlessVideoPlaylist["emptyLabel"]) | undefined;
34625
34727
  /** The list's name, read by screen readers. */
34626
34728
  label?: (HelixHeadlessVideoPlaylist["label"]) | undefined;
34729
+ /** What screen readers hear each time a key moves an entry, in a
34730
+ `reorderable` playlist. `{name}` is the entry's words, `{position}` its
34731
+ new place, counting from 1, and `{count}` the number of entries. */
34732
+ "moved-label"?: (HelixHeadlessVideoPlaylist["movedLabel"]) | undefined;
34733
+ /** What screen readers hear each time a key moves an entry, in a
34734
+ `reorderable` playlist. `{name}` is the entry's words, `{position}` its
34735
+ new place, counting from 1, and `{count}` the number of entries. */
34736
+ movedLabel?: (HelixHeadlessVideoPlaylist["movedLabel"]) | undefined;
34627
34737
  /** Stays on an entry when its clip ends, where the playlist would otherwise
34628
34738
  play the next one. The player's controls, a press, and `next()` still
34629
34739
  move. `repeat="one"` still plays the entry again. */
@@ -34632,6 +34742,12 @@ move. `repeat="one"` still plays the entry again. */
34632
34742
  play the next one. The player's controls, a press, and `next()` still
34633
34743
  move. `repeat="one"` still plays the entry again. */
34634
34744
  noAdvance?: (HelixHeadlessVideoPlaylist["noAdvance"]) | undefined;
34745
+ /** What screen readers hear when a pointer picks up an entry, in a
34746
+ `reorderable` playlist. `{name}` is the entry's words. */
34747
+ "picked-up-label"?: (HelixHeadlessVideoPlaylist["pickedUpLabel"]) | undefined;
34748
+ /** What screen readers hear when a pointer picks up an entry, in a
34749
+ `reorderable` playlist. `{name}` is the entry's words. */
34750
+ pickedUpLabel?: (HelixHeadlessVideoPlaylist["pickedUpLabel"]) | undefined;
34635
34751
  /** What the live region says when the playlist moves to another entry.
34636
34752
  `{title}` is the entry's name.
34637
34753
 
@@ -34646,6 +34762,10 @@ playlist starts the next one, and the only other trace of that is the
34646
34762
  playlist starts the next one, and the only other trace of that is the
34647
34763
  `aria-current` on a button the reader is not on. */
34648
34764
  playingLabel?: (HelixHeadlessVideoPlaylist["playingLabel"]) | undefined;
34765
+ /** Lets a reader move the entries, with Alt and the arrow keys or by
34766
+ dragging one. The playlist moves no entry itself: you move your entries
34767
+ on `helix-reorder`. */
34768
+ reorderable?: (HelixHeadlessVideoPlaylist["reorderable"]) | undefined;
34649
34769
  /** What happens when an entry ends with no next one to go to. `one` plays the
34650
34770
  same entry again, and `all` goes from the last entry back to the first.
34651
34771
  Absent, the playlist stops on the last entry and sends `helix-end`.
@@ -34684,17 +34804,45 @@ Ignored once `active` is written. */
34684
34804
  "onhelix-before-activate"?: ((
34685
34805
  e: HelixHeadlessVideoPlaylistHelixBeforeActivateElementEvent,
34686
34806
  ) => void) | undefined;
34807
+ /** An entry was moved to a new place, in a `reorderable` playlist, with every entry's value in the new order in `detail.keys`. Cancelable: cancel it to keep the entry where it is. */
34808
+ "onhelix-before-reorder"?: ((
34809
+ e: HelixHeadlessVideoPlaylistHelixBeforeReorderElementEvent,
34810
+ ) => void) | undefined;
34687
34811
  /** The last entry finished playing, and the playlist stopped there. Not sent while `repeat` is set. */
34688
34812
  "onhelix-end"?: ((e: HelixHeadlessVideoPlaylistHelixEndElementEvent) => void) | undefined;
34813
+ /** Fired after `helix-before-reorder` when nobody canceled it. Move your entries to the order in `keys`. Cancelable: cancel it to say the move did not happen. */
34814
+ "onhelix-reorder"?: ((
34815
+ e: HelixHeadlessVideoPlaylistHelixReorderElementEvent,
34816
+ ) => void) | undefined;
34689
34817
  };
34690
34818
 
34691
34819
  export type HelixHeadlessVideoPlaylistSolidJsProps = {
34820
+ /** What screen readers hear when a move is put back, in a `reorderable`
34821
+ playlist. `{name}` is the entry's words. */
34822
+ "attr:canceled-label"?: (HelixHeadlessVideoPlaylist["canceledLabel"]) | undefined;
34823
+ /** What screen readers hear when a move is put back, in a `reorderable`
34824
+ playlist. `{name}` is the entry's words. */
34825
+ "prop:canceledLabel"?: (HelixHeadlessVideoPlaylist["canceledLabel"]) | undefined;
34826
+ /** What screen readers hear when a moved entry is let go, in a `reorderable`
34827
+ playlist. `{name}` is the entry's words. */
34828
+ "attr:dropped-label"?: (HelixHeadlessVideoPlaylist["droppedLabel"]) | undefined;
34829
+ /** What screen readers hear when a moved entry is let go, in a `reorderable`
34830
+ playlist. `{name}` is the entry's words. */
34831
+ "prop:droppedLabel"?: (HelixHeadlessVideoPlaylist["droppedLabel"]) | undefined;
34692
34832
  /** What the playlist says while it has no entries. The `empty` slot replaces it. */
34693
34833
  "attr:empty-label"?: (HelixHeadlessVideoPlaylist["emptyLabel"]) | undefined;
34694
34834
  /** What the playlist says while it has no entries. The `empty` slot replaces it. */
34695
34835
  "prop:emptyLabel"?: (HelixHeadlessVideoPlaylist["emptyLabel"]) | undefined;
34696
34836
  /** The list's name, read by screen readers. */
34697
34837
  "prop:label"?: (HelixHeadlessVideoPlaylist["label"]) | undefined;
34838
+ /** What screen readers hear each time a key moves an entry, in a
34839
+ `reorderable` playlist. `{name}` is the entry's words, `{position}` its
34840
+ new place, counting from 1, and `{count}` the number of entries. */
34841
+ "attr:moved-label"?: (HelixHeadlessVideoPlaylist["movedLabel"]) | undefined;
34842
+ /** What screen readers hear each time a key moves an entry, in a
34843
+ `reorderable` playlist. `{name}` is the entry's words, `{position}` its
34844
+ new place, counting from 1, and `{count}` the number of entries. */
34845
+ "prop:movedLabel"?: (HelixHeadlessVideoPlaylist["movedLabel"]) | undefined;
34698
34846
  /** Stays on an entry when its clip ends, where the playlist would otherwise
34699
34847
  play the next one. The player's controls, a press, and `next()` still
34700
34848
  move. `repeat="one"` still plays the entry again. */
@@ -34703,6 +34851,12 @@ move. `repeat="one"` still plays the entry again. */
34703
34851
  play the next one. The player's controls, a press, and `next()` still
34704
34852
  move. `repeat="one"` still plays the entry again. */
34705
34853
  "prop:noAdvance"?: (HelixHeadlessVideoPlaylist["noAdvance"]) | undefined;
34854
+ /** What screen readers hear when a pointer picks up an entry, in a
34855
+ `reorderable` playlist. `{name}` is the entry's words. */
34856
+ "attr:picked-up-label"?: (HelixHeadlessVideoPlaylist["pickedUpLabel"]) | undefined;
34857
+ /** What screen readers hear when a pointer picks up an entry, in a
34858
+ `reorderable` playlist. `{name}` is the entry's words. */
34859
+ "prop:pickedUpLabel"?: (HelixHeadlessVideoPlaylist["pickedUpLabel"]) | undefined;
34706
34860
  /** What the live region says when the playlist moves to another entry.
34707
34861
  `{title}` is the entry's name.
34708
34862
 
@@ -34717,6 +34871,10 @@ playlist starts the next one, and the only other trace of that is the
34717
34871
  playlist starts the next one, and the only other trace of that is the
34718
34872
  `aria-current` on a button the reader is not on. */
34719
34873
  "prop:playingLabel"?: (HelixHeadlessVideoPlaylist["playingLabel"]) | undefined;
34874
+ /** Lets a reader move the entries, with Alt and the arrow keys or by
34875
+ dragging one. The playlist moves no entry itself: you move your entries
34876
+ on `helix-reorder`. */
34877
+ "prop:reorderable"?: (HelixHeadlessVideoPlaylist["reorderable"]) | undefined;
34720
34878
  /** What happens when an entry ends with no next one to go to. `one` plays the
34721
34879
  same entry again, and `all` goes from the last entry back to the first.
34722
34880
  Absent, the playlist stops on the last entry and sends `helix-end`.
@@ -34754,8 +34912,16 @@ Ignored once `active` is written. */
34754
34912
  "on:helix-before-activate"?: ((
34755
34913
  e: HelixHeadlessVideoPlaylistHelixBeforeActivateElementEvent,
34756
34914
  ) => void) | undefined;
34915
+ /** An entry was moved to a new place, in a `reorderable` playlist, with every entry's value in the new order in `detail.keys`. Cancelable: cancel it to keep the entry where it is. */
34916
+ "on:helix-before-reorder"?: ((
34917
+ e: HelixHeadlessVideoPlaylistHelixBeforeReorderElementEvent,
34918
+ ) => void) | undefined;
34757
34919
  /** The last entry finished playing, and the playlist stopped there. Not sent while `repeat` is set. */
34758
34920
  "on:helix-end"?: ((e: HelixHeadlessVideoPlaylistHelixEndElementEvent) => void) | undefined;
34921
+ /** Fired after `helix-before-reorder` when nobody canceled it. Move your entries to the order in `keys`. Cancelable: cancel it to say the move did not happen. */
34922
+ "on:helix-reorder"?: ((
34923
+ e: HelixHeadlessVideoPlaylistHelixReorderElementEvent,
34924
+ ) => void) | undefined;
34759
34925
 
34760
34926
  /** Set the innerHTML of the element */
34761
34927
  innerHTML?: (string) | undefined;
@@ -38390,8 +38556,12 @@ export type CustomElements = {
38390
38556
  * region around it.
38391
38557
  *
38392
38558
  * Set `dismissible` for a note a reader may put away, as Shoelace's `closable`
38393
- * alert does. The button fires `helix-dismiss` and the callout stays until a
38394
- * listener removes it, so the page decides whether it comes back.
38559
+ * alert does. The button fires `helix-dismiss`, and unless a listener cancels
38560
+ * it the callout hides itself: `open` turns false, `:state(exiting)` holds
38561
+ * while its exit animations run, and then it is `hidden`. Remove it in your
38562
+ * listener to take it out of the page, or set `open` to show it again, which
38563
+ * holds `:state(entering)` while it comes back. Focus on its dismiss button
38564
+ * moves to the next callout's, or to the tab stop beside it, once it hides.
38395
38565
  *
38396
38566
  * A callout sets a passage apart inside a document and is read where it sits.
38397
38567
  * For page-level chrome above the masthead that is a live region and can be
@@ -38408,6 +38578,10 @@ export type CustomElements = {
38408
38578
  * "Dismiss Scheduled maintenance" says which of several callouts the button
38409
38579
  * takes away, where every button was "Dismiss". A label without `{label}` is
38410
38580
  * read as written.
38581
+ * - `open`: Whether the callout is showing. A dismissal nobody canceled turns it
38582
+ * false and the callout hides itself, and setting it true shows the callout
38583
+ * again. Not reflected: open is the resting state, so an `open` attribute
38584
+ * would appear on markup a server sent without it.
38411
38585
  * - `tone`: What kind of attention the passage needs.
38412
38586
  *
38413
38587
  * `tone` is the axis for what a thing means, and this is a subset of it: a
@@ -38450,7 +38624,7 @@ export type CustomElements = {
38450
38624
  *
38451
38625
  * Events that will be emitted by the component.
38452
38626
  *
38453
- * - `helix-dismiss`: The dismiss button was pressed. The callout does not remove itself, so remove it in response. Cancelable.
38627
+ * - `helix-dismiss`: The dismiss button was pressed. Unless a listener cancels it, the callout hides itself, and a listener may remove it instead. Cancelable: cancel it to keep the callout showing.
38454
38628
  *
38455
38629
  * ## Slots
38456
38630
  *
@@ -38465,7 +38639,8 @@ export type CustomElements = {
38465
38639
  *
38466
38640
  * Methods that can be called to access component functionality.
38467
38641
  *
38468
- * - `dismiss() => boolean`: Fires `helix-dismiss`, and returns `false` if a listener cancels it.
38642
+ * - `dismiss() => boolean`: Hides the callout once a dismissal stands, unless the page removed it in
38643
+ * its listener, which is the page's answer and leaves `open` as it was.
38469
38644
  *
38470
38645
  * ## CSS Parts
38471
38646
  *
@@ -38481,6 +38656,11 @@ export type CustomElements = {
38481
38656
  *
38482
38657
  * These can be used to apply styling when a component is in a given state.
38483
38658
  *
38659
+ * - `closed`: While `open` is false: the callout was dismissed, and is leaving or hidden.
38660
+ * - `entering`: While a callout shown again by `open` runs its entrance animations.
38661
+ * - `exiting`: While a dismissed callout runs its exit animations, before it is hidden.
38662
+ * - `has-heading`: Something is slotted into `heading`.
38663
+ * - `has-icon`: An icon of your own is slotted into `icon`, in place of the tone's.
38484
38664
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
38485
38665
  */
38486
38666
  "helix-headless-callout": Partial<
@@ -40714,9 +40894,14 @@ export type CustomElements = {
40714
40894
  * removed. The block never computes a diff itself. Line numbers come from the
40715
40895
  * hunk headers and are hidden from the accessibility tree. Changed lines are
40716
40896
  * `<ins>` and `<del>` with the `+` and `-` kept as text, so the change does not
40717
- * depend on color. Each file in the patch is its own block under its own name,
40897
+ * depend on color. Where a removed line is paired with the added line that
40898
+ * replaced it, the words each does not share with the other are the `changed`
40899
+ * part, so the eye goes to what changed within the line. Each file in the patch is its own block under its own name,
40718
40900
  * and its copy button copies the new version of the file. `variant="split"`
40719
40901
  * shows the old version beside the new, each removal opposite its replacement.
40902
+ * `context-lines` folds each long run of unchanged lines, keeping that many
40903
+ * beside each change, behind a button that shows them and hides them again,
40904
+ * as a code host draws a diff written with more context than a reader needs.
40720
40905
  *
40721
40906
  * **A block that scrolls is a tab stop.** While its lines run past its width or
40722
40907
  * its cap, the scroller is a region named for the block, such as "Code,
@@ -40746,6 +40931,9 @@ export type CustomElements = {
40746
40931
  * - `code-name-label`/`codeNameLabel`: The name of a block that scrolls, where the block has a name. `{code}` is
40747
40932
  * `code-label` and `{name}` the block's name.
40748
40933
  * - `collapse-label`/`collapseLabel`: The expand button's words while the block shows every line.
40934
+ * - `context-lines`/`contextLines`: In a diff, how many unchanged lines to keep beside each change. Each
40935
+ * longer run of unchanged lines is folded behind a button that shows it.
40936
+ * Unset shows every line the diff holds.
40749
40937
  * - `copied-label`/`copiedLabel`: The copy button's name and tooltip text after a copy.
40750
40938
  * - `copy-label`/`copyLabel`: The copy button's name and tooltip text before a copy.
40751
40939
  *
@@ -40765,6 +40953,9 @@ export type CustomElements = {
40765
40953
  * the button is drawn only while the cap hides something, measured as the
40766
40954
  * block lays out. Not for a diff, whose files each scroll on their own.
40767
40955
  * - `expand-label`/`expandLabel`: The expand button's words while the cap hides lines.
40956
+ * - `hide-unchanged-label`/`hideUnchangedLabel`: The words of a button that hides a run of unchanged lines it showed, in a
40957
+ * diff with `context-lines`. `{count}` is how many, and each language
40958
+ * writes the forms it has.
40768
40959
  * - `label`: The block's name, usually a file name, drawn in the header.
40769
40960
  *
40770
40961
  * Absent, the block is named by `language` where there is one. In a diff,
@@ -40804,6 +40995,8 @@ export type CustomElements = {
40804
40995
  * `no-copy=""` on hosts that never asked for one, and the rule about a
40805
40996
  * reflected property taking no default is satisfied by the default being
40806
40997
  * `false`.
40998
+ * - `show-unchanged-label`/`showUnchangedLabel`: The words of a button that shows a folded run of unchanged lines, in a
40999
+ * diff with `context-lines`. `{count}` is how many.
40807
41000
  * - `variant`: How a diff's two versions are arranged. It has no effect without `diff`.
40808
41001
  *
40809
41002
  * Absent is unified, each removal above its replacement, which fits any
@@ -40894,6 +41087,7 @@ export type CustomElements = {
40894
41087
  * - `actions`: The box in the header that holds the `actions` slot, drawn while something is slotted there.
40895
41088
  * - `added`: In a diff, a line only the new version has, an `<ins>`.
40896
41089
  * - `block`: The scrolling `<pre>`.
41090
+ * - `changed`: In a diff, the words of a changed line that the line opposite it does not have, inside its `text`.
40897
41091
  * - `code`: The `<code>` inside it.
40898
41092
  * - `context`: In a diff, a line both versions share.
40899
41093
  * - `copy`: The copy button. It sits in the header when there is one, and beside the code otherwise.
@@ -40915,6 +41109,7 @@ export type CustomElements = {
40915
41109
  * - `expand`: The button under a capped block that shows every line, and fewer again. Drawn when `expandable` is set and the cap hides something.
40916
41110
  * - `file`: In a diff, one file's header and block.
40917
41111
  * - `filler`: In a split diff, the empty row opposite a line the other side does not have.
41112
+ * - `fold`: In a diff with `context-lines`, the button that shows a folded run of unchanged lines, and hides it again, saying which with `aria-expanded`.
40918
41113
  * - `frame`: The code, and the copy button beside it where there is no header.
40919
41114
  * - `gutter`: The line numbers beside the code, shown when `line-numbers` is set.
40920
41115
  * - `header`: The bar that holds the name and the copy button, shown when there is a name.
@@ -41380,8 +41575,10 @@ export type CustomElements = {
41380
41575
  * gray after you drag to the bottom of the square and back.
41381
41576
  *
41382
41577
  * The square is one tab stop. In it, the up and down arrows move brightness
41383
- * and the left and right arrows move saturation, and PageUp and PageDown move
41384
- * brightness by ten. The picker sends `input` as the color moves and `change`
41578
+ * and the left and right arrows move saturation, by ten with Shift. PageUp and
41579
+ * PageDown move brightness by ten, and Home and End move saturation by ten,
41580
+ * turned on a right-to-left page as the arrows are, as React Aria's ColorArea
41581
+ * does. The picker sends `input` as the color moves and `change`
41385
41582
  * when a drag, a key, a typed value or a preset settles it, as
41386
41583
  * `<input type="color">` does.
41387
41584
  *
@@ -41793,6 +41990,7 @@ export type CustomElements = {
41793
41990
  * | Key | What it does |
41794
41991
  * |---|---|
41795
41992
  * | Down, Up | On a closed field, opens the list on the chosen option, or the first or the last. In the open list, moves the highlight, round from the last option to the first. |
41993
+ * | Alt with Down, Alt with Up | Opens the list without moving the highlight, and closes it, choosing nothing. |
41796
41994
  * | Page Down, Page Up | In the open list, moves the highlight by as many options as the list shows at once. |
41797
41995
  * | Enter | Chooses the highlighted option. With nothing left in the list, creates what was typed with `creatable`, or takes it with `allows-custom-value`. On a closed field, submits the form. |
41798
41996
  * | Escape | Closes the list and puts the chosen words back. On a closed field, a second Escape clears a single choice. |
@@ -43143,6 +43341,7 @@ export type CustomElements = {
43143
43341
  *
43144
43342
  * - `empty`: While there are no rows to show and none are loading.
43145
43343
  * - `error`: While `error-text` is set.
43344
+ * - `loading`: While `loading` is set, as the rows are on their way.
43146
43345
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
43147
43346
  */
43148
43347
  "helix-headless-data-table": Partial<
@@ -46748,7 +46947,9 @@ export type CustomElements = {
46748
46947
  * `narrow` ("3h ago").
46749
46948
  *
46750
46949
  * The reading refreshes as it goes stale, as `elapsed` does, and the whole
46751
- * date is its title. `elapsed` wins where both are set.
46950
+ * date is its title. `elapsed` wins where both are set. Written with no
46951
+ * value, as `elapsed` is, or with a style `Intl` does not know, it reads
46952
+ * `long`.
46752
46953
  * - `second`: How the second is written, where a time of day is shown.
46753
46954
  * - `time-style`/`timeStyle`: The locale's own pattern for the time of day: `full`, `long`, `medium`, or
46754
46955
  * `short`. Set, it stands in for `hour`, `minute`, `second` and
@@ -52814,7 +53015,7 @@ export type CustomElements = {
52814
53015
  * A separate family from `Input`'s `type="number"`. It renders two buttons,
52815
53016
  * binds four keys `Input` does not, and handles clamping and stepping.
52816
53017
  *
52817
- * The field is `type="text"` with `inputmode="decimal"`. Tested in a real
53018
+ * The field is `type="text"` with an `inputmode` for a number. Tested in a real
52818
53019
  * browser, `type="number"` fails in three ways:
52819
53020
  * - Typing `12e` gives a `.value` of `""`, so the element cannot see what you
52820
53021
  * typed. A `type="text"` field keeps `"12e"`.
@@ -52822,7 +53023,11 @@ export type CustomElements = {
52822
53023
  * to 4, when you only meant to scroll the page.
52823
53024
  * - `selectionStart` is `null`, so the caret cannot be managed.
52824
53025
  *
52825
- * `inputmode="decimal"` keeps the numeric keypad on phones.
53026
+ * `inputmode` keeps a numeric keypad on phones, chosen as React Aria's
53027
+ * NumberField chooses it: a keypad with a minus key where the number can be
53028
+ * negative, and one with a decimal separator where the format shows a
53029
+ * fraction. An iPhone has no keypad with a minus key, so a field that can be
53030
+ * negative takes the full keyboard there.
52826
53031
  *
52827
53032
  * `format-options` shows the number with `Intl.NumberFormat` in `locale`, as a
52828
53033
  * currency, a percent or a unit, while the field is not being edited. Focus
@@ -52933,10 +53138,11 @@ export type CustomElements = {
52933
53138
  * invalid, as it is in a native number field.
52934
53139
  *
52935
53140
  * Unset, a step moves by one, or by one percent under a percent format, and
52936
- * a typed number is rounded to the smallest amount `format-options` shows
52937
- * rather than to whole steps, as React Aria's NumberField does: a field
52938
- * showing dollars keeps the cents typed into it. Without `format-options`
52939
- * the grid is whole numbers, as in a native number field.
53141
+ * a typed number is rounded to the smallest amount the format shows, as
53142
+ * React Aria's NumberField does: a field showing dollars keeps the cents
53143
+ * typed into it, and one with no `format-options` keeps three decimal
53144
+ * places. `any` puts the number on no grid, as it does in a native number
53145
+ * field: a step moves by one, and any number in range is valid.
52940
53146
  * - `step-mismatch-message`/`stepMismatchMessage`: The message the browser shows when the number is off the step grid, with
52941
53147
  * `{below}` and `{above}` filled in with the nearest valid values, written in
52942
53148
  * the locale.
@@ -53158,6 +53364,8 @@ export type CustomElements = {
53158
53364
  *
53159
53365
  * These can be used to apply styling when a component is in a given state.
53160
53366
  *
53367
+ * - `at-max`: The number is at `max`, so it cannot step up, as React Aria's NumberField says with `canIncrement`.
53368
+ * - `at-min`: The number is at `min`, so it cannot step down.
53161
53369
  * - `invalid`: The control has an error to show, from the browser's validation or from your `feedback`.
53162
53370
  * - `scrubbing`: The label is being dragged to change the value, under `scrub`, as Zag's scrubber says while it is held.
53163
53371
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
@@ -53260,6 +53468,8 @@ export type CustomElements = {
53260
53468
  * reader sees the shape of the value before its contents. `0` starts with the
53261
53469
  * root closed; a large number opens everything, which on a big value is the
53262
53470
  * wall of text this exists to avoid.
53471
+ * - `empty-label`/`emptyLabel`: What the tree says while there is no value to show, such as before a
53472
+ * fetch answers. The `empty` slot replaces it.
53263
53473
  * - `filter`: Text the tree is narrowed to: the entries whose key or value holds it,
53264
53474
  * ignoring case, and the branches that lead to them. Empty shows everything.
53265
53475
  * - `filterable`: Whether to show a field that sets `filter`.
@@ -53291,6 +53501,8 @@ export type CustomElements = {
53291
53501
  * who set the property. This button is positioned out of the flow and takes no
53292
53502
  * room, so nothing selects on it, and reflection exists so that a selector can
53293
53503
  * reach a value.
53504
+ * - `no-matches-label`/`noMatchesLabel`: What the tree says while a filter matched no entry. The `empty` slot
53505
+ * replaces it.
53294
53506
  * - `result-label`/`resultLabel`: What a screen reader hears when a filter matches one entry, where
53295
53507
  * `results-label` should not say it. `{count}` is the count.
53296
53508
  * - `results-label`/`resultsLabel`: What a screen reader hears when a filter matches entries. `{count}` is
@@ -53352,6 +53564,12 @@ export type CustomElements = {
53352
53564
  * - `helix-filtered`: The filter field changed `filter`, which now holds the text.
53353
53565
  * - `toggle`: A reader opened or closed a branch, with `newState` and `oldState`. `expanded` holds every open branch.
53354
53566
  *
53567
+ * ## Slots
53568
+ *
53569
+ * Areas where markup can be added to the component.
53570
+ *
53571
+ * - `empty`: Shown in the tree while it has no entries to show. Defaults to `empty-label`, or `no-matches-label` while a filter matched none.
53572
+ *
53355
53573
  * ## CSS Custom Properties
53356
53574
  *
53357
53575
  * CSS variables available for styling the component.
@@ -53382,6 +53600,7 @@ export type CustomElements = {
53382
53600
  * - `copy-tooltip-right`: The tooltip while it is right of the copy button. Set alongside `copy-tooltip`.
53383
53601
  * - `copy-tooltip-top`: The tooltip while it is above the copy button. Set alongside `copy-tooltip`.
53384
53602
  * - `count`: The number of entries a branch holds.
53603
+ * - `empty`: The row shown in the tree while it has no entries to show: no value, or a filter that matched none. It holds the `empty` slot.
53385
53604
  * - `frame`: The tree and the copy button beside it.
53386
53605
  * - `header`: The bar that holds the label, when there is one.
53387
53606
  * - `key`: A property name or an array index.
@@ -53403,6 +53622,9 @@ export type CustomElements = {
53403
53622
  *
53404
53623
  * These can be used to apply styling when a component is in a given state.
53405
53624
  *
53625
+ * - `empty`: While the tree has no entries to show: no value, or a filter that matched none.
53626
+ * - `filtered`: While `filter` holds text.
53627
+ * - `matched`: While `filter` holds text and matched at least one entry.
53406
53628
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
53407
53629
  */
53408
53630
  "helix-headless-object-inspector": Partial<
@@ -59183,6 +59405,8 @@ export type CustomElements = {
59183
59405
  * | Enter, Space on a sortable heading | Sorts by the column. |
59184
59406
  * | Space on a row, Enter or Space on its checkbox cell | Selects the row, in a `selectable` table. |
59185
59407
  * | Enter or Space on a disclosure cell | Shows or hides the rows under the row, in a table whose rows nest. |
59408
+ * | Right on a disclosure cell | Shows the rows under a shut row, and otherwise moves one cell along the row. Left does, on a right-to-left page. |
59409
+ * | Left on a disclosure cell | Hides the rows under an open row, and moves to the row this one sits under from any other. |
59186
59410
  * | 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. |
59187
59411
  * | 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. |
59188
59412
  * | Shift with Down or Up | Selects the rows it moves across, in a `selectable` table. |
@@ -59419,6 +59643,7 @@ export type CustomElements = {
59419
59643
  *
59420
59644
  * - `empty`: While there are no rows and none are loading.
59421
59645
  * - `error`: While `error-text` is set.
59646
+ * - `loading`: While `loading` is set, as the rows are on their way.
59422
59647
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
59423
59648
  */
59424
59649
  "helix-headless-table": Partial<
@@ -63702,6 +63927,9 @@ export type CustomElements = {
63702
63927
  * These can be used to apply styling when a component is in a given state.
63703
63928
  *
63704
63929
  * - `current`: The entry that is playing.
63930
+ * - `dragging`: The entry a pointer is dragging, in a `reorderable` playlist.
63931
+ * - `drop-after`: The entry the dragged one would land after, which the drop indicator is drawn under.
63932
+ * - `drop-before`: The entry the dragged one would land before, which the drop indicator is drawn over.
63705
63933
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
63706
63934
  */
63707
63935
  "helix-headless-video-playlist-item": Partial<
@@ -63848,6 +64076,21 @@ export type CustomElements = {
63848
64076
  * the next or the previous entry. The player's previous and next controls
63849
64077
  * move through the entries in the same order the playlist does.
63850
64078
  *
64079
+ * **Moving entries.** `reorderable` lets a reader change the order of the
64080
+ * queue:
64081
+ *
64082
+ * - Alt with Up or Down moves the focused entry a place, and Alt with Home or
64083
+ * End moves it to either end, as the APG's rearrangeable listbox does.
64084
+ * Focus stays on it.
64085
+ * - A pointer drags an entry, with a drop indicator, and the page scrolls near
64086
+ * an edge. A press that does not travel still plays the entry.
64087
+ * - A drop sends `helix-before-reorder`, which you can refuse, and then
64088
+ * `helix-reorder`, whose `keys` hold every entry's `value` in the new order.
64089
+ * **You move the entries**: the playlist moves no element of yours, and the
64090
+ * next entry is the one after the current entry in the order you leave.
64091
+ * - Each move is said in the live region, in words you can change:
64092
+ * `moved-label`, `dropped-label`, `canceled-label`, and `picked-up-label`.
64093
+ *
63851
64094
  * **What a screen reader hears.** A list named by `label`, with a button for
63852
64095
  * each entry. When the playlist moves to another entry, by a press, by the
63853
64096
  * player's controls, or at the end of a clip, a live region says
@@ -63857,17 +64100,29 @@ export type CustomElements = {
63857
64100
  *
63858
64101
  * Component attributes and properties that can be applied to the element or by using JavaScript.
63859
64102
  *
64103
+ * - `canceled-label`/`canceledLabel`: What screen readers hear when a move is put back, in a `reorderable`
64104
+ * playlist. `{name}` is the entry's words.
64105
+ * - `dropped-label`/`droppedLabel`: What screen readers hear when a moved entry is let go, in a `reorderable`
64106
+ * playlist. `{name}` is the entry's words.
63860
64107
  * - `empty-label`/`emptyLabel`: What the playlist says while it has no entries. The `empty` slot replaces it.
63861
64108
  * - `label`: The list's name, read by screen readers.
64109
+ * - `moved-label`/`movedLabel`: What screen readers hear each time a key moves an entry, in a
64110
+ * `reorderable` playlist. `{name}` is the entry's words, `{position}` its
64111
+ * new place, counting from 1, and `{count}` the number of entries.
63862
64112
  * - `no-advance`/`noAdvance`: Stays on an entry when its clip ends, where the playlist would otherwise
63863
64113
  * play the next one. The player's controls, a press, and `next()` still
63864
64114
  * move. `repeat="one"` still plays the entry again.
64115
+ * - `picked-up-label`/`pickedUpLabel`: What screen readers hear when a pointer picks up an entry, in a
64116
+ * `reorderable` playlist. `{name}` is the entry's words.
63865
64117
  * - `playing-label`/`playingLabel`: What the live region says when the playlist moves to another entry.
63866
64118
  * `{title}` is the entry's name.
63867
64119
  *
63868
64120
  * **A move a reader did not make is said.** At the end of a clip the
63869
64121
  * playlist starts the next one, and the only other trace of that is the
63870
64122
  * `aria-current` on a button the reader is not on.
64123
+ * - `reorderable`: Lets a reader move the entries, with Alt and the arrow keys or by
64124
+ * dragging one. The playlist moves no entry itself: you move your entries
64125
+ * on `helix-reorder`.
63871
64126
  * - `repeat`: What happens when an entry ends with no next one to go to. `one` plays the
63872
64127
  * same entry again, and `all` goes from the last entry back to the first.
63873
64128
  * Absent, the playlist stops on the last entry and sends `helix-end`.
@@ -63922,7 +64177,9 @@ export type CustomElements = {
63922
64177
  *
63923
64178
  * - `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.
63924
64179
  * - `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.
64180
+ * - `helix-before-reorder`: An entry was moved to a new place, in a `reorderable` playlist, with every entry's value in the new order in `detail.keys`. Cancelable: cancel it to keep the entry where it is.
63925
64181
  * - `helix-end`: The last entry finished playing, and the playlist stopped there. Not sent while `repeat` is set.
64182
+ * - `helix-reorder`: Fired after `helix-before-reorder` when nobody canceled it. Move your entries to the order in `keys`. Cancelable: cancel it to say the move did not happen.
63926
64183
  *
63927
64184
  * ## Slots
63928
64185
  *
@@ -67084,8 +67341,12 @@ export type CustomElementsSolidJs = {
67084
67341
  * region around it.
67085
67342
  *
67086
67343
  * Set `dismissible` for a note a reader may put away, as Shoelace's `closable`
67087
- * alert does. The button fires `helix-dismiss` and the callout stays until a
67088
- * listener removes it, so the page decides whether it comes back.
67344
+ * alert does. The button fires `helix-dismiss`, and unless a listener cancels
67345
+ * it the callout hides itself: `open` turns false, `:state(exiting)` holds
67346
+ * while its exit animations run, and then it is `hidden`. Remove it in your
67347
+ * listener to take it out of the page, or set `open` to show it again, which
67348
+ * holds `:state(entering)` while it comes back. Focus on its dismiss button
67349
+ * moves to the next callout's, or to the tab stop beside it, once it hides.
67089
67350
  *
67090
67351
  * A callout sets a passage apart inside a document and is read where it sits.
67091
67352
  * For page-level chrome above the masthead that is a live region and can be
@@ -67102,6 +67363,10 @@ export type CustomElementsSolidJs = {
67102
67363
  * "Dismiss Scheduled maintenance" says which of several callouts the button
67103
67364
  * takes away, where every button was "Dismiss". A label without `{label}` is
67104
67365
  * read as written.
67366
+ * - `open`: Whether the callout is showing. A dismissal nobody canceled turns it
67367
+ * false and the callout hides itself, and setting it true shows the callout
67368
+ * again. Not reflected: open is the resting state, so an `open` attribute
67369
+ * would appear on markup a server sent without it.
67105
67370
  * - `tone`: What kind of attention the passage needs.
67106
67371
  *
67107
67372
  * `tone` is the axis for what a thing means, and this is a subset of it: a
@@ -67144,7 +67409,7 @@ export type CustomElementsSolidJs = {
67144
67409
  *
67145
67410
  * Events that will be emitted by the component.
67146
67411
  *
67147
- * - `helix-dismiss`: The dismiss button was pressed. The callout does not remove itself, so remove it in response. Cancelable.
67412
+ * - `helix-dismiss`: The dismiss button was pressed. Unless a listener cancels it, the callout hides itself, and a listener may remove it instead. Cancelable: cancel it to keep the callout showing.
67148
67413
  *
67149
67414
  * ## Slots
67150
67415
  *
@@ -67159,7 +67424,8 @@ export type CustomElementsSolidJs = {
67159
67424
  *
67160
67425
  * Methods that can be called to access component functionality.
67161
67426
  *
67162
- * - `dismiss() => boolean`: Fires `helix-dismiss`, and returns `false` if a listener cancels it.
67427
+ * - `dismiss() => boolean`: Hides the callout once a dismissal stands, unless the page removed it in
67428
+ * its listener, which is the page's answer and leaves `open` as it was.
67163
67429
  *
67164
67430
  * ## CSS Parts
67165
67431
  *
@@ -67175,6 +67441,11 @@ export type CustomElementsSolidJs = {
67175
67441
  *
67176
67442
  * These can be used to apply styling when a component is in a given state.
67177
67443
  *
67444
+ * - `closed`: While `open` is false: the callout was dismissed, and is leaving or hidden.
67445
+ * - `entering`: While a callout shown again by `open` runs its entrance animations.
67446
+ * - `exiting`: While a dismissed callout runs its exit animations, before it is hidden.
67447
+ * - `has-heading`: Something is slotted into `heading`.
67448
+ * - `has-icon`: An icon of your own is slotted into `icon`, in place of the tone's.
67178
67449
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
67179
67450
  */
67180
67451
  "helix-headless-callout": Partial<
@@ -69431,9 +69702,14 @@ export type CustomElementsSolidJs = {
69431
69702
  * removed. The block never computes a diff itself. Line numbers come from the
69432
69703
  * hunk headers and are hidden from the accessibility tree. Changed lines are
69433
69704
  * `<ins>` and `<del>` with the `+` and `-` kept as text, so the change does not
69434
- * depend on color. Each file in the patch is its own block under its own name,
69705
+ * depend on color. Where a removed line is paired with the added line that
69706
+ * replaced it, the words each does not share with the other are the `changed`
69707
+ * part, so the eye goes to what changed within the line. Each file in the patch is its own block under its own name,
69435
69708
  * and its copy button copies the new version of the file. `variant="split"`
69436
69709
  * shows the old version beside the new, each removal opposite its replacement.
69710
+ * `context-lines` folds each long run of unchanged lines, keeping that many
69711
+ * beside each change, behind a button that shows them and hides them again,
69712
+ * as a code host draws a diff written with more context than a reader needs.
69437
69713
  *
69438
69714
  * **A block that scrolls is a tab stop.** While its lines run past its width or
69439
69715
  * its cap, the scroller is a region named for the block, such as "Code,
@@ -69463,6 +69739,9 @@ export type CustomElementsSolidJs = {
69463
69739
  * - `code-name-label`/`codeNameLabel`: The name of a block that scrolls, where the block has a name. `{code}` is
69464
69740
  * `code-label` and `{name}` the block's name.
69465
69741
  * - `collapse-label`/`collapseLabel`: The expand button's words while the block shows every line.
69742
+ * - `context-lines`/`contextLines`: In a diff, how many unchanged lines to keep beside each change. Each
69743
+ * longer run of unchanged lines is folded behind a button that shows it.
69744
+ * Unset shows every line the diff holds.
69466
69745
  * - `copied-label`/`copiedLabel`: The copy button's name and tooltip text after a copy.
69467
69746
  * - `copy-label`/`copyLabel`: The copy button's name and tooltip text before a copy.
69468
69747
  *
@@ -69482,6 +69761,9 @@ export type CustomElementsSolidJs = {
69482
69761
  * the button is drawn only while the cap hides something, measured as the
69483
69762
  * block lays out. Not for a diff, whose files each scroll on their own.
69484
69763
  * - `expand-label`/`expandLabel`: The expand button's words while the cap hides lines.
69764
+ * - `hide-unchanged-label`/`hideUnchangedLabel`: The words of a button that hides a run of unchanged lines it showed, in a
69765
+ * diff with `context-lines`. `{count}` is how many, and each language
69766
+ * writes the forms it has.
69485
69767
  * - `label`: The block's name, usually a file name, drawn in the header.
69486
69768
  *
69487
69769
  * Absent, the block is named by `language` where there is one. In a diff,
@@ -69521,6 +69803,8 @@ export type CustomElementsSolidJs = {
69521
69803
  * `no-copy=""` on hosts that never asked for one, and the rule about a
69522
69804
  * reflected property taking no default is satisfied by the default being
69523
69805
  * `false`.
69806
+ * - `show-unchanged-label`/`showUnchangedLabel`: The words of a button that shows a folded run of unchanged lines, in a
69807
+ * diff with `context-lines`. `{count}` is how many.
69524
69808
  * - `variant`: How a diff's two versions are arranged. It has no effect without `diff`.
69525
69809
  *
69526
69810
  * Absent is unified, each removal above its replacement, which fits any
@@ -69611,6 +69895,7 @@ export type CustomElementsSolidJs = {
69611
69895
  * - `actions`: The box in the header that holds the `actions` slot, drawn while something is slotted there.
69612
69896
  * - `added`: In a diff, a line only the new version has, an `<ins>`.
69613
69897
  * - `block`: The scrolling `<pre>`.
69898
+ * - `changed`: In a diff, the words of a changed line that the line opposite it does not have, inside its `text`.
69614
69899
  * - `code`: The `<code>` inside it.
69615
69900
  * - `context`: In a diff, a line both versions share.
69616
69901
  * - `copy`: The copy button. It sits in the header when there is one, and beside the code otherwise.
@@ -69632,6 +69917,7 @@ export type CustomElementsSolidJs = {
69632
69917
  * - `expand`: The button under a capped block that shows every line, and fewer again. Drawn when `expandable` is set and the cap hides something.
69633
69918
  * - `file`: In a diff, one file's header and block.
69634
69919
  * - `filler`: In a split diff, the empty row opposite a line the other side does not have.
69920
+ * - `fold`: In a diff with `context-lines`, the button that shows a folded run of unchanged lines, and hides it again, saying which with `aria-expanded`.
69635
69921
  * - `frame`: The code, and the copy button beside it where there is no header.
69636
69922
  * - `gutter`: The line numbers beside the code, shown when `line-numbers` is set.
69637
69923
  * - `header`: The bar that holds the name and the copy button, shown when there is a name.
@@ -70104,8 +70390,10 @@ export type CustomElementsSolidJs = {
70104
70390
  * gray after you drag to the bottom of the square and back.
70105
70391
  *
70106
70392
  * The square is one tab stop. In it, the up and down arrows move brightness
70107
- * and the left and right arrows move saturation, and PageUp and PageDown move
70108
- * brightness by ten. The picker sends `input` as the color moves and `change`
70393
+ * and the left and right arrows move saturation, by ten with Shift. PageUp and
70394
+ * PageDown move brightness by ten, and Home and End move saturation by ten,
70395
+ * turned on a right-to-left page as the arrows are, as React Aria's ColorArea
70396
+ * does. The picker sends `input` as the color moves and `change`
70109
70397
  * when a drag, a key, a typed value or a preset settles it, as
70110
70398
  * `<input type="color">` does.
70111
70399
  *
@@ -70518,6 +70806,7 @@ export type CustomElementsSolidJs = {
70518
70806
  * | Key | What it does |
70519
70807
  * |---|---|
70520
70808
  * | Down, Up | On a closed field, opens the list on the chosen option, or the first or the last. In the open list, moves the highlight, round from the last option to the first. |
70809
+ * | Alt with Down, Alt with Up | Opens the list without moving the highlight, and closes it, choosing nothing. |
70521
70810
  * | Page Down, Page Up | In the open list, moves the highlight by as many options as the list shows at once. |
70522
70811
  * | Enter | Chooses the highlighted option. With nothing left in the list, creates what was typed with `creatable`, or takes it with `allows-custom-value`. On a closed field, submits the form. |
70523
70812
  * | Escape | Closes the list and puts the chosen words back. On a closed field, a second Escape clears a single choice. |
@@ -71875,6 +72164,7 @@ export type CustomElementsSolidJs = {
71875
72164
  *
71876
72165
  * - `empty`: While there are no rows to show and none are loading.
71877
72166
  * - `error`: While `error-text` is set.
72167
+ * - `loading`: While `loading` is set, as the rows are on their way.
71878
72168
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
71879
72169
  */
71880
72170
  "helix-headless-data-table": Partial<
@@ -75514,7 +75804,9 @@ export type CustomElementsSolidJs = {
75514
75804
  * `narrow` ("3h ago").
75515
75805
  *
75516
75806
  * The reading refreshes as it goes stale, as `elapsed` does, and the whole
75517
- * date is its title. `elapsed` wins where both are set.
75807
+ * date is its title. `elapsed` wins where both are set. Written with no
75808
+ * value, as `elapsed` is, or with a style `Intl` does not know, it reads
75809
+ * `long`.
75518
75810
  * - `second`: How the second is written, where a time of day is shown.
75519
75811
  * - `time-style`/`timeStyle`: The locale's own pattern for the time of day: `full`, `long`, `medium`, or
75520
75812
  * `short`. Set, it stands in for `hour`, `minute`, `second` and
@@ -81662,7 +81954,7 @@ export type CustomElementsSolidJs = {
81662
81954
  * A separate family from `Input`'s `type="number"`. It renders two buttons,
81663
81955
  * binds four keys `Input` does not, and handles clamping and stepping.
81664
81956
  *
81665
- * The field is `type="text"` with `inputmode="decimal"`. Tested in a real
81957
+ * The field is `type="text"` with an `inputmode` for a number. Tested in a real
81666
81958
  * browser, `type="number"` fails in three ways:
81667
81959
  * - Typing `12e` gives a `.value` of `""`, so the element cannot see what you
81668
81960
  * typed. A `type="text"` field keeps `"12e"`.
@@ -81670,7 +81962,11 @@ export type CustomElementsSolidJs = {
81670
81962
  * to 4, when you only meant to scroll the page.
81671
81963
  * - `selectionStart` is `null`, so the caret cannot be managed.
81672
81964
  *
81673
- * `inputmode="decimal"` keeps the numeric keypad on phones.
81965
+ * `inputmode` keeps a numeric keypad on phones, chosen as React Aria's
81966
+ * NumberField chooses it: a keypad with a minus key where the number can be
81967
+ * negative, and one with a decimal separator where the format shows a
81968
+ * fraction. An iPhone has no keypad with a minus key, so a field that can be
81969
+ * negative takes the full keyboard there.
81674
81970
  *
81675
81971
  * `format-options` shows the number with `Intl.NumberFormat` in `locale`, as a
81676
81972
  * currency, a percent or a unit, while the field is not being edited. Focus
@@ -81781,10 +82077,11 @@ export type CustomElementsSolidJs = {
81781
82077
  * invalid, as it is in a native number field.
81782
82078
  *
81783
82079
  * Unset, a step moves by one, or by one percent under a percent format, and
81784
- * a typed number is rounded to the smallest amount `format-options` shows
81785
- * rather than to whole steps, as React Aria's NumberField does: a field
81786
- * showing dollars keeps the cents typed into it. Without `format-options`
81787
- * the grid is whole numbers, as in a native number field.
82080
+ * a typed number is rounded to the smallest amount the format shows, as
82081
+ * React Aria's NumberField does: a field showing dollars keeps the cents
82082
+ * typed into it, and one with no `format-options` keeps three decimal
82083
+ * places. `any` puts the number on no grid, as it does in a native number
82084
+ * field: a step moves by one, and any number in range is valid.
81788
82085
  * - `step-mismatch-message`/`stepMismatchMessage`: The message the browser shows when the number is off the step grid, with
81789
82086
  * `{below}` and `{above}` filled in with the nearest valid values, written in
81790
82087
  * the locale.
@@ -82006,6 +82303,8 @@ export type CustomElementsSolidJs = {
82006
82303
  *
82007
82304
  * These can be used to apply styling when a component is in a given state.
82008
82305
  *
82306
+ * - `at-max`: The number is at `max`, so it cannot step up, as React Aria's NumberField says with `canIncrement`.
82307
+ * - `at-min`: The number is at `min`, so it cannot step down.
82009
82308
  * - `invalid`: The control has an error to show, from the browser's validation or from your `feedback`.
82010
82309
  * - `scrubbing`: The label is being dragged to change the value, under `scrub`, as Zag's scrubber says while it is held.
82011
82310
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
@@ -82109,6 +82408,8 @@ export type CustomElementsSolidJs = {
82109
82408
  * reader sees the shape of the value before its contents. `0` starts with the
82110
82409
  * root closed; a large number opens everything, which on a big value is the
82111
82410
  * wall of text this exists to avoid.
82411
+ * - `empty-label`/`emptyLabel`: What the tree says while there is no value to show, such as before a
82412
+ * fetch answers. The `empty` slot replaces it.
82112
82413
  * - `filter`: Text the tree is narrowed to: the entries whose key or value holds it,
82113
82414
  * ignoring case, and the branches that lead to them. Empty shows everything.
82114
82415
  * - `filterable`: Whether to show a field that sets `filter`.
@@ -82140,6 +82441,8 @@ export type CustomElementsSolidJs = {
82140
82441
  * who set the property. This button is positioned out of the flow and takes no
82141
82442
  * room, so nothing selects on it, and reflection exists so that a selector can
82142
82443
  * reach a value.
82444
+ * - `no-matches-label`/`noMatchesLabel`: What the tree says while a filter matched no entry. The `empty` slot
82445
+ * replaces it.
82143
82446
  * - `result-label`/`resultLabel`: What a screen reader hears when a filter matches one entry, where
82144
82447
  * `results-label` should not say it. `{count}` is the count.
82145
82448
  * - `results-label`/`resultsLabel`: What a screen reader hears when a filter matches entries. `{count}` is
@@ -82201,6 +82504,12 @@ export type CustomElementsSolidJs = {
82201
82504
  * - `helix-filtered`: The filter field changed `filter`, which now holds the text.
82202
82505
  * - `toggle`: A reader opened or closed a branch, with `newState` and `oldState`. `expanded` holds every open branch.
82203
82506
  *
82507
+ * ## Slots
82508
+ *
82509
+ * Areas where markup can be added to the component.
82510
+ *
82511
+ * - `empty`: Shown in the tree while it has no entries to show. Defaults to `empty-label`, or `no-matches-label` while a filter matched none.
82512
+ *
82204
82513
  * ## CSS Custom Properties
82205
82514
  *
82206
82515
  * CSS variables available for styling the component.
@@ -82231,6 +82540,7 @@ export type CustomElementsSolidJs = {
82231
82540
  * - `copy-tooltip-right`: The tooltip while it is right of the copy button. Set alongside `copy-tooltip`.
82232
82541
  * - `copy-tooltip-top`: The tooltip while it is above the copy button. Set alongside `copy-tooltip`.
82233
82542
  * - `count`: The number of entries a branch holds.
82543
+ * - `empty`: The row shown in the tree while it has no entries to show: no value, or a filter that matched none. It holds the `empty` slot.
82234
82544
  * - `frame`: The tree and the copy button beside it.
82235
82545
  * - `header`: The bar that holds the label, when there is one.
82236
82546
  * - `key`: A property name or an array index.
@@ -82252,6 +82562,9 @@ export type CustomElementsSolidJs = {
82252
82562
  *
82253
82563
  * These can be used to apply styling when a component is in a given state.
82254
82564
  *
82565
+ * - `empty`: While the tree has no entries to show: no value, or a filter that matched none.
82566
+ * - `filtered`: While `filter` holds text.
82567
+ * - `matched`: While `filter` holds text and matched at least one entry.
82255
82568
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
82256
82569
  */
82257
82570
  "helix-headless-object-inspector": Partial<
@@ -88110,6 +88423,8 @@ export type CustomElementsSolidJs = {
88110
88423
  * | Enter, Space on a sortable heading | Sorts by the column. |
88111
88424
  * | Space on a row, Enter or Space on its checkbox cell | Selects the row, in a `selectable` table. |
88112
88425
  * | Enter or Space on a disclosure cell | Shows or hides the rows under the row, in a table whose rows nest. |
88426
+ * | Right on a disclosure cell | Shows the rows under a shut row, and otherwise moves one cell along the row. Left does, on a right-to-left page. |
88427
+ * | Left on a disclosure cell | Hides the rows under an open row, and moves to the row this one sits under from any other. |
88113
88428
  * | 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. |
88114
88429
  * | 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. |
88115
88430
  * | Shift with Down or Up | Selects the rows it moves across, in a `selectable` table. |
@@ -88346,6 +88661,7 @@ export type CustomElementsSolidJs = {
88346
88661
  *
88347
88662
  * - `empty`: While there are no rows and none are loading.
88348
88663
  * - `error`: While `error-text` is set.
88664
+ * - `loading`: While `loading` is set, as the rows are on their way.
88349
88665
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
88350
88666
  */
88351
88667
  "helix-headless-table": Partial<
@@ -92693,6 +93009,9 @@ export type CustomElementsSolidJs = {
92693
93009
  * These can be used to apply styling when a component is in a given state.
92694
93010
  *
92695
93011
  * - `current`: The entry that is playing.
93012
+ * - `dragging`: The entry a pointer is dragging, in a `reorderable` playlist.
93013
+ * - `drop-after`: The entry the dragged one would land after, which the drop indicator is drawn under.
93014
+ * - `drop-before`: The entry the dragged one would land before, which the drop indicator is drawn over.
92696
93015
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
92697
93016
  */
92698
93017
  "helix-headless-video-playlist-item": Partial<
@@ -92841,6 +93160,21 @@ export type CustomElementsSolidJs = {
92841
93160
  * the next or the previous entry. The player's previous and next controls
92842
93161
  * move through the entries in the same order the playlist does.
92843
93162
  *
93163
+ * **Moving entries.** `reorderable` lets a reader change the order of the
93164
+ * queue:
93165
+ *
93166
+ * - Alt with Up or Down moves the focused entry a place, and Alt with Home or
93167
+ * End moves it to either end, as the APG's rearrangeable listbox does.
93168
+ * Focus stays on it.
93169
+ * - A pointer drags an entry, with a drop indicator, and the page scrolls near
93170
+ * an edge. A press that does not travel still plays the entry.
93171
+ * - A drop sends `helix-before-reorder`, which you can refuse, and then
93172
+ * `helix-reorder`, whose `keys` hold every entry's `value` in the new order.
93173
+ * **You move the entries**: the playlist moves no element of yours, and the
93174
+ * next entry is the one after the current entry in the order you leave.
93175
+ * - Each move is said in the live region, in words you can change:
93176
+ * `moved-label`, `dropped-label`, `canceled-label`, and `picked-up-label`.
93177
+ *
92844
93178
  * **What a screen reader hears.** A list named by `label`, with a button for
92845
93179
  * each entry. When the playlist moves to another entry, by a press, by the
92846
93180
  * player's controls, or at the end of a clip, a live region says
@@ -92850,17 +93184,29 @@ export type CustomElementsSolidJs = {
92850
93184
  *
92851
93185
  * Component attributes and properties that can be applied to the element or by using JavaScript.
92852
93186
  *
93187
+ * - `canceled-label`/`canceledLabel`: What screen readers hear when a move is put back, in a `reorderable`
93188
+ * playlist. `{name}` is the entry's words.
93189
+ * - `dropped-label`/`droppedLabel`: What screen readers hear when a moved entry is let go, in a `reorderable`
93190
+ * playlist. `{name}` is the entry's words.
92853
93191
  * - `empty-label`/`emptyLabel`: What the playlist says while it has no entries. The `empty` slot replaces it.
92854
93192
  * - `label`: The list's name, read by screen readers.
93193
+ * - `moved-label`/`movedLabel`: What screen readers hear each time a key moves an entry, in a
93194
+ * `reorderable` playlist. `{name}` is the entry's words, `{position}` its
93195
+ * new place, counting from 1, and `{count}` the number of entries.
92855
93196
  * - `no-advance`/`noAdvance`: Stays on an entry when its clip ends, where the playlist would otherwise
92856
93197
  * play the next one. The player's controls, a press, and `next()` still
92857
93198
  * move. `repeat="one"` still plays the entry again.
93199
+ * - `picked-up-label`/`pickedUpLabel`: What screen readers hear when a pointer picks up an entry, in a
93200
+ * `reorderable` playlist. `{name}` is the entry's words.
92858
93201
  * - `playing-label`/`playingLabel`: What the live region says when the playlist moves to another entry.
92859
93202
  * `{title}` is the entry's name.
92860
93203
  *
92861
93204
  * **A move a reader did not make is said.** At the end of a clip the
92862
93205
  * playlist starts the next one, and the only other trace of that is the
92863
93206
  * `aria-current` on a button the reader is not on.
93207
+ * - `reorderable`: Lets a reader move the entries, with Alt and the arrow keys or by
93208
+ * dragging one. The playlist moves no entry itself: you move your entries
93209
+ * on `helix-reorder`.
92864
93210
  * - `repeat`: What happens when an entry ends with no next one to go to. `one` plays the
92865
93211
  * same entry again, and `all` goes from the last entry back to the first.
92866
93212
  * Absent, the playlist stops on the last entry and sends `helix-end`.
@@ -92915,7 +93261,9 @@ export type CustomElementsSolidJs = {
92915
93261
  *
92916
93262
  * - `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.
92917
93263
  * - `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.
93264
+ * - `helix-before-reorder`: An entry was moved to a new place, in a `reorderable` playlist, with every entry's value in the new order in `detail.keys`. Cancelable: cancel it to keep the entry where it is.
92918
93265
  * - `helix-end`: The last entry finished playing, and the playlist stopped there. Not sent while `repeat` is set.
93266
+ * - `helix-reorder`: Fired after `helix-before-reorder` when nobody canceled it. Move your entries to the order in `keys`. Cancelable: cancel it to say the move did not happen.
92919
93267
  *
92920
93268
  * ## Slots
92921
93269
  *