@fusion.dev/helix-headless 0.229.0 → 0.230.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 (34) hide show
  1. package/api.json +1 -1
  2. package/custom-elements.json +1 -1
  3. package/dist/canvas/edge/canvas-edge.d.ts +9 -9
  4. package/dist/canvas/edge/canvas-edge.js +3 -3
  5. package/dist/canvas/root/canvas-root.js +1 -1
  6. package/dist/code-block/root/code-block-root.d.ts +9 -9
  7. package/dist/code-block/root/code-block-root.js +4 -4
  8. package/dist/color-input/root/color-input-root.d.ts +7 -7
  9. package/dist/color-input/root/color-input-root.js +9 -9
  10. package/dist/megamenu/root/megamenu-root.d.ts +24 -24
  11. package/dist/megamenu/root/megamenu-root.js +4 -4
  12. package/dist/navigation/root/navigation-root.d.ts +7 -7
  13. package/dist/navigation/root/navigation-root.js +2 -2
  14. package/dist/outline/root/outline-root.d.ts +21 -21
  15. package/dist/outline/root/outline-root.js +6 -6
  16. package/dist/radio/root/radio-root.d.ts +1 -1
  17. package/dist/spatial-bar-chart/root/spatial-bar-chart-root.d.ts +33 -33
  18. package/dist/spatial-bar-chart/root/spatial-bar-chart-root.js +5 -5
  19. package/dist/steps/root/steps-root.d.ts +17 -17
  20. package/dist/steps/root/steps-root.js +3 -3
  21. package/dist/table/column/table-column.d.ts +7 -0
  22. package/dist/table/column/table-column.js +4 -1
  23. package/dist/tabs/root/tabs-root.d.ts +13 -13
  24. package/dist/tabs/root/tabs-root.js +3 -3
  25. package/dist/time-input/root/time-input-root.d.ts +26 -26
  26. package/dist/time-input/root/time-input-root.js +10 -10
  27. package/dist/time-picker/root/time-picker-root.d.ts +40 -40
  28. package/dist/time-picker/root/time-picker-root.js +10 -10
  29. package/examples.json +1 -1
  30. package/lint.json +1 -1
  31. package/package.json +5 -5
  32. package/types/jsx.d.ts +203 -196
  33. package/types/vue.d.ts +159 -155
  34. package/types/words.d.ts +1 -1
package/types/vue.d.ts CHANGED
@@ -1326,6 +1326,13 @@ the board can draw. */
1326
1326
  "readonly"?: HelixHeadlessCanvasEdge["readOnly"] | undefined;
1327
1327
  /** Prevents the connection from being removed. */
1328
1328
  "readOnly"?: HelixHeadlessCanvasEdge["readOnly"] | undefined;
1329
+ /** How the line is drawn: `dashed` or `dotted`. Unset is solid.
1330
+
1331
+ **A stroke rather than an axis**, which is what the registry keeps it for:
1332
+ no other family draws a line whose stroke says something, and a dashed
1333
+ connection is the ordinary way to draw a weaker or an optional one. On the
1334
+ headless tier because the board that draws the line is. */
1335
+ "stroke"?: HelixHeadlessCanvasEdge["stroke"] | undefined;
1329
1336
  /** The name of the card the connection ends at. */
1330
1337
  "to"?: HelixHeadlessCanvasEdge["to"] | undefined;
1331
1338
  /** The marker at the end of the connection. Unset is an arrow, as JSON Canvas specifies. */
@@ -1343,13 +1350,6 @@ board carries the value across from where it was written. */
1343
1350
  "to-side"?: HelixHeadlessCanvasEdge["toSide"] | undefined;
1344
1351
  /** The side of the `to` card the connection arrives at, when the document sets one. */
1345
1352
  "toSide"?: HelixHeadlessCanvasEdge["toSide"] | undefined;
1346
- /** How the line is drawn: `dashed` or `dotted`. Unset is solid.
1347
-
1348
- **A variant rather than an axis**, which is what the registry keeps it for:
1349
- no other family draws a line whose stroke says something, and a dashed
1350
- connection is the ordinary way to draw a weaker or an optional one. On the
1351
- headless tier because the board that draws the line is. */
1352
- "variant"?: HelixHeadlessCanvasEdge["variant"] | undefined;
1353
1353
  };
1354
1354
 
