@fusion.dev/helix 0.160.0 → 0.162.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 (43) hide show
  1. package/custom-elements.json +5183 -526
  2. package/dist/aura/root/aura-root.d.ts +0 -49
  3. package/dist/aura/root/aura-root.js +2 -16
  4. package/dist/chat/message/chat-message.css.js +1 -1
  5. package/dist/chat/root/chat-root.css.js +6 -1
  6. package/dist/code-block/root/code-block-root.css.js +10 -3
  7. package/dist/code-block/root/code-block-root.d.ts +4 -10
  8. package/dist/code-block/root/code-block-root.js +0 -8
  9. package/dist/element-events.generated.js +5 -0
  10. package/dist/index.d.ts +1 -0
  11. package/dist/index.js +1 -0
  12. package/dist/strands/index.d.ts +2 -0
  13. package/dist/strands/index.js +2 -0
  14. package/dist/strands/palette.d.ts +42 -0
  15. package/dist/strands/palette.js +24 -0
  16. package/dist/strands/path.d.ts +89 -0
  17. package/dist/strands/path.js +153 -0
  18. package/dist/strands/renderer.d.ts +84 -0
  19. package/dist/strands/renderer.js +255 -0
  20. package/dist/strands/root/strands-root.css.d.ts +1 -0
  21. package/dist/strands/root/strands-root.css.js +8 -0
  22. package/dist/strands/root/strands-root.d.ts +230 -0
  23. package/dist/strands/root/strands-root.js +466 -0
  24. package/dist/strands/shader.d.ts +22 -0
  25. package/dist/strands/shader.js +198 -0
  26. package/dist/strands/stop/strands-stop.css.d.ts +1 -0
  27. package/dist/strands/stop/strands-stop.css.js +2 -0
  28. package/dist/strands/stop/strands-stop.d.ts +44 -0
  29. package/dist/strands/stop/strands-stop.js +29 -0
  30. package/dist/table/root/table-root.css.js +2 -1
  31. package/dist/table/row/table-row.css.js +8 -2
  32. package/dist/table/row/table-row.d.ts +2 -0
  33. package/dist/timeline/item/timeline-item.css.js +5 -1
  34. package/dist/video-playlist/root/video-playlist-root.css.js +1 -1
  35. package/dist/video-playlist/root/video-playlist-root.d.ts +2 -0
  36. package/dist/virtual-list/root/virtual-list-root.css.js +1 -1
  37. package/dist/virtual-list/root/virtual-list-root.d.ts +1 -0
  38. package/lint.json +1 -1
  39. package/package.json +6 -6
  40. package/types/jsx.d.ts +1206 -66
  41. package/types/svelte.d.ts +2 -0
  42. package/types/vue.d.ts +314 -12
  43. package/types/words.d.ts +79 -0
