@fusion.dev/helix-headless 0.218.0 → 0.220.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 (84) hide show
  1. package/api.json +1 -1
  2. package/custom-elements.json +1 -1
  3. package/dist/breadcrumbs/breadcrumb/breadcrumb.d.ts +13 -2
  4. package/dist/breadcrumbs/breadcrumb/breadcrumb.js +19 -9
  5. package/dist/breadcrumbs/root/breadcrumbs-root.d.ts +16 -1
  6. package/dist/breadcrumbs/root/breadcrumbs-root.js +6 -0
  7. package/dist/button/root/button-root.d.ts +33 -0
  8. package/dist/button/root/button-root.js +13 -3
  9. package/dist/canvas/root/canvas-root.d.ts +11 -0
  10. package/dist/canvas/root/canvas-root.js +1 -0
  11. package/dist/chat/composer/chat-composer.d.ts +221 -6
  12. package/dist/chat/composer/chat-composer.js +249 -19
  13. package/dist/chat/message/chat-message.d.ts +7 -0
  14. package/dist/chat/message/chat-message.js +2 -1
  15. package/dist/chat/root/chat-root.d.ts +1 -0
  16. package/dist/chat/root/chat-root.js +1 -1
  17. package/dist/code-editor/root/code-editor-root.d.ts +48 -51
  18. package/dist/code-editor/root/code-editor-root.js +67 -249
  19. package/dist/copy-button/root/copy-button-root.js +3 -3
  20. package/dist/device-screen/root/device-screen-root.d.ts +11 -0
  21. package/dist/device-screen/root/device-screen-root.js +22 -10
  22. package/dist/dialog/root/dialog-root.js +6 -1
  23. package/dist/drilldown/item/drilldown-item.js +1 -1
  24. package/dist/element-events.generated.js +4 -1
  25. package/dist/filter-input/root/filter-input-root.d.ts +4 -3
  26. package/dist/filter-input/root/filter-input-root.js +1 -20
  27. package/dist/find/index.d.ts +1 -0
  28. package/dist/find/index.js +1 -0
  29. package/dist/find/root/find-root.d.ts +314 -0
  30. package/dist/find/root/find-root.js +577 -0
  31. package/dist/graph/root/graph-root.d.ts +11 -0
  32. package/dist/graph/root/graph-root.js +4 -1
  33. package/dist/index.d.ts +1 -0
  34. package/dist/index.js +1 -0
  35. package/dist/input/root/input-root.d.ts +6 -0
  36. package/dist/input/root/input-root.js +7 -0
  37. package/dist/lightbox/root/lightbox-root.d.ts +4 -1
  38. package/dist/lightbox/root/lightbox-root.js +10 -8
  39. package/dist/listbox/root/listbox-root.d.ts +21 -0
  40. package/dist/listbox/root/listbox-root.js +37 -2
  41. package/dist/log/group/log-group.d.ts +18 -3
  42. package/dist/log/group/log-group.js +31 -4
  43. package/dist/log/root/log-root.d.ts +13 -3
  44. package/dist/log/root/log-root.js +5 -2
  45. package/dist/map/root/map-root.d.ts +11 -0
  46. package/dist/map/root/map-root.js +28 -12
  47. package/dist/menu/root/menu-root.d.ts +8 -0
  48. package/dist/menu/root/menu-root.js +22 -1
  49. package/dist/menu/section/menu-section.d.ts +10 -0
  50. package/dist/menu/section/menu-section.js +10 -0
  51. package/dist/meter/index.d.ts +1 -0
  52. package/dist/meter/index.js +1 -0
  53. package/dist/meter/root/meter-root.d.ts +16 -1
  54. package/dist/meter/root/meter-root.js +27 -11
  55. package/dist/meter/segment/meter-segment.d.ts +74 -0
  56. package/dist/meter/segment/meter-segment.js +47 -0
  57. package/dist/scroll-area/root/scroll-area-root.d.ts +20 -3
  58. package/dist/scroll-area/root/scroll-area-root.js +23 -4
  59. package/dist/spatial-bar-chart/bars.d.ts +125 -5
  60. package/dist/spatial-bar-chart/bars.js +194 -17
  61. package/dist/spatial-bar-chart/root/spatial-bar-chart-root.d.ts +148 -6
  62. package/dist/spatial-bar-chart/root/spatial-bar-chart-root.js +285 -16
  63. package/dist/splitter/root/splitter-root.js +1 -0
  64. package/dist/tabs/root/tabs-root.d.ts +4 -0
  65. package/dist/tabs/tab/tab.d.ts +1 -0
  66. package/dist/tabs/tab/tab.js +2 -2
  67. package/dist/tag/root/tag-root.d.ts +1 -1
  68. package/dist/terminal/root/terminal-root.d.ts +60 -32
  69. package/dist/terminal/root/terminal-root.js +82 -178
  70. package/dist/toolbar/root/toolbar-root.d.ts +4 -1
  71. package/dist/tooltip/root/tooltip-root.d.ts +23 -1
  72. package/dist/tooltip/root/tooltip-root.js +28 -5
  73. package/dist/tour/root/tour-root.d.ts +1 -0
  74. package/dist/tour/root/tour-root.js +4 -1
  75. package/dist/tour/stop/tour-stop.js +1 -0
  76. package/dist/tree/item/tree-item.d.ts +11 -0
  77. package/dist/tree/item/tree-item.js +19 -1
  78. package/examples.json +1 -1
  79. package/lint.json +1 -1
  80. package/package.json +5 -5
  81. package/types/jsx.d.ts +2222 -118
  82. package/types/svelte.d.ts +2 -0
  83. package/types/vue.d.ts +468 -19
  84. package/types/words.d.ts +96 -1
