@fusion.dev/helix-headless 0.165.0 → 0.167.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 (57) hide show
  1. package/custom-elements.json +3235 -534
  2. package/dist/callout/root/callout-root.d.ts +8 -2
  3. package/dist/callout/root/callout-root.js +14 -1
  4. package/dist/canvas/arrange.d.ts +32 -0
  5. package/dist/canvas/arrange.js +144 -0
  6. package/dist/canvas/paste.d.ts +25 -0
  7. package/dist/canvas/paste.js +58 -0
  8. package/dist/canvas/root/canvas-root.d.ts +60 -3
  9. package/dist/canvas/root/canvas-root.js +166 -2
  10. package/dist/chat/composer/chat-composer.js +5 -1
  11. package/dist/code-block/root/code-block-root.d.ts +63 -0
  12. package/dist/code-block/root/code-block-root.js +117 -6
  13. package/dist/combobox/root/combobox-root.d.ts +6 -1
  14. package/dist/combobox/root/combobox-root.js +2 -2
  15. package/dist/date-input/root/date-input-root.d.ts +1 -1
  16. package/dist/element-events.generated.js +17 -2
  17. package/dist/file-input/root/file-input-root.d.ts +1 -1
  18. package/dist/file-input/root/file-input-root.js +1 -1
  19. package/dist/filter-input/menu/filter-menu.d.ts +1 -0
  20. package/dist/filter-input/menu/filter-menu.js +1 -1
  21. package/dist/format-date/root/format-date-root.d.ts +10 -3
  22. package/dist/format-date/root/format-date-root.js +6 -1
  23. package/dist/listbox/root/listbox-root.d.ts +12 -1
  24. package/dist/listbox/root/listbox-root.js +15 -6
  25. package/dist/menu/item/menu-item.d.ts +20 -0
  26. package/dist/menu/item/menu-item.js +53 -20
  27. package/dist/menu/root/menu-root.d.ts +84 -1
  28. package/dist/menu/root/menu-root.js +187 -44
  29. package/dist/object-inspector/root/object-inspector-root.d.ts +5 -0
  30. package/dist/object-inspector/root/object-inspector-root.js +5 -0
  31. package/dist/select/root/select-root.js +1 -1
  32. package/dist/steps/root/steps-root.d.ts +7 -0
  33. package/dist/steps/root/steps-root.js +7 -0
  34. package/dist/table/grid-controller.d.ts +10 -0
  35. package/dist/table/grid-controller.js +7 -0
  36. package/dist/table/root/table-root.d.ts +71 -1
  37. package/dist/table/root/table-root.js +122 -7
  38. package/dist/table/row/table-row.d.ts +17 -0
  39. package/dist/table/row/table-row.js +23 -0
  40. package/dist/time-input/root/time-input-root.d.ts +2 -1
  41. package/dist/time-input/root/time-input-root.js +1 -1
  42. package/dist/time-picker/root/time-picker-root.d.ts +48 -1
  43. package/dist/time-picker/root/time-picker-root.js +79 -21
  44. package/dist/video/root/video-root.d.ts +2 -0
  45. package/dist/video/root/video-root.js +4 -2
  46. package/dist/video-playlist/menu/video-playlist-menu.d.ts +1 -0
  47. package/dist/video-playlist/menu/video-playlist-menu.js +1 -1
  48. package/dist/video-playlist/root/video-playlist-root.js +15 -1
  49. package/dist/virtual-list/root/virtual-list-root.d.ts +70 -2
  50. package/dist/virtual-list/root/virtual-list-root.js +216 -32
  51. package/dist/virtual-list/sections.d.ts +27 -0
  52. package/dist/virtual-list/sections.js +43 -0
  53. package/lint.json +1 -1
  54. package/package.json +5 -5
  55. package/types/jsx.d.ts +716 -96
  56. package/types/vue.d.ts +148 -12
  57. package/types/words.d.ts +45 -0
