@fusion.dev/helix 0.218.0 → 0.220.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (104) hide show
  1. package/api.json +1 -1
  2. package/custom-elements.json +1 -1
  3. package/dist/breadcrumbs/breadcrumb/breadcrumb.css.js +1 -1
  4. package/dist/canvas/root/canvas-root.d.ts +1 -0
  5. package/dist/canvas/root/canvas-root.js +1 -0
  6. package/dist/chat/composer/chat-composer.css.js +1 -1
  7. package/dist/chat/composer/chat-composer.d.ts +102 -5
  8. package/dist/chat/composer/chat-composer.js +134 -0
  9. package/dist/chat/message/chat-message.css.js +1 -1
  10. package/dist/chat/message/chat-message.d.ts +1 -0
  11. package/dist/checkbox/root/checkbox-root.css.js +1 -1
  12. package/dist/code-editor/root/code-editor-root.css.js +1 -1
  13. package/dist/code-editor/root/code-editor-root.d.ts +1 -0
  14. package/dist/code-editor/root/code-editor-root.js +1 -0
  15. package/dist/color-input/root/color-input-root.d.ts +1 -3
  16. package/dist/combobox/root/combobox-root.d.ts +1 -2
  17. package/dist/command/root/command-root.css.js +1 -1
  18. package/dist/command/root/command-root.d.ts +16 -1
  19. package/dist/command/root/command-root.js +16 -0
  20. package/dist/date-input/root/date-input-root.d.ts +1 -2
  21. package/dist/device-screen/root/device-screen-root.d.ts +1 -0
  22. package/dist/device-screen/root/device-screen-root.js +1 -0
  23. package/dist/dialog/root/dialog-root.css.js +1 -1
  24. package/dist/dialog/root/dialog-root.d.ts +14 -2
  25. package/dist/dialog/root/dialog-root.js +3 -0
  26. package/dist/drawer/root/drawer-root.css.js +1 -1
  27. package/dist/drawer/root/drawer-root.d.ts +1 -2
  28. package/dist/element-events.generated.js +4 -1
  29. package/dist/find/index.d.ts +1 -0
  30. package/dist/find/index.js +1 -0
  31. package/dist/find/root/find-root.css.d.ts +1 -0
  32. package/dist/find/root/find-root.css.js +2 -0
  33. package/dist/find/root/find-root.d.ts +38 -0
  34. package/dist/find/root/find-root.js +17 -0
  35. package/dist/graph/root/graph-root.d.ts +1 -0
  36. package/dist/graph/root/graph-root.js +1 -0
  37. package/dist/index.d.ts +1 -0
  38. package/dist/index.js +1 -0
  39. package/dist/kbd/root/kbd-root.css.js +1 -1
  40. package/dist/log/group/log-group.css.js +1 -1
  41. package/dist/log/line/log-line.css.js +1 -1
  42. package/dist/log/root/log-root.css.js +1 -1
  43. package/dist/log/root/log-root.d.ts +5 -1
  44. package/dist/map/root/map-root.css.js +1 -1
  45. package/dist/map/root/map-root.d.ts +1 -0
  46. package/dist/map/root/map-root.js +1 -0
  47. package/dist/megamenu/root/megamenu-root.css.js +1 -1
  48. package/dist/megamenu/root/megamenu-root.d.ts +2 -2
  49. package/dist/menu/item/menu-item.css.js +1 -1
  50. package/dist/menu/root/menu-root.css.js +1 -1
  51. package/dist/menu/root/menu-root.d.ts +19 -1
  52. package/dist/menu/root/menu-root.js +4 -0
  53. package/dist/menu/section/menu-section.css.js +1 -1
  54. package/dist/meter/index.d.ts +1 -0
  55. package/dist/meter/index.js +1 -0
  56. package/dist/meter/root/meter-root.css.js +1 -1
  57. package/dist/meter/segment/meter-segment.css.d.ts +1 -0
  58. package/dist/meter/segment/meter-segment.css.js +2 -0
  59. package/dist/meter/segment/meter-segment.d.ts +39 -0
  60. package/dist/meter/segment/meter-segment.js +11 -0
  61. package/dist/popover/root/popover-root.css.js +1 -1
  62. package/dist/popover/root/popover-root.d.ts +20 -2
  63. package/dist/popover/root/popover-root.js +3 -0
  64. package/dist/radio/root/radio-root.css.js +1 -1
  65. package/dist/scroll-area/root/scroll-area-root.css.js +1 -1
  66. package/dist/scroll-area/root/scroll-area-root.d.ts +14 -2
  67. package/dist/scroll-area/root/scroll-area-root.js +29 -0
  68. package/dist/select/root/select-root.d.ts +1 -2
  69. package/dist/shared/floating/entrance.css.js +1 -1
  70. package/dist/skip-link/root/skip-link-root.d.ts +1 -2
  71. package/dist/spatial-bar-chart/root/spatial-bar-chart-root.css.js +1 -1
  72. package/dist/spatial-bar-chart/root/spatial-bar-chart-root.d.ts +9 -1
  73. package/dist/strands/renderer.d.ts +2 -0
  74. package/dist/strands/renderer.js +1 -0
  75. package/dist/strands/root/strands-root.css.js +1 -1
  76. package/dist/strands/root/strands-root.d.ts +14 -0
  77. package/dist/strands/root/strands-root.js +5 -0
  78. package/dist/strands/shader.d.ts +7 -1
  79. package/dist/strands/shader.js +11 -3
  80. package/dist/switch/root/switch-root.css.js +1 -1
  81. package/dist/tabs/root/tabs-root.css.js +1 -1
  82. package/dist/tabs/root/tabs-root.d.ts +36 -0
  83. package/dist/tabs/root/tabs-root.js +7 -0
  84. package/dist/tabs/tab/tab.css.js +1 -1
  85. package/dist/tabs/tab/tab.d.ts +2 -0
  86. package/dist/terminal/root/terminal-root.css.js +1 -1
  87. package/dist/terminal/root/terminal-root.d.ts +2 -0
  88. package/dist/terminal/root/terminal-root.js +2 -0
  89. package/dist/time-input/root/time-input-root.d.ts +1 -2
  90. package/dist/toast/item/toast-item.d.ts +1 -2
  91. package/dist/tooltip/root/tooltip-root.css.js +1 -1
  92. package/dist/tour/root/tour-root.css.js +1 -1
  93. package/dist/tour/stop/tour-stop.d.ts +1 -2
  94. package/dist/tree/item/tree-item.css.js +1 -1
  95. package/dist/tree/root/tree-root.css.js +1 -1
  96. package/dist/tree/root/tree-root.d.ts +5 -1
  97. package/examples.json +1 -1
  98. package/lint.json +1 -1
  99. package/package.json +6 -6
  100. package/skills/helix/SKILL.md +2 -2
  101. package/types/jsx.d.ts +2624 -153
  102. package/types/svelte.d.ts +2 -0
  103. package/types/vue.d.ts +610 -26
  104. package/types/words.d.ts +93 -0
