@fusion.dev/helix 0.215.3 → 0.216.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/api.json +1 -1
  2. package/custom-elements.json +1 -1
  3. package/dist/area-chart/root/area-chart-root.js +8 -1
  4. package/dist/bar-chart/root/bar-chart-root.js +8 -1
  5. package/dist/chat/composer/chat-composer.css.js +1 -1
  6. package/dist/chat/composer/chat-composer.d.ts +1 -0
  7. package/dist/chat/composer/chat-composer.js +2 -1
  8. package/dist/code-editor/index.d.ts +1 -0
  9. package/dist/code-editor/index.js +1 -0
  10. package/dist/code-editor/root/code-editor-root.css.d.ts +1 -0
  11. package/dist/code-editor/root/code-editor-root.css.js +2 -0
  12. package/dist/code-editor/root/code-editor-root.d.ts +52 -0
  13. package/dist/code-editor/root/code-editor-root.js +28 -0
  14. package/dist/code-input/index.d.ts +1 -0
  15. package/dist/code-input/index.js +1 -0
  16. package/dist/code-input/root/code-input-root.css.d.ts +1 -0
  17. package/dist/code-input/root/code-input-root.css.js +2 -0
  18. package/dist/code-input/root/code-input-root.d.ts +33 -0
  19. package/dist/code-input/root/code-input-root.js +21 -0
  20. package/dist/command/root/command-root.d.ts +1 -0
  21. package/dist/command/root/command-root.js +1 -0
  22. package/dist/donut-chart/root/donut-chart-root.js +8 -1
  23. package/dist/element-events.generated.js +36 -3
  24. package/dist/filter-input/root/filter-input-root.css.js +1 -1
  25. package/dist/filter-input/root/filter-input-root.d.ts +1 -0
  26. package/dist/filter-input/root/filter-input-root.js +2 -0
  27. package/dist/heatmap/root/heatmap-root.js +2 -1
  28. package/dist/index.d.ts +4 -0
  29. package/dist/index.js +4 -0
  30. package/dist/input/root/input-root.css.js +1 -1
  31. package/dist/input/root/input-root.d.ts +1 -0
  32. package/dist/input/root/input-root.js +2 -0
  33. package/dist/line-chart/root/line-chart-root.js +2 -0
  34. package/dist/listbox/root/listbox-root.css.js +1 -1
  35. package/dist/listbox/root/listbox-root.d.ts +1 -0
  36. package/dist/listbox/root/listbox-root.js +2 -0
  37. package/dist/markdown/index.d.ts +2 -0
  38. package/dist/markdown/index.js +2 -0
  39. package/dist/markdown/root/markdown-root.css.d.ts +1 -0
  40. package/dist/markdown/root/markdown-root.css.js +2 -0
  41. package/dist/markdown/root/markdown-root.d.ts +32 -0
  42. package/dist/markdown/root/markdown-root.js +14 -0
  43. package/dist/sandbox/compile-worker.d.ts +8 -0
  44. package/dist/sandbox/compile-worker.generated.d.ts +4 -0
  45. package/dist/sandbox/compile-worker.generated.js +2 -0
  46. package/dist/sandbox/compile-worker.js +26 -0
  47. package/dist/sandbox/compile.d.ts +23 -1
  48. package/dist/sandbox/compile.js +16 -4
  49. package/dist/sandbox/index.d.ts +1 -0
  50. package/dist/sandbox/index.js +1 -0
  51. package/dist/scatter-chart/root/scatter-chart-root.js +8 -1
  52. package/dist/shared/chart/sonify.css.d.ts +1 -0
  53. package/dist/shared/chart/sonify.css.js +2 -0
  54. package/dist/shared/dictation/dictation.css.d.ts +1 -0
  55. package/dist/shared/dictation/dictation.css.js +2 -0
  56. package/dist/shortcut-overlay/index.d.ts +1 -0
  57. package/dist/shortcut-overlay/index.js +1 -0
  58. package/dist/shortcut-overlay/root/shortcut-overlay-root.css.d.ts +1 -0
  59. package/dist/shortcut-overlay/root/shortcut-overlay-root.css.js +2 -0
  60. package/dist/shortcut-overlay/root/shortcut-overlay-root.d.ts +33 -0
  61. package/dist/shortcut-overlay/root/shortcut-overlay-root.js +13 -0
  62. package/dist/spatial-bar-chart/root/spatial-bar-chart-root.js +2 -1
  63. package/dist/spatial-heatmap/root/spatial-heatmap-root.js +2 -1
  64. package/dist/spatial-ribbon-chart/root/spatial-ribbon-chart-root.js +2 -1
  65. package/dist/spatial-scatter-chart/root/spatial-scatter-chart-root.js +2 -1
  66. package/dist/spatial-surface-chart/root/spatial-surface-chart-root.js +2 -1
  67. package/dist/spatial-treemap/root/spatial-treemap-root.js +2 -1
  68. package/dist/textarea/root/textarea-root.css.js +1 -1
  69. package/dist/textarea/root/textarea-root.d.ts +1 -0
  70. package/dist/textarea/root/textarea-root.js +2 -0
  71. package/dist/toast/root/toast-root.d.ts +1 -0
  72. package/dist/toast/root/toast-root.js +1 -0
  73. package/examples.json +1 -1
  74. package/lint.json +1 -1
  75. package/package.json +11 -9
  76. package/skills/helix/SKILL.md +2 -2
  77. package/types/jsx.d.ts +4784 -165
  78. package/types/svelte.d.ts +4 -0
  79. package/types/vue.d.ts +1122 -0
  80. package/types/words.d.ts +491 -0