1355
1355
  export type HelixHeadlessCanvasEdgeVueEvents = {
@@ -2804,6 +2804,12 @@ A block with no `label` is named by it, in the header and on the copy
2804
2804
  button, as a docs site names a snippet by its language. Absent hands
2805
2805
  `highlight` an empty string and names nothing. */
2806
2806
  "language"?: HelixHeadlessCodeBlock["language"] | undefined;
2807
+ /** How a diff's two versions are arranged. It has no effect without `diff`.
2808
+
2809
+ Absent is unified, each removal above its replacement, which fits any
2810
+ width. `split` sets the old version beside the new one. Optional rather
2811
+ than defaulted, so the host carries no attribute the consumer did not write. */
2812
+ "layout"?: HelixHeadlessCodeBlock["layout"] | undefined;
2807
2813
  /** Whether the lines are numbered in a gutter beside the code.
2808
2814
 
2809
2815
  The numbers are hidden from the accessibility tree and are not part of a
@@ -2851,12 +2857,6 @@ diff with `context-lines`. `{count}` is how many. */
2851
2857
  "show-unchanged-label"?: HelixHeadlessCodeBlock["showUnchangedLabel"] | undefined;
2852
2858
  /** The words of a button that shows a folded run of unchanged lines, in a diff with `context-lines`. `{count}` is how many. */
2853
2859
  "showUnchangedLabel"?: HelixHeadlessCodeBlock["showUnchangedLabel"] | undefined;
2854
- /** How a diff's two versions are arranged. It has no effect without `diff`.
2855
-
2856
- Absent is unified, each removal above its replacement, which fits any
2857
- width. `split` sets the old version beside the new one. Optional rather
2858
- than defaulted, so the host carries no attribute the consumer did not write. */
2859
- "variant"?: HelixHeadlessCodeBlock["variant"] | undefined;
2860
2860
  /** Whether long lines wrap. Without it they scroll.
2861
2861
 
2862
2862
  Off by default, so long lines scroll, because a line break can be
@@ -3415,16 +3415,12 @@ Date Input and Time Input. */
3415
3415
  "readOnly"?: HelixHeadlessColorInput["readOnly"] | undefined;
3416
3416
  /** Colors offered under the picker, as a comma-separated list. */
3417
3417
  "swatches"?: HelixHeadlessColorInput["swatches"] | undefined;
3418
- /** What the swatch says in `variant="swatch"`, after the field's label, once
3418
+ /** What the swatch says in `trigger="swatch"`, after the field's label, once
3419
3419
  there is a color. `{name}` is the color's name, such as "vibrant red", and
3420
3420
  `{value}` the value as written. */
3421
3421
  "swatch-label"?: HelixHeadlessColorInput["swatchLabel"] | undefined;
3422
- /** What the swatch says in `variant="swatch"`, after the field's label, once there is a color. `{name}` is the color's name, such as "vibrant red", and `{value}` the value as written. */
3422
+ /** What the swatch says in `trigger="swatch"`, after the field's label, once there is a color. `{name}` is the color's name, such as "vibrant red", and `{value}` the value as written. */
3423
3423
  "swatchLabel"?: HelixHeadlessColorInput["swatchLabel"] | undefined;
3424
- /** Accessible name for the control that opens the panel. */
3425
- "trigger-label"?: HelixHeadlessColorInput["triggerLabel"] | undefined;
3426
- /** Accessible name for the control that opens the panel. */
3427
- "triggerLabel"?: HelixHeadlessColorInput["triggerLabel"] | undefined;
3428
3424
  /** Whether the field is a text box with a swatch on it, or only the swatch.
3429
3425
 
3430
3426
  `swatch` is the native control's shape: a block of color that opens a
@@ -3440,7 +3436,11 @@ readable and typeable exactly once, in whichever of the two is present.
3440
3436
  The trade is real and is the reason this is not the default: a swatch cannot
3441
3437
  be read or pasted into without opening the panel, which is worse for a form
3442
3438
  where the color is the answer rather than a setting. */
3443
- "variant"?: HelixHeadlessColorInput["variant"] | undefined;
3439
+ "trigger"?: HelixHeadlessColorInput["trigger"] | undefined;
3440
+ /** Accessible name for the control that opens the panel. */
3441
+ "trigger-label"?: HelixHeadlessColorInput["triggerLabel"] | undefined;
3442
+ /** Accessible name for the control that opens the panel. */
3443
+ "triggerLabel"?: HelixHeadlessColorInput["triggerLabel"] | undefined;
3444
3444
  /** Draws the panel's hue as a wheel around the square, in place of the hue
3445
3445
  ramp. See Color Picker's `wheel`. */
3446
3446
  "wheel"?: HelixHeadlessColorInput["wheel"] | undefined;
@@ -10775,6 +10775,27 @@ trigger to the panel. The attribute also takes a CSS time, such as `0.2s`. */
10775
10775
  "closeDelay"?: HelixHeadlessMegamenu["closeDelay"] | `${number}` | undefined;
10776
10776
  /** The section's name, used for the default trigger and the panel. */
10777
10777
  "label"?: HelixHeadlessMegamenu["label"] | undefined;
10778
+ /** Whether the panel is a card under the trigger or a band across the page.
10779
+
10780
+ The resting one is the card, hanging off the trigger and as wide as it
10781
+ needs to be. `band` is the other shape navigations use: a run from edge to
10782
+ edge under the header, with its contents held to the page's own measure, so
10783
+ a set of destinations too wide to sit under one word gets the whole width
10784
+ to lay out in.
10785
+
10786
+ **A band and not a width, which is why the word is not `full`.** It changes
10787
+ where the panel goes as well as how wide it is, which is why this tier
10788
+ knows about it at all: a band spans the viewport, so there is nothing to
10789
+ measure it against and nothing to flip or shift to, and the placing pass is
10790
+ told not to run. Everything else the popover gives, the top layer and the
10791
+ dismissal, is exactly what such a band needs. `full` is the registry's word
10792
+ for a width, and `Button` and `Dialog` are the two families answering that
10793
+ question; borrowing it here would put a third meaning on it.
10794
+
10795
+ `layout` and not an axis, for the reason the registry gives: a card under
10796
+ a word and a band under a header are two arrangements this family has, and
10797
+ no other family is being asked the same question. */
10798
+ "layout"?: HelixHeadlessMegamenu["layout"] | undefined;
10778
10799
  /** How long a pointer rests on the trigger before the panel opens, in
10779
10800
  milliseconds, under `open-on="hover"`. A pointer crossing the bar on its
10780
10801
  way somewhere else opens nothing. The attribute also takes a CSS time, such
@@ -10796,27 +10817,6 @@ heavy enough that opening it on the way past is rude. */
10796
10817
  moves if that side does not fit. A band ignores it, since a band spans the
10797
10818
  page under its bar. */
10798
10819
  "placement"?: HelixHeadlessMegamenu["placement"] | undefined;
10799
- /** Whether the panel is a card under the trigger or a band across the page.
10800
-
10801
- The resting one is the card, hanging off the trigger and as wide as it
10802
- needs to be. `band` is the other shape navigations use: a run from edge to
10803
- edge under the header, with its contents held to the page's own measure, so
10804
- a set of destinations too wide to sit under one word gets the whole width
10805
- to lay out in.
10806
-
10807
- **A band and not a width, which is why the word is not `full`.** It changes
10808
- where the panel goes as well as how wide it is, which is why this tier
10809
- knows about it at all: a band spans the viewport, so there is nothing to
10810
- measure it against and nothing to flip or shift to, and the placing pass is
10811
- told not to run. Everything else the popover gives, the top layer and the
10812
- dismissal, is exactly what such a band needs. `full` is the registry's word
10813
- for a width, and `Button` and `Dialog` are the two families answering that
10814
- question; borrowing it here would put a third meaning on it.
10815
-
10816
- `variant` and not an axis, for the reason the registry gives: a card under
10817
- a word and a band under a header are two arrangements this family has, and
10818
- no other family is being asked the same question. */
10819
- "variant"?: HelixHeadlessMegamenu["variant"] | undefined;
10820
10820
  /** Whether the element starts open. Ignored once `open` is written. */
10821
10821
  "default-open"?: HelixHeadlessMegamenu["defaultOpen"] | undefined;
10822
10822
  /** Whether the element starts open. Ignored once `open` is written. */
@@ -11318,10 +11318,6 @@ second "Main".
11318
11318
 
11319
11319
  Empty by default, which leaves the name to `fallbackLabel`. */
11320
11320
  "label"?: HelixHeadlessNavigation["label"] | undefined;
11321
- /** Stacks the destinations in a column, for a sidebar, where unset is a row
11322
- for a header or a footer. The marker follows the current destination down
11323
- the column as it does along the row. */
11324
- "orientation"?: HelixHeadlessNavigation["orientation"] | undefined;
11325
11321
  /** How the destinations are drawn, with `Tabs`' three values and for the same
11326
11322
  reasons.
11327
11323
 
@@ -11341,7 +11337,11 @@ column's inline end.
11341
11337
 
11342
11338
  Reflected and left unset by default, so the host carries nothing a
11343
11339
  consumer's server markup does not already have. */
11344
- "variant"?: HelixHeadlessNavigation["variant"] | undefined;
11340
+ "marker"?: HelixHeadlessNavigation["marker"] | undefined;
11341
+ /** Stacks the destinations in a column, for a sidebar, where unset is a row
11342
+ for a header or a footer. The marker follows the current destination down
11343
+ the column as it does along the row. */
11344
+ "orientation"?: HelixHeadlessNavigation["orientation"] | undefined;
11345
11345
  };
