@fusion.dev/helix-headless 0.219.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.
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,
@@ -7221,6 +7223,9 @@ export type HelixHeadlessCodeEditorElementEvent<E = Event> = TypedEvent<
7221
7223
  /** `helix-before-change` event type */
7222
7224
  export type HelixHeadlessCodeEditorHelixBeforeChangeElementEvent =
7223
7225
  HelixHeadlessCodeEditorElementEvent<HelixBeforeChangeEvent>;
7226
+ /** `helix-found` event type */
7227
+ export type HelixHeadlessCodeEditorHelixFoundElementEvent =
7228
+ HelixHeadlessCodeEditorElementEvent<HelixFoundEvent>;
7224
7229
 
7225
7230
  export type HelixHeadlessCodeEditorProps = {
7226
7231
  /** The name of the header's toolbar, read by screen readers. */
@@ -7417,6 +7422,8 @@ Here rather than on each control. */
7417
7422
  "onhelix-before-change"?: ((
7418
7423
  e: HelixHeadlessCodeEditorHelixBeforeChangeElementEvent,
7419
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;
7420
7427
  /** Fired after the text changes. */
7421
7428
  oninput?: ((e: HelixHeadlessCodeEditorElementEvent) => void) | undefined;
7422
7429
  };
@@ -7615,6 +7622,8 @@ Here rather than on each control. */
7615
7622
  "on:helix-before-change"?: ((
7616
7623
  e: HelixHeadlessCodeEditorHelixBeforeChangeElementEvent,
7617
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;
7618
7627
  /** Fired after the text changes. */
7619
7628
  "on:input"?: ((e: HelixHeadlessCodeEditorElementEvent) => void) | undefined;
7620
7629
 
@@ -16623,6 +16632,268 @@ write a function in markup. See the class description. */
16623
16632
  textContent?: (string | number) | undefined;
16624
16633
  };
16625
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
+
16626
16897
  export type HelixHeadlessFormatDateProps = {
16627
16898
  /** The calendar a date is written in: `gregory`, `buddhist`, `japanese`,
16628
16899
  `roc`, or `iso8601`, or a calendar with months of its own, such as
@@ -36869,6 +37140,9 @@ export type HelixHeadlessTerminalElementEvent<E = Event> = TypedEvent<
36869
37140
  /** `helix-copy` event type */
36870
37141
  export type HelixHeadlessTerminalHelixCopyElementEvent =
36871
37142
  HelixHeadlessTerminalElementEvent<HelixCopyEvent>;
37143
+ /** `helix-found` event type */
37144
+ export type HelixHeadlessTerminalHelixFoundElementEvent =
37145
+ HelixHeadlessTerminalElementEvent<HelixFoundEvent>;
36872
37146
  /** `helix-terminal-bell` event type */
36873
37147
  export type HelixHeadlessTerminalHelixTerminalBellElementEvent =
36874
37148
  HelixHeadlessTerminalElementEvent<HelixTerminalBellEvent>;
@@ -37035,6 +37309,8 @@ write. Connect it to a setting your reader can turn on. */
37035
37309
 
37036
37310
  /** The copy control or its key put the selection on the clipboard. */
37037
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;
37038
37314
  /** The program rang the bell. The frame flashes once. */
37039
37315
  "onhelix-terminal-bell"?: ((
37040
37316
  e: HelixHeadlessTerminalHelixTerminalBellElementEvent,
@@ -37207,6 +37483,8 @@ write. Connect it to a setting your reader can turn on. */
37207
37483
  "prop:tabTypesLabel"?: (HelixHeadlessTerminal["tabTypesLabel"]) | undefined;
37208
37484
  /** The copy control or its key put the selection on the clipboard. */
37209
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;
37210
37488
  /** The program rang the bell. The frame flashes once. */
37211
37489
  "on:helix-terminal-bell"?: ((
37212
37490
  e: HelixHeadlessTerminalHelixTerminalBellElementEvent,
@@ -48947,6 +49225,7 @@ export type CustomElements<F extends Framework = "other"> = {
48947
49225
  *
48948
49226
  * - `change`: The reader finished an edit and focus left the code, in the engine or the plain field.
48949
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.
48950
49229
  * - `input`: Fired after the text changes.
48951
49230
  *
48952
49231
  * ## Slots
@@ -49039,9 +49318,9 @@ export type CustomElements<F extends Framework = "other"> = {
49039
49318
  * - `diagnostics`: The list of problems under the code, while there are any.
49040
49319
  * - `feedback`: The message that says what is wrong.
49041
49320
  * - `field`: The frame around the header, the code, the problems and the status line.
49042
- * - `find`: The button in the header that opens the find bar.
49043
- * - `find-bar`: The find bar under the header, while it is open.
49044
- * - `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.
49045
49324
  * - `find-close`: The button that closes the find bar.
49046
49325
  * - `find-close-button`: The close button's inner button.
49047
49326
  * - `find-close-live`: The close button's live region, which speaks while the button is pending.
@@ -49051,10 +49330,11 @@ export type CustomElements<F extends Framework = "other"> = {
49051
49330
  * - `find-controls-toolbar`: The box inside the find bar's toolbar that lays its buttons out.
49052
49331
  * - `find-count`: Which match is selected, of how many.
49053
49332
  * - `find-field`: The field the search is typed in.
49054
- * - `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.
49055
49334
  * - `find-match-case`: The option that finds only the same case. Pressed while it applies.
49056
49335
  * - `find-match-case-button`: The match case button's inner button.
49057
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`.
49058
49338
  * - `find-match-case-spinner`: The ring the match case button turns while it is pending.
49059
49339
  * - `find-match-case-text`: The box the match case button's icon sits in.
49060
49340
  * - `find-next`: The button that selects the next match.
@@ -49070,18 +49350,34 @@ export type CustomElements<F extends Framework = "other"> = {
49070
49350
  * - `find-regex`: The option that reads the search as a regular expression. Pressed while it applies.
49071
49351
  * - `find-regex-button`: The regular expression button's inner button.
49072
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`.
49073
49354
  * - `find-regex-spinner`: The ring the regular expression button turns while it is pending.
49074
49355
  * - `find-regex-text`: The box the regular expression button's icon sits in.
49075
- * - `find-replace`: The button that shows the replace field under the find field. Expanded while it shows.
49076
- * - `find-replace-button`: The find and replace button's inner button.
49077
- * - `find-replace-live`: The find and replace button's live region, which speaks while the button is pending.
49078
- * - `find-replace-spinner`: The ring the find and replace button turns while it is pending.
49079
- * - `find-replace-text`: The box the find and replace button's icon sits in.
49080
- * - `find-spinner`: The ring the Find button turns while it is pending.
49081
- * - `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.
49082
49377
  * - `find-whole-word`: The option that finds only whole words. Pressed while it applies.
49083
49378
  * - `find-whole-word-button`: The whole word button's inner button.
49084
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`.
49085
49381
  * - `find-whole-word-spinner`: The ring the whole word button turns while it is pending.
49086
49382
  * - `find-whole-word-text`: The box the whole word button's icon sits in.
49087
49383
  * - `header`: The strip above the code: the name, the language, and the controls.
@@ -49090,17 +49386,6 @@ export type CustomElements<F extends Framework = "other"> = {
49090
49386
  * - `language`: The language's name in the header.
49091
49387
  * - `position`: The caret's line and column, in the status line.
49092
49388
  * - `problem-count`: How many problems there are, in the status line.
49093
- * - `replace`: The button that replaces the selected match.
49094
- * - `replace-all`: The button that replaces every match.
49095
- * - `replace-all-button`: The Replace all button's inner button.
49096
- * - `replace-all-live`: The Replace all button's live region, which speaks while the button is pending.
49097
- * - `replace-all-spinner`: The ring the Replace all button turns while it is pending.
49098
- * - `replace-all-text`: The box the Replace all button's words sit in.
49099
- * - `replace-button`: The Replace button's inner button.
49100
- * - `replace-field`: The field the replacement is typed in.
49101
- * - `replace-live`: The Replace button's live region, which speaks while the button is pending.
49102
- * - `replace-spinner`: The ring the Replace button turns while it is pending.
49103
- * - `replace-text`: The box the Replace button's words sit in.
49104
49389
  * - `status`: The strip under the code.
49105
49390
  * - `view`: Where an engine draws, while one is connected.
49106
49391
  *
@@ -49111,7 +49396,6 @@ export type CustomElements<F extends Framework = "other"> = {
49111
49396
  * - `connected`: An engine draws the editor.
49112
49397
  * - `find-open`: The find bar is open.
49113
49398
  * - `invalid`: The editor has an error to show, from `required` or your `feedback`.
49114
- * - `replace-open`: The replace field shows under the find field.
49115
49399
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
49116
49400
  */
49117
49401
  "helix-headless-code-editor": Partial<
@@ -55790,6 +56074,223 @@ export type CustomElements<F extends Framework = "other"> = {
55790
56074
  BaseEvents<HelixHeadlessFilterInput>
55791
56075
  >;
55792
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
+
55793
56294
  /**
55794
56295
  * Formats a date with `Intl` where it is shown, so you do not write the same
55795
56296
  * `Intl` call and options in your own code.
@@ -59755,7 +60256,9 @@ export type CustomElements<F extends Framework = "other"> = {
59755
60256
  * the heading, as you write it, such as `12s`.
59756
60257
  *
59757
60258
  * A group starts shut. Write `default-open` on the step a reader should see,
59758
- * 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.
59759
60262
  *
59760
60263
  * ## Attributes & Properties
59761
60264
  *
@@ -59833,7 +60336,7 @@ export type CustomElements<F extends Framework = "other"> = {
59833
60336
  *
59834
60337
  * Custom selectors for styling elements within the component.
59835
60338
  *
59836
- * - `content`: The lines, hidden while the group is shut.
60339
+ * - `content`: The lines, hidden until found while the group is shut.
59837
60340
  * - `duration`: How long the step took.
59838
60341
  * - `heading`: The heading.
59839
60342
  * - `mark`: The caret that turns as the group opens, an `<svg>` you size.
@@ -73181,6 +73684,7 @@ export type CustomElements<F extends Framework = "other"> = {
73181
73684
  * Events that will be emitted by the component.
73182
73685
  *
73183
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.
73184
73688
  * - `helix-terminal-bell`: The program rang the bell. The frame flashes once.
73185
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.
73186
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.
@@ -73281,23 +73785,23 @@ export type CustomElements<F extends Framework = "other"> = {
73281
73785
  * - `copy-spinner`: The ring the copy button turns while it is pending.
73282
73786
  * - `copy-text`: The box the copy button's icon sits in.
73283
73787
  * - `exit-actions`: The `exit-actions` slot, beside Restart in the status line.
73284
- * - `find`: The button that opens and closes the find bar. Expanded while it is open.
73285
- * - `find-actions`: The `find-actions` slot, first in the find bar's toolbar.
73286
- * - `find-bar`: The bar under the header where the reader searches the output.
73287
- * - `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.
73288
73791
  * - `find-close`: The button that closes the find bar.
73289
73792
  * - `find-close-button`: The find bar's close button's inner button.
73290
73793
  * - `find-close-live`: The find bar's close button's live region, which speaks while the button is pending.
73291
73794
  * - `find-close-spinner`: The ring the find bar's close button turns while it is pending.
73292
73795
  * - `find-close-text`: The box the find bar's close button's icon sits in.
73293
- * - `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.
73294
73797
  * - `find-controls-toolbar`: The box inside the find bar's toolbar that lays its buttons out.
73295
73798
  * - `find-count`: Which match is current and how many there are, such as "3 of 12 matches".
73296
73799
  * - `find-field`: The search field in the find bar.
73297
- * - `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.
73298
73801
  * - `find-match-case`: The button that matches case in the find bar. Pressed while it does.
73299
73802
  * - `find-match-case-button`: The match case button's inner button.
73300
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`.
73301
73805
  * - `find-match-case-spinner`: The ring the match case button turns while it is pending.
73302
73806
  * - `find-match-case-text`: The box the match case button's icon sits in.
73303
73807
  * - `find-next`: The button that moves to the next match.
@@ -73313,13 +73817,34 @@ export type CustomElements<F extends Framework = "other"> = {
73313
73817
  * - `find-regex`: The button that reads the find field as a regular expression. Pressed while it does.
73314
73818
  * - `find-regex-button`: The regular expression button's inner button.
73315
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`.
73316
73821
  * - `find-regex-spinner`: The ring the regular expression button turns while it is pending.
73317
73822
  * - `find-regex-text`: The box the regular expression button's icon sits in.
73318
- * - `find-spinner`: The ring the find button turns while it is pending.
73319
- * - `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.
73320
73844
  * - `find-whole-word`: The button that matches whole words only in the find bar. Pressed while it does.
73321
73845
  * - `find-whole-word-button`: The whole word button's inner button.
73322
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`.
73323
73848
  * - `find-whole-word-spinner`: The ring the whole word button turns while it is pending.
73324
73849
  * - `find-whole-word-text`: The box the whole word button's icon sits in.
73325
73850
  * - `fullscreen`: The button that makes the terminal fill the screen. Pressed while it does.
@@ -76423,6 +76948,10 @@ export type CustomElements<F extends Framework = "other"> = {
76423
76948
  * A `disabled` item is reached by the arrow keys and announced as unavailable,
76424
76949
  * and a press, Enter or Space on it does nothing.
76425
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
+ *
76426
76955
  * A `lazy` item is a branch whose children you load when it opens: opening it
76427
76956
  * sends `helix-load`, the row says it is busy, and the children you add appear
76428
76957
  * in it. Remove `lazy` once they are in.
@@ -83816,6 +84345,7 @@ export type CustomElementsSolidJs = {
83816
84345
  *
83817
84346
  * - `change`: The reader finished an edit and focus left the code, in the engine or the plain field.
83818
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.
83819
84349
  * - `input`: Fired after the text changes.
83820
84350
  *
83821
84351
  * ## Slots
@@ -83908,9 +84438,9 @@ export type CustomElementsSolidJs = {
83908
84438
  * - `diagnostics`: The list of problems under the code, while there are any.
83909
84439
  * - `feedback`: The message that says what is wrong.
83910
84440
  * - `field`: The frame around the header, the code, the problems and the status line.
83911
- * - `find`: The button in the header that opens the find bar.
83912
- * - `find-bar`: The find bar under the header, while it is open.
83913
- * - `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.
83914
84444
  * - `find-close`: The button that closes the find bar.
83915
84445
  * - `find-close-button`: The close button's inner button.
83916
84446
  * - `find-close-live`: The close button's live region, which speaks while the button is pending.
@@ -83920,10 +84450,11 @@ export type CustomElementsSolidJs = {
83920
84450
  * - `find-controls-toolbar`: The box inside the find bar's toolbar that lays its buttons out.
83921
84451
  * - `find-count`: Which match is selected, of how many.
83922
84452
  * - `find-field`: The field the search is typed in.
83923
- * - `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.
83924
84454
  * - `find-match-case`: The option that finds only the same case. Pressed while it applies.
83925
84455
  * - `find-match-case-button`: The match case button's inner button.
83926
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`.
83927
84458
  * - `find-match-case-spinner`: The ring the match case button turns while it is pending.
83928
84459
  * - `find-match-case-text`: The box the match case button's icon sits in.
83929
84460
  * - `find-next`: The button that selects the next match.
@@ -83939,18 +84470,34 @@ export type CustomElementsSolidJs = {
83939
84470
  * - `find-regex`: The option that reads the search as a regular expression. Pressed while it applies.
83940
84471
  * - `find-regex-button`: The regular expression button's inner button.
83941
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`.
83942
84474
  * - `find-regex-spinner`: The ring the regular expression button turns while it is pending.
83943
84475
  * - `find-regex-text`: The box the regular expression button's icon sits in.
83944
- * - `find-replace`: The button that shows the replace field under the find field. Expanded while it shows.
83945
- * - `find-replace-button`: The find and replace button's inner button.
83946
- * - `find-replace-live`: The find and replace button's live region, which speaks while the button is pending.
83947
- * - `find-replace-spinner`: The ring the find and replace button turns while it is pending.
83948
- * - `find-replace-text`: The box the find and replace button's icon sits in.
83949
- * - `find-spinner`: The ring the Find button turns while it is pending.
83950
- * - `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.
83951
84497
  * - `find-whole-word`: The option that finds only whole words. Pressed while it applies.
83952
84498
  * - `find-whole-word-button`: The whole word button's inner button.
83953
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`.
83954
84501
  * - `find-whole-word-spinner`: The ring the whole word button turns while it is pending.
83955
84502
  * - `find-whole-word-text`: The box the whole word button's icon sits in.
83956
84503
  * - `header`: The strip above the code: the name, the language, and the controls.
@@ -83959,17 +84506,6 @@ export type CustomElementsSolidJs = {
83959
84506
  * - `language`: The language's name in the header.
83960
84507
  * - `position`: The caret's line and column, in the status line.
83961
84508
  * - `problem-count`: How many problems there are, in the status line.
83962
- * - `replace`: The button that replaces the selected match.
83963
- * - `replace-all`: The button that replaces every match.
83964
- * - `replace-all-button`: The Replace all button's inner button.
83965
- * - `replace-all-live`: The Replace all button's live region, which speaks while the button is pending.
83966
- * - `replace-all-spinner`: The ring the Replace all button turns while it is pending.
83967
- * - `replace-all-text`: The box the Replace all button's words sit in.
83968
- * - `replace-button`: The Replace button's inner button.
83969
- * - `replace-field`: The field the replacement is typed in.
83970
- * - `replace-live`: The Replace button's live region, which speaks while the button is pending.
83971
- * - `replace-spinner`: The ring the Replace button turns while it is pending.
83972
- * - `replace-text`: The box the Replace button's words sit in.
83973
84509
  * - `status`: The strip under the code.
83974
84510
  * - `view`: Where an engine draws, while one is connected.
83975
84511
  *
@@ -83980,7 +84516,6 @@ export type CustomElementsSolidJs = {
83980
84516
  * - `connected`: An engine draws the editor.
83981
84517
  * - `find-open`: The find bar is open.
83982
84518
  * - `invalid`: The editor has an error to show, from `required` or your `feedback`.
83983
- * - `replace-open`: The replace field shows under the find field.
83984
84519
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
83985
84520
  */
83986
84521
  "helix-headless-code-editor": Partial<
@@ -90710,6 +91245,226 @@ export type CustomElementsSolidJs = {
90710
91245
  BaseEvents<HelixHeadlessFilterInput>
90711
91246
  >;
90712
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
+
90713
91468
  /**
90714
91469
  * Formats a date with `Intl` where it is shown, so you do not write the same
90715
91470
  * `Intl` call and options in your own code.
@@ -94717,7 +95472,9 @@ export type CustomElementsSolidJs = {
94717
95472
  * the heading, as you write it, such as `12s`.
94718
95473
  *
94719
95474
  * A group starts shut. Write `default-open` on the step a reader should see,
94720
- * 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.
94721
95478
  *
94722
95479
  * ## Attributes & Properties
94723
95480
  *
@@ -94795,7 +95552,7 @@ export type CustomElementsSolidJs = {
94795
95552
  *
94796
95553
  * Custom selectors for styling elements within the component.
94797
95554
  *
94798
- * - `content`: The lines, hidden while the group is shut.
95555
+ * - `content`: The lines, hidden until found while the group is shut.
94799
95556
  * - `duration`: How long the step took.
94800
95557
  * - `heading`: The heading.
94801
95558
  * - `mark`: The caret that turns as the group opens, an `<svg>` you size.
@@ -108304,6 +109061,7 @@ export type CustomElementsSolidJs = {
108304
109061
  * Events that will be emitted by the component.
108305
109062
  *
108306
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.
108307
109065
  * - `helix-terminal-bell`: The program rang the bell. The frame flashes once.
108308
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.
108309
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.
@@ -108404,23 +109162,23 @@ export type CustomElementsSolidJs = {
108404
109162
  * - `copy-spinner`: The ring the copy button turns while it is pending.
108405
109163
  * - `copy-text`: The box the copy button's icon sits in.
108406
109164
  * - `exit-actions`: The `exit-actions` slot, beside Restart in the status line.
108407
- * - `find`: The button that opens and closes the find bar. Expanded while it is open.
108408
- * - `find-actions`: The `find-actions` slot, first in the find bar's toolbar.
108409
- * - `find-bar`: The bar under the header where the reader searches the output.
108410
- * - `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.
108411
109168
  * - `find-close`: The button that closes the find bar.
108412
109169
  * - `find-close-button`: The find bar's close button's inner button.
108413
109170
  * - `find-close-live`: The find bar's close button's live region, which speaks while the button is pending.
108414
109171
  * - `find-close-spinner`: The ring the find bar's close button turns while it is pending.
108415
109172
  * - `find-close-text`: The box the find bar's close button's icon sits in.
108416
- * - `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.
108417
109174
  * - `find-controls-toolbar`: The box inside the find bar's toolbar that lays its buttons out.
108418
109175
  * - `find-count`: Which match is current and how many there are, such as "3 of 12 matches".
108419
109176
  * - `find-field`: The search field in the find bar.
108420
- * - `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.
108421
109178
  * - `find-match-case`: The button that matches case in the find bar. Pressed while it does.
108422
109179
  * - `find-match-case-button`: The match case button's inner button.
108423
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`.
108424
109182
  * - `find-match-case-spinner`: The ring the match case button turns while it is pending.
108425
109183
  * - `find-match-case-text`: The box the match case button's icon sits in.
108426
109184
  * - `find-next`: The button that moves to the next match.
@@ -108436,13 +109194,34 @@ export type CustomElementsSolidJs = {
108436
109194
  * - `find-regex`: The button that reads the find field as a regular expression. Pressed while it does.
108437
109195
  * - `find-regex-button`: The regular expression button's inner button.
108438
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`.
108439
109198
  * - `find-regex-spinner`: The ring the regular expression button turns while it is pending.
108440
109199
  * - `find-regex-text`: The box the regular expression button's icon sits in.
108441
- * - `find-spinner`: The ring the find button turns while it is pending.
108442
- * - `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.
108443
109221
  * - `find-whole-word`: The button that matches whole words only in the find bar. Pressed while it does.
108444
109222
  * - `find-whole-word-button`: The whole word button's inner button.
108445
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`.
108446
109225
  * - `find-whole-word-spinner`: The ring the whole word button turns while it is pending.
108447
109226
  * - `find-whole-word-text`: The box the whole word button's icon sits in.
108448
109227
  * - `fullscreen`: The button that makes the terminal fill the screen. Pressed while it does.
@@ -111583,6 +112362,10 @@ export type CustomElementsSolidJs = {
111583
112362
  * A `disabled` item is reached by the arrow keys and announced as unavailable,
111584
112363
  * and a press, Enter or Space on it does nothing.
111585
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
+ *
111586
112369
  * A `lazy` item is a branch whose children you load when it opens: opening it
111587
112370
  * sends `helix-load`, the row says it is busy, and the children you add appear
111588
112371
  * in it. Remove `lazy` once they are in.