package/types/vue.d.ts CHANGED
@@ -18,6 +18,7 @@ import type {
18
18
  HelixBeforeCloseEvent,
19
19
  HelixBeforeCollapseEvent,
20
20
  HelixBeforeEditEvent,
21
+ HelixBeforeListenEvent,
21
22
  HelixBeforeMoveEvent,
22
23
  HelixBeforeOpenEvent,
23
24
  HelixBeforePanelResizeEvent,
@@ -53,6 +54,8 @@ import type {
53
54
  HelixClearEvent,
54
55
  HelixCode,
55
56
  HelixCodeBlock,
57
+ HelixCodeEditor,
58
+ HelixCodeInput,
56
59
  HelixCollapseEvent,
57
60
  HelixColorInput,
58
61
  HelixColorPicker,
@@ -124,6 +127,7 @@ import type {
124
127
  HelixList,
125
128
  HelixListItem,
126
129
  HelixListbox,
130
+ HelixListenEvent,
127
131
  HelixLoadEvent,
128
132
  HelixLoadMoreEvent,
129
133
  HelixLoader,
@@ -148,6 +152,7 @@ import type {
148
152
  HelixMapTerrain,
149
153
  HelixMapTiltEvent,
150
154
  HelixMapZoomEvent,
155
+ HelixMarkdown,
151
156
  HelixMegamenu,
152
157
  HelixMenu,
153
158
  HelixMenuItem,
@@ -215,6 +220,7 @@ import type {
215
220
  HelixSelectedEvent,
216
221
  HelixSendEvent,
217
222
  HelixShortcutEvent,
223
+ HelixShortcutOverlay,
218
224
  HelixSkeleton,
219
225
  HelixSkipLink,
220
226
  HelixSlider,
@@ -843,6 +849,31 @@ beside its buttons and as each page arrives. `{first}`, `{last}` and
843
849
  beside its buttons and as each page arrives. `{first}`, `{last}` and
844
850
  `{count}` are replaced with the numbers, written in `locale`. */
845
851
  readingsLabel?: (HelixAreaChart["readingsLabel"]) | undefined;
852
+ /** Draws a Listen button that plays the chart as sound: each series in
853
+ turn, its readings from left to right and from the left ear to the
854
+ right, the value as pitch over two octaves, a soft tick at each
855
+ gridline, and one timbre a series. With it, each reading the arrow keys
856
+ step to plays its tone beside what the readout says, and L plays the
857
+ whole chart while it has focus. Escape stops it. Nothing plays without a
858
+ press, and the sound is made only then. */
859
+ sonify?: (HelixAreaChart["sonify"]) | undefined;
860
+ /** How long each series takes to play, in milliseconds or as `3s`. */
861
+ "sonify-duration"?: (HelixAreaChart["sonifyDuration"] | `${number}`) | undefined;
862
+ /** How long each series takes to play, in milliseconds or as `3s`. */
863
+ sonifyDuration?: (HelixAreaChart["sonifyDuration"]) | undefined;
864
+ /** The Listen button's words. */
865
+ "sonify-label"?: (HelixAreaChart["sonifyLabel"]) | undefined;
866
+ /** The Listen button's words. */
867
+ sonifyLabel?: (HelixAreaChart["sonifyLabel"]) | undefined;
868
+ /** The Listen button's words while the chart plays. */
869
+ "sonify-stop-label"?: (HelixAreaChart["sonifyStopLabel"]) | undefined;
870
+ /** The Listen button's words while the chart plays. */
871
+ sonifyStopLabel?: (HelixAreaChart["sonifyStopLabel"]) | undefined;
872
+ /** `visible` draws the chart's text summary under it, as one line.
873
+ `hidden`, or absent, says the summary to a screen reader and draws it
874
+ for no one else. Reflected, because the stylesheet draws it by the
875
+ attribute, and a page that sets the property, as React does, writes none. */
876
+ summary?: (HelixAreaChart["summary"]) | undefined;
846
877
  /** How a band's edge gets from one reading to the next.
847
878
 
848
879
  Three values, and the class doc argues for each: `straight` is absent and
@@ -1476,6 +1507,31 @@ beside its buttons and as each page arrives. `{first}`, `{last}` and
1476
1507
  beside its buttons and as each page arrives. `{first}`, `{last}` and
1477
1508
  `{count}` are replaced with the numbers, written in `locale`. */
1478
1509
  readingsLabel?: (HelixBarChart["readingsLabel"]) | undefined;
1510
+ /** Draws a Listen button that plays the chart as sound: each series in
1511
+ turn, its readings from left to right and from the left ear to the
1512
+ right, the value as pitch over two octaves, a soft tick at each
1513
+ gridline, and one timbre a series. With it, each reading the arrow keys
1514
+ step to plays its tone beside what the readout says, and L plays the
1515
+ whole chart while it has focus. Escape stops it. Nothing plays without a
1516
+ press, and the sound is made only then. */
1517
+ sonify?: (HelixBarChart["sonify"]) | undefined;
1518
+ /** How long each series takes to play, in milliseconds or as `3s`. */
1519
+ "sonify-duration"?: (HelixBarChart["sonifyDuration"] | `${number}`) | undefined;
1520
+ /** How long each series takes to play, in milliseconds or as `3s`. */
1521
+ sonifyDuration?: (HelixBarChart["sonifyDuration"]) | undefined;
1522
+ /** The Listen button's words. */
1523
+ "sonify-label"?: (HelixBarChart["sonifyLabel"]) | undefined;
1524
+ /** The Listen button's words. */
1525
+ sonifyLabel?: (HelixBarChart["sonifyLabel"]) | undefined;
1526
+ /** The Listen button's words while the chart plays. */
1527
+ "sonify-stop-label"?: (HelixBarChart["sonifyStopLabel"]) | undefined;
1528
+ /** The Listen button's words while the chart plays. */
1529
+ sonifyStopLabel?: (HelixBarChart["sonifyStopLabel"]) | undefined;
1530
+ /** `visible` draws the chart's text summary under it, as one line.
1531
+ `hidden`, or absent, says the summary to a screen reader and draws it
1532
+ for no one else. Reflected, because the stylesheet draws it by the
1533
+ attribute, and a page that sets the property, as React does, writes none. */
1534
+ summary?: (HelixBarChart["summary"]) | undefined;
1479
1535
  /** Which gridlines are drawn across the plot, if any.
1480
1536
 
1481
1537
  Absent draws none. `value` rules the axis the columns are *measured* on,
@@ -3433,6 +3489,12 @@ export type HelixChatComposerElementEvent<E = Event> = TypedEvent<
3433
3489
  HelixChatComposer,
3434
3490
  E
3435
3491
  >;
3492
+ /** `helix-before-listen` event type */
3493
+ export type HelixChatComposerHelixBeforeListenElementEvent =
3494
+ HelixChatComposerElementEvent<HelixBeforeListenEvent>;
3495
+ /** `helix-listen` event type */
3496
+ export type HelixChatComposerHelixListenElementEvent =
3497
+ HelixChatComposerElementEvent<HelixListenEvent>;
3436
3498
  /** `helix-send` event type */
3437
3499
  export type HelixChatComposerHelixSendElementEvent =
3438
3500
  HelixChatComposerElementEvent<HelixSendEvent>;
@@ -3441,6 +3503,27 @@ export type HelixChatComposerHelixTypingElementEvent =
3441
3503
  HelixChatComposerElementEvent<HelixTypingEvent>;
3442
3504
 
3443
3505
  export type HelixChatComposerVueProps = {
3506
+ /** What a screen reader hears as listening starts. */
3507
+ "listening-label"?: (HelixChatComposer["listeningLabel"]) | undefined;
3508
+ /** What a screen reader hears as listening starts. */
3509
+ listeningLabel?: (HelixChatComposer["listeningLabel"]) | undefined;
3510
+ /** What a screen reader hears as listening stops. */
3511
+ "stopped-listening-label"?: (HelixChatComposer["stoppedListeningLabel"]) | undefined;
3512
+ /** What a screen reader hears as listening stops. */
3513
+ stoppedListeningLabel?: (HelixChatComposer["stoppedListeningLabel"]) | undefined;
3514
+ /** Draws a button that listens for dictation and types what it hears at
3515
+ the caret. Nothing listens until the button is pressed, and the
3516
+ microphone is let go as listening stops. An input of type `password`,
3517
+ `email` or `number` draws no button. */
3518
+ voice?: (HelixChatComposer["voice"]) | undefined;
3519
+ /** The dictation button's name while it is not listening. */
3520
+ "voice-label"?: (HelixChatComposer["voiceLabel"]) | undefined;
3521
+ /** The dictation button's name while it is not listening. */
3522
+ voiceLabel?: (HelixChatComposer["voiceLabel"]) | undefined;
3523
+ /** The dictation button's name while it listens. */
3524
+ "voice-stop-label"?: (HelixChatComposer["voiceStopLabel"]) | undefined;
3525
+ /** The dictation button's name while it listens. */
3526
+ voiceStopLabel?: (HelixChatComposer["voiceStopLabel"]) | undefined;
3444
3527
  /** A message about the draft, shown under the field. While set, the composer
3445
3528
  is invalid, does not send, and does not submit, as a field's `feedback`
3446
3529
  does, and the message is announced as it appears. */
@@ -3521,9 +3604,16 @@ imperatively later, and nothing is hydrating by then.
3521
3604
 
3522
3605
  Here rather than on each control. */
3523
3606
  name?: (HelixChatComposer["name"]) | undefined;
3607
+ /** The engine this field listens through, in place of the one
3608
+ `registerSpeechEngine` gave the page, or the browser's own. */
3609
+ speechEngine?: (HelixChatComposer["speechEngine"]) | undefined;
3524
3610
  };
3525
3611
 
3526
3612
  export type HelixChatComposerVueEvents = {
3613
+ /** The dictation button was pressed. Cancelable: cancel it to keep the composer from listening. */
3614
+ "helix-before-listen": HelixChatComposerHelixBeforeListenElementEvent;
3615
+ /** Dictation settled on a phrase and put it in the draft, after the draft's own `input`. */
3616
+ "helix-listen": HelixChatComposerHelixListenElementEvent;
3527
3617
  /** Fired when the user sends their turn, and cancelable. */
3528
3618
  "helix-send": HelixChatComposerHelixSendElementEvent;
3529
3619
  /** The user started or stopped writing, with `typing` saying which, as the composer's `typing` does. */
@@ -4342,6 +4432,476 @@ export type HelixCodeBlockVueEvents = {
4342
4432
  "helix-toggle": HelixCodeBlockHelixToggleElementEvent;
4343
4433
  };
4344
4434
 
4435
+ /** `HelixCodeEditor` component event */
4436
+ export type HelixCodeEditorElementEvent<E = Event> = TypedEvent<
4437
+ HelixCodeEditor,
4438
+ E
4439
+ >;
4440
+ /** `helix-before-change` event type */
4441
+ export type HelixCodeEditorHelixBeforeChangeElementEvent =
4442
+ HelixCodeEditorElementEvent<HelixBeforeChangeEvent>;
4443
+
4444
+ export type HelixCodeEditorVueProps = {
4445
+ /** Covers the container instead of taking a height of its own, for an
4446
+ editor that fills a pane. The container needs a position, such as
4447
+ `position: relative`. */
4448
+ fill?: (HelixCodeEditor["fill"]) | undefined;
4449
+ /** How the frame stands off the page. Unset, it is outlined. `plain` draws
4450
+ no edge or corners, for a pane that draws its own. */
4451
+ separation?: (HelixCodeEditor["separation"]) | undefined;
4452
+ /** The value the control starts with. A form reset returns it to this value,
4453
+ and to the `value` attribute where this one is not written, as a native
4454
+ control resets to the `value` it declares. */
4455
+ "default-value"?: (HelixCodeEditor["defaultValue"]) | undefined;
4456
+ /** The value the control starts with. A form reset returns it to this value,
4457
+ and to the `value` attribute where this one is not written, as a native
4458
+ control resets to the `value` it declares. */
4459
+ defaultValue?: (HelixCodeEditor["defaultValue"]) | undefined;
4460
+ /** The control's current value, which its form submits.
4461
+
4462
+ One property, not two, so `input.value` answers the question anyone
4463
+ asking it meant. Writing always applies; `<helix-input value="x">` is the
4464
+ same statement in markup, and `default-value` is how markup seeds a value
4465
+ a reset should return to. */
4466
+ value?: (HelixCodeEditor["value"]) | undefined;
4467
+ /** The name a screen reader says for the field where it shows no label, as
4468
+ the platform's `aria-label`. It is drawn as a label and clipped, so it
4469
+ names the control inside, and a new one renders at once.
4470
+
4471
+ **An `aria-label` is read when the field renders, and nothing else would
4472
+ render it again.** It is the platform's attribute and no property of this
4473
+ element's, so writing a new one scheduled no update and the label kept
4474
+ the old words. Data Table meets this on every column move: each row's
4475
+ checkbox is named by the first column, so reordering renames every one.
4476
+
4477
+ A reactive property on the attribute, which is the one way Lit observes
4478
+ one. Overriding `observedAttributes` in a mixin compiled `this` to the
4479
+ mixin's own class, so every field observed only this mixin's attributes
4480
+ and dropped its own. Not reflected: the attribute is the consumer's. */
4481
+ "aria-label"?: (string) | undefined;
4482
+ /** The validation message shown under the control. It replaces the
4483
+ browser's message. */
4484
+ feedback?: (HelixCodeEditor["feedback"]) | undefined;
4485
+ /** Help text shown under the control. A validation message replaces it. */
4486
+ hint?: (HelixCodeEditor["hint"]) | undefined;
4487
+ /** The field's label, which is also its accessible name. Content in the
4488
+ `label` slot replaces it. */
4489
+ label?: (HelixCodeEditor["label"]) | undefined;
4490
+ /** Whether the field needs a value before the form can submit. */
4491
+ required?: (HelixCodeEditor["required"]) | undefined;
4492
+ /** The message shown when the field is required and empty.
4493
+
4494
+ **Absent, or empty, is the control's own sentence**, "Choose one to
4495
+ continue." on a set and the browser's own on a text field, which the
4496
+ browser writes in the reader's language. A family with a sentence of its
4497
+ own declares it as this property's English, a word property a page
4498
+ registers for its locale under the family's key. Every other word a control speaks is a property,
4499
+ and this one was the English a form in another language still spoke in
4500
+ the bubble it raises on submit: `feedback` replaces the message under
4501
+ the field and does not reach that one. */
4502
+ "value-missing-message"?: (HelixCodeEditor["valueMissingMessage"]) | undefined;
4503
+ /** The message shown when the field is required and empty.
4504
+
4505
+ **Absent, or empty, is the control's own sentence**, "Choose one to
4506
+ continue." on a set and the browser's own on a text field, which the
4507
+ browser writes in the reader's language. A family with a sentence of its
4508
+ own declares it as this property's English, a word property a page
4509
+ registers for its locale under the family's key. Every other word a control speaks is a property,
4510
+ and this one was the English a form in another language still spoke in
4511
+ the bubble it raises on submit: `feedback` replaces the message under
4512
+ the field and does not reach that one. */
4513
+ valueMissingMessage?: (HelixCodeEditor["valueMissingMessage"]) | undefined;
4514
+ /** The name of the header's toolbar, read by screen readers. */
4515
+ "controls-label"?: (HelixCodeEditor["controlsLabel"]) | undefined;
4516
+ /** The name of the header's toolbar, read by screen readers. */
4517
+ controlsLabel?: (HelixCodeEditor["controlsLabel"]) | undefined;
4518
+ /** How one problem in the list reads. `{line}` is its line and `{message}` what it says. */
4519
+ "diagnostic-label"?: (HelixCodeEditor["diagnosticLabel"]) | undefined;
4520
+ /** How one problem in the list reads. `{line}` is its line and `{message}` what it says. */
4521
+ diagnosticLabel?: (HelixCodeEditor["diagnosticLabel"]) | undefined;
4522
+ /** The list of problems' name. */
4523
+ "diagnostics-label"?: (HelixCodeEditor["diagnosticsLabel"]) | undefined;
4524
+ /** The list of problems' name. */
4525
+ diagnosticsLabel?: (HelixCodeEditor["diagnosticsLabel"]) | undefined;
4526
+ /** The name of the find bar's Close button. */
4527
+ "find-close-label"?: (HelixCodeEditor["findCloseLabel"]) | undefined;
4528
+ /** The name of the find bar's Close button. */
4529
+ findCloseLabel?: (HelixCodeEditor["findCloseLabel"]) | undefined;
4530
+ /** The name of the find bar's toolbar, read by screen readers. */
4531
+ "find-controls-label"?: (HelixCodeEditor["findControlsLabel"]) | undefined;
4532
+ /** The name of the find bar's toolbar, read by screen readers. */
4533
+ findControlsLabel?: (HelixCodeEditor["findControlsLabel"]) | undefined;
4534
+ /** What the find bar says when its regular expression cannot be read. */
4535
+ "find-invalid-label"?: (HelixCodeEditor["findInvalidLabel"]) | undefined;
4536
+ /** What the find bar says when its regular expression cannot be read. */
4537
+ findInvalidLabel?: (HelixCodeEditor["findInvalidLabel"]) | undefined;
4538
+ /** The name of the Find button and the find bar's field. */
4539
+ "find-label"?: (HelixCodeEditor["findLabel"]) | undefined;
4540
+ /** The name of the Find button and the find bar's field. */
4541
+ findLabel?: (HelixCodeEditor["findLabel"]) | undefined;
4542
+ /** The name of the option that finds only the same case. */
4543
+ "find-match-case-label"?: (HelixCodeEditor["findMatchCaseLabel"]) | undefined;
4544
+ /** The name of the option that finds only the same case. */
4545
+ findMatchCaseLabel?: (HelixCodeEditor["findMatchCaseLabel"]) | undefined;
4546
+ /** The name of the button that selects the next match. */
4547
+ "find-next-label"?: (HelixCodeEditor["findNextLabel"]) | undefined;
4548
+ /** The name of the button that selects the next match. */
4549
+ findNextLabel?: (HelixCodeEditor["findNextLabel"]) | undefined;
4550
+ /** The name of the button that selects the previous match. */
4551
+ "find-previous-label"?: (HelixCodeEditor["findPreviousLabel"]) | undefined;
4552
+ /** The name of the button that selects the previous match. */
4553
+ findPreviousLabel?: (HelixCodeEditor["findPreviousLabel"]) | undefined;
4554
+ /** The name of the option that reads the search as a regular expression. */
4555
+ "find-regex-label"?: (HelixCodeEditor["findRegexLabel"]) | undefined;
4556
+ /** The name of the option that reads the search as a regular expression. */
4557
+ findRegexLabel?: (HelixCodeEditor["findRegexLabel"]) | undefined;
4558
+ /** The name of the button that shows the replace field under the find field. */
4559
+ "find-replace-label"?: (HelixCodeEditor["findReplaceLabel"]) | undefined;
4560
+ /** The name of the button that shows the replace field under the find field. */
4561
+ findReplaceLabel?: (HelixCodeEditor["findReplaceLabel"]) | undefined;
4562
+ /** The name of the option that finds only whole words. */
4563
+ "find-whole-word-label"?: (HelixCodeEditor["findWholeWordLabel"]) | undefined;
4564
+ /** The name of the option that finds only whole words. */
4565
+ findWholeWordLabel?: (HelixCodeEditor["findWholeWordLabel"]) | undefined;
4566
+ /** The language to highlight, such as `ts`, `css`, `md` or `rust`. Empty is plain text. */
4567
+ language?: (HelixCodeEditor["language"]) | undefined;
4568
+ /** Draws each line's number beside it, in an engine. */
4569
+ "line-numbers"?: (HelixCodeEditor["lineNumbers"]) | undefined;
4570
+ /** Draws each line's number beside it, in an engine. */
4571
+ lineNumbers?: (HelixCodeEditor["lineNumbers"]) | undefined;
4572
+ /** What the find bar says of its matches. `{index}` is the selected match,
4573
+ counting from 1, and `{count}` how many there are. */
4574
+ "matches-label"?: (HelixCodeEditor["matchesLabel"]) | undefined;
4575
+ /** What the find bar says of its matches. `{index}` is the selected match,
4576
+ counting from 1, and `{count}` how many there are. */
4577
+ matchesLabel?: (HelixCodeEditor["matchesLabel"]) | undefined;
4578
+ /** Shown while the editor is empty. */
4579
+ placeholder?: (HelixCodeEditor["placeholder"]) | undefined;
4580
+ /** Where the caret is, in the status line. `{line}` and `{column}` count from 1. */
4581
+ "position-label"?: (HelixCodeEditor["positionLabel"]) | undefined;
4582
+ /** Where the caret is, in the status line. `{line}` and `{column}` count from 1. */
4583
+ positionLabel?: (HelixCodeEditor["positionLabel"]) | undefined;
4584
+ /** How many problems there are, in the status line. `{count}` is the number. */
4585
+ "problems-label"?: (HelixCodeEditor["problemsLabel"]) | undefined;
4586
+ /** How many problems there are, in the status line. `{count}` is the number. */
4587
+ problemsLabel?: (HelixCodeEditor["problemsLabel"]) | undefined;
4588
+ /** Lets the reader select and copy, and not change, the text. */
4589
+ readonly?: (HelixCodeEditor["readOnly"]) | undefined;
4590
+ /** Lets the reader select and copy, and not change, the text. */
4591
+ readOnly?: (HelixCodeEditor["readOnly"]) | undefined;
4592
+ /** The name of the button that replaces every match. */
4593
+ "replace-all-label"?: (HelixCodeEditor["replaceAllLabel"]) | undefined;
4594
+ /** The name of the button that replaces every match. */
4595
+ replaceAllLabel?: (HelixCodeEditor["replaceAllLabel"]) | undefined;
4596
+ /** The name of the button that replaces the selected match. */
4597
+ "replace-label"?: (HelixCodeEditor["replaceLabel"]) | undefined;
4598
+ /** The name of the button that replaces the selected match. */
4599
+ replaceLabel?: (HelixCodeEditor["replaceLabel"]) | undefined;
4600
+ /** The name of the field the replacement is typed in. */
4601
+ "replace-with-label"?: (HelixCodeEditor["replaceWithLabel"]) | undefined;
4602
+ /** The name of the field the replacement is typed in. */
4603
+ replaceWithLabel?: (HelixCodeEditor["replaceWithLabel"]) | undefined;
4604
+ /** How many lines tall the plain field is before it scrolls, without an engine. */
4605
+ rows?: (HelixCodeEditor["rows"]) | undefined;
4606
+ /** Wraps long lines to the editor's width, in place of scrolling sideways. */
4607
+ wrap?: (HelixCodeEditor["wrap"]) | undefined;
4608
+ /** Whether the control is disabled and cannot be used.
4609
+
4610
+ Reflected, because the styled tier selects on it, and mirrored to
4611
+ `aria-disabled` rather than removing the element from the accessibility
4612
+ tree, so a screen reader can still announce that the control exists.
4613
+
4614
+ The mirror itself is in `willUpdate` below, here rather than in each
4615
+ control, because here is where `disabled` is. */
4616
+ disabled?: (HelixCodeEditor["disabled"]) | undefined;
4617
+ /** The name the control's value is submitted under.
4618
+
4619
+ **Reflected, and it is the exception to "reflect only what CSS selects
4620
+ on".** The platform builds a form's entry list from the `name` *content
4621
+ attribute*, not from the property, so a control named through the property
4622
+ submitted under no name at all and was silently dropped. Measured: two
4623
+ inputs in one form, one named by attribute and one by property, and the
4624
+ form carried a single entry.
4625
+
4626
+ Safe for a React consumer, which is what the rule is protecting: React
4627
+ renders a custom element's props as attributes on the server, so the name
4628
+ is already in the markup being hydrated and reflecting it writes what is
4629
+ there. It is only a change to the markup when a consumer assigns it
4630
+ imperatively later, and nothing is hydrating by then.
4631
+
4632
+ Here rather than on each control. */
4633
+ name?: (HelixCodeEditor["name"]) | undefined;
4634
+ /** The problems in the text, each underlined and listed under the editor. */
4635
+ diagnostics?: (HelixCodeEditor["diagnostics"]) | undefined;
4636
+ /** What draws the editor, such as `codeMirrorEngine()` from
4637
+ `@fusion.dev/helix-editor`. Absent, the editor is a plain text field. */
4638
+ engine?: (HelixCodeEditor["engine"]) | undefined;
4639
+ };
4640
+
4641
+ export type HelixCodeEditorVueEvents = {
4642
+ /** The reader finished an edit and focus left the code, in the engine or the plain field. */
4643
+ change: HelixCodeEditorElementEvent;
4644
+ /** The text is about to change. Cancelable: cancel it to keep the current text. */
4645
+ "helix-before-change": HelixCodeEditorHelixBeforeChangeElementEvent;
4646
+ /** Fired after the text changes. */
4647
+ input: HelixCodeEditorElementEvent;
4648
+ };
4649
+
4650
+ /** `HelixCodeInput` component event */
4651
+ export type HelixCodeInputElementEvent<E = Event> = TypedEvent<
4652
+ HelixCodeInput,
4653
+ E
4654
+ >;
4655
+ /** `helix-before-change` event type */
4656
+ export type HelixCodeInputHelixBeforeChangeElementEvent =
4657
+ HelixCodeInputElementEvent<HelixBeforeChangeEvent>;
4658
+ /** `helix-before-listen` event type */
4659
+ export type HelixCodeInputHelixBeforeListenElementEvent =
4660
+ HelixCodeInputElementEvent<HelixBeforeListenEvent>;
4661
+ /** `helix-clear` event type */
4662
+ export type HelixCodeInputHelixClearElementEvent =
4663
+ HelixCodeInputElementEvent<HelixClearEvent>;
4664
+ /** `helix-listen` event type */
4665
+ export type HelixCodeInputHelixListenElementEvent =
4666
+ HelixCodeInputElementEvent<HelixListenEvent>;
4667
+
4668
+ export type HelixCodeInputVueProps = {
4669
+ /** The grammar to highlight, such as `json`, `css`, `ts`, `html` or `sh`. Empty is plain text. */
4670
+ language?: (HelixCodeInput["language"]) | undefined;
4671
+ /** How the browser wraps the text, and whether the breaks are submitted with
4672
+ it. */
4673
+ wrap?: (HelixCodeInput["wrap"]) | undefined;
4674
+ /** What a screen reader hears as listening starts. */
4675
+ "listening-label"?: (HelixCodeInput["listeningLabel"]) | undefined;
4676
+ /** What a screen reader hears as listening starts. */
4677
+ listeningLabel?: (HelixCodeInput["listeningLabel"]) | undefined;
4678
+ /** What a screen reader hears as listening stops. */
4679
+ "stopped-listening-label"?: (HelixCodeInput["stoppedListeningLabel"]) | undefined;
4680
+ /** What a screen reader hears as listening stops. */
4681
+ stoppedListeningLabel?: (HelixCodeInput["stoppedListeningLabel"]) | undefined;
4682
+ /** Draws a button that listens for dictation and types what it hears at
4683
+ the caret. Nothing listens until the button is pressed, and the
4684
+ microphone is let go as listening stops. An input of type `password`,
4685
+ `email` or `number` draws no button. */
4686
+ voice?: (HelixCodeInput["voice"]) | undefined;
4687
+ /** The dictation button's name while it is not listening. */
4688
+ "voice-label"?: (HelixCodeInput["voiceLabel"]) | undefined;
4689
+ /** The dictation button's name while it is not listening. */
4690
+ voiceLabel?: (HelixCodeInput["voiceLabel"]) | undefined;
4691
+ /** The dictation button's name while it listens. */
4692
+ "voice-stop-label"?: (HelixCodeInput["voiceStopLabel"]) | undefined;
4693
+ /** The dictation button's name while it listens. */
4694
+ voiceStopLabel?: (HelixCodeInput["voiceStopLabel"]) | undefined;
4695
+ /** The value the control starts with. A form reset returns it to this value,
4696
+ and to the `value` attribute where this one is not written, as a native
4697
+ control resets to the `value` it declares. */
4698
+ "default-value"?: (HelixCodeInput["defaultValue"]) | undefined;
4699
+ /** The value the control starts with. A form reset returns it to this value,
4700
+ and to the `value` attribute where this one is not written, as a native
4701
+ control resets to the `value` it declares. */
4702
+ defaultValue?: (HelixCodeInput["defaultValue"]) | undefined;
4703
+ /** The control's current value, which its form submits.
4704
+
4705
+ One property, not two, so `input.value` answers the question anyone
4706
+ asking it meant. Writing always applies; `<helix-input value="x">` is the
4707
+ same statement in markup, and `default-value` is how markup seeds a value
4708
+ a reset should return to. */
4709
+ value?: (HelixCodeInput["value"]) | undefined;
4710
+ /** The name a screen reader says for the field where it shows no label, as
4711
+ the platform's `aria-label`. It is drawn as a label and clipped, so it
4712
+ names the control inside, and a new one renders at once.
4713
+
4714
+ **An `aria-label` is read when the field renders, and nothing else would
4715
+ render it again.** It is the platform's attribute and no property of this
4716
+ element's, so writing a new one scheduled no update and the label kept
4717
+ the old words. Data Table meets this on every column move: each row's
4718
+ checkbox is named by the first column, so reordering renames every one.
4719
+
4720
+ A reactive property on the attribute, which is the one way Lit observes
4721
+ one. Overriding `observedAttributes` in a mixin compiled `this` to the
4722
+ mixin's own class, so every field observed only this mixin's attributes
4723
+ and dropped its own. Not reflected: the attribute is the consumer's. */
4724
+ "aria-label"?: (string) | undefined;
4725
+ /** The validation message shown under the control. It replaces the
4726
+ browser's message. */
4727
+ feedback?: (HelixCodeInput["feedback"]) | undefined;
4728
+ /** Help text shown under the control. A validation message replaces it. */
4729
+ hint?: (HelixCodeInput["hint"]) | undefined;
4730
+ /** The field's label, which is also its accessible name. Content in the
4731
+ `label` slot replaces it. */
4732
+ label?: (HelixCodeInput["label"]) | undefined;
4733
+ /** Whether the field needs a value before the form can submit. */
4734
+ required?: (HelixCodeInput["required"]) | undefined;
4735
+ /** The message shown when the field is required and empty.
4736
+
4737
+ **Absent, or empty, is the control's own sentence**, "Choose one to
4738
+ continue." on a set and the browser's own on a text field, which the
4739
+ browser writes in the reader's language. A family with a sentence of its
4740
+ own declares it as this property's English, a word property a page
4741
+ registers for its locale under the family's key. Every other word a control speaks is a property,
4742
+ and this one was the English a form in another language still spoke in
4743
+ the bubble it raises on submit: `feedback` replaces the message under
4744
+ the field and does not reach that one. */
4745
+ "value-missing-message"?: (HelixCodeInput["valueMissingMessage"]) | undefined;
4746
+ /** The message shown when the field is required and empty.
4747
+
4748
+ **Absent, or empty, is the control's own sentence**, "Choose one to
4749
+ continue." on a set and the browser's own on a text field, which the
4750
+ browser writes in the reader's language. A family with a sentence of its
4751
+ own declares it as this property's English, a word property a page
4752
+ registers for its locale under the family's key. Every other word a control speaks is a property,
4753
+ and this one was the English a form in another language still spoke in
4754
+ the bubble it raises on submit: `feedback` replaces the message under
4755
+ the field and does not reach that one. */
4756
+ valueMissingMessage?: (HelixCodeInput["valueMissingMessage"]) | undefined;
4757
+ /** What the browser can autofill in the field, as a standard `autocomplete`
4758
+ token.
4759
+
4760
+ Empty leaves the attribute off, which is the browser's default. Set it to
4761
+ a token like `email` or `bday` to ask for autofill, or to `off` to refuse. */
4762
+ autocomplete?: (HelixCodeInput["autocomplete"]) | undefined;
4763
+ /** Grows the box to fit its content, so it does not scroll. */
4764
+ "auto-grow"?: (HelixCodeInput["autoGrow"]) | undefined;
4765
+ /** Grows the box to fit its content, so it does not scroll. */
4766
+ autoGrow?: (HelixCodeInput["autoGrow"]) | undefined;
4767
+ /** Draws a button that empties the field while it holds text. */
4768
+ clearable?: (HelixCodeInput["clearable"]) | undefined;
4769
+ /** The accessible name of the clear button, which shows only an icon. */
4770
+ "clear-label"?: (HelixCodeInput["clearLabel"]) | undefined;
4771
+ /** The accessible name of the clear button, which shows only an icon. */
4772
+ clearLabel?: (HelixCodeInput["clearLabel"]) | undefined;
4773
+ /** How many characters wide the box is, when the layout does not set its
4774
+ width.
4775
+
4776
+ Optional and absent by default, which is the reflected-property rule: a
4777
+ `<textarea>` left alone is 20 columns wide and a styled one is whatever its
4778
+ box says, so writing a number here is a departure rather than the resting
4779
+ state. `wrap="hard"` needs it, the two being the pair that decides where
4780
+ the browser inserts the line breaks it submits. */
4781
+ cols?: (HelixCodeInput["cols"]) | undefined;
4782
+ /** The name of a second form entry that submits the direction of the text.
4783
+
4784
+ **Submitted through `setFormValue`, because the inner control's own
4785
+ `dirname` cannot reach the form.** This host is form-associated and reports
4786
+ its value itself, so the `<textarea>` inside the shadow root participates in
4787
+ no form at all and forwarding the attribute would have looked right and
4788
+ submitted nothing. `ElementInternals` takes a `FormData`, which is how one
4789
+ element sends two entries, and that is what this does. */
4790
+ dirname?: (HelixCodeInput["dirName"]) | undefined;
4791
+ /** The name of a second form entry that submits the direction of the text.
4792
+
4793
+ **Submitted through `setFormValue`, because the inner control's own
4794
+ `dirname` cannot reach the form.** This host is form-associated and reports
4795
+ its value itself, so the `<textarea>` inside the shadow root participates in
4796
+ no form at all and forwarding the attribute would have looked right and
4797
+ submitted nothing. `ElementInternals` takes a `FormData`, which is how one
4798
+ element sends two entries, and that is what this does. */
4799
+ dirName?: (HelixCodeInput["dirName"]) | undefined;
4800
+ /** The most characters the value can have. */
4801
+ maxlength?: (HelixCodeInput["maxLength"] | `${number}`) | undefined;
4802
+ /** The most characters the value can have. */
4803
+ maxLength?: (HelixCodeInput["maxLength"]) | undefined;
4804
+ /** How many lines an `auto-grow` field grows to before it scrolls. Absent,
4805
+ it grows with all of its text. */
4806
+ "max-rows"?: (HelixCodeInput["maxRows"] | `${number}`) | undefined;
4807
+ /** How many lines an `auto-grow` field grows to before it scrolls. Absent,
4808
+ it grows with all of its text. */
4809
+ maxRows?: (HelixCodeInput["maxRows"]) | undefined;
4810
+ /** The fewest characters the value can have.
4811
+
4812
+ Forwarded to the real `<textarea>` rather than checked here, which is what
4813
+ makes the message the browser's and therefore the reader's own language.
4814
+ No `pattern`: the platform does not give a textarea one, and inventing it
4815
+ would be this library guessing where the point is to stop guessing. */
4816
+ minlength?: (HelixCodeInput["minLength"] | `${number}`) | undefined;
4817
+ /** The fewest characters the value can have.
4818
+
4819
+ Forwarded to the real `<textarea>` rather than checked here, which is what
4820
+ makes the message the browser's and therefore the reader's own language.
4821
+ No `pattern`: the platform does not give a textarea one, and inventing it
4822
+ would be this library guessing where the point is to stop guessing. */
4823
+ minLength?: (HelixCodeInput["minLength"]) | undefined;
4824
+ /** Text shown while the field is empty.
4825
+
4826
+ Not a label: it goes when typing starts. */
4827
+ placeholder?: (HelixCodeInput["placeholder"]) | undefined;
4828
+ /** Blocks typing in the field. The value is still submitted with the form. */
4829
+ readonly?: (HelixCodeInput["readOnly"]) | undefined;
4830
+ /** Blocks typing in the field. The value is still submitted with the form. */
4831
+ readOnly?: (HelixCodeInput["readOnly"]) | undefined;
4832
+ /** How many lines the box is before anything is typed. */
4833
+ rows?: (HelixCodeInput["rows"]) | undefined;
4834
+ /** Whether the control is disabled and cannot be used.
4835
+
4836
+ Reflected, because the styled tier selects on it, and mirrored to
4837
+ `aria-disabled` rather than removing the element from the accessibility
4838
+ tree, so a screen reader can still announce that the control exists.
4839
+
4840
+ The mirror itself is in `willUpdate` below, here rather than in each
4841
+ control, because here is where `disabled` is. */
4842
+ disabled?: (HelixCodeInput["disabled"]) | undefined;
4843
+ /** The name the control's value is submitted under.
4844
+
4845
+ **Reflected, and it is the exception to "reflect only what CSS selects
4846
+ on".** The platform builds a form's entry list from the `name` *content
4847
+ attribute*, not from the property, so a control named through the property
4848
+ submitted under no name at all and was silently dropped. Measured: two
4849
+ inputs in one form, one named by attribute and one by property, and the
4850
+ form carried a single entry.
4851
+
4852
+ Safe for a React consumer, which is what the rule is protecting: React
4853
+ renders a custom element's props as attributes on the server, so the name
4854
+ is already in the markup being hydrated and reflecting it writes what is
4855
+ there. It is only a change to the markup when a consumer assigns it
4856
+ imperatively later, and nothing is hydrating by then.
4857
+
4858
+ Here rather than on each control. */
4859
+ name?: (HelixCodeInput["name"]) | undefined;
4860
+ /** Turns the code into highlighted markup for its `language`, for this field
4861
+ alone. Absent, the field draws with the highlighter `registerHighlighter`
4862
+ gave the page, and plain where there is none. The markup is drawn as
4863
+ given, so it escapes the code, as every highlighter does. */
4864
+ highlight?: (HelixCodeInput["highlight"]) | undefined;
4865
+ /** The engine this field listens through, in place of the one
4866
+ `registerSpeechEngine` gave the page, or the browser's own. */
4867
+ speechEngine?: (HelixCodeInput["speechEngine"]) | undefined;
4868
+ /** The direction of the selection, as a native textarea reports it.
4869
+
4870
+ **The whole reason this renders a real `<textarea>` is the caret**, and the
4871
+ control is inside this shadow root, so `querySelector` does not find it and
4872
+ a consumer has no other way to ask where the selection is, let alone move
4873
+ it. A field that cannot be scripted at the caret cannot do an
4874
+ insert-at-cursor toolbar, which is the first thing anybody builds on a
4875
+ textarea.
4876
+
4877
+ Written through to the control, and answering zero before there is one,
4878
+ which is where an empty field's caret would be anyway. */
4879
+ selectionDirection?: (HelixCodeInput["selectionDirection"]) | undefined;
4880
+ /** Where the selection ends, as an offset into the value. */
4881
+ selectionEnd?: (HelixCodeInput["selectionEnd"]) | undefined;
4882
+ /** Where the selection starts, as an offset into the value. */
4883
+ selectionStart?: (HelixCodeInput["selectionStart"]) | undefined;
4884
+ /** Your own rule for the value, run on every change once the browser finds
4885
+ nothing wrong. Return a message, or a list of them, to mark the field
4886
+ invalid, and `true`, `null`, or nothing to accept the value. */
4887
+ validate?: (HelixCodeInput["validate"]) | undefined;
4888
+ };
4889
+
4890
+ export type HelixCodeInputVueEvents = {
4891
+ /** Sent from the textarea when the user finishes an edit. */
4892
+ change: HelixCodeInputElementEvent;
4893
+ /** Fired as the text changes, and cancelable. */
4894
+ "helix-before-change": HelixCodeInputHelixBeforeChangeElementEvent;
4895
+ /** The dictation button was pressed. Cancelable: cancel it to keep the field from listening. */
4896
+ "helix-before-listen": HelixCodeInputHelixBeforeListenElementEvent;
4897
+ /** Fired after the clear button has emptied the field, after `input` and `change`. */
4898
+ "helix-clear": HelixCodeInputHelixClearElementEvent;
4899
+ /** Dictation settled on a phrase and put it in the value, after the field's own `input`. */
4900
+ "helix-listen": HelixCodeInputHelixListenElementEvent;
4901
+ /** Fired after the value changes. */
4902
+ input: HelixCodeInputElementEvent;
4903
+ };
4904
+
4345
4905
  export type HelixCodeVueProps = {};
4346
4906
 
4347
4907
  export type HelixCodeVueEvents = {};
@@ -5411,6 +5971,19 @@ hydration, or diffed by a framework, it comes back holding whatever the
5411
5971
  last reader did rather than what the author wrote. `:state(open)` carries
5412
5972
  the resolved state for stylesheets, which is what the mirror is for. */
5413
5973
  open?: (HelixCommand["open"]) | undefined;
5974
+ /** Lists the controls on screen below the palette's own commands, once the
5975
+ reader types: every labeled Helix button, field, tab, switch and the
5976
+ rest, by its name, with its shortcut. Choosing one closes the palette and
5977
+ presses the control, or moves focus into a field.
5978
+
5979
+ A control that is disabled, inert, hidden or under `unlisted` is left out,
5980
+ and so is anything inside the palette. Off by default, so a palette used
5981
+ as a search box lists only what it holds. */
5982
+ controls?: (HelixCommand["controls"]) | undefined;
5983
+ /** The heading over the controls on screen. */
5984
+ "controls-label"?: (HelixCommand["controlsLabel"]) | undefined;
5985
+ /** The heading over the controls on screen. */
5986
+ controlsLabel?: (HelixCommand["controlsLabel"]) | undefined;
5414
5987
  /** The text shown when the filter matches no commands. */
5415
5988
  "empty-text"?: (HelixCommand["emptyText"]) | undefined;
5416
5989
  /** The text shown when the filter matches no commands. */
@@ -5445,6 +6018,12 @@ Empty turns it off, for a consumer who opens the palette from a button or
5445
6018
  from their own shortcut handler. There is no list of defaults to fight
5446
6019
  with: one key, said once. */
5447
6020
  hotkey?: (HelixCommand["hotkey"]) | undefined;
6021
+ /** What the hotkey does, as a list of the page's shortcuts says it, with
6022
+ `{label}` for the palette's `label`. */
6023
+ "hotkey-label"?: (HelixCommand["hotkeyLabel"]) | undefined;
6024
+ /** What the hotkey does, as a list of the page's shortcuts says it, with
6025
+ `{label}` for the palette's `label`. */
6026
+ hotkeyLabel?: (HelixCommand["hotkeyLabel"]) | undefined;
5448
6027
  /** Draws the palette in the page, where it stands, with no dialog: a search
5449
6028
  over a list of commands, as React Aria's Autocomplete is drawn.
5450
6029
 
@@ -5510,6 +6089,9 @@ how many are left, written in the locale, and each language writes the
5510
6089
  forms it has: `{count, plural, one {# polecenie} few {# polecenia} many
5511
6090
  {# poleceń} other {# polecenia}}`. */
5512
6091
  resultsLabel?: (HelixCommand["resultsLabel"]) | undefined;
6092
+ /** Draws a dictation button in the search field, which listens through the
6093
+ page's speech engine and types what it hears, as a field's `voice` does. */
6094
+ voice?: (HelixCommand["voice"]) | undefined;
5513
6095
  /** Whether a command is kept by the filter: a function given the command's
5514
6096
  words and the filter, trimmed, that returns `true` to keep it showing, as
5515
6097
  React Aria's `Autocomplete` takes `filter`. See Listbox's `filterMatch`.
@@ -7703,6 +8285,31 @@ beside its buttons and as each page arrives. `{first}`, `{last}` and
7703
8285
  beside its buttons and as each page arrives. `{first}`, `{last}` and
7704
8286
  `{count}` are replaced with the numbers, written in `locale`. */
7705
8287
  readingsLabel?: (HelixDonutChart["readingsLabel"]) | undefined;
8288
+ /** Draws a Listen button that plays the chart as sound: each series in
8289
+ turn, its readings from left to right and from the left ear to the
8290
+ right, the value as pitch over two octaves, a soft tick at each
8291
+ gridline, and one timbre a series. With it, each reading the arrow keys
8292
+ step to plays its tone beside what the readout says, and L plays the
8293
+ whole chart while it has focus. Escape stops it. Nothing plays without a
8294
+ press, and the sound is made only then. */
8295
+ sonify?: (HelixDonutChart["sonify"]) | undefined;
8296
+ /** How long each series takes to play, in milliseconds or as `3s`. */
8297
+ "sonify-duration"?: (HelixDonutChart["sonifyDuration"] | `${number}`) | undefined;
8298
+ /** How long each series takes to play, in milliseconds or as `3s`. */
8299
+ sonifyDuration?: (HelixDonutChart["sonifyDuration"]) | undefined;
8300
+ /** The Listen button's words. */
8301
+ "sonify-label"?: (HelixDonutChart["sonifyLabel"]) | undefined;
8302
+ /** The Listen button's words. */
8303
+ sonifyLabel?: (HelixDonutChart["sonifyLabel"]) | undefined;
8304
+ /** The Listen button's words while the chart plays. */
8305
+ "sonify-stop-label"?: (HelixDonutChart["sonifyStopLabel"]) | undefined;
8306
+ /** The Listen button's words while the chart plays. */
8307
+ sonifyStopLabel?: (HelixDonutChart["sonifyStopLabel"]) | undefined;
8308
+ /** `visible` draws the chart's text summary under it, as one line.
8309
+ `hidden`, or absent, says the summary to a screen reader and draws it
8310
+ for no one else. Reflected, because the stylesheet draws it by the
8311
+ attribute, and a page that sets the property, as React does, writes none. */
8312
+ summary?: (HelixDonutChart["summary"]) | undefined;
7706
8313
  /** The size of the hole in the middle of the ring.
7707
8314
 
7708
8315
  Absent is a ring with room for a total in it. `small` and `large` move the
@@ -8467,6 +9074,9 @@ export type HelixFilterInputHelixBeforeChangeElementEvent =
8467
9074
  /** `helix-before-close` event type */
8468
9075
  export type HelixFilterInputHelixBeforeCloseElementEvent =
8469
9076
  HelixFilterInputElementEvent<HelixBeforeCloseEvent>;
9077
+ /** `helix-before-listen` event type */
9078
+ export type HelixFilterInputHelixBeforeListenElementEvent =
9079
+ HelixFilterInputElementEvent<HelixBeforeListenEvent>;
8470
9080
  /** `helix-before-open` event type */
8471
9081
  export type HelixFilterInputHelixBeforeOpenElementEvent =
8472
9082
  HelixFilterInputElementEvent<HelixBeforeOpenEvent>;
@@ -8476,11 +9086,35 @@ export type HelixFilterInputHelixDismissElementEvent =
8476
9086
  /** `helix-facet` event type */
8477
9087
  export type HelixFilterInputHelixFacetElementEvent =
8478
9088
  HelixFilterInputElementEvent<HelixFacetEvent>;
9089
+ /** `helix-listen` event type */
9090
+ export type HelixFilterInputHelixListenElementEvent =
9091
+ HelixFilterInputElementEvent<HelixListenEvent>;
8479
9092
  /** `helix-select` event type */
8480
9093
  export type HelixFilterInputHelixSelectElementEvent =
8481
9094
  HelixFilterInputElementEvent<HelixSelectEvent>;
8482
9095
 
8483
9096
  export type HelixFilterInputVueProps = {
9097
+ /** What a screen reader hears as listening starts. */
9098
+ "listening-label"?: (HelixFilterInput["listeningLabel"]) | undefined;
9099
+ /** What a screen reader hears as listening starts. */
9100
+ listeningLabel?: (HelixFilterInput["listeningLabel"]) | undefined;
9101
+ /** What a screen reader hears as listening stops. */
9102
+ "stopped-listening-label"?: (HelixFilterInput["stoppedListeningLabel"]) | undefined;
9103
+ /** What a screen reader hears as listening stops. */
9104
+ stoppedListeningLabel?: (HelixFilterInput["stoppedListeningLabel"]) | undefined;
9105
+ /** Draws a button that listens for dictation and types what it hears at
9106
+ the caret. Nothing listens until the button is pressed, and the
9107
+ microphone is let go as listening stops. An input of type `password`,
9108
+ `email` or `number` draws no button. */
9109
+ voice?: (HelixFilterInput["voice"]) | undefined;
9110
+ /** The dictation button's name while it is not listening. */
9111
+ "voice-label"?: (HelixFilterInput["voiceLabel"]) | undefined;
9112
+ /** The dictation button's name while it is not listening. */
9113
+ voiceLabel?: (HelixFilterInput["voiceLabel"]) | undefined;
9114
+ /** The dictation button's name while it listens. */
9115
+ "voice-stop-label"?: (HelixFilterInput["voiceStopLabel"]) | undefined;
9116
+ /** The dictation button's name while it listens. */
9117
+ voiceStopLabel?: (HelixFilterInput["voiceStopLabel"]) | undefined;
8484
9118
  /** Whether the element starts open. Ignored once `open` is written. */
8485
9119
  "default-open"?: (HelixFilterInput["defaultOpen"]) | undefined;
8486
9120
  /** Whether the element starts open. Ignored once `open` is written. */
@@ -8694,6 +9328,9 @@ imperatively later, and nothing is hydrating by then.
8694
9328
 
8695
9329
  Here rather than on each control. */
8696
9330
  name?: (HelixFilterInput["name"]) | undefined;
9331
+ /** The engine this field listens through, in place of the one
9332
+ `registerSpeechEngine` gave the page, or the browser's own. */
9333
+ speechEngine?: (HelixFilterInput["speechEngine"]) | undefined;
8697
9334
  /** Where the suggestions come from: a function given the term at the caret,
8698
9335
  the field it is a value of, the whole text, and an `AbortSignal`, which
8699
9336
  returns the suggestions or a promise of them. Each is a string, or a
@@ -8712,12 +9349,16 @@ export type HelixFilterInputVueEvents = {
8712
9349
  "helix-before-change": HelixFilterInputHelixBeforeChangeElementEvent;
8713
9350
  /** Fired before the suggestions close. Cancelable: call `preventDefault()` to keep them open. */
8714
9351
  "helix-before-close": HelixFilterInputHelixBeforeCloseElementEvent;
9352
+ /** The dictation button was pressed. Cancelable: cancel it to keep the field from listening. */
9353
+ "helix-before-listen": HelixFilterInputHelixBeforeListenElementEvent;
8715
9354
  /** Fired before the suggestions open. Cancelable: call `preventDefault()` to keep them closed. */
8716
9355
  "helix-before-open": HelixFilterInputHelixBeforeOpenElementEvent;
8717
9356
  /** Fired when the user removes a token with its remove button or with Backspace in an empty field. A `FilterChip` that names a declared field sends `helix-facet` instead. Cancelable: call `preventDefault()` to keep the token. */
8718
9357
  "helix-dismiss": HelixFilterInputHelixDismissElementEvent;
8719
9358
  /** Fired when a filter changes, whether it was typed, picked, or removed. Cancelable: call `preventDefault()` to leave the text and the chip as they were. */
8720
9359
  "helix-facet": HelixFilterInputHelixFacetElementEvent;
9360
+ /** Dictation settled on a phrase and put it in the field, after the field's own `input`. */
9361
+ "helix-listen": HelixFilterInputHelixListenElementEvent;
8721
9362
  /** Fired by an option in `suggestions` when it is chosen, and bubbles out of the field. Cancelable: call `preventDefault()` to stop other listeners acting on it. The field takes no action on an option you slotted, and you decide what it does. A suggestion from `source` is written over the term at the caret unless you cancel it. */
8722
9363
  "helix-select": HelixFilterInputHelixSelectElementEvent;
8723
9364
  /** Fired when the text changes. */
@@ -9551,6 +10192,31 @@ beside its buttons and as each page arrives. `{first}`, `{last}` and
9551
10192
  beside its buttons and as each page arrives. `{first}`, `{last}` and
9552
10193
  `{count}` are replaced with the numbers, written in `locale`. */
9553
10194
  readingsLabel?: (HelixHeatmap["readingsLabel"]) | undefined;
10195
+ /** Draws a Listen button that plays the chart as sound: each series in
10196
+ turn, its readings from left to right and from the left ear to the
10197
+ right, the value as pitch over two octaves, a soft tick at each
10198
+ gridline, and one timbre a series. With it, each reading the arrow keys
10199
+ step to plays its tone beside what the readout says, and L plays the
10200
+ whole chart while it has focus. Escape stops it. Nothing plays without a
10201
+ press, and the sound is made only then. */
10202
+ sonify?: (HelixHeatmap["sonify"]) | undefined;
10203
+ /** How long each series takes to play, in milliseconds or as `3s`. */
10204
+ "sonify-duration"?: (HelixHeatmap["sonifyDuration"] | `${number}`) | undefined;
10205
+ /** How long each series takes to play, in milliseconds or as `3s`. */
10206
+ sonifyDuration?: (HelixHeatmap["sonifyDuration"]) | undefined;
10207
+ /** The Listen button's words. */
10208
+ "sonify-label"?: (HelixHeatmap["sonifyLabel"]) | undefined;
10209
+ /** The Listen button's words. */
10210
+ sonifyLabel?: (HelixHeatmap["sonifyLabel"]) | undefined;
10211
+ /** The Listen button's words while the chart plays. */
10212
+ "sonify-stop-label"?: (HelixHeatmap["sonifyStopLabel"]) | undefined;
10213
+ /** The Listen button's words while the chart plays. */
10214
+ sonifyStopLabel?: (HelixHeatmap["sonifyStopLabel"]) | undefined;
10215
+ /** `visible` draws the chart's text summary under it, as one line.
10216
+ `hidden`, or absent, says the summary to a screen reader and draws it
10217
+ for no one else. Reflected, because the stylesheet draws it by the
10218
+ attribute, and a page that sets the property, as React does, writes none. */
10219
+ summary?: (HelixHeatmap["summary"]) | undefined;
9554
10220
  /** The name the `overview` gives the busiest reading, `{busiestLabel}` in
9555
10221
  `overview-label`. */
9556
10222
  "busiest-label"?: (HelixHeatmap["busiestLabel"]) | undefined;
@@ -10163,11 +10829,38 @@ export type HelixInputElementEvent<E = Event> = TypedEvent<HelixInput, E>;
10163
10829
  /** `helix-before-change` event type */
10164
10830
  export type HelixInputHelixBeforeChangeElementEvent =
10165
10831
  HelixInputElementEvent<HelixBeforeChangeEvent>;
10832
+ /** `helix-before-listen` event type */
10833
+ export type HelixInputHelixBeforeListenElementEvent =
10834
+ HelixInputElementEvent<HelixBeforeListenEvent>;
10166
10835
  /** `helix-clear` event type */
10167
10836
  export type HelixInputHelixClearElementEvent =
10168
10837
  HelixInputElementEvent<HelixClearEvent>;
10838
+ /** `helix-listen` event type */
10839
+ export type HelixInputHelixListenElementEvent =
10840
+ HelixInputElementEvent<HelixListenEvent>;
10169
10841
 
10170
10842
  export type HelixInputVueProps = {
10843
+ /** What a screen reader hears as listening starts. */
10844
+ "listening-label"?: (HelixInput["listeningLabel"]) | undefined;
10845
+ /** What a screen reader hears as listening starts. */
10846
+ listeningLabel?: (HelixInput["listeningLabel"]) | undefined;
10847
+ /** What a screen reader hears as listening stops. */
10848
+ "stopped-listening-label"?: (HelixInput["stoppedListeningLabel"]) | undefined;
10849
+ /** What a screen reader hears as listening stops. */
10850
+ stoppedListeningLabel?: (HelixInput["stoppedListeningLabel"]) | undefined;
10851
+ /** Draws a button that listens for dictation and types what it hears at
10852
+ the caret. Nothing listens until the button is pressed, and the
10853
+ microphone is let go as listening stops. An input of type `password`,
10854
+ `email` or `number` draws no button. */
10855
+ voice?: (HelixInput["voice"]) | undefined;
10856
+ /** The dictation button's name while it is not listening. */
10857
+ "voice-label"?: (HelixInput["voiceLabel"]) | undefined;
10858
+ /** The dictation button's name while it is not listening. */
10859
+ voiceLabel?: (HelixInput["voiceLabel"]) | undefined;
10860
+ /** The dictation button's name while it listens. */
10861
+ "voice-stop-label"?: (HelixInput["voiceStopLabel"]) | undefined;
10862
+ /** The dictation button's name while it listens. */
10863
+ voiceStopLabel?: (HelixInput["voiceStopLabel"]) | undefined;
10171
10864
  /** The value the control starts with. A form reset returns it to this value,
10172
10865
  and to the `value` attribute where this one is not written, as a native
10173
10866
  control resets to the `value` it declares. */
@@ -10366,6 +11059,9 @@ imperatively later, and nothing is hydrating by then.
10366
11059
 
10367
11060
  Here rather than on each control. */
10368
11061
  name?: (HelixInput["name"]) | undefined;
11062
+ /** The engine this field listens through, in place of the one
11063
+ `registerSpeechEngine` gave the page, or the browser's own. */
11064
+ speechEngine?: (HelixInput["speechEngine"]) | undefined;
10369
11065
  /** The direction of the selection, as the native input names it.
10370
11066
 
10371
11067
  The `<input>` is inside this shadow root, so a consumer had no way to ask
@@ -10393,8 +11089,12 @@ export type HelixInputVueEvents = {
10393
11089
  change: HelixInputElementEvent;
10394
11090
  /** The text is about to change. Cancelable: cancel it to keep the current text. */
10395
11091
  "helix-before-change": HelixInputHelixBeforeChangeElementEvent;
11092
+ /** The dictation button was pressed. Cancelable: cancel it to keep the field from listening. */
11093
+ "helix-before-listen": HelixInputHelixBeforeListenElementEvent;
10396
11094
  /** Fired after the clear button has emptied the field, after `input` and `change`. */
10397
11095
  "helix-clear": HelixInputHelixClearElementEvent;
11096
+ /** Dictation settled on a phrase and put it in the value, after the field's own `input`. */
11097
+ "helix-listen": HelixInputHelixListenElementEvent;
10398
11098
  /** Fired as the value changes. */
10399
11099
  input: HelixInputElementEvent;
10400
11100
  };
@@ -10934,6 +11634,31 @@ beside its buttons and as each page arrives. `{first}`, `{last}` and
10934
11634
  beside its buttons and as each page arrives. `{first}`, `{last}` and
10935
11635
  `{count}` are replaced with the numbers, written in `locale`. */
10936
11636
  readingsLabel?: (HelixLineChart["readingsLabel"]) | undefined;
11637
+ /** Draws a Listen button that plays the chart as sound: each series in
11638
+ turn, its readings from left to right and from the left ear to the
11639
+ right, the value as pitch over two octaves, a soft tick at each
11640
+ gridline, and one timbre a series. With it, each reading the arrow keys
11641
+ step to plays its tone beside what the readout says, and L plays the
11642
+ whole chart while it has focus. Escape stops it. Nothing plays without a
11643
+ press, and the sound is made only then. */
11644
+ sonify?: (HelixLineChart["sonify"]) | undefined;
11645
+ /** How long each series takes to play, in milliseconds or as `3s`. */
11646
+ "sonify-duration"?: (HelixLineChart["sonifyDuration"] | `${number}`) | undefined;
11647
+ /** How long each series takes to play, in milliseconds or as `3s`. */
11648
+ sonifyDuration?: (HelixLineChart["sonifyDuration"]) | undefined;
11649
+ /** The Listen button's words. */
11650
+ "sonify-label"?: (HelixLineChart["sonifyLabel"]) | undefined;
11651
+ /** The Listen button's words. */
11652
+ sonifyLabel?: (HelixLineChart["sonifyLabel"]) | undefined;
11653
+ /** The Listen button's words while the chart plays. */
11654
+ "sonify-stop-label"?: (HelixLineChart["sonifyStopLabel"]) | undefined;
11655
+ /** The Listen button's words while the chart plays. */
11656
+ sonifyStopLabel?: (HelixLineChart["sonifyStopLabel"]) | undefined;
11657
+ /** `visible` draws the chart's text summary under it, as one line.
11658
+ `hidden`, or absent, says the summary to a screen reader and draws it
11659
+ for no one else. Reflected, because the stylesheet draws it by the
11660
+ attribute, and a page that sets the property, as React does, writes none. */
11661
+ summary?: (HelixLineChart["summary"]) | undefined;
10937
11662
  /** Draws a wash under each line, down to the floor of the plot. The washes
10938
11663
  overlap and do not add up, so for parts that make a total, use
10939
11664
  `Area Chart`, which stacks them.
@@ -11337,12 +12062,18 @@ export type HelixListboxElementEvent<E = Event> = TypedEvent<HelixListbox, E>;
11337
12062
  /** `helix-before-change` event type */
11338
12063
  export type HelixListboxHelixBeforeChangeElementEvent =
11339
12064
  HelixListboxElementEvent<HelixBeforeChangeEvent>;
12065
+ /** `helix-before-listen` event type */
12066
+ export type HelixListboxHelixBeforeListenElementEvent =
12067
+ HelixListboxElementEvent<HelixBeforeListenEvent>;
11340
12068
  /** `helix-before-reorder` event type */
11341
12069
  export type HelixListboxHelixBeforeReorderElementEvent =
11342
12070
  HelixListboxElementEvent<HelixBeforeReorderEvent>;
11343
12071
  /** `helix-filter` event type */
11344
12072
  export type HelixListboxHelixFilterElementEvent =
11345
12073
  HelixListboxElementEvent<HelixFilterEvent>;
12074
+ /** `helix-listen` event type */
12075
+ export type HelixListboxHelixListenElementEvent =
12076
+ HelixListboxElementEvent<HelixListenEvent>;
11346
12077
  /** `helix-load-more` event type */
11347
12078
  export type HelixListboxHelixLoadMoreElementEvent =
11348
12079
  HelixListboxElementEvent<HelixLoadMoreEvent>;
@@ -11351,6 +12082,27 @@ export type HelixListboxHelixReorderElementEvent =
11351
12082
  HelixListboxElementEvent<HelixReorderEvent>;
11352
12083
 
11353
12084
  export type HelixListboxVueProps = {
12085
+ /** What a screen reader hears as listening starts. */
12086
+ "listening-label"?: (HelixListbox["listeningLabel"]) | undefined;
12087
+ /** What a screen reader hears as listening starts. */
12088
+ listeningLabel?: (HelixListbox["listeningLabel"]) | undefined;
12089
+ /** What a screen reader hears as listening stops. */
12090
+ "stopped-listening-label"?: (HelixListbox["stoppedListeningLabel"]) | undefined;
12091
+ /** What a screen reader hears as listening stops. */
12092
+ stoppedListeningLabel?: (HelixListbox["stoppedListeningLabel"]) | undefined;
12093
+ /** Draws a button that listens for dictation and types what it hears at
12094
+ the caret. Nothing listens until the button is pressed, and the
12095
+ microphone is let go as listening stops. An input of type `password`,
12096
+ `email` or `number` draws no button. */
12097
+ voice?: (HelixListbox["voice"]) | undefined;
12098
+ /** The dictation button's name while it is not listening. */
12099
+ "voice-label"?: (HelixListbox["voiceLabel"]) | undefined;
12100
+ /** The dictation button's name while it is not listening. */
12101
+ voiceLabel?: (HelixListbox["voiceLabel"]) | undefined;
12102
+ /** The dictation button's name while it listens. */
12103
+ "voice-stop-label"?: (HelixListbox["voiceStopLabel"]) | undefined;
12104
+ /** The dictation button's name while it listens. */
12105
+ voiceStopLabel?: (HelixListbox["voiceStopLabel"]) | undefined;
11354
12106
  /** The text shown and announced when there are no rows and none are loading. */
11355
12107
  "empty-text"?: (HelixListbox["emptyText"]) | undefined;
11356
12108
  /** The text shown and announced when there are no rows and none are loading. */
@@ -11580,6 +12332,9 @@ imperatively later, and nothing is hydrating by then.
11580
12332
 
11581
12333
  Here rather than on each control. */
11582
12334
  name?: (HelixListbox["name"]) | undefined;
12335
+ /** The engine this field listens through, in place of the one
12336
+ `registerSpeechEngine` gave the page, or the browser's own. */
12337
+ speechEngine?: (HelixListbox["speechEngine"]) | undefined;
11583
12338
  /** Whether an option is kept by the filter: a function given the option's
11584
12339
  words and the filter, trimmed, that returns `true` to keep it showing, as
11585
12340
  React Aria's `Autocomplete` takes `filter`. For matching that ignores
@@ -11624,10 +12379,14 @@ export type HelixListboxVueEvents = {
11624
12379
  change: HelixListboxElementEvent;
11625
12380
  /** Fired when the value is about to change, and cancelable. */
11626
12381
  "helix-before-change": HelixListboxHelixBeforeChangeElementEvent;
12382
+ /** The dictation button was pressed. Cancelable: cancel it to keep the field from listening. */
12383
+ "helix-before-listen": HelixListboxHelixBeforeListenElementEvent;
11627
12384
  /** Fired when an option is dropped at a new place, in a `reorderable` list with `@fusion.dev/helix/listbox/reorder` imported, with every value in the new order. Cancelable: cancel it to keep the option where it is. */
11628
12385
  "helix-before-reorder": HelixListboxHelixBeforeReorderElementEvent;
11629
12386
  /** Fired before the list is filtered, and cancelable. */
11630
12387
  "helix-filter": HelixListboxHelixFilterElementEvent;
12388
+ /** Dictation settled on a phrase and put it in the search field, after the field's own `input`. */
12389
+ "helix-listen": HelixListboxHelixListenElementEvent;
11631
12390
  /** Fired once the list is scrolled within a screen of its end, once for each number of options, and not while `loading` is set. Add the next page of options and set `loading` while you fetch it. */
11632
12391
  "helix-load-more": HelixListboxHelixLoadMoreElementEvent;
11633
12392
  /** Fired after `helix-before-reorder` when nobody canceled it. Move your options, or your `items`, to the order in `keys`. Cancelable: cancel it to say the move did not happen. */
@@ -12739,6 +13498,39 @@ export type HelixMapTerrainVueEvents = {
12739
13498
  "helix-map-part-change": HelixMapTerrainHelixMapPartChangeElementEvent;
12740
13499
  };
12741
13500
 
13501
+ export type HelixMarkdownVueProps = {
13502
+ /** The heading of a `> [!CAUTION]` alert. */
13503
+ "caution-heading"?: (HelixMarkdown["cautionHeading"]) | undefined;
13504
+ /** The heading of a `> [!CAUTION]` alert. */
13505
+ cautionHeading?: (HelixMarkdown["cautionHeading"]) | undefined;
13506
+ /** The heading of a `> [!IMPORTANT]` alert. */
13507
+ "important-heading"?: (HelixMarkdown["importantHeading"]) | undefined;
13508
+ /** The heading of a `> [!IMPORTANT]` alert. */
13509
+ importantHeading?: (HelixMarkdown["importantHeading"]) | undefined;
13510
+ /** The heading of a `> [!NOTE]` alert. */
13511
+ "note-heading"?: (HelixMarkdown["noteHeading"]) | undefined;
13512
+ /** The heading of a `> [!NOTE]` alert. */
13513
+ noteHeading?: (HelixMarkdown["noteHeading"]) | undefined;
13514
+ /** Whether more text is coming. While it is set, the end of `text` is read
13515
+ as a block still arriving, and the element is busy to assistive
13516
+ technology. Clear it when the reply ends, and the last block is read as
13517
+ finished. */
13518
+ streaming?: (HelixMarkdown["streaming"]) | undefined;
13519
+ /** The Markdown. Set it to the whole reply so far each time more arrives: a
13520
+ text that starts with the one before is drawn by its new end alone. */
13521
+ text?: (HelixMarkdown["text"]) | undefined;
13522
+ /** The heading of a `> [!TIP]` alert. */
13523
+ "tip-heading"?: (HelixMarkdown["tipHeading"]) | undefined;
13524
+ /** The heading of a `> [!TIP]` alert. */
13525
+ tipHeading?: (HelixMarkdown["tipHeading"]) | undefined;
13526
+ /** The heading of a `> [!WARNING]` alert. */
13527
+ "warning-heading"?: (HelixMarkdown["warningHeading"]) | undefined;
13528
+ /** The heading of a `> [!WARNING]` alert. */
13529
+ warningHeading?: (HelixMarkdown["warningHeading"]) | undefined;
13530
+ };
13531
+
13532
+ export type HelixMarkdownVueEvents = {};
13533
+
12742
13534
  /** `HelixMegamenu` component event */
12743
13535
  export type HelixMegamenuElementEvent<E = Event> = TypedEvent<HelixMegamenu, E>;
12744
13536
  /** `toggle` event type */
@@ -13070,6 +13862,12 @@ which import is missing. */
13070
13862
  "filter-label"?: (HelixMenu["filterLabel"]) | undefined;
13071
13863
  /** The filter field's name and placeholder. */
13072
13864
  filterLabel?: (HelixMenu["filterLabel"]) | undefined;
13865
+ /** With `context`, the id of an area outside the menu whose context menu
13866
+ this is, for one menu that serves a region the page draws elsewhere, such
13867
+ as a table. A right-click, a long press, Shift+F10 or the menu key there
13868
+ opens it, as on the `trigger` slot's area. Names an element in the same
13869
+ tree, the way `Tooltip.for` does. */
13870
+ for?: (HelixMenu["for"]) | undefined;
13073
13871
  /** Accessible name for the surface.
13074
13872
 
13075
13873
  Empty by default, which names the surface by its trigger, so a menu opened
@@ -13111,6 +13909,10 @@ the forms it has, as Listbox's `results-label` does. */
13111
13909
  /** How a submenu opens. `drill` shows it in place of the page showing, with
13112
13910
  a way back. `flyout` opens it in a panel of its own beside its row. */
13113
13911
  submenus?: (HelixMenu["submenus"]) | undefined;
13912
+ /** With `context`, a selector for the things in the area a menu is about,
13913
+ such as `tr` for a table's rows. A request over one opens the menu with it
13914
+ as `contextTarget`, and a request over none of them is left to the page. */
13915
+ targets?: (HelixMenu["targets"]) | undefined;
13114
13916
  /** Whether a row is kept by the filter: a function given the row's words and
13115
13917
  the filter, trimmed, that returns `true` to keep it showing, as React
13116
13918
  Aria's `Autocomplete` takes `filter`. See Listbox's `filterMatch`.
@@ -13118,6 +13920,11 @@ Aria's `Autocomplete` takes `filter`. See Listbox's `filterMatch`.
13118
13920
  Absent, a row is kept where its words hold the filter, in any case. A
13119
13921
  property only, there being no way to write a function in markup. */
13120
13922
  filterMatch?: (HelixMenu["filterMatch"]) | undefined;
13923
+ /** The thing the open context menu is about: the element of `targets` the
13924
+ reader asked over, the area where there are no `targets`, or what
13925
+ `showAt` was given. Set before `helix-before-open`, so a listener can
13926
+ change the rows for it, and kept until the menu next opens. */
13927
+ contextTarget?: (HelixMenu["contextTarget"]) | undefined;
13121
13928
  /** The values of the choice rows that are checked, anywhere in the menu, in
13122
13929
  document order.
13123
13930
 
@@ -16380,6 +17187,31 @@ beside its buttons and as each page arrives. `{first}`, `{last}` and
16380
17187
  beside its buttons and as each page arrives. `{first}`, `{last}` and
16381
17188
  `{count}` are replaced with the numbers, written in `locale`. */
16382
17189
  readingsLabel?: (HelixScatterChart["readingsLabel"]) | undefined;
17190
+ /** Draws a Listen button that plays the chart as sound: each series in
17191
+ turn, its readings from left to right and from the left ear to the
17192
+ right, the value as pitch over two octaves, a soft tick at each
17193
+ gridline, and one timbre a series. With it, each reading the arrow keys
17194
+ step to plays its tone beside what the readout says, and L plays the
17195
+ whole chart while it has focus. Escape stops it. Nothing plays without a
17196
+ press, and the sound is made only then. */
17197
+ sonify?: (HelixScatterChart["sonify"]) | undefined;
17198
+ /** How long each series takes to play, in milliseconds or as `3s`. */
17199
+ "sonify-duration"?: (HelixScatterChart["sonifyDuration"] | `${number}`) | undefined;
17200
+ /** How long each series takes to play, in milliseconds or as `3s`. */
17201
+ sonifyDuration?: (HelixScatterChart["sonifyDuration"]) | undefined;
17202
+ /** The Listen button's words. */
17203
+ "sonify-label"?: (HelixScatterChart["sonifyLabel"]) | undefined;
17204
+ /** The Listen button's words. */
17205
+ sonifyLabel?: (HelixScatterChart["sonifyLabel"]) | undefined;
17206
+ /** The Listen button's words while the chart plays. */
17207
+ "sonify-stop-label"?: (HelixScatterChart["sonifyStopLabel"]) | undefined;
17208
+ /** The Listen button's words while the chart plays. */
17209
+ sonifyStopLabel?: (HelixScatterChart["sonifyStopLabel"]) | undefined;
17210
+ /** `visible` draws the chart's text summary under it, as one line.
17211
+ `hidden`, or absent, says the summary to a screen reader and draws it
17212
+ for no one else. Reflected, because the stylesheet draws it by the
17213
+ attribute, and a page that sets the property, as React does, writes none. */
17214
+ summary?: (HelixScatterChart["summary"]) | undefined;
16383
17215
  /** The word for the strength of the relation, `{correlationLabel}` in
16384
17216
  `series-label`. */
16385
17217
  "correlation-label"?: (HelixScatterChart["correlationLabel"]) | undefined;
@@ -16792,6 +17624,30 @@ export type HelixSelectVueEvents = {
16792
17624
  input: HelixSelectElementEvent;
16793
17625
  };
16794
17626
 
17627
+ export type HelixShortcutOverlayVueProps = {
17628
+ /** How long the key is held before the badges show, in milliseconds or as `0.6s`. */
17629
+ delay?: (HelixShortcutOverlay["delay"]) | undefined;
17630
+ /** What the sheet says when the page has no shortcuts. */
17631
+ "empty-label"?: (HelixShortcutOverlay["emptyLabel"]) | undefined;
17632
+ /** What the sheet says when the page has no shortcuts. */
17633
+ emptyLabel?: (HelixShortcutOverlay["emptyLabel"]) | undefined;
17634
+ /** The key a reader holds: `mod` (Command on an Apple keyboard, Control
17635
+ elsewhere), `alt`, `ctrl`, or `shift`. */
17636
+ hold?: (HelixShortcutOverlay["hold"]) | undefined;
17637
+ /** The sheet's name and heading. */
17638
+ label?: (HelixShortcutOverlay["label"]) | undefined;
17639
+ /** The chord that opens the sheet, `?` by default, which a press in a text
17640
+ field never answers. Empty leaves the key to the page, which wants it
17641
+ where the page already answers `?` itself. */
17642
+ "sheet-keys"?: (HelixShortcutOverlay["sheetKeys"]) | undefined;
17643
+ /** The chord that opens the sheet, `?` by default, which a press in a text
17644
+ field never answers. Empty leaves the key to the page, which wants it
17645
+ where the page already answers `?` itself. */
17646
+ sheetKeys?: (HelixShortcutOverlay["sheetKeys"]) | undefined;
17647
+ };
17648
+
17649
+ export type HelixShortcutOverlayVueEvents = {};
17650
+
16795
17651
  export type HelixSkeletonVueProps = {
16796
17652
  /** How the placeholder shows it is waiting: a sweep when unset, `pulse` to
16797
17653
  fade the fill in and out, or `none` to sit still.
@@ -17414,6 +18270,31 @@ beside its buttons and as each page arrives. `{first}`, `{last}` and
17414
18270
  beside its buttons and as each page arrives. `{first}`, `{last}` and
17415
18271
  `{count}` are replaced with the numbers, written in `locale`. */
17416
18272
  readingsLabel?: (HelixSpatialBarChart["readingsLabel"]) | undefined;
18273
+ /** Draws a Listen button that plays the chart as sound: each series in
18274
+ turn, its readings from left to right and from the left ear to the
18275
+ right, the value as pitch over two octaves, a soft tick at each
18276
+ gridline, and one timbre a series. With it, each reading the arrow keys
18277
+ step to plays its tone beside what the readout says, and L plays the
18278
+ whole chart while it has focus. Escape stops it. Nothing plays without a
18279
+ press, and the sound is made only then. */
18280
+ sonify?: (HelixSpatialBarChart["sonify"]) | undefined;
18281
+ /** How long each series takes to play, in milliseconds or as `3s`. */
18282
+ "sonify-duration"?: (HelixSpatialBarChart["sonifyDuration"] | `${number}`) | undefined;
18283
+ /** How long each series takes to play, in milliseconds or as `3s`. */
18284
+ sonifyDuration?: (HelixSpatialBarChart["sonifyDuration"]) | undefined;
18285
+ /** The Listen button's words. */
18286
+ "sonify-label"?: (HelixSpatialBarChart["sonifyLabel"]) | undefined;
18287
+ /** The Listen button's words. */
18288
+ sonifyLabel?: (HelixSpatialBarChart["sonifyLabel"]) | undefined;
18289
+ /** The Listen button's words while the chart plays. */
18290
+ "sonify-stop-label"?: (HelixSpatialBarChart["sonifyStopLabel"]) | undefined;
18291
+ /** The Listen button's words while the chart plays. */
18292
+ sonifyStopLabel?: (HelixSpatialBarChart["sonifyStopLabel"]) | undefined;
18293
+ /** `visible` draws the chart's text summary under it, as one line.
18294
+ `hidden`, or absent, says the summary to a screen reader and draws it
18295
+ for no one else. Reflected, because the stylesheet draws it by the
18296
+ attribute, and a page that sets the property, as React does, writes none. */
18297
+ summary?: (HelixSpatialBarChart["summary"]) | undefined;
17417
18298
  /** Draws no box: no edges, grid, numbers, or names, so the readings stand
17418
18299
  alone and fill the plot, as a picture on a product's own page does. The
17419
18300
  table, the summary, the tooltip, and the keys still carry every value,
@@ -17601,6 +18482,31 @@ beside its buttons and as each page arrives. `{first}`, `{last}` and
17601
18482
  beside its buttons and as each page arrives. `{first}`, `{last}` and
17602
18483
  `{count}` are replaced with the numbers, written in `locale`. */
17603
18484
  readingsLabel?: (HelixSpatialHeatmap["readingsLabel"]) | undefined;
18485
+ /** Draws a Listen button that plays the chart as sound: each series in
18486
+ turn, its readings from left to right and from the left ear to the
18487
+ right, the value as pitch over two octaves, a soft tick at each
18488
+ gridline, and one timbre a series. With it, each reading the arrow keys
18489
+ step to plays its tone beside what the readout says, and L plays the
18490
+ whole chart while it has focus. Escape stops it. Nothing plays without a
18491
+ press, and the sound is made only then. */
18492
+ sonify?: (HelixSpatialHeatmap["sonify"]) | undefined;
18493
+ /** How long each series takes to play, in milliseconds or as `3s`. */
18494
+ "sonify-duration"?: (HelixSpatialHeatmap["sonifyDuration"] | `${number}`) | undefined;
18495
+ /** How long each series takes to play, in milliseconds or as `3s`. */
18496
+ sonifyDuration?: (HelixSpatialHeatmap["sonifyDuration"]) | undefined;
18497
+ /** The Listen button's words. */
18498
+ "sonify-label"?: (HelixSpatialHeatmap["sonifyLabel"]) | undefined;
18499
+ /** The Listen button's words. */
18500
+ sonifyLabel?: (HelixSpatialHeatmap["sonifyLabel"]) | undefined;
18501
+ /** The Listen button's words while the chart plays. */
18502
+ "sonify-stop-label"?: (HelixSpatialHeatmap["sonifyStopLabel"]) | undefined;
18503
+ /** The Listen button's words while the chart plays. */
18504
+ sonifyStopLabel?: (HelixSpatialHeatmap["sonifyStopLabel"]) | undefined;
18505
+ /** `visible` draws the chart's text summary under it, as one line.
18506
+ `hidden`, or absent, says the summary to a screen reader and draws it
18507
+ for no one else. Reflected, because the stylesheet draws it by the
18508
+ attribute, and a page that sets the property, as React does, writes none. */
18509
+ summary?: (HelixSpatialHeatmap["summary"]) | undefined;
17604
18510
  /** The name the `overview` gives the busiest reading, `{busiestLabel}` in
17605
18511
  `overview-label`. */
17606
18512
  "busiest-label"?: (HelixSpatialHeatmap["busiestLabel"]) | undefined;
@@ -17885,6 +18791,31 @@ beside its buttons and as each page arrives. `{first}`, `{last}` and
17885
18791
  beside its buttons and as each page arrives. `{first}`, `{last}` and
17886
18792
  `{count}` are replaced with the numbers, written in `locale`. */
17887
18793
  readingsLabel?: (HelixSpatialRibbonChart["readingsLabel"]) | undefined;
18794
+ /** Draws a Listen button that plays the chart as sound: each series in
18795
+ turn, its readings from left to right and from the left ear to the
18796
+ right, the value as pitch over two octaves, a soft tick at each
18797
+ gridline, and one timbre a series. With it, each reading the arrow keys
18798
+ step to plays its tone beside what the readout says, and L plays the
18799
+ whole chart while it has focus. Escape stops it. Nothing plays without a
18800
+ press, and the sound is made only then. */
18801
+ sonify?: (HelixSpatialRibbonChart["sonify"]) | undefined;
18802
+ /** How long each series takes to play, in milliseconds or as `3s`. */
18803
+ "sonify-duration"?: (HelixSpatialRibbonChart["sonifyDuration"] | `${number}`) | undefined;
18804
+ /** How long each series takes to play, in milliseconds or as `3s`. */
18805
+ sonifyDuration?: (HelixSpatialRibbonChart["sonifyDuration"]) | undefined;
18806
+ /** The Listen button's words. */
18807
+ "sonify-label"?: (HelixSpatialRibbonChart["sonifyLabel"]) | undefined;
18808
+ /** The Listen button's words. */
18809
+ sonifyLabel?: (HelixSpatialRibbonChart["sonifyLabel"]) | undefined;
18810
+ /** The Listen button's words while the chart plays. */
18811
+ "sonify-stop-label"?: (HelixSpatialRibbonChart["sonifyStopLabel"]) | undefined;
18812
+ /** The Listen button's words while the chart plays. */
18813
+ sonifyStopLabel?: (HelixSpatialRibbonChart["sonifyStopLabel"]) | undefined;
18814
+ /** `visible` draws the chart's text summary under it, as one line.
18815
+ `hidden`, or absent, says the summary to a screen reader and draws it
18816
+ for no one else. Reflected, because the stylesheet draws it by the
18817
+ attribute, and a page that sets the property, as React does, writes none. */
18818
+ summary?: (HelixSpatialRibbonChart["summary"]) | undefined;
17888
18819
  /** Draws no box: no edges, grid, numbers, or names, so the readings stand
17889
18820
  alone and fill the plot, as a picture on a product's own page does. The
17890
18821
  table, the summary, the tooltip, and the keys still carry every value,
@@ -18060,6 +18991,31 @@ beside its buttons and as each page arrives. `{first}`, `{last}` and
18060
18991
  beside its buttons and as each page arrives. `{first}`, `{last}` and
18061
18992
  `{count}` are replaced with the numbers, written in `locale`. */
18062
18993
  readingsLabel?: (HelixSpatialScatterChart["readingsLabel"]) | undefined;
18994
+ /** Draws a Listen button that plays the chart as sound: each series in
18995
+ turn, its readings from left to right and from the left ear to the
18996
+ right, the value as pitch over two octaves, a soft tick at each
18997
+ gridline, and one timbre a series. With it, each reading the arrow keys
18998
+ step to plays its tone beside what the readout says, and L plays the
18999
+ whole chart while it has focus. Escape stops it. Nothing plays without a
19000
+ press, and the sound is made only then. */
19001
+ sonify?: (HelixSpatialScatterChart["sonify"]) | undefined;
19002
+ /** How long each series takes to play, in milliseconds or as `3s`. */
19003
+ "sonify-duration"?: (HelixSpatialScatterChart["sonifyDuration"] | `${number}`) | undefined;
19004
+ /** How long each series takes to play, in milliseconds or as `3s`. */
19005
+ sonifyDuration?: (HelixSpatialScatterChart["sonifyDuration"]) | undefined;
19006
+ /** The Listen button's words. */
19007
+ "sonify-label"?: (HelixSpatialScatterChart["sonifyLabel"]) | undefined;
19008
+ /** The Listen button's words. */
19009
+ sonifyLabel?: (HelixSpatialScatterChart["sonifyLabel"]) | undefined;
19010
+ /** The Listen button's words while the chart plays. */
19011
+ "sonify-stop-label"?: (HelixSpatialScatterChart["sonifyStopLabel"]) | undefined;
19012
+ /** The Listen button's words while the chart plays. */
19013
+ sonifyStopLabel?: (HelixSpatialScatterChart["sonifyStopLabel"]) | undefined;
19014
+ /** `visible` draws the chart's text summary under it, as one line.
19015
+ `hidden`, or absent, says the summary to a screen reader and draws it
19016
+ for no one else. Reflected, because the stylesheet draws it by the
19017
+ attribute, and a page that sets the property, as React does, writes none. */
19018
+ summary?: (HelixSpatialScatterChart["summary"]) | undefined;
18063
19019
  /** Draws a line from each point straight down to the floor of the box, in
18064
19020
  its group's color, so where a point stands across and in depth reads off
18065
19021
  the floor's grid. A renderer draws them too. */
@@ -18241,6 +19197,31 @@ beside its buttons and as each page arrives. `{first}`, `{last}` and
18241
19197
  beside its buttons and as each page arrives. `{first}`, `{last}` and
18242
19198
  `{count}` are replaced with the numbers, written in `locale`. */
18243
19199
  readingsLabel?: (HelixSpatialSurfaceChart["readingsLabel"]) | undefined;
19200
+ /** Draws a Listen button that plays the chart as sound: each series in
19201
+ turn, its readings from left to right and from the left ear to the
19202
+ right, the value as pitch over two octaves, a soft tick at each
19203
+ gridline, and one timbre a series. With it, each reading the arrow keys
19204
+ step to plays its tone beside what the readout says, and L plays the
19205
+ whole chart while it has focus. Escape stops it. Nothing plays without a
19206
+ press, and the sound is made only then. */
19207
+ sonify?: (HelixSpatialSurfaceChart["sonify"]) | undefined;
19208
+ /** How long each series takes to play, in milliseconds or as `3s`. */
19209
+ "sonify-duration"?: (HelixSpatialSurfaceChart["sonifyDuration"] | `${number}`) | undefined;
19210
+ /** How long each series takes to play, in milliseconds or as `3s`. */
19211
+ sonifyDuration?: (HelixSpatialSurfaceChart["sonifyDuration"]) | undefined;
19212
+ /** The Listen button's words. */
19213
+ "sonify-label"?: (HelixSpatialSurfaceChart["sonifyLabel"]) | undefined;
19214
+ /** The Listen button's words. */
19215
+ sonifyLabel?: (HelixSpatialSurfaceChart["sonifyLabel"]) | undefined;
19216
+ /** The Listen button's words while the chart plays. */
19217
+ "sonify-stop-label"?: (HelixSpatialSurfaceChart["sonifyStopLabel"]) | undefined;
19218
+ /** The Listen button's words while the chart plays. */
19219
+ sonifyStopLabel?: (HelixSpatialSurfaceChart["sonifyStopLabel"]) | undefined;
19220
+ /** `visible` draws the chart's text summary under it, as one line.
19221
+ `hidden`, or absent, says the summary to a screen reader and draws it
19222
+ for no one else. Reflected, because the stylesheet draws it by the
19223
+ attribute, and a page that sets the property, as React does, writes none. */
19224
+ summary?: (HelixSpatialSurfaceChart["summary"]) | undefined;
18244
19225
  /** Draws the surface's contour lines on it, at each tick of its height, in
18245
19226
  the ramp's colors, so its shape reads as on a map and two places at the
18246
19227
  same height read as such. A renderer draws them too. */
@@ -18425,6 +19406,31 @@ beside its buttons and as each page arrives. `{first}`, `{last}` and
18425
19406
  beside its buttons and as each page arrives. `{first}`, `{last}` and
18426
19407
  `{count}` are replaced with the numbers, written in `locale`. */
18427
19408
  readingsLabel?: (HelixSpatialTreemap["readingsLabel"]) | undefined;
19409
+ /** Draws a Listen button that plays the chart as sound: each series in
19410
+ turn, its readings from left to right and from the left ear to the
19411
+ right, the value as pitch over two octaves, a soft tick at each
19412
+ gridline, and one timbre a series. With it, each reading the arrow keys
19413
+ step to plays its tone beside what the readout says, and L plays the
19414
+ whole chart while it has focus. Escape stops it. Nothing plays without a
19415
+ press, and the sound is made only then. */
19416
+ sonify?: (HelixSpatialTreemap["sonify"]) | undefined;
19417
+ /** How long each series takes to play, in milliseconds or as `3s`. */
19418
+ "sonify-duration"?: (HelixSpatialTreemap["sonifyDuration"] | `${number}`) | undefined;
19419
+ /** How long each series takes to play, in milliseconds or as `3s`. */
19420
+ sonifyDuration?: (HelixSpatialTreemap["sonifyDuration"]) | undefined;
19421
+ /** The Listen button's words. */
19422
+ "sonify-label"?: (HelixSpatialTreemap["sonifyLabel"]) | undefined;
19423
+ /** The Listen button's words. */
19424
+ sonifyLabel?: (HelixSpatialTreemap["sonifyLabel"]) | undefined;
19425
+ /** The Listen button's words while the chart plays. */
19426
+ "sonify-stop-label"?: (HelixSpatialTreemap["sonifyStopLabel"]) | undefined;
19427
+ /** The Listen button's words while the chart plays. */
19428
+ sonifyStopLabel?: (HelixSpatialTreemap["sonifyStopLabel"]) | undefined;
19429
+ /** `visible` draws the chart's text summary under it, as one line.
19430
+ `hidden`, or absent, says the summary to a screen reader and draws it
19431
+ for no one else. Reflected, because the stylesheet draws it by the
19432
+ attribute, and a page that sets the property, as React does, writes none. */
19433
+ summary?: (HelixSpatialTreemap["summary"]) | undefined;
18428
19434
  /** The column of text that gathers the rows into groups, by its heading. None by default. */
18429
19435
  "group-by"?: (HelixSpatialTreemap["groupBy"]) | undefined;
18430
19436
  /** The column of text that gathers the rows into groups, by its heading. None by default. */
@@ -20406,11 +21412,38 @@ export type HelixTextareaElementEvent<E = Event> = TypedEvent<HelixTextarea, E>;
20406
21412
  /** `helix-before-change` event type */
20407
21413
  export type HelixTextareaHelixBeforeChangeElementEvent =
20408
21414
  HelixTextareaElementEvent<HelixBeforeChangeEvent>;
21415
+ /** `helix-before-listen` event type */
21416
+ export type HelixTextareaHelixBeforeListenElementEvent =
21417
+ HelixTextareaElementEvent<HelixBeforeListenEvent>;
20409
21418
  /** `helix-clear` event type */
20410
21419
  export type HelixTextareaHelixClearElementEvent =
20411
21420
  HelixTextareaElementEvent<HelixClearEvent>;
21421
+ /** `helix-listen` event type */
21422
+ export type HelixTextareaHelixListenElementEvent =
21423
+ HelixTextareaElementEvent<HelixListenEvent>;
20412
21424
 
20413
21425
  export type HelixTextareaVueProps = {
21426
+ /** What a screen reader hears as listening starts. */
21427
+ "listening-label"?: (HelixTextarea["listeningLabel"]) | undefined;
21428
+ /** What a screen reader hears as listening starts. */
21429
+ listeningLabel?: (HelixTextarea["listeningLabel"]) | undefined;
21430
+ /** What a screen reader hears as listening stops. */
21431
+ "stopped-listening-label"?: (HelixTextarea["stoppedListeningLabel"]) | undefined;
21432
+ /** What a screen reader hears as listening stops. */
21433
+ stoppedListeningLabel?: (HelixTextarea["stoppedListeningLabel"]) | undefined;
21434
+ /** Draws a button that listens for dictation and types what it hears at
21435
+ the caret. Nothing listens until the button is pressed, and the
21436
+ microphone is let go as listening stops. An input of type `password`,
21437
+ `email` or `number` draws no button. */
21438
+ voice?: (HelixTextarea["voice"]) | undefined;
21439
+ /** The dictation button's name while it is not listening. */
21440
+ "voice-label"?: (HelixTextarea["voiceLabel"]) | undefined;
21441
+ /** The dictation button's name while it is not listening. */
21442
+ voiceLabel?: (HelixTextarea["voiceLabel"]) | undefined;
21443
+ /** The dictation button's name while it listens. */
21444
+ "voice-stop-label"?: (HelixTextarea["voiceStopLabel"]) | undefined;
21445
+ /** The dictation button's name while it listens. */
21446
+ voiceStopLabel?: (HelixTextarea["voiceStopLabel"]) | undefined;
20414
21447
  /** The value the control starts with. A form reset returns it to this value,
20415
21448
  and to the `value` attribute where this one is not written, as a native
20416
21449
  control resets to the `value` it declares. */
@@ -20579,6 +21612,9 @@ imperatively later, and nothing is hydrating by then.
20579
21612
 
20580
21613
  Here rather than on each control. */
20581
21614
  name?: (HelixTextarea["name"]) | undefined;
21615
+ /** The engine this field listens through, in place of the one
21616
+ `registerSpeechEngine` gave the page, or the browser's own. */
21617
+ speechEngine?: (HelixTextarea["speechEngine"]) | undefined;
20582
21618
  /** The direction of the selection, as a native textarea reports it.
20583
21619
 
20584
21620
  **The whole reason this renders a real `<textarea>` is the caret**, and the
@@ -20606,8 +21642,12 @@ export type HelixTextareaVueEvents = {
20606
21642
  change: HelixTextareaElementEvent;
20607
21643
  /** Fired as the text changes, and cancelable. */
20608
21644
  "helix-before-change": HelixTextareaHelixBeforeChangeElementEvent;
21645
+ /** The dictation button was pressed. Cancelable: cancel it to keep the field from listening. */
21646
+ "helix-before-listen": HelixTextareaHelixBeforeListenElementEvent;
20609
21647
  /** Fired after the clear button has emptied the field, after `input` and `change`. */
20610
21648
  "helix-clear": HelixTextareaHelixClearElementEvent;
21649
+ /** Dictation settled on a phrase and put it in the value, after the field's own `input`. */
21650
+ "helix-listen": HelixTextareaHelixListenElementEvent;
20611
21651
  /** Fired after the value changes. */
20612
21652
  input: HelixTextareaElementEvent;
20613
21653
  };
@@ -21560,6 +22600,10 @@ keys joined by `+`, the last one the key, as `Announcement`'s `hotkey`
21560
22600
  reads them: `mod` is Command on Apple devices and Control elsewhere.
21561
22601
  Empty turns it off. */
21562
22602
  hotkey?: (HelixToast["hotkey"]) | undefined;
22603
+ /** What the hotkey does, as a list of the page's shortcuts says it. */
22604
+ "hotkey-label"?: (HelixToast["hotkeyLabel"]) | undefined;
22605
+ /** What the hotkey does, as a list of the page's shortcuts says it. */
22606
+ hotkeyLabel?: (HelixToast["hotkeyLabel"]) | undefined;
21563
22607
  /** Accessible name for the region, with `{hotkey}` filled in. Translate it with
21564
22608
  the rest of your interface. */
21565
22609
  label?: (HelixToast["label"]) | undefined;
@@ -21602,6 +22646,26 @@ the end of the line, or `start`, `top` or `bottom`. Unset is `end`. */
21602
22646
  /** The edge a touch or a pen swipes a message toward to dismiss it: `end`,
21603
22647
  the end of the line, or `start`, `top` or `bottom`. Unset is `end`. */
21604
22648
  swipeDirection?: (HelixToast["swipeDirection"]) | undefined;
22649
+ /** What a message `undoable()` made says after its own words, with `{keys}`
22650
+ for the chord that undoes it, spoken as words. */
22651
+ "undo-hint"?: (HelixToast["undoHint"]) | undefined;
22652
+ /** What a message `undoable()` made says after its own words, with `{keys}`
22653
+ for the chord that undoes it, spoken as words. */
22654
+ undoHint?: (HelixToast["undoHint"]) | undefined;
22655
+ /** The keys that undo the newest message `undoable()` made, as `hotkey`
22656
+ reads them. Empty turns them off, for an app whose own undo holds them,
22657
+ and leaves the Undo button. A key the app already handled, by calling
22658
+ `preventDefault()`, is left to it. */
22659
+ "undo-keys"?: (HelixToast["undoKeys"]) | undefined;
22660
+ /** The keys that undo the newest message `undoable()` made, as `hotkey`
22661
+ reads them. Empty turns them off, for an app whose own undo holds them,
22662
+ and leaves the Undo button. A key the app already handled, by calling
22663
+ `preventDefault()`, is left to it. */
22664
+ undoKeys?: (HelixToast["undoKeys"]) | undefined;
22665
+ /** The words on the Undo button of a message `undoable()` made. */
22666
+ "undo-label"?: (HelixToast["undoLabel"]) | undefined;
22667
+ /** The words on the Undo button of a message `undoable()` made. */
22668
+ undoLabel?: (HelixToast["undoLabel"]) | undefined;
21605
22669
  };
21606
22670
 
21607
22671
  export type HelixToastVueEvents = {
@@ -23957,6 +25021,8 @@ export type CustomCssProperties = {
23957
25021
  "--chat-composer-border-width"?: (string) | undefined;
23958
25022
  /** Maximum height the field grows to. */
23959
25023
  "--chat-composer-max-block-size"?: (string) | undefined;
25024
+ /** How loud the microphone is while the field listens for dictation, from 0 to 1, which the element sets; the ring around the dictation button grows with it. */
25025
+ "--dictation-level"?: (string) | undefined;
23960
25026
  /** Fill behind a slotted indicator, drawn as a chip so its icon and its text read as one unit. */
23961
25027
  "--chat-indicator-background-color"?: (string) | undefined;
23962
25028
  /** Fill behind a turn. */
@@ -24063,6 +25129,28 @@ export type CustomCssProperties = {
24063
25129
  "--code-block-mark-size"?: (string) | undefined;
24064
25130
  /** Written by the block on each `mark`: how far down the code its run of lines starts. Do not set it. */
24065
25131
  "--code-block-mark-start"?: (string) | undefined;
25132
+ /** The ground the code is drawn on. Defaults to the page's background. */
25133
+ "--code-editor-background-color"?: (string) | undefined;
25134
+ /** The frame's height, as a length: 24rem unless set. Ignored with `fill`, where the container decides it. */
25135
+ "--code-editor-block-size"?: (string) | undefined;
25136
+ /** The frame's edge and the lines between its strips. */
25137
+ "--code-editor-border-color"?: (string) | undefined;
25138
+ /** The code's size. Defaults to `text-sm`. */
25139
+ "--code-editor-font-size"?: (string) | undefined;
25140
+ /** The fill of the header, the find bar, and the status line. */
25141
+ "--code-editor-header-background-color"?: (string) | undefined;
25142
+ /** The frame's corner radius. */
25143
+ "--code-editor-radius"?: (string) | undefined;
25144
+ /** Fill behind the code. */
25145
+ "--code-input-background-color"?: (string) | undefined;
25146
+ /** Edge of the field at rest. Hover, focus and an error still draw their own. */
25147
+ "--code-input-border-color"?: (string) | undefined;
25148
+ /** The code's size. Defaults to `text-sm`, and never under 16px on a touch screen. */
25149
+ "--code-input-font-size"?: (string) | undefined;
25150
+ /** Space between the edge of the field and the code. */
25151
+ "--code-input-padding"?: (string) | undefined;
25152
+ /** Corner radius of the field. */
25153
+ "--code-input-radius"?: (string) | undefined;
24066
25154
  /** Fill behind the fragment. Defaults to the foreground color at 6%, which looks the same on a light page and a dark one. */
24067
25155
  "--code-background-color"?: (string) | undefined;
24068
25156
  /** The fragment's typeface. Defaults to the mono face. */
@@ -25529,6 +26617,16 @@ export type CustomCssProperties = {
25529
26617
  "--select-shadow"?: (string) | undefined;
25530
26618
  /** Maximum height of the panel. */
25531
26619
  "--select-surface-max-block-size"?: (string) | undefined;
26620
+ /** The badge's fill. Defaults to `surface-inverse`. */
26621
+ "--shortcut-overlay-badge-background-color"?: (string) | undefined;
26622
+ /** The badge's edge. Defaults to `border-floating`, which a theme sets to zero where a shadow alone lifts a surface. */
26623
+ "--shortcut-overlay-badge-border-width"?: (string) | undefined;
26624
+ /** The badge's text. Defaults to `foreground-inverse`. */
26625
+ "--shortcut-overlay-badge-color"?: (string) | undefined;
26626
+ /** The widest a badge grows before its name ends in an ellipsis. Defaults to 16rem. */
26627
+ "--shortcut-overlay-badge-max-inline-size"?: (string) | undefined;
26628
+ /** The badge's lift. Defaults to `shadow-floating`. */
26629
+ "--shortcut-overlay-badge-shadow"?: (string) | undefined;
25532
26630
  /** The height of the block shape, which is the shape when `shape` is unset. Defaults to the control height. */
25533
26631
  "--skeleton-block-size"?: (string) | undefined;
25534
26632
  /** The placeholder's fill. */
@@ -26511,6 +27609,18 @@ export interface WcToolkitVueGlobalComponents {
26511
27609
  HelixCodeBlockVueProps,
26512
27610
  HelixCodeBlockVueEvents
26513
27611
  >;
27612
+ /** Drawn as Terminal and Code Block are: the code on the page's ground, with a header, a find bar and a status line each a strip on the raised surface, one frame around them. It is 24rem tall unless 'fill' is set or '--code-editor-block-size' says otherwise. An engine draws inside it: '@fusion.dev/helix-editor' themes CodeMirror's gutter, caret, selection and syntax from your tokens, and draws a problem's line number in its tone. Set 'fill' for an editor that fills a pane, such as one side of a split view. */
27613
+ "helix-code-editor": DefineCustomElement<
27614
+ HelixCodeEditor,
27615
+ HelixCodeEditorVueProps,
27616
+ HelixCodeEditorVueEvents
27617
+ >;
27618
+ /** Uses the same frame as 'Textarea' and 'Input', so a form of mixed fields matches, with the code in the mono face at the size Code Block draws it. The colors are the syntax tokens, through the highlighter the page registered: 'import '@fusion.dev/helix-sandbox/code-block'' colors every Code Block and Code Input on the page. */
27619
+ "helix-code-input": DefineCustomElement<
27620
+ HelixCodeInput,
27621
+ HelixCodeInputVueProps,
27622
+ HelixCodeInputVueEvents
27623
+ >;
26514
27624
  /** The text is one step smaller than the prose around it, because a monospace face looks larger than proportional text at the same nominal size. Set '--code-size' to change it. */
26515
27625
  "helix-code": DefineCustomElement<
26516
27626
  HelixCode,
@@ -26853,6 +27963,12 @@ export interface WcToolkitVueGlobalComponents {
26853
27963
  HelixMapTerrainVueProps,
26854
27964
  HelixMapTerrainVueEvents
26855
27965
  >;
27966
+ /** The document is drawn by the page's prose recipe: put 'data-prose' on the element or on a container, and '@fusion.dev/helix-styles' sets its type, spacing, lists, and tables. A fence is drawn by 'Code Block' and an alert by 'Callout', in this tier. While 'streaming', the block still arriving wraps its lines in the plain way, never 'pretty' or 'balance', since those move earlier line breaks as each word arrives. */
27967
+ "helix-markdown": DefineCustomElement<
27968
+ HelixMarkdown,
27969
+ HelixMarkdownVueProps,
27970
+ HelixMarkdownVueEvents
27971
+ >;
26856
27972
  /** Styles the trigger and lays out the panel it opens as a grid of columns. What opens and closes the panel comes from the base class. **The panel's contents are laid out by 'helix.css'**, through attributes you write on your own markup: 'data-megamenu-group' on each column, 'data-megamenu-heading' on a column's heading, and 'data-megamenu-item' on a link that carries a title in '<strong>' and a line of description in '<span>' or '<p>', with an icon before them. A plain '<a>' in a group is drawn as a navigation item. Without the attributes the panel holds your markup as you styled it. */
26857
27973
  "helix-megamenu": DefineCustomElement<
26858
27974
  HelixMegamenu,
@@ -27075,6 +28191,12 @@ export interface WcToolkitVueGlobalComponents {
27075
28191
  HelixSelectVueProps,
27076
28192
  HelixSelectVueEvents
27077
28193
  >;
28194
+ /** Each badge is a small inverse plate, as a tooltip is, with the keys first and the control's name after them, centered under the control. The sheet is a 'Dialog' listing each shortcut's name with its keys at the end of the row. */
28195
+ "helix-shortcut-overlay": DefineCustomElement<
28196
+ HelixShortcutOverlay,
28197
+ HelixShortcutOverlayVueProps,
28198
+ HelixShortcutOverlayVueEvents
28199
+ >;
27078
28200
  /** Animates a highlight sweeping across the block, which reads as work in progress. A block fading in and out can look broken, so 'effect="pulse"' is a choice rather than the default. Around content with 'loading', the skeleton takes the content's box and paints over it, and the content is hidden until 'loading' is taken off. **'lines' draws a paragraph.** With 'shape="text"' and 'lines="3"', one element stands in for three lines of text: each line a 'skeleton' part one 'em' tall, spaced a body line height apart, and the last one shorter, as the end of a paragraph is. */
27079
28201
  "helix-skeleton": DefineCustomElement<
27080
28202
  HelixSkeleton,