@fusion.dev/helix-headless 0.154.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 (59) hide show
  1. package/custom-elements.json +1427 -88
  2. package/dist/accordion/item/accordion-item.d.ts +15 -0
  3. package/dist/accordion/item/accordion-item.js +12 -1
  4. package/dist/accordion/root/accordion-root.d.ts +2 -1
  5. package/dist/accordion/root/accordion-root.js +1 -0
  6. package/dist/breadcrumbs/breadcrumb/breadcrumb.d.ts +36 -3
  7. package/dist/breadcrumbs/breadcrumb/breadcrumb.js +42 -2
  8. package/dist/breadcrumbs/root/breadcrumbs-root.d.ts +15 -5
  9. package/dist/breadcrumbs/root/breadcrumbs-root.js +29 -4
  10. package/dist/button-group/root/button-group-root.d.ts +2 -0
  11. package/dist/button-group/root/button-group-root.js +1 -0
  12. package/dist/color-input/root/color-input-root.d.ts +9 -3
  13. package/dist/color-input/root/color-input-root.js +3 -1
  14. package/dist/color-picker/channels.d.ts +5 -3
  15. package/dist/color-picker/channels.js +79 -21
  16. package/dist/color-picker/root/color-picker-root.d.ts +58 -5
  17. package/dist/color-picker/root/color-picker-root.js +75 -13
  18. package/dist/date-input/root/date-input-root.d.ts +1 -0
  19. package/dist/date-input/root/date-input-root.js +2 -1
  20. package/dist/date-picker/root/date-picker-root.d.ts +43 -13
  21. package/dist/date-picker/root/date-picker-root.js +54 -31
  22. package/dist/element-events.generated.js +2 -1
  23. package/dist/navigation/root/navigation-root.d.ts +26 -0
  24. package/dist/navigation/root/navigation-root.js +58 -1
  25. package/dist/select/root/select-root.d.ts +29 -3
  26. package/dist/select/root/select-root.js +34 -9
  27. package/dist/slider/root/slider-root.d.ts +71 -9
  28. package/dist/slider/root/slider-root.js +129 -42
  29. package/dist/speed-dial/item/speed-dial-item.d.ts +29 -1
  30. package/dist/speed-dial/item/speed-dial-item.js +48 -7
  31. package/dist/speed-dial/root/speed-dial-root.d.ts +32 -6
  32. package/dist/speed-dial/root/speed-dial-root.js +50 -5
  33. package/dist/splitter/root/splitter-root.d.ts +22 -0
  34. package/dist/splitter/root/splitter-root.js +36 -7
  35. package/dist/steps/reach.d.ts +5 -1
  36. package/dist/steps/reach.js +2 -2
  37. package/dist/steps/root/steps-root.d.ts +37 -2
  38. package/dist/steps/root/steps-root.js +49 -7
  39. package/dist/steps/step/step.d.ts +6 -0
  40. package/dist/steps/step/step.js +4 -0
  41. package/dist/tabs/root/tabs-root.d.ts +37 -0
  42. package/dist/tabs/root/tabs-root.js +92 -2
  43. package/dist/tabs/tab/tab.d.ts +38 -2
  44. package/dist/tabs/tab/tab.js +45 -4
  45. package/dist/tag/group/tag-group.d.ts +29 -3
  46. package/dist/tag/group/tag-group.js +42 -11
  47. package/dist/toggle/root/toggle-root.d.ts +2 -0
  48. package/dist/toggle/root/toggle-root.js +1 -1
  49. package/dist/tree/item/tree-item.d.ts +10 -0
  50. package/dist/tree/item/tree-item.js +12 -0
  51. package/dist/tree/root/tree-root.d.ts +40 -1
  52. package/dist/tree/root/tree-root.js +120 -4
  53. package/dist/tree/selection.d.ts +6 -0
  54. package/dist/tree/selection.js +11 -0
  55. package/lint.json +1 -1
  56. package/package.json +5 -5
  57. package/types/jsx.d.ts +984 -151
  58. package/types/vue.d.ts +221 -49
  59. package/types/words.d.ts +36 -1
package/types/jsx.d.ts CHANGED
@@ -2161,6 +2161,15 @@ element's language. Leave the marks out of the text. */
2161
2161
  textContent?: (string | number) | undefined;
2162
2162
  };
2163
2163
 
2164
+ /** `HelixHeadlessBreadcrumb` component event */
2165
+ export type HelixHeadlessBreadcrumbElementEvent<E = Event> = TypedEvent<
2166
+ HelixHeadlessBreadcrumb,
2167
+ E
2168
+ >;
2169
+ /** `helix-select` event type */
2170
+ export type HelixHeadlessBreadcrumbHelixSelectElementEvent =
2171
+ HelixHeadlessBreadcrumbElementEvent<HelixSelectEvent>;
2172
+
2164
2173
  export type HelixHeadlessBreadcrumbProps = {
2165
2174
  /** Marks this item as the page you are on. */
2166
2175
  current?: (HelixHeadlessBreadcrumb["current"]) | undefined;
@@ -2188,6 +2197,11 @@ The consumer's decision. */
2188
2197
  rel?: (HelixHeadlessBreadcrumb["rel"]) | undefined;
2189
2198
  /** Where the link opens. Use it for a crumb that leaves the site. */
2190
2199
  target?: (HelixHeadlessBreadcrumb["target"]) | undefined;
2200
+
2201
+ /** 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. */
2202
+ "onhelix-select"?: ((
2203
+ e: HelixHeadlessBreadcrumbHelixSelectElementEvent,
2204
+ ) => void) | undefined;
2191
2205
  };
2192
2206
 
