@fusion.dev/helix 0.208.1 → 0.209.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
@@ -240,6 +240,13 @@ import type {
240
240
  HelixTabs,
241
241
  HelixTag,
242
242
  HelixTagGroup,
243
+ HelixTerminal,
244
+ HelixTerminalBellEvent,
245
+ HelixTerminalInputEvent,
246
+ HelixTerminalLinkEvent,
247
+ HelixTerminalResizeEvent,
248
+ HelixTerminalRestartEvent,
249
+ HelixTerminalTitleEvent,
243
250
  HelixText,
244
251
  HelixTextarea,
245
252
  HelixTimeInput,
@@ -38834,6 +38841,330 @@ select. */
38834
38841
  textContent?: (string | number) | undefined;
38835
38842
  };
38836
38843
 
38844
+ /** `HelixTerminal` component event */
38845
+ export type HelixTerminalElementEvent<E = Event> = TypedEvent<HelixTerminal, E>;
38846
+ /** `helix-copy` event type */
38847
+ export type HelixTerminalHelixCopyElementEvent =
38848
+ HelixTerminalElementEvent<HelixCopyEvent>;
38849
+ /** `helix-terminal-bell` event type */
38850
+ export type HelixTerminalHelixTerminalBellElementEvent =
38851
+ HelixTerminalElementEvent<HelixTerminalBellEvent>;
38852
+ /** `helix-terminal-input` event type */
38853
+ export type HelixTerminalHelixTerminalInputElementEvent =
38854
+ HelixTerminalElementEvent<HelixTerminalInputEvent>;
38855
+ /** `helix-terminal-link` event type */
38856
+ export type HelixTerminalHelixTerminalLinkElementEvent =
38857
+ HelixTerminalElementEvent<HelixTerminalLinkEvent>;
38858
+ /** `helix-terminal-resize` event type */
38859
+ export type HelixTerminalHelixTerminalResizeElementEvent =
38860
+ HelixTerminalElementEvent<HelixTerminalResizeEvent>;
38861
+ /** `helix-terminal-restart` event type */
38862
+ export type HelixTerminalHelixTerminalRestartElementEvent =
38863
+ HelixTerminalElementEvent<HelixTerminalRestartEvent>;
38864
+ /** `helix-terminal-title` event type */
38865
+ export type HelixTerminalHelixTerminalTitleElementEvent =
38866
+ HelixTerminalElementEvent<HelixTerminalTitleEvent>;
38867
+
38868
+ export type HelixTerminalProps = {
38869
+ /** Covers the container instead of taking a height of its own, for a
38870
+ terminal that fills a pane. The container needs a position, such as
38871
+ `position: relative`. */
38872
+ fill?: (HelixTerminal["fill"]) | undefined;
38873
+ /** How the frame stands off the page. Unset, it is outlined. `plain` draws
38874
+ no edge or corners, for a pane that draws its own. */
38875
+ separation?: (HelixTerminal["separation"]) | undefined;
38876
+ /** The clear button's label. */
38877
+ "clear-label"?: (HelixTerminal["clearLabel"]) | undefined;
38878
+ /** The clear button's label. */
38879
+ clearLabel?: (HelixTerminal["clearLabel"]) | undefined;
38880
+ /** The grid's width in character cells. Set it with `rows` to fix the grid's size; unset, the grid fills the frame. */
38881
+ columns?: (HelixTerminal["columns"]) | undefined;
38882
+ /** Which built-in controls the header shows, as a list of `find`, `copy`,
38883
+ `clear`, and `fullscreen`, or `none`. Absent is `find clear`. */
38884
+ controls?: (HelixTerminal["controls"]) | undefined;
38885
+ /** The name of the row of controls, read by screen readers. */
38886
+ "controls-label"?: (HelixTerminal["controlsLabel"]) | undefined;
38887
+ /** The name of the row of controls, read by screen readers. */
38888
+ controlsLabel?: (HelixTerminal["controlsLabel"]) | undefined;
38889
+ /** What screen readers hear after a copy. */
38890
+ "copied-label"?: (HelixTerminal["copiedLabel"]) | undefined;
38891
+ /** What screen readers hear after a copy. */
38892
+ copiedLabel?: (HelixTerminal["copiedLabel"]) | undefined;
38893
+ /** The copy button's label. */
38894
+ "copy-label"?: (HelixTerminal["copyLabel"]) | undefined;
38895
+ /** The copy button's label. */
38896
+ copyLabel?: (HelixTerminal["copyLabel"]) | undefined;
38897
+ /** How the process exited, which the page sets when it does. While it is set,
38898
+ the status line says it, the frame sends no input, and Restart is shown.
38899
+ Clear it when a new process starts. */
38900
+ "exit-code"?: (HelixTerminal["exitCode"] | `${number}`) | undefined;
38901
+ /** How the process exited, which the page sets when it does. While it is set,
38902
+ the status line says it, the frame sends no input, and Restart is shown.
38903
+ Clear it when a new process starts. */
38904
+ exitCode?: (HelixTerminal["exitCode"]) | undefined;
38905
+ /** What the status line says once the process has exited. `{code}` is its
38906
+ exit code, written as the process gave it, and code `0` is a clean exit. */
38907
+ "exited-label"?: (HelixTerminal["exitedLabel"]) | undefined;
38908
+ /** What the status line says once the process has exited. `{code}` is its
38909
+ exit code, written as the process gave it, and code `0` is a clean exit. */
38910
+ exitedLabel?: (HelixTerminal["exitedLabel"]) | undefined;
38911
+ /** The terminal's name where `label` is empty and the host has no `aria-label`. */
38912
+ "fallback-label"?: (HelixTerminal["fallbackLabel"]) | undefined;
38913
+ /** The terminal's name where `label` is empty and the host has no `aria-label`. */
38914
+ fallbackLabel?: (HelixTerminal["fallbackLabel"]) | undefined;
38915
+ /** The label of the button that closes the find bar. */
38916
+ "find-close-label"?: (HelixTerminal["findCloseLabel"]) | undefined;
38917
+ /** The label of the button that closes the find bar. */
38918
+ findCloseLabel?: (HelixTerminal["findCloseLabel"]) | undefined;
38919
+ /** The name of the find bar's row of buttons, read by screen readers. */
38920
+ "find-controls-label"?: (HelixTerminal["findControlsLabel"]) | undefined;
38921
+ /** The name of the find bar's row of buttons, read by screen readers. */
38922
+ findControlsLabel?: (HelixTerminal["findControlsLabel"]) | undefined;
38923
+ /** The find button's label, and the find field's name and placeholder. */
38924
+ "find-label"?: (HelixTerminal["findLabel"]) | undefined;
38925
+ /** The find button's label, and the find field's name and placeholder. */
38926
+ findLabel?: (HelixTerminal["findLabel"]) | undefined;
38927
+ /** The next match button's label. */
38928
+ "find-next-label"?: (HelixTerminal["findNextLabel"]) | undefined;
38929
+ /** The next match button's label. */
38930
+ findNextLabel?: (HelixTerminal["findNextLabel"]) | undefined;
38931
+ /** The previous match button's label. */
38932
+ "find-previous-label"?: (HelixTerminal["findPreviousLabel"]) | undefined;
38933
+ /** The previous match button's label. */
38934
+ findPreviousLabel?: (HelixTerminal["findPreviousLabel"]) | undefined;
38935
+ /** The fullscreen button's label. */
38936
+ "fullscreen-label"?: (HelixTerminal["fullscreenLabel"]) | undefined;
38937
+ /** The fullscreen button's label. */
38938
+ fullscreenLabel?: (HelixTerminal["fullscreenLabel"]) | undefined;
38939
+ /** The name of the element the reader types into, which the renderer draws. */
38940
+ "input-label"?: (HelixTerminal["inputLabel"]) | undefined;
38941
+ /** The name of the element the reader types into, which the renderer draws. */
38942
+ inputLabel?: (HelixTerminal["inputLabel"]) | undefined;
38943
+ /** The terminal's name, in the header and for screen readers, such as the
38944
+ shell or the folder it runs in. Several terminals on a page need names
38945
+ that tell them apart. */
38946
+ label?: (HelixTerminal["label"]) | undefined;
38947
+ /** What the find bar says of its matches. `{index}` is the current match,
38948
+ counting from 1, and `{count}` how many there are. */
38949
+ "matches-label"?: (HelixTerminal["matchesLabel"]) | undefined;
38950
+ /** What the find bar says of its matches. `{index}` is the current match,
38951
+ counting from 1, and `{count}` how many there are. */
38952
+ matchesLabel?: (HelixTerminal["matchesLabel"]) | undefined;
38953
+ /** Draws the output and sends no input, with no cursor, for a transcript or
38954
+ a command an agent ran. The attribute is `readonly`, the platform's
38955
+ spelling. */
38956
+ readonly?: (HelixTerminal["readOnly"]) | undefined;
38957
+ /** Draws the output and sends no input, with no cursor, for a transcript or
38958
+ a command an agent ran. The attribute is `readonly`, the platform's
38959
+ spelling. */
38960
+ readOnly?: (HelixTerminal["readOnly"]) | undefined;
38961
+ /** The Restart button's label. */
38962
+ "restart-label"?: (HelixTerminal["restartLabel"]) | undefined;
38963
+ /** The Restart button's label. */
38964
+ restartLabel?: (HelixTerminal["restartLabel"]) | undefined;
38965
+ /** The grid's height in lines. Set it with `columns` to fix the grid's size; unset, the grid fills the frame. */
38966
+ rows?: (HelixTerminal["rows"]) | undefined;
38967
+ /** Keeps the grid as lines a screen reader moves through, and says new
38968
+ output as it arrives. Off by default, since it costs time on every
38969
+ write. Connect it to a setting your reader can turn on. */
38970
+ "screen-reader-mode"?: (HelixTerminal["screenReaderMode"]) | undefined;
38971
+ /** Keeps the grid as lines a screen reader moves through, and says new
38972
+ output as it arrives. Off by default, since it costs time on every
38973
+ write. Connect it to a setting your reader can turn on. */
38974
+ screenReaderMode?: (HelixTerminal["screenReaderMode"]) | undefined;
38975
+ /** What the terminal's input describes to a screen reader. `{key}` is the key that switches Tab. */
38976
+ "tab-hint-label"?: (HelixTerminal["tabHintLabel"]) | undefined;
38977
+ /** What the terminal's input describes to a screen reader. `{key}` is the key that switches Tab. */
38978
+ tabHintLabel?: (HelixTerminal["tabHintLabel"]) | undefined;
38979
+ /** What the status line says while Tab moves focus. `{key}` is the key that switches it back. */
38980
+ "tab-moves-focus-label"?: (HelixTerminal["tabMovesFocusLabel"]) | undefined;
38981
+ /** What the status line says while Tab moves focus. `{key}` is the key that switches it back. */
38982
+ tabMovesFocusLabel?: (HelixTerminal["tabMovesFocusLabel"]) | undefined;
38983
+ /** What screen readers hear when Tab goes back to typing in the terminal. */
38984
+ "tab-types-label"?: (HelixTerminal["tabTypesLabel"]) | undefined;
38985
+ /** What screen readers hear when Tab goes back to typing in the terminal. */
38986
+ tabTypesLabel?: (HelixTerminal["tabTypesLabel"]) | undefined;
38987
+
38988
+ /** The copy control or its key put the selection on the clipboard. */
38989
+ "onhelix-copy"?: ((e: HelixTerminalHelixCopyElementEvent) => void) | undefined;
38990
+ /** The program rang the bell. The frame flashes once. */
38991
+ "onhelix-terminal-bell"?: ((
38992
+ e: HelixTerminalHelixTerminalBellElementEvent,
38993
+ ) => void) | undefined;
38994
+ /** 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. */
38995
+ "onhelix-terminal-input"?: ((
38996
+ e: HelixTerminalHelixTerminalInputElementEvent,
38997
+ ) => void) | undefined;
38998
+ /** 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. */
38999
+ "onhelix-terminal-link"?: ((
39000
+ e: HelixTerminalHelixTerminalLinkElementEvent,
39001
+ ) => void) | undefined;
39002
+ /** The grid changed size, with `columns`, `rows`, `width`, and `height`. Resize the process's pseudo-terminal to match. */
39003
+ "onhelix-terminal-resize"?: ((
39004
+ e: HelixTerminalHelixTerminalResizeElementEvent,
39005
+ ) => void) | undefined;
39006
+ /** The Restart button was pressed after the process exited. Start a new process and clear `exit-code`. */
39007
+ "onhelix-terminal-restart"?: ((
39008
+ e: HelixTerminalHelixTerminalRestartElementEvent,
39009
+ ) => void) | undefined;
39010
+ /** The program set its title, with `title`. The frame keeps its own `label`. */
39011
+ "onhelix-terminal-title"?: ((
39012
+ e: HelixTerminalHelixTerminalTitleElementEvent,
39013
+ ) => void) | undefined;
39014
+ };
39015
+
39016
+ export type HelixTerminalSolidJsProps = {
39017
+ /** Covers the container instead of taking a height of its own, for a
39018
+ terminal that fills a pane. The container needs a position, such as
39019
+ `position: relative`. */
39020
+ "prop:fill"?: (HelixTerminal["fill"]) | undefined;
39021
+ /** How the frame stands off the page. Unset, it is outlined. `plain` draws
39022
+ no edge or corners, for a pane that draws its own. */
39023
+ "prop:separation"?: (HelixTerminal["separation"]) | undefined;
39024
+ /** The clear button's label. */
39025
+ "attr:clear-label"?: (HelixTerminal["clearLabel"]) | undefined;
39026
+ /** The clear button's label. */
39027
+ "prop:clearLabel"?: (HelixTerminal["clearLabel"]) | undefined;
39028
+ /** The grid's width in character cells. Set it with `rows` to fix the grid's size; unset, the grid fills the frame. */
39029
+ "prop:columns"?: (HelixTerminal["columns"]) | undefined;
39030
+ /** Which built-in controls the header shows, as a list of `find`, `copy`,
39031
+ `clear`, and `fullscreen`, or `none`. Absent is `find clear`. */
39032
+ "prop:controls"?: (HelixTerminal["controls"]) | undefined;
39033
+ /** The name of the row of controls, read by screen readers. */
39034
+ "attr:controls-label"?: (HelixTerminal["controlsLabel"]) | undefined;
39035
+ /** The name of the row of controls, read by screen readers. */
39036
+ "prop:controlsLabel"?: (HelixTerminal["controlsLabel"]) | undefined;
39037
+ /** What screen readers hear after a copy. */
39038
+ "attr:copied-label"?: (HelixTerminal["copiedLabel"]) | undefined;
39039
+ /** What screen readers hear after a copy. */
39040
+ "prop:copiedLabel"?: (HelixTerminal["copiedLabel"]) | undefined;
39041
+ /** The copy button's label. */
39042
+ "attr:copy-label"?: (HelixTerminal["copyLabel"]) | undefined;
39043
+ /** The copy button's label. */
39044
+ "prop:copyLabel"?: (HelixTerminal["copyLabel"]) | undefined;
39045
+ /** How the process exited, which the page sets when it does. While it is set,
39046
+ the status line says it, the frame sends no input, and Restart is shown.
39047
+ Clear it when a new process starts. */
39048
+ "attr:exit-code"?: (HelixTerminal["exitCode"] | `${number}`) | undefined;
39049
+ /** How the process exited, which the page sets when it does. While it is set,
39050
+ the status line says it, the frame sends no input, and Restart is shown.
39051
+ Clear it when a new process starts. */
39052
+ "prop:exitCode"?: (HelixTerminal["exitCode"]) | undefined;
39053
+ /** What the status line says once the process has exited. `{code}` is its
39054
+ exit code, written as the process gave it, and code `0` is a clean exit. */
39055
+ "attr:exited-label"?: (HelixTerminal["exitedLabel"]) | undefined;
39056
+ /** What the status line says once the process has exited. `{code}` is its
39057
+ exit code, written as the process gave it, and code `0` is a clean exit. */
39058
+ "prop:exitedLabel"?: (HelixTerminal["exitedLabel"]) | undefined;
39059
+ /** The terminal's name where `label` is empty and the host has no `aria-label`. */
39060
+ "attr:fallback-label"?: (HelixTerminal["fallbackLabel"]) | undefined;
39061
+ /** The terminal's name where `label` is empty and the host has no `aria-label`. */
39062
+ "prop:fallbackLabel"?: (HelixTerminal["fallbackLabel"]) | undefined;
39063
+ /** The label of the button that closes the find bar. */
39064
+ "attr:find-close-label"?: (HelixTerminal["findCloseLabel"]) | undefined;
39065
+ /** The label of the button that closes the find bar. */
39066
+ "prop:findCloseLabel"?: (HelixTerminal["findCloseLabel"]) | undefined;
39067
+ /** The name of the find bar's row of buttons, read by screen readers. */
39068
+ "attr:find-controls-label"?: (HelixTerminal["findControlsLabel"]) | undefined;
39069
+ /** The name of the find bar's row of buttons, read by screen readers. */
39070
+ "prop:findControlsLabel"?: (HelixTerminal["findControlsLabel"]) | undefined;
39071
+ /** The find button's label, and the find field's name and placeholder. */
39072
+ "attr:find-label"?: (HelixTerminal["findLabel"]) | undefined;
39073
+ /** The find button's label, and the find field's name and placeholder. */
39074
+ "prop:findLabel"?: (HelixTerminal["findLabel"]) | undefined;
39075
+ /** The next match button's label. */
39076
+ "attr:find-next-label"?: (HelixTerminal["findNextLabel"]) | undefined;
39077
+ /** The next match button's label. */
39078
+ "prop:findNextLabel"?: (HelixTerminal["findNextLabel"]) | undefined;
39079
+ /** The previous match button's label. */
39080
+ "attr:find-previous-label"?: (HelixTerminal["findPreviousLabel"]) | undefined;
39081
+ /** The previous match button's label. */
39082
+ "prop:findPreviousLabel"?: (HelixTerminal["findPreviousLabel"]) | undefined;
39083
+ /** The fullscreen button's label. */
39084
+ "attr:fullscreen-label"?: (HelixTerminal["fullscreenLabel"]) | undefined;
39085
+ /** The fullscreen button's label. */
39086
+ "prop:fullscreenLabel"?: (HelixTerminal["fullscreenLabel"]) | undefined;
39087
+ /** The name of the element the reader types into, which the renderer draws. */
39088
+ "attr:input-label"?: (HelixTerminal["inputLabel"]) | undefined;
39089
+ /** The name of the element the reader types into, which the renderer draws. */
39090
+ "prop:inputLabel"?: (HelixTerminal["inputLabel"]) | undefined;
39091
+ /** The terminal's name, in the header and for screen readers, such as the
39092
+ shell or the folder it runs in. Several terminals on a page need names
39093
+ that tell them apart. */
39094
+ "prop:label"?: (HelixTerminal["label"]) | undefined;
39095
+ /** What the find bar says of its matches. `{index}` is the current match,
39096
+ counting from 1, and `{count}` how many there are. */
39097
+ "attr:matches-label"?: (HelixTerminal["matchesLabel"]) | undefined;
39098
+ /** What the find bar says of its matches. `{index}` is the current match,
39099
+ counting from 1, and `{count}` how many there are. */
39100
+ "prop:matchesLabel"?: (HelixTerminal["matchesLabel"]) | undefined;
39101
+ /** Draws the output and sends no input, with no cursor, for a transcript or
39102
+ a command an agent ran. The attribute is `readonly`, the platform's
39103
+ spelling. */
39104
+ "bool:readonly"?: (HelixTerminal["readOnly"]) | undefined;
39105
+ /** Draws the output and sends no input, with no cursor, for a transcript or
39106
+ a command an agent ran. The attribute is `readonly`, the platform's
39107
+ spelling. */
39108
+ "prop:readOnly"?: (HelixTerminal["readOnly"]) | undefined;
39109
+ /** The Restart button's label. */
39110
+ "attr:restart-label"?: (HelixTerminal["restartLabel"]) | undefined;
39111
+ /** The Restart button's label. */
39112
+ "prop:restartLabel"?: (HelixTerminal["restartLabel"]) | undefined;
39113
+ /** The grid's height in lines. Set it with `columns` to fix the grid's size; unset, the grid fills the frame. */
39114
+ "prop:rows"?: (HelixTerminal["rows"]) | undefined;
39115
+ /** Keeps the grid as lines a screen reader moves through, and says new
39116
+ output as it arrives. Off by default, since it costs time on every
39117
+ write. Connect it to a setting your reader can turn on. */
39118
+ "bool:screen-reader-mode"?: (HelixTerminal["screenReaderMode"]) | undefined;
39119
+ /** Keeps the grid as lines a screen reader moves through, and says new
39120
+ output as it arrives. Off by default, since it costs time on every
39121
+ write. Connect it to a setting your reader can turn on. */
39122
+ "prop:screenReaderMode"?: (HelixTerminal["screenReaderMode"]) | undefined;
39123
+ /** What the terminal's input describes to a screen reader. `{key}` is the key that switches Tab. */
39124
+ "attr:tab-hint-label"?: (HelixTerminal["tabHintLabel"]) | undefined;
39125
+ /** What the terminal's input describes to a screen reader. `{key}` is the key that switches Tab. */
39126
+ "prop:tabHintLabel"?: (HelixTerminal["tabHintLabel"]) | undefined;
39127
+ /** What the status line says while Tab moves focus. `{key}` is the key that switches it back. */
39128
+ "attr:tab-moves-focus-label"?: (HelixTerminal["tabMovesFocusLabel"]) | undefined;
39129
+ /** What the status line says while Tab moves focus. `{key}` is the key that switches it back. */
39130
+ "prop:tabMovesFocusLabel"?: (HelixTerminal["tabMovesFocusLabel"]) | undefined;
39131
+ /** What screen readers hear when Tab goes back to typing in the terminal. */
39132
+ "attr:tab-types-label"?: (HelixTerminal["tabTypesLabel"]) | undefined;
39133
+ /** What screen readers hear when Tab goes back to typing in the terminal. */
39134
+ "prop:tabTypesLabel"?: (HelixTerminal["tabTypesLabel"]) | undefined;
39135
+ /** The copy control or its key put the selection on the clipboard. */
39136
+ "on:helix-copy"?: ((e: HelixTerminalHelixCopyElementEvent) => void) | undefined;
39137
+ /** The program rang the bell. The frame flashes once. */
39138
+ "on:helix-terminal-bell"?: ((
39139
+ e: HelixTerminalHelixTerminalBellElementEvent,
39140
+ ) => void) | undefined;
39141
+ /** 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. */
39142
+ "on:helix-terminal-input"?: ((
39143
+ e: HelixTerminalHelixTerminalInputElementEvent,
39144
+ ) => void) | undefined;
39145
+ /** 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. */
39146
+ "on:helix-terminal-link"?: ((
39147
+ e: HelixTerminalHelixTerminalLinkElementEvent,
39148
+ ) => void) | undefined;
39149
+ /** The grid changed size, with `columns`, `rows`, `width`, and `height`. Resize the process's pseudo-terminal to match. */
39150
+ "on:helix-terminal-resize"?: ((
39151
+ e: HelixTerminalHelixTerminalResizeElementEvent,
39152
+ ) => void) | undefined;
39153
+ /** The Restart button was pressed after the process exited. Start a new process and clear `exit-code`. */
39154
+ "on:helix-terminal-restart"?: ((
39155
+ e: HelixTerminalHelixTerminalRestartElementEvent,
39156
+ ) => void) | undefined;
39157
+ /** The program set its title, with `title`. The frame keeps its own `label`. */
39158
+ "on:helix-terminal-title"?: ((
39159
+ e: HelixTerminalHelixTerminalTitleElementEvent,
39160
+ ) => void) | undefined;
39161
+
39162
+ /** Set the innerHTML of the element */
39163
+ innerHTML?: (string) | undefined;
39164
+ /** Set the textContent of the element */
39165
+ textContent?: (string | number) | undefined;
39166
+ };
39167
+
38837
39168
  export type HelixTextProps = {
38838
39169
  /** The HTML element to render.
38839
39170
 
@@ -72988,6 +73319,259 @@ export type CustomElements<F extends Framework = "other"> = {
72988
73319
  */
72989
73320
  "helix-tag": Partial<HelixTagProps & BaseProps<HelixTag, F> & BaseEvents<HelixTag>>;
72990
73321
 
73322
+ /**
73323
+ * The styled frame: a bordered box on the page's background with a header
73324
+ * strip for the name and the controls, and a status line that appears when
73325
+ * the process exits. It is 24rem tall unless `fill` is set or
73326
+ * `--terminal-block-size` says otherwise.
73327
+ *
73328
+ * `connectTerminal` themes the terminal from your tokens. The sixteen ANSI
73329
+ * colors share Log's hues, red the danger color, green success, yellow
73330
+ * warning, and blue info, and the four grays keep their order from dark to
73331
+ * light in each color mode. Set `--terminal-ansi-red` and its siblings,
73332
+ * `--terminal-cursor-color`, or `--terminal-selection-background-color` on
73333
+ * the terminal to choose them yourself, such as
73334
+ * `helix-terminal { --terminal-ansi-blue: #3b82f6 }`. The
73335
+ * [Terminals](https://fusion.dev/helix/docs/terminals) guide lists them all.
73336
+ *
73337
+ * Set `fill` for a terminal that fills a pane, such as one side of a
73338
+ * `Splitter`: the frame covers its container, which needs a position of its
73339
+ * own, such as `position: relative`. Set `separation="plain"` where the pane
73340
+ * already draws the edge.
73341
+ *
73342
+ * ## Attributes & Properties
73343
+ *
73344
+ * Component attributes and properties that can be applied to the element or by using JavaScript.
73345
+ *
73346
+ * - `fill`: Covers the container instead of taking a height of its own, for a
73347
+ * terminal that fills a pane. The container needs a position, such as
73348
+ * `position: relative`.
73349
+ * - `separation`: How the frame stands off the page. Unset, it is outlined. `plain` draws
73350
+ * no edge or corners, for a pane that draws its own.
73351
+ * - `clear-label`/`clearLabel`: The clear button's label.
73352
+ * - `columns`: The grid's width in character cells. Set it with `rows` to fix the grid's size; unset, the grid fills the frame.
73353
+ * - `controls`: Which built-in controls the header shows, as a list of `find`, `copy`,
73354
+ * `clear`, and `fullscreen`, or `none`. Absent is `find clear`.
73355
+ * - `controls-label`/`controlsLabel`: The name of the row of controls, read by screen readers.
73356
+ * - `copied-label`/`copiedLabel`: What screen readers hear after a copy.
73357
+ * - `copy-label`/`copyLabel`: The copy button's label.
73358
+ * - `exit-code`/`exitCode`: How the process exited, which the page sets when it does. While it is set,
73359
+ * the status line says it, the frame sends no input, and Restart is shown.
73360
+ * Clear it when a new process starts.
73361
+ * - `exited-label`/`exitedLabel`: What the status line says once the process has exited. `{code}` is its
73362
+ * exit code, written as the process gave it, and code `0` is a clean exit.
73363
+ * - `fallback-label`/`fallbackLabel`: The terminal's name where `label` is empty and the host has no `aria-label`.
73364
+ * - `find-close-label`/`findCloseLabel`: The label of the button that closes the find bar.
73365
+ * - `find-controls-label`/`findControlsLabel`: The name of the find bar's row of buttons, read by screen readers.
73366
+ * - `find-label`/`findLabel`: The find button's label, and the find field's name and placeholder.
73367
+ * - `find-next-label`/`findNextLabel`: The next match button's label.
73368
+ * - `find-previous-label`/`findPreviousLabel`: The previous match button's label.
73369
+ * - `fullscreen-label`/`fullscreenLabel`: The fullscreen button's label.
73370
+ * - `input-label`/`inputLabel`: The name of the element the reader types into, which the renderer draws.
73371
+ * - `label`: The terminal's name, in the header and for screen readers, such as the
73372
+ * shell or the folder it runs in. Several terminals on a page need names
73373
+ * that tell them apart.
73374
+ * - `matches-label`/`matchesLabel`: What the find bar says of its matches. `{index}` is the current match,
73375
+ * counting from 1, and `{count}` how many there are.
73376
+ * - `readonly`/`readOnly`: Draws the output and sends no input, with no cursor, for a transcript or
73377
+ * a command an agent ran. The attribute is `readonly`, the platform's
73378
+ * spelling.
73379
+ * - `restart-label`/`restartLabel`: The Restart button's label.
73380
+ * - `rows`: The grid's height in lines. Set it with `columns` to fix the grid's size; unset, the grid fills the frame.
73381
+ * - `screen-reader-mode`/`screenReaderMode`: Keeps the grid as lines a screen reader moves through, and says new
73382
+ * output as it arrives. Off by default, since it costs time on every
73383
+ * write. Connect it to a setting your reader can turn on.
73384
+ * - `tab-hint-label`/`tabHintLabel`: What the terminal's input describes to a screen reader. `{key}` is the key that switches Tab.
73385
+ * - `tab-moves-focus-label`/`tabMovesFocusLabel`: What the status line says while Tab moves focus. `{key}` is the key that switches it back.
73386
+ * - `tab-types-label`/`tabTypesLabel`: What screen readers hear when Tab goes back to typing in the terminal.
73387
+ * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
73388
+ *
73389
+ * **Named `whenSettled` because `settled` is taken four times over**, by
73390
+ * Image, Splitter and both color controls, none of them about transitions. A
73391
+ * base class takes the name every subclass then cannot use.
73392
+ *
73393
+ * **The state it reports cannot be watched, which is why this exists.** A
73394
+ * custom state is deliberately not in the DOM, so there is no
73395
+ * `MutationObserver` equivalent for `ElementInternals.states`. Await this
73396
+ * instead.
73397
+ *
73398
+ * Separate from `updateComplete`, which resolves in the microtask checkpoint
73399
+ * the suppression is still active in. That is the distinction `readyToMove`
73400
+ * in `@fusion.dev/helix-testing` is written around.
73401
+ *
73402
+ * It never resolves where `requestAnimationFrame` never fires, which is a
73403
+ * server, a hidden tab, and happy-dom. Callers that must not hang there race
73404
+ * it against a timeout, as the happy-dom harness's `readyToMove` does. The
73405
+ * browser harness's awaits it alone: a browser always runs the frame, and a
73406
+ * timer beside it was a bet on how long one takes, which a busy run lost. (property only) (readonly)
73407
+ *
73408
+ * ## Events
73409
+ *
73410
+ * Events that will be emitted by the component.
73411
+ *
73412
+ * - `helix-copy`: The copy control or its key put the selection on the clipboard.
73413
+ * - `helix-terminal-bell`: The program rang the bell. The frame flashes once.
73414
+ * - `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.
73415
+ * - `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.
73416
+ * - `helix-terminal-resize`: The grid changed size, with `columns`, `rows`, `width`, and `height`. Resize the process's pseudo-terminal to match.
73417
+ * - `helix-terminal-restart`: The Restart button was pressed after the process exited. Start a new process and clear `exit-code`.
73418
+ * - `helix-terminal-title`: The program set its title, with `title`. The frame keeps its own `label`.
73419
+ *
73420
+ * ## Slots
73421
+ *
73422
+ * Areas where markup can be added to the component.
73423
+ *
73424
+ * - `(default)`: The element your renderer draws the terminal in.
73425
+ * - `actions`: Controls of your own in the header, before the built-in ones, such as a button that splits the pane.
73426
+ * - `clear-icon`: Replaces the glyph inside the clear button.
73427
+ * - `copy-icon`: Replaces the glyph inside the copy button.
73428
+ * - `exit-actions`: Controls of your own beside Restart, shown once the process exits, such as a button that opens the whole log.
73429
+ * - `find-actions`: Controls of your own in the find bar, between the count and the buttons that move between matches.
73430
+ * - `find-close-icon`: Replaces the glyph inside the button that closes the find bar.
73431
+ * - `find-icon`: Replaces the glyph inside the find button.
73432
+ * - `find-next-icon`: Replaces the glyph inside the next match button.
73433
+ * - `find-previous-icon`: Replaces the glyph inside the previous match button.
73434
+ * - `fullscreen-icon`: Replaces the glyph inside the fullscreen button.
73435
+ * - `label`: The terminal's name in the header, such as an icon beside the shell's name. Replaces `label` there.
73436
+ * - `restart-icon`: Replaces the glyph inside the Restart button.
73437
+ *
73438
+ * ## Methods
73439
+ *
73440
+ * Methods that can be called to access component functionality.
73441
+ *
73442
+ * - `write(data: string | Uint8Array) => Promise<void>`: Writes the program's output. Resolves once the renderer has parsed it,
73443
+ * which is how a page pauses a process that writes faster than the
73444
+ * terminal draws. Output written before a renderer is attached is held and
73445
+ * written first.
73446
+ * - `paste(text: string) => void`: Inputs text as a paste does, in bracketed paste mode where the program
73447
+ * asked for it. It arrives as `helix-terminal-input`, like typed text.
73448
+ * - `clear() => void`: Clears the scrollback, keeping the line the cursor is on.
73449
+ * - `reset() => void`: Resets the emulator: its modes, its colors, and its screen.
73450
+ * - `text(scope: 'all' | 'screen' = 'screen') => string`: The terminal as plain text, as the renderer drew it: the lines on screen,
73451
+ * or with `all`, every line the scrollback holds. Empty before a renderer is
73452
+ * attached.
73453
+ * - `look() => TerminalLook`: The colors and the face the terminal is to be drawn in, as the
73454
+ * `--terminal-*` properties resolve where the frame is. `connectTerminal`
73455
+ * themes the renderer from it. A color nothing sets is left out, so the
73456
+ * renderer keeps its own: the headless tier sets none, and the styled tier
73457
+ * sets every one from the theme.
73458
+ * - `focus(options?: FocusOptions) => void`: Focuses the terminal's input, where a renderer is attached.
73459
+ * - `attach(renderer: TerminalRenderer) => TerminalSink`: Attaches what draws the terminal, and returns how it tells the frame what
73460
+ * happened. `connectTerminal` calls it; a page drawing its own terminal calls
73461
+ * it with its own renderer. Attaching another detaches the first.
73462
+ *
73463
+ * ## CSS Custom Properties
73464
+ *
73465
+ * CSS variables available for styling the component.
73466
+ *
73467
+ * - `--terminal-block-size`: The frame's height, as a length. Ignored with `fill`, where the container decides it.
73468
+ * - `--terminal-border-color`: The edge around the frame and the rules inside it.
73469
+ * - `--terminal-font-family`: The face of the grid. Defaults to the monospaced face.
73470
+ * - `--terminal-font-size`: The size of the grid's text. Defaults to the small text step.
73471
+ * - `--terminal-header-background-color`: The fill of the header, the find bar, and the status line.
73472
+ * - `--terminal-padding`: The space between the frame's edge and the grid.
73473
+ * - `--terminal-radius`: The frame's corners.
73474
+ * - `--terminal-active-match-background-color`: The ground of the current match of a search.
73475
+ * - `--terminal-active-match-border-color`: The edge of the current match of a search.
73476
+ * - `--terminal-ansi-black`: ANSI black, which codes `30` and `40` draw.
73477
+ * - `--terminal-ansi-blue`: ANSI blue, which codes `34` and `44` draw.
73478
+ * - `--terminal-ansi-bright-black`: ANSI bright black, which codes `90` and `100` draw.
73479
+ * - `--terminal-ansi-bright-blue`: ANSI bright blue, which codes `94` and `104` draw.
73480
+ * - `--terminal-ansi-bright-cyan`: ANSI bright cyan, which codes `96` and `106` draw.
73481
+ * - `--terminal-ansi-bright-green`: ANSI bright green, which codes `92` and `102` draw.
73482
+ * - `--terminal-ansi-bright-magenta`: ANSI bright magenta, which codes `95` and `105` draw.
73483
+ * - `--terminal-ansi-bright-red`: ANSI bright red, which codes `91` and `101` draw.
73484
+ * - `--terminal-ansi-bright-white`: ANSI bright white, which codes `97` and `107` draw.
73485
+ * - `--terminal-ansi-bright-yellow`: ANSI bright yellow, which codes `93` and `103` draw.
73486
+ * - `--terminal-ansi-cyan`: ANSI cyan, which codes `36` and `46` draw.
73487
+ * - `--terminal-ansi-green`: ANSI green, which codes `32` and `42` draw.
73488
+ * - `--terminal-ansi-magenta`: ANSI magenta, which codes `35` and `45` draw.
73489
+ * - `--terminal-ansi-red`: ANSI red, which codes `31` and `41` draw.
73490
+ * - `--terminal-ansi-white`: ANSI white, which codes `37` and `47` draw.
73491
+ * - `--terminal-ansi-yellow`: ANSI yellow, which codes `33` and `43` draw.
73492
+ * - `--terminal-background-color`: The ground of the grid.
73493
+ * - `--terminal-color`: The text of the grid where the program sets no color.
73494
+ * - `--terminal-cursor-color`: The cursor.
73495
+ * - `--terminal-match-background-color`: The ground of every match of a search but the current one.
73496
+ * - `--terminal-scrollbar-thumb-color`: The grid's scrollbar.
73497
+ * - `--terminal-selection-background-color`: The ground of selected text. See-through, so the text keeps its color.
73498
+ *
73499
+ * ## CSS Parts
73500
+ *
73501
+ * Custom selectors for styling elements within the component.
73502
+ *
73503
+ * - `actions`: The `actions` slot, first in the header's toolbar.
73504
+ * - `clear`: The button that clears the scrollback.
73505
+ * - `clear-button`: The clear button's inner button.
73506
+ * - `clear-live`: The clear button's live region, which speaks while the button is pending.
73507
+ * - `clear-spinner`: The ring the clear button turns while it is pending.
73508
+ * - `clear-text`: The box the clear button's icon sits in.
73509
+ * - `controls`: The toolbar at the end of the header: your actions, then the built-in buttons, one tab stop that the arrows move along.
73510
+ * - `controls-toolbar`: The box inside the header's toolbar that lays its buttons out.
73511
+ * - `copy`: The button that copies the selection. Disabled while nothing is selected.
73512
+ * - `copy-button`: The copy button's inner button.
73513
+ * - `copy-live`: The copy button's live region, which speaks while the button is pending.
73514
+ * - `copy-spinner`: The ring the copy button turns while it is pending.
73515
+ * - `copy-text`: The box the copy button's icon sits in.
73516
+ * - `exit-actions`: The `exit-actions` slot, beside Restart in the status line.
73517
+ * - `find`: The button that opens and closes the find bar. Expanded while it is open.
73518
+ * - `find-actions`: The `find-actions` slot, first in the find bar's toolbar.
73519
+ * - `find-bar`: The bar under the header where the reader searches the output.
73520
+ * - `find-button`: The find button's inner button.
73521
+ * - `find-close`: The button that closes the find bar.
73522
+ * - `find-close-button`: The find bar's close button's inner button.
73523
+ * - `find-close-live`: The find bar's close button's live region, which speaks while the button is pending.
73524
+ * - `find-close-spinner`: The ring the find bar's close button turns while it is pending.
73525
+ * - `find-close-text`: The box the find bar's close button's icon sits in.
73526
+ * - `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.
73527
+ * - `find-controls-toolbar`: The box inside the find bar's toolbar that lays its buttons out.
73528
+ * - `find-count`: Which match is current and how many there are, such as "3 of 12 matches".
73529
+ * - `find-field`: The search field in the find bar.
73530
+ * - `find-live`: The find button's live region, which speaks while the button is pending.
73531
+ * - `find-next`: The button that moves to the next match.
73532
+ * - `find-next-button`: The next match button's inner button.
73533
+ * - `find-next-live`: The next match button's live region, which speaks while the button is pending.
73534
+ * - `find-next-spinner`: The ring the next match button turns while it is pending.
73535
+ * - `find-next-text`: The box the next match button's icon sits in.
73536
+ * - `find-previous`: The button that moves to the previous match.
73537
+ * - `find-previous-button`: The previous match button's inner button.
73538
+ * - `find-previous-live`: The previous match button's live region, which speaks while the button is pending.
73539
+ * - `find-previous-spinner`: The ring the previous match button turns while it is pending.
73540
+ * - `find-previous-text`: The box the previous match button's icon sits in.
73541
+ * - `find-spinner`: The ring the find button turns while it is pending.
73542
+ * - `find-text`: The box the find button's icon sits in.
73543
+ * - `fullscreen`: The button that makes the terminal fill the screen. Pressed while it does.
73544
+ * - `fullscreen-button`: The fullscreen button's inner button.
73545
+ * - `fullscreen-live`: The fullscreen button's live region, which speaks while the button is pending.
73546
+ * - `fullscreen-spinner`: The ring the fullscreen button turns while it is pending.
73547
+ * - `fullscreen-text`: The box the fullscreen button's icon sits in.
73548
+ * - `header`: The strip above the terminal, with its name, your actions, and the controls.
73549
+ * - `label`: The terminal's name in the header.
73550
+ * - `live`: What screen readers hear after the frame acts: a match count, a copy, or a change to what Tab does. Visually hidden in the styled tier.
73551
+ * - `region`: The named group the terminal sits in.
73552
+ * - `restart`: The button in the status line that asks for a new process after the last one exited.
73553
+ * - `restart-button`: The Restart button's inner button.
73554
+ * - `restart-live`: The Restart button's live region, which speaks while the button is pending.
73555
+ * - `restart-spinner`: The ring the Restart button turns while it is pending.
73556
+ * - `restart-text`: The Restart button's label.
73557
+ * - `status`: The line under the terminal that says the process exited, or that Tab moves focus.
73558
+ * - `viewport`: The box the terminal is drawn in.
73559
+ *
73560
+ * ## CSS States
73561
+ *
73562
+ * These can be used to apply styling when a component is in a given state.
73563
+ *
73564
+ * - `bell`: The program rang the bell, held for a moment for a visual bell.
73565
+ * - `exited`: The process has exited, by `exit-code`.
73566
+ * - `find-open`: The find bar is open.
73567
+ * - `fullscreen`: The terminal fills the screen.
73568
+ * - `tab-moves-focus`: Tab moves focus out of the terminal, after Control+M.
73569
+ * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
73570
+ */
73571
+ "helix-terminal": Partial<
73572
+ HelixTerminalProps & BaseProps<HelixTerminal, F> & BaseEvents<HelixTerminal>
73573
+ >;
73574
+
72991
73575
  /**
72992
73576
  * `as` sets the element, which decides the document outline and what a screen
72993
73577
  * reader announces. `variant` sets the type ramp, which decides size, weight,
@@ -105592,6 +106176,262 @@ export type CustomElementsSolidJs = {
105592
106176
  HelixTagProps & HelixTagSolidJsProps & BaseProps<HelixTag, "solid"> & BaseEvents<HelixTag>
105593
106177
  >;
105594
106178
 
106179
+ /**
106180
+ * The styled frame: a bordered box on the page's background with a header
106181
+ * strip for the name and the controls, and a status line that appears when
106182
+ * the process exits. It is 24rem tall unless `fill` is set or
106183
+ * `--terminal-block-size` says otherwise.
106184
+ *
106185
+ * `connectTerminal` themes the terminal from your tokens. The sixteen ANSI
106186
+ * colors share Log's hues, red the danger color, green success, yellow
106187
+ * warning, and blue info, and the four grays keep their order from dark to
106188
+ * light in each color mode. Set `--terminal-ansi-red` and its siblings,
106189
+ * `--terminal-cursor-color`, or `--terminal-selection-background-color` on
106190
+ * the terminal to choose them yourself, such as
106191
+ * `helix-terminal { --terminal-ansi-blue: #3b82f6 }`. The
106192
+ * [Terminals](https://fusion.dev/helix/docs/terminals) guide lists them all.
106193
+ *
106194
+ * Set `fill` for a terminal that fills a pane, such as one side of a
106195
+ * `Splitter`: the frame covers its container, which needs a position of its
106196
+ * own, such as `position: relative`. Set `separation="plain"` where the pane
106197
+ * already draws the edge.
106198
+ *
106199
+ * ## Attributes & Properties
106200
+ *
106201
+ * Component attributes and properties that can be applied to the element or by using JavaScript.
106202
+ *
106203
+ * - `fill`: Covers the container instead of taking a height of its own, for a
106204
+ * terminal that fills a pane. The container needs a position, such as
106205
+ * `position: relative`.
106206
+ * - `separation`: How the frame stands off the page. Unset, it is outlined. `plain` draws
106207
+ * no edge or corners, for a pane that draws its own.
106208
+ * - `clear-label`/`clearLabel`: The clear button's label.
106209
+ * - `columns`: The grid's width in character cells. Set it with `rows` to fix the grid's size; unset, the grid fills the frame.
106210
+ * - `controls`: Which built-in controls the header shows, as a list of `find`, `copy`,
106211
+ * `clear`, and `fullscreen`, or `none`. Absent is `find clear`.
106212
+ * - `controls-label`/`controlsLabel`: The name of the row of controls, read by screen readers.
106213
+ * - `copied-label`/`copiedLabel`: What screen readers hear after a copy.
106214
+ * - `copy-label`/`copyLabel`: The copy button's label.
106215
+ * - `exit-code`/`exitCode`: How the process exited, which the page sets when it does. While it is set,
106216
+ * the status line says it, the frame sends no input, and Restart is shown.
106217
+ * Clear it when a new process starts.
106218
+ * - `exited-label`/`exitedLabel`: What the status line says once the process has exited. `{code}` is its
106219
+ * exit code, written as the process gave it, and code `0` is a clean exit.
106220
+ * - `fallback-label`/`fallbackLabel`: The terminal's name where `label` is empty and the host has no `aria-label`.
106221
+ * - `find-close-label`/`findCloseLabel`: The label of the button that closes the find bar.
106222
+ * - `find-controls-label`/`findControlsLabel`: The name of the find bar's row of buttons, read by screen readers.
106223
+ * - `find-label`/`findLabel`: The find button's label, and the find field's name and placeholder.
106224
+ * - `find-next-label`/`findNextLabel`: The next match button's label.
106225
+ * - `find-previous-label`/`findPreviousLabel`: The previous match button's label.
106226
+ * - `fullscreen-label`/`fullscreenLabel`: The fullscreen button's label.
106227
+ * - `input-label`/`inputLabel`: The name of the element the reader types into, which the renderer draws.
106228
+ * - `label`: The terminal's name, in the header and for screen readers, such as the
106229
+ * shell or the folder it runs in. Several terminals on a page need names
106230
+ * that tell them apart.
106231
+ * - `matches-label`/`matchesLabel`: What the find bar says of its matches. `{index}` is the current match,
106232
+ * counting from 1, and `{count}` how many there are.
106233
+ * - `readonly`/`readOnly`: Draws the output and sends no input, with no cursor, for a transcript or
106234
+ * a command an agent ran. The attribute is `readonly`, the platform's
106235
+ * spelling.
106236
+ * - `restart-label`/`restartLabel`: The Restart button's label.
106237
+ * - `rows`: The grid's height in lines. Set it with `columns` to fix the grid's size; unset, the grid fills the frame.
106238
+ * - `screen-reader-mode`/`screenReaderMode`: Keeps the grid as lines a screen reader moves through, and says new
106239
+ * output as it arrives. Off by default, since it costs time on every
106240
+ * write. Connect it to a setting your reader can turn on.
106241
+ * - `tab-hint-label`/`tabHintLabel`: What the terminal's input describes to a screen reader. `{key}` is the key that switches Tab.
106242
+ * - `tab-moves-focus-label`/`tabMovesFocusLabel`: What the status line says while Tab moves focus. `{key}` is the key that switches it back.
106243
+ * - `tab-types-label`/`tabTypesLabel`: What screen readers hear when Tab goes back to typing in the terminal.
106244
+ * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
106245
+ *
106246
+ * **Named `whenSettled` because `settled` is taken four times over**, by
106247
+ * Image, Splitter and both color controls, none of them about transitions. A
106248
+ * base class takes the name every subclass then cannot use.
106249
+ *
106250
+ * **The state it reports cannot be watched, which is why this exists.** A
106251
+ * custom state is deliberately not in the DOM, so there is no
106252
+ * `MutationObserver` equivalent for `ElementInternals.states`. Await this
106253
+ * instead.
106254
+ *
106255
+ * Separate from `updateComplete`, which resolves in the microtask checkpoint
106256
+ * the suppression is still active in. That is the distinction `readyToMove`
106257
+ * in `@fusion.dev/helix-testing` is written around.
106258
+ *
106259
+ * It never resolves where `requestAnimationFrame` never fires, which is a
106260
+ * server, a hidden tab, and happy-dom. Callers that must not hang there race
106261
+ * it against a timeout, as the happy-dom harness's `readyToMove` does. The
106262
+ * browser harness's awaits it alone: a browser always runs the frame, and a
106263
+ * timer beside it was a bet on how long one takes, which a busy run lost. (property only) (readonly)
106264
+ *
106265
+ * ## Events
106266
+ *
106267
+ * Events that will be emitted by the component.
106268
+ *
106269
+ * - `helix-copy`: The copy control or its key put the selection on the clipboard.
106270
+ * - `helix-terminal-bell`: The program rang the bell. The frame flashes once.
106271
+ * - `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.
106272
+ * - `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.
106273
+ * - `helix-terminal-resize`: The grid changed size, with `columns`, `rows`, `width`, and `height`. Resize the process's pseudo-terminal to match.
106274
+ * - `helix-terminal-restart`: The Restart button was pressed after the process exited. Start a new process and clear `exit-code`.
106275
+ * - `helix-terminal-title`: The program set its title, with `title`. The frame keeps its own `label`.
106276
+ *
106277
+ * ## Slots
106278
+ *
106279
+ * Areas where markup can be added to the component.
106280
+ *
106281
+ * - `(default)`: The element your renderer draws the terminal in.
106282
+ * - `actions`: Controls of your own in the header, before the built-in ones, such as a button that splits the pane.
106283
+ * - `clear-icon`: Replaces the glyph inside the clear button.
106284
+ * - `copy-icon`: Replaces the glyph inside the copy button.
106285
+ * - `exit-actions`: Controls of your own beside Restart, shown once the process exits, such as a button that opens the whole log.
106286
+ * - `find-actions`: Controls of your own in the find bar, between the count and the buttons that move between matches.
106287
+ * - `find-close-icon`: Replaces the glyph inside the button that closes the find bar.
106288
+ * - `find-icon`: Replaces the glyph inside the find button.
106289
+ * - `find-next-icon`: Replaces the glyph inside the next match button.
106290
+ * - `find-previous-icon`: Replaces the glyph inside the previous match button.
106291
+ * - `fullscreen-icon`: Replaces the glyph inside the fullscreen button.
106292
+ * - `label`: The terminal's name in the header, such as an icon beside the shell's name. Replaces `label` there.
106293
+ * - `restart-icon`: Replaces the glyph inside the Restart button.
106294
+ *
106295
+ * ## Methods
106296
+ *
106297
+ * Methods that can be called to access component functionality.
106298
+ *
106299
+ * - `write(data: string | Uint8Array) => Promise<void>`: Writes the program's output. Resolves once the renderer has parsed it,
106300
+ * which is how a page pauses a process that writes faster than the
106301
+ * terminal draws. Output written before a renderer is attached is held and
106302
+ * written first.
106303
+ * - `paste(text: string) => void`: Inputs text as a paste does, in bracketed paste mode where the program
106304
+ * asked for it. It arrives as `helix-terminal-input`, like typed text.
106305
+ * - `clear() => void`: Clears the scrollback, keeping the line the cursor is on.
106306
+ * - `reset() => void`: Resets the emulator: its modes, its colors, and its screen.
106307
+ * - `text(scope: 'all' | 'screen' = 'screen') => string`: The terminal as plain text, as the renderer drew it: the lines on screen,
106308
+ * or with `all`, every line the scrollback holds. Empty before a renderer is
106309
+ * attached.
106310
+ * - `look() => TerminalLook`: The colors and the face the terminal is to be drawn in, as the
106311
+ * `--terminal-*` properties resolve where the frame is. `connectTerminal`
106312
+ * themes the renderer from it. A color nothing sets is left out, so the
106313
+ * renderer keeps its own: the headless tier sets none, and the styled tier
106314
+ * sets every one from the theme.
106315
+ * - `focus(options?: FocusOptions) => void`: Focuses the terminal's input, where a renderer is attached.
106316
+ * - `attach(renderer: TerminalRenderer) => TerminalSink`: Attaches what draws the terminal, and returns how it tells the frame what
106317
+ * happened. `connectTerminal` calls it; a page drawing its own terminal calls
106318
+ * it with its own renderer. Attaching another detaches the first.
106319
+ *
106320
+ * ## CSS Custom Properties
106321
+ *
106322
+ * CSS variables available for styling the component.
106323
+ *
106324
+ * - `--terminal-block-size`: The frame's height, as a length. Ignored with `fill`, where the container decides it.
106325
+ * - `--terminal-border-color`: The edge around the frame and the rules inside it.
106326
+ * - `--terminal-font-family`: The face of the grid. Defaults to the monospaced face.
106327
+ * - `--terminal-font-size`: The size of the grid's text. Defaults to the small text step.
106328
+ * - `--terminal-header-background-color`: The fill of the header, the find bar, and the status line.
106329
+ * - `--terminal-padding`: The space between the frame's edge and the grid.
106330
+ * - `--terminal-radius`: The frame's corners.
106331
+ * - `--terminal-active-match-background-color`: The ground of the current match of a search.
106332
+ * - `--terminal-active-match-border-color`: The edge of the current match of a search.
106333
+ * - `--terminal-ansi-black`: ANSI black, which codes `30` and `40` draw.
106334
+ * - `--terminal-ansi-blue`: ANSI blue, which codes `34` and `44` draw.
106335
+ * - `--terminal-ansi-bright-black`: ANSI bright black, which codes `90` and `100` draw.
106336
+ * - `--terminal-ansi-bright-blue`: ANSI bright blue, which codes `94` and `104` draw.
106337
+ * - `--terminal-ansi-bright-cyan`: ANSI bright cyan, which codes `96` and `106` draw.
106338
+ * - `--terminal-ansi-bright-green`: ANSI bright green, which codes `92` and `102` draw.
106339
+ * - `--terminal-ansi-bright-magenta`: ANSI bright magenta, which codes `95` and `105` draw.
106340
+ * - `--terminal-ansi-bright-red`: ANSI bright red, which codes `91` and `101` draw.
106341
+ * - `--terminal-ansi-bright-white`: ANSI bright white, which codes `97` and `107` draw.
106342
+ * - `--terminal-ansi-bright-yellow`: ANSI bright yellow, which codes `93` and `103` draw.
106343
+ * - `--terminal-ansi-cyan`: ANSI cyan, which codes `36` and `46` draw.
106344
+ * - `--terminal-ansi-green`: ANSI green, which codes `32` and `42` draw.
106345
+ * - `--terminal-ansi-magenta`: ANSI magenta, which codes `35` and `45` draw.
106346
+ * - `--terminal-ansi-red`: ANSI red, which codes `31` and `41` draw.
106347
+ * - `--terminal-ansi-white`: ANSI white, which codes `37` and `47` draw.
106348
+ * - `--terminal-ansi-yellow`: ANSI yellow, which codes `33` and `43` draw.
106349
+ * - `--terminal-background-color`: The ground of the grid.
106350
+ * - `--terminal-color`: The text of the grid where the program sets no color.
106351
+ * - `--terminal-cursor-color`: The cursor.
106352
+ * - `--terminal-match-background-color`: The ground of every match of a search but the current one.
106353
+ * - `--terminal-scrollbar-thumb-color`: The grid's scrollbar.
106354
+ * - `--terminal-selection-background-color`: The ground of selected text. See-through, so the text keeps its color.
106355
+ *
106356
+ * ## CSS Parts
106357
+ *
106358
+ * Custom selectors for styling elements within the component.
106359
+ *
106360
+ * - `actions`: The `actions` slot, first in the header's toolbar.
106361
+ * - `clear`: The button that clears the scrollback.
106362
+ * - `clear-button`: The clear button's inner button.
106363
+ * - `clear-live`: The clear button's live region, which speaks while the button is pending.
106364
+ * - `clear-spinner`: The ring the clear button turns while it is pending.
106365
+ * - `clear-text`: The box the clear button's icon sits in.
106366
+ * - `controls`: The toolbar at the end of the header: your actions, then the built-in buttons, one tab stop that the arrows move along.
106367
+ * - `controls-toolbar`: The box inside the header's toolbar that lays its buttons out.
106368
+ * - `copy`: The button that copies the selection. Disabled while nothing is selected.
106369
+ * - `copy-button`: The copy button's inner button.
106370
+ * - `copy-live`: The copy button's live region, which speaks while the button is pending.
106371
+ * - `copy-spinner`: The ring the copy button turns while it is pending.
106372
+ * - `copy-text`: The box the copy button's icon sits in.
106373
+ * - `exit-actions`: The `exit-actions` slot, beside Restart in the status line.
106374
+ * - `find`: The button that opens and closes the find bar. Expanded while it is open.
106375
+ * - `find-actions`: The `find-actions` slot, first in the find bar's toolbar.
106376
+ * - `find-bar`: The bar under the header where the reader searches the output.
106377
+ * - `find-button`: The find button's inner button.
106378
+ * - `find-close`: The button that closes the find bar.
106379
+ * - `find-close-button`: The find bar's close button's inner button.
106380
+ * - `find-close-live`: The find bar's close button's live region, which speaks while the button is pending.
106381
+ * - `find-close-spinner`: The ring the find bar's close button turns while it is pending.
106382
+ * - `find-close-text`: The box the find bar's close button's icon sits in.
106383
+ * - `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.
106384
+ * - `find-controls-toolbar`: The box inside the find bar's toolbar that lays its buttons out.
106385
+ * - `find-count`: Which match is current and how many there are, such as "3 of 12 matches".
106386
+ * - `find-field`: The search field in the find bar.
106387
+ * - `find-live`: The find button's live region, which speaks while the button is pending.
106388
+ * - `find-next`: The button that moves to the next match.
106389
+ * - `find-next-button`: The next match button's inner button.
106390
+ * - `find-next-live`: The next match button's live region, which speaks while the button is pending.
106391
+ * - `find-next-spinner`: The ring the next match button turns while it is pending.
106392
+ * - `find-next-text`: The box the next match button's icon sits in.
106393
+ * - `find-previous`: The button that moves to the previous match.
106394
+ * - `find-previous-button`: The previous match button's inner button.
106395
+ * - `find-previous-live`: The previous match button's live region, which speaks while the button is pending.
106396
+ * - `find-previous-spinner`: The ring the previous match button turns while it is pending.
106397
+ * - `find-previous-text`: The box the previous match button's icon sits in.
106398
+ * - `find-spinner`: The ring the find button turns while it is pending.
106399
+ * - `find-text`: The box the find button's icon sits in.
106400
+ * - `fullscreen`: The button that makes the terminal fill the screen. Pressed while it does.
106401
+ * - `fullscreen-button`: The fullscreen button's inner button.
106402
+ * - `fullscreen-live`: The fullscreen button's live region, which speaks while the button is pending.
106403
+ * - `fullscreen-spinner`: The ring the fullscreen button turns while it is pending.
106404
+ * - `fullscreen-text`: The box the fullscreen button's icon sits in.
106405
+ * - `header`: The strip above the terminal, with its name, your actions, and the controls.
106406
+ * - `label`: The terminal's name in the header.
106407
+ * - `live`: What screen readers hear after the frame acts: a match count, a copy, or a change to what Tab does. Visually hidden in the styled tier.
106408
+ * - `region`: The named group the terminal sits in.
106409
+ * - `restart`: The button in the status line that asks for a new process after the last one exited.
106410
+ * - `restart-button`: The Restart button's inner button.
106411
+ * - `restart-live`: The Restart button's live region, which speaks while the button is pending.
106412
+ * - `restart-spinner`: The ring the Restart button turns while it is pending.
106413
+ * - `restart-text`: The Restart button's label.
106414
+ * - `status`: The line under the terminal that says the process exited, or that Tab moves focus.
106415
+ * - `viewport`: The box the terminal is drawn in.
106416
+ *
106417
+ * ## CSS States
106418
+ *
106419
+ * These can be used to apply styling when a component is in a given state.
106420
+ *
106421
+ * - `bell`: The program rang the bell, held for a moment for a visual bell.
106422
+ * - `exited`: The process has exited, by `exit-code`.
106423
+ * - `find-open`: The find bar is open.
106424
+ * - `fullscreen`: The terminal fills the screen.
106425
+ * - `tab-moves-focus`: Tab moves focus out of the terminal, after Control+M.
106426
+ * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
106427
+ */
106428
+ "helix-terminal": Partial<
106429
+ HelixTerminalProps &
106430
+ HelixTerminalSolidJsProps &
106431
+ BaseProps<HelixTerminal, "solid"> &
106432
+ BaseEvents<HelixTerminal>
106433
+ >;
106434
+
105595
106435
  /**
105596
106436
  * `as` sets the element, which decides the document outline and what a screen
105597
106437
  * reader announces. `variant` sets the type ramp, which decides size, weight,
@@ -112340,6 +113180,68 @@ export type CustomCssProperties = {
112340
113180
  "--tag-gap"?: (string) | undefined;
112341
113181
  /** The corner radius of the tag. */
112342
113182
  "--tag-radius"?: (string) | undefined;
113183
+ /** The frame's height, as a length. Ignored with `fill`, where the container decides it. */
113184
+ "--terminal-block-size"?: (string) | undefined;
113185
+ /** The edge around the frame and the rules inside it. */
113186
+ "--terminal-border-color"?: (string) | undefined;
113187
+ /** The face of the grid. Defaults to the monospaced face. */
113188
+ "--terminal-font-family"?: (string) | undefined;
113189
+ /** The size of the grid's text. Defaults to the small text step. */
113190
+ "--terminal-font-size"?: (string) | undefined;
113191
+ /** The fill of the header, the find bar, and the status line. */
113192
+ "--terminal-header-background-color"?: (string) | undefined;
113193
+ /** The space between the frame's edge and the grid. */
113194
+ "--terminal-padding"?: (string) | undefined;
113195
+ /** The frame's corners. */
113196
+ "--terminal-radius"?: (string) | undefined;
113197
+ /** The ground of the current match of a search. */
113198
+ "--terminal-active-match-background-color"?: (string) | undefined;
113199
+ /** The edge of the current match of a search. */
113200
+ "--terminal-active-match-border-color"?: (string) | undefined;
113201
+ /** ANSI black, which codes `30` and `40` draw. */
113202
+ "--terminal-ansi-black"?: (string) | undefined;
113203
+ /** ANSI blue, which codes `34` and `44` draw. */
113204
+ "--terminal-ansi-blue"?: (string) | undefined;
113205
+ /** ANSI bright black, which codes `90` and `100` draw. */
113206
+ "--terminal-ansi-bright-black"?: (string) | undefined;
113207
+ /** ANSI bright blue, which codes `94` and `104` draw. */
113208
+ "--terminal-ansi-bright-blue"?: (string) | undefined;
113209
+ /** ANSI bright cyan, which codes `96` and `106` draw. */
113210
+ "--terminal-ansi-bright-cyan"?: (string) | undefined;
113211
+ /** ANSI bright green, which codes `92` and `102` draw. */
113212
+ "--terminal-ansi-bright-green"?: (string) | undefined;
113213
+ /** ANSI bright magenta, which codes `95` and `105` draw. */
113214
+ "--terminal-ansi-bright-magenta"?: (string) | undefined;
113215
+ /** ANSI bright red, which codes `91` and `101` draw. */
113216
+ "--terminal-ansi-bright-red"?: (string) | undefined;
113217
+ /** ANSI bright white, which codes `97` and `107` draw. */
113218
+ "--terminal-ansi-bright-white"?: (string) | undefined;
113219
+ /** ANSI bright yellow, which codes `93` and `103` draw. */
113220
+ "--terminal-ansi-bright-yellow"?: (string) | undefined;
113221
+ /** ANSI cyan, which codes `36` and `46` draw. */
113222
+ "--terminal-ansi-cyan"?: (string) | undefined;
113223
+ /** ANSI green, which codes `32` and `42` draw. */
113224
+ "--terminal-ansi-green"?: (string) | undefined;
113225
+ /** ANSI magenta, which codes `35` and `45` draw. */
113226
+ "--terminal-ansi-magenta"?: (string) | undefined;
113227
+ /** ANSI red, which codes `31` and `41` draw. */
113228
+ "--terminal-ansi-red"?: (string) | undefined;
113229
+ /** ANSI white, which codes `37` and `47` draw. */
113230
+ "--terminal-ansi-white"?: (string) | undefined;
113231
+ /** ANSI yellow, which codes `33` and `43` draw. */
113232
+ "--terminal-ansi-yellow"?: (string) | undefined;
113233
+ /** The ground of the grid. */
113234
+ "--terminal-background-color"?: (string) | undefined;
113235
+ /** The text of the grid where the program sets no color. */
113236
+ "--terminal-color"?: (string) | undefined;
113237
+ /** The cursor. */
113238
+ "--terminal-cursor-color"?: (string) | undefined;
113239
+ /** The ground of every match of a search but the current one. */
113240
+ "--terminal-match-background-color"?: (string) | undefined;
113241
+ /** The grid's scrollbar. */
113242
+ "--terminal-scrollbar-thumb-color"?: (string) | undefined;
113243
+ /** The ground of selected text. See-through, so the text keeps its color. */
113244
+ "--terminal-selection-background-color"?: (string) | undefined;
112343
113245
  /** The typeface. Overrides the ramp's. */
112344
113246
  "--text-font-family"?: (string) | undefined;
112345
113247
  /** The size. Overrides the ramp's. */