package/types/jsx.d.ts CHANGED
@@ -8,6 +8,7 @@ import type {
8
8
  HelixBeforeCollapseEvent,
9
9
  HelixBeforeMoveEvent,
10
10
  HelixBeforeOpenEvent,
11
+ HelixBeforePasteEvent,
11
12
  HelixBeforePinEvent,
12
13
  HelixBeforeReconnectEvent,
13
14
  HelixBeforeRelabelEvent,
@@ -201,6 +202,7 @@ import type {
201
202
  HelixMoveEvent,
202
203
  HelixNavigateEvent,
203
204
  HelixNextEvent,
205
+ HelixPastedEvent,
204
206
  HelixPinEvent,
205
207
  HelixPressEvent,
206
208
  HelixPreviewEvent,
@@ -3335,6 +3337,9 @@ export type HelixHeadlessCanvasElementEvent<E = Event> = TypedEvent<
3335
3337
  /** `helix-before-move` event type */
3336
3338
  export type HelixHeadlessCanvasHelixBeforeMoveElementEvent =
3337
3339
  HelixHeadlessCanvasElementEvent<HelixBeforeMoveEvent>;
3340
+ /** `helix-before-paste` event type */
3341
+ export type HelixHeadlessCanvasHelixBeforePasteElementEvent =
3342
+ HelixHeadlessCanvasElementEvent<HelixBeforePasteEvent>;
3338
3343
  /** `helix-before-reconnect` event type */
3339
3344
  export type HelixHeadlessCanvasHelixBeforeReconnectElementEvent =
3340
3345
  HelixHeadlessCanvasElementEvent<HelixBeforeReconnectEvent>;
@@ -3359,6 +3364,9 @@ export type HelixHeadlessCanvasHelixConnectElementEvent =
3359
3364
  /** `helix-move` event type */
3360
3365
  export type HelixHeadlessCanvasHelixMoveElementEvent =
3361
3366
  HelixHeadlessCanvasElementEvent<HelixMoveEvent>;
3367
+ /** `helix-pasted` event type */
3368
+ export type HelixHeadlessCanvasHelixPastedElementEvent =
3369
+ HelixHeadlessCanvasElementEvent<HelixPastedEvent>;
3362
3370
  /** `helix-reconnect` event type */
3363
3371
  export type HelixHeadlessCanvasHelixReconnectElementEvent =
3364
3372
  HelixHeadlessCanvasElementEvent<HelixReconnectEvent>;
@@ -3379,6 +3387,10 @@ export type HelixHeadlessCanvasProps = {
3379
3387
  /** The hint shown when the board, waiting to be pressed with
3380
3388
  `gestures="activate"`, is scrolled or swiped over. */
3381
3389
  activateHintLabel?: (HelixHeadlessCanvas["activateHintLabel"]) | undefined;
3390
+ /** What screen readers hear after `arrange()` moves the cards. */
3391
+ "arranged-label"?: (HelixHeadlessCanvas["arrangedLabel"]) | undefined;
3392
+ /** What screen readers hear after `arrange()` moves the cards. */
3393
+ arrangedLabel?: (HelixHeadlessCanvas["arrangedLabel"]) | undefined;
3382
3394
  /** The text read with a card to say where its connections come from, with `{cards}`. */
3383
3395
  "comes-from-label"?: (HelixHeadlessCanvas["comesFromLabel"]) | undefined;
3384
3396
  /** The text read with a card to say where its connections come from, with `{cards}`. */
@@ -3477,6 +3489,10 @@ on a board that is a flow is the order its author meant.
3477
3489
  Absent is spatial, a resting value being an attribute's absence: a default
3478
3490
  that reflected would write a choice onto every host that no server sent. */
3479
3491
  order?: (HelixHeadlessCanvas["order"]) | undefined;
3492
+ /** What screen readers hear after a paste, with `{count}` for the cards pasted. */
3493
+ "pasted-label"?: (HelixHeadlessCanvas["pastedLabel"]) | undefined;
3494
+ /** What screen readers hear after a paste, with `{count}` for the cards pasted. */
3495
+ pastedLabel?: (HelixHeadlessCanvas["pastedLabel"]) | undefined;
3480
3496
  /** The route every connection takes when it sets no `path` of its own:
3481
3497
  `straight`, or `step` for right angles.
3482
3498
 
@@ -3510,6 +3526,14 @@ walk the cards. */
3510
3526
  "redone-label"?: (HelixHeadlessCanvas["redoneLabel"]) | undefined;
3511
3527
  /** What screen readers hear after a move or a resize is made again. */
3512
3528
  redoneLabel?: (HelixHeadlessCanvas["redoneLabel"]) | undefined;
3529
+ /** What screen readers hear when Delete asks to remove what is selected, with
3530
+ `{count}` for how many cards and connections, and `{name}` for the one
3531
+ where there is one. */
3532
+ "removed-label"?: (HelixHeadlessCanvas["removedLabel"]) | undefined;
3533
+ /** What screen readers hear when Delete asks to remove what is selected, with
3534
+ `{count}` for how many cards and connections, and `{name}` for the one
3535
+ where there is one. */
3536
+ removedLabel?: (HelixHeadlessCanvas["removedLabel"]) | undefined;
3513
3537
  /** What screen readers hear after a key resizes a card, with `{name}` for the
3514
3538
  card and `{width}` and `{height}` for its new size, in the document's
3515
3539
  units. */
@@ -3787,6 +3811,10 @@ it rather than fitting the board again. */
3787
3811
  "onhelix-before-move"?: ((
3788
3812
  e: HelixHeadlessCanvasHelixBeforeMoveElementEvent,
3789
3813
  ) => void) | undefined;
3814
+ /** Cards and connections are about to be pasted. Cancelable: cancel it to add the detail's document to your own state. */
3815
+ "onhelix-before-paste"?: ((
3816
+ e: HelixHeadlessCanvasHelixBeforePasteElementEvent,
3817
+ ) => void) | undefined;
3790
3818
  /** A connection's end is about to move to another card or side. Cancelable: cancel it to keep connections in your own state. */
3791
3819
  "onhelix-before-reconnect"?: ((
3792
3820
  e: HelixHeadlessCanvasHelixBeforeReconnectElementEvent,
@@ -3815,6 +3843,8 @@ it rather than fitting the board again. */
3815
3843
  "onhelix-connect"?: ((e: HelixHeadlessCanvasHelixConnectElementEvent) => void) | undefined;
3816
3844
  /** Cards moved and the move is finished: a drag was released, a click put a card down, or a key was pressed. */
3817
3845
  "onhelix-move"?: ((e: HelixHeadlessCanvasHelixMoveElementEvent) => void) | undefined;
3846
+ /** Cards and connections were pasted, and the board holds them. */
3847
+ "onhelix-pasted"?: ((e: HelixHeadlessCanvasHelixPastedElementEvent) => void) | undefined;
3818
3848
  /** A connection's end moved, and the move is finished. */
3819
3849
  "onhelix-reconnect"?: ((
3820
3850
  e: HelixHeadlessCanvasHelixReconnectElementEvent,
@@ -3834,6 +3864,10 @@ export type HelixHeadlessCanvasSolidJsProps = {
3834
3864
  /** The hint shown when the board, waiting to be pressed with
3835
3865
  `gestures="activate"`, is scrolled or swiped over. */
3836
3866
  "prop:activateHintLabel"?: (HelixHeadlessCanvas["activateHintLabel"]) | undefined;
3867
+ /** What screen readers hear after `arrange()` moves the cards. */
3868
+ "attr:arranged-label"?: (HelixHeadlessCanvas["arrangedLabel"]) | undefined;
3869
+ /** What screen readers hear after `arrange()` moves the cards. */
3870
+ "prop:arrangedLabel"?: (HelixHeadlessCanvas["arrangedLabel"]) | undefined;
3837
3871
  /** The text read with a card to say where its connections come from, with `{cards}`. */
3838
3872
  "attr:comes-from-label"?: (HelixHeadlessCanvas["comesFromLabel"]) | undefined;
3839
3873
  /** The text read with a card to say where its connections come from, with `{cards}`. */
@@ -3932,6 +3966,10 @@ on a board that is a flow is the order its author meant.
3932
3966
  Absent is spatial, a resting value being an attribute's absence: a default
3933
3967
  that reflected would write a choice onto every host that no server sent. */
3934
3968
  "prop:order"?: (HelixHeadlessCanvas["order"]) | undefined;
3969
+ /** What screen readers hear after a paste, with `{count}` for the cards pasted. */
3970
+ "attr:pasted-label"?: (HelixHeadlessCanvas["pastedLabel"]) | undefined;
3971
+ /** What screen readers hear after a paste, with `{count}` for the cards pasted. */
3972
+ "prop:pastedLabel"?: (HelixHeadlessCanvas["pastedLabel"]) | undefined;
3935
3973
  /** The route every connection takes when it sets no `path` of its own:
3936
3974
  `straight`, or `step` for right angles.
3937
3975
 
@@ -3965,6 +4003,14 @@ walk the cards. */
3965
4003
  "attr:redone-label"?: (HelixHeadlessCanvas["redoneLabel"]) | undefined;
3966
4004
  /** What screen readers hear after a move or a resize is made again. */
3967
4005
  "prop:redoneLabel"?: (HelixHeadlessCanvas["redoneLabel"]) | undefined;
4006
+ /** What screen readers hear when Delete asks to remove what is selected, with
4007
+ `{count}` for how many cards and connections, and `{name}` for the one
4008
+ where there is one. */
4009
+ "attr:removed-label"?: (HelixHeadlessCanvas["removedLabel"]) | undefined;
4010
+ /** What screen readers hear when Delete asks to remove what is selected, with
4011
+ `{count}` for how many cards and connections, and `{name}` for the one
4012
+ where there is one. */
4013
+ "prop:removedLabel"?: (HelixHeadlessCanvas["removedLabel"]) | undefined;
3968
4014
  /** What screen readers hear after a key resizes a card, with `{name}` for the
3969
4015
  card and `{width}` and `{height}` for its new size, in the document's
3970
4016
  units. */
@@ -4241,6 +4287,10 @@ it rather than fitting the board again. */
4241
4287
  "on:helix-before-move"?: ((
4242
4288
  e: HelixHeadlessCanvasHelixBeforeMoveElementEvent,
4243
4289
  ) => void) | undefined;
4290
+ /** Cards and connections are about to be pasted. Cancelable: cancel it to add the detail's document to your own state. */
4291
+ "on:helix-before-paste"?: ((
4292
+ e: HelixHeadlessCanvasHelixBeforePasteElementEvent,
4293
+ ) => void) | undefined;
4244
4294
  /** A connection's end is about to move to another card or side. Cancelable: cancel it to keep connections in your own state. */
4245
4295
  "on:helix-before-reconnect"?: ((
4246
4296
  e: HelixHeadlessCanvasHelixBeforeReconnectElementEvent,
@@ -4269,6 +4319,8 @@ it rather than fitting the board again. */
4269
4319
  "on:helix-connect"?: ((e: HelixHeadlessCanvasHelixConnectElementEvent) => void) | undefined;
4270
4320
  /** Cards moved and the move is finished: a drag was released, a click put a card down, or a key was pressed. */
4271
4321
  "on:helix-move"?: ((e: HelixHeadlessCanvasHelixMoveElementEvent) => void) | undefined;
4322
+ /** Cards and connections were pasted, and the board holds them. */
4323
+ "on:helix-pasted"?: ((e: HelixHeadlessCanvasHelixPastedElementEvent) => void) | undefined;
4272
4324
  /** A connection's end moved, and the move is finished. */
4273
4325
  "on:helix-reconnect"?: ((
4274
4326
  e: HelixHeadlessCanvasHelixReconnectElementEvent,
@@ -6075,9 +6127,18 @@ export type HelixHeadlessCodeBlockElementEvent<E = Event> = TypedEvent<
6075
6127
  HelixHeadlessCodeBlock,
6076
6128
  E
6077
6129
  >;
6130
+ /** `helix-before-change` event type */
6131
+ export type HelixHeadlessCodeBlockHelixBeforeChangeElementEvent =
6132
+ HelixHeadlessCodeBlockElementEvent<HelixBeforeChangeEvent>;
6078
6133
  /** `helix-before-toggle` event type */
6079
6134
  export type HelixHeadlessCodeBlockHelixBeforeToggleElementEvent =
6080
6135
  HelixHeadlessCodeBlockElementEvent<HelixBeforeToggleEvent>;
6136
+ /** `helix-copy` event type */
6137
+ export type HelixHeadlessCodeBlockHelixCopyElementEvent =
6138
+ HelixHeadlessCodeBlockElementEvent<HelixCopyEvent>;
6139
+ /** `helix-copy-error` event type */
6140
+ export type HelixHeadlessCodeBlockHelixCopyErrorElementEvent =
6141
+ HelixHeadlessCodeBlockElementEvent<HelixCopyErrorEvent>;
6081
6142
  /** `helix-toggle` event type */
6082
6143
  export type HelixHeadlessCodeBlockHelixToggleElementEvent =
6083
6144
  HelixHeadlessCodeBlockElementEvent<HelixToggleEvent>;
@@ -6149,6 +6210,15 @@ block lays out. Not for a diff, whose files each scroll on their own. */
6149
6210
  "expand-label"?: (HelixHeadlessCodeBlock["expandLabel"]) | undefined;
6150
6211
  /** The expand button's words while the cap hides lines. */
6151
6212
  expandLabel?: (HelixHeadlessCodeBlock["expandLabel"]) | undefined;
6213
+ /** The name of the file shown, where the block holds several Code Blocks:
6214
+ the `label` of one, or its `language` without one.
6215
+
6216
+ Unset, or a name no file has, shows the first. */
6217
+ file?: (HelixHeadlessCodeBlock["file"]) | undefined;
6218
+ /** The name of the file tabs, read by screen readers. */
6219
+ "files-label"?: (HelixHeadlessCodeBlock["filesLabel"]) | undefined;
6220
+ /** The name of the file tabs, read by screen readers. */
6221
+ filesLabel?: (HelixHeadlessCodeBlock["filesLabel"]) | undefined;
6152
6222
  /** The words of a button that hides a run of unchanged lines it showed, in a
6153
6223
  diff with `context-lines`. `{count}` is how many, and each language
6154
6224
  writes the forms it has. */
@@ -6283,10 +6353,22 @@ the script still has it. Not called on a server, which has no code to
6283
6353
  read, nor for a diff. */
6284
6354
  highlight?: (HelixHeadlessCodeBlock["highlight"]) | undefined;
6285
6355
 
6356
+ /** A file tab showed its file, whose name `file` now holds. */
6357
+ onchange?: ((e: HelixHeadlessCodeBlockElementEvent) => void) | undefined;
6358
+ /** A file tab is about to show its file, with the file's name in `detail.value`. Cancelable: cancel it to keep the file shown. */
6359
+ "onhelix-before-change"?: ((
6360
+ e: HelixHeadlessCodeBlockHelixBeforeChangeElementEvent,
6361
+ ) => void) | undefined;
6286
6362
  /** The wrap button was pressed, with the `wrap` it asks for in `detail.checked`. Cancelable: cancel it to keep the lines as they are. */
6287
6363
  "onhelix-before-toggle"?: ((
6288
6364
  e: HelixHeadlessCodeBlockHelixBeforeToggleElementEvent,
6289
6365
  ) => void) | undefined;
6366
+ /** The copy button put the code on the clipboard, with the text in `detail.value`. */
6367
+ "onhelix-copy"?: ((e: HelixHeadlessCodeBlockHelixCopyElementEvent) => void) | undefined;
6368
+ /** A press on the copy button put nothing on the clipboard: the browser did not allow the write, or there was no code. */
6369
+ "onhelix-copy-error"?: ((
6370
+ e: HelixHeadlessCodeBlockHelixCopyErrorElementEvent,
6371
+ ) => void) | undefined;
6290
6372
  /** Fired after the wrap button changed `wrap`, with the new value in `detail.checked`. */
6291
6373
  "onhelix-toggle"?: ((e: HelixHeadlessCodeBlockHelixToggleElementEvent) => void) | undefined;
6292
6374
  };
@@ -6358,6 +6440,15 @@ block lays out. Not for a diff, whose files each scroll on their own. */
6358
6440
  "attr:expand-label"?: (HelixHeadlessCodeBlock["expandLabel"]) | undefined;
6359
6441
  /** The expand button's words while the cap hides lines. */
6360
6442
  "prop:expandLabel"?: (HelixHeadlessCodeBlock["expandLabel"]) | undefined;
6443
+ /** The name of the file shown, where the block holds several Code Blocks:
6444
+ the `label` of one, or its `language` without one.
6445
+
6446
+ Unset, or a name no file has, shows the first. */
6447
+ "prop:file"?: (HelixHeadlessCodeBlock["file"]) | undefined;
6448
+ /** The name of the file tabs, read by screen readers. */
6449
+ "attr:files-label"?: (HelixHeadlessCodeBlock["filesLabel"]) | undefined;
6450
+ /** The name of the file tabs, read by screen readers. */
6451
+ "prop:filesLabel"?: (HelixHeadlessCodeBlock["filesLabel"]) | undefined;
6361
6452
  /** The words of a button that hides a run of unchanged lines it showed, in a
6362
6453
  diff with `context-lines`. `{count}` is how many, and each language
6363
6454
  writes the forms it has. */
@@ -6491,10 +6582,22 @@ in the slot, so the copy button copies it as written and a reader without
6491
6582
  the script still has it. Not called on a server, which has no code to
6492
6583
  read, nor for a diff. */
6493
6584
  "prop:highlight"?: (HelixHeadlessCodeBlock["highlight"]) | undefined;
6585
+ /** A file tab showed its file, whose name `file` now holds. */
6586
+ "on:change"?: ((e: HelixHeadlessCodeBlockElementEvent) => void) | undefined;
6587
+ /** A file tab is about to show its file, with the file's name in `detail.value`. Cancelable: cancel it to keep the file shown. */
6588
+ "on:helix-before-change"?: ((
6589
+ e: HelixHeadlessCodeBlockHelixBeforeChangeElementEvent,
6590
+ ) => void) | undefined;
6494
6591
  /** The wrap button was pressed, with the `wrap` it asks for in `detail.checked`. Cancelable: cancel it to keep the lines as they are. */
6495
6592
  "on:helix-before-toggle"?: ((
6496
6593
  e: HelixHeadlessCodeBlockHelixBeforeToggleElementEvent,
6497
6594
  ) => void) | undefined;
6595
+ /** The copy button put the code on the clipboard, with the text in `detail.value`. */
6596
+ "on:helix-copy"?: ((e: HelixHeadlessCodeBlockHelixCopyElementEvent) => void) | undefined;
6597
+ /** A press on the copy button put nothing on the clipboard: the browser did not allow the write, or there was no code. */
6598
+ "on:helix-copy-error"?: ((
6599
+ e: HelixHeadlessCodeBlockHelixCopyErrorElementEvent,
6600
+ ) => void) | undefined;
6498
6601
  /** Fired after the wrap button changed `wrap`, with the new value in `detail.checked`. */
6499
6602
  "on:helix-toggle"?: ((
6500
6603
  e: HelixHeadlessCodeBlockHelixToggleElementEvent,
@@ -14161,7 +14264,8 @@ such as `buddhist` for `th-TH`, and `gregory` for every other, such as
14161
14264
  `persian` for `fa-IR`, so a date written here reads as the same date a
14162
14265
  Date Picker beside it shows. Write `calendar="persian"` for Mehr 14, 1405. */
14163
14266
  calendar?: (HelixHeadlessFormatDate["calendar"]) | undefined;
14164
- /** The timestamp, in any format `Date` can parse.
14267
+ /** The timestamp: a `Date`, milliseconds since the epoch, or a string in any
14268
+ format `Date` can parse. The attribute is the string.
14165
14269
 
14166
14270
  An ISO string is what an API sends and what `<time datetime>` takes, so it
14167
14271
  is the shape that needs no translation at either end. Left unset this
@@ -14305,7 +14409,8 @@ such as `buddhist` for `th-TH`, and `gregory` for every other, such as
14305
14409
  `persian` for `fa-IR`, so a date written here reads as the same date a
14306
14410
  Date Picker beside it shows. Write `calendar="persian"` for Mehr 14, 1405. */
14307
14411
  "prop:calendar"?: (HelixHeadlessFormatDate["calendar"]) | undefined;
14308
- /** The timestamp, in any format `Date` can parse.
14412
+ /** The timestamp: a `Date`, milliseconds since the epoch, or a string in any
14413
+ format `Date` can parse. The attribute is the string.
14309
14414
 
14310
14415
  An ISO string is what an API sends and what `<time datetime>` takes, so it
14311
14416
  is the shape that needs no translation at either end. Left unset this
@@ -20863,6 +20968,9 @@ export type HelixHeadlessMenuHelixBeforeCloseElementEvent =
20863
20968
  /** `helix-before-open` event type */
20864
20969
  export type HelixHeadlessMenuHelixBeforeOpenElementEvent =
20865
20970
  HelixHeadlessMenuElementEvent<HelixBeforeOpenEvent>;
20971
+ /** `helix-filter` event type */
20972
+ export type HelixHeadlessMenuHelixFilterElementEvent =
20973
+ HelixHeadlessMenuElementEvent<HelixFilterEvent>;
20866
20974
  /** `helix-select` event type */
20867
20975
  export type HelixHeadlessMenuHelixSelectElementEvent =
20868
20976
  HelixHeadlessMenuElementEvent<HelixSelectEvent>;
@@ -20890,6 +20998,18 @@ Ark UI's `closeOnSelect` does. A row's own `close-on-select` wins over this. */
20890
20998
  /** Whether the menu is the trigger's context menu: it opens where the reader
20891
20999
  asks for one, with a right-click, a long press, Shift+F10 or the menu key. */
20892
21000
  context?: (HelixHeadlessMenu["context"]) | undefined;
21001
+ /** The text the rows are filtered by, which the filter field holds.
21002
+
21003
+ Cleared as the menu closes and as a submenu opens or closes, so each page
21004
+ starts with every row showing. */
21005
+ filter?: (HelixHeadlessMenu["filter"]) | undefined;
21006
+ /** Whether the menu shows a field above its rows that narrows them as the
21007
+ reader types, with focus staying in the field. */
21008
+ filterable?: (HelixHeadlessMenu["filterable"]) | undefined;
21009
+ /** The filter field's name and placeholder. */
21010
+ "filter-label"?: (HelixHeadlessMenu["filterLabel"]) | undefined;
21011
+ /** The filter field's name and placeholder. */
21012
+ filterLabel?: (HelixHeadlessMenu["filterLabel"]) | undefined;
20893
21013
  /** Accessible name for the surface.
20894
21014
 
20895
21015
  Empty by default, which names the surface by its trigger, so a menu opened
@@ -20902,6 +21022,10 @@ to open the menu. Translate it with the rest of your interface. */
20902
21022
  /** The description a trigger gives under `open-on="long-press"`, saying how
20903
21023
  to open the menu. Translate it with the rest of your interface. */
20904
21024
  longPressLabel?: (HelixHeadlessMenu["longPressLabel"]) | undefined;
21025
+ /** The text shown when the filter keeps no rows. */
21026
+ "no-results-text"?: (HelixHeadlessMenu["noResultsText"]) | undefined;
21027
+ /** The text shown when the filter keeps no rows. */
21028
+ noResultsText?: (HelixHeadlessMenu["noResultsText"]) | undefined;
20905
21029
  /** Space between the trigger and the surface, in pixels. */
20906
21030
  offset?: (HelixHeadlessMenu["offset"]) | undefined;
20907
21031
  /** What opens the menu from its trigger. `long-press` leaves a press to the
@@ -20950,6 +21074,13 @@ hydration, or diffed by a framework, it comes back holding whatever the
20950
21074
  last reader did rather than what the author wrote. `:state(open)` carries
20951
21075
  the resolved state for stylesheets, which is what the mirror is for. */
20952
21076
  open?: (HelixHeadlessMenu["open"]) | undefined;
21077
+ /** Whether a row is kept by the filter: a function given the row's words and
21078
+ the filter, trimmed, that returns `true` to keep it showing, as React
21079
+ Aria's `Autocomplete` takes `filter`. See Listbox's `filterMatch`.
21080
+
21081
+ Absent, a row is kept where its words hold the filter, in any case. A
21082
+ property only, there being no way to write a function in markup. */
21083
+ filterMatch?: (HelixHeadlessMenu["filterMatch"]) | undefined;
20953
21084
 
20954
21085
  /** The menu is about to close. Cancelable: cancel it to keep it open. */
20955
21086
  "onhelix-before-close"?: ((
@@ -20959,6 +21090,8 @@ the resolved state for stylesheets, which is what the mirror is for. */
20959
21090
  "onhelix-before-open"?: ((
20960
21091
  e: HelixHeadlessMenuHelixBeforeOpenElementEvent,
20961
21092
  ) => void) | undefined;
21093
+ /** The text in the filter field changed, with the new text in `detail.value`. Cancelable: cancel it to keep every row showing and narrow the rows yourself. */
21094
+ "onhelix-filter"?: ((e: HelixHeadlessMenuHelixFilterElementEvent) => void) | undefined;
20962
21095
  /** An item was chosen. Cancelable: cancel it to keep the menu open. */
20963
21096
  "onhelix-select"?: ((e: HelixHeadlessMenuHelixSelectElementEvent) => void) | undefined;
20964
21097
  /** The menu opened or closed. The event carries `newState` and `oldState`. */
@@ -20985,6 +21118,18 @@ Ark UI's `closeOnSelect` does. A row's own `close-on-select` wins over this. */
20985
21118
  /** Whether the menu is the trigger's context menu: it opens where the reader
20986
21119
  asks for one, with a right-click, a long press, Shift+F10 or the menu key. */
20987
21120
  "prop:context"?: (HelixHeadlessMenu["context"]) | undefined;
21121
+ /** The text the rows are filtered by, which the filter field holds.
21122
+
21123
+ Cleared as the menu closes and as a submenu opens or closes, so each page
21124
+ starts with every row showing. */
21125
+ "prop:filter"?: (HelixHeadlessMenu["filter"]) | undefined;
21126
+ /** Whether the menu shows a field above its rows that narrows them as the
21127
+ reader types, with focus staying in the field. */
21128
+ "prop:filterable"?: (HelixHeadlessMenu["filterable"]) | undefined;
21129
+ /** The filter field's name and placeholder. */
21130
+ "attr:filter-label"?: (HelixHeadlessMenu["filterLabel"]) | undefined;
21131
+ /** The filter field's name and placeholder. */
21132
+ "prop:filterLabel"?: (HelixHeadlessMenu["filterLabel"]) | undefined;
20988
21133
  /** Accessible name for the surface.
20989
21134
 
20990
21135
  Empty by default, which names the surface by its trigger, so a menu opened
@@ -20997,6 +21142,10 @@ to open the menu. Translate it with the rest of your interface. */
20997
21142
  /** The description a trigger gives under `open-on="long-press"`, saying how
20998
21143
  to open the menu. Translate it with the rest of your interface. */
20999
21144
  "prop:longPressLabel"?: (HelixHeadlessMenu["longPressLabel"]) | undefined;
21145
+ /** The text shown when the filter keeps no rows. */
21146
+ "attr:no-results-text"?: (HelixHeadlessMenu["noResultsText"]) | undefined;
21147
+ /** The text shown when the filter keeps no rows. */
21148
+ "prop:noResultsText"?: (HelixHeadlessMenu["noResultsText"]) | undefined;
21000
21149
  /** Space between the trigger and the surface, in pixels. */
21001
21150
  "prop:offset"?: (HelixHeadlessMenu["offset"]) | undefined;
21002
21151
  /** What opens the menu from its trigger. `long-press` leaves a press to the
@@ -21045,6 +21194,13 @@ hydration, or diffed by a framework, it comes back holding whatever the
21045
21194
  last reader did rather than what the author wrote. `:state(open)` carries
21046
21195
  the resolved state for stylesheets, which is what the mirror is for. */
21047
21196
  "prop:open"?: (HelixHeadlessMenu["open"]) | undefined;
21197
+ /** Whether a row is kept by the filter: a function given the row's words and
21198
+ the filter, trimmed, that returns `true` to keep it showing, as React
21199
+ Aria's `Autocomplete` takes `filter`. See Listbox's `filterMatch`.
21200
+
21201
+ Absent, a row is kept where its words hold the filter, in any case. A
21202
+ property only, there being no way to write a function in markup. */
21203
+ "prop:filterMatch"?: (HelixHeadlessMenu["filterMatch"]) | undefined;
21048
21204
  /** The menu is about to close. Cancelable: cancel it to keep it open. */
21049
21205
  "on:helix-before-close"?: ((
21050
21206
  e: HelixHeadlessMenuHelixBeforeCloseElementEvent,
@@ -21053,6 +21209,8 @@ the resolved state for stylesheets, which is what the mirror is for. */
21053
21209
  "on:helix-before-open"?: ((
21054
21210
  e: HelixHeadlessMenuHelixBeforeOpenElementEvent,
21055
21211
  ) => void) | undefined;
21212
+ /** The text in the filter field changed, with the new text in `detail.value`. Cancelable: cancel it to keep every row showing and narrow the rows yourself. */
21213
+ "on:helix-filter"?: ((e: HelixHeadlessMenuHelixFilterElementEvent) => void) | undefined;
21056
21214
  /** An item was chosen. Cancelable: cancel it to keep the menu open. */
21057
21215
  "on:helix-select"?: ((e: HelixHeadlessMenuHelixSelectElementEvent) => void) | undefined;
21058
21216
  /** The menu opened or closed. The event carries `newState` and `oldState`. */
@@ -29409,6 +29567,15 @@ order has its whole sentence. `{order}` is the deprecated
29409
29567
  "unsorted-label"?: (HelixHeadlessTable["unsortedLabel"]) | undefined;
29410
29568
  /** What screen readers hear when the table stops being sorted. */
29411
29569
  unsortedLabel?: (HelixHeadlessTable["unsortedLabel"]) | undefined;
29570
+ /** Draws only the rows in view, with empty space in place of the rest, as
29571
+ Data Table's `windowed` does. The table's box then scrolls, at the
29572
+ height `--table-block-size` gives it in the styled tier, and the
29573
+ headings stick to its top.
29574
+
29575
+ Off by default. Windowing costs a scroll listener, a measurement per row
29576
+ drawn, and a height on the table, and a table of twenty rows should pay
29577
+ none of them. */
29578
+ windowed?: (HelixHeadlessTable["windowed"]) | undefined;
29412
29579
  /** The text shown and announced when there are no rows and none are loading. */
29413
29580
  "empty-text"?: (HelixHeadlessTable["emptyText"]) | undefined;
29414
29581
  /** The text shown and announced when there are no rows and none are loading. */
@@ -29665,6 +29832,15 @@ order has its whole sentence. `{order}` is the deprecated
29665
29832
  "attr:unsorted-label"?: (HelixHeadlessTable["unsortedLabel"]) | undefined;
29666
29833
  /** What screen readers hear when the table stops being sorted. */
29667
29834
  "prop:unsortedLabel"?: (HelixHeadlessTable["unsortedLabel"]) | undefined;
29835
+ /** Draws only the rows in view, with empty space in place of the rest, as
29836
+ Data Table's `windowed` does. The table's box then scrolls, at the
29837
+ height `--table-block-size` gives it in the styled tier, and the
29838
+ headings stick to its top.
29839
+
29840
+ Off by default. Windowing costs a scroll listener, a measurement per row
29841
+ drawn, and a height on the table, and a table of twenty rows should pay
29842
+ none of them. */
29843
+ "prop:windowed"?: (HelixHeadlessTable["windowed"]) | undefined;
29668
29844
  /** The text shown and announced when there are no rows and none are loading. */
29669
29845
  "attr:empty-text"?: (HelixHeadlessTable["emptyText"]) | undefined;
29670
29846
  /** The text shown and announced when there are no rows and none are loading. */
@@ -31746,6 +31922,12 @@ and a wheel has exactly one value by construction. Rather than draw
31746
31922
  something that cannot say what it holds, `wheels` renders as a list
31747
31923
  whenever a mode is set. */
31748
31924
  mode?: (HelixHeadlessTimePicker["mode"]) | undefined;
31925
+ /** The words on the button that chooses the current time, drawn with
31926
+ `show-now`. */
31927
+ "now-label"?: (HelixHeadlessTimePicker["nowLabel"]) | undefined;
31928
+ /** The words on the button that chooses the current time, drawn with
31929
+ `show-now`. */
31930
+ nowLabel?: (HelixHeadlessTimePicker["nowLabel"]) | undefined;
31749
31931
  /** The validation message for a time after `max`. `{max}` is replaced with
31750
31932
  `max`, written in `locale`. */
31751
31933
  "range-overflow-message"?: (HelixHeadlessTimePicker["rangeOverflowMessage"]) | undefined;
@@ -31802,6 +31984,22 @@ wheels take a column of seconds, and `step` counts seconds, the unit
31802
31984
  rows, so give `seconds` a `step` and bounds that keep it a list, or use
31803
31985
  the wheels. */
31804
31986
  seconds?: (HelixHeadlessTimePicker["seconds"]) | undefined;
31987
+ /** Draws a button under the times that chooses the current time, as
31988
+ `selectNow()` does.
31989
+
31990
+ For a form about something happening now, such as a shift starting or a
31991
+ dose taken, where the reader would otherwise scroll to the time on the
31992
+ clock. The button is a tab stop after the times, and its words are
31993
+ `now-label`. */
31994
+ "show-now"?: (HelixHeadlessTimePicker["showNow"]) | undefined;
31995
+ /** Draws a button under the times that chooses the current time, as
31996
+ `selectNow()` does.
31997
+
31998
+ For a form about something happening now, such as a shift starting or a
31999
+ dose taken, where the reader would otherwise scroll to the time on the
32000
+ clock. The button is a tab stop after the times, and its words are
32001
+ `now-label`. */
32002
+ showNow?: (HelixHeadlessTimePicker["showNow"]) | undefined;
31805
32003
  /** How far apart the offered times are, in minutes, or in seconds with
31806
32004
  `seconds`.
31807
32005
 
@@ -32060,6 +32258,12 @@ and a wheel has exactly one value by construction. Rather than draw
32060
32258
  something that cannot say what it holds, `wheels` renders as a list
32061
32259
  whenever a mode is set. */
32062
32260
  "prop:mode"?: (HelixHeadlessTimePicker["mode"]) | undefined;
32261
+ /** The words on the button that chooses the current time, drawn with
32262
+ `show-now`. */
32263
+ "attr:now-label"?: (HelixHeadlessTimePicker["nowLabel"]) | undefined;
32264
+ /** The words on the button that chooses the current time, drawn with
32265
+ `show-now`. */
32266
+ "prop:nowLabel"?: (HelixHeadlessTimePicker["nowLabel"]) | undefined;
32063
32267
  /** The validation message for a time after `max`. `{max}` is replaced with
32064
32268
  `max`, written in `locale`. */
32065
32269
  "attr:range-overflow-message"?: (HelixHeadlessTimePicker["rangeOverflowMessage"]) | undefined;
@@ -32116,6 +32320,22 @@ wheels take a column of seconds, and `step` counts seconds, the unit
32116
32320
  rows, so give `seconds` a `step` and bounds that keep it a list, or use
32117
32321
  the wheels. */
32118
32322
  "prop:seconds"?: (HelixHeadlessTimePicker["seconds"]) | undefined;
32323
+ /** Draws a button under the times that chooses the current time, as
32324
+ `selectNow()` does.
32325
+
32326
+ For a form about something happening now, such as a shift starting or a
32327
+ dose taken, where the reader would otherwise scroll to the time on the
32328
+ clock. The button is a tab stop after the times, and its words are
32329
+ `now-label`. */
32330
+ "bool:show-now"?: (HelixHeadlessTimePicker["showNow"]) | undefined;
32331
+ /** Draws a button under the times that chooses the current time, as
32332
+ `selectNow()` does.
32333
+
32334
+ For a form about something happening now, such as a shift starting or a
32335
+ dose taken, where the reader would otherwise scroll to the time on the
32336
+ clock. The button is a tab stop after the times, and its words are
32337
+ `now-label`. */
32338
+ "prop:showNow"?: (HelixHeadlessTimePicker["showNow"]) | undefined;
32119
32339
  /** How far apart the offered times are, in minutes, or in seconds with
32120
32340
  `seconds`.
32121
32341
 
@@ -35969,6 +36189,23 @@ follows the box as it resizes, which `columns` then does not decide. */
35969
36189
  out as many columns as fit the box at that width, at least one, and
35970
36190
  follows the box as it resizes, which `columns` then does not decide. */
35971
36191
  minColumnWidth?: (HelixHeadlessVirtualList["minColumnWidth"]) | undefined;
36192
+ /** Which way the list runs. `horizontal` lays the items out along a line
36193
+ and scrolls it sideways: Left and Right move between items, the other
36194
+ way round on a right-to-left page, and `estimate` is an item's width. A
36195
+ grid always runs down. */
36196
+ orientation?: (HelixHeadlessVirtualList["orientation"]) | undefined;
36197
+ /** The field of each item that names its section, as a key or a path of
36198
+ keys. Set, the items are drawn in sections: a header, then the items, in
36199
+ an element with the `group` role that the header names. A section starts
36200
+ wherever the field changes, so give the items in order. A list of one
36201
+ column only. */
36202
+ "section-field"?: (HelixHeadlessVirtualList["sectionField"]) | undefined;
36203
+ /** The field of each item that names its section, as a key or a path of
36204
+ keys. Set, the items are drawn in sections: a header, then the items, in
36205
+ an element with the `group` role that the header names. A section starts
36206
+ wherever the field changes, so give the items in order. A list of one
36207
+ column only. */
36208
+ sectionField?: (HelixHeadlessVirtualList["sectionField"]) | undefined;
35972
36209
  /** What a press does to the items already chosen: `toggle` adds or takes out
35973
36210
  the item, and `replace` selects it alone and lets the arrow keys carry the
35974
36211
  selection, with Control or Command adding or taking out one item. */
@@ -36011,6 +36248,10 @@ It returns what Lit renders: a template from `html`, a string, or a DOM
36011
36248
  node. The list wraps each result in a `<div>` that carries the row's role
36012
36249
  and place in the set. Where it is unset, the row `<template>` is used. */
36013
36250
  renderItem?: (HelixHeadlessVirtualList["renderItem"]) | undefined;
36251
+ /** Draws each section's header, given its name and its place among the
36252
+ sections, for a list given `section-field`. Set it as a property. Where
36253
+ it is unset, the header is the name as text. */
36254
+ renderSection?: (HelixHeadlessVirtualList["renderSection"]) | undefined;
36014
36255
 
36015
36256
  /** Fired once a press or a key has changed which items are selected, in a list with `selection-mode`. */
36016
36257
  onchange?: ((e: HelixHeadlessVirtualListElementEvent) => void) | undefined;
@@ -36101,6 +36342,23 @@ follows the box as it resizes, which `columns` then does not decide. */
36101
36342
  out as many columns as fit the box at that width, at least one, and
36102
36343
  follows the box as it resizes, which `columns` then does not decide. */
36103
36344
  "prop:minColumnWidth"?: (HelixHeadlessVirtualList["minColumnWidth"]) | undefined;
36345
+ /** Which way the list runs. `horizontal` lays the items out along a line
36346
+ and scrolls it sideways: Left and Right move between items, the other
36347
+ way round on a right-to-left page, and `estimate` is an item's width. A
36348
+ grid always runs down. */
36349
+ "prop:orientation"?: (HelixHeadlessVirtualList["orientation"]) | undefined;
36350
+ /** The field of each item that names its section, as a key or a path of
36351
+ keys. Set, the items are drawn in sections: a header, then the items, in
36352
+ an element with the `group` role that the header names. A section starts
36353
+ wherever the field changes, so give the items in order. A list of one
36354
+ column only. */
36355
+ "attr:section-field"?: (HelixHeadlessVirtualList["sectionField"]) | undefined;
36356
+ /** The field of each item that names its section, as a key or a path of
36357
+ keys. Set, the items are drawn in sections: a header, then the items, in
36358
+ an element with the `group` role that the header names. A section starts
36359
+ wherever the field changes, so give the items in order. A list of one
36360
+ column only. */
36361
+ "prop:sectionField"?: (HelixHeadlessVirtualList["sectionField"]) | undefined;
36104
36362
  /** What a press does to the items already chosen: `toggle` adds or takes out
36105
36363
  the item, and `replace` selects it alone and lets the arrow keys carry the
36106
36364
  selection, with Control or Command adding or taking out one item. */
@@ -36143,6 +36401,10 @@ It returns what Lit renders: a template from `html`, a string, or a DOM
36143
36401
  node. The list wraps each result in a `<div>` that carries the row's role
36144
36402
  and place in the set. Where it is unset, the row `<template>` is used. */
36145
36403
  "prop:renderItem"?: (HelixHeadlessVirtualList["renderItem"]) | undefined;
36404
+ /** Draws each section's header, given its name and its place among the
36405
+ sections, for a list given `section-field`. Set it as a property. Where
36406
+ it is unset, the header is the name as text. */
36407
+ "prop:renderSection"?: (HelixHeadlessVirtualList["renderSection"]) | undefined;
36146
36408
  /** Fired once a press or a key has changed which items are selected, in a list with `selection-mode`. */
36147
36409
  "on:change"?: ((e: HelixHeadlessVirtualListElementEvent) => void) | undefined;
36148
36410
  /** Fired before a press or a key changes which items are selected, with the `value` it would leave. Cancelable. */
@@ -38517,7 +38779,7 @@ export type CustomElements = {
38517
38779
  * forgetting of a reader's past attempt, whose message otherwise showed over
38518
38780
  * the emptied control the moment the form was reset.
38519
38781
  * - `checkValidity() => boolean`: Returns whether the control is valid, and fires `invalid` on it when it is
38520
- * not.
38782
+ * not. The control shows no message for it: `reportValidity()` does that.
38521
38783
  * - `reportValidity() => boolean`: Returns whether the control is valid, and when it is not, fires `invalid`
38522
38784
  * and shows the browser's message at the control.
38523
38785
  * - `setCustomValidity(message: string) => void`: Marks the control invalid with `message`, or clears that with an empty
@@ -38961,15 +39223,24 @@ export type CustomElements = {
38961
39223
  * card or connection says so when a reader arrives on it.
38962
39224
  * - Control or Command with C copies the selected cards, and the connections
38963
39225
  * between them, as a JSON Canvas document in text, which another board or
38964
- * an app that reads the format takes. A paste is your page's: listen for
38965
- * `paste` on the board, read the text with `fromJsonCanvas`, and add the
38966
- * cards it holds.
39226
+ * an app that reads the format takes.
39227
+ * - Control or Command with V pastes a JSON Canvas document: the board adds
39228
+ * its cards and connections, a step down and to the right of any card they
39229
+ * would sit on, and selects them. It asks with `helix-before-paste` first.
39230
+ * A page that renders its cards from its own state cancels it and adds the
39231
+ * detail's document to that state, through `fromJsonCanvas`. `paste()` does
39232
+ * the same from a script.
38967
39233
  * - Control or Command with Z undoes the last move or resize the board made,
38968
39234
  * and with Shift, or Control with Y, makes it again. `undo()` and `redo()`
38969
39235
  * do the same from a script. Each asks with `helix-before-move` and tells
38970
39236
  * with `helix-move`, as a move does, so a board that holds its positions in
38971
39237
  * your state is undone through your state.
38972
39238
  *
39239
+ * **`arrange()` moves every card so that none overlaps another**, in layers
39240
+ * that follow the arrows, or in a grid on a board with no connections. The
39241
+ * cards glide for as long as the board's own transition, and `undo()` puts
39242
+ * them back.
39243
+ *
38973
39244
  * Every drag also works with clicks, as WCAG 2.5.7 requires for a pointer that
38974
39245
  * cannot hold a button down. Click a selected card's move handle, a corner, a
38975
39246
  * card's connection point, or the end of a selected connection to pick it up.
@@ -39017,6 +39288,7 @@ export type CustomElements = {
39017
39288
  *
39018
39289
  * - `activate-hint-label`/`activateHintLabel`: The hint shown when the board, waiting to be pressed with
39019
39290
  * `gestures="activate"`, is scrolled or swiped over.
39291
+ * - `arranged-label`/`arrangedLabel`: What screen readers hear after `arrange()` moves the cards.
39020
39292
  * - `comes-from-label`/`comesFromLabel`: The text read with a card to say where its connections come from, with `{cards}`.
39021
39293
  * - `connected-label`/`connectedLabel`: The text announced when a connection is requested, with `{from}` and `{to}`.
39022
39294
  * - `connecting-label`/`connectingLabel`: The text announced when a connection is started, with `{from}` filled in.
@@ -39061,6 +39333,7 @@ export type CustomElements = {
39061
39333
  *
39062
39334
  * Absent is spatial, a resting value being an attribute's absence: a default
39063
39335
  * that reflected would write a choice onto every host that no server sent.
39336
+ * - `pasted-label`/`pastedLabel`: What screen readers hear after a paste, with `{count}` for the cards pasted.
39064
39337
  * - `path`: The route every connection takes when it sets no `path` of its own:
39065
39338
  * `straight`, or `step` for right angles.
39066
39339
  *
@@ -39077,6 +39350,9 @@ export type CustomElements = {
39077
39350
  * - `reconnecting-label`/`reconnectingLabel`: The text announced when a connection's end is picked up, with `{from}` and
39078
39351
  * `{to}`.
39079
39352
  * - `redone-label`/`redoneLabel`: What screen readers hear after a move or a resize is made again.
39353
+ * - `removed-label`/`removedLabel`: What screen readers hear when Delete asks to remove what is selected, with
39354
+ * `{count}` for how many cards and connections, and `{name}` for the one
39355
+ * where there is one.
39080
39356
  * - `resized-label`/`resizedLabel`: What screen readers hear after a key resizes a card, with `{name}` for the
39081
39357
  * card and `{width}` and `{height}` for its new size, in the document's
39082
39358
  * units.
@@ -39257,6 +39533,7 @@ export type CustomElements = {
39257
39533
  * Events that will be emitted by the component.
39258
39534
  *
39259
39535
  * - `helix-before-move`: Cards are about to move. Cancelable: cancel it to keep the positions in your own state.
39536
+ * - `helix-before-paste`: Cards and connections are about to be pasted. Cancelable: cancel it to add the detail's document to your own state.
39260
39537
  * - `helix-before-reconnect`: A connection's end is about to move to another card or side. Cancelable: cancel it to keep connections in your own state.
39261
39538
  * - `helix-before-relabel`: A connection's label or a group's name is about to change. Cancelable: cancel it to keep labels in your own state.
39262
39539
  * - `helix-canvas-edit`: A card was double-clicked, or Enter or F2 was pressed on it. Open your own editor for the card.
@@ -39265,6 +39542,7 @@ export type CustomElements = {
39265
39542
  * - `helix-canvas-zoom`: The board zoomed one step, from its controls or the keys. A wheel or a pinch sends `helix-canvas-view`.
39266
39543
  * - `helix-connect`: Two cards were chosen to be joined. Add a `helix-canvas-edge` to join them.
39267
39544
  * - `helix-move`: Cards moved and the move is finished: a drag was released, a click put a card down, or a key was pressed.
39545
+ * - `helix-pasted`: Cards and connections were pasted, and the board holds them.
39268
39546
  * - `helix-reconnect`: A connection's end moved, and the move is finished.
39269
39547
  * - `helix-relabel`: A connection's label or a group's name changed.
39270
39548
  * - `helix-remove`: Cards or connections were chosen for removal. Remove the elements it names.
@@ -39318,6 +39596,24 @@ export type CustomElements = {
39318
39596
  * with nothing to undo, or when the request was refused.
39319
39597
  * - `redo() => boolean`: Makes the last move or resize `undo` took back again, asking with
39320
39598
  * `helix-before-move` first. Returns whether anything moved.
39599
+ * - `paste(document: CanvasDocument | string) => boolean`: Adds the cards and connections of a JSON Canvas document, as a paste does,
39600
+ * and selects the cards. Ids the board already holds are given a count after
39601
+ * them, and the cards move a step down and to the right while they would sit
39602
+ * on cards already there.
39603
+ *
39604
+ * Asks with `helix-before-paste` first: cancel it to add the detail's
39605
+ * document to your own state. Returns whether the board added the cards:
39606
+ * false on a `readonly` board, for text that is not a board, or when the
39607
+ * request was refused.
39608
+ * - `arrange(options: CanvasArrangeOptions = {}) => boolean`: Moves the cards so that none overlaps another: in layers that follow the
39609
+ * connections, or in a grid where there are none. A group moves as one box
39610
+ * with its cards. Each place lands on a multiple of `snap` where it is set.
39611
+ *
39612
+ * Asks with `helix-before-move` first and tells with `helix-move`, as a
39613
+ * move does, so `undo()` puts every card back. The cards glide to their
39614
+ * places for as long as the board's plane takes to glide, and land at once
39615
+ * where it does not, such as under `prefers-reduced-motion`. Returns whether
39616
+ * the cards moved.
39321
39617
  * - `toJsonCanvas() => CanvasDocument`: The board as a JSON Canvas document, for saving it.
39322
39618
  *
39323
39619
  * What each card holds is the consumer's DOM, so a card comes back as a card
@@ -39972,7 +40268,7 @@ export type CustomElements = {
39972
40268
  * and reading `:disabled` here would answer about the attribute we are in the
39973
40269
  * middle of removing.
39974
40270
  * - `checkValidity() => boolean`: Returns whether the control is valid, and fires `invalid` on it when it is
39975
- * not.
40271
+ * not. The control shows no message for it: `reportValidity()` does that.
39976
40272
  * - `reportValidity() => boolean`: Returns whether the control is valid, and when it is not, fires `invalid`
39977
40273
  * and shows the browser's message at the control.
39978
40274
  * - `setCustomValidity(message: string) => void`: Marks the control invalid with `message`, or clears that with an empty
@@ -40556,7 +40852,7 @@ export type CustomElements = {
40556
40852
  * and reading `:disabled` here would answer about the attribute we are in the
40557
40853
  * middle of removing.
40558
40854
  * - `checkValidity() => boolean`: Returns whether the control is valid, and fires `invalid` on it when it is
40559
- * not.
40855
+ * not. The control shows no message for it: `reportValidity()` does that.
40560
40856
  * - `reportValidity() => boolean`: Returns whether the control is valid, and when it is not, fires `invalid`
40561
40857
  * and shows the browser's message at the control.
40562
40858
  * - `setCustomValidity(message: string) => void`: Marks the control invalid with `message`, or clears that with an empty
@@ -40815,7 +41111,7 @@ export type CustomElements = {
40815
41111
  * and reading `:disabled` here would answer about the attribute we are in the
40816
41112
  * middle of removing.
40817
41113
  * - `checkValidity() => boolean`: Returns whether the control is valid, and fires `invalid` on it when it is
40818
- * not.
41114
+ * not. The control shows no message for it: `reportValidity()` does that.
40819
41115
  * - `reportValidity() => boolean`: Returns whether the control is valid, and when it is not, fires `invalid`
40820
41116
  * and shows the browser's message at the control.
40821
41117
  * - `setCustomValidity(message: string) => void`: Marks the control invalid with `message`, or clears that with an empty
@@ -40920,6 +41216,18 @@ export type CustomElements = {
40920
41216
  * keeps hydration clean, and draws the diff once it can read the content. Diff
40921
41217
  * mode is experimental. The rest of the family is stable.
40922
41218
  *
41219
+ * **Several blocks are files**, one shown at a time under a row of tabs, as
41220
+ * Sandbox shows its source panes. Put Code Blocks in the default slot of a
41221
+ * Code Block, and each is a file named on its tab by its `label` or, without
41222
+ * one, its `language`. `file` holds the name of the file shown. The tabs are a
41223
+ * tab list: the arrow keys move to a tab and show its file, the two swapping
41224
+ * on a right-to-left page, and Home and End go to the first and the last.
41225
+ * Choosing one sends `helix-before-change` with the file's name, which you can
41226
+ * cancel, and `change` once `file` holds it. The files not shown carry
41227
+ * `hidden`, and the one shown draws no name of its own, its tab naming it. One
41228
+ * block draws no tabs. A server cannot see the blocks inside, so the client
41229
+ * draws the tabs once it upgrades.
41230
+ *
40923
41231
  * ## Attributes & Properties
40924
41232
  *
40925
41233
  * Component attributes and properties that can be applied to the element or by using JavaScript.
@@ -40953,6 +41261,11 @@ export type CustomElements = {
40953
41261
  * the button is drawn only while the cap hides something, measured as the
40954
41262
  * block lays out. Not for a diff, whose files each scroll on their own.
40955
41263
  * - `expand-label`/`expandLabel`: The expand button's words while the cap hides lines.
41264
+ * - `file`: The name of the file shown, where the block holds several Code Blocks:
41265
+ * the `label` of one, or its `language` without one.
41266
+ *
41267
+ * Unset, or a name no file has, shows the first.
41268
+ * - `files-label`/`filesLabel`: The name of the file tabs, read by screen readers.
40956
41269
  * - `hide-unchanged-label`/`hideUnchangedLabel`: The words of a button that hides a run of unchanged lines it showed, in a
40957
41270
  * diff with `context-lines`. `{count}` is how many, and each language
40958
41271
  * writes the forms it has.
@@ -41059,7 +41372,11 @@ export type CustomElements = {
41059
41372
  *
41060
41373
  * Events that will be emitted by the component.
41061
41374
  *
41375
+ * - `change`: A file tab showed its file, whose name `file` now holds.
41376
+ * - `helix-before-change`: A file tab is about to show its file, with the file's name in `detail.value`. Cancelable: cancel it to keep the file shown.
41062
41377
  * - `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.
41378
+ * - `helix-copy`: The copy button put the code on the clipboard, with the text in `detail.value`.
41379
+ * - `helix-copy-error`: A press on the copy button put nothing on the clipboard: the browser did not allow the write, or there was no code.
41063
41380
  * - `helix-toggle`: Fired after the wrap button changed `wrap`, with the new value in `detail.checked`.
41064
41381
  *
41065
41382
  * ## Slots
@@ -41108,6 +41425,8 @@ export type CustomElements = {
41108
41425
  * - `copy-tooltip-top`: The tooltip while it is above the copy button. Applied with `copy-tooltip`.
41109
41426
  * - `expand`: The button under a capped block that shows every line, and fewer again. Drawn when `expandable` is set and the cap hides something.
41110
41427
  * - `file`: In a diff, one file's header and block.
41428
+ * - `file-tab`: One file tab, `aria-selected` while its file is shown.
41429
+ * - `files`: The file tabs over the blocks a block holds, where there are several.
41111
41430
  * - `filler`: In a split diff, the empty row opposite a line the other side does not have.
41112
41431
  * - `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`.
41113
41432
  * - `frame`: The code, and the copy button beside it where there is no header.
@@ -41130,6 +41449,7 @@ export type CustomElements = {
41130
41449
  * These can be used to apply styling when a component is in a given state.
41131
41450
  *
41132
41451
  * - `expanded`: The expand button has shown every line of a capped block.
41452
+ * - `tabbed`: The block is one of several files under another block's tabs, which name it, so it draws no name of its own.
41133
41453
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
41134
41454
  */
41135
41455
  "helix-headless-code-block": Partial<
@@ -41474,7 +41794,7 @@ export type CustomElements = {
41474
41794
  * and reading `:disabled` here would answer about the attribute we are in the
41475
41795
  * middle of removing.
41476
41796
  * - `checkValidity() => boolean`: Returns whether the control is valid, and fires `invalid` on it when it is
41477
- * not.
41797
+ * not. The control shows no message for it: `reportValidity()` does that.
41478
41798
  * - `reportValidity() => boolean`: Returns whether the control is valid, and when it is not, fires `invalid`
41479
41799
  * and shows the browser's message at the control.
41480
41800
  * - `setCustomValidity(message: string) => void`: Marks the control invalid with `message`, or clears that with an empty
@@ -41890,7 +42210,7 @@ export type CustomElements = {
41890
42210
  * and reading `:disabled` here would answer about the attribute we are in the
41891
42211
  * middle of removing.
41892
42212
  * - `checkValidity() => boolean`: Returns whether the control is valid, and fires `invalid` on it when it is
41893
- * not.
42213
+ * not. The control shows no message for it: `reportValidity()` does that.
41894
42214
  * - `reportValidity() => boolean`: Returns whether the control is valid, and when it is not, fires `invalid`
41895
42215
  * and shows the browser's message at the control.
41896
42216
  * - `setCustomValidity(message: string) => void`: Marks the control invalid with `message`, or clears that with an empty
@@ -42326,7 +42646,7 @@ export type CustomElements = {
42326
42646
  * and reading `:disabled` here would answer about the attribute we are in the
42327
42647
  * middle of removing.
42328
42648
  * - `checkValidity() => boolean`: Returns whether the control is valid, and fires `invalid` on it when it is
42329
- * not.
42649
+ * not. The control shows no message for it: `reportValidity()` does that.
42330
42650
  * - `reportValidity() => boolean`: Returns whether the control is valid, and when it is not, fires `invalid`
42331
42651
  * and shows the browser's message at the control.
42332
42652
  * - `setCustomValidity(message: string) => void`: Marks the control invalid with `message`, or clears that with an empty
@@ -42820,7 +43140,7 @@ export type CustomElements = {
42820
43140
  * forgetting of a reader's past attempt, whose message otherwise showed over
42821
43141
  * the emptied control the moment the form was reset.
42822
43142
  * - `checkValidity() => boolean`: Returns whether the control is valid, and fires `invalid` on it when it is
42823
- * not.
43143
+ * not. The control shows no message for it: `reportValidity()` does that.
42824
43144
  * - `reportValidity() => boolean`: Returns whether the control is valid, and when it is not, fires `invalid`
42825
43145
  * and shows the browser's message at the control.
42826
43146
  * - `setCustomValidity(message: string) => void`: Marks the control invalid with `message`, or clears that with an empty
@@ -43393,7 +43713,7 @@ export type CustomElements = {
43393
43713
  * | Page Up, Page Down on a segment | Steps by a page: a week of days, two months, or five years. |
43394
43714
  * | Home, End on a segment | Goes to the segment's first or last value. |
43395
43715
  * | Digits on a segment | Fill it, and move to the next once it can take no more. |
43396
- * | Backspace, Delete on a segment | Empty the segment. |
43716
+ * | Backspace, Delete on a segment | Take off its last digit, or move to the segment before where it is empty. |
43397
43717
  * | Left, Right on a segment | Move to the previous or the next segment, along the line of text. |
43398
43718
  *
43399
43719
  * In the calendar, the keys are `DatePicker`'s: the arrows move by a day or a
@@ -43769,7 +44089,7 @@ export type CustomElements = {
43769
44089
  * and reading `:disabled` here would answer about the attribute we are in the
43770
44090
  * middle of removing.
43771
44091
  * - `checkValidity() => boolean`: Returns whether the control is valid, and fires `invalid` on it when it is
43772
- * not.
44092
+ * not. The control shows no message for it: `reportValidity()` does that.
43773
44093
  * - `reportValidity() => boolean`: Returns whether the control is valid, and when it is not, fires `invalid`
43774
44094
  * and shows the browser's message at the control.
43775
44095
  * - `setCustomValidity(message: string) => void`: Marks the control invalid with `message`, or clears that with an empty
@@ -44196,7 +44516,7 @@ export type CustomElements = {
44196
44516
  * and reading `:disabled` here would answer about the attribute we are in the
44197
44517
  * middle of removing.
44198
44518
  * - `checkValidity() => boolean`: Returns whether the control is valid, and fires `invalid` on it when it is
44199
- * not.
44519
+ * not. The control shows no message for it: `reportValidity()` does that.
44200
44520
  * - `reportValidity() => boolean`: Returns whether the control is valid, and when it is not, fires `invalid`
44201
44521
  * and shows the browser's message at the control.
44202
44522
  * - `setCustomValidity(message: string) => void`: Marks the control invalid with `message`, or clears that with an empty
@@ -45874,7 +46194,7 @@ export type CustomElements = {
45874
46194
  * and reading `:disabled` here would answer about the attribute we are in the
45875
46195
  * middle of removing.
45876
46196
  * - `checkValidity() => boolean`: Returns whether the control is valid, and fires `invalid` on it when it is
45877
- * not.
46197
+ * not. The control shows no message for it: `reportValidity()` does that.
45878
46198
  * - `reportValidity() => boolean`: Returns whether the control is valid, and when it is not, fires `invalid`
45879
46199
  * and shows the browser's message at the control.
45880
46200
  * - `setCustomValidity(message: string) => void`: Marks the control invalid with `message`, or clears that with an empty
@@ -46339,6 +46659,7 @@ export type CustomElements = {
46339
46659
  * - `menu-header`: The bar above a field's page, with the back button and the field's name.
46340
46660
  * - `menu-live`: The inner menu's `live` part: the region that screen readers announce the empty and loading messages from.
46341
46661
  * - `menu-loading`: Shown while the fields are loading.
46662
+ * - `menu-search-field`: The inner menu's filter field, drawn with `filterable`.
46342
46663
  * - `menu-surface`: The floating panel the menu is drawn on.
46343
46664
  * - `menu-title`: The name of the field whose page is showing.
46344
46665
  *
@@ -46787,7 +47108,7 @@ export type CustomElements = {
46787
47108
  * and reading `:disabled` here would answer about the attribute we are in the
46788
47109
  * middle of removing.
46789
47110
  * - `checkValidity() => boolean`: Returns whether the control is valid, and fires `invalid` on it when it is
46790
- * not.
47111
+ * not. The control shows no message for it: `reportValidity()` does that.
46791
47112
  * - `reportValidity() => boolean`: Returns whether the control is valid, and when it is not, fires `invalid`
46792
47113
  * and shows the browser's message at the control.
46793
47114
  * - `setCustomValidity(message: string) => void`: Marks the control invalid with `message`, or clears that with an empty
@@ -46881,7 +47202,8 @@ export type CustomElements = {
46881
47202
  * such as `buddhist` for `th-TH`, and `gregory` for every other, such as
46882
47203
  * `persian` for `fa-IR`, so a date written here reads as the same date a
46883
47204
  * Date Picker beside it shows. Write `calendar="persian"` for Mehr 14, 1405.
46884
- * - `date`: The timestamp, in any format `Date` can parse.
47205
+ * - `date`: The timestamp: a `Date`, milliseconds since the epoch, or a string in any
47206
+ * format `Date` can parse. The attribute is the string.
46885
47207
  *
46886
47208
  * An ISO string is what an API sends and what `<time datetime>` takes, so it
46887
47209
  * is the shape that needs no translation at either end. Left unset this
@@ -47937,7 +48259,7 @@ export type CustomElements = {
47937
48259
  * forgetting of a reader's past attempt, whose message otherwise showed over
47938
48260
  * the emptied control the moment the form was reset.
47939
48261
  * - `checkValidity() => boolean`: Returns whether the control is valid, and fires `invalid` on it when it is
47940
- * not.
48262
+ * not. The control shows no message for it: `reportValidity()` does that.
47941
48263
  * - `reportValidity() => boolean`: Returns whether the control is valid, and when it is not, fires `invalid`
47942
48264
  * and shows the browser's message at the control.
47943
48265
  * - `setCustomValidity(message: string) => void`: Marks the control invalid with `message`, or clears that with an empty
@@ -48547,7 +48869,7 @@ export type CustomElements = {
48547
48869
  * and reading `:disabled` here would answer about the attribute we are in the
48548
48870
  * middle of removing.
48549
48871
  * - `checkValidity() => boolean`: Returns whether the control is valid, and fires `invalid` on it when it is
48550
- * not.
48872
+ * not. The control shows no message for it: `reportValidity()` does that.
48551
48873
  * - `reportValidity() => boolean`: Returns whether the control is valid, and when it is not, fires `invalid`
48552
48874
  * and shows the browser's message at the control.
48553
48875
  * - `setCustomValidity(message: string) => void`: Marks the control invalid with `message`, or clears that with an empty
@@ -50270,7 +50592,8 @@ export type CustomElements = {
50270
50592
  * rather than being typed into means. Enter still chooses, because that is
50271
50593
  * the caller asking for the answer rather than for a move. Space, Home, End
50272
50594
  * and letters are left to the caller's field, where they are typing.
50273
- * - `reveal() => void`: Scrolls the chosen option to the middle of the list.
50595
+ * - `reveal() => void`: Scrolls the chosen option to the middle of the list, or the highlighted one
50596
+ * where nothing is chosen.
50274
50597
  *
50275
50598
  * A method rather than something this does on its own, because a listbox
50276
50599
  * opening on its answer usually wants it merely *visible* and the browser
@@ -50280,6 +50603,13 @@ export type CustomElements = {
50280
50603
  *
50281
50604
  * Measured by core's `centerInView`, or, for a list of `items`, by the
50282
50605
  * arithmetic, since the chosen option may not be drawn.
50606
+ * - `highlightValue(value: string) => void`: Puts the highlight on the option holding `value`, without choosing it, so
50607
+ * the arrow keys move from there. Nothing changes where no option a reader
50608
+ * can reach holds `value`.
50609
+ *
50610
+ * Time Picker calls it for a time between two of its steps, which no option
50611
+ * holds: without it the first arrow moved from the top of the list, so Down
50612
+ * from 14:07 went to midnight.
50283
50613
  * - `requestFilter(next: string) => boolean`: Requests a new filter, and returns whether the request went through.
50284
50614
  * - `requestValue(next: string) => boolean`: Requests a new value, and returns whether the change was applied.
50285
50615
  *
@@ -50333,7 +50663,7 @@ export type CustomElements = {
50333
50663
  * and reading `:disabled` here would answer about the attribute we are in the
50334
50664
  * middle of removing.
50335
50665
  * - `checkValidity() => boolean`: Returns whether the control is valid, and fires `invalid` on it when it is
50336
- * not.
50666
+ * not. The control shows no message for it: `reportValidity()` does that.
50337
50667
  * - `reportValidity() => boolean`: Returns whether the control is valid, and when it is not, fires `invalid`
50338
50668
  * and shows the browser's message at the control.
50339
50669
  * - `setCustomValidity(message: string) => void`: Marks the control invalid with `message`, or clears that with an empty
@@ -51779,6 +52109,12 @@ export type CustomElements = {
51779
52109
  * slots, so a mark of your own replaces either by being slotted. Neither is
51780
52110
  * read as part of the row's name.
51781
52111
  *
52112
+ * In a menu with `filterable`, focus stays in the menu's filter field and the
52113
+ * row the arrow keys reach is highlighted: the field names it with
52114
+ * `aria-activedescendant`, the row carries its role on its host so the field
52115
+ * can point at it, and `:state(highlighted)` says which row it is. A row with
52116
+ * an `href` then follows its link without an anchor, as `Option` does.
52117
+ *
51782
52118
  * ## Attributes & Properties
51783
52119
  *
51784
52120
  * Component attributes and properties that can be applied to the element or by using JavaScript.
@@ -51931,6 +52267,7 @@ export type CustomElements = {
51931
52267
  * These can be used to apply styling when a component is in a given state.
51932
52268
  *
51933
52269
  * - `checked`: The row is checked.
52270
+ * - `highlighted`: In a menu with `filterable`, the arrow keys or the pointer reached the row while focus stays in the filter field.
51934
52271
  * - `submenu-mark`: Under `submenus="flyout"`, a row in this row's submenu can be ticked or opens a submenu, so the submenu keeps its trailing column.
51935
52272
  * - `submenu-start`: Under `submenus="flyout"`, a row in this row's submenu has content before its label, so the submenu keeps its leading column.
51936
52273
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
@@ -52000,6 +52337,21 @@ export type CustomElements = {
52000
52337
  * opens it from the keyboard, and the trigger is described by
52001
52338
  * `long-press-label`, which says so.
52002
52339
  *
52340
+ * **A filter field.** With `filterable`, the menu opens with focus in a field
52341
+ * above its rows, and typing narrows the rows of the page the keys move in,
52342
+ * as React Aria's `Autocomplete` around a `Menu` does. A row is kept where its
52343
+ * words hold the filter, in any case, or where `filterMatch` says so. Each
52344
+ * page starts unfiltered, and the filter is cleared as the menu closes. Where
52345
+ * typing keeps no row, the menu shows `no-results-text`. Focus stays in the
52346
+ * field: Up and Down Arrow move the highlight through the rows that are left,
52347
+ * Enter chooses the highlighted row, Right Arrow opens its submenu, Left Arrow
52348
+ * on a submenu goes back, and Escape clears the filter and then closes the
52349
+ * menu. Home, End and the other keys move the caret and type. The field names
52350
+ * the highlighted row with `aria-activedescendant`, and the rows are a `menu`
52351
+ * after the field. Cancel `helix-filter` to keep every row
52352
+ * showing and narrow the rows yourself, such as by replacing them with rows
52353
+ * from a server.
52354
+ *
52003
52355
  * ## Attributes & Properties
52004
52356
  *
52005
52357
  * Component attributes and properties that can be applied to the element or by using JavaScript.
@@ -52012,6 +52364,13 @@ export type CustomElements = {
52012
52364
  * Ark UI's `closeOnSelect` does. A row's own `close-on-select` wins over this.
52013
52365
  * - `context`: Whether the menu is the trigger's context menu: it opens where the reader
52014
52366
  * asks for one, with a right-click, a long press, Shift+F10 or the menu key.
52367
+ * - `filter`: The text the rows are filtered by, which the filter field holds.
52368
+ *
52369
+ * Cleared as the menu closes and as a submenu opens or closes, so each page
52370
+ * starts with every row showing.
52371
+ * - `filterable`: Whether the menu shows a field above its rows that narrows them as the
52372
+ * reader types, with focus staying in the field.
52373
+ * - `filter-label`/`filterLabel`: The filter field's name and placeholder.
52015
52374
  * - `label`: Accessible name for the surface.
52016
52375
  *
52017
52376
  * Empty by default, which names the surface by its trigger, so a menu opened
@@ -52019,6 +52378,7 @@ export type CustomElements = {
52019
52378
  * `aria-labelledby` on the host names it too, and wins over both.
52020
52379
  * - `long-press-label`/`longPressLabel`: The description a trigger gives under `open-on="long-press"`, saying how
52021
52380
  * to open the menu. Translate it with the rest of your interface.
52381
+ * - `no-results-text`/`noResultsText`: The text shown when the filter keeps no rows.
52022
52382
  * - `offset`: Space between the trigger and the surface, in pixels.
52023
52383
  * - `open-on`/`openOn`: What opens the menu from its trigger. `long-press` leaves a press to the
52024
52384
  * trigger's own action and opens the menu on a press held for half a second,
@@ -52048,6 +52408,12 @@ export type CustomElements = {
52048
52408
  * hydration, or diffed by a framework, it comes back holding whatever the
52049
52409
  * last reader did rather than what the author wrote. `:state(open)` carries
52050
52410
  * the resolved state for stylesheets, which is what the mirror is for.
52411
+ * - `filterMatch`: Whether a row is kept by the filter: a function given the row's words and
52412
+ * the filter, trimmed, that returns `true` to keep it showing, as React
52413
+ * Aria's `Autocomplete` takes `filter`. See Listbox's `filterMatch`.
52414
+ *
52415
+ * Absent, a row is kept where its words hold the filter, in any case. A
52416
+ * property only, there being no way to write a function in markup. (property only)
52051
52417
  * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
52052
52418
  *
52053
52419
  * **Named `whenSettled` because `settled` is taken four times over**, by
@@ -52075,6 +52441,7 @@ export type CustomElements = {
52075
52441
  *
52076
52442
  * - `helix-before-close`: The menu is about to close. Cancelable: cancel it to keep it open.
52077
52443
  * - `helix-before-open`: The menu is about to open. Cancelable: cancel it to keep it closed.
52444
+ * - `helix-filter`: The text in the filter field changed, with the new text in `detail.value`. Cancelable: cancel it to keep every row showing and narrow the rows yourself.
52078
52445
  * - `helix-select`: An item was chosen. Cancelable: cancel it to keep the menu open.
52079
52446
  * - `toggle`: The menu opened or closed. The event carries `newState` and `oldState`.
52080
52447
  *
@@ -52083,6 +52450,7 @@ export type CustomElements = {
52083
52450
  * Areas where markup can be added to the component.
52084
52451
  *
52085
52452
  * - `(default)`: The items.
52453
+ * - `no-results`: What the menu shows when the filter keeps no rows, for content richer than `no-results-text`.
52086
52454
  * - `trigger`: The control that opens the menu, or with `context` the area a context menu opens over.
52087
52455
  *
52088
52456
  * ## Methods
@@ -52118,7 +52486,8 @@ export type CustomElements = {
52118
52486
  * - `header`: The bar above a submenu, holding the way back and its name.
52119
52487
  * - `live`: A live region that repeats the empty and loading text, so screen readers announce it when it changes. Visually hidden in the styled tier.
52120
52488
  * - `loading`: The text shown while the items are loading.
52121
- * - `surface`: The floating panel the menu is drawn on.
52489
+ * - `search-field`: With `filterable`, the field that narrows the rows.
52490
+ * - `surface`: The floating panel the menu is drawn on. It is the `menu` itself, and with `filterable` it holds the filter field and then the `menu`.
52122
52491
  * - `title`: The name of the submenu that is showing.
52123
52492
  *
52124
52493
  * ## CSS States
@@ -53340,7 +53709,7 @@ export type CustomElements = {
53340
53709
  * and reading `:disabled` here would answer about the attribute we are in the
53341
53710
  * middle of removing.
53342
53711
  * - `checkValidity() => boolean`: Returns whether the control is valid, and fires `invalid` on it when it is
53343
- * not.
53712
+ * not. The control shows no message for it: `reportValidity()` does that.
53344
53713
  * - `reportValidity() => boolean`: Returns whether the control is valid, and when it is not, fires `invalid`
53345
53714
  * and shows the browser's message at the control.
53346
53715
  * - `setCustomValidity(message: string) => void`: Marks the control invalid with `message`, or clears that with an empty
@@ -53570,6 +53939,13 @@ export type CustomElements = {
53570
53939
  *
53571
53940
  * - `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
53941
  *
53942
+ * ## Methods
53943
+ *
53944
+ * Methods that can be called to access component functionality.
53945
+ *
53946
+ * - `focus(options?: FocusOptions) => void`: Moves focus to the row the keys move from, or to the tree while that row
53947
+ * is scrolled out of the window, as Tab reaches them.
53948
+ *
53573
53949
  * ## CSS Custom Properties
53574
53950
  *
53575
53951
  * CSS variables available for styling the component.
@@ -54475,7 +54851,7 @@ export type CustomElements = {
54475
54851
  * and reading `:disabled` here would answer about the attribute we are in the
54476
54852
  * middle of removing.
54477
54853
  * - `checkValidity() => boolean`: Returns whether the control is valid, and fires `invalid` on it when it is
54478
- * not.
54854
+ * not. The control shows no message for it: `reportValidity()` does that.
54479
54855
  * - `reportValidity() => boolean`: Returns whether the control is valid, and when it is not, fires `invalid`
54480
54856
  * and shows the browser's message at the control.
54481
54857
  * - `setCustomValidity(message: string) => void`: Marks the control invalid with `message`, or clears that with an empty
@@ -54856,7 +55232,7 @@ export type CustomElements = {
54856
55232
  * and reading `:disabled` here would answer about the attribute we are in the
54857
55233
  * middle of removing.
54858
55234
  * - `checkValidity() => boolean`: Returns whether the control is valid, and fires `invalid` on it when it is
54859
- * not.
55235
+ * not. The control shows no message for it: `reportValidity()` does that.
54860
55236
  * - `reportValidity() => boolean`: Returns whether the control is valid, and when it is not, fires `invalid`
54861
55237
  * and shows the browser's message at the control.
54862
55238
  * - `setCustomValidity(message: string) => void`: Marks the control invalid with `message`, or clears that with an empty
@@ -55682,7 +56058,7 @@ export type CustomElements = {
55682
56058
  * and reading `:disabled` here would answer about the attribute we are in the
55683
56059
  * middle of removing.
55684
56060
  * - `checkValidity() => boolean`: Returns whether the control is valid, and fires `invalid` on it when it is
55685
- * not.
56061
+ * not. The control shows no message for it: `reportValidity()` does that.
55686
56062
  * - `reportValidity() => boolean`: Returns whether the control is valid, and when it is not, fires `invalid`
55687
56063
  * and shows the browser's message at the control.
55688
56064
  * - `setCustomValidity(message: string) => void`: Marks the control invalid with `message`, or clears that with an empty
@@ -56115,7 +56491,7 @@ export type CustomElements = {
56115
56491
  * and reading `:disabled` here would answer about the attribute we are in the
56116
56492
  * middle of removing.
56117
56493
  * - `checkValidity() => boolean`: Returns whether the control is valid, and fires `invalid` on it when it is
56118
- * not.
56494
+ * not. The control shows no message for it: `reportValidity()` does that.
56119
56495
  * - `reportValidity() => boolean`: Returns whether the control is valid, and when it is not, fires `invalid`
56120
56496
  * and shows the browser's message at the control.
56121
56497
  * - `setCustomValidity(message: string) => void`: Marks the control invalid with `message`, or clears that with an empty
@@ -56934,7 +57310,7 @@ export type CustomElements = {
56934
57310
  * and reading `:disabled` here would answer about the attribute we are in the
56935
57311
  * middle of removing.
56936
57312
  * - `checkValidity() => boolean`: Returns whether the control is valid, and fires `invalid` on it when it is
56937
- * not.
57313
+ * not. The control shows no message for it: `reportValidity()` does that.
56938
57314
  * - `reportValidity() => boolean`: Returns whether the control is valid, and when it is not, fires `invalid`
56939
57315
  * and shows the browser's message at the control.
56940
57316
  * - `setCustomValidity(message: string) => void`: Marks the control invalid with `message`, or clears that with an empty
@@ -57452,7 +57828,7 @@ export type CustomElements = {
57452
57828
  * and reading `:disabled` here would answer about the attribute we are in the
57453
57829
  * middle of removing.
57454
57830
  * - `checkValidity() => boolean`: Returns whether the control is valid, and fires `invalid` on it when it is
57455
- * not.
57831
+ * not. The control shows no message for it: `reportValidity()` does that.
57456
57832
  * - `reportValidity() => boolean`: Returns whether the control is valid, and when it is not, fires `invalid`
57457
57833
  * and shows the browser's message at the control.
57458
57834
  * - `setCustomValidity(message: string) => void`: Marks the control invalid with `message`, or clears that with an empty
@@ -58600,6 +58976,10 @@ export type CustomElements = {
58600
58976
  *
58601
58977
  * Methods that can be called to access component functionality.
58602
58978
  *
58979
+ * - `requestActive(next: string, cause?: string) => boolean`: Requests a new current stage, and returns whether it moved.
58980
+ *
58981
+ * Where only a step's `current` says where the reader is, `active` is first
58982
+ * written with that step, so `helix-activate` names it as `previous`.
58603
58983
  * - `next() => boolean`: Moves to the next stage that can be gone to, as Ark UI's `goToNextStep`
58604
58984
  * does. Returns whether it moved: not past the last stage, not into a stage
58605
58985
  * `linear` holds out of reach, and not where a listener refused.
@@ -58608,15 +58988,6 @@ export type CustomElements = {
58608
58988
  * and the invalid mark from every stage, as Ark UI's `resetStep` does.
58609
58989
  * Returns whether it moved: a listener can refuse the move with
58610
58990
  * `helix-before-activate`, and the stages then keep their marks.
58611
- * - `requestActive(next: string, cause?: string) => boolean`: Requests a new current item, and returns whether the change was applied.
58612
- *
58613
- * Announces before it acts, so `preventDefault()` on the `helix-before-activate` is
58614
- * a refusal and nothing moves. Unlike a native control, nothing has moved
58615
- * by the time this runs, so refusing is simply not writing: there is
58616
- * nothing to put back. Nobody refusing means the set updates itself,
58617
- * whether or not a consumer declared `active`, a declared property being a
58618
- * seed and a correction. `cause` says why, where the family names its
58619
- * causes, and reaches the event as `detail.cause`.
58620
58991
  *
58621
58992
  * ## CSS Custom Properties
58622
58993
  *
@@ -58965,7 +59336,7 @@ export type CustomElements = {
58965
59336
  * and reading `:disabled` here would answer about the attribute we are in the
58966
59337
  * middle of removing.
58967
59338
  * - `checkValidity() => boolean`: Returns whether the control is valid, and fires `invalid` on it when it is
58968
- * not.
59339
+ * not. The control shows no message for it: `reportValidity()` does that.
58969
59340
  * - `reportValidity() => boolean`: Returns whether the control is valid, and when it is not, fires `invalid`
58970
59341
  * and shows the browser's message at the control.
58971
59342
  * - `setCustomValidity(message: string) => void`: Marks the control invalid with `message`, or clears that with an empty
@@ -59330,6 +59701,7 @@ export type CustomElements = {
59330
59701
  * The `heading` slot names the table: slot a heading or a line of text into
59331
59702
  * it, and the table is named by its words. An `aria-label` or `aria-labelledby` on the
59332
59703
  * host wins over it.
59704
+ * A table with no name is reported once in a development build.
59333
59705
  *
59334
59706
  * **Selecting.** `selectable` adds a column of checkboxes.
59335
59707
  *
@@ -59415,9 +59787,17 @@ export type CustomElements = {
59415
59787
  * | A letter or a word | Moves to the next row whose first cell starts with what you typed. |
59416
59788
  * | Tab | Leaves the table. |
59417
59789
  *
59790
+ * **Long tables.** `windowed` draws only the rows in view, as Data Table's
59791
+ * does, and the box of the table scrolls under headings that stick. The
59792
+ * table still says how many rows it has with `aria-rowcount`, and each row
59793
+ * its place with `aria-rowindex`. The keys reach every row, drawn or not, and
59794
+ * the row holding focus stays drawn when it scrolls away. Nested rows,
59795
+ * sorting, and selecting work as they do in a table that draws every row.
59796
+ *
59418
59797
  * **Loading more.** `load-more` sends `helix-load-more` once the end of the
59419
59798
  * table comes within a screen of view, in the box that scrolls it or the
59420
- * page, once for each number of rows: add rows and it can send it again. Set
59799
+ * page, or in the table's own box when it is `windowed`, once for each
59800
+ * number of rows: add rows and it can send it again. Set
59421
59801
  * `loading` while you fetch, and the table asks for nothing until it clears.
59422
59802
  *
59423
59803
  * When the rows did not load, set `error-text`, such as "The orders did not
@@ -59542,6 +59922,14 @@ export type CustomElements = {
59542
59922
  * order has its whole sentence. `{order}` is the deprecated
59543
59923
  * `ascending-label` or `descending-label`.
59544
59924
  * - `unsorted-label`/`unsortedLabel`: What screen readers hear when the table stops being sorted.
59925
+ * - `windowed`: Draws only the rows in view, with empty space in place of the rest, as
59926
+ * Data Table's `windowed` does. The table's box then scrolls, at the
59927
+ * height `--table-block-size` gives it in the styled tier, and the
59928
+ * headings stick to its top.
59929
+ *
59930
+ * Off by default. Windowing costs a scroll listener, a measurement per row
59931
+ * drawn, and a height on the table, and a table of twenty rows should pay
59932
+ * none of them.
59545
59933
  * - `empty-text`/`emptyText`: The text shown and announced when there are no rows and none are loading.
59546
59934
  * - `loading`: Whether the rows are still loading.
59547
59935
  *
@@ -59613,6 +60001,8 @@ export type CustomElements = {
59613
60001
  *
59614
60002
  * Custom selectors for styling elements within the component.
59615
60003
  *
60004
+ * - `after`: The space that stands in for the rows below the window. Only while `windowed`.
60005
+ * - `before`: The space that stands in for the rows above the window. Only while `windowed`.
59616
60006
  * - `checkbox`: The checkbox in the heading that selects every row, in a `selectable` table.
59617
60007
  * - `checkbox-box`: The box drawn for the checkbox's input.
59618
60008
  * - `checkbox-control`: The checkbox's input.
@@ -60654,7 +61044,7 @@ export type CustomElements = {
60654
61044
  * and reading `:disabled` here would answer about the attribute we are in the
60655
61045
  * middle of removing.
60656
61046
  * - `checkValidity() => boolean`: Returns whether the control is valid, and fires `invalid` on it when it is
60657
- * not.
61047
+ * not. The control shows no message for it: `reportValidity()` does that.
60658
61048
  * - `reportValidity() => boolean`: Returns whether the control is valid, and when it is not, fires `invalid`
60659
61049
  * and shows the browser's message at the control.
60660
61050
  * - `setCustomValidity(message: string) => void`: Marks the control invalid with `message`, or clears that with an empty
@@ -60733,7 +61123,7 @@ export type CustomElements = {
60733
61123
  * | Home, End on a segment | Goes to the segment's first or last value. |
60734
61124
  * | Digits on a segment | Fill it, and move to the next once it can take no more. |
60735
61125
  * | A letter on the half of the day | Picks the half whose name starts with it, such as A for AM. |
60736
- * | Backspace, Delete on a segment | Empty the segment. |
61126
+ * | Backspace, Delete on a segment | Take off its last digit, or move to the segment before where it is empty. |
60737
61127
  * | Left, Right on a segment | Move to the previous or the next segment, along the line of text. |
60738
61128
  *
60739
61129
  * In the list, the keys are `TimePicker`'s.
@@ -61049,7 +61439,7 @@ export type CustomElements = {
61049
61439
  * and reading `:disabled` here would answer about the attribute we are in the
61050
61440
  * middle of removing.
61051
61441
  * - `checkValidity() => boolean`: Returns whether the control is valid, and fires `invalid` on it when it is
61052
- * not.
61442
+ * not. The control shows no message for it: `reportValidity()` does that.
61053
61443
  * - `reportValidity() => boolean`: Returns whether the control is valid, and when it is not, fires `invalid`
61054
61444
  * and shows the browser's message at the control.
61055
61445
  * - `setCustomValidity(message: string) => void`: Marks the control invalid with `message`, or clears that with an empty
@@ -61097,6 +61487,7 @@ export type CustomElements = {
61097
61487
  * - `picker-list-loading`: The text shown while the options load.
61098
61488
  * - `picker-list-search`: The region that holds the filter field.
61099
61489
  * - `picker-list-search-field`: The filter field.
61490
+ * - `picker-now`: The picker's button that chooses the current time, which Time Input does not draw.
61100
61491
  * - `picker-option`: One time in the picker. Carries `data-between` inside a range.
61101
61492
  * - `picker-option-between`: A time inside a chosen range, between its two ends. Set together with `picker-option`.
61102
61493
  * - `picker-option-description`: The caption under the label, when there is one.
@@ -61143,7 +61534,9 @@ export type CustomElements = {
61143
61534
  * between the wheels, and Tab does too.
61144
61535
  *
61145
61536
  * `hour-cycle` writes every time on a twelve or a twenty-four hour clock
61146
- * whatever the locale, and `seconds` holds times to the second.
61537
+ * whatever the locale, and `seconds` holds times to the second. `show-now`
61538
+ * draws a button that chooses the current time, on the step and inside the
61539
+ * bounds.
61147
61540
  *
61148
61541
  * The step keeps the list usable. At the default of 15 minutes a day is 96
61149
61542
  * rows, which people can scroll or type into. At 1 minute it is 1,440. Use the
@@ -61268,6 +61661,8 @@ export type CustomElements = {
61268
61661
  * and a wheel has exactly one value by construction. Rather than draw
61269
61662
  * something that cannot say what it holds, `wheels` renders as a list
61270
61663
  * whenever a mode is set.
61664
+ * - `now-label`/`nowLabel`: The words on the button that chooses the current time, drawn with
61665
+ * `show-now`.
61271
61666
  * - `range-overflow-message`/`rangeOverflowMessage`: The validation message for a time after `max`. `{max}` is replaced with
61272
61667
  * `max`, written in `locale`.
61273
61668
  * - `range-underflow-message`/`rangeUnderflowMessage`: The validation message for a time before `min`. `{min}` is replaced with
@@ -61295,6 +61690,13 @@ export type CustomElements = {
61295
61690
  * `<input type="time">` counts in. A list at a step of one second is 86,400
61296
61691
  * rows, so give `seconds` a `step` and bounds that keep it a list, or use
61297
61692
  * the wheels.
61693
+ * - `show-now`/`showNow`: Draws a button under the times that chooses the current time, as
61694
+ * `selectNow()` does.
61695
+ *
61696
+ * For a form about something happening now, such as a shift starting or a
61697
+ * dose taken, where the reader would otherwise scroll to the time on the
61698
+ * clock. The button is a tab stop after the times, and its words are
61699
+ * `now-label`.
61298
61700
  * - `step`: How far apart the offered times are, in minutes, or in seconds with
61299
61701
  * `seconds`.
61300
61702
  *
@@ -61427,6 +61829,14 @@ export type CustomElements = {
61427
61829
  *
61428
61830
  * Methods that can be called to access component functionality.
61429
61831
  *
61832
+ * - `selectNow() => boolean`: Chooses the current time, as a press on the `show-now` button does, and
61833
+ * returns whether the value changed.
61834
+ *
61835
+ * The time is read off the reader's clock and moved to the nearest time on
61836
+ * offer that is not barred, so it falls on the `step` and inside `min` and
61837
+ * `max`. It is requested as a pick is, so `helix-before-change` can cancel
61838
+ * it. With a `mode` the time joins the times held, and a range that holds
61839
+ * two starts over from it, as a third pick does.
61430
61840
  * - `reveal() => void`: Scrolls each wheel to its selected value, and the list to its selected
61431
61841
  * time.
61432
61842
  *
@@ -61501,7 +61911,7 @@ export type CustomElements = {
61501
61911
  * and reading `:disabled` here would answer about the attribute we are in the
61502
61912
  * middle of removing.
61503
61913
  * - `checkValidity() => boolean`: Returns whether the control is valid, and fires `invalid` on it when it is
61504
- * not.
61914
+ * not. The control shows no message for it: `reportValidity()` does that.
61505
61915
  * - `reportValidity() => boolean`: Returns whether the control is valid, and when it is not, fires `invalid`
61506
61916
  * and shows the browser's message at the control.
61507
61917
  * - `setCustomValidity(message: string) => void`: Marks the control invalid with `message`, or clears that with an empty
@@ -61541,6 +61951,7 @@ export type CustomElements = {
61541
61951
  * - `list-loading`: The text shown while the options load.
61542
61952
  * - `list-search`: The region that holds the filter field.
61543
61953
  * - `list-search-field`: The filter field.
61954
+ * - `now`: The button that chooses the current time, drawn with `show-now`.
61544
61955
  * - `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.
61545
61956
  * - `option-between`: A time inside a chosen range, excluding its ends, beside `option`.
61546
61957
  * - `option-description`: The caption under the time's label, when there is one.
@@ -62370,7 +62781,7 @@ export type CustomElements = {
62370
62781
  * and reading `:disabled` here would answer about the attribute we are in the
62371
62782
  * middle of removing.
62372
62783
  * - `checkValidity() => boolean`: Returns whether the control is valid, and fires `invalid` on it when it is
62373
- * not.
62784
+ * not. The control shows no message for it: `reportValidity()` does that.
62374
62785
  * - `reportValidity() => boolean`: Returns whether the control is valid, and when it is not, fires `invalid`
62375
62786
  * and shows the browser's message at the control.
62376
62787
  * - `setCustomValidity(message: string) => void`: Marks the control invalid with `message`, or clears that with an empty
@@ -64011,6 +64422,7 @@ export type CustomElements = {
64011
64422
  * - `menu-header`: The bar above a submenu, holding the back button and the submenu's name.
64012
64423
  * - `menu-live`: The inner menu's `live` part, the region screen readers announce its empty and loading messages from.
64013
64424
  * - `menu-loading`: Shown while the items are loading.
64425
+ * - `menu-search-field`: The inner menu's filter field, drawn with `filterable`.
64014
64426
  * - `menu-surface`: The floating panel the menu is drawn on.
64015
64427
  * - `menu-title`: The name of the submenu that is shown.
64016
64428
  * - `poster`: An entry's poster image, if it has one.
@@ -64602,6 +65014,7 @@ export type CustomElements = {
64602
65014
  * - `captions-menu-header`: The bar above a submenu, holding the way back and its name.
64603
65015
  * - `captions-menu-live`: The inner menu's `live` part, a live region that repeats the empty and loading text for screen readers.
64604
65016
  * - `captions-menu-loading`: The text shown while the items are loading.
65017
+ * - `captions-menu-search-field`: The inner menu's filter field, drawn with `filterable`.
64605
65018
  * - `captions-menu-surface`: The floating panel the menu is drawn on.
64606
65019
  * - `captions-menu-title`: The name of the submenu that is showing.
64607
65020
  * - `controls`: The control bar along the bottom.
@@ -64633,6 +65046,7 @@ export type CustomElements = {
64633
65046
  * - `overflow-header`: The bar above a submenu, holding the way back and its name.
64634
65047
  * - `overflow-live`: The inner menu's `live` part, a live region that repeats the empty and loading text for screen readers.
64635
65048
  * - `overflow-loading`: The text shown while the items are loading.
65049
+ * - `overflow-search-field`: The inner menu's filter field, drawn with `filterable`.
64636
65050
  * - `overflow-surface`: The floating panel the menu is drawn on.
64637
65051
  * - `overflow-title`: The name of the submenu that is showing.
64638
65052
  * - `pip`: The picture-in-picture button, when `extra-controls` includes it and the browser supports it.
@@ -64696,12 +65110,26 @@ export type CustomElements = {
64696
65110
  * smallest item size, and follows the box as it resizes. `gap` spaces the rows, and the columns
64697
65111
  * of a grid, by a number of pixels the list counts in each row's place.
64698
65112
  *
65113
+ * **Across.** `orientation="horizontal"` lays the items out along a line and
65114
+ * scrolls it sideways, as a strip of cards does, windowed the same way:
65115
+ * `estimate` is then an item's width, and the box needs an inline size.
65116
+ *
65117
+ * **Sections.** `section-field` names the field of each item that says which
65118
+ * section it is in, and the list draws a header before each section's items,
65119
+ * as React Aria's list box sections do. Each section is an element with the
65120
+ * `group` role, named by its header, which is its first child and carries
65121
+ * `data-header`, so your stylesheet styles it, such as with `position:
65122
+ * sticky`. A section starts wherever the field changes, so give the items in
65123
+ * order. The window counts the headers with the items, and a section the
65124
+ * window starts inside is drawn with its header. `renderSection` draws a
65125
+ * header of your own.
65126
+ *
64699
65127
  * **Keyboard.** The list is one tab stop.
64700
65128
  *
64701
65129
  * | Key | What it does |
64702
65130
  * |---|---|
64703
65131
  * | Down, Up | Moves to the next or the previous item, or in a grid to the item in the same column on the next or the previous line. |
64704
- * | Right, Left | In a grid, moves to the next or the previous item along the line, the other way round on a right-to-left page. |
65132
+ * | Right, Left | In a grid, moves to the next or the previous item along the line, the other way round on a right-to-left page. In a list that runs across, moves to the next or the previous item the same way, and Down and Up are left to the row. |
64705
65133
  * | Home, End | Moves to the first or the last item. |
64706
65134
  * | Page Down, Page Up | Moves by the number of items, or of lines in a grid, on screen. |
64707
65135
  * | A letter or a word | Moves to the next item whose text starts with what you typed. |
@@ -64821,6 +65249,15 @@ export type CustomElements = {
64821
65249
  * - `min-column-width`/`minColumnWidth`: The narrowest a column of a grid may be, in pixels. Set, the list lays
64822
65250
  * out as many columns as fit the box at that width, at least one, and
64823
65251
  * follows the box as it resizes, which `columns` then does not decide.
65252
+ * - `orientation`: Which way the list runs. `horizontal` lays the items out along a line
65253
+ * and scrolls it sideways: Left and Right move between items, the other
65254
+ * way round on a right-to-left page, and `estimate` is an item's width. A
65255
+ * grid always runs down.
65256
+ * - `section-field`/`sectionField`: The field of each item that names its section, as a key or a path of
65257
+ * keys. Set, the items are drawn in sections: a header, then the items, in
65258
+ * an element with the `group` role that the header names. A section starts
65259
+ * wherever the field changes, so give the items in order. A list of one
65260
+ * column only.
64824
65261
  * - `selection-behavior`/`selectionBehavior`: What a press does to the items already chosen: `toggle` adds or takes out
64825
65262
  * the item, and `replace` selects it alone and lets the arrow keys carry the
64826
65263
  * selection, with Control or Command adding or taking out one item.
@@ -64844,6 +65281,9 @@ export type CustomElements = {
64844
65281
  * It returns what Lit renders: a template from `html`, a string, or a DOM
64845
65282
  * node. The list wraps each result in a `<div>` that carries the row's role
64846
65283
  * and place in the set. Where it is unset, the row `<template>` is used. (property only)
65284
+ * - `renderSection`: Draws each section's header, given its name and its place among the
65285
+ * sections, for a list given `section-field`. Set it as a property. Where
65286
+ * it is unset, the header is the name as text. (property only)
64847
65287
  * - `range`: The items on screen, as `items.slice(first, last)` reads them.
64848
65288
  *
64849
65289
  * Read from the scroll offset when asked. Both are 0 before the list has a
@@ -64911,6 +65351,7 @@ export type CustomElements = {
64911
65351
  * These can be used to apply styling when a component is in a given state.
64912
65352
  *
64913
65353
  * - `empty`: While the list has read its items and holds none.
65354
+ * - `horizontal`: While the list runs across, with `orientation="horizontal"`.
64914
65355
  * - `loading`: While `loading` is set.
64915
65356
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
64916
65357
  */
@@ -67299,7 +67740,7 @@ export type CustomElementsSolidJs = {
67299
67740
  * forgetting of a reader's past attempt, whose message otherwise showed over
67300
67741
  * the emptied control the moment the form was reset.
67301
67742
  * - `checkValidity() => boolean`: Returns whether the control is valid, and fires `invalid` on it when it is
67302
- * not.
67743
+ * not. The control shows no message for it: `reportValidity()` does that.
67303
67744
  * - `reportValidity() => boolean`: Returns whether the control is valid, and when it is not, fires `invalid`
67304
67745
  * and shows the browser's message at the control.
67305
67746
  * - `setCustomValidity(message: string) => void`: Marks the control invalid with `message`, or clears that with an empty
@@ -67751,15 +68192,24 @@ export type CustomElementsSolidJs = {
67751
68192
  * card or connection says so when a reader arrives on it.
67752
68193
  * - Control or Command with C copies the selected cards, and the connections
67753
68194
  * between them, as a JSON Canvas document in text, which another board or
67754
- * an app that reads the format takes. A paste is your page's: listen for
67755
- * `paste` on the board, read the text with `fromJsonCanvas`, and add the
67756
- * cards it holds.
68195
+ * an app that reads the format takes.
68196
+ * - Control or Command with V pastes a JSON Canvas document: the board adds
68197
+ * its cards and connections, a step down and to the right of any card they
68198
+ * would sit on, and selects them. It asks with `helix-before-paste` first.
68199
+ * A page that renders its cards from its own state cancels it and adds the
68200
+ * detail's document to that state, through `fromJsonCanvas`. `paste()` does
68201
+ * the same from a script.
67757
68202
  * - Control or Command with Z undoes the last move or resize the board made,
67758
68203
  * and with Shift, or Control with Y, makes it again. `undo()` and `redo()`
67759
68204
  * do the same from a script. Each asks with `helix-before-move` and tells
67760
68205
  * with `helix-move`, as a move does, so a board that holds its positions in
67761
68206
  * your state is undone through your state.
67762
68207
  *
68208
+ * **`arrange()` moves every card so that none overlaps another**, in layers
68209
+ * that follow the arrows, or in a grid on a board with no connections. The
68210
+ * cards glide for as long as the board's own transition, and `undo()` puts
68211
+ * them back.
68212
+ *
67763
68213
  * Every drag also works with clicks, as WCAG 2.5.7 requires for a pointer that
67764
68214
  * cannot hold a button down. Click a selected card's move handle, a corner, a
67765
68215
  * card's connection point, or the end of a selected connection to pick it up.
@@ -67807,6 +68257,7 @@ export type CustomElementsSolidJs = {
67807
68257
  *
67808
68258
  * - `activate-hint-label`/`activateHintLabel`: The hint shown when the board, waiting to be pressed with
67809
68259
  * `gestures="activate"`, is scrolled or swiped over.
68260
+ * - `arranged-label`/`arrangedLabel`: What screen readers hear after `arrange()` moves the cards.
67810
68261
  * - `comes-from-label`/`comesFromLabel`: The text read with a card to say where its connections come from, with `{cards}`.
67811
68262
  * - `connected-label`/`connectedLabel`: The text announced when a connection is requested, with `{from}` and `{to}`.
67812
68263
  * - `connecting-label`/`connectingLabel`: The text announced when a connection is started, with `{from}` filled in.
@@ -67851,6 +68302,7 @@ export type CustomElementsSolidJs = {
67851
68302
  *
67852
68303
  * Absent is spatial, a resting value being an attribute's absence: a default
67853
68304
  * that reflected would write a choice onto every host that no server sent.
68305
+ * - `pasted-label`/`pastedLabel`: What screen readers hear after a paste, with `{count}` for the cards pasted.
67854
68306
  * - `path`: The route every connection takes when it sets no `path` of its own:
67855
68307
  * `straight`, or `step` for right angles.
67856
68308
  *
@@ -67867,6 +68319,9 @@ export type CustomElementsSolidJs = {
67867
68319
  * - `reconnecting-label`/`reconnectingLabel`: The text announced when a connection's end is picked up, with `{from}` and
67868
68320
  * `{to}`.
67869
68321
  * - `redone-label`/`redoneLabel`: What screen readers hear after a move or a resize is made again.
68322
+ * - `removed-label`/`removedLabel`: What screen readers hear when Delete asks to remove what is selected, with
68323
+ * `{count}` for how many cards and connections, and `{name}` for the one
68324
+ * where there is one.
67870
68325
  * - `resized-label`/`resizedLabel`: What screen readers hear after a key resizes a card, with `{name}` for the
67871
68326
  * card and `{width}` and `{height}` for its new size, in the document's
67872
68327
  * units.
@@ -68047,6 +68502,7 @@ export type CustomElementsSolidJs = {
68047
68502
  * Events that will be emitted by the component.
68048
68503
  *
68049
68504
  * - `helix-before-move`: Cards are about to move. Cancelable: cancel it to keep the positions in your own state.
68505
+ * - `helix-before-paste`: Cards and connections are about to be pasted. Cancelable: cancel it to add the detail's document to your own state.
68050
68506
  * - `helix-before-reconnect`: A connection's end is about to move to another card or side. Cancelable: cancel it to keep connections in your own state.
68051
68507
  * - `helix-before-relabel`: A connection's label or a group's name is about to change. Cancelable: cancel it to keep labels in your own state.
68052
68508
  * - `helix-canvas-edit`: A card was double-clicked, or Enter or F2 was pressed on it. Open your own editor for the card.
@@ -68055,6 +68511,7 @@ export type CustomElementsSolidJs = {
68055
68511
  * - `helix-canvas-zoom`: The board zoomed one step, from its controls or the keys. A wheel or a pinch sends `helix-canvas-view`.
68056
68512
  * - `helix-connect`: Two cards were chosen to be joined. Add a `helix-canvas-edge` to join them.
68057
68513
  * - `helix-move`: Cards moved and the move is finished: a drag was released, a click put a card down, or a key was pressed.
68514
+ * - `helix-pasted`: Cards and connections were pasted, and the board holds them.
68058
68515
  * - `helix-reconnect`: A connection's end moved, and the move is finished.
68059
68516
  * - `helix-relabel`: A connection's label or a group's name changed.
68060
68517
  * - `helix-remove`: Cards or connections were chosen for removal. Remove the elements it names.
@@ -68108,6 +68565,24 @@ export type CustomElementsSolidJs = {
68108
68565
  * with nothing to undo, or when the request was refused.
68109
68566
  * - `redo() => boolean`: Makes the last move or resize `undo` took back again, asking with
68110
68567
  * `helix-before-move` first. Returns whether anything moved.
68568
+ * - `paste(document: CanvasDocument | string) => boolean`: Adds the cards and connections of a JSON Canvas document, as a paste does,
68569
+ * and selects the cards. Ids the board already holds are given a count after
68570
+ * them, and the cards move a step down and to the right while they would sit
68571
+ * on cards already there.
68572
+ *
68573
+ * Asks with `helix-before-paste` first: cancel it to add the detail's
68574
+ * document to your own state. Returns whether the board added the cards:
68575
+ * false on a `readonly` board, for text that is not a board, or when the
68576
+ * request was refused.
68577
+ * - `arrange(options: CanvasArrangeOptions = {}) => boolean`: Moves the cards so that none overlaps another: in layers that follow the
68578
+ * connections, or in a grid where there are none. A group moves as one box
68579
+ * with its cards. Each place lands on a multiple of `snap` where it is set.
68580
+ *
68581
+ * Asks with `helix-before-move` first and tells with `helix-move`, as a
68582
+ * move does, so `undo()` puts every card back. The cards glide to their
68583
+ * places for as long as the board's plane takes to glide, and land at once
68584
+ * where it does not, such as under `prefers-reduced-motion`. Returns whether
68585
+ * the cards moved.
68111
68586
  * - `toJsonCanvas() => CanvasDocument`: The board as a JSON Canvas document, for saving it.
68112
68587
  *
68113
68588
  * What each card holds is the consumer's DOM, so a card comes back as a card
@@ -68771,7 +69246,7 @@ export type CustomElementsSolidJs = {
68771
69246
  * and reading `:disabled` here would answer about the attribute we are in the
68772
69247
  * middle of removing.
68773
69248
  * - `checkValidity() => boolean`: Returns whether the control is valid, and fires `invalid` on it when it is
68774
- * not.
69249
+ * not. The control shows no message for it: `reportValidity()` does that.
68775
69250
  * - `reportValidity() => boolean`: Returns whether the control is valid, and when it is not, fires `invalid`
68776
69251
  * and shows the browser's message at the control.
68777
69252
  * - `setCustomValidity(message: string) => void`: Marks the control invalid with `message`, or clears that with an empty
@@ -69360,7 +69835,7 @@ export type CustomElementsSolidJs = {
69360
69835
  * and reading `:disabled` here would answer about the attribute we are in the
69361
69836
  * middle of removing.
69362
69837
  * - `checkValidity() => boolean`: Returns whether the control is valid, and fires `invalid` on it when it is
69363
- * not.
69838
+ * not. The control shows no message for it: `reportValidity()` does that.
69364
69839
  * - `reportValidity() => boolean`: Returns whether the control is valid, and when it is not, fires `invalid`
69365
69840
  * and shows the browser's message at the control.
69366
69841
  * - `setCustomValidity(message: string) => void`: Marks the control invalid with `message`, or clears that with an empty
@@ -69620,7 +70095,7 @@ export type CustomElementsSolidJs = {
69620
70095
  * and reading `:disabled` here would answer about the attribute we are in the
69621
70096
  * middle of removing.
69622
70097
  * - `checkValidity() => boolean`: Returns whether the control is valid, and fires `invalid` on it when it is
69623
- * not.
70098
+ * not. The control shows no message for it: `reportValidity()` does that.
69624
70099
  * - `reportValidity() => boolean`: Returns whether the control is valid, and when it is not, fires `invalid`
69625
70100
  * and shows the browser's message at the control.
69626
70101
  * - `setCustomValidity(message: string) => void`: Marks the control invalid with `message`, or clears that with an empty
@@ -69728,6 +70203,18 @@ export type CustomElementsSolidJs = {
69728
70203
  * keeps hydration clean, and draws the diff once it can read the content. Diff
69729
70204
  * mode is experimental. The rest of the family is stable.
69730
70205
  *
70206
+ * **Several blocks are files**, one shown at a time under a row of tabs, as
70207
+ * Sandbox shows its source panes. Put Code Blocks in the default slot of a
70208
+ * Code Block, and each is a file named on its tab by its `label` or, without
70209
+ * one, its `language`. `file` holds the name of the file shown. The tabs are a
70210
+ * tab list: the arrow keys move to a tab and show its file, the two swapping
70211
+ * on a right-to-left page, and Home and End go to the first and the last.
70212
+ * Choosing one sends `helix-before-change` with the file's name, which you can
70213
+ * cancel, and `change` once `file` holds it. The files not shown carry
70214
+ * `hidden`, and the one shown draws no name of its own, its tab naming it. One
70215
+ * block draws no tabs. A server cannot see the blocks inside, so the client
70216
+ * draws the tabs once it upgrades.
70217
+ *
69731
70218
  * ## Attributes & Properties
69732
70219
  *
69733
70220
  * Component attributes and properties that can be applied to the element or by using JavaScript.
@@ -69761,6 +70248,11 @@ export type CustomElementsSolidJs = {
69761
70248
  * the button is drawn only while the cap hides something, measured as the
69762
70249
  * block lays out. Not for a diff, whose files each scroll on their own.
69763
70250
  * - `expand-label`/`expandLabel`: The expand button's words while the cap hides lines.
70251
+ * - `file`: The name of the file shown, where the block holds several Code Blocks:
70252
+ * the `label` of one, or its `language` without one.
70253
+ *
70254
+ * Unset, or a name no file has, shows the first.
70255
+ * - `files-label`/`filesLabel`: The name of the file tabs, read by screen readers.
69764
70256
  * - `hide-unchanged-label`/`hideUnchangedLabel`: The words of a button that hides a run of unchanged lines it showed, in a
69765
70257
  * diff with `context-lines`. `{count}` is how many, and each language
69766
70258
  * writes the forms it has.
@@ -69867,7 +70359,11 @@ export type CustomElementsSolidJs = {
69867
70359
  *
69868
70360
  * Events that will be emitted by the component.
69869
70361
  *
70362
+ * - `change`: A file tab showed its file, whose name `file` now holds.
70363
+ * - `helix-before-change`: A file tab is about to show its file, with the file's name in `detail.value`. Cancelable: cancel it to keep the file shown.
69870
70364
  * - `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.
70365
+ * - `helix-copy`: The copy button put the code on the clipboard, with the text in `detail.value`.
70366
+ * - `helix-copy-error`: A press on the copy button put nothing on the clipboard: the browser did not allow the write, or there was no code.
69871
70367
  * - `helix-toggle`: Fired after the wrap button changed `wrap`, with the new value in `detail.checked`.
69872
70368
  *
69873
70369
  * ## Slots
@@ -69916,6 +70412,8 @@ export type CustomElementsSolidJs = {
69916
70412
  * - `copy-tooltip-top`: The tooltip while it is above the copy button. Applied with `copy-tooltip`.
69917
70413
  * - `expand`: The button under a capped block that shows every line, and fewer again. Drawn when `expandable` is set and the cap hides something.
69918
70414
  * - `file`: In a diff, one file's header and block.
70415
+ * - `file-tab`: One file tab, `aria-selected` while its file is shown.
70416
+ * - `files`: The file tabs over the blocks a block holds, where there are several.
69919
70417
  * - `filler`: In a split diff, the empty row opposite a line the other side does not have.
69920
70418
  * - `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`.
69921
70419
  * - `frame`: The code, and the copy button beside it where there is no header.
@@ -69938,6 +70436,7 @@ export type CustomElementsSolidJs = {
69938
70436
  * These can be used to apply styling when a component is in a given state.
69939
70437
  *
69940
70438
  * - `expanded`: The expand button has shown every line of a capped block.
70439
+ * - `tabbed`: The block is one of several files under another block's tabs, which name it, so it draws no name of its own.
69941
70440
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
69942
70441
  */
69943
70442
  "helix-headless-code-block": Partial<
@@ -70288,7 +70787,7 @@ export type CustomElementsSolidJs = {
70288
70787
  * and reading `:disabled` here would answer about the attribute we are in the
70289
70788
  * middle of removing.
70290
70789
  * - `checkValidity() => boolean`: Returns whether the control is valid, and fires `invalid` on it when it is
70291
- * not.
70790
+ * not. The control shows no message for it: `reportValidity()` does that.
70292
70791
  * - `reportValidity() => boolean`: Returns whether the control is valid, and when it is not, fires `invalid`
70293
70792
  * and shows the browser's message at the control.
70294
70793
  * - `setCustomValidity(message: string) => void`: Marks the control invalid with `message`, or clears that with an empty
@@ -70705,7 +71204,7 @@ export type CustomElementsSolidJs = {
70705
71204
  * and reading `:disabled` here would answer about the attribute we are in the
70706
71205
  * middle of removing.
70707
71206
  * - `checkValidity() => boolean`: Returns whether the control is valid, and fires `invalid` on it when it is
70708
- * not.
71207
+ * not. The control shows no message for it: `reportValidity()` does that.
70709
71208
  * - `reportValidity() => boolean`: Returns whether the control is valid, and when it is not, fires `invalid`
70710
71209
  * and shows the browser's message at the control.
70711
71210
  * - `setCustomValidity(message: string) => void`: Marks the control invalid with `message`, or clears that with an empty
@@ -71142,7 +71641,7 @@ export type CustomElementsSolidJs = {
71142
71641
  * and reading `:disabled` here would answer about the attribute we are in the
71143
71642
  * middle of removing.
71144
71643
  * - `checkValidity() => boolean`: Returns whether the control is valid, and fires `invalid` on it when it is
71145
- * not.
71644
+ * not. The control shows no message for it: `reportValidity()` does that.
71146
71645
  * - `reportValidity() => boolean`: Returns whether the control is valid, and when it is not, fires `invalid`
71147
71646
  * and shows the browser's message at the control.
71148
71647
  * - `setCustomValidity(message: string) => void`: Marks the control invalid with `message`, or clears that with an empty
@@ -71642,7 +72141,7 @@ export type CustomElementsSolidJs = {
71642
72141
  * forgetting of a reader's past attempt, whose message otherwise showed over
71643
72142
  * the emptied control the moment the form was reset.
71644
72143
  * - `checkValidity() => boolean`: Returns whether the control is valid, and fires `invalid` on it when it is
71645
- * not.
72144
+ * not. The control shows no message for it: `reportValidity()` does that.
71646
72145
  * - `reportValidity() => boolean`: Returns whether the control is valid, and when it is not, fires `invalid`
71647
72146
  * and shows the browser's message at the control.
71648
72147
  * - `setCustomValidity(message: string) => void`: Marks the control invalid with `message`, or clears that with an empty
@@ -72219,7 +72718,7 @@ export type CustomElementsSolidJs = {
72219
72718
  * | Page Up, Page Down on a segment | Steps by a page: a week of days, two months, or five years. |
72220
72719
  * | Home, End on a segment | Goes to the segment's first or last value. |
72221
72720
  * | Digits on a segment | Fill it, and move to the next once it can take no more. |
72222
- * | Backspace, Delete on a segment | Empty the segment. |
72721
+ * | Backspace, Delete on a segment | Take off its last digit, or move to the segment before where it is empty. |
72223
72722
  * | Left, Right on a segment | Move to the previous or the next segment, along the line of text. |
72224
72723
  *
72225
72724
  * In the calendar, the keys are `DatePicker`'s: the arrows move by a day or a
@@ -72595,7 +73094,7 @@ export type CustomElementsSolidJs = {
72595
73094
  * and reading `:disabled` here would answer about the attribute we are in the
72596
73095
  * middle of removing.
72597
73096
  * - `checkValidity() => boolean`: Returns whether the control is valid, and fires `invalid` on it when it is
72598
- * not.
73097
+ * not. The control shows no message for it: `reportValidity()` does that.
72599
73098
  * - `reportValidity() => boolean`: Returns whether the control is valid, and when it is not, fires `invalid`
72600
73099
  * and shows the browser's message at the control.
72601
73100
  * - `setCustomValidity(message: string) => void`: Marks the control invalid with `message`, or clears that with an empty
@@ -73025,7 +73524,7 @@ export type CustomElementsSolidJs = {
73025
73524
  * and reading `:disabled` here would answer about the attribute we are in the
73026
73525
  * middle of removing.
73027
73526
  * - `checkValidity() => boolean`: Returns whether the control is valid, and fires `invalid` on it when it is
73028
- * not.
73527
+ * not. The control shows no message for it: `reportValidity()` does that.
73029
73528
  * - `reportValidity() => boolean`: Returns whether the control is valid, and when it is not, fires `invalid`
73030
73529
  * and shows the browser's message at the control.
73031
73530
  * - `setCustomValidity(message: string) => void`: Marks the control invalid with `message`, or clears that with an empty
@@ -74723,7 +75222,7 @@ export type CustomElementsSolidJs = {
74723
75222
  * and reading `:disabled` here would answer about the attribute we are in the
74724
75223
  * middle of removing.
74725
75224
  * - `checkValidity() => boolean`: Returns whether the control is valid, and fires `invalid` on it when it is
74726
- * not.
75225
+ * not. The control shows no message for it: `reportValidity()` does that.
74727
75226
  * - `reportValidity() => boolean`: Returns whether the control is valid, and when it is not, fires `invalid`
74728
75227
  * and shows the browser's message at the control.
74729
75228
  * - `setCustomValidity(message: string) => void`: Marks the control invalid with `message`, or clears that with an empty
@@ -75193,6 +75692,7 @@ export type CustomElementsSolidJs = {
75193
75692
  * - `menu-header`: The bar above a field's page, with the back button and the field's name.
75194
75693
  * - `menu-live`: The inner menu's `live` part: the region that screen readers announce the empty and loading messages from.
75195
75694
  * - `menu-loading`: Shown while the fields are loading.
75695
+ * - `menu-search-field`: The inner menu's filter field, drawn with `filterable`.
75196
75696
  * - `menu-surface`: The floating panel the menu is drawn on.
75197
75697
  * - `menu-title`: The name of the field whose page is showing.
75198
75698
  *
@@ -75643,7 +76143,7 @@ export type CustomElementsSolidJs = {
75643
76143
  * and reading `:disabled` here would answer about the attribute we are in the
75644
76144
  * middle of removing.
75645
76145
  * - `checkValidity() => boolean`: Returns whether the control is valid, and fires `invalid` on it when it is
75646
- * not.
76146
+ * not. The control shows no message for it: `reportValidity()` does that.
75647
76147
  * - `reportValidity() => boolean`: Returns whether the control is valid, and when it is not, fires `invalid`
75648
76148
  * and shows the browser's message at the control.
75649
76149
  * - `setCustomValidity(message: string) => void`: Marks the control invalid with `message`, or clears that with an empty
@@ -75738,7 +76238,8 @@ export type CustomElementsSolidJs = {
75738
76238
  * such as `buddhist` for `th-TH`, and `gregory` for every other, such as
75739
76239
  * `persian` for `fa-IR`, so a date written here reads as the same date a
75740
76240
  * Date Picker beside it shows. Write `calendar="persian"` for Mehr 14, 1405.
75741
- * - `date`: The timestamp, in any format `Date` can parse.
76241
+ * - `date`: The timestamp: a `Date`, milliseconds since the epoch, or a string in any
76242
+ * format `Date` can parse. The attribute is the string.
75742
76243
  *
75743
76244
  * An ISO string is what an API sends and what `<time datetime>` takes, so it
75744
76245
  * is the shape that needs no translation at either end. Left unset this
@@ -76801,7 +77302,7 @@ export type CustomElementsSolidJs = {
76801
77302
  * forgetting of a reader's past attempt, whose message otherwise showed over
76802
77303
  * the emptied control the moment the form was reset.
76803
77304
  * - `checkValidity() => boolean`: Returns whether the control is valid, and fires `invalid` on it when it is
76804
- * not.
77305
+ * not. The control shows no message for it: `reportValidity()` does that.
76805
77306
  * - `reportValidity() => boolean`: Returns whether the control is valid, and when it is not, fires `invalid`
76806
77307
  * and shows the browser's message at the control.
76807
77308
  * - `setCustomValidity(message: string) => void`: Marks the control invalid with `message`, or clears that with an empty
@@ -77418,7 +77919,7 @@ export type CustomElementsSolidJs = {
77418
77919
  * and reading `:disabled` here would answer about the attribute we are in the
77419
77920
  * middle of removing.
77420
77921
  * - `checkValidity() => boolean`: Returns whether the control is valid, and fires `invalid` on it when it is
77421
- * not.
77922
+ * not. The control shows no message for it: `reportValidity()` does that.
77422
77923
  * - `reportValidity() => boolean`: Returns whether the control is valid, and when it is not, fires `invalid`
77423
77924
  * and shows the browser's message at the control.
77424
77925
  * - `setCustomValidity(message: string) => void`: Marks the control invalid with `message`, or clears that with an empty
@@ -79163,7 +79664,8 @@ export type CustomElementsSolidJs = {
79163
79664
  * rather than being typed into means. Enter still chooses, because that is
79164
79665
  * the caller asking for the answer rather than for a move. Space, Home, End
79165
79666
  * and letters are left to the caller's field, where they are typing.
79166
- * - `reveal() => void`: Scrolls the chosen option to the middle of the list.
79667
+ * - `reveal() => void`: Scrolls the chosen option to the middle of the list, or the highlighted one
79668
+ * where nothing is chosen.
79167
79669
  *
79168
79670
  * A method rather than something this does on its own, because a listbox
79169
79671
  * opening on its answer usually wants it merely *visible* and the browser
@@ -79173,6 +79675,13 @@ export type CustomElementsSolidJs = {
79173
79675
  *
79174
79676
  * Measured by core's `centerInView`, or, for a list of `items`, by the
79175
79677
  * arithmetic, since the chosen option may not be drawn.
79678
+ * - `highlightValue(value: string) => void`: Puts the highlight on the option holding `value`, without choosing it, so
79679
+ * the arrow keys move from there. Nothing changes where no option a reader
79680
+ * can reach holds `value`.
79681
+ *
79682
+ * Time Picker calls it for a time between two of its steps, which no option
79683
+ * holds: without it the first arrow moved from the top of the list, so Down
79684
+ * from 14:07 went to midnight.
79176
79685
  * - `requestFilter(next: string) => boolean`: Requests a new filter, and returns whether the request went through.
79177
79686
  * - `requestValue(next: string) => boolean`: Requests a new value, and returns whether the change was applied.
79178
79687
  *
@@ -79226,7 +79735,7 @@ export type CustomElementsSolidJs = {
79226
79735
  * and reading `:disabled` here would answer about the attribute we are in the
79227
79736
  * middle of removing.
79228
79737
  * - `checkValidity() => boolean`: Returns whether the control is valid, and fires `invalid` on it when it is
79229
- * not.
79738
+ * not. The control shows no message for it: `reportValidity()` does that.
79230
79739
  * - `reportValidity() => boolean`: Returns whether the control is valid, and when it is not, fires `invalid`
79231
79740
  * and shows the browser's message at the control.
79232
79741
  * - `setCustomValidity(message: string) => void`: Marks the control invalid with `message`, or clears that with an empty
@@ -80704,6 +81213,12 @@ export type CustomElementsSolidJs = {
80704
81213
  * slots, so a mark of your own replaces either by being slotted. Neither is
80705
81214
  * read as part of the row's name.
80706
81215
  *
81216
+ * In a menu with `filterable`, focus stays in the menu's filter field and the
81217
+ * row the arrow keys reach is highlighted: the field names it with
81218
+ * `aria-activedescendant`, the row carries its role on its host so the field
81219
+ * can point at it, and `:state(highlighted)` says which row it is. A row with
81220
+ * an `href` then follows its link without an anchor, as `Option` does.
81221
+ *
80707
81222
  * ## Attributes & Properties
80708
81223
  *
80709
81224
  * Component attributes and properties that can be applied to the element or by using JavaScript.
@@ -80856,6 +81371,7 @@ export type CustomElementsSolidJs = {
80856
81371
  * These can be used to apply styling when a component is in a given state.
80857
81372
  *
80858
81373
  * - `checked`: The row is checked.
81374
+ * - `highlighted`: In a menu with `filterable`, the arrow keys or the pointer reached the row while focus stays in the filter field.
80859
81375
  * - `submenu-mark`: Under `submenus="flyout"`, a row in this row's submenu can be ticked or opens a submenu, so the submenu keeps its trailing column.
80860
81376
  * - `submenu-start`: Under `submenus="flyout"`, a row in this row's submenu has content before its label, so the submenu keeps its leading column.
80861
81377
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
@@ -80928,6 +81444,21 @@ export type CustomElementsSolidJs = {
80928
81444
  * opens it from the keyboard, and the trigger is described by
80929
81445
  * `long-press-label`, which says so.
80930
81446
  *
81447
+ * **A filter field.** With `filterable`, the menu opens with focus in a field
81448
+ * above its rows, and typing narrows the rows of the page the keys move in,
81449
+ * as React Aria's `Autocomplete` around a `Menu` does. A row is kept where its
81450
+ * words hold the filter, in any case, or where `filterMatch` says so. Each
81451
+ * page starts unfiltered, and the filter is cleared as the menu closes. Where
81452
+ * typing keeps no row, the menu shows `no-results-text`. Focus stays in the
81453
+ * field: Up and Down Arrow move the highlight through the rows that are left,
81454
+ * Enter chooses the highlighted row, Right Arrow opens its submenu, Left Arrow
81455
+ * on a submenu goes back, and Escape clears the filter and then closes the
81456
+ * menu. Home, End and the other keys move the caret and type. The field names
81457
+ * the highlighted row with `aria-activedescendant`, and the rows are a `menu`
81458
+ * after the field. Cancel `helix-filter` to keep every row
81459
+ * showing and narrow the rows yourself, such as by replacing them with rows
81460
+ * from a server.
81461
+ *
80931
81462
  * ## Attributes & Properties
80932
81463
  *
80933
81464
  * Component attributes and properties that can be applied to the element or by using JavaScript.
@@ -80940,6 +81471,13 @@ export type CustomElementsSolidJs = {
80940
81471
  * Ark UI's `closeOnSelect` does. A row's own `close-on-select` wins over this.
80941
81472
  * - `context`: Whether the menu is the trigger's context menu: it opens where the reader
80942
81473
  * asks for one, with a right-click, a long press, Shift+F10 or the menu key.
81474
+ * - `filter`: The text the rows are filtered by, which the filter field holds.
81475
+ *
81476
+ * Cleared as the menu closes and as a submenu opens or closes, so each page
81477
+ * starts with every row showing.
81478
+ * - `filterable`: Whether the menu shows a field above its rows that narrows them as the
81479
+ * reader types, with focus staying in the field.
81480
+ * - `filter-label`/`filterLabel`: The filter field's name and placeholder.
80943
81481
  * - `label`: Accessible name for the surface.
80944
81482
  *
80945
81483
  * Empty by default, which names the surface by its trigger, so a menu opened
@@ -80947,6 +81485,7 @@ export type CustomElementsSolidJs = {
80947
81485
  * `aria-labelledby` on the host names it too, and wins over both.
80948
81486
  * - `long-press-label`/`longPressLabel`: The description a trigger gives under `open-on="long-press"`, saying how
80949
81487
  * to open the menu. Translate it with the rest of your interface.
81488
+ * - `no-results-text`/`noResultsText`: The text shown when the filter keeps no rows.
80950
81489
  * - `offset`: Space between the trigger and the surface, in pixels.
80951
81490
  * - `open-on`/`openOn`: What opens the menu from its trigger. `long-press` leaves a press to the
80952
81491
  * trigger's own action and opens the menu on a press held for half a second,
@@ -80976,6 +81515,12 @@ export type CustomElementsSolidJs = {
80976
81515
  * hydration, or diffed by a framework, it comes back holding whatever the
80977
81516
  * last reader did rather than what the author wrote. `:state(open)` carries
80978
81517
  * the resolved state for stylesheets, which is what the mirror is for.
81518
+ * - `filterMatch`: Whether a row is kept by the filter: a function given the row's words and
81519
+ * the filter, trimmed, that returns `true` to keep it showing, as React
81520
+ * Aria's `Autocomplete` takes `filter`. See Listbox's `filterMatch`.
81521
+ *
81522
+ * Absent, a row is kept where its words hold the filter, in any case. A
81523
+ * property only, there being no way to write a function in markup. (property only)
80979
81524
  * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
80980
81525
  *
80981
81526
  * **Named `whenSettled` because `settled` is taken four times over**, by
@@ -81003,6 +81548,7 @@ export type CustomElementsSolidJs = {
81003
81548
  *
81004
81549
  * - `helix-before-close`: The menu is about to close. Cancelable: cancel it to keep it open.
81005
81550
  * - `helix-before-open`: The menu is about to open. Cancelable: cancel it to keep it closed.
81551
+ * - `helix-filter`: The text in the filter field changed, with the new text in `detail.value`. Cancelable: cancel it to keep every row showing and narrow the rows yourself.
81006
81552
  * - `helix-select`: An item was chosen. Cancelable: cancel it to keep the menu open.
81007
81553
  * - `toggle`: The menu opened or closed. The event carries `newState` and `oldState`.
81008
81554
  *
@@ -81011,6 +81557,7 @@ export type CustomElementsSolidJs = {
81011
81557
  * Areas where markup can be added to the component.
81012
81558
  *
81013
81559
  * - `(default)`: The items.
81560
+ * - `no-results`: What the menu shows when the filter keeps no rows, for content richer than `no-results-text`.
81014
81561
  * - `trigger`: The control that opens the menu, or with `context` the area a context menu opens over.
81015
81562
  *
81016
81563
  * ## Methods
@@ -81046,7 +81593,8 @@ export type CustomElementsSolidJs = {
81046
81593
  * - `header`: The bar above a submenu, holding the way back and its name.
81047
81594
  * - `live`: A live region that repeats the empty and loading text, so screen readers announce it when it changes. Visually hidden in the styled tier.
81048
81595
  * - `loading`: The text shown while the items are loading.
81049
- * - `surface`: The floating panel the menu is drawn on.
81596
+ * - `search-field`: With `filterable`, the field that narrows the rows.
81597
+ * - `surface`: The floating panel the menu is drawn on. It is the `menu` itself, and with `filterable` it holds the filter field and then the `menu`.
81050
81598
  * - `title`: The name of the submenu that is showing.
81051
81599
  *
81052
81600
  * ## CSS States
@@ -82279,7 +82827,7 @@ export type CustomElementsSolidJs = {
82279
82827
  * and reading `:disabled` here would answer about the attribute we are in the
82280
82828
  * middle of removing.
82281
82829
  * - `checkValidity() => boolean`: Returns whether the control is valid, and fires `invalid` on it when it is
82282
- * not.
82830
+ * not. The control shows no message for it: `reportValidity()` does that.
82283
82831
  * - `reportValidity() => boolean`: Returns whether the control is valid, and when it is not, fires `invalid`
82284
82832
  * and shows the browser's message at the control.
82285
82833
  * - `setCustomValidity(message: string) => void`: Marks the control invalid with `message`, or clears that with an empty
@@ -82510,6 +83058,13 @@ export type CustomElementsSolidJs = {
82510
83058
  *
82511
83059
  * - `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
83060
  *
83061
+ * ## Methods
83062
+ *
83063
+ * Methods that can be called to access component functionality.
83064
+ *
83065
+ * - `focus(options?: FocusOptions) => void`: Moves focus to the row the keys move from, or to the tree while that row
83066
+ * is scrolled out of the window, as Tab reaches them.
83067
+ *
82513
83068
  * ## CSS Custom Properties
82514
83069
  *
82515
83070
  * CSS variables available for styling the component.
@@ -83425,7 +83980,7 @@ export type CustomElementsSolidJs = {
83425
83980
  * and reading `:disabled` here would answer about the attribute we are in the
83426
83981
  * middle of removing.
83427
83982
  * - `checkValidity() => boolean`: Returns whether the control is valid, and fires `invalid` on it when it is
83428
- * not.
83983
+ * not. The control shows no message for it: `reportValidity()` does that.
83429
83984
  * - `reportValidity() => boolean`: Returns whether the control is valid, and when it is not, fires `invalid`
83430
83985
  * and shows the browser's message at the control.
83431
83986
  * - `setCustomValidity(message: string) => void`: Marks the control invalid with `message`, or clears that with an empty
@@ -83808,7 +84363,7 @@ export type CustomElementsSolidJs = {
83808
84363
  * and reading `:disabled` here would answer about the attribute we are in the
83809
84364
  * middle of removing.
83810
84365
  * - `checkValidity() => boolean`: Returns whether the control is valid, and fires `invalid` on it when it is
83811
- * not.
84366
+ * not. The control shows no message for it: `reportValidity()` does that.
83812
84367
  * - `reportValidity() => boolean`: Returns whether the control is valid, and when it is not, fires `invalid`
83813
84368
  * and shows the browser's message at the control.
83814
84369
  * - `setCustomValidity(message: string) => void`: Marks the control invalid with `message`, or clears that with an empty
@@ -84649,7 +85204,7 @@ export type CustomElementsSolidJs = {
84649
85204
  * and reading `:disabled` here would answer about the attribute we are in the
84650
85205
  * middle of removing.
84651
85206
  * - `checkValidity() => boolean`: Returns whether the control is valid, and fires `invalid` on it when it is
84652
- * not.
85207
+ * not. The control shows no message for it: `reportValidity()` does that.
84653
85208
  * - `reportValidity() => boolean`: Returns whether the control is valid, and when it is not, fires `invalid`
84654
85209
  * and shows the browser's message at the control.
84655
85210
  * - `setCustomValidity(message: string) => void`: Marks the control invalid with `message`, or clears that with an empty
@@ -85086,7 +85641,7 @@ export type CustomElementsSolidJs = {
85086
85641
  * and reading `:disabled` here would answer about the attribute we are in the
85087
85642
  * middle of removing.
85088
85643
  * - `checkValidity() => boolean`: Returns whether the control is valid, and fires `invalid` on it when it is
85089
- * not.
85644
+ * not. The control shows no message for it: `reportValidity()` does that.
85090
85645
  * - `reportValidity() => boolean`: Returns whether the control is valid, and when it is not, fires `invalid`
85091
85646
  * and shows the browser's message at the control.
85092
85647
  * - `setCustomValidity(message: string) => void`: Marks the control invalid with `message`, or clears that with an empty
@@ -85910,7 +86465,7 @@ export type CustomElementsSolidJs = {
85910
86465
  * and reading `:disabled` here would answer about the attribute we are in the
85911
86466
  * middle of removing.
85912
86467
  * - `checkValidity() => boolean`: Returns whether the control is valid, and fires `invalid` on it when it is
85913
- * not.
86468
+ * not. The control shows no message for it: `reportValidity()` does that.
85914
86469
  * - `reportValidity() => boolean`: Returns whether the control is valid, and when it is not, fires `invalid`
85915
86470
  * and shows the browser's message at the control.
85916
86471
  * - `setCustomValidity(message: string) => void`: Marks the control invalid with `message`, or clears that with an empty
@@ -86437,7 +86992,7 @@ export type CustomElementsSolidJs = {
86437
86992
  * and reading `:disabled` here would answer about the attribute we are in the
86438
86993
  * middle of removing.
86439
86994
  * - `checkValidity() => boolean`: Returns whether the control is valid, and fires `invalid` on it when it is
86440
- * not.
86995
+ * not. The control shows no message for it: `reportValidity()` does that.
86441
86996
  * - `reportValidity() => boolean`: Returns whether the control is valid, and when it is not, fires `invalid`
86442
86997
  * and shows the browser's message at the control.
86443
86998
  * - `setCustomValidity(message: string) => void`: Marks the control invalid with `message`, or clears that with an empty
@@ -87605,6 +88160,10 @@ export type CustomElementsSolidJs = {
87605
88160
  *
87606
88161
  * Methods that can be called to access component functionality.
87607
88162
  *
88163
+ * - `requestActive(next: string, cause?: string) => boolean`: Requests a new current stage, and returns whether it moved.
88164
+ *
88165
+ * Where only a step's `current` says where the reader is, `active` is first
88166
+ * written with that step, so `helix-activate` names it as `previous`.
87608
88167
  * - `next() => boolean`: Moves to the next stage that can be gone to, as Ark UI's `goToNextStep`
87609
88168
  * does. Returns whether it moved: not past the last stage, not into a stage
87610
88169
  * `linear` holds out of reach, and not where a listener refused.
@@ -87613,15 +88172,6 @@ export type CustomElementsSolidJs = {
87613
88172
  * and the invalid mark from every stage, as Ark UI's `resetStep` does.
87614
88173
  * Returns whether it moved: a listener can refuse the move with
87615
88174
  * `helix-before-activate`, and the stages then keep their marks.
87616
- * - `requestActive(next: string, cause?: string) => boolean`: Requests a new current item, and returns whether the change was applied.
87617
- *
87618
- * Announces before it acts, so `preventDefault()` on the `helix-before-activate` is
87619
- * a refusal and nothing moves. Unlike a native control, nothing has moved
87620
- * by the time this runs, so refusing is simply not writing: there is
87621
- * nothing to put back. Nobody refusing means the set updates itself,
87622
- * whether or not a consumer declared `active`, a declared property being a
87623
- * seed and a correction. `cause` says why, where the family names its
87624
- * causes, and reaches the event as `detail.cause`.
87625
88175
  *
87626
88176
  * ## CSS Custom Properties
87627
88177
  *
@@ -87976,7 +88526,7 @@ export type CustomElementsSolidJs = {
87976
88526
  * and reading `:disabled` here would answer about the attribute we are in the
87977
88527
  * middle of removing.
87978
88528
  * - `checkValidity() => boolean`: Returns whether the control is valid, and fires `invalid` on it when it is
87979
- * not.
88529
+ * not. The control shows no message for it: `reportValidity()` does that.
87980
88530
  * - `reportValidity() => boolean`: Returns whether the control is valid, and when it is not, fires `invalid`
87981
88531
  * and shows the browser's message at the control.
87982
88532
  * - `setCustomValidity(message: string) => void`: Marks the control invalid with `message`, or clears that with an empty
@@ -88348,6 +88898,7 @@ export type CustomElementsSolidJs = {
88348
88898
  * The `heading` slot names the table: slot a heading or a line of text into
88349
88899
  * it, and the table is named by its words. An `aria-label` or `aria-labelledby` on the
88350
88900
  * host wins over it.
88901
+ * A table with no name is reported once in a development build.
88351
88902
  *
88352
88903
  * **Selecting.** `selectable` adds a column of checkboxes.
88353
88904
  *
@@ -88433,9 +88984,17 @@ export type CustomElementsSolidJs = {
88433
88984
  * | A letter or a word | Moves to the next row whose first cell starts with what you typed. |
88434
88985
  * | Tab | Leaves the table. |
88435
88986
  *
88987
+ * **Long tables.** `windowed` draws only the rows in view, as Data Table's
88988
+ * does, and the box of the table scrolls under headings that stick. The
88989
+ * table still says how many rows it has with `aria-rowcount`, and each row
88990
+ * its place with `aria-rowindex`. The keys reach every row, drawn or not, and
88991
+ * the row holding focus stays drawn when it scrolls away. Nested rows,
88992
+ * sorting, and selecting work as they do in a table that draws every row.
88993
+ *
88436
88994
  * **Loading more.** `load-more` sends `helix-load-more` once the end of the
88437
88995
  * table comes within a screen of view, in the box that scrolls it or the
88438
- * page, once for each number of rows: add rows and it can send it again. Set
88996
+ * page, or in the table's own box when it is `windowed`, once for each
88997
+ * number of rows: add rows and it can send it again. Set
88439
88998
  * `loading` while you fetch, and the table asks for nothing until it clears.
88440
88999
  *
88441
89000
  * When the rows did not load, set `error-text`, such as "The orders did not
@@ -88560,6 +89119,14 @@ export type CustomElementsSolidJs = {
88560
89119
  * order has its whole sentence. `{order}` is the deprecated
88561
89120
  * `ascending-label` or `descending-label`.
88562
89121
  * - `unsorted-label`/`unsortedLabel`: What screen readers hear when the table stops being sorted.
89122
+ * - `windowed`: Draws only the rows in view, with empty space in place of the rest, as
89123
+ * Data Table's `windowed` does. The table's box then scrolls, at the
89124
+ * height `--table-block-size` gives it in the styled tier, and the
89125
+ * headings stick to its top.
89126
+ *
89127
+ * Off by default. Windowing costs a scroll listener, a measurement per row
89128
+ * drawn, and a height on the table, and a table of twenty rows should pay
89129
+ * none of them.
88563
89130
  * - `empty-text`/`emptyText`: The text shown and announced when there are no rows and none are loading.
88564
89131
  * - `loading`: Whether the rows are still loading.
88565
89132
  *
@@ -88631,6 +89198,8 @@ export type CustomElementsSolidJs = {
88631
89198
  *
88632
89199
  * Custom selectors for styling elements within the component.
88633
89200
  *
89201
+ * - `after`: The space that stands in for the rows below the window. Only while `windowed`.
89202
+ * - `before`: The space that stands in for the rows above the window. Only while `windowed`.
88634
89203
  * - `checkbox`: The checkbox in the heading that selects every row, in a `selectable` table.
88635
89204
  * - `checkbox-box`: The box drawn for the checkbox's input.
88636
89205
  * - `checkbox-control`: The checkbox's input.
@@ -89693,7 +90262,7 @@ export type CustomElementsSolidJs = {
89693
90262
  * and reading `:disabled` here would answer about the attribute we are in the
89694
90263
  * middle of removing.
89695
90264
  * - `checkValidity() => boolean`: Returns whether the control is valid, and fires `invalid` on it when it is
89696
- * not.
90265
+ * not. The control shows no message for it: `reportValidity()` does that.
89697
90266
  * - `reportValidity() => boolean`: Returns whether the control is valid, and when it is not, fires `invalid`
89698
90267
  * and shows the browser's message at the control.
89699
90268
  * - `setCustomValidity(message: string) => void`: Marks the control invalid with `message`, or clears that with an empty
@@ -89775,7 +90344,7 @@ export type CustomElementsSolidJs = {
89775
90344
  * | Home, End on a segment | Goes to the segment's first or last value. |
89776
90345
  * | Digits on a segment | Fill it, and move to the next once it can take no more. |
89777
90346
  * | A letter on the half of the day | Picks the half whose name starts with it, such as A for AM. |
89778
- * | Backspace, Delete on a segment | Empty the segment. |
90347
+ * | Backspace, Delete on a segment | Take off its last digit, or move to the segment before where it is empty. |
89779
90348
  * | Left, Right on a segment | Move to the previous or the next segment, along the line of text. |
89780
90349
  *
89781
90350
  * In the list, the keys are `TimePicker`'s.
@@ -90091,7 +90660,7 @@ export type CustomElementsSolidJs = {
90091
90660
  * and reading `:disabled` here would answer about the attribute we are in the
90092
90661
  * middle of removing.
90093
90662
  * - `checkValidity() => boolean`: Returns whether the control is valid, and fires `invalid` on it when it is
90094
- * not.
90663
+ * not. The control shows no message for it: `reportValidity()` does that.
90095
90664
  * - `reportValidity() => boolean`: Returns whether the control is valid, and when it is not, fires `invalid`
90096
90665
  * and shows the browser's message at the control.
90097
90666
  * - `setCustomValidity(message: string) => void`: Marks the control invalid with `message`, or clears that with an empty
@@ -90139,6 +90708,7 @@ export type CustomElementsSolidJs = {
90139
90708
  * - `picker-list-loading`: The text shown while the options load.
90140
90709
  * - `picker-list-search`: The region that holds the filter field.
90141
90710
  * - `picker-list-search-field`: The filter field.
90711
+ * - `picker-now`: The picker's button that chooses the current time, which Time Input does not draw.
90142
90712
  * - `picker-option`: One time in the picker. Carries `data-between` inside a range.
90143
90713
  * - `picker-option-between`: A time inside a chosen range, between its two ends. Set together with `picker-option`.
90144
90714
  * - `picker-option-description`: The caption under the label, when there is one.
@@ -90188,7 +90758,9 @@ export type CustomElementsSolidJs = {
90188
90758
  * between the wheels, and Tab does too.
90189
90759
  *
90190
90760
  * `hour-cycle` writes every time on a twelve or a twenty-four hour clock
90191
- * whatever the locale, and `seconds` holds times to the second.
90761
+ * whatever the locale, and `seconds` holds times to the second. `show-now`
90762
+ * draws a button that chooses the current time, on the step and inside the
90763
+ * bounds.
90192
90764
  *
90193
90765
  * The step keeps the list usable. At the default of 15 minutes a day is 96
90194
90766
  * rows, which people can scroll or type into. At 1 minute it is 1,440. Use the
@@ -90313,6 +90885,8 @@ export type CustomElementsSolidJs = {
90313
90885
  * and a wheel has exactly one value by construction. Rather than draw
90314
90886
  * something that cannot say what it holds, `wheels` renders as a list
90315
90887
  * whenever a mode is set.
90888
+ * - `now-label`/`nowLabel`: The words on the button that chooses the current time, drawn with
90889
+ * `show-now`.
90316
90890
  * - `range-overflow-message`/`rangeOverflowMessage`: The validation message for a time after `max`. `{max}` is replaced with
90317
90891
  * `max`, written in `locale`.
90318
90892
  * - `range-underflow-message`/`rangeUnderflowMessage`: The validation message for a time before `min`. `{min}` is replaced with
@@ -90340,6 +90914,13 @@ export type CustomElementsSolidJs = {
90340
90914
  * `<input type="time">` counts in. A list at a step of one second is 86,400
90341
90915
  * rows, so give `seconds` a `step` and bounds that keep it a list, or use
90342
90916
  * the wheels.
90917
+ * - `show-now`/`showNow`: Draws a button under the times that chooses the current time, as
90918
+ * `selectNow()` does.
90919
+ *
90920
+ * For a form about something happening now, such as a shift starting or a
90921
+ * dose taken, where the reader would otherwise scroll to the time on the
90922
+ * clock. The button is a tab stop after the times, and its words are
90923
+ * `now-label`.
90343
90924
  * - `step`: How far apart the offered times are, in minutes, or in seconds with
90344
90925
  * `seconds`.
90345
90926
  *
@@ -90472,6 +91053,14 @@ export type CustomElementsSolidJs = {
90472
91053
  *
90473
91054
  * Methods that can be called to access component functionality.
90474
91055
  *
91056
+ * - `selectNow() => boolean`: Chooses the current time, as a press on the `show-now` button does, and
91057
+ * returns whether the value changed.
91058
+ *
91059
+ * The time is read off the reader's clock and moved to the nearest time on
91060
+ * offer that is not barred, so it falls on the `step` and inside `min` and
91061
+ * `max`. It is requested as a pick is, so `helix-before-change` can cancel
91062
+ * it. With a `mode` the time joins the times held, and a range that holds
91063
+ * two starts over from it, as a third pick does.
90475
91064
  * - `reveal() => void`: Scrolls each wheel to its selected value, and the list to its selected
90476
91065
  * time.
90477
91066
  *
@@ -90546,7 +91135,7 @@ export type CustomElementsSolidJs = {
90546
91135
  * and reading `:disabled` here would answer about the attribute we are in the
90547
91136
  * middle of removing.
90548
91137
  * - `checkValidity() => boolean`: Returns whether the control is valid, and fires `invalid` on it when it is
90549
- * not.
91138
+ * not. The control shows no message for it: `reportValidity()` does that.
90550
91139
  * - `reportValidity() => boolean`: Returns whether the control is valid, and when it is not, fires `invalid`
90551
91140
  * and shows the browser's message at the control.
90552
91141
  * - `setCustomValidity(message: string) => void`: Marks the control invalid with `message`, or clears that with an empty
@@ -90586,6 +91175,7 @@ export type CustomElementsSolidJs = {
90586
91175
  * - `list-loading`: The text shown while the options load.
90587
91176
  * - `list-search`: The region that holds the filter field.
90588
91177
  * - `list-search-field`: The filter field.
91178
+ * - `now`: The button that chooses the current time, drawn with `show-now`.
90589
91179
  * - `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.
90590
91180
  * - `option-between`: A time inside a chosen range, excluding its ends, beside `option`.
90591
91181
  * - `option-description`: The caption under the time's label, when there is one.
@@ -91427,7 +92017,7 @@ export type CustomElementsSolidJs = {
91427
92017
  * and reading `:disabled` here would answer about the attribute we are in the
91428
92018
  * middle of removing.
91429
92019
  * - `checkValidity() => boolean`: Returns whether the control is valid, and fires `invalid` on it when it is
91430
- * not.
92020
+ * not. The control shows no message for it: `reportValidity()` does that.
91431
92021
  * - `reportValidity() => boolean`: Returns whether the control is valid, and when it is not, fires `invalid`
91432
92022
  * and shows the browser's message at the control.
91433
92023
  * - `setCustomValidity(message: string) => void`: Marks the control invalid with `message`, or clears that with an empty
@@ -93094,6 +93684,7 @@ export type CustomElementsSolidJs = {
93094
93684
  * - `menu-header`: The bar above a submenu, holding the back button and the submenu's name.
93095
93685
  * - `menu-live`: The inner menu's `live` part, the region screen readers announce its empty and loading messages from.
93096
93686
  * - `menu-loading`: Shown while the items are loading.
93687
+ * - `menu-search-field`: The inner menu's filter field, drawn with `filterable`.
93097
93688
  * - `menu-surface`: The floating panel the menu is drawn on.
93098
93689
  * - `menu-title`: The name of the submenu that is shown.
93099
93690
  * - `poster`: An entry's poster image, if it has one.
@@ -93687,6 +94278,7 @@ export type CustomElementsSolidJs = {
93687
94278
  * - `captions-menu-header`: The bar above a submenu, holding the way back and its name.
93688
94279
  * - `captions-menu-live`: The inner menu's `live` part, a live region that repeats the empty and loading text for screen readers.
93689
94280
  * - `captions-menu-loading`: The text shown while the items are loading.
94281
+ * - `captions-menu-search-field`: The inner menu's filter field, drawn with `filterable`.
93690
94282
  * - `captions-menu-surface`: The floating panel the menu is drawn on.
93691
94283
  * - `captions-menu-title`: The name of the submenu that is showing.
93692
94284
  * - `controls`: The control bar along the bottom.
@@ -93718,6 +94310,7 @@ export type CustomElementsSolidJs = {
93718
94310
  * - `overflow-header`: The bar above a submenu, holding the way back and its name.
93719
94311
  * - `overflow-live`: The inner menu's `live` part, a live region that repeats the empty and loading text for screen readers.
93720
94312
  * - `overflow-loading`: The text shown while the items are loading.
94313
+ * - `overflow-search-field`: The inner menu's filter field, drawn with `filterable`.
93721
94314
  * - `overflow-surface`: The floating panel the menu is drawn on.
93722
94315
  * - `overflow-title`: The name of the submenu that is showing.
93723
94316
  * - `pip`: The picture-in-picture button, when `extra-controls` includes it and the browser supports it.
@@ -93784,12 +94377,26 @@ export type CustomElementsSolidJs = {
93784
94377
  * smallest item size, and follows the box as it resizes. `gap` spaces the rows, and the columns
93785
94378
  * of a grid, by a number of pixels the list counts in each row's place.
93786
94379
  *
94380
+ * **Across.** `orientation="horizontal"` lays the items out along a line and
94381
+ * scrolls it sideways, as a strip of cards does, windowed the same way:
94382
+ * `estimate` is then an item's width, and the box needs an inline size.
94383
+ *
94384
+ * **Sections.** `section-field` names the field of each item that says which
94385
+ * section it is in, and the list draws a header before each section's items,
94386
+ * as React Aria's list box sections do. Each section is an element with the
94387
+ * `group` role, named by its header, which is its first child and carries
94388
+ * `data-header`, so your stylesheet styles it, such as with `position:
94389
+ * sticky`. A section starts wherever the field changes, so give the items in
94390
+ * order. The window counts the headers with the items, and a section the
94391
+ * window starts inside is drawn with its header. `renderSection` draws a
94392
+ * header of your own.
94393
+ *
93787
94394
  * **Keyboard.** The list is one tab stop.
93788
94395
  *
93789
94396
  * | Key | What it does |
93790
94397
  * |---|---|
93791
94398
  * | Down, Up | Moves to the next or the previous item, or in a grid to the item in the same column on the next or the previous line. |
93792
- * | Right, Left | In a grid, moves to the next or the previous item along the line, the other way round on a right-to-left page. |
94399
+ * | Right, Left | In a grid, moves to the next or the previous item along the line, the other way round on a right-to-left page. In a list that runs across, moves to the next or the previous item the same way, and Down and Up are left to the row. |
93793
94400
  * | Home, End | Moves to the first or the last item. |
93794
94401
  * | Page Down, Page Up | Moves by the number of items, or of lines in a grid, on screen. |
93795
94402
  * | A letter or a word | Moves to the next item whose text starts with what you typed. |
@@ -93909,6 +94516,15 @@ export type CustomElementsSolidJs = {
93909
94516
  * - `min-column-width`/`minColumnWidth`: The narrowest a column of a grid may be, in pixels. Set, the list lays
93910
94517
  * out as many columns as fit the box at that width, at least one, and
93911
94518
  * follows the box as it resizes, which `columns` then does not decide.
94519
+ * - `orientation`: Which way the list runs. `horizontal` lays the items out along a line
94520
+ * and scrolls it sideways: Left and Right move between items, the other
94521
+ * way round on a right-to-left page, and `estimate` is an item's width. A
94522
+ * grid always runs down.
94523
+ * - `section-field`/`sectionField`: The field of each item that names its section, as a key or a path of
94524
+ * keys. Set, the items are drawn in sections: a header, then the items, in
94525
+ * an element with the `group` role that the header names. A section starts
94526
+ * wherever the field changes, so give the items in order. A list of one
94527
+ * column only.
93912
94528
  * - `selection-behavior`/`selectionBehavior`: What a press does to the items already chosen: `toggle` adds or takes out
93913
94529
  * the item, and `replace` selects it alone and lets the arrow keys carry the
93914
94530
  * selection, with Control or Command adding or taking out one item.
@@ -93932,6 +94548,9 @@ export type CustomElementsSolidJs = {
93932
94548
  * It returns what Lit renders: a template from `html`, a string, or a DOM
93933
94549
  * node. The list wraps each result in a `<div>` that carries the row's role
93934
94550
  * and place in the set. Where it is unset, the row `<template>` is used. (property only)
94551
+ * - `renderSection`: Draws each section's header, given its name and its place among the
94552
+ * sections, for a list given `section-field`. Set it as a property. Where
94553
+ * it is unset, the header is the name as text. (property only)
93935
94554
  * - `range`: The items on screen, as `items.slice(first, last)` reads them.
93936
94555
  *
93937
94556
  * Read from the scroll offset when asked. Both are 0 before the list has a
@@ -93999,6 +94618,7 @@ export type CustomElementsSolidJs = {
93999
94618
  * These can be used to apply styling when a component is in a given state.
94000
94619
  *
94001
94620
  * - `empty`: While the list has read its items and holds none.
94621
+ * - `horizontal`: While the list runs across, with `orientation="horizontal"`.
94002
94622
  * - `loading`: While `loading` is set.
94003
94623
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
94004
94624
  */