@fusion.dev/helix 0.153.0 → 0.155.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 (35) hide show
  1. package/custom-elements.json +2611 -115
  2. package/dist/badge/root/badge-root.css.js +1 -1
  3. package/dist/badge/root/badge-root.d.ts +1 -0
  4. package/dist/breadcrumbs/breadcrumb/breadcrumb.css.js +5 -1
  5. package/dist/card/root/card-root.css.js +3 -1
  6. package/dist/code/root/code-root.css.js +2 -2
  7. package/dist/code/root/code-root.d.ts +1 -0
  8. package/dist/code-block/root/code-block-root.css.js +4 -1
  9. package/dist/code-block/root/code-block-root.d.ts +1 -0
  10. package/dist/color-picker/root/color-picker-root.css.js +1 -1
  11. package/dist/date-picker/root/date-picker-root.css.js +1 -1
  12. package/dist/element-events.generated.js +2 -1
  13. package/dist/icon/root/icon-root.css.js +8 -1
  14. package/dist/icon/root/icon-root.d.ts +38 -1
  15. package/dist/icon/root/icon-root.js +17 -0
  16. package/dist/quote/root/quote-root.css.js +1 -1
  17. package/dist/skeleton/root/skeleton-root.css.js +11 -7
  18. package/dist/skeleton/root/skeleton-root.d.ts +18 -2
  19. package/dist/skeleton/root/skeleton-root.js +11 -0
  20. package/dist/slider/root/slider-root.css.js +4 -3
  21. package/dist/slider/root/slider-root.d.ts +1 -0
  22. package/dist/speed-dial/item/speed-dial-item.css.js +1 -1
  23. package/dist/speed-dial/root/speed-dial-root.css.js +1 -1
  24. package/dist/stat/root/stat-root.css.js +1 -1
  25. package/dist/tabs/root/tabs-root.css.js +5 -1
  26. package/dist/tabs/root/tabs-root.d.ts +3 -0
  27. package/dist/tabs/tab/tab.css.js +1 -1
  28. package/dist/tabs/tab/tab.d.ts +2 -0
  29. package/dist/tag/root/tag-root.d.ts +5 -0
  30. package/dist/toggle/root/toggle-root.css.js +1 -1
  31. package/lint.json +1 -1
  32. package/package.json +6 -6
  33. package/types/jsx.d.ts +1203 -152
  34. package/types/vue.d.ts +330 -43
  35. package/types/words.d.ts +39 -1