11346
11346
 
11347
11347
  export type HelixHeadlessNavigationVueEvents = {
@@ -12163,6 +12163,15 @@ slot names it in place of this.
12163
12163
 
12164
12164
  Empty by default, which leaves the name to `fallbackLabel`. */
12165
12165
  "label"?: HelixHeadlessOutline["label"] | undefined;
12166
+ /** The rail form: a slim column of ticks, one per link, that opens on hover,
12167
+ focus, or a tap into a surface holding the links.
12168
+
12169
+ A marker because no registered axis (emphasis, material, nesting,
12170
+ orientation, separation, shape, size, tone, width) has a value for it, and
12171
+ a rail is an arrangement of this family alone, as Megamenu's
12172
+ `marker="band"` is. It has no default: the outline without it is the list
12173
+ of links. */
12174
+ "marker"?: HelixHeadlessOutline["marker"] | undefined;
12166
12175
  /** Which links are marked. `reading` marks the one section being read, the
12167
12176
  last whose heading has passed the reading line. `visible` marks every
12168
12177
  section with part of it on screen, and the mark runs across their links. */
@@ -12175,15 +12184,6 @@ The reading line. A page with a sticky masthead sets this to its height, or
12175
12184
  a little more: without it the current section changes as a heading slides
12176
12185
  under the chrome rather than as it reaches the top of what can be seen. */
12177
12186
  "offset"?: HelixHeadlessOutline["offset"] | undefined;
12178
- /** The rail form: a slim column of ticks, one per link, that opens on hover,
12179
- focus, or a tap into a surface holding the links.
12180
-
12181
- A variant because no registered axis (emphasis, material, nesting,
12182
- orientation, separation, shape, size, tone, width) has a value for it, and
12183
- a rail is an arrangement of this family alone, as Megamenu's
12184
- `variant="band"` is. It has no default: the outline without it is the list
12185
- of links. */
12186
- "variant"?: HelixHeadlessOutline["variant"] | undefined;
12187
12187
  };
