@fusion.dev/helix-headless 0.219.0 → 0.221.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,
@@ -94,6 +95,7 @@ import type {
94
95
  HelixHeadlessDrawer,
95
96
  HelixHeadlessDrilldown,
96
97
  HelixHeadlessDrilldownItem,
98
+ HelixHeadlessEditor,
97
99
  HelixHeadlessEmpty,
98
100
  HelixHeadlessFileInput,
99
101
  HelixHeadlessFilterChip,
@@ -101,6 +103,7 @@ import type {
101
103
  HelixHeadlessFilterInput,
102
104
  HelixHeadlessFilterMenu,
103
105
  HelixHeadlessFilterOperator,
106
+ HelixHeadlessFind,
104
107
  HelixHeadlessFormatDate,
105
108
  HelixHeadlessGraph,
106
109
  HelixHeadlessHeatmap,
@@ -7221,6 +7224,9 @@ export type HelixHeadlessCodeEditorElementEvent<E = Event> = TypedEvent<
7221
7224
  /** `helix-before-change` event type */
7222
7225
  export type HelixHeadlessCodeEditorHelixBeforeChangeElementEvent =
7223
7226
  HelixHeadlessCodeEditorElementEvent<HelixBeforeChangeEvent>;
7227
+ /** `helix-found` event type */
7228
+ export type HelixHeadlessCodeEditorHelixFoundElementEvent =
7229
+ HelixHeadlessCodeEditorElementEvent<HelixFoundEvent>;
7224
7230
 
7225
7231
  export type HelixHeadlessCodeEditorProps = {
7226
7232
  /** The name of the header's toolbar, read by screen readers. */
@@ -7408,7 +7414,7 @@ Here rather than on each control. */
7408
7414
  /** The problems in the text, each underlined and listed under the editor. */
7409
7415
  diagnostics?: (HelixHeadlessCodeEditor["diagnostics"]) | undefined;
7410
7416
  /** What draws the editor, such as `codeMirrorEngine()` from
7411
- `@fusion.dev/helix-editor`. Absent, the editor is a plain text field. */
7417
+ `@fusion.dev/helix-code-editor`. Absent, the editor is a plain text field. */
7412
7418
  engine?: (HelixHeadlessCodeEditor["engine"]) | undefined;
7413
7419
 
7414
7420
  /** The reader finished an edit and focus left the code, in the engine or the plain field. */
@@ -7417,6 +7423,8 @@ Here rather than on each control. */
7417
7423
  "onhelix-before-change"?: ((
7418
7424
  e: HelixHeadlessCodeEditorHelixBeforeChangeElementEvent,
7419
7425
  ) => void) | undefined;
7426
+ /** The find bar searched or moved among the matches, with `count` and the selected match's `index`, counting from 0, or -1 for none. */
7427
+ "onhelix-found"?: ((e: HelixHeadlessCodeEditorHelixFoundElementEvent) => void) | undefined;
7420
7428
  /** Fired after the text changes. */
7421
7429
  oninput?: ((e: HelixHeadlessCodeEditorElementEvent) => void) | undefined;
7422
7430
  };
@@ -7607,7 +7615,7 @@ Here rather than on each control. */
7607
7615
  /** The problems in the text, each underlined and listed under the editor. */
7608
7616
  "prop:diagnostics"?: (HelixHeadlessCodeEditor["diagnostics"]) | undefined;
7609
7617
  /** What draws the editor, such as `codeMirrorEngine()` from
7610
- `@fusion.dev/helix-editor`. Absent, the editor is a plain text field. */
7618
+ `@fusion.dev/helix-code-editor`. Absent, the editor is a plain text field. */
7611
7619
  "prop:engine"?: (HelixHeadlessCodeEditor["engine"]) | undefined;
7612
7620
  /** The reader finished an edit and focus left the code, in the engine or the plain field. */
7613
7621
  "on:change"?: ((e: HelixHeadlessCodeEditorElementEvent) => void) | undefined;
@@ -7615,6 +7623,8 @@ Here rather than on each control. */
7615
7623
  "on:helix-before-change"?: ((
7616
7624
  e: HelixHeadlessCodeEditorHelixBeforeChangeElementEvent,
7617
7625
  ) => void) | undefined;
7626
+ /** The find bar searched or moved among the matches, with `count` and the selected match's `index`, counting from 0, or -1 for none. */
7627
+ "on:helix-found"?: ((e: HelixHeadlessCodeEditorHelixFoundElementEvent) => void) | undefined;
7618
7628
  /** Fired after the text changes. */
7619
7629
  "on:input"?: ((e: HelixHeadlessCodeEditorElementEvent) => void) | undefined;
7620
7630
 
@@ -15253,6 +15263,251 @@ say that without the component knowing what a row looks like. */
15253
15263
  textContent?: (string | number) | undefined;
15254
15264
  };
15255
15265
 
15266
+ /** `HelixHeadlessEditor` component event */
15267
+ export type HelixHeadlessEditorElementEvent<E = Event> = TypedEvent<
15268
+ HelixHeadlessEditor,
15269
+ E
15270
+ >;
15271
+ /** `helix-found` event type */
15272
+ export type HelixHeadlessEditorHelixFoundElementEvent =
15273
+ HelixHeadlessEditorElementEvent<HelixFoundEvent>;
15274
+
15275
+ export type HelixHeadlessEditorProps = {
15276
+ /** The block menu button's name. `{name}` is the block type at the selection. */
15277
+ "block-chosen-label"?: (HelixHeadlessEditor["blockChosenLabel"]) | undefined;
15278
+ /** The block menu button's name. `{name}` is the block type at the selection. */
15279
+ blockChosenLabel?: (HelixHeadlessEditor["blockChosenLabel"]) | undefined;
15280
+ /** The block menu's name, read by screen readers. */
15281
+ "block-label"?: (HelixHeadlessEditor["blockLabel"]) | undefined;
15282
+ /** The block menu's name, read by screen readers. */
15283
+ blockLabel?: (HelixHeadlessEditor["blockLabel"]) | undefined;
15284
+ /** The Bold button's label. */
15285
+ "bold-label"?: (HelixHeadlessEditor["boldLabel"]) | undefined;
15286
+ /** The Bold button's label. */
15287
+ boldLabel?: (HelixHeadlessEditor["boldLabel"]) | undefined;
15288
+ /** The Bulleted list button's label. */
15289
+ "bullet-list-label"?: (HelixHeadlessEditor["bulletListLabel"]) | undefined;
15290
+ /** The Bulleted list button's label. */
15291
+ bulletListLabel?: (HelixHeadlessEditor["bulletListLabel"]) | undefined;
15292
+ /** The Code block row's label in the block menu. */
15293
+ "code-block-label"?: (HelixHeadlessEditor["codeBlockLabel"]) | undefined;
15294
+ /** The Code block row's label in the block menu. */
15295
+ codeBlockLabel?: (HelixHeadlessEditor["codeBlockLabel"]) | undefined;
15296
+ /** The Code button's label. */
15297
+ "code-label"?: (HelixHeadlessEditor["codeLabel"]) | undefined;
15298
+ /** The Code button's label. */
15299
+ codeLabel?: (HelixHeadlessEditor["codeLabel"]) | undefined;
15300
+ /** The toolbar's name, read by screen readers. */
15301
+ "controls-label"?: (HelixHeadlessEditor["controlsLabel"]) | undefined;
15302
+ /** The toolbar's name, read by screen readers. */
15303
+ controlsLabel?: (HelixHeadlessEditor["controlsLabel"]) | undefined;
15304
+ /** The document's name where `label` is empty and the host has no `aria-label`. */
15305
+ "fallback-label"?: (HelixHeadlessEditor["fallbackLabel"]) | undefined;
15306
+ /** The document's name where `label` is empty and the host has no `aria-label`. */
15307
+ fallbackLabel?: (HelixHeadlessEditor["fallbackLabel"]) | undefined;
15308
+ /** The Find button's label, and the find bar's name. */
15309
+ "find-label"?: (HelixHeadlessEditor["findLabel"]) | undefined;
15310
+ /** The Find button's label, and the find bar's name. */
15311
+ findLabel?: (HelixHeadlessEditor["findLabel"]) | undefined;
15312
+ /** A heading's name in the block menu. `{level}` is its level, 1 to 3. */
15313
+ "heading-label"?: (HelixHeadlessEditor["headingLabel"]) | undefined;
15314
+ /** A heading's name in the block menu. `{level}` is its level, 1 to 3. */
15315
+ headingLabel?: (HelixHeadlessEditor["headingLabel"]) | undefined;
15316
+ /** The Italic button's label. */
15317
+ "italic-label"?: (HelixHeadlessEditor["italicLabel"]) | undefined;
15318
+ /** The Italic button's label. */
15319
+ italicLabel?: (HelixHeadlessEditor["italicLabel"]) | undefined;
15320
+ /** The document's name, read by screen readers. Name what it holds, such as
15321
+ "Release notes", so that several editors on one page can be told apart.
15322
+ Required. */
15323
+ label?: (HelixHeadlessEditor["label"]) | undefined;
15324
+ /** The Apply button's label in the address bar. */
15325
+ "link-apply-label"?: (HelixHeadlessEditor["linkApplyLabel"]) | undefined;
15326
+ /** The Apply button's label in the address bar. */
15327
+ linkApplyLabel?: (HelixHeadlessEditor["linkApplyLabel"]) | undefined;
15328
+ /** The close button's label in the address bar. */
15329
+ "link-close-label"?: (HelixHeadlessEditor["linkCloseLabel"]) | undefined;
15330
+ /** The close button's label in the address bar. */
15331
+ linkCloseLabel?: (HelixHeadlessEditor["linkCloseLabel"]) | undefined;
15332
+ /** The name of the address bar's toolbar, read by screen readers. */
15333
+ "link-controls-label"?: (HelixHeadlessEditor["linkControlsLabel"]) | undefined;
15334
+ /** The name of the address bar's toolbar, read by screen readers. */
15335
+ linkControlsLabel?: (HelixHeadlessEditor["linkControlsLabel"]) | undefined;
15336
+ /** The address field's name, which it also shows while it is empty. */
15337
+ "link-field-label"?: (HelixHeadlessEditor["linkFieldLabel"]) | undefined;
15338
+ /** The address field's name, which it also shows while it is empty. */
15339
+ linkFieldLabel?: (HelixHeadlessEditor["linkFieldLabel"]) | undefined;
15340
+ /** The Link button's label, and the address bar's name. */
15341
+ "link-label"?: (HelixHeadlessEditor["linkLabel"]) | undefined;
15342
+ /** The Link button's label, and the address bar's name. */
15343
+ linkLabel?: (HelixHeadlessEditor["linkLabel"]) | undefined;
15344
+ /** The Remove button's label in the address bar. */
15345
+ "link-remove-label"?: (HelixHeadlessEditor["linkRemoveLabel"]) | undefined;
15346
+ /** The Remove button's label in the address bar. */
15347
+ linkRemoveLabel?: (HelixHeadlessEditor["linkRemoveLabel"]) | undefined;
15348
+ /** The Numbered list button's label. */
15349
+ "ordered-list-label"?: (HelixHeadlessEditor["orderedListLabel"]) | undefined;
15350
+ /** The Numbered list button's label. */
15351
+ orderedListLabel?: (HelixHeadlessEditor["orderedListLabel"]) | undefined;
15352
+ /** The Paragraph row's label in the block menu. */
15353
+ "paragraph-label"?: (HelixHeadlessEditor["paragraphLabel"]) | undefined;
15354
+ /** The Paragraph row's label in the block menu. */
15355
+ paragraphLabel?: (HelixHeadlessEditor["paragraphLabel"]) | undefined;
15356
+ /** The words shown in an empty document, such as "Write the release notes". */
15357
+ placeholder?: (HelixHeadlessEditor["placeholder"]) | undefined;
15358
+ /** The Quote button's label. */
15359
+ "quote-label"?: (HelixHeadlessEditor["quoteLabel"]) | undefined;
15360
+ /** The Quote button's label. */
15361
+ quoteLabel?: (HelixHeadlessEditor["quoteLabel"]) | undefined;
15362
+ /** Shows the document and takes no edits, with no toolbar, for a document
15363
+ someone reads, or one an agent is writing. The attribute is `readonly`,
15364
+ the platform's spelling. */
15365
+ readonly?: (HelixHeadlessEditor["readOnly"]) | undefined;
15366
+ /** Shows the document and takes no edits, with no toolbar, for a document
15367
+ someone reads, or one an agent is writing. The attribute is `readonly`,
15368
+ the platform's spelling. */
15369
+ readOnly?: (HelixHeadlessEditor["readOnly"]) | undefined;
15370
+ /** The Redo button's label. */
15371
+ "redo-label"?: (HelixHeadlessEditor["redoLabel"]) | undefined;
15372
+ /** The Redo button's label. */
15373
+ redoLabel?: (HelixHeadlessEditor["redoLabel"]) | undefined;
15374
+ /** The Strikethrough button's label. */
15375
+ "strike-label"?: (HelixHeadlessEditor["strikeLabel"]) | undefined;
15376
+ /** The Strikethrough button's label. */
15377
+ strikeLabel?: (HelixHeadlessEditor["strikeLabel"]) | undefined;
15378
+ /** Which groups of tools the toolbar draws, as a list of `history`, `block`,
15379
+ `marks`, `link`, `lists`, and `quote`, or `none`. They are drawn in that
15380
+ order, whatever order the list is in. Absent is all six. */
15381
+ tools?: (HelixHeadlessEditor["tools"]) | undefined;
15382
+ /** The Undo button's label. */
15383
+ "undo-label"?: (HelixHeadlessEditor["undoLabel"]) | undefined;
15384
+ /** The Undo button's label. */
15385
+ undoLabel?: (HelixHeadlessEditor["undoLabel"]) | undefined;
15386
+
15387
+ /** The find bar searched or moved among the matches, with `count` and the selected match's `index`, counting from 0, or -1 for none. */
15388
+ "onhelix-found"?: ((e: HelixHeadlessEditorHelixFoundElementEvent) => void) | undefined;
15389
+ };
15390
+
15391
+ export type HelixHeadlessEditorSolidJsProps = {
15392
+ /** The block menu button's name. `{name}` is the block type at the selection. */
15393
+ "attr:block-chosen-label"?: (HelixHeadlessEditor["blockChosenLabel"]) | undefined;
15394
+ /** The block menu button's name. `{name}` is the block type at the selection. */
15395
+ "prop:blockChosenLabel"?: (HelixHeadlessEditor["blockChosenLabel"]) | undefined;
15396
+ /** The block menu's name, read by screen readers. */
15397
+ "attr:block-label"?: (HelixHeadlessEditor["blockLabel"]) | undefined;
15398
+ /** The block menu's name, read by screen readers. */
15399
+ "prop:blockLabel"?: (HelixHeadlessEditor["blockLabel"]) | undefined;
15400
+ /** The Bold button's label. */
15401
+ "attr:bold-label"?: (HelixHeadlessEditor["boldLabel"]) | undefined;
15402
+ /** The Bold button's label. */
15403
+ "prop:boldLabel"?: (HelixHeadlessEditor["boldLabel"]) | undefined;
15404
+ /** The Bulleted list button's label. */
15405
+ "attr:bullet-list-label"?: (HelixHeadlessEditor["bulletListLabel"]) | undefined;
15406
+ /** The Bulleted list button's label. */
15407
+ "prop:bulletListLabel"?: (HelixHeadlessEditor["bulletListLabel"]) | undefined;
15408
+ /** The Code block row's label in the block menu. */
15409
+ "attr:code-block-label"?: (HelixHeadlessEditor["codeBlockLabel"]) | undefined;
15410
+ /** The Code block row's label in the block menu. */
15411
+ "prop:codeBlockLabel"?: (HelixHeadlessEditor["codeBlockLabel"]) | undefined;
15412
+ /** The Code button's label. */
15413
+ "attr:code-label"?: (HelixHeadlessEditor["codeLabel"]) | undefined;
15414
+ /** The Code button's label. */
15415
+ "prop:codeLabel"?: (HelixHeadlessEditor["codeLabel"]) | undefined;
15416
+ /** The toolbar's name, read by screen readers. */
15417
+ "attr:controls-label"?: (HelixHeadlessEditor["controlsLabel"]) | undefined;
15418
+ /** The toolbar's name, read by screen readers. */
15419
+ "prop:controlsLabel"?: (HelixHeadlessEditor["controlsLabel"]) | undefined;
15420
+ /** The document's name where `label` is empty and the host has no `aria-label`. */
15421
+ "attr:fallback-label"?: (HelixHeadlessEditor["fallbackLabel"]) | undefined;
15422
+ /** The document's name where `label` is empty and the host has no `aria-label`. */
15423
+ "prop:fallbackLabel"?: (HelixHeadlessEditor["fallbackLabel"]) | undefined;
15424
+ /** The Find button's label, and the find bar's name. */
15425
+ "attr:find-label"?: (HelixHeadlessEditor["findLabel"]) | undefined;
15426
+ /** The Find button's label, and the find bar's name. */
15427
+ "prop:findLabel"?: (HelixHeadlessEditor["findLabel"]) | undefined;
15428
+ /** A heading's name in the block menu. `{level}` is its level, 1 to 3. */
15429
+ "attr:heading-label"?: (HelixHeadlessEditor["headingLabel"]) | undefined;
15430
+ /** A heading's name in the block menu. `{level}` is its level, 1 to 3. */
15431
+ "prop:headingLabel"?: (HelixHeadlessEditor["headingLabel"]) | undefined;
15432
+ /** The Italic button's label. */
15433
+ "attr:italic-label"?: (HelixHeadlessEditor["italicLabel"]) | undefined;
15434
+ /** The Italic button's label. */
15435
+ "prop:italicLabel"?: (HelixHeadlessEditor["italicLabel"]) | undefined;
15436
+ /** The document's name, read by screen readers. Name what it holds, such as
15437
+ "Release notes", so that several editors on one page can be told apart.
15438
+ Required. */
15439
+ "prop:label"?: (HelixHeadlessEditor["label"]) | undefined;
15440
+ /** The Apply button's label in the address bar. */
15441
+ "attr:link-apply-label"?: (HelixHeadlessEditor["linkApplyLabel"]) | undefined;
15442
+ /** The Apply button's label in the address bar. */
15443
+ "prop:linkApplyLabel"?: (HelixHeadlessEditor["linkApplyLabel"]) | undefined;
15444
+ /** The close button's label in the address bar. */
15445
+ "attr:link-close-label"?: (HelixHeadlessEditor["linkCloseLabel"]) | undefined;
15446
+ /** The close button's label in the address bar. */
15447
+ "prop:linkCloseLabel"?: (HelixHeadlessEditor["linkCloseLabel"]) | undefined;
15448
+ /** The name of the address bar's toolbar, read by screen readers. */
15449
+ "attr:link-controls-label"?: (HelixHeadlessEditor["linkControlsLabel"]) | undefined;
15450
+ /** The name of the address bar's toolbar, read by screen readers. */
15451
+ "prop:linkControlsLabel"?: (HelixHeadlessEditor["linkControlsLabel"]) | undefined;
15452
+ /** The address field's name, which it also shows while it is empty. */
15453
+ "attr:link-field-label"?: (HelixHeadlessEditor["linkFieldLabel"]) | undefined;
15454
+ /** The address field's name, which it also shows while it is empty. */
15455
+ "prop:linkFieldLabel"?: (HelixHeadlessEditor["linkFieldLabel"]) | undefined;
15456
+ /** The Link button's label, and the address bar's name. */
15457
+ "attr:link-label"?: (HelixHeadlessEditor["linkLabel"]) | undefined;
15458
+ /** The Link button's label, and the address bar's name. */
15459
+ "prop:linkLabel"?: (HelixHeadlessEditor["linkLabel"]) | undefined;
15460
+ /** The Remove button's label in the address bar. */
15461
+ "attr:link-remove-label"?: (HelixHeadlessEditor["linkRemoveLabel"]) | undefined;
15462
+ /** The Remove button's label in the address bar. */
15463
+ "prop:linkRemoveLabel"?: (HelixHeadlessEditor["linkRemoveLabel"]) | undefined;
15464
+ /** The Numbered list button's label. */
15465
+ "attr:ordered-list-label"?: (HelixHeadlessEditor["orderedListLabel"]) | undefined;
15466
+ /** The Numbered list button's label. */
15467
+ "prop:orderedListLabel"?: (HelixHeadlessEditor["orderedListLabel"]) | undefined;
15468
+ /** The Paragraph row's label in the block menu. */
15469
+ "attr:paragraph-label"?: (HelixHeadlessEditor["paragraphLabel"]) | undefined;
15470
+ /** The Paragraph row's label in the block menu. */
15471
+ "prop:paragraphLabel"?: (HelixHeadlessEditor["paragraphLabel"]) | undefined;
15472
+ /** The words shown in an empty document, such as "Write the release notes". */
15473
+ "prop:placeholder"?: (HelixHeadlessEditor["placeholder"]) | undefined;
15474
+ /** The Quote button's label. */
15475
+ "attr:quote-label"?: (HelixHeadlessEditor["quoteLabel"]) | undefined;
15476
+ /** The Quote button's label. */
15477
+ "prop:quoteLabel"?: (HelixHeadlessEditor["quoteLabel"]) | undefined;
15478
+ /** Shows the document and takes no edits, with no toolbar, for a document
15479
+ someone reads, or one an agent is writing. The attribute is `readonly`,
15480
+ the platform's spelling. */
15481
+ "bool:readonly"?: (HelixHeadlessEditor["readOnly"]) | undefined;
15482
+ /** Shows the document and takes no edits, with no toolbar, for a document
15483
+ someone reads, or one an agent is writing. The attribute is `readonly`,
15484
+ the platform's spelling. */
15485
+ "prop:readOnly"?: (HelixHeadlessEditor["readOnly"]) | undefined;
15486
+ /** The Redo button's label. */
15487
+ "attr:redo-label"?: (HelixHeadlessEditor["redoLabel"]) | undefined;
15488
+ /** The Redo button's label. */
15489
+ "prop:redoLabel"?: (HelixHeadlessEditor["redoLabel"]) | undefined;
15490
+ /** The Strikethrough button's label. */
15491
+ "attr:strike-label"?: (HelixHeadlessEditor["strikeLabel"]) | undefined;
15492
+ /** The Strikethrough button's label. */
15493
+ "prop:strikeLabel"?: (HelixHeadlessEditor["strikeLabel"]) | undefined;
15494
+ /** Which groups of tools the toolbar draws, as a list of `history`, `block`,
15495
+ `marks`, `link`, `lists`, and `quote`, or `none`. They are drawn in that
15496
+ order, whatever order the list is in. Absent is all six. */
15497
+ "prop:tools"?: (HelixHeadlessEditor["tools"]) | undefined;
15498
+ /** The Undo button's label. */
15499
+ "attr:undo-label"?: (HelixHeadlessEditor["undoLabel"]) | undefined;
15500
+ /** The Undo button's label. */
15501
+ "prop:undoLabel"?: (HelixHeadlessEditor["undoLabel"]) | undefined;
15502
+ /** The find bar searched or moved among the matches, with `count` and the selected match's `index`, counting from 0, or -1 for none. */
15503
+ "on:helix-found"?: ((e: HelixHeadlessEditorHelixFoundElementEvent) => void) | undefined;
15504
+
15505
+ /** Set the innerHTML of the element */
15506
+ innerHTML?: (string) | undefined;
15507
+ /** Set the textContent of the element */
15508
+ textContent?: (string | number) | undefined;
15509
+ };
15510
+
15256
15511
  export type HelixHeadlessEmptyProps = {
15257
15512
  /** The heading as words, such as "No results", drawn as a heading when
15258
15513
  nothing is slotted into `heading`.
@@ -16623,6 +16878,268 @@ write a function in markup. See the class description. */
16623
16878
  textContent?: (string | number) | undefined;
16624
16879
  };
16625
16880
 
16881
+ /** `HelixHeadlessFind` component event */
16882
+ export type HelixHeadlessFindElementEvent<E = Event> = TypedEvent<
16883
+ HelixHeadlessFind,
16884
+ E
16885
+ >;
16886
+ /** `helix-before-close` event type */
16887
+ export type HelixHeadlessFindHelixBeforeCloseElementEvent =
16888
+ HelixHeadlessFindElementEvent<HelixBeforeCloseEvent>;
16889
+ /** `helix-before-open` event type */
16890
+ export type HelixHeadlessFindHelixBeforeOpenElementEvent =
16891
+ HelixHeadlessFindElementEvent<HelixBeforeOpenEvent>;
16892
+ /** `helix-found` event type */
16893
+ export type HelixHeadlessFindHelixFoundElementEvent =
16894
+ HelixHeadlessFindElementEvent<HelixFoundEvent>;
16895
+ /** `toggle` event type */
16896
+ export type HelixHeadlessFindToggleElementEvent =
16897
+ HelixHeadlessFindElementEvent<ToggleEvent>;
16898
+
16899
+ export type HelixHeadlessFindProps = {
16900
+ /** The close button's label. */
16901
+ "close-label"?: (HelixHeadlessFind["closeLabel"]) | undefined;
16902
+ /** The close button's label. */
16903
+ closeLabel?: (HelixHeadlessFind["closeLabel"]) | undefined;
16904
+ /** The name of the bar's toolbar, read by screen readers. */
16905
+ "controls-label"?: (HelixHeadlessFind["controlsLabel"]) | undefined;
16906
+ /** The name of the bar's toolbar, read by screen readers. */
16907
+ controlsLabel?: (HelixHeadlessFind["controlsLabel"]) | undefined;
16908
+ /** The id of the element whose text Find searches, in the same tree as Find.
16909
+ With a finder attached, it names only where the find key opens the bar. */
16910
+ for?: (HelixHeadlessFind["for"]) | undefined;
16911
+ /** What the count says when the regular expression cannot be read. */
16912
+ "invalid-label"?: (HelixHeadlessFind["invalidLabel"]) | undefined;
16913
+ /** What the count says when the regular expression cannot be read. */
16914
+ invalidLabel?: (HelixHeadlessFind["invalidLabel"]) | undefined;
16915
+ /** The field's name and placeholder, and the name of the bar. */
16916
+ label?: (HelixHeadlessFind["label"]) | undefined;
16917
+ /** Whether case has to match, so "Error" does not find "error". The reader turns it on and off from the bar. */
16918
+ "match-case"?: (HelixHeadlessFind["matchCase"]) | undefined;
16919
+ /** Whether case has to match, so "Error" does not find "error". The reader turns it on and off from the bar. */
16920
+ matchCase?: (HelixHeadlessFind["matchCase"]) | undefined;
16921
+ /** The match case button's label. */
16922
+ "match-case-label"?: (HelixHeadlessFind["matchCaseLabel"]) | undefined;
16923
+ /** The match case button's label. */
16924
+ matchCaseLabel?: (HelixHeadlessFind["matchCaseLabel"]) | undefined;
16925
+ /** What the count says of the matches. `{index}` is the current match,
16926
+ counting from 1, and `{count}` how many there are. */
16927
+ "matches-label"?: (HelixHeadlessFind["matchesLabel"]) | undefined;
16928
+ /** What the count says of the matches. `{index}` is the current match,
16929
+ counting from 1, and `{count}` how many there are. */
16930
+ matchesLabel?: (HelixHeadlessFind["matchesLabel"]) | undefined;
16931
+ /** The next match button's label. */
16932
+ "next-label"?: (HelixHeadlessFind["nextLabel"]) | undefined;
16933
+ /** The next match button's label. */
16934
+ nextLabel?: (HelixHeadlessFind["nextLabel"]) | undefined;
16935
+ /** Which options the bar draws, as a list of `match-case`, `whole-word`, and
16936
+ `regex`, or `none`. They are always drawn in that order. */
16937
+ options?: (HelixHeadlessFind["options"]) | undefined;
16938
+ /** The previous match button's label. */
16939
+ "previous-label"?: (HelixHeadlessFind["previousLabel"]) | undefined;
16940
+ /** The previous match button's label. */
16941
+ previousLabel?: (HelixHeadlessFind["previousLabel"]) | undefined;
16942
+ /** What the field holds: what the reader typed, or what you set. */
16943
+ query?: (HelixHeadlessFind["query"]) | undefined;
16944
+ /** Hides replacing, for content the reader cannot change. The attribute is `readonly`, the platform's spelling. */
16945
+ readonly?: (HelixHeadlessFind["readOnly"]) | undefined;
16946
+ /** Hides replacing, for content the reader cannot change. The attribute is `readonly`, the platform's spelling. */
16947
+ readOnly?: (HelixHeadlessFind["readOnly"]) | undefined;
16948
+ /** Whether the field reads as a regular expression, in JavaScript's syntax. The reader turns it on and off from the bar. */
16949
+ regex?: (HelixHeadlessFind["regex"]) | undefined;
16950
+ /** The regular expression button's label. */
16951
+ "regex-label"?: (HelixHeadlessFind["regexLabel"]) | undefined;
16952
+ /** The regular expression button's label. */
16953
+ regexLabel?: (HelixHeadlessFind["regexLabel"]) | undefined;
16954
+ /** The Replace all button's words. */
16955
+ "replace-all-label"?: (HelixHeadlessFind["replaceAllLabel"]) | undefined;
16956
+ /** The Replace all button's words. */
16957
+ replaceAllLabel?: (HelixHeadlessFind["replaceAllLabel"]) | undefined;
16958
+ /** The replace field's name and placeholder. */
16959
+ "replace-field-label"?: (HelixHeadlessFind["replaceFieldLabel"]) | undefined;
16960
+ /** The replace field's name and placeholder. */
16961
+ replaceFieldLabel?: (HelixHeadlessFind["replaceFieldLabel"]) | undefined;
16962
+ /** The Replace button's words. */
16963
+ "replace-label"?: (HelixHeadlessFind["replaceLabel"]) | undefined;
16964
+ /** The Replace button's words. */
16965
+ replaceLabel?: (HelixHeadlessFind["replaceLabel"]) | undefined;
16966
+ /** What the replace field holds, which Replace puts in place of a match. */
16967
+ replacement?: (HelixHeadlessFind["replacement"]) | undefined;
16968
+ /** The label of the button that shows the replace row. */
16969
+ "replace-toggle-label"?: (HelixHeadlessFind["replaceToggleLabel"]) | undefined;
16970
+ /** The label of the button that shows the replace row. */
16971
+ replaceToggleLabel?: (HelixHeadlessFind["replaceToggleLabel"]) | undefined;
16972
+ /** The key that opens the bar, as a chord such as `mod+f`, where `mod` is
16973
+ Command on an Apple keyboard and Control elsewhere. Empty turns the key
16974
+ off, as for a bar the page opens itself. */
16975
+ shortcut?: (HelixHeadlessFind["shortcut"]) | undefined;
16976
+ /** Elements inside the content whose text is not searched, as a selector,
16977
+ such as line numbers or the buttons beside each message. */
16978
+ skip?: (HelixHeadlessFind["skip"]) | undefined;
16979
+ /** Whether only whole words match. The reader turns it on and off from the bar. */
16980
+ "whole-word"?: (HelixHeadlessFind["wholeWord"]) | undefined;
16981
+ /** Whether only whole words match. The reader turns it on and off from the bar. */
16982
+ wholeWord?: (HelixHeadlessFind["wholeWord"]) | undefined;
16983
+ /** The whole word button's label. */
16984
+ "whole-word-label"?: (HelixHeadlessFind["wholeWordLabel"]) | undefined;
16985
+ /** The whole word button's label. */
16986
+ wholeWordLabel?: (HelixHeadlessFind["wholeWordLabel"]) | undefined;
16987
+ /** Whether the element starts open. Ignored once `open` is written. */
16988
+ "default-open"?: (HelixHeadlessFind["defaultOpen"]) | undefined;
16989
+ /** Whether the element starts open. Ignored once `open` is written. */
16990
+ defaultOpen?: (HelixHeadlessFind["defaultOpen"]) | undefined;
16991
+ /** Whether the element is open.
16992
+
16993
+ One property, not two, so `dialog.open` answers the question anyone
16994
+ asking it meant. Writing always applies; `<helix-dialog open>` is the
16995
+ same statement in markup.
16996
+
16997
+ **Not reflected, and that is required rather than tidy.** Reflection
16998
+ writes the resolved state back as an attribute, so an element that opened
16999
+ itself would put `open` on its own host: cloned, serialized for
17000
+ hydration, or diffed by a framework, it comes back holding whatever the
17001
+ last reader did rather than what the author wrote. `:state(open)` carries
17002
+ the resolved state for stylesheets, which is what the mirror is for. */
17003
+ open?: (HelixHeadlessFind["open"]) | undefined;
17004
+
17005
+ /** Fired before the bar closes, and cancelable. */
17006
+ "onhelix-before-close"?: ((
17007
+ e: HelixHeadlessFindHelixBeforeCloseElementEvent,
17008
+ ) => void) | undefined;
17009
+ /** Fired before the bar opens, and cancelable. Canceling it keeps the bar closed. */
17010
+ "onhelix-before-open"?: ((
17011
+ e: HelixHeadlessFindHelixBeforeOpenElementEvent,
17012
+ ) => void) | undefined;
17013
+ /** 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. */
17014
+ "onhelix-found"?: ((e: HelixHeadlessFindHelixFoundElementEvent) => void) | undefined;
17015
+ /** Sent when the bar opens or closes, with `newState` and `oldState`. */
17016
+ ontoggle?: ((e: HelixHeadlessFindToggleElementEvent) => void) | undefined;
17017
+ };
17018
+
17019
+ export type HelixHeadlessFindSolidJsProps = {
17020
+ /** The close button's label. */
17021
+ "attr:close-label"?: (HelixHeadlessFind["closeLabel"]) | undefined;
17022
+ /** The close button's label. */
17023
+ "prop:closeLabel"?: (HelixHeadlessFind["closeLabel"]) | undefined;
17024
+ /** The name of the bar's toolbar, read by screen readers. */
17025
+ "attr:controls-label"?: (HelixHeadlessFind["controlsLabel"]) | undefined;
17026
+ /** The name of the bar's toolbar, read by screen readers. */
17027
+ "prop:controlsLabel"?: (HelixHeadlessFind["controlsLabel"]) | undefined;
17028
+ /** The id of the element whose text Find searches, in the same tree as Find.
17029
+ With a finder attached, it names only where the find key opens the bar. */
17030
+ "prop:for"?: (HelixHeadlessFind["for"]) | undefined;
17031
+ /** What the count says when the regular expression cannot be read. */
17032
+ "attr:invalid-label"?: (HelixHeadlessFind["invalidLabel"]) | undefined;
17033
+ /** What the count says when the regular expression cannot be read. */
17034
+ "prop:invalidLabel"?: (HelixHeadlessFind["invalidLabel"]) | undefined;
17035
+ /** The field's name and placeholder, and the name of the bar. */
17036
+ "prop:label"?: (HelixHeadlessFind["label"]) | undefined;
17037
+ /** Whether case has to match, so "Error" does not find "error". The reader turns it on and off from the bar. */
17038
+ "bool:match-case"?: (HelixHeadlessFind["matchCase"]) | undefined;
17039
+ /** Whether case has to match, so "Error" does not find "error". The reader turns it on and off from the bar. */
17040
+ "prop:matchCase"?: (HelixHeadlessFind["matchCase"]) | undefined;
17041
+ /** The match case button's label. */
17042
+ "attr:match-case-label"?: (HelixHeadlessFind["matchCaseLabel"]) | undefined;
17043
+ /** The match case button's label. */
17044
+ "prop:matchCaseLabel"?: (HelixHeadlessFind["matchCaseLabel"]) | undefined;
17045
+ /** What the count says of the matches. `{index}` is the current match,
17046
+ counting from 1, and `{count}` how many there are. */
17047
+ "attr:matches-label"?: (HelixHeadlessFind["matchesLabel"]) | undefined;
17048
+ /** What the count says of the matches. `{index}` is the current match,
17049
+ counting from 1, and `{count}` how many there are. */
17050
+ "prop:matchesLabel"?: (HelixHeadlessFind["matchesLabel"]) | undefined;
17051
+ /** The next match button's label. */
17052
+ "attr:next-label"?: (HelixHeadlessFind["nextLabel"]) | undefined;
17053
+ /** The next match button's label. */
17054
+ "prop:nextLabel"?: (HelixHeadlessFind["nextLabel"]) | undefined;
17055
+ /** Which options the bar draws, as a list of `match-case`, `whole-word`, and
17056
+ `regex`, or `none`. They are always drawn in that order. */
17057
+ "prop:options"?: (HelixHeadlessFind["options"]) | undefined;
17058
+ /** The previous match button's label. */
17059
+ "attr:previous-label"?: (HelixHeadlessFind["previousLabel"]) | undefined;
17060
+ /** The previous match button's label. */
17061
+ "prop:previousLabel"?: (HelixHeadlessFind["previousLabel"]) | undefined;
17062
+ /** What the field holds: what the reader typed, or what you set. */
17063
+ "prop:query"?: (HelixHeadlessFind["query"]) | undefined;
17064
+ /** Hides replacing, for content the reader cannot change. The attribute is `readonly`, the platform's spelling. */
17065
+ "bool:readonly"?: (HelixHeadlessFind["readOnly"]) | undefined;
17066
+ /** Hides replacing, for content the reader cannot change. The attribute is `readonly`, the platform's spelling. */
17067
+ "prop:readOnly"?: (HelixHeadlessFind["readOnly"]) | undefined;
17068
+ /** Whether the field reads as a regular expression, in JavaScript's syntax. The reader turns it on and off from the bar. */
17069
+ "prop:regex"?: (HelixHeadlessFind["regex"]) | undefined;
17070
+ /** The regular expression button's label. */
17071
+ "attr:regex-label"?: (HelixHeadlessFind["regexLabel"]) | undefined;
17072
+ /** The regular expression button's label. */
17073
+ "prop:regexLabel"?: (HelixHeadlessFind["regexLabel"]) | undefined;
17074
+ /** The Replace all button's words. */
17075
+ "attr:replace-all-label"?: (HelixHeadlessFind["replaceAllLabel"]) | undefined;
17076
+ /** The Replace all button's words. */
17077
+ "prop:replaceAllLabel"?: (HelixHeadlessFind["replaceAllLabel"]) | undefined;
17078
+ /** The replace field's name and placeholder. */
17079
+ "attr:replace-field-label"?: (HelixHeadlessFind["replaceFieldLabel"]) | undefined;
17080
+ /** The replace field's name and placeholder. */
17081
+ "prop:replaceFieldLabel"?: (HelixHeadlessFind["replaceFieldLabel"]) | undefined;
17082
+ /** The Replace button's words. */
17083
+ "attr:replace-label"?: (HelixHeadlessFind["replaceLabel"]) | undefined;
17084
+ /** The Replace button's words. */
17085
+ "prop:replaceLabel"?: (HelixHeadlessFind["replaceLabel"]) | undefined;
17086
+ /** What the replace field holds, which Replace puts in place of a match. */
17087
+ "prop:replacement"?: (HelixHeadlessFind["replacement"]) | undefined;
17088
+ /** The label of the button that shows the replace row. */
17089
+ "attr:replace-toggle-label"?: (HelixHeadlessFind["replaceToggleLabel"]) | undefined;
17090
+ /** The label of the button that shows the replace row. */
17091
+ "prop:replaceToggleLabel"?: (HelixHeadlessFind["replaceToggleLabel"]) | undefined;
17092
+ /** The key that opens the bar, as a chord such as `mod+f`, where `mod` is
17093
+ Command on an Apple keyboard and Control elsewhere. Empty turns the key
17094
+ off, as for a bar the page opens itself. */
17095
+ "prop:shortcut"?: (HelixHeadlessFind["shortcut"]) | undefined;
17096
+ /** Elements inside the content whose text is not searched, as a selector,
17097
+ such as line numbers or the buttons beside each message. */
17098
+ "prop:skip"?: (HelixHeadlessFind["skip"]) | undefined;
17099
+ /** Whether only whole words match. The reader turns it on and off from the bar. */
17100
+ "bool:whole-word"?: (HelixHeadlessFind["wholeWord"]) | undefined;
17101
+ /** Whether only whole words match. The reader turns it on and off from the bar. */
17102
+ "prop:wholeWord"?: (HelixHeadlessFind["wholeWord"]) | undefined;
17103
+ /** The whole word button's label. */
17104
+ "attr:whole-word-label"?: (HelixHeadlessFind["wholeWordLabel"]) | undefined;
17105
+ /** The whole word button's label. */
17106
+ "prop:wholeWordLabel"?: (HelixHeadlessFind["wholeWordLabel"]) | undefined;
17107
+ /** Whether the element starts open. Ignored once `open` is written. */
17108
+ "bool:default-open"?: (HelixHeadlessFind["defaultOpen"]) | undefined;
17109
+ /** Whether the element starts open. Ignored once `open` is written. */
17110
+ "prop:defaultOpen"?: (HelixHeadlessFind["defaultOpen"]) | undefined;
17111
+ /** Whether the element is open.
17112
+
17113
+ One property, not two, so `dialog.open` answers the question anyone
17114
+ asking it meant. Writing always applies; `<helix-dialog open>` is the
17115
+ same statement in markup.
17116
+
17117
+ **Not reflected, and that is required rather than tidy.** Reflection
17118
+ writes the resolved state back as an attribute, so an element that opened
17119
+ itself would put `open` on its own host: cloned, serialized for
17120
+ hydration, or diffed by a framework, it comes back holding whatever the
17121
+ last reader did rather than what the author wrote. `:state(open)` carries
17122
+ the resolved state for stylesheets, which is what the mirror is for. */
17123
+ "prop:open"?: (HelixHeadlessFind["open"]) | undefined;
17124
+ /** Fired before the bar closes, and cancelable. */
17125
+ "on:helix-before-close"?: ((
17126
+ e: HelixHeadlessFindHelixBeforeCloseElementEvent,
17127
+ ) => void) | undefined;
17128
+ /** Fired before the bar opens, and cancelable. Canceling it keeps the bar closed. */
17129
+ "on:helix-before-open"?: ((
17130
+ e: HelixHeadlessFindHelixBeforeOpenElementEvent,
17131
+ ) => void) | undefined;
17132
+ /** 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. */
17133
+ "on:helix-found"?: ((e: HelixHeadlessFindHelixFoundElementEvent) => void) | undefined;
17134
+ /** Sent when the bar opens or closes, with `newState` and `oldState`. */
17135
+ "on:toggle"?: ((e: HelixHeadlessFindToggleElementEvent) => void) | undefined;
17136
+
17137
+ /** Set the innerHTML of the element */
17138
+ innerHTML?: (string) | undefined;
17139
+ /** Set the textContent of the element */
17140
+ textContent?: (string | number) | undefined;
17141
+ };
17142
+
16626
17143
  export type HelixHeadlessFormatDateProps = {
16627
17144
  /** The calendar a date is written in: `gregory`, `buddhist`, `japanese`,
16628
17145
  `roc`, or `iso8601`, or a calendar with months of its own, such as
@@ -36869,6 +37386,9 @@ export type HelixHeadlessTerminalElementEvent<E = Event> = TypedEvent<
36869
37386
  /** `helix-copy` event type */
36870
37387
  export type HelixHeadlessTerminalHelixCopyElementEvent =
36871
37388
  HelixHeadlessTerminalElementEvent<HelixCopyEvent>;
37389
+ /** `helix-found` event type */
37390
+ export type HelixHeadlessTerminalHelixFoundElementEvent =
37391
+ HelixHeadlessTerminalElementEvent<HelixFoundEvent>;
36872
37392
  /** `helix-terminal-bell` event type */
36873
37393
  export type HelixHeadlessTerminalHelixTerminalBellElementEvent =
36874
37394
  HelixHeadlessTerminalElementEvent<HelixTerminalBellEvent>;
@@ -37035,6 +37555,8 @@ write. Connect it to a setting your reader can turn on. */
37035
37555
 
37036
37556
  /** The copy control or its key put the selection on the clipboard. */
37037
37557
  "onhelix-copy"?: ((e: HelixHeadlessTerminalHelixCopyElementEvent) => void) | undefined;
37558
+ /** The find bar searched or moved among the matches, with `count` and the current match's `index`, counting from 0, or -1 for none. */
37559
+ "onhelix-found"?: ((e: HelixHeadlessTerminalHelixFoundElementEvent) => void) | undefined;
37038
37560
  /** The program rang the bell. The frame flashes once. */
37039
37561
  "onhelix-terminal-bell"?: ((
37040
37562
  e: HelixHeadlessTerminalHelixTerminalBellElementEvent,
@@ -37207,6 +37729,8 @@ write. Connect it to a setting your reader can turn on. */
37207
37729
  "prop:tabTypesLabel"?: (HelixHeadlessTerminal["tabTypesLabel"]) | undefined;
37208
37730
  /** The copy control or its key put the selection on the clipboard. */
37209
37731
  "on:helix-copy"?: ((e: HelixHeadlessTerminalHelixCopyElementEvent) => void) | undefined;
37732
+ /** The find bar searched or moved among the matches, with `count` and the current match's `index`, counting from 0, or -1 for none. */
37733
+ "on:helix-found"?: ((e: HelixHeadlessTerminalHelixFoundElementEvent) => void) | undefined;
37210
37734
  /** The program rang the bell. The frame flashes once. */
37211
37735
  "on:helix-terminal-bell"?: ((
37212
37736
  e: HelixHeadlessTerminalHelixTerminalBellElementEvent,
@@ -48794,8 +49318,8 @@ export type CustomElements<F extends Framework = "other"> = {
48794
49318
  * A pane for working on a file: a header with its name, its language and the
48795
49319
  * page's own actions, the code, the problems in it, and a status line that
48796
49320
  * says where the caret is. On its own the code is a `<textarea>` in the code
48797
- * face. Connect an engine and it draws the code instead: `connectEditor` from
48798
- * `@fusion.dev/helix-editor` connects CodeMirror, with highlighting in your
49321
+ * face. Connect an engine and it draws the code instead: `connectCodeEditor` from
49322
+ * `@fusion.dev/helix-code-editor` connects CodeMirror, with highlighting in your
48799
49323
  * theme's syntax colors, line numbers, folding, bracket matching and history.
48800
49324
  * The value, the form, validation and the events stay the editor's, so a page
48801
49325
  * reads and writes it the same either way.
@@ -48914,7 +49438,7 @@ export type CustomElements<F extends Framework = "other"> = {
48914
49438
  * Here rather than on each control.
48915
49439
  * - `diagnostics`: The problems in the text, each underlined and listed under the editor. (property only)
48916
49440
  * - `engine`: What draws the editor, such as `codeMirrorEngine()` from
48917
- * `@fusion.dev/helix-editor`. Absent, the editor is a plain text field. (property only)
49441
+ * `@fusion.dev/helix-code-editor`. Absent, the editor is a plain text field. (property only)
48918
49442
  * - `validity`: Whether the control meets its constraints, and why not. (property only) (readonly)
48919
49443
  * - `validationMessage`: The message the browser would show for the control, or an empty string. (property only) (readonly)
48920
49444
  * - `willValidate`: Whether the control is checked when its form is submitted. (property only) (readonly)
@@ -48947,6 +49471,7 @@ export type CustomElements<F extends Framework = "other"> = {
48947
49471
  *
48948
49472
  * - `change`: The reader finished an edit and focus left the code, in the engine or the plain field.
48949
49473
  * - `helix-before-change`: The text is about to change. Cancelable: cancel it to keep the current text.
49474
+ * - `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
49475
  * - `input`: Fired after the text changes.
48951
49476
  *
48952
49477
  * ## Slots
@@ -49039,9 +49564,9 @@ export type CustomElements<F extends Framework = "other"> = {
49039
49564
  * - `diagnostics`: The list of problems under the code, while there are any.
49040
49565
  * - `feedback`: The message that says what is wrong.
49041
49566
  * - `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.
49567
+ * - `find`: The find bar under the header, where the reader searches the code: a Find of its own.
49568
+ * - `find-actions`: The find bar's `actions` slot, which the editor fills with nothing.
49569
+ * - `find-bar`: The find bar's strip: the replace toggle, the field, the count, the toolbar, and the replace row while it shows.
49045
49570
  * - `find-close`: The button that closes the find bar.
49046
49571
  * - `find-close-button`: The close button's inner button.
49047
49572
  * - `find-close-live`: The close button's live region, which speaks while the button is pending.
@@ -49051,10 +49576,11 @@ export type CustomElements<F extends Framework = "other"> = {
49051
49576
  * - `find-controls-toolbar`: The box inside the find bar's toolbar that lays its buttons out.
49052
49577
  * - `find-count`: Which match is selected, of how many.
49053
49578
  * - `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.
49579
+ * - `find-live`: The find bar's live region, which says the count as it changes.
49055
49580
  * - `find-match-case`: The option that finds only the same case. Pressed while it applies.
49056
49581
  * - `find-match-case-button`: The match case button's inner button.
49057
49582
  * - `find-match-case-live`: The match case button's live region, which speaks while the button is pending.
49583
+ * - `find-match-case-pressed`: The match case option while it applies, beside `find-match-case`.
49058
49584
  * - `find-match-case-spinner`: The ring the match case button turns while it is pending.
49059
49585
  * - `find-match-case-text`: The box the match case button's icon sits in.
49060
49586
  * - `find-next`: The button that selects the next match.
@@ -49070,18 +49596,34 @@ export type CustomElements<F extends Framework = "other"> = {
49070
49596
  * - `find-regex`: The option that reads the search as a regular expression. Pressed while it applies.
49071
49597
  * - `find-regex-button`: The regular expression button's inner button.
49072
49598
  * - `find-regex-live`: The regular expression button's live region, which speaks while the button is pending.
49599
+ * - `find-regex-pressed`: The regular expression option while it applies, beside `find-regex`.
49073
49600
  * - `find-regex-spinner`: The ring the regular expression button turns while it is pending.
49074
49601
  * - `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.
49602
+ * - `find-replace`: The button that replaces the selected match.
49603
+ * - `find-replace-all`: The button that replaces every match.
49604
+ * - `find-replace-all-button`: The Replace all button's inner button.
49605
+ * - `find-replace-all-live`: The Replace all button's live region, which speaks while the button is pending.
49606
+ * - `find-replace-all-spinner`: The ring the Replace all button turns while it is pending.
49607
+ * - `find-replace-all-text`: The box the Replace all button's words sits in.
49608
+ * - `find-replace-button`: The Replace button's inner button.
49609
+ * - `find-replace-field`: The field the replacement is typed in.
49610
+ * - `find-replace-live`: The Replace button's live region, which speaks while the button is pending.
49611
+ * - `find-replace-spinner`: The ring the Replace button turns while it is pending.
49612
+ * - `find-replace-text`: The box the Replace button's words sits in.
49613
+ * - `find-replace-toggle`: The button that shows the replace field under the find field. Expanded while it shows. Not drawn while `readonly`.
49614
+ * - `find-replace-toggle-button`: The find and replace button's inner button.
49615
+ * - `find-replace-toggle-live`: The find and replace button's live region, which speaks while the button is pending.
49616
+ * - `find-replace-toggle-spinner`: The ring the find and replace button turns while it is pending.
49617
+ * - `find-replace-toggle-text`: The box the find and replace button's icon sits in.
49618
+ * - `find-toggle`: The button in the header that opens and closes the find bar. Expanded while it is open.
49619
+ * - `find-toggle-button`: The Find button's inner button.
49620
+ * - `find-toggle-live`: The Find button's live region, which speaks while the button is pending.
49621
+ * - `find-toggle-spinner`: The ring the Find button turns while it is pending.
49622
+ * - `find-toggle-text`: The box the Find button's icon sits in.
49082
49623
  * - `find-whole-word`: The option that finds only whole words. Pressed while it applies.
49083
49624
  * - `find-whole-word-button`: The whole word button's inner button.
49084
49625
  * - `find-whole-word-live`: The whole word button's live region, which speaks while the button is pending.
49626
+ * - `find-whole-word-pressed`: The whole word option while it applies, beside `find-whole-word`.
49085
49627
  * - `find-whole-word-spinner`: The ring the whole word button turns while it is pending.
49086
49628
  * - `find-whole-word-text`: The box the whole word button's icon sits in.
49087
49629
  * - `header`: The strip above the code: the name, the language, and the controls.
@@ -49090,17 +49632,6 @@ export type CustomElements<F extends Framework = "other"> = {
49090
49632
  * - `language`: The language's name in the header.
49091
49633
  * - `position`: The caret's line and column, in the status line.
49092
49634
  * - `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
49635
  * - `status`: The strip under the code.
49105
49636
  * - `view`: Where an engine draws, while one is connected.
49106
49637
  *
@@ -49111,7 +49642,6 @@ export type CustomElements<F extends Framework = "other"> = {
49111
49642
  * - `connected`: An engine draws the editor.
49112
49643
  * - `find-open`: The find bar is open.
49113
49644
  * - `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
49645
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
49116
49646
  */
49117
49647
  "helix-headless-code-editor": Partial<
@@ -54365,6 +54895,344 @@ export type CustomElements<F extends Framework = "other"> = {
54365
54895
  HelixHeadlessDrilldownProps & BaseProps<HelixHeadlessDrilldown, F> & BaseEvents<HelixHeadlessDrilldown>
54366
54896
  >;
54367
54897
 
54898
+ /**
54899
+ * Wraps a document drawn by ProseMirror or another rich text editor. The frame
54900
+ * adds a toolbar, an address bar for links, and a box the document is drawn
54901
+ * in. `connectEditor` from `@fusion.dev/helix-editor` connects ProseMirror:
54902
+ * it gives the document Helix's typed blocks, each with a stable id, and draws
54903
+ * them in your theme.
54904
+ *
54905
+ * The document is the element you write inside the frame, so it stays in the
54906
+ * page: the browser's input methods, spellcheck, and right-to-left text work in
54907
+ * it as they do in any field. A server can send the document's HTML there, and
54908
+ * it reads before any script loads. Mark it `data-prose`, so the base layer
54909
+ * draws its headings, lists, and quotes before a renderer connects.
54910
+ *
54911
+ * The toolbar's groups are named by `tools`, in this order: `history` (Undo
54912
+ * and Redo), `block` (a menu of Paragraph, three headings, and Code block),
54913
+ * `marks` (Bold, Italic, Strikethrough, and Code), `link`, `lists` (Bulleted
54914
+ * and Numbered), and `quote`, which are drawn by default, and `find`, the Find
54915
+ * button, which is drawn where `tools` names it. A tool the renderer cannot run
54916
+ * is left out once it is connected, and a tool that cannot apply at the
54917
+ * selection is disabled. A tool returns focus to the document once it has run.
54918
+ * With `readonly`, the document cannot be edited and the toolbar is not drawn.
54919
+ *
54920
+ * Command+F opens a find bar under the toolbar, a Find that searches the
54921
+ * document through the renderer, marks every match, and selects one. It
54922
+ * replaces unless the document is `readonly`, which it searches too.
54923
+ *
54924
+ * **Keyboard.** In the document:
54925
+ *
54926
+ * - Command+B, Command+I, Command+Shift+X, and Command+E make text bold,
54927
+ * italic, struck through, and code. Use Control in place of Command on
54928
+ * Windows and Linux.
54929
+ * - Command+Alt+0 makes a paragraph, Command+Alt+1 to 3 a heading, and
54930
+ * Command+Alt+8 a code block.
54931
+ * - Command+Shift+8, Command+Shift+7, and Command+Shift+9 make a bulleted
54932
+ * list, a numbered list, and a quote.
54933
+ * - Command+K opens the address bar for a link. Enter applies the address,
54934
+ * and Escape closes the bar.
54935
+ * - Command+Z undoes, and Command+Shift+Z redoes.
54936
+ * - In a list, Tab nests the item and Shift+Tab lifts it. Escape then Tab
54937
+ * leaves the document from anywhere, so a list never keeps focus.
54938
+ * - Alt+F10 moves focus to the toolbar. The arrow keys move between its
54939
+ * tools, and Escape returns to the document.
54940
+ * - Command+F opens the find bar. Enter and Shift+Enter move between the
54941
+ * matches, and Escape closes the bar and returns to the document.
54942
+ *
54943
+ * ## Attributes & Properties
54944
+ *
54945
+ * Component attributes and properties that can be applied to the element or by using JavaScript.
54946
+ *
54947
+ * - `block-chosen-label`/`blockChosenLabel`: The block menu button's name. `{name}` is the block type at the selection.
54948
+ * - `block-label`/`blockLabel`: The block menu's name, read by screen readers.
54949
+ * - `bold-label`/`boldLabel`: The Bold button's label.
54950
+ * - `bullet-list-label`/`bulletListLabel`: The Bulleted list button's label.
54951
+ * - `code-block-label`/`codeBlockLabel`: The Code block row's label in the block menu.
54952
+ * - `code-label`/`codeLabel`: The Code button's label.
54953
+ * - `controls-label`/`controlsLabel`: The toolbar's name, read by screen readers.
54954
+ * - `fallback-label`/`fallbackLabel`: The document's name where `label` is empty and the host has no `aria-label`.
54955
+ * - `find-label`/`findLabel`: The Find button's label, and the find bar's name.
54956
+ * - `heading-label`/`headingLabel`: A heading's name in the block menu. `{level}` is its level, 1 to 3.
54957
+ * - `italic-label`/`italicLabel`: The Italic button's label.
54958
+ * - `label`: The document's name, read by screen readers. Name what it holds, such as
54959
+ * "Release notes", so that several editors on one page can be told apart.
54960
+ * Required.
54961
+ * - `link-apply-label`/`linkApplyLabel`: The Apply button's label in the address bar.
54962
+ * - `link-close-label`/`linkCloseLabel`: The close button's label in the address bar.
54963
+ * - `link-controls-label`/`linkControlsLabel`: The name of the address bar's toolbar, read by screen readers.
54964
+ * - `link-field-label`/`linkFieldLabel`: The address field's name, which it also shows while it is empty.
54965
+ * - `link-label`/`linkLabel`: The Link button's label, and the address bar's name.
54966
+ * - `link-remove-label`/`linkRemoveLabel`: The Remove button's label in the address bar.
54967
+ * - `ordered-list-label`/`orderedListLabel`: The Numbered list button's label.
54968
+ * - `paragraph-label`/`paragraphLabel`: The Paragraph row's label in the block menu.
54969
+ * - `placeholder`: The words shown in an empty document, such as "Write the release notes".
54970
+ * - `quote-label`/`quoteLabel`: The Quote button's label.
54971
+ * - `readonly`/`readOnly`: Shows the document and takes no edits, with no toolbar, for a document
54972
+ * someone reads, or one an agent is writing. The attribute is `readonly`,
54973
+ * the platform's spelling.
54974
+ * - `redo-label`/`redoLabel`: The Redo button's label.
54975
+ * - `strike-label`/`strikeLabel`: The Strikethrough button's label.
54976
+ * - `tools`: Which groups of tools the toolbar draws, as a list of `history`, `block`,
54977
+ * `marks`, `link`, `lists`, and `quote`, or `none`. They are drawn in that
54978
+ * order, whatever order the list is in. Absent is all six.
54979
+ * - `undo-label`/`undoLabel`: The Undo button's label.
54980
+ * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
54981
+ *
54982
+ * **Named `whenSettled` because `settled` is taken four times over**, by
54983
+ * Image, Splitter and both color controls, none of them about transitions. A
54984
+ * base class takes the name every subclass then cannot use.
54985
+ *
54986
+ * **The state it reports cannot be watched, which is why this exists.** A
54987
+ * custom state is deliberately not in the DOM, so there is no
54988
+ * `MutationObserver` equivalent for `ElementInternals.states`. Await this
54989
+ * instead.
54990
+ *
54991
+ * Separate from `updateComplete`, which resolves in the microtask checkpoint
54992
+ * the suppression is still active in. That is the distinction `readyToMove`
54993
+ * in `@fusion.dev/helix-testing` is written around.
54994
+ *
54995
+ * It never resolves where `requestAnimationFrame` never fires, which is a
54996
+ * server, a hidden tab, and happy-dom. Callers that must not hang there race
54997
+ * it against a timeout, as the happy-dom harness's `readyToMove` does. The
54998
+ * browser harness's awaits it alone: a browser always runs the frame, and a
54999
+ * timer beside it was a bet on how long one takes, which a busy run lost. (property only) (readonly)
55000
+ *
55001
+ * ## Events
55002
+ *
55003
+ * Events that will be emitted by the component.
55004
+ *
55005
+ * - `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.
55006
+ *
55007
+ * ## Slots
55008
+ *
55009
+ * Areas where markup can be added to the component.
55010
+ *
55011
+ * - `(default)`: The element your renderer draws the document in.
55012
+ * - `actions`: Controls of your own at the end of the toolbar, such as Share or Comment.
55013
+ * - `bold-icon`: Replaces the glyph inside the Bold button.
55014
+ * - `bullet-list-icon`: Replaces the glyph inside the Bulleted list button.
55015
+ * - `code-icon`: Replaces the glyph inside the Code button.
55016
+ * - `find-icon`: Replaces the glyph inside the Find button.
55017
+ * - `footer`: Content under the document, such as a word count or whether it is saved.
55018
+ * - `italic-icon`: Replaces the glyph inside the Italic button.
55019
+ * - `link-icon`: Replaces the glyph inside the Link button.
55020
+ * - `ordered-list-icon`: Replaces the glyph inside the Numbered list button.
55021
+ * - `quote-icon`: Replaces the glyph inside the Quote button.
55022
+ * - `redo-icon`: Replaces the glyph inside the Redo button.
55023
+ * - `strike-icon`: Replaces the glyph inside the Strikethrough button.
55024
+ * - `undo-icon`: Replaces the glyph inside the Undo button.
55025
+ *
55026
+ * ## Methods
55027
+ *
55028
+ * Methods that can be called to access component functionality.
55029
+ *
55030
+ * - `attach(renderer: EditorRenderer) => EditorSink`: Hands the frame what draws the document. The frame sends it the settings
55031
+ * now and as they change, asks it to run the tools the reader presses, and
55032
+ * draws the toolbar from what it reports through the sink it gets back.
55033
+ * Attaching another renderer detaches this one.
55034
+ * - `run(tool: EditorTool, value?: string) => boolean`: Runs a tool at the selection, as its button does, and says whether it
55035
+ * ran: a block type, a mark, a list, a quote, a step through history, or a
55036
+ * link to `value`, where an empty `value` takes the link off. Nothing runs
55037
+ * while no renderer is attached, or while `readonly`.
55038
+ * - `focus(options?: FocusOptions) => void`: Puts focus in the document, with the selection where it was.
55039
+ * - `openLink() => void`: Opens the address bar with the address of the link at the selection, and puts focus in its field.
55040
+ *
55041
+ * ## CSS Parts
55042
+ *
55043
+ * Custom selectors for styling elements within the component.
55044
+ *
55045
+ * - `actions`: The `actions` slot, last in the toolbar.
55046
+ * - `block`: The button that opens the block menu, which names the block type at the selection.
55047
+ * - `block-button`: The block menu button's inner button.
55048
+ * - `block-live`: The block menu button's live region, which speaks while the button is pending.
55049
+ * - `block-menu`: The menu of block types.
55050
+ * - `block-menu-back`: The control that returns from a submenu.
55051
+ * - `block-menu-back-mark`: The glyph on the back control of a submenu.
55052
+ * - `block-menu-empty`: The text shown when the menu has no items.
55053
+ * - `block-menu-header`: The bar above a submenu, holding the way back and its name.
55054
+ * - `block-menu-live`: The block menu's live region, which repeats the empty and loading text for screen readers.
55055
+ * - `block-menu-loading`: The text shown while the items are loading.
55056
+ * - `block-menu-search-field`: The block menu's filter field, drawn with `filterable`.
55057
+ * - `block-menu-surface`: The floating panel the block menu is drawn on.
55058
+ * - `block-menu-title`: The name of the submenu that is showing.
55059
+ * - `block-name`: The name of the block type at the selection, in the block menu's button.
55060
+ * - `block-option`: One block type in the block menu, checked while the selection is in one.
55061
+ * - `block-option-end`: A block type's trailing column, which holds its shortcut.
55062
+ * - `block-option-item`: A block type's row.
55063
+ * - `block-option-mark`: The check beside the block type the selection is in.
55064
+ * - `block-option-shortcut`: A block type's key.
55065
+ * - `block-option-shortcut-kbd`: The key inside it.
55066
+ * - `block-option-shortcut-key`: One key of a block type's chord.
55067
+ * - `block-option-shortcut-separator`: The `+` between two keys of a block type's chord.
55068
+ * - `block-option-start`: A block type's leading column.
55069
+ * - `block-option-surface`: A block type's submenu panel, which a block type does not open.
55070
+ * - `block-spinner`: The ring the block menu button turns while it is pending.
55071
+ * - `block-text`: The box the block menu button's words sit in.
55072
+ * - `bold`: The Bold button. Pressed while the selection is bold.
55073
+ * - `bold-button`: The Bold button's inner button.
55074
+ * - `bold-live`: The Bold button's live region, which speaks while the button is pending.
55075
+ * - `bold-pressed`: The Bold button while the selection is bold, beside `bold`.
55076
+ * - `bold-spinner`: The ring the Bold button turns while it is pending.
55077
+ * - `bold-text`: The box the Bold button's icon sits in.
55078
+ * - `bullet-list`: The Bulleted list button. Pressed while the selection is in a bulleted list.
55079
+ * - `bullet-list-button`: The Bulleted list button's inner button.
55080
+ * - `bullet-list-live`: The Bulleted list button's live region, which speaks while the button is pending.
55081
+ * - `bullet-list-pressed`: The Bulleted list button while the selection is in a bulleted list, beside `bullet-list`.
55082
+ * - `bullet-list-spinner`: The ring the Bulleted list button turns while it is pending.
55083
+ * - `bullet-list-text`: The box the Bulleted list button's icon sits in.
55084
+ * - `code`: The Code button. Pressed while the selection is code.
55085
+ * - `code-button`: The Code button's inner button.
55086
+ * - `code-live`: The Code button's live region, which speaks while the button is pending.
55087
+ * - `code-pressed`: The Code button while the selection is code, beside `code`.
55088
+ * - `code-spinner`: The ring the Code button turns while it is pending.
55089
+ * - `code-text`: The box the Code button's icon sits in.
55090
+ * - `controls`: The toolbar: the tools, then your actions, one tab stop that the arrows move along.
55091
+ * - `controls-toolbar`: The box inside the toolbar that lays its buttons out.
55092
+ * - `divider`: The line between two groups of tools.
55093
+ * - `divider-content`: The content set into a divider, which the editor sets none into.
55094
+ * - `divider-line`: The line itself.
55095
+ * - `find`: The find bar under the toolbar, where the reader searches the document: a Find of its own.
55096
+ * - `find-actions`: The find bar's `actions` slot, which the editor fills with nothing.
55097
+ * - `find-bar`: The find bar's strip: the field, the count, the toolbar, and the replace row while it shows.
55098
+ * - `find-close`: The button that closes the find bar.
55099
+ * - `find-close-button`: The find bar's close button's inner button.
55100
+ * - `find-close-live`: The find bar's close button's live region, which speaks while the button is pending.
55101
+ * - `find-close-spinner`: The ring the find bar's close button turns while it is pending.
55102
+ * - `find-close-text`: The box the find bar's close button's icon sits in.
55103
+ * - `find-controls`: The find bar's toolbar of options and moves.
55104
+ * - `find-controls-toolbar`: The box inside the find bar's toolbar that lays its buttons out.
55105
+ * - `find-count`: Which match is selected, of how many.
55106
+ * - `find-field`: The field the search is typed in.
55107
+ * - `find-live`: The find bar's live region, which says the count as it changes.
55108
+ * - `find-match-case`: The option that finds only the same case. Pressed while it applies.
55109
+ * - `find-match-case-button`: The match case button's inner button.
55110
+ * - `find-match-case-live`: The match case button's live region, which speaks while the button is pending.
55111
+ * - `find-match-case-pressed`: The match case option while it applies, beside `find-match-case`.
55112
+ * - `find-match-case-spinner`: The ring the match case button turns while it is pending.
55113
+ * - `find-match-case-text`: The box the match case button's icon sits in.
55114
+ * - `find-next`: The button that selects the next match.
55115
+ * - `find-next-button`: The next match button's inner button.
55116
+ * - `find-next-live`: The next match button's live region, which speaks while the button is pending.
55117
+ * - `find-next-spinner`: The ring the next match button turns while it is pending.
55118
+ * - `find-next-text`: The box the next match button's icon sits in.
55119
+ * - `find-previous`: The button that selects the previous match.
55120
+ * - `find-previous-button`: The previous match button's inner button.
55121
+ * - `find-previous-live`: The previous match button's live region, which speaks while the button is pending.
55122
+ * - `find-previous-spinner`: The ring the previous match button turns while it is pending.
55123
+ * - `find-previous-text`: The box the previous match button's icon sits in.
55124
+ * - `find-regex`: The option that reads the search as a regular expression. Pressed while it applies.
55125
+ * - `find-regex-button`: The regular expression button's inner button.
55126
+ * - `find-regex-live`: The regular expression button's live region, which speaks while the button is pending.
55127
+ * - `find-regex-pressed`: The regular expression option while it applies, beside `find-regex`.
55128
+ * - `find-regex-spinner`: The ring the regular expression button turns while it is pending.
55129
+ * - `find-regex-text`: The box the regular expression button's icon sits in.
55130
+ * - `find-replace`: The button that replaces the selected match.
55131
+ * - `find-replace-all`: The button that replaces every match.
55132
+ * - `find-replace-all-button`: The Replace all button's inner button.
55133
+ * - `find-replace-all-live`: The Replace all button's live region, which speaks while the button is pending.
55134
+ * - `find-replace-all-spinner`: The ring the Replace all button turns while it is pending.
55135
+ * - `find-replace-all-text`: The box the Replace all button's words sits in.
55136
+ * - `find-replace-button`: The Replace button's inner button.
55137
+ * - `find-replace-field`: The field the replacement is typed in.
55138
+ * - `find-replace-live`: The Replace button's live region, which speaks while the button is pending.
55139
+ * - `find-replace-spinner`: The ring the Replace button turns while it is pending.
55140
+ * - `find-replace-text`: The box the Replace button's words sits in.
55141
+ * - `find-replace-toggle`: The button that shows the replace field under the find field. Expanded while it shows. Not drawn while `readonly`.
55142
+ * - `find-replace-toggle-button`: The find and replace button's inner button.
55143
+ * - `find-replace-toggle-live`: The find and replace button's live region, which speaks while the button is pending.
55144
+ * - `find-replace-toggle-spinner`: The ring the find and replace button turns while it is pending.
55145
+ * - `find-replace-toggle-text`: The box the find and replace button's icon sits in.
55146
+ * - `find-toggle`: The Find button in the toolbar, drawn where `tools` names `find`, which opens and closes the find bar. Expanded while it is open.
55147
+ * - `find-toggle-button`: The Find button's inner button.
55148
+ * - `find-toggle-live`: The Find button's live region, which speaks while the button is pending.
55149
+ * - `find-toggle-spinner`: The ring the Find button turns while it is pending.
55150
+ * - `find-toggle-text`: The box the Find button's icon sits in.
55151
+ * - `find-whole-word`: The option that finds only whole words. Pressed while it applies.
55152
+ * - `find-whole-word-button`: The whole word button's inner button.
55153
+ * - `find-whole-word-live`: The whole word button's live region, which speaks while the button is pending.
55154
+ * - `find-whole-word-pressed`: The whole word option while it applies, beside `find-whole-word`.
55155
+ * - `find-whole-word-spinner`: The ring the whole word button turns while it is pending.
55156
+ * - `find-whole-word-text`: The box the whole word button's icon sits in.
55157
+ * - `footer`: The `footer` slot, under the document.
55158
+ * - `header`: The strip above the document that holds the toolbar, and the address bar under it while it is open.
55159
+ * - `italic`: The Italic button. Pressed while the selection is italic.
55160
+ * - `italic-button`: The Italic button's inner button.
55161
+ * - `italic-live`: The Italic button's live region, which speaks while the button is pending.
55162
+ * - `italic-pressed`: The Italic button while the selection is italic, beside `italic`.
55163
+ * - `italic-spinner`: The ring the Italic button turns while it is pending.
55164
+ * - `italic-text`: The box the Italic button's icon sits in.
55165
+ * - `link`: The Link button, which opens the address bar. Pressed while the selection is in a link, and expanded while the bar is open.
55166
+ * - `link-apply`: The button that applies the address.
55167
+ * - `link-apply-button`: The Apply button's inner button.
55168
+ * - `link-apply-live`: The Apply button's live region, which speaks while the button is pending.
55169
+ * - `link-apply-spinner`: The ring the Apply button turns while it is pending.
55170
+ * - `link-apply-text`: The box the Apply button's icon sits in.
55171
+ * - `link-bar`: The bar under the toolbar where the reader writes a link's address.
55172
+ * - `link-button`: The Link button's inner button.
55173
+ * - `link-close`: The button that closes the address bar.
55174
+ * - `link-close-button`: The close button's inner button.
55175
+ * - `link-close-live`: The close button's live region, which speaks while the button is pending.
55176
+ * - `link-close-spinner`: The ring the close button turns while it is pending.
55177
+ * - `link-close-text`: The box the close button's icon sits in.
55178
+ * - `link-controls`: The toolbar at the end of the address bar: Apply, Remove, and Close.
55179
+ * - `link-controls-toolbar`: The box inside the address bar's toolbar that lays its buttons out.
55180
+ * - `link-field`: The field the address is written in.
55181
+ * - `link-live`: The Link button's live region, which speaks while the button is pending.
55182
+ * - `link-pressed`: The Link button while the selection is in a link, beside `link`.
55183
+ * - `link-remove`: The button that takes the link off. Disabled where the selection is in no link.
55184
+ * - `link-remove-button`: The Remove button's inner button.
55185
+ * - `link-remove-live`: The Remove button's live region, which speaks while the button is pending.
55186
+ * - `link-remove-spinner`: The ring the Remove button turns while it is pending.
55187
+ * - `link-remove-text`: The box the Remove button's icon sits in.
55188
+ * - `link-spinner`: The ring the Link button turns while it is pending.
55189
+ * - `link-text`: The box the Link button's icon sits in.
55190
+ * - `ordered-list`: The Numbered list button. Pressed while the selection is in a numbered list.
55191
+ * - `ordered-list-button`: The Numbered list button's inner button.
55192
+ * - `ordered-list-live`: The Numbered list button's live region, which speaks while the button is pending.
55193
+ * - `ordered-list-pressed`: The Numbered list button while the selection is in a numbered list, beside `ordered-list`.
55194
+ * - `ordered-list-spinner`: The ring the Numbered list button turns while it is pending.
55195
+ * - `ordered-list-text`: The box the Numbered list button's icon sits in.
55196
+ * - `quote`: The Quote button. Pressed while the selection is in a quote.
55197
+ * - `quote-button`: The Quote button's inner button.
55198
+ * - `quote-live`: The Quote button's live region, which speaks while the button is pending.
55199
+ * - `quote-pressed`: The Quote button while the selection is in a quote, beside `quote`.
55200
+ * - `quote-spinner`: The ring the Quote button turns while it is pending.
55201
+ * - `quote-text`: The box the Quote button's icon sits in.
55202
+ * - `redo`: The Redo button. Disabled while there is nothing to redo.
55203
+ * - `redo-button`: The Redo button's inner button.
55204
+ * - `redo-live`: The Redo button's live region, which speaks while the button is pending.
55205
+ * - `redo-spinner`: The ring the Redo button turns while it is pending.
55206
+ * - `redo-text`: The box the Redo button's icon sits in.
55207
+ * - `region`: The frame around the toolbar, the address bar, and the document.
55208
+ * - `strike`: The Strikethrough button. Pressed while the selection is struck through.
55209
+ * - `strike-button`: The Strikethrough button's inner button.
55210
+ * - `strike-live`: The Strikethrough button's live region, which speaks while the button is pending.
55211
+ * - `strike-pressed`: The Strikethrough button while the selection is struck through, beside `strike`.
55212
+ * - `strike-spinner`: The ring the Strikethrough button turns while it is pending.
55213
+ * - `strike-text`: The box the Strikethrough button's icon sits in.
55214
+ * - `tools`: A group of several tools, which a narrow toolbar wraps as one: Undo and Redo, the marks, or the lists and the quote.
55215
+ * - `undo`: The Undo button. Disabled while there is nothing to undo.
55216
+ * - `undo-button`: The Undo button's inner button.
55217
+ * - `undo-live`: The Undo button's live region, which speaks while the button is pending.
55218
+ * - `undo-spinner`: The ring the Undo button turns while it is pending.
55219
+ * - `undo-text`: The box the Undo button's icon sits in.
55220
+ * - `viewport`: The box the document is drawn in.
55221
+ *
55222
+ * ## CSS States
55223
+ *
55224
+ * These can be used to apply styling when a component is in a given state.
55225
+ *
55226
+ * - `connected`: A renderer draws the document.
55227
+ * - `document-focused`: Focus is in the document, where the reader types.
55228
+ * - `find-open`: The find bar is open.
55229
+ * - `link-open`: The address bar is open.
55230
+ * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
55231
+ */
55232
+ "helix-headless-editor": Partial<
55233
+ HelixHeadlessEditorProps & BaseProps<HelixHeadlessEditor, F> & BaseEvents<HelixHeadlessEditor>
55234
+ >;
55235
+
54368
55236
  /**
54369
55237
  * Shows what would be in a region and the one action that would fill it, so an
54370
55238
  * empty region does not look like one that failed to load.
@@ -55790,6 +56658,223 @@ export type CustomElements<F extends Framework = "other"> = {
55790
56658
  BaseEvents<HelixHeadlessFilterInput>
55791
56659
  >;
55792
56660
 
56661
+ /**
56662
+ * Searches the content `for` names, by id, and marks every match, with the
56663
+ * current one marked apart. The count says which match is current and how many
56664
+ * there are. Find opens with Command+F, or Control+F on Windows and Linux,
56665
+ * while the reader is in that content or in the bar. Everywhere else on the
56666
+ * page, the key opens the browser's own find. `shortcut` changes the key, and
56667
+ * empty turns it off.
56668
+ *
56669
+ * The match case, whole word, and regular expression options are drawn in the
56670
+ * bar. `options` names the ones it draws. Text that is not shown is not
56671
+ * searched, nor text under `inert` or `aria-hidden="true"`, nor what `skip`
56672
+ * matches. Text under `hidden="until-found"` and in a closed `<details>` is
56673
+ * searched, and opened when its match becomes current, as the browser's find
56674
+ * opens it: an Accordion section opens. A match is scrolled into the middle of
56675
+ * what scrolls it unless it is already in sight. While Find is open, a change
56676
+ * to the content searches again once the content is still.
56677
+ *
56678
+ * Content drawn some other way, such as a terminal's grid, an editor's
56679
+ * document, or rows of a list that are not all in the page, is searched by a
56680
+ * finder the page attaches with `attach(finder)`. Terminal and Code Editor
56681
+ * draw a Find of their own, which searches through their renderer. Find offers
56682
+ * replacing to a finder that can replace, unless `readonly` is set.
56683
+ *
56684
+ * The bar is a search landmark named by `label`. The count is said in a live
56685
+ * region as it changes.
56686
+ *
56687
+ * **Keyboard.** In the field, Enter moves to the next match and Shift+Enter to
56688
+ * the previous one. Escape closes the bar from anywhere in it, and focus
56689
+ * returns to where it was before the bar opened. The find key pressed again
56690
+ * moves focus to the field and selects what it holds. In the replace field,
56691
+ * Enter replaces the current match, and Command+Enter or Control+Enter
56692
+ * replaces every match.
56693
+ *
56694
+ * ## Attributes & Properties
56695
+ *
56696
+ * Component attributes and properties that can be applied to the element or by using JavaScript.
56697
+ *
56698
+ * - `close-label`/`closeLabel`: The close button's label.
56699
+ * - `controls-label`/`controlsLabel`: The name of the bar's toolbar, read by screen readers.
56700
+ * - `for`: The id of the element whose text Find searches, in the same tree as Find.
56701
+ * With a finder attached, it names only where the find key opens the bar.
56702
+ * - `invalid-label`/`invalidLabel`: What the count says when the regular expression cannot be read.
56703
+ * - `label`: The field's name and placeholder, and the name of the bar.
56704
+ * - `match-case`/`matchCase`: Whether case has to match, so "Error" does not find "error". The reader turns it on and off from the bar.
56705
+ * - `match-case-label`/`matchCaseLabel`: The match case button's label.
56706
+ * - `matches-label`/`matchesLabel`: What the count says of the matches. `{index}` is the current match,
56707
+ * counting from 1, and `{count}` how many there are.
56708
+ * - `next-label`/`nextLabel`: The next match button's label.
56709
+ * - `options`: Which options the bar draws, as a list of `match-case`, `whole-word`, and
56710
+ * `regex`, or `none`. They are always drawn in that order.
56711
+ * - `previous-label`/`previousLabel`: The previous match button's label.
56712
+ * - `query`: What the field holds: what the reader typed, or what you set.
56713
+ * - `readonly`/`readOnly`: Hides replacing, for content the reader cannot change. The attribute is `readonly`, the platform's spelling.
56714
+ * - `regex`: Whether the field reads as a regular expression, in JavaScript's syntax. The reader turns it on and off from the bar.
56715
+ * - `regex-label`/`regexLabel`: The regular expression button's label.
56716
+ * - `replace-all-label`/`replaceAllLabel`: The Replace all button's words.
56717
+ * - `replace-field-label`/`replaceFieldLabel`: The replace field's name and placeholder.
56718
+ * - `replace-label`/`replaceLabel`: The Replace button's words.
56719
+ * - `replacement`: What the replace field holds, which Replace puts in place of a match.
56720
+ * - `replace-toggle-label`/`replaceToggleLabel`: The label of the button that shows the replace row.
56721
+ * - `shortcut`: The key that opens the bar, as a chord such as `mod+f`, where `mod` is
56722
+ * Command on an Apple keyboard and Control elsewhere. Empty turns the key
56723
+ * off, as for a bar the page opens itself.
56724
+ * - `skip`: Elements inside the content whose text is not searched, as a selector,
56725
+ * such as line numbers or the buttons beside each message.
56726
+ * - `whole-word`/`wholeWord`: Whether only whole words match. The reader turns it on and off from the bar.
56727
+ * - `whole-word-label`/`wholeWordLabel`: The whole word button's label.
56728
+ * - `default-open`/`defaultOpen`: Whether the element starts open. Ignored once `open` is written.
56729
+ * - `open`: Whether the element is open.
56730
+ *
56731
+ * One property, not two, so `dialog.open` answers the question anyone
56732
+ * asking it meant. Writing always applies; `<helix-dialog open>` is the
56733
+ * same statement in markup.
56734
+ *
56735
+ * **Not reflected, and that is required rather than tidy.** Reflection
56736
+ * writes the resolved state back as an attribute, so an element that opened
56737
+ * itself would put `open` on its own host: cloned, serialized for
56738
+ * hydration, or diffed by a framework, it comes back holding whatever the
56739
+ * last reader did rather than what the author wrote. `:state(open)` carries
56740
+ * the resolved state for stylesheets, which is what the mirror is for.
56741
+ * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
56742
+ *
56743
+ * **Named `whenSettled` because `settled` is taken four times over**, by
56744
+ * Image, Splitter and both color controls, none of them about transitions. A
56745
+ * base class takes the name every subclass then cannot use.
56746
+ *
56747
+ * **The state it reports cannot be watched, which is why this exists.** A
56748
+ * custom state is deliberately not in the DOM, so there is no
56749
+ * `MutationObserver` equivalent for `ElementInternals.states`. Await this
56750
+ * instead.
56751
+ *
56752
+ * Separate from `updateComplete`, which resolves in the microtask checkpoint
56753
+ * the suppression is still active in. That is the distinction `readyToMove`
56754
+ * in `@fusion.dev/helix-testing` is written around.
56755
+ *
56756
+ * It never resolves where `requestAnimationFrame` never fires, which is a
56757
+ * server, a hidden tab, and happy-dom. Callers that must not hang there race
56758
+ * it against a timeout, as the happy-dom harness's `readyToMove` does. The
56759
+ * browser harness's awaits it alone: a browser always runs the frame, and a
56760
+ * timer beside it was a bet on how long one takes, which a busy run lost. (property only) (readonly)
56761
+ *
56762
+ * ## Events
56763
+ *
56764
+ * Events that will be emitted by the component.
56765
+ *
56766
+ * - `helix-before-close`: Fired before the bar closes, and cancelable.
56767
+ * - `helix-before-open`: Fired before the bar opens, and cancelable. Canceling it keeps the bar closed.
56768
+ * - `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.
56769
+ * - `toggle`: Sent when the bar opens or closes, with `newState` and `oldState`.
56770
+ *
56771
+ * ## Slots
56772
+ *
56773
+ * Areas where markup can be added to the component.
56774
+ *
56775
+ * - `actions`: Controls of your own in the bar's toolbar, between its options and the buttons that move between matches.
56776
+ * - `close-icon`: Replaces the glyph inside the close button.
56777
+ * - `match-case-icon`: Replaces the glyph inside the match case button.
56778
+ * - `next-icon`: Replaces the glyph inside the next match button.
56779
+ * - `previous-icon`: Replaces the glyph inside the previous match button.
56780
+ * - `regex-icon`: Replaces the glyph inside the regular expression button.
56781
+ * - `whole-word-icon`: Replaces the glyph inside the whole word button.
56782
+ *
56783
+ * ## Methods
56784
+ *
56785
+ * Methods that can be called to access component functionality.
56786
+ *
56787
+ * - `attach(finder: Finder) => FindSink`: Searches with `finder` in place of the text finder, and returns how it
56788
+ * reports a search it finishes later. Attaching another lets go of this one.
56789
+ * - `show() => Promise<void>`: Opens the bar and puts focus in its field, with what it holds selected.
56790
+ * Text selected in the content, on one line, becomes the search.
56791
+ * - `hide() => void`: Closes the bar and takes the marks away. Focus in the bar returns to where it was before the bar opened.
56792
+ * - `next() => void`: Moves to the next match, after the last one to the first.
56793
+ * - `previous() => void`: Moves to the previous match, before the first one to the last.
56794
+ * - `refresh() => void`: Searches again, staying on the current match where it still matches, for content changed in a way Find cannot see.
56795
+ * - `requestOpen(next: boolean) => boolean`: Requests that the element open or close, and returns whether the change
56796
+ * was applied.
56797
+ *
56798
+ * Announces before it acts, so `preventDefault()` on the `helix-before-open` or
56799
+ * `helix-before-close` is a refusal and nothing moves. Nobody refusing means the
56800
+ * element opens or closes itself, whether or not a consumer declared
56801
+ * `open`: a declared property is a seed and a correction, and a consumer
56802
+ * who wants the decision for themselves refuses it and assigns their own.
56803
+ * - `toggleOpen() => boolean`: Requests the opposite of the current state.
56804
+ *
56805
+ * ## CSS Parts
56806
+ *
56807
+ * Custom selectors for styling elements within the component.
56808
+ *
56809
+ * - `actions`: The `actions` slot, in the toolbar.
56810
+ * - `bar`: The bar, a search landmark: the field, the count, the toolbar, and the replace row while it shows.
56811
+ * - `close`: The button that closes the bar.
56812
+ * - `close-button`: The close button's inner button.
56813
+ * - `close-live`: The close button's live region, which speaks while the button is pending.
56814
+ * - `close-spinner`: The ring the close button turns while it is pending.
56815
+ * - `close-text`: The box the close button's icon sits in.
56816
+ * - `controls`: The toolbar: the options, your actions, and the buttons that move between matches and close the bar.
56817
+ * - `controls-toolbar`: The box inside the toolbar that lays its buttons out.
56818
+ * - `count`: Which match is current and how many there are, such as "3 of 12 matches".
56819
+ * - `field`: The search field.
56820
+ * - `live`: The live region that says the count as it changes.
56821
+ * - `match-case`: The button that matches case. Pressed while it does.
56822
+ * - `match-case-button`: The match case button's inner button.
56823
+ * - `match-case-live`: The match case button's live region, which speaks while the button is pending.
56824
+ * - `match-case-pressed`: The match case button while case has to match, beside `match-case`.
56825
+ * - `match-case-spinner`: The ring the match case button turns while it is pending.
56826
+ * - `match-case-text`: The box the match case button's icon sits in.
56827
+ * - `next`: The button that moves to the next match.
56828
+ * - `next-button`: The next match button's inner button.
56829
+ * - `next-live`: The next match button's live region, which speaks while the button is pending.
56830
+ * - `next-spinner`: The ring the next match button turns while it is pending.
56831
+ * - `next-text`: The box the next match button's icon sits in.
56832
+ * - `previous`: The button that moves to the previous match.
56833
+ * - `previous-button`: The previous match button's inner button.
56834
+ * - `previous-live`: The previous match button's live region, which speaks while the button is pending.
56835
+ * - `previous-spinner`: The ring the previous match button turns while it is pending.
56836
+ * - `previous-text`: The box the previous match button's icon sits in.
56837
+ * - `regex`: The button that reads the field as a regular expression. Pressed while it does.
56838
+ * - `regex-button`: The regular expression button's inner button.
56839
+ * - `regex-live`: The regular expression button's live region, which speaks while the button is pending.
56840
+ * - `regex-pressed`: The regular expression button while the field reads as one, beside `regex`.
56841
+ * - `regex-spinner`: The ring the regular expression button turns while it is pending.
56842
+ * - `regex-text`: The box the regular expression button's icon sits in.
56843
+ * - `replace`: The button that replaces the current match.
56844
+ * - `replace-all`: The button that replaces every match.
56845
+ * - `replace-all-button`: The Replace all button's inner button.
56846
+ * - `replace-all-live`: The Replace all button's live region, which speaks while the button is pending.
56847
+ * - `replace-all-spinner`: The ring the Replace all button turns while it is pending.
56848
+ * - `replace-all-text`: The box the Replace all button's words sit in.
56849
+ * - `replace-button`: The Replace button's inner button.
56850
+ * - `replace-field`: The field the replacement is typed in.
56851
+ * - `replace-live`: The Replace button's live region, which speaks while the button is pending.
56852
+ * - `replace-spinner`: The ring the Replace button turns while it is pending.
56853
+ * - `replace-text`: The box the Replace button's words sit in.
56854
+ * - `replace-toggle`: The button that shows the replace row. Expanded while it shows.
56855
+ * - `replace-toggle-button`: The replace toggle's inner button.
56856
+ * - `replace-toggle-live`: The replace toggle's live region, which speaks while the button is pending.
56857
+ * - `replace-toggle-spinner`: The ring the replace toggle turns while it is pending.
56858
+ * - `replace-toggle-text`: The box the replace toggle's icon sits in.
56859
+ * - `whole-word`: The button that matches whole words only. Pressed while it does.
56860
+ * - `whole-word-button`: The whole word button's inner button.
56861
+ * - `whole-word-live`: The whole word button's live region, which speaks while the button is pending.
56862
+ * - `whole-word-pressed`: The whole word button while only whole words match, beside `whole-word`.
56863
+ * - `whole-word-spinner`: The ring the whole word button turns while it is pending.
56864
+ * - `whole-word-text`: The box the whole word button's icon sits in.
56865
+ *
56866
+ * ## CSS States
56867
+ *
56868
+ * These can be used to apply styling when a component is in a given state.
56869
+ *
56870
+ * - `open`: While the bar is open.
56871
+ * - `replace-open`: While the replace row shows.
56872
+ * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
56873
+ */
56874
+ "helix-headless-find": Partial<
56875
+ HelixHeadlessFindProps & BaseProps<HelixHeadlessFind, F> & BaseEvents<HelixHeadlessFind>
56876
+ >;
56877
+
55793
56878
  /**
55794
56879
  * Formats a date with `Intl` where it is shown, so you do not write the same
55795
56880
  * `Intl` call and options in your own code.
@@ -59755,7 +60840,9 @@ export type CustomElements<F extends Framework = "other"> = {
59755
60840
  * the heading, as you write it, such as `12s`.
59756
60841
  *
59757
60842
  * A group starts shut. Write `default-open` on the step a reader should see,
59758
- * such as the one that failed.
60843
+ * such as the one that failed. A shut group's lines are hidden until found:
60844
+ * the browser's find and Find search them, and the group opens on the one
60845
+ * that holds the match, unless `helix-before-open` is canceled.
59759
60846
  *
59760
60847
  * ## Attributes & Properties
59761
60848
  *
@@ -59833,7 +60920,7 @@ export type CustomElements<F extends Framework = "other"> = {
59833
60920
  *
59834
60921
  * Custom selectors for styling elements within the component.
59835
60922
  *
59836
- * - `content`: The lines, hidden while the group is shut.
60923
+ * - `content`: The lines, hidden until found while the group is shut.
59837
60924
  * - `duration`: How long the step took.
59838
60925
  * - `heading`: The heading.
59839
60926
  * - `mark`: The caret that turns as the group opens, an `<svg>` you size.
@@ -73181,6 +74268,7 @@ export type CustomElements<F extends Framework = "other"> = {
73181
74268
  * Events that will be emitted by the component.
73182
74269
  *
73183
74270
  * - `helix-copy`: The copy control or its key put the selection on the clipboard.
74271
+ * - `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
74272
  * - `helix-terminal-bell`: The program rang the bell. The frame flashes once.
73185
74273
  * - `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
74274
  * - `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 +74369,23 @@ export type CustomElements<F extends Framework = "other"> = {
73281
74369
  * - `copy-spinner`: The ring the copy button turns while it is pending.
73282
74370
  * - `copy-text`: The box the copy button's icon sits in.
73283
74371
  * - `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.
74372
+ * - `find`: The find bar under the header, where the reader searches the output: a Find of its own.
74373
+ * - `find-actions`: The `find-actions` slot, in the find bar's toolbar.
74374
+ * - `find-bar`: The find bar's strip: the field, the count, and the toolbar.
73288
74375
  * - `find-close`: The button that closes the find bar.
73289
74376
  * - `find-close-button`: The find bar's close button's inner button.
73290
74377
  * - `find-close-live`: The find bar's close button's live region, which speaks while the button is pending.
73291
74378
  * - `find-close-spinner`: The ring the find bar's close button turns while it is pending.
73292
74379
  * - `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.
74380
+ * - `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
74381
  * - `find-controls-toolbar`: The box inside the find bar's toolbar that lays its buttons out.
73295
74382
  * - `find-count`: Which match is current and how many there are, such as "3 of 12 matches".
73296
74383
  * - `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.
74384
+ * - `find-live`: The find bar's live region, which says the count as it changes.
73298
74385
  * - `find-match-case`: The button that matches case in the find bar. Pressed while it does.
73299
74386
  * - `find-match-case-button`: The match case button's inner button.
73300
74387
  * - `find-match-case-live`: The match case button's live region, which speaks while the button is pending.
74388
+ * - `find-match-case-pressed`: The match case button while case has to match, beside `find-match-case`.
73301
74389
  * - `find-match-case-spinner`: The ring the match case button turns while it is pending.
73302
74390
  * - `find-match-case-text`: The box the match case button's icon sits in.
73303
74391
  * - `find-next`: The button that moves to the next match.
@@ -73313,13 +74401,34 @@ export type CustomElements<F extends Framework = "other"> = {
73313
74401
  * - `find-regex`: The button that reads the find field as a regular expression. Pressed while it does.
73314
74402
  * - `find-regex-button`: The regular expression button's inner button.
73315
74403
  * - `find-regex-live`: The regular expression button's live region, which speaks while the button is pending.
74404
+ * - `find-regex-pressed`: The regular expression button while the field reads as one, beside `find-regex`.
73316
74405
  * - `find-regex-spinner`: The ring the regular expression button turns while it is pending.
73317
74406
  * - `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.
74407
+ * - `find-replace`: The find bar's Replace button, which a terminal does not draw, since its output cannot be changed.
74408
+ * - `find-replace-all`: The find bar's Replace all button, which a terminal does not draw.
74409
+ * - `find-replace-all-button`: The Replace all button's inner button.
74410
+ * - `find-replace-all-live`: The Replace all button's live region, which speaks while the button is pending.
74411
+ * - `find-replace-all-spinner`: The ring the Replace all button turns while it is pending.
74412
+ * - `find-replace-all-text`: The box the Replace all button's words sits in.
74413
+ * - `find-replace-button`: The Replace button's inner button.
74414
+ * - `find-replace-field`: The find bar's replace field, which a terminal does not draw.
74415
+ * - `find-replace-live`: The Replace button's live region, which speaks while the button is pending.
74416
+ * - `find-replace-spinner`: The ring the Replace button turns while it is pending.
74417
+ * - `find-replace-text`: The box the Replace button's words sits in.
74418
+ * - `find-replace-toggle`: The button that shows the find bar's replace row, which a terminal does not draw.
74419
+ * - `find-replace-toggle-button`: The replace toggle's inner button.
74420
+ * - `find-replace-toggle-live`: The replace toggle's live region, which speaks while the button is pending.
74421
+ * - `find-replace-toggle-spinner`: The ring the replace toggle turns while it is pending.
74422
+ * - `find-replace-toggle-text`: The box the replace toggle's icon sits in.
74423
+ * - `find-toggle`: The button in the header that opens and closes the find bar. Expanded while it is open.
74424
+ * - `find-toggle-button`: The find button's inner button.
74425
+ * - `find-toggle-live`: The find button's live region, which speaks while the button is pending.
74426
+ * - `find-toggle-spinner`: The ring the find button turns while it is pending.
74427
+ * - `find-toggle-text`: The box the find button's icon sits in.
73320
74428
  * - `find-whole-word`: The button that matches whole words only in the find bar. Pressed while it does.
73321
74429
  * - `find-whole-word-button`: The whole word button's inner button.
73322
74430
  * - `find-whole-word-live`: The whole word button's live region, which speaks while the button is pending.
74431
+ * - `find-whole-word-pressed`: The whole word button while only whole words match, beside `find-whole-word`.
73323
74432
  * - `find-whole-word-spinner`: The ring the whole word button turns while it is pending.
73324
74433
  * - `find-whole-word-text`: The box the whole word button's icon sits in.
73325
74434
  * - `fullscreen`: The button that makes the terminal fill the screen. Pressed while it does.
@@ -76423,6 +77532,10 @@ export type CustomElements<F extends Framework = "other"> = {
76423
77532
  * A `disabled` item is reached by the arrow keys and announced as unavailable,
76424
77533
  * and a press, Enter or Space on it does nothing.
76425
77534
  *
77535
+ * A closed branch's children are hidden until found: the browser's find and
77536
+ * Find search them, and the branch opens on the one that holds the match,
77537
+ * unless `helix-before-open` is canceled.
77538
+ *
76426
77539
  * A `lazy` item is a branch whose children you load when it opens: opening it
76427
77540
  * sends `helix-load`, the row says it is busy, and the children you add appear
76428
77541
  * in it. Remove `lazy` once they are in.
@@ -83663,8 +84776,8 @@ export type CustomElementsSolidJs = {
83663
84776
  * A pane for working on a file: a header with its name, its language and the
83664
84777
  * page's own actions, the code, the problems in it, and a status line that
83665
84778
  * says where the caret is. On its own the code is a `<textarea>` in the code
83666
- * face. Connect an engine and it draws the code instead: `connectEditor` from
83667
- * `@fusion.dev/helix-editor` connects CodeMirror, with highlighting in your
84779
+ * face. Connect an engine and it draws the code instead: `connectCodeEditor` from
84780
+ * `@fusion.dev/helix-code-editor` connects CodeMirror, with highlighting in your
83668
84781
  * theme's syntax colors, line numbers, folding, bracket matching and history.
83669
84782
  * The value, the form, validation and the events stay the editor's, so a page
83670
84783
  * reads and writes it the same either way.
@@ -83783,7 +84896,7 @@ export type CustomElementsSolidJs = {
83783
84896
  * Here rather than on each control.
83784
84897
  * - `diagnostics`: The problems in the text, each underlined and listed under the editor. (property only)
83785
84898
  * - `engine`: What draws the editor, such as `codeMirrorEngine()` from
83786
- * `@fusion.dev/helix-editor`. Absent, the editor is a plain text field. (property only)
84899
+ * `@fusion.dev/helix-code-editor`. Absent, the editor is a plain text field. (property only)
83787
84900
  * - `validity`: Whether the control meets its constraints, and why not. (property only) (readonly)
83788
84901
  * - `validationMessage`: The message the browser would show for the control, or an empty string. (property only) (readonly)
83789
84902
  * - `willValidate`: Whether the control is checked when its form is submitted. (property only) (readonly)
@@ -83816,6 +84929,7 @@ export type CustomElementsSolidJs = {
83816
84929
  *
83817
84930
  * - `change`: The reader finished an edit and focus left the code, in the engine or the plain field.
83818
84931
  * - `helix-before-change`: The text is about to change. Cancelable: cancel it to keep the current text.
84932
+ * - `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
84933
  * - `input`: Fired after the text changes.
83820
84934
  *
83821
84935
  * ## Slots
@@ -83908,9 +85022,9 @@ export type CustomElementsSolidJs = {
83908
85022
  * - `diagnostics`: The list of problems under the code, while there are any.
83909
85023
  * - `feedback`: The message that says what is wrong.
83910
85024
  * - `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.
85025
+ * - `find`: The find bar under the header, where the reader searches the code: a Find of its own.
85026
+ * - `find-actions`: The find bar's `actions` slot, which the editor fills with nothing.
85027
+ * - `find-bar`: The find bar's strip: the replace toggle, the field, the count, the toolbar, and the replace row while it shows.
83914
85028
  * - `find-close`: The button that closes the find bar.
83915
85029
  * - `find-close-button`: The close button's inner button.
83916
85030
  * - `find-close-live`: The close button's live region, which speaks while the button is pending.
@@ -83920,10 +85034,11 @@ export type CustomElementsSolidJs = {
83920
85034
  * - `find-controls-toolbar`: The box inside the find bar's toolbar that lays its buttons out.
83921
85035
  * - `find-count`: Which match is selected, of how many.
83922
85036
  * - `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.
85037
+ * - `find-live`: The find bar's live region, which says the count as it changes.
83924
85038
  * - `find-match-case`: The option that finds only the same case. Pressed while it applies.
83925
85039
  * - `find-match-case-button`: The match case button's inner button.
83926
85040
  * - `find-match-case-live`: The match case button's live region, which speaks while the button is pending.
85041
+ * - `find-match-case-pressed`: The match case option while it applies, beside `find-match-case`.
83927
85042
  * - `find-match-case-spinner`: The ring the match case button turns while it is pending.
83928
85043
  * - `find-match-case-text`: The box the match case button's icon sits in.
83929
85044
  * - `find-next`: The button that selects the next match.
@@ -83939,18 +85054,34 @@ export type CustomElementsSolidJs = {
83939
85054
  * - `find-regex`: The option that reads the search as a regular expression. Pressed while it applies.
83940
85055
  * - `find-regex-button`: The regular expression button's inner button.
83941
85056
  * - `find-regex-live`: The regular expression button's live region, which speaks while the button is pending.
85057
+ * - `find-regex-pressed`: The regular expression option while it applies, beside `find-regex`.
83942
85058
  * - `find-regex-spinner`: The ring the regular expression button turns while it is pending.
83943
85059
  * - `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.
85060
+ * - `find-replace`: The button that replaces the selected match.
85061
+ * - `find-replace-all`: The button that replaces every match.
85062
+ * - `find-replace-all-button`: The Replace all button's inner button.
85063
+ * - `find-replace-all-live`: The Replace all button's live region, which speaks while the button is pending.
85064
+ * - `find-replace-all-spinner`: The ring the Replace all button turns while it is pending.
85065
+ * - `find-replace-all-text`: The box the Replace all button's words sits in.
85066
+ * - `find-replace-button`: The Replace button's inner button.
85067
+ * - `find-replace-field`: The field the replacement is typed in.
85068
+ * - `find-replace-live`: The Replace button's live region, which speaks while the button is pending.
85069
+ * - `find-replace-spinner`: The ring the Replace button turns while it is pending.
85070
+ * - `find-replace-text`: The box the Replace button's words sits in.
85071
+ * - `find-replace-toggle`: The button that shows the replace field under the find field. Expanded while it shows. Not drawn while `readonly`.
85072
+ * - `find-replace-toggle-button`: The find and replace button's inner button.
85073
+ * - `find-replace-toggle-live`: The find and replace button's live region, which speaks while the button is pending.
85074
+ * - `find-replace-toggle-spinner`: The ring the find and replace button turns while it is pending.
85075
+ * - `find-replace-toggle-text`: The box the find and replace button's icon sits in.
85076
+ * - `find-toggle`: The button in the header that opens and closes the find bar. Expanded while it is open.
85077
+ * - `find-toggle-button`: The Find button's inner button.
85078
+ * - `find-toggle-live`: The Find button's live region, which speaks while the button is pending.
85079
+ * - `find-toggle-spinner`: The ring the Find button turns while it is pending.
85080
+ * - `find-toggle-text`: The box the Find button's icon sits in.
83951
85081
  * - `find-whole-word`: The option that finds only whole words. Pressed while it applies.
83952
85082
  * - `find-whole-word-button`: The whole word button's inner button.
83953
85083
  * - `find-whole-word-live`: The whole word button's live region, which speaks while the button is pending.
85084
+ * - `find-whole-word-pressed`: The whole word option while it applies, beside `find-whole-word`.
83954
85085
  * - `find-whole-word-spinner`: The ring the whole word button turns while it is pending.
83955
85086
  * - `find-whole-word-text`: The box the whole word button's icon sits in.
83956
85087
  * - `header`: The strip above the code: the name, the language, and the controls.
@@ -83959,17 +85090,6 @@ export type CustomElementsSolidJs = {
83959
85090
  * - `language`: The language's name in the header.
83960
85091
  * - `position`: The caret's line and column, in the status line.
83961
85092
  * - `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
85093
  * - `status`: The strip under the code.
83974
85094
  * - `view`: Where an engine draws, while one is connected.
83975
85095
  *
@@ -83980,7 +85100,6 @@ export type CustomElementsSolidJs = {
83980
85100
  * - `connected`: An engine draws the editor.
83981
85101
  * - `find-open`: The find bar is open.
83982
85102
  * - `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
85103
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
83985
85104
  */
83986
85105
  "helix-headless-code-editor": Partial<
@@ -89274,6 +90393,347 @@ export type CustomElementsSolidJs = {
89274
90393
  BaseEvents<HelixHeadlessDrilldown>
89275
90394
  >;
89276
90395
 
90396
+ /**
90397
+ * Wraps a document drawn by ProseMirror or another rich text editor. The frame
90398
+ * adds a toolbar, an address bar for links, and a box the document is drawn
90399
+ * in. `connectEditor` from `@fusion.dev/helix-editor` connects ProseMirror:
90400
+ * it gives the document Helix's typed blocks, each with a stable id, and draws
90401
+ * them in your theme.
90402
+ *
90403
+ * The document is the element you write inside the frame, so it stays in the
90404
+ * page: the browser's input methods, spellcheck, and right-to-left text work in
90405
+ * it as they do in any field. A server can send the document's HTML there, and
90406
+ * it reads before any script loads. Mark it `data-prose`, so the base layer
90407
+ * draws its headings, lists, and quotes before a renderer connects.
90408
+ *
90409
+ * The toolbar's groups are named by `tools`, in this order: `history` (Undo
90410
+ * and Redo), `block` (a menu of Paragraph, three headings, and Code block),
90411
+ * `marks` (Bold, Italic, Strikethrough, and Code), `link`, `lists` (Bulleted
90412
+ * and Numbered), and `quote`, which are drawn by default, and `find`, the Find
90413
+ * button, which is drawn where `tools` names it. A tool the renderer cannot run
90414
+ * is left out once it is connected, and a tool that cannot apply at the
90415
+ * selection is disabled. A tool returns focus to the document once it has run.
90416
+ * With `readonly`, the document cannot be edited and the toolbar is not drawn.
90417
+ *
90418
+ * Command+F opens a find bar under the toolbar, a Find that searches the
90419
+ * document through the renderer, marks every match, and selects one. It
90420
+ * replaces unless the document is `readonly`, which it searches too.
90421
+ *
90422
+ * **Keyboard.** In the document:
90423
+ *
90424
+ * - Command+B, Command+I, Command+Shift+X, and Command+E make text bold,
90425
+ * italic, struck through, and code. Use Control in place of Command on
90426
+ * Windows and Linux.
90427
+ * - Command+Alt+0 makes a paragraph, Command+Alt+1 to 3 a heading, and
90428
+ * Command+Alt+8 a code block.
90429
+ * - Command+Shift+8, Command+Shift+7, and Command+Shift+9 make a bulleted
90430
+ * list, a numbered list, and a quote.
90431
+ * - Command+K opens the address bar for a link. Enter applies the address,
90432
+ * and Escape closes the bar.
90433
+ * - Command+Z undoes, and Command+Shift+Z redoes.
90434
+ * - In a list, Tab nests the item and Shift+Tab lifts it. Escape then Tab
90435
+ * leaves the document from anywhere, so a list never keeps focus.
90436
+ * - Alt+F10 moves focus to the toolbar. The arrow keys move between its
90437
+ * tools, and Escape returns to the document.
90438
+ * - Command+F opens the find bar. Enter and Shift+Enter move between the
90439
+ * matches, and Escape closes the bar and returns to the document.
90440
+ *
90441
+ * ## Attributes & Properties
90442
+ *
90443
+ * Component attributes and properties that can be applied to the element or by using JavaScript.
90444
+ *
90445
+ * - `block-chosen-label`/`blockChosenLabel`: The block menu button's name. `{name}` is the block type at the selection.
90446
+ * - `block-label`/`blockLabel`: The block menu's name, read by screen readers.
90447
+ * - `bold-label`/`boldLabel`: The Bold button's label.
90448
+ * - `bullet-list-label`/`bulletListLabel`: The Bulleted list button's label.
90449
+ * - `code-block-label`/`codeBlockLabel`: The Code block row's label in the block menu.
90450
+ * - `code-label`/`codeLabel`: The Code button's label.
90451
+ * - `controls-label`/`controlsLabel`: The toolbar's name, read by screen readers.
90452
+ * - `fallback-label`/`fallbackLabel`: The document's name where `label` is empty and the host has no `aria-label`.
90453
+ * - `find-label`/`findLabel`: The Find button's label, and the find bar's name.
90454
+ * - `heading-label`/`headingLabel`: A heading's name in the block menu. `{level}` is its level, 1 to 3.
90455
+ * - `italic-label`/`italicLabel`: The Italic button's label.
90456
+ * - `label`: The document's name, read by screen readers. Name what it holds, such as
90457
+ * "Release notes", so that several editors on one page can be told apart.
90458
+ * Required.
90459
+ * - `link-apply-label`/`linkApplyLabel`: The Apply button's label in the address bar.
90460
+ * - `link-close-label`/`linkCloseLabel`: The close button's label in the address bar.
90461
+ * - `link-controls-label`/`linkControlsLabel`: The name of the address bar's toolbar, read by screen readers.
90462
+ * - `link-field-label`/`linkFieldLabel`: The address field's name, which it also shows while it is empty.
90463
+ * - `link-label`/`linkLabel`: The Link button's label, and the address bar's name.
90464
+ * - `link-remove-label`/`linkRemoveLabel`: The Remove button's label in the address bar.
90465
+ * - `ordered-list-label`/`orderedListLabel`: The Numbered list button's label.
90466
+ * - `paragraph-label`/`paragraphLabel`: The Paragraph row's label in the block menu.
90467
+ * - `placeholder`: The words shown in an empty document, such as "Write the release notes".
90468
+ * - `quote-label`/`quoteLabel`: The Quote button's label.
90469
+ * - `readonly`/`readOnly`: Shows the document and takes no edits, with no toolbar, for a document
90470
+ * someone reads, or one an agent is writing. The attribute is `readonly`,
90471
+ * the platform's spelling.
90472
+ * - `redo-label`/`redoLabel`: The Redo button's label.
90473
+ * - `strike-label`/`strikeLabel`: The Strikethrough button's label.
90474
+ * - `tools`: Which groups of tools the toolbar draws, as a list of `history`, `block`,
90475
+ * `marks`, `link`, `lists`, and `quote`, or `none`. They are drawn in that
90476
+ * order, whatever order the list is in. Absent is all six.
90477
+ * - `undo-label`/`undoLabel`: The Undo button's label.
90478
+ * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
90479
+ *
90480
+ * **Named `whenSettled` because `settled` is taken four times over**, by
90481
+ * Image, Splitter and both color controls, none of them about transitions. A
90482
+ * base class takes the name every subclass then cannot use.
90483
+ *
90484
+ * **The state it reports cannot be watched, which is why this exists.** A
90485
+ * custom state is deliberately not in the DOM, so there is no
90486
+ * `MutationObserver` equivalent for `ElementInternals.states`. Await this
90487
+ * instead.
90488
+ *
90489
+ * Separate from `updateComplete`, which resolves in the microtask checkpoint
90490
+ * the suppression is still active in. That is the distinction `readyToMove`
90491
+ * in `@fusion.dev/helix-testing` is written around.
90492
+ *
90493
+ * It never resolves where `requestAnimationFrame` never fires, which is a
90494
+ * server, a hidden tab, and happy-dom. Callers that must not hang there race
90495
+ * it against a timeout, as the happy-dom harness's `readyToMove` does. The
90496
+ * browser harness's awaits it alone: a browser always runs the frame, and a
90497
+ * timer beside it was a bet on how long one takes, which a busy run lost. (property only) (readonly)
90498
+ *
90499
+ * ## Events
90500
+ *
90501
+ * Events that will be emitted by the component.
90502
+ *
90503
+ * - `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.
90504
+ *
90505
+ * ## Slots
90506
+ *
90507
+ * Areas where markup can be added to the component.
90508
+ *
90509
+ * - `(default)`: The element your renderer draws the document in.
90510
+ * - `actions`: Controls of your own at the end of the toolbar, such as Share or Comment.
90511
+ * - `bold-icon`: Replaces the glyph inside the Bold button.
90512
+ * - `bullet-list-icon`: Replaces the glyph inside the Bulleted list button.
90513
+ * - `code-icon`: Replaces the glyph inside the Code button.
90514
+ * - `find-icon`: Replaces the glyph inside the Find button.
90515
+ * - `footer`: Content under the document, such as a word count or whether it is saved.
90516
+ * - `italic-icon`: Replaces the glyph inside the Italic button.
90517
+ * - `link-icon`: Replaces the glyph inside the Link button.
90518
+ * - `ordered-list-icon`: Replaces the glyph inside the Numbered list button.
90519
+ * - `quote-icon`: Replaces the glyph inside the Quote button.
90520
+ * - `redo-icon`: Replaces the glyph inside the Redo button.
90521
+ * - `strike-icon`: Replaces the glyph inside the Strikethrough button.
90522
+ * - `undo-icon`: Replaces the glyph inside the Undo button.
90523
+ *
90524
+ * ## Methods
90525
+ *
90526
+ * Methods that can be called to access component functionality.
90527
+ *
90528
+ * - `attach(renderer: EditorRenderer) => EditorSink`: Hands the frame what draws the document. The frame sends it the settings
90529
+ * now and as they change, asks it to run the tools the reader presses, and
90530
+ * draws the toolbar from what it reports through the sink it gets back.
90531
+ * Attaching another renderer detaches this one.
90532
+ * - `run(tool: EditorTool, value?: string) => boolean`: Runs a tool at the selection, as its button does, and says whether it
90533
+ * ran: a block type, a mark, a list, a quote, a step through history, or a
90534
+ * link to `value`, where an empty `value` takes the link off. Nothing runs
90535
+ * while no renderer is attached, or while `readonly`.
90536
+ * - `focus(options?: FocusOptions) => void`: Puts focus in the document, with the selection where it was.
90537
+ * - `openLink() => void`: Opens the address bar with the address of the link at the selection, and puts focus in its field.
90538
+ *
90539
+ * ## CSS Parts
90540
+ *
90541
+ * Custom selectors for styling elements within the component.
90542
+ *
90543
+ * - `actions`: The `actions` slot, last in the toolbar.
90544
+ * - `block`: The button that opens the block menu, which names the block type at the selection.
90545
+ * - `block-button`: The block menu button's inner button.
90546
+ * - `block-live`: The block menu button's live region, which speaks while the button is pending.
90547
+ * - `block-menu`: The menu of block types.
90548
+ * - `block-menu-back`: The control that returns from a submenu.
90549
+ * - `block-menu-back-mark`: The glyph on the back control of a submenu.
90550
+ * - `block-menu-empty`: The text shown when the menu has no items.
90551
+ * - `block-menu-header`: The bar above a submenu, holding the way back and its name.
90552
+ * - `block-menu-live`: The block menu's live region, which repeats the empty and loading text for screen readers.
90553
+ * - `block-menu-loading`: The text shown while the items are loading.
90554
+ * - `block-menu-search-field`: The block menu's filter field, drawn with `filterable`.
90555
+ * - `block-menu-surface`: The floating panel the block menu is drawn on.
90556
+ * - `block-menu-title`: The name of the submenu that is showing.
90557
+ * - `block-name`: The name of the block type at the selection, in the block menu's button.
90558
+ * - `block-option`: One block type in the block menu, checked while the selection is in one.
90559
+ * - `block-option-end`: A block type's trailing column, which holds its shortcut.
90560
+ * - `block-option-item`: A block type's row.
90561
+ * - `block-option-mark`: The check beside the block type the selection is in.
90562
+ * - `block-option-shortcut`: A block type's key.
90563
+ * - `block-option-shortcut-kbd`: The key inside it.
90564
+ * - `block-option-shortcut-key`: One key of a block type's chord.
90565
+ * - `block-option-shortcut-separator`: The `+` between two keys of a block type's chord.
90566
+ * - `block-option-start`: A block type's leading column.
90567
+ * - `block-option-surface`: A block type's submenu panel, which a block type does not open.
90568
+ * - `block-spinner`: The ring the block menu button turns while it is pending.
90569
+ * - `block-text`: The box the block menu button's words sit in.
90570
+ * - `bold`: The Bold button. Pressed while the selection is bold.
90571
+ * - `bold-button`: The Bold button's inner button.
90572
+ * - `bold-live`: The Bold button's live region, which speaks while the button is pending.
90573
+ * - `bold-pressed`: The Bold button while the selection is bold, beside `bold`.
90574
+ * - `bold-spinner`: The ring the Bold button turns while it is pending.
90575
+ * - `bold-text`: The box the Bold button's icon sits in.
90576
+ * - `bullet-list`: The Bulleted list button. Pressed while the selection is in a bulleted list.
90577
+ * - `bullet-list-button`: The Bulleted list button's inner button.
90578
+ * - `bullet-list-live`: The Bulleted list button's live region, which speaks while the button is pending.
90579
+ * - `bullet-list-pressed`: The Bulleted list button while the selection is in a bulleted list, beside `bullet-list`.
90580
+ * - `bullet-list-spinner`: The ring the Bulleted list button turns while it is pending.
90581
+ * - `bullet-list-text`: The box the Bulleted list button's icon sits in.
90582
+ * - `code`: The Code button. Pressed while the selection is code.
90583
+ * - `code-button`: The Code button's inner button.
90584
+ * - `code-live`: The Code button's live region, which speaks while the button is pending.
90585
+ * - `code-pressed`: The Code button while the selection is code, beside `code`.
90586
+ * - `code-spinner`: The ring the Code button turns while it is pending.
90587
+ * - `code-text`: The box the Code button's icon sits in.
90588
+ * - `controls`: The toolbar: the tools, then your actions, one tab stop that the arrows move along.
90589
+ * - `controls-toolbar`: The box inside the toolbar that lays its buttons out.
90590
+ * - `divider`: The line between two groups of tools.
90591
+ * - `divider-content`: The content set into a divider, which the editor sets none into.
90592
+ * - `divider-line`: The line itself.
90593
+ * - `find`: The find bar under the toolbar, where the reader searches the document: a Find of its own.
90594
+ * - `find-actions`: The find bar's `actions` slot, which the editor fills with nothing.
90595
+ * - `find-bar`: The find bar's strip: the field, the count, the toolbar, and the replace row while it shows.
90596
+ * - `find-close`: The button that closes the find bar.
90597
+ * - `find-close-button`: The find bar's close button's inner button.
90598
+ * - `find-close-live`: The find bar's close button's live region, which speaks while the button is pending.
90599
+ * - `find-close-spinner`: The ring the find bar's close button turns while it is pending.
90600
+ * - `find-close-text`: The box the find bar's close button's icon sits in.
90601
+ * - `find-controls`: The find bar's toolbar of options and moves.
90602
+ * - `find-controls-toolbar`: The box inside the find bar's toolbar that lays its buttons out.
90603
+ * - `find-count`: Which match is selected, of how many.
90604
+ * - `find-field`: The field the search is typed in.
90605
+ * - `find-live`: The find bar's live region, which says the count as it changes.
90606
+ * - `find-match-case`: The option that finds only the same case. Pressed while it applies.
90607
+ * - `find-match-case-button`: The match case button's inner button.
90608
+ * - `find-match-case-live`: The match case button's live region, which speaks while the button is pending.
90609
+ * - `find-match-case-pressed`: The match case option while it applies, beside `find-match-case`.
90610
+ * - `find-match-case-spinner`: The ring the match case button turns while it is pending.
90611
+ * - `find-match-case-text`: The box the match case button's icon sits in.
90612
+ * - `find-next`: The button that selects the next match.
90613
+ * - `find-next-button`: The next match button's inner button.
90614
+ * - `find-next-live`: The next match button's live region, which speaks while the button is pending.
90615
+ * - `find-next-spinner`: The ring the next match button turns while it is pending.
90616
+ * - `find-next-text`: The box the next match button's icon sits in.
90617
+ * - `find-previous`: The button that selects the previous match.
90618
+ * - `find-previous-button`: The previous match button's inner button.
90619
+ * - `find-previous-live`: The previous match button's live region, which speaks while the button is pending.
90620
+ * - `find-previous-spinner`: The ring the previous match button turns while it is pending.
90621
+ * - `find-previous-text`: The box the previous match button's icon sits in.
90622
+ * - `find-regex`: The option that reads the search as a regular expression. Pressed while it applies.
90623
+ * - `find-regex-button`: The regular expression button's inner button.
90624
+ * - `find-regex-live`: The regular expression button's live region, which speaks while the button is pending.
90625
+ * - `find-regex-pressed`: The regular expression option while it applies, beside `find-regex`.
90626
+ * - `find-regex-spinner`: The ring the regular expression button turns while it is pending.
90627
+ * - `find-regex-text`: The box the regular expression button's icon sits in.
90628
+ * - `find-replace`: The button that replaces the selected match.
90629
+ * - `find-replace-all`: The button that replaces every match.
90630
+ * - `find-replace-all-button`: The Replace all button's inner button.
90631
+ * - `find-replace-all-live`: The Replace all button's live region, which speaks while the button is pending.
90632
+ * - `find-replace-all-spinner`: The ring the Replace all button turns while it is pending.
90633
+ * - `find-replace-all-text`: The box the Replace all button's words sits in.
90634
+ * - `find-replace-button`: The Replace button's inner button.
90635
+ * - `find-replace-field`: The field the replacement is typed in.
90636
+ * - `find-replace-live`: The Replace button's live region, which speaks while the button is pending.
90637
+ * - `find-replace-spinner`: The ring the Replace button turns while it is pending.
90638
+ * - `find-replace-text`: The box the Replace button's words sits in.
90639
+ * - `find-replace-toggle`: The button that shows the replace field under the find field. Expanded while it shows. Not drawn while `readonly`.
90640
+ * - `find-replace-toggle-button`: The find and replace button's inner button.
90641
+ * - `find-replace-toggle-live`: The find and replace button's live region, which speaks while the button is pending.
90642
+ * - `find-replace-toggle-spinner`: The ring the find and replace button turns while it is pending.
90643
+ * - `find-replace-toggle-text`: The box the find and replace button's icon sits in.
90644
+ * - `find-toggle`: The Find button in the toolbar, drawn where `tools` names `find`, which opens and closes the find bar. Expanded while it is open.
90645
+ * - `find-toggle-button`: The Find button's inner button.
90646
+ * - `find-toggle-live`: The Find button's live region, which speaks while the button is pending.
90647
+ * - `find-toggle-spinner`: The ring the Find button turns while it is pending.
90648
+ * - `find-toggle-text`: The box the Find button's icon sits in.
90649
+ * - `find-whole-word`: The option that finds only whole words. Pressed while it applies.
90650
+ * - `find-whole-word-button`: The whole word button's inner button.
90651
+ * - `find-whole-word-live`: The whole word button's live region, which speaks while the button is pending.
90652
+ * - `find-whole-word-pressed`: The whole word option while it applies, beside `find-whole-word`.
90653
+ * - `find-whole-word-spinner`: The ring the whole word button turns while it is pending.
90654
+ * - `find-whole-word-text`: The box the whole word button's icon sits in.
90655
+ * - `footer`: The `footer` slot, under the document.
90656
+ * - `header`: The strip above the document that holds the toolbar, and the address bar under it while it is open.
90657
+ * - `italic`: The Italic button. Pressed while the selection is italic.
90658
+ * - `italic-button`: The Italic button's inner button.
90659
+ * - `italic-live`: The Italic button's live region, which speaks while the button is pending.
90660
+ * - `italic-pressed`: The Italic button while the selection is italic, beside `italic`.
90661
+ * - `italic-spinner`: The ring the Italic button turns while it is pending.
90662
+ * - `italic-text`: The box the Italic button's icon sits in.
90663
+ * - `link`: The Link button, which opens the address bar. Pressed while the selection is in a link, and expanded while the bar is open.
90664
+ * - `link-apply`: The button that applies the address.
90665
+ * - `link-apply-button`: The Apply button's inner button.
90666
+ * - `link-apply-live`: The Apply button's live region, which speaks while the button is pending.
90667
+ * - `link-apply-spinner`: The ring the Apply button turns while it is pending.
90668
+ * - `link-apply-text`: The box the Apply button's icon sits in.
90669
+ * - `link-bar`: The bar under the toolbar where the reader writes a link's address.
90670
+ * - `link-button`: The Link button's inner button.
90671
+ * - `link-close`: The button that closes the address bar.
90672
+ * - `link-close-button`: The close button's inner button.
90673
+ * - `link-close-live`: The close button's live region, which speaks while the button is pending.
90674
+ * - `link-close-spinner`: The ring the close button turns while it is pending.
90675
+ * - `link-close-text`: The box the close button's icon sits in.
90676
+ * - `link-controls`: The toolbar at the end of the address bar: Apply, Remove, and Close.
90677
+ * - `link-controls-toolbar`: The box inside the address bar's toolbar that lays its buttons out.
90678
+ * - `link-field`: The field the address is written in.
90679
+ * - `link-live`: The Link button's live region, which speaks while the button is pending.
90680
+ * - `link-pressed`: The Link button while the selection is in a link, beside `link`.
90681
+ * - `link-remove`: The button that takes the link off. Disabled where the selection is in no link.
90682
+ * - `link-remove-button`: The Remove button's inner button.
90683
+ * - `link-remove-live`: The Remove button's live region, which speaks while the button is pending.
90684
+ * - `link-remove-spinner`: The ring the Remove button turns while it is pending.
90685
+ * - `link-remove-text`: The box the Remove button's icon sits in.
90686
+ * - `link-spinner`: The ring the Link button turns while it is pending.
90687
+ * - `link-text`: The box the Link button's icon sits in.
90688
+ * - `ordered-list`: The Numbered list button. Pressed while the selection is in a numbered list.
90689
+ * - `ordered-list-button`: The Numbered list button's inner button.
90690
+ * - `ordered-list-live`: The Numbered list button's live region, which speaks while the button is pending.
90691
+ * - `ordered-list-pressed`: The Numbered list button while the selection is in a numbered list, beside `ordered-list`.
90692
+ * - `ordered-list-spinner`: The ring the Numbered list button turns while it is pending.
90693
+ * - `ordered-list-text`: The box the Numbered list button's icon sits in.
90694
+ * - `quote`: The Quote button. Pressed while the selection is in a quote.
90695
+ * - `quote-button`: The Quote button's inner button.
90696
+ * - `quote-live`: The Quote button's live region, which speaks while the button is pending.
90697
+ * - `quote-pressed`: The Quote button while the selection is in a quote, beside `quote`.
90698
+ * - `quote-spinner`: The ring the Quote button turns while it is pending.
90699
+ * - `quote-text`: The box the Quote button's icon sits in.
90700
+ * - `redo`: The Redo button. Disabled while there is nothing to redo.
90701
+ * - `redo-button`: The Redo button's inner button.
90702
+ * - `redo-live`: The Redo button's live region, which speaks while the button is pending.
90703
+ * - `redo-spinner`: The ring the Redo button turns while it is pending.
90704
+ * - `redo-text`: The box the Redo button's icon sits in.
90705
+ * - `region`: The frame around the toolbar, the address bar, and the document.
90706
+ * - `strike`: The Strikethrough button. Pressed while the selection is struck through.
90707
+ * - `strike-button`: The Strikethrough button's inner button.
90708
+ * - `strike-live`: The Strikethrough button's live region, which speaks while the button is pending.
90709
+ * - `strike-pressed`: The Strikethrough button while the selection is struck through, beside `strike`.
90710
+ * - `strike-spinner`: The ring the Strikethrough button turns while it is pending.
90711
+ * - `strike-text`: The box the Strikethrough button's icon sits in.
90712
+ * - `tools`: A group of several tools, which a narrow toolbar wraps as one: Undo and Redo, the marks, or the lists and the quote.
90713
+ * - `undo`: The Undo button. Disabled while there is nothing to undo.
90714
+ * - `undo-button`: The Undo button's inner button.
90715
+ * - `undo-live`: The Undo button's live region, which speaks while the button is pending.
90716
+ * - `undo-spinner`: The ring the Undo button turns while it is pending.
90717
+ * - `undo-text`: The box the Undo button's icon sits in.
90718
+ * - `viewport`: The box the document is drawn in.
90719
+ *
90720
+ * ## CSS States
90721
+ *
90722
+ * These can be used to apply styling when a component is in a given state.
90723
+ *
90724
+ * - `connected`: A renderer draws the document.
90725
+ * - `document-focused`: Focus is in the document, where the reader types.
90726
+ * - `find-open`: The find bar is open.
90727
+ * - `link-open`: The address bar is open.
90728
+ * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
90729
+ */
90730
+ "helix-headless-editor": Partial<
90731
+ HelixHeadlessEditorProps &
90732
+ HelixHeadlessEditorSolidJsProps &
90733
+ BaseProps<HelixHeadlessEditor, "solid"> &
90734
+ BaseEvents<HelixHeadlessEditor>
90735
+ >;
90736
+
89277
90737
  /**
89278
90738
  * Shows what would be in a region and the one action that would fill it, so an
89279
90739
  * empty region does not look like one that failed to load.
@@ -90710,6 +92170,226 @@ export type CustomElementsSolidJs = {
90710
92170
  BaseEvents<HelixHeadlessFilterInput>
90711
92171
  >;
90712
92172
 
92173
+ /**
92174
+ * Searches the content `for` names, by id, and marks every match, with the
92175
+ * current one marked apart. The count says which match is current and how many
92176
+ * there are. Find opens with Command+F, or Control+F on Windows and Linux,
92177
+ * while the reader is in that content or in the bar. Everywhere else on the
92178
+ * page, the key opens the browser's own find. `shortcut` changes the key, and
92179
+ * empty turns it off.
92180
+ *
92181
+ * The match case, whole word, and regular expression options are drawn in the
92182
+ * bar. `options` names the ones it draws. Text that is not shown is not
92183
+ * searched, nor text under `inert` or `aria-hidden="true"`, nor what `skip`
92184
+ * matches. Text under `hidden="until-found"` and in a closed `<details>` is
92185
+ * searched, and opened when its match becomes current, as the browser's find
92186
+ * opens it: an Accordion section opens. A match is scrolled into the middle of
92187
+ * what scrolls it unless it is already in sight. While Find is open, a change
92188
+ * to the content searches again once the content is still.
92189
+ *
92190
+ * Content drawn some other way, such as a terminal's grid, an editor's
92191
+ * document, or rows of a list that are not all in the page, is searched by a
92192
+ * finder the page attaches with `attach(finder)`. Terminal and Code Editor
92193
+ * draw a Find of their own, which searches through their renderer. Find offers
92194
+ * replacing to a finder that can replace, unless `readonly` is set.
92195
+ *
92196
+ * The bar is a search landmark named by `label`. The count is said in a live
92197
+ * region as it changes.
92198
+ *
92199
+ * **Keyboard.** In the field, Enter moves to the next match and Shift+Enter to
92200
+ * the previous one. Escape closes the bar from anywhere in it, and focus
92201
+ * returns to where it was before the bar opened. The find key pressed again
92202
+ * moves focus to the field and selects what it holds. In the replace field,
92203
+ * Enter replaces the current match, and Command+Enter or Control+Enter
92204
+ * replaces every match.
92205
+ *
92206
+ * ## Attributes & Properties
92207
+ *
92208
+ * Component attributes and properties that can be applied to the element or by using JavaScript.
92209
+ *
92210
+ * - `close-label`/`closeLabel`: The close button's label.
92211
+ * - `controls-label`/`controlsLabel`: The name of the bar's toolbar, read by screen readers.
92212
+ * - `for`: The id of the element whose text Find searches, in the same tree as Find.
92213
+ * With a finder attached, it names only where the find key opens the bar.
92214
+ * - `invalid-label`/`invalidLabel`: What the count says when the regular expression cannot be read.
92215
+ * - `label`: The field's name and placeholder, and the name of the bar.
92216
+ * - `match-case`/`matchCase`: Whether case has to match, so "Error" does not find "error". The reader turns it on and off from the bar.
92217
+ * - `match-case-label`/`matchCaseLabel`: The match case button's label.
92218
+ * - `matches-label`/`matchesLabel`: What the count says of the matches. `{index}` is the current match,
92219
+ * counting from 1, and `{count}` how many there are.
92220
+ * - `next-label`/`nextLabel`: The next match button's label.
92221
+ * - `options`: Which options the bar draws, as a list of `match-case`, `whole-word`, and
92222
+ * `regex`, or `none`. They are always drawn in that order.
92223
+ * - `previous-label`/`previousLabel`: The previous match button's label.
92224
+ * - `query`: What the field holds: what the reader typed, or what you set.
92225
+ * - `readonly`/`readOnly`: Hides replacing, for content the reader cannot change. The attribute is `readonly`, the platform's spelling.
92226
+ * - `regex`: Whether the field reads as a regular expression, in JavaScript's syntax. The reader turns it on and off from the bar.
92227
+ * - `regex-label`/`regexLabel`: The regular expression button's label.
92228
+ * - `replace-all-label`/`replaceAllLabel`: The Replace all button's words.
92229
+ * - `replace-field-label`/`replaceFieldLabel`: The replace field's name and placeholder.
92230
+ * - `replace-label`/`replaceLabel`: The Replace button's words.
92231
+ * - `replacement`: What the replace field holds, which Replace puts in place of a match.
92232
+ * - `replace-toggle-label`/`replaceToggleLabel`: The label of the button that shows the replace row.
92233
+ * - `shortcut`: The key that opens the bar, as a chord such as `mod+f`, where `mod` is
92234
+ * Command on an Apple keyboard and Control elsewhere. Empty turns the key
92235
+ * off, as for a bar the page opens itself.
92236
+ * - `skip`: Elements inside the content whose text is not searched, as a selector,
92237
+ * such as line numbers or the buttons beside each message.
92238
+ * - `whole-word`/`wholeWord`: Whether only whole words match. The reader turns it on and off from the bar.
92239
+ * - `whole-word-label`/`wholeWordLabel`: The whole word button's label.
92240
+ * - `default-open`/`defaultOpen`: Whether the element starts open. Ignored once `open` is written.
92241
+ * - `open`: Whether the element is open.
92242
+ *
92243
+ * One property, not two, so `dialog.open` answers the question anyone
92244
+ * asking it meant. Writing always applies; `<helix-dialog open>` is the
92245
+ * same statement in markup.
92246
+ *
92247
+ * **Not reflected, and that is required rather than tidy.** Reflection
92248
+ * writes the resolved state back as an attribute, so an element that opened
92249
+ * itself would put `open` on its own host: cloned, serialized for
92250
+ * hydration, or diffed by a framework, it comes back holding whatever the
92251
+ * last reader did rather than what the author wrote. `:state(open)` carries
92252
+ * the resolved state for stylesheets, which is what the mirror is for.
92253
+ * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
92254
+ *
92255
+ * **Named `whenSettled` because `settled` is taken four times over**, by
92256
+ * Image, Splitter and both color controls, none of them about transitions. A
92257
+ * base class takes the name every subclass then cannot use.
92258
+ *
92259
+ * **The state it reports cannot be watched, which is why this exists.** A
92260
+ * custom state is deliberately not in the DOM, so there is no
92261
+ * `MutationObserver` equivalent for `ElementInternals.states`. Await this
92262
+ * instead.
92263
+ *
92264
+ * Separate from `updateComplete`, which resolves in the microtask checkpoint
92265
+ * the suppression is still active in. That is the distinction `readyToMove`
92266
+ * in `@fusion.dev/helix-testing` is written around.
92267
+ *
92268
+ * It never resolves where `requestAnimationFrame` never fires, which is a
92269
+ * server, a hidden tab, and happy-dom. Callers that must not hang there race
92270
+ * it against a timeout, as the happy-dom harness's `readyToMove` does. The
92271
+ * browser harness's awaits it alone: a browser always runs the frame, and a
92272
+ * timer beside it was a bet on how long one takes, which a busy run lost. (property only) (readonly)
92273
+ *
92274
+ * ## Events
92275
+ *
92276
+ * Events that will be emitted by the component.
92277
+ *
92278
+ * - `helix-before-close`: Fired before the bar closes, and cancelable.
92279
+ * - `helix-before-open`: Fired before the bar opens, and cancelable. Canceling it keeps the bar closed.
92280
+ * - `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.
92281
+ * - `toggle`: Sent when the bar opens or closes, with `newState` and `oldState`.
92282
+ *
92283
+ * ## Slots
92284
+ *
92285
+ * Areas where markup can be added to the component.
92286
+ *
92287
+ * - `actions`: Controls of your own in the bar's toolbar, between its options and the buttons that move between matches.
92288
+ * - `close-icon`: Replaces the glyph inside the close button.
92289
+ * - `match-case-icon`: Replaces the glyph inside the match case button.
92290
+ * - `next-icon`: Replaces the glyph inside the next match button.
92291
+ * - `previous-icon`: Replaces the glyph inside the previous match button.
92292
+ * - `regex-icon`: Replaces the glyph inside the regular expression button.
92293
+ * - `whole-word-icon`: Replaces the glyph inside the whole word button.
92294
+ *
92295
+ * ## Methods
92296
+ *
92297
+ * Methods that can be called to access component functionality.
92298
+ *
92299
+ * - `attach(finder: Finder) => FindSink`: Searches with `finder` in place of the text finder, and returns how it
92300
+ * reports a search it finishes later. Attaching another lets go of this one.
92301
+ * - `show() => Promise<void>`: Opens the bar and puts focus in its field, with what it holds selected.
92302
+ * Text selected in the content, on one line, becomes the search.
92303
+ * - `hide() => void`: Closes the bar and takes the marks away. Focus in the bar returns to where it was before the bar opened.
92304
+ * - `next() => void`: Moves to the next match, after the last one to the first.
92305
+ * - `previous() => void`: Moves to the previous match, before the first one to the last.
92306
+ * - `refresh() => void`: Searches again, staying on the current match where it still matches, for content changed in a way Find cannot see.
92307
+ * - `requestOpen(next: boolean) => boolean`: Requests that the element open or close, and returns whether the change
92308
+ * was applied.
92309
+ *
92310
+ * Announces before it acts, so `preventDefault()` on the `helix-before-open` or
92311
+ * `helix-before-close` is a refusal and nothing moves. Nobody refusing means the
92312
+ * element opens or closes itself, whether or not a consumer declared
92313
+ * `open`: a declared property is a seed and a correction, and a consumer
92314
+ * who wants the decision for themselves refuses it and assigns their own.
92315
+ * - `toggleOpen() => boolean`: Requests the opposite of the current state.
92316
+ *
92317
+ * ## CSS Parts
92318
+ *
92319
+ * Custom selectors for styling elements within the component.
92320
+ *
92321
+ * - `actions`: The `actions` slot, in the toolbar.
92322
+ * - `bar`: The bar, a search landmark: the field, the count, the toolbar, and the replace row while it shows.
92323
+ * - `close`: The button that closes the bar.
92324
+ * - `close-button`: The close button's inner button.
92325
+ * - `close-live`: The close button's live region, which speaks while the button is pending.
92326
+ * - `close-spinner`: The ring the close button turns while it is pending.
92327
+ * - `close-text`: The box the close button's icon sits in.
92328
+ * - `controls`: The toolbar: the options, your actions, and the buttons that move between matches and close the bar.
92329
+ * - `controls-toolbar`: The box inside the toolbar that lays its buttons out.
92330
+ * - `count`: Which match is current and how many there are, such as "3 of 12 matches".
92331
+ * - `field`: The search field.
92332
+ * - `live`: The live region that says the count as it changes.
92333
+ * - `match-case`: The button that matches case. Pressed while it does.
92334
+ * - `match-case-button`: The match case button's inner button.
92335
+ * - `match-case-live`: The match case button's live region, which speaks while the button is pending.
92336
+ * - `match-case-pressed`: The match case button while case has to match, beside `match-case`.
92337
+ * - `match-case-spinner`: The ring the match case button turns while it is pending.
92338
+ * - `match-case-text`: The box the match case button's icon sits in.
92339
+ * - `next`: The button that moves to the next match.
92340
+ * - `next-button`: The next match button's inner button.
92341
+ * - `next-live`: The next match button's live region, which speaks while the button is pending.
92342
+ * - `next-spinner`: The ring the next match button turns while it is pending.
92343
+ * - `next-text`: The box the next match button's icon sits in.
92344
+ * - `previous`: The button that moves to the previous match.
92345
+ * - `previous-button`: The previous match button's inner button.
92346
+ * - `previous-live`: The previous match button's live region, which speaks while the button is pending.
92347
+ * - `previous-spinner`: The ring the previous match button turns while it is pending.
92348
+ * - `previous-text`: The box the previous match button's icon sits in.
92349
+ * - `regex`: The button that reads the field as a regular expression. Pressed while it does.
92350
+ * - `regex-button`: The regular expression button's inner button.
92351
+ * - `regex-live`: The regular expression button's live region, which speaks while the button is pending.
92352
+ * - `regex-pressed`: The regular expression button while the field reads as one, beside `regex`.
92353
+ * - `regex-spinner`: The ring the regular expression button turns while it is pending.
92354
+ * - `regex-text`: The box the regular expression button's icon sits in.
92355
+ * - `replace`: The button that replaces the current match.
92356
+ * - `replace-all`: The button that replaces every match.
92357
+ * - `replace-all-button`: The Replace all button's inner button.
92358
+ * - `replace-all-live`: The Replace all button's live region, which speaks while the button is pending.
92359
+ * - `replace-all-spinner`: The ring the Replace all button turns while it is pending.
92360
+ * - `replace-all-text`: The box the Replace all button's words sit in.
92361
+ * - `replace-button`: The Replace button's inner button.
92362
+ * - `replace-field`: The field the replacement is typed in.
92363
+ * - `replace-live`: The Replace button's live region, which speaks while the button is pending.
92364
+ * - `replace-spinner`: The ring the Replace button turns while it is pending.
92365
+ * - `replace-text`: The box the Replace button's words sit in.
92366
+ * - `replace-toggle`: The button that shows the replace row. Expanded while it shows.
92367
+ * - `replace-toggle-button`: The replace toggle's inner button.
92368
+ * - `replace-toggle-live`: The replace toggle's live region, which speaks while the button is pending.
92369
+ * - `replace-toggle-spinner`: The ring the replace toggle turns while it is pending.
92370
+ * - `replace-toggle-text`: The box the replace toggle's icon sits in.
92371
+ * - `whole-word`: The button that matches whole words only. Pressed while it does.
92372
+ * - `whole-word-button`: The whole word button's inner button.
92373
+ * - `whole-word-live`: The whole word button's live region, which speaks while the button is pending.
92374
+ * - `whole-word-pressed`: The whole word button while only whole words match, beside `whole-word`.
92375
+ * - `whole-word-spinner`: The ring the whole word button turns while it is pending.
92376
+ * - `whole-word-text`: The box the whole word button's icon sits in.
92377
+ *
92378
+ * ## CSS States
92379
+ *
92380
+ * These can be used to apply styling when a component is in a given state.
92381
+ *
92382
+ * - `open`: While the bar is open.
92383
+ * - `replace-open`: While the replace row shows.
92384
+ * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
92385
+ */
92386
+ "helix-headless-find": Partial<
92387
+ HelixHeadlessFindProps &
92388
+ HelixHeadlessFindSolidJsProps &
92389
+ BaseProps<HelixHeadlessFind, "solid"> &
92390
+ BaseEvents<HelixHeadlessFind>
92391
+ >;
92392
+
90713
92393
  /**
90714
92394
  * Formats a date with `Intl` where it is shown, so you do not write the same
90715
92395
  * `Intl` call and options in your own code.
@@ -94717,7 +96397,9 @@ export type CustomElementsSolidJs = {
94717
96397
  * the heading, as you write it, such as `12s`.
94718
96398
  *
94719
96399
  * A group starts shut. Write `default-open` on the step a reader should see,
94720
- * such as the one that failed.
96400
+ * such as the one that failed. A shut group's lines are hidden until found:
96401
+ * the browser's find and Find search them, and the group opens on the one
96402
+ * that holds the match, unless `helix-before-open` is canceled.
94721
96403
  *
94722
96404
  * ## Attributes & Properties
94723
96405
  *
@@ -94795,7 +96477,7 @@ export type CustomElementsSolidJs = {
94795
96477
  *
94796
96478
  * Custom selectors for styling elements within the component.
94797
96479
  *
94798
- * - `content`: The lines, hidden while the group is shut.
96480
+ * - `content`: The lines, hidden until found while the group is shut.
94799
96481
  * - `duration`: How long the step took.
94800
96482
  * - `heading`: The heading.
94801
96483
  * - `mark`: The caret that turns as the group opens, an `<svg>` you size.
@@ -108304,6 +109986,7 @@ export type CustomElementsSolidJs = {
108304
109986
  * Events that will be emitted by the component.
108305
109987
  *
108306
109988
  * - `helix-copy`: The copy control or its key put the selection on the clipboard.
109989
+ * - `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
109990
  * - `helix-terminal-bell`: The program rang the bell. The frame flashes once.
108308
109991
  * - `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
109992
  * - `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 +110087,23 @@ export type CustomElementsSolidJs = {
108404
110087
  * - `copy-spinner`: The ring the copy button turns while it is pending.
108405
110088
  * - `copy-text`: The box the copy button's icon sits in.
108406
110089
  * - `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.
110090
+ * - `find`: The find bar under the header, where the reader searches the output: a Find of its own.
110091
+ * - `find-actions`: The `find-actions` slot, in the find bar's toolbar.
110092
+ * - `find-bar`: The find bar's strip: the field, the count, and the toolbar.
108411
110093
  * - `find-close`: The button that closes the find bar.
108412
110094
  * - `find-close-button`: The find bar's close button's inner button.
108413
110095
  * - `find-close-live`: The find bar's close button's live region, which speaks while the button is pending.
108414
110096
  * - `find-close-spinner`: The ring the find bar's close button turns while it is pending.
108415
110097
  * - `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.
110098
+ * - `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
110099
  * - `find-controls-toolbar`: The box inside the find bar's toolbar that lays its buttons out.
108418
110100
  * - `find-count`: Which match is current and how many there are, such as "3 of 12 matches".
108419
110101
  * - `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.
110102
+ * - `find-live`: The find bar's live region, which says the count as it changes.
108421
110103
  * - `find-match-case`: The button that matches case in the find bar. Pressed while it does.
108422
110104
  * - `find-match-case-button`: The match case button's inner button.
108423
110105
  * - `find-match-case-live`: The match case button's live region, which speaks while the button is pending.
110106
+ * - `find-match-case-pressed`: The match case button while case has to match, beside `find-match-case`.
108424
110107
  * - `find-match-case-spinner`: The ring the match case button turns while it is pending.
108425
110108
  * - `find-match-case-text`: The box the match case button's icon sits in.
108426
110109
  * - `find-next`: The button that moves to the next match.
@@ -108436,13 +110119,34 @@ export type CustomElementsSolidJs = {
108436
110119
  * - `find-regex`: The button that reads the find field as a regular expression. Pressed while it does.
108437
110120
  * - `find-regex-button`: The regular expression button's inner button.
108438
110121
  * - `find-regex-live`: The regular expression button's live region, which speaks while the button is pending.
110122
+ * - `find-regex-pressed`: The regular expression button while the field reads as one, beside `find-regex`.
108439
110123
  * - `find-regex-spinner`: The ring the regular expression button turns while it is pending.
108440
110124
  * - `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.
110125
+ * - `find-replace`: The find bar's Replace button, which a terminal does not draw, since its output cannot be changed.
110126
+ * - `find-replace-all`: The find bar's Replace all button, which a terminal does not draw.
110127
+ * - `find-replace-all-button`: The Replace all button's inner button.
110128
+ * - `find-replace-all-live`: The Replace all button's live region, which speaks while the button is pending.
110129
+ * - `find-replace-all-spinner`: The ring the Replace all button turns while it is pending.
110130
+ * - `find-replace-all-text`: The box the Replace all button's words sits in.
110131
+ * - `find-replace-button`: The Replace button's inner button.
110132
+ * - `find-replace-field`: The find bar's replace field, which a terminal does not draw.
110133
+ * - `find-replace-live`: The Replace button's live region, which speaks while the button is pending.
110134
+ * - `find-replace-spinner`: The ring the Replace button turns while it is pending.
110135
+ * - `find-replace-text`: The box the Replace button's words sits in.
110136
+ * - `find-replace-toggle`: The button that shows the find bar's replace row, which a terminal does not draw.
110137
+ * - `find-replace-toggle-button`: The replace toggle's inner button.
110138
+ * - `find-replace-toggle-live`: The replace toggle's live region, which speaks while the button is pending.
110139
+ * - `find-replace-toggle-spinner`: The ring the replace toggle turns while it is pending.
110140
+ * - `find-replace-toggle-text`: The box the replace toggle's icon sits in.
110141
+ * - `find-toggle`: The button in the header that opens and closes the find bar. Expanded while it is open.
110142
+ * - `find-toggle-button`: The find button's inner button.
110143
+ * - `find-toggle-live`: The find button's live region, which speaks while the button is pending.
110144
+ * - `find-toggle-spinner`: The ring the find button turns while it is pending.
110145
+ * - `find-toggle-text`: The box the find button's icon sits in.
108443
110146
  * - `find-whole-word`: The button that matches whole words only in the find bar. Pressed while it does.
108444
110147
  * - `find-whole-word-button`: The whole word button's inner button.
108445
110148
  * - `find-whole-word-live`: The whole word button's live region, which speaks while the button is pending.
110149
+ * - `find-whole-word-pressed`: The whole word button while only whole words match, beside `find-whole-word`.
108446
110150
  * - `find-whole-word-spinner`: The ring the whole word button turns while it is pending.
108447
110151
  * - `find-whole-word-text`: The box the whole word button's icon sits in.
108448
110152
  * - `fullscreen`: The button that makes the terminal fill the screen. Pressed while it does.
@@ -111583,6 +113287,10 @@ export type CustomElementsSolidJs = {
111583
113287
  * A `disabled` item is reached by the arrow keys and announced as unavailable,
111584
113288
  * and a press, Enter or Space on it does nothing.
111585
113289
  *
113290
+ * A closed branch's children are hidden until found: the browser's find and
113291
+ * Find search them, and the branch opens on the one that holds the match,
113292
+ * unless `helix-before-open` is canceled.
113293
+ *
111586
113294
  * A `lazy` item is a branch whose children you load when it opens: opening it
111587
113295
  * sends `helix-load`, the row says it is busy, and the children you add appear
111588
113296
  * in it. Remove `lazy` once they are in.