package/types/jsx.d.ts CHANGED
@@ -41,6 +41,7 @@ import type {
41
41
  HelixFacetEvent,
42
42
  HelixFilterEvent,
43
43
  HelixFilteredEvent,
44
+ HelixFoundEvent,
44
45
  HelixGraphFilterEvent,
45
46
  HelixGraphLayoutEvent,
46
47
  HelixGraphPanEvent,
@@ -101,6 +102,7 @@ import type {
101
102
  HelixHeadlessFilterInput,
102
103
  HelixHeadlessFilterMenu,
103
104
  HelixHeadlessFilterOperator,
105
+ HelixHeadlessFind,
104
106
  HelixHeadlessFormatDate,
105
107
  HelixHeadlessGraph,
106
108
  HelixHeadlessHeatmap,
@@ -137,6 +139,7 @@ import type {
137
139
  HelixHeadlessMenuItem,
138
140
  HelixHeadlessMenuSection,
139
141
  HelixHeadlessMeter,
142
+ HelixHeadlessMeterSegment,
140
143
  HelixHeadlessMotionToggle,
141
144
  HelixHeadlessNavigation,
142
145
  HelixHeadlessNotification,
@@ -256,6 +259,7 @@ import type {
256
259
  HelixShortcutEvent,
257
260
  HelixSortEvent,
258
261
  HelixSortedEvent,
262
+ HelixStopEvent,
259
263
  HelixTerminalBellEvent,
260
264
  HelixTerminalInputEvent,
261
265
  HelixTerminalLinkEvent,
@@ -2650,6 +2654,19 @@ into one, counting the first and the last. Unset, it never folds. At least
2650
2654
  into one, counting the first and the last. Unset, it never folds. At least
2651
2655
  2, so the first crumb and the current page always show. */
2652
2656
  maxItems?: (HelixHeadlessBreadcrumbs["maxItems"]) | undefined;
2657
+ /** The mark between one crumb and the next, for the whole trail. Unset is a
2658
+ chevron; `slash` is a slash, as a path or a repository and its branch is
2659
+ written.
2660
+
2661
+ **On the trail rather than on each crumb**, because the marks are one
2662
+ decision: a trail whose separators differ from crumb to crumb is a
2663
+ mistake, and a trail drawn from `items` has no crumb of yours to set it
2664
+ on. A crumb's own `separator` slot still replaces its mark, for the rare
2665
+ crumb that needs something else.
2666
+
2667
+ Optional and reflected, per the rule that a reflected property takes no
2668
+ default, so a stylesheet can select on it. */
2669
+ separator?: (HelixHeadlessBreadcrumbs["separator"]) | undefined;
2653
2670
  /** The trail as data, drawn as crumbs before any you slot. The last item is the
2654
2671
  current page.
2655
2672
 
@@ -2680,6 +2697,19 @@ into one, counting the first and the last. Unset, it never folds. At least
2680
2697
  into one, counting the first and the last. Unset, it never folds. At least
2681
2698
  2, so the first crumb and the current page always show. */
2682
2699
  "prop:maxItems"?: (HelixHeadlessBreadcrumbs["maxItems"]) | undefined;
2700
+ /** The mark between one crumb and the next, for the whole trail. Unset is a
2701
+ chevron; `slash` is a slash, as a path or a repository and its branch is
2702
+ written.
2703
+
2704
+ **On the trail rather than on each crumb**, because the marks are one
2705
+ decision: a trail whose separators differ from crumb to crumb is a
2706
+ mistake, and a trail drawn from `items` has no crumb of yours to set it
2707
+ on. A crumb's own `separator` slot still replaces its mark, for the rare
2708
+ crumb that needs something else.
2709
+
2710
+ Optional and reflected, per the rule that a reflected property takes no
2711
+ default, so a stylesheet can select on it. */
2712
+ "prop:separator"?: (HelixHeadlessBreadcrumbs["separator"]) | undefined;
2683
2713
  /** The trail as data, drawn as crumbs before any you slot. The last item is the
2684
2714
  current page.
2685
2715
 
@@ -2866,6 +2896,36 @@ is the platform's `commandfor`. */
2866
2896
  commandfor?: (HelixHeadlessButton["commandFor"]) | undefined;
2867
2897
  /** The id of the element the command is sent to. */
2868
2898
  commandFor?: (HelixHeadlessButton["commandFor"]) | undefined;
2899
+ /** Whether a disabled button stays in the tab order, so a tooltip around it
2900
+ can say why it is disabled.
2901
+
2902
+ Set it on a button whose reason a Tooltip gives, such as a Save with no
2903
+ changes to save. While the button is disabled, it keeps focus and takes
2904
+ hover, and it refuses every press: a click, Enter and Space, and Enter in
2905
+ a field of its form. The click does not reach your listeners, and a submit
2906
+ button submits nothing. The inner control carries `aria-disabled` in place
2907
+ of the native `disabled`, so a screen reader still says it is unavailable.
2908
+ The styled button keeps the disabled look.
2909
+
2910
+ Leave it unset on a button with no reason to give. A plain disabled button
2911
+ leaves the tab order, as a native one does, and a keyboard reader skips a
2912
+ stop that does nothing. Set `pending` for the wait after a press. */
2913
+ "focusable-when-disabled"?: (HelixHeadlessButton["focusableWhenDisabled"]) | undefined;
2914
+ /** Whether a disabled button stays in the tab order, so a tooltip around it
2915
+ can say why it is disabled.
2916
+
2917
+ Set it on a button whose reason a Tooltip gives, such as a Save with no
2918
+ changes to save. While the button is disabled, it keeps focus and takes
2919
+ hover, and it refuses every press: a click, Enter and Space, and Enter in
2920
+ a field of its form. The click does not reach your listeners, and a submit
2921
+ button submits nothing. The inner control carries `aria-disabled` in place
2922
+ of the native `disabled`, so a screen reader still says it is unavailable.
2923
+ The styled button keeps the disabled look.
2924
+
2925
+ Leave it unset on a button with no reason to give. A plain disabled button
2926
+ leaves the tab order, as a native one does, and a keyboard reader skips a
2927
+ stop that does nothing. Set `pending` for the wait after a press. */
2928
+ focusableWhenDisabled?: (HelixHeadlessButton["focusableWhenDisabled"]) | undefined;
2869
2929
  /** Where this button's submission goes, overriding the form's own.
2870
2930
 
2871
2931
  **The five `form*` overrides ride on a native submit button that stands in
@@ -3047,6 +3107,36 @@ is the platform's `commandfor`. */
3047
3107
  "attr:commandfor"?: (HelixHeadlessButton["commandFor"]) | undefined;
3048
3108
  /** The id of the element the command is sent to. */
3049
3109
  "prop:commandFor"?: (HelixHeadlessButton["commandFor"]) | undefined;
3110
+ /** Whether a disabled button stays in the tab order, so a tooltip around it
3111
+ can say why it is disabled.
3112
+
3113
+ Set it on a button whose reason a Tooltip gives, such as a Save with no
3114
+ changes to save. While the button is disabled, it keeps focus and takes
3115
+ hover, and it refuses every press: a click, Enter and Space, and Enter in
3116
+ a field of its form. The click does not reach your listeners, and a submit
3117
+ button submits nothing. The inner control carries `aria-disabled` in place
3118
+ of the native `disabled`, so a screen reader still says it is unavailable.
3119
+ The styled button keeps the disabled look.
3120
+
3121
+ Leave it unset on a button with no reason to give. A plain disabled button
3122
+ leaves the tab order, as a native one does, and a keyboard reader skips a
3123
+ stop that does nothing. Set `pending` for the wait after a press. */
3124
+ "bool:focusable-when-disabled"?: (HelixHeadlessButton["focusableWhenDisabled"]) | undefined;
3125
+ /** Whether a disabled button stays in the tab order, so a tooltip around it
3126
+ can say why it is disabled.
3127
+
3128
+ Set it on a button whose reason a Tooltip gives, such as a Save with no
3129
+ changes to save. While the button is disabled, it keeps focus and takes
3130
+ hover, and it refuses every press: a click, Enter and Space, and Enter in
3131
+ a field of its form. The click does not reach your listeners, and a submit
3132
+ button submits nothing. The inner control carries `aria-disabled` in place
3133
+ of the native `disabled`, so a screen reader still says it is unavailable.
3134
+ The styled button keeps the disabled look.
3135
+
3136
+ Leave it unset on a button with no reason to give. A plain disabled button
3137
+ leaves the tab order, as a native one does, and a keyboard reader skips a
3138
+ stop that does nothing. Set `pending` for the wait after a press. */
3139
+ "prop:focusableWhenDisabled"?: (HelixHeadlessButton["focusableWhenDisabled"]) | undefined;
3050
3140
  /** Where this button's submission goes, overriding the form's own.
3051
3141
 
3052
3142
  **The five `form*` overrides ride on a native submit button that stands in
@@ -5302,11 +5392,26 @@ export type HelixHeadlessChatComposerHelixListenElementEvent =
5302
5392
  /** `helix-send` event type */
5303
5393
  export type HelixHeadlessChatComposerHelixSendElementEvent =
5304
5394
  HelixHeadlessChatComposerElementEvent<HelixSendEvent>;
5395
+ /** `helix-stop` event type */
5396
+ export type HelixHeadlessChatComposerHelixStopElementEvent =
5397
+ HelixHeadlessChatComposerElementEvent<HelixStopEvent>;
5305
5398
  /** `helix-typing` event type */
5306
5399
  export type HelixHeadlessChatComposerHelixTypingElementEvent =
5307
5400
  HelixHeadlessChatComposerElementEvent<HelixTypingEvent>;
5308
5401
 
5309
5402
  export type HelixHeadlessChatComposerProps = {
5403
+ /** Whether the draft holds something besides its text, such as an attached
5404
+ file. The draft then counts as one though the field is empty, so the
5405
+ send button shows in place of the `idle` slot. */
5406
+ attached?: (HelixHeadlessChatComposer["attached"]) | undefined;
5407
+ /** Whether a reply is on its way. While set, the send button is a stop
5408
+ button that sends `helix-stop`, and the draft does not send.
5409
+
5410
+ **The same button rather than one beside it**, because sending and
5411
+ stopping are never both possible: while a reply is on its way there is
5412
+ nothing to send to, and the place the reader's eye goes to act is the
5413
+ place that can act. The field stays open for the next turn. */
5414
+ busy?: (HelixHeadlessChatComposer["busy"]) | undefined;
5310
5415
  /** A message about the draft, shown under the field. While set, the composer
5311
5416
  is invalid, does not send, and does not submit, as a field's `feedback`
5312
5417
  does, and the message is announced as it appears. */
@@ -5325,6 +5430,14 @@ the field, as on a `<textarea>`. */
5325
5430
  minLength?: (HelixHeadlessChatComposer["minLength"]) | undefined;
5326
5431
  /** Placeholder text shown in an empty field. */
5327
5432
  placeholder?: (HelixHeadlessChatComposer["placeholder"]) | undefined;
5433
+ /** Whether Enter sends while `busy`, for a page that queues the turn or
5434
+ hands it to the reply under way.
5435
+
5436
+ Off by default, because a page that does neither would drop the turn: it
5437
+ has nowhere to put a message while a reply is coming. The button stays
5438
+ the stop button either way, since stopping is still the one thing it
5439
+ should do while a reply is on its way. */
5440
+ queue?: (HelixHeadlessChatComposer["queue"]) | undefined;
5328
5441
  /** Whether the form needs a draft to submit. An empty draft never sends,
5329
5442
  required or not. */
5330
5443
  required?: (HelixHeadlessChatComposer["required"]) | undefined;
@@ -5332,10 +5445,34 @@ required or not. */
5332
5445
 
5333
5446
  It grows from there. */
5334
5447
  rows?: (HelixHeadlessChatComposer["rows"]) | undefined;
5448
+ /** Whether the draft waits to be sent, such as while an attachment is still
5449
+ read. The send button is unavailable and Enter does not send, while the
5450
+ field stays open. The stop button shown while `busy` still stops. */
5451
+ "send-disabled"?: (HelixHeadlessChatComposer["sendDisabled"]) | undefined;
5452
+ /** Whether the draft waits to be sent, such as while an attachment is still
5453
+ read. The send button is unavailable and Enter does not send, while the
5454
+ field stays open. The stop button shown while `busy` still stops. */
5455
+ sendDisabled?: (HelixHeadlessChatComposer["sendDisabled"]) | undefined;
5335
5456
  /** Label for the send button. */
5336
5457
  "send-label"?: (HelixHeadlessChatComposer["sendLabel"]) | undefined;
5337
5458
  /** Label for the send button. */
5338
5459
  sendLabel?: (HelixHeadlessChatComposer["sendLabel"]) | undefined;
5460
+ /** Why the draft waits, such as "Reading photo.jpg", shown in a tooltip on
5461
+ the send button while `send-disabled` is set. The button then stays in
5462
+ the tab order and takes the pointer, with `aria-disabled` in place of
5463
+ `disabled`, so the reason can be reached by keyboard and by pointer, as
5464
+ Button's `focusable-when-disabled` does. A press still sends nothing. */
5465
+ "send-reason"?: (HelixHeadlessChatComposer["sendReason"]) | undefined;
5466
+ /** Why the draft waits, such as "Reading photo.jpg", shown in a tooltip on
5467
+ the send button while `send-disabled` is set. The button then stays in
5468
+ the tab order and takes the pointer, with `aria-disabled` in place of
5469
+ `disabled`, so the reason can be reached by keyboard and by pointer, as
5470
+ Button's `focusable-when-disabled` does. A press still sends nothing. */
5471
+ sendReason?: (HelixHeadlessChatComposer["sendReason"]) | undefined;
5472
+ /** Label for the stop button shown while `busy`. */
5473
+ "stop-label"?: (HelixHeadlessChatComposer["stopLabel"]) | undefined;
5474
+ /** Label for the stop button shown while `busy`. */
5475
+ stopLabel?: (HelixHeadlessChatComposer["stopLabel"]) | undefined;
5339
5476
  /** What sends the turn: `enter` for the Enter key, or `button` for the send
5340
5477
  button only.
5341
5478
 
@@ -5408,6 +5545,23 @@ imperatively later, and nothing is hydrating by then.
5408
5545
 
5409
5546
  Here rather than on each control. */
5410
5547
  name?: (HelixHeadlessChatComposer["name"]) | undefined;
5548
+ /** Examples the empty field shows in turn, in place of `placeholder`, such
5549
+ as tasks a reader might ask for. Each shows for 6.5 seconds, and a longer
5550
+ one shows longer, up to 10 seconds.
5551
+
5552
+ **Each is the field's placeholder in its turn**, so a screen reader that
5553
+ reaches the field hears the one showing. The swap runs through
5554
+ `:state(example-leaving)`, as one example leaves, and
5555
+ `:state(example-entering)`, as the next arrives.
5556
+
5557
+ **They move only while nobody is about to write, and while the reader
5558
+ can see them.** An empty field without focus moves on. Focus or text
5559
+ holds the example showing, and an example already leaving finishes its
5560
+ turn. A composer scrolled out of view holds its example, and the example
5561
+ gets its full time again when the composer comes back. Where the reader
5562
+ asked for less motion, or the page paused its motion, the first example
5563
+ stays. */
5564
+ placeholders?: (HelixHeadlessChatComposer["placeholders"]) | undefined;
5411
5565
  /** The engine this field listens through, in place of the one
5412
5566
  `registerSpeechEngine` gave the page, or the browser's own. */
5413
5567
  speechEngine?: (HelixHeadlessChatComposer["speechEngine"]) | undefined;
@@ -5422,6 +5576,8 @@ Here rather than on each control. */
5422
5576
  ) => void) | undefined;
5423
5577
  /** Fired when the user sends their turn, and cancelable. */
5424
5578
  "onhelix-send"?: ((e: HelixHeadlessChatComposerHelixSendElementEvent) => void) | undefined;
5579
+ /** Fired when the user presses the stop button, shown in place of the send button while `busy` is set. */
5580
+ "onhelix-stop"?: ((e: HelixHeadlessChatComposerHelixStopElementEvent) => void) | undefined;
5425
5581
  /** The user started or stopped writing, with `typing` saying which, as the composer's `typing` does. */
5426
5582
  "onhelix-typing"?: ((
5427
5583
  e: HelixHeadlessChatComposerHelixTypingElementEvent,
@@ -5431,6 +5587,18 @@ Here rather than on each control. */
5431
5587
  };
5432
5588
 
5433
5589
  export type HelixHeadlessChatComposerSolidJsProps = {
5590
+ /** Whether the draft holds something besides its text, such as an attached
5591
+ file. The draft then counts as one though the field is empty, so the
5592
+ send button shows in place of the `idle` slot. */
5593
+ "prop:attached"?: (HelixHeadlessChatComposer["attached"]) | undefined;
5594
+ /** Whether a reply is on its way. While set, the send button is a stop
5595
+ button that sends `helix-stop`, and the draft does not send.
5596
+
5597
+ **The same button rather than one beside it**, because sending and
5598
+ stopping are never both possible: while a reply is on its way there is
5599
+ nothing to send to, and the place the reader's eye goes to act is the
5600
+ place that can act. The field stays open for the next turn. */
5601
+ "prop:busy"?: (HelixHeadlessChatComposer["busy"]) | undefined;
5434
5602
  /** A message about the draft, shown under the field. While set, the composer
5435
5603
  is invalid, does not send, and does not submit, as a field's `feedback`
5436
5604
  does, and the message is announced as it appears. */
@@ -5449,6 +5617,14 @@ the field, as on a `<textarea>`. */
5449
5617
  "prop:minLength"?: (HelixHeadlessChatComposer["minLength"]) | undefined;
5450
5618
  /** Placeholder text shown in an empty field. */
5451
5619
  "prop:placeholder"?: (HelixHeadlessChatComposer["placeholder"]) | undefined;
5620
+ /** Whether Enter sends while `busy`, for a page that queues the turn or
5621
+ hands it to the reply under way.
5622
+
5623
+ Off by default, because a page that does neither would drop the turn: it
5624
+ has nowhere to put a message while a reply is coming. The button stays
5625
+ the stop button either way, since stopping is still the one thing it
5626
+ should do while a reply is on its way. */
5627
+ "prop:queue"?: (HelixHeadlessChatComposer["queue"]) | undefined;
5452
5628
  /** Whether the form needs a draft to submit. An empty draft never sends,
5453
5629
  required or not. */
5454
5630
  "prop:required"?: (HelixHeadlessChatComposer["required"]) | undefined;
@@ -5456,10 +5632,34 @@ required or not. */
5456
5632
 
5457
5633
  It grows from there. */
5458
5634
  "prop:rows"?: (HelixHeadlessChatComposer["rows"]) | undefined;
5635
+ /** Whether the draft waits to be sent, such as while an attachment is still
5636
+ read. The send button is unavailable and Enter does not send, while the
5637
+ field stays open. The stop button shown while `busy` still stops. */
5638
+ "bool:send-disabled"?: (HelixHeadlessChatComposer["sendDisabled"]) | undefined;
5639
+ /** Whether the draft waits to be sent, such as while an attachment is still
5640
+ read. The send button is unavailable and Enter does not send, while the
5641
+ field stays open. The stop button shown while `busy` still stops. */
5642
+ "prop:sendDisabled"?: (HelixHeadlessChatComposer["sendDisabled"]) | undefined;
5459
5643
  /** Label for the send button. */
5460
5644
  "attr:send-label"?: (HelixHeadlessChatComposer["sendLabel"]) | undefined;
5461
5645
  /** Label for the send button. */
5462
5646
  "prop:sendLabel"?: (HelixHeadlessChatComposer["sendLabel"]) | undefined;
5647
+ /** Why the draft waits, such as "Reading photo.jpg", shown in a tooltip on
5648
+ the send button while `send-disabled` is set. The button then stays in
5649
+ the tab order and takes the pointer, with `aria-disabled` in place of
5650
+ `disabled`, so the reason can be reached by keyboard and by pointer, as
5651
+ Button's `focusable-when-disabled` does. A press still sends nothing. */
5652
+ "attr:send-reason"?: (HelixHeadlessChatComposer["sendReason"]) | undefined;
5653
+ /** Why the draft waits, such as "Reading photo.jpg", shown in a tooltip on
5654
+ the send button while `send-disabled` is set. The button then stays in
5655
+ the tab order and takes the pointer, with `aria-disabled` in place of
5656
+ `disabled`, so the reason can be reached by keyboard and by pointer, as
5657
+ Button's `focusable-when-disabled` does. A press still sends nothing. */
5658
+ "prop:sendReason"?: (HelixHeadlessChatComposer["sendReason"]) | undefined;
5659
+ /** Label for the stop button shown while `busy`. */
5660
+ "attr:stop-label"?: (HelixHeadlessChatComposer["stopLabel"]) | undefined;
5661
+ /** Label for the stop button shown while `busy`. */
5662
+ "prop:stopLabel"?: (HelixHeadlessChatComposer["stopLabel"]) | undefined;
5463
5663
  /** What sends the turn: `enter` for the Enter key, or `button` for the send
5464
5664
  button only.
5465
5665
 
@@ -5532,6 +5732,23 @@ imperatively later, and nothing is hydrating by then.
5532
5732
 
5533
5733
  Here rather than on each control. */
5534
5734
  "prop:name"?: (HelixHeadlessChatComposer["name"]) | undefined;
5735
+ /** Examples the empty field shows in turn, in place of `placeholder`, such
5736
+ as tasks a reader might ask for. Each shows for 6.5 seconds, and a longer
5737
+ one shows longer, up to 10 seconds.
5738
+
5739
+ **Each is the field's placeholder in its turn**, so a screen reader that
5740
+ reaches the field hears the one showing. The swap runs through
5741
+ `:state(example-leaving)`, as one example leaves, and
5742
+ `:state(example-entering)`, as the next arrives.
5743
+
5744
+ **They move only while nobody is about to write, and while the reader
5745
+ can see them.** An empty field without focus moves on. Focus or text
5746
+ holds the example showing, and an example already leaving finishes its
5747
+ turn. A composer scrolled out of view holds its example, and the example
5748
+ gets its full time again when the composer comes back. Where the reader
5749
+ asked for less motion, or the page paused its motion, the first example
5750
+ stays. */
5751
+ "prop:placeholders"?: (HelixHeadlessChatComposer["placeholders"]) | undefined;
5535
5752
  /** The engine this field listens through, in place of the one
5536
5753
  `registerSpeechEngine` gave the page, or the browser's own. */
5537
5754
  "prop:speechEngine"?: (HelixHeadlessChatComposer["speechEngine"]) | undefined;
@@ -5545,6 +5762,8 @@ Here rather than on each control. */
5545
5762
  ) => void) | undefined;
5546
5763
  /** Fired when the user sends their turn, and cancelable. */
5547
5764
  "on:helix-send"?: ((e: HelixHeadlessChatComposerHelixSendElementEvent) => void) | undefined;
5765
+ /** Fired when the user presses the stop button, shown in place of the send button while `busy` is set. */
5766
+ "on:helix-stop"?: ((e: HelixHeadlessChatComposerHelixStopElementEvent) => void) | undefined;
5548
5767
  /** The user started or stopped writing, with `typing` saying which, as the composer's `typing` does. */
5549
5768
  "on:helix-typing"?: ((
5550
5769
  e: HelixHeadlessChatComposerHelixTypingElementEvent,
@@ -7004,6 +7223,9 @@ export type HelixHeadlessCodeEditorElementEvent<E = Event> = TypedEvent<
7004
7223
  /** `helix-before-change` event type */
7005
7224
  export type HelixHeadlessCodeEditorHelixBeforeChangeElementEvent =
7006
7225
  HelixHeadlessCodeEditorElementEvent<HelixBeforeChangeEvent>;
7226
+ /** `helix-found` event type */
7227
+ export type HelixHeadlessCodeEditorHelixFoundElementEvent =
7228
+ HelixHeadlessCodeEditorElementEvent<HelixFoundEvent>;
7007
7229
 
7008
7230
  export type HelixHeadlessCodeEditorProps = {
7009
7231
  /** The name of the header's toolbar, read by screen readers. */
@@ -7200,6 +7422,8 @@ Here rather than on each control. */
7200
7422
  "onhelix-before-change"?: ((
7201
7423
  e: HelixHeadlessCodeEditorHelixBeforeChangeElementEvent,
7202
7424
  ) => void) | undefined;
7425
+ /** The find bar searched or moved among the matches, with `count` and the selected match's `index`, counting from 0, or -1 for none. */
7426
+ "onhelix-found"?: ((e: HelixHeadlessCodeEditorHelixFoundElementEvent) => void) | undefined;
7203
7427
  /** Fired after the text changes. */
7204
7428
  oninput?: ((e: HelixHeadlessCodeEditorElementEvent) => void) | undefined;
7205
7429
  };
@@ -7398,6 +7622,8 @@ Here rather than on each control. */
7398
7622
  "on:helix-before-change"?: ((
7399
7623
  e: HelixHeadlessCodeEditorHelixBeforeChangeElementEvent,
7400
7624
  ) => void) | undefined;
7625
+ /** The find bar searched or moved among the matches, with `count` and the selected match's `index`, counting from 0, or -1 for none. */
7626
+ "on:helix-found"?: ((e: HelixHeadlessCodeEditorHelixFoundElementEvent) => void) | undefined;
7401
7627
  /** Fired after the text changes. */
7402
7628
  "on:input"?: ((e: HelixHeadlessCodeEditorElementEvent) => void) | undefined;
7403
7629
 
@@ -10381,6 +10607,36 @@ whatever its `type`. Declared here so its own page says what it holds. */
10381
10607
  value?: (HelixHeadlessCopyButton["value"]) | undefined;
10382
10608
  /** */
10383
10609
  "aria-label"?: (string) | undefined;
10610
+ /** Whether a disabled button stays in the tab order, so a tooltip around it
10611
+ can say why it is disabled.
10612
+
10613
+ Set it on a button whose reason a Tooltip gives, such as a Save with no
10614
+ changes to save. While the button is disabled, it keeps focus and takes
10615
+ hover, and it refuses every press: a click, Enter and Space, and Enter in
10616
+ a field of its form. The click does not reach your listeners, and a submit
10617
+ button submits nothing. The inner control carries `aria-disabled` in place
10618
+ of the native `disabled`, so a screen reader still says it is unavailable.
10619
+ The styled button keeps the disabled look.
10620
+
10621
+ Leave it unset on a button with no reason to give. A plain disabled button
10622
+ leaves the tab order, as a native one does, and a keyboard reader skips a
10623
+ stop that does nothing. Set `pending` for the wait after a press. */
10624
+ "focusable-when-disabled"?: (HelixHeadlessCopyButton["focusableWhenDisabled"]) | undefined;
10625
+ /** Whether a disabled button stays in the tab order, so a tooltip around it
10626
+ can say why it is disabled.
10627
+
10628
+ Set it on a button whose reason a Tooltip gives, such as a Save with no
10629
+ changes to save. While the button is disabled, it keeps focus and takes
10630
+ hover, and it refuses every press: a click, Enter and Space, and Enter in
10631
+ a field of its form. The click does not reach your listeners, and a submit
10632
+ button submits nothing. The inner control carries `aria-disabled` in place
10633
+ of the native `disabled`, so a screen reader still says it is unavailable.
10634
+ The styled button keeps the disabled look.
10635
+
10636
+ Leave it unset on a button with no reason to give. A plain disabled button
10637
+ leaves the tab order, as a native one does, and a keyboard reader skips a
10638
+ stop that does nothing. Set `pending` for the wait after a press. */
10639
+ focusableWhenDisabled?: (HelixHeadlessCopyButton["focusableWhenDisabled"]) | undefined;
10384
10640
  /** Whether the action the button started is still running.
10385
10641
 
10386
10642
  A pending button keeps focus and stays in the tab order, and refuses every
@@ -10514,6 +10770,36 @@ whatever its `type`. Declared here so its own page says what it holds. */
10514
10770
  "prop:value"?: (HelixHeadlessCopyButton["value"]) | undefined;
10515
10771
  /** */
10516
10772
  "attr:aria-label"?: (string) | undefined;
10773
+ /** Whether a disabled button stays in the tab order, so a tooltip around it
10774
+ can say why it is disabled.
10775
+
10776
+ Set it on a button whose reason a Tooltip gives, such as a Save with no
10777
+ changes to save. While the button is disabled, it keeps focus and takes
10778
+ hover, and it refuses every press: a click, Enter and Space, and Enter in
10779
+ a field of its form. The click does not reach your listeners, and a submit
10780
+ button submits nothing. The inner control carries `aria-disabled` in place
10781
+ of the native `disabled`, so a screen reader still says it is unavailable.
10782
+ The styled button keeps the disabled look.
10783
+
10784
+ Leave it unset on a button with no reason to give. A plain disabled button
10785
+ leaves the tab order, as a native one does, and a keyboard reader skips a
10786
+ stop that does nothing. Set `pending` for the wait after a press. */
10787
+ "bool:focusable-when-disabled"?: (HelixHeadlessCopyButton["focusableWhenDisabled"]) | undefined;
10788
+ /** Whether a disabled button stays in the tab order, so a tooltip around it
10789
+ can say why it is disabled.
10790
+
10791
+ Set it on a button whose reason a Tooltip gives, such as a Save with no
10792
+ changes to save. While the button is disabled, it keeps focus and takes
10793
+ hover, and it refuses every press: a click, Enter and Space, and Enter in
10794
+ a field of its form. The click does not reach your listeners, and a submit
10795
+ button submits nothing. The inner control carries `aria-disabled` in place
10796
+ of the native `disabled`, so a screen reader still says it is unavailable.
10797
+ The styled button keeps the disabled look.
10798
+
10799
+ Leave it unset on a button with no reason to give. A plain disabled button
10800
+ leaves the tab order, as a native one does, and a keyboard reader skips a
10801
+ stop that does nothing. Set `pending` for the wait after a press. */
10802
+ "prop:focusableWhenDisabled"?: (HelixHeadlessCopyButton["focusableWhenDisabled"]) | undefined;
10517
10803
  /** Whether the action the button started is still running.
10518
10804
 
10519
10805
  A pending button keeps focus and stays in the tab order, and refuses every
@@ -16346,6 +16632,268 @@ write a function in markup. See the class description. */
16346
16632
  textContent?: (string | number) | undefined;
16347
16633
  };
16348
16634
 
16635
+ /** `HelixHeadlessFind` component event */
16636
+ export type HelixHeadlessFindElementEvent<E = Event> = TypedEvent<
16637
+ HelixHeadlessFind,
16638
+ E
16639
+ >;
16640
+ /** `helix-before-close` event type */
16641
+ export type HelixHeadlessFindHelixBeforeCloseElementEvent =
16642
+ HelixHeadlessFindElementEvent<HelixBeforeCloseEvent>;
16643
+ /** `helix-before-open` event type */
16644
+ export type HelixHeadlessFindHelixBeforeOpenElementEvent =
16645
+ HelixHeadlessFindElementEvent<HelixBeforeOpenEvent>;
16646
+ /** `helix-found` event type */
16647
+ export type HelixHeadlessFindHelixFoundElementEvent =
16648
+ HelixHeadlessFindElementEvent<HelixFoundEvent>;
16649
+ /** `toggle` event type */
16650
+ export type HelixHeadlessFindToggleElementEvent =
16651
+ HelixHeadlessFindElementEvent<ToggleEvent>;
16652
+
16653
+ export type HelixHeadlessFindProps = {
16654
+ /** The close button's label. */
16655
+ "close-label"?: (HelixHeadlessFind["closeLabel"]) | undefined;
16656
+ /** The close button's label. */
16657
+ closeLabel?: (HelixHeadlessFind["closeLabel"]) | undefined;
16658
+ /** The name of the bar's toolbar, read by screen readers. */
16659
+ "controls-label"?: (HelixHeadlessFind["controlsLabel"]) | undefined;
16660
+ /** The name of the bar's toolbar, read by screen readers. */
16661
+ controlsLabel?: (HelixHeadlessFind["controlsLabel"]) | undefined;
16662
+ /** The id of the element whose text Find searches, in the same tree as Find.
16663
+ With a finder attached, it names only where the find key opens the bar. */
16664
+ for?: (HelixHeadlessFind["for"]) | undefined;
16665
+ /** What the count says when the regular expression cannot be read. */
16666
+ "invalid-label"?: (HelixHeadlessFind["invalidLabel"]) | undefined;
16667
+ /** What the count says when the regular expression cannot be read. */
16668
+ invalidLabel?: (HelixHeadlessFind["invalidLabel"]) | undefined;
16669
+ /** The field's name and placeholder, and the name of the bar. */
16670
+ label?: (HelixHeadlessFind["label"]) | undefined;
16671
+ /** Whether case has to match, so "Error" does not find "error". The reader turns it on and off from the bar. */
16672
+ "match-case"?: (HelixHeadlessFind["matchCase"]) | undefined;
16673
+ /** Whether case has to match, so "Error" does not find "error". The reader turns it on and off from the bar. */
16674
+ matchCase?: (HelixHeadlessFind["matchCase"]) | undefined;
16675
+ /** The match case button's label. */
16676
+ "match-case-label"?: (HelixHeadlessFind["matchCaseLabel"]) | undefined;
16677
+ /** The match case button's label. */
16678
+ matchCaseLabel?: (HelixHeadlessFind["matchCaseLabel"]) | undefined;
16679
+ /** What the count says of the matches. `{index}` is the current match,
16680
+ counting from 1, and `{count}` how many there are. */
16681
+ "matches-label"?: (HelixHeadlessFind["matchesLabel"]) | undefined;
16682
+ /** What the count says of the matches. `{index}` is the current match,
16683
+ counting from 1, and `{count}` how many there are. */
16684
+ matchesLabel?: (HelixHeadlessFind["matchesLabel"]) | undefined;
16685
+ /** The next match button's label. */
16686
+ "next-label"?: (HelixHeadlessFind["nextLabel"]) | undefined;
16687
+ /** The next match button's label. */
16688
+ nextLabel?: (HelixHeadlessFind["nextLabel"]) | undefined;
16689
+ /** Which options the bar draws, as a list of `match-case`, `whole-word`, and
16690
+ `regex`, or `none`. They are always drawn in that order. */
16691
+ options?: (HelixHeadlessFind["options"]) | undefined;
16692
+ /** The previous match button's label. */
16693
+ "previous-label"?: (HelixHeadlessFind["previousLabel"]) | undefined;
16694
+ /** The previous match button's label. */
16695
+ previousLabel?: (HelixHeadlessFind["previousLabel"]) | undefined;
16696
+ /** What the field holds: what the reader typed, or what you set. */
16697
+ query?: (HelixHeadlessFind["query"]) | undefined;
16698
+ /** Hides replacing, for content the reader cannot change. The attribute is `readonly`, the platform's spelling. */
16699
+ readonly?: (HelixHeadlessFind["readOnly"]) | undefined;
16700
+ /** Hides replacing, for content the reader cannot change. The attribute is `readonly`, the platform's spelling. */
16701
+ readOnly?: (HelixHeadlessFind["readOnly"]) | undefined;
16702
+ /** Whether the field reads as a regular expression, in JavaScript's syntax. The reader turns it on and off from the bar. */
16703
+ regex?: (HelixHeadlessFind["regex"]) | undefined;
16704
+ /** The regular expression button's label. */
16705
+ "regex-label"?: (HelixHeadlessFind["regexLabel"]) | undefined;
16706
+ /** The regular expression button's label. */
16707
+ regexLabel?: (HelixHeadlessFind["regexLabel"]) | undefined;
16708
+ /** The Replace all button's words. */
16709
+ "replace-all-label"?: (HelixHeadlessFind["replaceAllLabel"]) | undefined;
16710
+ /** The Replace all button's words. */
16711
+ replaceAllLabel?: (HelixHeadlessFind["replaceAllLabel"]) | undefined;
16712
+ /** The replace field's name and placeholder. */
16713
+ "replace-field-label"?: (HelixHeadlessFind["replaceFieldLabel"]) | undefined;
16714
+ /** The replace field's name and placeholder. */
16715
+ replaceFieldLabel?: (HelixHeadlessFind["replaceFieldLabel"]) | undefined;
16716
+ /** The Replace button's words. */
16717
+ "replace-label"?: (HelixHeadlessFind["replaceLabel"]) | undefined;
16718
+ /** The Replace button's words. */
16719
+ replaceLabel?: (HelixHeadlessFind["replaceLabel"]) | undefined;
16720
+ /** What the replace field holds, which Replace puts in place of a match. */
16721
+ replacement?: (HelixHeadlessFind["replacement"]) | undefined;
16722
+ /** The label of the button that shows the replace row. */
16723
+ "replace-toggle-label"?: (HelixHeadlessFind["replaceToggleLabel"]) | undefined;
16724
+ /** The label of the button that shows the replace row. */
16725
+ replaceToggleLabel?: (HelixHeadlessFind["replaceToggleLabel"]) | undefined;
16726
+ /** The key that opens the bar, as a chord such as `mod+f`, where `mod` is
16727
+ Command on an Apple keyboard and Control elsewhere. Empty turns the key
16728
+ off, as for a bar the page opens itself. */
16729
+ shortcut?: (HelixHeadlessFind["shortcut"]) | undefined;
16730
+ /** Elements inside the content whose text is not searched, as a selector,
16731
+ such as line numbers or the buttons beside each message. */
16732
+ skip?: (HelixHeadlessFind["skip"]) | undefined;
16733
+ /** Whether only whole words match. The reader turns it on and off from the bar. */
16734
+ "whole-word"?: (HelixHeadlessFind["wholeWord"]) | undefined;
16735
+ /** Whether only whole words match. The reader turns it on and off from the bar. */
16736
+ wholeWord?: (HelixHeadlessFind["wholeWord"]) | undefined;
16737
+ /** The whole word button's label. */
16738
+ "whole-word-label"?: (HelixHeadlessFind["wholeWordLabel"]) | undefined;
16739
+ /** The whole word button's label. */
16740
+ wholeWordLabel?: (HelixHeadlessFind["wholeWordLabel"]) | undefined;
16741
+ /** Whether the element starts open. Ignored once `open` is written. */
16742
+ "default-open"?: (HelixHeadlessFind["defaultOpen"]) | undefined;
16743
+ /** Whether the element starts open. Ignored once `open` is written. */
16744
+ defaultOpen?: (HelixHeadlessFind["defaultOpen"]) | undefined;
16745
+ /** Whether the element is open.
16746
+
16747
+ One property, not two, so `dialog.open` answers the question anyone
16748
+ asking it meant. Writing always applies; `<helix-dialog open>` is the
16749
+ same statement in markup.
16750
+
16751
+ **Not reflected, and that is required rather than tidy.** Reflection
16752
+ writes the resolved state back as an attribute, so an element that opened
16753
+ itself would put `open` on its own host: cloned, serialized for
16754
+ hydration, or diffed by a framework, it comes back holding whatever the
16755
+ last reader did rather than what the author wrote. `:state(open)` carries
16756
+ the resolved state for stylesheets, which is what the mirror is for. */
16757
+ open?: (HelixHeadlessFind["open"]) | undefined;
16758
+
16759
+ /** Fired before the bar closes, and cancelable. */
16760
+ "onhelix-before-close"?: ((
16761
+ e: HelixHeadlessFindHelixBeforeCloseElementEvent,
16762
+ ) => void) | undefined;
16763
+ /** Fired before the bar opens, and cancelable. Canceling it keeps the bar closed. */
16764
+ "onhelix-before-open"?: ((
16765
+ e: HelixHeadlessFindHelixBeforeOpenElementEvent,
16766
+ ) => void) | undefined;
16767
+ /** Sent after each search and each move among the matches, with `count` and the current match's `index`, counting from 0, or -1 for none. */
16768
+ "onhelix-found"?: ((e: HelixHeadlessFindHelixFoundElementEvent) => void) | undefined;
16769
+ /** Sent when the bar opens or closes, with `newState` and `oldState`. */
16770
+ ontoggle?: ((e: HelixHeadlessFindToggleElementEvent) => void) | undefined;
16771
+ };
16772
+
16773
+ export type HelixHeadlessFindSolidJsProps = {
16774
+ /** The close button's label. */
16775
+ "attr:close-label"?: (HelixHeadlessFind["closeLabel"]) | undefined;
16776
+ /** The close button's label. */
16777
+ "prop:closeLabel"?: (HelixHeadlessFind["closeLabel"]) | undefined;
16778
+ /** The name of the bar's toolbar, read by screen readers. */
16779
+ "attr:controls-label"?: (HelixHeadlessFind["controlsLabel"]) | undefined;
16780
+ /** The name of the bar's toolbar, read by screen readers. */
16781
+ "prop:controlsLabel"?: (HelixHeadlessFind["controlsLabel"]) | undefined;
16782
+ /** The id of the element whose text Find searches, in the same tree as Find.
16783
+ With a finder attached, it names only where the find key opens the bar. */
16784
+ "prop:for"?: (HelixHeadlessFind["for"]) | undefined;
16785
+ /** What the count says when the regular expression cannot be read. */
16786
+ "attr:invalid-label"?: (HelixHeadlessFind["invalidLabel"]) | undefined;
16787
+ /** What the count says when the regular expression cannot be read. */
16788
+ "prop:invalidLabel"?: (HelixHeadlessFind["invalidLabel"]) | undefined;
16789
+ /** The field's name and placeholder, and the name of the bar. */
16790
+ "prop:label"?: (HelixHeadlessFind["label"]) | undefined;
16791
+ /** Whether case has to match, so "Error" does not find "error". The reader turns it on and off from the bar. */
16792
+ "bool:match-case"?: (HelixHeadlessFind["matchCase"]) | undefined;
16793
+ /** Whether case has to match, so "Error" does not find "error". The reader turns it on and off from the bar. */
16794
+ "prop:matchCase"?: (HelixHeadlessFind["matchCase"]) | undefined;
16795
+ /** The match case button's label. */
16796
+ "attr:match-case-label"?: (HelixHeadlessFind["matchCaseLabel"]) | undefined;
16797
+ /** The match case button's label. */
16798
+ "prop:matchCaseLabel"?: (HelixHeadlessFind["matchCaseLabel"]) | undefined;
16799
+ /** What the count says of the matches. `{index}` is the current match,
16800
+ counting from 1, and `{count}` how many there are. */
16801
+ "attr:matches-label"?: (HelixHeadlessFind["matchesLabel"]) | undefined;
16802
+ /** What the count says of the matches. `{index}` is the current match,
16803
+ counting from 1, and `{count}` how many there are. */
16804
+ "prop:matchesLabel"?: (HelixHeadlessFind["matchesLabel"]) | undefined;
16805
+ /** The next match button's label. */
16806
+ "attr:next-label"?: (HelixHeadlessFind["nextLabel"]) | undefined;
16807
+ /** The next match button's label. */
16808
+ "prop:nextLabel"?: (HelixHeadlessFind["nextLabel"]) | undefined;
16809
+ /** Which options the bar draws, as a list of `match-case`, `whole-word`, and
16810
+ `regex`, or `none`. They are always drawn in that order. */
16811
+ "prop:options"?: (HelixHeadlessFind["options"]) | undefined;
16812
+ /** The previous match button's label. */
16813
+ "attr:previous-label"?: (HelixHeadlessFind["previousLabel"]) | undefined;
16814
+ /** The previous match button's label. */
16815
+ "prop:previousLabel"?: (HelixHeadlessFind["previousLabel"]) | undefined;
16816
+ /** What the field holds: what the reader typed, or what you set. */
16817
+ "prop:query"?: (HelixHeadlessFind["query"]) | undefined;
16818
+ /** Hides replacing, for content the reader cannot change. The attribute is `readonly`, the platform's spelling. */
16819
+ "bool:readonly"?: (HelixHeadlessFind["readOnly"]) | undefined;
16820
+ /** Hides replacing, for content the reader cannot change. The attribute is `readonly`, the platform's spelling. */
16821
+ "prop:readOnly"?: (HelixHeadlessFind["readOnly"]) | undefined;
16822
+ /** Whether the field reads as a regular expression, in JavaScript's syntax. The reader turns it on and off from the bar. */
16823
+ "prop:regex"?: (HelixHeadlessFind["regex"]) | undefined;
16824
+ /** The regular expression button's label. */
16825
+ "attr:regex-label"?: (HelixHeadlessFind["regexLabel"]) | undefined;
16826
+ /** The regular expression button's label. */
16827
+ "prop:regexLabel"?: (HelixHeadlessFind["regexLabel"]) | undefined;
16828
+ /** The Replace all button's words. */
16829
+ "attr:replace-all-label"?: (HelixHeadlessFind["replaceAllLabel"]) | undefined;
16830
+ /** The Replace all button's words. */
16831
+ "prop:replaceAllLabel"?: (HelixHeadlessFind["replaceAllLabel"]) | undefined;
16832
+ /** The replace field's name and placeholder. */
16833
+ "attr:replace-field-label"?: (HelixHeadlessFind["replaceFieldLabel"]) | undefined;
16834
+ /** The replace field's name and placeholder. */
16835
+ "prop:replaceFieldLabel"?: (HelixHeadlessFind["replaceFieldLabel"]) | undefined;
16836
+ /** The Replace button's words. */
16837
+ "attr:replace-label"?: (HelixHeadlessFind["replaceLabel"]) | undefined;
16838
+ /** The Replace button's words. */
16839
+ "prop:replaceLabel"?: (HelixHeadlessFind["replaceLabel"]) | undefined;
16840
+ /** What the replace field holds, which Replace puts in place of a match. */
16841
+ "prop:replacement"?: (HelixHeadlessFind["replacement"]) | undefined;
16842
+ /** The label of the button that shows the replace row. */
16843
+ "attr:replace-toggle-label"?: (HelixHeadlessFind["replaceToggleLabel"]) | undefined;
16844
+ /** The label of the button that shows the replace row. */
16845
+ "prop:replaceToggleLabel"?: (HelixHeadlessFind["replaceToggleLabel"]) | undefined;
16846
+ /** The key that opens the bar, as a chord such as `mod+f`, where `mod` is
16847
+ Command on an Apple keyboard and Control elsewhere. Empty turns the key
16848
+ off, as for a bar the page opens itself. */
16849
+ "prop:shortcut"?: (HelixHeadlessFind["shortcut"]) | undefined;
16850
+ /** Elements inside the content whose text is not searched, as a selector,
16851
+ such as line numbers or the buttons beside each message. */
16852
+ "prop:skip"?: (HelixHeadlessFind["skip"]) | undefined;
16853
+ /** Whether only whole words match. The reader turns it on and off from the bar. */
16854
+ "bool:whole-word"?: (HelixHeadlessFind["wholeWord"]) | undefined;
16855
+ /** Whether only whole words match. The reader turns it on and off from the bar. */
16856
+ "prop:wholeWord"?: (HelixHeadlessFind["wholeWord"]) | undefined;
16857
+ /** The whole word button's label. */
16858
+ "attr:whole-word-label"?: (HelixHeadlessFind["wholeWordLabel"]) | undefined;
16859
+ /** The whole word button's label. */
16860
+ "prop:wholeWordLabel"?: (HelixHeadlessFind["wholeWordLabel"]) | undefined;
16861
+ /** Whether the element starts open. Ignored once `open` is written. */
16862
+ "bool:default-open"?: (HelixHeadlessFind["defaultOpen"]) | undefined;
16863
+ /** Whether the element starts open. Ignored once `open` is written. */
16864
+ "prop:defaultOpen"?: (HelixHeadlessFind["defaultOpen"]) | undefined;
16865
+ /** Whether the element is open.
16866
+
16867
+ One property, not two, so `dialog.open` answers the question anyone
16868
+ asking it meant. Writing always applies; `<helix-dialog open>` is the
16869
+ same statement in markup.
16870
+
16871
+ **Not reflected, and that is required rather than tidy.** Reflection
16872
+ writes the resolved state back as an attribute, so an element that opened
16873
+ itself would put `open` on its own host: cloned, serialized for
16874
+ hydration, or diffed by a framework, it comes back holding whatever the
16875
+ last reader did rather than what the author wrote. `:state(open)` carries
16876
+ the resolved state for stylesheets, which is what the mirror is for. */
16877
+ "prop:open"?: (HelixHeadlessFind["open"]) | undefined;
16878
+ /** Fired before the bar closes, and cancelable. */
16879
+ "on:helix-before-close"?: ((
16880
+ e: HelixHeadlessFindHelixBeforeCloseElementEvent,
16881
+ ) => void) | undefined;
16882
+ /** Fired before the bar opens, and cancelable. Canceling it keeps the bar closed. */
16883
+ "on:helix-before-open"?: ((
16884
+ e: HelixHeadlessFindHelixBeforeOpenElementEvent,
16885
+ ) => void) | undefined;
16886
+ /** Sent after each search and each move among the matches, with `count` and the current match's `index`, counting from 0, or -1 for none. */
16887
+ "on:helix-found"?: ((e: HelixHeadlessFindHelixFoundElementEvent) => void) | undefined;
16888
+ /** Sent when the bar opens or closes, with `newState` and `oldState`. */
16889
+ "on:toggle"?: ((e: HelixHeadlessFindToggleElementEvent) => void) | undefined;
16890
+
16891
+ /** Set the innerHTML of the element */
16892
+ innerHTML?: (string) | undefined;
16893
+ /** Set the textContent of the element */
16894
+ textContent?: (string | number) | undefined;
16895
+ };
16896
+
16349
16897
  export type HelixHeadlessFormatDateProps = {
16350
16898
  /** The calendar a date is written in: `gregory`, `buddhist`, `japanese`,
16351
16899
  `roc`, or `iso8601`, or a calendar with months of its own, such as
@@ -18024,6 +18572,36 @@ is the platform's `commandfor`. */
18024
18572
  commandfor?: (HelixHeadlessIconButton["commandFor"]) | undefined;
18025
18573
  /** The id of the element the command is sent to. */
18026
18574
  commandFor?: (HelixHeadlessIconButton["commandFor"]) | undefined;
18575
+ /** Whether a disabled button stays in the tab order, so a tooltip around it
18576
+ can say why it is disabled.
18577
+
18578
+ Set it on a button whose reason a Tooltip gives, such as a Save with no
18579
+ changes to save. While the button is disabled, it keeps focus and takes
18580
+ hover, and it refuses every press: a click, Enter and Space, and Enter in
18581
+ a field of its form. The click does not reach your listeners, and a submit
18582
+ button submits nothing. The inner control carries `aria-disabled` in place
18583
+ of the native `disabled`, so a screen reader still says it is unavailable.
18584
+ The styled button keeps the disabled look.
18585
+
18586
+ Leave it unset on a button with no reason to give. A plain disabled button
18587
+ leaves the tab order, as a native one does, and a keyboard reader skips a
18588
+ stop that does nothing. Set `pending` for the wait after a press. */
18589
+ "focusable-when-disabled"?: (HelixHeadlessIconButton["focusableWhenDisabled"]) | undefined;
18590
+ /** Whether a disabled button stays in the tab order, so a tooltip around it
18591
+ can say why it is disabled.
18592
+
18593
+ Set it on a button whose reason a Tooltip gives, such as a Save with no
18594
+ changes to save. While the button is disabled, it keeps focus and takes
18595
+ hover, and it refuses every press: a click, Enter and Space, and Enter in
18596
+ a field of its form. The click does not reach your listeners, and a submit
18597
+ button submits nothing. The inner control carries `aria-disabled` in place
18598
+ of the native `disabled`, so a screen reader still says it is unavailable.
18599
+ The styled button keeps the disabled look.
18600
+
18601
+ Leave it unset on a button with no reason to give. A plain disabled button
18602
+ leaves the tab order, as a native one does, and a keyboard reader skips a
18603
+ stop that does nothing. Set `pending` for the wait after a press. */
18604
+ focusableWhenDisabled?: (HelixHeadlessIconButton["focusableWhenDisabled"]) | undefined;
18027
18605
  /** Where this button's submission goes, overriding the form's own.
18028
18606
 
18029
18607
  **The five `form*` overrides ride on a native submit button that stands in
@@ -18205,6 +18783,36 @@ is the platform's `commandfor`. */
18205
18783
  "attr:commandfor"?: (HelixHeadlessIconButton["commandFor"]) | undefined;
18206
18784
  /** The id of the element the command is sent to. */
18207
18785
  "prop:commandFor"?: (HelixHeadlessIconButton["commandFor"]) | undefined;
18786
+ /** Whether a disabled button stays in the tab order, so a tooltip around it
18787
+ can say why it is disabled.
18788
+
18789
+ Set it on a button whose reason a Tooltip gives, such as a Save with no
18790
+ changes to save. While the button is disabled, it keeps focus and takes
18791
+ hover, and it refuses every press: a click, Enter and Space, and Enter in
18792
+ a field of its form. The click does not reach your listeners, and a submit
18793
+ button submits nothing. The inner control carries `aria-disabled` in place
18794
+ of the native `disabled`, so a screen reader still says it is unavailable.
18795
+ The styled button keeps the disabled look.
18796
+
18797
+ Leave it unset on a button with no reason to give. A plain disabled button
18798
+ leaves the tab order, as a native one does, and a keyboard reader skips a
18799
+ stop that does nothing. Set `pending` for the wait after a press. */
18800
+ "bool:focusable-when-disabled"?: (HelixHeadlessIconButton["focusableWhenDisabled"]) | undefined;
18801
+ /** Whether a disabled button stays in the tab order, so a tooltip around it
18802
+ can say why it is disabled.
18803
+
18804
+ Set it on a button whose reason a Tooltip gives, such as a Save with no
18805
+ changes to save. While the button is disabled, it keeps focus and takes
18806
+ hover, and it refuses every press: a click, Enter and Space, and Enter in
18807
+ a field of its form. The click does not reach your listeners, and a submit
18808
+ button submits nothing. The inner control carries `aria-disabled` in place
18809
+ of the native `disabled`, so a screen reader still says it is unavailable.
18810
+ The styled button keeps the disabled look.
18811
+
18812
+ Leave it unset on a button with no reason to give. A plain disabled button
18813
+ leaves the tab order, as a native one does, and a keyboard reader skips a
18814
+ stop that does nothing. Set `pending` for the wait after a press. */
18815
+ "prop:focusableWhenDisabled"?: (HelixHeadlessIconButton["focusableWhenDisabled"]) | undefined;
18208
18816
  /** Where this button's submission goes, overriding the form's own.
18209
18817
 
18210
18818
  **The five `form*` overrides ride on a native submit button that stands in
@@ -18715,6 +19323,10 @@ token.
18715
19323
  Empty leaves the attribute off, which is the browser's default. Set it to
18716
19324
  a token like `email` or `bday` to ask for autofill, or to `off` to refuse. */
18717
19325
  autocomplete?: (HelixHeadlessInput["autocomplete"]) | undefined;
19326
+ /** Whether the browser corrects words as the reader types, as the platform's
19327
+ `autocorrect`. Turn it off, with `autocorrect="off"`, for text that is not
19328
+ prose, such as an address or a code, which corrections would change. */
19329
+ autocorrect?: (HelixHeadlessInput["autocorrect"]) | undefined;
18718
19330
  /** Whether the field shows a button that empties it.
18719
19331
 
18720
19332
  Shown only while there is something to clear, because a control that does
@@ -18977,6 +19589,10 @@ token.
18977
19589
  Empty leaves the attribute off, which is the browser's default. Set it to
18978
19590
  a token like `email` or `bday` to ask for autofill, or to `off` to refuse. */
18979
19591
  "prop:autocomplete"?: (HelixHeadlessInput["autocomplete"]) | undefined;
19592
+ /** Whether the browser corrects words as the reader types, as the platform's
19593
+ `autocorrect`. Turn it off, with `autocorrect="off"`, for text that is not
19594
+ prose, such as an address or a code, which corrections would change. */
19595
+ "prop:autocorrect"?: (HelixHeadlessInput["autocorrect"]) | undefined;
18980
19596
  /** Whether the field shows a button that empties it.
18981
19597
 
18982
19598
  Shown only while there is something to clear, because a control that does
@@ -21819,9 +22435,13 @@ stream ends. */
21819
22435
  "dropped-label"?: (HelixHeadlessLog["droppedLabel"]) | undefined;
21820
22436
  /** What the line above the log says once `limit` has let lines go. `{count}` is how many. */
21821
22437
  droppedLabel?: (HelixHeadlessLog["droppedLabel"]) | undefined;
21822
- /** The text shown and announced when the log has no lines. */
22438
+ /** The text shown and announced when the log has no lines and no steps. A
22439
+ step with nothing in it yet, such as one still `pending`, is its heading
22440
+ alone, so a log holding one says nothing. */
21823
22441
  "empty-text"?: (HelixHeadlessLog["emptyText"]) | undefined;
21824
- /** The text shown and announced when the log has no lines. */
22442
+ /** The text shown and announced when the log has no lines and no steps. A
22443
+ step with nothing in it yet, such as one still `pending`, is its heading
22444
+ alone, so a log holding one says nothing. */
21825
22445
  emptyText?: (HelixHeadlessLog["emptyText"]) | undefined;
21826
22446
  /** What a screen reader hears when lines at `error` arrive. `{count}` is how
21827
22447
  many arrived together and `{text}` is the first of them. */
@@ -21984,9 +22604,13 @@ stream ends. */
21984
22604
  "attr:dropped-label"?: (HelixHeadlessLog["droppedLabel"]) | undefined;
21985
22605
  /** What the line above the log says once `limit` has let lines go. `{count}` is how many. */
21986
22606
  "prop:droppedLabel"?: (HelixHeadlessLog["droppedLabel"]) | undefined;
21987
- /** The text shown and announced when the log has no lines. */
22607
+ /** The text shown and announced when the log has no lines and no steps. A
22608
+ step with nothing in it yet, such as one still `pending`, is its heading
22609
+ alone, so a log holding one says nothing. */
21988
22610
  "attr:empty-text"?: (HelixHeadlessLog["emptyText"]) | undefined;
21989
- /** The text shown and announced when the log has no lines. */
22611
+ /** The text shown and announced when the log has no lines and no steps. A
22612
+ step with nothing in it yet, such as one still `pending`, is its heading
22613
+ alone, so a log holding one says nothing. */
21990
22614
  "prop:emptyText"?: (HelixHeadlessLog["emptyText"]) | undefined;
21991
22615
  /** What a screen reader hears when lines at `error` arrive. `{count}` is how
21992
22616
  many arrived together and `{text}` is the first of them. */
@@ -24797,6 +25421,43 @@ fair summary of a task and a poor one of a quantity. */
24797
25421
  textContent?: (string | number) | undefined;
24798
25422
  };
24799
25423
 
25424
+ export type HelixHeadlessMeterSegmentProps = {
25425
+ /** What the segment is, such as "Tools", which names the slice when a pointer
25426
+ rests on it.
25427
+
25428
+ Not announced: see the note on a meter's children above. */
25429
+ label?: (HelixHeadlessMeterSegment["label"]) | undefined;
25430
+ /** What the segment means, as it does on a callout. Takes the tone's color in
25431
+ place of the next color in the series. */
25432
+ tone?: (HelixHeadlessMeterSegment["tone"]) | undefined;
25433
+ /** How much of the meter's range the segment takes, in the units of the meter's
25434
+ `min` and `max`.
25435
+
25436
+ A value that is not a number, or is below zero, draws nothing. */
25437
+ value?: (HelixHeadlessMeterSegment["value"]) | undefined;
25438
+ };
25439
+
25440
+ export type HelixHeadlessMeterSegmentSolidJsProps = {
25441
+ /** What the segment is, such as "Tools", which names the slice when a pointer
25442
+ rests on it.
25443
+
25444
+ Not announced: see the note on a meter's children above. */
25445
+ "prop:label"?: (HelixHeadlessMeterSegment["label"]) | undefined;
25446
+ /** What the segment means, as it does on a callout. Takes the tone's color in
25447
+ place of the next color in the series. */
25448
+ "prop:tone"?: (HelixHeadlessMeterSegment["tone"]) | undefined;
25449
+ /** How much of the meter's range the segment takes, in the units of the meter's
25450
+ `min` and `max`.
25451
+
25452
+ A value that is not a number, or is below zero, draws nothing. */
25453
+ "prop:value"?: (HelixHeadlessMeterSegment["value"]) | undefined;
25454
+
25455
+ /** Set the innerHTML of the element */
25456
+ innerHTML?: (string) | undefined;
25457
+ /** Set the textContent of the element */
25458
+ textContent?: (string | number) | undefined;
25459
+ };
25460
+
24800
25461
  /** `HelixHeadlessMotionToggle` component event */
24801
25462
  export type HelixHeadlessMotionToggleElementEvent<E = Event> = TypedEvent<
24802
25463
  HelixHeadlessMotionToggle,
@@ -31013,13 +31674,42 @@ export type HelixHeadlessSpatialBarChartHelixReadingPressElementEvent =
31013
31674
  HelixHeadlessSpatialBarChartElementEvent<HelixReadingPressEvent>;
31014
31675
 
31015
31676
  export type HelixHeadlessSpatialBarChartProps = {
31016
- /** Draws no box: no edges, grid, numbers, or names, so the readings stand
31017
- alone and fill the plot, as a picture on a product's own page does. The
31677
+ /** Grows the bars up from the floor the first time the chart comes into
31678
+ view with readings, each category a little after the one before it, so
31679
+ the drawing arrives the way a page's own picture does. The growth is
31680
+ fast at first, slows to rest, and never passes a bar's value.
31681
+
31682
+ Under `prefers-reduced-motion`, or where the page has paused its motion
31683
+ through `pauseMotion` or `Motion Toggle`, the bars stand at their height
31684
+ from the start. A later table draws the bars it already had at their
31685
+ height, and grows the bars it adds, each from the floor, so a reading that
31686
+ arrives while the chart is in view arrives the same way. */
31687
+ grow?: (HelixHeadlessSpatialBarChart["grow"]) | undefined;
31688
+ /** Grows the bars again each time the chart comes back into view after it
31689
+ left it, as a pane does when it is opened again, where `grow` alone grows
31690
+ them the first time only. Only a chart that grows takes it.
31691
+
31692
+ While it is out of view the bars stand at the floor, so the first frame
31693
+ after it returns is the start of the growth and never a flash at full
31694
+ height. */
31695
+ "grow-again"?: (HelixHeadlessSpatialBarChart["growAgain"]) | undefined;
31696
+ /** Grows the bars again each time the chart comes back into view after it
31697
+ left it, as a pane does when it is opened again, where `grow` alone grows
31698
+ them the first time only. Only a chart that grows takes it.
31699
+
31700
+ While it is out of view the bars stand at the floor, so the first frame
31701
+ after it returns is the start of the growth and never a flash at full
31702
+ height. */
31703
+ growAgain?: (HelixHeadlessSpatialBarChart["growAgain"]) | undefined;
31704
+ /** Draws no box: no edges, grid, numbers, or names, and in a `row` no
31705
+ floor, so the readings stand alone and fill the plot, as a picture on a
31706
+ product's own page does. The
31018
31707
  table, the summary, the tooltip, and the keys still carry every value,
31019
31708
  and a renderer draws no box either. */
31020
31709
  "no-box"?: (HelixHeadlessSpatialBarChart["noBox"]) | undefined;
31021
- /** Draws no box: no edges, grid, numbers, or names, so the readings stand
31022
- alone and fill the plot, as a picture on a product's own page does. The
31710
+ /** Draws no box: no edges, grid, numbers, or names, and in a `row` no
31711
+ floor, so the readings stand alone and fill the plot, as a picture on a
31712
+ product's own page does. The
31023
31713
  table, the summary, the tooltip, and the keys still carry every value,
31024
31714
  and a renderer draws no box either. */
31025
31715
  noBox?: (HelixHeadlessSpatialBarChart["noBox"]) | undefined;
@@ -31033,6 +31723,15 @@ and a renderer draws no box either. */
31033
31723
  "plot-label"?: (HelixHeadlessSpatialBarChart["plotLabel"]) | undefined;
31034
31724
  /** The plot's name where the chart has none: no `aria-label`, `label`, or table caption. */
31035
31725
  plotLabel?: (HelixHeadlessSpatialBarChart["plotLabel"]) | undefined;
31726
+ /** Stacks a category's series into one column, each block standing on the
31727
+ ones before it, so the column is as tall as the category's total, as a
31728
+ flat `Bar Chart` stacks them.
31729
+
31730
+ Absent stands the series one behind another in depth. Stacked, every
31731
+ series stands in the front row, so none hides another, and the parts of
31732
+ one total read together. A negative reading hangs below zero on the
31733
+ negatives before it. The scale fits the stacks. */
31734
+ stacked?: (HelixHeadlessSpatialBarChart["stacked"]) | undefined;
31036
31735
  /** The `summary` part's sentence. `{count}`, `{series}`, and `{categories}`
31037
31736
  are the number of bars, series, and categories, written in the locale,
31038
31737
  and `{low}` and `{high}` the lowest and the highest value. */
@@ -31041,6 +31740,38 @@ and `{low}` and `{high}` the lowest and the highest value. */
31041
31740
  are the number of bars, series, and categories, written in the locale,
31042
31741
  and `{low}` and `{high}` the lowest and the highest value. */
31043
31742
  summaryLabel?: (HelixHeadlessSpatialBarChart["summaryLabel"]) | undefined;
31743
+ /** How the bars stand.
31744
+
31745
+ Unset, they stand on a grid of categories across and series in depth,
31746
+ in a box the camera looks at from a corner, so the grid recedes at an
31747
+ angle. `row` lays the categories in a straight line across the page and
31748
+ turns each bar to the camera, showing its top and two sides, for one row
31749
+ of readings in a small space such as a pane: turning the view turns each
31750
+ bar where it stands, and the row stays level. It is the chart's own
31751
+ drawing that lays the row: a renderer connected through
31752
+ `@fusion.dev/helix-plot` stands the bars on the grid.
31753
+
31754
+ `diagonal` is the same row climbing to the right as it recedes, each
31755
+ place a step further back than the one before, as a row of days on a
31756
+ product's page is drawn: the row rises one part in five across the page
31757
+ from any turn, and its floor and names climb with it. A row whose bars
31758
+ have a size climbs at most a quarter of the plot's height, so the bars
31759
+ of a long row keep theirs.
31760
+
31761
+ **A row draws its floor in place of a box**: each place as an outline a
31762
+ little wider than its bar, and each category's name under it, as many
31763
+ names as fit without touching. A name whose bar names a tone is written
31764
+ first, in that tone. `no-box` leaves the floor and the names out.
31765
+
31766
+ **A `column-gap` on the `fallback` part gives a row's bars one width**,
31767
+ which the styled tier sets from `--spatial-bar-chart-bar-size`: one bar
31768
+ stands as wide as each of twenty, the row is as long as its bars and
31769
+ centered, the tallest bar stands as high as the plot has room for and
31770
+ no taller than the row is long and a quarter again, so one bar stands
31771
+ as a block, and `fits` says how many bars the plot holds, so a page
31772
+ can give it the latest of a longer table. It is read when the plot's
31773
+ size changes. */
31774
+ variant?: (HelixHeadlessSpatialBarChart["variant"]) | undefined;
31044
31775
  /** The words shown in place of the drawing when the table has no readings,
31045
31776
  and the fallback of the `empty` slot. */
31046
31777
  "empty-text"?: (HelixHeadlessSpatialBarChart["emptyText"]) | undefined;
@@ -31186,13 +31917,42 @@ does not look inside the one it has. */
31186
31917
  };
31187
31918
 
31188
31919
  export type HelixHeadlessSpatialBarChartSolidJsProps = {
31189
- /** Draws no box: no edges, grid, numbers, or names, so the readings stand
31190
- alone and fill the plot, as a picture on a product's own page does. The
31920
+ /** Grows the bars up from the floor the first time the chart comes into
31921
+ view with readings, each category a little after the one before it, so
31922
+ the drawing arrives the way a page's own picture does. The growth is
31923
+ fast at first, slows to rest, and never passes a bar's value.
31924
+
31925
+ Under `prefers-reduced-motion`, or where the page has paused its motion
31926
+ through `pauseMotion` or `Motion Toggle`, the bars stand at their height
31927
+ from the start. A later table draws the bars it already had at their
31928
+ height, and grows the bars it adds, each from the floor, so a reading that
31929
+ arrives while the chart is in view arrives the same way. */
31930
+ "prop:grow"?: (HelixHeadlessSpatialBarChart["grow"]) | undefined;
31931
+ /** Grows the bars again each time the chart comes back into view after it
31932
+ left it, as a pane does when it is opened again, where `grow` alone grows
31933
+ them the first time only. Only a chart that grows takes it.
31934
+
31935
+ While it is out of view the bars stand at the floor, so the first frame
31936
+ after it returns is the start of the growth and never a flash at full
31937
+ height. */
31938
+ "bool:grow-again"?: (HelixHeadlessSpatialBarChart["growAgain"]) | undefined;
31939
+ /** Grows the bars again each time the chart comes back into view after it
31940
+ left it, as a pane does when it is opened again, where `grow` alone grows
31941
+ them the first time only. Only a chart that grows takes it.
31942
+
31943
+ While it is out of view the bars stand at the floor, so the first frame
31944
+ after it returns is the start of the growth and never a flash at full
31945
+ height. */
31946
+ "prop:growAgain"?: (HelixHeadlessSpatialBarChart["growAgain"]) | undefined;
31947
+ /** Draws no box: no edges, grid, numbers, or names, and in a `row` no
31948
+ floor, so the readings stand alone and fill the plot, as a picture on a
31949
+ product's own page does. The
31191
31950
  table, the summary, the tooltip, and the keys still carry every value,
31192
31951
  and a renderer draws no box either. */
31193
31952
  "bool:no-box"?: (HelixHeadlessSpatialBarChart["noBox"]) | undefined;
31194
- /** Draws no box: no edges, grid, numbers, or names, so the readings stand
31195
- alone and fill the plot, as a picture on a product's own page does. The
31953
+ /** Draws no box: no edges, grid, numbers, or names, and in a `row` no
31954
+ floor, so the readings stand alone and fill the plot, as a picture on a
31955
+ product's own page does. The
31196
31956
  table, the summary, the tooltip, and the keys still carry every value,
31197
31957
  and a renderer draws no box either. */
31198
31958
  "prop:noBox"?: (HelixHeadlessSpatialBarChart["noBox"]) | undefined;
@@ -31206,6 +31966,15 @@ and a renderer draws no box either. */
31206
31966
  "attr:plot-label"?: (HelixHeadlessSpatialBarChart["plotLabel"]) | undefined;
31207
31967
  /** The plot's name where the chart has none: no `aria-label`, `label`, or table caption. */
31208
31968
  "prop:plotLabel"?: (HelixHeadlessSpatialBarChart["plotLabel"]) | undefined;
31969
+ /** Stacks a category's series into one column, each block standing on the
31970
+ ones before it, so the column is as tall as the category's total, as a
31971
+ flat `Bar Chart` stacks them.
31972
+
31973
+ Absent stands the series one behind another in depth. Stacked, every
31974
+ series stands in the front row, so none hides another, and the parts of
31975
+ one total read together. A negative reading hangs below zero on the
31976
+ negatives before it. The scale fits the stacks. */
31977
+ "prop:stacked"?: (HelixHeadlessSpatialBarChart["stacked"]) | undefined;
31209
31978
  /** The `summary` part's sentence. `{count}`, `{series}`, and `{categories}`
31210
31979
  are the number of bars, series, and categories, written in the locale,
31211
31980
  and `{low}` and `{high}` the lowest and the highest value. */
@@ -31214,6 +31983,38 @@ and `{low}` and `{high}` the lowest and the highest value. */
31214
31983
  are the number of bars, series, and categories, written in the locale,
31215
31984
  and `{low}` and `{high}` the lowest and the highest value. */
31216
31985
  "prop:summaryLabel"?: (HelixHeadlessSpatialBarChart["summaryLabel"]) | undefined;
31986
+ /** How the bars stand.
31987
+
31988
+ Unset, they stand on a grid of categories across and series in depth,
31989
+ in a box the camera looks at from a corner, so the grid recedes at an
31990
+ angle. `row` lays the categories in a straight line across the page and
31991
+ turns each bar to the camera, showing its top and two sides, for one row
31992
+ of readings in a small space such as a pane: turning the view turns each
31993
+ bar where it stands, and the row stays level. It is the chart's own
31994
+ drawing that lays the row: a renderer connected through
31995
+ `@fusion.dev/helix-plot` stands the bars on the grid.
31996
+
31997
+ `diagonal` is the same row climbing to the right as it recedes, each
31998
+ place a step further back than the one before, as a row of days on a
31999
+ product's page is drawn: the row rises one part in five across the page
32000
+ from any turn, and its floor and names climb with it. A row whose bars
32001
+ have a size climbs at most a quarter of the plot's height, so the bars
32002
+ of a long row keep theirs.
32003
+
32004
+ **A row draws its floor in place of a box**: each place as an outline a
32005
+ little wider than its bar, and each category's name under it, as many
32006
+ names as fit without touching. A name whose bar names a tone is written
32007
+ first, in that tone. `no-box` leaves the floor and the names out.
32008
+
32009
+ **A `column-gap` on the `fallback` part gives a row's bars one width**,
32010
+ which the styled tier sets from `--spatial-bar-chart-bar-size`: one bar
32011
+ stands as wide as each of twenty, the row is as long as its bars and
32012
+ centered, the tallest bar stands as high as the plot has room for and
32013
+ no taller than the row is long and a quarter again, so one bar stands
32014
+ as a block, and `fits` says how many bars the plot holds, so a page
32015
+ can give it the latest of a longer table. It is read when the plot's
32016
+ size changes. */
32017
+ "prop:variant"?: (HelixHeadlessSpatialBarChart["variant"]) | undefined;
31217
32018
  /** The words shown in place of the drawing when the table has no readings,
31218
32019
  and the fallback of the `empty` slot. */
31219
32020
  "attr:empty-text"?: (HelixHeadlessSpatialBarChart["emptyText"]) | undefined;
@@ -36339,6 +37140,9 @@ export type HelixHeadlessTerminalElementEvent<E = Event> = TypedEvent<
36339
37140
  /** `helix-copy` event type */
36340
37141
  export type HelixHeadlessTerminalHelixCopyElementEvent =
36341
37142
  HelixHeadlessTerminalElementEvent<HelixCopyEvent>;
37143
+ /** `helix-found` event type */
37144
+ export type HelixHeadlessTerminalHelixFoundElementEvent =
37145
+ HelixHeadlessTerminalElementEvent<HelixFoundEvent>;
36342
37146
  /** `helix-terminal-bell` event type */
36343
37147
  export type HelixHeadlessTerminalHelixTerminalBellElementEvent =
36344
37148
  HelixHeadlessTerminalElementEvent<HelixTerminalBellEvent>;
@@ -36505,6 +37309,8 @@ write. Connect it to a setting your reader can turn on. */
36505
37309
 
36506
37310
  /** The copy control or its key put the selection on the clipboard. */
36507
37311
  "onhelix-copy"?: ((e: HelixHeadlessTerminalHelixCopyElementEvent) => void) | undefined;
37312
+ /** The find bar searched or moved among the matches, with `count` and the current match's `index`, counting from 0, or -1 for none. */
37313
+ "onhelix-found"?: ((e: HelixHeadlessTerminalHelixFoundElementEvent) => void) | undefined;
36508
37314
  /** The program rang the bell. The frame flashes once. */
36509
37315
  "onhelix-terminal-bell"?: ((
36510
37316
  e: HelixHeadlessTerminalHelixTerminalBellElementEvent,
@@ -36677,6 +37483,8 @@ write. Connect it to a setting your reader can turn on. */
36677
37483
  "prop:tabTypesLabel"?: (HelixHeadlessTerminal["tabTypesLabel"]) | undefined;
36678
37484
  /** The copy control or its key put the selection on the clipboard. */
36679
37485
  "on:helix-copy"?: ((e: HelixHeadlessTerminalHelixCopyElementEvent) => void) | undefined;
37486
+ /** The find bar searched or moved among the matches, with `count` and the current match's `index`, counting from 0, or -1 for none. */
37487
+ "on:helix-found"?: ((e: HelixHeadlessTerminalHelixFoundElementEvent) => void) | undefined;
36680
37488
  /** The program rang the bell. The frame flashes once. */
36681
37489
  "on:helix-terminal-bell"?: ((
36682
37490
  e: HelixHeadlessTerminalHelixTerminalBellElementEvent,
@@ -44718,7 +45526,7 @@ export type CustomElements<F extends Framework = "other"> = {
44718
45526
  *
44719
45527
  * - `(default)`: The step's label. Without an `href`, you can slot your own anchor here. Give it `data-link="quiet"`, because a slotted anchor belongs to the outer tree and the crumb's styles cannot reach it.
44720
45528
  * - `end`: Content after the label and outside the link, such as a switcher's menu trigger, a count, or a mark. It can hold a control, and it is not read as part of the link's accessible name.
44721
- * - `separator`: Replaces the chevron shown before this item.
45529
+ * - `separator`: Replaces the mark shown before this item, a chevron or the trail's `separator`.
44722
45530
  * - `start`: Content before the label, such as an icon.
44723
45531
  *
44724
45532
  * ## CSS Parts
@@ -44729,7 +45537,7 @@ export type CustomElements<F extends Framework = "other"> = {
44729
45537
  * - `fold-separator`: The chevron before that button.
44730
45538
  * - `link`: The crumb itself, which is an `<a>` where `href` is set.
44731
45539
  * - `separator`: The separator preceding the item.
44732
- * - `separator-mark`: The chevron between crumbs, shown when no separator is slotted.
45540
+ * - `separator-mark`: The chevron between crumbs, or the slash under the trail's `separator="slash"`, shown when no separator is slotted.
44733
45541
  *
44734
45542
  * ## CSS States
44735
45543
  *
@@ -44793,6 +45601,18 @@ export type CustomElements<F extends Framework = "other"> = {
44793
45601
  * - `max-items`/`maxItems`: The most crumbs a trail drawn from `items` shows before it folds its middle
44794
45602
  * into one, counting the first and the last. Unset, it never folds. At least
44795
45603
  * 2, so the first crumb and the current page always show.
45604
+ * - `separator`: The mark between one crumb and the next, for the whole trail. Unset is a
45605
+ * chevron; `slash` is a slash, as a path or a repository and its branch is
45606
+ * written.
45607
+ *
45608
+ * **On the trail rather than on each crumb**, because the marks are one
45609
+ * decision: a trail whose separators differ from crumb to crumb is a
45610
+ * mistake, and a trail drawn from `items` has no crumb of yours to set it
45611
+ * on. A crumb's own `separator` slot still replaces its mark, for the rare
45612
+ * crumb that needs something else.
45613
+ *
45614
+ * Optional and reflected, per the rule that a reflected property takes no
45615
+ * default, so a stylesheet can select on it.
44796
45616
  * - `items`: The trail as data, drawn as crumbs before any you slot. The last item is the
44797
45617
  * current page.
44798
45618
  *
@@ -44836,7 +45656,7 @@ export type CustomElements<F extends Framework = "other"> = {
44836
45656
  * - `crumb-fold-separator`: The chevron before that button.
44837
45657
  * - `crumb-link`: The link, or the current page's words, of a crumb drawn from `items`.
44838
45658
  * - `crumb-separator`: The separator before a crumb drawn from `items`.
44839
- * - `crumb-separator-mark`: The chevron before a crumb drawn from `items`.
45659
+ * - `crumb-separator-mark`: The chevron, or the slash under `separator="slash"`, before a crumb drawn from `items`.
44840
45660
  * - `expand`: The button in the folded crumb that shows the whole trail.
44841
45661
  * - `list`: The ordered list.
44842
45662
  *
@@ -45039,6 +45859,10 @@ export type CustomElements<F extends Framework = "other"> = {
45039
45859
  * Set `pending` while the action a press started is still running. The button
45040
45860
  * keeps focus and refuses presses, and a reader on it hears `pending-label`.
45041
45861
  *
45862
+ * Set `focusable-when-disabled` on a disabled button whose reason a Tooltip
45863
+ * gives. It stays in the tab order and takes hover, so the tooltip opens, and
45864
+ * it refuses every press.
45865
+ *
45042
45866
  * Every press that acts sends `helix-press` with what pressed it in
45043
45867
  * `detail.pointerType`: `mouse`, `pen`, `touch`, `keyboard`, or `virtual` for
45044
45868
  * a screen reader's press or a script's `click()`, as React Aria's `onPress`
@@ -45068,6 +45892,20 @@ export type CustomElements<F extends Framework = "other"> = {
45068
45892
  * name to derive one rather than dash-casing it, and what a consumer writes
45069
45893
  * is the platform's `commandfor`.
45070
45894
  * - `commandfor`/`commandFor`: The id of the element the command is sent to.
45895
+ * - `focusable-when-disabled`/`focusableWhenDisabled`: Whether a disabled button stays in the tab order, so a tooltip around it
45896
+ * can say why it is disabled.
45897
+ *
45898
+ * Set it on a button whose reason a Tooltip gives, such as a Save with no
45899
+ * changes to save. While the button is disabled, it keeps focus and takes
45900
+ * hover, and it refuses every press: a click, Enter and Space, and Enter in
45901
+ * a field of its form. The click does not reach your listeners, and a submit
45902
+ * button submits nothing. The inner control carries `aria-disabled` in place
45903
+ * of the native `disabled`, so a screen reader still says it is unavailable.
45904
+ * The styled button keeps the disabled look.
45905
+ *
45906
+ * Leave it unset on a button with no reason to give. A plain disabled button
45907
+ * leaves the tab order, as a native one does, and a keyboard reader skips a
45908
+ * stop that does nothing. Set `pending` for the wait after a press.
45071
45909
  * - `formaction`/`formAction`: Where this button's submission goes, overriding the form's own.
45072
45910
  *
45073
45911
  * **The five `form*` overrides ride on a native submit button that stands in
@@ -46203,6 +47041,16 @@ export type CustomElements<F extends Framework = "other"> = {
46203
47041
  * - `pan-up-spinner`: The ring `pan-up` turns while it is pending.
46204
47042
  * - `pan-up-text`: The box `pan-up`'s glyph sits in.
46205
47043
  * - `region`: The named region the board is drawn in.
47044
+ * - `tooltip-arrow`: The arrow of the tooltip that names each button, forwarded from `Tooltip`.
47045
+ * - `tooltip-arrow-bottom`: The arrow while the bubble is below its button, on the bubble's top edge. Set together with `tooltip-arrow`.
47046
+ * - `tooltip-arrow-left`: The arrow while the bubble is left of its button, on the bubble's right edge. Set together with `tooltip-arrow`.
47047
+ * - `tooltip-arrow-right`: The arrow while the bubble is right of its button, on the bubble's left edge. Set together with `tooltip-arrow`.
47048
+ * - `tooltip-arrow-top`: The arrow while the bubble is above its button, on the bubble's bottom edge. Set together with `tooltip-arrow`.
47049
+ * - `tooltip-surface`: The bubble of the tooltip that names each button, forwarded from `Tooltip`.
47050
+ * - `tooltip-surface-bottom`: The bubble while it is below its button. Set together with `tooltip-surface`.
47051
+ * - `tooltip-surface-left`: The bubble while it is left of its button. Set together with `tooltip-surface`.
47052
+ * - `tooltip-surface-right`: The bubble while it is right of its button. Set together with `tooltip-surface`.
47053
+ * - `tooltip-surface-top`: The bubble while it is above its button. Set together with `tooltip-surface`.
46206
47054
  * - `viewport`: The box the board is drawn inside.
46207
47055
  * - `zoom-in`: The button that zooms in.
46208
47056
  * - `zoom-in-button`: `zoom-in`'s inner button.
@@ -46656,8 +47504,8 @@ export type CustomElements<F extends Framework = "other"> = {
46656
47504
 
46657
47505
  /**
46658
47506
  * The composer is a separate element so you can replace it. If you need
46659
- * attachments, slash commands, or a model picker, replace the composer and keep
46660
- * the transcript.
47507
+ * slash commands or a layout of your own, replace the composer and keep the
47508
+ * transcript.
46661
47509
  *
46662
47510
  * By default, Enter sends and Shift+Enter starts a new line, the convention in
46663
47511
  * messaging apps. Document editors mostly use the opposite, so `submit-on`
@@ -46697,10 +47545,41 @@ export type CustomElements<F extends Framework = "other"> = {
46697
47545
  * `typing-timeout` milliseconds. Pass it on to show "is typing" to the other
46698
47546
  * side.
46699
47547
  *
47548
+ * **`busy` says a reply is on its way**, and turns the send button into a
47549
+ * stop button, named by `stop-label`, that sends `helix-stop`. The field
47550
+ * stays open so the reader can write the next turn, and Enter does not send
47551
+ * it until `busy` is cleared. With `queue`, Enter sends while `busy` too, for
47552
+ * a page that holds a turn until the reply ends or hands it to the reply
47553
+ * under way; the button stays the stop button.
47554
+ *
47555
+ * **The `idle` slot takes the send button's place while there is nothing to
47556
+ * send**: the field is empty, `attached` is not set, and no reply is on its
47557
+ * way. Put the action an empty draft offers there, such as a button that
47558
+ * starts a voice conversation. The send button comes back as soon as there
47559
+ * is a draft. Where focus was on the one that goes, it moves to the one that
47560
+ * comes, so a keyboard reader stays in the same place.
47561
+ *
47562
+ * **What the draft carries goes in `attachments`**, inside the box and above
47563
+ * the field, such as thumbnails of attached images and cards for attached
47564
+ * files. The region takes no room while nothing is in it. A press on its
47565
+ * empty space keeps the reader in the field, and a press on a control in it,
47566
+ * such as a button that removes an attachment, goes to that control. Set
47567
+ * `attached` as well, so the send button shows for a draft with no text.
47568
+ *
46700
47569
  * ## Attributes & Properties
46701
47570
  *
46702
47571
  * Component attributes and properties that can be applied to the element or by using JavaScript.
46703
47572
  *
47573
+ * - `attached`: Whether the draft holds something besides its text, such as an attached
47574
+ * file. The draft then counts as one though the field is empty, so the
47575
+ * send button shows in place of the `idle` slot.
47576
+ * - `busy`: Whether a reply is on its way. While set, the send button is a stop
47577
+ * button that sends `helix-stop`, and the draft does not send.
47578
+ *
47579
+ * **The same button rather than one beside it**, because sending and
47580
+ * stopping are never both possible: while a reply is on its way there is
47581
+ * nothing to send to, and the place the reader's eye goes to act is the
47582
+ * place that can act. The field stays open for the next turn.
46704
47583
  * - `feedback`: A message about the draft, shown under the field. While set, the composer
46705
47584
  * is invalid, does not send, and does not submit, as a field's `feedback`
46706
47585
  * does, and the message is announced as it appears.
@@ -46709,12 +47588,28 @@ export type CustomElements<F extends Framework = "other"> = {
46709
47588
  * - `minlength`/`minLength`: The fewest characters a draft can have, once the reader has written in
46710
47589
  * the field, as on a `<textarea>`.
46711
47590
  * - `placeholder`: Placeholder text shown in an empty field.
47591
+ * - `queue`: Whether Enter sends while `busy`, for a page that queues the turn or
47592
+ * hands it to the reply under way.
47593
+ *
47594
+ * Off by default, because a page that does neither would drop the turn: it
47595
+ * has nowhere to put a message while a reply is coming. The button stays
47596
+ * the stop button either way, since stopping is still the one thing it
47597
+ * should do while a reply is on its way.
46712
47598
  * - `required`: Whether the form needs a draft to submit. An empty draft never sends,
46713
47599
  * required or not.
46714
47600
  * - `rows`: How many rows the field opens at.
46715
47601
  *
46716
47602
  * It grows from there.
47603
+ * - `send-disabled`/`sendDisabled`: Whether the draft waits to be sent, such as while an attachment is still
47604
+ * read. The send button is unavailable and Enter does not send, while the
47605
+ * field stays open. The stop button shown while `busy` still stops.
46717
47606
  * - `send-label`/`sendLabel`: Label for the send button.
47607
+ * - `send-reason`/`sendReason`: Why the draft waits, such as "Reading photo.jpg", shown in a tooltip on
47608
+ * the send button while `send-disabled` is set. The button then stays in
47609
+ * the tab order and takes the pointer, with `aria-disabled` in place of
47610
+ * `disabled`, so the reason can be reached by keyboard and by pointer, as
47611
+ * Button's `focusable-when-disabled` does. A press still sends nothing.
47612
+ * - `stop-label`/`stopLabel`: Label for the stop button shown while `busy`.
46718
47613
  * - `submit-on`/`submitOn`: What sends the turn: `enter` for the Enter key, or `button` for the send
46719
47614
  * button only.
46720
47615
  *
@@ -46759,6 +47654,22 @@ export type CustomElements<F extends Framework = "other"> = {
46759
47654
  * imperatively later, and nothing is hydrating by then.
46760
47655
  *
46761
47656
  * Here rather than on each control.
47657
+ * - `placeholders`: Examples the empty field shows in turn, in place of `placeholder`, such
47658
+ * as tasks a reader might ask for. Each shows for 6.5 seconds, and a longer
47659
+ * one shows longer, up to 10 seconds.
47660
+ *
47661
+ * **Each is the field's placeholder in its turn**, so a screen reader that
47662
+ * reaches the field hears the one showing. The swap runs through
47663
+ * `:state(example-leaving)`, as one example leaves, and
47664
+ * `:state(example-entering)`, as the next arrives.
47665
+ *
47666
+ * **They move only while nobody is about to write, and while the reader
47667
+ * can see them.** An empty field without focus moves on. Focus or text
47668
+ * holds the example showing, and an example already leaving finishes its
47669
+ * turn. A composer scrolled out of view holds its example, and the example
47670
+ * gets its full time again when the composer comes back. Where the reader
47671
+ * asked for less motion, or the page paused its motion, the first example
47672
+ * stays. (property only)
46762
47673
  * - `typing`: Whether the user is writing: true from their first keystroke until they
46763
47674
  * send, clear the field, or pause for `typing-timeout` milliseconds. (property only) (readonly)
46764
47675
  * - `speechEngine`: The engine this field listens through, in place of the one
@@ -46797,6 +47708,7 @@ export type CustomElements<F extends Framework = "other"> = {
46797
47708
  * - `helix-before-listen`: The dictation button was pressed. Cancelable: cancel it to keep the composer from listening.
46798
47709
  * - `helix-listen`: Dictation settled on a phrase and put it in the draft, after the draft's own `input`.
46799
47710
  * - `helix-send`: Fired when the user sends their turn, and cancelable.
47711
+ * - `helix-stop`: Fired when the user presses the stop button, shown in place of the send button while `busy` is set.
46800
47712
  * - `helix-typing`: The user started or stopped writing, with `typing` saying which, as the composer's `typing` does.
46801
47713
  * - `input`: The user changed the text. Read it from `value`, for a typing indicator or a saved draft. Bubbles and is composed, as a native field's is.
46802
47714
  *
@@ -46804,7 +47716,9 @@ export type CustomElements<F extends Framework = "other"> = {
46804
47716
  *
46805
47717
  * Areas where markup can be added to the component.
46806
47718
  *
47719
+ * - `attachments`: What the draft carries, such as images or files, inside the box and above the field.
46807
47720
  * - `end`: Content under the field, beside the send button.
47721
+ * - `idle`: A control shown in place of the send button while the draft is empty and no reply is on its way, such as a button that starts a voice conversation.
46808
47722
  * - `start`: Content under the field at the leading edge, such as an attachment button or a model picker.
46809
47723
  *
46810
47724
  * ## Methods
@@ -46870,12 +47784,24 @@ export type CustomElements<F extends Framework = "other"> = {
46870
47784
  *
46871
47785
  * Custom selectors for styling elements within the component.
46872
47786
  *
47787
+ * - `attachments`: The box around the `attachments` slot, above the field. It is hidden while the slot is empty.
46873
47788
  * - `composer`: The whole composer.
46874
47789
  * - `end`: The box around the `end` slot.
46875
47790
  * - `feedback`: The `feedback` message, under the field while it is set.
46876
47791
  * - `field`: The text field.
46877
- * - `mark`: The icon inside the send button.
46878
- * - `send`: The send button.
47792
+ * - `idle`: The box around the `idle` slot, shown in the send button's place while the draft is empty.
47793
+ * - `mark`: The icon inside the send button, a return key, or a square while `busy`.
47794
+ * - `reason-arrow`: The arrow of the bubble that says `send-reason`, forwarded from `Tooltip`.
47795
+ * - `reason-arrow-bottom`: The arrow while the bubble is below the send button, on the bubble's top edge. Set together with `reason-arrow`.
47796
+ * - `reason-arrow-left`: The arrow while the bubble is left of the send button, on the bubble's right edge. Set together with `reason-arrow`.
47797
+ * - `reason-arrow-right`: The arrow while the bubble is right of the send button, on the bubble's left edge. Set together with `reason-arrow`.
47798
+ * - `reason-arrow-top`: The arrow while the bubble is above the send button, on the bubble's bottom edge. Set together with `reason-arrow`.
47799
+ * - `reason-surface`: The bubble that says `send-reason` over the send button, forwarded from `Tooltip`.
47800
+ * - `reason-surface-bottom`: The bubble while it is below the send button. Set together with `reason-surface`.
47801
+ * - `reason-surface-left`: The bubble while it is left of the send button. Set together with `reason-surface`.
47802
+ * - `reason-surface-right`: The bubble while it is right of the send button. Set together with `reason-surface`.
47803
+ * - `reason-surface-top`: The bubble while it is above the send button. Set together with `reason-surface`.
47804
+ * - `send`: The send button, which is the stop button while `busy`.
46879
47805
  * - `start`: The box around the `start` slot.
46880
47806
  * - `tools`: The row under the field.
46881
47807
  * - `voice`: The dictation button, under `voice`, before the send button.
@@ -46886,6 +47812,8 @@ export type CustomElements<F extends Framework = "other"> = {
46886
47812
  *
46887
47813
  * These can be used to apply styling when a component is in a given state.
46888
47814
  *
47815
+ * - `example-entering`: The example in the empty field has just replaced the one before it, for an entrance. It holds for 350 milliseconds. See `placeholders`.
47816
+ * - `example-leaving`: The example in the empty field is giving way to the next one, for an exit. It holds for 250 milliseconds, and the next example becomes the placeholder 100 milliseconds in, so the two can cross. See `placeholders`.
46889
47817
  * - `invalid`: The draft fails `required`, `minlength`, `maxlength`, or a custom error, and the reader has tried to send or submit it, or edited the field and left it. Or `feedback` is set.
46890
47818
  * - `listening`: While the composer listens for dictation. The element sets `--dictation-level` on itself meanwhile, from 0 to 1, for a meter.
46891
47819
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
@@ -46912,6 +47840,11 @@ export type CustomElements<F extends Framework = "other"> = {
46912
47840
  * a page in another language sets them once there. The time moves on by
46913
47841
  * itself, so "now" becomes "1 minute ago" while the page is open.
46914
47842
  *
47843
+ * **What a turn carries goes in `attachments`**, above the bubble rather
47844
+ * in it: a picture inside a tinted bubble is framed twice, and one sent with
47845
+ * no words is an empty bubble around it. It sits against the same edge as the
47846
+ * turn, and the words keep their bubble under it.
47847
+ *
46915
47848
  * **An agent's work goes in `work`, and its answer in the content.** The work,
46916
47849
  * its thinking, the commands it ran and what they printed, is a record read
46917
47850
  * the way a log is, so a `Log` with `separation="plain"` and `quiet` sits there
@@ -46983,6 +47916,7 @@ export type CustomElements<F extends Framework = "other"> = {
46983
47916
  *
46984
47917
  * - `(default)`: The turn's content.
46985
47918
  * - `actions`: Controls for the turn, such as copy, retry, or react.
47919
+ * - `attachments`: What the turn carries, such as images or files, above its content and outside the bubble, against the author's edge.
46986
47920
  * - `avatar`: The author's avatar.
46987
47921
  * - `indicator`: The indicator shown before the first token arrives. Defaults to the typing indicator.
46988
47922
  * - `sources`: The turn's sources, such as citations, documents, or a retrieved page.
@@ -46993,6 +47927,7 @@ export type CustomElements<F extends Framework = "other"> = {
46993
47927
  * Custom selectors for styling elements within the component.
46994
47928
  *
46995
47929
  * - `actions`: The controls on the turn, beside its time.
47930
+ * - `attachments`: The box around the `attachments` slot, above the content and outside the bubble.
46996
47931
  * - `avatar`: The box around the `avatar` slot.
46997
47932
  * - `body`: The content and the line under it.
46998
47933
  * - `content`: Your own markup.
@@ -47254,6 +48189,7 @@ export type CustomElements<F extends Framework = "other"> = {
47254
48189
  * - `log`: The transcript, which scrolls. On this tier, it needs only a block size.
47255
48190
  * - `message`: The message drawn for a turn from `turns`, forwarded whole.
47256
48191
  * - `message-actions`: The controls on a turn from `turns`, beside its time.
48192
+ * - `message-attachments`: The attachments above the bubble of a turn from `turns`.
47257
48193
  * - `message-avatar`: The avatar box of a turn from `turns`.
47258
48194
  * - `message-avatar-mine`: The avatar box of a turn from `turns` by `me`.
47259
48195
  * - `message-body`: The content of a turn from `turns`, and the line under it.
@@ -48289,6 +49225,7 @@ export type CustomElements<F extends Framework = "other"> = {
48289
49225
  *
48290
49226
  * - `change`: The reader finished an edit and focus left the code, in the engine or the plain field.
48291
49227
  * - `helix-before-change`: The text is about to change. Cancelable: cancel it to keep the current text.
49228
+ * - `helix-found`: The find bar searched or moved among the matches, with `count` and the selected match's `index`, counting from 0, or -1 for none.
48292
49229
  * - `input`: Fired after the text changes.
48293
49230
  *
48294
49231
  * ## Slots
@@ -48381,9 +49318,9 @@ export type CustomElements<F extends Framework = "other"> = {
48381
49318
  * - `diagnostics`: The list of problems under the code, while there are any.
48382
49319
  * - `feedback`: The message that says what is wrong.
48383
49320
  * - `field`: The frame around the header, the code, the problems and the status line.
48384
- * - `find`: The button in the header that opens the find bar.
48385
- * - `find-bar`: The find bar under the header, while it is open.
48386
- * - `find-button`: The Find button's inner button.
49321
+ * - `find`: The find bar under the header, where the reader searches the code: a Find of its own.
49322
+ * - `find-actions`: The find bar's `actions` slot, which the editor fills with nothing.
49323
+ * - `find-bar`: The find bar's strip: the replace toggle, the field, the count, the toolbar, and the replace row while it shows.
48387
49324
  * - `find-close`: The button that closes the find bar.
48388
49325
  * - `find-close-button`: The close button's inner button.
48389
49326
  * - `find-close-live`: The close button's live region, which speaks while the button is pending.
@@ -48393,10 +49330,11 @@ export type CustomElements<F extends Framework = "other"> = {
48393
49330
  * - `find-controls-toolbar`: The box inside the find bar's toolbar that lays its buttons out.
48394
49331
  * - `find-count`: Which match is selected, of how many.
48395
49332
  * - `find-field`: The field the search is typed in.
48396
- * - `find-live`: The Find button's live region, which speaks while the button is pending.
49333
+ * - `find-live`: The find bar's live region, which says the count as it changes.
48397
49334
  * - `find-match-case`: The option that finds only the same case. Pressed while it applies.
48398
49335
  * - `find-match-case-button`: The match case button's inner button.
48399
49336
  * - `find-match-case-live`: The match case button's live region, which speaks while the button is pending.
49337
+ * - `find-match-case-pressed`: The match case option while it applies, beside `find-match-case`.
48400
49338
  * - `find-match-case-spinner`: The ring the match case button turns while it is pending.
48401
49339
  * - `find-match-case-text`: The box the match case button's icon sits in.
48402
49340
  * - `find-next`: The button that selects the next match.
@@ -48412,18 +49350,34 @@ export type CustomElements<F extends Framework = "other"> = {
48412
49350
  * - `find-regex`: The option that reads the search as a regular expression. Pressed while it applies.
48413
49351
  * - `find-regex-button`: The regular expression button's inner button.
48414
49352
  * - `find-regex-live`: The regular expression button's live region, which speaks while the button is pending.
49353
+ * - `find-regex-pressed`: The regular expression option while it applies, beside `find-regex`.
48415
49354
  * - `find-regex-spinner`: The ring the regular expression button turns while it is pending.
48416
49355
  * - `find-regex-text`: The box the regular expression button's icon sits in.
48417
- * - `find-replace`: The button that shows the replace field under the find field. Expanded while it shows.
48418
- * - `find-replace-button`: The find and replace button's inner button.
48419
- * - `find-replace-live`: The find and replace button's live region, which speaks while the button is pending.
48420
- * - `find-replace-spinner`: The ring the find and replace button turns while it is pending.
48421
- * - `find-replace-text`: The box the find and replace button's icon sits in.
48422
- * - `find-spinner`: The ring the Find button turns while it is pending.
48423
- * - `find-text`: The box the Find button's icon sits in.
49356
+ * - `find-replace`: The button that replaces the selected match.
49357
+ * - `find-replace-all`: The button that replaces every match.
49358
+ * - `find-replace-all-button`: The Replace all button's inner button.
49359
+ * - `find-replace-all-live`: The Replace all button's live region, which speaks while the button is pending.
49360
+ * - `find-replace-all-spinner`: The ring the Replace all button turns while it is pending.
49361
+ * - `find-replace-all-text`: The box the Replace all button's words sits in.
49362
+ * - `find-replace-button`: The Replace button's inner button.
49363
+ * - `find-replace-field`: The field the replacement is typed in.
49364
+ * - `find-replace-live`: The Replace button's live region, which speaks while the button is pending.
49365
+ * - `find-replace-spinner`: The ring the Replace button turns while it is pending.
49366
+ * - `find-replace-text`: The box the Replace button's words sits in.
49367
+ * - `find-replace-toggle`: The button that shows the replace field under the find field. Expanded while it shows. Not drawn while `readonly`.
49368
+ * - `find-replace-toggle-button`: The find and replace button's inner button.
49369
+ * - `find-replace-toggle-live`: The find and replace button's live region, which speaks while the button is pending.
49370
+ * - `find-replace-toggle-spinner`: The ring the find and replace button turns while it is pending.
49371
+ * - `find-replace-toggle-text`: The box the find and replace button's icon sits in.
49372
+ * - `find-toggle`: The button in the header that opens and closes the find bar. Expanded while it is open.
49373
+ * - `find-toggle-button`: The Find button's inner button.
49374
+ * - `find-toggle-live`: The Find button's live region, which speaks while the button is pending.
49375
+ * - `find-toggle-spinner`: The ring the Find button turns while it is pending.
49376
+ * - `find-toggle-text`: The box the Find button's icon sits in.
48424
49377
  * - `find-whole-word`: The option that finds only whole words. Pressed while it applies.
48425
49378
  * - `find-whole-word-button`: The whole word button's inner button.
48426
49379
  * - `find-whole-word-live`: The whole word button's live region, which speaks while the button is pending.
49380
+ * - `find-whole-word-pressed`: The whole word option while it applies, beside `find-whole-word`.
48427
49381
  * - `find-whole-word-spinner`: The ring the whole word button turns while it is pending.
48428
49382
  * - `find-whole-word-text`: The box the whole word button's icon sits in.
48429
49383
  * - `header`: The strip above the code: the name, the language, and the controls.
@@ -48432,17 +49386,6 @@ export type CustomElements<F extends Framework = "other"> = {
48432
49386
  * - `language`: The language's name in the header.
48433
49387
  * - `position`: The caret's line and column, in the status line.
48434
49388
  * - `problem-count`: How many problems there are, in the status line.
48435
- * - `replace`: The button that replaces the selected match.
48436
- * - `replace-all`: The button that replaces every match.
48437
- * - `replace-all-button`: The Replace all button's inner button.
48438
- * - `replace-all-live`: The Replace all button's live region, which speaks while the button is pending.
48439
- * - `replace-all-spinner`: The ring the Replace all button turns while it is pending.
48440
- * - `replace-all-text`: The box the Replace all button's words sit in.
48441
- * - `replace-button`: The Replace button's inner button.
48442
- * - `replace-field`: The field the replacement is typed in.
48443
- * - `replace-live`: The Replace button's live region, which speaks while the button is pending.
48444
- * - `replace-spinner`: The ring the Replace button turns while it is pending.
48445
- * - `replace-text`: The box the Replace button's words sit in.
48446
49389
  * - `status`: The strip under the code.
48447
49390
  * - `view`: Where an engine draws, while one is connected.
48448
49391
  *
@@ -48453,7 +49396,6 @@ export type CustomElements<F extends Framework = "other"> = {
48453
49396
  * - `connected`: An engine draws the editor.
48454
49397
  * - `find-open`: The find bar is open.
48455
49398
  * - `invalid`: The editor has an error to show, from `required` or your `feedback`.
48456
- * - `replace-open`: The replace field shows under the find field.
48457
49399
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
48458
49400
  */
48459
49401
  "helix-headless-code-editor": Partial<
@@ -50425,6 +51367,20 @@ export type CustomElements<F extends Framework = "other"> = {
50425
51367
  * It replaces `Button.value`, the submit value: a copy button never submits,
50426
51368
  * whatever its `type`. Declared here so its own page says what it holds.
50427
51369
  * - `aria-label`/`undefined`: undefined
51370
+ * - `focusable-when-disabled`/`focusableWhenDisabled`: Whether a disabled button stays in the tab order, so a tooltip around it
51371
+ * can say why it is disabled.
51372
+ *
51373
+ * Set it on a button whose reason a Tooltip gives, such as a Save with no
51374
+ * changes to save. While the button is disabled, it keeps focus and takes
51375
+ * hover, and it refuses every press: a click, Enter and Space, and Enter in
51376
+ * a field of its form. The click does not reach your listeners, and a submit
51377
+ * button submits nothing. The inner control carries `aria-disabled` in place
51378
+ * of the native `disabled`, so a screen reader still says it is unavailable.
51379
+ * The styled button keeps the disabled look.
51380
+ *
51381
+ * Leave it unset on a button with no reason to give. A plain disabled button
51382
+ * leaves the tab order, as a native one does, and a keyboard reader skips a
51383
+ * stop that does nothing. Set `pending` for the wait after a press.
50428
51384
  * - `pending`: Whether the action the button started is still running.
50429
51385
  *
50430
51386
  * A pending button keeps focus and stays in the tab order, and refuses every
@@ -52504,6 +53460,16 @@ export type CustomElements<F extends Framework = "other"> = {
52504
53460
  * - `screenshot-live`: The screenshot button's live region, which speaks while the button is pending.
52505
53461
  * - `screenshot-spinner`: The ring the screenshot button turns while it is pending.
52506
53462
  * - `screenshot-text`: The box the screenshot button's icon sits in.
53463
+ * - `tooltip-arrow`: The arrow of the tooltip that names each button, forwarded from `Tooltip`.
53464
+ * - `tooltip-arrow-bottom`: The arrow while the bubble is below its button, on the bubble's top edge. Set together with `tooltip-arrow`.
53465
+ * - `tooltip-arrow-left`: The arrow while the bubble is left of its button, on the bubble's right edge. Set together with `tooltip-arrow`.
53466
+ * - `tooltip-arrow-right`: The arrow while the bubble is right of its button, on the bubble's left edge. Set together with `tooltip-arrow`.
53467
+ * - `tooltip-arrow-top`: The arrow while the bubble is above its button, on the bubble's bottom edge. Set together with `tooltip-arrow`.
53468
+ * - `tooltip-surface`: The bubble of the tooltip that names each button, forwarded from `Tooltip`.
53469
+ * - `tooltip-surface-bottom`: The bubble while it is below its button. Set together with `tooltip-surface`.
53470
+ * - `tooltip-surface-left`: The bubble while it is left of its button. Set together with `tooltip-surface`.
53471
+ * - `tooltip-surface-right`: The bubble while it is right of its button. Set together with `tooltip-surface`.
53472
+ * - `tooltip-surface-top`: The bubble while it is above its button. Set together with `tooltip-surface`.
52507
53473
  * - `touch`: A ring where a touch is or was.
52508
53474
  * - `touch-held`: A ring under a finger that is down, beside `touch`, with `show-touches`.
52509
53475
  * - `volume-down`: The Volume down button.
@@ -55108,6 +56074,223 @@ export type CustomElements<F extends Framework = "other"> = {
55108
56074
  BaseEvents<HelixHeadlessFilterInput>
55109
56075
  >;
55110
56076
 
56077
+ /**
56078
+ * Searches the content `for` names, by id, and marks every match, with the
56079
+ * current one marked apart. The count says which match is current and how many
56080
+ * there are. Find opens with Command+F, or Control+F on Windows and Linux,
56081
+ * while the reader is in that content or in the bar. Everywhere else on the
56082
+ * page, the key opens the browser's own find. `shortcut` changes the key, and
56083
+ * empty turns it off.
56084
+ *
56085
+ * The match case, whole word, and regular expression options are drawn in the
56086
+ * bar. `options` names the ones it draws. Text that is not shown is not
56087
+ * searched, nor text under `inert` or `aria-hidden="true"`, nor what `skip`
56088
+ * matches. Text under `hidden="until-found"` and in a closed `<details>` is
56089
+ * searched, and opened when its match becomes current, as the browser's find
56090
+ * opens it: an Accordion section opens. A match is scrolled into the middle of
56091
+ * what scrolls it unless it is already in sight. While Find is open, a change
56092
+ * to the content searches again once the content is still.
56093
+ *
56094
+ * Content drawn some other way, such as a terminal's grid, an editor's
56095
+ * document, or rows of a list that are not all in the page, is searched by a
56096
+ * finder the page attaches with `attach(finder)`. Terminal and Code Editor
56097
+ * draw a Find of their own, which searches through their renderer. Find offers
56098
+ * replacing to a finder that can replace, unless `readonly` is set.
56099
+ *
56100
+ * The bar is a search landmark named by `label`. The count is said in a live
56101
+ * region as it changes.
56102
+ *
56103
+ * **Keyboard.** In the field, Enter moves to the next match and Shift+Enter to
56104
+ * the previous one. Escape closes the bar from anywhere in it, and focus
56105
+ * returns to where it was before the bar opened. The find key pressed again
56106
+ * moves focus to the field and selects what it holds. In the replace field,
56107
+ * Enter replaces the current match, and Command+Enter or Control+Enter
56108
+ * replaces every match.
56109
+ *
56110
+ * ## Attributes & Properties
56111
+ *
56112
+ * Component attributes and properties that can be applied to the element or by using JavaScript.
56113
+ *
56114
+ * - `close-label`/`closeLabel`: The close button's label.
56115
+ * - `controls-label`/`controlsLabel`: The name of the bar's toolbar, read by screen readers.
56116
+ * - `for`: The id of the element whose text Find searches, in the same tree as Find.
56117
+ * With a finder attached, it names only where the find key opens the bar.
56118
+ * - `invalid-label`/`invalidLabel`: What the count says when the regular expression cannot be read.
56119
+ * - `label`: The field's name and placeholder, and the name of the bar.
56120
+ * - `match-case`/`matchCase`: Whether case has to match, so "Error" does not find "error". The reader turns it on and off from the bar.
56121
+ * - `match-case-label`/`matchCaseLabel`: The match case button's label.
56122
+ * - `matches-label`/`matchesLabel`: What the count says of the matches. `{index}` is the current match,
56123
+ * counting from 1, and `{count}` how many there are.
56124
+ * - `next-label`/`nextLabel`: The next match button's label.
56125
+ * - `options`: Which options the bar draws, as a list of `match-case`, `whole-word`, and
56126
+ * `regex`, or `none`. They are always drawn in that order.
56127
+ * - `previous-label`/`previousLabel`: The previous match button's label.
56128
+ * - `query`: What the field holds: what the reader typed, or what you set.
56129
+ * - `readonly`/`readOnly`: Hides replacing, for content the reader cannot change. The attribute is `readonly`, the platform's spelling.
56130
+ * - `regex`: Whether the field reads as a regular expression, in JavaScript's syntax. The reader turns it on and off from the bar.
56131
+ * - `regex-label`/`regexLabel`: The regular expression button's label.
56132
+ * - `replace-all-label`/`replaceAllLabel`: The Replace all button's words.
56133
+ * - `replace-field-label`/`replaceFieldLabel`: The replace field's name and placeholder.
56134
+ * - `replace-label`/`replaceLabel`: The Replace button's words.
56135
+ * - `replacement`: What the replace field holds, which Replace puts in place of a match.
56136
+ * - `replace-toggle-label`/`replaceToggleLabel`: The label of the button that shows the replace row.
56137
+ * - `shortcut`: The key that opens the bar, as a chord such as `mod+f`, where `mod` is
56138
+ * Command on an Apple keyboard and Control elsewhere. Empty turns the key
56139
+ * off, as for a bar the page opens itself.
56140
+ * - `skip`: Elements inside the content whose text is not searched, as a selector,
56141
+ * such as line numbers or the buttons beside each message.
56142
+ * - `whole-word`/`wholeWord`: Whether only whole words match. The reader turns it on and off from the bar.
56143
+ * - `whole-word-label`/`wholeWordLabel`: The whole word button's label.
56144
+ * - `default-open`/`defaultOpen`: Whether the element starts open. Ignored once `open` is written.
56145
+ * - `open`: Whether the element is open.
56146
+ *
56147
+ * One property, not two, so `dialog.open` answers the question anyone
56148
+ * asking it meant. Writing always applies; `<helix-dialog open>` is the
56149
+ * same statement in markup.
56150
+ *
56151
+ * **Not reflected, and that is required rather than tidy.** Reflection
56152
+ * writes the resolved state back as an attribute, so an element that opened
56153
+ * itself would put `open` on its own host: cloned, serialized for
56154
+ * hydration, or diffed by a framework, it comes back holding whatever the
56155
+ * last reader did rather than what the author wrote. `:state(open)` carries
56156
+ * the resolved state for stylesheets, which is what the mirror is for.
56157
+ * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
56158
+ *
56159
+ * **Named `whenSettled` because `settled` is taken four times over**, by
56160
+ * Image, Splitter and both color controls, none of them about transitions. A
56161
+ * base class takes the name every subclass then cannot use.
56162
+ *
56163
+ * **The state it reports cannot be watched, which is why this exists.** A
56164
+ * custom state is deliberately not in the DOM, so there is no
56165
+ * `MutationObserver` equivalent for `ElementInternals.states`. Await this
56166
+ * instead.
56167
+ *
56168
+ * Separate from `updateComplete`, which resolves in the microtask checkpoint
56169
+ * the suppression is still active in. That is the distinction `readyToMove`
56170
+ * in `@fusion.dev/helix-testing` is written around.
56171
+ *
56172
+ * It never resolves where `requestAnimationFrame` never fires, which is a
56173
+ * server, a hidden tab, and happy-dom. Callers that must not hang there race
56174
+ * it against a timeout, as the happy-dom harness's `readyToMove` does. The
56175
+ * browser harness's awaits it alone: a browser always runs the frame, and a
56176
+ * timer beside it was a bet on how long one takes, which a busy run lost. (property only) (readonly)
56177
+ *
56178
+ * ## Events
56179
+ *
56180
+ * Events that will be emitted by the component.
56181
+ *
56182
+ * - `helix-before-close`: Fired before the bar closes, and cancelable.
56183
+ * - `helix-before-open`: Fired before the bar opens, and cancelable. Canceling it keeps the bar closed.
56184
+ * - `helix-found`: Sent after each search and each move among the matches, with `count` and the current match's `index`, counting from 0, or -1 for none.
56185
+ * - `toggle`: Sent when the bar opens or closes, with `newState` and `oldState`.
56186
+ *
56187
+ * ## Slots
56188
+ *
56189
+ * Areas where markup can be added to the component.
56190
+ *
56191
+ * - `actions`: Controls of your own in the bar's toolbar, between its options and the buttons that move between matches.
56192
+ * - `close-icon`: Replaces the glyph inside the close button.
56193
+ * - `match-case-icon`: Replaces the glyph inside the match case button.
56194
+ * - `next-icon`: Replaces the glyph inside the next match button.
56195
+ * - `previous-icon`: Replaces the glyph inside the previous match button.
56196
+ * - `regex-icon`: Replaces the glyph inside the regular expression button.
56197
+ * - `whole-word-icon`: Replaces the glyph inside the whole word button.
56198
+ *
56199
+ * ## Methods
56200
+ *
56201
+ * Methods that can be called to access component functionality.
56202
+ *
56203
+ * - `attach(finder: Finder) => FindSink`: Searches with `finder` in place of the text finder, and returns how it
56204
+ * reports a search it finishes later. Attaching another lets go of this one.
56205
+ * - `show() => Promise<void>`: Opens the bar and puts focus in its field, with what it holds selected.
56206
+ * Text selected in the content, on one line, becomes the search.
56207
+ * - `hide() => void`: Closes the bar and takes the marks away. Focus in the bar returns to where it was before the bar opened.
56208
+ * - `next() => void`: Moves to the next match, after the last one to the first.
56209
+ * - `previous() => void`: Moves to the previous match, before the first one to the last.
56210
+ * - `refresh() => void`: Searches again, staying on the current match where it still matches, for content changed in a way Find cannot see.
56211
+ * - `requestOpen(next: boolean) => boolean`: Requests that the element open or close, and returns whether the change
56212
+ * was applied.
56213
+ *
56214
+ * Announces before it acts, so `preventDefault()` on the `helix-before-open` or
56215
+ * `helix-before-close` is a refusal and nothing moves. Nobody refusing means the
56216
+ * element opens or closes itself, whether or not a consumer declared
56217
+ * `open`: a declared property is a seed and a correction, and a consumer
56218
+ * who wants the decision for themselves refuses it and assigns their own.
56219
+ * - `toggleOpen() => boolean`: Requests the opposite of the current state.
56220
+ *
56221
+ * ## CSS Parts
56222
+ *
56223
+ * Custom selectors for styling elements within the component.
56224
+ *
56225
+ * - `actions`: The `actions` slot, in the toolbar.
56226
+ * - `bar`: The bar, a search landmark: the field, the count, the toolbar, and the replace row while it shows.
56227
+ * - `close`: The button that closes the bar.
56228
+ * - `close-button`: The close button's inner button.
56229
+ * - `close-live`: The close button's live region, which speaks while the button is pending.
56230
+ * - `close-spinner`: The ring the close button turns while it is pending.
56231
+ * - `close-text`: The box the close button's icon sits in.
56232
+ * - `controls`: The toolbar: the options, your actions, and the buttons that move between matches and close the bar.
56233
+ * - `controls-toolbar`: The box inside the toolbar that lays its buttons out.
56234
+ * - `count`: Which match is current and how many there are, such as "3 of 12 matches".
56235
+ * - `field`: The search field.
56236
+ * - `live`: The live region that says the count as it changes.
56237
+ * - `match-case`: The button that matches case. Pressed while it does.
56238
+ * - `match-case-button`: The match case button's inner button.
56239
+ * - `match-case-live`: The match case button's live region, which speaks while the button is pending.
56240
+ * - `match-case-pressed`: The match case button while case has to match, beside `match-case`.
56241
+ * - `match-case-spinner`: The ring the match case button turns while it is pending.
56242
+ * - `match-case-text`: The box the match case button's icon sits in.
56243
+ * - `next`: The button that moves to the next match.
56244
+ * - `next-button`: The next match button's inner button.
56245
+ * - `next-live`: The next match button's live region, which speaks while the button is pending.
56246
+ * - `next-spinner`: The ring the next match button turns while it is pending.
56247
+ * - `next-text`: The box the next match button's icon sits in.
56248
+ * - `previous`: The button that moves to the previous match.
56249
+ * - `previous-button`: The previous match button's inner button.
56250
+ * - `previous-live`: The previous match button's live region, which speaks while the button is pending.
56251
+ * - `previous-spinner`: The ring the previous match button turns while it is pending.
56252
+ * - `previous-text`: The box the previous match button's icon sits in.
56253
+ * - `regex`: The button that reads the field as a regular expression. Pressed while it does.
56254
+ * - `regex-button`: The regular expression button's inner button.
56255
+ * - `regex-live`: The regular expression button's live region, which speaks while the button is pending.
56256
+ * - `regex-pressed`: The regular expression button while the field reads as one, beside `regex`.
56257
+ * - `regex-spinner`: The ring the regular expression button turns while it is pending.
56258
+ * - `regex-text`: The box the regular expression button's icon sits in.
56259
+ * - `replace`: The button that replaces the current match.
56260
+ * - `replace-all`: The button that replaces every match.
56261
+ * - `replace-all-button`: The Replace all button's inner button.
56262
+ * - `replace-all-live`: The Replace all button's live region, which speaks while the button is pending.
56263
+ * - `replace-all-spinner`: The ring the Replace all button turns while it is pending.
56264
+ * - `replace-all-text`: The box the Replace all button's words sit in.
56265
+ * - `replace-button`: The Replace button's inner button.
56266
+ * - `replace-field`: The field the replacement is typed in.
56267
+ * - `replace-live`: The Replace button's live region, which speaks while the button is pending.
56268
+ * - `replace-spinner`: The ring the Replace button turns while it is pending.
56269
+ * - `replace-text`: The box the Replace button's words sit in.
56270
+ * - `replace-toggle`: The button that shows the replace row. Expanded while it shows.
56271
+ * - `replace-toggle-button`: The replace toggle's inner button.
56272
+ * - `replace-toggle-live`: The replace toggle's live region, which speaks while the button is pending.
56273
+ * - `replace-toggle-spinner`: The ring the replace toggle turns while it is pending.
56274
+ * - `replace-toggle-text`: The box the replace toggle's icon sits in.
56275
+ * - `whole-word`: The button that matches whole words only. Pressed while it does.
56276
+ * - `whole-word-button`: The whole word button's inner button.
56277
+ * - `whole-word-live`: The whole word button's live region, which speaks while the button is pending.
56278
+ * - `whole-word-pressed`: The whole word button while only whole words match, beside `whole-word`.
56279
+ * - `whole-word-spinner`: The ring the whole word button turns while it is pending.
56280
+ * - `whole-word-text`: The box the whole word button's icon sits in.
56281
+ *
56282
+ * ## CSS States
56283
+ *
56284
+ * These can be used to apply styling when a component is in a given state.
56285
+ *
56286
+ * - `open`: While the bar is open.
56287
+ * - `replace-open`: While the replace row shows.
56288
+ * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
56289
+ */
56290
+ "helix-headless-find": Partial<
56291
+ HelixHeadlessFindProps & BaseProps<HelixHeadlessFind, F> & BaseEvents<HelixHeadlessFind>
56292
+ >;
56293
+
55111
56294
  /**
55112
56295
  * Formats a date with `Intl` where it is shown, so you do not write the same
55113
56296
  * `Intl` call and options in your own code.
@@ -55675,6 +56858,16 @@ export type CustomElements<F extends Framework = "other"> = {
55675
56858
  * - `settling`: What is said while a layout runs unseen, where the reader asked for less motion or the page paused its motion, over the hidden drawing.
55676
56859
  * - `stage`: The drawing and its controls.
55677
56860
  * - `stop-layout`: The button that stops a layout that has run past five seconds, where the notes stand.
56861
+ * - `tooltip-arrow`: The arrow of the tooltip that names each button, forwarded from `Tooltip`.
56862
+ * - `tooltip-arrow-bottom`: The arrow while the bubble is below its button, on the bubble's top edge. Set together with `tooltip-arrow`.
56863
+ * - `tooltip-arrow-left`: The arrow while the bubble is left of its button, on the bubble's right edge. Set together with `tooltip-arrow`.
56864
+ * - `tooltip-arrow-right`: The arrow while the bubble is right of its button, on the bubble's left edge. Set together with `tooltip-arrow`.
56865
+ * - `tooltip-arrow-top`: The arrow while the bubble is above its button, on the bubble's bottom edge. Set together with `tooltip-arrow`.
56866
+ * - `tooltip-surface`: The bubble of the tooltip that names each button, forwarded from `Tooltip`.
56867
+ * - `tooltip-surface-bottom`: The bubble while it is below its button. Set together with `tooltip-surface`.
56868
+ * - `tooltip-surface-left`: The bubble while it is left of its button. Set together with `tooltip-surface`.
56869
+ * - `tooltip-surface-right`: The bubble while it is right of its button. Set together with `tooltip-surface`.
56870
+ * - `tooltip-surface-top`: The bubble while it is above its button. Set together with `tooltip-surface`.
55678
56871
  * - `viewport`: The box the renderer draws in.
55679
56872
  * - `zoom-in`: The zoom in button.
55680
56873
  * - `zoom-in-button`: `zoom-in`'s inner button.
@@ -56177,6 +57370,20 @@ export type CustomElements<F extends Framework = "other"> = {
56177
57370
  * name to derive one rather than dash-casing it, and what a consumer writes
56178
57371
  * is the platform's `commandfor`.
56179
57372
  * - `commandfor`/`commandFor`: The id of the element the command is sent to.
57373
+ * - `focusable-when-disabled`/`focusableWhenDisabled`: Whether a disabled button stays in the tab order, so a tooltip around it
57374
+ * can say why it is disabled.
57375
+ *
57376
+ * Set it on a button whose reason a Tooltip gives, such as a Save with no
57377
+ * changes to save. While the button is disabled, it keeps focus and takes
57378
+ * hover, and it refuses every press: a click, Enter and Space, and Enter in
57379
+ * a field of its form. The click does not reach your listeners, and a submit
57380
+ * button submits nothing. The inner control carries `aria-disabled` in place
57381
+ * of the native `disabled`, so a screen reader still says it is unavailable.
57382
+ * The styled button keeps the disabled look.
57383
+ *
57384
+ * Leave it unset on a button with no reason to give. A plain disabled button
57385
+ * leaves the tab order, as a native one does, and a keyboard reader skips a
57386
+ * stop that does nothing. Set `pending` for the wait after a press.
56180
57387
  * - `formaction`/`formAction`: Where this button's submission goes, overriding the form's own.
56181
57388
  *
56182
57389
  * **The five `form*` overrides ride on a native submit button that stands in
@@ -56753,6 +57960,9 @@ export type CustomElements<F extends Framework = "other"> = {
56753
57960
  *
56754
57961
  * Empty leaves the attribute off, which is the browser's default. Set it to
56755
57962
  * a token like `email` or `bday` to ask for autofill, or to `off` to refuse.
57963
+ * - `autocorrect`: Whether the browser corrects words as the reader types, as the platform's
57964
+ * `autocorrect`. Turn it off, with `autocorrect="off"`, for text that is not
57965
+ * prose, such as an address or a code, which corrections would change.
56756
57966
  * - `clearable`: Whether the field shows a button that empties it.
56757
57967
  *
56758
57968
  * Shown only while there is something to clear, because a control that does
@@ -57415,7 +58625,8 @@ export type CustomElements<F extends Framework = "other"> = {
57415
58625
  *
57416
58626
  * Set `controls` for the viewer's own previous, next and close controls, named
57417
58627
  * by `previous-label`, `next-label` and `dismiss-label`, whose glyphs you can
57418
- * replace in the `previous-icon`, `next-icon` and `dismiss-icon` slots. Without
58628
+ * replace in the `previous-icon`, `next-icon` and `dismiss-icon` slots. A set
58629
+ * of one item has nothing to step to, so it draws no previous, next or counter. Without
57419
58630
  * it, compose the chrome yourself in the `header` and `footer` slots, with
57420
58631
  * buttons that send `--previous`, `--next` and `--close`.
57421
58632
  *
@@ -59045,7 +60256,9 @@ export type CustomElements<F extends Framework = "other"> = {
59045
60256
  * the heading, as you write it, such as `12s`.
59046
60257
  *
59047
60258
  * A group starts shut. Write `default-open` on the step a reader should see,
59048
- * such as the one that failed.
60259
+ * such as the one that failed. A shut group's lines are hidden until found:
60260
+ * the browser's find and Find search them, and the group opens on the one
60261
+ * that holds the match, unless `helix-before-open` is canceled.
59049
60262
  *
59050
60263
  * ## Attributes & Properties
59051
60264
  *
@@ -59123,7 +60336,7 @@ export type CustomElements<F extends Framework = "other"> = {
59123
60336
  *
59124
60337
  * Custom selectors for styling elements within the component.
59125
60338
  *
59126
- * - `content`: The lines, hidden while the group is shut.
60339
+ * - `content`: The lines, hidden until found while the group is shut.
59127
60340
  * - `duration`: How long the step took.
59128
60341
  * - `heading`: The heading.
59129
60342
  * - `mark`: The caret that turns as the group opens, an `<svg>` you size.
@@ -59134,7 +60347,9 @@ export type CustomElements<F extends Framework = "other"> = {
59134
60347
  *
59135
60348
  * These can be used to apply styling when a component is in a given state.
59136
60349
  *
60350
+ * - `empty`: The group holds nothing to show, so opening it shows nothing.
59137
60351
  * - `open`: The group shows its lines.
60352
+ * - `steps`: The group holds steps of its own, which a stylesheet draws as a tree.
59138
60353
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
59139
60354
  */
59140
60355
  "helix-headless-log-group": Partial<
@@ -59322,7 +60537,9 @@ export type CustomElements<F extends Framework = "other"> = {
59322
60537
  * stream ends.
59323
60538
  * - `done-label`/`doneLabel`: What a screen reader hears when the run is over.
59324
60539
  * - `dropped-label`/`droppedLabel`: What the line above the log says once `limit` has let lines go. `{count}` is how many.
59325
- * - `empty-text`/`emptyText`: The text shown and announced when the log has no lines.
60540
+ * - `empty-text`/`emptyText`: The text shown and announced when the log has no lines and no steps. A
60541
+ * step with nothing in it yet, such as one still `pending`, is its heading
60542
+ * alone, so a log holding one says nothing.
59326
60543
  * - `error-label`/`errorLabel`: What a screen reader hears when lines at `error` arrive. `{count}` is how
59327
60544
  * many arrived together and `{text}` is the first of them.
59328
60545
  * - `fallback-label`/`fallbackLabel`: The log's name, read by screen readers, where `label` is empty.
@@ -59480,7 +60697,7 @@ export type CustomElements<F extends Framework = "other"> = {
59480
60697
  * - `after`: The space the rows below the drawn ones would take. Only for lines drawn from data.
59481
60698
  * - `before`: The space the rows above the drawn ones would take. Only for lines drawn from data.
59482
60699
  * - `dropped`: The line above the log that says how many earlier lines `limit` let go.
59483
- * - `empty`: Shown when the log has no lines.
60700
+ * - `empty`: Shown when the log has no lines and no steps.
59484
60701
  * - `group-content`: Not drawn: a group drawn from data stands for its heading, and its lines are rows beside it.
59485
60702
  * - `group-duration`: How long a step drawn from `groups` took.
59486
60703
  * - `group-heading`: The heading of a step drawn from `groups`.
@@ -59526,7 +60743,7 @@ export type CustomElements<F extends Framework = "other"> = {
59526
60743
  * These can be used to apply styling when a component is in a given state.
59527
60744
  *
59528
60745
  * - `done`: The run is over: `done` is set, or `source` ended.
59529
- * - `empty`: The log has no lines.
60746
+ * - `empty`: The log has no lines and no steps.
59530
60747
  * - `filtered`: `query` or `level` is set, so only the lines they keep are shown.
59531
60748
  * - `pinned`: The log follows its newest line.
59532
60749
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
@@ -60476,6 +61693,16 @@ export type CustomElements<F extends Framework = "other"> = {
60476
61693
  * - `tilt-live`: `tilt`'s live region, which speaks while it is pending.
60477
61694
  * - `tilt-spinner`: The ring `tilt` turns while it is pending.
60478
61695
  * - `tilt-text`: The box `tilt`'s glyph sits in.
61696
+ * - `tooltip-arrow`: The arrow of the tooltip that names each button, forwarded from `Tooltip`.
61697
+ * - `tooltip-arrow-bottom`: The arrow while the bubble is below its button, on the bubble's top edge. Set together with `tooltip-arrow`.
61698
+ * - `tooltip-arrow-left`: The arrow while the bubble is left of its button, on the bubble's right edge. Set together with `tooltip-arrow`.
61699
+ * - `tooltip-arrow-right`: The arrow while the bubble is right of its button, on the bubble's left edge. Set together with `tooltip-arrow`.
61700
+ * - `tooltip-arrow-top`: The arrow while the bubble is above its button, on the bubble's bottom edge. Set together with `tooltip-arrow`.
61701
+ * - `tooltip-surface`: The bubble of the tooltip that names each button, forwarded from `Tooltip`.
61702
+ * - `tooltip-surface-bottom`: The bubble while it is below its button. Set together with `tooltip-surface`.
61703
+ * - `tooltip-surface-left`: The bubble while it is left of its button. Set together with `tooltip-surface`.
61704
+ * - `tooltip-surface-right`: The bubble while it is right of its button. Set together with `tooltip-surface`.
61705
+ * - `tooltip-surface-top`: The bubble while it is above its button. Set together with `tooltip-surface`.
60479
61706
  * - `viewport`: The box the map is drawn in.
60480
61707
  * - `zoom-in`: The button that zooms in.
60481
61708
  * - `zoom-in-button`: `zoom-in`'s inner button.
@@ -61520,6 +62747,7 @@ export type CustomElements<F extends Framework = "other"> = {
61520
62747
  *
61521
62748
  * These can be used to apply styling when a component is in a given state.
61522
62749
  *
62750
+ * - `start`: A row in the section has content before its label, so every row in it keeps the leading column. The menu decides it for each section, apart from the rows outside one.
61523
62751
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
61524
62752
  */
61525
62753
  "helix-headless-menu-section": Partial<
@@ -61529,7 +62757,9 @@ export type CustomElements<F extends Framework = "other"> = {
61529
62757
  >;
61530
62758
 
61531
62759
  /**
61532
- * A meter shows a level within a range. Use `Progress` to show how far along a
62760
+ * A meter shows a level within a range, or how the level divides: write
62761
+ * `Meter.Segment` inside it for each part of the whole, and the meter measures
62762
+ * their sum. Use `Progress` to show how far along a
61533
62763
  * task is. A progress bar starts empty and ends full, and full is always the
61534
62764
  * good end. For a meter, which end is good depends on what is measured. There
61535
62765
  * is no `indeterminate`, because a meter always has a value.
@@ -61689,6 +62919,7 @@ export type CustomElements<F extends Framework = "other"> = {
61689
62919
  *
61690
62920
  * Areas where markup can be added to the component.
61691
62921
  *
62922
+ * - `(default)`: `Meter.Segment` elements, one for each share of the whole, drawn in the bar.
61692
62923
  * - `label`: A visible label. Its words name the meter in place of `label`.
61693
62924
  *
61694
62925
  * ## CSS Custom Properties
@@ -61698,6 +62929,7 @@ export type CustomElements<F extends Framework = "other"> = {
61698
62929
  * - `--meter-along`: Where a bound sits on the arc, as a length along it.
61699
62930
  * - `--meter-at`: Where a bound sits on a linear track, as a percentage.
61700
62931
  * - `--meter-fraction`: The value as a fraction of the range, 0 to 1.
62932
+ * - `--meter-span`: How much the range holds, `max` less `min`, which a segment divides its own value by to find its width.
61701
62933
  * - `--meter-sweep`: How much of the circle the arc covers, as a path length.
61702
62934
  *
61703
62935
  * ## CSS Parts
@@ -61731,6 +62963,89 @@ export type CustomElements<F extends Framework = "other"> = {
61731
62963
  HelixHeadlessMeterProps & BaseProps<HelixHeadlessMeter, F> & BaseEvents<HelixHeadlessMeter>
61732
62964
  >;
61733
62965
 
62966
+ /**
62967
+ * A segment says how much of the range one part of the whole takes, such as the
62968
+ * tokens a model's context holds for its tools, against the tokens it holds for
62969
+ * the conversation. Write one for each part inside a `Meter`.
62970
+ *
62971
+ * **The meter's reading is the sum of its segments.** `value` on the meter is
62972
+ * ignored while it has any, so the two cannot disagree, and the bands, the ticks
62973
+ * and the reading answer to the total. A segment is drawn as wide as its `value`
62974
+ * is of the meter's range, so segments that add up to less than the range leave
62975
+ * the rest of the track empty, and ones that add up to more are cut at the end.
62976
+ *
62977
+ * **A meter's children are presentational to a screen reader**, so a segment
62978
+ * reaches no one that cannot see the bar. Say the breakdown in text beside it,
62979
+ * such as a list with the name and the amount of each part, which is also where a
62980
+ * reader finds the exact figures.
62981
+ *
62982
+ * A segment draws only in the bar. A meter in `ring` or `arc` draws its total.
62983
+ *
62984
+ * ## Attributes & Properties
62985
+ *
62986
+ * Component attributes and properties that can be applied to the element or by using JavaScript.
62987
+ *
62988
+ * - `label`: What the segment is, such as "Tools", which names the slice when a pointer
62989
+ * rests on it.
62990
+ *
62991
+ * Not announced: see the note on a meter's children above.
62992
+ * - `tone`: What the segment means, as it does on a callout. Takes the tone's color in
62993
+ * place of the next color in the series.
62994
+ * - `value`: How much of the meter's range the segment takes, in the units of the meter's
62995
+ * `min` and `max`.
62996
+ *
62997
+ * A value that is not a number, or is below zero, draws nothing.
62998
+ * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
62999
+ *
63000
+ * **Named `whenSettled` because `settled` is taken four times over**, by
63001
+ * Image, Splitter and both color controls, none of them about transitions. A
63002
+ * base class takes the name every subclass then cannot use.
63003
+ *
63004
+ * **The state it reports cannot be watched, which is why this exists.** A
63005
+ * custom state is deliberately not in the DOM, so there is no
63006
+ * `MutationObserver` equivalent for `ElementInternals.states`. Await this
63007
+ * instead.
63008
+ *
63009
+ * Separate from `updateComplete`, which resolves in the microtask checkpoint
63010
+ * the suppression is still active in. That is the distinction `readyToMove`
63011
+ * in `@fusion.dev/helix-testing` is written around.
63012
+ *
63013
+ * It never resolves where `requestAnimationFrame` never fires, which is a
63014
+ * server, a hidden tab, and happy-dom. Callers that must not hang there race
63015
+ * it against a timeout, as the happy-dom harness's `readyToMove` does. The
63016
+ * browser harness's awaits it alone: a browser always runs the frame, and a
63017
+ * timer beside it was a bet on how long one takes, which a busy run lost. (property only) (readonly)
63018
+ *
63019
+ * ## Slots
63020
+ *
63021
+ * Areas where markup can be added to the component.
63022
+ *
63023
+ * - `(default)`: Nothing. A segment draws its share and has no content.
63024
+ *
63025
+ * ## CSS Custom Properties
63026
+ *
63027
+ * CSS variables available for styling the component.
63028
+ *
63029
+ * - `--meter-segment-value`: How much of the range the segment takes, in the meter's own units.
63030
+ *
63031
+ * ## CSS Parts
63032
+ *
63033
+ * Custom selectors for styling elements within the component.
63034
+ *
63035
+ * - `fill`: The slice of the bar the segment takes.
63036
+ *
63037
+ * ## CSS States
63038
+ *
63039
+ * These can be used to apply styling when a component is in a given state.
63040
+ *
63041
+ * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
63042
+ */
63043
+ "helix-headless-meter-segment": Partial<
63044
+ HelixHeadlessMeterSegmentProps &
63045
+ BaseProps<HelixHeadlessMeterSegment, F> &
63046
+ BaseEvents<HelixHeadlessMeterSegment>
63047
+ >;
63048
+
61734
63049
  /**
61735
63050
  * WCAG 2.2.2 asks that motion which starts by itself and runs longer than
61736
63051
  * five seconds can be paused. **This is one control for the whole page**: a
@@ -66055,6 +67370,11 @@ export type CustomElements<F extends Framework = "other"> = {
66055
67370
  * scrollbar, the browser's or the component's, and clips what is past it.
66056
67371
  * Leave it unset to scroll both ways.
66057
67372
  *
67373
+ * **A mask on the viewport also masks the browser's scrollbar.** While a
67374
+ * scrollbar takes room beside the content, the viewport carries its size in
67375
+ * `--scroll-area-gutter-inline-end` or `--scroll-area-gutter-block-end`, so a
67376
+ * mask can leave that room opaque. The styled tier's fades use them.
67377
+ *
66058
67378
  * The viewport's `scroll` and `scrollend` are sent again from the host, which
66059
67379
  * is the element you hold. A thumb dragged across the content sends one
66060
67380
  * `scrollend`, once it is let go. In React, bind them with `onScroll` and
@@ -66134,6 +67454,8 @@ export type CustomElements<F extends Framework = "other"> = {
66134
67454
  *
66135
67455
  * CSS variables available for styling the component.
66136
67456
  *
67457
+ * - `--scroll-area-gutter-block-end`: The room the browser's horizontal scrollbar takes at the block end of the viewport, in pixels. Written on the `viewport` part while that scrollbar takes room, and absent while it draws over the content.
67458
+ * - `--scroll-area-gutter-inline-end`: The room the browser's vertical scrollbar takes at the inline end of the viewport, in pixels. Written on the `viewport` part while that scrollbar takes room, and absent while it draws over the content.
66137
67459
  * - `--scroll-area-scroll-fraction`: How far along its axis the content is scrolled, from 0 at the start to 1 at the end. Written on each `scrollbar` part, so its thumb inherits it. Counted from the right on a right-to-left page.
66138
67460
  * - `--scroll-area-thumb-fraction`: The share of the track the thumb covers, from 0 to 1, which is how much of the content is in view. Written on each `scrollbar` part.
66139
67461
  *
@@ -66142,7 +67464,7 @@ export type CustomElements<F extends Framework = "other"> = {
66142
67464
  * Custom selectors for styling elements within the component.
66143
67465
  *
66144
67466
  * - `corner`: The square where the two scrollbars meet, under `scrollbars`. Hidden unless both are drawn.
66145
- * - `edges`: The layer that draws the cues on the inline start and end edges.
67467
+ * - `edges`: The layer over the viewport. The styled tier draws the focus ring on it, and the painted fades at the inline start and end.
66146
67468
  * - `scrollbar`: Each scrollbar, under `scrollbars`. Hidden on an axis that has none.
66147
67469
  * - `scrollbar-horizontal`: The scrollbar along the inline axis, alongside `scrollbar`.
66148
67470
  * - `scrollbar-vertical`: The scrollbar along the block axis, alongside `scrollbar`.
@@ -67405,6 +68727,11 @@ export type CustomElements<F extends Framework = "other"> = {
67405
68727
  * depth, each as tall as its value from zero and colored by its series, so
67406
68728
  * one series is a single row of bars and several make a block of them.
67407
68729
  *
68730
+ * **A cell's `data-tone` colors its own bar and writes its value above it**,
68731
+ * such as `data-tone="primary"` on the one reading a chart is about, as on
68732
+ * `Bar Chart`. The value is the cell's own text. Without a tone, a bar takes
68733
+ * its series' color.
68734
+ *
67408
68735
  * **The flat `Bar Chart` is read more exactly.** Measured, a reader judges
67409
68736
  * a 3D bar's value less closely than a flat one's, and a bar can stand
67410
68737
  * behind another. Use this one where the shape across two sets of names
@@ -67453,16 +68780,73 @@ export type CustomElements<F extends Framework = "other"> = {
67453
68780
  *
67454
68781
  * Component attributes and properties that can be applied to the element or by using JavaScript.
67455
68782
  *
67456
- * - `no-box`/`noBox`: Draws no box: no edges, grid, numbers, or names, so the readings stand
67457
- * alone and fill the plot, as a picture on a product's own page does. The
68783
+ * - `grow`: Grows the bars up from the floor the first time the chart comes into
68784
+ * view with readings, each category a little after the one before it, so
68785
+ * the drawing arrives the way a page's own picture does. The growth is
68786
+ * fast at first, slows to rest, and never passes a bar's value.
68787
+ *
68788
+ * Under `prefers-reduced-motion`, or where the page has paused its motion
68789
+ * through `pauseMotion` or `Motion Toggle`, the bars stand at their height
68790
+ * from the start. A later table draws the bars it already had at their
68791
+ * height, and grows the bars it adds, each from the floor, so a reading that
68792
+ * arrives while the chart is in view arrives the same way.
68793
+ * - `grow-again`/`growAgain`: Grows the bars again each time the chart comes back into view after it
68794
+ * left it, as a pane does when it is opened again, where `grow` alone grows
68795
+ * them the first time only. Only a chart that grows takes it.
68796
+ *
68797
+ * While it is out of view the bars stand at the floor, so the first frame
68798
+ * after it returns is the start of the growth and never a flash at full
68799
+ * height.
68800
+ * - `no-box`/`noBox`: Draws no box: no edges, grid, numbers, or names, and in a `row` no
68801
+ * floor, so the readings stand alone and fill the plot, as a picture on a
68802
+ * product's own page does. The
67458
68803
  * table, the summary, the tooltip, and the keys still carry every value,
67459
68804
  * and a renderer draws no box either.
67460
68805
  * - `open-label`/`openLabel`: What the readout says for a place with no value. `{category}` and
67461
68806
  * `{series}` name the place.
67462
68807
  * - `plot-label`/`plotLabel`: The plot's name where the chart has none: no `aria-label`, `label`, or table caption.
68808
+ * - `stacked`: Stacks a category's series into one column, each block standing on the
68809
+ * ones before it, so the column is as tall as the category's total, as a
68810
+ * flat `Bar Chart` stacks them.
68811
+ *
68812
+ * Absent stands the series one behind another in depth. Stacked, every
68813
+ * series stands in the front row, so none hides another, and the parts of
68814
+ * one total read together. A negative reading hangs below zero on the
68815
+ * negatives before it. The scale fits the stacks.
67463
68816
  * - `summary-label`/`summaryLabel`: The `summary` part's sentence. `{count}`, `{series}`, and `{categories}`
67464
68817
  * are the number of bars, series, and categories, written in the locale,
67465
68818
  * and `{low}` and `{high}` the lowest and the highest value.
68819
+ * - `variant`: How the bars stand.
68820
+ *
68821
+ * Unset, they stand on a grid of categories across and series in depth,
68822
+ * in a box the camera looks at from a corner, so the grid recedes at an
68823
+ * angle. `row` lays the categories in a straight line across the page and
68824
+ * turns each bar to the camera, showing its top and two sides, for one row
68825
+ * of readings in a small space such as a pane: turning the view turns each
68826
+ * bar where it stands, and the row stays level. It is the chart's own
68827
+ * drawing that lays the row: a renderer connected through
68828
+ * `@fusion.dev/helix-plot` stands the bars on the grid.
68829
+ *
68830
+ * `diagonal` is the same row climbing to the right as it recedes, each
68831
+ * place a step further back than the one before, as a row of days on a
68832
+ * product's page is drawn: the row rises one part in five across the page
68833
+ * from any turn, and its floor and names climb with it. A row whose bars
68834
+ * have a size climbs at most a quarter of the plot's height, so the bars
68835
+ * of a long row keep theirs.
68836
+ *
68837
+ * **A row draws its floor in place of a box**: each place as an outline a
68838
+ * little wider than its bar, and each category's name under it, as many
68839
+ * names as fit without touching. A name whose bar names a tone is written
68840
+ * first, in that tone. `no-box` leaves the floor and the names out.
68841
+ *
68842
+ * **A `column-gap` on the `fallback` part gives a row's bars one width**,
68843
+ * which the styled tier sets from `--spatial-bar-chart-bar-size`: one bar
68844
+ * stands as wide as each of twenty, the row is as long as its bars and
68845
+ * centered, the tallest bar stands as high as the plot has room for and
68846
+ * no taller than the row is long and a quarter again, so one bar stands
68847
+ * as a block, and `fits` says how many bars the plot holds, so a page
68848
+ * can give it the latest of a longer table. It is read when the plot's
68849
+ * size changes.
67466
68850
  * - `empty-text`/`emptyText`: The words shown in place of the drawing when the table has no readings,
67467
68851
  * and the fallback of the `empty` slot.
67468
68852
  * - `loading`: Whether the readings are still on their way. The chart shows
@@ -67523,6 +68907,11 @@ export type CustomElements<F extends Framework = "other"> = {
67523
68907
  * column a series.** A renderer reads it. (property only) (readonly)
67524
68908
  * - `active`: The bar the keys or the pointer rest on, as its place in `field.cells`, or `-1`. (property only) (readonly)
67525
68909
  * - `readings`: The number of places on the grid, which the keys walk. (property only) (readonly)
68910
+ * - `fits`: How many categories a `row` or a `diagonal` has room for across the
68911
+ * plot at its bar size, measured as it is read, or
68912
+ * `undefined` where there is no row, no bar size, or nothing drawn to
68913
+ * measure. A page with a longer table gives the chart its latest that
68914
+ * many rows, and says so. (property only) (readonly)
67526
68915
  * - `sounding`: Whether the chart is playing as sound now. (property only) (readonly)
67527
68916
  * - `data`: The readings as data, in the shape of a table, where the page has no
67528
68917
  * table to point `for` at. `for` wins where both are set.
@@ -67654,7 +69043,14 @@ export type CustomElements<F extends Framework = "other"> = {
67654
69043
  *
67655
69044
  * CSS variables available for styling the component.
67656
69045
  *
67657
- * - `--spatial-bar-chart-shade`: How far a bar's face turns from the light, from 0 for its top. The component writes it on each face, and the stylesheet that shades the face reads it.
69046
+ * - `--spatial-bar-chart-shade -How far a bar's face turns from the light, from 0 for its top. The component writes it on each face, and the stylesheet that shades the face reads it.`: undefined
69047
+ * - `--spatial-bar-chart-tone-accent`: The color of a bar whose cell says `data-tone="accent"`.
69048
+ * - `--spatial-bar-chart-tone-danger`: The color of a bar whose cell says `data-tone="danger"`.
69049
+ * - `--spatial-bar-chart-tone-info`: The color of a bar whose cell says `data-tone="info"`.
69050
+ * - `--spatial-bar-chart-tone-muted`: The color of a bar whose cell says `data-tone="muted"`.
69051
+ * - `--spatial-bar-chart-tone-primary`: The color of a bar whose cell says `data-tone="primary"`. A tone with no property of its own falls back to the bar's series color, and the same holds for a name you define.
69052
+ * - `--spatial-bar-chart-tone-success`: The color of a bar whose cell says `data-tone="success"`.
69053
+ * - `--spatial-bar-chart-tone-warning`: The color of a bar whose cell says `data-tone="warning"`.
67658
69054
  *
67659
69055
  * ## CSS Parts
67660
69056
  *
@@ -67667,6 +69063,8 @@ export type CustomElements<F extends Framework = "other"> = {
67667
69063
  * - `empty`: The words when the table has no readings: the `empty` slot, falling back to `empty-text`.
67668
69064
  * - `face`: One face of a bar the view shows, shaded by which way it faces.
67669
69065
  * - `fallback`: The box the chart's own drawing fills, shown until a renderer has drawn and where none is connected. Hidden from screen readers.
69066
+ * - `floor`: One place on the floor of a `row`, under a bar or where one would stand, drawn as its outline.
69067
+ * - `glow`: The outline of a bar whose cell names a tone, blurred by 8 CSS pixels and painted under the bar, with no fill until a stylesheet gives it one: a soft glow in the bar's tone.
67670
69068
  * - `grid`: The box's edges and its grid, in the chart's own drawing.
67671
69069
  * - `live`: The readout: a polite live region that says the bar the keys moved to. Hide it visually.
67672
69070
  * - `loading`: The words while `loading` is set and there are no readings.
@@ -67678,7 +69076,7 @@ export type CustomElements<F extends Framework = "other"> = {
67678
69076
  * - `summary`: The number of bars, series, and categories, and the range of values, written as a sentence for screen readers, which describes the plot. Hide it visually.
67679
69077
  * - `table`: The readings as a table, for a screen reader, rendered only where they were drawn from `data`, a page of them at a time past a few hundred. Hide it visually.
67680
69078
  * - `table-pages`: Which readings a page of the `table` holds, and the buttons that show the previous and the next page, rendered only while it holds a page. Hide it visually.
67681
- * - `tick`: A category's or a series' name, or a value at a tick, along its edge of the box, in the chart's own drawing.
69079
+ * - `tick`: A category's or a series' name, or a value at a tick, along its edge of the box, or a category's name under its place in a `row`, in the chart's own drawing.
67682
69080
  * - `tooltip-anchor`: The `Tooltip` element itself.
67683
69081
  * - `tooltip-arrow`: The bubble's point, forwarded from `Tooltip`.
67684
69082
  * - `tooltip-arrow-bottom`: The point while the bubble is below the reading, on its top edge. Set alongside `tooltip-arrow`.
@@ -67695,6 +69093,7 @@ export type CustomElements<F extends Framework = "other"> = {
67695
69093
  * - `tooltip-surface-right`: The bubble while it is right of the reading. Set alongside `tooltip-surface`.
67696
69094
  * - `tooltip-surface-top`: The bubble while it is above the reading. Set alongside `tooltip-surface`.
67697
69095
  * - `tooltip-value`: A column's value inside the tooltip.
69096
+ * - `value`: The value of a bar whose cell names a tone, written above it in the chart's own drawing.
67698
69097
  *
67699
69098
  * ## CSS States
67700
69099
  *
@@ -71669,6 +73068,10 @@ export type CustomElements<F extends Framework = "other"> = {
71669
73068
  *
71670
73069
  * A tab with `dismissible` can be closed: see `Tabs.Tab`.
71671
73070
  *
73071
+ * **Panels are optional.** A set with none is a strip whose tabs stand for
73072
+ * something the page shows elsewhere: the keys, the selection, `active` and
73073
+ * `helix-activate` work the same, and no tab names a panel it controls.
73074
+ *
71672
73075
  * The `indicator` part moves to the selected tab and carries its place and
71673
73076
  * size, so a mark of your own can be drawn there: style the part, or slot an
71674
73077
  * element into `indicator`, which sits inside the part and reads the same
@@ -71901,6 +73304,7 @@ export type CustomElements<F extends Framework = "other"> = {
71901
73304
  *
71902
73305
  * - `dismiss`: The mark a pointer presses to close a `dismissible` tab.
71903
73306
  * - `dismiss-mark`: The glyph on that mark, where none is slotted.
73307
+ * - `label`: The slot the tab's label is in.
71904
73308
  * - `tab`: The tab itself.
71905
73309
  *
71906
73310
  * ## CSS States
@@ -72131,7 +73535,7 @@ export type CustomElements<F extends Framework = "other"> = {
72131
73535
  *
72132
73536
  * - `(default)`: The tag's label.
72133
73537
  * - `dismiss-icon`: Replaces the glyph on the remove button.
72134
- * - `start`: The category the label belongs to, shown before it in a heavier weight.
73538
+ * - `start`: The category the label belongs to, shown before it in a heavier weight, or an icon.
72135
73539
  *
72136
73540
  * ## Methods
72137
73541
  *
@@ -72280,6 +73684,7 @@ export type CustomElements<F extends Framework = "other"> = {
72280
73684
  * Events that will be emitted by the component.
72281
73685
  *
72282
73686
  * - `helix-copy`: The copy control or its key put the selection on the clipboard.
73687
+ * - `helix-found`: The find bar searched or moved among the matches, with `count` and the current match's `index`, counting from 0, or -1 for none.
72283
73688
  * - `helix-terminal-bell`: The program rang the bell. The frame flashes once.
72284
73689
  * - `helix-terminal-input`: The reader typed or pasted, with `data` encoded for the program. Write it to the process. Not sent while `readonly`, or once `exit-code` is set.
72285
73690
  * - `helix-terminal-link`: A link in the output was activated, with its `href`. Cancelable: cancel it to open the link yourself. Left alone, a web address opens in a new tab.
@@ -72380,23 +73785,23 @@ export type CustomElements<F extends Framework = "other"> = {
72380
73785
  * - `copy-spinner`: The ring the copy button turns while it is pending.
72381
73786
  * - `copy-text`: The box the copy button's icon sits in.
72382
73787
  * - `exit-actions`: The `exit-actions` slot, beside Restart in the status line.
72383
- * - `find`: The button that opens and closes the find bar. Expanded while it is open.
72384
- * - `find-actions`: The `find-actions` slot, first in the find bar's toolbar.
72385
- * - `find-bar`: The bar under the header where the reader searches the output.
72386
- * - `find-button`: The find button's inner button.
73788
+ * - `find`: The find bar under the header, where the reader searches the output: a Find of its own.
73789
+ * - `find-actions`: The `find-actions` slot, in the find bar's toolbar.
73790
+ * - `find-bar`: The find bar's strip: the field, the count, and the toolbar.
72387
73791
  * - `find-close`: The button that closes the find bar.
72388
73792
  * - `find-close-button`: The find bar's close button's inner button.
72389
73793
  * - `find-close-live`: The find bar's close button's live region, which speaks while the button is pending.
72390
73794
  * - `find-close-spinner`: The ring the find bar's close button turns while it is pending.
72391
73795
  * - `find-close-text`: The box the find bar's close button's icon sits in.
72392
- * - `find-controls`: The toolbar at the end of the find bar: your find actions, then the buttons that move between matches and close the bar.
73796
+ * - `find-controls`: The toolbar at the end of the find bar: the options, your find actions, and the buttons that move between matches and close the bar.
72393
73797
  * - `find-controls-toolbar`: The box inside the find bar's toolbar that lays its buttons out.
72394
73798
  * - `find-count`: Which match is current and how many there are, such as "3 of 12 matches".
72395
73799
  * - `find-field`: The search field in the find bar.
72396
- * - `find-live`: The find button's live region, which speaks while the button is pending.
73800
+ * - `find-live`: The find bar's live region, which says the count as it changes.
72397
73801
  * - `find-match-case`: The button that matches case in the find bar. Pressed while it does.
72398
73802
  * - `find-match-case-button`: The match case button's inner button.
72399
73803
  * - `find-match-case-live`: The match case button's live region, which speaks while the button is pending.
73804
+ * - `find-match-case-pressed`: The match case button while case has to match, beside `find-match-case`.
72400
73805
  * - `find-match-case-spinner`: The ring the match case button turns while it is pending.
72401
73806
  * - `find-match-case-text`: The box the match case button's icon sits in.
72402
73807
  * - `find-next`: The button that moves to the next match.
@@ -72412,13 +73817,34 @@ export type CustomElements<F extends Framework = "other"> = {
72412
73817
  * - `find-regex`: The button that reads the find field as a regular expression. Pressed while it does.
72413
73818
  * - `find-regex-button`: The regular expression button's inner button.
72414
73819
  * - `find-regex-live`: The regular expression button's live region, which speaks while the button is pending.
73820
+ * - `find-regex-pressed`: The regular expression button while the field reads as one, beside `find-regex`.
72415
73821
  * - `find-regex-spinner`: The ring the regular expression button turns while it is pending.
72416
73822
  * - `find-regex-text`: The box the regular expression button's icon sits in.
72417
- * - `find-spinner`: The ring the find button turns while it is pending.
72418
- * - `find-text`: The box the find button's icon sits in.
73823
+ * - `find-replace`: The find bar's Replace button, which a terminal does not draw, since its output cannot be changed.
73824
+ * - `find-replace-all`: The find bar's Replace all button, which a terminal does not draw.
73825
+ * - `find-replace-all-button`: The Replace all button's inner button.
73826
+ * - `find-replace-all-live`: The Replace all button's live region, which speaks while the button is pending.
73827
+ * - `find-replace-all-spinner`: The ring the Replace all button turns while it is pending.
73828
+ * - `find-replace-all-text`: The box the Replace all button's words sits in.
73829
+ * - `find-replace-button`: The Replace button's inner button.
73830
+ * - `find-replace-field`: The find bar's replace field, which a terminal does not draw.
73831
+ * - `find-replace-live`: The Replace button's live region, which speaks while the button is pending.
73832
+ * - `find-replace-spinner`: The ring the Replace button turns while it is pending.
73833
+ * - `find-replace-text`: The box the Replace button's words sits in.
73834
+ * - `find-replace-toggle`: The button that shows the find bar's replace row, which a terminal does not draw.
73835
+ * - `find-replace-toggle-button`: The replace toggle's inner button.
73836
+ * - `find-replace-toggle-live`: The replace toggle's live region, which speaks while the button is pending.
73837
+ * - `find-replace-toggle-spinner`: The ring the replace toggle turns while it is pending.
73838
+ * - `find-replace-toggle-text`: The box the replace toggle's icon sits in.
73839
+ * - `find-toggle`: The button in the header that opens and closes the find bar. Expanded while it is open.
73840
+ * - `find-toggle-button`: The find button's inner button.
73841
+ * - `find-toggle-live`: The find button's live region, which speaks while the button is pending.
73842
+ * - `find-toggle-spinner`: The ring the find button turns while it is pending.
73843
+ * - `find-toggle-text`: The box the find button's icon sits in.
72419
73844
  * - `find-whole-word`: The button that matches whole words only in the find bar. Pressed while it does.
72420
73845
  * - `find-whole-word-button`: The whole word button's inner button.
72421
73846
  * - `find-whole-word-live`: The whole word button's live region, which speaks while the button is pending.
73847
+ * - `find-whole-word-pressed`: The whole word button while only whole words match, beside `find-whole-word`.
72422
73848
  * - `find-whole-word-spinner`: The ring the whole word button turns while it is pending.
72423
73849
  * - `find-whole-word-text`: The box the whole word button's icon sits in.
72424
73850
  * - `fullscreen`: The button that makes the terminal fill the screen. Pressed while it does.
@@ -72436,6 +73862,16 @@ export type CustomElements<F extends Framework = "other"> = {
72436
73862
  * - `restart-spinner`: The ring the Restart button turns while it is pending.
72437
73863
  * - `restart-text`: The Restart button's label.
72438
73864
  * - `status`: The line under the terminal that says the process exited, or that Tab moves focus.
73865
+ * - `tooltip-arrow`: The arrow of the tooltip that names each button, forwarded from `Tooltip`.
73866
+ * - `tooltip-arrow-bottom`: The arrow while the bubble is below its button, on the bubble's top edge. Set together with `tooltip-arrow`.
73867
+ * - `tooltip-arrow-left`: The arrow while the bubble is left of its button, on the bubble's right edge. Set together with `tooltip-arrow`.
73868
+ * - `tooltip-arrow-right`: The arrow while the bubble is right of its button, on the bubble's left edge. Set together with `tooltip-arrow`.
73869
+ * - `tooltip-arrow-top`: The arrow while the bubble is above its button, on the bubble's bottom edge. Set together with `tooltip-arrow`.
73870
+ * - `tooltip-surface`: The bubble of the tooltip that names each button, forwarded from `Tooltip`.
73871
+ * - `tooltip-surface-bottom`: The bubble while it is below its button. Set together with `tooltip-surface`.
73872
+ * - `tooltip-surface-left`: The bubble while it is left of its button. Set together with `tooltip-surface`.
73873
+ * - `tooltip-surface-right`: The bubble while it is right of its button. Set together with `tooltip-surface`.
73874
+ * - `tooltip-surface-top`: The bubble while it is above its button. Set together with `tooltip-surface`.
72439
73875
  * - `viewport`: The box the terminal is drawn in.
72440
73876
  *
72441
73877
  * ## CSS States
@@ -74755,7 +76191,10 @@ export type CustomElements<F extends Framework = "other"> = {
74755
76191
  * The toolbar is one tab stop, and the arrow keys move between its controls, so
74756
76192
  * three toolbars take three presses of Tab to pass. Any element the browser can
74757
76193
  * focus counts as a control, including your own elements. A child that takes no
74758
- * focus, such as a divider, is skipped. A menu is reached at its trigger.
76194
+ * focus, such as a divider, is skipped. A menu is reached at its trigger. A
76195
+ * disabled control is skipped too, except a Button with
76196
+ * `focusable-when-disabled`, which the arrows still reach so its tooltip can
76197
+ * say why it is disabled.
74759
76198
  *
74760
76199
  * A Divider in the toolbar is a separator across the toolbar's axis, as React
74761
76200
  * Aria's is: vertical in a horizontal toolbar and horizontal in a vertical
@@ -75509,6 +76948,10 @@ export type CustomElements<F extends Framework = "other"> = {
75509
76948
  * A `disabled` item is reached by the arrow keys and announced as unavailable,
75510
76949
  * and a press, Enter or Space on it does nothing.
75511
76950
  *
76951
+ * A closed branch's children are hidden until found: the browser's find and
76952
+ * Find search them, and the branch opens on the one that holds the match,
76953
+ * unless `helix-before-open` is canceled.
76954
+ *
75512
76955
  * A `lazy` item is a branch whose children you load when it opens: opening it
75513
76956
  * sends `helix-load`, the row says it is busy, and the children you add appear
75514
76957
  * in it. Remove `lazy` once they are in.
@@ -79171,7 +80614,7 @@ export type CustomElementsSolidJs = {
79171
80614
  *
79172
80615
  * - `(default)`: The step's label. Without an `href`, you can slot your own anchor here. Give it `data-link="quiet"`, because a slotted anchor belongs to the outer tree and the crumb's styles cannot reach it.
79173
80616
  * - `end`: Content after the label and outside the link, such as a switcher's menu trigger, a count, or a mark. It can hold a control, and it is not read as part of the link's accessible name.
79174
- * - `separator`: Replaces the chevron shown before this item.
80617
+ * - `separator`: Replaces the mark shown before this item, a chevron or the trail's `separator`.
79175
80618
  * - `start`: Content before the label, such as an icon.
79176
80619
  *
79177
80620
  * ## CSS Parts
@@ -79182,7 +80625,7 @@ export type CustomElementsSolidJs = {
79182
80625
  * - `fold-separator`: The chevron before that button.
79183
80626
  * - `link`: The crumb itself, which is an `<a>` where `href` is set.
79184
80627
  * - `separator`: The separator preceding the item.
79185
- * - `separator-mark`: The chevron between crumbs, shown when no separator is slotted.
80628
+ * - `separator-mark`: The chevron between crumbs, or the slash under the trail's `separator="slash"`, shown when no separator is slotted.
79186
80629
  *
79187
80630
  * ## CSS States
79188
80631
  *
@@ -79247,6 +80690,18 @@ export type CustomElementsSolidJs = {
79247
80690
  * - `max-items`/`maxItems`: The most crumbs a trail drawn from `items` shows before it folds its middle
79248
80691
  * into one, counting the first and the last. Unset, it never folds. At least
79249
80692
  * 2, so the first crumb and the current page always show.
80693
+ * - `separator`: The mark between one crumb and the next, for the whole trail. Unset is a
80694
+ * chevron; `slash` is a slash, as a path or a repository and its branch is
80695
+ * written.
80696
+ *
80697
+ * **On the trail rather than on each crumb**, because the marks are one
80698
+ * decision: a trail whose separators differ from crumb to crumb is a
80699
+ * mistake, and a trail drawn from `items` has no crumb of yours to set it
80700
+ * on. A crumb's own `separator` slot still replaces its mark, for the rare
80701
+ * crumb that needs something else.
80702
+ *
80703
+ * Optional and reflected, per the rule that a reflected property takes no
80704
+ * default, so a stylesheet can select on it.
79250
80705
  * - `items`: The trail as data, drawn as crumbs before any you slot. The last item is the
79251
80706
  * current page.
79252
80707
  *
@@ -79290,7 +80745,7 @@ export type CustomElementsSolidJs = {
79290
80745
  * - `crumb-fold-separator`: The chevron before that button.
79291
80746
  * - `crumb-link`: The link, or the current page's words, of a crumb drawn from `items`.
79292
80747
  * - `crumb-separator`: The separator before a crumb drawn from `items`.
79293
- * - `crumb-separator-mark`: The chevron before a crumb drawn from `items`.
80748
+ * - `crumb-separator-mark`: The chevron, or the slash under `separator="slash"`, before a crumb drawn from `items`.
79294
80749
  * - `expand`: The button in the folded crumb that shows the whole trail.
79295
80750
  * - `list`: The ordered list.
79296
80751
  *
@@ -79495,6 +80950,10 @@ export type CustomElementsSolidJs = {
79495
80950
  * Set `pending` while the action a press started is still running. The button
79496
80951
  * keeps focus and refuses presses, and a reader on it hears `pending-label`.
79497
80952
  *
80953
+ * Set `focusable-when-disabled` on a disabled button whose reason a Tooltip
80954
+ * gives. It stays in the tab order and takes hover, so the tooltip opens, and
80955
+ * it refuses every press.
80956
+ *
79498
80957
  * Every press that acts sends `helix-press` with what pressed it in
79499
80958
  * `detail.pointerType`: `mouse`, `pen`, `touch`, `keyboard`, or `virtual` for
79500
80959
  * a screen reader's press or a script's `click()`, as React Aria's `onPress`
@@ -79524,6 +80983,20 @@ export type CustomElementsSolidJs = {
79524
80983
  * name to derive one rather than dash-casing it, and what a consumer writes
79525
80984
  * is the platform's `commandfor`.
79526
80985
  * - `commandfor`/`commandFor`: The id of the element the command is sent to.
80986
+ * - `focusable-when-disabled`/`focusableWhenDisabled`: Whether a disabled button stays in the tab order, so a tooltip around it
80987
+ * can say why it is disabled.
80988
+ *
80989
+ * Set it on a button whose reason a Tooltip gives, such as a Save with no
80990
+ * changes to save. While the button is disabled, it keeps focus and takes
80991
+ * hover, and it refuses every press: a click, Enter and Space, and Enter in
80992
+ * a field of its form. The click does not reach your listeners, and a submit
80993
+ * button submits nothing. The inner control carries `aria-disabled` in place
80994
+ * of the native `disabled`, so a screen reader still says it is unavailable.
80995
+ * The styled button keeps the disabled look.
80996
+ *
80997
+ * Leave it unset on a button with no reason to give. A plain disabled button
80998
+ * leaves the tab order, as a native one does, and a keyboard reader skips a
80999
+ * stop that does nothing. Set `pending` for the wait after a press.
79527
81000
  * - `formaction`/`formAction`: Where this button's submission goes, overriding the form's own.
79528
81001
  *
79529
81002
  * **The five `form*` overrides ride on a native submit button that stands in
@@ -80667,6 +82140,16 @@ export type CustomElementsSolidJs = {
80667
82140
  * - `pan-up-spinner`: The ring `pan-up` turns while it is pending.
80668
82141
  * - `pan-up-text`: The box `pan-up`'s glyph sits in.
80669
82142
  * - `region`: The named region the board is drawn in.
82143
+ * - `tooltip-arrow`: The arrow of the tooltip that names each button, forwarded from `Tooltip`.
82144
+ * - `tooltip-arrow-bottom`: The arrow while the bubble is below its button, on the bubble's top edge. Set together with `tooltip-arrow`.
82145
+ * - `tooltip-arrow-left`: The arrow while the bubble is left of its button, on the bubble's right edge. Set together with `tooltip-arrow`.
82146
+ * - `tooltip-arrow-right`: The arrow while the bubble is right of its button, on the bubble's left edge. Set together with `tooltip-arrow`.
82147
+ * - `tooltip-arrow-top`: The arrow while the bubble is above its button, on the bubble's bottom edge. Set together with `tooltip-arrow`.
82148
+ * - `tooltip-surface`: The bubble of the tooltip that names each button, forwarded from `Tooltip`.
82149
+ * - `tooltip-surface-bottom`: The bubble while it is below its button. Set together with `tooltip-surface`.
82150
+ * - `tooltip-surface-left`: The bubble while it is left of its button. Set together with `tooltip-surface`.
82151
+ * - `tooltip-surface-right`: The bubble while it is right of its button. Set together with `tooltip-surface`.
82152
+ * - `tooltip-surface-top`: The bubble while it is above its button. Set together with `tooltip-surface`.
80670
82153
  * - `viewport`: The box the board is drawn inside.
80671
82154
  * - `zoom-in`: The button that zooms in.
80672
82155
  * - `zoom-in-button`: `zoom-in`'s inner button.
@@ -81129,8 +82612,8 @@ export type CustomElementsSolidJs = {
81129
82612
 
81130
82613
  /**
81131
82614
  * The composer is a separate element so you can replace it. If you need
81132
- * attachments, slash commands, or a model picker, replace the composer and keep
81133
- * the transcript.
82615
+ * slash commands or a layout of your own, replace the composer and keep the
82616
+ * transcript.
81134
82617
  *
81135
82618
  * By default, Enter sends and Shift+Enter starts a new line, the convention in
81136
82619
  * messaging apps. Document editors mostly use the opposite, so `submit-on`
@@ -81170,10 +82653,41 @@ export type CustomElementsSolidJs = {
81170
82653
  * `typing-timeout` milliseconds. Pass it on to show "is typing" to the other
81171
82654
  * side.
81172
82655
  *
82656
+ * **`busy` says a reply is on its way**, and turns the send button into a
82657
+ * stop button, named by `stop-label`, that sends `helix-stop`. The field
82658
+ * stays open so the reader can write the next turn, and Enter does not send
82659
+ * it until `busy` is cleared. With `queue`, Enter sends while `busy` too, for
82660
+ * a page that holds a turn until the reply ends or hands it to the reply
82661
+ * under way; the button stays the stop button.
82662
+ *
82663
+ * **The `idle` slot takes the send button's place while there is nothing to
82664
+ * send**: the field is empty, `attached` is not set, and no reply is on its
82665
+ * way. Put the action an empty draft offers there, such as a button that
82666
+ * starts a voice conversation. The send button comes back as soon as there
82667
+ * is a draft. Where focus was on the one that goes, it moves to the one that
82668
+ * comes, so a keyboard reader stays in the same place.
82669
+ *
82670
+ * **What the draft carries goes in `attachments`**, inside the box and above
82671
+ * the field, such as thumbnails of attached images and cards for attached
82672
+ * files. The region takes no room while nothing is in it. A press on its
82673
+ * empty space keeps the reader in the field, and a press on a control in it,
82674
+ * such as a button that removes an attachment, goes to that control. Set
82675
+ * `attached` as well, so the send button shows for a draft with no text.
82676
+ *
81173
82677
  * ## Attributes & Properties
81174
82678
  *
81175
82679
  * Component attributes and properties that can be applied to the element or by using JavaScript.
81176
82680
  *
82681
+ * - `attached`: Whether the draft holds something besides its text, such as an attached
82682
+ * file. The draft then counts as one though the field is empty, so the
82683
+ * send button shows in place of the `idle` slot.
82684
+ * - `busy`: Whether a reply is on its way. While set, the send button is a stop
82685
+ * button that sends `helix-stop`, and the draft does not send.
82686
+ *
82687
+ * **The same button rather than one beside it**, because sending and
82688
+ * stopping are never both possible: while a reply is on its way there is
82689
+ * nothing to send to, and the place the reader's eye goes to act is the
82690
+ * place that can act. The field stays open for the next turn.
81177
82691
  * - `feedback`: A message about the draft, shown under the field. While set, the composer
81178
82692
  * is invalid, does not send, and does not submit, as a field's `feedback`
81179
82693
  * does, and the message is announced as it appears.
@@ -81182,12 +82696,28 @@ export type CustomElementsSolidJs = {
81182
82696
  * - `minlength`/`minLength`: The fewest characters a draft can have, once the reader has written in
81183
82697
  * the field, as on a `<textarea>`.
81184
82698
  * - `placeholder`: Placeholder text shown in an empty field.
82699
+ * - `queue`: Whether Enter sends while `busy`, for a page that queues the turn or
82700
+ * hands it to the reply under way.
82701
+ *
82702
+ * Off by default, because a page that does neither would drop the turn: it
82703
+ * has nowhere to put a message while a reply is coming. The button stays
82704
+ * the stop button either way, since stopping is still the one thing it
82705
+ * should do while a reply is on its way.
81185
82706
  * - `required`: Whether the form needs a draft to submit. An empty draft never sends,
81186
82707
  * required or not.
81187
82708
  * - `rows`: How many rows the field opens at.
81188
82709
  *
81189
82710
  * It grows from there.
82711
+ * - `send-disabled`/`sendDisabled`: Whether the draft waits to be sent, such as while an attachment is still
82712
+ * read. The send button is unavailable and Enter does not send, while the
82713
+ * field stays open. The stop button shown while `busy` still stops.
81190
82714
  * - `send-label`/`sendLabel`: Label for the send button.
82715
+ * - `send-reason`/`sendReason`: Why the draft waits, such as "Reading photo.jpg", shown in a tooltip on
82716
+ * the send button while `send-disabled` is set. The button then stays in
82717
+ * the tab order and takes the pointer, with `aria-disabled` in place of
82718
+ * `disabled`, so the reason can be reached by keyboard and by pointer, as
82719
+ * Button's `focusable-when-disabled` does. A press still sends nothing.
82720
+ * - `stop-label`/`stopLabel`: Label for the stop button shown while `busy`.
81191
82721
  * - `submit-on`/`submitOn`: What sends the turn: `enter` for the Enter key, or `button` for the send
81192
82722
  * button only.
81193
82723
  *
@@ -81232,6 +82762,22 @@ export type CustomElementsSolidJs = {
81232
82762
  * imperatively later, and nothing is hydrating by then.
81233
82763
  *
81234
82764
  * Here rather than on each control.
82765
+ * - `placeholders`: Examples the empty field shows in turn, in place of `placeholder`, such
82766
+ * as tasks a reader might ask for. Each shows for 6.5 seconds, and a longer
82767
+ * one shows longer, up to 10 seconds.
82768
+ *
82769
+ * **Each is the field's placeholder in its turn**, so a screen reader that
82770
+ * reaches the field hears the one showing. The swap runs through
82771
+ * `:state(example-leaving)`, as one example leaves, and
82772
+ * `:state(example-entering)`, as the next arrives.
82773
+ *
82774
+ * **They move only while nobody is about to write, and while the reader
82775
+ * can see them.** An empty field without focus moves on. Focus or text
82776
+ * holds the example showing, and an example already leaving finishes its
82777
+ * turn. A composer scrolled out of view holds its example, and the example
82778
+ * gets its full time again when the composer comes back. Where the reader
82779
+ * asked for less motion, or the page paused its motion, the first example
82780
+ * stays. (property only)
81235
82781
  * - `typing`: Whether the user is writing: true from their first keystroke until they
81236
82782
  * send, clear the field, or pause for `typing-timeout` milliseconds. (property only) (readonly)
81237
82783
  * - `speechEngine`: The engine this field listens through, in place of the one
@@ -81270,6 +82816,7 @@ export type CustomElementsSolidJs = {
81270
82816
  * - `helix-before-listen`: The dictation button was pressed. Cancelable: cancel it to keep the composer from listening.
81271
82817
  * - `helix-listen`: Dictation settled on a phrase and put it in the draft, after the draft's own `input`.
81272
82818
  * - `helix-send`: Fired when the user sends their turn, and cancelable.
82819
+ * - `helix-stop`: Fired when the user presses the stop button, shown in place of the send button while `busy` is set.
81273
82820
  * - `helix-typing`: The user started or stopped writing, with `typing` saying which, as the composer's `typing` does.
81274
82821
  * - `input`: The user changed the text. Read it from `value`, for a typing indicator or a saved draft. Bubbles and is composed, as a native field's is.
81275
82822
  *
@@ -81277,7 +82824,9 @@ export type CustomElementsSolidJs = {
81277
82824
  *
81278
82825
  * Areas where markup can be added to the component.
81279
82826
  *
82827
+ * - `attachments`: What the draft carries, such as images or files, inside the box and above the field.
81280
82828
  * - `end`: Content under the field, beside the send button.
82829
+ * - `idle`: A control shown in place of the send button while the draft is empty and no reply is on its way, such as a button that starts a voice conversation.
81281
82830
  * - `start`: Content under the field at the leading edge, such as an attachment button or a model picker.
81282
82831
  *
81283
82832
  * ## Methods
@@ -81343,12 +82892,24 @@ export type CustomElementsSolidJs = {
81343
82892
  *
81344
82893
  * Custom selectors for styling elements within the component.
81345
82894
  *
82895
+ * - `attachments`: The box around the `attachments` slot, above the field. It is hidden while the slot is empty.
81346
82896
  * - `composer`: The whole composer.
81347
82897
  * - `end`: The box around the `end` slot.
81348
82898
  * - `feedback`: The `feedback` message, under the field while it is set.
81349
82899
  * - `field`: The text field.
81350
- * - `mark`: The icon inside the send button.
81351
- * - `send`: The send button.
82900
+ * - `idle`: The box around the `idle` slot, shown in the send button's place while the draft is empty.
82901
+ * - `mark`: The icon inside the send button, a return key, or a square while `busy`.
82902
+ * - `reason-arrow`: The arrow of the bubble that says `send-reason`, forwarded from `Tooltip`.
82903
+ * - `reason-arrow-bottom`: The arrow while the bubble is below the send button, on the bubble's top edge. Set together with `reason-arrow`.
82904
+ * - `reason-arrow-left`: The arrow while the bubble is left of the send button, on the bubble's right edge. Set together with `reason-arrow`.
82905
+ * - `reason-arrow-right`: The arrow while the bubble is right of the send button, on the bubble's left edge. Set together with `reason-arrow`.
82906
+ * - `reason-arrow-top`: The arrow while the bubble is above the send button, on the bubble's bottom edge. Set together with `reason-arrow`.
82907
+ * - `reason-surface`: The bubble that says `send-reason` over the send button, forwarded from `Tooltip`.
82908
+ * - `reason-surface-bottom`: The bubble while it is below the send button. Set together with `reason-surface`.
82909
+ * - `reason-surface-left`: The bubble while it is left of the send button. Set together with `reason-surface`.
82910
+ * - `reason-surface-right`: The bubble while it is right of the send button. Set together with `reason-surface`.
82911
+ * - `reason-surface-top`: The bubble while it is above the send button. Set together with `reason-surface`.
82912
+ * - `send`: The send button, which is the stop button while `busy`.
81352
82913
  * - `start`: The box around the `start` slot.
81353
82914
  * - `tools`: The row under the field.
81354
82915
  * - `voice`: The dictation button, under `voice`, before the send button.
@@ -81359,6 +82920,8 @@ export type CustomElementsSolidJs = {
81359
82920
  *
81360
82921
  * These can be used to apply styling when a component is in a given state.
81361
82922
  *
82923
+ * - `example-entering`: The example in the empty field has just replaced the one before it, for an entrance. It holds for 350 milliseconds. See `placeholders`.
82924
+ * - `example-leaving`: The example in the empty field is giving way to the next one, for an exit. It holds for 250 milliseconds, and the next example becomes the placeholder 100 milliseconds in, so the two can cross. See `placeholders`.
81362
82925
  * - `invalid`: The draft fails `required`, `minlength`, `maxlength`, or a custom error, and the reader has tried to send or submit it, or edited the field and left it. Or `feedback` is set.
81363
82926
  * - `listening`: While the composer listens for dictation. The element sets `--dictation-level` on itself meanwhile, from 0 to 1, for a meter.
81364
82927
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
@@ -81386,6 +82949,11 @@ export type CustomElementsSolidJs = {
81386
82949
  * a page in another language sets them once there. The time moves on by
81387
82950
  * itself, so "now" becomes "1 minute ago" while the page is open.
81388
82951
  *
82952
+ * **What a turn carries goes in `attachments`**, above the bubble rather
82953
+ * in it: a picture inside a tinted bubble is framed twice, and one sent with
82954
+ * no words is an empty bubble around it. It sits against the same edge as the
82955
+ * turn, and the words keep their bubble under it.
82956
+ *
81389
82957
  * **An agent's work goes in `work`, and its answer in the content.** The work,
81390
82958
  * its thinking, the commands it ran and what they printed, is a record read
81391
82959
  * the way a log is, so a `Log` with `separation="plain"` and `quiet` sits there
@@ -81457,6 +83025,7 @@ export type CustomElementsSolidJs = {
81457
83025
  *
81458
83026
  * - `(default)`: The turn's content.
81459
83027
  * - `actions`: Controls for the turn, such as copy, retry, or react.
83028
+ * - `attachments`: What the turn carries, such as images or files, above its content and outside the bubble, against the author's edge.
81460
83029
  * - `avatar`: The author's avatar.
81461
83030
  * - `indicator`: The indicator shown before the first token arrives. Defaults to the typing indicator.
81462
83031
  * - `sources`: The turn's sources, such as citations, documents, or a retrieved page.
@@ -81467,6 +83036,7 @@ export type CustomElementsSolidJs = {
81467
83036
  * Custom selectors for styling elements within the component.
81468
83037
  *
81469
83038
  * - `actions`: The controls on the turn, beside its time.
83039
+ * - `attachments`: The box around the `attachments` slot, above the content and outside the bubble.
81470
83040
  * - `avatar`: The box around the `avatar` slot.
81471
83041
  * - `body`: The content and the line under it.
81472
83042
  * - `content`: Your own markup.
@@ -81729,6 +83299,7 @@ export type CustomElementsSolidJs = {
81729
83299
  * - `log`: The transcript, which scrolls. On this tier, it needs only a block size.
81730
83300
  * - `message`: The message drawn for a turn from `turns`, forwarded whole.
81731
83301
  * - `message-actions`: The controls on a turn from `turns`, beside its time.
83302
+ * - `message-attachments`: The attachments above the bubble of a turn from `turns`.
81732
83303
  * - `message-avatar`: The avatar box of a turn from `turns`.
81733
83304
  * - `message-avatar-mine`: The avatar box of a turn from `turns` by `me`.
81734
83305
  * - `message-body`: The content of a turn from `turns`, and the line under it.
@@ -82774,6 +84345,7 @@ export type CustomElementsSolidJs = {
82774
84345
  *
82775
84346
  * - `change`: The reader finished an edit and focus left the code, in the engine or the plain field.
82776
84347
  * - `helix-before-change`: The text is about to change. Cancelable: cancel it to keep the current text.
84348
+ * - `helix-found`: The find bar searched or moved among the matches, with `count` and the selected match's `index`, counting from 0, or -1 for none.
82777
84349
  * - `input`: Fired after the text changes.
82778
84350
  *
82779
84351
  * ## Slots
@@ -82866,9 +84438,9 @@ export type CustomElementsSolidJs = {
82866
84438
  * - `diagnostics`: The list of problems under the code, while there are any.
82867
84439
  * - `feedback`: The message that says what is wrong.
82868
84440
  * - `field`: The frame around the header, the code, the problems and the status line.
82869
- * - `find`: The button in the header that opens the find bar.
82870
- * - `find-bar`: The find bar under the header, while it is open.
82871
- * - `find-button`: The Find button's inner button.
84441
+ * - `find`: The find bar under the header, where the reader searches the code: a Find of its own.
84442
+ * - `find-actions`: The find bar's `actions` slot, which the editor fills with nothing.
84443
+ * - `find-bar`: The find bar's strip: the replace toggle, the field, the count, the toolbar, and the replace row while it shows.
82872
84444
  * - `find-close`: The button that closes the find bar.
82873
84445
  * - `find-close-button`: The close button's inner button.
82874
84446
  * - `find-close-live`: The close button's live region, which speaks while the button is pending.
@@ -82878,10 +84450,11 @@ export type CustomElementsSolidJs = {
82878
84450
  * - `find-controls-toolbar`: The box inside the find bar's toolbar that lays its buttons out.
82879
84451
  * - `find-count`: Which match is selected, of how many.
82880
84452
  * - `find-field`: The field the search is typed in.
82881
- * - `find-live`: The Find button's live region, which speaks while the button is pending.
84453
+ * - `find-live`: The find bar's live region, which says the count as it changes.
82882
84454
  * - `find-match-case`: The option that finds only the same case. Pressed while it applies.
82883
84455
  * - `find-match-case-button`: The match case button's inner button.
82884
84456
  * - `find-match-case-live`: The match case button's live region, which speaks while the button is pending.
84457
+ * - `find-match-case-pressed`: The match case option while it applies, beside `find-match-case`.
82885
84458
  * - `find-match-case-spinner`: The ring the match case button turns while it is pending.
82886
84459
  * - `find-match-case-text`: The box the match case button's icon sits in.
82887
84460
  * - `find-next`: The button that selects the next match.
@@ -82897,18 +84470,34 @@ export type CustomElementsSolidJs = {
82897
84470
  * - `find-regex`: The option that reads the search as a regular expression. Pressed while it applies.
82898
84471
  * - `find-regex-button`: The regular expression button's inner button.
82899
84472
  * - `find-regex-live`: The regular expression button's live region, which speaks while the button is pending.
84473
+ * - `find-regex-pressed`: The regular expression option while it applies, beside `find-regex`.
82900
84474
  * - `find-regex-spinner`: The ring the regular expression button turns while it is pending.
82901
84475
  * - `find-regex-text`: The box the regular expression button's icon sits in.
82902
- * - `find-replace`: The button that shows the replace field under the find field. Expanded while it shows.
82903
- * - `find-replace-button`: The find and replace button's inner button.
82904
- * - `find-replace-live`: The find and replace button's live region, which speaks while the button is pending.
82905
- * - `find-replace-spinner`: The ring the find and replace button turns while it is pending.
82906
- * - `find-replace-text`: The box the find and replace button's icon sits in.
82907
- * - `find-spinner`: The ring the Find button turns while it is pending.
82908
- * - `find-text`: The box the Find button's icon sits in.
84476
+ * - `find-replace`: The button that replaces the selected match.
84477
+ * - `find-replace-all`: The button that replaces every match.
84478
+ * - `find-replace-all-button`: The Replace all button's inner button.
84479
+ * - `find-replace-all-live`: The Replace all button's live region, which speaks while the button is pending.
84480
+ * - `find-replace-all-spinner`: The ring the Replace all button turns while it is pending.
84481
+ * - `find-replace-all-text`: The box the Replace all button's words sits in.
84482
+ * - `find-replace-button`: The Replace button's inner button.
84483
+ * - `find-replace-field`: The field the replacement is typed in.
84484
+ * - `find-replace-live`: The Replace button's live region, which speaks while the button is pending.
84485
+ * - `find-replace-spinner`: The ring the Replace button turns while it is pending.
84486
+ * - `find-replace-text`: The box the Replace button's words sits in.
84487
+ * - `find-replace-toggle`: The button that shows the replace field under the find field. Expanded while it shows. Not drawn while `readonly`.
84488
+ * - `find-replace-toggle-button`: The find and replace button's inner button.
84489
+ * - `find-replace-toggle-live`: The find and replace button's live region, which speaks while the button is pending.
84490
+ * - `find-replace-toggle-spinner`: The ring the find and replace button turns while it is pending.
84491
+ * - `find-replace-toggle-text`: The box the find and replace button's icon sits in.
84492
+ * - `find-toggle`: The button in the header that opens and closes the find bar. Expanded while it is open.
84493
+ * - `find-toggle-button`: The Find button's inner button.
84494
+ * - `find-toggle-live`: The Find button's live region, which speaks while the button is pending.
84495
+ * - `find-toggle-spinner`: The ring the Find button turns while it is pending.
84496
+ * - `find-toggle-text`: The box the Find button's icon sits in.
82909
84497
  * - `find-whole-word`: The option that finds only whole words. Pressed while it applies.
82910
84498
  * - `find-whole-word-button`: The whole word button's inner button.
82911
84499
  * - `find-whole-word-live`: The whole word button's live region, which speaks while the button is pending.
84500
+ * - `find-whole-word-pressed`: The whole word option while it applies, beside `find-whole-word`.
82912
84501
  * - `find-whole-word-spinner`: The ring the whole word button turns while it is pending.
82913
84502
  * - `find-whole-word-text`: The box the whole word button's icon sits in.
82914
84503
  * - `header`: The strip above the code: the name, the language, and the controls.
@@ -82917,17 +84506,6 @@ export type CustomElementsSolidJs = {
82917
84506
  * - `language`: The language's name in the header.
82918
84507
  * - `position`: The caret's line and column, in the status line.
82919
84508
  * - `problem-count`: How many problems there are, in the status line.
82920
- * - `replace`: The button that replaces the selected match.
82921
- * - `replace-all`: The button that replaces every match.
82922
- * - `replace-all-button`: The Replace all button's inner button.
82923
- * - `replace-all-live`: The Replace all button's live region, which speaks while the button is pending.
82924
- * - `replace-all-spinner`: The ring the Replace all button turns while it is pending.
82925
- * - `replace-all-text`: The box the Replace all button's words sit in.
82926
- * - `replace-button`: The Replace button's inner button.
82927
- * - `replace-field`: The field the replacement is typed in.
82928
- * - `replace-live`: The Replace button's live region, which speaks while the button is pending.
82929
- * - `replace-spinner`: The ring the Replace button turns while it is pending.
82930
- * - `replace-text`: The box the Replace button's words sit in.
82931
84509
  * - `status`: The strip under the code.
82932
84510
  * - `view`: Where an engine draws, while one is connected.
82933
84511
  *
@@ -82938,7 +84516,6 @@ export type CustomElementsSolidJs = {
82938
84516
  * - `connected`: An engine draws the editor.
82939
84517
  * - `find-open`: The find bar is open.
82940
84518
  * - `invalid`: The editor has an error to show, from `required` or your `feedback`.
82941
- * - `replace-open`: The replace field shows under the find field.
82942
84519
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
82943
84520
  */
82944
84521
  "helix-headless-code-editor": Partial<
@@ -84925,6 +86502,20 @@ export type CustomElementsSolidJs = {
84925
86502
  * It replaces `Button.value`, the submit value: a copy button never submits,
84926
86503
  * whatever its `type`. Declared here so its own page says what it holds.
84927
86504
  * - `aria-label`/`undefined`: undefined
86505
+ * - `focusable-when-disabled`/`focusableWhenDisabled`: Whether a disabled button stays in the tab order, so a tooltip around it
86506
+ * can say why it is disabled.
86507
+ *
86508
+ * Set it on a button whose reason a Tooltip gives, such as a Save with no
86509
+ * changes to save. While the button is disabled, it keeps focus and takes
86510
+ * hover, and it refuses every press: a click, Enter and Space, and Enter in
86511
+ * a field of its form. The click does not reach your listeners, and a submit
86512
+ * button submits nothing. The inner control carries `aria-disabled` in place
86513
+ * of the native `disabled`, so a screen reader still says it is unavailable.
86514
+ * The styled button keeps the disabled look.
86515
+ *
86516
+ * Leave it unset on a button with no reason to give. A plain disabled button
86517
+ * leaves the tab order, as a native one does, and a keyboard reader skips a
86518
+ * stop that does nothing. Set `pending` for the wait after a press.
84928
86519
  * - `pending`: Whether the action the button started is still running.
84929
86520
  *
84930
86521
  * A pending button keeps focus and stays in the tab order, and refuses every
@@ -87014,6 +88605,16 @@ export type CustomElementsSolidJs = {
87014
88605
  * - `screenshot-live`: The screenshot button's live region, which speaks while the button is pending.
87015
88606
  * - `screenshot-spinner`: The ring the screenshot button turns while it is pending.
87016
88607
  * - `screenshot-text`: The box the screenshot button's icon sits in.
88608
+ * - `tooltip-arrow`: The arrow of the tooltip that names each button, forwarded from `Tooltip`.
88609
+ * - `tooltip-arrow-bottom`: The arrow while the bubble is below its button, on the bubble's top edge. Set together with `tooltip-arrow`.
88610
+ * - `tooltip-arrow-left`: The arrow while the bubble is left of its button, on the bubble's right edge. Set together with `tooltip-arrow`.
88611
+ * - `tooltip-arrow-right`: The arrow while the bubble is right of its button, on the bubble's left edge. Set together with `tooltip-arrow`.
88612
+ * - `tooltip-arrow-top`: The arrow while the bubble is above its button, on the bubble's bottom edge. Set together with `tooltip-arrow`.
88613
+ * - `tooltip-surface`: The bubble of the tooltip that names each button, forwarded from `Tooltip`.
88614
+ * - `tooltip-surface-bottom`: The bubble while it is below its button. Set together with `tooltip-surface`.
88615
+ * - `tooltip-surface-left`: The bubble while it is left of its button. Set together with `tooltip-surface`.
88616
+ * - `tooltip-surface-right`: The bubble while it is right of its button. Set together with `tooltip-surface`.
88617
+ * - `tooltip-surface-top`: The bubble while it is above its button. Set together with `tooltip-surface`.
87017
88618
  * - `touch`: A ring where a touch is or was.
87018
88619
  * - `touch-held`: A ring under a finger that is down, beside `touch`, with `show-touches`.
87019
88620
  * - `volume-down`: The Volume down button.
@@ -89644,6 +91245,226 @@ export type CustomElementsSolidJs = {
89644
91245
  BaseEvents<HelixHeadlessFilterInput>
89645
91246
  >;
89646
91247
 
91248
+ /**
91249
+ * Searches the content `for` names, by id, and marks every match, with the
91250
+ * current one marked apart. The count says which match is current and how many
91251
+ * there are. Find opens with Command+F, or Control+F on Windows and Linux,
91252
+ * while the reader is in that content or in the bar. Everywhere else on the
91253
+ * page, the key opens the browser's own find. `shortcut` changes the key, and
91254
+ * empty turns it off.
91255
+ *
91256
+ * The match case, whole word, and regular expression options are drawn in the
91257
+ * bar. `options` names the ones it draws. Text that is not shown is not
91258
+ * searched, nor text under `inert` or `aria-hidden="true"`, nor what `skip`
91259
+ * matches. Text under `hidden="until-found"` and in a closed `<details>` is
91260
+ * searched, and opened when its match becomes current, as the browser's find
91261
+ * opens it: an Accordion section opens. A match is scrolled into the middle of
91262
+ * what scrolls it unless it is already in sight. While Find is open, a change
91263
+ * to the content searches again once the content is still.
91264
+ *
91265
+ * Content drawn some other way, such as a terminal's grid, an editor's
91266
+ * document, or rows of a list that are not all in the page, is searched by a
91267
+ * finder the page attaches with `attach(finder)`. Terminal and Code Editor
91268
+ * draw a Find of their own, which searches through their renderer. Find offers
91269
+ * replacing to a finder that can replace, unless `readonly` is set.
91270
+ *
91271
+ * The bar is a search landmark named by `label`. The count is said in a live
91272
+ * region as it changes.
91273
+ *
91274
+ * **Keyboard.** In the field, Enter moves to the next match and Shift+Enter to
91275
+ * the previous one. Escape closes the bar from anywhere in it, and focus
91276
+ * returns to where it was before the bar opened. The find key pressed again
91277
+ * moves focus to the field and selects what it holds. In the replace field,
91278
+ * Enter replaces the current match, and Command+Enter or Control+Enter
91279
+ * replaces every match.
91280
+ *
91281
+ * ## Attributes & Properties
91282
+ *
91283
+ * Component attributes and properties that can be applied to the element or by using JavaScript.
91284
+ *
91285
+ * - `close-label`/`closeLabel`: The close button's label.
91286
+ * - `controls-label`/`controlsLabel`: The name of the bar's toolbar, read by screen readers.
91287
+ * - `for`: The id of the element whose text Find searches, in the same tree as Find.
91288
+ * With a finder attached, it names only where the find key opens the bar.
91289
+ * - `invalid-label`/`invalidLabel`: What the count says when the regular expression cannot be read.
91290
+ * - `label`: The field's name and placeholder, and the name of the bar.
91291
+ * - `match-case`/`matchCase`: Whether case has to match, so "Error" does not find "error". The reader turns it on and off from the bar.
91292
+ * - `match-case-label`/`matchCaseLabel`: The match case button's label.
91293
+ * - `matches-label`/`matchesLabel`: What the count says of the matches. `{index}` is the current match,
91294
+ * counting from 1, and `{count}` how many there are.
91295
+ * - `next-label`/`nextLabel`: The next match button's label.
91296
+ * - `options`: Which options the bar draws, as a list of `match-case`, `whole-word`, and
91297
+ * `regex`, or `none`. They are always drawn in that order.
91298
+ * - `previous-label`/`previousLabel`: The previous match button's label.
91299
+ * - `query`: What the field holds: what the reader typed, or what you set.
91300
+ * - `readonly`/`readOnly`: Hides replacing, for content the reader cannot change. The attribute is `readonly`, the platform's spelling.
91301
+ * - `regex`: Whether the field reads as a regular expression, in JavaScript's syntax. The reader turns it on and off from the bar.
91302
+ * - `regex-label`/`regexLabel`: The regular expression button's label.
91303
+ * - `replace-all-label`/`replaceAllLabel`: The Replace all button's words.
91304
+ * - `replace-field-label`/`replaceFieldLabel`: The replace field's name and placeholder.
91305
+ * - `replace-label`/`replaceLabel`: The Replace button's words.
91306
+ * - `replacement`: What the replace field holds, which Replace puts in place of a match.
91307
+ * - `replace-toggle-label`/`replaceToggleLabel`: The label of the button that shows the replace row.
91308
+ * - `shortcut`: The key that opens the bar, as a chord such as `mod+f`, where `mod` is
91309
+ * Command on an Apple keyboard and Control elsewhere. Empty turns the key
91310
+ * off, as for a bar the page opens itself.
91311
+ * - `skip`: Elements inside the content whose text is not searched, as a selector,
91312
+ * such as line numbers or the buttons beside each message.
91313
+ * - `whole-word`/`wholeWord`: Whether only whole words match. The reader turns it on and off from the bar.
91314
+ * - `whole-word-label`/`wholeWordLabel`: The whole word button's label.
91315
+ * - `default-open`/`defaultOpen`: Whether the element starts open. Ignored once `open` is written.
91316
+ * - `open`: Whether the element is open.
91317
+ *
91318
+ * One property, not two, so `dialog.open` answers the question anyone
91319
+ * asking it meant. Writing always applies; `<helix-dialog open>` is the
91320
+ * same statement in markup.
91321
+ *
91322
+ * **Not reflected, and that is required rather than tidy.** Reflection
91323
+ * writes the resolved state back as an attribute, so an element that opened
91324
+ * itself would put `open` on its own host: cloned, serialized for
91325
+ * hydration, or diffed by a framework, it comes back holding whatever the
91326
+ * last reader did rather than what the author wrote. `:state(open)` carries
91327
+ * the resolved state for stylesheets, which is what the mirror is for.
91328
+ * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
91329
+ *
91330
+ * **Named `whenSettled` because `settled` is taken four times over**, by
91331
+ * Image, Splitter and both color controls, none of them about transitions. A
91332
+ * base class takes the name every subclass then cannot use.
91333
+ *
91334
+ * **The state it reports cannot be watched, which is why this exists.** A
91335
+ * custom state is deliberately not in the DOM, so there is no
91336
+ * `MutationObserver` equivalent for `ElementInternals.states`. Await this
91337
+ * instead.
91338
+ *
91339
+ * Separate from `updateComplete`, which resolves in the microtask checkpoint
91340
+ * the suppression is still active in. That is the distinction `readyToMove`
91341
+ * in `@fusion.dev/helix-testing` is written around.
91342
+ *
91343
+ * It never resolves where `requestAnimationFrame` never fires, which is a
91344
+ * server, a hidden tab, and happy-dom. Callers that must not hang there race
91345
+ * it against a timeout, as the happy-dom harness's `readyToMove` does. The
91346
+ * browser harness's awaits it alone: a browser always runs the frame, and a
91347
+ * timer beside it was a bet on how long one takes, which a busy run lost. (property only) (readonly)
91348
+ *
91349
+ * ## Events
91350
+ *
91351
+ * Events that will be emitted by the component.
91352
+ *
91353
+ * - `helix-before-close`: Fired before the bar closes, and cancelable.
91354
+ * - `helix-before-open`: Fired before the bar opens, and cancelable. Canceling it keeps the bar closed.
91355
+ * - `helix-found`: Sent after each search and each move among the matches, with `count` and the current match's `index`, counting from 0, or -1 for none.
91356
+ * - `toggle`: Sent when the bar opens or closes, with `newState` and `oldState`.
91357
+ *
91358
+ * ## Slots
91359
+ *
91360
+ * Areas where markup can be added to the component.
91361
+ *
91362
+ * - `actions`: Controls of your own in the bar's toolbar, between its options and the buttons that move between matches.
91363
+ * - `close-icon`: Replaces the glyph inside the close button.
91364
+ * - `match-case-icon`: Replaces the glyph inside the match case button.
91365
+ * - `next-icon`: Replaces the glyph inside the next match button.
91366
+ * - `previous-icon`: Replaces the glyph inside the previous match button.
91367
+ * - `regex-icon`: Replaces the glyph inside the regular expression button.
91368
+ * - `whole-word-icon`: Replaces the glyph inside the whole word button.
91369
+ *
91370
+ * ## Methods
91371
+ *
91372
+ * Methods that can be called to access component functionality.
91373
+ *
91374
+ * - `attach(finder: Finder) => FindSink`: Searches with `finder` in place of the text finder, and returns how it
91375
+ * reports a search it finishes later. Attaching another lets go of this one.
91376
+ * - `show() => Promise<void>`: Opens the bar and puts focus in its field, with what it holds selected.
91377
+ * Text selected in the content, on one line, becomes the search.
91378
+ * - `hide() => void`: Closes the bar and takes the marks away. Focus in the bar returns to where it was before the bar opened.
91379
+ * - `next() => void`: Moves to the next match, after the last one to the first.
91380
+ * - `previous() => void`: Moves to the previous match, before the first one to the last.
91381
+ * - `refresh() => void`: Searches again, staying on the current match where it still matches, for content changed in a way Find cannot see.
91382
+ * - `requestOpen(next: boolean) => boolean`: Requests that the element open or close, and returns whether the change
91383
+ * was applied.
91384
+ *
91385
+ * Announces before it acts, so `preventDefault()` on the `helix-before-open` or
91386
+ * `helix-before-close` is a refusal and nothing moves. Nobody refusing means the
91387
+ * element opens or closes itself, whether or not a consumer declared
91388
+ * `open`: a declared property is a seed and a correction, and a consumer
91389
+ * who wants the decision for themselves refuses it and assigns their own.
91390
+ * - `toggleOpen() => boolean`: Requests the opposite of the current state.
91391
+ *
91392
+ * ## CSS Parts
91393
+ *
91394
+ * Custom selectors for styling elements within the component.
91395
+ *
91396
+ * - `actions`: The `actions` slot, in the toolbar.
91397
+ * - `bar`: The bar, a search landmark: the field, the count, the toolbar, and the replace row while it shows.
91398
+ * - `close`: The button that closes the bar.
91399
+ * - `close-button`: The close button's inner button.
91400
+ * - `close-live`: The close button's live region, which speaks while the button is pending.
91401
+ * - `close-spinner`: The ring the close button turns while it is pending.
91402
+ * - `close-text`: The box the close button's icon sits in.
91403
+ * - `controls`: The toolbar: the options, your actions, and the buttons that move between matches and close the bar.
91404
+ * - `controls-toolbar`: The box inside the toolbar that lays its buttons out.
91405
+ * - `count`: Which match is current and how many there are, such as "3 of 12 matches".
91406
+ * - `field`: The search field.
91407
+ * - `live`: The live region that says the count as it changes.
91408
+ * - `match-case`: The button that matches case. Pressed while it does.
91409
+ * - `match-case-button`: The match case button's inner button.
91410
+ * - `match-case-live`: The match case button's live region, which speaks while the button is pending.
91411
+ * - `match-case-pressed`: The match case button while case has to match, beside `match-case`.
91412
+ * - `match-case-spinner`: The ring the match case button turns while it is pending.
91413
+ * - `match-case-text`: The box the match case button's icon sits in.
91414
+ * - `next`: The button that moves to the next match.
91415
+ * - `next-button`: The next match button's inner button.
91416
+ * - `next-live`: The next match button's live region, which speaks while the button is pending.
91417
+ * - `next-spinner`: The ring the next match button turns while it is pending.
91418
+ * - `next-text`: The box the next match button's icon sits in.
91419
+ * - `previous`: The button that moves to the previous match.
91420
+ * - `previous-button`: The previous match button's inner button.
91421
+ * - `previous-live`: The previous match button's live region, which speaks while the button is pending.
91422
+ * - `previous-spinner`: The ring the previous match button turns while it is pending.
91423
+ * - `previous-text`: The box the previous match button's icon sits in.
91424
+ * - `regex`: The button that reads the field as a regular expression. Pressed while it does.
91425
+ * - `regex-button`: The regular expression button's inner button.
91426
+ * - `regex-live`: The regular expression button's live region, which speaks while the button is pending.
91427
+ * - `regex-pressed`: The regular expression button while the field reads as one, beside `regex`.
91428
+ * - `regex-spinner`: The ring the regular expression button turns while it is pending.
91429
+ * - `regex-text`: The box the regular expression button's icon sits in.
91430
+ * - `replace`: The button that replaces the current match.
91431
+ * - `replace-all`: The button that replaces every match.
91432
+ * - `replace-all-button`: The Replace all button's inner button.
91433
+ * - `replace-all-live`: The Replace all button's live region, which speaks while the button is pending.
91434
+ * - `replace-all-spinner`: The ring the Replace all button turns while it is pending.
91435
+ * - `replace-all-text`: The box the Replace all button's words sit in.
91436
+ * - `replace-button`: The Replace button's inner button.
91437
+ * - `replace-field`: The field the replacement is typed in.
91438
+ * - `replace-live`: The Replace button's live region, which speaks while the button is pending.
91439
+ * - `replace-spinner`: The ring the Replace button turns while it is pending.
91440
+ * - `replace-text`: The box the Replace button's words sit in.
91441
+ * - `replace-toggle`: The button that shows the replace row. Expanded while it shows.
91442
+ * - `replace-toggle-button`: The replace toggle's inner button.
91443
+ * - `replace-toggle-live`: The replace toggle's live region, which speaks while the button is pending.
91444
+ * - `replace-toggle-spinner`: The ring the replace toggle turns while it is pending.
91445
+ * - `replace-toggle-text`: The box the replace toggle's icon sits in.
91446
+ * - `whole-word`: The button that matches whole words only. Pressed while it does.
91447
+ * - `whole-word-button`: The whole word button's inner button.
91448
+ * - `whole-word-live`: The whole word button's live region, which speaks while the button is pending.
91449
+ * - `whole-word-pressed`: The whole word button while only whole words match, beside `whole-word`.
91450
+ * - `whole-word-spinner`: The ring the whole word button turns while it is pending.
91451
+ * - `whole-word-text`: The box the whole word button's icon sits in.
91452
+ *
91453
+ * ## CSS States
91454
+ *
91455
+ * These can be used to apply styling when a component is in a given state.
91456
+ *
91457
+ * - `open`: While the bar is open.
91458
+ * - `replace-open`: While the replace row shows.
91459
+ * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
91460
+ */
91461
+ "helix-headless-find": Partial<
91462
+ HelixHeadlessFindProps &
91463
+ HelixHeadlessFindSolidJsProps &
91464
+ BaseProps<HelixHeadlessFind, "solid"> &
91465
+ BaseEvents<HelixHeadlessFind>
91466
+ >;
91467
+
89647
91468
  /**
89648
91469
  * Formats a date with `Intl` where it is shown, so you do not write the same
89649
91470
  * `Intl` call and options in your own code.
@@ -90212,6 +92033,16 @@ export type CustomElementsSolidJs = {
90212
92033
  * - `settling`: What is said while a layout runs unseen, where the reader asked for less motion or the page paused its motion, over the hidden drawing.
90213
92034
  * - `stage`: The drawing and its controls.
90214
92035
  * - `stop-layout`: The button that stops a layout that has run past five seconds, where the notes stand.
92036
+ * - `tooltip-arrow`: The arrow of the tooltip that names each button, forwarded from `Tooltip`.
92037
+ * - `tooltip-arrow-bottom`: The arrow while the bubble is below its button, on the bubble's top edge. Set together with `tooltip-arrow`.
92038
+ * - `tooltip-arrow-left`: The arrow while the bubble is left of its button, on the bubble's right edge. Set together with `tooltip-arrow`.
92039
+ * - `tooltip-arrow-right`: The arrow while the bubble is right of its button, on the bubble's left edge. Set together with `tooltip-arrow`.
92040
+ * - `tooltip-arrow-top`: The arrow while the bubble is above its button, on the bubble's bottom edge. Set together with `tooltip-arrow`.
92041
+ * - `tooltip-surface`: The bubble of the tooltip that names each button, forwarded from `Tooltip`.
92042
+ * - `tooltip-surface-bottom`: The bubble while it is below its button. Set together with `tooltip-surface`.
92043
+ * - `tooltip-surface-left`: The bubble while it is left of its button. Set together with `tooltip-surface`.
92044
+ * - `tooltip-surface-right`: The bubble while it is right of its button. Set together with `tooltip-surface`.
92045
+ * - `tooltip-surface-top`: The bubble while it is above its button. Set together with `tooltip-surface`.
90215
92046
  * - `viewport`: The box the renderer draws in.
90216
92047
  * - `zoom-in`: The zoom in button.
90217
92048
  * - `zoom-in-button`: `zoom-in`'s inner button.
@@ -90720,6 +92551,20 @@ export type CustomElementsSolidJs = {
90720
92551
  * name to derive one rather than dash-casing it, and what a consumer writes
90721
92552
  * is the platform's `commandfor`.
90722
92553
  * - `commandfor`/`commandFor`: The id of the element the command is sent to.
92554
+ * - `focusable-when-disabled`/`focusableWhenDisabled`: Whether a disabled button stays in the tab order, so a tooltip around it
92555
+ * can say why it is disabled.
92556
+ *
92557
+ * Set it on a button whose reason a Tooltip gives, such as a Save with no
92558
+ * changes to save. While the button is disabled, it keeps focus and takes
92559
+ * hover, and it refuses every press: a click, Enter and Space, and Enter in
92560
+ * a field of its form. The click does not reach your listeners, and a submit
92561
+ * button submits nothing. The inner control carries `aria-disabled` in place
92562
+ * of the native `disabled`, so a screen reader still says it is unavailable.
92563
+ * The styled button keeps the disabled look.
92564
+ *
92565
+ * Leave it unset on a button with no reason to give. A plain disabled button
92566
+ * leaves the tab order, as a native one does, and a keyboard reader skips a
92567
+ * stop that does nothing. Set `pending` for the wait after a press.
90723
92568
  * - `formaction`/`formAction`: Where this button's submission goes, overriding the form's own.
90724
92569
  *
90725
92570
  * **The five `form*` overrides ride on a native submit button that stands in
@@ -91303,6 +93148,9 @@ export type CustomElementsSolidJs = {
91303
93148
  *
91304
93149
  * Empty leaves the attribute off, which is the browser's default. Set it to
91305
93150
  * a token like `email` or `bday` to ask for autofill, or to `off` to refuse.
93151
+ * - `autocorrect`: Whether the browser corrects words as the reader types, as the platform's
93152
+ * `autocorrect`. Turn it off, with `autocorrect="off"`, for text that is not
93153
+ * prose, such as an address or a code, which corrections would change.
91306
93154
  * - `clearable`: Whether the field shows a button that empties it.
91307
93155
  *
91308
93156
  * Shown only while there is something to clear, because a control that does
@@ -91975,7 +93823,8 @@ export type CustomElementsSolidJs = {
91975
93823
  *
91976
93824
  * Set `controls` for the viewer's own previous, next and close controls, named
91977
93825
  * by `previous-label`, `next-label` and `dismiss-label`, whose glyphs you can
91978
- * replace in the `previous-icon`, `next-icon` and `dismiss-icon` slots. Without
93826
+ * replace in the `previous-icon`, `next-icon` and `dismiss-icon` slots. A set
93827
+ * of one item has nothing to step to, so it draws no previous, next or counter. Without
91979
93828
  * it, compose the chrome yourself in the `header` and `footer` slots, with
91980
93829
  * buttons that send `--previous`, `--next` and `--close`.
91981
93830
  *
@@ -93623,7 +95472,9 @@ export type CustomElementsSolidJs = {
93623
95472
  * the heading, as you write it, such as `12s`.
93624
95473
  *
93625
95474
  * A group starts shut. Write `default-open` on the step a reader should see,
93626
- * such as the one that failed.
95475
+ * such as the one that failed. A shut group's lines are hidden until found:
95476
+ * the browser's find and Find search them, and the group opens on the one
95477
+ * that holds the match, unless `helix-before-open` is canceled.
93627
95478
  *
93628
95479
  * ## Attributes & Properties
93629
95480
  *
@@ -93701,7 +95552,7 @@ export type CustomElementsSolidJs = {
93701
95552
  *
93702
95553
  * Custom selectors for styling elements within the component.
93703
95554
  *
93704
- * - `content`: The lines, hidden while the group is shut.
95555
+ * - `content`: The lines, hidden until found while the group is shut.
93705
95556
  * - `duration`: How long the step took.
93706
95557
  * - `heading`: The heading.
93707
95558
  * - `mark`: The caret that turns as the group opens, an `<svg>` you size.
@@ -93712,7 +95563,9 @@ export type CustomElementsSolidJs = {
93712
95563
  *
93713
95564
  * These can be used to apply styling when a component is in a given state.
93714
95565
  *
95566
+ * - `empty`: The group holds nothing to show, so opening it shows nothing.
93715
95567
  * - `open`: The group shows its lines.
95568
+ * - `steps`: The group holds steps of its own, which a stylesheet draws as a tree.
93716
95569
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
93717
95570
  */
93718
95571
  "helix-headless-log-group": Partial<
@@ -93906,7 +95759,9 @@ export type CustomElementsSolidJs = {
93906
95759
  * stream ends.
93907
95760
  * - `done-label`/`doneLabel`: What a screen reader hears when the run is over.
93908
95761
  * - `dropped-label`/`droppedLabel`: What the line above the log says once `limit` has let lines go. `{count}` is how many.
93909
- * - `empty-text`/`emptyText`: The text shown and announced when the log has no lines.
95762
+ * - `empty-text`/`emptyText`: The text shown and announced when the log has no lines and no steps. A
95763
+ * step with nothing in it yet, such as one still `pending`, is its heading
95764
+ * alone, so a log holding one says nothing.
93910
95765
  * - `error-label`/`errorLabel`: What a screen reader hears when lines at `error` arrive. `{count}` is how
93911
95766
  * many arrived together and `{text}` is the first of them.
93912
95767
  * - `fallback-label`/`fallbackLabel`: The log's name, read by screen readers, where `label` is empty.
@@ -94064,7 +95919,7 @@ export type CustomElementsSolidJs = {
94064
95919
  * - `after`: The space the rows below the drawn ones would take. Only for lines drawn from data.
94065
95920
  * - `before`: The space the rows above the drawn ones would take. Only for lines drawn from data.
94066
95921
  * - `dropped`: The line above the log that says how many earlier lines `limit` let go.
94067
- * - `empty`: Shown when the log has no lines.
95922
+ * - `empty`: Shown when the log has no lines and no steps.
94068
95923
  * - `group-content`: Not drawn: a group drawn from data stands for its heading, and its lines are rows beside it.
94069
95924
  * - `group-duration`: How long a step drawn from `groups` took.
94070
95925
  * - `group-heading`: The heading of a step drawn from `groups`.
@@ -94110,7 +95965,7 @@ export type CustomElementsSolidJs = {
94110
95965
  * These can be used to apply styling when a component is in a given state.
94111
95966
  *
94112
95967
  * - `done`: The run is over: `done` is set, or `source` ended.
94113
- * - `empty`: The log has no lines.
95968
+ * - `empty`: The log has no lines and no steps.
94114
95969
  * - `filtered`: `query` or `level` is set, so only the lines they keep are shown.
94115
95970
  * - `pinned`: The log follows its newest line.
94116
95971
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
@@ -95079,6 +96934,16 @@ export type CustomElementsSolidJs = {
95079
96934
  * - `tilt-live`: `tilt`'s live region, which speaks while it is pending.
95080
96935
  * - `tilt-spinner`: The ring `tilt` turns while it is pending.
95081
96936
  * - `tilt-text`: The box `tilt`'s glyph sits in.
96937
+ * - `tooltip-arrow`: The arrow of the tooltip that names each button, forwarded from `Tooltip`.
96938
+ * - `tooltip-arrow-bottom`: The arrow while the bubble is below its button, on the bubble's top edge. Set together with `tooltip-arrow`.
96939
+ * - `tooltip-arrow-left`: The arrow while the bubble is left of its button, on the bubble's right edge. Set together with `tooltip-arrow`.
96940
+ * - `tooltip-arrow-right`: The arrow while the bubble is right of its button, on the bubble's left edge. Set together with `tooltip-arrow`.
96941
+ * - `tooltip-arrow-top`: The arrow while the bubble is above its button, on the bubble's bottom edge. Set together with `tooltip-arrow`.
96942
+ * - `tooltip-surface`: The bubble of the tooltip that names each button, forwarded from `Tooltip`.
96943
+ * - `tooltip-surface-bottom`: The bubble while it is below its button. Set together with `tooltip-surface`.
96944
+ * - `tooltip-surface-left`: The bubble while it is left of its button. Set together with `tooltip-surface`.
96945
+ * - `tooltip-surface-right`: The bubble while it is right of its button. Set together with `tooltip-surface`.
96946
+ * - `tooltip-surface-top`: The bubble while it is above its button. Set together with `tooltip-surface`.
95082
96947
  * - `viewport`: The box the map is drawn in.
95083
96948
  * - `zoom-in`: The button that zooms in.
95084
96949
  * - `zoom-in-button`: `zoom-in`'s inner button.
@@ -96142,6 +98007,7 @@ export type CustomElementsSolidJs = {
96142
98007
  *
96143
98008
  * These can be used to apply styling when a component is in a given state.
96144
98009
  *
98010
+ * - `start`: A row in the section has content before its label, so every row in it keeps the leading column. The menu decides it for each section, apart from the rows outside one.
96145
98011
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
96146
98012
  */
96147
98013
  "helix-headless-menu-section": Partial<
@@ -96152,7 +98018,9 @@ export type CustomElementsSolidJs = {
96152
98018
  >;
96153
98019
 
96154
98020
  /**
96155
- * A meter shows a level within a range. Use `Progress` to show how far along a
98021
+ * A meter shows a level within a range, or how the level divides: write
98022
+ * `Meter.Segment` inside it for each part of the whole, and the meter measures
98023
+ * their sum. Use `Progress` to show how far along a
96156
98024
  * task is. A progress bar starts empty and ends full, and full is always the
96157
98025
  * good end. For a meter, which end is good depends on what is measured. There
96158
98026
  * is no `indeterminate`, because a meter always has a value.
@@ -96312,6 +98180,7 @@ export type CustomElementsSolidJs = {
96312
98180
  *
96313
98181
  * Areas where markup can be added to the component.
96314
98182
  *
98183
+ * - `(default)`: `Meter.Segment` elements, one for each share of the whole, drawn in the bar.
96315
98184
  * - `label`: A visible label. Its words name the meter in place of `label`.
96316
98185
  *
96317
98186
  * ## CSS Custom Properties
@@ -96321,6 +98190,7 @@ export type CustomElementsSolidJs = {
96321
98190
  * - `--meter-along`: Where a bound sits on the arc, as a length along it.
96322
98191
  * - `--meter-at`: Where a bound sits on a linear track, as a percentage.
96323
98192
  * - `--meter-fraction`: The value as a fraction of the range, 0 to 1.
98193
+ * - `--meter-span`: How much the range holds, `max` less `min`, which a segment divides its own value by to find its width.
96324
98194
  * - `--meter-sweep`: How much of the circle the arc covers, as a path length.
96325
98195
  *
96326
98196
  * ## CSS Parts
@@ -96357,6 +98227,90 @@ export type CustomElementsSolidJs = {
96357
98227
  BaseEvents<HelixHeadlessMeter>
96358
98228
  >;
96359
98229
 
98230
+ /**
98231
+ * A segment says how much of the range one part of the whole takes, such as the
98232
+ * tokens a model's context holds for its tools, against the tokens it holds for
98233
+ * the conversation. Write one for each part inside a `Meter`.
98234
+ *
98235
+ * **The meter's reading is the sum of its segments.** `value` on the meter is
98236
+ * ignored while it has any, so the two cannot disagree, and the bands, the ticks
98237
+ * and the reading answer to the total. A segment is drawn as wide as its `value`
98238
+ * is of the meter's range, so segments that add up to less than the range leave
98239
+ * the rest of the track empty, and ones that add up to more are cut at the end.
98240
+ *
98241
+ * **A meter's children are presentational to a screen reader**, so a segment
98242
+ * reaches no one that cannot see the bar. Say the breakdown in text beside it,
98243
+ * such as a list with the name and the amount of each part, which is also where a
98244
+ * reader finds the exact figures.
98245
+ *
98246
+ * A segment draws only in the bar. A meter in `ring` or `arc` draws its total.
98247
+ *
98248
+ * ## Attributes & Properties
98249
+ *
98250
+ * Component attributes and properties that can be applied to the element or by using JavaScript.
98251
+ *
98252
+ * - `label`: What the segment is, such as "Tools", which names the slice when a pointer
98253
+ * rests on it.
98254
+ *
98255
+ * Not announced: see the note on a meter's children above.
98256
+ * - `tone`: What the segment means, as it does on a callout. Takes the tone's color in
98257
+ * place of the next color in the series.
98258
+ * - `value`: How much of the meter's range the segment takes, in the units of the meter's
98259
+ * `min` and `max`.
98260
+ *
98261
+ * A value that is not a number, or is below zero, draws nothing.
98262
+ * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
98263
+ *
98264
+ * **Named `whenSettled` because `settled` is taken four times over**, by
98265
+ * Image, Splitter and both color controls, none of them about transitions. A
98266
+ * base class takes the name every subclass then cannot use.
98267
+ *
98268
+ * **The state it reports cannot be watched, which is why this exists.** A
98269
+ * custom state is deliberately not in the DOM, so there is no
98270
+ * `MutationObserver` equivalent for `ElementInternals.states`. Await this
98271
+ * instead.
98272
+ *
98273
+ * Separate from `updateComplete`, which resolves in the microtask checkpoint
98274
+ * the suppression is still active in. That is the distinction `readyToMove`
98275
+ * in `@fusion.dev/helix-testing` is written around.
98276
+ *
98277
+ * It never resolves where `requestAnimationFrame` never fires, which is a
98278
+ * server, a hidden tab, and happy-dom. Callers that must not hang there race
98279
+ * it against a timeout, as the happy-dom harness's `readyToMove` does. The
98280
+ * browser harness's awaits it alone: a browser always runs the frame, and a
98281
+ * timer beside it was a bet on how long one takes, which a busy run lost. (property only) (readonly)
98282
+ *
98283
+ * ## Slots
98284
+ *
98285
+ * Areas where markup can be added to the component.
98286
+ *
98287
+ * - `(default)`: Nothing. A segment draws its share and has no content.
98288
+ *
98289
+ * ## CSS Custom Properties
98290
+ *
98291
+ * CSS variables available for styling the component.
98292
+ *
98293
+ * - `--meter-segment-value`: How much of the range the segment takes, in the meter's own units.
98294
+ *
98295
+ * ## CSS Parts
98296
+ *
98297
+ * Custom selectors for styling elements within the component.
98298
+ *
98299
+ * - `fill`: The slice of the bar the segment takes.
98300
+ *
98301
+ * ## CSS States
98302
+ *
98303
+ * These can be used to apply styling when a component is in a given state.
98304
+ *
98305
+ * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
98306
+ */
98307
+ "helix-headless-meter-segment": Partial<
98308
+ HelixHeadlessMeterSegmentProps &
98309
+ HelixHeadlessMeterSegmentSolidJsProps &
98310
+ BaseProps<HelixHeadlessMeterSegment, "solid"> &
98311
+ BaseEvents<HelixHeadlessMeterSegment>
98312
+ >;
98313
+
96360
98314
  /**
96361
98315
  * WCAG 2.2.2 asks that motion which starts by itself and runs longer than
96362
98316
  * five seconds can be paused. **This is one control for the whole page**: a
@@ -100722,6 +102676,11 @@ export type CustomElementsSolidJs = {
100722
102676
  * scrollbar, the browser's or the component's, and clips what is past it.
100723
102677
  * Leave it unset to scroll both ways.
100724
102678
  *
102679
+ * **A mask on the viewport also masks the browser's scrollbar.** While a
102680
+ * scrollbar takes room beside the content, the viewport carries its size in
102681
+ * `--scroll-area-gutter-inline-end` or `--scroll-area-gutter-block-end`, so a
102682
+ * mask can leave that room opaque. The styled tier's fades use them.
102683
+ *
100725
102684
  * The viewport's `scroll` and `scrollend` are sent again from the host, which
100726
102685
  * is the element you hold. A thumb dragged across the content sends one
100727
102686
  * `scrollend`, once it is let go. In React, bind them with `onScroll` and
@@ -100801,6 +102760,8 @@ export type CustomElementsSolidJs = {
100801
102760
  *
100802
102761
  * CSS variables available for styling the component.
100803
102762
  *
102763
+ * - `--scroll-area-gutter-block-end`: The room the browser's horizontal scrollbar takes at the block end of the viewport, in pixels. Written on the `viewport` part while that scrollbar takes room, and absent while it draws over the content.
102764
+ * - `--scroll-area-gutter-inline-end`: The room the browser's vertical scrollbar takes at the inline end of the viewport, in pixels. Written on the `viewport` part while that scrollbar takes room, and absent while it draws over the content.
100804
102765
  * - `--scroll-area-scroll-fraction`: How far along its axis the content is scrolled, from 0 at the start to 1 at the end. Written on each `scrollbar` part, so its thumb inherits it. Counted from the right on a right-to-left page.
100805
102766
  * - `--scroll-area-thumb-fraction`: The share of the track the thumb covers, from 0 to 1, which is how much of the content is in view. Written on each `scrollbar` part.
100806
102767
  *
@@ -100809,7 +102770,7 @@ export type CustomElementsSolidJs = {
100809
102770
  * Custom selectors for styling elements within the component.
100810
102771
  *
100811
102772
  * - `corner`: The square where the two scrollbars meet, under `scrollbars`. Hidden unless both are drawn.
100812
- * - `edges`: The layer that draws the cues on the inline start and end edges.
102773
+ * - `edges`: The layer over the viewport. The styled tier draws the focus ring on it, and the painted fades at the inline start and end.
100813
102774
  * - `scrollbar`: Each scrollbar, under `scrollbars`. Hidden on an axis that has none.
100814
102775
  * - `scrollbar-horizontal`: The scrollbar along the inline axis, alongside `scrollbar`.
100815
102776
  * - `scrollbar-vertical`: The scrollbar along the block axis, alongside `scrollbar`.
@@ -102089,6 +104050,11 @@ export type CustomElementsSolidJs = {
102089
104050
  * depth, each as tall as its value from zero and colored by its series, so
102090
104051
  * one series is a single row of bars and several make a block of them.
102091
104052
  *
104053
+ * **A cell's `data-tone` colors its own bar and writes its value above it**,
104054
+ * such as `data-tone="primary"` on the one reading a chart is about, as on
104055
+ * `Bar Chart`. The value is the cell's own text. Without a tone, a bar takes
104056
+ * its series' color.
104057
+ *
102092
104058
  * **The flat `Bar Chart` is read more exactly.** Measured, a reader judges
102093
104059
  * a 3D bar's value less closely than a flat one's, and a bar can stand
102094
104060
  * behind another. Use this one where the shape across two sets of names
@@ -102137,16 +104103,73 @@ export type CustomElementsSolidJs = {
102137
104103
  *
102138
104104
  * Component attributes and properties that can be applied to the element or by using JavaScript.
102139
104105
  *
102140
- * - `no-box`/`noBox`: Draws no box: no edges, grid, numbers, or names, so the readings stand
102141
- * alone and fill the plot, as a picture on a product's own page does. The
104106
+ * - `grow`: Grows the bars up from the floor the first time the chart comes into
104107
+ * view with readings, each category a little after the one before it, so
104108
+ * the drawing arrives the way a page's own picture does. The growth is
104109
+ * fast at first, slows to rest, and never passes a bar's value.
104110
+ *
104111
+ * Under `prefers-reduced-motion`, or where the page has paused its motion
104112
+ * through `pauseMotion` or `Motion Toggle`, the bars stand at their height
104113
+ * from the start. A later table draws the bars it already had at their
104114
+ * height, and grows the bars it adds, each from the floor, so a reading that
104115
+ * arrives while the chart is in view arrives the same way.
104116
+ * - `grow-again`/`growAgain`: Grows the bars again each time the chart comes back into view after it
104117
+ * left it, as a pane does when it is opened again, where `grow` alone grows
104118
+ * them the first time only. Only a chart that grows takes it.
104119
+ *
104120
+ * While it is out of view the bars stand at the floor, so the first frame
104121
+ * after it returns is the start of the growth and never a flash at full
104122
+ * height.
104123
+ * - `no-box`/`noBox`: Draws no box: no edges, grid, numbers, or names, and in a `row` no
104124
+ * floor, so the readings stand alone and fill the plot, as a picture on a
104125
+ * product's own page does. The
102142
104126
  * table, the summary, the tooltip, and the keys still carry every value,
102143
104127
  * and a renderer draws no box either.
102144
104128
  * - `open-label`/`openLabel`: What the readout says for a place with no value. `{category}` and
102145
104129
  * `{series}` name the place.
102146
104130
  * - `plot-label`/`plotLabel`: The plot's name where the chart has none: no `aria-label`, `label`, or table caption.
104131
+ * - `stacked`: Stacks a category's series into one column, each block standing on the
104132
+ * ones before it, so the column is as tall as the category's total, as a
104133
+ * flat `Bar Chart` stacks them.
104134
+ *
104135
+ * Absent stands the series one behind another in depth. Stacked, every
104136
+ * series stands in the front row, so none hides another, and the parts of
104137
+ * one total read together. A negative reading hangs below zero on the
104138
+ * negatives before it. The scale fits the stacks.
102147
104139
  * - `summary-label`/`summaryLabel`: The `summary` part's sentence. `{count}`, `{series}`, and `{categories}`
102148
104140
  * are the number of bars, series, and categories, written in the locale,
102149
104141
  * and `{low}` and `{high}` the lowest and the highest value.
104142
+ * - `variant`: How the bars stand.
104143
+ *
104144
+ * Unset, they stand on a grid of categories across and series in depth,
104145
+ * in a box the camera looks at from a corner, so the grid recedes at an
104146
+ * angle. `row` lays the categories in a straight line across the page and
104147
+ * turns each bar to the camera, showing its top and two sides, for one row
104148
+ * of readings in a small space such as a pane: turning the view turns each
104149
+ * bar where it stands, and the row stays level. It is the chart's own
104150
+ * drawing that lays the row: a renderer connected through
104151
+ * `@fusion.dev/helix-plot` stands the bars on the grid.
104152
+ *
104153
+ * `diagonal` is the same row climbing to the right as it recedes, each
104154
+ * place a step further back than the one before, as a row of days on a
104155
+ * product's page is drawn: the row rises one part in five across the page
104156
+ * from any turn, and its floor and names climb with it. A row whose bars
104157
+ * have a size climbs at most a quarter of the plot's height, so the bars
104158
+ * of a long row keep theirs.
104159
+ *
104160
+ * **A row draws its floor in place of a box**: each place as an outline a
104161
+ * little wider than its bar, and each category's name under it, as many
104162
+ * names as fit without touching. A name whose bar names a tone is written
104163
+ * first, in that tone. `no-box` leaves the floor and the names out.
104164
+ *
104165
+ * **A `column-gap` on the `fallback` part gives a row's bars one width**,
104166
+ * which the styled tier sets from `--spatial-bar-chart-bar-size`: one bar
104167
+ * stands as wide as each of twenty, the row is as long as its bars and
104168
+ * centered, the tallest bar stands as high as the plot has room for and
104169
+ * no taller than the row is long and a quarter again, so one bar stands
104170
+ * as a block, and `fits` says how many bars the plot holds, so a page
104171
+ * can give it the latest of a longer table. It is read when the plot's
104172
+ * size changes.
102150
104173
  * - `empty-text`/`emptyText`: The words shown in place of the drawing when the table has no readings,
102151
104174
  * and the fallback of the `empty` slot.
102152
104175
  * - `loading`: Whether the readings are still on their way. The chart shows
@@ -102207,6 +104230,11 @@ export type CustomElementsSolidJs = {
102207
104230
  * column a series.** A renderer reads it. (property only) (readonly)
102208
104231
  * - `active`: The bar the keys or the pointer rest on, as its place in `field.cells`, or `-1`. (property only) (readonly)
102209
104232
  * - `readings`: The number of places on the grid, which the keys walk. (property only) (readonly)
104233
+ * - `fits`: How many categories a `row` or a `diagonal` has room for across the
104234
+ * plot at its bar size, measured as it is read, or
104235
+ * `undefined` where there is no row, no bar size, or nothing drawn to
104236
+ * measure. A page with a longer table gives the chart its latest that
104237
+ * many rows, and says so. (property only) (readonly)
102210
104238
  * - `sounding`: Whether the chart is playing as sound now. (property only) (readonly)
102211
104239
  * - `data`: The readings as data, in the shape of a table, where the page has no
102212
104240
  * table to point `for` at. `for` wins where both are set.
@@ -102338,7 +104366,14 @@ export type CustomElementsSolidJs = {
102338
104366
  *
102339
104367
  * CSS variables available for styling the component.
102340
104368
  *
102341
- * - `--spatial-bar-chart-shade`: How far a bar's face turns from the light, from 0 for its top. The component writes it on each face, and the stylesheet that shades the face reads it.
104369
+ * - `--spatial-bar-chart-shade -How far a bar's face turns from the light, from 0 for its top. The component writes it on each face, and the stylesheet that shades the face reads it.`: undefined
104370
+ * - `--spatial-bar-chart-tone-accent`: The color of a bar whose cell says `data-tone="accent"`.
104371
+ * - `--spatial-bar-chart-tone-danger`: The color of a bar whose cell says `data-tone="danger"`.
104372
+ * - `--spatial-bar-chart-tone-info`: The color of a bar whose cell says `data-tone="info"`.
104373
+ * - `--spatial-bar-chart-tone-muted`: The color of a bar whose cell says `data-tone="muted"`.
104374
+ * - `--spatial-bar-chart-tone-primary`: The color of a bar whose cell says `data-tone="primary"`. A tone with no property of its own falls back to the bar's series color, and the same holds for a name you define.
104375
+ * - `--spatial-bar-chart-tone-success`: The color of a bar whose cell says `data-tone="success"`.
104376
+ * - `--spatial-bar-chart-tone-warning`: The color of a bar whose cell says `data-tone="warning"`.
102342
104377
  *
102343
104378
  * ## CSS Parts
102344
104379
  *
@@ -102351,6 +104386,8 @@ export type CustomElementsSolidJs = {
102351
104386
  * - `empty`: The words when the table has no readings: the `empty` slot, falling back to `empty-text`.
102352
104387
  * - `face`: One face of a bar the view shows, shaded by which way it faces.
102353
104388
  * - `fallback`: The box the chart's own drawing fills, shown until a renderer has drawn and where none is connected. Hidden from screen readers.
104389
+ * - `floor`: One place on the floor of a `row`, under a bar or where one would stand, drawn as its outline.
104390
+ * - `glow`: The outline of a bar whose cell names a tone, blurred by 8 CSS pixels and painted under the bar, with no fill until a stylesheet gives it one: a soft glow in the bar's tone.
102354
104391
  * - `grid`: The box's edges and its grid, in the chart's own drawing.
102355
104392
  * - `live`: The readout: a polite live region that says the bar the keys moved to. Hide it visually.
102356
104393
  * - `loading`: The words while `loading` is set and there are no readings.
@@ -102362,7 +104399,7 @@ export type CustomElementsSolidJs = {
102362
104399
  * - `summary`: The number of bars, series, and categories, and the range of values, written as a sentence for screen readers, which describes the plot. Hide it visually.
102363
104400
  * - `table`: The readings as a table, for a screen reader, rendered only where they were drawn from `data`, a page of them at a time past a few hundred. Hide it visually.
102364
104401
  * - `table-pages`: Which readings a page of the `table` holds, and the buttons that show the previous and the next page, rendered only while it holds a page. Hide it visually.
102365
- * - `tick`: A category's or a series' name, or a value at a tick, along its edge of the box, in the chart's own drawing.
104402
+ * - `tick`: A category's or a series' name, or a value at a tick, along its edge of the box, or a category's name under its place in a `row`, in the chart's own drawing.
102366
104403
  * - `tooltip-anchor`: The `Tooltip` element itself.
102367
104404
  * - `tooltip-arrow`: The bubble's point, forwarded from `Tooltip`.
102368
104405
  * - `tooltip-arrow-bottom`: The point while the bubble is below the reading, on its top edge. Set alongside `tooltip-arrow`.
@@ -102379,6 +104416,7 @@ export type CustomElementsSolidJs = {
102379
104416
  * - `tooltip-surface-right`: The bubble while it is right of the reading. Set alongside `tooltip-surface`.
102380
104417
  * - `tooltip-surface-top`: The bubble while it is above the reading. Set alongside `tooltip-surface`.
102381
104418
  * - `tooltip-value`: A column's value inside the tooltip.
104419
+ * - `value`: The value of a bar whose cell names a tone, written above it in the chart's own drawing.
102382
104420
  *
102383
104421
  * ## CSS States
102384
104422
  *
@@ -106395,6 +108433,10 @@ export type CustomElementsSolidJs = {
106395
108433
  *
106396
108434
  * A tab with `dismissible` can be closed: see `Tabs.Tab`.
106397
108435
  *
108436
+ * **Panels are optional.** A set with none is a strip whose tabs stand for
108437
+ * something the page shows elsewhere: the keys, the selection, `active` and
108438
+ * `helix-activate` work the same, and no tab names a panel it controls.
108439
+ *
106398
108440
  * The `indicator` part moves to the selected tab and carries its place and
106399
108441
  * size, so a mark of your own can be drawn there: style the part, or slot an
106400
108442
  * element into `indicator`, which sits inside the part and reads the same
@@ -106630,6 +108672,7 @@ export type CustomElementsSolidJs = {
106630
108672
  *
106631
108673
  * - `dismiss`: The mark a pointer presses to close a `dismissible` tab.
106632
108674
  * - `dismiss-mark`: The glyph on that mark, where none is slotted.
108675
+ * - `label`: The slot the tab's label is in.
106633
108676
  * - `tab`: The tab itself.
106634
108677
  *
106635
108678
  * ## CSS States
@@ -106866,7 +108909,7 @@ export type CustomElementsSolidJs = {
106866
108909
  *
106867
108910
  * - `(default)`: The tag's label.
106868
108911
  * - `dismiss-icon`: Replaces the glyph on the remove button.
106869
- * - `start`: The category the label belongs to, shown before it in a heavier weight.
108912
+ * - `start`: The category the label belongs to, shown before it in a heavier weight, or an icon.
106870
108913
  *
106871
108914
  * ## Methods
106872
108915
  *
@@ -107018,6 +109061,7 @@ export type CustomElementsSolidJs = {
107018
109061
  * Events that will be emitted by the component.
107019
109062
  *
107020
109063
  * - `helix-copy`: The copy control or its key put the selection on the clipboard.
109064
+ * - `helix-found`: The find bar searched or moved among the matches, with `count` and the current match's `index`, counting from 0, or -1 for none.
107021
109065
  * - `helix-terminal-bell`: The program rang the bell. The frame flashes once.
107022
109066
  * - `helix-terminal-input`: The reader typed or pasted, with `data` encoded for the program. Write it to the process. Not sent while `readonly`, or once `exit-code` is set.
107023
109067
  * - `helix-terminal-link`: A link in the output was activated, with its `href`. Cancelable: cancel it to open the link yourself. Left alone, a web address opens in a new tab.
@@ -107118,23 +109162,23 @@ export type CustomElementsSolidJs = {
107118
109162
  * - `copy-spinner`: The ring the copy button turns while it is pending.
107119
109163
  * - `copy-text`: The box the copy button's icon sits in.
107120
109164
  * - `exit-actions`: The `exit-actions` slot, beside Restart in the status line.
107121
- * - `find`: The button that opens and closes the find bar. Expanded while it is open.
107122
- * - `find-actions`: The `find-actions` slot, first in the find bar's toolbar.
107123
- * - `find-bar`: The bar under the header where the reader searches the output.
107124
- * - `find-button`: The find button's inner button.
109165
+ * - `find`: The find bar under the header, where the reader searches the output: a Find of its own.
109166
+ * - `find-actions`: The `find-actions` slot, in the find bar's toolbar.
109167
+ * - `find-bar`: The find bar's strip: the field, the count, and the toolbar.
107125
109168
  * - `find-close`: The button that closes the find bar.
107126
109169
  * - `find-close-button`: The find bar's close button's inner button.
107127
109170
  * - `find-close-live`: The find bar's close button's live region, which speaks while the button is pending.
107128
109171
  * - `find-close-spinner`: The ring the find bar's close button turns while it is pending.
107129
109172
  * - `find-close-text`: The box the find bar's close button's icon sits in.
107130
- * - `find-controls`: The toolbar at the end of the find bar: your find actions, then the buttons that move between matches and close the bar.
109173
+ * - `find-controls`: The toolbar at the end of the find bar: the options, your find actions, and the buttons that move between matches and close the bar.
107131
109174
  * - `find-controls-toolbar`: The box inside the find bar's toolbar that lays its buttons out.
107132
109175
  * - `find-count`: Which match is current and how many there are, such as "3 of 12 matches".
107133
109176
  * - `find-field`: The search field in the find bar.
107134
- * - `find-live`: The find button's live region, which speaks while the button is pending.
109177
+ * - `find-live`: The find bar's live region, which says the count as it changes.
107135
109178
  * - `find-match-case`: The button that matches case in the find bar. Pressed while it does.
107136
109179
  * - `find-match-case-button`: The match case button's inner button.
107137
109180
  * - `find-match-case-live`: The match case button's live region, which speaks while the button is pending.
109181
+ * - `find-match-case-pressed`: The match case button while case has to match, beside `find-match-case`.
107138
109182
  * - `find-match-case-spinner`: The ring the match case button turns while it is pending.
107139
109183
  * - `find-match-case-text`: The box the match case button's icon sits in.
107140
109184
  * - `find-next`: The button that moves to the next match.
@@ -107150,13 +109194,34 @@ export type CustomElementsSolidJs = {
107150
109194
  * - `find-regex`: The button that reads the find field as a regular expression. Pressed while it does.
107151
109195
  * - `find-regex-button`: The regular expression button's inner button.
107152
109196
  * - `find-regex-live`: The regular expression button's live region, which speaks while the button is pending.
109197
+ * - `find-regex-pressed`: The regular expression button while the field reads as one, beside `find-regex`.
107153
109198
  * - `find-regex-spinner`: The ring the regular expression button turns while it is pending.
107154
109199
  * - `find-regex-text`: The box the regular expression button's icon sits in.
107155
- * - `find-spinner`: The ring the find button turns while it is pending.
107156
- * - `find-text`: The box the find button's icon sits in.
109200
+ * - `find-replace`: The find bar's Replace button, which a terminal does not draw, since its output cannot be changed.
109201
+ * - `find-replace-all`: The find bar's Replace all button, which a terminal does not draw.
109202
+ * - `find-replace-all-button`: The Replace all button's inner button.
109203
+ * - `find-replace-all-live`: The Replace all button's live region, which speaks while the button is pending.
109204
+ * - `find-replace-all-spinner`: The ring the Replace all button turns while it is pending.
109205
+ * - `find-replace-all-text`: The box the Replace all button's words sits in.
109206
+ * - `find-replace-button`: The Replace button's inner button.
109207
+ * - `find-replace-field`: The find bar's replace field, which a terminal does not draw.
109208
+ * - `find-replace-live`: The Replace button's live region, which speaks while the button is pending.
109209
+ * - `find-replace-spinner`: The ring the Replace button turns while it is pending.
109210
+ * - `find-replace-text`: The box the Replace button's words sits in.
109211
+ * - `find-replace-toggle`: The button that shows the find bar's replace row, which a terminal does not draw.
109212
+ * - `find-replace-toggle-button`: The replace toggle's inner button.
109213
+ * - `find-replace-toggle-live`: The replace toggle's live region, which speaks while the button is pending.
109214
+ * - `find-replace-toggle-spinner`: The ring the replace toggle turns while it is pending.
109215
+ * - `find-replace-toggle-text`: The box the replace toggle's icon sits in.
109216
+ * - `find-toggle`: The button in the header that opens and closes the find bar. Expanded while it is open.
109217
+ * - `find-toggle-button`: The find button's inner button.
109218
+ * - `find-toggle-live`: The find button's live region, which speaks while the button is pending.
109219
+ * - `find-toggle-spinner`: The ring the find button turns while it is pending.
109220
+ * - `find-toggle-text`: The box the find button's icon sits in.
107157
109221
  * - `find-whole-word`: The button that matches whole words only in the find bar. Pressed while it does.
107158
109222
  * - `find-whole-word-button`: The whole word button's inner button.
107159
109223
  * - `find-whole-word-live`: The whole word button's live region, which speaks while the button is pending.
109224
+ * - `find-whole-word-pressed`: The whole word button while only whole words match, beside `find-whole-word`.
107160
109225
  * - `find-whole-word-spinner`: The ring the whole word button turns while it is pending.
107161
109226
  * - `find-whole-word-text`: The box the whole word button's icon sits in.
107162
109227
  * - `fullscreen`: The button that makes the terminal fill the screen. Pressed while it does.
@@ -107174,6 +109239,16 @@ export type CustomElementsSolidJs = {
107174
109239
  * - `restart-spinner`: The ring the Restart button turns while it is pending.
107175
109240
  * - `restart-text`: The Restart button's label.
107176
109241
  * - `status`: The line under the terminal that says the process exited, or that Tab moves focus.
109242
+ * - `tooltip-arrow`: The arrow of the tooltip that names each button, forwarded from `Tooltip`.
109243
+ * - `tooltip-arrow-bottom`: The arrow while the bubble is below its button, on the bubble's top edge. Set together with `tooltip-arrow`.
109244
+ * - `tooltip-arrow-left`: The arrow while the bubble is left of its button, on the bubble's right edge. Set together with `tooltip-arrow`.
109245
+ * - `tooltip-arrow-right`: The arrow while the bubble is right of its button, on the bubble's left edge. Set together with `tooltip-arrow`.
109246
+ * - `tooltip-arrow-top`: The arrow while the bubble is above its button, on the bubble's bottom edge. Set together with `tooltip-arrow`.
109247
+ * - `tooltip-surface`: The bubble of the tooltip that names each button, forwarded from `Tooltip`.
109248
+ * - `tooltip-surface-bottom`: The bubble while it is below its button. Set together with `tooltip-surface`.
109249
+ * - `tooltip-surface-left`: The bubble while it is left of its button. Set together with `tooltip-surface`.
109250
+ * - `tooltip-surface-right`: The bubble while it is right of its button. Set together with `tooltip-surface`.
109251
+ * - `tooltip-surface-top`: The bubble while it is above its button. Set together with `tooltip-surface`.
107177
109252
  * - `viewport`: The box the terminal is drawn in.
107178
109253
  *
107179
109254
  * ## CSS States
@@ -109518,7 +111593,10 @@ export type CustomElementsSolidJs = {
109518
111593
  * The toolbar is one tab stop, and the arrow keys move between its controls, so
109519
111594
  * three toolbars take three presses of Tab to pass. Any element the browser can
109520
111595
  * focus counts as a control, including your own elements. A child that takes no
109521
- * focus, such as a divider, is skipped. A menu is reached at its trigger.
111596
+ * focus, such as a divider, is skipped. A menu is reached at its trigger. A
111597
+ * disabled control is skipped too, except a Button with
111598
+ * `focusable-when-disabled`, which the arrows still reach so its tooltip can
111599
+ * say why it is disabled.
109522
111600
  *
109523
111601
  * A Divider in the toolbar is a separator across the toolbar's axis, as React
109524
111602
  * Aria's is: vertical in a horizontal toolbar and horizontal in a vertical
@@ -110284,6 +112362,10 @@ export type CustomElementsSolidJs = {
110284
112362
  * A `disabled` item is reached by the arrow keys and announced as unavailable,
110285
112363
  * and a press, Enter or Space on it does nothing.
110286
112364
  *
112365
+ * A closed branch's children are hidden until found: the browser's find and
112366
+ * Find search them, and the branch opens on the one that holds the match,
112367
+ * unless `helix-before-open` is canceled.
112368
+ *
110287
112369
  * A `lazy` item is a branch whose children you load when it opens: opening it
110288
112370
  * sends `helix-load`, the row says it is busy, and the children you add appear
110289
112371
  * in it. Remove `lazy` once they are in.
@@ -112251,8 +114333,12 @@ export type CustomCssProperties = {
112251
114333
  "--meter-at"?: (string) | undefined;
112252
114334
  /** The value as a fraction of the range, 0 to 1. */
112253
114335
  "--meter-fraction"?: (string) | undefined;
114336
+ /** How much the range holds, `max` less `min`, which a segment divides its own value by to find its width. */
114337
+ "--meter-span"?: (string) | undefined;
112254
114338
  /** How much of the circle the arc covers, as a path length. */
112255
114339
  "--meter-sweep"?: (string) | undefined;
114340
+ /** How much of the range the segment takes, in the meter's own units. */
114341
+ "--meter-segment-value"?: (string) | undefined;
112256
114342
  /** How deep a row is, from 0 at the root, for indenting it. */
112257
114343
  "--object-inspector-level"?: (string) | undefined;
112258
114344
  /** The value as a fraction of the range, 0 to 1. Pinned to 1 while indeterminate. */
@@ -112273,6 +114359,10 @@ export type CustomCssProperties = {
112273
114359
  "--chart-point-y"?: (string) | undefined;
112274
114360
  /** A tick's position along its axis, as a percentage. The component writes it. */
112275
114361
  "--chart-tick"?: (string) | undefined;
114362
+ /** The room the browser's horizontal scrollbar takes at the block end of the viewport, in pixels. Written on the `viewport` part while that scrollbar takes room, and absent while it draws over the content. */
114363
+ "--scroll-area-gutter-block-end"?: (string) | undefined;
114364
+ /** The room the browser's vertical scrollbar takes at the inline end of the viewport, in pixels. Written on the `viewport` part while that scrollbar takes room, and absent while it draws over the content. */
114365
+ "--scroll-area-gutter-inline-end"?: (string) | undefined;
112276
114366
  /** How far along its axis the content is scrolled, from 0 at the start to 1 at the end. Written on each `scrollbar` part, so its thumb inherits it. Counted from the right on a right-to-left page. */
112277
114367
  "--scroll-area-scroll-fraction"?: (string) | undefined;
112278
114368
  /** The share of the track the thumb covers, from 0 to 1, which is how much of the content is in view. Written on each `scrollbar` part. */
@@ -112287,8 +114377,22 @@ export type CustomCssProperties = {
112287
114377
  "--slider-marker-at"?: (string) | undefined;
112288
114378
  /** Where the filled span ends, as a fraction of the track, 0 to 1: a range's upper thumb, or the farther of a single thumb and its `origin`. */
112289
114379
  "--slider-to"?: (string) | undefined;
112290
- /** How far a bar's face turns from the light, from 0 for its top. The component writes it on each face, and the stylesheet that shades the face reads it. */
112291
- "--spatial-bar-chart-shade"?: (string) | undefined;
114380
+ /** */
114381
+ "--spatial-bar-chart-shade -How far a bar's face turns from the light, from 0 for its top. The component writes it on each face, and the stylesheet that shades the face reads it."?: (string) | undefined;
114382
+ /** The color of a bar whose cell says `data-tone="accent"`. */
114383
+ "--spatial-bar-chart-tone-accent"?: (string) | undefined;
114384
+ /** The color of a bar whose cell says `data-tone="danger"`. */
114385
+ "--spatial-bar-chart-tone-danger"?: (string) | undefined;
114386
+ /** The color of a bar whose cell says `data-tone="info"`. */
114387
+ "--spatial-bar-chart-tone-info"?: (string) | undefined;
114388
+ /** The color of a bar whose cell says `data-tone="muted"`. */
114389
+ "--spatial-bar-chart-tone-muted"?: (string) | undefined;
114390
+ /** The color of a bar whose cell says `data-tone="primary"`. A tone with no property of its own falls back to the bar's series color, and the same holds for a name you define. */
114391
+ "--spatial-bar-chart-tone-primary"?: (string) | undefined;
114392
+ /** The color of a bar whose cell says `data-tone="success"`. */
114393
+ "--spatial-bar-chart-tone-success"?: (string) | undefined;
114394
+ /** The color of a bar whose cell says `data-tone="warning"`. */
114395
+ "--spatial-bar-chart-tone-warning"?: (string) | undefined;
112292
114396
  /** Where the `start` or the `end` label stands clear of the drawing, from the footer's inline start, in pixels. The component measures it and writes it on the label, with `data-placed`, as the view turns. */
112293
114397
  "--spatial-heatmap-label-x"?: (string) | undefined;
112294
114398
  /** Where the `start` or the `end` label stands clear of the drawing, from the footer's top, in pixels. The component measures it and writes it on the label, with `data-placed`, as the view turns. */