package/types/vue.d.ts CHANGED
@@ -168,6 +168,7 @@ import type {
168
168
  HelixReadingChangeEvent,
169
169
  HelixReadingPressEvent,
170
170
  HelixAuraFallbackEvent,
171
+ HelixSelectEvent,
171
172
  HelixBeforeChangeEvent,
172
173
  HelixPressEvent,
173
174
  HelixBeforeMoveEvent,
@@ -182,7 +183,6 @@ import type {
182
183
  HelixReconnectEvent,
183
184
  HelixRelabelEvent,
184
185
  HelixRemoveEvent,
185
- HelixSelectEvent,
186
186
  HelixActivateEvent,
187
187
  HelixSendEvent,
188
188
  HelixTypingEvent,
@@ -1532,6 +1532,15 @@ element's language. Leave the marks out of the text. */
1532
1532
 
1533
1533
  export type HelixBlockquoteVueEvents = {};
1534
1534
 
1535
+ /** `HelixBreadcrumb` component event */
1536
+ export type HelixBreadcrumbElementEvent<E = Event> = TypedEvent<
1537
+ HelixBreadcrumb,
1538
+ E
1539
+ >;
1540
+ /** `helix-select` event type */
1541
+ export type HelixBreadcrumbHelixSelectElementEvent =
1542
+ HelixBreadcrumbElementEvent<HelixSelectEvent>;
1543
+
1535
1544
  export type HelixBreadcrumbVueProps = {
1536
1545
  /** Marks this item as the page you are on. */
1537
1546
  current?: (HelixBreadcrumb["current"]) | undefined;
@@ -1561,7 +1570,10 @@ The consumer's decision. */
1561
1570
  target?: (HelixBreadcrumb["target"]) | undefined;
1562
1571
  };
1563
1572
 
1564
- export type HelixBreadcrumbVueEvents = {};
1573
+ export type HelixBreadcrumbVueEvents = {
1574
+ /** A plain press on the crumb's link, with its `href` as the value, before the browser follows it. Cancelable: cancel it to keep the browser from following, as a client-side router does. */
1575
+ "helix-select": HelixBreadcrumbHelixSelectElementEvent;
1576
+ };
1565
1577
 
1566
1578
  export type HelixBreadcrumbsVueProps = {
1567
1579
  /** How the two halves of a split crumb are told apart. A split crumb is one
@@ -2708,10 +2720,6 @@ twice what this says once.
2708
2720
  Reflected and undefaulted, so a card that has not asked reads as a card
2709
2721
  with no attribute on it and the stylesheet only describes the departure. */
2710
2722
  mediaPlacement?: (HelixCard["mediaPlacement"]) | undefined;
2711
- /** */
2712
- "aria-labelledby"?: unknown;
2713
- /** */
2714
- "aria-label"?: unknown;
2715
2723
  };
2716
2724
 
2717
2725
  export type HelixCardVueEvents = {};
@@ -3795,6 +3803,22 @@ significant in code and a wrapped line reads as two. For prose-like code, such a
3795
3803
  a log line, a wrap reads better than a scroll. Line numbers keep the lines
3796
3804
  unwrapped, since a wrapped line would take one number and several rows. */
3797
3805
  wrap?: (HelixCodeBlock["wrap"]) | undefined;
3806
+ /** The name of a block that scrolls, which is a tab stop while it does.
3807
+
3808
+ Where the block has a name, the scroller says it too, such as "Code,
3809
+ app.ts", as `code-name-label` puts it. */
3810
+ "code-label"?: (HelixCodeBlock["codeLabel"]) | undefined;
3811
+ /** The name of a block that scrolls, which is a tab stop while it does.
3812
+
3813
+ Where the block has a name, the scroller says it too, such as "Code,
3814
+ app.ts", as `code-name-label` puts it. */
3815
+ codeLabel?: (HelixCodeBlock["codeLabel"]) | undefined;
3816
+ /** The name of a block that scrolls, where the block has a name. `{code}` is
3817
+ `code-label` and `{name}` the block's name. */
3818
+ "code-name-label"?: (HelixCodeBlock["codeNameLabel"]) | undefined;
3819
+ /** The name of a block that scrolls, where the block has a name. `{code}` is
3820
+ `code-label` and `{name}` the block's name. */
3821
+ codeNameLabel?: (HelixCodeBlock["codeNameLabel"]) | undefined;
3798
3822
  /** The expand button's words while the block shows every line. */
3799
3823
  "collapse-label"?: (HelixCodeBlock["collapseLabel"]) | undefined;
3800
3824
  /** The expand button's words while the block shows every line. */
@@ -4070,7 +4094,8 @@ Passed to the panel, whose square, hue ramp and presets say the color's
4070
4094
  name, and read by the swatch in `swatch`, which says it before the value.
4071
4095
  Color Picker lists the keys. */
4072
4096
  colorWords?: (HelixColorInput["colorWords"]) | undefined;
4073
- /** The syntax the value is written in: `hex`, `rgb`, or `hsl`.
4097
+ /** The syntax the value is written in: `hex`, `rgb`, `hsl`, `oklch`, or
4098
+ `hsb`, as Color Picker's `format`.
4074
4099
 
4075
4100
  **Undefaulted, because it reflects.** The two together stamp an attribute
4076
4101
  onto every host anybody renders, including the ones nobody configured: the
@@ -4251,8 +4276,9 @@ language hears its own rather than English between its own labels. */
4251
4276
  brightnessLabel?: (HelixColorPicker["brightnessLabel"]) | undefined;
4252
4277
  /** Whether the picker shows a number field for each channel of the color, as
4253
4278
  React Aria's ColorField does with `channel`: red, green and blue for hex
4254
- and rgb, hue, saturation and lightness for hsl, and the opacity with
4255
- `alpha`.
4279
+ and rgb, hue, saturation and lightness for hsl, hue, saturation and
4280
+ brightness for hsb, lightness, chroma and hue for oklch, and the opacity
4281
+ with `alpha`.
4256
4282
 
4257
4283
  For a reader who has the numbers from a brand guide, and for a keyboard,
4258
4284
  where typing 128 is quicker than holding an arrow key. The fields follow
@@ -4260,13 +4286,20 @@ the syntax the format toggle sets. */
4260
4286
  "channel-fields"?: (HelixColorPicker["channelFields"]) | undefined;
4261
4287
  /** Whether the picker shows a number field for each channel of the color, as
4262
4288
  React Aria's ColorField does with `channel`: red, green and blue for hex
4263
- and rgb, hue, saturation and lightness for hsl, and the opacity with
4264
- `alpha`.
4289
+ and rgb, hue, saturation and lightness for hsl, hue, saturation and
4290
+ brightness for hsb, lightness, chroma and hue for oklch, and the opacity
4291
+ with `alpha`.
4265
4292
 
4266
4293
  For a reader who has the numbers from a brand guide, and for a keyboard,
4267
4294
  where typing 128 is quicker than holding an arrow key. The fields follow
4268
4295
  the syntax the format toggle sets. */
4269
4296
  channelFields?: (HelixColorPicker["channelFields"]) | undefined;
4297
+ /** What the chroma channel's field is called, in `channel-fields` with
4298
+ oklch. */
4299
+ "chroma-label"?: (HelixColorPicker["chromaLabel"]) | undefined;
4300
+ /** What the chroma channel's field is called, in `channel-fields` with
4301
+ oklch. */
4302
+ chromaLabel?: (HelixColorPicker["chromaLabel"]) | undefined;
4270
4303
  /** The words a color's name is spoken in, as JSON keyed by their English,
4271
4304
  such as `{"red": "rot", "vibrant": "kräftiges"}`.
4272
4305
 
@@ -4307,10 +4340,16 @@ the color. */
4307
4340
  "eyedropper-label"?: (HelixColorPicker["eyedropperLabel"]) | undefined;
4308
4341
  /** What the eyedropper is called. */
4309
4342
  eyedropperLabel?: (HelixColorPicker["eyedropperLabel"]) | undefined;
4310
- /** The syntax the value is written in: `hex`, `rgb`, or `hsl`.
4343
+ /** The syntax the value is written in: `hex`, `rgb`, `hsl`, `oklch`, or
4344
+ `hsb`.
4311
4345
 
4312
4346
  Only what is written. Everything is read whatever this says, so a picker on
4313
- `hex` still takes an `rgb()` handed to it and stores the hex for it. */
4347
+ `hex` still takes an `rgb()` or an `oklch()` handed to it and stores the
4348
+ hex for it. `oklch` writes the sRGB color the picker holds, such as
4349
+ `oklch(62.8% 0.258 29.2)`; a color outside sRGB that is handed in is
4350
+ clipped to it. `hsb` writes the picker's own model, `hsb(0, 100%, 100%)`,
4351
+ as React Aria's and Zag's color strings do. It is not CSS, so the toggle
4352
+ walks the other four. */
4314
4353
  format?: (HelixColorPicker["format"]) | undefined;
4315
4354
  /** What the syntax toggle is called, with `{format}` filled in. */
4316
4355
  "format-label"?: (HelixColorPicker["formatLabel"]) | undefined;
@@ -4320,15 +4359,21 @@ Only what is written. Everything is read whatever this says, so a picker on
4320
4359
  "green-label"?: (HelixColorPicker["greenLabel"]) | undefined;
4321
4360
  /** What the green channel's field is called, in `channel-fields`. */
4322
4361
  greenLabel?: (HelixColorPicker["greenLabel"]) | undefined;
4362
+ /** Help under the picker, such as what the color is used for. The `hint`
4363
+ slot takes richer content. */
4364
+ hint?: (HelixColorPicker["hint"]) | undefined;
4323
4365
  /** What the hue channel is called. */
4324
4366
  "hue-label"?: (HelixColorPicker["hueLabel"]) | undefined;
4325
4367
  /** What the hue channel is called. */
4326
4368
  hueLabel?: (HelixColorPicker["hueLabel"]) | undefined;
4369
+ /** The name above the picker, such as "Brand color". The picker is then a
4370
+ group with this name. The `label` slot takes richer content. */
4371
+ label?: (HelixColorPicker["label"]) | undefined;
4327
4372
  /** What the lightness channel's field is called, in `channel-fields` with
4328
- hsl. */
4373
+ hsl and oklch. */
4329
4374
  "lightness-label"?: (HelixColorPicker["lightnessLabel"]) | undefined;
4330
4375
  /** What the lightness channel's field is called, in `channel-fields` with
4331
- hsl. */
4376
+ hsl and oklch. */
4332
4377
  lightnessLabel?: (HelixColorPicker["lightnessLabel"]) | undefined;
4333
4378
  /** Hides the eyedropper. Without it, the eyedropper appears in browsers that
4334
4379
  support one. */
@@ -6125,15 +6170,22 @@ speaks it. Unset is the sentence registered for the page's language, then
6125
6170
  the English. `{mode}` is `single`, `range` or `multiple`, so each can have
6126
6171
  its own sentence. */
6127
6172
  badInputMessage?: (HelixDatePicker["badInputMessage"]) | undefined;
6128
- /** The calendar the heading, the days, and the months are written in:
6129
- `gregory`, `buddhist`, `japanese`, `roc`, or `iso8601`, the five whose
6130
- months are the Gregorian months.
6131
-
6132
- Absent is the locale's own where it is one of the five, such as
6133
- `buddhist` for `th-TH` or `japanese` for `ja-JP-u-ca-japanese`, and
6134
- `gregory` for every other, such as `persian` for `fa-IR`, so the heading
6135
- names the Gregorian month the grid shows. The value is `YYYY-MM-DD` in
6136
- every calendar. */
6173
+ /** The calendar the heading, the days, and the months are written in.
6174
+
6175
+ `gregory`, `buddhist`, `japanese`, `roc`, and `iso8601` are the five
6176
+ whose months are the Gregorian months. Absent is the locale's own where
6177
+ it is one of the five, such as `buddhist` for `th-TH` or `japanese` for
6178
+ `ja-JP-u-ca-japanese`, and `gregory` for every other, such as `persian`
6179
+ for `fa-IR`.
6180
+
6181
+ `persian`, `hebrew`, `islamic-umalqura`, `islamic-civil`, `ethiopic`,
6182
+ `coptic`, and `indian` draw a calendar with months of its own, as React
6183
+ Aria's calendars do: each grid is one of that calendar's months, the
6184
+ Hebrew leap month and Ethiopia's five-day thirteenth month included, and
6185
+ Previous, Next and the page keys move by those months. `month` and
6186
+ `helix-navigate` then name a month by its first day, `YYYY-MM-DD`. The
6187
+ heading stays text, as the months and years views are drawn in Gregorian
6188
+ months only. The value is `YYYY-MM-DD` in every calendar. */
6137
6189
  calendar?: (HelixDatePicker["calendar"]) | undefined;
6138
6190
  /** The month to open on when `month` is not set. */
6139
6191
  "default-month"?: (HelixDatePicker["defaultMonth"]) | undefined;
@@ -6192,8 +6244,9 @@ its days. */
6192
6244
  min?: (HelixDatePicker["min"]) | undefined;
6193
6245
  /** How many dates can be held at once. */
6194
6246
  mode?: (HelixDatePicker["mode"]) | undefined;
6195
- /** The month shown, as `YYYY-MM`. When it is not set, it follows `value`,
6196
- then the current month.
6247
+ /** The month shown, as `YYYY-MM`, or as its first day, `YYYY-MM-DD`, under a
6248
+ `calendar` with months of its own. When it is not set, it follows
6249
+ `value`, then the current month.
6197
6250
 
6198
6251
  Separate from `value` on purpose, so paging selects nothing and a consumer
6199
6252
  can drive the view. Reading gives the month on show; writing sets it, and
@@ -6295,6 +6348,22 @@ date including the one already chosen. */
6295
6348
  "step-mismatch-message"?: (HelixDatePicker["stepMismatchMessage"]) | undefined;
6296
6349
  /** The validation message for a date that `step` skips. */
6297
6350
  stepMismatchMessage?: (HelixDatePicker["stepMismatchMessage"]) | undefined;
6351
+ /** The time zone today is read in, such as `America/New_York`, as React
6352
+ Aria's `today(timeZone)` reads it. Empty is the reader's own.
6353
+
6354
+ Dates are plain `YYYY-MM-DD` and carry no zone, so this moves only today:
6355
+ the day marked `aria-current` and `day-today`, and the month a picker
6356
+ with no value opens on. A desk in Tokyo booking for an office in New York
6357
+ sets `America/New_York`, and today is the office's. */
6358
+ "time-zone"?: (HelixDatePicker["timeZone"]) | undefined;
6359
+ /** The time zone today is read in, such as `America/New_York`, as React
6360
+ Aria's `today(timeZone)` reads it. Empty is the reader's own.
6361
+
6362
+ Dates are plain `YYYY-MM-DD` and carry no zone, so this moves only today:
6363
+ the day marked `aria-current` and `day-today`, and the month a picker
6364
+ with no value opens on. A desk in Tokyo booking for an office in New York
6365
+ sets `America/New_York`, and today is the office's. */
6366
+ timeZone?: (HelixDatePicker["timeZone"]) | undefined;
6298
6367
  /** The validation message for a date that `disable-dates` or `disable-days`
6299
6368
  bars. */
6300
6369
  "unavailable-message"?: (HelixDatePicker["unavailableMessage"]) | undefined;
@@ -8736,6 +8805,31 @@ export type HelixIconButtonVueEvents = {
8736
8805
  export type HelixIconElementEvent<E = Event> = TypedEvent<HelixIcon, E>;
8737
8806
 
8738
8807
  export type HelixIconVueProps = {
8808
+ /** A motion that draws the eye or says work is going on: `spin` turns the
8809
+ glyph without end, `pulse` fades it in and out, and `beat` swells it.
8810
+
8811
+ Absent is still. Reduced motion stills every one of them. */
8812
+ animation?: (HelixIcon["animation"]) | undefined;
8813
+ /** Whether the box takes the glyph's own proportions, its height from
8814
+ `--icon-size` and its width from the glyph's box.
8815
+
8816
+ Absent is a square, which lines icons up in a column. */
8817
+ "auto-width"?: (HelixIcon["autoWidth"]) | undefined;
8818
+ /** Whether the box takes the glyph's own proportions, its height from
8819
+ `--icon-size` and its width from the glyph's box.
8820
+
8821
+ Absent is a square, which lines icons up in a column. */
8822
+ autoWidth?: (HelixIcon["autoWidth"]) | undefined;
8823
+ /** Mirrors the glyph across an axis: `x` left to right, `y` top to bottom,
8824
+ `both` across both.
8825
+
8826
+ Absent draws it as it is. On a right-to-left page, `mirror` is the flip
8827
+ that follows the direction. */
8828
+ flip?: (HelixIcon["flip"]) | undefined;
8829
+ /** Turns the glyph clockwise by 90, 180 or 270 degrees.
8830
+
8831
+ Absent draws it upright. `--icon-rotate` turns it by any other angle. */
8832
+ rotate?: (HelixIcon["rotate"]) | undefined;
8739
8833
  /** The icon's name, read by screen readers. Set it for an icon that is not
8740
8834
  decorative. */
8741
8835
  label?: (HelixIcon["label"]) | undefined;
@@ -8759,6 +8853,11 @@ the value instead.
8759
8853
  A name written `prefix:name` asks the library registered under that
8760
8854
  prefix. */
8761
8855
  name?: (HelixIcon["name"]) | undefined;
8856
+ /** The URL of an SVG file to draw, fetched once a page and drawn in
8857
+ `currentColor` where the file does not color its shapes.
8858
+
8859
+ Wins over `name`; `icon` wins over both. Absent draws `name`. */
8860
+ src?: (HelixIcon["src"]) | undefined;
8762
8861
  /** The icon to draw, as an object you import.
8763
8862
 
8764
8863
  **The scalable door, and the one this library uses internally.** An icon is
@@ -8775,9 +8874,9 @@ for. Set both and this wins, the value being the more specific statement. */
8775
8874
  };
8776
8875
 
8777
8876
  export type HelixIconVueEvents = {
8778
- /** `name` matches no registered icon and no library answers it, so nothing is drawn. */
8877
+ /** `name` matches no registered icon and no library answers it, or `src` is no SVG, so nothing is drawn. */
8779
8878
  error: HelixIconElementEvent;
8780
- /** A glyph a library gave later for `name` is drawn. */
8879
+ /** A glyph a library gave later for `name`, or the file at `src`, is drawn. */
8781
8880
  load: HelixIconElementEvent;
8782
8881
  };
8783
8882
 
@@ -13287,6 +13386,20 @@ export type HelixQrCodeVueEvents = {
13287
13386
  export type HelixQuoteVueProps = {
13288
13387
  /** URL identifying where the quotation came from. */
13289
13388
  cite?: (HelixQuote["cite"]) | undefined;
13389
+ /** Whether to leave the quotation marks off, for a quotation set where the
13390
+ page draws its own.
13391
+
13392
+ Negative, because the marks are on by default and a boolean attribute is
13393
+ true whenever it is present. Reflected, because a stylesheet takes the
13394
+ marks off on it. */
13395
+ "no-marks"?: (HelixQuote["noMarks"]) | undefined;
13396
+ /** Whether to leave the quotation marks off, for a quotation set where the
13397
+ page draws its own.
13398
+
13399
+ Negative, because the marks are on by default and a boolean attribute is
13400
+ true whenever it is present. Reflected, because a stylesheet takes the
13401
+ marks off on it. */
13402
+ noMarks?: (HelixQuote["noMarks"]) | undefined;
13290
13403
  };
13291
13404
 
13292
13405
  export type HelixQuoteVueEvents = {};
@@ -14610,6 +14723,18 @@ the stop moves on the trigger inside the shadow root, as Button's does.
14610
14723
  No attribute, because it is coordination between elements rather than
14611
14724
  anything a consumer sets. */
14612
14725
  focusable?: (HelixSelect["focusable"]) | undefined;
14726
+ /** The options as data, for a list too long to draw whole: each a value,
14727
+ which is also its words, or a record with a `value`, a `label` and
14728
+ `disabled`. Passed to the list, which draws only the options in sight,
14729
+ as Listbox's `items` does. Set, the options you write as children are
14730
+ not read.
14731
+
14732
+ The trigger shows the chosen options' labels, the letters and the Left
14733
+ and Right keys on the closed trigger choose over the whole set, and a
14734
+ chosen value whose option leaves `items` drops out of `value`.
14735
+ `value-content` is not called for `items`. Import the Option family as
14736
+ well, whose elements are drawn. */
14737
+ items?: (HelixSelect["items"]) | undefined;
14613
14738
  /** What the trigger shows for the chosen options: a function given them, in
14614
14739
  the order they appear, that returns text, an element or a Lit template.
14615
14740
 
@@ -14653,6 +14778,11 @@ fade the fill in and out, or `none` to sit still.
14653
14778
 
14654
14779
  Reduced motion stills both. */
14655
14780
  effect?: (HelixSkeleton["effect"]) | undefined;
14781
+ /** How many lines of text the placeholder stands for, with `shape="text"`.
14782
+
14783
+ Absent, or 1, is one line. Reflected, because the stylesheet sizes a
14784
+ paragraph by it. */
14785
+ lines?: (HelixSkeleton["lines"]) | undefined;
14656
14786
  /** The shape of the placeholder: `text`, `circle`, or a block when unset.
14657
14787
 
14658
14788
  Unset is a block, which is what most missing things are. A block is the
@@ -14831,9 +14961,11 @@ between its thumbs and ignores it. */
14831
14961
  origin?: (HelixSlider["origin"]) | undefined;
14832
14962
  /** Adds a second thumb, so the value is a pair.
14833
14963
 
14834
- The pair is one string, `"10,50"`, which is what a form submits and what
14835
- `MixinControllerValue` already holds. `valueAsNumber` reads the lower of
14836
- the two, since a range has no single number. */
14964
+ The pair is one string, `"10,50"`, which is what `value` and
14965
+ `MixinControllerValue` hold. A form receives two entries under the name,
14966
+ `price=10&price=50`, as React Aria's two thumbs send theirs.
14967
+ `valueAsNumber` reads the lower of the two, since a range has no single
14968
+ number. */
14837
14969
  range?: (HelixSlider["range"]) | undefined;
14838
14970
  /** How the readout joins a range's two values, with `{start}` and `{end}`
14839
14971
  filled in. Write it in the page's language, such as `{start} bis {end}`. */
@@ -14841,12 +14973,34 @@ filled in. Write it in the page's language, such as `{start} bis {end}`. */
14841
14973
  /** How the readout joins a range's two values, with `{start}` and `{end}`
14842
14974
  filled in. Write it in the page's language, such as `{start} bis {end}`. */
14843
14975
  rangeText?: (HelixSlider["rangeText"]) | undefined;
14976
+ /** Whether a reader can see and focus the value and cannot change it. A
14977
+ read-only slider still submits its value.
14978
+
14979
+ React Aria's `isReadOnly`. Each thumb stays a tab stop and says
14980
+ `aria-readonly`. The arrow keys, the page keys, Home, End, and a drag
14981
+ leave the value where it is. A script can still set `value`. */
14982
+ readonly?: (HelixSlider["readOnly"]) | undefined;
14983
+ /** Whether a reader can see and focus the value and cannot change it. A
14984
+ read-only slider still submits its value.
14985
+
14986
+ React Aria's `isReadOnly`. Each thumb stays a tab stop and says
14987
+ `aria-readonly`. The arrow keys, the page keys, Home, End, and a drag
14988
+ leave the value where it is. A script can still set `value`. */
14989
+ readOnly?: (HelixSlider["readOnly"]) | undefined;
14844
14990
  /** Shows the chosen value beside the track. */
14845
14991
  "show-value"?: (HelixSlider["showValue"]) | undefined;
14846
14992
  /** Shows the chosen value beside the track. */
14847
14993
  showValue?: (HelixSlider["showValue"]) | undefined;
14848
14994
  /** How far one press of an arrow key moves the thumb. */
14849
14995
  step?: (HelixSlider["step"]) | undefined;
14996
+ /** The name of a thumb between a range's first and last, read after the
14997
+ slider's label, with `{index}` filled in: its place, counted from 1. The
14998
+ first is `minimum-label` and the last `maximum-label`. */
14999
+ "thumb-label"?: (HelixSlider["thumbLabel"]) | undefined;
15000
+ /** The name of a thumb between a range's first and last, read after the
15001
+ slider's label, with `{index}` filled in: its place, counted from 1. The
15002
+ first is `minimum-label` and the last `maximum-label`. */
15003
+ thumbLabel?: (HelixSlider["thumbLabel"]) | undefined;
14850
15004
  /** Whether each thumb shows its value in a bubble beside it, as Web
14851
15005
  Awesome's `with-tooltip`. The styled slider shows the bubbles while the
14852
15006
  slider is under the pointer or holds focus. They repeat what each thumb
@@ -15105,10 +15259,20 @@ export type HelixSpeedDialItemHelixSelectElementEvent =
15105
15259
  export type HelixSpeedDialItemVueProps = {
15106
15260
  /** Whether the action is disabled, so it cannot be chosen. */
15107
15261
  disabled?: (HelixSpeedDialItem["disabled"]) | undefined;
15262
+ /** Whether the link downloads the file when the action is chosen. Only
15263
+ meaningful beside an `href`, and only for a file served from the page's
15264
+ origin. */
15265
+ download?: (HelixSpeedDialItem["download"]) | undefined;
15266
+ /** The URL the action links to. Setting it draws the action as a link. */
15267
+ href?: (HelixSpeedDialItem["href"]) | undefined;
15268
+ /** The link's `rel`. Set it whenever you set `target="_blank"`. */
15269
+ rel?: (HelixSpeedDialItem["rel"]) | undefined;
15108
15270
  /** The action's keyboard shortcut as a chord, such as `mod+s`, carried as
15109
15271
  `aria-keyshortcuts` and drawn after the name. `mod` is Command on an Apple
15110
15272
  keyboard and Control elsewhere. Showing a shortcut does not bind it. */
15111
15273
  shortcut?: (HelixSpeedDialItem["shortcut"]) | undefined;
15274
+ /** Where the link opens, such as `_blank` for a new tab. */
15275
+ target?: (HelixSpeedDialItem["target"]) | undefined;
15112
15276
  /** The action's value, sent in `helix-select` when the action is chosen. */
15113
15277
  value?: (HelixSpeedDialItem["value"]) | undefined;
15114
15278
  };
@@ -15179,13 +15343,17 @@ you described or labeled it yourself. */
15179
15343
  longPressLabel?: (HelixSpeedDial["longPressLabel"]) | undefined;
15180
15344
  /** Space between the trigger and the actions, in pixels. */
15181
15345
  offset?: (HelixSpeedDial["offset"]) | undefined;
15182
- /** What opens the dial. `click` opens it on a press of the trigger. Under
15183
- `long-press`, a press is the trigger's own action, and the dial opens on a
15184
- press held for half a second, or on Alt+Down or Alt+Up. */
15346
+ /** What opens the dial. `click` opens it on a press of the trigger. `hover`
15347
+ also opens it while a mouse rests on the trigger, and closes it once the
15348
+ mouse has left. Under `long-press`, a press is the trigger's own action,
15349
+ and the dial opens on a press held for half a second, or on Alt+Down or
15350
+ Alt+Up. */
15185
15351
  "open-on"?: (HelixSpeedDial["openOn"]) | undefined;
15186
- /** What opens the dial. `click` opens it on a press of the trigger. Under
15187
- `long-press`, a press is the trigger's own action, and the dial opens on a
15188
- press held for half a second, or on Alt+Down or Alt+Up. */
15352
+ /** What opens the dial. `click` opens it on a press of the trigger. `hover`
15353
+ also opens it while a mouse rests on the trigger, and closes it once the
15354
+ mouse has left. Under `long-press`, a press is the trigger's own action,
15355
+ and the dial opens on a press held for half a second, or on Alt+Down or
15356
+ Alt+Up. */
15189
15357
  openOn?: (HelixSpeedDial["openOn"]) | undefined;
15190
15358
  /** The direction the actions open in. They move to another side if that side
15191
15359
  does not fit.
@@ -15385,7 +15553,10 @@ figures compared one against another keep their own widths. */
15385
15553
  columns?: (HelixStatGroup["columns"]) | undefined;
15386
15554
  /** Draws a rule between the figures, in addition to the space. */
15387
15555
  divided?: (HelixStatGroup["divided"]) | undefined;
15388
- /** Accessible name for the group. */
15556
+ /** Accessible name for the group, which makes it a group.
15557
+
15558
+ Absent leaves the stats with no group around them, unless `aria-label` or
15559
+ `aria-labelledby` names it. */
15389
15560
  label?: (HelixStatGroup["label"]) | undefined;
15390
15561
  };
15391
15562
 
@@ -15418,6 +15589,29 @@ reports a hydration mismatch. The absent attribute is the column, which the
15418
15589
  stylesheet reads as the base case, and the server spec asserts the host
15419
15590
  carries nothing nobody wrote. */
15420
15591
  direction?: (HelixStat["direction"]) | undefined;
15592
+ /** `Intl.NumberFormat` options `value` is written with, such as
15593
+ `{"notation":"compact"}` for `1.2M` or `{"style":"percent"}` for `98%`,
15594
+ written as JSON in the attribute.
15595
+
15596
+ Absent writes the number as the locale writes any number. */
15597
+ "format-options"?: (HelixStat["formatOptions"]) | undefined;
15598
+ /** `Intl.NumberFormat` options `value` is written with, such as
15599
+ `{"notation":"compact"}` for `1.2M` or `{"style":"percent"}` for `98%`,
15600
+ written as JSON in the attribute.
15601
+
15602
+ Absent writes the number as the locale writes any number. */
15603
+ formatOptions?: (HelixStat["formatOptions"]) | undefined;
15604
+ /** The locale `value` is written in, such as `de` for `1.234.567`.
15605
+
15606
+ Absent reads the nearest `lang`, then the runtime's own. Set it on a page
15607
+ rendered on a server, so the server and the browser write the figure
15608
+ alike. */
15609
+ locale?: (HelixStat["locale"]) | undefined;
15610
+ /** The figure as a number, written with `format-options` in `locale` in
15611
+ place of a slotted value.
15612
+
15613
+ Absent leaves the figure to the slot. */
15614
+ value?: (HelixStat["value"]) | undefined;
15421
15615
  };
15422
15616
 
15423
15617
  export type HelixStatVueEvents = {};
@@ -15452,6 +15646,16 @@ Ignored once `active` is written. */
15452
15646
 
15453
15647
  Ignored once `active` is written. */
15454
15648
  defaultActive?: (HelixSteps["defaultActive"]) | undefined;
15649
+ /** Whether the arrow keys move focus between the stages' names, along the
15650
+ way the steps run. Off by default, so the arrows keep scrolling the page. */
15651
+ arrows?: (HelixSteps["arrows"]) | undefined;
15652
+ /** What marks a stage `complete`.
15653
+
15654
+ Absent, you do: each step's `complete` is yours, because a reader who
15655
+ steps back has finished more stages than the one they are on. `passed`
15656
+ marks every stage before the one a reader moves to, and leaves the marks
15657
+ when they go back. */
15658
+ completion?: (HelixSteps["completion"]) | undefined;
15455
15659
  /** The sequence's name, read by screen readers.
15456
15660
 
15457
15661
  A list of stages is a landmark a reader arrives at out of order, so it
@@ -16175,6 +16379,12 @@ panels and tells a screen reader the list is vertical.
16175
16379
 
16176
16380
  Optional, so the resting row writes no attribute onto the host. */
16177
16381
  orientation?: (HelixTabs["orientation"]) | undefined;
16382
+ /** Whether a strip with more tabs than fit shows a button at each end it can
16383
+ scroll toward. */
16384
+ "scroll-controls"?: (HelixTabs["scrollControls"]) | undefined;
16385
+ /** Whether a strip with more tabs than fit shows a button at each end it can
16386
+ scroll toward. */
16387
+ scrollControls?: (HelixTabs["scrollControls"]) | undefined;
16178
16388
  /** How the row of tabs is drawn.
16179
16389
 
16180
16390
  Unset is a raised pill on the selected tab with nothing behind the row,
@@ -16211,11 +16421,38 @@ export type HelixTabsVueEvents = {
16211
16421
 
16212
16422
  /** `HelixTab` component event */
16213
16423
  export type HelixTabElementEvent<E = Event> = TypedEvent<HelixTab, E>;
16424
+ /** `helix-dismiss` event type */
16425
+ export type HelixTabHelixDismissElementEvent =
16426
+ HelixTabElementEvent<HelixDismissEvent>;
16214
16427
  /** `helix-select` event type */
16215
16428
  export type HelixTabHelixSelectElementEvent =
16216
16429
  HelixTabElementEvent<HelixSelectEvent>;
16217
16430
 
16218
16431
  export type HelixTabVueProps = {
16432
+ /** Whether the element shows a control that dismisses it. */
16433
+ dismissible?: (HelixTab["dismissible"]) | undefined;
16434
+ /** The dismiss control's label, read by screen readers.
16435
+
16436
+ `attribute` is spelled out because Lit lowercases a property name to
16437
+ derive one rather than dash-casing it, so this would otherwise be
16438
+ reachable only as `dismisslabel`, which nobody would guess and no linter
16439
+ would catch.
16440
+
16441
+ A word property: register it for a locale under the host's key. A family
16442
+ that names the control otherwise, such as Tag's `Remove {label}`,
16443
+ declares its own English with `@words` above the override. */
16444
+ "dismiss-label"?: (HelixTab["dismissLabel"]) | undefined;
16445
+ /** The dismiss control's label, read by screen readers.
16446
+
16447
+ `attribute` is spelled out because Lit lowercases a property name to
16448
+ derive one rather than dash-casing it, so this would otherwise be
16449
+ reachable only as `dismisslabel`, which nobody would guess and no linter
16450
+ would catch.
16451
+
16452
+ A word property: register it for a locale under the host's key. A family
16453
+ that names the control otherwise, such as Tag's `Remove {label}`,
16454
+ declares its own English with `@words` above the override. */
16455
+ dismissLabel?: (HelixTab["dismissLabel"]) | undefined;
16219
16456
  /** Whether the item is disabled and cannot be chosen. */
16220
16457
  disabled?: (HelixTab["disabled"]) | undefined;
16221
16458
  /** Whether the item is selected.
@@ -16237,6 +16474,8 @@ of tabs that are pages of a site. */
16237
16474
  };
16238
16475
 
16239
16476
  export type HelixTabVueEvents = {
16477
+ /** A `dismissible` tab was asked to close. The tab does not remove itself, so remove it and its panel in response. Cancelable. */
16478
+ "helix-dismiss": HelixTabHelixDismissElementEvent;
16240
16479
  /** Fired when the tab is chosen. Cancelable: canceling it stops the change and leaves the decision to you. */
16241
16480
  "helix-select": HelixTabHelixSelectElementEvent;
16242
16481
  };
@@ -16251,6 +16490,14 @@ export type HelixTagGroupHelixDismissElementEvent =
16251
16490
  HelixTagGroupElementEvent<HelixDismissEvent>;
16252
16491
 
16253
16492
  export type HelixTagGroupVueProps = {
16493
+ /** Keeps at least one tag selected once one is, as React Aria's
16494
+ `disallowEmptySelection`: a press or a key that would leave none selected
16495
+ is refused. Removing the last selected tag still takes it out of `value`. */
16496
+ "disallow-empty-selection"?: (HelixTagGroup["disallowEmptySelection"]) | undefined;
16497
+ /** Keeps at least one tag selected once one is, as React Aria's
16498
+ `disallowEmptySelection`: a press or a key that would leave none selected
16499
+ is refused. Removing the last selected tag still takes it out of `value`. */
16500
+ disallowEmptySelection?: (HelixTagGroup["disallowEmptySelection"]) | undefined;
16254
16501
  /** The words the group shows and says once its last tag is removed, where
16255
16502
  nothing is in the `empty` slot. */
16256
16503
  "empty-label"?: (HelixTagGroup["emptyLabel"]) | undefined;
@@ -16260,6 +16507,20 @@ nothing is in the `empty` slot. */
16260
16507
  /** The name of the set, such as "Filters", which a screen reader announces
16261
16508
  before its tags. */
16262
16509
  label?: (HelixTagGroup["label"]) | undefined;
16510
+ /** What a press, Space, or a move does to the tags already selected.
16511
+ `toggle`, the default, keeps them: a press adds or takes out the tag, and
16512
+ the arrow keys move focus alone. `replace` selects the tag alone, as a
16513
+ file list does, and the arrow keys carry the selection with focus.
16514
+ Control or Command with a press or Space adds or takes out one tag in
16515
+ `multiple`, and with an arrow moves focus without selecting. */
16516
+ "selection-behavior"?: (HelixTagGroup["selectionBehavior"]) | undefined;
16517
+ /** What a press, Space, or a move does to the tags already selected.
16518
+ `toggle`, the default, keeps them: a press adds or takes out the tag, and
16519
+ the arrow keys move focus alone. `replace` selects the tag alone, as a
16520
+ file list does, and the arrow keys carry the selection with focus.
16521
+ Control or Command with a press or Space adds or takes out one tag in
16522
+ `multiple`, and with an arrow moves focus without selecting. */
16523
+ selectionBehavior?: (HelixTagGroup["selectionBehavior"]) | undefined;
16263
16524
  /** How many tags a reader can select: `single`, `multiple`, or none.
16264
16525
 
16265
16526
  Absent selects nothing, and the tags carry no selected state at all. */
@@ -18307,6 +18568,18 @@ refused, in a `reorderable` tree. */
18307
18568
  An `aria-label` or `aria-labelledby` on the host names the tree too, and
18308
18569
  wins over this. */
18309
18570
  label?: (HelixTree["label"]) | undefined;
18571
+ /** What screen readers hear when an item moves into another branch, in a
18572
+ `reorderable` tree. `{name}` is the item's words, `{parent}` the words of
18573
+ the branch it moved into, or the tree's `label` for the top level,
18574
+ `{position}` its place there, counting from 1, and `{count}` the number of
18575
+ items there. */
18576
+ "moved-into-label"?: (HelixTree["movedIntoLabel"]) | undefined;
18577
+ /** What screen readers hear when an item moves into another branch, in a
18578
+ `reorderable` tree. `{name}` is the item's words, `{parent}` the words of
18579
+ the branch it moved into, or the tree's `label` for the top level,
18580
+ `{position}` its place there, counting from 1, and `{count}` the number of
18581
+ items there. */
18582
+ movedIntoLabel?: (HelixTree["movedIntoLabel"]) | undefined;
18310
18583
  /** What screen readers hear each time an item moves, in a `reorderable`
18311
18584
  tree. `{name}` is the item's words, `{position}` its place among its
18312
18585
  siblings, counting from 1, and `{count}` the number of siblings. */
@@ -19308,6 +19581,8 @@ export type CustomCssProperties = {
19308
19581
  "--badge-font-weight"?: (string) | undefined;
19309
19582
  /** The space between the content and the count under `placement="inline"`. */
19310
19583
  "--badge-gap"?: (string) | undefined;
19584
+ /** The size of an icon in the `icon` slot. The count's own size by default. */
19585
+ "--badge-icon-size"?: (string) | undefined;
19311
19586
  /** Pulls the mark in from the corner, along both axes. */
19312
19587
  "--badge-offset"?: (string) | undefined;
19313
19588
  /** How far the indicator's corners are rounded. */
@@ -20168,7 +20443,11 @@ export type CustomCssProperties = {
20168
20443
  "--heatmap-rows"?: (string) | undefined;
20169
20444
  /** The tone of the cell it is set on. The component writes it, and the stylesheet that paints the cell reads it. */
20170
20445
  "--heatmap-tone"?: (string) | undefined;
20171
- /** The width and height of the icon's box. */
20446
+ /** How long one turn, pulse or beat of `animation` takes. */
20447
+ "--icon-animation-duration"?: (string) | undefined;
20448
+ /** An angle the glyph is turned by, such as `45deg`. `rotate` wins over it. */
20449
+ "--icon-rotate"?: (string) | undefined;
20450
+ /** The width and height of the icon's box. The height alone under `auto-width`. */
20172
20451
  "--icon-size"?: (string) | undefined;
20173
20452
  /** The aspect ratio of the box, such as `16 / 9`. */
20174
20453
  "--image-aspect"?: (string) | undefined;
@@ -20974,6 +21253,8 @@ export type CustomCssProperties = {
20974
21253
  "--skeleton-color"?: (string) | undefined;
20975
21254
  /** How long one sweep or one pulse takes. */
20976
21255
  "--skeleton-duration"?: (string) | undefined;
21256
+ /** The width of the last line of a `lines` paragraph. Defaults to 60%. */
21257
+ "--skeleton-last-line-size"?: (string) | undefined;
20977
21258
  /** The corner of the block shape. */
20978
21259
  "--skeleton-radius"?: (string) | undefined;
20979
21260
  /** The highlight the sweep carries across the fill. */
@@ -21010,6 +21291,8 @@ export type CustomCssProperties = {
21010
21291
  "--slider-marker-color"?: (string) | undefined;
21011
21292
  /** The color of the thumb. */
21012
21293
  "--slider-thumb-color"?: (string) | undefined;
21294
+ /** The color of content in the `thumb` and `thumb-end` slots, drawn on the thumb. */
21295
+ "--slider-thumb-content-color"?: (string) | undefined;
21013
21296
  /** The thumb's size along the track. It follows `--slider-thumb-size` unless you set it, and setting one of the two makes the thumb an oval. */
21014
21297
  "--slider-thumb-length"?: (string) | undefined;
21015
21298
  /** The thumb's corner radius. It is fully round by default, so a thumb with two different dimensions is a capsule unless you change it. */
@@ -21028,7 +21311,7 @@ export type CustomCssProperties = {
21028
21311
  "--slider-track-image"?: (string) | undefined;
21029
21312
  /** The thickness of the track. It matches the progress bar's size by default. */
21030
21313
  "--slider-track-size"?: (string) | undefined;
21031
- /** Where a bubble's thumb is, as a fraction of the track, 0 to 1. Set on each `tooltip` part. */
21314
+ /** Where a bubble's or a thumb box's thumb is, as a fraction of the track, 0 to 1. Set on each `tooltip` and `thumb` part. */
21032
21315
  "--slider-at"?: (string) | undefined;
21033
21316
  /** The value as a fraction of the range, 0 to 1. */
21034
21317
  "--slider-fraction"?: (string) | undefined;
@@ -21230,12 +21513,16 @@ export type CustomCssProperties = {
21230
21513
  "--tabs-indicator-thickness"?: (string) | undefined;
21231
21514
  /** The color of the rule under the row in `underlined`. */
21232
21515
  "--tabs-rule-color"?: (string) | undefined;
21516
+ /** The fill behind the scroll buttons, over the tabs that pass under them. */
21517
+ "--tabs-scroll-background-color"?: (string) | undefined;
21233
21518
  /** The height of a tab. `segmented` sizes its tabs to the track and does not read it. */
21234
21519
  "--tabs-tab-block-size"?: (string) | undefined;
21235
21520
  /** The label color of a tab that is not current. */
21236
21521
  "--tabs-tab-color"?: (string) | undefined;
21237
21522
  /** How faint a disabled tab is drawn. */
21238
21523
  "--tabs-tab-disabled-opacity"?: (string) | undefined;
21524
+ /** The color of the mark that closes a `dismissible` tab. */
21525
+ "--tabs-tab-dismiss-color"?: (string) | undefined;
21239
21526
  /** The size of a tab's label. */
21240
21527
  "--tabs-tab-font-size"?: (string) | undefined;
21241
21528
  /** The weight of a tab's label. */
@@ -21954,7 +22241,7 @@ export interface WcToolkitVueGlobalComponents {
21954
22241
  HelixIconButtonVueProps,
21955
22242
  HelixIconButtonVueEvents
21956
22243
  >;
21957
- /** Draws in 'currentColor' and sizes from '--icon-size', so an icon takes the color of the text around it and a container can resize it without a property. Inside a button, '--icon-size' is set in 'em', so the icon scales with the button. */
22244
+ /** Draws in 'currentColor' and sizes from '--icon-size', so an icon takes the color of the text around it and a container can resize it without a property. Inside a button, '--icon-size' is set in 'em', so the icon scales with the button. **The glyph turns, flips and moves inside its own box**, so the line around it keeps its place: 'rotate' turns it by a quarter, a half or three quarters, '--icon-rotate' by any angle, 'flip' mirrors it across either axis, and 'animation' spins, pulses or beats it, as Web Awesome's icon does. Reduced motion stills every animation. 'auto-width' gives the box the glyph's own proportions, for a mark wider than it is tall. */
21958
22245
  "helix-icon": DefineCustomElement<
21959
22246
  HelixIcon,
21960
22247
  HelixIconVueProps,
@@ -22308,7 +22595,7 @@ export interface WcToolkitVueGlobalComponents {
22308
22595
  HelixSelectVueProps,
22309
22596
  HelixSelectVueEvents
22310
22597
  >;
22311
- /** Animates a highlight sweeping across the block, which reads as work in progress. A block fading in and out can look broken, so 'effect="pulse"' is a choice rather than the default. Around content with 'loading', the skeleton takes the content's box and paints over it, and the content is hidden until 'loading' is taken off. */
22598
+ /** Animates a highlight sweeping across the block, which reads as work in progress. A block fading in and out can look broken, so 'effect="pulse"' is a choice rather than the default. Around content with 'loading', the skeleton takes the content's box and paints over it, and the content is hidden until 'loading' is taken off. **'lines' draws a paragraph.** With 'shape="text"' and 'lines="3"', one element stands in for three lines of text: each line a 'skeleton' part one 'em' tall, spaced a body line height apart, and the last one shorter, as the end of a paragraph is. */
22312
22599
  "helix-skeleton": DefineCustomElement<
22313
22600
  HelixSkeleton,
22314
22601
  HelixSkeletonVueProps,
@@ -22434,7 +22721,7 @@ export interface WcToolkitVueGlobalComponents {
22434
22721
  HelixTagGroupVueProps,
22435
22722
  HelixTagGroupVueEvents
22436
22723
  >;
22437
- /** Seven tones. The fill is a tint of the status color made with 'color-mix', so when a theme changes its status colors, the tints change with them. */
22724
+ /** Seven tones. The fill is a tint of the status color made with 'color-mix', so when a theme changes its status colors, the tints change with them. A tag takes its height from the region it is in, as the controls beside it do: 'data-density="sm"', 'md', or 'lg' on the tag or on any element around it sets '--helix-size-tag' to the small, resting, or large step, so a row of tags and buttons stays one height. 'shape="pill"' rounds its ends. */
22438
22725
  "helix-tag": DefineCustomElement<
22439
22726
  HelixTag,
22440
22727
  HelixTagVueProps,