12188
12188
 
12189
12189
  export type HelixHeadlessOutlineVueEvents = {
@@ -14105,6 +14105,38 @@ height. */
14105
14105
  "grow-again"?: HelixHeadlessSpatialBarChart["growAgain"] | undefined;
14106
14106
  /** Grows the bars again each time the chart comes back into view after it left it, as a pane does when it is opened again, where `grow` alone grows them the first time only. Only a chart that grows takes it. */
14107
14107
  "growAgain"?: HelixHeadlessSpatialBarChart["growAgain"] | undefined;
14108
+ /** How the bars stand.
14109
+
14110
+ Unset, they stand on a grid of categories across and series in depth,
14111
+ in a box the camera looks at from a corner, so the grid recedes at an
14112
+ angle. `row` lays the categories in a straight line across the page and
14113
+ turns each bar to the camera, showing its top and two sides, for one row
14114
+ of readings in a small space such as a pane: turning the view turns each
14115
+ bar where it stands, and the row stays level. It is the chart's own
14116
+ drawing that lays the row: a renderer connected through
14117
+ `@fusion.dev/helix-plot` stands the bars on the grid.
14118
+
14119
+ `diagonal` is the same row climbing to the right as it recedes, each
14120
+ place a step further back than the one before, as a row of days on a
14121
+ product's page is drawn: the row rises one part in five across the page
14122
+ from any turn, and its floor and names climb with it. A row whose bars
14123
+ have a size climbs at most a quarter of the plot's height, so the bars
14124
+ of a long row keep theirs.
14125
+
14126
+ **A row draws its floor in place of a box**: each place as an outline a
14127
+ little wider than its bar, and each category's name under it, as many
14128
+ names as fit without touching. A name whose bar names a tone is written
14129
+ first, in that tone. `no-box` leaves the floor and the names out.
14130
+
14131
+ **A `column-gap` on the `fallback` part gives a row's bars one width**,
14132
+ which the styled tier sets from `--spatial-bar-chart-bar-size`: one bar
14133
+ stands as wide as each of twenty, the row is as long as its bars and
14134
+ centered, the tallest bar stands as high as the plot has room for and
14135
+ no taller than the row is long and a quarter again, so one bar stands
14136
+ as a block, and `fits` says how many bars the plot holds, so a page
14137
+ can give it the latest of a longer table. It is read when the plot's
14138
+ size changes. */
14139
+ "layout"?: HelixHeadlessSpatialBarChart["layout"] | undefined;
14108
14140
  /** Draws no box: no edges, grid, numbers, or names, and in a `row` no
14109
14141
  floor, so the readings stand alone and fill the plot, as a picture on a
14110
14142
  product's own page does. The
@@ -14137,38 +14169,6 @@ and `{low}` and `{high}` the lowest and the highest value. */
14137
14169
  "summary-label"?: HelixHeadlessSpatialBarChart["summaryLabel"] | undefined;
14138
14170
  /** The `summary` part's sentence. `{count}`, `{series}`, and `{categories}` are the number of bars, series, and categories, written in the locale, and `{low}` and `{high}` the lowest and the highest value. */
14139
14171
  "summaryLabel"?: HelixHeadlessSpatialBarChart["summaryLabel"] | undefined;
14140
- /** How the bars stand.
14141
-
14142
- Unset, they stand on a grid of categories across and series in depth,
14143
- in a box the camera looks at from a corner, so the grid recedes at an
14144
- angle. `row` lays the categories in a straight line across the page and
14145
- turns each bar to the camera, showing its top and two sides, for one row
14146
- of readings in a small space such as a pane: turning the view turns each
14147
- bar where it stands, and the row stays level. It is the chart's own
14148
- drawing that lays the row: a renderer connected through
14149
- `@fusion.dev/helix-plot` stands the bars on the grid.
14150
-
14151
- `diagonal` is the same row climbing to the right as it recedes, each
14152
- place a step further back than the one before, as a row of days on a
14153
- product's page is drawn: the row rises one part in five across the page
14154
- from any turn, and its floor and names climb with it. A row whose bars
14155
- have a size climbs at most a quarter of the plot's height, so the bars
14156
- of a long row keep theirs.
14157
-
14158
- **A row draws its floor in place of a box**: each place as an outline a
14159
- little wider than its bar, and each category's name under it, as many
14160
- names as fit without touching. A name whose bar names a tone is written
14161
- first, in that tone. `no-box` leaves the floor and the names out.
14162
-
14163
- **A `column-gap` on the `fallback` part gives a row's bars one width**,
14164
- which the styled tier sets from `--spatial-bar-chart-bar-size`: one bar
14165
- stands as wide as each of twenty, the row is as long as its bars and
14166
- centered, the tallest bar stands as high as the plot has room for and
14167
- no taller than the row is long and a quarter again, so one bar stands
14168
- as a block, and `fits` says how many bars the plot holds, so a page
14169
- can give it the latest of a longer table. It is read when the plot's
14170
- size changes. */
14171
- "variant"?: HelixHeadlessSpatialBarChart["variant"] | undefined;
14172
14172
  /** The words shown in place of the drawing when the table has no readings,
14173
14173
  and the fallback of the `empty` slot. */
14174
14174
  "empty-text"?: HelixHeadlessSpatialBarChart["emptyText"] | undefined;
@@ -15584,6 +15584,17 @@ Empty by default, which leaves the name to `fallbackLabel`. */
15584
15584
  /** Whether a reader has to finish each stage, or pass an `optional` one,
15585
15585
  before going on to the next. */
15586
15586
  "linear"?: HelixHeadlessSteps["linear"] | undefined;
15587
+ /** What each step is marked with.
15588
+
15589
+ Absent is the state itself: a check where a stage is done, a target where
15590
+ the reader is, an empty ring ahead of them. Three marks that need no
15591
+ legend, which a number does: "3" says where a stage sits in the order and
15592
+ nothing about whether it is finished.
15593
+
15594
+ `numeric` is the older convention and is still the right one where the
15595
+ order is the point, a form that says "step 3 of 5" beside it, or a sequence
15596
+ a reader is told to come back to by number. */
15597
+ "marker"?: HelixHeadlessSteps["marker"] | undefined;
15587
15598
  /** Which way the steps run.
15588
15599
 
15589
15600
  Absent is a row, which is what a form header wants, with each name under
@@ -15603,17 +15614,6 @@ number, for a sentence that places the sign itself. */
15603
15614
  "progress-label"?: HelixHeadlessSteps["progressLabel"] | undefined;
15604
15615
  /** What the `progress` part says to a screen reader. `{share, number, percent}` writes `progress` as a percentage the way the locale writes one, such as `40%`, or `40 %` in French. `{percent}` is `progress` as a whole number, for a sentence that places the sign itself. */
15605
15616
  "progressLabel"?: HelixHeadlessSteps["progressLabel"] | undefined;
15606
- /** What each step is marked with.
15607
-
15608
- Absent is the state itself: a check where a stage is done, a target where
15609
- the reader is, an empty ring ahead of them. Three marks that need no
15610
- legend, which a number does: "3" says where a stage sits in the order and
15611
- nothing about whether it is finished.
15612
-
15613
- `numeric` is the older convention and is still the right one where the
15614
- order is the point, a form that says "step 3 of 5" beside it, or a sequence
15615
- a reader is told to come back to by number. */
15616
- "variant"?: HelixHeadlessSteps["variant"] | undefined;
15617
15617
  /** The `value` of the current item.
15618
15618
 
15619
15619
  Not `option.active`, which is the option the keyboard is on: that is a
@@ -16281,16 +16281,6 @@ Automatic is the default because showing a panel is usually cheap. Set this
16281
16281
  where it is not, so a reader arrowing past four tabs does not load four
16282
16282
  panels on the way. */
16283
16283
  "manual"?: HelixHeadlessTabs["manual"] | undefined;
16284
- /** The direction the tabs run. `vertical` sets them in a column beside the
16285
- panels and tells a screen reader the list is vertical.
16286
-
16287
- Optional, so the resting row writes no attribute onto the host. */
16288
- "orientation"?: HelixHeadlessTabs["orientation"] | undefined;
16289
- /** Whether a strip with more tabs than fit shows a button at each end it can
16290
- scroll toward. */
16291
- "scroll-controls"?: HelixHeadlessTabs["scrollControls"] | undefined;
16292
- /** Whether a strip with more tabs than fit shows a button at each end it can scroll toward. */
16293
- "scrollControls"?: HelixHeadlessTabs["scrollControls"] | undefined;
16294
16284
  /** How the row of tabs is drawn.
16295
16285
 
16296
16286
  Unset is a raised pill on the selected tab with nothing behind the row,
@@ -16313,7 +16303,17 @@ away.
16313
16303
 
16314
16304
  Reflected and left unset by default, so the host carries nothing a
16315
16305
  consumer's server markup does not already have. */
16316
- "variant"?: HelixHeadlessTabs["variant"] | undefined;
16306
+ "marker"?: HelixHeadlessTabs["marker"] | undefined;
16307
+ /** The direction the tabs run. `vertical` sets them in a column beside the
16308
+ panels and tells a screen reader the list is vertical.
16309
+
16310
+ Optional, so the resting row writes no attribute onto the host. */
16311
+ "orientation"?: HelixHeadlessTabs["orientation"] | undefined;
16312
+ /** Whether a strip with more tabs than fit shows a button at each end it can
16313
+ scroll toward. */
16314
+ "scroll-controls"?: HelixHeadlessTabs["scrollControls"] | undefined;
16315
+ /** Whether a strip with more tabs than fit shows a button at each end it can scroll toward. */
16316
+ "scrollControls"?: HelixHeadlessTabs["scrollControls"] | undefined;
16317
16317
  /** The `value` of the current item.
16318
16318
 
16319
16319
  Not `option.active`, which is the option the keyboard is on: that is a
@@ -16948,6 +16948,21 @@ on why a wheel cannot do either. */
16948
16948
  "now-label"?: HelixHeadlessTimeInput["nowLabel"] | undefined;
16949
16949
  /** The words on the list's button that chooses the current time, drawn with `show-now`. */
16950
16950
  "nowLabel"?: HelixHeadlessTimeInput["nowLabel"] | undefined;
16951
+ /** Whether the panel shows one list of times or a column for each part of the
16952
+ time.
16953
+
16954
+ `list` offers whole times, which is what a product with slots or opening
16955
+ hours has. `wheels` splits them into an hour, a minute and a meridiem where
16956
+ the locale uses one, which is the only way to reach `23:45` without
16957
+ scrolling most of a day. `TimePicker` carries the longer note on the trade.
16958
+
16959
+ **Optional rather than defaulted, which is not a style preference.** A
16960
+ reflecting property with a default writes its attribute onto every host the
16961
+ moment the element upgrades, including the ones a consumer rendered and did
16962
+ not touch, and React reads that as a hydration mismatch. The absent
16963
+ attribute *is* the list, which the stylesheet reads as the base rule, so
16964
+ only the departure has to be named. */
16965
+ "picker"?: HelixHeadlessTimeInput["picker"] | undefined;
16951
16966
  /** Placeholder text shown before a time is entered. */
16952
16967
  "placeholder"?: HelixHeadlessTimeInput["placeholder"] | undefined;
16953
16968
  /** The message shown when a range holds more than two times.
@@ -17017,21 +17032,6 @@ is words for a developer. */
17017
17032
  "unreadable-message"?: HelixHeadlessTimeInput["unreadableMessage"] | undefined;
17018
17033
  /** The message for text that is no time, where `bad-input-message` is not set. `{mode}` is `single`, `range`, or `multiple`, `{example}` is a time written as the field writes one, `2:30 PM` in `en-US` and `14:30` in `de-DE`, and `{shape}` is `HH:mm`, or `HH:mm:ss` with `seconds`. */
17019
17034
  "unreadableMessage"?: HelixHeadlessTimeInput["unreadableMessage"] | undefined;
17020
- /** Whether the panel shows one list of times or a column for each part of the
17021
- time.
17022
-
17023
- `list` offers whole times, which is what a product with slots or opening
17024
- hours has. `wheels` splits them into an hour, a minute and a meridiem where
17025
- the locale uses one, which is the only way to reach `23:45` without
17026
- scrolling most of a day. `TimePicker` carries the longer note on the trade.
17027
-
17028
- **Optional rather than defaulted, which is not a style preference.** A
17029
- reflecting property with a default writes its attribute onto every host the
17030
- moment the element upgrades, including the ones a consumer rendered and did
17031
- not touch, and React reads that as a hydration mismatch. The absent
17032
- attribute *is* the list, which the stylesheet reads as the base rule, so
17033
- only the departure has to be named. */
17034
- "variant"?: HelixHeadlessTimeInput["variant"] | undefined;
17035
17035
  /** What a row of segments reports when the field is required and every
17036
17036
  segment is empty, where `value-missing-message` is not set. `{kind}` is
17037
17037
  `date` or `time`. */
@@ -17350,7 +17350,7 @@ behavior and a reader who has met one has met both. The alternative, a
17350
17350
  separate "from" and "to" control, is two answers to what a product asks as
17351
17351
  one, and it makes the between part impossible to show.
17352
17352
 
17353
- **Neither works on wheels and the variant falls back.** A range on
17353
+ **Neither works on wheels and the picker falls back.** A range on
17354
17354
  wheels is two sets of wheels, which is two controls; a multiple is a set,
17355
17355
  and a wheel has exactly one value by construction. Rather than draw
17356
17356
  something that cannot say what it holds, `wheels` renders as a list
@@ -17361,6 +17361,32 @@ whenever a mode is set. */
17361
17361
  "now-label"?: HelixHeadlessTimePicker["nowLabel"] | undefined;
17362
17362
  /** The words on the button that chooses the current time, drawn with `show-now`. */
17363
17363
  "nowLabel"?: HelixHeadlessTimePicker["nowLabel"] | undefined;
17364
+ /** Shows the times as one `list`, or as `wheels` with a column for each part
17365
+ of the time.
17366
+
17367
+ `list` is the default and offers whole times, which is what a product with
17368
+ opening hours or slots actually has. `wheels` splits them into an hour, a
17369
+ minute and, where the locale uses one, a meridiem: three short columns
17370
+ instead of ninety-six rows, and the only way to reach `23:45` without
17371
+ scrolling most of a day.
17372
+
17373
+ The trade is that a wheel cannot say which *combinations* are on offer. A
17374
+ list of half hours from nine to five is seventeen rows and every one of them
17375
+ is a time the product has; the same thing as columns is an hour column and a
17376
+ minute column, and nothing in either says the two are only valid together.
17377
+ The bounds are still enforced, so a reader can be refused after the fact,
17378
+ which is worse than not being offered it.
17379
+
17380
+ So: `list` where the set is the point, `wheels` where any time is allowed
17381
+ and the range is a whole day.
17382
+
17383
+ **Optional rather than defaulted, which is not a style preference.** A
17384
+ reflecting property with a default writes its attribute onto every host the
17385
+ moment the element upgrades, including the ones a consumer rendered and did
17386
+ not touch, and React reads that as a hydration mismatch. The absent
17387
+ attribute *is* the list, which the stylesheet reads as the base rule, so
17388
+ only the departure has to be named. */
17389
+ "picker"?: HelixHeadlessTimePicker["picker"] | undefined;
17364
17390
  /** The validation message for a time after `max`. `{max}` is replaced with
17365
17391
  `max`, written in `locale`. */
17366
17392
  "range-overflow-message"?: HelixHeadlessTimePicker["rangeOverflowMessage"] | undefined;
@@ -17431,32 +17457,6 @@ Anything under five is a thousand rows and wants a field instead. */
17431
17457
  "value-missing-message"?: HelixHeadlessTimePicker["valueMissingMessage"] | undefined;
17432
17458
  /** The validation message for a required time picker with no time chosen. */
17433
17459
  "valueMissingMessage"?: HelixHeadlessTimePicker["valueMissingMessage"] | undefined;
17434
- /** Shows the times as one `list`, or as `wheels` with a column for each part
17435
- of the time.
17436
-
17437
- `list` is the default and offers whole times, which is what a product with
17438
- opening hours or slots actually has. `wheels` splits them into an hour, a
17439
- minute and, where the locale uses one, a meridiem: three short columns
17440
- instead of ninety-six rows, and the only way to reach `23:45` without
17441
- scrolling most of a day.
17442
-
17443
- The trade is that a wheel cannot say which *combinations* are on offer. A
17444
- list of half hours from nine to five is seventeen rows and every one of them
17445
- is a time the product has; the same thing as columns is an hour column and a
17446
- minute column, and nothing in either says the two are only valid together.
17447
- The bounds are still enforced, so a reader can be refused after the fact,
17448
- which is worse than not being offered it.
17449
-
17450
- So: `list` where the set is the point, `wheels` where any time is allowed
17451
- and the range is a whole day.
17452
-
17453
- **Optional rather than defaulted, which is not a style preference.** A
17454
- reflecting property with a default writes its attribute onto every host the
17455
- moment the element upgrades, including the ones a consumer rendered and did
17456
- not touch, and React reads that as a hydration mismatch. The absent
17457
- attribute *is* the list, which the stylesheet reads as the base rule, so
17458
- only the departure has to be named. */
17459
- "variant"?: HelixHeadlessTimePicker["variant"] | undefined;
17460
17460
  /** A message under the picker, such as what is wrong with the answer.
17461
17461
 
17462
17462
  While set, the picker is invalid and does not submit, as a field's
@@ -20862,7 +20862,7 @@ export interface HelixVueGlobalComponents {
20862
20862
  * depend on color. Where a removed line is paired with the added line that
20863
20863
  * replaced it, the words each does not share with the other are the `changed`
20864
20864
  * part, so the eye goes to what changed within the line. Each file in the patch is its own block under its own name,
20865
- * and its copy button copies the new version of the file. `variant="split"`
20865
+ * and its copy button copies the new version of the file. `layout="split"`
20866
20866
  * shows the old version beside the new, each removal opposite its replacement.
20867
20867
  * `context-lines` folds each long run of unchanged lines, keeping that many
20868
20868
  * beside each change, behind a button that shows them and hides them again,
@@ -24027,7 +24027,7 @@ export interface HelixVueGlobalComponents {
24027
24027
  * marked, so `a[aria-current]` and `a[data-depth="2"]` are the hooks for a
24028
24028
  * rule of yours.
24029
24029
  *
24030
- * **The rail.** `variant="rail"` draws a slim column of ticks at the edge of a
24030
+ * **The rail.** `marker="rail"` draws a slim column of ticks at the edge of a
24031
24031
  * long scroll, one per link, with the section in view drawn longer and a deeper
24032
24032
  * level shorter. Hovering or focusing the rail opens a surface holding the
24033
24033
  * links, each on one line, and Escape closes it. A tap opens it too, and it stays
@@ -25452,6 +25452,10 @@ export interface HelixVueGlobalComponents {
25452
25452
  * the arrow keys, and its controls with Enter or F2. A resizable column has a
25453
25453
  * `separator` on its end edge, moved by dragging or with the arrow keys. In a
25454
25454
  * table with reorderable columns, each column has a grip that the table moves.
25455
+ *
25456
+ * A sortable heading draws two chevrons after its words. The chevron for the
25457
+ * current direction takes the heading's ink, so you can see which columns sort
25458
+ * and which way the table is sorted.
25455
25459
  */
25456
25460
  "helix-headless-table-column": DefineCustomElement<HelixHeadlessTableColumn, HelixHeadlessTableColumnVueProps, HelixHeadlessTableColumnVueEvents>;
25457
25461
  /**
@@ -25895,7 +25899,7 @@ export interface HelixVueGlobalComponents {
25895
25899
  * with `aria-haspopup="dialog"`, `aria-expanded`, and `aria-controls`, since
25896
25900
  * Down opens the list from it. In the list, the arrow keys, typed digits and PageUp and PageDown
25897
25901
  * move through the times, and Enter, Space or a click chooses one and closes
25898
- * the panel. With `variant="wheels"` each wheel moves the time as you turn it,
25902
+ * the panel. With `picker="wheels"` each wheel moves the time as you turn it,
25899
25903
  * the panel stays open, and Enter or Escape closes it.
25900
25904
  *
25901
25905
  * With `segmented`, the field is a row of segments in place of the text: an
@@ -25930,7 +25934,7 @@ export interface HelixVueGlobalComponents {
25930
25934
  /**
25931
25935
  * Shows the times at each `step` as a `Listbox`, which provides the keyboard
25932
25936
  * behavior, typeahead, scrolling into view, and announcements for a set of
25933
- * options. `variant="wheels"` shows a column each for the hour, the minute, and
25937
+ * options. `picker="wheels"` shows a column each for the hour, the minute, and
25934
25938
  * the meridiem, and one for the second with `seconds`. Left and Right move
25935
25939
  * between the wheels, and Tab does too.
25936
25940
  *
package/types/words.d.ts CHANGED
@@ -959,7 +959,7 @@ declare module '@fusion.dev/helix-core' {
959
959
  }
960
960
  'helix-color-input': {
961
961
  /**
962
- * What the swatch says in `variant="swatch"`, after the field's label, once
962
+ * What the swatch says in `trigger="swatch"`, after the field's label, once
963
963
  * there is a color. `{name}` is the color's name, such as "vibrant red", and
964
964
  * `{value}` the value as written.
965
965
  *