2193
2207
  export type HelixHeadlessBreadcrumbSolidJsProps = {
@@ -2217,6 +2231,10 @@ The consumer's decision. */
2217
2231
  "prop:rel"?: (HelixHeadlessBreadcrumb["rel"]) | undefined;
2218
2232
  /** Where the link opens. Use it for a crumb that leaves the site. */
2219
2233
  "prop:target"?: (HelixHeadlessBreadcrumb["target"]) | undefined;
2234
+ /** 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. */
2235
+ "on:helix-select"?: ((
2236
+ e: HelixHeadlessBreadcrumbHelixSelectElementEvent,
2237
+ ) => void) | undefined;
2220
2238
 
2221
2239
  /** Set the innerHTML of the element */
2222
2240
  innerHTML?: (string) | undefined;
@@ -6125,7 +6143,8 @@ Passed to the panel, whose square, hue ramp and presets say the color's
6125
6143
  name, and read by the swatch in `swatch`, which says it before the value.
6126
6144
  Color Picker lists the keys. */
6127
6145
  colorWords?: (HelixHeadlessColorInput["colorWords"]) | undefined;
6128
- /** The syntax the value is written in: `hex`, `rgb`, or `hsl`.
6146
+ /** The syntax the value is written in: `hex`, `rgb`, `hsl`, `oklch`, or
6147
+ `hsb`, as Color Picker's `format`.
6129
6148
 
6130
6149
  **Undefaulted, because it reflects.** The two together stamp an attribute
6131
6150
  onto every host anybody renders, including the ones nobody configured: the
@@ -6345,7 +6364,8 @@ Passed to the panel, whose square, hue ramp and presets say the color's
6345
6364
  name, and read by the swatch in `swatch`, which says it before the value.
6346
6365
  Color Picker lists the keys. */
6347
6366
  "prop:colorWords"?: (HelixHeadlessColorInput["colorWords"]) | undefined;
6348
- /** The syntax the value is written in: `hex`, `rgb`, or `hsl`.
6367
+ /** The syntax the value is written in: `hex`, `rgb`, `hsl`, `oklch`, or
6368
+ `hsb`, as Color Picker's `format`.
6349
6369
 
6350
6370
  **Undefaulted, because it reflects.** The two together stamp an attribute
6351
6371
  onto every host anybody renders, including the ones nobody configured: the
@@ -6590,8 +6610,9 @@ language hears its own rather than English between its own labels. */
6590
6610
  brightnessLabel?: (HelixHeadlessColorPicker["brightnessLabel"]) | undefined;
6591
6611
  /** Whether the picker shows a number field for each channel of the color, as
6592
6612
  React Aria's ColorField does with `channel`: red, green and blue for hex
6593
- and rgb, hue, saturation and lightness for hsl, and the opacity with
6594
- `alpha`.
6613
+ and rgb, hue, saturation and lightness for hsl, hue, saturation and
6614
+ brightness for hsb, lightness, chroma and hue for oklch, and the opacity
6615
+ with `alpha`.
6595
6616
 
6596
6617
  For a reader who has the numbers from a brand guide, and for a keyboard,
6597
6618
  where typing 128 is quicker than holding an arrow key. The fields follow
@@ -6599,13 +6620,20 @@ the syntax the format toggle sets. */
6599
6620
  "channel-fields"?: (HelixHeadlessColorPicker["channelFields"]) | undefined;
6600
6621
  /** Whether the picker shows a number field for each channel of the color, as
6601
6622
  React Aria's ColorField does with `channel`: red, green and blue for hex
6602
- and rgb, hue, saturation and lightness for hsl, and the opacity with
6603
- `alpha`.
6623
+ and rgb, hue, saturation and lightness for hsl, hue, saturation and
6624
+ brightness for hsb, lightness, chroma and hue for oklch, and the opacity
6625
+ with `alpha`.
6604
6626
 
6605
6627
  For a reader who has the numbers from a brand guide, and for a keyboard,
6606
6628
  where typing 128 is quicker than holding an arrow key. The fields follow
6607
6629
  the syntax the format toggle sets. */
6608
6630
  channelFields?: (HelixHeadlessColorPicker["channelFields"]) | undefined;
6631
+ /** What the chroma channel's field is called, in `channel-fields` with
6632
+ oklch. */
6633
+ "chroma-label"?: (HelixHeadlessColorPicker["chromaLabel"]) | undefined;
6634
+ /** What the chroma channel's field is called, in `channel-fields` with
6635
+ oklch. */
6636
+ chromaLabel?: (HelixHeadlessColorPicker["chromaLabel"]) | undefined;
6609
6637
  /** The words a color's name is spoken in, as JSON keyed by their English,
6610
6638
  such as `{"red": "rot", "vibrant": "kräftiges"}`.
6611
6639
 
@@ -6646,10 +6674,16 @@ the color. */
6646
6674
  "eyedropper-label"?: (HelixHeadlessColorPicker["eyedropperLabel"]) | undefined;
6647
6675
  /** What the eyedropper is called. */
6648
6676
  eyedropperLabel?: (HelixHeadlessColorPicker["eyedropperLabel"]) | undefined;
6649
- /** The syntax the value is written in: `hex`, `rgb`, or `hsl`.
6677
+ /** The syntax the value is written in: `hex`, `rgb`, `hsl`, `oklch`, or
6678
+ `hsb`.
6650
6679
 
6651
6680
  Only what is written. Everything is read whatever this says, so a picker on
6652
- `hex` still takes an `rgb()` handed to it and stores the hex for it. */
6681
+ `hex` still takes an `rgb()` or an `oklch()` handed to it and stores the
6682
+ hex for it. `oklch` writes the sRGB color the picker holds, such as
6683
+ `oklch(62.8% 0.258 29.2)`; a color outside sRGB that is handed in is
6684
+ clipped to it. `hsb` writes the picker's own model, `hsb(0, 100%, 100%)`,
6685
+ as React Aria's and Zag's color strings do. It is not CSS, so the toggle
6686
+ walks the other four. */
6653
6687
  format?: (HelixHeadlessColorPicker["format"]) | undefined;
6654
6688
  /** What the syntax toggle is called, with `{format}` filled in. */
6655
6689
  "format-label"?: (HelixHeadlessColorPicker["formatLabel"]) | undefined;
@@ -6659,15 +6693,21 @@ Only what is written. Everything is read whatever this says, so a picker on
6659
6693
  "green-label"?: (HelixHeadlessColorPicker["greenLabel"]) | undefined;
6660
6694
  /** What the green channel's field is called, in `channel-fields`. */
6661
6695
  greenLabel?: (HelixHeadlessColorPicker["greenLabel"]) | undefined;
6696
+ /** Help under the picker, such as what the color is used for. The `hint`
6697
+ slot takes richer content. */
6698
+ hint?: (HelixHeadlessColorPicker["hint"]) | undefined;
6662
6699
  /** What the hue channel is called. */
6663
6700
  "hue-label"?: (HelixHeadlessColorPicker["hueLabel"]) | undefined;
6664
6701
  /** What the hue channel is called. */
6665
6702
  hueLabel?: (HelixHeadlessColorPicker["hueLabel"]) | undefined;
6703
+ /** The name above the picker, such as "Brand color". The picker is then a
6704
+ group with this name. The `label` slot takes richer content. */
6705
+ label?: (HelixHeadlessColorPicker["label"]) | undefined;
6666
6706
  /** What the lightness channel's field is called, in `channel-fields` with
6667
- hsl. */
6707
+ hsl and oklch. */
6668
6708
  "lightness-label"?: (HelixHeadlessColorPicker["lightnessLabel"]) | undefined;
6669
6709
  /** What the lightness channel's field is called, in `channel-fields` with
6670
- hsl. */
6710
+ hsl and oklch. */
6671
6711
  lightnessLabel?: (HelixHeadlessColorPicker["lightnessLabel"]) | undefined;
6672
6712
  /** Hides the eyedropper. Without it, the eyedropper appears in browsers that
6673
6713
  support one. */
@@ -6950,8 +6990,9 @@ language hears its own rather than English between its own labels. */
6950
6990
  "prop:brightnessLabel"?: (HelixHeadlessColorPicker["brightnessLabel"]) | undefined;
6951
6991
  /** Whether the picker shows a number field for each channel of the color, as
6952
6992
  React Aria's ColorField does with `channel`: red, green and blue for hex
6953
- and rgb, hue, saturation and lightness for hsl, and the opacity with
6954
- `alpha`.
6993
+ and rgb, hue, saturation and lightness for hsl, hue, saturation and
6994
+ brightness for hsb, lightness, chroma and hue for oklch, and the opacity
6995
+ with `alpha`.
6955
6996
 
6956
6997
  For a reader who has the numbers from a brand guide, and for a keyboard,
6957
6998
  where typing 128 is quicker than holding an arrow key. The fields follow
@@ -6959,13 +7000,20 @@ the syntax the format toggle sets. */
6959
7000
  "bool:channel-fields"?: (HelixHeadlessColorPicker["channelFields"]) | undefined;
6960
7001
  /** Whether the picker shows a number field for each channel of the color, as
6961
7002
  React Aria's ColorField does with `channel`: red, green and blue for hex
6962
- and rgb, hue, saturation and lightness for hsl, and the opacity with
6963
- `alpha`.
7003
+ and rgb, hue, saturation and lightness for hsl, hue, saturation and
7004
+ brightness for hsb, lightness, chroma and hue for oklch, and the opacity
7005
+ with `alpha`.
6964
7006
 
6965
7007
  For a reader who has the numbers from a brand guide, and for a keyboard,
6966
7008
  where typing 128 is quicker than holding an arrow key. The fields follow
6967
7009
  the syntax the format toggle sets. */
6968
7010
  "prop:channelFields"?: (HelixHeadlessColorPicker["channelFields"]) | undefined;
7011
+ /** What the chroma channel's field is called, in `channel-fields` with
7012
+ oklch. */
7013
+ "attr:chroma-label"?: (HelixHeadlessColorPicker["chromaLabel"]) | undefined;
7014
+ /** What the chroma channel's field is called, in `channel-fields` with
7015
+ oklch. */
7016
+ "prop:chromaLabel"?: (HelixHeadlessColorPicker["chromaLabel"]) | undefined;
6969
7017
  /** The words a color's name is spoken in, as JSON keyed by their English,
6970
7018
  such as `{"red": "rot", "vibrant": "kräftiges"}`.
6971
7019
 
@@ -7006,10 +7054,16 @@ the color. */
7006
7054
  "attr:eyedropper-label"?: (HelixHeadlessColorPicker["eyedropperLabel"]) | undefined;
7007
7055
  /** What the eyedropper is called. */
7008
7056
  "prop:eyedropperLabel"?: (HelixHeadlessColorPicker["eyedropperLabel"]) | undefined;
7009
- /** The syntax the value is written in: `hex`, `rgb`, or `hsl`.
7057
+ /** The syntax the value is written in: `hex`, `rgb`, `hsl`, `oklch`, or
7058
+ `hsb`.
7010
7059
 
7011
7060
  Only what is written. Everything is read whatever this says, so a picker on
7012
- `hex` still takes an `rgb()` handed to it and stores the hex for it. */
7061
+ `hex` still takes an `rgb()` or an `oklch()` handed to it and stores the
7062
+ hex for it. `oklch` writes the sRGB color the picker holds, such as
7063
+ `oklch(62.8% 0.258 29.2)`; a color outside sRGB that is handed in is
7064
+ clipped to it. `hsb` writes the picker's own model, `hsb(0, 100%, 100%)`,
7065
+ as React Aria's and Zag's color strings do. It is not CSS, so the toggle
7066
+ walks the other four. */
7013
7067
  "prop:format"?: (HelixHeadlessColorPicker["format"]) | undefined;
7014
7068
  /** What the syntax toggle is called, with `{format}` filled in. */
7015
7069
  "attr:format-label"?: (HelixHeadlessColorPicker["formatLabel"]) | undefined;
@@ -7019,15 +7073,21 @@ Only what is written. Everything is read whatever this says, so a picker on
7019
7073
  "attr:green-label"?: (HelixHeadlessColorPicker["greenLabel"]) | undefined;
7020
7074
  /** What the green channel's field is called, in `channel-fields`. */
7021
7075
  "prop:greenLabel"?: (HelixHeadlessColorPicker["greenLabel"]) | undefined;
7076
+ /** Help under the picker, such as what the color is used for. The `hint`
7077
+ slot takes richer content. */
7078
+ "prop:hint"?: (HelixHeadlessColorPicker["hint"]) | undefined;
7022
7079
  /** What the hue channel is called. */
7023
7080
  "attr:hue-label"?: (HelixHeadlessColorPicker["hueLabel"]) | undefined;
7024
7081
  /** What the hue channel is called. */
7025
7082
  "prop:hueLabel"?: (HelixHeadlessColorPicker["hueLabel"]) | undefined;
7083
+ /** The name above the picker, such as "Brand color". The picker is then a
7084
+ group with this name. The `label` slot takes richer content. */
7085
+ "prop:label"?: (HelixHeadlessColorPicker["label"]) | undefined;
7026
7086
  /** What the lightness channel's field is called, in `channel-fields` with
7027
- hsl. */
7087
+ hsl and oklch. */
7028
7088
  "attr:lightness-label"?: (HelixHeadlessColorPicker["lightnessLabel"]) | undefined;
7029
7089
  /** What the lightness channel's field is called, in `channel-fields` with
7030
- hsl. */
7090
+ hsl and oklch. */
7031
7091
  "prop:lightnessLabel"?: (HelixHeadlessColorPicker["lightnessLabel"]) | undefined;
7032
7092
  /** Hides the eyedropper. Without it, the eyedropper appears in browsers that
7033
7093
  support one. */
@@ -10259,15 +10319,22 @@ speaks it. Unset is the sentence registered for the page's language, then
10259
10319
  the English. `{mode}` is `single`, `range` or `multiple`, so each can have
10260
10320
  its own sentence. */
10261
10321
  badInputMessage?: (HelixHeadlessDatePicker["badInputMessage"]) | undefined;
10262
- /** The calendar the heading, the days, and the months are written in:
10263
- `gregory`, `buddhist`, `japanese`, `roc`, or `iso8601`, the five whose
10264
- months are the Gregorian months.
10265
-
10266
- Absent is the locale's own where it is one of the five, such as
10267
- `buddhist` for `th-TH` or `japanese` for `ja-JP-u-ca-japanese`, and
10268
- `gregory` for every other, such as `persian` for `fa-IR`, so the heading
10269
- names the Gregorian month the grid shows. The value is `YYYY-MM-DD` in
10270
- every calendar. */
10322
+ /** The calendar the heading, the days, and the months are written in.
10323
+
10324
+ `gregory`, `buddhist`, `japanese`, `roc`, and `iso8601` are the five
10325
+ whose months are the Gregorian months. Absent is the locale's own where
10326
+ it is one of the five, such as `buddhist` for `th-TH` or `japanese` for
10327
+ `ja-JP-u-ca-japanese`, and `gregory` for every other, such as `persian`
10328
+ for `fa-IR`.
10329
+
10330
+ `persian`, `hebrew`, `islamic-umalqura`, `islamic-civil`, `ethiopic`,
10331
+ `coptic`, and `indian` draw a calendar with months of its own, as React
10332
+ Aria's calendars do: each grid is one of that calendar's months, the
10333
+ Hebrew leap month and Ethiopia's five-day thirteenth month included, and
10334
+ Previous, Next and the page keys move by those months. `month` and
10335
+ `helix-navigate` then name a month by its first day, `YYYY-MM-DD`. The
10336
+ heading stays text, as the months and years views are drawn in Gregorian
10337
+ months only. The value is `YYYY-MM-DD` in every calendar. */
10271
10338
  calendar?: (HelixHeadlessDatePicker["calendar"]) | undefined;
10272
10339
  /** The month to open on when `month` is not set. */
10273
10340
  "default-month"?: (HelixHeadlessDatePicker["defaultMonth"]) | undefined;
@@ -10326,8 +10393,9 @@ its days. */
10326
10393
  min?: (HelixHeadlessDatePicker["min"]) | undefined;
10327
10394
  /** How many dates can be held at once. */
10328
10395
  mode?: (HelixHeadlessDatePicker["mode"]) | undefined;
10329
- /** The month shown, as `YYYY-MM`. When it is not set, it follows `value`,
10330
- then the current month.
10396
+ /** The month shown, as `YYYY-MM`, or as its first day, `YYYY-MM-DD`, under a
10397
+ `calendar` with months of its own. When it is not set, it follows
10398
+ `value`, then the current month.
10331
10399
 
10332
10400
  Separate from `value` on purpose, so paging selects nothing and a consumer
10333
10401
  can drive the view. Reading gives the month on show; writing sets it, and
@@ -10429,6 +10497,22 @@ date including the one already chosen. */
10429
10497
  "step-mismatch-message"?: (HelixHeadlessDatePicker["stepMismatchMessage"]) | undefined;
10430
10498
  /** The validation message for a date that `step` skips. */
10431
10499
  stepMismatchMessage?: (HelixHeadlessDatePicker["stepMismatchMessage"]) | undefined;
10500
+ /** The time zone today is read in, such as `America/New_York`, as React
10501
+ Aria's `today(timeZone)` reads it. Empty is the reader's own.
10502
+
10503
+ Dates are plain `YYYY-MM-DD` and carry no zone, so this moves only today:
10504
+ the day marked `aria-current` and `day-today`, and the month a picker
10505
+ with no value opens on. A desk in Tokyo booking for an office in New York
10506
+ sets `America/New_York`, and today is the office's. */
10507
+ "time-zone"?: (HelixHeadlessDatePicker["timeZone"]) | undefined;
10508
+ /** The time zone today is read in, such as `America/New_York`, as React
10509
+ Aria's `today(timeZone)` reads it. Empty is the reader's own.
10510
+
10511
+ Dates are plain `YYYY-MM-DD` and carry no zone, so this moves only today:
10512
+ the day marked `aria-current` and `day-today`, and the month a picker
10513
+ with no value opens on. A desk in Tokyo booking for an office in New York
10514
+ sets `America/New_York`, and today is the office's. */
10515
+ timeZone?: (HelixHeadlessDatePicker["timeZone"]) | undefined;
10432
10516
  /** The validation message for a date that `disable-dates` or `disable-days`
10433
10517
  bars. */
10434
10518
  "unavailable-message"?: (HelixHeadlessDatePicker["unavailableMessage"]) | undefined;
@@ -10568,15 +10652,22 @@ speaks it. Unset is the sentence registered for the page's language, then
10568
10652
  the English. `{mode}` is `single`, `range` or `multiple`, so each can have
10569
10653
  its own sentence. */
10570
10654
  "prop:badInputMessage"?: (HelixHeadlessDatePicker["badInputMessage"]) | undefined;
10571
- /** The calendar the heading, the days, and the months are written in:
10572
- `gregory`, `buddhist`, `japanese`, `roc`, or `iso8601`, the five whose
10573
- months are the Gregorian months.
10574
-
10575
- Absent is the locale's own where it is one of the five, such as
10576
- `buddhist` for `th-TH` or `japanese` for `ja-JP-u-ca-japanese`, and
10577
- `gregory` for every other, such as `persian` for `fa-IR`, so the heading
10578
- names the Gregorian month the grid shows. The value is `YYYY-MM-DD` in
10579
- every calendar. */
10655
+ /** The calendar the heading, the days, and the months are written in.
10656
+
10657
+ `gregory`, `buddhist`, `japanese`, `roc`, and `iso8601` are the five
10658
+ whose months are the Gregorian months. Absent is the locale's own where
10659
+ it is one of the five, such as `buddhist` for `th-TH` or `japanese` for
10660
+ `ja-JP-u-ca-japanese`, and `gregory` for every other, such as `persian`
10661
+ for `fa-IR`.
10662
+
10663
+ `persian`, `hebrew`, `islamic-umalqura`, `islamic-civil`, `ethiopic`,
10664
+ `coptic`, and `indian` draw a calendar with months of its own, as React
10665
+ Aria's calendars do: each grid is one of that calendar's months, the
10666
+ Hebrew leap month and Ethiopia's five-day thirteenth month included, and
10667
+ Previous, Next and the page keys move by those months. `month` and
10668
+ `helix-navigate` then name a month by its first day, `YYYY-MM-DD`. The
10669
+ heading stays text, as the months and years views are drawn in Gregorian
10670
+ months only. The value is `YYYY-MM-DD` in every calendar. */
10580
10671
  "prop:calendar"?: (HelixHeadlessDatePicker["calendar"]) | undefined;
10581
10672
  /** The month to open on when `month` is not set. */
10582
10673
  "attr:default-month"?: (HelixHeadlessDatePicker["defaultMonth"]) | undefined;
@@ -10635,8 +10726,9 @@ its days. */
10635
10726
  "prop:min"?: (HelixHeadlessDatePicker["min"]) | undefined;
10636
10727
  /** How many dates can be held at once. */
10637
10728
  "prop:mode"?: (HelixHeadlessDatePicker["mode"]) | undefined;
10638
- /** The month shown, as `YYYY-MM`. When it is not set, it follows `value`,
10639
- then the current month.
10729
+ /** The month shown, as `YYYY-MM`, or as its first day, `YYYY-MM-DD`, under a
10730
+ `calendar` with months of its own. When it is not set, it follows
10731
+ `value`, then the current month.
10640
10732
 
10641
10733
  Separate from `value` on purpose, so paging selects nothing and a consumer
10642
10734
  can drive the view. Reading gives the month on show; writing sets it, and
@@ -10738,6 +10830,22 @@ date including the one already chosen. */
10738
10830
  "attr:step-mismatch-message"?: (HelixHeadlessDatePicker["stepMismatchMessage"]) | undefined;
10739
10831
  /** The validation message for a date that `step` skips. */
10740
10832
  "prop:stepMismatchMessage"?: (HelixHeadlessDatePicker["stepMismatchMessage"]) | undefined;
10833
+ /** The time zone today is read in, such as `America/New_York`, as React
10834
+ Aria's `today(timeZone)` reads it. Empty is the reader's own.
10835
+
10836
+ Dates are plain `YYYY-MM-DD` and carry no zone, so this moves only today:
10837
+ the day marked `aria-current` and `day-today`, and the month a picker
10838
+ with no value opens on. A desk in Tokyo booking for an office in New York
10839
+ sets `America/New_York`, and today is the office's. */
10840
+ "attr:time-zone"?: (HelixHeadlessDatePicker["timeZone"]) | undefined;
10841
+ /** The time zone today is read in, such as `America/New_York`, as React
10842
+ Aria's `today(timeZone)` reads it. Empty is the reader's own.
10843
+
10844
+ Dates are plain `YYYY-MM-DD` and carry no zone, so this moves only today:
10845
+ the day marked `aria-current` and `day-today`, and the month a picker
10846
+ with no value opens on. A desk in Tokyo booking for an office in New York
10847
+ sets `America/New_York`, and today is the office's. */
10848
+ "prop:timeZone"?: (HelixHeadlessDatePicker["timeZone"]) | undefined;
10741
10849
  /** The validation message for a date that `disable-dates` or `disable-days`
10742
10850
  bars. */
10743
10851
  "attr:unavailable-message"?: (HelixHeadlessDatePicker["unavailableMessage"]) | undefined;
@@ -24476,6 +24584,18 @@ the stop moves on the trigger inside the shadow root, as Button's does.
24476
24584
  No attribute, because it is coordination between elements rather than
24477
24585
  anything a consumer sets. */
24478
24586
  focusable?: (HelixHeadlessSelect["focusable"]) | undefined;
24587
+ /** The options as data, for a list too long to draw whole: each a value,
24588
+ which is also its words, or a record with a `value`, a `label` and
24589
+ `disabled`. Passed to the list, which draws only the options in sight,
24590
+ as Listbox's `items` does. Set, the options you write as children are
24591
+ not read.
24592
+
24593
+ The trigger shows the chosen options' labels, the letters and the Left
24594
+ and Right keys on the closed trigger choose over the whole set, and a
24595
+ chosen value whose option leaves `items` drops out of `value`.
24596
+ `value-content` is not called for `items`. Import the Option family as
24597
+ well, whose elements are drawn. */
24598
+ items?: (HelixHeadlessSelect["items"]) | undefined;
24479
24599
  /** What the trigger shows for the chosen options: a function given them, in
24480
24600
  the order they appear, that returns text, an element or a Lit template.
24481
24601
 
@@ -24669,6 +24789,18 @@ the stop moves on the trigger inside the shadow root, as Button's does.
24669
24789
  No attribute, because it is coordination between elements rather than
24670
24790
  anything a consumer sets. */
24671
24791
  "prop:focusable"?: (HelixHeadlessSelect["focusable"]) | undefined;
24792
+ /** The options as data, for a list too long to draw whole: each a value,
24793
+ which is also its words, or a record with a `value`, a `label` and
24794
+ `disabled`. Passed to the list, which draws only the options in sight,
24795
+ as Listbox's `items` does. Set, the options you write as children are
24796
+ not read.
24797
+
24798
+ The trigger shows the chosen options' labels, the letters and the Left
24799
+ and Right keys on the closed trigger choose over the whole set, and a
24800
+ chosen value whose option leaves `items` drops out of `value`.
24801
+ `value-content` is not called for `items`. Import the Option family as
24802
+ well, whose elements are drawn. */
24803
+ "prop:items"?: (HelixHeadlessSelect["items"]) | undefined;
24672
24804
  /** What the trigger shows for the chosen options: a function given them, in
24673
24805
  the order they appear, that returns text, an element or a Lit template.
24674
24806
 
@@ -24878,9 +25010,11 @@ between its thumbs and ignores it. */
24878
25010
  origin?: (HelixHeadlessSlider["origin"]) | undefined;
24879
25011
  /** Adds a second thumb, so the value is a pair.
24880
25012
 
24881
- The pair is one string, `"10,50"`, which is what a form submits and what
24882
- `MixinControllerValue` already holds. `valueAsNumber` reads the lower of
24883
- the two, since a range has no single number. */
25013
+ The pair is one string, `"10,50"`, which is what `value` and
25014
+ `MixinControllerValue` hold. A form receives two entries under the name,
25015
+ `price=10&price=50`, as React Aria's two thumbs send theirs.
25016
+ `valueAsNumber` reads the lower of the two, since a range has no single
25017
+ number. */
24884
25018
  range?: (HelixHeadlessSlider["range"]) | undefined;
24885
25019
  /** How the readout joins a range's two values, with `{start}` and `{end}`
24886
25020
  filled in. Write it in the page's language, such as `{start} bis {end}`. */
@@ -24888,12 +25022,34 @@ filled in. Write it in the page's language, such as `{start} bis {end}`. */
24888
25022
  /** How the readout joins a range's two values, with `{start}` and `{end}`
24889
25023
  filled in. Write it in the page's language, such as `{start} bis {end}`. */
24890
25024
  rangeText?: (HelixHeadlessSlider["rangeText"]) | undefined;
25025
+ /** Whether a reader can see and focus the value and cannot change it. A
25026
+ read-only slider still submits its value.
25027
+
25028
+ React Aria's `isReadOnly`. Each thumb stays a tab stop and says
25029
+ `aria-readonly`. The arrow keys, the page keys, Home, End, and a drag
25030
+ leave the value where it is. A script can still set `value`. */
25031
+ readonly?: (HelixHeadlessSlider["readOnly"]) | undefined;
25032
+ /** Whether a reader can see and focus the value and cannot change it. A
25033
+ read-only slider still submits its value.
25034
+
25035
+ React Aria's `isReadOnly`. Each thumb stays a tab stop and says
25036
+ `aria-readonly`. The arrow keys, the page keys, Home, End, and a drag
25037
+ leave the value where it is. A script can still set `value`. */
25038
+ readOnly?: (HelixHeadlessSlider["readOnly"]) | undefined;
24891
25039
  /** Shows the chosen value beside the track. */
24892
25040
  "show-value"?: (HelixHeadlessSlider["showValue"]) | undefined;
24893
25041
  /** Shows the chosen value beside the track. */
24894
25042
  showValue?: (HelixHeadlessSlider["showValue"]) | undefined;
24895
25043
  /** How far one press of an arrow key moves the thumb. */
24896
25044
  step?: (HelixHeadlessSlider["step"]) | undefined;
25045
+ /** The name of a thumb between a range's first and last, read after the
25046
+ slider's label, with `{index}` filled in: its place, counted from 1. The
25047
+ first is `minimum-label` and the last `maximum-label`. */
25048
+ "thumb-label"?: (HelixHeadlessSlider["thumbLabel"]) | undefined;
25049
+ /** The name of a thumb between a range's first and last, read after the
25050
+ slider's label, with `{index}` filled in: its place, counted from 1. The
25051
+ first is `minimum-label` and the last `maximum-label`. */
25052
+ thumbLabel?: (HelixHeadlessSlider["thumbLabel"]) | undefined;
24897
25053
  /** Whether each thumb shows its value in a bubble beside it, as Web
24898
25054
  Awesome's `with-tooltip`. The styled slider shows the bubbles while the
24899
25055
  slider is under the pointer or holds focus. They repeat what each thumb
@@ -25082,9 +25238,11 @@ between its thumbs and ignores it. */
25082
25238
  "prop:origin"?: (HelixHeadlessSlider["origin"]) | undefined;
25083
25239
  /** Adds a second thumb, so the value is a pair.
25084
25240
 
25085
- The pair is one string, `"10,50"`, which is what a form submits and what
25086
- `MixinControllerValue` already holds. `valueAsNumber` reads the lower of
25087
- the two, since a range has no single number. */
25241
+ The pair is one string, `"10,50"`, which is what `value` and
25242
+ `MixinControllerValue` hold. A form receives two entries under the name,
25243
+ `price=10&price=50`, as React Aria's two thumbs send theirs.
25244
+ `valueAsNumber` reads the lower of the two, since a range has no single
25245
+ number. */
25088
25246
  "prop:range"?: (HelixHeadlessSlider["range"]) | undefined;
25089
25247
  /** How the readout joins a range's two values, with `{start}` and `{end}`
25090
25248
  filled in. Write it in the page's language, such as `{start} bis {end}`. */
@@ -25092,12 +25250,34 @@ filled in. Write it in the page's language, such as `{start} bis {end}`. */
25092
25250
  /** How the readout joins a range's two values, with `{start}` and `{end}`
25093
25251
  filled in. Write it in the page's language, such as `{start} bis {end}`. */
25094
25252
  "prop:rangeText"?: (HelixHeadlessSlider["rangeText"]) | undefined;
25253
+ /** Whether a reader can see and focus the value and cannot change it. A
25254
+ read-only slider still submits its value.
25255
+
25256
+ React Aria's `isReadOnly`. Each thumb stays a tab stop and says
25257
+ `aria-readonly`. The arrow keys, the page keys, Home, End, and a drag
25258
+ leave the value where it is. A script can still set `value`. */
25259
+ "bool:readonly"?: (HelixHeadlessSlider["readOnly"]) | undefined;
25260
+ /** Whether a reader can see and focus the value and cannot change it. A
25261
+ read-only slider still submits its value.
25262
+
25263
+ React Aria's `isReadOnly`. Each thumb stays a tab stop and says
25264
+ `aria-readonly`. The arrow keys, the page keys, Home, End, and a drag
25265
+ leave the value where it is. A script can still set `value`. */
25266
+ "prop:readOnly"?: (HelixHeadlessSlider["readOnly"]) | undefined;
25095
25267
  /** Shows the chosen value beside the track. */
25096
25268
  "bool:show-value"?: (HelixHeadlessSlider["showValue"]) | undefined;
25097
25269
  /** Shows the chosen value beside the track. */
25098
25270
  "prop:showValue"?: (HelixHeadlessSlider["showValue"]) | undefined;
25099
25271
  /** How far one press of an arrow key moves the thumb. */
25100
25272
  "prop:step"?: (HelixHeadlessSlider["step"]) | undefined;
25273
+ /** The name of a thumb between a range's first and last, read after the
25274
+ slider's label, with `{index}` filled in: its place, counted from 1. The
25275
+ first is `minimum-label` and the last `maximum-label`. */
25276
+ "attr:thumb-label"?: (HelixHeadlessSlider["thumbLabel"]) | undefined;
25277
+ /** The name of a thumb between a range's first and last, read after the
25278
+ slider's label, with `{index}` filled in: its place, counted from 1. The
25279
+ first is `minimum-label` and the last `maximum-label`. */
25280
+ "prop:thumbLabel"?: (HelixHeadlessSlider["thumbLabel"]) | undefined;
25101
25281
  /** Whether each thumb shows its value in a bubble beside it, as Web
25102
25282
  Awesome's `with-tooltip`. The styled slider shows the bubbles while the
25103
25283
  slider is under the pointer or holds focus. They repeat what each thumb
@@ -25491,10 +25671,20 @@ export type HelixHeadlessSpeedDialItemHelixSelectElementEvent =
25491
25671
  export type HelixHeadlessSpeedDialItemProps = {
25492
25672
  /** Whether the action is disabled, so it cannot be chosen. */
25493
25673
  disabled?: (HelixHeadlessSpeedDialItem["disabled"]) | undefined;
25674
+ /** Whether the link downloads the file when the action is chosen. Only
25675
+ meaningful beside an `href`, and only for a file served from the page's
25676
+ origin. */
25677
+ download?: (HelixHeadlessSpeedDialItem["download"]) | undefined;
25678
+ /** The URL the action links to. Setting it draws the action as a link. */
25679
+ href?: (HelixHeadlessSpeedDialItem["href"]) | undefined;
25680
+ /** The link's `rel`. Set it whenever you set `target="_blank"`. */
25681
+ rel?: (HelixHeadlessSpeedDialItem["rel"]) | undefined;
25494
25682
  /** The action's keyboard shortcut as a chord, such as `mod+s`, carried as
25495
25683
  `aria-keyshortcuts` and drawn after the name. `mod` is Command on an Apple
25496
25684
  keyboard and Control elsewhere. Showing a shortcut does not bind it. */
25497
25685
  shortcut?: (HelixHeadlessSpeedDialItem["shortcut"]) | undefined;
25686
+ /** Where the link opens, such as `_blank` for a new tab. */
25687
+ target?: (HelixHeadlessSpeedDialItem["target"]) | undefined;
25498
25688
  /** The action's value, sent in `helix-select` when the action is chosen. */
25499
25689
  value?: (HelixHeadlessSpeedDialItem["value"]) | undefined;
25500
25690
 
@@ -25507,10 +25697,20 @@ keyboard and Control elsewhere. Showing a shortcut does not bind it. */
25507
25697
  export type HelixHeadlessSpeedDialItemSolidJsProps = {
25508
25698
  /** Whether the action is disabled, so it cannot be chosen. */
25509
25699
  "prop:disabled"?: (HelixHeadlessSpeedDialItem["disabled"]) | undefined;
25700
+ /** Whether the link downloads the file when the action is chosen. Only
25701
+ meaningful beside an `href`, and only for a file served from the page's
25702
+ origin. */
25703
+ "prop:download"?: (HelixHeadlessSpeedDialItem["download"]) | undefined;
25704
+ /** The URL the action links to. Setting it draws the action as a link. */
25705
+ "prop:href"?: (HelixHeadlessSpeedDialItem["href"]) | undefined;
25706
+ /** The link's `rel`. Set it whenever you set `target="_blank"`. */
25707
+ "prop:rel"?: (HelixHeadlessSpeedDialItem["rel"]) | undefined;
25510
25708
  /** The action's keyboard shortcut as a chord, such as `mod+s`, carried as
25511
25709
  `aria-keyshortcuts` and drawn after the name. `mod` is Command on an Apple
25512
25710
  keyboard and Control elsewhere. Showing a shortcut does not bind it. */
25513
25711
  "prop:shortcut"?: (HelixHeadlessSpeedDialItem["shortcut"]) | undefined;
25712
+ /** Where the link opens, such as `_blank` for a new tab. */
25713
+ "prop:target"?: (HelixHeadlessSpeedDialItem["target"]) | undefined;
25514
25714
  /** The action's value, sent in `helix-select` when the action is chosen. */
25515
25715
  "prop:value"?: (HelixHeadlessSpeedDialItem["value"]) | undefined;
25516
25716
  /** The action was chosen. Cancelable: cancel it to keep the dial open. */
@@ -25563,13 +25763,17 @@ you described or labeled it yourself. */
25563
25763
  longPressLabel?: (HelixHeadlessSpeedDial["longPressLabel"]) | undefined;
25564
25764
  /** Space between the trigger and the actions, in pixels. */
25565
25765
  offset?: (HelixHeadlessSpeedDial["offset"]) | undefined;
25566
- /** What opens the dial. `click` opens it on a press of the trigger. Under
25567
- `long-press`, a press is the trigger's own action, and the dial opens on a
25568
- press held for half a second, or on Alt+Down or Alt+Up. */
25766
+ /** What opens the dial. `click` opens it on a press of the trigger. `hover`
25767
+ also opens it while a mouse rests on the trigger, and closes it once the
25768
+ mouse has left. Under `long-press`, a press is the trigger's own action,
25769
+ and the dial opens on a press held for half a second, or on Alt+Down or
25770
+ Alt+Up. */
25569
25771
  "open-on"?: (HelixHeadlessSpeedDial["openOn"]) | undefined;
25570
- /** What opens the dial. `click` opens it on a press of the trigger. Under
25571
- `long-press`, a press is the trigger's own action, and the dial opens on a
25572
- press held for half a second, or on Alt+Down or Alt+Up. */
25772
+ /** What opens the dial. `click` opens it on a press of the trigger. `hover`
25773
+ also opens it while a mouse rests on the trigger, and closes it once the
25774
+ mouse has left. Under `long-press`, a press is the trigger's own action,
25775
+ and the dial opens on a press held for half a second, or on Alt+Down or
25776
+ Alt+Up. */
25573
25777
  openOn?: (HelixHeadlessSpeedDial["openOn"]) | undefined;
25574
25778
  /** The direction the actions open in. They move to another side if that side
25575
25779
  does not fit.
@@ -25630,13 +25834,17 @@ you described or labeled it yourself. */
25630
25834
  "prop:longPressLabel"?: (HelixHeadlessSpeedDial["longPressLabel"]) | undefined;
25631
25835
  /** Space between the trigger and the actions, in pixels. */
25632
25836
  "prop:offset"?: (HelixHeadlessSpeedDial["offset"]) | undefined;
25633
- /** What opens the dial. `click` opens it on a press of the trigger. Under
25634
- `long-press`, a press is the trigger's own action, and the dial opens on a
25635
- press held for half a second, or on Alt+Down or Alt+Up. */
25837
+ /** What opens the dial. `click` opens it on a press of the trigger. `hover`
25838
+ also opens it while a mouse rests on the trigger, and closes it once the
25839
+ mouse has left. Under `long-press`, a press is the trigger's own action,
25840
+ and the dial opens on a press held for half a second, or on Alt+Down or
25841
+ Alt+Up. */
25636
25842
  "attr:open-on"?: (HelixHeadlessSpeedDial["openOn"]) | undefined;
25637
- /** What opens the dial. `click` opens it on a press of the trigger. Under
25638
- `long-press`, a press is the trigger's own action, and the dial opens on a
25639
- press held for half a second, or on Alt+Down or Alt+Up. */
25843
+ /** What opens the dial. `click` opens it on a press of the trigger. `hover`
25844
+ also opens it while a mouse rests on the trigger, and closes it once the
25845
+ mouse has left. Under `long-press`, a press is the trigger's own action,
25846
+ and the dial opens on a press held for half a second, or on Alt+Down or
25847
+ Alt+Up. */
25640
25848
  "prop:openOn"?: (HelixHeadlessSpeedDial["openOn"]) | undefined;
25641
25849
  /** The direction the actions open in. They move to another side if that side
25642
25850
  does not fit.
@@ -26138,6 +26346,16 @@ export type HelixHeadlessStepsHelixSelectElementEvent =
26138
26346
  HelixHeadlessStepsElementEvent<HelixSelectEvent>;
26139
26347
 
26140
26348
  export type HelixHeadlessStepsProps = {
26349
+ /** Whether the arrow keys move focus between the stages' names, along the
26350
+ way the steps run. Off by default, so the arrows keep scrolling the page. */
26351
+ arrows?: (HelixHeadlessSteps["arrows"]) | undefined;
26352
+ /** What marks a stage `complete`.
26353
+
26354
+ Absent, you do: each step's `complete` is yours, because a reader who
26355
+ steps back has finished more stages than the one they are on. `passed`
26356
+ marks every stage before the one a reader moves to, and leaves the marks
26357
+ when they go back. */
26358
+ completion?: (HelixHeadlessSteps["completion"]) | undefined;
26141
26359
  /** The sequence's name, read by screen readers.
26142
26360
 
26143
26361
  A list of stages is a landmark a reader arrives at out of order, so it
@@ -26212,6 +26430,16 @@ there. Not asked of an `optional` stage, nor for a move back. */
26212
26430
  };
26213
26431
 
26214
26432
  export type HelixHeadlessStepsSolidJsProps = {
26433
+ /** Whether the arrow keys move focus between the stages' names, along the
26434
+ way the steps run. Off by default, so the arrows keep scrolling the page. */
26435
+ "prop:arrows"?: (HelixHeadlessSteps["arrows"]) | undefined;
26436
+ /** What marks a stage `complete`.
26437
+
26438
+ Absent, you do: each step's `complete` is yours, because a reader who
26439
+ steps back has finished more stages than the one they are on. `passed`
26440
+ marks every stage before the one a reader moves to, and leaves the marks
26441
+ when they go back. */
26442
+ "prop:completion"?: (HelixHeadlessSteps["completion"]) | undefined;
26215
26443
  /** The sequence's name, read by screen readers.
26216
26444
 
26217
26445
  A list of stages is a landmark a reader arrives at out of order, so it
@@ -27525,6 +27753,12 @@ panels and tells a screen reader the list is vertical.
27525
27753
 
27526
27754
  Optional, so the resting row writes no attribute onto the host. */
27527
27755
  orientation?: (HelixHeadlessTabs["orientation"]) | undefined;
27756
+ /** Whether a strip with more tabs than fit shows a button at each end it can
27757
+ scroll toward. */
27758
+ "scroll-controls"?: (HelixHeadlessTabs["scrollControls"]) | undefined;
27759
+ /** Whether a strip with more tabs than fit shows a button at each end it can
27760
+ scroll toward. */
27761
+ scrollControls?: (HelixHeadlessTabs["scrollControls"]) | undefined;
27528
27762
  /** How the row of tabs is drawn.
27529
27763
 
27530
27764
  Unset is a raised pill on the selected tab with nothing behind the row,
@@ -27594,6 +27828,12 @@ panels and tells a screen reader the list is vertical.
27594
27828
 
27595
27829
  Optional, so the resting row writes no attribute onto the host. */
27596
27830
  "prop:orientation"?: (HelixHeadlessTabs["orientation"]) | undefined;
27831
+ /** Whether a strip with more tabs than fit shows a button at each end it can
27832
+ scroll toward. */
27833
+ "bool:scroll-controls"?: (HelixHeadlessTabs["scrollControls"]) | undefined;
27834
+ /** Whether a strip with more tabs than fit shows a button at each end it can
27835
+ scroll toward. */
27836
+ "prop:scrollControls"?: (HelixHeadlessTabs["scrollControls"]) | undefined;
27597
27837
  /** How the row of tabs is drawn.
27598
27838
 
27599
27839
  Unset is a raised pill on the selected tab with nothing behind the row,
@@ -27654,11 +27894,22 @@ export type HelixHeadlessTabElementEvent<E = Event> = TypedEvent<
27654
27894
  HelixHeadlessTab,
27655
27895
  E
27656
27896
  >;
27897
+ /** `helix-dismiss` event type */
27898
+ export type HelixHeadlessTabHelixDismissElementEvent =
27899
+ HelixHeadlessTabElementEvent<HelixDismissEvent>;
27657
27900
  /** `helix-select` event type */
27658
27901
  export type HelixHeadlessTabHelixSelectElementEvent =
27659
27902
  HelixHeadlessTabElementEvent<HelixSelectEvent>;
27660
27903
 
27661
27904
  export type HelixHeadlessTabProps = {
27905
+ /** The tooltip on the mark that closes a `dismissible` tab. The mark is for
27906
+ the pointer and hidden from screen readers, which hear the Delete key
27907
+ through `aria-keyshortcuts`. */
27908
+ "dismiss-label"?: (HelixHeadlessTab["dismissLabel"]) | undefined;
27909
+ /** The tooltip on the mark that closes a `dismissible` tab. The mark is for
27910
+ the pointer and hidden from screen readers, which hear the Delete key
27911
+ through `aria-keyshortcuts`. */
27912
+ dismissLabel?: (HelixHeadlessTab["dismissLabel"]) | undefined;
27662
27913
  /** The URL the tab links to. Setting it renders the tab as a link, for a set
27663
27914
  of tabs that are pages of a site. */
27664
27915
  href?: (HelixHeadlessTab["href"]) | undefined;
@@ -27666,6 +27917,8 @@ of tabs that are pages of a site. */
27666
27917
  rel?: (HelixHeadlessTab["rel"]) | undefined;
27667
27918
  /** Where the link opens, such as `_blank`, for a tab with an `href`. */
27668
27919
  target?: (HelixHeadlessTab["target"]) | undefined;
27920
+ /** Whether the element shows a control that dismisses it. */
27921
+ dismissible?: (HelixHeadlessTab["dismissible"]) | undefined;
27669
27922
  /** Whether the item is disabled and cannot be chosen. */
27670
27923
  disabled?: (HelixHeadlessTab["disabled"]) | undefined;
27671
27924
  /** Whether the item is selected.
@@ -27678,11 +27931,21 @@ declares in markup carries `defaultSelected` of its own to say so. */
27678
27931
  submits. */
27679
27932
  value?: (HelixHeadlessTab["value"]) | undefined;
27680
27933
 
27934
+ /** A `dismissible` tab was asked to close. The tab does not remove itself, so remove it and its panel in response. Cancelable. */
27935
+ "onhelix-dismiss"?: ((e: HelixHeadlessTabHelixDismissElementEvent) => void) | undefined;
27681
27936
  /** Fired when the tab is chosen. Cancelable: canceling it stops the change and leaves the decision to you. */
27682
27937
  "onhelix-select"?: ((e: HelixHeadlessTabHelixSelectElementEvent) => void) | undefined;
27683
27938
  };
27684
27939
 
27685
27940
  export type HelixHeadlessTabSolidJsProps = {
27941
+ /** The tooltip on the mark that closes a `dismissible` tab. The mark is for
27942
+ the pointer and hidden from screen readers, which hear the Delete key
27943
+ through `aria-keyshortcuts`. */
27944
+ "attr:dismiss-label"?: (HelixHeadlessTab["dismissLabel"]) | undefined;
27945
+ /** The tooltip on the mark that closes a `dismissible` tab. The mark is for
27946
+ the pointer and hidden from screen readers, which hear the Delete key
27947
+ through `aria-keyshortcuts`. */
27948
+ "prop:dismissLabel"?: (HelixHeadlessTab["dismissLabel"]) | undefined;
27686
27949
  /** The URL the tab links to. Setting it renders the tab as a link, for a set
27687
27950
  of tabs that are pages of a site. */
27688
27951
  "prop:href"?: (HelixHeadlessTab["href"]) | undefined;
@@ -27690,6 +27953,8 @@ of tabs that are pages of a site. */
27690
27953
  "prop:rel"?: (HelixHeadlessTab["rel"]) | undefined;
27691
27954
  /** Where the link opens, such as `_blank`, for a tab with an `href`. */
27692
27955
  "prop:target"?: (HelixHeadlessTab["target"]) | undefined;
27956
+ /** Whether the element shows a control that dismisses it. */
27957
+ "prop:dismissible"?: (HelixHeadlessTab["dismissible"]) | undefined;
27693
27958
  /** Whether the item is disabled and cannot be chosen. */
27694
27959
  "prop:disabled"?: (HelixHeadlessTab["disabled"]) | undefined;
27695
27960
  /** Whether the item is selected.
@@ -27701,6 +27966,8 @@ declares in markup carries `defaultSelected` of its own to say so. */
27701
27966
  /** The item's value, which identifies it in its set and is what a form
27702
27967
  submits. */
27703
27968
  "prop:value"?: (HelixHeadlessTab["value"]) | undefined;
27969
+ /** A `dismissible` tab was asked to close. The tab does not remove itself, so remove it and its panel in response. Cancelable. */
27970
+ "on:helix-dismiss"?: ((e: HelixHeadlessTabHelixDismissElementEvent) => void) | undefined;
27704
27971
  /** Fired when the tab is chosen. Cancelable: canceling it stops the change and leaves the decision to you. */
27705
27972
  "on:helix-select"?: ((e: HelixHeadlessTabHelixSelectElementEvent) => void) | undefined;
27706
27973
 
@@ -27723,6 +27990,14 @@ export type HelixHeadlessTagGroupHelixDismissElementEvent =
27723
27990
  HelixHeadlessTagGroupElementEvent<HelixDismissEvent>;
27724
27991
 
27725
27992
  export type HelixHeadlessTagGroupProps = {
27993
+ /** Keeps at least one tag selected once one is, as React Aria's
27994
+ `disallowEmptySelection`: a press or a key that would leave none selected
27995
+ is refused. Removing the last selected tag still takes it out of `value`. */
27996
+ "disallow-empty-selection"?: (HelixHeadlessTagGroup["disallowEmptySelection"]) | undefined;
27997
+ /** Keeps at least one tag selected once one is, as React Aria's
27998
+ `disallowEmptySelection`: a press or a key that would leave none selected
27999
+ is refused. Removing the last selected tag still takes it out of `value`. */
28000
+ disallowEmptySelection?: (HelixHeadlessTagGroup["disallowEmptySelection"]) | undefined;
27726
28001
  /** The words the group shows and says once its last tag is removed, where
27727
28002
  nothing is in the `empty` slot. */
27728
28003
  "empty-label"?: (HelixHeadlessTagGroup["emptyLabel"]) | undefined;
@@ -27732,6 +28007,20 @@ nothing is in the `empty` slot. */
27732
28007
  /** The name of the set, such as "Filters", which a screen reader announces
27733
28008
  before its tags. */
27734
28009
  label?: (HelixHeadlessTagGroup["label"]) | undefined;
28010
+ /** What a press, Space, or a move does to the tags already selected.
28011
+ `toggle`, the default, keeps them: a press adds or takes out the tag, and
28012
+ the arrow keys move focus alone. `replace` selects the tag alone, as a
28013
+ file list does, and the arrow keys carry the selection with focus.
28014
+ Control or Command with a press or Space adds or takes out one tag in
28015
+ `multiple`, and with an arrow moves focus without selecting. */
28016
+ "selection-behavior"?: (HelixHeadlessTagGroup["selectionBehavior"]) | undefined;
28017
+ /** What a press, Space, or a move does to the tags already selected.
28018
+ `toggle`, the default, keeps them: a press adds or takes out the tag, and
28019
+ the arrow keys move focus alone. `replace` selects the tag alone, as a
28020
+ file list does, and the arrow keys carry the selection with focus.
28021
+ Control or Command with a press or Space adds or takes out one tag in
28022
+ `multiple`, and with an arrow moves focus without selecting. */
28023
+ selectionBehavior?: (HelixHeadlessTagGroup["selectionBehavior"]) | undefined;
27735
28024
  /** How many tags a reader can select: `single`, `multiple`, or none.
27736
28025
 
27737
28026
  Absent selects nothing, and the tags carry no selected state at all. */
@@ -27760,6 +28049,14 @@ words where it has none. */
27760
28049
  };
27761
28050
 
27762
28051
  export type HelixHeadlessTagGroupSolidJsProps = {
28052
+ /** Keeps at least one tag selected once one is, as React Aria's
28053
+ `disallowEmptySelection`: a press or a key that would leave none selected
28054
+ is refused. Removing the last selected tag still takes it out of `value`. */
28055
+ "bool:disallow-empty-selection"?: (HelixHeadlessTagGroup["disallowEmptySelection"]) | undefined;
28056
+ /** Keeps at least one tag selected once one is, as React Aria's
28057
+ `disallowEmptySelection`: a press or a key that would leave none selected
28058
+ is refused. Removing the last selected tag still takes it out of `value`. */
28059
+ "prop:disallowEmptySelection"?: (HelixHeadlessTagGroup["disallowEmptySelection"]) | undefined;
27763
28060
  /** The words the group shows and says once its last tag is removed, where
27764
28061
  nothing is in the `empty` slot. */
27765
28062
  "attr:empty-label"?: (HelixHeadlessTagGroup["emptyLabel"]) | undefined;
@@ -27769,6 +28066,20 @@ nothing is in the `empty` slot. */
27769
28066
  /** The name of the set, such as "Filters", which a screen reader announces
27770
28067
  before its tags. */
27771
28068
  "prop:label"?: (HelixHeadlessTagGroup["label"]) | undefined;
28069
+ /** What a press, Space, or a move does to the tags already selected.
28070
+ `toggle`, the default, keeps them: a press adds or takes out the tag, and
28071
+ the arrow keys move focus alone. `replace` selects the tag alone, as a
28072
+ file list does, and the arrow keys carry the selection with focus.
28073
+ Control or Command with a press or Space adds or takes out one tag in
28074
+ `multiple`, and with an arrow moves focus without selecting. */
28075
+ "attr:selection-behavior"?: (HelixHeadlessTagGroup["selectionBehavior"]) | undefined;
28076
+ /** What a press, Space, or a move does to the tags already selected.
28077
+ `toggle`, the default, keeps them: a press adds or takes out the tag, and
28078
+ the arrow keys move focus alone. `replace` selects the tag alone, as a
28079
+ file list does, and the arrow keys carry the selection with focus.
28080
+ Control or Command with a press or Space adds or takes out one tag in
28081
+ `multiple`, and with an arrow moves focus without selecting. */
28082
+ "prop:selectionBehavior"?: (HelixHeadlessTagGroup["selectionBehavior"]) | undefined;
27772
28083
  /** How many tags a reader can select: `single`, `multiple`, or none.
27773
28084
 
27774
28085
  Absent selects nothing, and the tags carry no selected state at all. */
@@ -31287,6 +31598,18 @@ refused, in a `reorderable` tree. */
31287
31598
  An `aria-label` or `aria-labelledby` on the host names the tree too, and
31288
31599
  wins over this. */
31289
31600
  label?: (HelixHeadlessTree["label"]) | undefined;
31601
+ /** What screen readers hear when an item moves into another branch, in a
31602
+ `reorderable` tree. `{name}` is the item's words, `{parent}` the words of
31603
+ the branch it moved into, or the tree's `label` for the top level,
31604
+ `{position}` its place there, counting from 1, and `{count}` the number of
31605
+ items there. */
31606
+ "moved-into-label"?: (HelixHeadlessTree["movedIntoLabel"]) | undefined;
31607
+ /** What screen readers hear when an item moves into another branch, in a
31608
+ `reorderable` tree. `{name}` is the item's words, `{parent}` the words of
31609
+ the branch it moved into, or the tree's `label` for the top level,
31610
+ `{position}` its place there, counting from 1, and `{count}` the number of
31611
+ items there. */
31612
+ movedIntoLabel?: (HelixHeadlessTree["movedIntoLabel"]) | undefined;
31290
31613
  /** What screen readers hear each time an item moves, in a `reorderable`
31291
31614
  tree. `{name}` is the item's words, `{position}` its place among its
31292
31615
  siblings, counting from 1, and `{count}` the number of siblings. */
@@ -31417,6 +31740,18 @@ refused, in a `reorderable` tree. */
31417
31740
  An `aria-label` or `aria-labelledby` on the host names the tree too, and
31418
31741
  wins over this. */
31419
31742
  "prop:label"?: (HelixHeadlessTree["label"]) | undefined;
31743
+ /** What screen readers hear when an item moves into another branch, in a
31744
+ `reorderable` tree. `{name}` is the item's words, `{parent}` the words of
31745
+ the branch it moved into, or the tree's `label` for the top level,
31746
+ `{position}` its place there, counting from 1, and `{count}` the number of
31747
+ items there. */
31748
+ "attr:moved-into-label"?: (HelixHeadlessTree["movedIntoLabel"]) | undefined;
31749
+ /** What screen readers hear when an item moves into another branch, in a
31750
+ `reorderable` tree. `{name}` is the item's words, `{parent}` the words of
31751
+ the branch it moved into, or the tree's `label` for the top level,
31752
+ `{position}` its place there, counting from 1, and `{count}` the number of
31753
+ items there. */
31754
+ "prop:movedIntoLabel"?: (HelixHeadlessTree["movedIntoLabel"]) | undefined;
31420
31755
  /** What screen readers hear each time an item moves, in a `reorderable`
31421
31756
  tree. `{name}` is the item's words, `{position}` its place among its
31422
31757
  siblings, counting from 1, and `{count}` the number of siblings. */
@@ -33104,6 +33439,10 @@ export type CustomElements = {
33104
33439
  * and a closed section is `hidden` and `inert` instead, and find in page skips
33105
33440
  * it.
33106
33441
  *
33442
+ * A section whose trigger has no words, with nothing in its `summary` slot,
33443
+ * is announced as a bare button, and a development build warns once with the
33444
+ * kind `missing-name`.
33445
+ *
33107
33446
  * While it is open, the content part carries the content's height as
33108
33447
  * `--accordion-content-height`, as Radix's accordion does, for a stylesheet
33109
33448
  * that animates the section open with keyframes of its own.
@@ -33240,6 +33579,7 @@ export type CustomElements = {
33240
33579
  *
33241
33580
  * These can be used to apply styling when a component is in a given state.
33242
33581
  *
33582
+ * - `closing`: While the item has closed and its content is still drawn, until the content part's animations end.
33243
33583
  * - `open`: While the item is open.
33244
33584
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
33245
33585
  */
@@ -33265,7 +33605,8 @@ export type CustomElements = {
33265
33605
  * Keys, on a trigger: Up and Down Arrow move to the previous and the next
33266
33606
  * trigger, and so do Left and Right, wrapping at the ends; Home and End go to
33267
33607
  * the first and the last. Enter and Space open and close the section. Disabled
33268
- * sections are passed over.
33608
+ * sections are passed over. Under `single` the open section's trigger is
33609
+ * `aria-disabled`, because a press cannot close it.
33269
33610
  *
33270
33611
  * Each trigger is a button with `aria-expanded` and `aria-controls`, inside a
33271
33612
  * heading, level 3 unless `heading-level` says otherwise, so the sections are
@@ -34770,8 +35111,11 @@ export type CustomElements = {
34770
35111
  * Set `href` to make the whole crumb an anchor, which works with Enter, middle
34771
35112
  * click, and the status bar, and before any JavaScript runs. A router cannot
34772
35113
  * reach an anchor inside a shadow root, so intercept the click for client-side
34773
- * navigation, as with `Tree.Item` and `List.Item`. A trail that collapses also
34774
- * reads `href` to rebuild its hidden crumbs elsewhere.
35114
+ * navigation, as with `Tree.Item` and `List.Item`: a plain press on the link
35115
+ * sends `helix-select` with the `href` as its value first, and canceling it
35116
+ * keeps the browser from following, so a client-side router follows it
35117
+ * instead, as React Aria's `onAction` lets a router do. A press with a
35118
+ * modifier opens the link where the browser opens it and sends nothing.
34775
35119
  *
34776
35120
  * Without `href`, the crumb renders a plain `<span>` around what you slot,
34777
35121
  * including your own anchor.
@@ -34829,6 +35173,12 @@ export type CustomElements = {
34829
35173
  * browser harness's awaits it alone: a browser always runs the frame, and a
34830
35174
  * timer beside it was a bet on how long one takes, which a busy run lost. (property only) (readonly)
34831
35175
  *
35176
+ * ## Events
35177
+ *
35178
+ * Events that will be emitted by the component.
35179
+ *
35180
+ * - `helix-select`: 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.
35181
+ *
34832
35182
  * ## Slots
34833
35183
  *
34834
35184
  * Areas where markup can be added to the component.
@@ -34842,6 +35192,8 @@ export type CustomElements = {
34842
35192
  *
34843
35193
  * Custom selectors for styling elements within the component.
34844
35194
  *
35195
+ * - `expand`: The button after the first crumb of a folded slotted trail, which shows the folded crumbs.
35196
+ * - `fold-separator`: The chevron before that button.
34845
35197
  * - `link`: The crumb itself, which is an `<a>` where `href` is set.
34846
35198
  * - `separator`: The separator preceding the item.
34847
35199
  * - `separator-mark`: The chevron between crumbs, shown when no separator is slotted.
@@ -34850,7 +35202,9 @@ export type CustomElements = {
34850
35202
  *
34851
35203
  * These can be used to apply styling when a component is in a given state.
34852
35204
  *
35205
+ * - `current`: While the crumb is the current page, marked `current` or the last of a trail with none marked.
34853
35206
  * - `end`: While the `end` slot holds something, so a stylesheet can join the label and what follows it into one control.
35207
+ * - `folded`: While a trail longer than its `max-items` has folded the crumb away. It takes no room.
34854
35208
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
34855
35209
  */
34856
35210
  "helix-headless-breadcrumb": Partial<
@@ -34880,11 +35234,13 @@ export type CustomElements = {
34880
35234
  * array of `{ label, href }`, drawn as crumbs in order, the last one as the
34881
35235
  * current page. Slotted crumbs follow them. Use one way or the other in a trail.
34882
35236
  *
34883
- * With `max-items`, a trail drawn from `items` that is longer folds its middle
34884
- * into one crumb: the first crumb, a button, then the last `max-items` less one.
34885
- * The button is named by `expand-label` and shows the whole trail, moving focus
34886
- * to the first crumb it brought back. A new `items` folds again. Slotted crumbs
34887
- * do not fold; write the folded crumb where the gap should be.
35237
+ * With `max-items`, a trail that is longer folds its middle into one place:
35238
+ * the first crumb, a button, then the last `max-items` less one. The button is
35239
+ * named by `expand-label` and shows the whole trail, moving focus to the first
35240
+ * crumb it brought back. A trail drawn from `items` draws the button as a
35241
+ * crumb of its own, and a new `items` folds again. A slotted trail hides the
35242
+ * crumbs it folds, which take no room, and its first crumb draws the button
35243
+ * after its link; a change to the crumbs folds again.
34888
35244
  *
34889
35245
  * **Keyboard.** Each crumb with an `href` is a link and one tab stop, and
34890
35246
  * Enter follows it. The current page and the separators are not in the tab
@@ -34943,6 +35299,8 @@ export type CustomElements = {
34943
35299
  * - `crumb`: Each crumb drawn from `items`.
34944
35300
  * - `crumb-collapsed`: The crumb that holds the folded middle of a trail longer than `max-items`.
34945
35301
  * - `crumb-current`: The crumb drawn from `items` for the current page.
35302
+ * - `crumb-expand`: The fold button a crumb draws after the first crumb of a folded slotted trail. A trail drawn from `items` draws its fold as a crumb of its own, `crumb-collapsed`, so this one is never drawn there.
35303
+ * - `crumb-fold-separator`: The chevron before that button.
34946
35304
  * - `crumb-link`: The link, or the current page's words, of a crumb drawn from `items`.
34947
35305
  * - `crumb-separator`: The separator before a crumb drawn from `items`.
34948
35306
  * - `crumb-separator-mark`: The chevron before a crumb drawn from `items`.
@@ -35090,6 +35448,7 @@ export type CustomElements = {
35090
35448
  *
35091
35449
  * These can be used to apply styling when a component is in a given state.
35092
35450
  *
35451
+ * - `pressed`: While a group with `selection-mode` has a button pressed.
35093
35452
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
35094
35453
  */
35095
35454
  "helix-headless-button-group": Partial<
@@ -37878,8 +38237,9 @@ export type CustomElements = {
37878
38237
  * style the panel to match your interface.
37879
38238
  *
37880
38239
  * The field reads every color syntax, including `#f00`, `#ff0000`,
37881
- * `rgb(255 0 0)`, `rgba(255,0,0,.5)`, `rgb(255 0 0 / 50%)`, and
37882
- * `hsl(0 100% 50%)`. It writes colors in the syntax that `format` names. The
38240
+ * `rgb(255 0 0)`, `rgba(255,0,0,.5)`, `rgb(255 0 0 / 50%)`,
38241
+ * `hsl(0 100% 50%)`, `oklch(62.8% 0.258 29.2)`, and `hsb(0, 100%, 100%)`. It
38242
+ * writes colors in the syntax that `format` names. The
37883
38243
  * field shows the value without reformatting it, because half-typed input does
37884
38244
  * not survive a round trip through a formatter. Date Input does the same with
37885
38245
  * dates.
@@ -37916,7 +38276,8 @@ export type CustomElements = {
37916
38276
  * Passed to the panel, whose square, hue ramp and presets say the color's
37917
38277
  * name, and read by the swatch in `swatch`, which says it before the value.
37918
38278
  * Color Picker lists the keys.
37919
- * - `format`: The syntax the value is written in: `hex`, `rgb`, or `hsl`.
38279
+ * - `format`: The syntax the value is written in: `hex`, `rgb`, `hsl`, `oklch`, or
38280
+ * `hsb`, as Color Picker's `format`.
37920
38281
  *
37921
38282
  * **Undefaulted, because it reflects.** The two together stamp an attribute
37922
38283
  * onto every host anybody renders, including the ones nobody configured: the
@@ -38159,6 +38520,8 @@ export type CustomElements = {
38159
38520
  * - `picker-channel-marker-label`: The value a mark stands at, when `marker-labels` is set.
38160
38521
  * - `picker-channel-markers`: The row of marks along the track.
38161
38522
  * - `picker-channel-output`: The current value, shown beside the track.
38523
+ * - `picker-channel-thumb`: A ramp's thumb box, which holds no content in a picker.
38524
+ * - `picker-channel-thumbs`: The layer over a ramp's track that holds its thumb box.
38162
38525
  * - `picker-channel-tooltip`: A ramp's value in a bubble, where a ramp shows one.
38163
38526
  * - `picker-channel-tooltips`: The layer over a ramp's track that holds its bubble.
38164
38527
  * - `picker-channels`: The channel sliders beside the sample.
@@ -38183,7 +38546,9 @@ export type CustomElements = {
38183
38546
  * - `picker-grid-brightness`: The range input for the square's vertical axis.
38184
38547
  * - `picker-grid-handle`: The mark showing where in the square the color sits.
38185
38548
  * - `picker-grid-saturation`: The range input for the square's horizontal axis.
38549
+ * - `picker-hint`: The picker's own help, which the field's `hint` stands in for here, so it stays hidden.
38186
38550
  * - `picker-icon`: An icon drawn by the picker.
38551
+ * - `picker-label`: The picker's own name, which the field's `label` stands in for here, so it stays hidden.
38187
38552
  * - `picker-sample`: A chip of the current color. Pressing it copies the value.
38188
38553
  * - `picker-swatch`: One preset.
38189
38554
  * - `picker-swatches`: The row of presets.
@@ -38233,6 +38598,11 @@ export type CustomElements = {
38233
38598
  * is named by its color. The opacity ramp is heard as a percentage. Set
38234
38599
  * `color-words` to speak the names in another language.
38235
38600
  *
38601
+ * `label` names the picker, which is then a group with that name, and the
38602
+ * square's ramps say it before their own, as "Brand, Saturation". `hint`
38603
+ * writes help under the picker, which the square, the ramps and the value
38604
+ * field are described by. Inside Color Input the field carries both.
38605
+ *
38236
38606
  * The presets are a listbox with the current color selected, and one tab
38237
38607
  * stop. The arrow keys move between them, Home and End go to the ends, and
38238
38608
  * Enter, Space or a press chooses one.
@@ -38259,12 +38629,15 @@ export type CustomElements = {
38259
38629
  * language hears its own rather than English between its own labels.
38260
38630
  * - `channel-fields`/`channelFields`: Whether the picker shows a number field for each channel of the color, as
38261
38631
  * React Aria's ColorField does with `channel`: red, green and blue for hex
38262
- * and rgb, hue, saturation and lightness for hsl, and the opacity with
38263
- * `alpha`.
38632
+ * and rgb, hue, saturation and lightness for hsl, hue, saturation and
38633
+ * brightness for hsb, lightness, chroma and hue for oklch, and the opacity
38634
+ * with `alpha`.
38264
38635
  *
38265
38636
  * For a reader who has the numbers from a brand guide, and for a keyboard,
38266
38637
  * where typing 128 is quicker than holding an arrow key. The fields follow
38267
38638
  * the syntax the format toggle sets.
38639
+ * - `chroma-label`/`chromaLabel`: What the chroma channel's field is called, in `channel-fields` with
38640
+ * oklch.
38268
38641
  * - `color-words`/`colorWords`: The words a color's name is spoken in, as JSON keyed by their English,
38269
38642
  * such as `{"red": "rot", "vibrant": "kräftiges"}`.
38270
38643
  *
@@ -38281,15 +38654,25 @@ export type CustomElements = {
38281
38654
  * - `copy-label`/`copyLabel`: The name of the sample, which copies the value. `{value}` is replaced with
38282
38655
  * the color.
38283
38656
  * - `eyedropper-label`/`eyedropperLabel`: What the eyedropper is called.
38284
- * - `format`: The syntax the value is written in: `hex`, `rgb`, or `hsl`.
38657
+ * - `format`: The syntax the value is written in: `hex`, `rgb`, `hsl`, `oklch`, or
38658
+ * `hsb`.
38285
38659
  *
38286
38660
  * Only what is written. Everything is read whatever this says, so a picker on
38287
- * `hex` still takes an `rgb()` handed to it and stores the hex for it.
38661
+ * `hex` still takes an `rgb()` or an `oklch()` handed to it and stores the
38662
+ * hex for it. `oklch` writes the sRGB color the picker holds, such as
38663
+ * `oklch(62.8% 0.258 29.2)`; a color outside sRGB that is handed in is
38664
+ * clipped to it. `hsb` writes the picker's own model, `hsb(0, 100%, 100%)`,
38665
+ * as React Aria's and Zag's color strings do. It is not CSS, so the toggle
38666
+ * walks the other four.
38288
38667
  * - `format-label`/`formatLabel`: What the syntax toggle is called, with `{format}` filled in.
38289
38668
  * - `green-label`/`greenLabel`: What the green channel's field is called, in `channel-fields`.
38669
+ * - `hint`: Help under the picker, such as what the color is used for. The `hint`
38670
+ * slot takes richer content.
38290
38671
  * - `hue-label`/`hueLabel`: What the hue channel is called.
38672
+ * - `label`: The name above the picker, such as "Brand color". The picker is then a
38673
+ * group with this name. The `label` slot takes richer content.
38291
38674
  * - `lightness-label`/`lightnessLabel`: What the lightness channel's field is called, in `channel-fields` with
38292
- * hsl.
38675
+ * hsl and oklch.
38293
38676
  * - `no-eyedropper`/`noEyedropper`: Hides the eyedropper. Without it, the eyedropper appears in browsers that
38294
38677
  * support one.
38295
38678
  * - `no-format`/`noFormat`: Hides the syntax toggle, so the format cannot be changed.
@@ -38464,6 +38847,8 @@ export type CustomElements = {
38464
38847
  * Areas where markup can be added to the component.
38465
38848
  *
38466
38849
  * - `eyedropper-icon`: The icon on the eyedropper button, usually a dropper.
38850
+ * - `hint`: Help under the picker, for content richer than the `hint` text.
38851
+ * - `label`: The name above the picker, for content richer than the `label` text.
38467
38852
  *
38468
38853
  * ## Methods
38469
38854
  *
@@ -38546,6 +38931,8 @@ export type CustomElements = {
38546
38931
  * - `channel-marker-label`: The value a mark stands at, when `marker-labels` is set.
38547
38932
  * - `channel-markers`: The row of marks along the track.
38548
38933
  * - `channel-output`: The current value, shown beside the track.
38934
+ * - `channel-thumb`: A ramp's thumb box, which holds no content in a picker.
38935
+ * - `channel-thumbs`: The layer over a ramp's track that holds its thumb box.
38549
38936
  * - `channel-tooltip`: A ramp's value in a bubble, where a ramp shows one.
38550
38937
  * - `channel-tooltips`: The layer over a ramp's track that holds its bubble.
38551
38938
  * - `channels`: The ramps beside the sample.
@@ -38569,6 +38956,8 @@ export type CustomElements = {
38569
38956
  * - `grid`: The saturation and brightness square. Draw the mark that shows where the color sits with `::part(grid)::after` in your stylesheet. The square carries the two channels as `--color-picker-saturation` and `--color-picker-brightness`, and this tier ships no CSS.
38570
38957
  * - `grid-brightness`: The range input for the square's vertical axis.
38571
38958
  * - `grid-saturation`: The range input for the square's horizontal axis.
38959
+ * - `hint`: The help under the picker, while `hint` is set or the `hint` slot has content.
38960
+ * - `label`: The name above the picker, while `label` is set or the `label` slot has content.
38572
38961
  * - `sample`: A chip of the current color. Pressing it copies the value.
38573
38962
  * - `swatch`: One preset, an option in the `swatches` listbox.
38574
38963
  * - `swatches`: The row of presets, a listbox.
@@ -38580,7 +38969,10 @@ export type CustomElements = {
38580
38969
  *
38581
38970
  * These can be used to apply styling when a component is in a given state.
38582
38971
  *
38972
+ * - `copied`: The moment after the sample copies the value, while it says `copied-label`.
38973
+ * - `dragging`: While a pointer drags the square's handle.
38583
38974
  * - `invalid`: While `invalid` is set or `feedback` says what is wrong.
38975
+ * - `sampling`: While the eyedropper is open over the screen.
38584
38976
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
38585
38977
  */
38586
38978
  "helix-headless-color-picker": Partial<
@@ -40232,6 +40624,7 @@ export type CustomElements = {
40232
40624
  * - `picker-day-outside`: A day from a neighboring month. Applied with `picker-day`.
40233
40625
  * - `picker-day-selected`: The chosen day, or either end of a chosen range. Applied with `picker-day`.
40234
40626
  * - `picker-day-today`: Today. Applied with `picker-day`.
40627
+ * - `picker-day-weekend`: A day of the weekend where the calendar's language is spoken, beside `picker-day`.
40235
40628
  * - `picker-feedback`: The calendar's own message, under it, while the calendar's `feedback` is set.
40236
40629
  * - `picker-grid`: The grid of days.
40237
40630
  * - `picker-header`: The month name and its controls.
@@ -40320,15 +40713,22 @@ export type CustomElements = {
40320
40713
  * speaks it. Unset is the sentence registered for the page's language, then
40321
40714
  * the English. `{mode}` is `single`, `range` or `multiple`, so each can have
40322
40715
  * its own sentence.
40323
- * - `calendar`: The calendar the heading, the days, and the months are written in:
40324
- * `gregory`, `buddhist`, `japanese`, `roc`, or `iso8601`, the five whose
40325
- * months are the Gregorian months.
40326
- *
40327
- * Absent is the locale's own where it is one of the five, such as
40328
- * `buddhist` for `th-TH` or `japanese` for `ja-JP-u-ca-japanese`, and
40329
- * `gregory` for every other, such as `persian` for `fa-IR`, so the heading
40330
- * names the Gregorian month the grid shows. The value is `YYYY-MM-DD` in
40331
- * every calendar.
40716
+ * - `calendar`: The calendar the heading, the days, and the months are written in.
40717
+ *
40718
+ * `gregory`, `buddhist`, `japanese`, `roc`, and `iso8601` are the five
40719
+ * whose months are the Gregorian months. Absent is the locale's own where
40720
+ * it is one of the five, such as `buddhist` for `th-TH` or `japanese` for
40721
+ * `ja-JP-u-ca-japanese`, and `gregory` for every other, such as `persian`
40722
+ * for `fa-IR`.
40723
+ *
40724
+ * `persian`, `hebrew`, `islamic-umalqura`, `islamic-civil`, `ethiopic`,
40725
+ * `coptic`, and `indian` draw a calendar with months of its own, as React
40726
+ * Aria's calendars do: each grid is one of that calendar's months, the
40727
+ * Hebrew leap month and Ethiopia's five-day thirteenth month included, and
40728
+ * Previous, Next and the page keys move by those months. `month` and
40729
+ * `helix-navigate` then name a month by its first day, `YYYY-MM-DD`. The
40730
+ * heading stays text, as the months and years views are drawn in Gregorian
40731
+ * months only. The value is `YYYY-MM-DD` in every calendar.
40332
40732
  * - `default-month`/`defaultMonth`: The month to open on when `month` is not set.
40333
40733
  * - `disable-dates`/`disableDates`: Dates that cannot be chosen, as `YYYY-MM-DD`, separated by commas or
40334
40734
  * spaces.
@@ -40354,8 +40754,9 @@ export type CustomElements = {
40354
40754
  * its days.
40355
40755
  * - `min`: Earliest selectable date, as `YYYY-MM-DD`.
40356
40756
  * - `mode`: How many dates can be held at once.
40357
- * - `month`: The month shown, as `YYYY-MM`. When it is not set, it follows `value`,
40358
- * then the current month.
40757
+ * - `month`: The month shown, as `YYYY-MM`, or as its first day, `YYYY-MM-DD`, under a
40758
+ * `calendar` with months of its own. When it is not set, it follows
40759
+ * `value`, then the current month.
40359
40760
  *
40360
40761
  * Separate from `value` on purpose, so paging selects nothing and a consumer
40361
40762
  * can drive the view. Reading gives the month on show; writing sets it, and
@@ -40402,6 +40803,13 @@ export type CustomElements = {
40402
40803
  * treated as one rather than as an error: a step of zero would block every
40403
40804
  * date including the one already chosen.
40404
40805
  * - `step-mismatch-message`/`stepMismatchMessage`: The validation message for a date that `step` skips.
40806
+ * - `time-zone`/`timeZone`: The time zone today is read in, such as `America/New_York`, as React
40807
+ * Aria's `today(timeZone)` reads it. Empty is the reader's own.
40808
+ *
40809
+ * Dates are plain `YYYY-MM-DD` and carry no zone, so this moves only today:
40810
+ * the day marked `aria-current` and `day-today`, and the month a picker
40811
+ * with no value opens on. A desk in Tokyo booking for an office in New York
40812
+ * sets `America/New_York`, and today is the office's.
40405
40813
  * - `unavailable-message`/`unavailableMessage`: The validation message for a date that `disable-dates` or `disable-days`
40406
40814
  * bars.
40407
40815
  * - `value-missing-message`/`valueMissingMessage`: The validation message for a required date picker with no date chosen.
@@ -40522,6 +40930,8 @@ export type CustomElements = {
40522
40930
  *
40523
40931
  * Areas where markup can be added to the component.
40524
40932
  *
40933
+ * - `footer`: Content under the calendar, such as buttons for today or a common range.
40934
+ * - `header`: Content above the calendar, such as a note on what the date is for.
40525
40935
  * - `next-icon`: The glyph on the control that moves forward a month, usually a caret.
40526
40936
  * - `previous-icon`: The glyph on the control that moves back a month, usually a caret.
40527
40937
  *
@@ -40606,6 +41016,7 @@ export type CustomElements = {
40606
41016
  * - `day-outside`: A day from a neighboring month, filling the grid out, beside `day`.
40607
41017
  * - `day-selected`: The chosen day, or either end of a chosen range, beside `day`.
40608
41018
  * - `day-today`: Today, beside `day`.
41019
+ * - `day-weekend`: A day of the weekend where the calendar's language is spoken, beside `day`: Saturday and Sunday in `en-US`, Friday and Saturday in `ar-EG`.
40609
41020
  * - `feedback`: The message under the calendar, while `feedback` is set.
40610
41021
  * - `grid`: The grid of days.
40611
41022
  * - `header`: The month name and its controls.
@@ -40624,7 +41035,7 @@ export type CustomElements = {
40624
41035
  * - `previous`: The control that moves to the previous month.
40625
41036
  * - `previous-mark`: The glyph on the previous month control, where none is slotted.
40626
41037
  * - `week`: One row of days.
40627
- * - `weekday`: A column header naming a day of the week.
41038
+ * - `weekday`: A column header naming a day of the week. It shows the short name and says the full one.
40628
41039
  *
40629
41040
  * ## CSS States
40630
41041
  *
@@ -48564,6 +48975,15 @@ export type CustomElements = {
48564
48975
  * links and not a single control, and the keys across the other axis are
48565
48976
  * left to the page and to an open panel.
48566
48977
  *
48978
+ * While a `Megamenu`, or another disclosure among the destinations, is open,
48979
+ * the navigation is `:state(open)`, so a page can dim what lies under the
48980
+ * panel, as Radix's navigation menu marks its open state.
48981
+ *
48982
+ * A screen reader lists the page's navigation landmarks by name, so two named
48983
+ * alike cannot be told apart. Where another navigation in the same document
48984
+ * has the same name, "Main" for two with no `label`, the later one warns once
48985
+ * with the kind `duplicate-name`.
48986
+ *
48567
48987
  * ## Attributes & Properties
48568
48988
  *
48569
48989
  * Component attributes and properties that can be applied to the element or by using JavaScript.
@@ -48619,6 +49039,7 @@ export type CustomElements = {
48619
49039
  *
48620
49040
  * These can be used to apply styling when a component is in a given state.
48621
49041
  *
49042
+ * - `open`: While a megamenu or another disclosure among the destinations is open.
48622
49043
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
48623
49044
  */
48624
49045
  "helix-headless-navigation": Partial<
@@ -52614,7 +53035,10 @@ export type CustomElements = {
52614
53035
  * place for focus to return to when the list closes.
52615
53036
  *
52616
53037
  * Your options stay in your light DOM and are slotted through into the listbox,
52617
- * so the listbox looks through slots to find them.
53038
+ * so the listbox looks through slots to find them. For a list too long to draw
53039
+ * whole, set `items` instead: the list draws only the options in sight, as
53040
+ * Listbox's `items` does, and the trigger, its keys and the form read the
53041
+ * whole set.
52618
53042
  *
52619
53043
  * `Select` owns the value, passes it down to the listbox, and takes changes
52620
53044
  * back, so the value lives in one place.
@@ -52759,6 +53183,17 @@ export type CustomElements = {
52759
53183
  *
52760
53184
  * No attribute, because it is coordination between elements rather than
52761
53185
  * anything a consumer sets. (property only)
53186
+ * - `items`: The options as data, for a list too long to draw whole: each a value,
53187
+ * which is also its words, or a record with a `value`, a `label` and
53188
+ * `disabled`. Passed to the list, which draws only the options in sight,
53189
+ * as Listbox's `items` does. Set, the options you write as children are
53190
+ * not read.
53191
+ *
53192
+ * The trigger shows the chosen options' labels, the letters and the Left
53193
+ * and Right keys on the closed trigger choose over the whole set, and a
53194
+ * chosen value whose option leaves `items` drops out of `value`.
53195
+ * `value-content` is not called for `items`. Import the Option family as
53196
+ * well, whose elements are drawn. (property only)
52762
53197
  * - `valueContent`: What the trigger shows for the chosen options: a function given them, in
52763
53198
  * the order they appear, that returns text, an element or a Lit template.
52764
53199
  *
@@ -52936,6 +53371,8 @@ export type CustomElements = {
52936
53371
  *
52937
53372
  * - `invalid`: The control has an error to show, from the browser's validation or from your `feedback`.
52938
53373
  * - `open`: While the list is open.
53374
+ * - `placed-bottom`: While the open list sits below the trigger.
53375
+ * - `placed-top`: While the open list sits above the trigger, where there was no room below.
52939
53376
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
52940
53377
  */
52941
53378
  "helix-headless-select": Partial<
@@ -53112,7 +53549,12 @@ export type CustomElements = {
53112
53549
  * does not draw a hundred and one marks by accident.
53113
53550
  *
53114
53551
  * A range with two thumbs is two inputs stacked on one track, because there is
53115
- * no native two-thumb range. Each thumb keeps its own value.
53552
+ * no native two-thumb range. Each thumb keeps its own value, and a named range
53553
+ * submits one entry per thumb under its name, the lowest first. A range given
53554
+ * more than two values, such as `default-value="20,50,80"`, has a thumb for
53555
+ * each, as React Aria's slider takes any number of thumbs: each stops at its
53556
+ * neighbors, and the ones between the first and the last are named by
53557
+ * `thumb-label`.
53116
53558
  * `min-steps-between-thumbs` keeps them that many steps apart, and the readout
53117
53559
  * joins the two as `range-text` writes them.
53118
53560
  *
@@ -53143,6 +53585,8 @@ export type CustomElements = {
53143
53585
  * | Page Up, Page Down | Moves the thumb by a larger step. |
53144
53586
  * | Home, End | Moves the thumb to its lowest or highest value. |
53145
53587
  *
53588
+ * Under `readonly` none of these move the thumb, and Tab still reaches it.
53589
+ *
53146
53590
  * Each thumb is an `<input type="range">` with `aria-valuetext` where the value
53147
53591
  * is formatted or worded. A range's thumbs say they stop at each other with
53148
53592
  * `aria-valuemin` and `aria-valuemax`.
@@ -53201,13 +53645,24 @@ export type CustomElements = {
53201
53645
  * between its thumbs and ignores it.
53202
53646
  * - `range`: Adds a second thumb, so the value is a pair.
53203
53647
  *
53204
- * The pair is one string, `"10,50"`, which is what a form submits and what
53205
- * `MixinControllerValue` already holds. `valueAsNumber` reads the lower of
53206
- * the two, since a range has no single number.
53648
+ * The pair is one string, `"10,50"`, which is what `value` and
53649
+ * `MixinControllerValue` hold. A form receives two entries under the name,
53650
+ * `price=10&price=50`, as React Aria's two thumbs send theirs.
53651
+ * `valueAsNumber` reads the lower of the two, since a range has no single
53652
+ * number.
53207
53653
  * - `range-text`/`rangeText`: How the readout joins a range's two values, with `{start}` and `{end}`
53208
53654
  * filled in. Write it in the page's language, such as `{start} bis {end}`.
53655
+ * - `readonly`/`readOnly`: Whether a reader can see and focus the value and cannot change it. A
53656
+ * read-only slider still submits its value.
53657
+ *
53658
+ * React Aria's `isReadOnly`. Each thumb stays a tab stop and says
53659
+ * `aria-readonly`. The arrow keys, the page keys, Home, End, and a drag
53660
+ * leave the value where it is. A script can still set `value`.
53209
53661
  * - `show-value`/`showValue`: Shows the chosen value beside the track.
53210
53662
  * - `step`: How far one press of an arrow key moves the thumb.
53663
+ * - `thumb-label`/`thumbLabel`: The name of a thumb between a range's first and last, read after the
53664
+ * slider's label, with `{index}` filled in: its place, counted from 1. The
53665
+ * first is `minimum-label` and the last `maximum-label`.
53211
53666
  * - `tooltip`: Whether each thumb shows its value in a bubble beside it, as Web
53212
53667
  * Awesome's `with-tooltip`. The styled slider shows the bubbles while the
53213
53668
  * slider is under the pointer or holds focus. They repeat what each thumb
@@ -53309,6 +53764,8 @@ export type CustomElements = {
53309
53764
  * - `feedback`: The message that says what is wrong, for content richer than a string. It shows while there is a message.
53310
53765
  * - `hint`: Help under the control, for content richer than the `hint` text.
53311
53766
  * - `label`: The label, for content richer than the `label` text.
53767
+ * - `thumb`: Content drawn on the thumb, such as a glyph: a single slider's thumb, or a range's lower one. It is decoration, hidden from a screen reader.
53768
+ * - `thumb-end`: Content drawn on a range's upper thumb.
53312
53769
  *
53313
53770
  * ## Methods
53314
53771
  *
@@ -53377,7 +53834,7 @@ export type CustomElements = {
53377
53834
  *
53378
53835
  * CSS variables available for styling the component.
53379
53836
  *
53380
- * - `--slider-at`: Where a bubble's thumb is, as a fraction of the track, 0 to 1. Set on each `tooltip` part.
53837
+ * - `--slider-at`: 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.
53381
53838
  * - `--slider-fraction`: The value as a fraction of the range, 0 to 1.
53382
53839
  * - `--slider-from`: Where the filled span starts, as a fraction of the track, 0 to 1: a range's lower thumb, or a single thumb's `origin`.
53383
53840
  * - `--slider-marker-at`: Where one marker sits, as a percentage of the track.
@@ -53387,7 +53844,7 @@ export type CustomElements = {
53387
53844
  *
53388
53845
  * Custom selectors for styling elements within the component.
53389
53846
  *
53390
- * - `control`: The range input.
53847
+ * - `control`: The range input, one per thumb. On a range each carries `data-thumb`, `start`, `middle`, or `end`, and `data-index`, its place from the lowest.
53391
53848
  * - `feedback`: The error message under the track.
53392
53849
  * - `field`: The row that holds the control and its readout.
53393
53850
  * - `hint`: The help text under the track, shown while there is no error.
@@ -53396,7 +53853,9 @@ export type CustomElements = {
53396
53853
  * - `marker-label`: The value a mark stands at, when `marker-labels` is set.
53397
53854
  * - `markers`: The row of marks along the track.
53398
53855
  * - `output`: The current value, shown beside the track.
53399
- * - `tooltip`: One thumb's value in a bubble beside it, under `tooltip`. It carries `data-thumb` on a range, `start` or `end`, and `--slider-at`, where its thumb is as a fraction of the track.
53856
+ * - `thumb`: One thumb's own box over the track, which holds the `thumb` or `thumb-end` slot. It carries `data-thumb` on a range, `start`, `middle`, or `end`, and `--slider-at`, where its thumb is as a fraction of the track. Draw your own thumb here and hide the native one, or leave it empty.
53857
+ * - `thumbs`: The layer over the track that holds each `thumb`. It is `hidden` until a thumb slot has content, and then `[part="field"]` carries `data-thumbs`.
53858
+ * - `tooltip`: One thumb's value in a bubble beside it, under `tooltip`. It carries `data-thumb` on a range, `start`, `middle`, or `end`, and `--slider-at`, where its thumb is as a fraction of the track.
53400
53859
  * - `tooltips`: The layer over the track that holds the bubbles, under `tooltip`.
53401
53860
  *
53402
53861
  * ## CSS States
@@ -53694,14 +54153,25 @@ export type CustomElements = {
53694
54153
  * Put a `Kbd` in the `shortcut` slot to draw it as keys instead; the dial
53695
54154
  * imports no `Kbd` of its own. Showing a shortcut does not bind it.
53696
54155
  *
54156
+ * `href` makes the action a link, as Menu's rows take one: the `item` part is
54157
+ * then an `<a>` carrying `menuitem`, so the browser follows it, opens it in a
54158
+ * new tab on a middle press, and offers its own menu for it. Choosing it still
54159
+ * sends `helix-select` and closes the dial. A disabled action draws no link.
54160
+ *
53697
54161
  * ## Attributes & Properties
53698
54162
  *
53699
54163
  * Component attributes and properties that can be applied to the element or by using JavaScript.
53700
54164
  *
53701
54165
  * - `disabled`: Whether the action is disabled, so it cannot be chosen.
54166
+ * - `download`: Whether the link downloads the file when the action is chosen. Only
54167
+ * meaningful beside an `href`, and only for a file served from the page's
54168
+ * origin.
54169
+ * - `href`: The URL the action links to. Setting it draws the action as a link.
54170
+ * - `rel`: The link's `rel`. Set it whenever you set `target="_blank"`.
53702
54171
  * - `shortcut`: The action's keyboard shortcut as a chord, such as `mod+s`, carried as
53703
54172
  * `aria-keyshortcuts` and drawn after the name. `mod` is Command on an Apple
53704
54173
  * keyboard and Control elsewhere. Showing a shortcut does not bind it.
54174
+ * - `target`: Where the link opens, such as `_blank` for a new tab.
53705
54175
  * - `value`: The action's value, sent in `helix-select` when the action is chosen.
53706
54176
  * - `active`: Whether the action has focus, which makes it the action the keyboard is on.
53707
54177
  *
@@ -53758,7 +54228,7 @@ export type CustomElements = {
53758
54228
  * Custom selectors for styling elements within the component.
53759
54229
  *
53760
54230
  * - `icon`: The box that holds the icon.
53761
- * - `item`: The control for the action.
54231
+ * - `item`: The control for the action, which is an `<a>` where `href` is set.
53762
54232
  * - `label`: The action's name, beside the icon.
53763
54233
  * - `shortcut`: The box after the name that holds the shortcut, shown while `shortcut` is set or something is in the `shortcut` slot.
53764
54234
  *
@@ -53795,8 +54265,9 @@ export type CustomElements = {
53795
54265
  * action whose name starts with it. The actions are one tab stop, and Tab
53796
54266
  * closes the dial and moves on.
53797
54267
  *
53798
- * **Keyboard.** On the trigger, Enter, Space or a press opens the dial on its
53799
- * first action. With the dial open:
54268
+ * **Keyboard.** On the trigger, Enter, Space, Down or a press opens the dial
54269
+ * on its first action, and Up opens it on its last, as an APG menu button
54270
+ * does. With the dial open:
53800
54271
  *
53801
54272
  * | Key | What it does |
53802
54273
  * |---|---|
@@ -53820,6 +54291,13 @@ export type CustomElements = {
53820
54291
  * and a slotted one alike. A press that has opened the dial does not also do
53821
54292
  * the trigger's action.
53822
54293
  *
54294
+ * **Open on hover.** With `open-on="hover"`, a mouse resting on the trigger
54295
+ * opens the dial, as Material's speed dial does, and the dial closes a moment
54296
+ * after the mouse leaves both the trigger and the actions. A press, a touch
54297
+ * and the keyboard open it as under `click`, and a press on the trigger of a
54298
+ * dial already open moves focus to its first action, so the press a mouse
54299
+ * makes after hovering keeps the dial open.
54300
+ *
53823
54301
  * ## Attributes & Properties
53824
54302
  *
53825
54303
  * Component attributes and properties that can be applied to the element or by using JavaScript.
@@ -53833,9 +54311,11 @@ export type CustomElements = {
53833
54311
  * plain element of yours once a reader reaches it, after hydration, unless
53834
54312
  * you described or labeled it yourself.
53835
54313
  * - `offset`: Space between the trigger and the actions, in pixels.
53836
- * - `open-on`/`openOn`: What opens the dial. `click` opens it on a press of the trigger. Under
53837
- * `long-press`, a press is the trigger's own action, and the dial opens on a
53838
- * press held for half a second, or on Alt+Down or Alt+Up.
54314
+ * - `open-on`/`openOn`: What opens the dial. `click` opens it on a press of the trigger. `hover`
54315
+ * also opens it while a mouse rests on the trigger, and closes it once the
54316
+ * mouse has left. Under `long-press`, a press is the trigger's own action,
54317
+ * and the dial opens on a press held for half a second, or on Alt+Down or
54318
+ * Alt+Up.
53839
54319
  * - `placement`: The direction the actions open in. They move to another side if that side
53840
54320
  * does not fit.
53841
54321
  *
@@ -53889,6 +54369,7 @@ export type CustomElements = {
53889
54369
  * Areas where markup can be added to the component.
53890
54370
  *
53891
54371
  * - `(default)`: The actions.
54372
+ * - `icon`: Replaces the plus on the button the dial draws when no trigger is slotted, such as with a pencil for a dial of ways to write.
53892
54373
  * - `trigger`: The control that opens the actions. Without one, a button named by `label` is drawn.
53893
54374
  *
53894
54375
  * ## Methods
@@ -53958,6 +54439,13 @@ export type CustomElements = {
53958
54439
  * takes all of the change, as Web Awesome's split panel does. Without it,
53959
54440
  * both panes keep their share.
53960
54441
  *
54442
+ * **Three or more panes along one axis are splitters nested on that axis**, a
54443
+ * splitter in the `end` pane of another for three columns. The nested one
54444
+ * keeps the pane on its far side the size it was while the outer divider
54445
+ * moves, so a divider resizes only the two panes beside it, as Zag's splitter
54446
+ * does with any number of panels. Where the whole row is resized, every pane
54447
+ * keeps its share, unless `primary` says otherwise.
54448
+ *
53961
54449
  * **Keyboard.** The divider is one tab stop.
53962
54450
  *
53963
54451
  * | Key | What it does |
@@ -54342,7 +54830,13 @@ export type CustomElements = {
54342
54830
  * UI's linear steps do: a stage ahead is out of reach, and its button disabled,
54343
54831
  * until every stage before it is `complete` or `optional`. Going back is always
54344
54832
  * allowed. `next()` and `previous()` move one stage either way, under the
54345
- * same rules, for your own buttons.
54833
+ * same rules, for your own buttons. `reset()` goes back to the first stage and
54834
+ * clears every stage's `complete`, as Ark UI's `resetStep` does.
54835
+ *
54836
+ * `completion="passed"` marks a stage `complete` once a reader moves past it,
54837
+ * as Ark UI counts a stage before the current one as completed. Going back
54838
+ * leaves it complete. In a `linear` sequence the next stage is then in reach
54839
+ * from the current one, and `validate` decides whether the reader may go.
54346
54840
  *
54347
54841
  * To check a stage before a reader moves on from it, set `validate` to a
54348
54842
  * function that answers whether the stage is valid, as Ark UI's `isStepValid`
@@ -54363,10 +54857,25 @@ export type CustomElements = {
54363
54857
  * current stage's button says `aria-current="step"`, and a finished stage's
54364
54858
  * button is described by its `complete-label`.
54365
54859
  *
54860
+ * **Keyboard.** Each stage's name is a button and its own tab stop, and Enter
54861
+ * or Space goes to the stage. Set `arrows` and the arrow keys move focus
54862
+ * between the names as well, as Ark UI's steps do: Left and Right along a row,
54863
+ * Up and Down a column, Home and End to the first and the last. The arrows
54864
+ * pass over a disabled stage and one a linear sequence holds out of reach,
54865
+ * and they move focus without going to the stage.
54866
+ *
54366
54867
  * ## Attributes & Properties
54367
54868
  *
54368
54869
  * Component attributes and properties that can be applied to the element or by using JavaScript.
54369
54870
  *
54871
+ * - `arrows`: Whether the arrow keys move focus between the stages' names, along the
54872
+ * way the steps run. Off by default, so the arrows keep scrolling the page.
54873
+ * - `completion`: What marks a stage `complete`.
54874
+ *
54875
+ * Absent, you do: each step's `complete` is yours, because a reader who
54876
+ * steps back has finished more stages than the one they are on. `passed`
54877
+ * marks every stage before the one a reader moves to, and leaves the marks
54878
+ * when they go back.
54370
54879
  * - `label`: The sequence's name, read by screen readers.
54371
54880
  *
54372
54881
  * A list of stages is a landmark a reader arrives at out of order, so it
@@ -54457,6 +54966,10 @@ export type CustomElements = {
54457
54966
  * does. Returns whether it moved: not past the last stage, not into a stage
54458
54967
  * `linear` holds out of reach, and not where a listener refused.
54459
54968
  * - `previous() => boolean`: Moves to the stage before, as Ark UI's `goToPrevStep` does. Returns whether it moved.
54969
+ * - `reset() => boolean`: Goes back to the first stage that can be gone to, and clears `complete`
54970
+ * and the invalid mark from every stage, as Ark UI's `resetStep` does.
54971
+ * Returns whether it moved: a listener can refuse the move with
54972
+ * `helix-before-activate`, and the stages then keep their marks.
54460
54973
  * - `requestActive(next: string) => boolean`: Requests a new current item, and returns whether the change was applied.
54461
54974
  *
54462
54975
  * Announces before it acts, so `preventDefault()` on the `helix-before-activate` is
@@ -54568,6 +55081,8 @@ export type CustomElements = {
54568
55081
  *
54569
55082
  * Methods that can be called to access component functionality.
54570
55083
  *
55084
+ * - `focus(options?: FocusOptions) => void`: Puts focus on the step's name, the control a reader presses, as a
55085
+ * `focus()` on a native control would.
54571
55086
  * - `select() => void`: Fires `helix-select` for the step, unless the step is `disabled` or a
54572
55087
  * linear sequence has it out of reach.
54573
55088
  *
@@ -54593,6 +55108,7 @@ export type CustomElements = {
54593
55108
  * These can be used to apply styling when a component is in a given state.
54594
55109
  *
54595
55110
  * - `invalid`: The sequence's `validate` last answered that this stage is not valid.
55111
+ * - `locked`: A `linear` sequence holds this stage out of reach until the stages before it are finished.
54596
55112
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
54597
55113
  */
54598
55114
  "helix-headless-step": Partial<
@@ -55632,6 +56148,16 @@ export type CustomElements = {
55632
56148
  * `active` says so, with `helix-activate`. Where the removed tab had focus,
55633
56149
  * focus moves to the tab now selected.
55634
56150
  *
56151
+ * **More tabs than fit.** With `scroll-controls`, a strip that scrolls shows a
56152
+ * button at each end it can scroll toward, as Web Awesome's tab group does,
56153
+ * and a press scrolls it most of its own length. The buttons are for the
56154
+ * pointer, so they are out of the tab order and hidden from screen readers;
56155
+ * the arrow keys already reach every tab, and the strip scrolls the selected
56156
+ * tab into view. A strip scrolls once a stylesheet gives the `tabs` part an
56157
+ * `overflow`, as the styled tier does.
56158
+ *
56159
+ * A tab with `dismissible` can be closed: see `Tabs.Tab`.
56160
+ *
55635
56161
  * The `indicator` part moves to the selected tab and carries its place and
55636
56162
  * size, so a mark of your own can be drawn there: style the part, or slot an
55637
56163
  * element into `indicator`, which sits inside the part and reads the same
@@ -55655,6 +56181,8 @@ export type CustomElements = {
55655
56181
  * panels and tells a screen reader the list is vertical.
55656
56182
  *
55657
56183
  * Optional, so the resting row writes no attribute onto the host.
56184
+ * - `scroll-controls`/`scrollControls`: Whether a strip with more tabs than fit shows a button at each end it can
56185
+ * scroll toward.
55658
56186
  * - `variant`: How the row of tabs is drawn.
55659
56187
  *
55660
56188
  * Unset is a raised pill on the selected tab with nothing behind the row,
@@ -55744,6 +56272,8 @@ export type CustomElements = {
55744
56272
  *
55745
56273
  * - `indicator`: The marker that moves to the selected tab. It carries the selected tab's place and size as `--indicator-x`, `--indicator-y`, `--indicator-inline-size` and `--indicator-block-size`, and `data-placed` once it has been placed, for a mark you draw and animate yourself.
55746
56274
  * - `panels`: The panel container.
56275
+ * - `scroll-end`: The button that scrolls the strip toward its end, shown under `scroll-controls` while there is more that way.
56276
+ * - `scroll-start`: The button that scrolls the strip toward its start, shown under `scroll-controls` while there is more that way.
55747
56277
  * - `tabs`: The tab list.
55748
56278
  *
55749
56279
  * ## CSS States
@@ -55764,14 +56294,27 @@ export type CustomElements = {
55764
56294
  * first, and canceling it keeps the browser from following, so a client-side
55765
56295
  * router follows it instead.
55766
56296
  *
56297
+ * With `dismissible`, the tab can be closed, as Web Awesome's closable tab
56298
+ * can: a press on its `dismiss` mark, or Delete or Backspace while the tab
56299
+ * has focus, sends `helix-dismiss`. The tab does not remove itself, because
56300
+ * your code owns the set, so remove the tab and its panel in your handler.
56301
+ * Focus moves to the tab beside it, and the tab set selects a tab that is
56302
+ * left.
56303
+ * The tab says the key through `aria-keyshortcuts`, and the mark is for the
56304
+ * pointer, hidden from screen readers.
56305
+ *
55767
56306
  * ## Attributes & Properties
55768
56307
  *
55769
56308
  * Component attributes and properties that can be applied to the element or by using JavaScript.
55770
56309
  *
56310
+ * - `dismiss-label`/`dismissLabel`: The tooltip on the mark that closes a `dismissible` tab. The mark is for
56311
+ * the pointer and hidden from screen readers, which hear the Delete key
56312
+ * through `aria-keyshortcuts`.
55771
56313
  * - `href`: The URL the tab links to. Setting it renders the tab as a link, for a set
55772
56314
  * of tabs that are pages of a site.
55773
56315
  * - `rel`: The link's `rel`, for a tab with an `href`.
55774
56316
  * - `target`: Where the link opens, such as `_blank`, for a tab with an `href`.
56317
+ * - `dismissible`: Whether the element shows a control that dismisses it.
55775
56318
  * - `disabled`: Whether the item is disabled and cannot be chosen.
55776
56319
  * - `selected`: Whether the item is selected.
55777
56320
  *
@@ -55805,6 +56348,7 @@ export type CustomElements = {
55805
56348
  *
55806
56349
  * Events that will be emitted by the component.
55807
56350
  *
56351
+ * - `helix-dismiss`: A `dismissible` tab was asked to close. The tab does not remove itself, so remove it and its panel in response. Cancelable.
55808
56352
  * - `helix-select`: Fired when the tab is chosen. Cancelable: canceling it stops the change and leaves the decision to you.
55809
56353
  *
55810
56354
  * ## Slots
@@ -55819,6 +56363,10 @@ export type CustomElements = {
55819
56363
  *
55820
56364
  * - `focus(options?: FocusOptions) => void`: Moves focus to the tab's control, the button or the link inside it, so a
55821
56365
  * script can focus the tab the way it focuses a native one.
56366
+ * - `dismiss() => boolean`: Sends `helix-dismiss` for a `dismissible` tab, and returns `false` where a
56367
+ * listener refused it, or where the tab is not dismissible or is disabled.
56368
+ * The tab stays where it is either way: removing it is yours. Where the tab
56369
+ * had focus, focus moves to the tab beside it once you remove it.
55822
56370
  * - `focusItem() => void`: Moves focus to the item's control, for the set's arrow keys.
55823
56371
  *
55824
56372
  * The set drives the keys and cannot reach the control itself, which is
@@ -55831,6 +56379,7 @@ export type CustomElements = {
55831
56379
  *
55832
56380
  * Custom selectors for styling elements within the component.
55833
56381
  *
56382
+ * - `dismiss`: The mark a pointer presses to close a `dismissible` tab.
55834
56383
  * - `tab`: The tab itself.
55835
56384
  *
55836
56385
  * ## CSS States
@@ -55855,8 +56404,12 @@ export type CustomElements = {
55855
56404
  * `selection-mode` lets a reader select tags, with Space, Enter or a press:
55856
56405
  * `single` selects one at a time and `multiple` any number. In `multiple`,
55857
56406
  * Shift with an arrow, Home or End selects the range from the tag last
55858
- * pressed to the tag focus moves to, and Control or Command with A selects
55859
- * every tag that is not disabled. `value` holds the
56407
+ * pressed to the tag focus moves to, Shift with a press or Space selects the
56408
+ * range to that tag, and Control or Command with A selects every tag that is
56409
+ * not disabled. `selection-behavior="replace"` selects the tag a reader
56410
+ * presses or moves to alone, as a file list does, and Control or Command
56411
+ * with a press or Space adds or takes out one tag. `disallow-empty-selection`
56412
+ * keeps one tag selected once one is. `value` holds the
55860
56413
  * selected tags' values, separated by commas, and a change asks with
55861
56414
  * `helix-before-change` and tells with `change`. Enter on a tag with an
55862
56415
  * `href` follows its link. A `disabled` tag is passed over. A selected tag
@@ -55878,10 +56431,19 @@ export type CustomElements = {
55878
56431
  *
55879
56432
  * Component attributes and properties that can be applied to the element or by using JavaScript.
55880
56433
  *
56434
+ * - `disallow-empty-selection`/`disallowEmptySelection`: Keeps at least one tag selected once one is, as React Aria's
56435
+ * `disallowEmptySelection`: a press or a key that would leave none selected
56436
+ * is refused. Removing the last selected tag still takes it out of `value`.
55881
56437
  * - `empty-label`/`emptyLabel`: The words the group shows and says once its last tag is removed, where
55882
56438
  * nothing is in the `empty` slot.
55883
56439
  * - `label`: The name of the set, such as "Filters", which a screen reader announces
55884
56440
  * before its tags.
56441
+ * - `selection-behavior`/`selectionBehavior`: What a press, Space, or a move does to the tags already selected.
56442
+ * `toggle`, the default, keeps them: a press adds or takes out the tag, and
56443
+ * the arrow keys move focus alone. `replace` selects the tag alone, as a
56444
+ * file list does, and the arrow keys carry the selection with focus.
56445
+ * Control or Command with a press or Space adds or takes out one tag in
56446
+ * `multiple`, and with an arrow moves focus without selecting.
55885
56447
  * - `selection-mode`/`selectionMode`: How many tags a reader can select: `single`, `multiple`, or none.
55886
56448
  *
55887
56449
  * Absent selects nothing, and the tags carry no selected state at all.
@@ -57978,6 +58540,8 @@ export type CustomElements = {
57978
58540
  * Areas where markup can be added to the component.
57979
58541
  *
57980
58542
  * - `(default)`: The item's label.
58543
+ * - `end`: Content after the label, such as a count or a shortcut.
58544
+ * - `start`: Content before the label, such as an icon.
57981
58545
  *
57982
58546
  * ## Methods
57983
58547
  *
@@ -58947,6 +59511,13 @@ export type CustomElements = {
58947
59511
  * or open, and the tree's one tab stop stays on the item last reached. In a
58948
59512
  * tree of check marks, Control+A (Command+A on an Apple keyboard) checks every
58949
59513
  * item or clears them all, and Shift with Up or Down Arrow moves and checks.
59514
+ * Shift+Space checks every item from the one last checked to the focused one,
59515
+ * and Control+Shift+Home or End checks every item from the focused one to the
59516
+ * first or the last, then moves there, as the tree pattern's range keys do.
59517
+ *
59518
+ * A tree with no name of its own is announced as "Tree", which says nothing
59519
+ * about what it holds, so a development build warns once with the kind
59520
+ * `missing-name` where neither `label` nor an `aria-label` names it.
58950
59521
  *
58951
59522
  * Removing the item that has focus moves focus to the item after it among its
58952
59523
  * siblings, or the one before, or its parent, so focus stays in the tree.
@@ -58962,7 +59533,15 @@ export type CustomElements = {
58962
59533
  * `helix-before-reorder`, which you can refuse, and then `helix-reorder`, whose
58963
59534
  * `keys` hold the siblings in the new order. **You move the items**: the tree
58964
59535
  * moves no element of yours, and focus follows the moved item once you have.
58965
- * Moving an item into another branch is not part of this.
59536
+ *
59537
+ * **Alt with the arrow along the line moves an item into another branch.**
59538
+ * Alt with the arrow that opens a branch (Right on a left-to-right page) puts
59539
+ * the focused item last inside the item before it, and opens that item; Alt
59540
+ * with the other arrow puts it after its parent, a level out. The same
59541
+ * `helix-before-reorder` and `helix-reorder` are sent, with `parent` naming
59542
+ * the branch it moves into by its key, `''` for the top level, and `keys`
59543
+ * holding that branch's items in their new order. The tree says the move with
59544
+ * `moved-into-label`.
58966
59545
  *
58967
59546
  * ## Attributes & Properties
58968
59547
  *
@@ -58975,6 +59554,11 @@ export type CustomElements = {
58975
59554
  *
58976
59555
  * An `aria-label` or `aria-labelledby` on the host names the tree too, and
58977
59556
  * wins over this.
59557
+ * - `moved-into-label`/`movedIntoLabel`: What screen readers hear when an item moves into another branch, in a
59558
+ * `reorderable` tree. `{name}` is the item's words, `{parent}` the words of
59559
+ * the branch it moved into, or the tree's `label` for the top level,
59560
+ * `{position}` its place there, counting from 1, and `{count}` the number of
59561
+ * items there.
58978
59562
  * - `moved-label`/`movedLabel`: What screen readers hear each time an item moves, in a `reorderable`
58979
59563
  * tree. `{name}` is the item's words, `{position}` its place among its
58980
59564
  * siblings, counting from 1, and `{count}` the number of siblings.
@@ -60241,6 +60825,10 @@ export type CustomElementsSolidJs = {
60241
60825
  * and a closed section is `hidden` and `inert` instead, and find in page skips
60242
60826
  * it.
60243
60827
  *
60828
+ * A section whose trigger has no words, with nothing in its `summary` slot,
60829
+ * is announced as a bare button, and a development build warns once with the
60830
+ * kind `missing-name`.
60831
+ *
60244
60832
  * While it is open, the content part carries the content's height as
60245
60833
  * `--accordion-content-height`, as Radix's accordion does, for a stylesheet
60246
60834
  * that animates the section open with keyframes of its own.
@@ -60377,6 +60965,7 @@ export type CustomElementsSolidJs = {
60377
60965
  *
60378
60966
  * These can be used to apply styling when a component is in a given state.
60379
60967
  *
60968
+ * - `closing`: While the item has closed and its content is still drawn, until the content part's animations end.
60380
60969
  * - `open`: While the item is open.
60381
60970
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
60382
60971
  */
@@ -60403,7 +60992,8 @@ export type CustomElementsSolidJs = {
60403
60992
  * Keys, on a trigger: Up and Down Arrow move to the previous and the next
60404
60993
  * trigger, and so do Left and Right, wrapping at the ends; Home and End go to
60405
60994
  * the first and the last. Enter and Space open and close the section. Disabled
60406
- * sections are passed over.
60995
+ * sections are passed over. Under `single` the open section's trigger is
60996
+ * `aria-disabled`, because a press cannot close it.
60407
60997
  *
60408
60998
  * Each trigger is a button with `aria-expanded` and `aria-controls`, inside a
60409
60999
  * heading, level 3 unless `heading-level` says otherwise, so the sections are
@@ -61929,8 +62519,11 @@ export type CustomElementsSolidJs = {
61929
62519
  * Set `href` to make the whole crumb an anchor, which works with Enter, middle
61930
62520
  * click, and the status bar, and before any JavaScript runs. A router cannot
61931
62521
  * reach an anchor inside a shadow root, so intercept the click for client-side
61932
- * navigation, as with `Tree.Item` and `List.Item`. A trail that collapses also
61933
- * reads `href` to rebuild its hidden crumbs elsewhere.
62522
+ * navigation, as with `Tree.Item` and `List.Item`: a plain press on the link
62523
+ * sends `helix-select` with the `href` as its value first, and canceling it
62524
+ * keeps the browser from following, so a client-side router follows it
62525
+ * instead, as React Aria's `onAction` lets a router do. A press with a
62526
+ * modifier opens the link where the browser opens it and sends nothing.
61934
62527
  *
61935
62528
  * Without `href`, the crumb renders a plain `<span>` around what you slot,
61936
62529
  * including your own anchor.
@@ -61988,6 +62581,12 @@ export type CustomElementsSolidJs = {
61988
62581
  * browser harness's awaits it alone: a browser always runs the frame, and a
61989
62582
  * timer beside it was a bet on how long one takes, which a busy run lost. (property only) (readonly)
61990
62583
  *
62584
+ * ## Events
62585
+ *
62586
+ * Events that will be emitted by the component.
62587
+ *
62588
+ * - `helix-select`: 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.
62589
+ *
61991
62590
  * ## Slots
61992
62591
  *
61993
62592
  * Areas where markup can be added to the component.
@@ -62001,6 +62600,8 @@ export type CustomElementsSolidJs = {
62001
62600
  *
62002
62601
  * Custom selectors for styling elements within the component.
62003
62602
  *
62603
+ * - `expand`: The button after the first crumb of a folded slotted trail, which shows the folded crumbs.
62604
+ * - `fold-separator`: The chevron before that button.
62004
62605
  * - `link`: The crumb itself, which is an `<a>` where `href` is set.
62005
62606
  * - `separator`: The separator preceding the item.
62006
62607
  * - `separator-mark`: The chevron between crumbs, shown when no separator is slotted.
@@ -62009,7 +62610,9 @@ export type CustomElementsSolidJs = {
62009
62610
  *
62010
62611
  * These can be used to apply styling when a component is in a given state.
62011
62612
  *
62613
+ * - `current`: While the crumb is the current page, marked `current` or the last of a trail with none marked.
62012
62614
  * - `end`: While the `end` slot holds something, so a stylesheet can join the label and what follows it into one control.
62615
+ * - `folded`: While a trail longer than its `max-items` has folded the crumb away. It takes no room.
62013
62616
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
62014
62617
  */
62015
62618
  "helix-headless-breadcrumb": Partial<
@@ -62040,11 +62643,13 @@ export type CustomElementsSolidJs = {
62040
62643
  * array of `{ label, href }`, drawn as crumbs in order, the last one as the
62041
62644
  * current page. Slotted crumbs follow them. Use one way or the other in a trail.
62042
62645
  *
62043
- * With `max-items`, a trail drawn from `items` that is longer folds its middle
62044
- * into one crumb: the first crumb, a button, then the last `max-items` less one.
62045
- * The button is named by `expand-label` and shows the whole trail, moving focus
62046
- * to the first crumb it brought back. A new `items` folds again. Slotted crumbs
62047
- * do not fold; write the folded crumb where the gap should be.
62646
+ * With `max-items`, a trail that is longer folds its middle into one place:
62647
+ * the first crumb, a button, then the last `max-items` less one. The button is
62648
+ * named by `expand-label` and shows the whole trail, moving focus to the first
62649
+ * crumb it brought back. A trail drawn from `items` draws the button as a
62650
+ * crumb of its own, and a new `items` folds again. A slotted trail hides the
62651
+ * crumbs it folds, which take no room, and its first crumb draws the button
62652
+ * after its link; a change to the crumbs folds again.
62048
62653
  *
62049
62654
  * **Keyboard.** Each crumb with an `href` is a link and one tab stop, and
62050
62655
  * Enter follows it. The current page and the separators are not in the tab
@@ -62103,6 +62708,8 @@ export type CustomElementsSolidJs = {
62103
62708
  * - `crumb`: Each crumb drawn from `items`.
62104
62709
  * - `crumb-collapsed`: The crumb that holds the folded middle of a trail longer than `max-items`.
62105
62710
  * - `crumb-current`: The crumb drawn from `items` for the current page.
62711
+ * - `crumb-expand`: The fold button a crumb draws after the first crumb of a folded slotted trail. A trail drawn from `items` draws its fold as a crumb of its own, `crumb-collapsed`, so this one is never drawn there.
62712
+ * - `crumb-fold-separator`: The chevron before that button.
62106
62713
  * - `crumb-link`: The link, or the current page's words, of a crumb drawn from `items`.
62107
62714
  * - `crumb-separator`: The separator before a crumb drawn from `items`.
62108
62715
  * - `crumb-separator-mark`: The chevron before a crumb drawn from `items`.
@@ -62251,6 +62858,7 @@ export type CustomElementsSolidJs = {
62251
62858
  *
62252
62859
  * These can be used to apply styling when a component is in a given state.
62253
62860
  *
62861
+ * - `pressed`: While a group with `selection-mode` has a button pressed.
62254
62862
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
62255
62863
  */
62256
62864
  "helix-headless-button-group": Partial<
@@ -65072,8 +65680,9 @@ export type CustomElementsSolidJs = {
65072
65680
  * style the panel to match your interface.
65073
65681
  *
65074
65682
  * The field reads every color syntax, including `#f00`, `#ff0000`,
65075
- * `rgb(255 0 0)`, `rgba(255,0,0,.5)`, `rgb(255 0 0 / 50%)`, and
65076
- * `hsl(0 100% 50%)`. It writes colors in the syntax that `format` names. The
65683
+ * `rgb(255 0 0)`, `rgba(255,0,0,.5)`, `rgb(255 0 0 / 50%)`,
65684
+ * `hsl(0 100% 50%)`, `oklch(62.8% 0.258 29.2)`, and `hsb(0, 100%, 100%)`. It
65685
+ * writes colors in the syntax that `format` names. The
65077
65686
  * field shows the value without reformatting it, because half-typed input does
65078
65687
  * not survive a round trip through a formatter. Date Input does the same with
65079
65688
  * dates.
@@ -65110,7 +65719,8 @@ export type CustomElementsSolidJs = {
65110
65719
  * Passed to the panel, whose square, hue ramp and presets say the color's
65111
65720
  * name, and read by the swatch in `swatch`, which says it before the value.
65112
65721
  * Color Picker lists the keys.
65113
- * - `format`: The syntax the value is written in: `hex`, `rgb`, or `hsl`.
65722
+ * - `format`: The syntax the value is written in: `hex`, `rgb`, `hsl`, `oklch`, or
65723
+ * `hsb`, as Color Picker's `format`.
65114
65724
  *
65115
65725
  * **Undefaulted, because it reflects.** The two together stamp an attribute
65116
65726
  * onto every host anybody renders, including the ones nobody configured: the
@@ -65353,6 +65963,8 @@ export type CustomElementsSolidJs = {
65353
65963
  * - `picker-channel-marker-label`: The value a mark stands at, when `marker-labels` is set.
65354
65964
  * - `picker-channel-markers`: The row of marks along the track.
65355
65965
  * - `picker-channel-output`: The current value, shown beside the track.
65966
+ * - `picker-channel-thumb`: A ramp's thumb box, which holds no content in a picker.
65967
+ * - `picker-channel-thumbs`: The layer over a ramp's track that holds its thumb box.
65356
65968
  * - `picker-channel-tooltip`: A ramp's value in a bubble, where a ramp shows one.
65357
65969
  * - `picker-channel-tooltips`: The layer over a ramp's track that holds its bubble.
65358
65970
  * - `picker-channels`: The channel sliders beside the sample.
@@ -65377,7 +65989,9 @@ export type CustomElementsSolidJs = {
65377
65989
  * - `picker-grid-brightness`: The range input for the square's vertical axis.
65378
65990
  * - `picker-grid-handle`: The mark showing where in the square the color sits.
65379
65991
  * - `picker-grid-saturation`: The range input for the square's horizontal axis.
65992
+ * - `picker-hint`: The picker's own help, which the field's `hint` stands in for here, so it stays hidden.
65380
65993
  * - `picker-icon`: An icon drawn by the picker.
65994
+ * - `picker-label`: The picker's own name, which the field's `label` stands in for here, so it stays hidden.
65381
65995
  * - `picker-sample`: A chip of the current color. Pressing it copies the value.
65382
65996
  * - `picker-swatch`: One preset.
65383
65997
  * - `picker-swatches`: The row of presets.
@@ -65428,6 +66042,11 @@ export type CustomElementsSolidJs = {
65428
66042
  * is named by its color. The opacity ramp is heard as a percentage. Set
65429
66043
  * `color-words` to speak the names in another language.
65430
66044
  *
66045
+ * `label` names the picker, which is then a group with that name, and the
66046
+ * square's ramps say it before their own, as "Brand, Saturation". `hint`
66047
+ * writes help under the picker, which the square, the ramps and the value
66048
+ * field are described by. Inside Color Input the field carries both.
66049
+ *
65431
66050
  * The presets are a listbox with the current color selected, and one tab
65432
66051
  * stop. The arrow keys move between them, Home and End go to the ends, and
65433
66052
  * Enter, Space or a press chooses one.
@@ -65454,12 +66073,15 @@ export type CustomElementsSolidJs = {
65454
66073
  * language hears its own rather than English between its own labels.
65455
66074
  * - `channel-fields`/`channelFields`: Whether the picker shows a number field for each channel of the color, as
65456
66075
  * React Aria's ColorField does with `channel`: red, green and blue for hex
65457
- * and rgb, hue, saturation and lightness for hsl, and the opacity with
65458
- * `alpha`.
66076
+ * and rgb, hue, saturation and lightness for hsl, hue, saturation and
66077
+ * brightness for hsb, lightness, chroma and hue for oklch, and the opacity
66078
+ * with `alpha`.
65459
66079
  *
65460
66080
  * For a reader who has the numbers from a brand guide, and for a keyboard,
65461
66081
  * where typing 128 is quicker than holding an arrow key. The fields follow
65462
66082
  * the syntax the format toggle sets.
66083
+ * - `chroma-label`/`chromaLabel`: What the chroma channel's field is called, in `channel-fields` with
66084
+ * oklch.
65463
66085
  * - `color-words`/`colorWords`: The words a color's name is spoken in, as JSON keyed by their English,
65464
66086
  * such as `{"red": "rot", "vibrant": "kräftiges"}`.
65465
66087
  *
@@ -65476,15 +66098,25 @@ export type CustomElementsSolidJs = {
65476
66098
  * - `copy-label`/`copyLabel`: The name of the sample, which copies the value. `{value}` is replaced with
65477
66099
  * the color.
65478
66100
  * - `eyedropper-label`/`eyedropperLabel`: What the eyedropper is called.
65479
- * - `format`: The syntax the value is written in: `hex`, `rgb`, or `hsl`.
66101
+ * - `format`: The syntax the value is written in: `hex`, `rgb`, `hsl`, `oklch`, or
66102
+ * `hsb`.
65480
66103
  *
65481
66104
  * Only what is written. Everything is read whatever this says, so a picker on
65482
- * `hex` still takes an `rgb()` handed to it and stores the hex for it.
66105
+ * `hex` still takes an `rgb()` or an `oklch()` handed to it and stores the
66106
+ * hex for it. `oklch` writes the sRGB color the picker holds, such as
66107
+ * `oklch(62.8% 0.258 29.2)`; a color outside sRGB that is handed in is
66108
+ * clipped to it. `hsb` writes the picker's own model, `hsb(0, 100%, 100%)`,
66109
+ * as React Aria's and Zag's color strings do. It is not CSS, so the toggle
66110
+ * walks the other four.
65483
66111
  * - `format-label`/`formatLabel`: What the syntax toggle is called, with `{format}` filled in.
65484
66112
  * - `green-label`/`greenLabel`: What the green channel's field is called, in `channel-fields`.
66113
+ * - `hint`: Help under the picker, such as what the color is used for. The `hint`
66114
+ * slot takes richer content.
65485
66115
  * - `hue-label`/`hueLabel`: What the hue channel is called.
66116
+ * - `label`: The name above the picker, such as "Brand color". The picker is then a
66117
+ * group with this name. The `label` slot takes richer content.
65486
66118
  * - `lightness-label`/`lightnessLabel`: What the lightness channel's field is called, in `channel-fields` with
65487
- * hsl.
66119
+ * hsl and oklch.
65488
66120
  * - `no-eyedropper`/`noEyedropper`: Hides the eyedropper. Without it, the eyedropper appears in browsers that
65489
66121
  * support one.
65490
66122
  * - `no-format`/`noFormat`: Hides the syntax toggle, so the format cannot be changed.
@@ -65659,6 +66291,8 @@ export type CustomElementsSolidJs = {
65659
66291
  * Areas where markup can be added to the component.
65660
66292
  *
65661
66293
  * - `eyedropper-icon`: The icon on the eyedropper button, usually a dropper.
66294
+ * - `hint`: Help under the picker, for content richer than the `hint` text.
66295
+ * - `label`: The name above the picker, for content richer than the `label` text.
65662
66296
  *
65663
66297
  * ## Methods
65664
66298
  *
@@ -65741,6 +66375,8 @@ export type CustomElementsSolidJs = {
65741
66375
  * - `channel-marker-label`: The value a mark stands at, when `marker-labels` is set.
65742
66376
  * - `channel-markers`: The row of marks along the track.
65743
66377
  * - `channel-output`: The current value, shown beside the track.
66378
+ * - `channel-thumb`: A ramp's thumb box, which holds no content in a picker.
66379
+ * - `channel-thumbs`: The layer over a ramp's track that holds its thumb box.
65744
66380
  * - `channel-tooltip`: A ramp's value in a bubble, where a ramp shows one.
65745
66381
  * - `channel-tooltips`: The layer over a ramp's track that holds its bubble.
65746
66382
  * - `channels`: The ramps beside the sample.
@@ -65764,6 +66400,8 @@ export type CustomElementsSolidJs = {
65764
66400
  * - `grid`: The saturation and brightness square. Draw the mark that shows where the color sits with `::part(grid)::after` in your stylesheet. The square carries the two channels as `--color-picker-saturation` and `--color-picker-brightness`, and this tier ships no CSS.
65765
66401
  * - `grid-brightness`: The range input for the square's vertical axis.
65766
66402
  * - `grid-saturation`: The range input for the square's horizontal axis.
66403
+ * - `hint`: The help under the picker, while `hint` is set or the `hint` slot has content.
66404
+ * - `label`: The name above the picker, while `label` is set or the `label` slot has content.
65767
66405
  * - `sample`: A chip of the current color. Pressing it copies the value.
65768
66406
  * - `swatch`: One preset, an option in the `swatches` listbox.
65769
66407
  * - `swatches`: The row of presets, a listbox.
@@ -65775,7 +66413,10 @@ export type CustomElementsSolidJs = {
65775
66413
  *
65776
66414
  * These can be used to apply styling when a component is in a given state.
65777
66415
  *
66416
+ * - `copied`: The moment after the sample copies the value, while it says `copied-label`.
66417
+ * - `dragging`: While a pointer drags the square's handle.
65778
66418
  * - `invalid`: While `invalid` is set or `feedback` says what is wrong.
66419
+ * - `sampling`: While the eyedropper is open over the screen.
65779
66420
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
65780
66421
  */
65781
66422
  "helix-headless-color-picker": Partial<
@@ -67438,6 +68079,7 @@ export type CustomElementsSolidJs = {
67438
68079
  * - `picker-day-outside`: A day from a neighboring month. Applied with `picker-day`.
67439
68080
  * - `picker-day-selected`: The chosen day, or either end of a chosen range. Applied with `picker-day`.
67440
68081
  * - `picker-day-today`: Today. Applied with `picker-day`.
68082
+ * - `picker-day-weekend`: A day of the weekend where the calendar's language is spoken, beside `picker-day`.
67441
68083
  * - `picker-feedback`: The calendar's own message, under it, while the calendar's `feedback` is set.
67442
68084
  * - `picker-grid`: The grid of days.
67443
68085
  * - `picker-header`: The month name and its controls.
@@ -67529,15 +68171,22 @@ export type CustomElementsSolidJs = {
67529
68171
  * speaks it. Unset is the sentence registered for the page's language, then
67530
68172
  * the English. `{mode}` is `single`, `range` or `multiple`, so each can have
67531
68173
  * its own sentence.
67532
- * - `calendar`: The calendar the heading, the days, and the months are written in:
67533
- * `gregory`, `buddhist`, `japanese`, `roc`, or `iso8601`, the five whose
67534
- * months are the Gregorian months.
67535
- *
67536
- * Absent is the locale's own where it is one of the five, such as
67537
- * `buddhist` for `th-TH` or `japanese` for `ja-JP-u-ca-japanese`, and
67538
- * `gregory` for every other, such as `persian` for `fa-IR`, so the heading
67539
- * names the Gregorian month the grid shows. The value is `YYYY-MM-DD` in
67540
- * every calendar.
68174
+ * - `calendar`: The calendar the heading, the days, and the months are written in.
68175
+ *
68176
+ * `gregory`, `buddhist`, `japanese`, `roc`, and `iso8601` are the five
68177
+ * whose months are the Gregorian months. Absent is the locale's own where
68178
+ * it is one of the five, such as `buddhist` for `th-TH` or `japanese` for
68179
+ * `ja-JP-u-ca-japanese`, and `gregory` for every other, such as `persian`
68180
+ * for `fa-IR`.
68181
+ *
68182
+ * `persian`, `hebrew`, `islamic-umalqura`, `islamic-civil`, `ethiopic`,
68183
+ * `coptic`, and `indian` draw a calendar with months of its own, as React
68184
+ * Aria's calendars do: each grid is one of that calendar's months, the
68185
+ * Hebrew leap month and Ethiopia's five-day thirteenth month included, and
68186
+ * Previous, Next and the page keys move by those months. `month` and
68187
+ * `helix-navigate` then name a month by its first day, `YYYY-MM-DD`. The
68188
+ * heading stays text, as the months and years views are drawn in Gregorian
68189
+ * months only. The value is `YYYY-MM-DD` in every calendar.
67541
68190
  * - `default-month`/`defaultMonth`: The month to open on when `month` is not set.
67542
68191
  * - `disable-dates`/`disableDates`: Dates that cannot be chosen, as `YYYY-MM-DD`, separated by commas or
67543
68192
  * spaces.
@@ -67563,8 +68212,9 @@ export type CustomElementsSolidJs = {
67563
68212
  * its days.
67564
68213
  * - `min`: Earliest selectable date, as `YYYY-MM-DD`.
67565
68214
  * - `mode`: How many dates can be held at once.
67566
- * - `month`: The month shown, as `YYYY-MM`. When it is not set, it follows `value`,
67567
- * then the current month.
68215
+ * - `month`: The month shown, as `YYYY-MM`, or as its first day, `YYYY-MM-DD`, under a
68216
+ * `calendar` with months of its own. When it is not set, it follows
68217
+ * `value`, then the current month.
67568
68218
  *
67569
68219
  * Separate from `value` on purpose, so paging selects nothing and a consumer
67570
68220
  * can drive the view. Reading gives the month on show; writing sets it, and
@@ -67611,6 +68261,13 @@ export type CustomElementsSolidJs = {
67611
68261
  * treated as one rather than as an error: a step of zero would block every
67612
68262
  * date including the one already chosen.
67613
68263
  * - `step-mismatch-message`/`stepMismatchMessage`: The validation message for a date that `step` skips.
68264
+ * - `time-zone`/`timeZone`: The time zone today is read in, such as `America/New_York`, as React
68265
+ * Aria's `today(timeZone)` reads it. Empty is the reader's own.
68266
+ *
68267
+ * Dates are plain `YYYY-MM-DD` and carry no zone, so this moves only today:
68268
+ * the day marked `aria-current` and `day-today`, and the month a picker
68269
+ * with no value opens on. A desk in Tokyo booking for an office in New York
68270
+ * sets `America/New_York`, and today is the office's.
67614
68271
  * - `unavailable-message`/`unavailableMessage`: The validation message for a date that `disable-dates` or `disable-days`
67615
68272
  * bars.
67616
68273
  * - `value-missing-message`/`valueMissingMessage`: The validation message for a required date picker with no date chosen.
@@ -67731,6 +68388,8 @@ export type CustomElementsSolidJs = {
67731
68388
  *
67732
68389
  * Areas where markup can be added to the component.
67733
68390
  *
68391
+ * - `footer`: Content under the calendar, such as buttons for today or a common range.
68392
+ * - `header`: Content above the calendar, such as a note on what the date is for.
67734
68393
  * - `next-icon`: The glyph on the control that moves forward a month, usually a caret.
67735
68394
  * - `previous-icon`: The glyph on the control that moves back a month, usually a caret.
67736
68395
  *
@@ -67815,6 +68474,7 @@ export type CustomElementsSolidJs = {
67815
68474
  * - `day-outside`: A day from a neighboring month, filling the grid out, beside `day`.
67816
68475
  * - `day-selected`: The chosen day, or either end of a chosen range, beside `day`.
67817
68476
  * - `day-today`: Today, beside `day`.
68477
+ * - `day-weekend`: A day of the weekend where the calendar's language is spoken, beside `day`: Saturday and Sunday in `en-US`, Friday and Saturday in `ar-EG`.
67818
68478
  * - `feedback`: The message under the calendar, while `feedback` is set.
67819
68479
  * - `grid`: The grid of days.
67820
68480
  * - `header`: The month name and its controls.
@@ -67833,7 +68493,7 @@ export type CustomElementsSolidJs = {
67833
68493
  * - `previous`: The control that moves to the previous month.
67834
68494
  * - `previous-mark`: The glyph on the previous month control, where none is slotted.
67835
68495
  * - `week`: One row of days.
67836
- * - `weekday`: A column header naming a day of the week.
68496
+ * - `weekday`: A column header naming a day of the week. It shows the short name and says the full one.
67837
68497
  *
67838
68498
  * ## CSS States
67839
68499
  *
@@ -75879,6 +76539,15 @@ export type CustomElementsSolidJs = {
75879
76539
  * links and not a single control, and the keys across the other axis are
75880
76540
  * left to the page and to an open panel.
75881
76541
  *
76542
+ * While a `Megamenu`, or another disclosure among the destinations, is open,
76543
+ * the navigation is `:state(open)`, so a page can dim what lies under the
76544
+ * panel, as Radix's navigation menu marks its open state.
76545
+ *
76546
+ * A screen reader lists the page's navigation landmarks by name, so two named
76547
+ * alike cannot be told apart. Where another navigation in the same document
76548
+ * has the same name, "Main" for two with no `label`, the later one warns once
76549
+ * with the kind `duplicate-name`.
76550
+ *
75882
76551
  * ## Attributes & Properties
75883
76552
  *
75884
76553
  * Component attributes and properties that can be applied to the element or by using JavaScript.
@@ -75934,6 +76603,7 @@ export type CustomElementsSolidJs = {
75934
76603
  *
75935
76604
  * These can be used to apply styling when a component is in a given state.
75936
76605
  *
76606
+ * - `open`: While a megamenu or another disclosure among the destinations is open.
75937
76607
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
75938
76608
  */
75939
76609
  "helix-headless-navigation": Partial<
@@ -79970,7 +80640,10 @@ export type CustomElementsSolidJs = {
79970
80640
  * place for focus to return to when the list closes.
79971
80641
  *
79972
80642
  * Your options stay in your light DOM and are slotted through into the listbox,
79973
- * so the listbox looks through slots to find them.
80643
+ * so the listbox looks through slots to find them. For a list too long to draw
80644
+ * whole, set `items` instead: the list draws only the options in sight, as
80645
+ * Listbox's `items` does, and the trigger, its keys and the form read the
80646
+ * whole set.
79974
80647
  *
79975
80648
  * `Select` owns the value, passes it down to the listbox, and takes changes
79976
80649
  * back, so the value lives in one place.
@@ -80115,6 +80788,17 @@ export type CustomElementsSolidJs = {
80115
80788
  *
80116
80789
  * No attribute, because it is coordination between elements rather than
80117
80790
  * anything a consumer sets. (property only)
80791
+ * - `items`: The options as data, for a list too long to draw whole: each a value,
80792
+ * which is also its words, or a record with a `value`, a `label` and
80793
+ * `disabled`. Passed to the list, which draws only the options in sight,
80794
+ * as Listbox's `items` does. Set, the options you write as children are
80795
+ * not read.
80796
+ *
80797
+ * The trigger shows the chosen options' labels, the letters and the Left
80798
+ * and Right keys on the closed trigger choose over the whole set, and a
80799
+ * chosen value whose option leaves `items` drops out of `value`.
80800
+ * `value-content` is not called for `items`. Import the Option family as
80801
+ * well, whose elements are drawn. (property only)
80118
80802
  * - `valueContent`: What the trigger shows for the chosen options: a function given them, in
80119
80803
  * the order they appear, that returns text, an element or a Lit template.
80120
80804
  *
@@ -80292,6 +80976,8 @@ export type CustomElementsSolidJs = {
80292
80976
  *
80293
80977
  * - `invalid`: The control has an error to show, from the browser's validation or from your `feedback`.
80294
80978
  * - `open`: While the list is open.
80979
+ * - `placed-bottom`: While the open list sits below the trigger.
80980
+ * - `placed-top`: While the open list sits above the trigger, where there was no room below.
80295
80981
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
80296
80982
  */
80297
80983
  "helix-headless-select": Partial<
@@ -80477,7 +81163,12 @@ export type CustomElementsSolidJs = {
80477
81163
  * does not draw a hundred and one marks by accident.
80478
81164
  *
80479
81165
  * A range with two thumbs is two inputs stacked on one track, because there is
80480
- * no native two-thumb range. Each thumb keeps its own value.
81166
+ * no native two-thumb range. Each thumb keeps its own value, and a named range
81167
+ * submits one entry per thumb under its name, the lowest first. A range given
81168
+ * more than two values, such as `default-value="20,50,80"`, has a thumb for
81169
+ * each, as React Aria's slider takes any number of thumbs: each stops at its
81170
+ * neighbors, and the ones between the first and the last are named by
81171
+ * `thumb-label`.
80481
81172
  * `min-steps-between-thumbs` keeps them that many steps apart, and the readout
80482
81173
  * joins the two as `range-text` writes them.
80483
81174
  *
@@ -80508,6 +81199,8 @@ export type CustomElementsSolidJs = {
80508
81199
  * | Page Up, Page Down | Moves the thumb by a larger step. |
80509
81200
  * | Home, End | Moves the thumb to its lowest or highest value. |
80510
81201
  *
81202
+ * Under `readonly` none of these move the thumb, and Tab still reaches it.
81203
+ *
80511
81204
  * Each thumb is an `<input type="range">` with `aria-valuetext` where the value
80512
81205
  * is formatted or worded. A range's thumbs say they stop at each other with
80513
81206
  * `aria-valuemin` and `aria-valuemax`.
@@ -80566,13 +81259,24 @@ export type CustomElementsSolidJs = {
80566
81259
  * between its thumbs and ignores it.
80567
81260
  * - `range`: Adds a second thumb, so the value is a pair.
80568
81261
  *
80569
- * The pair is one string, `"10,50"`, which is what a form submits and what
80570
- * `MixinControllerValue` already holds. `valueAsNumber` reads the lower of
80571
- * the two, since a range has no single number.
81262
+ * The pair is one string, `"10,50"`, which is what `value` and
81263
+ * `MixinControllerValue` hold. A form receives two entries under the name,
81264
+ * `price=10&price=50`, as React Aria's two thumbs send theirs.
81265
+ * `valueAsNumber` reads the lower of the two, since a range has no single
81266
+ * number.
80572
81267
  * - `range-text`/`rangeText`: How the readout joins a range's two values, with `{start}` and `{end}`
80573
81268
  * filled in. Write it in the page's language, such as `{start} bis {end}`.
81269
+ * - `readonly`/`readOnly`: Whether a reader can see and focus the value and cannot change it. A
81270
+ * read-only slider still submits its value.
81271
+ *
81272
+ * React Aria's `isReadOnly`. Each thumb stays a tab stop and says
81273
+ * `aria-readonly`. The arrow keys, the page keys, Home, End, and a drag
81274
+ * leave the value where it is. A script can still set `value`.
80574
81275
  * - `show-value`/`showValue`: Shows the chosen value beside the track.
80575
81276
  * - `step`: How far one press of an arrow key moves the thumb.
81277
+ * - `thumb-label`/`thumbLabel`: The name of a thumb between a range's first and last, read after the
81278
+ * slider's label, with `{index}` filled in: its place, counted from 1. The
81279
+ * first is `minimum-label` and the last `maximum-label`.
80576
81280
  * - `tooltip`: Whether each thumb shows its value in a bubble beside it, as Web
80577
81281
  * Awesome's `with-tooltip`. The styled slider shows the bubbles while the
80578
81282
  * slider is under the pointer or holds focus. They repeat what each thumb
@@ -80674,6 +81378,8 @@ export type CustomElementsSolidJs = {
80674
81378
  * - `feedback`: The message that says what is wrong, for content richer than a string. It shows while there is a message.
80675
81379
  * - `hint`: Help under the control, for content richer than the `hint` text.
80676
81380
  * - `label`: The label, for content richer than the `label` text.
81381
+ * - `thumb`: Content drawn on the thumb, such as a glyph: a single slider's thumb, or a range's lower one. It is decoration, hidden from a screen reader.
81382
+ * - `thumb-end`: Content drawn on a range's upper thumb.
80677
81383
  *
80678
81384
  * ## Methods
80679
81385
  *
@@ -80742,7 +81448,7 @@ export type CustomElementsSolidJs = {
80742
81448
  *
80743
81449
  * CSS variables available for styling the component.
80744
81450
  *
80745
- * - `--slider-at`: Where a bubble's thumb is, as a fraction of the track, 0 to 1. Set on each `tooltip` part.
81451
+ * - `--slider-at`: 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.
80746
81452
  * - `--slider-fraction`: The value as a fraction of the range, 0 to 1.
80747
81453
  * - `--slider-from`: Where the filled span starts, as a fraction of the track, 0 to 1: a range's lower thumb, or a single thumb's `origin`.
80748
81454
  * - `--slider-marker-at`: Where one marker sits, as a percentage of the track.
@@ -80752,7 +81458,7 @@ export type CustomElementsSolidJs = {
80752
81458
  *
80753
81459
  * Custom selectors for styling elements within the component.
80754
81460
  *
80755
- * - `control`: The range input.
81461
+ * - `control`: The range input, one per thumb. On a range each carries `data-thumb`, `start`, `middle`, or `end`, and `data-index`, its place from the lowest.
80756
81462
  * - `feedback`: The error message under the track.
80757
81463
  * - `field`: The row that holds the control and its readout.
80758
81464
  * - `hint`: The help text under the track, shown while there is no error.
@@ -80761,7 +81467,9 @@ export type CustomElementsSolidJs = {
80761
81467
  * - `marker-label`: The value a mark stands at, when `marker-labels` is set.
80762
81468
  * - `markers`: The row of marks along the track.
80763
81469
  * - `output`: The current value, shown beside the track.
80764
- * - `tooltip`: One thumb's value in a bubble beside it, under `tooltip`. It carries `data-thumb` on a range, `start` or `end`, and `--slider-at`, where its thumb is as a fraction of the track.
81470
+ * - `thumb`: One thumb's own box over the track, which holds the `thumb` or `thumb-end` slot. It carries `data-thumb` on a range, `start`, `middle`, or `end`, and `--slider-at`, where its thumb is as a fraction of the track. Draw your own thumb here and hide the native one, or leave it empty.
81471
+ * - `thumbs`: The layer over the track that holds each `thumb`. It is `hidden` until a thumb slot has content, and then `[part="field"]` carries `data-thumbs`.
81472
+ * - `tooltip`: One thumb's value in a bubble beside it, under `tooltip`. It carries `data-thumb` on a range, `start`, `middle`, or `end`, and `--slider-at`, where its thumb is as a fraction of the track.
80765
81473
  * - `tooltips`: The layer over the track that holds the bubbles, under `tooltip`.
80766
81474
  *
80767
81475
  * ## CSS States
@@ -81066,14 +81774,25 @@ export type CustomElementsSolidJs = {
81066
81774
  * Put a `Kbd` in the `shortcut` slot to draw it as keys instead; the dial
81067
81775
  * imports no `Kbd` of its own. Showing a shortcut does not bind it.
81068
81776
  *
81777
+ * `href` makes the action a link, as Menu's rows take one: the `item` part is
81778
+ * then an `<a>` carrying `menuitem`, so the browser follows it, opens it in a
81779
+ * new tab on a middle press, and offers its own menu for it. Choosing it still
81780
+ * sends `helix-select` and closes the dial. A disabled action draws no link.
81781
+ *
81069
81782
  * ## Attributes & Properties
81070
81783
  *
81071
81784
  * Component attributes and properties that can be applied to the element or by using JavaScript.
81072
81785
  *
81073
81786
  * - `disabled`: Whether the action is disabled, so it cannot be chosen.
81787
+ * - `download`: Whether the link downloads the file when the action is chosen. Only
81788
+ * meaningful beside an `href`, and only for a file served from the page's
81789
+ * origin.
81790
+ * - `href`: The URL the action links to. Setting it draws the action as a link.
81791
+ * - `rel`: The link's `rel`. Set it whenever you set `target="_blank"`.
81074
81792
  * - `shortcut`: The action's keyboard shortcut as a chord, such as `mod+s`, carried as
81075
81793
  * `aria-keyshortcuts` and drawn after the name. `mod` is Command on an Apple
81076
81794
  * keyboard and Control elsewhere. Showing a shortcut does not bind it.
81795
+ * - `target`: Where the link opens, such as `_blank` for a new tab.
81077
81796
  * - `value`: The action's value, sent in `helix-select` when the action is chosen.
81078
81797
  * - `active`: Whether the action has focus, which makes it the action the keyboard is on.
81079
81798
  *
@@ -81130,7 +81849,7 @@ export type CustomElementsSolidJs = {
81130
81849
  * Custom selectors for styling elements within the component.
81131
81850
  *
81132
81851
  * - `icon`: The box that holds the icon.
81133
- * - `item`: The control for the action.
81852
+ * - `item`: The control for the action, which is an `<a>` where `href` is set.
81134
81853
  * - `label`: The action's name, beside the icon.
81135
81854
  * - `shortcut`: The box after the name that holds the shortcut, shown while `shortcut` is set or something is in the `shortcut` slot.
81136
81855
  *
@@ -81168,8 +81887,9 @@ export type CustomElementsSolidJs = {
81168
81887
  * action whose name starts with it. The actions are one tab stop, and Tab
81169
81888
  * closes the dial and moves on.
81170
81889
  *
81171
- * **Keyboard.** On the trigger, Enter, Space or a press opens the dial on its
81172
- * first action. With the dial open:
81890
+ * **Keyboard.** On the trigger, Enter, Space, Down or a press opens the dial
81891
+ * on its first action, and Up opens it on its last, as an APG menu button
81892
+ * does. With the dial open:
81173
81893
  *
81174
81894
  * | Key | What it does |
81175
81895
  * |---|---|
@@ -81193,6 +81913,13 @@ export type CustomElementsSolidJs = {
81193
81913
  * and a slotted one alike. A press that has opened the dial does not also do
81194
81914
  * the trigger's action.
81195
81915
  *
81916
+ * **Open on hover.** With `open-on="hover"`, a mouse resting on the trigger
81917
+ * opens the dial, as Material's speed dial does, and the dial closes a moment
81918
+ * after the mouse leaves both the trigger and the actions. A press, a touch
81919
+ * and the keyboard open it as under `click`, and a press on the trigger of a
81920
+ * dial already open moves focus to its first action, so the press a mouse
81921
+ * makes after hovering keeps the dial open.
81922
+ *
81196
81923
  * ## Attributes & Properties
81197
81924
  *
81198
81925
  * Component attributes and properties that can be applied to the element or by using JavaScript.
@@ -81206,9 +81933,11 @@ export type CustomElementsSolidJs = {
81206
81933
  * plain element of yours once a reader reaches it, after hydration, unless
81207
81934
  * you described or labeled it yourself.
81208
81935
  * - `offset`: Space between the trigger and the actions, in pixels.
81209
- * - `open-on`/`openOn`: What opens the dial. `click` opens it on a press of the trigger. Under
81210
- * `long-press`, a press is the trigger's own action, and the dial opens on a
81211
- * press held for half a second, or on Alt+Down or Alt+Up.
81936
+ * - `open-on`/`openOn`: What opens the dial. `click` opens it on a press of the trigger. `hover`
81937
+ * also opens it while a mouse rests on the trigger, and closes it once the
81938
+ * mouse has left. Under `long-press`, a press is the trigger's own action,
81939
+ * and the dial opens on a press held for half a second, or on Alt+Down or
81940
+ * Alt+Up.
81212
81941
  * - `placement`: The direction the actions open in. They move to another side if that side
81213
81942
  * does not fit.
81214
81943
  *
@@ -81262,6 +81991,7 @@ export type CustomElementsSolidJs = {
81262
81991
  * Areas where markup can be added to the component.
81263
81992
  *
81264
81993
  * - `(default)`: The actions.
81994
+ * - `icon`: Replaces the plus on the button the dial draws when no trigger is slotted, such as with a pencil for a dial of ways to write.
81265
81995
  * - `trigger`: The control that opens the actions. Without one, a button named by `label` is drawn.
81266
81996
  *
81267
81997
  * ## Methods
@@ -81334,6 +82064,13 @@ export type CustomElementsSolidJs = {
81334
82064
  * takes all of the change, as Web Awesome's split panel does. Without it,
81335
82065
  * both panes keep their share.
81336
82066
  *
82067
+ * **Three or more panes along one axis are splitters nested on that axis**, a
82068
+ * splitter in the `end` pane of another for three columns. The nested one
82069
+ * keeps the pane on its far side the size it was while the outer divider
82070
+ * moves, so a divider resizes only the two panes beside it, as Zag's splitter
82071
+ * does with any number of panels. Where the whole row is resized, every pane
82072
+ * keeps its share, unless `primary` says otherwise.
82073
+ *
81337
82074
  * **Keyboard.** The divider is one tab stop.
81338
82075
  *
81339
82076
  * | Key | What it does |
@@ -81727,7 +82464,13 @@ export type CustomElementsSolidJs = {
81727
82464
  * UI's linear steps do: a stage ahead is out of reach, and its button disabled,
81728
82465
  * until every stage before it is `complete` or `optional`. Going back is always
81729
82466
  * allowed. `next()` and `previous()` move one stage either way, under the
81730
- * same rules, for your own buttons.
82467
+ * same rules, for your own buttons. `reset()` goes back to the first stage and
82468
+ * clears every stage's `complete`, as Ark UI's `resetStep` does.
82469
+ *
82470
+ * `completion="passed"` marks a stage `complete` once a reader moves past it,
82471
+ * as Ark UI counts a stage before the current one as completed. Going back
82472
+ * leaves it complete. In a `linear` sequence the next stage is then in reach
82473
+ * from the current one, and `validate` decides whether the reader may go.
81731
82474
  *
81732
82475
  * To check a stage before a reader moves on from it, set `validate` to a
81733
82476
  * function that answers whether the stage is valid, as Ark UI's `isStepValid`
@@ -81748,10 +82491,25 @@ export type CustomElementsSolidJs = {
81748
82491
  * current stage's button says `aria-current="step"`, and a finished stage's
81749
82492
  * button is described by its `complete-label`.
81750
82493
  *
82494
+ * **Keyboard.** Each stage's name is a button and its own tab stop, and Enter
82495
+ * or Space goes to the stage. Set `arrows` and the arrow keys move focus
82496
+ * between the names as well, as Ark UI's steps do: Left and Right along a row,
82497
+ * Up and Down a column, Home and End to the first and the last. The arrows
82498
+ * pass over a disabled stage and one a linear sequence holds out of reach,
82499
+ * and they move focus without going to the stage.
82500
+ *
81751
82501
  * ## Attributes & Properties
81752
82502
  *
81753
82503
  * Component attributes and properties that can be applied to the element or by using JavaScript.
81754
82504
  *
82505
+ * - `arrows`: Whether the arrow keys move focus between the stages' names, along the
82506
+ * way the steps run. Off by default, so the arrows keep scrolling the page.
82507
+ * - `completion`: What marks a stage `complete`.
82508
+ *
82509
+ * Absent, you do: each step's `complete` is yours, because a reader who
82510
+ * steps back has finished more stages than the one they are on. `passed`
82511
+ * marks every stage before the one a reader moves to, and leaves the marks
82512
+ * when they go back.
81755
82513
  * - `label`: The sequence's name, read by screen readers.
81756
82514
  *
81757
82515
  * A list of stages is a landmark a reader arrives at out of order, so it
@@ -81842,6 +82600,10 @@ export type CustomElementsSolidJs = {
81842
82600
  * does. Returns whether it moved: not past the last stage, not into a stage
81843
82601
  * `linear` holds out of reach, and not where a listener refused.
81844
82602
  * - `previous() => boolean`: Moves to the stage before, as Ark UI's `goToPrevStep` does. Returns whether it moved.
82603
+ * - `reset() => boolean`: Goes back to the first stage that can be gone to, and clears `complete`
82604
+ * and the invalid mark from every stage, as Ark UI's `resetStep` does.
82605
+ * Returns whether it moved: a listener can refuse the move with
82606
+ * `helix-before-activate`, and the stages then keep their marks.
81845
82607
  * - `requestActive(next: string) => boolean`: Requests a new current item, and returns whether the change was applied.
81846
82608
  *
81847
82609
  * Announces before it acts, so `preventDefault()` on the `helix-before-activate` is
@@ -81956,6 +82718,8 @@ export type CustomElementsSolidJs = {
81956
82718
  *
81957
82719
  * Methods that can be called to access component functionality.
81958
82720
  *
82721
+ * - `focus(options?: FocusOptions) => void`: Puts focus on the step's name, the control a reader presses, as a
82722
+ * `focus()` on a native control would.
81959
82723
  * - `select() => void`: Fires `helix-select` for the step, unless the step is `disabled` or a
81960
82724
  * linear sequence has it out of reach.
81961
82725
  *
@@ -81981,6 +82745,7 @@ export type CustomElementsSolidJs = {
81981
82745
  * These can be used to apply styling when a component is in a given state.
81982
82746
  *
81983
82747
  * - `invalid`: The sequence's `validate` last answered that this stage is not valid.
82748
+ * - `locked`: A `linear` sequence holds this stage out of reach until the stages before it are finished.
81984
82749
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
81985
82750
  */
81986
82751
  "helix-headless-step": Partial<
@@ -83039,6 +83804,16 @@ export type CustomElementsSolidJs = {
83039
83804
  * `active` says so, with `helix-activate`. Where the removed tab had focus,
83040
83805
  * focus moves to the tab now selected.
83041
83806
  *
83807
+ * **More tabs than fit.** With `scroll-controls`, a strip that scrolls shows a
83808
+ * button at each end it can scroll toward, as Web Awesome's tab group does,
83809
+ * and a press scrolls it most of its own length. The buttons are for the
83810
+ * pointer, so they are out of the tab order and hidden from screen readers;
83811
+ * the arrow keys already reach every tab, and the strip scrolls the selected
83812
+ * tab into view. A strip scrolls once a stylesheet gives the `tabs` part an
83813
+ * `overflow`, as the styled tier does.
83814
+ *
83815
+ * A tab with `dismissible` can be closed: see `Tabs.Tab`.
83816
+ *
83042
83817
  * The `indicator` part moves to the selected tab and carries its place and
83043
83818
  * size, so a mark of your own can be drawn there: style the part, or slot an
83044
83819
  * element into `indicator`, which sits inside the part and reads the same
@@ -83062,6 +83837,8 @@ export type CustomElementsSolidJs = {
83062
83837
  * panels and tells a screen reader the list is vertical.
83063
83838
  *
83064
83839
  * Optional, so the resting row writes no attribute onto the host.
83840
+ * - `scroll-controls`/`scrollControls`: Whether a strip with more tabs than fit shows a button at each end it can
83841
+ * scroll toward.
83065
83842
  * - `variant`: How the row of tabs is drawn.
83066
83843
  *
83067
83844
  * Unset is a raised pill on the selected tab with nothing behind the row,
@@ -83151,6 +83928,8 @@ export type CustomElementsSolidJs = {
83151
83928
  *
83152
83929
  * - `indicator`: The marker that moves to the selected tab. It carries the selected tab's place and size as `--indicator-x`, `--indicator-y`, `--indicator-inline-size` and `--indicator-block-size`, and `data-placed` once it has been placed, for a mark you draw and animate yourself.
83153
83930
  * - `panels`: The panel container.
83931
+ * - `scroll-end`: The button that scrolls the strip toward its end, shown under `scroll-controls` while there is more that way.
83932
+ * - `scroll-start`: The button that scrolls the strip toward its start, shown under `scroll-controls` while there is more that way.
83154
83933
  * - `tabs`: The tab list.
83155
83934
  *
83156
83935
  * ## CSS States
@@ -83174,14 +83953,27 @@ export type CustomElementsSolidJs = {
83174
83953
  * first, and canceling it keeps the browser from following, so a client-side
83175
83954
  * router follows it instead.
83176
83955
  *
83956
+ * With `dismissible`, the tab can be closed, as Web Awesome's closable tab
83957
+ * can: a press on its `dismiss` mark, or Delete or Backspace while the tab
83958
+ * has focus, sends `helix-dismiss`. The tab does not remove itself, because
83959
+ * your code owns the set, so remove the tab and its panel in your handler.
83960
+ * Focus moves to the tab beside it, and the tab set selects a tab that is
83961
+ * left.
83962
+ * The tab says the key through `aria-keyshortcuts`, and the mark is for the
83963
+ * pointer, hidden from screen readers.
83964
+ *
83177
83965
  * ## Attributes & Properties
83178
83966
  *
83179
83967
  * Component attributes and properties that can be applied to the element or by using JavaScript.
83180
83968
  *
83969
+ * - `dismiss-label`/`dismissLabel`: The tooltip on the mark that closes a `dismissible` tab. The mark is for
83970
+ * the pointer and hidden from screen readers, which hear the Delete key
83971
+ * through `aria-keyshortcuts`.
83181
83972
  * - `href`: The URL the tab links to. Setting it renders the tab as a link, for a set
83182
83973
  * of tabs that are pages of a site.
83183
83974
  * - `rel`: The link's `rel`, for a tab with an `href`.
83184
83975
  * - `target`: Where the link opens, such as `_blank`, for a tab with an `href`.
83976
+ * - `dismissible`: Whether the element shows a control that dismisses it.
83185
83977
  * - `disabled`: Whether the item is disabled and cannot be chosen.
83186
83978
  * - `selected`: Whether the item is selected.
83187
83979
  *
@@ -83215,6 +84007,7 @@ export type CustomElementsSolidJs = {
83215
84007
  *
83216
84008
  * Events that will be emitted by the component.
83217
84009
  *
84010
+ * - `helix-dismiss`: A `dismissible` tab was asked to close. The tab does not remove itself, so remove it and its panel in response. Cancelable.
83218
84011
  * - `helix-select`: Fired when the tab is chosen. Cancelable: canceling it stops the change and leaves the decision to you.
83219
84012
  *
83220
84013
  * ## Slots
@@ -83229,6 +84022,10 @@ export type CustomElementsSolidJs = {
83229
84022
  *
83230
84023
  * - `focus(options?: FocusOptions) => void`: Moves focus to the tab's control, the button or the link inside it, so a
83231
84024
  * script can focus the tab the way it focuses a native one.
84025
+ * - `dismiss() => boolean`: Sends `helix-dismiss` for a `dismissible` tab, and returns `false` where a
84026
+ * listener refused it, or where the tab is not dismissible or is disabled.
84027
+ * The tab stays where it is either way: removing it is yours. Where the tab
84028
+ * had focus, focus moves to the tab beside it once you remove it.
83232
84029
  * - `focusItem() => void`: Moves focus to the item's control, for the set's arrow keys.
83233
84030
  *
83234
84031
  * The set drives the keys and cannot reach the control itself, which is
@@ -83241,6 +84038,7 @@ export type CustomElementsSolidJs = {
83241
84038
  *
83242
84039
  * Custom selectors for styling elements within the component.
83243
84040
  *
84041
+ * - `dismiss`: The mark a pointer presses to close a `dismissible` tab.
83244
84042
  * - `tab`: The tab itself.
83245
84043
  *
83246
84044
  * ## CSS States
@@ -83268,8 +84066,12 @@ export type CustomElementsSolidJs = {
83268
84066
  * `selection-mode` lets a reader select tags, with Space, Enter or a press:
83269
84067
  * `single` selects one at a time and `multiple` any number. In `multiple`,
83270
84068
  * Shift with an arrow, Home or End selects the range from the tag last
83271
- * pressed to the tag focus moves to, and Control or Command with A selects
83272
- * every tag that is not disabled. `value` holds the
84069
+ * pressed to the tag focus moves to, Shift with a press or Space selects the
84070
+ * range to that tag, and Control or Command with A selects every tag that is
84071
+ * not disabled. `selection-behavior="replace"` selects the tag a reader
84072
+ * presses or moves to alone, as a file list does, and Control or Command
84073
+ * with a press or Space adds or takes out one tag. `disallow-empty-selection`
84074
+ * keeps one tag selected once one is. `value` holds the
83273
84075
  * selected tags' values, separated by commas, and a change asks with
83274
84076
  * `helix-before-change` and tells with `change`. Enter on a tag with an
83275
84077
  * `href` follows its link. A `disabled` tag is passed over. A selected tag
@@ -83291,10 +84093,19 @@ export type CustomElementsSolidJs = {
83291
84093
  *
83292
84094
  * Component attributes and properties that can be applied to the element or by using JavaScript.
83293
84095
  *
84096
+ * - `disallow-empty-selection`/`disallowEmptySelection`: Keeps at least one tag selected once one is, as React Aria's
84097
+ * `disallowEmptySelection`: a press or a key that would leave none selected
84098
+ * is refused. Removing the last selected tag still takes it out of `value`.
83294
84099
  * - `empty-label`/`emptyLabel`: The words the group shows and says once its last tag is removed, where
83295
84100
  * nothing is in the `empty` slot.
83296
84101
  * - `label`: The name of the set, such as "Filters", which a screen reader announces
83297
84102
  * before its tags.
84103
+ * - `selection-behavior`/`selectionBehavior`: What a press, Space, or a move does to the tags already selected.
84104
+ * `toggle`, the default, keeps them: a press adds or takes out the tag, and
84105
+ * the arrow keys move focus alone. `replace` selects the tag alone, as a
84106
+ * file list does, and the arrow keys carry the selection with focus.
84107
+ * Control or Command with a press or Space adds or takes out one tag in
84108
+ * `multiple`, and with an arrow moves focus without selecting.
83298
84109
  * - `selection-mode`/`selectionMode`: How many tags a reader can select: `single`, `multiple`, or none.
83299
84110
  *
83300
84111
  * Absent selects nothing, and the tags carry no selected state at all.
@@ -85416,6 +86227,8 @@ export type CustomElementsSolidJs = {
85416
86227
  * Areas where markup can be added to the component.
85417
86228
  *
85418
86229
  * - `(default)`: The item's label.
86230
+ * - `end`: Content after the label, such as a count or a shortcut.
86231
+ * - `start`: Content before the label, such as an icon.
85419
86232
  *
85420
86233
  * ## Methods
85421
86234
  *
@@ -86403,6 +87216,13 @@ export type CustomElementsSolidJs = {
86403
87216
  * or open, and the tree's one tab stop stays on the item last reached. In a
86404
87217
  * tree of check marks, Control+A (Command+A on an Apple keyboard) checks every
86405
87218
  * item or clears them all, and Shift with Up or Down Arrow moves and checks.
87219
+ * Shift+Space checks every item from the one last checked to the focused one,
87220
+ * and Control+Shift+Home or End checks every item from the focused one to the
87221
+ * first or the last, then moves there, as the tree pattern's range keys do.
87222
+ *
87223
+ * A tree with no name of its own is announced as "Tree", which says nothing
87224
+ * about what it holds, so a development build warns once with the kind
87225
+ * `missing-name` where neither `label` nor an `aria-label` names it.
86406
87226
  *
86407
87227
  * Removing the item that has focus moves focus to the item after it among its
86408
87228
  * siblings, or the one before, or its parent, so focus stays in the tree.
@@ -86418,7 +87238,15 @@ export type CustomElementsSolidJs = {
86418
87238
  * `helix-before-reorder`, which you can refuse, and then `helix-reorder`, whose
86419
87239
  * `keys` hold the siblings in the new order. **You move the items**: the tree
86420
87240
  * moves no element of yours, and focus follows the moved item once you have.
86421
- * Moving an item into another branch is not part of this.
87241
+ *
87242
+ * **Alt with the arrow along the line moves an item into another branch.**
87243
+ * Alt with the arrow that opens a branch (Right on a left-to-right page) puts
87244
+ * the focused item last inside the item before it, and opens that item; Alt
87245
+ * with the other arrow puts it after its parent, a level out. The same
87246
+ * `helix-before-reorder` and `helix-reorder` are sent, with `parent` naming
87247
+ * the branch it moves into by its key, `''` for the top level, and `keys`
87248
+ * holding that branch's items in their new order. The tree says the move with
87249
+ * `moved-into-label`.
86422
87250
  *
86423
87251
  * ## Attributes & Properties
86424
87252
  *
@@ -86431,6 +87259,11 @@ export type CustomElementsSolidJs = {
86431
87259
  *
86432
87260
  * An `aria-label` or `aria-labelledby` on the host names the tree too, and
86433
87261
  * wins over this.
87262
+ * - `moved-into-label`/`movedIntoLabel`: What screen readers hear when an item moves into another branch, in a
87263
+ * `reorderable` tree. `{name}` is the item's words, `{parent}` the words of
87264
+ * the branch it moved into, or the tree's `label` for the top level,
87265
+ * `{position}` its place there, counting from 1, and `{count}` the number of
87266
+ * items there.
86434
87267
  * - `moved-label`/`movedLabel`: What screen readers hear each time an item moves, in a `reorderable`
86435
87268
  * tree. `{name}` is the item's words, `{position}` its place among its
86436
87269
  * siblings, counting from 1, and `{count}` the number of siblings.
@@ -87827,7 +88660,7 @@ export type CustomCssProperties = {
87827
88660
  "--scroll-area-scroll-fraction"?: (string) | undefined;
87828
88661
  /** The share of the track the thumb covers, from 0 to 1, which is how much of the content is in view. Written on each `scrollbar` part. */
87829
88662
  "--scroll-area-thumb-fraction"?: (string) | undefined;
87830
- /** Where a bubble's thumb is, as a fraction of the track, 0 to 1. Set on each `tooltip` part. */
88663
+ /** 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. */
87831
88664
  "--slider-at"?: (string) | undefined;
87832
88665
  /** The value as a fraction of the range, 0 to 1. */
87833
88666
  "--slider-fraction"?: (string) | undefined;