package/types/vue.d.ts CHANGED
@@ -102,8 +102,10 @@ import type {
102
102
  HelixFilterMenu,
103
103
  HelixFilterOperator,
104
104
  HelixFilteredEvent,
105
+ HelixFind,
105
106
  HelixFlex,
106
107
  HelixFormatDate,
108
+ HelixFoundEvent,
107
109
  HelixGraph,
108
110
  HelixGraphFilterEvent,
109
111
  HelixGraphLayoutEvent,
@@ -158,6 +160,7 @@ import type {
158
160
  HelixMenuItem,
159
161
  HelixMenuSection,
160
162
  HelixMeter,
163
+ HelixMeterSegment,
161
164
  HelixMotionToggle,
162
165
  HelixMoveEvent,
163
166
  HelixNavigateEvent,
@@ -242,6 +245,7 @@ import type {
242
245
  HelixStatGroup,
243
246
  HelixStep,
244
247
  HelixSteps,
248
+ HelixStopEvent,
245
249
  HelixStrands,
246
250
  HelixStrandsFallbackEvent,
247
251
  HelixStrandsStop,
@@ -1818,6 +1822,19 @@ into one, counting the first and the last. Unset, it never folds. At least
1818
1822
  into one, counting the first and the last. Unset, it never folds. At least
1819
1823
  2, so the first crumb and the current page always show. */
1820
1824
  maxItems?: (HelixBreadcrumbs["maxItems"]) | undefined;
1825
+ /** The mark between one crumb and the next, for the whole trail. Unset is a
1826
+ chevron; `slash` is a slash, as a path or a repository and its branch is
1827
+ written.
1828
+
1829
+ **On the trail rather than on each crumb**, because the marks are one
1830
+ decision: a trail whose separators differ from crumb to crumb is a
1831
+ mistake, and a trail drawn from `items` has no crumb of yours to set it
1832
+ on. A crumb's own `separator` slot still replaces its mark, for the rare
1833
+ crumb that needs something else.
1834
+
1835
+ Optional and reflected, per the rule that a reflected property takes no
1836
+ default, so a stylesheet can select on it. */
1837
+ separator?: (HelixBreadcrumbs["separator"]) | undefined;
1821
1838
  /** The trail as data, drawn as crumbs before any you slot. The last item is the
1822
1839
  current page.
1823
1840
 
@@ -1990,6 +2007,36 @@ is the platform's `commandfor`. */
1990
2007
  commandfor?: (HelixButton["commandFor"]) | undefined;
1991
2008
  /** The id of the element the command is sent to. */
1992
2009
  commandFor?: (HelixButton["commandFor"]) | undefined;
2010
+ /** Whether a disabled button stays in the tab order, so a tooltip around it
2011
+ can say why it is disabled.
2012
+
2013
+ Set it on a button whose reason a Tooltip gives, such as a Save with no
2014
+ changes to save. While the button is disabled, it keeps focus and takes
2015
+ hover, and it refuses every press: a click, Enter and Space, and Enter in
2016
+ a field of its form. The click does not reach your listeners, and a submit
2017
+ button submits nothing. The inner control carries `aria-disabled` in place
2018
+ of the native `disabled`, so a screen reader still says it is unavailable.
2019
+ The styled button keeps the disabled look.
2020
+
2021
+ Leave it unset on a button with no reason to give. A plain disabled button
2022
+ leaves the tab order, as a native one does, and a keyboard reader skips a
2023
+ stop that does nothing. Set `pending` for the wait after a press. */
2024
+ "focusable-when-disabled"?: (HelixButton["focusableWhenDisabled"]) | undefined;
2025
+ /** Whether a disabled button stays in the tab order, so a tooltip around it
2026
+ can say why it is disabled.
2027
+
2028
+ Set it on a button whose reason a Tooltip gives, such as a Save with no
2029
+ changes to save. While the button is disabled, it keeps focus and takes
2030
+ hover, and it refuses every press: a click, Enter and Space, and Enter in
2031
+ a field of its form. The click does not reach your listeners, and a submit
2032
+ button submits nothing. The inner control carries `aria-disabled` in place
2033
+ of the native `disabled`, so a screen reader still says it is unavailable.
2034
+ The styled button keeps the disabled look.
2035
+
2036
+ Leave it unset on a button with no reason to give. A plain disabled button
2037
+ leaves the tab order, as a native one does, and a keyboard reader skips a
2038
+ stop that does nothing. Set `pending` for the wait after a press. */
2039
+ focusableWhenDisabled?: (HelixButton["focusableWhenDisabled"]) | undefined;
1993
2040
  /** Where this button's submission goes, overriding the form's own.
1994
2041
 
1995
2042
  **The five `form*` overrides ride on a native submit button that stands in
@@ -3499,11 +3546,27 @@ export type HelixChatComposerHelixListenElementEvent =
3499
3546
  /** `helix-send` event type */
3500
3547
  export type HelixChatComposerHelixSendElementEvent =
3501
3548
  HelixChatComposerElementEvent<HelixSendEvent>;
3549
+ /** `helix-stop` event type */
3550
+ export type HelixChatComposerHelixStopElementEvent =
3551
+ HelixChatComposerElementEvent<HelixStopEvent>;
3502
3552
  /** `helix-typing` event type */
3503
3553
  export type HelixChatComposerHelixTypingElementEvent =
3504
3554
  HelixChatComposerElementEvent<HelixTypingEvent>;
3505
3555
 
3506
3556
  export type HelixChatComposerVueProps = {
3557
+ /** Draws the composer's focus as a glow: a light that runs once around the
3558
+ edge as the composer takes focus, then a soft steady edge while it holds
3559
+ it, in place of the focus ring.
3560
+
3561
+ **On focus, and only then.** It says the composer is listening. A glow
3562
+ that ran while a reply was on its way would be a second indicator of what
3563
+ the conversation already shows, and one that ran all the time would be
3564
+ decoration that moves. With reduced motion asked for, the edge lights
3565
+ without the sweep.
3566
+
3567
+ The steady edge is the focus indicator, so the ring is not drawn as well.
3568
+ Its color is `--chat-composer-glow-color`, the primary color unless set. */
3569
+ glow?: (HelixChatComposer["glow"]) | undefined;
3507
3570
  /** What a screen reader hears as listening starts. */
3508
3571
  "listening-label"?: (HelixChatComposer["listeningLabel"]) | undefined;
3509
3572
  /** What a screen reader hears as listening starts. */
@@ -3525,6 +3588,18 @@ microphone is let go as listening stops. An input of type `password`,
3525
3588
  "voice-stop-label"?: (HelixChatComposer["voiceStopLabel"]) | undefined;
3526
3589
  /** The dictation button's name while it listens. */
3527
3590
  voiceStopLabel?: (HelixChatComposer["voiceStopLabel"]) | undefined;
3591
+ /** Whether the draft holds something besides its text, such as an attached
3592
+ file. The draft then counts as one though the field is empty, so the
3593
+ send button shows in place of the `idle` slot. */
3594
+ attached?: (HelixChatComposer["attached"]) | undefined;
3595
+ /** Whether a reply is on its way. While set, the send button is a stop
3596
+ button that sends `helix-stop`, and the draft does not send.
3597
+
3598
+ **The same button rather than one beside it**, because sending and
3599
+ stopping are never both possible: while a reply is on its way there is
3600
+ nothing to send to, and the place the reader's eye goes to act is the
3601
+ place that can act. The field stays open for the next turn. */
3602
+ busy?: (HelixChatComposer["busy"]) | undefined;
3528
3603
  /** A message about the draft, shown under the field. While set, the composer
3529
3604
  is invalid, does not send, and does not submit, as a field's `feedback`
3530
3605
  does, and the message is announced as it appears. */
@@ -3543,6 +3618,14 @@ the field, as on a `<textarea>`. */
3543
3618
  minLength?: (HelixChatComposer["minLength"]) | undefined;
3544
3619
  /** Placeholder text shown in an empty field. */
3545
3620
  placeholder?: (HelixChatComposer["placeholder"]) | undefined;
3621
+ /** Whether Enter sends while `busy`, for a page that queues the turn or
3622
+ hands it to the reply under way.
3623
+
3624
+ Off by default, because a page that does neither would drop the turn: it
3625
+ has nowhere to put a message while a reply is coming. The button stays
3626
+ the stop button either way, since stopping is still the one thing it
3627
+ should do while a reply is on its way. */
3628
+ queue?: (HelixChatComposer["queue"]) | undefined;
3546
3629
  /** Whether the form needs a draft to submit. An empty draft never sends,
3547
3630
  required or not. */
3548
3631
  required?: (HelixChatComposer["required"]) | undefined;
@@ -3550,10 +3633,34 @@ required or not. */
3550
3633
 
3551
3634
  It grows from there. */
3552
3635
  rows?: (HelixChatComposer["rows"]) | undefined;
3636
+ /** Whether the draft waits to be sent, such as while an attachment is still
3637
+ read. The send button is unavailable and Enter does not send, while the
3638
+ field stays open. The stop button shown while `busy` still stops. */
3639
+ "send-disabled"?: (HelixChatComposer["sendDisabled"]) | undefined;
3640
+ /** Whether the draft waits to be sent, such as while an attachment is still
3641
+ read. The send button is unavailable and Enter does not send, while the
3642
+ field stays open. The stop button shown while `busy` still stops. */
3643
+ sendDisabled?: (HelixChatComposer["sendDisabled"]) | undefined;
3553
3644
  /** Label for the send button. */
3554
3645
  "send-label"?: (HelixChatComposer["sendLabel"]) | undefined;
3555
3646
  /** Label for the send button. */
3556
3647
  sendLabel?: (HelixChatComposer["sendLabel"]) | undefined;
3648
+ /** Why the draft waits, such as "Reading photo.jpg", shown in a tooltip on
3649
+ the send button while `send-disabled` is set. The button then stays in
3650
+ the tab order and takes the pointer, with `aria-disabled` in place of
3651
+ `disabled`, so the reason can be reached by keyboard and by pointer, as
3652
+ Button's `focusable-when-disabled` does. A press still sends nothing. */
3653
+ "send-reason"?: (HelixChatComposer["sendReason"]) | undefined;
3654
+ /** Why the draft waits, such as "Reading photo.jpg", shown in a tooltip on
3655
+ the send button while `send-disabled` is set. The button then stays in
3656
+ the tab order and takes the pointer, with `aria-disabled` in place of
3657
+ `disabled`, so the reason can be reached by keyboard and by pointer, as
3658
+ Button's `focusable-when-disabled` does. A press still sends nothing. */
3659
+ sendReason?: (HelixChatComposer["sendReason"]) | undefined;
3660
+ /** Label for the stop button shown while `busy`. */
3661
+ "stop-label"?: (HelixChatComposer["stopLabel"]) | undefined;
3662
+ /** Label for the stop button shown while `busy`. */
3663
+ stopLabel?: (HelixChatComposer["stopLabel"]) | undefined;
3557
3664
  /** What sends the turn: `enter` for the Enter key, or `button` for the send
3558
3665
  button only.
3559
3666
 
@@ -3608,6 +3715,23 @@ Here rather than on each control. */
3608
3715
  /** The engine this field listens through, in place of the one
3609
3716
  `registerSpeechEngine` gave the page, or the browser's own. */
3610
3717
  speechEngine?: (HelixChatComposer["speechEngine"]) | undefined;
3718
+ /** Examples the empty field shows in turn, in place of `placeholder`, such
3719
+ as tasks a reader might ask for. Each shows for 6.5 seconds, and a longer
3720
+ one shows longer, up to 10 seconds.
3721
+
3722
+ **Each is the field's placeholder in its turn**, so a screen reader that
3723
+ reaches the field hears the one showing. The swap runs through
3724
+ `:state(example-leaving)`, as one example leaves, and
3725
+ `:state(example-entering)`, as the next arrives.
3726
+
3727
+ **They move only while nobody is about to write, and while the reader
3728
+ can see them.** An empty field without focus moves on. Focus or text
3729
+ holds the example showing, and an example already leaving finishes its
3730
+ turn. A composer scrolled out of view holds its example, and the example
3731
+ gets its full time again when the composer comes back. Where the reader
3732
+ asked for less motion, or the page paused its motion, the first example
3733
+ stays. */
3734
+ placeholders?: (HelixChatComposer["placeholders"]) | undefined;
3611
3735
  };
3612
3736
 
3613
3737
  export type HelixChatComposerVueEvents = {
@@ -3617,6 +3741,8 @@ export type HelixChatComposerVueEvents = {
3617
3741
  "helix-listen": HelixChatComposerHelixListenElementEvent;
3618
3742
  /** Fired when the user sends their turn, and cancelable. */
3619
3743
  "helix-send": HelixChatComposerHelixSendElementEvent;
3744
+ /** Fired when the user presses the stop button, shown in place of the send button while `busy` is set. */
3745
+ "helix-stop": HelixChatComposerHelixStopElementEvent;
3620
3746
  /** The user started or stopped writing, with `typing` saying which, as the composer's `typing` does. */
3621
3747
  "helix-typing": HelixChatComposerHelixTypingElementEvent;
3622
3748
  /** The user changed the text. Read it from `value`, for a typing indicator or a saved draft. Bubbles and is composed, as a native field's is. */
@@ -4441,6 +4567,9 @@ export type HelixCodeEditorElementEvent<E = Event> = TypedEvent<
4441
4567
  /** `helix-before-change` event type */
4442
4568
  export type HelixCodeEditorHelixBeforeChangeElementEvent =
4443
4569
  HelixCodeEditorElementEvent<HelixBeforeChangeEvent>;
4570
+ /** `helix-found` event type */
4571
+ export type HelixCodeEditorHelixFoundElementEvent =
4572
+ HelixCodeEditorElementEvent<HelixFoundEvent>;
4444
4573
 
4445
4574
  export type HelixCodeEditorVueProps = {
4446
4575
  /** Covers the container instead of taking a height of its own, for an
@@ -4644,6 +4773,8 @@ export type HelixCodeEditorVueEvents = {
4644
4773
  change: HelixCodeEditorElementEvent;
4645
4774
  /** The text is about to change. Cancelable: cancel it to keep the current text. */
4646
4775
  "helix-before-change": HelixCodeEditorHelixBeforeChangeElementEvent;
4776
+ /** The find bar searched or moved among the matches, with `count` and the selected match's `index`, counting from 0, or -1 for none. */
4777
+ "helix-found": HelixCodeEditorHelixFoundElementEvent;
4647
4778
  /** Fired after the text changes. */
4648
4779
  input: HelixCodeEditorElementEvent;
4649
4780
  };
@@ -5955,6 +6086,17 @@ export type HelixCommandHelixSelectElementEvent =
5955
6086
  HelixCommandElementEvent<HelixSelectEvent>;
5956
6087
 
5957
6088
  export type HelixCommandVueProps = {
6089
+ /** The panel's surface: `frosted` or `glass`, as on `Dialog`, which the
6090
+ palette opens in and hands the value to.
6091
+
6092
+ Absent is the opaque overlay surface. `glass` is the page's translucent
6093
+ ground over the theme's blur, and `frosted` the same pair turned up, so a
6094
+ page whose panels are frosted has a palette that matches. Its strength is
6095
+ the theme's, as on `Popover`, `Menu` and `Drawer`.
6096
+
6097
+ **No `transparent`, deliberately.** A palette over arbitrary page content
6098
+ is only readable because it has a ground. */
6099
+ material?: (HelixCommand["material"]) | undefined;
5958
6100
  /** Whether the element starts open. Ignored once `open` is written. */
5959
6101
  "default-open"?: (HelixCommand["defaultOpen"]) | undefined;
5960
6102
  /** Whether the element starts open. Ignored once `open` is written. */
@@ -6225,6 +6367,36 @@ whatever its `type`. Declared here so its own page says what it holds. */
6225
6367
  value?: (HelixCopyButton["value"]) | undefined;
6226
6368
  /** */
6227
6369
  "aria-label"?: (string) | undefined;
6370
+ /** Whether a disabled button stays in the tab order, so a tooltip around it
6371
+ can say why it is disabled.
6372
+
6373
+ Set it on a button whose reason a Tooltip gives, such as a Save with no
6374
+ changes to save. While the button is disabled, it keeps focus and takes
6375
+ hover, and it refuses every press: a click, Enter and Space, and Enter in
6376
+ a field of its form. The click does not reach your listeners, and a submit
6377
+ button submits nothing. The inner control carries `aria-disabled` in place
6378
+ of the native `disabled`, so a screen reader still says it is unavailable.
6379
+ The styled button keeps the disabled look.
6380
+
6381
+ Leave it unset on a button with no reason to give. A plain disabled button
6382
+ leaves the tab order, as a native one does, and a keyboard reader skips a
6383
+ stop that does nothing. Set `pending` for the wait after a press. */
6384
+ "focusable-when-disabled"?: (HelixCopyButton["focusableWhenDisabled"]) | undefined;
6385
+ /** Whether a disabled button stays in the tab order, so a tooltip around it
6386
+ can say why it is disabled.
6387
+
6388
+ Set it on a button whose reason a Tooltip gives, such as a Save with no
6389
+ changes to save. While the button is disabled, it keeps focus and takes
6390
+ hover, and it refuses every press: a click, Enter and Space, and Enter in
6391
+ a field of its form. The click does not reach your listeners, and a submit
6392
+ button submits nothing. The inner control carries `aria-disabled` in place
6393
+ of the native `disabled`, so a screen reader still says it is unavailable.
6394
+ The styled button keeps the disabled look.
6395
+
6396
+ Leave it unset on a button with no reason to give. A plain disabled button
6397
+ leaves the tab order, as a native one does, and a keyboard reader skips a
6398
+ stop that does nothing. Set `pending` for the wait after a press. */
6399
+ focusableWhenDisabled?: (HelixCopyButton["focusableWhenDisabled"]) | undefined;
6228
6400
  /** Whether the action the button started is still running.
6229
6401
 
6230
6402
  A pending button keeps focus and stays in the tab order, and refuses every
@@ -7949,6 +8121,16 @@ export type HelixDialogHelixBeforeOpenElementEvent =
7949
8121
  HelixDialogElementEvent<HelixBeforeOpenEvent>;
7950
8122
 
7951
8123
  export type HelixDialogVueProps = {
8124
+ /** The panel's surface: `frosted` or `glass`.
8125
+
8126
+ Absent is the opaque overlay surface. `glass` is the page's translucent
8127
+ ground over the theme's blur, and `frosted` the same pair turned up, as
8128
+ on `Popover`, `Menu`, `Drawer` and `Tooltip`, so a page whose panels are
8129
+ frosted has dialogs that match.
8130
+
8131
+ **No `transparent`, deliberately.** A dialog over arbitrary page content
8132
+ is only readable because it has a ground. */
8133
+ material?: (HelixDialog["material"]) | undefined;
7952
8134
  /** How wide the panel is allowed to be.
7953
8135
 
7954
8136
  Steps rather than a number, because a dialog's width is a fact about what is
@@ -9366,6 +9548,138 @@ export type HelixFilterInputVueEvents = {
9366
9548
  input: HelixFilterInputElementEvent;
9367
9549
  };
9368
9550
 
9551
+ /** `HelixFind` component event */
9552
+ export type HelixFindElementEvent<E = Event> = TypedEvent<HelixFind, E>;
9553
+ /** `toggle` event type */
9554
+ export type HelixFindToggleElementEvent = HelixFindElementEvent<ToggleEvent>;
9555
+ /** `helix-before-close` event type */
9556
+ export type HelixFindHelixBeforeCloseElementEvent =
9557
+ HelixFindElementEvent<HelixBeforeCloseEvent>;
9558
+ /** `helix-before-open` event type */
9559
+ export type HelixFindHelixBeforeOpenElementEvent =
9560
+ HelixFindElementEvent<HelixBeforeOpenEvent>;
9561
+ /** `helix-found` event type */
9562
+ export type HelixFindHelixFoundElementEvent =
9563
+ HelixFindElementEvent<HelixFoundEvent>;
9564
+
9565
+ export type HelixFindVueProps = {
9566
+ /** Whether the element starts open. Ignored once `open` is written. */
9567
+ "default-open"?: (HelixFind["defaultOpen"]) | undefined;
9568
+ /** Whether the element starts open. Ignored once `open` is written. */
9569
+ defaultOpen?: (HelixFind["defaultOpen"]) | undefined;
9570
+ /** Whether the element is open.
9571
+
9572
+ One property, not two, so `dialog.open` answers the question anyone
9573
+ asking it meant. Writing always applies; `<helix-dialog open>` is the
9574
+ same statement in markup.
9575
+
9576
+ **Not reflected, and that is required rather than tidy.** Reflection
9577
+ writes the resolved state back as an attribute, so an element that opened
9578
+ itself would put `open` on its own host: cloned, serialized for
9579
+ hydration, or diffed by a framework, it comes back holding whatever the
9580
+ last reader did rather than what the author wrote. `:state(open)` carries
9581
+ the resolved state for stylesheets, which is what the mirror is for. */
9582
+ open?: (HelixFind["open"]) | undefined;
9583
+ /** The close button's label. */
9584
+ "close-label"?: (HelixFind["closeLabel"]) | undefined;
9585
+ /** The close button's label. */
9586
+ closeLabel?: (HelixFind["closeLabel"]) | undefined;
9587
+ /** The name of the bar's toolbar, read by screen readers. */
9588
+ "controls-label"?: (HelixFind["controlsLabel"]) | undefined;
9589
+ /** The name of the bar's toolbar, read by screen readers. */
9590
+ controlsLabel?: (HelixFind["controlsLabel"]) | undefined;
9591
+ /** The id of the element whose text Find searches, in the same tree as Find.
9592
+ With a finder attached, it names only where the find key opens the bar. */
9593
+ for?: (HelixFind["for"]) | undefined;
9594
+ /** What the count says when the regular expression cannot be read. */
9595
+ "invalid-label"?: (HelixFind["invalidLabel"]) | undefined;
9596
+ /** What the count says when the regular expression cannot be read. */
9597
+ invalidLabel?: (HelixFind["invalidLabel"]) | undefined;
9598
+ /** The field's name and placeholder, and the name of the bar. */
9599
+ label?: (HelixFind["label"]) | undefined;
9600
+ /** Whether case has to match, so "Error" does not find "error". The reader turns it on and off from the bar. */
9601
+ "match-case"?: (HelixFind["matchCase"]) | undefined;
9602
+ /** Whether case has to match, so "Error" does not find "error". The reader turns it on and off from the bar. */
9603
+ matchCase?: (HelixFind["matchCase"]) | undefined;
9604
+ /** The match case button's label. */
9605
+ "match-case-label"?: (HelixFind["matchCaseLabel"]) | undefined;
9606
+ /** The match case button's label. */
9607
+ matchCaseLabel?: (HelixFind["matchCaseLabel"]) | undefined;
9608
+ /** What the count says of the matches. `{index}` is the current match,
9609
+ counting from 1, and `{count}` how many there are. */
9610
+ "matches-label"?: (HelixFind["matchesLabel"]) | undefined;
9611
+ /** What the count says of the matches. `{index}` is the current match,
9612
+ counting from 1, and `{count}` how many there are. */
9613
+ matchesLabel?: (HelixFind["matchesLabel"]) | undefined;
9614
+ /** The next match button's label. */
9615
+ "next-label"?: (HelixFind["nextLabel"]) | undefined;
9616
+ /** The next match button's label. */
9617
+ nextLabel?: (HelixFind["nextLabel"]) | undefined;
9618
+ /** Which options the bar draws, as a list of `match-case`, `whole-word`, and
9619
+ `regex`, or `none`. They are always drawn in that order. */
9620
+ options?: (HelixFind["options"]) | undefined;
9621
+ /** The previous match button's label. */
9622
+ "previous-label"?: (HelixFind["previousLabel"]) | undefined;
9623
+ /** The previous match button's label. */
9624
+ previousLabel?: (HelixFind["previousLabel"]) | undefined;
9625
+ /** What the field holds: what the reader typed, or what you set. */
9626
+ query?: (HelixFind["query"]) | undefined;
9627
+ /** Hides replacing, for content the reader cannot change. The attribute is `readonly`, the platform's spelling. */
9628
+ readonly?: (HelixFind["readOnly"]) | undefined;
9629
+ /** Hides replacing, for content the reader cannot change. The attribute is `readonly`, the platform's spelling. */
9630
+ readOnly?: (HelixFind["readOnly"]) | undefined;
9631
+ /** Whether the field reads as a regular expression, in JavaScript's syntax. The reader turns it on and off from the bar. */
9632
+ regex?: (HelixFind["regex"]) | undefined;
9633
+ /** The regular expression button's label. */
9634
+ "regex-label"?: (HelixFind["regexLabel"]) | undefined;
9635
+ /** The regular expression button's label. */
9636
+ regexLabel?: (HelixFind["regexLabel"]) | undefined;
9637
+ /** The Replace all button's words. */
9638
+ "replace-all-label"?: (HelixFind["replaceAllLabel"]) | undefined;
9639
+ /** The Replace all button's words. */
9640
+ replaceAllLabel?: (HelixFind["replaceAllLabel"]) | undefined;
9641
+ /** The replace field's name and placeholder. */
9642
+ "replace-field-label"?: (HelixFind["replaceFieldLabel"]) | undefined;
9643
+ /** The replace field's name and placeholder. */
9644
+ replaceFieldLabel?: (HelixFind["replaceFieldLabel"]) | undefined;
9645
+ /** The Replace button's words. */
9646
+ "replace-label"?: (HelixFind["replaceLabel"]) | undefined;
9647
+ /** The Replace button's words. */
9648
+ replaceLabel?: (HelixFind["replaceLabel"]) | undefined;
9649
+ /** What the replace field holds, which Replace puts in place of a match. */
9650
+ replacement?: (HelixFind["replacement"]) | undefined;
9651
+ /** The label of the button that shows the replace row. */
9652
+ "replace-toggle-label"?: (HelixFind["replaceToggleLabel"]) | undefined;
9653
+ /** The label of the button that shows the replace row. */
9654
+ replaceToggleLabel?: (HelixFind["replaceToggleLabel"]) | undefined;
9655
+ /** The key that opens the bar, as a chord such as `mod+f`, where `mod` is
9656
+ Command on an Apple keyboard and Control elsewhere. Empty turns the key
9657
+ off, as for a bar the page opens itself. */
9658
+ shortcut?: (HelixFind["shortcut"]) | undefined;
9659
+ /** Elements inside the content whose text is not searched, as a selector,
9660
+ such as line numbers or the buttons beside each message. */
9661
+ skip?: (HelixFind["skip"]) | undefined;
9662
+ /** Whether only whole words match. The reader turns it on and off from the bar. */
9663
+ "whole-word"?: (HelixFind["wholeWord"]) | undefined;
9664
+ /** Whether only whole words match. The reader turns it on and off from the bar. */
9665
+ wholeWord?: (HelixFind["wholeWord"]) | undefined;
9666
+ /** The whole word button's label. */
9667
+ "whole-word-label"?: (HelixFind["wholeWordLabel"]) | undefined;
9668
+ /** The whole word button's label. */
9669
+ wholeWordLabel?: (HelixFind["wholeWordLabel"]) | undefined;
9670
+ };
9671
+
9672
+ export type HelixFindVueEvents = {
9673
+ /** Sent when the bar opens or closes, with `newState` and `oldState`. */
9674
+ toggle: HelixFindToggleElementEvent;
9675
+ /** Fired before the bar closes, and cancelable. */
9676
+ "helix-before-close": HelixFindHelixBeforeCloseElementEvent;
9677
+ /** Fired before the bar opens, and cancelable. Canceling it keeps the bar closed. */
9678
+ "helix-before-open": HelixFindHelixBeforeOpenElementEvent;
9679
+ /** Sent after each search and each move among the matches, with `count` and the current match's `index`, counting from 0, or -1 for none. */
9680
+ "helix-found": HelixFindHelixFoundElementEvent;
9681
+ };
9682
+
9369
9683
  export type HelixFlexVueProps = {
9370
9684
  /** How the lines of a wrapping row share the space across it, set as
9371
9685
  `align-content`.
@@ -10471,6 +10785,36 @@ is the platform's `commandfor`. */
10471
10785
  commandfor?: (HelixIconButton["commandFor"]) | undefined;
10472
10786
  /** The id of the element the command is sent to. */
10473
10787
  commandFor?: (HelixIconButton["commandFor"]) | undefined;
10788
+ /** Whether a disabled button stays in the tab order, so a tooltip around it
10789
+ can say why it is disabled.
10790
+
10791
+ Set it on a button whose reason a Tooltip gives, such as a Save with no
10792
+ changes to save. While the button is disabled, it keeps focus and takes
10793
+ hover, and it refuses every press: a click, Enter and Space, and Enter in
10794
+ a field of its form. The click does not reach your listeners, and a submit
10795
+ button submits nothing. The inner control carries `aria-disabled` in place
10796
+ of the native `disabled`, so a screen reader still says it is unavailable.
10797
+ The styled button keeps the disabled look.
10798
+
10799
+ Leave it unset on a button with no reason to give. A plain disabled button
10800
+ leaves the tab order, as a native one does, and a keyboard reader skips a
10801
+ stop that does nothing. Set `pending` for the wait after a press. */
10802
+ "focusable-when-disabled"?: (HelixIconButton["focusableWhenDisabled"]) | undefined;
10803
+ /** Whether a disabled button stays in the tab order, so a tooltip around it
10804
+ can say why it is disabled.
10805
+
10806
+ Set it on a button whose reason a Tooltip gives, such as a Save with no
10807
+ changes to save. While the button is disabled, it keeps focus and takes
10808
+ hover, and it refuses every press: a click, Enter and Space, and Enter in
10809
+ a field of its form. The click does not reach your listeners, and a submit
10810
+ button submits nothing. The inner control carries `aria-disabled` in place
10811
+ of the native `disabled`, so a screen reader still says it is unavailable.
10812
+ The styled button keeps the disabled look.
10813
+
10814
+ Leave it unset on a button with no reason to give. A plain disabled button
10815
+ leaves the tab order, as a native one does, and a keyboard reader skips a
10816
+ stop that does nothing. Set `pending` for the wait after a press. */
10817
+ focusableWhenDisabled?: (HelixIconButton["focusableWhenDisabled"]) | undefined;
10474
10818
  /** Where this button's submission goes, overriding the form's own.
10475
10819
 
10476
10820
  **The five `form*` overrides ride on a native submit button that stands in
@@ -10933,6 +11277,10 @@ token.
10933
11277
  Empty leaves the attribute off, which is the browser's default. Set it to
10934
11278
  a token like `email` or `bday` to ask for autofill, or to `off` to refuse. */
10935
11279
  autocomplete?: (HelixInput["autocomplete"]) | undefined;
11280
+ /** Whether the browser corrects words as the reader types, as the platform's
11281
+ `autocorrect`. Turn it off, with `autocorrect="off"`, for text that is not
11282
+ prose, such as an address or a code, which corrections would change. */
11283
+ autocorrect?: (HelixInput["autocorrect"]) | undefined;
10936
11284
  /** Whether the field shows a button that empties it.
10937
11285
 
10938
11286
  Shown only while there is something to clear, because a control that does
@@ -12542,7 +12890,10 @@ export type HelixLogVueProps = {
12542
12890
  - `plain` has no edge, no fill, no inset and no height of its own: the
12543
12891
  lines start where the text around them does and the log grows with
12544
12892
  them. For a log inside something that already frames it, such as an
12545
- agent's work in a chat turn's `work` slot.
12893
+ agent's work in a chat turn's `work` slot. Each step is a row with its
12894
+ status mark on that edge and its caret after the heading. A step that
12895
+ holds steps draws a rule beside them, and a step that holds lines draws
12896
+ them on a quiet surface that scrolls after `--log-step-max-block-size`.
12546
12897
 
12547
12898
  Both are writable, so a page can say which it means rather than relying
12548
12899
  on the absence of an attribute. */
@@ -13797,6 +14148,20 @@ export type HelixMenuHelixSelectElementEvent =
13797
14148
  HelixMenuElementEvent<HelixSelectEvent>;
13798
14149
 
13799
14150
  export type HelixMenuVueProps = {
14151
+ /** The panel's surface: `frosted` or `glass`.
14152
+
14153
+ Absent is the opaque overlay surface. `glass` is the page's translucent
14154
+ ground over a blur, for a page whose surfaces are glass, so a panel opened
14155
+ over a glass window is not the one opaque slab on it. `frosted` is the same
14156
+ pair turned up, a ground that admits less and a heavier blur.
14157
+
14158
+ The strength is the theme's: `--helix-material-translucent`,
14159
+ `--helix-material-translucent-strong` and `--helix-material-backdrop` are
14160
+ what the policy moves. `Drawer` and `Tooltip` carry the same attribute.
14161
+
14162
+ **No `transparent`, deliberately.** A panel floating over arbitrary page
14163
+ content is only readable because it has a ground. */
14164
+ material?: (HelixMenu["material"]) | undefined;
13800
14165
  /** The text shown and announced when there are no rows and none are loading. */
13801
14166
  "empty-text"?: (HelixMenu["emptyText"]) | undefined;
13802
14167
  /** The text shown and announced when there are no rows and none are loading. */
@@ -14147,6 +14512,24 @@ export type HelixMeterVueEvents = {
14147
14512
  "helix-band": HelixMeterHelixBandElementEvent;
14148
14513
  };
14149
14514
 
14515
+ export type HelixMeterSegmentVueProps = {
14516
+ /** What the segment is, such as "Tools", which names the slice when a pointer
14517
+ rests on it.
14518
+
14519
+ Not announced: see the note on a meter's children above. */
14520
+ label?: (HelixMeterSegment["label"]) | undefined;
14521
+ /** What the segment means, as it does on a callout. Takes the tone's color in
14522
+ place of the next color in the series. */
14523
+ tone?: (HelixMeterSegment["tone"]) | undefined;
14524
+ /** How much of the meter's range the segment takes, in the units of the meter's
14525
+ `min` and `max`.
14526
+
14527
+ A value that is not a number, or is below zero, draws nothing. */
14528
+ value?: (HelixMeterSegment["value"]) | undefined;
14529
+ };
14530
+
14531
+ export type HelixMeterSegmentVueEvents = {};
14532
+
14150
14533
  /** `HelixMotionToggle` component event */
14151
14534
  export type HelixMotionToggleElementEvent<E = Event> = TypedEvent<
14152
14535
  HelixMotionToggle,
@@ -15729,6 +16112,20 @@ export type HelixPopoverHelixBeforeOpenElementEvent =
15729
16112
  HelixPopoverElementEvent<HelixBeforeOpenEvent>;
15730
16113
 
15731
16114
  export type HelixPopoverVueProps = {
16115
+ /** The panel's surface: `frosted` or `glass`.
16116
+
16117
+ Absent is the opaque overlay surface. `glass` is the page's translucent
16118
+ ground over a blur, for a page whose surfaces are glass, so a panel opened
16119
+ over a glass window is not the one opaque slab on it. `frosted` is the same
16120
+ pair turned up, a ground that admits less and a heavier blur.
16121
+
16122
+ The strength is the theme's: `--helix-material-translucent`,
16123
+ `--helix-material-translucent-strong` and `--helix-material-backdrop` are
16124
+ what the policy moves. `Drawer` and `Tooltip` carry the same attribute.
16125
+
16126
+ **No `transparent`, deliberately.** A panel floating over arbitrary page
16127
+ content is only readable because it has a ground. */
16128
+ material?: (HelixPopover["material"]) | undefined;
15732
16129
  /** How the panel is set apart from the content under it.
15733
16130
 
15734
16131
  One of the axis's four values, which is all this surface has meaning for: a
@@ -18186,6 +18583,13 @@ shows the bars behind it. Absent is the filled bar, per the rule that a
18186
18583
  reflected property takes no default, and `solid` writes it out. A
18187
18584
  renderer draws the bars the same way.
18188
18585
 
18586
+ **`muted` draws every bar in the neutral ink**, so the one bar whose cell
18587
+ names a tone, such as `data-tone="primary"`, is the bar in color, with a
18588
+ soft glow in its tone: one reading lit among the others, such as today
18589
+ among a week. Each top takes the most ink and each side less, as a
18590
+ colored bar's faces do. A renderer draws the neutral bars and the toned
18591
+ one, without the glow.
18592
+
18189
18593
  It composes with `material`: emphasis decides what is drawn, and material
18190
18594
  how much of it comes through. The outline on the bar the keys rest on
18191
18595
  keeps its own ink. */
@@ -18296,13 +18700,42 @@ press, and the sound is made only then. */
18296
18700
  for no one else. Reflected, because the stylesheet draws it by the
18297
18701
  attribute, and a page that sets the property, as React does, writes none. */
18298
18702
  summary?: (HelixSpatialBarChart["summary"]) | undefined;
18299
- /** Draws no box: no edges, grid, numbers, or names, so the readings stand
18300
- alone and fill the plot, as a picture on a product's own page does. The
18703
+ /** Grows the bars up from the floor the first time the chart comes into
18704
+ view with readings, each category a little after the one before it, so
18705
+ the drawing arrives the way a page's own picture does. The growth is
18706
+ fast at first, slows to rest, and never passes a bar's value.
18707
+
18708
+ Under `prefers-reduced-motion`, or where the page has paused its motion
18709
+ through `pauseMotion` or `Motion Toggle`, the bars stand at their height
18710
+ from the start. A later table draws the bars it already had at their
18711
+ height, and grows the bars it adds, each from the floor, so a reading that
18712
+ arrives while the chart is in view arrives the same way. */
18713
+ grow?: (HelixSpatialBarChart["grow"]) | undefined;
18714
+ /** Grows the bars again each time the chart comes back into view after it
18715
+ left it, as a pane does when it is opened again, where `grow` alone grows
18716
+ them the first time only. Only a chart that grows takes it.
18717
+
18718
+ While it is out of view the bars stand at the floor, so the first frame
18719
+ after it returns is the start of the growth and never a flash at full
18720
+ height. */
18721
+ "grow-again"?: (HelixSpatialBarChart["growAgain"]) | undefined;
18722
+ /** Grows the bars again each time the chart comes back into view after it
18723
+ left it, as a pane does when it is opened again, where `grow` alone grows
18724
+ them the first time only. Only a chart that grows takes it.
18725
+
18726
+ While it is out of view the bars stand at the floor, so the first frame
18727
+ after it returns is the start of the growth and never a flash at full
18728
+ height. */
18729
+ growAgain?: (HelixSpatialBarChart["growAgain"]) | undefined;
18730
+ /** Draws no box: no edges, grid, numbers, or names, and in a `row` no
18731
+ floor, so the readings stand alone and fill the plot, as a picture on a
18732
+ product's own page does. The
18301
18733
  table, the summary, the tooltip, and the keys still carry every value,
18302
18734
  and a renderer draws no box either. */
18303
18735
  "no-box"?: (HelixSpatialBarChart["noBox"]) | undefined;
18304
- /** Draws no box: no edges, grid, numbers, or names, so the readings stand
18305
- alone and fill the plot, as a picture on a product's own page does. The
18736
+ /** Draws no box: no edges, grid, numbers, or names, and in a `row` no
18737
+ floor, so the readings stand alone and fill the plot, as a picture on a
18738
+ product's own page does. The
18306
18739
  table, the summary, the tooltip, and the keys still carry every value,
18307
18740
  and a renderer draws no box either. */
18308
18741
  noBox?: (HelixSpatialBarChart["noBox"]) | undefined;
@@ -18316,6 +18749,15 @@ and a renderer draws no box either. */
18316
18749
  "plot-label"?: (HelixSpatialBarChart["plotLabel"]) | undefined;
18317
18750
  /** The plot's name where the chart has none: no `aria-label`, `label`, or table caption. */
18318
18751
  plotLabel?: (HelixSpatialBarChart["plotLabel"]) | undefined;
18752
+ /** Stacks a category's series into one column, each block standing on the
18753
+ ones before it, so the column is as tall as the category's total, as a
18754
+ flat `Bar Chart` stacks them.
18755
+
18756
+ Absent stands the series one behind another in depth. Stacked, every
18757
+ series stands in the front row, so none hides another, and the parts of
18758
+ one total read together. A negative reading hangs below zero on the
18759
+ negatives before it. The scale fits the stacks. */
18760
+ stacked?: (HelixSpatialBarChart["stacked"]) | undefined;
18319
18761
  /** The `summary` part's sentence. `{count}`, `{series}`, and `{categories}`
18320
18762
  are the number of bars, series, and categories, written in the locale,
18321
18763
  and `{low}` and `{high}` the lowest and the highest value. */
@@ -18324,6 +18766,38 @@ and `{low}` and `{high}` the lowest and the highest value. */
18324
18766
  are the number of bars, series, and categories, written in the locale,
18325
18767
  and `{low}` and `{high}` the lowest and the highest value. */
18326
18768
  summaryLabel?: (HelixSpatialBarChart["summaryLabel"]) | undefined;
18769
+ /** How the bars stand.
18770
+
18771
+ Unset, they stand on a grid of categories across and series in depth,
18772
+ in a box the camera looks at from a corner, so the grid recedes at an
18773
+ angle. `row` lays the categories in a straight line across the page and
18774
+ turns each bar to the camera, showing its top and two sides, for one row
18775
+ of readings in a small space such as a pane: turning the view turns each
18776
+ bar where it stands, and the row stays level. It is the chart's own
18777
+ drawing that lays the row: a renderer connected through
18778
+ `@fusion.dev/helix-plot` stands the bars on the grid.
18779
+
18780
+ `diagonal` is the same row climbing to the right as it recedes, each
18781
+ place a step further back than the one before, as a row of days on a
18782
+ product's page is drawn: the row rises one part in five across the page
18783
+ from any turn, and its floor and names climb with it. A row whose bars
18784
+ have a size climbs at most a quarter of the plot's height, so the bars
18785
+ of a long row keep theirs.
18786
+
18787
+ **A row draws its floor in place of a box**: each place as an outline a
18788
+ little wider than its bar, and each category's name under it, as many
18789
+ names as fit without touching. A name whose bar names a tone is written
18790
+ first, in that tone. `no-box` leaves the floor and the names out.
18791
+
18792
+ **A `column-gap` on the `fallback` part gives a row's bars one width**,
18793
+ which the styled tier sets from `--spatial-bar-chart-bar-size`: one bar
18794
+ stands as wide as each of twenty, the row is as long as its bars and
18795
+ centered, the tallest bar stands as high as the plot has room for and
18796
+ no taller than the row is long and a quarter again, so one bar stands
18797
+ as a block, and `fits` says how many bars the plot holds, so a page
18798
+ can give it the latest of a longer table. It is read when the plot's
18799
+ size changes. */
18800
+ variant?: (HelixSpatialBarChart["variant"]) | undefined;
18327
18801
  /** The readings as data, in the shape of a table, where the page has no
18328
18802
  table to point `for` at. `for` wins where both are set.
18329
18803
 
@@ -20064,6 +20538,14 @@ own. */
20064
20538
  /** How much the glow around the strands adds, as a multiplier. `0` draws the
20065
20539
  strands alone, crisp and dimmer, and `1` is the default glow. */
20066
20540
  bloom?: (HelixStrands["bloom"]) | undefined;
20541
+ /** Whether the light is drawn alone, without the ground under it, so what is
20542
+ behind the element shows through, such as a translucent pane or a window's
20543
+ glass. The ground still says which way the page runs: light added on a
20544
+ dark one, ink on a light one.
20545
+
20546
+ Reflected because the stylesheet selects on it: the band under the canvas
20547
+ shows only while the element falls back, and loses its ground too. */
20548
+ clear?: (HelixStrands["clear"]) | undefined;
20067
20549
  /** How far apart the brightest and dimmest strands are, from `0`, most of
20068
20550
  them alike, to `1`, a few burning bright over many faint ones. Clamped to
20069
20551
  that range. The ribbon as a whole keeps its strength. */
@@ -20832,6 +21314,33 @@ export type HelixTabsHelixSelectElementEvent =
20832
21314
  HelixTabsElementEvent<HelixSelectEvent>;
20833
21315
 
20834
21316
  export type HelixTabsVueProps = {
21317
+ /** When the close mark of each `dismissible` tab shows.
21318
+
21319
+ Unset, or `always`, every mark shows. `hover` shows a tab's mark while it
21320
+ is current, under the pointer, or holds focus, and keeps its room on every
21321
+ tab, so the labels do not move as the marks come and go. For a strip of
21322
+ many dismissible tabs, where a mark on each reads as a row of crosses. A
21323
+ keyboard closes a tab with Delete whether its mark shows or not. */
21324
+ "dismiss-marks"?: (HelixTabs["dismissMarks"]) | undefined;
21325
+ /** When the close mark of each `dismissible` tab shows.
21326
+
21327
+ Unset, or `always`, every mark shows. `hover` shows a tab's mark while it
21328
+ is current, under the pointer, or holds focus, and keeps its room on every
21329
+ tab, so the labels do not move as the marks come and go. For a strip of
21330
+ many dismissible tabs, where a mark on each reads as a row of crosses. A
21331
+ keyboard closes a tab with Delete whether its mark shows or not. */
21332
+ dismissMarks?: (HelixTabs["dismissMarks"]) | undefined;
21333
+ /** How loud the mark on the current tab is.
21334
+
21335
+ Unset is the mark `variant` draws at rest. `subtle` is a tint with no
21336
+ edge or shadow: the raised pill becomes a wash, the `segmented` track's
21337
+ pill does the same inside it, and the `underlined` bar takes the
21338
+ foreground's ink in place of the primary color. For tabs inside other
21339
+ chrome, where a raised mark reads as a control laid on top of it.
21340
+
21341
+ Independent of `variant`, since each of its marks has a quiet form: the two
21342
+ answer different questions, which is the test the axis registry applies. */
21343
+ emphasis?: (HelixTabs["emphasis"]) | undefined;
20835
21344
  /** The `value` of the current item.
20836
21345
 
20837
21346
  Not `option.active`, which is the option the keyboard is on: that is a
@@ -21136,6 +21645,9 @@ export type HelixTerminalElementEvent<E = Event> = TypedEvent<HelixTerminal, E>;
21136
21645
  /** `helix-copy` event type */
21137
21646
  export type HelixTerminalHelixCopyElementEvent =
21138
21647
  HelixTerminalElementEvent<HelixCopyEvent>;
21648
+ /** `helix-found` event type */
21649
+ export type HelixTerminalHelixFoundElementEvent =
21650
+ HelixTerminalElementEvent<HelixFoundEvent>;
21139
21651
  /** `helix-terminal-bell` event type */
21140
21652
  export type HelixTerminalHelixTerminalBellElementEvent =
21141
21653
  HelixTerminalElementEvent<HelixTerminalBellEvent>;
@@ -21311,6 +21823,8 @@ write. Connect it to a setting your reader can turn on. */
21311
21823
  export type HelixTerminalVueEvents = {
21312
21824
  /** The copy control or its key put the selection on the clipboard. */
21313
21825
  "helix-copy": HelixTerminalHelixCopyElementEvent;
21826
+ /** The find bar searched or moved among the matches, with `count` and the current match's `index`, counting from 0, or -1 for none. */
21827
+ "helix-found": HelixTerminalHelixFoundElementEvent;
21314
21828
  /** The program rang the bell. The frame flashes once. */
21315
21829
  "helix-terminal-bell": HelixTerminalHelixTerminalBellElementEvent;
21316
21830
  /** The reader typed or pasted, with `data` encoded for the program. Write it to the process. Not sent while `readonly`, or once `exit-code` is set. */
@@ -23469,6 +23983,10 @@ appeared in the server's markup for every tree anybody rendered, which is
23469
23983
  the same fault `href` and `target` had on `Button`. The resting arrangement
23470
23984
  is the absence of the attribute, and the stylesheet only asks about `end`.
23471
23985
 
23986
+ `label` sets the chevron against the end of a branch's name, where the name
23987
+ takes only its own width, and leaves the `end` slot at the row's far side.
23988
+ A leaf is unchanged, since it has no chevron.
23989
+
23472
23990
  It is worth owning rather than leaving to `::part(toggle)`, which a
23473
23991
  consumer could reach for: the naive version is `order` plus an auto margin,
23474
23992
  and the row's `end` slot already carries an auto margin of its own, so the
@@ -23491,6 +24009,10 @@ appeared in the server's markup for every tree anybody rendered, which is
23491
24009
  the same fault `href` and `target` had on `Button`. The resting arrangement
23492
24010
  is the absence of the attribute, and the stylesheet only asks about `end`.
23493
24011
 
24012
+ `label` sets the chevron against the end of a branch's name, where the name
24013
+ takes only its own width, and leaves the `end` slot at the row's far side.
24014
+ A leaf is unchanged, since it has no chevron.
24015
+
23494
24016
  It is worth owning rather than leaving to `::part(toggle)`, which a
23495
24017
  consumer could reach for: the naive version is `order` plus an auto margin,
23496
24018
  and the row's `end` slot already carries an auto margin of its own, so the
@@ -25062,6 +25584,8 @@ export type CustomCssProperties = {
25062
25584
  "--chat-composer-background-color"?: (string) | undefined;
25063
25585
  /** Width of the composer's edge, so your theme can remove it. */
25064
25586
  "--chat-composer-border-width"?: (string) | undefined;
25587
+ /** Color of the focus glow under `glow`. Defaults to the primary color. */
25588
+ "--chat-composer-glow-color"?: (string) | undefined;
25065
25589
  /** Maximum height the field grows to. */
25066
25590
  "--chat-composer-max-block-size"?: (string) | undefined;
25067
25591
  /** 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. */
@@ -25210,7 +25734,7 @@ export type CustomCssProperties = {
25210
25734
  "--color-input-background-color"?: (string) | undefined;
25211
25735
  /** Color of the panel's edge. */
25212
25736
  "--color-input-border-color"?: (string) | undefined;
25213
- /** Width of the panel's edge. Defaults to `--helix-border-floating`, which is `0`, so the panel stands out by its shadow unless a theme sets a border. `--helix-border-floating`, which is `0`, so the panel is told apart by its lift unless a theme says otherwise. */
25737
+ /** Width of the panel's edge. Defaults to `--helix-border-floating`, a hairline, so the panel has an edge as well as its shadow over a dark page. Set it to `0` for the shadow alone. */
25214
25738
  "--color-input-border-width"?: (string) | undefined;
25215
25739
  /** Width of the panel, and so of the square. */
25216
25740
  "--color-input-panel-size"?: (string) | undefined;
@@ -25254,7 +25778,7 @@ export type CustomCssProperties = {
25254
25778
  "--combobox-background-color"?: (string) | undefined;
25255
25779
  /** Color of the panel's edge. */
25256
25780
  "--combobox-border-color"?: (string) | undefined;
25257
- /** Width of the panel's edge. Follows `--helix-border-floating`, which is `0` unless your theme sets it, so the panel's shadow sets it apart. */
25781
+ /** Width of the panel's edge. Follows `--helix-border-floating`, a hairline, so the panel has an edge as well as its shadow over a dark page. Set it to `0` for the shadow alone. */
25258
25782
  "--combobox-border-width"?: (string) | undefined;
25259
25783
  /** Smallest the text field shrinks to once tags share its line. */
25260
25784
  "--combobox-control-size"?: (string) | undefined;
@@ -25264,6 +25788,8 @@ export type CustomCssProperties = {
25264
25788
  "--combobox-shadow"?: (string) | undefined;
25265
25789
  /** How tall the list grows before it scrolls. */
25266
25790
  "--command-list-size"?: (string) | undefined;
25791
+ /** The corners of the palette's panel. Defaults to the dialog's. */
25792
+ "--command-radius"?: (string) | undefined;
25267
25793
  /** How wide the palette is. Defaults to `40rem`. */
25268
25794
  "--command-size"?: (string) | undefined;
25269
25795
  /** The icon's color at rest. A `tone` keeps its own. */
@@ -25384,7 +25910,7 @@ export type CustomCssProperties = {
25384
25910
  "--date-input-background-color"?: (string) | undefined;
25385
25911
  /** The color of the panel's border. */
25386
25912
  "--date-input-border-color"?: (string) | undefined;
25387
- /** The width of the panel's border. It follows `--helix-border-floating`, which is `0`, so the panel stands out by its shadow unless a theme sets a border. */
25913
+ /** The width of the panel's border. It follows `--helix-border-floating`, a hairline, so the panel has an edge as well as its shadow over a dark page. Set it to `0` for the shadow alone. */
25388
25914
  "--date-input-border-width"?: (string) | undefined;
25389
25915
  /** The fill behind the segment with focus, in `segmented`. It follows `--helix-color-primary-surface`. */
25390
25916
  "--date-input-segment-focus-background-color"?: (string) | undefined;
@@ -25466,11 +25992,13 @@ export type CustomCssProperties = {
25466
25992
  "--device-screen-touch-x"?: (string) | undefined;
25467
25993
  /** Where a ring is, down the screen, as a percentage. Written on each ring. */
25468
25994
  "--device-screen-touch-y"?: (string) | undefined;
25995
+ /** Filter applied behind a `frosted` or `glass` panel. Follows the theme's material policy. */
25996
+ "--dialog-backdrop"?: (string) | undefined;
25469
25997
  /** The panel's fill. Follows `--helix-color-surface-overlay`. */
25470
25998
  "--dialog-background-color"?: (string) | undefined;
25471
25999
  /** Color of the panel's edge. */
25472
26000
  "--dialog-border-color"?: (string) | undefined;
25473
- /** Width of the panel's edge. Follows `--helix-border-floating`, which is `0`, so the panel stands out by its shadow unless your theme sets a border. */
26001
+ /** Width of the panel's edge. Follows `--helix-border-floating`, a hairline, so the panel has an edge as well as its shadow over a dark page. Set it to `0` for the shadow alone. */
25474
26002
  "--dialog-border-width"?: (string) | undefined;
25475
26003
  /** Color of the words in the panel. Follows `--helix-color-foreground`. */
25476
26004
  "--dialog-color"?: (string) | undefined;
@@ -25532,7 +26060,7 @@ export type CustomCssProperties = {
25532
26060
  "--drawer-background-color"?: (string) | undefined;
25533
26061
  /** Color of the panel's edge. */
25534
26062
  "--drawer-border-color"?: (string) | undefined;
25535
- /** Width of the panel's edge. Follows `--helix-border-floating`, which is `0`, so the panel stands out by its shadow unless your theme sets a border. */
26063
+ /** Width of the panel's edge. Follows `--helix-border-floating`, a hairline, so the panel has an edge as well as its shadow over a dark page. Set it to `0` for the shadow alone. */
25536
26064
  "--drawer-border-width"?: (string) | undefined;
25537
26065
  /** Padding inside the panel. */
25538
26066
  "--drawer-padding"?: (string) | undefined;
@@ -25680,6 +26208,12 @@ export type CustomCssProperties = {
25680
26208
  "--filter-input-shadow"?: (string) | undefined;
25681
26209
  /** The height of the empty field. The field grows from this height. */
25682
26210
  "--filter-input-size"?: (string) | undefined;
26211
+ /** The bar's fill. Defaults to the raised surface. */
26212
+ "--find-background-color"?: (string) | undefined;
26213
+ /** The line under the bar and the fields' edges. */
26214
+ "--find-border-color"?: (string) | undefined;
26215
+ /** The fields' fill. Defaults to the page's background. */
26216
+ "--find-field-background-color"?: (string) | undefined;
25683
26217
  /** The narrowest the growing item of a `flank` layout gets before the two stack, as a share of the row. Defaults to `50%`. */
25684
26218
  "--flex-flank-min"?: (string) | undefined;
25685
26219
  /** The width of the fixed item of a `flank` layout. Defaults to its own width. */
@@ -26006,6 +26540,8 @@ export type CustomCssProperties = {
26006
26540
  "--log-scrollbar-thumb-color"?: (string) | undefined;
26007
26541
  /** The track of the scrollbar. Defaults to `--helix-scrollbar-track-color`. */
26008
26542
  "--log-scrollbar-track-color"?: (string) | undefined;
26543
+ /** How tall a step's lines may get in a `plain` log before they scroll. Defaults to 20rem. */
26544
+ "--log-step-max-block-size"?: (string) | undefined;
26009
26545
  /** The background a run takes where ANSI swaps the colors and named none. Defaults to the log's own background on the styled tier. */
26010
26546
  "--log-ansi-background"?: (string) | undefined;
26011
26547
  /** The ANSI color black, which codes `30` and `40` draw. */
@@ -26120,7 +26656,7 @@ export type CustomCssProperties = {
26120
26656
  "--megamenu-backdrop"?: (string) | undefined;
26121
26657
  /** The panel's fill. */
26122
26658
  "--megamenu-background-color"?: (string) | undefined;
26123
- /** The width of the panel's edge. Follows `--helix-border-floating`, which is `0` unless a theme changes it, so the panel stands out by its shadow. */
26659
+ /** The width of the panel's edge. Follows `--helix-border-floating`, a hairline, which is drawn in dark mode only. Set it to `0` for the shadow alone. */
26124
26660
  "--megamenu-border-width"?: (string) | undefined;
26125
26661
  /** The minimum width of a column before the grid wraps. */
26126
26662
  "--megamenu-column-size"?: (string) | undefined;
@@ -26172,11 +26708,13 @@ export type CustomCssProperties = {
26172
26708
  "--menu-item-hover-color"?: (string) | undefined;
26173
26709
  /** Width of the leading column, including the gap after it, for a row with more than a mark. The menu sets it for each page, and `0` removes the column. */
26174
26710
  "--menu-item-start"?: (string) | undefined;
26711
+ /** Filter applied behind a `frosted` or `glass` panel. Follows the theme's material policy. */
26712
+ "--menu-backdrop"?: (string) | undefined;
26175
26713
  /** Fill of the surface. */
26176
26714
  "--menu-background-color"?: (string) | undefined;
26177
26715
  /** Color of the panel's edge. */
26178
26716
  "--menu-border-color"?: (string) | undefined;
26179
- /** Width of the panel's edge. Defaults to `--helix-border-floating`, which is `0`, so the panel stands out by its shadow unless a theme sets a border. */
26717
+ /** Width of the panel's edge. Defaults to `--helix-border-floating`, a hairline, so the panel has an edge as well as its shadow over a dark page. Set it to `0` for the shadow alone. */
26180
26718
  "--menu-border-width"?: (string) | undefined;
26181
26719
  /** The tallest the menu grows before it scrolls. */
26182
26720
  "--menu-max-block-size"?: (string) | undefined;
@@ -26222,8 +26760,16 @@ export type CustomCssProperties = {
26222
26760
  "--meter-at"?: (string) | undefined;
26223
26761
  /** The value as a fraction of the range, 0 to 1. */
26224
26762
  "--meter-fraction"?: (string) | undefined;
26763
+ /** How much the range holds, `max` less `min`, which a segment divides its own value by to find its width. */
26764
+ "--meter-span"?: (string) | undefined;
26225
26765
  /** How much of the circle the arc covers, as a path length. */
26226
26766
  "--meter-sweep"?: (string) | undefined;
26767
+ /** The slice's color. Overrides the series and the tone. */
26768
+ "--meter-segment-color"?: (string) | undefined;
26769
+ /** The color of the hairline between neighbors. */
26770
+ "--meter-segment-gap-color"?: (string) | undefined;
26771
+ /** How much of the range the segment takes, in the meter's own units. */
26772
+ "--meter-segment-value"?: (string) | undefined;
26227
26773
  /** The button's fill. Defaults to the floating overlay surface. */
26228
26774
  "--motion-toggle-background-color"?: (string) | undefined;
26229
26775
  /** Height of the bar in a row. Each destination fills it. */
@@ -26446,9 +26992,13 @@ export type CustomCssProperties = {
26446
26992
  "--pin-input-separator-color"?: (string) | undefined;
26447
26993
  /** Size of the point drawn with `arrow`. Tooltip's point is the same size. */
26448
26994
  "--popover-arrow-size"?: (string) | undefined;
26995
+ /** Filter applied behind a `frosted` or `glass` panel. Follows the theme's material policy. */
26996
+ "--popover-backdrop"?: (string) | undefined;
26997
+ /** Fill of the surface. */
26998
+ "--popover-background-color"?: (string) | undefined;
26449
26999
  /** Color of the panel's edge. */
26450
27000
  "--popover-border-color"?: (string) | undefined;
26451
- /** Width of the panel's edge. Defaults to `--helix-border-floating`, which is `0`, so the panel stands out by its shadow unless your theme sets a width. */
27001
+ /** Width of the panel's edge. Defaults to `--helix-border-floating`, a hairline, so the panel has an edge as well as its shadow over a dark page. Set it to `0` for the shadow alone. */
26452
27002
  "--popover-border-width"?: (string) | undefined;
26453
27003
  /** Width of the panel. */
26454
27004
  "--popover-inline-size"?: (string) | undefined;
@@ -26624,13 +27174,13 @@ export type CustomCssProperties = {
26624
27174
  "--chart-point-y"?: (string) | undefined;
26625
27175
  /** A tick's position along its axis, as a percentage. The component writes it. */
26626
27176
  "--chart-tick"?: (string) | undefined;
26627
- /** The depth of the fades at both edges. */
27177
+ /** The depth of the fade at each edge. */
26628
27178
  "--scroll-area-fade"?: (string) | undefined;
26629
27179
  /** The depth of the bottom fade, or `0` to remove it. */
26630
27180
  "--scroll-area-fade-block-end"?: (string) | undefined;
26631
27181
  /** The depth of the top fade, or `0` to remove it. */
26632
27182
  "--scroll-area-fade-block-start"?: (string) | undefined;
26633
- /** The color the fades blend into, which is the background behind the box. */
27183
+ /** The color to paint the fades in, as a gradient over the content at each edge. Unset, the fades are a mask. */
26634
27184
  "--scroll-area-fade-color"?: (string) | undefined;
26635
27185
  /** The depth of the fade at the inline end, or `0` to remove it. */
26636
27186
  "--scroll-area-fade-inline-end"?: (string) | undefined;
@@ -26648,13 +27198,17 @@ export type CustomCssProperties = {
26648
27198
  "--scroll-area-thumb-min-size"?: (string) | undefined;
26649
27199
  /** The color of the scrollbar's track. Defaults to `--helix-scrollbar-track-color`. */
26650
27200
  "--scroll-area-track-color"?: (string) | undefined;
27201
+ /** The room the browser's horizontal scrollbar takes at the block end of the viewport, in pixels. Written on the `viewport` part while that scrollbar takes room, and absent while it draws over the content. */
27202
+ "--scroll-area-gutter-block-end"?: (string) | undefined;
27203
+ /** The room the browser's vertical scrollbar takes at the inline end of the viewport, in pixels. Written on the `viewport` part while that scrollbar takes room, and absent while it draws over the content. */
27204
+ "--scroll-area-gutter-inline-end"?: (string) | undefined;
26651
27205
  /** How far along its axis the content is scrolled, from 0 at the start to 1 at the end. Written on each `scrollbar` part, so its thumb inherits it. Counted from the right on a right-to-left page. */
26652
27206
  "--scroll-area-scroll-fraction"?: (string) | undefined;
26653
27207
  /** The share of the track the thumb covers, from 0 to 1, which is how much of the content is in view. Written on each `scrollbar` part. */
26654
27208
  "--scroll-area-thumb-fraction"?: (string) | undefined;
26655
27209
  /** Color of the panel's edge. */
26656
27210
  "--select-border-color"?: (string) | undefined;
26657
- /** Width of the panel's edge. Defaults to `--helix-border-floating`, which is `0`, so the panel stands out by its shadow unless your theme sets a width. */
27211
+ /** Width of the panel's edge. Defaults to `--helix-border-floating`, a hairline, so the panel has an edge as well as its shadow over a dark page. Set it to `0` for the shadow alone. */
26658
27212
  "--select-border-width"?: (string) | undefined;
26659
27213
  /** Shadow under the panel. Defaults to `--helix-shadow-floating`, because the panel can sit over any content. */
26660
27214
  "--select-shadow"?: (string) | undefined;
@@ -26688,7 +27242,7 @@ export type CustomCssProperties = {
26688
27242
  "--skip-link-background-color"?: (string) | undefined;
26689
27243
  /** The border color of the link while it is shown. */
26690
27244
  "--skip-link-border-color"?: (string) | undefined;
26691
- /** The border width of the link while it is shown. Follows `--helix-border-floating`, which is `0`, so the link is set apart by its shadow unless a theme sets a border. */
27245
+ /** The border width of the link while it is shown. Follows `--helix-border-floating`, a hairline. Set it to `0` for the shadow alone. */
26692
27246
  "--skip-link-border-width"?: (string) | undefined;
26693
27247
  /** The text color of the link while it is shown. */
26694
27248
  "--skip-link-color"?: (string) | undefined;
@@ -26774,10 +27328,26 @@ export type CustomCssProperties = {
26774
27328
  "--sparkline-readout-font-size"?: (string) | undefined;
26775
27329
  /** Thickness of the line, overriding `weight`. */
26776
27330
  "--sparkline-width"?: (string) | undefined;
27331
+ /** How wide each bar of a `row` or a `diagonal` stands on the page, whatever the number of bars: the row is as long as its bars make it, centered in the plot, and the tallest bar stands as high as the plot has room for, and no taller than the row is long and a quarter again, so one bar stands as a block. `fits` says how many bars the plot holds. Unset, the row fills the plot's width. */
27332
+ "--spatial-bar-chart-bar-size"?: (string) | undefined;
26777
27333
  /** How tall the plot is. By default, three quarters of its width and 22em at most. */
26778
27334
  "--spatial-bar-chart-block-size"?: (string) | undefined;
26779
- /** How far a bar's face turns from the light, from 0 for its top. The component writes it on each face, and the stylesheet that shades the face reads it. */
26780
- "--spatial-bar-chart-shade"?: (string) | undefined;
27335
+ /** */
27336
+ "--spatial-bar-chart-shade -How far a bar's face turns from the light, from 0 for its top. The component writes it on each face, and the stylesheet that shades the face reads it."?: (string) | undefined;
27337
+ /** The color of a bar whose cell says `data-tone="accent"`. */
27338
+ "--spatial-bar-chart-tone-accent"?: (string) | undefined;
27339
+ /** The color of a bar whose cell says `data-tone="danger"`. */
27340
+ "--spatial-bar-chart-tone-danger"?: (string) | undefined;
27341
+ /** The color of a bar whose cell says `data-tone="info"`. */
27342
+ "--spatial-bar-chart-tone-info"?: (string) | undefined;
27343
+ /** The color of a bar whose cell says `data-tone="muted"`. */
27344
+ "--spatial-bar-chart-tone-muted"?: (string) | undefined;
27345
+ /** The color of a bar whose cell says `data-tone="primary"`. A tone with no property of its own falls back to the bar's series color, and the same holds for a name you define. */
27346
+ "--spatial-bar-chart-tone-primary"?: (string) | undefined;
27347
+ /** The color of a bar whose cell says `data-tone="success"`. */
27348
+ "--spatial-bar-chart-tone-success"?: (string) | undefined;
27349
+ /** The color of a bar whose cell says `data-tone="warning"`. */
27350
+ "--spatial-bar-chart-tone-warning"?: (string) | undefined;
26781
27351
  /** The largest a cell grows, along its edge. The strip is never wider than its box, and draws smaller cells to fit. */
26782
27352
  "--spatial-heatmap-cell-size"?: (string) | undefined;
26783
27353
  /** How much less light the left face is than the top, as a step of OKLCH lightness from 0 to 1. 0.07 by default. */
@@ -27018,6 +27588,8 @@ export type CustomCssProperties = {
27018
27588
  "--tabs-tab-hover-background-color"?: (string) | undefined;
27019
27589
  /** The label color under the pointer. */
27020
27590
  "--tabs-tab-hover-color"?: (string) | undefined;
27591
+ /** The widest a tab grows. A longer label ends in an ellipsis, as a tag's does. Unset, a tab is as wide as its label. */
27592
+ "--tabs-tab-max-inline-size"?: (string) | undefined;
27021
27593
  /** The space either side of the label. */
27022
27594
  "--tabs-tab-padding-inline"?: (string) | undefined;
27023
27595
  /** The corners of a tab, which the hover wash takes. */
@@ -27128,7 +27700,7 @@ export type CustomCssProperties = {
27128
27700
  "--time-input-background-color"?: (string) | undefined;
27129
27701
  /** Color of the panel's edge. */
27130
27702
  "--time-input-border-color"?: (string) | undefined;
27131
- /** Width of the panel's edge. Defaults to `--helix-border-floating`, which is `0`, so the panel stands out by its shadow unless your theme sets a width. */
27703
+ /** Width of the panel's edge. Defaults to `--helix-border-floating`, a hairline, so the panel has an edge as well as its shadow over a dark page. Set it to `0` for the shadow alone. */
27132
27704
  "--time-input-border-width"?: (string) | undefined;
27133
27705
  /** The fill behind the segment with focus, in `segmented`. It follows `--helix-color-primary-surface`. */
27134
27706
  "--time-input-segment-focus-background-color"?: (string) | undefined;
@@ -27188,7 +27760,7 @@ export type CustomCssProperties = {
27188
27760
  "--toast-background-color"?: (string) | undefined;
27189
27761
  /** Color of the panel's edge. */
27190
27762
  "--toast-border-color"?: (string) | undefined;
27191
- /** Width of the panel's edge. Follows `--helix-border-floating`, which is `0`, so the panel stands out by its shadow unless your theme sets a border. */
27763
+ /** Width of the panel's edge. Follows `--helix-border-floating`, a hairline, so the panel has an edge as well as its shadow over a dark page. Set it to `0` for the shadow alone. */
27192
27764
  "--toast-border-width"?: (string) | undefined;
27193
27765
  /** Color of the message's text. */
27194
27766
  "--toast-color"?: (string) | undefined;
@@ -27290,7 +27862,7 @@ export type CustomCssProperties = {
27290
27862
  "--tour-spotlight-y"?: (string) | undefined;
27291
27863
  /** The size of the arrow's box, before it is rotated. */
27292
27864
  "--tour-arrow-size"?: (string) | undefined;
27293
- /** The width of the panel's border. It follows `--helix-border-floating`, which is `0`, so the panel stands out by its shadow unless a theme sets a border. */
27865
+ /** The width of the panel's border. It follows `--helix-border-floating`, a hairline, so the panel has an edge as well as its shadow over a dark page. Set it to `0` for the shadow alone. */
27294
27866
  "--tour-border-width"?: (string) | undefined;
27295
27867
  /** The widest the panel can grow. */
27296
27868
  "--tour-bubble-size"?: (string) | undefined;
@@ -27628,7 +28200,7 @@ export interface WcToolkitVueGlobalComponents {
27628
28200
  HelixCarouselVueProps,
27629
28201
  HelixCarouselVueEvents
27630
28202
  >;
27631
- /** The composer is one row, and the field takes the remaining width. The field grows with its text up to a maximum height, through 'field-sizing: content'. Where that is not supported, the field keeps its rows and scrolls. The maximum height keeps the composer from covering the transcript. */
28203
+ /** The composer is one box. What the draft carries sits at its top, in a row that wraps, inset to the line the caret starts on. The field grows with its text up to a maximum height, through 'field-sizing: content'. Where that is not supported, the field keeps its rows and scrolls. The maximum height keeps the composer from covering the transcript. With two 'placeholders' or more, each example rolls into the next: the one showing rises a little as it fades and blurs, and the next rises into its place from below as it fades in, the two crossing so the field is never empty. A box that changes height for the next example changes as it lands. Where the browser has no CSS anchor positioning, the examples fade into each other in the field's own placeholder. */
27632
28204
  "helix-chat-composer": DefineCustomElement<
27633
28205
  HelixChatComposer,
27634
28206
  HelixChatComposerVueProps,
@@ -27826,6 +28398,12 @@ export interface WcToolkitVueGlobalComponents {
27826
28398
  HelixFilterInputVueProps,
27827
28399
  HelixFilterInputVueEvents
27828
28400
  >;
28401
+ /** Drawn as the find bars of Terminal and Code Editor are: a dense strip on the raised surface, with a line under it where it meets the content. Place it above the content it searches, such as at the top of a pane, or make it sticky with 'position: sticky' on the element. Every match is painted with '::highlight(helix-find-match)' and the current one with '::highlight(helix-find-current)', both in the base layer. Text is painted from the tree it lives in, so content in a shadow root of your own needs the two rules in that root's styles. */
28402
+ "helix-find": DefineCustomElement<
28403
+ HelixFind,
28404
+ HelixFindVueProps,
28405
+ HelixFindVueEvents
28406
+ >;
27829
28407
  /** The host is the flex container and its only child is a slot, so '<helix-flex>' adds no box beyond the '<div>' it replaces. There is no separate Stack component. For a stack, set 'direction="column"'. 'gap' takes a space token name, so spacing stays on the scale. 'row-gap' and 'column-gap' set one axis each and win over 'gap' on theirs. 'layout' sets up a common pattern, and any attribute you also write wins over the pattern's own value: - 'cluster': items in a wrapping row, centered on one line, such as tags. - 'split': the first item at the start, the last at the end, and any between them spaced evenly, such as a title and its actions. Put several actions in a flex of their own so they stay together at the end. Wraps when there is no room. - 'flank' and 'flank-end': a fixed item beside one that takes the rest, such as an icon and its text, or a field and its button. The item that takes the rest stays at least '--flex-flank-min' wide, and the pair stacks once it cannot. - 'switch': the items share a row while the flex is at least '--flex-switch-at' wide, and each takes a line of its own below that, such as cards that stack on a narrow screen. It answers the width the flex is given, wherever it sits, with no breakpoint to maintain. Flex is presentation only, so it has no headless tier. */
27830
28408
  "helix-flex": DefineCustomElement<
27831
28409
  HelixFlex,
@@ -28054,6 +28632,12 @@ export interface WcToolkitVueGlobalComponents {
28054
28632
  HelixMeterVueProps,
28055
28633
  HelixMeterVueEvents
28056
28634
  >;
28635
+ /** Each segment takes the next color in the chart series, in the order written, so two of them are told apart without being given a color. A 'tone' is what a segment means, and takes the place of its turn. A hairline in the track's ground sits between neighbors, so the boundary is there for a reader who cannot tell two of the colors apart. Write the segments inside a meter, and the page imports the family beside it: '''js import '@fusion.dev/helix/meter' ''' */
28636
+ "helix-meter-segment": DefineCustomElement<
28637
+ HelixMeterSegment,
28638
+ HelixMeterSegmentVueProps,
28639
+ HelixMeterSegmentVueEvents
28640
+ >;
28057
28641
  /** A quiet square button, as the controls over a map are, with the pause icon while motion runs and the play icon while it is paused. Text slotted into it stands beside the icon. */
28058
28642
  "helix-motion-toggle": DefineCustomElement<
28059
28643
  HelixMotionToggle,
@@ -28234,7 +28818,7 @@ export interface WcToolkitVueGlobalComponents {
28234
28818
  HelixScatterChartVueProps,
28235
28819
  HelixScatterChartVueEvents
28236
28820
  >;
28237
- /** Presentation only: fades on the edges the base class reports, and a scrollbar styled to match the design system. The base class measures which edges have content past them. Under 'scrollbars', the browser's scrollbar is hidden and the component's own are drawn over the content at the edge, in the same colors. */
28821
+ /** Presentation only: fades on the edges the base class reports, and a scrollbar styled to match the design system. The base class measures which edges have content past them. **The content fades out toward each edge that has more past it.** The fade is a mask on the viewport, so the surface behind the scroll area shows through it: the page, a card, or a translucent pane. Set the depth with '--scroll-area-fade', or one edge's depth with its own property, and use '0' to keep an edge from fading. A scrollbar that takes room beside the content stays out of the mask. **Set '--scroll-area-fade-color' to paint the fades.** Each fade is then a gradient from that color over the content, and there is no mask. Use it for a scroll area on a solid ground, in the ground's color or one of your own. Under 'scrollbars', the browser's scrollbar is hidden and the component's own are drawn over the content at the edge, in the same colors. */
28238
28822
  "helix-scroll-area": DefineCustomElement<
28239
28823
  HelixScrollArea,
28240
28824
  HelixScrollAreaVueProps,
@@ -28360,7 +28944,7 @@ export interface WcToolkitVueGlobalComponents {
28360
28944
  HelixStepVueProps,
28361
28945
  HelixStepVueEvents
28362
28946
  >;
28363
- /** Hundreds of thin strands are drawn as one ribbon, and the light they add together is bloomed, so where they converge the ribbon burns hot. The ribbon moves on its own all the time: it sways and breathes, its strands wave and roll over one another, and light runs along them. Its palette comes from the tokens. The strands are '--helix-color-primary', a few are '--helix-color-accent' for depth, and the page they light is '--helix-color-background'. On a light page the light becomes ink, because light added to near-white cannot be seen. **Four forms, set with 'variant'.** 'bend' turns bright strands through one tight point, with its arms opening to the right. 'ribbon', the default, is a broad, soft ribbon in long curves. 'sweep' enters at a top corner, the one 'at' is nearer, and crosses in one diagonal to the far side. 'waves' is sharp strands crossing the full width. **Quiet behind words.** 'quiet' names elements, such as a hero's words, that the light dims behind to a faint glow, so a bright ribbon can cross the page under them and they stay crisp. **In its own box, by default.** The element fills the box it is given, the way an image does, and 'at' places the bend's apex or the ribbon's axis across it. Content placed inside sits over the ribbon, in the 'content' part. **Down the whole page, with 'travel'.** The element fixes itself behind the page, on '--helix-layer-beneath', and lays one ribbon from the top of the page to the bottom, so scrolling travels along it. Put 'helix-strands-stop' elements inside to pin a form to a section: each names an element with 'for' and says which form the ribbon takes there. Between stops the ribbon fills the gap in its own 'variant', and between two waves less than a screen and a half apart it turns off screen so each wave reads alone. Set 'z-index' on the element to move it. The ribbon stops moving in these cases: - 'prefers-reduced-motion' is set. The element shows one still frame, and in 'travel' still follows the scroll. - The element is off screen or in a background tab. It shows a gradient from the same tokens in these cases, and matches ':state(fallback)' and sends 'helix-strands-fallback' with the reason: - The renderer draws on the CPU, such as a headless browser or a machine with no usable GPU. - There is no WebGL, or the browser took the drawing context back. Strands is styled only and has behavior, as 'Aura' does: its behavior is drawing to a canvas, so there is no structure for a headless version to hold. */
28947
+ /** Hundreds of thin strands are drawn as one ribbon, and the light they add together is bloomed, so where they converge the ribbon burns hot. The ribbon moves on its own all the time: it sways and breathes, its strands wave and roll over one another, and light runs along them. Its palette comes from the tokens. The strands are '--helix-color-primary', a few are '--helix-color-accent' for depth, and the page they light is '--helix-color-background'. On a light page the light becomes ink, because light added to near-white cannot be seen. **Four forms, set with 'variant'.** 'bend' turns bright strands through one tight point, with its arms opening to the right. 'ribbon', the default, is a broad, soft ribbon in long curves. 'sweep' enters at a top corner, the one 'at' is nearer, and crosses in one diagonal to the far side. 'waves' is sharp strands crossing the full width. **Clear, over glass.** Set 'clear' and the ribbon is drawn without its ground, so a translucent pane or a frosted window behind the element shows through, with the light over it. **Quiet behind words.** 'quiet' names elements, such as a hero's words, that the light dims behind to a faint glow, so a bright ribbon can cross the page under them and they stay crisp. **In its own box, by default.** The element fills the box it is given, the way an image does, and 'at' places the bend's apex or the ribbon's axis across it. Content placed inside sits over the ribbon, in the 'content' part. **Down the whole page, with 'travel'.** The element fixes itself behind the page, on '--helix-layer-beneath', and lays one ribbon from the top of the page to the bottom, so scrolling travels along it. Put 'helix-strands-stop' elements inside to pin a form to a section: each names an element with 'for' and says which form the ribbon takes there. Between stops the ribbon fills the gap in its own 'variant', and between two waves less than a screen and a half apart it turns off screen so each wave reads alone. Set 'z-index' on the element to move it. The ribbon stops moving in these cases: - 'prefers-reduced-motion' is set. The element shows one still frame, and in 'travel' still follows the scroll. - The element is off screen or in a background tab. It shows a gradient from the same tokens in these cases, and matches ':state(fallback)' and sends 'helix-strands-fallback' with the reason: - The renderer draws on the CPU, such as a headless browser or a machine with no usable GPU. - There is no WebGL, or the browser took the drawing context back. Strands is styled only and has behavior, as 'Aura' does: its behavior is drawing to a canvas, so there is no structure for a headless version to hold. */
28364
28948
  "helix-strands": DefineCustomElement<
28365
28949
  HelixStrands,
28366
28950
  HelixStrandsVueProps,
@@ -28408,7 +28992,7 @@ export interface WcToolkitVueGlobalComponents {
28408
28992
  HelixTabPanelVueProps,
28409
28993
  HelixTabPanelVueEvents
28410
28994
  >;
28411
- /** One mark moves between the tabs to show the current one. A moving mark is a single object that is easy to follow, and it shows where the selection came from. A fill that switches from tab to tab changes two things at once and looks like a flicker. 'Navigation' marks its destinations the same way. The mark depends on 'variant': - Unset, it is a raised pill on the selected tab, with nothing behind the row. - 'underlined' makes it a bar along the bottom of the strip, on a rule. - 'segmented' makes it the size of the tab's box, inside a sunken track. */
28995
+ /** One mark moves between the tabs to show the current one. A moving mark is a single object that is easy to follow, and it shows where the selection came from. A fill that switches from tab to tab changes two things at once and looks like a flicker. 'Navigation' marks its destinations the same way. The mark depends on 'variant': - Unset, it is a raised pill on the selected tab, with nothing behind the row. - 'underlined' makes it a bar along the bottom of the strip, on a rule. - 'segmented' makes it the size of the tab's box, inside a sunken track. 'emphasis="subtle"' makes the mark quieter, for tabs inside other chrome such as a pane's header: a tint with no edge or shadow, the same wash a subtle button takes. **Tabs with no panels are a strip.** Where what each tab stands for lives outside the set, such as a pane's pages or shells, leave the panels out: the tabs keep their keys and their selection, 'active' and 'helix-activate' say which is current, and the page shows the rest. Put a control that adds a tab, such as a plus, beside the set rather than in it, so the tab list holds tabs alone. With 'dismissible' tabs, 'dismiss-marks="hover"' keeps each close mark out of sight until the tab is current, under the pointer, or holds focus, as a browser's tabs do. */
28412
28996
  "helix-tabs": DefineCustomElement<
28413
28997
  HelixTabs,
28414
28998
  HelixTabsVueProps,