@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/svelte.d.ts CHANGED
@@ -75,6 +75,7 @@ declare module 'svelte/elements' {
75
75
  'helix-headless-drawer': Helix<'helix-headless-drawer'>
76
76
  'helix-headless-drilldown-item': Helix<'helix-headless-drilldown-item'>
77
77
  'helix-headless-drilldown': Helix<'helix-headless-drilldown'>
78
+ 'helix-headless-editor': Helix<'helix-headless-editor'>
78
79
  'helix-headless-empty': Helix<'helix-headless-empty'>
79
80
  'helix-headless-file-input': Helix<'helix-headless-file-input'>
80
81
  'helix-headless-filter-chip': Helix<'helix-headless-filter-chip'>
@@ -82,6 +83,7 @@ declare module 'svelte/elements' {
82
83
  'helix-headless-filter-menu': Helix<'helix-headless-filter-menu'>
83
84
  'helix-headless-filter-operator': Helix<'helix-headless-filter-operator'>
84
85
  'helix-headless-filter-input': Helix<'helix-headless-filter-input'>
86
+ 'helix-headless-find': Helix<'helix-headless-find'>
85
87
  'helix-headless-format-date': Helix<'helix-headless-format-date'>
86
88
  'helix-headless-graph': Helix<'helix-headless-graph'>
87
89
  'helix-headless-heatmap': Helix<'helix-headless-heatmap'>
package/types/vue.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,
@@ -3695,6 +3698,9 @@ export type HelixHeadlessCodeEditorElementEvent<E = Event> = TypedEvent<
3695
3698
  /** `helix-before-change` event type */
3696
3699
  export type HelixHeadlessCodeEditorHelixBeforeChangeElementEvent =
3697
3700
  HelixHeadlessCodeEditorElementEvent<HelixBeforeChangeEvent>;
3701
+ /** `helix-found` event type */
3702
+ export type HelixHeadlessCodeEditorHelixFoundElementEvent =
3703
+ HelixHeadlessCodeEditorElementEvent<HelixFoundEvent>;
3698
3704
 
3699
3705
  export type HelixHeadlessCodeEditorVueProps = {
3700
3706
  /** The name of the header's toolbar, read by screen readers. */
@@ -3882,7 +3888,7 @@ Here rather than on each control. */
3882
3888
  /** The problems in the text, each underlined and listed under the editor. */
3883
3889
  diagnostics?: (HelixHeadlessCodeEditor["diagnostics"]) | undefined;
3884
3890
  /** What draws the editor, such as `codeMirrorEngine()` from
3885
- `@fusion.dev/helix-editor`. Absent, the editor is a plain text field. */
3891
+ `@fusion.dev/helix-code-editor`. Absent, the editor is a plain text field. */
3886
3892
  engine?: (HelixHeadlessCodeEditor["engine"]) | undefined;
3887
3893
  };
3888
3894
 
@@ -3891,6 +3897,8 @@ export type HelixHeadlessCodeEditorVueEvents = {
3891
3897
  change: HelixHeadlessCodeEditorElementEvent;
3892
3898
  /** The text is about to change. Cancelable: cancel it to keep the current text. */
3893
3899
  "helix-before-change": HelixHeadlessCodeEditorHelixBeforeChangeElementEvent;
3900
+ /** The find bar searched or moved among the matches, with `count` and the selected match's `index`, counting from 0, or -1 for none. */
3901
+ "helix-found": HelixHeadlessCodeEditorHelixFoundElementEvent;
3894
3902
  /** Fired after the text changes. */
3895
3903
  input: HelixHeadlessCodeEditorElementEvent;
3896
3904
  };
@@ -7757,6 +7765,133 @@ export type HelixHeadlessDrilldownVueEvents = {
7757
7765
  "helix-select": HelixHeadlessDrilldownHelixSelectElementEvent;
7758
7766
  };
7759
7767
 
7768
+ /** `HelixHeadlessEditor` component event */
7769
+ export type HelixHeadlessEditorElementEvent<E = Event> = TypedEvent<
7770
+ HelixHeadlessEditor,
7771
+ E
7772
+ >;
7773
+ /** `helix-found` event type */
7774
+ export type HelixHeadlessEditorHelixFoundElementEvent =
7775
+ HelixHeadlessEditorElementEvent<HelixFoundEvent>;
7776
+
7777
+ export type HelixHeadlessEditorVueProps = {
7778
+ /** The block menu button's name. `{name}` is the block type at the selection. */
7779
+ "block-chosen-label"?: (HelixHeadlessEditor["blockChosenLabel"]) | undefined;
7780
+ /** The block menu button's name. `{name}` is the block type at the selection. */
7781
+ blockChosenLabel?: (HelixHeadlessEditor["blockChosenLabel"]) | undefined;
7782
+ /** The block menu's name, read by screen readers. */
7783
+ "block-label"?: (HelixHeadlessEditor["blockLabel"]) | undefined;
7784
+ /** The block menu's name, read by screen readers. */
7785
+ blockLabel?: (HelixHeadlessEditor["blockLabel"]) | undefined;
7786
+ /** The Bold button's label. */
7787
+ "bold-label"?: (HelixHeadlessEditor["boldLabel"]) | undefined;
7788
+ /** The Bold button's label. */
7789
+ boldLabel?: (HelixHeadlessEditor["boldLabel"]) | undefined;
7790
+ /** The Bulleted list button's label. */
7791
+ "bullet-list-label"?: (HelixHeadlessEditor["bulletListLabel"]) | undefined;
7792
+ /** The Bulleted list button's label. */
7793
+ bulletListLabel?: (HelixHeadlessEditor["bulletListLabel"]) | undefined;
7794
+ /** The Code block row's label in the block menu. */
7795
+ "code-block-label"?: (HelixHeadlessEditor["codeBlockLabel"]) | undefined;
7796
+ /** The Code block row's label in the block menu. */
7797
+ codeBlockLabel?: (HelixHeadlessEditor["codeBlockLabel"]) | undefined;
7798
+ /** The Code button's label. */
7799
+ "code-label"?: (HelixHeadlessEditor["codeLabel"]) | undefined;
7800
+ /** The Code button's label. */
7801
+ codeLabel?: (HelixHeadlessEditor["codeLabel"]) | undefined;
7802
+ /** The toolbar's name, read by screen readers. */
7803
+ "controls-label"?: (HelixHeadlessEditor["controlsLabel"]) | undefined;
7804
+ /** The toolbar's name, read by screen readers. */
7805
+ controlsLabel?: (HelixHeadlessEditor["controlsLabel"]) | undefined;
7806
+ /** The document's name where `label` is empty and the host has no `aria-label`. */
7807
+ "fallback-label"?: (HelixHeadlessEditor["fallbackLabel"]) | undefined;
7808
+ /** The document's name where `label` is empty and the host has no `aria-label`. */
7809
+ fallbackLabel?: (HelixHeadlessEditor["fallbackLabel"]) | undefined;
7810
+ /** The Find button's label, and the find bar's name. */
7811
+ "find-label"?: (HelixHeadlessEditor["findLabel"]) | undefined;
7812
+ /** The Find button's label, and the find bar's name. */
7813
+ findLabel?: (HelixHeadlessEditor["findLabel"]) | undefined;
7814
+ /** A heading's name in the block menu. `{level}` is its level, 1 to 3. */
7815
+ "heading-label"?: (HelixHeadlessEditor["headingLabel"]) | undefined;
7816
+ /** A heading's name in the block menu. `{level}` is its level, 1 to 3. */
7817
+ headingLabel?: (HelixHeadlessEditor["headingLabel"]) | undefined;
7818
+ /** The Italic button's label. */
7819
+ "italic-label"?: (HelixHeadlessEditor["italicLabel"]) | undefined;
7820
+ /** The Italic button's label. */
7821
+ italicLabel?: (HelixHeadlessEditor["italicLabel"]) | undefined;
7822
+ /** The document's name, read by screen readers. Name what it holds, such as
7823
+ "Release notes", so that several editors on one page can be told apart.
7824
+ Required. */
7825
+ label?: (HelixHeadlessEditor["label"]) | undefined;
7826
+ /** The Apply button's label in the address bar. */
7827
+ "link-apply-label"?: (HelixHeadlessEditor["linkApplyLabel"]) | undefined;
7828
+ /** The Apply button's label in the address bar. */
7829
+ linkApplyLabel?: (HelixHeadlessEditor["linkApplyLabel"]) | undefined;
7830
+ /** The close button's label in the address bar. */
7831
+ "link-close-label"?: (HelixHeadlessEditor["linkCloseLabel"]) | undefined;
7832
+ /** The close button's label in the address bar. */
7833
+ linkCloseLabel?: (HelixHeadlessEditor["linkCloseLabel"]) | undefined;
7834
+ /** The name of the address bar's toolbar, read by screen readers. */
7835
+ "link-controls-label"?: (HelixHeadlessEditor["linkControlsLabel"]) | undefined;
7836
+ /** The name of the address bar's toolbar, read by screen readers. */
7837
+ linkControlsLabel?: (HelixHeadlessEditor["linkControlsLabel"]) | undefined;
7838
+ /** The address field's name, which it also shows while it is empty. */
7839
+ "link-field-label"?: (HelixHeadlessEditor["linkFieldLabel"]) | undefined;
7840
+ /** The address field's name, which it also shows while it is empty. */
7841
+ linkFieldLabel?: (HelixHeadlessEditor["linkFieldLabel"]) | undefined;
7842
+ /** The Link button's label, and the address bar's name. */
7843
+ "link-label"?: (HelixHeadlessEditor["linkLabel"]) | undefined;
7844
+ /** The Link button's label, and the address bar's name. */
7845
+ linkLabel?: (HelixHeadlessEditor["linkLabel"]) | undefined;
7846
+ /** The Remove button's label in the address bar. */
7847
+ "link-remove-label"?: (HelixHeadlessEditor["linkRemoveLabel"]) | undefined;
7848
+ /** The Remove button's label in the address bar. */
7849
+ linkRemoveLabel?: (HelixHeadlessEditor["linkRemoveLabel"]) | undefined;
7850
+ /** The Numbered list button's label. */
7851
+ "ordered-list-label"?: (HelixHeadlessEditor["orderedListLabel"]) | undefined;
7852
+ /** The Numbered list button's label. */
7853
+ orderedListLabel?: (HelixHeadlessEditor["orderedListLabel"]) | undefined;
7854
+ /** The Paragraph row's label in the block menu. */
7855
+ "paragraph-label"?: (HelixHeadlessEditor["paragraphLabel"]) | undefined;
7856
+ /** The Paragraph row's label in the block menu. */
7857
+ paragraphLabel?: (HelixHeadlessEditor["paragraphLabel"]) | undefined;
7858
+ /** The words shown in an empty document, such as "Write the release notes". */
7859
+ placeholder?: (HelixHeadlessEditor["placeholder"]) | undefined;
7860
+ /** The Quote button's label. */
7861
+ "quote-label"?: (HelixHeadlessEditor["quoteLabel"]) | undefined;
7862
+ /** The Quote button's label. */
7863
+ quoteLabel?: (HelixHeadlessEditor["quoteLabel"]) | undefined;
7864
+ /** Shows the document and takes no edits, with no toolbar, for a document
7865
+ someone reads, or one an agent is writing. The attribute is `readonly`,
7866
+ the platform's spelling. */
7867
+ readonly?: (HelixHeadlessEditor["readOnly"]) | undefined;
7868
+ /** Shows the document and takes no edits, with no toolbar, for a document
7869
+ someone reads, or one an agent is writing. The attribute is `readonly`,
7870
+ the platform's spelling. */
7871
+ readOnly?: (HelixHeadlessEditor["readOnly"]) | undefined;
7872
+ /** The Redo button's label. */
7873
+ "redo-label"?: (HelixHeadlessEditor["redoLabel"]) | undefined;
7874
+ /** The Redo button's label. */
7875
+ redoLabel?: (HelixHeadlessEditor["redoLabel"]) | undefined;
7876
+ /** The Strikethrough button's label. */
7877
+ "strike-label"?: (HelixHeadlessEditor["strikeLabel"]) | undefined;
7878
+ /** The Strikethrough button's label. */
7879
+ strikeLabel?: (HelixHeadlessEditor["strikeLabel"]) | undefined;
7880
+ /** Which groups of tools the toolbar draws, as a list of `history`, `block`,
7881
+ `marks`, `link`, `lists`, and `quote`, or `none`. They are drawn in that
7882
+ order, whatever order the list is in. Absent is all six. */
7883
+ tools?: (HelixHeadlessEditor["tools"]) | undefined;
7884
+ /** The Undo button's label. */
7885
+ "undo-label"?: (HelixHeadlessEditor["undoLabel"]) | undefined;
7886
+ /** The Undo button's label. */
7887
+ undoLabel?: (HelixHeadlessEditor["undoLabel"]) | undefined;
7888
+ };
7889
+
7890
+ export type HelixHeadlessEditorVueEvents = {
7891
+ /** The find bar searched or moved among the matches, with `count` and the selected match's `index`, counting from 0, or -1 for none. */
7892
+ "helix-found": HelixHeadlessEditorHelixFoundElementEvent;
7893
+ };
7894
+
7760
7895
  export type HelixHeadlessEmptyVueProps = {
7761
7896
  /** The heading as words, such as "No results", drawn as a heading when
7762
7897
  nothing is slotted into `heading`.
@@ -8452,6 +8587,142 @@ export type HelixHeadlessFilterInputVueEvents = {
8452
8587
  toggle: HelixHeadlessFilterInputToggleElementEvent;
8453
8588
  };
8454
8589
 
8590
+ /** `HelixHeadlessFind` component event */
8591
+ export type HelixHeadlessFindElementEvent<E = Event> = TypedEvent<
8592
+ HelixHeadlessFind,
8593
+ E
8594
+ >;
8595
+ /** `helix-before-close` event type */
8596
+ export type HelixHeadlessFindHelixBeforeCloseElementEvent =
8597
+ HelixHeadlessFindElementEvent<HelixBeforeCloseEvent>;
8598
+ /** `helix-before-open` event type */
8599
+ export type HelixHeadlessFindHelixBeforeOpenElementEvent =
8600
+ HelixHeadlessFindElementEvent<HelixBeforeOpenEvent>;
8601
+ /** `helix-found` event type */
8602
+ export type HelixHeadlessFindHelixFoundElementEvent =
8603
+ HelixHeadlessFindElementEvent<HelixFoundEvent>;
8604
+ /** `toggle` event type */
8605
+ export type HelixHeadlessFindToggleElementEvent =
8606
+ HelixHeadlessFindElementEvent<ToggleEvent>;
8607
+
8608
+ export type HelixHeadlessFindVueProps = {
8609
+ /** The close button's label. */
8610
+ "close-label"?: (HelixHeadlessFind["closeLabel"]) | undefined;
8611
+ /** The close button's label. */
8612
+ closeLabel?: (HelixHeadlessFind["closeLabel"]) | undefined;
8613
+ /** The name of the bar's toolbar, read by screen readers. */
8614
+ "controls-label"?: (HelixHeadlessFind["controlsLabel"]) | undefined;
8615
+ /** The name of the bar's toolbar, read by screen readers. */
8616
+ controlsLabel?: (HelixHeadlessFind["controlsLabel"]) | undefined;
8617
+ /** The id of the element whose text Find searches, in the same tree as Find.
8618
+ With a finder attached, it names only where the find key opens the bar. */
8619
+ for?: (HelixHeadlessFind["for"]) | undefined;
8620
+ /** What the count says when the regular expression cannot be read. */
8621
+ "invalid-label"?: (HelixHeadlessFind["invalidLabel"]) | undefined;
8622
+ /** What the count says when the regular expression cannot be read. */
8623
+ invalidLabel?: (HelixHeadlessFind["invalidLabel"]) | undefined;
8624
+ /** The field's name and placeholder, and the name of the bar. */
8625
+ label?: (HelixHeadlessFind["label"]) | undefined;
8626
+ /** Whether case has to match, so "Error" does not find "error". The reader turns it on and off from the bar. */
8627
+ "match-case"?: (HelixHeadlessFind["matchCase"]) | undefined;
8628
+ /** Whether case has to match, so "Error" does not find "error". The reader turns it on and off from the bar. */
8629
+ matchCase?: (HelixHeadlessFind["matchCase"]) | undefined;
8630
+ /** The match case button's label. */
8631
+ "match-case-label"?: (HelixHeadlessFind["matchCaseLabel"]) | undefined;
8632
+ /** The match case button's label. */
8633
+ matchCaseLabel?: (HelixHeadlessFind["matchCaseLabel"]) | undefined;
8634
+ /** What the count says of the matches. `{index}` is the current match,
8635
+ counting from 1, and `{count}` how many there are. */
8636
+ "matches-label"?: (HelixHeadlessFind["matchesLabel"]) | undefined;
8637
+ /** What the count says of the matches. `{index}` is the current match,
8638
+ counting from 1, and `{count}` how many there are. */
8639
+ matchesLabel?: (HelixHeadlessFind["matchesLabel"]) | undefined;
8640
+ /** The next match button's label. */
8641
+ "next-label"?: (HelixHeadlessFind["nextLabel"]) | undefined;
8642
+ /** The next match button's label. */
8643
+ nextLabel?: (HelixHeadlessFind["nextLabel"]) | undefined;
8644
+ /** Which options the bar draws, as a list of `match-case`, `whole-word`, and
8645
+ `regex`, or `none`. They are always drawn in that order. */
8646
+ options?: (HelixHeadlessFind["options"]) | undefined;
8647
+ /** The previous match button's label. */
8648
+ "previous-label"?: (HelixHeadlessFind["previousLabel"]) | undefined;
8649
+ /** The previous match button's label. */
8650
+ previousLabel?: (HelixHeadlessFind["previousLabel"]) | undefined;
8651
+ /** What the field holds: what the reader typed, or what you set. */
8652
+ query?: (HelixHeadlessFind["query"]) | undefined;
8653
+ /** Hides replacing, for content the reader cannot change. The attribute is `readonly`, the platform's spelling. */
8654
+ readonly?: (HelixHeadlessFind["readOnly"]) | undefined;
8655
+ /** Hides replacing, for content the reader cannot change. The attribute is `readonly`, the platform's spelling. */
8656
+ readOnly?: (HelixHeadlessFind["readOnly"]) | undefined;
8657
+ /** Whether the field reads as a regular expression, in JavaScript's syntax. The reader turns it on and off from the bar. */
8658
+ regex?: (HelixHeadlessFind["regex"]) | undefined;
8659
+ /** The regular expression button's label. */
8660
+ "regex-label"?: (HelixHeadlessFind["regexLabel"]) | undefined;
8661
+ /** The regular expression button's label. */
8662
+ regexLabel?: (HelixHeadlessFind["regexLabel"]) | undefined;
8663
+ /** The Replace all button's words. */
8664
+ "replace-all-label"?: (HelixHeadlessFind["replaceAllLabel"]) | undefined;
8665
+ /** The Replace all button's words. */
8666
+ replaceAllLabel?: (HelixHeadlessFind["replaceAllLabel"]) | undefined;
8667
+ /** The replace field's name and placeholder. */
8668
+ "replace-field-label"?: (HelixHeadlessFind["replaceFieldLabel"]) | undefined;
8669
+ /** The replace field's name and placeholder. */
8670
+ replaceFieldLabel?: (HelixHeadlessFind["replaceFieldLabel"]) | undefined;
8671
+ /** The Replace button's words. */
8672
+ "replace-label"?: (HelixHeadlessFind["replaceLabel"]) | undefined;
8673
+ /** The Replace button's words. */
8674
+ replaceLabel?: (HelixHeadlessFind["replaceLabel"]) | undefined;
8675
+ /** What the replace field holds, which Replace puts in place of a match. */
8676
+ replacement?: (HelixHeadlessFind["replacement"]) | undefined;
8677
+ /** The label of the button that shows the replace row. */
8678
+ "replace-toggle-label"?: (HelixHeadlessFind["replaceToggleLabel"]) | undefined;
8679
+ /** The label of the button that shows the replace row. */
8680
+ replaceToggleLabel?: (HelixHeadlessFind["replaceToggleLabel"]) | undefined;
8681
+ /** The key that opens the bar, as a chord such as `mod+f`, where `mod` is
8682
+ Command on an Apple keyboard and Control elsewhere. Empty turns the key
8683
+ off, as for a bar the page opens itself. */
8684
+ shortcut?: (HelixHeadlessFind["shortcut"]) | undefined;
8685
+ /** Elements inside the content whose text is not searched, as a selector,
8686
+ such as line numbers or the buttons beside each message. */
8687
+ skip?: (HelixHeadlessFind["skip"]) | undefined;
8688
+ /** Whether only whole words match. The reader turns it on and off from the bar. */
8689
+ "whole-word"?: (HelixHeadlessFind["wholeWord"]) | undefined;
8690
+ /** Whether only whole words match. The reader turns it on and off from the bar. */
8691
+ wholeWord?: (HelixHeadlessFind["wholeWord"]) | undefined;
8692
+ /** The whole word button's label. */
8693
+ "whole-word-label"?: (HelixHeadlessFind["wholeWordLabel"]) | undefined;
8694
+ /** The whole word button's label. */
8695
+ wholeWordLabel?: (HelixHeadlessFind["wholeWordLabel"]) | undefined;
8696
+ /** Whether the element starts open. Ignored once `open` is written. */
8697
+ "default-open"?: (HelixHeadlessFind["defaultOpen"]) | undefined;
8698
+ /** Whether the element starts open. Ignored once `open` is written. */
8699
+ defaultOpen?: (HelixHeadlessFind["defaultOpen"]) | undefined;
8700
+ /** Whether the element is open.
8701
+
8702
+ One property, not two, so `dialog.open` answers the question anyone
8703
+ asking it meant. Writing always applies; `<helix-dialog open>` is the
8704
+ same statement in markup.
8705
+
8706
+ **Not reflected, and that is required rather than tidy.** Reflection
8707
+ writes the resolved state back as an attribute, so an element that opened
8708
+ itself would put `open` on its own host: cloned, serialized for
8709
+ hydration, or diffed by a framework, it comes back holding whatever the
8710
+ last reader did rather than what the author wrote. `:state(open)` carries
8711
+ the resolved state for stylesheets, which is what the mirror is for. */
8712
+ open?: (HelixHeadlessFind["open"]) | undefined;
8713
+ };
8714
+
8715
+ export type HelixHeadlessFindVueEvents = {
8716
+ /** Fired before the bar closes, and cancelable. */
8717
+ "helix-before-close": HelixHeadlessFindHelixBeforeCloseElementEvent;
8718
+ /** Fired before the bar opens, and cancelable. Canceling it keeps the bar closed. */
8719
+ "helix-before-open": HelixHeadlessFindHelixBeforeOpenElementEvent;
8720
+ /** 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. */
8721
+ "helix-found": HelixHeadlessFindHelixFoundElementEvent;
8722
+ /** Sent when the bar opens or closes, with `newState` and `oldState`. */
8723
+ toggle: HelixHeadlessFindToggleElementEvent;
8724
+ };
8725
+
8455
8726
  export type HelixHeadlessFormatDateVueProps = {
8456
8727
  /** The calendar a date is written in: `gregory`, `buddhist`, `japanese`,
8457
8728
  `roc`, or `iso8601`, or a calendar with months of its own, such as
@@ -18797,6 +19068,9 @@ export type HelixHeadlessTerminalElementEvent<E = Event> = TypedEvent<
18797
19068
  /** `helix-copy` event type */
18798
19069
  export type HelixHeadlessTerminalHelixCopyElementEvent =
18799
19070
  HelixHeadlessTerminalElementEvent<HelixCopyEvent>;
19071
+ /** `helix-found` event type */
19072
+ export type HelixHeadlessTerminalHelixFoundElementEvent =
19073
+ HelixHeadlessTerminalElementEvent<HelixFoundEvent>;
18800
19074
  /** `helix-terminal-bell` event type */
18801
19075
  export type HelixHeadlessTerminalHelixTerminalBellElementEvent =
18802
19076
  HelixHeadlessTerminalElementEvent<HelixTerminalBellEvent>;
@@ -18965,6 +19239,8 @@ write. Connect it to a setting your reader can turn on. */
18965
19239
  export type HelixHeadlessTerminalVueEvents = {
18966
19240
  /** The copy control or its key put the selection on the clipboard. */
18967
19241
  "helix-copy": HelixHeadlessTerminalHelixCopyElementEvent;
19242
+ /** The find bar searched or moved among the matches, with `count` and the current match's `index`, counting from 0, or -1 for none. */
19243
+ "helix-found": HelixHeadlessTerminalHelixFoundElementEvent;
18968
19244
  /** The program rang the bell. The frame flashes once. */
18969
19245
  "helix-terminal-bell": HelixHeadlessTerminalHelixTerminalBellElementEvent;
18970
19246
  /** 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. */
@@ -22618,7 +22894,7 @@ export interface WcToolkitVueGlobalComponents {
22618
22894
  HelixHeadlessCodeBlockVueProps,
22619
22895
  HelixHeadlessCodeBlockVueEvents
22620
22896
  >;
22621
- /** A pane for working on a file: a header with its name, its language and the page's own actions, the code, the problems in it, and a status line that says where the caret is. On its own the code is a '<textarea>' in the code face. Connect an engine and it draws the code instead: 'connectEditor' from '@fusion.dev/helix-editor' connects CodeMirror, with highlighting in your theme's syntax colors, line numbers, folding, bracket matching and history. The value, the form, validation and the events stay the editor's, so a page reads and writes it the same either way. For a few lines in a form, such as a setting in JSON, use 'Code Input', which needs no engine. - 'language' picks the highlighting, such as 'ts', 'css', 'html', 'md', 'json', 'python', 'rust' or 'sh', and the header names it. - 'diagnostics' marks problems, from a linter or a language server: each is underlined in the text, its line number is drawn in its tone, and it is listed under the code, where pressing it moves the caret to it. - The find bar finds, with the case, whole words or a regular expression, and replaces once its first button shows the replace field, in the engine or in the plain field alike. - Every change goes through 'requestValue', so a listener refusing 'helix-before-change' refuses the keystroke, in the engine too. **Keyboard.** Command+F, or Control+F elsewhere, opens the find bar, Enter and Shift+Enter move between matches, and Escape closes it. In an engine, Tab indents and Escape then Tab leaves the editor, so the editor is never a trap for a reader without a pointer. */
22897
+ /** A pane for working on a file: a header with its name, its language and the page's own actions, the code, the problems in it, and a status line that says where the caret is. On its own the code is a '<textarea>' in the code face. Connect an engine and it draws the code instead: 'connectCodeEditor' from '@fusion.dev/helix-code-editor' connects CodeMirror, with highlighting in your theme's syntax colors, line numbers, folding, bracket matching and history. The value, the form, validation and the events stay the editor's, so a page reads and writes it the same either way. For a few lines in a form, such as a setting in JSON, use 'Code Input', which needs no engine. - 'language' picks the highlighting, such as 'ts', 'css', 'html', 'md', 'json', 'python', 'rust' or 'sh', and the header names it. - 'diagnostics' marks problems, from a linter or a language server: each is underlined in the text, its line number is drawn in its tone, and it is listed under the code, where pressing it moves the caret to it. - The find bar finds, with the case, whole words or a regular expression, and replaces once its first button shows the replace field, in the engine or in the plain field alike. - Every change goes through 'requestValue', so a listener refusing 'helix-before-change' refuses the keystroke, in the engine too. **Keyboard.** Command+F, or Control+F elsewhere, opens the find bar, Enter and Shift+Enter move between matches, and Escape closes it. In an engine, Tab indents and Escape then Tab leaves the editor, so the editor is never a trap for a reader without a pointer. */
22622
22898
  "helix-headless-code-editor": DefineCustomElement<
22623
22899
  HelixHeadlessCodeEditor,
22624
22900
  HelixHeadlessCodeEditorVueProps,
@@ -22738,6 +23014,12 @@ export interface WcToolkitVueGlobalComponents {
22738
23014
  HelixHeadlessDrilldownVueProps,
22739
23015
  HelixHeadlessDrilldownVueEvents
22740
23016
  >;
23017
+ /** Wraps a document drawn by ProseMirror or another rich text editor. The frame adds a toolbar, an address bar for links, and a box the document is drawn in. 'connectEditor' from '@fusion.dev/helix-editor' connects ProseMirror: it gives the document Helix's typed blocks, each with a stable id, and draws them in your theme. The document is the element you write inside the frame, so it stays in the page: the browser's input methods, spellcheck, and right-to-left text work in it as they do in any field. A server can send the document's HTML there, and it reads before any script loads. Mark it 'data-prose', so the base layer draws its headings, lists, and quotes before a renderer connects. The toolbar's groups are named by 'tools', in this order: 'history' (Undo and Redo), 'block' (a menu of Paragraph, three headings, and Code block), 'marks' (Bold, Italic, Strikethrough, and Code), 'link', 'lists' (Bulleted and Numbered), and 'quote', which are drawn by default, and 'find', the Find button, which is drawn where 'tools' names it. A tool the renderer cannot run is left out once it is connected, and a tool that cannot apply at the selection is disabled. A tool returns focus to the document once it has run. With 'readonly', the document cannot be edited and the toolbar is not drawn. Command+F opens a find bar under the toolbar, a Find that searches the document through the renderer, marks every match, and selects one. It replaces unless the document is 'readonly', which it searches too. **Keyboard.** In the document: - Command+B, Command+I, Command+Shift+X, and Command+E make text bold, italic, struck through, and code. Use Control in place of Command on Windows and Linux. - Command+Alt+0 makes a paragraph, Command+Alt+1 to 3 a heading, and Command+Alt+8 a code block. - Command+Shift+8, Command+Shift+7, and Command+Shift+9 make a bulleted list, a numbered list, and a quote. - Command+K opens the address bar for a link. Enter applies the address, and Escape closes the bar. - Command+Z undoes, and Command+Shift+Z redoes. - In a list, Tab nests the item and Shift+Tab lifts it. Escape then Tab leaves the document from anywhere, so a list never keeps focus. - Alt+F10 moves focus to the toolbar. The arrow keys move between its tools, and Escape returns to the document. - Command+F opens the find bar. Enter and Shift+Enter move between the matches, and Escape closes the bar and returns to the document. */
23018
+ "helix-headless-editor": DefineCustomElement<
23019
+ HelixHeadlessEditor,
23020
+ HelixHeadlessEditorVueProps,
23021
+ HelixHeadlessEditorVueEvents
23022
+ >;
22741
23023
  /** Shows what would be in a region and the one action that would fill it, so an empty region does not look like one that failed to load. The message is announced, because an empty view often replaces content that was loading, and the announcement tells a screen reader user that the search returned nothing. It is announced from a status region of its own, which is rendered empty and filled a frame after the view appears. Screen readers read a region that arrives with its text already in it inconsistently. For the seven seconds the region holds its copy, the heading and the message are hidden from screen readers, so the words are in the page once. Every region is a bare slot. There is no 'empty-state-heading' or 'empty-state-actions' element: assign your own heading and actions to the slots. The icon, the message and the actions slots are parts of the same names, as Card's regions are. A slot draws no box, so a part passes inherited properties, such as color and font, to what is slotted, and a page wanting a box there gives it one with 'display', such as a row of actions with 'display: flex'. **The view says which regions it holds**, as ':state(has-icon)' and ':state(has-actions)', so a sheet can space a view with no icon or no actions differently. Read in the browser, so a served view carries neither until the script runs. **Or give the heading as words.** 'heading' draws them in a 'heading' part that is a heading at 'heading-level', 3 where it is not set, so a page rendering from data or on a server gets a heading a reader finds in the outline without writing the element. A heading slotted in replaces it. **Whatever is slotted into 'heading' is read as a heading.** An element that is no heading, such as a '<span>' or a '<p>', is set inside the 'heading' part at 'heading-level', so a screen reader still finds it in the outline. A heading element, or an element holding one, keeps its own level. A server cannot see the slotted element, so a served '<span>' becomes a heading once the script runs. */
22742
23024
  "helix-headless-empty": DefineCustomElement<
22743
23025
  HelixHeadlessEmpty,
@@ -22780,6 +23062,12 @@ export interface WcToolkitVueGlobalComponents {
22780
23062
  HelixHeadlessFilterInputVueProps,
22781
23063
  HelixHeadlessFilterInputVueEvents
22782
23064
  >;
23065
+ /** Searches the content 'for' names, by id, and marks every match, with the current one marked apart. The count says which match is current and how many there are. Find opens with Command+F, or Control+F on Windows and Linux, while the reader is in that content or in the bar. Everywhere else on the page, the key opens the browser's own find. 'shortcut' changes the key, and empty turns it off. The match case, whole word, and regular expression options are drawn in the bar. 'options' names the ones it draws. Text that is not shown is not searched, nor text under 'inert' or 'aria-hidden="true"', nor what 'skip' matches. Text under 'hidden="until-found"' and in a closed '<details>' is searched, and opened when its match becomes current, as the browser's find opens it: an Accordion section opens. A match is scrolled into the middle of what scrolls it unless it is already in sight. While Find is open, a change to the content searches again once the content is still. Content drawn some other way, such as a terminal's grid, an editor's document, or rows of a list that are not all in the page, is searched by a finder the page attaches with 'attach(finder)'. Terminal and Code Editor draw a Find of their own, which searches through their renderer. Find offers replacing to a finder that can replace, unless 'readonly' is set. The bar is a search landmark named by 'label'. The count is said in a live region as it changes. **Keyboard.** In the field, Enter moves to the next match and Shift+Enter to the previous one. Escape closes the bar from anywhere in it, and focus returns to where it was before the bar opened. The find key pressed again moves focus to the field and selects what it holds. In the replace field, Enter replaces the current match, and Command+Enter or Control+Enter replaces every match. */
23066
+ "helix-headless-find": DefineCustomElement<
23067
+ HelixHeadlessFind,
23068
+ HelixHeadlessFindVueProps,
23069
+ HelixHeadlessFindVueEvents
23070
+ >;
22783
23071
  /** Formats a date with 'Intl' where it is shown, so you do not write the same 'Intl' call and options in your own code. **'elapsed' shows compact relative time for a feed**, such as "42m", "3h", or "1d". After six days it shows a date. In en-US, 'Intl.NumberFormat' narrow renders both 'minute' and 'month' as 'm', so a compact "3m" could mean three minutes or three months. 'elapsedTime' in 'helix/core' does the measurement. **'relative' shows the same reading in words**, such as "3 hours ago" at 'long', "3 hr. ago" at 'short' and "3h ago" at 'narrow', the styles 'sl-relative-time' offers. 'numeric="always"' says "1 day ago" where the default says "yesterday". Both readings round the count, as 'sl-relative-time' does: 100 seconds ago is "2 minutes ago", and 59.6 minutes is "1 hour". **'date-style' and 'time-style' take each locale's own pattern**, such as "Tuesday, August 4, 2026" at 'full', and stand in for the separate fields, which 'Intl' refuses beside them. 'hour-cycle' sets a twelve or twenty-four hour clock either way. **The text refreshes on one timer shared by the page.** Each element schedules an update for when its current reading expires, and an element showing a date schedules none, so a long feed left open costs almost nothing. 'frozen' draws the reading once and leaves it. **'fields' draws each field of a date as a part of its own**, such as 'day', 'month' and 'year', so a stylesheet can set the year in a lighter ink or the weekday in capitals with '::part()'. The text between the fields is the locale's own and has no part. An 'elapsed' or 'relative' reading is one phrase, with no parts inside it. **The output is always '<time datetime>'**, so copy and paste and scripts parsing the page get the exact instant, whatever the visible text says. A screen reader reads the text, so an 'elapsed' reading is named in full, such as "3 hours ago", and carries the whole date as its title. **A date with no time, such as '2026-08-04', is that day everywhere.** It is formatted in UTC unless 'time-zone' says otherwise, as Date Input and Date Picker format their dates, so a reader west of UTC sees August 4 and not August 3. **A date is written in a calendar Date Picker draws**: the locale's own where its months are the Gregorian months, as 'th-TH' writes 2569 for 2026, and 'gregory' where they are not, as for 'fa-IR'. 'calendar' picks any of them, 'persian' and 'hebrew' included. */
22784
23072
  "helix-headless-format-date": DefineCustomElement<
22785
23073
  HelixHeadlessFormatDate,
@@ -22876,7 +23164,7 @@ export interface WcToolkitVueGlobalComponents {
22876
23164
  HelixHeadlessLoaderVueProps,
22877
23165
  HelixHeadlessLoaderVueEvents
22878
23166
  >;
22879
- /** A group is a disclosure: its heading is a button that shows and hides the lines inside it, and says whether they are shown with 'aria-expanded'. Put 'Log.Line' elements inside it, and nest groups for steps within steps. 'status' draws a mark before the heading, and a screen reader hears the status after the heading ('status-label'). 'duration' stands at the end of the heading, as you write it, such as '12s'. A group starts shut. Write 'default-open' on the step a reader should see, such as the one that failed. */
23167
+ /** A group is a disclosure: its heading is a button that shows and hides the lines inside it, and says whether they are shown with 'aria-expanded'. Put 'Log.Line' elements inside it, and nest groups for steps within steps. 'status' draws a mark before the heading, and a screen reader hears the status after the heading ('status-label'). 'duration' stands at the end of the heading, as you write it, such as '12s'. A group starts shut. Write 'default-open' on the step a reader should see, such as the one that failed. A shut group's lines are hidden until found: the browser's find and Find search them, and the group opens on the one that holds the match, unless 'helix-before-open' is canceled. */
22880
23168
  "helix-headless-log-group": DefineCustomElement<
22881
23169
  HelixHeadlessLogGroup,
22882
23170
  HelixHeadlessLogGroupVueProps,
@@ -23416,7 +23704,7 @@ export interface WcToolkitVueGlobalComponents {
23416
23704
  HelixHeadlessTourStopVueProps,
23417
23705
  HelixHeadlessTourStopVueEvents
23418
23706
  >;
23419
- /** 'open' comes from 'MixinControllerOpen', the same state a disclosure holds, so you can respond to a branch opening and control the state yourself. The row renders 'aria-expanded'. Each item is an element because it holds state: whether it is open, selected, and focused. An item is a branch when an item is slotted into 'children', with 'slot="children"' on each nested item. This is detected on the client, so server-rendered markup shows a leaf and the twisty appears on hydration. **'href' makes the whole row a link**, rendered as an '<a>'. Enter, middle click, and the status bar then work anywhere on the row. Pressing a branch, or Enter or Space on it, opens or closes it. A branch with a 'value' is chosen as well and sends 'helix-select', unless the tree has 'nesting="heading"', where a branch names the list under it, or 'selection-mode="leaf"', where only the items at the ends are chosen. A 'disabled' item is reached by the arrow keys and announced as unavailable, and a press, Enter or Space on it does nothing. A 'lazy' item is a branch whose children you load when it opens: opening it sends 'helix-load', the row says it is busy, and the children you add appear in it. Remove 'lazy' once they are in. **In a 'reorderable' tree, the row has a grip** at its far end, which a pointer drags to move the item among its siblings. The tree says which item is moving and where the drop indicator is, with the 'dragging', 'drop-before', and 'drop-after' states. */
23707
+ /** 'open' comes from 'MixinControllerOpen', the same state a disclosure holds, so you can respond to a branch opening and control the state yourself. The row renders 'aria-expanded'. Each item is an element because it holds state: whether it is open, selected, and focused. An item is a branch when an item is slotted into 'children', with 'slot="children"' on each nested item. This is detected on the client, so server-rendered markup shows a leaf and the twisty appears on hydration. **'href' makes the whole row a link**, rendered as an '<a>'. Enter, middle click, and the status bar then work anywhere on the row. Pressing a branch, or Enter or Space on it, opens or closes it. A branch with a 'value' is chosen as well and sends 'helix-select', unless the tree has 'nesting="heading"', where a branch names the list under it, or 'selection-mode="leaf"', where only the items at the ends are chosen. A 'disabled' item is reached by the arrow keys and announced as unavailable, and a press, Enter or Space on it does nothing. A closed branch's children are hidden until found: the browser's find and Find search them, and the branch opens on the one that holds the match, unless 'helix-before-open' is canceled. A 'lazy' item is a branch whose children you load when it opens: opening it sends 'helix-load', the row says it is busy, and the children you add appear in it. Remove 'lazy' once they are in. **In a 'reorderable' tree, the row has a grip** at its far end, which a pointer drags to move the item among its siblings. The tree says which item is moving and where the drop indicator is, with the 'dragging', 'drop-before', and 'drop-after' states. */
23420
23708
  "helix-headless-tree-item": DefineCustomElement<
23421
23709
  HelixHeadlessTreeItem,
23422
23710
  HelixHeadlessTreeItemVueProps,