package/types/svelte.d.ts CHANGED
@@ -157,6 +157,8 @@ declare module 'svelte/elements' {
157
157
  'helix-stat': Helix<'helix-stat'>
158
158
  'helix-steps': Helix<'helix-steps'>
159
159
  'helix-step': Helix<'helix-step'>
160
+ 'helix-strands': Helix<'helix-strands'>
161
+ 'helix-strands-stop': Helix<'helix-strands-stop'>
160
162
  'helix-switch': Helix<'helix-switch'>
161
163
  'helix-table-cell': Helix<'helix-table-cell'>
162
164
  'helix-table-column': Helix<'helix-table-column'>
package/types/vue.d.ts CHANGED
@@ -127,6 +127,8 @@ import type {
127
127
  HelixStat,
128
128
  HelixSteps,
129
129
  HelixStep,
130
+ HelixStrands,
131
+ HelixStrandsStop,
130
132
  HelixSwitch,
131
133
  HelixTableCell,
132
134
  HelixTableColumn,
@@ -190,6 +192,7 @@ import type {
190
192
  HelixHistoryEvent,
191
193
  HelixPinEvent,
192
194
  HelixBeforeToggleEvent,
195
+ HelixToggleEvent,
193
196
  HelixCopyEvent,
194
197
  HelixSampleEndEvent,
195
198
  HelixSampleStartEvent,
@@ -227,7 +230,6 @@ import type {
227
230
  HelixMapRotateEvent,
228
231
  HelixMapTiltEvent,
229
232
  HelixMapZoomEvent,
230
- HelixToggleEvent,
231
233
  HelixBandEvent,
232
234
  HelixReadEvent,
233
235
  HelixCompleteEvent,
@@ -244,6 +246,7 @@ import type {
244
246
  HelixBeforeResizeEvent,
245
247
  HelixCollapseEvent,
246
248
  HelixResizedEvent,
249
+ HelixStrandsFallbackEvent,
247
250
  HelixLoadEvent,
248
251
  HelixTourAskEvent,
249
252
  HelixTourStatusEvent,
@@ -2454,6 +2457,10 @@ what the controls drive rather than the mechanism. */
2454
2457
  /** The name of the group of controls, read by screen readers, which names
2455
2458
  what the controls drive rather than the mechanism. */
2456
2459
  controlsLabel?: (HelixCanvas["controlsLabel"]) | undefined;
2460
+ /** What screen readers hear after a copy, with `{count}` for the cards copied. */
2461
+ "copied-label"?: (HelixCanvas["copiedLabel"]) | undefined;
2462
+ /** What screen readers hear after a copy, with `{count}` for the cards copied. */
2463
+ copiedLabel?: (HelixCanvas["copiedLabel"]) | undefined;
2457
2464
  /** The board's name where `label` is empty. */
2458
2465
  "fallback-label"?: (HelixCanvas["fallbackLabel"]) | undefined;
2459
2466
  /** The board's name where `label` is empty. */
@@ -2541,6 +2548,10 @@ walk the cards. */
2541
2548
  /** The text announced when a connection's end is picked up, with `{from}` and
2542
2549
  `{to}`. */
2543
2550
  reconnectingLabel?: (HelixCanvas["reconnectingLabel"]) | undefined;
2551
+ /** What screen readers hear after a move or a resize is made again. */
2552
+ "redone-label"?: (HelixCanvas["redoneLabel"]) | undefined;
2553
+ /** What screen readers hear after a move or a resize is made again. */
2554
+ redoneLabel?: (HelixCanvas["redoneLabel"]) | undefined;
2544
2555
  /** What screen readers hear after a key resizes a card, with `{name}` for the
2545
2556
  card and `{width}` and `{height}` for its new size, in the document's
2546
2557
  units. */
@@ -2643,6 +2654,10 @@ told the same. A tone left out is not read. */
2643
2654
  "two-finger-hint-label"?: (HelixCanvas["twoFingerHintLabel"]) | undefined;
2644
2655
  /** The hint shown when one finger swipes over the board with `gestures="cooperative"`. */
2645
2656
  twoFingerHintLabel?: (HelixCanvas["twoFingerHintLabel"]) | undefined;
2657
+ /** What screen readers hear after a move or a resize is undone. */
2658
+ "undone-label"?: (HelixCanvas["undoneLabel"]) | undefined;
2659
+ /** What screen readers hear after a move or a resize is undone. */
2660
+ undoneLabel?: (HelixCanvas["undoneLabel"]) | undefined;
2646
2661
  /** The line shown while the board, with `gestures="activate"`, has the gestures. */
2647
2662
  "using-label"?: (HelixCanvas["usingLabel"]) | undefined;
2648
2663
  /** The line shown while the board, with `gestures="activate"`, has the gestures. */
@@ -3563,6 +3578,10 @@ is the way back, and that is a part inside the shadow tree where a
3563
3578
  stylesheet can already reach it. Measured rather than assumed: `label,
3564
3579
  pinned` after upgrade against `label` from the server. */
3565
3580
  pinned?: (HelixChat["pinned"]) | undefined;
3581
+ /** The words on the button that returns to the newest turn, where `resume` is empty. */
3582
+ "resume-label"?: (HelixChat["resumeLabel"]) | undefined;
3583
+ /** The words on the button that returns to the newest turn, where `resume` is empty. */
3584
+ resumeLabel?: (HelixChat["resumeLabel"]) | undefined;
3566
3585
  /** How near the bottom still counts as being at it, in pixels.
3567
3586
 
3568
3587
  A hook rather than a constant, because the right number depends on how tall
@@ -3922,14 +3941,19 @@ export type HelixCheckboxVueEvents = {
3922
3941
  "helix-before-toggle": HelixCheckboxHelixBeforeToggleElementEvent;
3923
3942
  };
3924
3943
 
3925
- export type HelixCodeBlockVueProps = {
3926
- /** Whether long lines wrap.
3944
+ /** `HelixCodeBlock` component event */
3945
+ export type HelixCodeBlockElementEvent<E = Event> = TypedEvent<
3946
+ HelixCodeBlock,
3947
+ E
3948
+ >;
3949
+ /** `helix-before-toggle` event type */
3950
+ export type HelixCodeBlockHelixBeforeToggleElementEvent =
3951
+ HelixCodeBlockElementEvent<HelixBeforeToggleEvent>;
3952
+ /** `helix-toggle` event type */
3953
+ export type HelixCodeBlockHelixToggleElementEvent =
3954
+ HelixCodeBlockElementEvent<HelixToggleEvent>;
3927
3955
 
3928
- Off by default, so long lines scroll, because a line break can be
3929
- significant in code and a wrapped line reads as two. For prose-like code, such as a long command or
3930
- a log line, a wrap reads better than a scroll. Line numbers keep the lines
3931
- unwrapped, since a wrapped line would take one number and several rows. */
3932
- wrap?: (HelixCodeBlock["wrap"]) | undefined;
3956
+ export type HelixCodeBlockVueProps = {
3933
3957
  /** The name of a block that scrolls, which is a tab stop while it does.
3934
3958
 
3935
3959
  Where the block has a name, the scroller says it too, such as "Code,
@@ -4015,6 +4039,14 @@ copy, which takes the code alone. Reflected, because the stylesheet lays
4015
4039
  the gutter out beside the code. A diff numbers its lines from its hunks
4016
4040
  whether or not this is set. */
4017
4041
  lineNumbers?: (HelixCodeBlock["lineNumbers"]) | undefined;
4042
+ /** The lines to mark, as numbers and ranges counted from 1, such as `2, 4-6`.
4043
+ Each run is drawn as a band behind its lines. Not for a diff, which marks
4044
+ its own changes. */
4045
+ "mark-lines"?: (HelixCodeBlock["markLines"]) | undefined;
4046
+ /** The lines to mark, as numbers and ranges counted from 1, such as `2, 4-6`.
4047
+ Each run is drawn as a band behind its lines. Not for a diff, which marks
4048
+ its own changes. */
4049
+ markLines?: (HelixCodeBlock["markLines"]) | undefined;
4018
4050
  /** Whether to leave the copy button off.
4019
4051
 
4020
4052
  Negative, which is not a style choice. A boolean attribute is true whenever
@@ -4061,6 +4093,22 @@ Absent is unified, each removal above its replacement, which fits any
4061
4093
  width. `split` sets the old version beside the new one. Optional rather
4062
4094
  than defaulted, so the host carries no attribute the consumer did not write. */
4063
4095
  variant?: (HelixCodeBlock["variant"]) | undefined;
4096
+ /** Whether long lines wrap. Without it they scroll.
4097
+
4098
+ Off by default, so long lines scroll, because a line break can be
4099
+ significant in code and a wrapped line reads as two. For prose-like code,
4100
+ such as a long command or a log line, a wrap reads better than a scroll.
4101
+ With `line-numbers`, each number stands beside the line it numbers
4102
+ however many rows that line takes. Reflected, because the stylesheet
4103
+ wraps the lines. */
4104
+ wrap?: (HelixCodeBlock["wrap"]) | undefined;
4105
+ /** The wrap button's name, which it keeps whether it is pressed or not. */
4106
+ "wrap-label"?: (HelixCodeBlock["wrapLabel"]) | undefined;
4107
+ /** The wrap button's name, which it keeps whether it is pressed or not. */
4108
+ wrapLabel?: (HelixCodeBlock["wrapLabel"]) | undefined;
4109
+ /** Whether the header has a button that wraps the lines and unwraps them. The
4110
+ block draws a header for it even with no name. */
4111
+ wrappable?: (HelixCodeBlock["wrappable"]) | undefined;
4064
4112
  /** Turns the code into highlighted markup, which the block draws in place of
4065
4113
  the plain text.
4066
4114
 
@@ -4085,7 +4133,12 @@ read, nor for a diff. */
4085
4133
  highlight?: (HelixCodeBlock["highlight"]) | undefined;
4086
4134
  };
4087
4135
 
4088
- export type HelixCodeBlockVueEvents = {};
4136
+ export type HelixCodeBlockVueEvents = {
4137
+ /** The wrap button was pressed, with the `wrap` it asks for in `detail.checked`. Cancelable: cancel it to keep the lines as they are. */
4138
+ "helix-before-toggle": HelixCodeBlockHelixBeforeToggleElementEvent;
4139
+ /** Fired after the wrap button changed `wrap`, with the new value in `detail.checked`. */
4140
+ "helix-toggle": HelixCodeBlockHelixToggleElementEvent;
4141
+ };
4089
4142
 
4090
4143
  export type HelixCodeVueProps = {};
4091
4144
 
@@ -16282,6 +16335,22 @@ consumer's to set. */
16282
16335
  "corner-label"?: (HelixSplitter["cornerLabel"]) | undefined;
16283
16336
  /** The name of the handle where two dividers cross, read by screen readers. */
16284
16337
  cornerLabel?: (HelixSplitter["cornerLabel"]) | undefined;
16338
+ /** What the handle where two dividers cross says it is set to, both dividers
16339
+ at once: `{across}` is where the divider that runs down stands, and
16340
+ `{down}` where the one that runs across stands, each a percentage.
16341
+
16342
+ **Both, because the handle moves both**, and a number names one: the
16343
+ handle's `aria-valuenow` is the divider its `aria-orientation` names, and
16344
+ these words are the whole of where it is. */
16345
+ "corner-value-label"?: (HelixSplitter["cornerValueLabel"]) | undefined;
16346
+ /** What the handle where two dividers cross says it is set to, both dividers
16347
+ at once: `{across}` is where the divider that runs down stands, and
16348
+ `{down}` where the one that runs across stands, each a percentage.
16349
+
16350
+ **Both, because the handle moves both**, and a number names one: the
16351
+ handle's `aria-valuenow` is the divider its `aria-orientation` names, and
16352
+ these words are the whole of where it is. */
16353
+ cornerValueLabel?: (HelixSplitter["cornerValueLabel"]) | undefined;
16285
16354
  /** Which pane starts shut, when `collapsed` is not set. */
16286
16355
  "default-collapsed"?: (HelixSplitter["defaultCollapsed"]) | undefined;
16287
16356
  /** Which pane starts shut, when `collapsed` is not set. */
@@ -16585,6 +16654,64 @@ export type HelixStepVueEvents = {
16585
16654
  "helix-select": HelixStepHelixSelectElementEvent;
16586
16655
  };
16587
16656
 
16657
+ /** `HelixStrands` component event */
16658
+ export type HelixStrandsElementEvent<E = Event> = TypedEvent<HelixStrands, E>;
16659
+ /** `helix-strands-fallback` event type */
16660
+ export type HelixStrandsHelixStrandsFallbackElementEvent =
16661
+ HelixStrandsElementEvent<HelixStrandsFallbackEvent>;
16662
+
16663
+ export type HelixStrandsVueProps = {
16664
+ /** Where the form sits across the box, as a share of the width: the fan's
16665
+ bend or the ribbon's axis. `0` is the left edge and `1` the right. A wave
16666
+ crosses the whole width and does not read it. Unset, a fan bends at `0.4`
16667
+ and a ribbon runs down the middle.
16668
+
16669
+ **A share rather than a length**, so the ribbon keeps its place when the
16670
+ box changes shape. Read inside a box only; in `travel` each stop has its
16671
+ own. */
16672
+ at?: (HelixStrands["at"]) | undefined;
16673
+ /** How many strands the ribbon has, from `0`, sixty, to `1`, three hundred and
16674
+ forty. Clamped to that range. */
16675
+ density?: (HelixStrands["density"]) | undefined;
16676
+ /** Overall brightness, as a multiplier on the light. */
16677
+ gain?: (HelixStrands["gain"]) | undefined;
16678
+ /** The share of strands drawn out of focus where the ribbon is wide, from `0`,
16679
+ every strand sharp, to `1`, every one soft. Clamped to that range. A tight
16680
+ form, such as a fan's bend or a wave, stays sharp whatever this says. */
16681
+ softness?: (HelixStrands["softness"]) | undefined;
16682
+ /** How fast the ribbon moves, as a multiplier on time. `0` holds it still. */
16683
+ speed?: (HelixStrands["speed"]) | undefined;
16684
+ /** How wide the ribbon is, as a multiplier on each form's own width. */
16685
+ spread?: (HelixStrands["spread"]) | undefined;
16686
+ /** Whether the ribbon is laid down the whole page, so scrolling travels along
16687
+ it.
16688
+
16689
+ Reflected because the stylesheet selects on it: in `travel` the host fixes
16690
+ itself to the viewport, behind the page. */
16691
+ travel?: (HelixStrands["travel"]) | undefined;
16692
+ /** The form the ribbon takes. When it is not set, the form is `ribbon`. In
16693
+ `travel`, the form of every stretch no stop claims. */
16694
+ variant?: (HelixStrands["variant"]) | undefined;
16695
+ };
16696
+
16697
+ export type HelixStrandsVueEvents = {
16698
+ /** Fired each time the element stops drawing its ribbon and shows its gradient, with the reason. */
16699
+ "helix-strands-fallback": HelixStrandsHelixStrandsFallbackElementEvent;
16700
+ };
16701
+
16702
+ export type HelixStrandsStopVueProps = {
16703
+ /** Where the form sits across the page, as a share of the width: the fan's
16704
+ bend or the ribbon's axis. A wave crosses the whole width and does not
16705
+ read it. Unset, a fan bends at `0.4` and a ribbon runs down the middle. */
16706
+ at?: (HelixStrandsStop["at"]) | undefined;
16707
+ /** The id of the element the form is pinned to, in the same tree as the stop. */
16708
+ for?: (HelixStrandsStop["for"]) | undefined;
16709
+ /** The form the ribbon takes at the element. When it is not set, the form is `ribbon`. */
16710
+ variant?: (HelixStrandsStop["variant"]) | undefined;
16711
+ };
16712
+
16713
+ export type HelixStrandsStopVueEvents = {};
16714
+
16588
16715
  /** `HelixSwitch` component event */
16589
16716
  export type HelixSwitchElementEvent<E = Event> = TypedEvent<HelixSwitch, E>;
16590
16717
  /** `helix-before-toggle` event type */
@@ -16948,6 +17075,12 @@ export type HelixTableElementEvent<E = Event> = TypedEvent<HelixTable, E>;
16948
17075
  /** `helix-before-reorder` event type */
16949
17076
  export type HelixTableHelixBeforeReorderElementEvent =
16950
17077
  HelixTableElementEvent<HelixBeforeReorderEvent>;
17078
+ /** `helix-before-toggle` event type */
17079
+ export type HelixTableHelixBeforeToggleElementEvent =
17080
+ HelixTableElementEvent<HelixBeforeToggleEvent>;
17081
+ /** `helix-load-more` event type */
17082
+ export type HelixTableHelixLoadMoreElementEvent =
17083
+ HelixTableElementEvent<HelixLoadMoreEvent>;
16951
17084
  /** `helix-reorder` event type */
16952
17085
  export type HelixTableHelixReorderElementEvent =
16953
17086
  HelixTableElementEvent<HelixReorderEvent>;
@@ -16963,6 +17096,9 @@ export type HelixTableHelixSortElementEvent =
16963
17096
  /** `helix-sorted` event type */
16964
17097
  export type HelixTableHelixSortedElementEvent =
16965
17098
  HelixTableElementEvent<HelixSortedEvent>;
17099
+ /** `helix-toggle` event type */
17100
+ export type HelixTableHelixToggleElementEvent =
17101
+ HelixTableElementEvent<HelixToggleEvent>;
16966
17102
 
16967
17103
  export type HelixTableVueProps = {
16968
17104
  /** The text shown and announced when there are no rows and none are loading. */
@@ -17018,6 +17154,12 @@ and a list here would be a second way to say what that says. This table's
17018
17154
  cells are markup, and a table written as rows of cells with no column
17019
17155
  declared in it has nowhere else to be sized from. */
17020
17156
  columns?: (HelixTable["columns"]) | undefined;
17157
+ /** The keys of the rows whose rows are shown at the start, separated by
17158
+ commas. Used until `expanded` is set. */
17159
+ "default-expanded"?: (HelixTable["defaultExpanded"]) | undefined;
17160
+ /** The keys of the rows whose rows are shown at the start, separated by
17161
+ commas. Used until `expanded` is set. */
17162
+ defaultExpanded?: (HelixTable["defaultExpanded"]) | undefined;
17021
17163
  /** The keys selected at the start, separated by commas. Used until `selected`
17022
17164
  is set. */
17023
17165
  "default-selected"?: (HelixTable["defaultSelected"]) | undefined;
@@ -17052,6 +17194,18 @@ While it is set, a line after the rows shows it, or your own content in the
17052
17194
  `error` slot, in place of the empty and loading lines, and the live region
17053
17195
  says it. */
17054
17196
  errorText?: (HelixTable["errorText"]) | undefined;
17197
+ /** The name of the heading over the disclosure buttons. */
17198
+ "expand-column-label"?: (HelixTable["expandColumnLabel"]) | undefined;
17199
+ /** The name of the heading over the disclosure buttons. */
17200
+ expandColumnLabel?: (HelixTable["expandColumnLabel"]) | undefined;
17201
+ /** The keys of the rows whose rows are shown, separated by commas, in a table
17202
+ whose rows nest. A press on a row's disclosure button asks first, and
17203
+ `default-expanded` seeds what this element then owns. */
17204
+ expanded?: (HelixTable["expanded"]) | undefined;
17205
+ /** The name of a row's disclosure button. `{row}` is the words of the row's first cell. */
17206
+ "expand-row-label"?: (HelixTable["expandRowLabel"]) | undefined;
17207
+ /** The name of a row's disclosure button. `{row}` is the words of the row's first cell. */
17208
+ expandRowLabel?: (HelixTable["expandRowLabel"]) | undefined;
17055
17209
  /** The table's name where neither `label` nor an `aria-label` or
17056
17210
  `aria-labelledby` on the host gives it one. */
17057
17211
  "fallback-label"?: (HelixTable["fallbackLabel"]) | undefined;
@@ -17071,6 +17225,12 @@ cells, which is the one way a cell of your markup can take focus. */
17071
17225
  An `aria-label` or `aria-labelledby` on the host names the table too, and
17072
17226
  wins over this. */
17073
17227
  label?: (HelixTable["label"]) | undefined;
17228
+ /** Sends `helix-load-more` once the end of the table comes within a screen
17229
+ of view, so you can add the next rows as a reader nears them. */
17230
+ "load-more"?: (HelixTable["loadMore"]) | undefined;
17231
+ /** Sends `helix-load-more` once the end of the table comes within a screen
17232
+ of view, so you can add the next rows as a reader nears them. */
17233
+ loadMore?: (HelixTable["loadMore"]) | undefined;
17074
17234
  /** What screen readers hear each time a key moves a held row, in a
17075
17235
  `reorderable` table. `{name}` is the row's words, `{position}` the place it
17076
17236
  would go, counting from 1, and `{count}` the number of rows. */
@@ -17105,6 +17265,12 @@ table moves no row itself: you move your rows on `helix-reorder`. */
17105
17265
  "select-all-label"?: (HelixTable["selectAllLabel"]) | undefined;
17106
17266
  /** The name of the checkbox in the heading that selects every row. */
17107
17267
  selectAllLabel?: (HelixTable["selectAllLabel"]) | undefined;
17268
+ /** The name of the heading over the checkboxes under
17269
+ `selection-mode="single"`, where it holds no checkbox of its own. */
17270
+ "select-column-label"?: (HelixTable["selectColumnLabel"]) | undefined;
17271
+ /** The name of the heading over the checkboxes under
17272
+ `selection-mode="single"`, where it holds no checkbox of its own. */
17273
+ selectColumnLabel?: (HelixTable["selectColumnLabel"]) | undefined;
17108
17274
  /** The keys of the selected rows, separated by commas.
17109
17275
 
17110
17276
  A reader's press fires `helix-select` first, and refusing it leaves the
@@ -17121,6 +17287,20 @@ rows are chosen, written in the locale, and a language that needs plural
17121
17287
  forms writes them: `{count, plural, one {# wybrany} few {# wybrane} many
17122
17288
  {# wybranych} other {# wybranego}}`. */
17123
17289
  selectedLabel?: (HelixTable["selectedLabel"]) | undefined;
17290
+ /** What a press on a row, or in a `grid` table a key that moves to one, does
17291
+ to the rows already selected: `toggle`, the default, leaves them to the
17292
+ checkboxes, and `replace` selects the row alone. */
17293
+ "selection-behavior"?: (HelixTable["selectionBehavior"]) | undefined;
17294
+ /** What a press on a row, or in a `grid` table a key that moves to one, does
17295
+ to the rows already selected: `toggle`, the default, leaves them to the
17296
+ checkboxes, and `replace` selects the row alone. */
17297
+ selectionBehavior?: (HelixTable["selectionBehavior"]) | undefined;
17298
+ /** How many rows a `selectable` table selects: `multiple`, the default, or
17299
+ `single`, one at a time. */
17300
+ "selection-mode"?: (HelixTable["selectionMode"]) | undefined;
17301
+ /** How many rows a `selectable` table selects: `multiple`, the default, or
17302
+ `single`, one at a time. */
17303
+ selectionMode?: (HelixTable["selectionMode"]) | undefined;
17124
17304
  /** The name of a row's checkbox. `{row}` is replaced with the words of the
17125
17305
  row's first cell. */
17126
17306
  "select-row-label"?: (HelixTable["selectRowLabel"]) | undefined;
@@ -17154,6 +17334,10 @@ order has its whole sentence. `{order}` is the deprecated
17154
17334
  export type HelixTableVueEvents = {
17155
17335
  /** Fired when a row is dropped at a new place, in a `reorderable` table, with every row's key in the new order. Cancelable: cancel it to keep the row where it is. */
17156
17336
  "helix-before-reorder": HelixTableHelixBeforeReorderElementEvent;
17337
+ /** Fired from a row when its disclosure button is pressed, with whether it would be open in `detail.checked`. Cancelable: cancel it to keep the row as it is. */
17338
+ "helix-before-toggle": HelixTableHelixBeforeToggleElementEvent;
17339
+ /** Fired, in a table with `load-more`, when the end of the table comes within a screen of view, once for each number of rows. */
17340
+ "helix-load-more": HelixTableHelixLoadMoreElementEvent;
17157
17341
  /** Fired after `helix-before-reorder` when nobody canceled it. Move your rows to the order in `keys`. Cancelable: cancel it to say the move did not happen. */
17158
17342
  "helix-reorder": HelixTableHelixReorderElementEvent;
17159
17343
  /** The selection is about to change. The event carries every selected key, separated by commas. Cancelable: cancel it to keep the current selection. */
@@ -17164,6 +17348,8 @@ export type HelixTableVueEvents = {
17164
17348
  "helix-sort": HelixTableHelixSortElementEvent;
17165
17349
  /** Fired after the sort order changes, with the new order. */
17166
17350
  "helix-sorted": HelixTableHelixSortedElementEvent;
17351
+ /** Fired from a row once the rows under it are shown or hidden, with whether it is open in `detail.checked`. */
17352
+ "helix-toggle": HelixTableHelixToggleElementEvent;
17167
17353
  };
17168
17354
 
17169
17355
  export type HelixTableRowVueProps = {
@@ -17177,6 +17363,10 @@ reached. */
17177
17363
  /** The URL a press on the row follows, which makes the whole row a link.
17178
17364
  Empty, the default, leaves presses to the row's cells. */
17179
17365
  href?: (HelixTableRow["href"]) | undefined;
17366
+ /** The key of the row this one sits under, in a table whose rows nest: that
17367
+ row's `value`, or its place among the rows where it has none. Empty, the
17368
+ default, is a row at the top. */
17369
+ parent?: (HelixTableRow["parent"]) | undefined;
17180
17370
  /** The `rel` of the row's link. You set it yourself, as on an anchor. */
17181
17371
  rel?: (HelixTableRow["rel"]) | undefined;
17182
17372
  /** Where the row's link opens, such as `_blank`. */
@@ -18595,13 +18785,35 @@ Whatever `<time>` accepts, which is a date, a time, both, a duration or a
18595
18785
  week. Unset, the label is written as it was given and nothing claims to
18596
18786
  know what instant it names. */
18597
18787
  datetime?: (HelixTimelineItem["datetime"]) | undefined;
18788
+ /** Marks an event that has not happened yet, such as one that is scheduled.
18789
+ The mark is the open circle, and a screen reader hears `pending-label`. */
18790
+ pending?: (HelixTimelineItem["pending"]) | undefined;
18791
+ /** What a screen reader hears for an entry that is `pending`. */
18792
+ "pending-label"?: (HelixTimelineItem["pendingLabel"]) | undefined;
18793
+ /** What a screen reader hears for an entry that is `pending`. */
18794
+ pendingLabel?: (HelixTimelineItem["pendingLabel"]) | undefined;
18598
18795
  /** Writes the time as how long ago it was, or how long until it, from
18599
18796
  `datetime`, where the `time` slot is empty: `long` ("3 hours ago"),
18600
18797
  `short` ("3 hr. ago") or `narrow` ("3h ago"). Set with no value, it is
18601
18798
  `long`. The words move on as they go stale. */
18602
18799
  relative?: (HelixTimelineItem["relative"]) | undefined;
18603
- /** The kind of event. It sets the color of the mark and nothing else. */
18800
+ /** The kind of event. It sets the color of the mark, and a screen reader
18801
+ hears it as the word `tone-labels` gives it. */
18604
18802
  tone?: (HelixTimelineItem["tone"]) | undefined;
18803
+ /** What a screen reader is told this entry's tone is, such as "Failed".
18804
+ Absent is the tone's word in `tone-labels`. */
18805
+ "tone-label"?: (HelixTimelineItem["toneLabel"]) | undefined;
18806
+ /** What a screen reader is told this entry's tone is, such as "Failed".
18807
+ Absent is the tone's word in `tone-labels`. */
18808
+ toneLabel?: (HelixTimelineItem["toneLabel"]) | undefined;
18809
+ /** What a screen reader is told each tone is, by the tone's name, written as
18810
+ JSON in the attribute: `tone-labels='{"danger":"Failed"}'`. A tone with no
18811
+ word is not read, which is `neutral` and `primary` in English. */
18812
+ "tone-labels"?: (HelixTimelineItem["toneLabels"]) | undefined;
18813
+ /** What a screen reader is told each tone is, by the tone's name, written as
18814
+ JSON in the attribute: `tone-labels='{"danger":"Failed"}'`. A tone with no
18815
+ word is not read, which is `neutral` and `primary` in English. */
18816
+ toneLabels?: (HelixTimelineItem["toneLabels"]) | undefined;
18605
18817
  };
18606
18818
 
18607
18819
  export type HelixTimelineItemVueEvents = {};
@@ -19853,6 +20065,13 @@ Written by the playlist rather than by the entry, the way an option's
19853
20065
  selection is: an entry that made itself current would be a second answer to
19854
20066
  which one is playing. */
19855
20067
  current?: (HelixVideoPlaylistItem["current"]) | undefined;
20068
+ /** Whether the entry holds the playlist's tab stop. Unset, every entry is in
20069
+ the tab order, which is what a server renders.
20070
+
20071
+ **Written by the playlist, with no attribute, and it reaches the button.**
20072
+ The playlist gives the stop to the entry a reader last focused, or to the
20073
+ current one, and the arrow keys reach the rest. */
20074
+ focusable?: (HelixVideoPlaylistItem["focusable"]) | undefined;
19856
20075
  };
19857
20076
 
19858
20077
  export type HelixVideoPlaylistItemVueEvents = {
@@ -19920,8 +20139,20 @@ Ignored once `active` is written. */
19920
20139
 
19921
20140
  Ignored once `active` is written. */
19922
20141
  defaultActive?: (HelixVideoPlaylist["defaultActive"]) | undefined;
20142
+ /** What the playlist says while it has no entries. The `empty` slot replaces it. */
20143
+ "empty-label"?: (HelixVideoPlaylist["emptyLabel"]) | undefined;
20144
+ /** What the playlist says while it has no entries. The `empty` slot replaces it. */
20145
+ emptyLabel?: (HelixVideoPlaylist["emptyLabel"]) | undefined;
19923
20146
  /** The list's name, read by screen readers. */
19924
20147
  label?: (HelixVideoPlaylist["label"]) | undefined;
20148
+ /** Stays on an entry when its clip ends, where the playlist would otherwise
20149
+ play the next one. The player's controls, a press, and `next()` still
20150
+ move. `repeat="one"` still plays the entry again. */
20151
+ "no-advance"?: (HelixVideoPlaylist["noAdvance"]) | undefined;
20152
+ /** Stays on an entry when its clip ends, where the playlist would otherwise
20153
+ play the next one. The player's controls, a press, and `next()` still
20154
+ move. `repeat="one"` still plays the entry again. */
20155
+ noAdvance?: (HelixVideoPlaylist["noAdvance"]) | undefined;
19925
20156
  /** What the live region says when the playlist moves to another entry.
19926
20157
  `{title}` is the entry's name.
19927
20158
 
@@ -19953,7 +20184,7 @@ arrives or leaves, so previous goes back through what has played. */
19953
20184
  export type HelixVideoPlaylistVueEvents = {
19954
20185
  /** The current entry changed. The playlist already holds the new entry when this is sent, and `detail.previous` is the entry it left. `currentEntry` is the entry itself, with its `src`, `poster` and name. */
19955
20186
  "helix-activate": HelixVideoPlaylistHelixActivateElementEvent;
19956
- /** The current entry is about to change. Cancelable: cancel it to keep the current entry. */
20187
+ /** The current entry is about to change, and `detail.cause` says why: `press`, `next`, `previous`, `ended`, or `removed`. Cancelable: cancel it to keep the current entry. */
19957
20188
  "helix-before-activate": HelixVideoPlaylistHelixBeforeActivateElementEvent;
19958
20189
  /** The last entry finished playing, and the playlist stopped there. Not sent while `repeat` is set. */
19959
20190
  "helix-end": HelixVideoPlaylistHelixEndElementEvent;
@@ -20487,6 +20718,12 @@ export type HelixVirtualListVueProps = {
20487
20718
  items out as a grid of that many equal columns, windowed a line at a
20488
20719
  time, with Left and Right moving along a line. */
20489
20720
  columns?: (HelixVirtualList["columns"]) | undefined;
20721
+ /** The keys of the items a reader cannot choose or move to, separated by
20722
+ commas, as `value` writes keys. Their rows carry `aria-disabled`. */
20723
+ "disabled-keys"?: (HelixVirtualList["disabledKeys"]) | undefined;
20724
+ /** The keys of the items a reader cannot choose or move to, separated by
20725
+ commas, as `value` writes keys. Their rows carry `aria-disabled`. */
20726
+ disabledKeys?: (HelixVirtualList["disabledKeys"]) | undefined;
20490
20727
  /** The text of the row shown when there are no items and none are loading,
20491
20728
  where the `empty` slot is empty. Empty, the default, shows no row. */
20492
20729
  "empty-label"?: (HelixVirtualList["emptyLabel"]) | undefined;
@@ -20501,6 +20738,11 @@ right whenever the rows really are one height and is the cheaper of the two. */
20501
20738
  /** The id of the script element that holds the items as JSON. `items` wins
20502
20739
  where both are set. */
20503
20740
  for?: (HelixVirtualList["for"]) | undefined;
20741
+ /** The space between two rows, and between two columns in a grid, in
20742
+ pixels. The list counts it in each row's place, so a gap does not walk
20743
+ the rows away from the scroll position the way a margin on each row
20744
+ would. */
20745
+ gap?: (HelixVirtualList["gap"]) | undefined;
20504
20746
  /** The field of each item that is its key in `value`, as a key or a path of
20505
20747
  keys. Empty reads a string or a number item as its own key, and any
20506
20748
  other item by its place in the set. */
@@ -20536,6 +20778,22 @@ disagree with itself; measuring is what a set of genuinely different
20536
20778
  heights needs and costs a read of each row as it renders. A list of
20537
20779
  one-line rows should leave this alone. */
20538
20780
  measured?: (HelixVirtualList["measured"]) | undefined;
20781
+ /** The narrowest a column of a grid may be, in pixels. Set, the list lays
20782
+ out as many columns as fit the box at that width, at least one, and
20783
+ follows the box as it resizes, which `columns` then does not decide. */
20784
+ "min-column-width"?: (HelixVirtualList["minColumnWidth"] | `${number}`) | undefined;
20785
+ /** The narrowest a column of a grid may be, in pixels. Set, the list lays
20786
+ out as many columns as fit the box at that width, at least one, and
20787
+ follows the box as it resizes, which `columns` then does not decide. */
20788
+ minColumnWidth?: (HelixVirtualList["minColumnWidth"]) | undefined;
20789
+ /** What a press does to the items already chosen: `toggle` adds or takes out
20790
+ the item, and `replace` selects it alone and lets the arrow keys carry the
20791
+ selection, with Control or Command adding or taking out one item. */
20792
+ "selection-behavior"?: (HelixVirtualList["selectionBehavior"]) | undefined;
20793
+ /** What a press does to the items already chosen: `toggle` adds or takes out
20794
+ the item, and `replace` selects it alone and lets the arrow keys carry the
20795
+ selection, with Control or Command adding or taking out one item. */
20796
+ selectionBehavior?: (HelixVirtualList["selectionBehavior"]) | undefined;
20539
20797
  /** Makes the list a list box a reader chooses from: `single` selects one
20540
20798
  item, and `multiple` any number. Unset is a list a reader reads. */
20541
20799
  "selection-mode"?: (HelixVirtualList["selectionMode"]) | undefined;
@@ -21018,12 +21276,24 @@ export type CustomCssProperties = {
21018
21276
  "--code-block-label-color"?: (string) | undefined;
21019
21277
  /** The line height of the code and its line numbers, as a number or a length. */
21020
21278
  "--code-block-line-height"?: (string) | undefined;
21279
+ /** The band behind the lines `mark-lines` names. The primary color at a wash by default. */
21280
+ "--code-block-mark-color"?: (string) | undefined;
21281
+ /** The edge at the start of a band behind marked lines. The primary color by default. */
21282
+ "--code-block-mark-edge-color"?: (string) | undefined;
21021
21283
  /** The tallest the code grows before it scrolls, or until `expandable`'s button shows every line. The default is no limit. */
21022
21284
  "--code-block-max-block-size"?: (string) | undefined;
21023
21285
  /** The corner radius of the header's top and the block's bottom, which form one shape. */
21024
21286
  "--code-block-radius"?: (string) | undefined;
21025
21287
  /** The color a diff's removed lines are tinted in and their `-` is drawn in. The danger color by default. */
21026
21288
  "--code-block-removed-color"?: (string) | undefined;
21289
+ /** Written by the block on each `number` in a `wrap` block with `line-numbers`: how tall the line it numbers is laid out. Do not set it. */
21290
+ "--code-block-line-size"?: (string) | undefined;
21291
+ /** Written by the block on each `mark`: how wide the code is, scrolled part included. Do not set it. */
21292
+ "--code-block-mark-inline-size"?: (string) | undefined;
21293
+ /** Written by the block on each `mark`: how tall its run of lines is. Do not set it. */
21294
+ "--code-block-mark-size"?: (string) | undefined;
21295
+ /** Written by the block on each `mark`: how far down the code its run of lines starts. Do not set it. */
21296
+ "--code-block-mark-start"?: (string) | undefined;
21027
21297
  /** Fill behind the fragment. Defaults to the foreground color at 6%, which looks the same on a light page and a dark one. */
21028
21298
  "--code-background-color"?: (string) | undefined;
21029
21299
  /** The fragment's typeface. Defaults to the mono face. */
@@ -22572,6 +22842,14 @@ export type CustomCssProperties = {
22572
22842
  "--steps-progress-track-color"?: (string) | undefined;
22573
22843
  /** How far through the sequence is, as a percentage, written on the `progress` part. */
22574
22844
  "--steps-progress"?: (string) | undefined;
22845
+ /** The color of most strands. Defaults to `--helix-color-primary`. */
22846
+ "--strands-glow"?: (string) | undefined;
22847
+ /** The page the light is added to. Defaults to `--helix-color-background`. */
22848
+ "--strands-ground"?: (string) | undefined;
22849
+ /** The hottest strands, and on a light page the ink the light darkens toward. Defaults to `--helix-color-primary-hover` on a dark page and `--helix-color-primary-active` on a light one. */
22850
+ "--strands-peak"?: (string) | undefined;
22851
+ /** The color of a few strands, for depth. Defaults to `--helix-color-info`. */
22852
+ "--strands-tint"?: (string) | undefined;
22575
22853
  /** Height of the track. The width follows it. */
22576
22854
  "--switch-block-size"?: (string) | undefined;
22577
22855
  /** Color of the icon on the thumb. Without it, the icon is muted while off and takes the on color while on. */
@@ -22614,14 +22892,20 @@ export type CustomCssProperties = {
22614
22892
  "--table-drop-indicator-color"?: (string) | undefined;
22615
22893
  /** The thickness of the line where a moved row would land. */
22616
22894
  "--table-drop-indicator-size"?: (string) | undefined;
22895
+ /** The color of a row's disclosure button, in a table whose rows nest. */
22896
+ "--table-expand-color"?: (string) | undefined;
22617
22897
  /** The color of a row's grip, in a `reorderable` table. */
22618
22898
  "--table-grip-color"?: (string) | undefined;
22619
22899
  /** The opacity of a row's grip while a sort decides the order. */
22620
22900
  "--table-grip-disabled-opacity"?: (string) | undefined;
22901
+ /** How far each step of depth sets a nested row's disclosure cell in. */
22902
+ "--table-indent"?: (string) | undefined;
22621
22903
  /** The opacity of the cells of a `disabled` row. */
22622
22904
  "--table-row-disabled-opacity"?: (string) | undefined;
22623
22905
  /** The wash across the cells of a row with `href` under the pointer. */
22624
22906
  "--table-row-hover-background-color"?: (string) | undefined;
22907
+ /** Written by the row on its `expand` cell: how deep the row sits, from 1. Do not set it. */
22908
+ "--table-row-level"?: (string) | undefined;
22625
22909
  /** The space between the tab row and the panel's content. */
22626
22910
  "--tabs-panel-padding-block-start"?: (string) | undefined;
22627
22911
  /** The space between tabs. */
@@ -22980,6 +23264,10 @@ export type CustomCssProperties = {
22980
23264
  "--video-playlist-menu-poster"?: (string) | undefined;
22981
23265
  /** The size of the trigger's icon. */
22982
23266
  "--video-playlist-menu-size"?: (string) | undefined;
23267
+ /** The color of the words shown while there are no entries. */
23268
+ "--video-playlist-empty-color"?: (string) | undefined;
23269
+ /** The space around the words shown while there are no entries. */
23270
+ "--video-playlist-empty-padding"?: (string) | undefined;
22983
23271
  /** The space between the player and the list. */
22984
23272
  "--video-playlist-gap"?: (string) | undefined;
22985
23273
  /** The space between the entries. */
@@ -23010,6 +23298,8 @@ export type CustomCssProperties = {
23010
23298
  "--video-progress"?: (string) | undefined;
23011
23299
  /** How tall the scrolling box is. */
23012
23300
  "--virtual-list-block-size"?: (string) | undefined;
23301
+ /** How faint a row `disabled-keys` names is drawn. */
23302
+ "--virtual-list-disabled-opacity"?: (string) | undefined;
23013
23303
  /** The color of the text in the row shown when there are no items. */
23014
23304
  "--virtual-list-empty-color"?: (string) | undefined;
23015
23305
  /** The space around the text in the row shown when there are no items. */
@@ -23190,7 +23480,7 @@ export interface WcToolkitVueGlobalComponents {
23190
23480
  HelixCheckboxVueProps,
23191
23481
  HelixCheckboxVueEvents
23192
23482
  >;
23193
- /** The header sits above the code with the copy button at its end, so the button never covers the first line. A block with no name has no header. The button then sits beside the code in space the block keeps clear: an end gutter for code, and a band above the first hunk for a diff. A diff draws one block per file in the same frame. Each changed line is tinted in its tone at Tag's resting strength, with its '+' or '-' in the tone's ink color, so you can see the change without comparing two pale backgrounds. A split diff stacks its two versions when the file is narrower than about 40rem. Long lines scroll by default. Set 'wrap' to wrap them instead, for prose-like code such as a long command, and set '--code-block-max-block-size' to cap the height of a long file, which then scrolls. */
23483
+ /** The header sits above the code with the copy button at its end, so the button never covers the first line. A block with no name has no header. The button then sits beside the code in space the block keeps clear: an end gutter for code, and a band above the first hunk for a diff. A diff draws one block per file in the same frame. Each changed line is tinted in its tone at Tag's resting strength, with its '+' or '-' in the tone's ink color, so you can see the change without comparing two pale backgrounds. A split diff stacks its two versions when the file is narrower than about 40rem. Long lines scroll by default. Set 'wrap' to wrap them instead, for prose-like code such as a long command, and set '--code-block-max-block-size' to cap the height of a long file, which then scrolls. A line 'mark-lines' names takes a band in the primary color, with an edge at its start. */
23194
23484
  "helix-code-block": DefineCustomElement<
23195
23485
  HelixCodeBlock,
23196
23486
  HelixCodeBlockVueProps,
@@ -23802,6 +24092,18 @@ export interface WcToolkitVueGlobalComponents {
23802
24092
  HelixStepVueProps,
23803
24093
  HelixStepVueEvents
23804
24094
  >;
24095
+ /** 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-info' 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. **Three forms, set with 'variant'.** 'fan' is a tight, bright bend with its arms opening to the right. 'ribbon', the default, is a broad, soft ribbon in long curves. 'waves' is sharp strands crossing the full width. **In its own box, by default.** The element fills the box it is given, the way an image does, and 'at' places the fan's bend 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 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, without easing. - 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. */
24096
+ "helix-strands": DefineCustomElement<
24097
+ HelixStrands,
24098
+ HelixStrandsVueProps,
24099
+ HelixStrandsVueEvents
24100
+ >;
24101
+ /** Placed inside a 'helix-strands' with 'travel', a stop names an element with 'for' and says which form the ribbon takes when the page reaches it: a 'fan' bending through it, a 'ribbon' passing through 'at', or 'waves' crossing at its top edge. The stops are read in page order, whatever order they are written in, and a stop naming no element is skipped. A stop draws nothing itself and is never shown. **Every property is reflected**, because the parent watches its stops' attributes to lay the ribbon out again: a change made from script reaches the page as a change made in markup does. None has a default, so a stop writes nothing it was not given. */
24102
+ "helix-strands-stop": DefineCustomElement<
24103
+ HelixStrandsStop,
24104
+ HelixStrandsStopVueProps,
24105
+ HelixStrandsStopVueEvents
24106
+ >;
23805
24107
  /** A thumb moves along a track. The switch is the one place in Helix where color means "on". A checkbox has a tick, and a switch has no mark, so the fill is what tells the two states apart. The input is the hit target. It is stretched over the track and made invisible, so the press, the focus, and the label forwarding come from the platform. The height is '--helix-size-switch', one step above the checkbox's at every density. At the checkbox's height the thumb has two pixels of track around it, and the control looks like a small dash. The width follows the height, so setting '--switch-block-size' widens the switch too and keeps the proportion. The thumb is an element, the 'thumb' part, and holds an icon for each state: one in the 'on' slot shows while the switch is on, and one in the 'off' slot while it is off. */
23806
24108
  "helix-switch": DefineCustomElement<
23807
24109
  HelixSwitch,