@fusion.dev/helix-headless 0.153.0 → 0.155.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. package/custom-elements.json +1885 -140
  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/badge/root/badge-root.d.ts +15 -2
  7. package/dist/badge/root/badge-root.js +20 -3
  8. package/dist/breadcrumbs/breadcrumb/breadcrumb.d.ts +36 -3
  9. package/dist/breadcrumbs/breadcrumb/breadcrumb.js +42 -2
  10. package/dist/breadcrumbs/root/breadcrumbs-root.d.ts +15 -5
  11. package/dist/breadcrumbs/root/breadcrumbs-root.js +29 -4
  12. package/dist/button-group/root/button-group-root.d.ts +2 -0
  13. package/dist/button-group/root/button-group-root.js +1 -0
  14. package/dist/card/root/card-root.d.ts +31 -11
  15. package/dist/card/root/card-root.js +25 -11
  16. package/dist/code/root/code-root.d.ts +7 -0
  17. package/dist/code/root/code-root.js +1 -1
  18. package/dist/code-block/root/code-block-root.d.ts +37 -1
  19. package/dist/code-block/root/code-block-root.js +38 -5
  20. package/dist/color-input/root/color-input-root.d.ts +9 -3
  21. package/dist/color-input/root/color-input-root.js +3 -1
  22. package/dist/color-picker/channels.d.ts +5 -3
  23. package/dist/color-picker/channels.js +79 -21
  24. package/dist/color-picker/root/color-picker-root.d.ts +58 -5
  25. package/dist/color-picker/root/color-picker-root.js +75 -13
  26. package/dist/date-input/root/date-input-root.d.ts +1 -0
  27. package/dist/date-input/root/date-input-root.js +2 -1
  28. package/dist/date-picker/root/date-picker-root.d.ts +43 -13
  29. package/dist/date-picker/root/date-picker-root.js +54 -31
  30. package/dist/element-events.generated.js +2 -1
  31. package/dist/empty/root/empty-root.d.ts +19 -1
  32. package/dist/empty/root/empty-root.js +13 -4
  33. package/dist/icon/fetch.d.ts +20 -0
  34. package/dist/icon/fetch.js +70 -0
  35. package/dist/icon/root/icon-root.d.ts +27 -5
  36. package/dist/icon/root/icon-root.js +41 -17
  37. package/dist/navigation/root/navigation-root.d.ts +26 -0
  38. package/dist/navigation/root/navigation-root.js +58 -1
  39. package/dist/quote/root/quote-root.d.ts +17 -1
  40. package/dist/quote/root/quote-root.js +15 -2
  41. package/dist/select/root/select-root.d.ts +29 -3
  42. package/dist/select/root/select-root.js +34 -9
  43. package/dist/skeleton/root/skeleton-root.d.ts +7 -0
  44. package/dist/skeleton/root/skeleton-root.js +4 -1
  45. package/dist/slider/root/slider-root.d.ts +71 -9
  46. package/dist/slider/root/slider-root.js +129 -42
  47. package/dist/speed-dial/item/speed-dial-item.d.ts +29 -1
  48. package/dist/speed-dial/item/speed-dial-item.js +48 -7
  49. package/dist/speed-dial/root/speed-dial-root.d.ts +32 -6
  50. package/dist/speed-dial/root/speed-dial-root.js +50 -5
  51. package/dist/splitter/root/splitter-root.d.ts +22 -0
  52. package/dist/splitter/root/splitter-root.js +36 -7
  53. package/dist/stat/group/stat-group.d.ts +23 -4
  54. package/dist/stat/group/stat-group.js +13 -1
  55. package/dist/stat/root/stat-root.d.ts +46 -1
  56. package/dist/stat/root/stat-root.js +29 -5
  57. package/dist/steps/reach.d.ts +5 -1
  58. package/dist/steps/reach.js +2 -2
  59. package/dist/steps/root/steps-root.d.ts +37 -2
  60. package/dist/steps/root/steps-root.js +49 -7
  61. package/dist/steps/step/step.d.ts +6 -0
  62. package/dist/steps/step/step.js +4 -0
  63. package/dist/tabs/root/tabs-root.d.ts +37 -0
  64. package/dist/tabs/root/tabs-root.js +92 -2
  65. package/dist/tabs/tab/tab.d.ts +38 -2
  66. package/dist/tabs/tab/tab.js +45 -4
  67. package/dist/tag/group/tag-group.d.ts +29 -3
  68. package/dist/tag/group/tag-group.js +42 -11
  69. package/dist/toggle/root/toggle-root.d.ts +2 -0
  70. package/dist/toggle/root/toggle-root.js +1 -1
  71. package/dist/tree/item/tree-item.d.ts +10 -0
  72. package/dist/tree/item/tree-item.js +12 -0
  73. package/dist/tree/root/tree-root.d.ts +40 -1
  74. package/dist/tree/root/tree-root.js +120 -4
  75. package/dist/tree/selection.d.ts +6 -0
  76. package/dist/tree/selection.js +11 -0
  77. package/lint.json +1 -1
  78. package/package.json +5 -5
  79. package/types/jsx.d.ts +1412 -207
  80. package/types/vue.d.ts +294 -65
  81. package/types/words.d.ts +49 -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;
@@ -4130,12 +4148,6 @@ twice what this says once.
4130
4148
  Reflected and undefaulted, so a card that has not asked reads as a card
4131
4149
  with no attribute on it and the stylesheet only describes the departure. */
4132
4150
  mediaPlacement?: (HelixHeadlessCard["mediaPlacement"]) | undefined;
4133
- /** */
4134
- "aria-labelledby"?: unknown;
4135
- /** */
4136
- undefined?: unknown;
4137
- /** */
4138
- "aria-label"?: unknown;
4139
4151
  };
4140
4152
 
4141
4153
  export type HelixHeadlessCardSolidJsProps = {
@@ -4169,12 +4181,6 @@ twice what this says once.
4169
4181
  Reflected and undefaulted, so a card that has not asked reads as a card
4170
4182
  with no attribute on it and the stylesheet only describes the departure. */
4171
4183
  "prop:mediaPlacement"?: (HelixHeadlessCard["mediaPlacement"]) | undefined;
4172
- /** */
4173
- "attr:aria-labelledby"?: unknown;
4174
- /** */
4175
- "prop:undefined"?: unknown;
4176
- /** */
4177
- "attr:aria-label"?: unknown;
4178
4184
 
4179
4185
  /** Set the innerHTML of the element */
4180
4186
  innerHTML?: (string) | undefined;
@@ -5764,6 +5770,22 @@ Here rather than on each control. */
5764
5770
  };
5765
5771
 
5766
5772
  export type HelixHeadlessCodeBlockProps = {
5773
+ /** The name of a block that scrolls, which is a tab stop while it does.
5774
+
5775
+ Where the block has a name, the scroller says it too, such as "Code,
5776
+ app.ts", as `code-name-label` puts it. */
5777
+ "code-label"?: (HelixHeadlessCodeBlock["codeLabel"]) | undefined;
5778
+ /** The name of a block that scrolls, which is a tab stop while it does.
5779
+
5780
+ Where the block has a name, the scroller says it too, such as "Code,
5781
+ app.ts", as `code-name-label` puts it. */
5782
+ codeLabel?: (HelixHeadlessCodeBlock["codeLabel"]) | undefined;
5783
+ /** The name of a block that scrolls, where the block has a name. `{code}` is
5784
+ `code-label` and `{name}` the block's name. */
5785
+ "code-name-label"?: (HelixHeadlessCodeBlock["codeNameLabel"]) | undefined;
5786
+ /** The name of a block that scrolls, where the block has a name. `{code}` is
5787
+ `code-label` and `{name}` the block's name. */
5788
+ codeNameLabel?: (HelixHeadlessCodeBlock["codeNameLabel"]) | undefined;
5767
5789
  /** The expand button's words while the block shows every line. */
5768
5790
  "collapse-label"?: (HelixHeadlessCodeBlock["collapseLabel"]) | undefined;
5769
5791
  /** The expand button's words while the block shows every line. */
@@ -5904,6 +5926,22 @@ read, nor for a diff. */
5904
5926
  };
5905
5927
 
5906
5928
  export type HelixHeadlessCodeBlockSolidJsProps = {
5929
+ /** The name of a block that scrolls, which is a tab stop while it does.
5930
+
5931
+ Where the block has a name, the scroller says it too, such as "Code,
5932
+ app.ts", as `code-name-label` puts it. */
5933
+ "attr:code-label"?: (HelixHeadlessCodeBlock["codeLabel"]) | undefined;
5934
+ /** The name of a block that scrolls, which is a tab stop while it does.
5935
+
5936
+ Where the block has a name, the scroller says it too, such as "Code,
5937
+ app.ts", as `code-name-label` puts it. */
5938
+ "prop:codeLabel"?: (HelixHeadlessCodeBlock["codeLabel"]) | undefined;
5939
+ /** The name of a block that scrolls, where the block has a name. `{code}` is
5940
+ `code-label` and `{name}` the block's name. */
5941
+ "attr:code-name-label"?: (HelixHeadlessCodeBlock["codeNameLabel"]) | undefined;
5942
+ /** The name of a block that scrolls, where the block has a name. `{code}` is
5943
+ `code-label` and `{name}` the block's name. */
5944
+ "prop:codeNameLabel"?: (HelixHeadlessCodeBlock["codeNameLabel"]) | undefined;
5907
5945
  /** The expand button's words while the block shows every line. */
5908
5946
  "attr:collapse-label"?: (HelixHeadlessCodeBlock["collapseLabel"]) | undefined;
5909
5947
  /** The expand button's words while the block shows every line. */
@@ -6105,7 +6143,8 @@ Passed to the panel, whose square, hue ramp and presets say the color's
6105
6143
  name, and read by the swatch in `swatch`, which says it before the value.
6106
6144
  Color Picker lists the keys. */
6107
6145
  colorWords?: (HelixHeadlessColorInput["colorWords"]) | undefined;
6108
- /** 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`.
6109
6148
 
6110
6149
  **Undefaulted, because it reflects.** The two together stamp an attribute
6111
6150
  onto every host anybody renders, including the ones nobody configured: the
@@ -6325,7 +6364,8 @@ Passed to the panel, whose square, hue ramp and presets say the color's
6325
6364
  name, and read by the swatch in `swatch`, which says it before the value.
6326
6365
  Color Picker lists the keys. */
6327
6366
  "prop:colorWords"?: (HelixHeadlessColorInput["colorWords"]) | undefined;
6328
- /** 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`.
6329
6369
 
6330
6370
  **Undefaulted, because it reflects.** The two together stamp an attribute
6331
6371
  onto every host anybody renders, including the ones nobody configured: the
@@ -6570,8 +6610,9 @@ language hears its own rather than English between its own labels. */
6570
6610
  brightnessLabel?: (HelixHeadlessColorPicker["brightnessLabel"]) | undefined;
6571
6611
  /** Whether the picker shows a number field for each channel of the color, as
6572
6612
  React Aria's ColorField does with `channel`: red, green and blue for hex
6573
- and rgb, hue, saturation and lightness for hsl, and the opacity with
6574
- `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`.
6575
6616
 
6576
6617
  For a reader who has the numbers from a brand guide, and for a keyboard,
6577
6618
  where typing 128 is quicker than holding an arrow key. The fields follow
@@ -6579,13 +6620,20 @@ the syntax the format toggle sets. */
6579
6620
  "channel-fields"?: (HelixHeadlessColorPicker["channelFields"]) | undefined;
6580
6621
  /** Whether the picker shows a number field for each channel of the color, as
6581
6622
  React Aria's ColorField does with `channel`: red, green and blue for hex
6582
- and rgb, hue, saturation and lightness for hsl, and the opacity with
6583
- `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`.
6584
6626
 
6585
6627
  For a reader who has the numbers from a brand guide, and for a keyboard,
6586
6628
  where typing 128 is quicker than holding an arrow key. The fields follow
6587
6629
  the syntax the format toggle sets. */
6588
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;
6589
6637
  /** The words a color's name is spoken in, as JSON keyed by their English,
6590
6638
  such as `{"red": "rot", "vibrant": "kräftiges"}`.
6591
6639
 
@@ -6626,10 +6674,16 @@ the color. */
6626
6674
  "eyedropper-label"?: (HelixHeadlessColorPicker["eyedropperLabel"]) | undefined;
6627
6675
  /** What the eyedropper is called. */
6628
6676
  eyedropperLabel?: (HelixHeadlessColorPicker["eyedropperLabel"]) | undefined;
6629
- /** 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`.
6630
6679
 
6631
6680
  Only what is written. Everything is read whatever this says, so a picker on
6632
- `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. */
6633
6687
  format?: (HelixHeadlessColorPicker["format"]) | undefined;
6634
6688
  /** What the syntax toggle is called, with `{format}` filled in. */
6635
6689
  "format-label"?: (HelixHeadlessColorPicker["formatLabel"]) | undefined;
@@ -6639,15 +6693,21 @@ Only what is written. Everything is read whatever this says, so a picker on
6639
6693
  "green-label"?: (HelixHeadlessColorPicker["greenLabel"]) | undefined;
6640
6694
  /** What the green channel's field is called, in `channel-fields`. */
6641
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;
6642
6699
  /** What the hue channel is called. */
6643
6700
  "hue-label"?: (HelixHeadlessColorPicker["hueLabel"]) | undefined;
6644
6701
  /** What the hue channel is called. */
6645
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;
6646
6706
  /** What the lightness channel's field is called, in `channel-fields` with
6647
- hsl. */
6707
+ hsl and oklch. */
6648
6708
  "lightness-label"?: (HelixHeadlessColorPicker["lightnessLabel"]) | undefined;
6649
6709
  /** What the lightness channel's field is called, in `channel-fields` with
6650
- hsl. */
6710
+ hsl and oklch. */
6651
6711
  lightnessLabel?: (HelixHeadlessColorPicker["lightnessLabel"]) | undefined;
6652
6712
  /** Hides the eyedropper. Without it, the eyedropper appears in browsers that
6653
6713
  support one. */
@@ -6930,8 +6990,9 @@ language hears its own rather than English between its own labels. */
6930
6990
  "prop:brightnessLabel"?: (HelixHeadlessColorPicker["brightnessLabel"]) | undefined;
6931
6991
  /** Whether the picker shows a number field for each channel of the color, as
6932
6992
  React Aria's ColorField does with `channel`: red, green and blue for hex
6933
- and rgb, hue, saturation and lightness for hsl, and the opacity with
6934
- `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`.
6935
6996
 
6936
6997
  For a reader who has the numbers from a brand guide, and for a keyboard,
6937
6998
  where typing 128 is quicker than holding an arrow key. The fields follow
@@ -6939,13 +7000,20 @@ the syntax the format toggle sets. */
6939
7000
  "bool:channel-fields"?: (HelixHeadlessColorPicker["channelFields"]) | undefined;
6940
7001
  /** Whether the picker shows a number field for each channel of the color, as
6941
7002
  React Aria's ColorField does with `channel`: red, green and blue for hex
6942
- and rgb, hue, saturation and lightness for hsl, and the opacity with
6943
- `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`.
6944
7006
 
6945
7007
  For a reader who has the numbers from a brand guide, and for a keyboard,
6946
7008
  where typing 128 is quicker than holding an arrow key. The fields follow
6947
7009
  the syntax the format toggle sets. */
6948
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;
6949
7017
  /** The words a color's name is spoken in, as JSON keyed by their English,
6950
7018
  such as `{"red": "rot", "vibrant": "kräftiges"}`.
6951
7019
 
@@ -6986,10 +7054,16 @@ the color. */
6986
7054
  "attr:eyedropper-label"?: (HelixHeadlessColorPicker["eyedropperLabel"]) | undefined;
6987
7055
  /** What the eyedropper is called. */
6988
7056
  "prop:eyedropperLabel"?: (HelixHeadlessColorPicker["eyedropperLabel"]) | undefined;
6989
- /** 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`.
6990
7059
 
6991
7060
  Only what is written. Everything is read whatever this says, so a picker on
6992
- `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. */
6993
7067
  "prop:format"?: (HelixHeadlessColorPicker["format"]) | undefined;
6994
7068
  /** What the syntax toggle is called, with `{format}` filled in. */
6995
7069
  "attr:format-label"?: (HelixHeadlessColorPicker["formatLabel"]) | undefined;
@@ -6999,15 +7073,21 @@ Only what is written. Everything is read whatever this says, so a picker on
6999
7073
  "attr:green-label"?: (HelixHeadlessColorPicker["greenLabel"]) | undefined;
7000
7074
  /** What the green channel's field is called, in `channel-fields`. */
7001
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;
7002
7079
  /** What the hue channel is called. */
7003
7080
  "attr:hue-label"?: (HelixHeadlessColorPicker["hueLabel"]) | undefined;
7004
7081
  /** What the hue channel is called. */
7005
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;
7006
7086
  /** What the lightness channel's field is called, in `channel-fields` with
7007
- hsl. */
7087
+ hsl and oklch. */
7008
7088
  "attr:lightness-label"?: (HelixHeadlessColorPicker["lightnessLabel"]) | undefined;
7009
7089
  /** What the lightness channel's field is called, in `channel-fields` with
7010
- hsl. */
7090
+ hsl and oklch. */
7011
7091
  "prop:lightnessLabel"?: (HelixHeadlessColorPicker["lightnessLabel"]) | undefined;
7012
7092
  /** Hides the eyedropper. Without it, the eyedropper appears in browsers that
7013
7093
  support one. */
@@ -10239,15 +10319,22 @@ speaks it. Unset is the sentence registered for the page's language, then
10239
10319
  the English. `{mode}` is `single`, `range` or `multiple`, so each can have
10240
10320
  its own sentence. */
10241
10321
  badInputMessage?: (HelixHeadlessDatePicker["badInputMessage"]) | undefined;
10242
- /** The calendar the heading, the days, and the months are written in:
10243
- `gregory`, `buddhist`, `japanese`, `roc`, or `iso8601`, the five whose
10244
- months are the Gregorian months.
10245
-
10246
- Absent is the locale's own where it is one of the five, such as
10247
- `buddhist` for `th-TH` or `japanese` for `ja-JP-u-ca-japanese`, and
10248
- `gregory` for every other, such as `persian` for `fa-IR`, so the heading
10249
- names the Gregorian month the grid shows. The value is `YYYY-MM-DD` in
10250
- 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. */
10251
10338
  calendar?: (HelixHeadlessDatePicker["calendar"]) | undefined;
10252
10339
  /** The month to open on when `month` is not set. */
10253
10340
  "default-month"?: (HelixHeadlessDatePicker["defaultMonth"]) | undefined;
@@ -10306,8 +10393,9 @@ its days. */
10306
10393
  min?: (HelixHeadlessDatePicker["min"]) | undefined;
10307
10394
  /** How many dates can be held at once. */
10308
10395
  mode?: (HelixHeadlessDatePicker["mode"]) | undefined;
10309
- /** The month shown, as `YYYY-MM`. When it is not set, it follows `value`,
10310
- 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.
10311
10399
 
10312
10400
  Separate from `value` on purpose, so paging selects nothing and a consumer
10313
10401
  can drive the view. Reading gives the month on show; writing sets it, and
@@ -10409,6 +10497,22 @@ date including the one already chosen. */
10409
10497
  "step-mismatch-message"?: (HelixHeadlessDatePicker["stepMismatchMessage"]) | undefined;
10410
10498
  /** The validation message for a date that `step` skips. */
10411
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;
10412
10516
  /** The validation message for a date that `disable-dates` or `disable-days`
10413
10517
  bars. */
10414
10518
  "unavailable-message"?: (HelixHeadlessDatePicker["unavailableMessage"]) | undefined;
@@ -10548,15 +10652,22 @@ speaks it. Unset is the sentence registered for the page's language, then
10548
10652
  the English. `{mode}` is `single`, `range` or `multiple`, so each can have
10549
10653
  its own sentence. */
10550
10654
  "prop:badInputMessage"?: (HelixHeadlessDatePicker["badInputMessage"]) | undefined;
10551
- /** The calendar the heading, the days, and the months are written in:
10552
- `gregory`, `buddhist`, `japanese`, `roc`, or `iso8601`, the five whose
10553
- months are the Gregorian months.
10554
-
10555
- Absent is the locale's own where it is one of the five, such as
10556
- `buddhist` for `th-TH` or `japanese` for `ja-JP-u-ca-japanese`, and
10557
- `gregory` for every other, such as `persian` for `fa-IR`, so the heading
10558
- names the Gregorian month the grid shows. The value is `YYYY-MM-DD` in
10559
- 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. */
10560
10671
  "prop:calendar"?: (HelixHeadlessDatePicker["calendar"]) | undefined;
10561
10672
  /** The month to open on when `month` is not set. */
10562
10673
  "attr:default-month"?: (HelixHeadlessDatePicker["defaultMonth"]) | undefined;
@@ -10615,8 +10726,9 @@ its days. */
10615
10726
  "prop:min"?: (HelixHeadlessDatePicker["min"]) | undefined;
10616
10727
  /** How many dates can be held at once. */
10617
10728
  "prop:mode"?: (HelixHeadlessDatePicker["mode"]) | undefined;
10618
- /** The month shown, as `YYYY-MM`. When it is not set, it follows `value`,
10619
- 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.
10620
10732
 
10621
10733
  Separate from `value` on purpose, so paging selects nothing and a consumer
10622
10734
  can drive the view. Reading gives the month on show; writing sets it, and
@@ -10718,6 +10830,22 @@ date including the one already chosen. */
10718
10830
  "attr:step-mismatch-message"?: (HelixHeadlessDatePicker["stepMismatchMessage"]) | undefined;
10719
10831
  /** The validation message for a date that `step` skips. */
10720
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;
10721
10849
  /** The validation message for a date that `disable-dates` or `disable-days`
10722
10850
  bars. */
10723
10851
  "attr:unavailable-message"?: (HelixHeadlessDatePicker["unavailableMessage"]) | undefined;
@@ -14751,6 +14879,11 @@ the value instead.
14751
14879
  A name written `prefix:name` asks the library registered under that
14752
14880
  prefix. */
14753
14881
  name?: (HelixHeadlessIcon["name"]) | undefined;
14882
+ /** The URL of an SVG file to draw, fetched once a page and drawn in
14883
+ `currentColor` where the file does not color its shapes.
14884
+
14885
+ Wins over `name`; `icon` wins over both. Absent draws `name`. */
14886
+ src?: (HelixHeadlessIcon["src"]) | undefined;
14754
14887
  /** The icon to draw, as an object you import.
14755
14888
 
14756
14889
  **The scalable door, and the one this library uses internally.** An icon is
@@ -14765,9 +14898,9 @@ frameworks set properties and plain markup cannot, which is what `name` is
14765
14898
  for. Set both and this wins, the value being the more specific statement. */
14766
14899
  icon?: (HelixHeadlessIcon["icon"]) | undefined;
14767
14900
 
14768
- /** `name` matches no registered icon and no library answers it, so nothing is drawn. */
14901
+ /** `name` matches no registered icon and no library answers it, or `src` is no SVG, so nothing is drawn. */
14769
14902
  onerror?: ((e: HelixHeadlessIconElementEvent) => void) | undefined;
14770
- /** A glyph a library gave later for `name` is drawn. */
14903
+ /** A glyph a library gave later for `name`, or the file at `src`, is drawn. */
14771
14904
  onload?: ((e: HelixHeadlessIconElementEvent) => void) | undefined;
14772
14905
  };
14773
14906
 
@@ -14795,6 +14928,11 @@ the value instead.
14795
14928
  A name written `prefix:name` asks the library registered under that
14796
14929
  prefix. */
14797
14930
  "prop:name"?: (HelixHeadlessIcon["name"]) | undefined;
14931
+ /** The URL of an SVG file to draw, fetched once a page and drawn in
14932
+ `currentColor` where the file does not color its shapes.
14933
+
14934
+ Wins over `name`; `icon` wins over both. Absent draws `name`. */
14935
+ "prop:src"?: (HelixHeadlessIcon["src"]) | undefined;
14798
14936
  /** The icon to draw, as an object you import.
14799
14937
 
14800
14938
  **The scalable door, and the one this library uses internally.** An icon is
@@ -14808,9 +14946,9 @@ consumer's own drawings.
14808
14946
  frameworks set properties and plain markup cannot, which is what `name` is
14809
14947
  for. Set both and this wins, the value being the more specific statement. */
14810
14948
  "prop:icon"?: (HelixHeadlessIcon["icon"]) | undefined;
14811
- /** `name` matches no registered icon and no library answers it, so nothing is drawn. */
14949
+ /** `name` matches no registered icon and no library answers it, or `src` is no SVG, so nothing is drawn. */
14812
14950
  "on:error"?: ((e: HelixHeadlessIconElementEvent) => void) | undefined;
14813
- /** A glyph a library gave later for `name` is drawn. */
14951
+ /** A glyph a library gave later for `name`, or the file at `src`, is drawn. */
14814
14952
  "on:load"?: ((e: HelixHeadlessIconElementEvent) => void) | undefined;
14815
14953
 
14816
14954
  /** Set the innerHTML of the element */
@@ -23052,11 +23190,39 @@ which is what makes it read as dots rather than as a softened square code. */
23052
23190
  export type HelixHeadlessQuoteProps = {
23053
23191
  /** URL identifying where the quotation came from. */
23054
23192
  cite?: (HelixHeadlessQuote["cite"]) | undefined;
23193
+ /** Whether to leave the quotation marks off, for a quotation set where the
23194
+ page draws its own.
23195
+
23196
+ Negative, because the marks are on by default and a boolean attribute is
23197
+ true whenever it is present. Reflected, because a stylesheet takes the
23198
+ marks off on it. */
23199
+ "no-marks"?: (HelixHeadlessQuote["noMarks"]) | undefined;
23200
+ /** Whether to leave the quotation marks off, for a quotation set where the
23201
+ page draws its own.
23202
+
23203
+ Negative, because the marks are on by default and a boolean attribute is
23204
+ true whenever it is present. Reflected, because a stylesheet takes the
23205
+ marks off on it. */
23206
+ noMarks?: (HelixHeadlessQuote["noMarks"]) | undefined;
23055
23207
  };
23056
23208
 
23057
23209
  export type HelixHeadlessQuoteSolidJsProps = {
23058
23210
  /** URL identifying where the quotation came from. */
23059
23211
  "prop:cite"?: (HelixHeadlessQuote["cite"]) | undefined;
23212
+ /** Whether to leave the quotation marks off, for a quotation set where the
23213
+ page draws its own.
23214
+
23215
+ Negative, because the marks are on by default and a boolean attribute is
23216
+ true whenever it is present. Reflected, because a stylesheet takes the
23217
+ marks off on it. */
23218
+ "bool:no-marks"?: (HelixHeadlessQuote["noMarks"]) | undefined;
23219
+ /** Whether to leave the quotation marks off, for a quotation set where the
23220
+ page draws its own.
23221
+
23222
+ Negative, because the marks are on by default and a boolean attribute is
23223
+ true whenever it is present. Reflected, because a stylesheet takes the
23224
+ marks off on it. */
23225
+ "prop:noMarks"?: (HelixHeadlessQuote["noMarks"]) | undefined;
23060
23226
 
23061
23227
  /** Set the innerHTML of the element */
23062
23228
  innerHTML?: (string) | undefined;
@@ -24418,6 +24584,18 @@ the stop moves on the trigger inside the shadow root, as Button's does.
24418
24584
  No attribute, because it is coordination between elements rather than
24419
24585
  anything a consumer sets. */
24420
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;
24421
24599
  /** What the trigger shows for the chosen options: a function given them, in
24422
24600
  the order they appear, that returns text, an element or a Lit template.
24423
24601
 
@@ -24611,6 +24789,18 @@ the stop moves on the trigger inside the shadow root, as Button's does.
24611
24789
  No attribute, because it is coordination between elements rather than
24612
24790
  anything a consumer sets. */
24613
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;
24614
24804
  /** What the trigger shows for the chosen options: a function given them, in
24615
24805
  the order they appear, that returns text, an element or a Lit template.
24616
24806
 
@@ -24820,9 +25010,11 @@ between its thumbs and ignores it. */
24820
25010
  origin?: (HelixHeadlessSlider["origin"]) | undefined;
24821
25011
  /** Adds a second thumb, so the value is a pair.
24822
25012
 
24823
- The pair is one string, `"10,50"`, which is what a form submits and what
24824
- `MixinControllerValue` already holds. `valueAsNumber` reads the lower of
24825
- 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. */
24826
25018
  range?: (HelixHeadlessSlider["range"]) | undefined;
24827
25019
  /** How the readout joins a range's two values, with `{start}` and `{end}`
24828
25020
  filled in. Write it in the page's language, such as `{start} bis {end}`. */
@@ -24830,12 +25022,34 @@ filled in. Write it in the page's language, such as `{start} bis {end}`. */
24830
25022
  /** How the readout joins a range's two values, with `{start}` and `{end}`
24831
25023
  filled in. Write it in the page's language, such as `{start} bis {end}`. */
24832
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;
24833
25039
  /** Shows the chosen value beside the track. */
24834
25040
  "show-value"?: (HelixHeadlessSlider["showValue"]) | undefined;
24835
25041
  /** Shows the chosen value beside the track. */
24836
25042
  showValue?: (HelixHeadlessSlider["showValue"]) | undefined;
24837
25043
  /** How far one press of an arrow key moves the thumb. */
24838
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;
24839
25053
  /** Whether each thumb shows its value in a bubble beside it, as Web
24840
25054
  Awesome's `with-tooltip`. The styled slider shows the bubbles while the
24841
25055
  slider is under the pointer or holds focus. They repeat what each thumb
@@ -25024,9 +25238,11 @@ between its thumbs and ignores it. */
25024
25238
  "prop:origin"?: (HelixHeadlessSlider["origin"]) | undefined;
25025
25239
  /** Adds a second thumb, so the value is a pair.
25026
25240
 
25027
- The pair is one string, `"10,50"`, which is what a form submits and what
25028
- `MixinControllerValue` already holds. `valueAsNumber` reads the lower of
25029
- 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. */
25030
25246
  "prop:range"?: (HelixHeadlessSlider["range"]) | undefined;
25031
25247
  /** How the readout joins a range's two values, with `{start}` and `{end}`
25032
25248
  filled in. Write it in the page's language, such as `{start} bis {end}`. */
@@ -25034,12 +25250,34 @@ filled in. Write it in the page's language, such as `{start} bis {end}`. */
25034
25250
  /** How the readout joins a range's two values, with `{start}` and `{end}`
25035
25251
  filled in. Write it in the page's language, such as `{start} bis {end}`. */
25036
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;
25037
25267
  /** Shows the chosen value beside the track. */
25038
25268
  "bool:show-value"?: (HelixHeadlessSlider["showValue"]) | undefined;
25039
25269
  /** Shows the chosen value beside the track. */
25040
25270
  "prop:showValue"?: (HelixHeadlessSlider["showValue"]) | undefined;
25041
25271
  /** How far one press of an arrow key moves the thumb. */
25042
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;
25043
25281
  /** Whether each thumb shows its value in a bubble beside it, as Web
25044
25282
  Awesome's `with-tooltip`. The styled slider shows the bubbles while the
25045
25283
  slider is under the pointer or holds focus. They repeat what each thumb
@@ -25433,10 +25671,20 @@ export type HelixHeadlessSpeedDialItemHelixSelectElementEvent =
25433
25671
  export type HelixHeadlessSpeedDialItemProps = {
25434
25672
  /** Whether the action is disabled, so it cannot be chosen. */
25435
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;
25436
25682
  /** The action's keyboard shortcut as a chord, such as `mod+s`, carried as
25437
25683
  `aria-keyshortcuts` and drawn after the name. `mod` is Command on an Apple
25438
25684
  keyboard and Control elsewhere. Showing a shortcut does not bind it. */
25439
25685
  shortcut?: (HelixHeadlessSpeedDialItem["shortcut"]) | undefined;
25686
+ /** Where the link opens, such as `_blank` for a new tab. */
25687
+ target?: (HelixHeadlessSpeedDialItem["target"]) | undefined;
25440
25688
  /** The action's value, sent in `helix-select` when the action is chosen. */
25441
25689
  value?: (HelixHeadlessSpeedDialItem["value"]) | undefined;
25442
25690
 
@@ -25449,10 +25697,20 @@ keyboard and Control elsewhere. Showing a shortcut does not bind it. */
25449
25697
  export type HelixHeadlessSpeedDialItemSolidJsProps = {
25450
25698
  /** Whether the action is disabled, so it cannot be chosen. */
25451
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;
25452
25708
  /** The action's keyboard shortcut as a chord, such as `mod+s`, carried as
25453
25709
  `aria-keyshortcuts` and drawn after the name. `mod` is Command on an Apple
25454
25710
  keyboard and Control elsewhere. Showing a shortcut does not bind it. */
25455
25711
  "prop:shortcut"?: (HelixHeadlessSpeedDialItem["shortcut"]) | undefined;
25712
+ /** Where the link opens, such as `_blank` for a new tab. */
25713
+ "prop:target"?: (HelixHeadlessSpeedDialItem["target"]) | undefined;
25456
25714
  /** The action's value, sent in `helix-select` when the action is chosen. */
25457
25715
  "prop:value"?: (HelixHeadlessSpeedDialItem["value"]) | undefined;
25458
25716
  /** The action was chosen. Cancelable: cancel it to keep the dial open. */
@@ -25505,13 +25763,17 @@ you described or labeled it yourself. */
25505
25763
  longPressLabel?: (HelixHeadlessSpeedDial["longPressLabel"]) | undefined;
25506
25764
  /** Space between the trigger and the actions, in pixels. */
25507
25765
  offset?: (HelixHeadlessSpeedDial["offset"]) | undefined;
25508
- /** What opens the dial. `click` opens it on a press of the trigger. Under
25509
- `long-press`, a press is the trigger's own action, and the dial opens on a
25510
- 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. */
25511
25771
  "open-on"?: (HelixHeadlessSpeedDial["openOn"]) | undefined;
25512
- /** What opens the dial. `click` opens it on a press of the trigger. Under
25513
- `long-press`, a press is the trigger's own action, and the dial opens on a
25514
- 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. */
25515
25777
  openOn?: (HelixHeadlessSpeedDial["openOn"]) | undefined;
25516
25778
  /** The direction the actions open in. They move to another side if that side
25517
25779
  does not fit.
@@ -25572,13 +25834,17 @@ you described or labeled it yourself. */
25572
25834
  "prop:longPressLabel"?: (HelixHeadlessSpeedDial["longPressLabel"]) | undefined;
25573
25835
  /** Space between the trigger and the actions, in pixels. */
25574
25836
  "prop:offset"?: (HelixHeadlessSpeedDial["offset"]) | undefined;
25575
- /** What opens the dial. `click` opens it on a press of the trigger. Under
25576
- `long-press`, a press is the trigger's own action, and the dial opens on a
25577
- 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. */
25578
25842
  "attr:open-on"?: (HelixHeadlessSpeedDial["openOn"]) | undefined;
25579
- /** What opens the dial. `click` opens it on a press of the trigger. Under
25580
- `long-press`, a press is the trigger's own action, and the dial opens on a
25581
- 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. */
25582
25848
  "prop:openOn"?: (HelixHeadlessSpeedDial["openOn"]) | undefined;
25583
25849
  /** The direction the actions open in. They move to another side if that side
25584
25850
  does not fit.
@@ -25935,12 +26201,18 @@ The arrow keys move by `step` and do not snap. */
25935
26201
  };
25936
26202
 
25937
26203
  export type HelixHeadlessStatGroupProps = {
25938
- /** Accessible name for the group. */
26204
+ /** Accessible name for the group, which makes it a group.
26205
+
26206
+ Absent leaves the stats with no group around them, unless `aria-label` or
26207
+ `aria-labelledby` names it. */
25939
26208
  label?: (HelixHeadlessStatGroup["label"]) | undefined;
25940
26209
  };
25941
26210
 
25942
26211
  export type HelixHeadlessStatGroupSolidJsProps = {
25943
- /** Accessible name for the group. */
26212
+ /** Accessible name for the group, which makes it a group.
26213
+
26214
+ Absent leaves the stats with no group around them, unless `aria-label` or
26215
+ `aria-labelledby` names it. */
25944
26216
  "prop:label"?: (HelixHeadlessStatGroup["label"]) | undefined;
25945
26217
 
25946
26218
  /** Set the innerHTML of the element */
@@ -25976,6 +26248,29 @@ reports a hydration mismatch. The absent attribute is the column, which the
25976
26248
  stylesheet reads as the base case, and the server spec asserts the host
25977
26249
  carries nothing nobody wrote. */
25978
26250
  direction?: (HelixHeadlessStat["direction"]) | undefined;
26251
+ /** `Intl.NumberFormat` options `value` is written with, such as
26252
+ `{"notation":"compact"}` for `1.2M` or `{"style":"percent"}` for `98%`,
26253
+ written as JSON in the attribute.
26254
+
26255
+ Absent writes the number as the locale writes any number. */
26256
+ "format-options"?: (HelixHeadlessStat["formatOptions"]) | undefined;
26257
+ /** `Intl.NumberFormat` options `value` is written with, such as
26258
+ `{"notation":"compact"}` for `1.2M` or `{"style":"percent"}` for `98%`,
26259
+ written as JSON in the attribute.
26260
+
26261
+ Absent writes the number as the locale writes any number. */
26262
+ formatOptions?: (HelixHeadlessStat["formatOptions"]) | undefined;
26263
+ /** The locale `value` is written in, such as `de` for `1.234.567`.
26264
+
26265
+ Absent reads the nearest `lang`, then the runtime's own. Set it on a page
26266
+ rendered on a server, so the server and the browser write the figure
26267
+ alike. */
26268
+ locale?: (HelixHeadlessStat["locale"]) | undefined;
26269
+ /** The figure as a number, written with `format-options` in `locale` in
26270
+ place of a slotted value.
26271
+
26272
+ Absent leaves the figure to the slot. */
26273
+ value?: (HelixHeadlessStat["value"]) | undefined;
25979
26274
  };
25980
26275
 
25981
26276
  export type HelixHeadlessStatSolidJsProps = {
@@ -26005,6 +26300,29 @@ reports a hydration mismatch. The absent attribute is the column, which the
26005
26300
  stylesheet reads as the base case, and the server spec asserts the host
26006
26301
  carries nothing nobody wrote. */
26007
26302
  "prop:direction"?: (HelixHeadlessStat["direction"]) | undefined;
26303
+ /** `Intl.NumberFormat` options `value` is written with, such as
26304
+ `{"notation":"compact"}` for `1.2M` or `{"style":"percent"}` for `98%`,
26305
+ written as JSON in the attribute.
26306
+
26307
+ Absent writes the number as the locale writes any number. */
26308
+ "attr:format-options"?: (HelixHeadlessStat["formatOptions"]) | undefined;
26309
+ /** `Intl.NumberFormat` options `value` is written with, such as
26310
+ `{"notation":"compact"}` for `1.2M` or `{"style":"percent"}` for `98%`,
26311
+ written as JSON in the attribute.
26312
+
26313
+ Absent writes the number as the locale writes any number. */
26314
+ "prop:formatOptions"?: (HelixHeadlessStat["formatOptions"]) | undefined;
26315
+ /** The locale `value` is written in, such as `de` for `1.234.567`.
26316
+
26317
+ Absent reads the nearest `lang`, then the runtime's own. Set it on a page
26318
+ rendered on a server, so the server and the browser write the figure
26319
+ alike. */
26320
+ "prop:locale"?: (HelixHeadlessStat["locale"]) | undefined;
26321
+ /** The figure as a number, written with `format-options` in `locale` in
26322
+ place of a slotted value.
26323
+
26324
+ Absent leaves the figure to the slot. */
26325
+ "prop:value"?: (HelixHeadlessStat["value"]) | undefined;
26008
26326
 
26009
26327
  /** Set the innerHTML of the element */
26010
26328
  innerHTML?: (string) | undefined;
@@ -26028,6 +26346,16 @@ export type HelixHeadlessStepsHelixSelectElementEvent =
26028
26346
  HelixHeadlessStepsElementEvent<HelixSelectEvent>;
26029
26347
 
26030
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;
26031
26359
  /** The sequence's name, read by screen readers.
26032
26360
 
26033
26361
  A list of stages is a landmark a reader arrives at out of order, so it
@@ -26102,6 +26430,16 @@ there. Not asked of an `optional` stage, nor for a move back. */
26102
26430
  };
26103
26431
 
26104
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;
26105
26443
  /** The sequence's name, read by screen readers.
26106
26444
 
26107
26445
  A list of stages is a landmark a reader arrives at out of order, so it
@@ -27415,6 +27753,12 @@ panels and tells a screen reader the list is vertical.
27415
27753
 
27416
27754
  Optional, so the resting row writes no attribute onto the host. */
27417
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;
27418
27762
  /** How the row of tabs is drawn.
27419
27763
 
27420
27764
  Unset is a raised pill on the selected tab with nothing behind the row,
@@ -27484,6 +27828,12 @@ panels and tells a screen reader the list is vertical.
27484
27828
 
27485
27829
  Optional, so the resting row writes no attribute onto the host. */
27486
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;
27487
27837
  /** How the row of tabs is drawn.
27488
27838
 
27489
27839
  Unset is a raised pill on the selected tab with nothing behind the row,
@@ -27544,11 +27894,22 @@ export type HelixHeadlessTabElementEvent<E = Event> = TypedEvent<
27544
27894
  HelixHeadlessTab,
27545
27895
  E
27546
27896
  >;
27897
+ /** `helix-dismiss` event type */
27898
+ export type HelixHeadlessTabHelixDismissElementEvent =
27899
+ HelixHeadlessTabElementEvent<HelixDismissEvent>;
27547
27900
  /** `helix-select` event type */
27548
27901
  export type HelixHeadlessTabHelixSelectElementEvent =
27549
27902
  HelixHeadlessTabElementEvent<HelixSelectEvent>;
27550
27903
 
27551
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;
27552
27913
  /** The URL the tab links to. Setting it renders the tab as a link, for a set
27553
27914
  of tabs that are pages of a site. */
27554
27915
  href?: (HelixHeadlessTab["href"]) | undefined;
@@ -27556,6 +27917,8 @@ of tabs that are pages of a site. */
27556
27917
  rel?: (HelixHeadlessTab["rel"]) | undefined;
27557
27918
  /** Where the link opens, such as `_blank`, for a tab with an `href`. */
27558
27919
  target?: (HelixHeadlessTab["target"]) | undefined;
27920
+ /** Whether the element shows a control that dismisses it. */
27921
+ dismissible?: (HelixHeadlessTab["dismissible"]) | undefined;
27559
27922
  /** Whether the item is disabled and cannot be chosen. */
27560
27923
  disabled?: (HelixHeadlessTab["disabled"]) | undefined;
27561
27924
  /** Whether the item is selected.
@@ -27568,11 +27931,21 @@ declares in markup carries `defaultSelected` of its own to say so. */
27568
27931
  submits. */
27569
27932
  value?: (HelixHeadlessTab["value"]) | undefined;
27570
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;
27571
27936
  /** Fired when the tab is chosen. Cancelable: canceling it stops the change and leaves the decision to you. */
27572
27937
  "onhelix-select"?: ((e: HelixHeadlessTabHelixSelectElementEvent) => void) | undefined;
27573
27938
  };
27574
27939
 
27575
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;
27576
27949
  /** The URL the tab links to. Setting it renders the tab as a link, for a set
27577
27950
  of tabs that are pages of a site. */
27578
27951
  "prop:href"?: (HelixHeadlessTab["href"]) | undefined;
@@ -27580,6 +27953,8 @@ of tabs that are pages of a site. */
27580
27953
  "prop:rel"?: (HelixHeadlessTab["rel"]) | undefined;
27581
27954
  /** Where the link opens, such as `_blank`, for a tab with an `href`. */
27582
27955
  "prop:target"?: (HelixHeadlessTab["target"]) | undefined;
27956
+ /** Whether the element shows a control that dismisses it. */
27957
+ "prop:dismissible"?: (HelixHeadlessTab["dismissible"]) | undefined;
27583
27958
  /** Whether the item is disabled and cannot be chosen. */
27584
27959
  "prop:disabled"?: (HelixHeadlessTab["disabled"]) | undefined;
27585
27960
  /** Whether the item is selected.
@@ -27591,6 +27966,8 @@ declares in markup carries `defaultSelected` of its own to say so. */
27591
27966
  /** The item's value, which identifies it in its set and is what a form
27592
27967
  submits. */
27593
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;
27594
27971
  /** Fired when the tab is chosen. Cancelable: canceling it stops the change and leaves the decision to you. */
27595
27972
  "on:helix-select"?: ((e: HelixHeadlessTabHelixSelectElementEvent) => void) | undefined;
27596
27973
 
@@ -27613,6 +27990,14 @@ export type HelixHeadlessTagGroupHelixDismissElementEvent =
27613
27990
  HelixHeadlessTagGroupElementEvent<HelixDismissEvent>;
27614
27991
 
27615
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;
27616
28001
  /** The words the group shows and says once its last tag is removed, where
27617
28002
  nothing is in the `empty` slot. */
27618
28003
  "empty-label"?: (HelixHeadlessTagGroup["emptyLabel"]) | undefined;
@@ -27622,6 +28007,20 @@ nothing is in the `empty` slot. */
27622
28007
  /** The name of the set, such as "Filters", which a screen reader announces
27623
28008
  before its tags. */
27624
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;
27625
28024
  /** How many tags a reader can select: `single`, `multiple`, or none.
27626
28025
 
27627
28026
  Absent selects nothing, and the tags carry no selected state at all. */
@@ -27650,6 +28049,14 @@ words where it has none. */
27650
28049
  };
27651
28050
 
27652
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;
27653
28060
  /** The words the group shows and says once its last tag is removed, where
27654
28061
  nothing is in the `empty` slot. */
27655
28062
  "attr:empty-label"?: (HelixHeadlessTagGroup["emptyLabel"]) | undefined;
@@ -27659,6 +28066,20 @@ nothing is in the `empty` slot. */
27659
28066
  /** The name of the set, such as "Filters", which a screen reader announces
27660
28067
  before its tags. */
27661
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;
27662
28083
  /** How many tags a reader can select: `single`, `multiple`, or none.
27663
28084
 
27664
28085
  Absent selects nothing, and the tags carry no selected state at all. */
@@ -31177,6 +31598,18 @@ refused, in a `reorderable` tree. */
31177
31598
  An `aria-label` or `aria-labelledby` on the host names the tree too, and
31178
31599
  wins over this. */
31179
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;
31180
31613
  /** What screen readers hear each time an item moves, in a `reorderable`
31181
31614
  tree. `{name}` is the item's words, `{position}` its place among its
31182
31615
  siblings, counting from 1, and `{count}` the number of siblings. */
@@ -31307,6 +31740,18 @@ refused, in a `reorderable` tree. */
31307
31740
  An `aria-label` or `aria-labelledby` on the host names the tree too, and
31308
31741
  wins over this. */
31309
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;
31310
31755
  /** What screen readers hear each time an item moves, in a `reorderable`
31311
31756
  tree. `{name}` is the item's words, `{position}` its place among its
31312
31757
  siblings, counting from 1, and `{count}` the number of siblings. */
@@ -32994,6 +33439,10 @@ export type CustomElements = {
32994
33439
  * and a closed section is `hidden` and `inert` instead, and find in page skips
32995
33440
  * it.
32996
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
+ *
32997
33446
  * While it is open, the content part carries the content's height as
32998
33447
  * `--accordion-content-height`, as Radix's accordion does, for a stylesheet
32999
33448
  * that animates the section open with keyframes of its own.
@@ -33130,6 +33579,7 @@ export type CustomElements = {
33130
33579
  *
33131
33580
  * These can be used to apply styling when a component is in a given state.
33132
33581
  *
33582
+ * - `closing`: While the item has closed and its content is still drawn, until the content part's animations end.
33133
33583
  * - `open`: While the item is open.
33134
33584
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
33135
33585
  */
@@ -33155,7 +33605,8 @@ export type CustomElements = {
33155
33605
  * Keys, on a trigger: Up and Down Arrow move to the previous and the next
33156
33606
  * trigger, and so do Left and Right, wrapping at the ends; Home and End go to
33157
33607
  * the first and the last. Enter and Space open and close the section. Disabled
33158
- * 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.
33159
33610
  *
33160
33611
  * Each trigger is a button with `aria-expanded` and `aria-controls`, inside a
33161
33612
  * heading, level 3 unless `heading-level` says otherwise, so the sections are
@@ -34093,6 +34544,12 @@ export type CustomElements = {
34093
34544
  * button "Inbox 8 unread", and stays current as the count changes. The styled
34094
34545
  * tier's `placement="inline"` draws the mark in the line for that case.
34095
34546
  *
34547
+ * **An icon goes inside the mark** through the `icon` slot, before the count,
34548
+ * as Web Awesome's badge takes one at its start. With no `value` the icon is
34549
+ * the whole mark, such as a check on an avatar, drawn where the dot would be.
34550
+ * The icon is hidden from screen readers: the count and `label` are what the
34551
+ * mark says.
34552
+ *
34096
34553
  * ## Attributes & Properties
34097
34554
  *
34098
34555
  * Component attributes and properties that can be applied to the element or by using JavaScript.
@@ -34156,12 +34613,14 @@ export type CustomElements = {
34156
34613
  * Areas where markup can be added to the component.
34157
34614
  *
34158
34615
  * - `(default)`: The element being decorated.
34616
+ * - `icon`: An icon inside the mark, before the count, or the whole mark when there is no value. Hidden from screen readers.
34159
34617
  *
34160
34618
  * ## CSS Parts
34161
34619
  *
34162
34620
  * Custom selectors for styling elements within the component.
34163
34621
  *
34164
- * - `indicator`: The count, or the dot when there is no value.
34622
+ * - `icon`: The slot the icon arrives through, inside the indicator. A slot draws no box, so it passes inherited properties, such as color, to the icon.
34623
+ * - `indicator`: The count, or the dot when there is no value. Carries `data-dot` when there is no value, `data-single` when the count is one character, and `data-blank` when the value is zero.
34165
34624
  *
34166
34625
  * ## CSS States
34167
34626
  *
@@ -34169,7 +34628,8 @@ export type CustomElements = {
34169
34628
  *
34170
34629
  * - `blank`: The value is zero, so there is no mark.
34171
34630
  * - `capped`: The count is past `max`, so the mark shows `{max}+`.
34172
- * - `dot`: There is no value, so the mark is a dot.
34631
+ * - `dot`: There is no value and no icon, so the mark is a dot.
34632
+ * - `has-icon`: Something is slotted into `icon`, so it is drawn inside the mark.
34173
34633
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
34174
34634
  */
34175
34635
  "helix-headless-badge": Partial<
@@ -34651,8 +35111,11 @@ export type CustomElements = {
34651
35111
  * Set `href` to make the whole crumb an anchor, which works with Enter, middle
34652
35112
  * click, and the status bar, and before any JavaScript runs. A router cannot
34653
35113
  * reach an anchor inside a shadow root, so intercept the click for client-side
34654
- * navigation, as with `Tree.Item` and `List.Item`. A trail that collapses also
34655
- * 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.
34656
35119
  *
34657
35120
  * Without `href`, the crumb renders a plain `<span>` around what you slot,
34658
35121
  * including your own anchor.
@@ -34710,6 +35173,12 @@ export type CustomElements = {
34710
35173
  * browser harness's awaits it alone: a browser always runs the frame, and a
34711
35174
  * timer beside it was a bet on how long one takes, which a busy run lost. (property only) (readonly)
34712
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
+ *
34713
35182
  * ## Slots
34714
35183
  *
34715
35184
  * Areas where markup can be added to the component.
@@ -34723,6 +35192,8 @@ export type CustomElements = {
34723
35192
  *
34724
35193
  * Custom selectors for styling elements within the component.
34725
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.
34726
35197
  * - `link`: The crumb itself, which is an `<a>` where `href` is set.
34727
35198
  * - `separator`: The separator preceding the item.
34728
35199
  * - `separator-mark`: The chevron between crumbs, shown when no separator is slotted.
@@ -34731,7 +35202,9 @@ export type CustomElements = {
34731
35202
  *
34732
35203
  * These can be used to apply styling when a component is in a given state.
34733
35204
  *
35205
+ * - `current`: While the crumb is the current page, marked `current` or the last of a trail with none marked.
34734
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.
34735
35208
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
34736
35209
  */
34737
35210
  "helix-headless-breadcrumb": Partial<
@@ -34761,11 +35234,13 @@ export type CustomElements = {
34761
35234
  * array of `{ label, href }`, drawn as crumbs in order, the last one as the
34762
35235
  * current page. Slotted crumbs follow them. Use one way or the other in a trail.
34763
35236
  *
34764
- * With `max-items`, a trail drawn from `items` that is longer folds its middle
34765
- * into one crumb: the first crumb, a button, then the last `max-items` less one.
34766
- * The button is named by `expand-label` and shows the whole trail, moving focus
34767
- * to the first crumb it brought back. A new `items` folds again. Slotted crumbs
34768
- * 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.
34769
35244
  *
34770
35245
  * **Keyboard.** Each crumb with an `href` is a link and one tab stop, and
34771
35246
  * Enter follows it. The current page and the separators are not in the tab
@@ -34824,6 +35299,8 @@ export type CustomElements = {
34824
35299
  * - `crumb`: Each crumb drawn from `items`.
34825
35300
  * - `crumb-collapsed`: The crumb that holds the folded middle of a trail longer than `max-items`.
34826
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.
34827
35304
  * - `crumb-link`: The link, or the current page's words, of a crumb drawn from `items`.
34828
35305
  * - `crumb-separator`: The separator before a crumb drawn from `items`.
34829
35306
  * - `crumb-separator-mark`: The chevron before a crumb drawn from `items`.
@@ -34971,6 +35448,7 @@ export type CustomElements = {
34971
35448
  *
34972
35449
  * These can be used to apply styling when a component is in a given state.
34973
35450
  *
35451
+ * - `pressed`: While a group with `selection-mode` has a button pressed.
34974
35452
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
34975
35453
  */
34976
35454
  "helix-headless-button-group": Partial<
@@ -36059,13 +36537,17 @@ export type CustomElements = {
36059
36537
  * through with `::part`.
36060
36538
  *
36061
36539
  * Name the card with `label`, as a Stat Group is named, or with `aria-label`
36062
- * or `aria-labelledby`. These are the only names that work with server
36063
- * rendering, because reading a title from the light DOM needs a DOM, and the
36064
- * server has none. `label` is set through `ElementInternals`, so it writes no
36065
- * attribute onto the card. **A named card is a group**, so a
36540
+ * or `aria-labelledby`. `label` is set through `ElementInternals`, so it
36541
+ * writes no attribute onto the card. **A named card is a group**, so a
36066
36542
  * reader entering it hears its name; an unnamed one has no role, since a group
36067
36543
  * with no name only adds "group" to what a reader says.
36068
36544
  *
36545
+ * **With none of those, a heading in `header` names the card**, such as the
36546
+ * `<h2>` of its title, by reference, so the name follows the heading's words.
36547
+ * Reading a heading needs a DOM, so a served card is named by it once the
36548
+ * script runs; `label`, `aria-label` and `aria-labelledby` are the names a
36549
+ * server writes.
36550
+ *
36069
36551
  * Each region's slot is a part of the same name, `body` for the main content,
36070
36552
  * as Web Awesome's card names its regions. A slot draws no box, so a part
36071
36553
  * passes inherited properties to what is slotted, and a page wanting a box
@@ -36075,7 +36557,9 @@ export type CustomElements = {
36075
36557
  * header's and the footer's line, as Web Awesome's card does. While one holds
36076
36558
  * something, its line is a `header-row` or `footer-row` part; otherwise there
36077
36559
  * is no wrapper and every region is a bare slot. A server cannot see slotted
36078
- * content, so served actions sit on their own line until the script runs.
36560
+ * content, so a served card has no row; the styled tier sets served actions at
36561
+ * the end of their line from the stylesheet alone, so they do not move when
36562
+ * the script runs.
36079
36563
  *
36080
36564
  * **The card says which regions it holds**, as `:state(has-media)`,
36081
36565
  * `:state(has-header)` and `:state(has-footer)`, so a sheet can draw a card
@@ -36103,8 +36587,6 @@ export type CustomElements = {
36103
36587
  *
36104
36588
  * Reflected and undefaulted, so a card that has not asked reads as a card
36105
36589
  * with no attribute on it and the stylesheet only describes the departure.
36106
- * - `aria-labelledby`/`undefined`: undefined
36107
- * - `aria-label`/`undefined`: undefined
36108
36590
  * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
36109
36591
  *
36110
36592
  * **Named `whenSettled` because `settled` is taken four times over**, by
@@ -36137,6 +36619,14 @@ export type CustomElements = {
36137
36619
  * - `header-actions`: Controls for the whole card at the end of the header's line, such as a menu.
36138
36620
  * - `media`: Image, video, or chart that runs edge to edge, outside the inset.
36139
36621
  *
36622
+ * ## Methods
36623
+ *
36624
+ * Methods that can be called to access component functionality.
36625
+ *
36626
+ * - `attributeChangedCallback(name: string, old: string | null, value: string | null) => void`: Called by the browser when an observed attribute changes. A name written
36627
+ * or taken off asks for an update, because it decides whether the card is a
36628
+ * group and whether its heading names it.
36629
+ *
36140
36630
  * ## CSS Parts
36141
36631
  *
36142
36632
  * Custom selectors for styling elements within the component.
@@ -37485,6 +37975,18 @@ export type CustomElements = {
37485
37975
  * and its copy button copies the new version of the file. `variant="split"`
37486
37976
  * shows the old version beside the new, each removal opposite its replacement.
37487
37977
  *
37978
+ * **A block that scrolls is a tab stop.** While its lines run past its width or
37979
+ * its cap, the scroller is a region named for the block, such as "Code,
37980
+ * app.ts", that Tab reaches, so a keyboard scrolls it with the arrow keys in
37981
+ * every browser. Chromium and Firefox make a scrolling box focusable on their
37982
+ * own, and Safari does not. A block that fits is no stop at all.
37983
+ *
37984
+ * **The code the block draws is marked untranslated**, `translate="no"` on
37985
+ * its `<pre>`, so a page translator leaves highlighted lines and a diff as
37986
+ * written. Code in the slot takes its translation mode from the element, which
37987
+ * writes nothing onto itself, so set `translate="no"` on the element to keep a
37988
+ * translator off plain code too.
37989
+ *
37488
37990
  * On the server, the slot renders as ordinary code, so a diff first appears as
37489
37991
  * the patch text in a `<pre>`. The client makes the same first render, which
37490
37992
  * keeps hydration clean, and draws the diff once it can read the content. Diff
@@ -37494,6 +37996,12 @@ export type CustomElements = {
37494
37996
  *
37495
37997
  * Component attributes and properties that can be applied to the element or by using JavaScript.
37496
37998
  *
37999
+ * - `code-label`/`codeLabel`: The name of a block that scrolls, which is a tab stop while it does.
38000
+ *
38001
+ * Where the block has a name, the scroller says it too, such as "Code,
38002
+ * app.ts", as `code-name-label` puts it.
38003
+ * - `code-name-label`/`codeNameLabel`: The name of a block that scrolls, where the block has a name. `{code}` is
38004
+ * `code-label` and `{name}` the block's name.
37497
38005
  * - `collapse-label`/`collapseLabel`: The expand button's words while the block shows every line.
37498
38006
  * - `copied-label`/`copiedLabel`: The copy button's name and tooltip text after a copy.
37499
38007
  * - `copy-label`/`copyLabel`: The copy button's name and tooltip text before a copy.
@@ -37659,6 +38167,13 @@ export type CustomElements = {
37659
38167
  * tools and document search. A styled span carries no such meaning, and a
37660
38168
  * screen reader announces nothing about it.
37661
38169
  *
38170
+ * **Set `translate="no"` on the element to keep a page translator off the
38171
+ * code.** A translator that rewrites prose would also rewrite an identifier.
38172
+ * The slotted text takes its translation mode from the element, its parent in
38173
+ * the page, and the element writes nothing onto itself, so the attribute is
38174
+ * yours to set. The `<code>` inside carries `translate="no"` for anything the
38175
+ * element draws itself.
38176
+ *
37662
38177
  * `Code` is inline only and never scrolls. For a block of code with its own
37663
38178
  * box, its own overflow, and copying, use `CodeBlock`, which is a separate
37664
38179
  * family.
@@ -37722,8 +38237,9 @@ export type CustomElements = {
37722
38237
  * style the panel to match your interface.
37723
38238
  *
37724
38239
  * The field reads every color syntax, including `#f00`, `#ff0000`,
37725
- * `rgb(255 0 0)`, `rgba(255,0,0,.5)`, `rgb(255 0 0 / 50%)`, and
37726
- * `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
37727
38243
  * field shows the value without reformatting it, because half-typed input does
37728
38244
  * not survive a round trip through a formatter. Date Input does the same with
37729
38245
  * dates.
@@ -37760,7 +38276,8 @@ export type CustomElements = {
37760
38276
  * Passed to the panel, whose square, hue ramp and presets say the color's
37761
38277
  * name, and read by the swatch in `swatch`, which says it before the value.
37762
38278
  * Color Picker lists the keys.
37763
- * - `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`.
37764
38281
  *
37765
38282
  * **Undefaulted, because it reflects.** The two together stamp an attribute
37766
38283
  * onto every host anybody renders, including the ones nobody configured: the
@@ -38003,6 +38520,8 @@ export type CustomElements = {
38003
38520
  * - `picker-channel-marker-label`: The value a mark stands at, when `marker-labels` is set.
38004
38521
  * - `picker-channel-markers`: The row of marks along the track.
38005
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.
38006
38525
  * - `picker-channel-tooltip`: A ramp's value in a bubble, where a ramp shows one.
38007
38526
  * - `picker-channel-tooltips`: The layer over a ramp's track that holds its bubble.
38008
38527
  * - `picker-channels`: The channel sliders beside the sample.
@@ -38027,7 +38546,9 @@ export type CustomElements = {
38027
38546
  * - `picker-grid-brightness`: The range input for the square's vertical axis.
38028
38547
  * - `picker-grid-handle`: The mark showing where in the square the color sits.
38029
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.
38030
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.
38031
38552
  * - `picker-sample`: A chip of the current color. Pressing it copies the value.
38032
38553
  * - `picker-swatch`: One preset.
38033
38554
  * - `picker-swatches`: The row of presets.
@@ -38077,6 +38598,11 @@ export type CustomElements = {
38077
38598
  * is named by its color. The opacity ramp is heard as a percentage. Set
38078
38599
  * `color-words` to speak the names in another language.
38079
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
+ *
38080
38606
  * The presets are a listbox with the current color selected, and one tab
38081
38607
  * stop. The arrow keys move between them, Home and End go to the ends, and
38082
38608
  * Enter, Space or a press chooses one.
@@ -38103,12 +38629,15 @@ export type CustomElements = {
38103
38629
  * language hears its own rather than English between its own labels.
38104
38630
  * - `channel-fields`/`channelFields`: Whether the picker shows a number field for each channel of the color, as
38105
38631
  * React Aria's ColorField does with `channel`: red, green and blue for hex
38106
- * and rgb, hue, saturation and lightness for hsl, and the opacity with
38107
- * `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`.
38108
38635
  *
38109
38636
  * For a reader who has the numbers from a brand guide, and for a keyboard,
38110
38637
  * where typing 128 is quicker than holding an arrow key. The fields follow
38111
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.
38112
38641
  * - `color-words`/`colorWords`: The words a color's name is spoken in, as JSON keyed by their English,
38113
38642
  * such as `{"red": "rot", "vibrant": "kräftiges"}`.
38114
38643
  *
@@ -38125,15 +38654,25 @@ export type CustomElements = {
38125
38654
  * - `copy-label`/`copyLabel`: The name of the sample, which copies the value. `{value}` is replaced with
38126
38655
  * the color.
38127
38656
  * - `eyedropper-label`/`eyedropperLabel`: What the eyedropper is called.
38128
- * - `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`.
38129
38659
  *
38130
38660
  * Only what is written. Everything is read whatever this says, so a picker on
38131
- * `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.
38132
38667
  * - `format-label`/`formatLabel`: What the syntax toggle is called, with `{format}` filled in.
38133
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.
38134
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.
38135
38674
  * - `lightness-label`/`lightnessLabel`: What the lightness channel's field is called, in `channel-fields` with
38136
- * hsl.
38675
+ * hsl and oklch.
38137
38676
  * - `no-eyedropper`/`noEyedropper`: Hides the eyedropper. Without it, the eyedropper appears in browsers that
38138
38677
  * support one.
38139
38678
  * - `no-format`/`noFormat`: Hides the syntax toggle, so the format cannot be changed.
@@ -38308,6 +38847,8 @@ export type CustomElements = {
38308
38847
  * Areas where markup can be added to the component.
38309
38848
  *
38310
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.
38311
38852
  *
38312
38853
  * ## Methods
38313
38854
  *
@@ -38390,6 +38931,8 @@ export type CustomElements = {
38390
38931
  * - `channel-marker-label`: The value a mark stands at, when `marker-labels` is set.
38391
38932
  * - `channel-markers`: The row of marks along the track.
38392
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.
38393
38936
  * - `channel-tooltip`: A ramp's value in a bubble, where a ramp shows one.
38394
38937
  * - `channel-tooltips`: The layer over a ramp's track that holds its bubble.
38395
38938
  * - `channels`: The ramps beside the sample.
@@ -38413,6 +38956,8 @@ export type CustomElements = {
38413
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.
38414
38957
  * - `grid-brightness`: The range input for the square's vertical axis.
38415
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.
38416
38961
  * - `sample`: A chip of the current color. Pressing it copies the value.
38417
38962
  * - `swatch`: One preset, an option in the `swatches` listbox.
38418
38963
  * - `swatches`: The row of presets, a listbox.
@@ -38424,7 +38969,10 @@ export type CustomElements = {
38424
38969
  *
38425
38970
  * These can be used to apply styling when a component is in a given state.
38426
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.
38427
38974
  * - `invalid`: While `invalid` is set or `feedback` says what is wrong.
38975
+ * - `sampling`: While the eyedropper is open over the screen.
38428
38976
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
38429
38977
  */
38430
38978
  "helix-headless-color-picker": Partial<
@@ -40076,6 +40624,7 @@ export type CustomElements = {
40076
40624
  * - `picker-day-outside`: A day from a neighboring month. Applied with `picker-day`.
40077
40625
  * - `picker-day-selected`: The chosen day, or either end of a chosen range. Applied with `picker-day`.
40078
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`.
40079
40628
  * - `picker-feedback`: The calendar's own message, under it, while the calendar's `feedback` is set.
40080
40629
  * - `picker-grid`: The grid of days.
40081
40630
  * - `picker-header`: The month name and its controls.
@@ -40164,15 +40713,22 @@ export type CustomElements = {
40164
40713
  * speaks it. Unset is the sentence registered for the page's language, then
40165
40714
  * the English. `{mode}` is `single`, `range` or `multiple`, so each can have
40166
40715
  * its own sentence.
40167
- * - `calendar`: The calendar the heading, the days, and the months are written in:
40168
- * `gregory`, `buddhist`, `japanese`, `roc`, or `iso8601`, the five whose
40169
- * months are the Gregorian months.
40170
- *
40171
- * Absent is the locale's own where it is one of the five, such as
40172
- * `buddhist` for `th-TH` or `japanese` for `ja-JP-u-ca-japanese`, and
40173
- * `gregory` for every other, such as `persian` for `fa-IR`, so the heading
40174
- * names the Gregorian month the grid shows. The value is `YYYY-MM-DD` in
40175
- * 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.
40176
40732
  * - `default-month`/`defaultMonth`: The month to open on when `month` is not set.
40177
40733
  * - `disable-dates`/`disableDates`: Dates that cannot be chosen, as `YYYY-MM-DD`, separated by commas or
40178
40734
  * spaces.
@@ -40198,8 +40754,9 @@ export type CustomElements = {
40198
40754
  * its days.
40199
40755
  * - `min`: Earliest selectable date, as `YYYY-MM-DD`.
40200
40756
  * - `mode`: How many dates can be held at once.
40201
- * - `month`: The month shown, as `YYYY-MM`. When it is not set, it follows `value`,
40202
- * 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.
40203
40760
  *
40204
40761
  * Separate from `value` on purpose, so paging selects nothing and a consumer
40205
40762
  * can drive the view. Reading gives the month on show; writing sets it, and
@@ -40246,6 +40803,13 @@ export type CustomElements = {
40246
40803
  * treated as one rather than as an error: a step of zero would block every
40247
40804
  * date including the one already chosen.
40248
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.
40249
40813
  * - `unavailable-message`/`unavailableMessage`: The validation message for a date that `disable-dates` or `disable-days`
40250
40814
  * bars.
40251
40815
  * - `value-missing-message`/`valueMissingMessage`: The validation message for a required date picker with no date chosen.
@@ -40366,6 +40930,8 @@ export type CustomElements = {
40366
40930
  *
40367
40931
  * Areas where markup can be added to the component.
40368
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.
40369
40935
  * - `next-icon`: The glyph on the control that moves forward a month, usually a caret.
40370
40936
  * - `previous-icon`: The glyph on the control that moves back a month, usually a caret.
40371
40937
  *
@@ -40450,6 +41016,7 @@ export type CustomElements = {
40450
41016
  * - `day-outside`: A day from a neighboring month, filling the grid out, beside `day`.
40451
41017
  * - `day-selected`: The chosen day, or either end of a chosen range, beside `day`.
40452
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`.
40453
41020
  * - `feedback`: The message under the calendar, while `feedback` is set.
40454
41021
  * - `grid`: The grid of days.
40455
41022
  * - `header`: The month name and its controls.
@@ -40468,7 +41035,7 @@ export type CustomElements = {
40468
41035
  * - `previous`: The control that moves to the previous month.
40469
41036
  * - `previous-mark`: The glyph on the previous month control, where none is slotted.
40470
41037
  * - `week`: One row of days.
40471
- * - `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.
40472
41039
  *
40473
41040
  * ## CSS States
40474
41041
  *
@@ -41719,7 +42286,16 @@ export type CustomElements = {
41719
42286
  *
41720
42287
  * Every region is a bare slot. There is no `empty-state-heading` or
41721
42288
  * `empty-state-actions` element: assign your own heading and actions to the
41722
- * slots.
42289
+ * slots. The icon, the message and the actions slots are parts of the same
42290
+ * names, as Card's regions are. A slot draws no box, so a part passes
42291
+ * inherited properties, such as color and font, to what is slotted, and a
42292
+ * page wanting a box there gives it one with `display`, such as a row of
42293
+ * actions with `display: flex`.
42294
+ *
42295
+ * **The view says which regions it holds**, as `:state(has-icon)` and
42296
+ * `:state(has-actions)`, so a sheet can space a view with no icon or no
42297
+ * actions differently. Read in the browser, so a served view carries neither
42298
+ * until the script runs.
41723
42299
  *
41724
42300
  * **Or give the heading as words.** `heading` draws them in a `heading` part
41725
42301
  * that is a heading at `heading-level`, 3 where it is not set, so a page
@@ -41784,13 +42360,18 @@ export type CustomElements = {
41784
42360
  *
41785
42361
  * Custom selectors for styling elements within the component.
41786
42362
  *
42363
+ * - `actions`: The slot the actions arrive through. A slot draws no box, so it passes inherited properties to the actions; `display: flex` lays them out in a row.
41787
42364
  * - `heading`: The heading at `heading-level`: the one `heading` draws while nothing is slotted into `heading`, or the one around a slotted element that is no heading.
42365
+ * - `icon`: The slot the icon arrives through, drawing no box, as `actions` does.
41788
42366
  * - `live`: A copy of the heading and the message, in a live region that screen readers announce when the view appears. Visually hidden in the styled tier.
42367
+ * - `message`: The slot the message arrives through, drawing no box, as `actions` does.
41789
42368
  *
41790
42369
  * ## CSS States
41791
42370
  *
41792
42371
  * These can be used to apply styling when a component is in a given state.
41793
42372
  *
42373
+ * - `has-actions`: Something is slotted into `actions`.
42374
+ * - `has-icon`: Something is slotted into `icon`.
41794
42375
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
41795
42376
  */
41796
42377
  "helix-headless-empty": Partial<
@@ -44111,8 +44692,16 @@ export type CustomElements = {
44111
44692
  * a glyph that came later is drawn. A glyph registered after the element
44112
44693
  * rendered is drawn then.
44113
44694
  *
44114
- * A name with no match renders nothing, and the element fires `error`, so a
44115
- * typo in a name can be heard. It waits until the page has loaded and painted
44695
+ * **Or point `src` at an SVG file**, such as `src="/icons/rocket.svg"`, and
44696
+ * the element fetches it and draws its shapes in `currentColor` where the file
44697
+ * does not color them. A file is fetched once a page, however many icons name
44698
+ * it, and `load` fires when it is drawn. Scripts, event handlers and
44699
+ * `javascript:` links in the file are taken out before it is drawn. A server
44700
+ * fetches nothing, so a served icon with a `src` is drawn once the script
44701
+ * runs.
44702
+ *
44703
+ * A name with no match, or a `src` that is no SVG, renders nothing, and the
44704
+ * element fires `error`, so a typo in a name can be heard. It waits until the page has loaded and painted
44116
44705
  * first, so a library a later module registers is not taken for a typo.
44117
44706
  *
44118
44707
  * An icon is decorative by default and hidden from assistive technology. Set
@@ -44149,6 +44738,10 @@ export type CustomElements = {
44149
44738
  *
44150
44739
  * A name written `prefix:name` asks the library registered under that
44151
44740
  * prefix.
44741
+ * - `src`: The URL of an SVG file to draw, fetched once a page and drawn in
44742
+ * `currentColor` where the file does not color its shapes.
44743
+ *
44744
+ * Wins over `name`; `icon` wins over both. Absent draws `name`.
44152
44745
  * - `icon`: The icon to draw, as an object you import.
44153
44746
  *
44154
44747
  * **The scalable door, and the one this library uses internally.** An icon is
@@ -44186,8 +44779,8 @@ export type CustomElements = {
44186
44779
  *
44187
44780
  * Events that will be emitted by the component.
44188
44781
  *
44189
- * - `error`: `name` matches no registered icon and no library answers it, so nothing is drawn.
44190
- * - `load`: A glyph a library gave later for `name` is drawn.
44782
+ * - `error`: `name` matches no registered icon and no library answers it, or `src` is no SVG, so nothing is drawn.
44783
+ * - `load`: A glyph a library gave later for `name`, or the file at `src`, is drawn.
44191
44784
  *
44192
44785
  * ## Methods
44193
44786
  *
@@ -48382,6 +48975,15 @@ export type CustomElements = {
48382
48975
  * links and not a single control, and the keys across the other axis are
48383
48976
  * left to the page and to an open panel.
48384
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
+ *
48385
48987
  * ## Attributes & Properties
48386
48988
  *
48387
48989
  * Component attributes and properties that can be applied to the element or by using JavaScript.
@@ -48437,6 +49039,7 @@ export type CustomElements = {
48437
49039
  *
48438
49040
  * These can be used to apply styling when a component is in a given state.
48439
49041
  *
49042
+ * - `open`: While a megamenu or another disclosure among the destinations is open.
48440
49043
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
48441
49044
  */
48442
49045
  "helix-headless-navigation": Partial<
@@ -51221,6 +51824,12 @@ export type CustomElements = {
51221
51824
  * element, and its marks follow it: `lang="de"` sets „…“ and `lang="fr"` «…»
51222
51825
  * inside an English page.
51223
51826
  *
51827
+ * **`no-marks` leaves the marks off**, for a quotation set where the page draws
51828
+ * its own, such as a pull quote with a large decorative mark beside it or a
51829
+ * table of sayings. The quotation still counts toward nesting, so a quote
51830
+ * inside it takes the inner marks it would have had. Text with marks typed
51831
+ * into it raises no warning under `no-marks`.
51832
+ *
51224
51833
  * For a passage set off from the surrounding text, use a blockquote.
51225
51834
  *
51226
51835
  * ## Attributes & Properties
@@ -51228,6 +51837,12 @@ export type CustomElements = {
51228
51837
  * Component attributes and properties that can be applied to the element or by using JavaScript.
51229
51838
  *
51230
51839
  * - `cite`: URL identifying where the quotation came from.
51840
+ * - `no-marks`/`noMarks`: Whether to leave the quotation marks off, for a quotation set where the
51841
+ * page draws its own.
51842
+ *
51843
+ * Negative, because the marks are on by default and a boolean attribute is
51844
+ * true whenever it is present. Reflected, because a stylesheet takes the
51845
+ * marks off on it.
51231
51846
  * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
51232
51847
  *
51233
51848
  * **Named `whenSettled` because `settled` is taken four times over**, by
@@ -52420,7 +53035,10 @@ export type CustomElements = {
52420
53035
  * place for focus to return to when the list closes.
52421
53036
  *
52422
53037
  * Your options stay in your light DOM and are slotted through into the listbox,
52423
- * 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.
52424
53042
  *
52425
53043
  * `Select` owns the value, passes it down to the listbox, and takes changes
52426
53044
  * back, so the value lives in one place.
@@ -52565,6 +53183,17 @@ export type CustomElements = {
52565
53183
  *
52566
53184
  * No attribute, because it is coordination between elements rather than
52567
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)
52568
53197
  * - `valueContent`: What the trigger shows for the chosen options: a function given them, in
52569
53198
  * the order they appear, that returns text, an element or a Lit template.
52570
53199
  *
@@ -52742,6 +53371,8 @@ export type CustomElements = {
52742
53371
  *
52743
53372
  * - `invalid`: The control has an error to show, from the browser's validation or from your `feedback`.
52744
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.
52745
53376
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
52746
53377
  */
52747
53378
  "helix-headless-select": Partial<
@@ -52918,7 +53549,12 @@ export type CustomElements = {
52918
53549
  * does not draw a hundred and one marks by accident.
52919
53550
  *
52920
53551
  * A range with two thumbs is two inputs stacked on one track, because there is
52921
- * 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`.
52922
53558
  * `min-steps-between-thumbs` keeps them that many steps apart, and the readout
52923
53559
  * joins the two as `range-text` writes them.
52924
53560
  *
@@ -52949,6 +53585,8 @@ export type CustomElements = {
52949
53585
  * | Page Up, Page Down | Moves the thumb by a larger step. |
52950
53586
  * | Home, End | Moves the thumb to its lowest or highest value. |
52951
53587
  *
53588
+ * Under `readonly` none of these move the thumb, and Tab still reaches it.
53589
+ *
52952
53590
  * Each thumb is an `<input type="range">` with `aria-valuetext` where the value
52953
53591
  * is formatted or worded. A range's thumbs say they stop at each other with
52954
53592
  * `aria-valuemin` and `aria-valuemax`.
@@ -53007,13 +53645,24 @@ export type CustomElements = {
53007
53645
  * between its thumbs and ignores it.
53008
53646
  * - `range`: Adds a second thumb, so the value is a pair.
53009
53647
  *
53010
- * The pair is one string, `"10,50"`, which is what a form submits and what
53011
- * `MixinControllerValue` already holds. `valueAsNumber` reads the lower of
53012
- * 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.
53013
53653
  * - `range-text`/`rangeText`: How the readout joins a range's two values, with `{start}` and `{end}`
53014
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`.
53015
53661
  * - `show-value`/`showValue`: Shows the chosen value beside the track.
53016
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`.
53017
53666
  * - `tooltip`: Whether each thumb shows its value in a bubble beside it, as Web
53018
53667
  * Awesome's `with-tooltip`. The styled slider shows the bubbles while the
53019
53668
  * slider is under the pointer or holds focus. They repeat what each thumb
@@ -53115,6 +53764,8 @@ export type CustomElements = {
53115
53764
  * - `feedback`: The message that says what is wrong, for content richer than a string. It shows while there is a message.
53116
53765
  * - `hint`: Help under the control, for content richer than the `hint` text.
53117
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.
53118
53769
  *
53119
53770
  * ## Methods
53120
53771
  *
@@ -53183,7 +53834,7 @@ export type CustomElements = {
53183
53834
  *
53184
53835
  * CSS variables available for styling the component.
53185
53836
  *
53186
- * - `--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.
53187
53838
  * - `--slider-fraction`: The value as a fraction of the range, 0 to 1.
53188
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`.
53189
53840
  * - `--slider-marker-at`: Where one marker sits, as a percentage of the track.
@@ -53193,7 +53844,7 @@ export type CustomElements = {
53193
53844
  *
53194
53845
  * Custom selectors for styling elements within the component.
53195
53846
  *
53196
- * - `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.
53197
53848
  * - `feedback`: The error message under the track.
53198
53849
  * - `field`: The row that holds the control and its readout.
53199
53850
  * - `hint`: The help text under the track, shown while there is no error.
@@ -53202,7 +53853,9 @@ export type CustomElements = {
53202
53853
  * - `marker-label`: The value a mark stands at, when `marker-labels` is set.
53203
53854
  * - `markers`: The row of marks along the track.
53204
53855
  * - `output`: The current value, shown beside the track.
53205
- * - `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.
53206
53859
  * - `tooltips`: The layer over the track that holds the bubbles, under `tooltip`.
53207
53860
  *
53208
53861
  * ## CSS States
@@ -53500,14 +54153,25 @@ export type CustomElements = {
53500
54153
  * Put a `Kbd` in the `shortcut` slot to draw it as keys instead; the dial
53501
54154
  * imports no `Kbd` of its own. Showing a shortcut does not bind it.
53502
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
+ *
53503
54161
  * ## Attributes & Properties
53504
54162
  *
53505
54163
  * Component attributes and properties that can be applied to the element or by using JavaScript.
53506
54164
  *
53507
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"`.
53508
54171
  * - `shortcut`: The action's keyboard shortcut as a chord, such as `mod+s`, carried as
53509
54172
  * `aria-keyshortcuts` and drawn after the name. `mod` is Command on an Apple
53510
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.
53511
54175
  * - `value`: The action's value, sent in `helix-select` when the action is chosen.
53512
54176
  * - `active`: Whether the action has focus, which makes it the action the keyboard is on.
53513
54177
  *
@@ -53564,7 +54228,7 @@ export type CustomElements = {
53564
54228
  * Custom selectors for styling elements within the component.
53565
54229
  *
53566
54230
  * - `icon`: The box that holds the icon.
53567
- * - `item`: The control for the action.
54231
+ * - `item`: The control for the action, which is an `<a>` where `href` is set.
53568
54232
  * - `label`: The action's name, beside the icon.
53569
54233
  * - `shortcut`: The box after the name that holds the shortcut, shown while `shortcut` is set or something is in the `shortcut` slot.
53570
54234
  *
@@ -53601,8 +54265,9 @@ export type CustomElements = {
53601
54265
  * action whose name starts with it. The actions are one tab stop, and Tab
53602
54266
  * closes the dial and moves on.
53603
54267
  *
53604
- * **Keyboard.** On the trigger, Enter, Space or a press opens the dial on its
53605
- * 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:
53606
54271
  *
53607
54272
  * | Key | What it does |
53608
54273
  * |---|---|
@@ -53626,6 +54291,13 @@ export type CustomElements = {
53626
54291
  * and a slotted one alike. A press that has opened the dial does not also do
53627
54292
  * the trigger's action.
53628
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
+ *
53629
54301
  * ## Attributes & Properties
53630
54302
  *
53631
54303
  * Component attributes and properties that can be applied to the element or by using JavaScript.
@@ -53639,9 +54311,11 @@ export type CustomElements = {
53639
54311
  * plain element of yours once a reader reaches it, after hydration, unless
53640
54312
  * you described or labeled it yourself.
53641
54313
  * - `offset`: Space between the trigger and the actions, in pixels.
53642
- * - `open-on`/`openOn`: What opens the dial. `click` opens it on a press of the trigger. Under
53643
- * `long-press`, a press is the trigger's own action, and the dial opens on a
53644
- * 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.
53645
54319
  * - `placement`: The direction the actions open in. They move to another side if that side
53646
54320
  * does not fit.
53647
54321
  *
@@ -53695,6 +54369,7 @@ export type CustomElements = {
53695
54369
  * Areas where markup can be added to the component.
53696
54370
  *
53697
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.
53698
54373
  * - `trigger`: The control that opens the actions. Without one, a button named by `label` is drawn.
53699
54374
  *
53700
54375
  * ## Methods
@@ -53764,6 +54439,13 @@ export type CustomElements = {
53764
54439
  * takes all of the change, as Web Awesome's split panel does. Without it,
53765
54440
  * both panes keep their share.
53766
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
+ *
53767
54449
  * **Keyboard.** The divider is one tab stop.
53768
54450
  *
53769
54451
  * | Key | What it does |
@@ -53951,15 +54633,21 @@ export type CustomElements = {
53951
54633
  >;
53952
54634
 
53953
54635
  /**
53954
- * Screen readers announce the stats as a group. The figures are read together
53955
- * and their order has no meaning, so the group does not announce positions such
53956
- * as "1 of 4".
54636
+ * **A named group is a group**, so a screen reader announces the stats
54637
+ * together under its name, such as "Usage, group". Name it with `label`,
54638
+ * `aria-label` or `aria-labelledby`. An unnamed one has no role, since a group
54639
+ * with no name only adds "group" to what a reader says, as an unnamed Card
54640
+ * has none. The figures are read together and their order has no meaning, so
54641
+ * the group does not announce positions such as "1 of 4".
53957
54642
  *
53958
54643
  * ## Attributes & Properties
53959
54644
  *
53960
54645
  * Component attributes and properties that can be applied to the element or by using JavaScript.
53961
54646
  *
53962
- * - `label`: Accessible name for the group.
54647
+ * - `label`: Accessible name for the group, which makes it a group.
54648
+ *
54649
+ * Absent leaves the stats with no group around them, unless `aria-label` or
54650
+ * `aria-labelledby` names it.
53963
54651
  * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
53964
54652
  *
53965
54653
  * **Named `whenSettled` because `settled` is taken four times over**, by
@@ -53987,6 +54675,14 @@ export type CustomElements = {
53987
54675
  *
53988
54676
  * - `(default)`: The stats.
53989
54677
  *
54678
+ * ## Methods
54679
+ *
54680
+ * Methods that can be called to access component functionality.
54681
+ *
54682
+ * - `attributeChangedCallback(name: string, old: string | null, value: string | null) => void`: Called by the browser when an observed attribute changes. A name written
54683
+ * or taken off asks for an update, because it decides whether the stats are
54684
+ * a group.
54685
+ *
53990
54686
  * ## CSS States
53991
54687
  *
53992
54688
  * These can be used to apply styling when a component is in a given state.
@@ -54013,6 +54709,19 @@ export type CustomElements = {
54013
54709
  * attribute; a stat with no label has no role. Put a `Trend` in the `trend`
54014
54710
  * slot to have it read inside the group, after the figure it qualifies.
54015
54711
  *
54712
+ * **Or give the figure as a number.** `value` is written with
54713
+ * `Intl.NumberFormat`, in `locale` and with `format-options`, so
54714
+ * `value="1234567" format-options='{"notation":"compact"}'` shows `1.2M`, and
54715
+ * a server writes it as the browser does. A number in `value` takes the place
54716
+ * of a slotted figure.
54717
+ *
54718
+ * **Each slot is a part of the same name**, and `value` for the figure, so a
54719
+ * page reaches the label, the unit and the trend from outside. A slot draws no
54720
+ * box, so a part passes inherited properties to what is slotted. **The stat
54721
+ * says which pieces it holds**, as `:state(has-label)`, `:state(has-unit)` and
54722
+ * `:state(has-trend)`, read in the browser, so a served stat carries none
54723
+ * until the script runs.
54724
+ *
54016
54725
  * ## Attributes & Properties
54017
54726
  *
54018
54727
  * Component attributes and properties that can be applied to the element or by using JavaScript.
@@ -54042,6 +54751,20 @@ export type CustomElements = {
54042
54751
  * reports a hydration mismatch. The absent attribute is the column, which the
54043
54752
  * stylesheet reads as the base case, and the server spec asserts the host
54044
54753
  * carries nothing nobody wrote.
54754
+ * - `format-options`/`formatOptions`: `Intl.NumberFormat` options `value` is written with, such as
54755
+ * `{"notation":"compact"}` for `1.2M` or `{"style":"percent"}` for `98%`,
54756
+ * written as JSON in the attribute.
54757
+ *
54758
+ * Absent writes the number as the locale writes any number.
54759
+ * - `locale`: The locale `value` is written in, such as `de` for `1.234.567`.
54760
+ *
54761
+ * Absent reads the nearest `lang`, then the runtime's own. Set it on a page
54762
+ * rendered on a server, so the server and the browser write the figure
54763
+ * alike.
54764
+ * - `value`: The figure as a number, written with `format-options` in `locale` in
54765
+ * place of a slotted value.
54766
+ *
54767
+ * Absent leaves the figure to the slot.
54045
54768
  * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
54046
54769
  *
54047
54770
  * **Named `whenSettled` because `settled` is taken four times over**, by
@@ -54076,12 +54799,18 @@ export type CustomElements = {
54076
54799
  *
54077
54800
  * Custom selectors for styling elements within the component.
54078
54801
  *
54079
- * - `value`: The slot the value is written in. A slot draws no box, so it takes the inherited properties, such as color and font, and passes them to the value.
54802
+ * - `label`: The slot the label arrives through, drawing no box, as `value` does.
54803
+ * - `trend`: The slot the trend arrives through, drawing no box, as `value` does.
54804
+ * - `unit`: The slot the unit arrives through, drawing no box, as `value` does.
54805
+ * - `value`: The slot the value is written in, or the figure `value` writes. A slot draws no box, so it takes the inherited properties, such as color and font, and passes them to the value.
54080
54806
  *
54081
54807
  * ## CSS States
54082
54808
  *
54083
54809
  * These can be used to apply styling when a component is in a given state.
54084
54810
  *
54811
+ * - `has-label`: Something is slotted into `label`.
54812
+ * - `has-trend`: Something is slotted into `trend`.
54813
+ * - `has-unit`: Something is slotted into `unit`.
54085
54814
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
54086
54815
  */
54087
54816
  "helix-headless-stat": Partial<
@@ -54101,7 +54830,13 @@ export type CustomElements = {
54101
54830
  * UI's linear steps do: a stage ahead is out of reach, and its button disabled,
54102
54831
  * until every stage before it is `complete` or `optional`. Going back is always
54103
54832
  * allowed. `next()` and `previous()` move one stage either way, under the
54104
- * 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.
54105
54840
  *
54106
54841
  * To check a stage before a reader moves on from it, set `validate` to a
54107
54842
  * function that answers whether the stage is valid, as Ark UI's `isStepValid`
@@ -54122,10 +54857,25 @@ export type CustomElements = {
54122
54857
  * current stage's button says `aria-current="step"`, and a finished stage's
54123
54858
  * button is described by its `complete-label`.
54124
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
+ *
54125
54867
  * ## Attributes & Properties
54126
54868
  *
54127
54869
  * Component attributes and properties that can be applied to the element or by using JavaScript.
54128
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.
54129
54879
  * - `label`: The sequence's name, read by screen readers.
54130
54880
  *
54131
54881
  * A list of stages is a landmark a reader arrives at out of order, so it
@@ -54216,6 +54966,10 @@ export type CustomElements = {
54216
54966
  * does. Returns whether it moved: not past the last stage, not into a stage
54217
54967
  * `linear` holds out of reach, and not where a listener refused.
54218
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.
54219
54973
  * - `requestActive(next: string) => boolean`: Requests a new current item, and returns whether the change was applied.
54220
54974
  *
54221
54975
  * Announces before it acts, so `preventDefault()` on the `helix-before-activate` is
@@ -54327,6 +55081,8 @@ export type CustomElements = {
54327
55081
  *
54328
55082
  * Methods that can be called to access component functionality.
54329
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.
54330
55086
  * - `select() => void`: Fires `helix-select` for the step, unless the step is `disabled` or a
54331
55087
  * linear sequence has it out of reach.
54332
55088
  *
@@ -54352,6 +55108,7 @@ export type CustomElements = {
54352
55108
  * These can be used to apply styling when a component is in a given state.
54353
55109
  *
54354
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.
54355
55112
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
54356
55113
  */
54357
55114
  "helix-headless-step": Partial<
@@ -55391,6 +56148,16 @@ export type CustomElements = {
55391
56148
  * `active` says so, with `helix-activate`. Where the removed tab had focus,
55392
56149
  * focus moves to the tab now selected.
55393
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
+ *
55394
56161
  * The `indicator` part moves to the selected tab and carries its place and
55395
56162
  * size, so a mark of your own can be drawn there: style the part, or slot an
55396
56163
  * element into `indicator`, which sits inside the part and reads the same
@@ -55414,6 +56181,8 @@ export type CustomElements = {
55414
56181
  * panels and tells a screen reader the list is vertical.
55415
56182
  *
55416
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.
55417
56186
  * - `variant`: How the row of tabs is drawn.
55418
56187
  *
55419
56188
  * Unset is a raised pill on the selected tab with nothing behind the row,
@@ -55503,6 +56272,8 @@ export type CustomElements = {
55503
56272
  *
55504
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.
55505
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.
55506
56277
  * - `tabs`: The tab list.
55507
56278
  *
55508
56279
  * ## CSS States
@@ -55523,14 +56294,27 @@ export type CustomElements = {
55523
56294
  * first, and canceling it keeps the browser from following, so a client-side
55524
56295
  * router follows it instead.
55525
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
+ *
55526
56306
  * ## Attributes & Properties
55527
56307
  *
55528
56308
  * Component attributes and properties that can be applied to the element or by using JavaScript.
55529
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`.
55530
56313
  * - `href`: The URL the tab links to. Setting it renders the tab as a link, for a set
55531
56314
  * of tabs that are pages of a site.
55532
56315
  * - `rel`: The link's `rel`, for a tab with an `href`.
55533
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.
55534
56318
  * - `disabled`: Whether the item is disabled and cannot be chosen.
55535
56319
  * - `selected`: Whether the item is selected.
55536
56320
  *
@@ -55564,6 +56348,7 @@ export type CustomElements = {
55564
56348
  *
55565
56349
  * Events that will be emitted by the component.
55566
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.
55567
56352
  * - `helix-select`: Fired when the tab is chosen. Cancelable: canceling it stops the change and leaves the decision to you.
55568
56353
  *
55569
56354
  * ## Slots
@@ -55578,6 +56363,10 @@ export type CustomElements = {
55578
56363
  *
55579
56364
  * - `focus(options?: FocusOptions) => void`: Moves focus to the tab's control, the button or the link inside it, so a
55580
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.
55581
56370
  * - `focusItem() => void`: Moves focus to the item's control, for the set's arrow keys.
55582
56371
  *
55583
56372
  * The set drives the keys and cannot reach the control itself, which is
@@ -55590,6 +56379,7 @@ export type CustomElements = {
55590
56379
  *
55591
56380
  * Custom selectors for styling elements within the component.
55592
56381
  *
56382
+ * - `dismiss`: The mark a pointer presses to close a `dismissible` tab.
55593
56383
  * - `tab`: The tab itself.
55594
56384
  *
55595
56385
  * ## CSS States
@@ -55614,8 +56404,12 @@ export type CustomElements = {
55614
56404
  * `selection-mode` lets a reader select tags, with Space, Enter or a press:
55615
56405
  * `single` selects one at a time and `multiple` any number. In `multiple`,
55616
56406
  * Shift with an arrow, Home or End selects the range from the tag last
55617
- * pressed to the tag focus moves to, and Control or Command with A selects
55618
- * 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
55619
56413
  * selected tags' values, separated by commas, and a change asks with
55620
56414
  * `helix-before-change` and tells with `change`. Enter on a tag with an
55621
56415
  * `href` follows its link. A `disabled` tag is passed over. A selected tag
@@ -55637,10 +56431,19 @@ export type CustomElements = {
55637
56431
  *
55638
56432
  * Component attributes and properties that can be applied to the element or by using JavaScript.
55639
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`.
55640
56437
  * - `empty-label`/`emptyLabel`: The words the group shows and says once its last tag is removed, where
55641
56438
  * nothing is in the `empty` slot.
55642
56439
  * - `label`: The name of the set, such as "Filters", which a screen reader announces
55643
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.
55644
56447
  * - `selection-mode`/`selectionMode`: How many tags a reader can select: `single`, `multiple`, or none.
55645
56448
  *
55646
56449
  * Absent selects nothing, and the tags carry no selected state at all.
@@ -57737,6 +58540,8 @@ export type CustomElements = {
57737
58540
  * Areas where markup can be added to the component.
57738
58541
  *
57739
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.
57740
58545
  *
57741
58546
  * ## Methods
57742
58547
  *
@@ -58706,6 +59511,13 @@ export type CustomElements = {
58706
59511
  * or open, and the tree's one tab stop stays on the item last reached. In a
58707
59512
  * tree of check marks, Control+A (Command+A on an Apple keyboard) checks every
58708
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.
58709
59521
  *
58710
59522
  * Removing the item that has focus moves focus to the item after it among its
58711
59523
  * siblings, or the one before, or its parent, so focus stays in the tree.
@@ -58721,7 +59533,15 @@ export type CustomElements = {
58721
59533
  * `helix-before-reorder`, which you can refuse, and then `helix-reorder`, whose
58722
59534
  * `keys` hold the siblings in the new order. **You move the items**: the tree
58723
59535
  * moves no element of yours, and focus follows the moved item once you have.
58724
- * 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`.
58725
59545
  *
58726
59546
  * ## Attributes & Properties
58727
59547
  *
@@ -58734,6 +59554,11 @@ export type CustomElements = {
58734
59554
  *
58735
59555
  * An `aria-label` or `aria-labelledby` on the host names the tree too, and
58736
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.
58737
59562
  * - `moved-label`/`movedLabel`: What screen readers hear each time an item moves, in a `reorderable`
58738
59563
  * tree. `{name}` is the item's words, `{position}` its place among its
58739
59564
  * siblings, counting from 1, and `{count}` the number of siblings.
@@ -60000,6 +60825,10 @@ export type CustomElementsSolidJs = {
60000
60825
  * and a closed section is `hidden` and `inert` instead, and find in page skips
60001
60826
  * it.
60002
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
+ *
60003
60832
  * While it is open, the content part carries the content's height as
60004
60833
  * `--accordion-content-height`, as Radix's accordion does, for a stylesheet
60005
60834
  * that animates the section open with keyframes of its own.
@@ -60136,6 +60965,7 @@ export type CustomElementsSolidJs = {
60136
60965
  *
60137
60966
  * These can be used to apply styling when a component is in a given state.
60138
60967
  *
60968
+ * - `closing`: While the item has closed and its content is still drawn, until the content part's animations end.
60139
60969
  * - `open`: While the item is open.
60140
60970
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
60141
60971
  */
@@ -60162,7 +60992,8 @@ export type CustomElementsSolidJs = {
60162
60992
  * Keys, on a trigger: Up and Down Arrow move to the previous and the next
60163
60993
  * trigger, and so do Left and Right, wrapping at the ends; Home and End go to
60164
60994
  * the first and the last. Enter and Space open and close the section. Disabled
60165
- * 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.
60166
60997
  *
60167
60998
  * Each trigger is a button with `aria-expanded` and `aria-controls`, inside a
60168
60999
  * heading, level 3 unless `heading-level` says otherwise, so the sections are
@@ -61114,6 +61945,12 @@ export type CustomElementsSolidJs = {
61114
61945
  * button "Inbox 8 unread", and stays current as the count changes. The styled
61115
61946
  * tier's `placement="inline"` draws the mark in the line for that case.
61116
61947
  *
61948
+ * **An icon goes inside the mark** through the `icon` slot, before the count,
61949
+ * as Web Awesome's badge takes one at its start. With no `value` the icon is
61950
+ * the whole mark, such as a check on an avatar, drawn where the dot would be.
61951
+ * The icon is hidden from screen readers: the count and `label` are what the
61952
+ * mark says.
61953
+ *
61117
61954
  * ## Attributes & Properties
61118
61955
  *
61119
61956
  * Component attributes and properties that can be applied to the element or by using JavaScript.
@@ -61177,12 +62014,14 @@ export type CustomElementsSolidJs = {
61177
62014
  * Areas where markup can be added to the component.
61178
62015
  *
61179
62016
  * - `(default)`: The element being decorated.
62017
+ * - `icon`: An icon inside the mark, before the count, or the whole mark when there is no value. Hidden from screen readers.
61180
62018
  *
61181
62019
  * ## CSS Parts
61182
62020
  *
61183
62021
  * Custom selectors for styling elements within the component.
61184
62022
  *
61185
- * - `indicator`: The count, or the dot when there is no value.
62023
+ * - `icon`: The slot the icon arrives through, inside the indicator. A slot draws no box, so it passes inherited properties, such as color, to the icon.
62024
+ * - `indicator`: The count, or the dot when there is no value. Carries `data-dot` when there is no value, `data-single` when the count is one character, and `data-blank` when the value is zero.
61186
62025
  *
61187
62026
  * ## CSS States
61188
62027
  *
@@ -61190,7 +62029,8 @@ export type CustomElementsSolidJs = {
61190
62029
  *
61191
62030
  * - `blank`: The value is zero, so there is no mark.
61192
62031
  * - `capped`: The count is past `max`, so the mark shows `{max}+`.
61193
- * - `dot`: There is no value, so the mark is a dot.
62032
+ * - `dot`: There is no value and no icon, so the mark is a dot.
62033
+ * - `has-icon`: Something is slotted into `icon`, so it is drawn inside the mark.
61194
62034
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
61195
62035
  */
61196
62036
  "helix-headless-badge": Partial<
@@ -61679,8 +62519,11 @@ export type CustomElementsSolidJs = {
61679
62519
  * Set `href` to make the whole crumb an anchor, which works with Enter, middle
61680
62520
  * click, and the status bar, and before any JavaScript runs. A router cannot
61681
62521
  * reach an anchor inside a shadow root, so intercept the click for client-side
61682
- * navigation, as with `Tree.Item` and `List.Item`. A trail that collapses also
61683
- * 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.
61684
62527
  *
61685
62528
  * Without `href`, the crumb renders a plain `<span>` around what you slot,
61686
62529
  * including your own anchor.
@@ -61738,6 +62581,12 @@ export type CustomElementsSolidJs = {
61738
62581
  * browser harness's awaits it alone: a browser always runs the frame, and a
61739
62582
  * timer beside it was a bet on how long one takes, which a busy run lost. (property only) (readonly)
61740
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
+ *
61741
62590
  * ## Slots
61742
62591
  *
61743
62592
  * Areas where markup can be added to the component.
@@ -61751,6 +62600,8 @@ export type CustomElementsSolidJs = {
61751
62600
  *
61752
62601
  * Custom selectors for styling elements within the component.
61753
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.
61754
62605
  * - `link`: The crumb itself, which is an `<a>` where `href` is set.
61755
62606
  * - `separator`: The separator preceding the item.
61756
62607
  * - `separator-mark`: The chevron between crumbs, shown when no separator is slotted.
@@ -61759,7 +62610,9 @@ export type CustomElementsSolidJs = {
61759
62610
  *
61760
62611
  * These can be used to apply styling when a component is in a given state.
61761
62612
  *
62613
+ * - `current`: While the crumb is the current page, marked `current` or the last of a trail with none marked.
61762
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.
61763
62616
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
61764
62617
  */
61765
62618
  "helix-headless-breadcrumb": Partial<
@@ -61790,11 +62643,13 @@ export type CustomElementsSolidJs = {
61790
62643
  * array of `{ label, href }`, drawn as crumbs in order, the last one as the
61791
62644
  * current page. Slotted crumbs follow them. Use one way or the other in a trail.
61792
62645
  *
61793
- * With `max-items`, a trail drawn from `items` that is longer folds its middle
61794
- * into one crumb: the first crumb, a button, then the last `max-items` less one.
61795
- * The button is named by `expand-label` and shows the whole trail, moving focus
61796
- * to the first crumb it brought back. A new `items` folds again. Slotted crumbs
61797
- * 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.
61798
62653
  *
61799
62654
  * **Keyboard.** Each crumb with an `href` is a link and one tab stop, and
61800
62655
  * Enter follows it. The current page and the separators are not in the tab
@@ -61853,6 +62708,8 @@ export type CustomElementsSolidJs = {
61853
62708
  * - `crumb`: Each crumb drawn from `items`.
61854
62709
  * - `crumb-collapsed`: The crumb that holds the folded middle of a trail longer than `max-items`.
61855
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.
61856
62713
  * - `crumb-link`: The link, or the current page's words, of a crumb drawn from `items`.
61857
62714
  * - `crumb-separator`: The separator before a crumb drawn from `items`.
61858
62715
  * - `crumb-separator-mark`: The chevron before a crumb drawn from `items`.
@@ -62001,6 +62858,7 @@ export type CustomElementsSolidJs = {
62001
62858
  *
62002
62859
  * These can be used to apply styling when a component is in a given state.
62003
62860
  *
62861
+ * - `pressed`: While a group with `selection-mode` has a button pressed.
62004
62862
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
62005
62863
  */
62006
62864
  "helix-headless-button-group": Partial<
@@ -63101,13 +63959,17 @@ export type CustomElementsSolidJs = {
63101
63959
  * through with `::part`.
63102
63960
  *
63103
63961
  * Name the card with `label`, as a Stat Group is named, or with `aria-label`
63104
- * or `aria-labelledby`. These are the only names that work with server
63105
- * rendering, because reading a title from the light DOM needs a DOM, and the
63106
- * server has none. `label` is set through `ElementInternals`, so it writes no
63107
- * attribute onto the card. **A named card is a group**, so a
63962
+ * or `aria-labelledby`. `label` is set through `ElementInternals`, so it
63963
+ * writes no attribute onto the card. **A named card is a group**, so a
63108
63964
  * reader entering it hears its name; an unnamed one has no role, since a group
63109
63965
  * with no name only adds "group" to what a reader says.
63110
63966
  *
63967
+ * **With none of those, a heading in `header` names the card**, such as the
63968
+ * `<h2>` of its title, by reference, so the name follows the heading's words.
63969
+ * Reading a heading needs a DOM, so a served card is named by it once the
63970
+ * script runs; `label`, `aria-label` and `aria-labelledby` are the names a
63971
+ * server writes.
63972
+ *
63111
63973
  * Each region's slot is a part of the same name, `body` for the main content,
63112
63974
  * as Web Awesome's card names its regions. A slot draws no box, so a part
63113
63975
  * passes inherited properties to what is slotted, and a page wanting a box
@@ -63117,7 +63979,9 @@ export type CustomElementsSolidJs = {
63117
63979
  * header's and the footer's line, as Web Awesome's card does. While one holds
63118
63980
  * something, its line is a `header-row` or `footer-row` part; otherwise there
63119
63981
  * is no wrapper and every region is a bare slot. A server cannot see slotted
63120
- * content, so served actions sit on their own line until the script runs.
63982
+ * content, so a served card has no row; the styled tier sets served actions at
63983
+ * the end of their line from the stylesheet alone, so they do not move when
63984
+ * the script runs.
63121
63985
  *
63122
63986
  * **The card says which regions it holds**, as `:state(has-media)`,
63123
63987
  * `:state(has-header)` and `:state(has-footer)`, so a sheet can draw a card
@@ -63145,8 +64009,6 @@ export type CustomElementsSolidJs = {
63145
64009
  *
63146
64010
  * Reflected and undefaulted, so a card that has not asked reads as a card
63147
64011
  * with no attribute on it and the stylesheet only describes the departure.
63148
- * - `aria-labelledby`/`undefined`: undefined
63149
- * - `aria-label`/`undefined`: undefined
63150
64012
  * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
63151
64013
  *
63152
64014
  * **Named `whenSettled` because `settled` is taken four times over**, by
@@ -63179,6 +64041,14 @@ export type CustomElementsSolidJs = {
63179
64041
  * - `header-actions`: Controls for the whole card at the end of the header's line, such as a menu.
63180
64042
  * - `media`: Image, video, or chart that runs edge to edge, outside the inset.
63181
64043
  *
64044
+ * ## Methods
64045
+ *
64046
+ * Methods that can be called to access component functionality.
64047
+ *
64048
+ * - `attributeChangedCallback(name: string, old: string | null, value: string | null) => void`: Called by the browser when an observed attribute changes. A name written
64049
+ * or taken off asks for an update, because it decides whether the card is a
64050
+ * group and whether its heading names it.
64051
+ *
63182
64052
  * ## CSS Parts
63183
64053
  *
63184
64054
  * Custom selectors for styling elements within the component.
@@ -64542,6 +65412,18 @@ export type CustomElementsSolidJs = {
64542
65412
  * and its copy button copies the new version of the file. `variant="split"`
64543
65413
  * shows the old version beside the new, each removal opposite its replacement.
64544
65414
  *
65415
+ * **A block that scrolls is a tab stop.** While its lines run past its width or
65416
+ * its cap, the scroller is a region named for the block, such as "Code,
65417
+ * app.ts", that Tab reaches, so a keyboard scrolls it with the arrow keys in
65418
+ * every browser. Chromium and Firefox make a scrolling box focusable on their
65419
+ * own, and Safari does not. A block that fits is no stop at all.
65420
+ *
65421
+ * **The code the block draws is marked untranslated**, `translate="no"` on
65422
+ * its `<pre>`, so a page translator leaves highlighted lines and a diff as
65423
+ * written. Code in the slot takes its translation mode from the element, which
65424
+ * writes nothing onto itself, so set `translate="no"` on the element to keep a
65425
+ * translator off plain code too.
65426
+ *
64545
65427
  * On the server, the slot renders as ordinary code, so a diff first appears as
64546
65428
  * the patch text in a `<pre>`. The client makes the same first render, which
64547
65429
  * keeps hydration clean, and draws the diff once it can read the content. Diff
@@ -64551,6 +65433,12 @@ export type CustomElementsSolidJs = {
64551
65433
  *
64552
65434
  * Component attributes and properties that can be applied to the element or by using JavaScript.
64553
65435
  *
65436
+ * - `code-label`/`codeLabel`: The name of a block that scrolls, which is a tab stop while it does.
65437
+ *
65438
+ * Where the block has a name, the scroller says it too, such as "Code,
65439
+ * app.ts", as `code-name-label` puts it.
65440
+ * - `code-name-label`/`codeNameLabel`: The name of a block that scrolls, where the block has a name. `{code}` is
65441
+ * `code-label` and `{name}` the block's name.
64554
65442
  * - `collapse-label`/`collapseLabel`: The expand button's words while the block shows every line.
64555
65443
  * - `copied-label`/`copiedLabel`: The copy button's name and tooltip text after a copy.
64556
65444
  * - `copy-label`/`copyLabel`: The copy button's name and tooltip text before a copy.
@@ -64719,6 +65607,13 @@ export type CustomElementsSolidJs = {
64719
65607
  * tools and document search. A styled span carries no such meaning, and a
64720
65608
  * screen reader announces nothing about it.
64721
65609
  *
65610
+ * **Set `translate="no"` on the element to keep a page translator off the
65611
+ * code.** A translator that rewrites prose would also rewrite an identifier.
65612
+ * The slotted text takes its translation mode from the element, its parent in
65613
+ * the page, and the element writes nothing onto itself, so the attribute is
65614
+ * yours to set. The `<code>` inside carries `translate="no"` for anything the
65615
+ * element draws itself.
65616
+ *
64722
65617
  * `Code` is inline only and never scrolls. For a block of code with its own
64723
65618
  * box, its own overflow, and copying, use `CodeBlock`, which is a separate
64724
65619
  * family.
@@ -64785,8 +65680,9 @@ export type CustomElementsSolidJs = {
64785
65680
  * style the panel to match your interface.
64786
65681
  *
64787
65682
  * The field reads every color syntax, including `#f00`, `#ff0000`,
64788
- * `rgb(255 0 0)`, `rgba(255,0,0,.5)`, `rgb(255 0 0 / 50%)`, and
64789
- * `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
64790
65686
  * field shows the value without reformatting it, because half-typed input does
64791
65687
  * not survive a round trip through a formatter. Date Input does the same with
64792
65688
  * dates.
@@ -64823,7 +65719,8 @@ export type CustomElementsSolidJs = {
64823
65719
  * Passed to the panel, whose square, hue ramp and presets say the color's
64824
65720
  * name, and read by the swatch in `swatch`, which says it before the value.
64825
65721
  * Color Picker lists the keys.
64826
- * - `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`.
64827
65724
  *
64828
65725
  * **Undefaulted, because it reflects.** The two together stamp an attribute
64829
65726
  * onto every host anybody renders, including the ones nobody configured: the
@@ -65066,6 +65963,8 @@ export type CustomElementsSolidJs = {
65066
65963
  * - `picker-channel-marker-label`: The value a mark stands at, when `marker-labels` is set.
65067
65964
  * - `picker-channel-markers`: The row of marks along the track.
65068
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.
65069
65968
  * - `picker-channel-tooltip`: A ramp's value in a bubble, where a ramp shows one.
65070
65969
  * - `picker-channel-tooltips`: The layer over a ramp's track that holds its bubble.
65071
65970
  * - `picker-channels`: The channel sliders beside the sample.
@@ -65090,7 +65989,9 @@ export type CustomElementsSolidJs = {
65090
65989
  * - `picker-grid-brightness`: The range input for the square's vertical axis.
65091
65990
  * - `picker-grid-handle`: The mark showing where in the square the color sits.
65092
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.
65093
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.
65094
65995
  * - `picker-sample`: A chip of the current color. Pressing it copies the value.
65095
65996
  * - `picker-swatch`: One preset.
65096
65997
  * - `picker-swatches`: The row of presets.
@@ -65141,6 +66042,11 @@ export type CustomElementsSolidJs = {
65141
66042
  * is named by its color. The opacity ramp is heard as a percentage. Set
65142
66043
  * `color-words` to speak the names in another language.
65143
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
+ *
65144
66050
  * The presets are a listbox with the current color selected, and one tab
65145
66051
  * stop. The arrow keys move between them, Home and End go to the ends, and
65146
66052
  * Enter, Space or a press chooses one.
@@ -65167,12 +66073,15 @@ export type CustomElementsSolidJs = {
65167
66073
  * language hears its own rather than English between its own labels.
65168
66074
  * - `channel-fields`/`channelFields`: Whether the picker shows a number field for each channel of the color, as
65169
66075
  * React Aria's ColorField does with `channel`: red, green and blue for hex
65170
- * and rgb, hue, saturation and lightness for hsl, and the opacity with
65171
- * `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`.
65172
66079
  *
65173
66080
  * For a reader who has the numbers from a brand guide, and for a keyboard,
65174
66081
  * where typing 128 is quicker than holding an arrow key. The fields follow
65175
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.
65176
66085
  * - `color-words`/`colorWords`: The words a color's name is spoken in, as JSON keyed by their English,
65177
66086
  * such as `{"red": "rot", "vibrant": "kräftiges"}`.
65178
66087
  *
@@ -65189,15 +66098,25 @@ export type CustomElementsSolidJs = {
65189
66098
  * - `copy-label`/`copyLabel`: The name of the sample, which copies the value. `{value}` is replaced with
65190
66099
  * the color.
65191
66100
  * - `eyedropper-label`/`eyedropperLabel`: What the eyedropper is called.
65192
- * - `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`.
65193
66103
  *
65194
66104
  * Only what is written. Everything is read whatever this says, so a picker on
65195
- * `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.
65196
66111
  * - `format-label`/`formatLabel`: What the syntax toggle is called, with `{format}` filled in.
65197
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.
65198
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.
65199
66118
  * - `lightness-label`/`lightnessLabel`: What the lightness channel's field is called, in `channel-fields` with
65200
- * hsl.
66119
+ * hsl and oklch.
65201
66120
  * - `no-eyedropper`/`noEyedropper`: Hides the eyedropper. Without it, the eyedropper appears in browsers that
65202
66121
  * support one.
65203
66122
  * - `no-format`/`noFormat`: Hides the syntax toggle, so the format cannot be changed.
@@ -65372,6 +66291,8 @@ export type CustomElementsSolidJs = {
65372
66291
  * Areas where markup can be added to the component.
65373
66292
  *
65374
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.
65375
66296
  *
65376
66297
  * ## Methods
65377
66298
  *
@@ -65454,6 +66375,8 @@ export type CustomElementsSolidJs = {
65454
66375
  * - `channel-marker-label`: The value a mark stands at, when `marker-labels` is set.
65455
66376
  * - `channel-markers`: The row of marks along the track.
65456
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.
65457
66380
  * - `channel-tooltip`: A ramp's value in a bubble, where a ramp shows one.
65458
66381
  * - `channel-tooltips`: The layer over a ramp's track that holds its bubble.
65459
66382
  * - `channels`: The ramps beside the sample.
@@ -65477,6 +66400,8 @@ export type CustomElementsSolidJs = {
65477
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.
65478
66401
  * - `grid-brightness`: The range input for the square's vertical axis.
65479
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.
65480
66405
  * - `sample`: A chip of the current color. Pressing it copies the value.
65481
66406
  * - `swatch`: One preset, an option in the `swatches` listbox.
65482
66407
  * - `swatches`: The row of presets, a listbox.
@@ -65488,7 +66413,10 @@ export type CustomElementsSolidJs = {
65488
66413
  *
65489
66414
  * These can be used to apply styling when a component is in a given state.
65490
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.
65491
66418
  * - `invalid`: While `invalid` is set or `feedback` says what is wrong.
66419
+ * - `sampling`: While the eyedropper is open over the screen.
65492
66420
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
65493
66421
  */
65494
66422
  "helix-headless-color-picker": Partial<
@@ -67151,6 +68079,7 @@ export type CustomElementsSolidJs = {
67151
68079
  * - `picker-day-outside`: A day from a neighboring month. Applied with `picker-day`.
67152
68080
  * - `picker-day-selected`: The chosen day, or either end of a chosen range. Applied with `picker-day`.
67153
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`.
67154
68083
  * - `picker-feedback`: The calendar's own message, under it, while the calendar's `feedback` is set.
67155
68084
  * - `picker-grid`: The grid of days.
67156
68085
  * - `picker-header`: The month name and its controls.
@@ -67242,15 +68171,22 @@ export type CustomElementsSolidJs = {
67242
68171
  * speaks it. Unset is the sentence registered for the page's language, then
67243
68172
  * the English. `{mode}` is `single`, `range` or `multiple`, so each can have
67244
68173
  * its own sentence.
67245
- * - `calendar`: The calendar the heading, the days, and the months are written in:
67246
- * `gregory`, `buddhist`, `japanese`, `roc`, or `iso8601`, the five whose
67247
- * months are the Gregorian months.
67248
- *
67249
- * Absent is the locale's own where it is one of the five, such as
67250
- * `buddhist` for `th-TH` or `japanese` for `ja-JP-u-ca-japanese`, and
67251
- * `gregory` for every other, such as `persian` for `fa-IR`, so the heading
67252
- * names the Gregorian month the grid shows. The value is `YYYY-MM-DD` in
67253
- * 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.
67254
68190
  * - `default-month`/`defaultMonth`: The month to open on when `month` is not set.
67255
68191
  * - `disable-dates`/`disableDates`: Dates that cannot be chosen, as `YYYY-MM-DD`, separated by commas or
67256
68192
  * spaces.
@@ -67276,8 +68212,9 @@ export type CustomElementsSolidJs = {
67276
68212
  * its days.
67277
68213
  * - `min`: Earliest selectable date, as `YYYY-MM-DD`.
67278
68214
  * - `mode`: How many dates can be held at once.
67279
- * - `month`: The month shown, as `YYYY-MM`. When it is not set, it follows `value`,
67280
- * 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.
67281
68218
  *
67282
68219
  * Separate from `value` on purpose, so paging selects nothing and a consumer
67283
68220
  * can drive the view. Reading gives the month on show; writing sets it, and
@@ -67324,6 +68261,13 @@ export type CustomElementsSolidJs = {
67324
68261
  * treated as one rather than as an error: a step of zero would block every
67325
68262
  * date including the one already chosen.
67326
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.
67327
68271
  * - `unavailable-message`/`unavailableMessage`: The validation message for a date that `disable-dates` or `disable-days`
67328
68272
  * bars.
67329
68273
  * - `value-missing-message`/`valueMissingMessage`: The validation message for a required date picker with no date chosen.
@@ -67444,6 +68388,8 @@ export type CustomElementsSolidJs = {
67444
68388
  *
67445
68389
  * Areas where markup can be added to the component.
67446
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.
67447
68393
  * - `next-icon`: The glyph on the control that moves forward a month, usually a caret.
67448
68394
  * - `previous-icon`: The glyph on the control that moves back a month, usually a caret.
67449
68395
  *
@@ -67528,6 +68474,7 @@ export type CustomElementsSolidJs = {
67528
68474
  * - `day-outside`: A day from a neighboring month, filling the grid out, beside `day`.
67529
68475
  * - `day-selected`: The chosen day, or either end of a chosen range, beside `day`.
67530
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`.
67531
68478
  * - `feedback`: The message under the calendar, while `feedback` is set.
67532
68479
  * - `grid`: The grid of days.
67533
68480
  * - `header`: The month name and its controls.
@@ -67546,7 +68493,7 @@ export type CustomElementsSolidJs = {
67546
68493
  * - `previous`: The control that moves to the previous month.
67547
68494
  * - `previous-mark`: The glyph on the previous month control, where none is slotted.
67548
68495
  * - `week`: One row of days.
67549
- * - `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.
67550
68497
  *
67551
68498
  * ## CSS States
67552
68499
  *
@@ -68814,7 +69761,16 @@ export type CustomElementsSolidJs = {
68814
69761
  *
68815
69762
  * Every region is a bare slot. There is no `empty-state-heading` or
68816
69763
  * `empty-state-actions` element: assign your own heading and actions to the
68817
- * slots.
69764
+ * slots. The icon, the message and the actions slots are parts of the same
69765
+ * names, as Card's regions are. A slot draws no box, so a part passes
69766
+ * inherited properties, such as color and font, to what is slotted, and a
69767
+ * page wanting a box there gives it one with `display`, such as a row of
69768
+ * actions with `display: flex`.
69769
+ *
69770
+ * **The view says which regions it holds**, as `:state(has-icon)` and
69771
+ * `:state(has-actions)`, so a sheet can space a view with no icon or no
69772
+ * actions differently. Read in the browser, so a served view carries neither
69773
+ * until the script runs.
68818
69774
  *
68819
69775
  * **Or give the heading as words.** `heading` draws them in a `heading` part
68820
69776
  * that is a heading at `heading-level`, 3 where it is not set, so a page
@@ -68879,13 +69835,18 @@ export type CustomElementsSolidJs = {
68879
69835
  *
68880
69836
  * Custom selectors for styling elements within the component.
68881
69837
  *
69838
+ * - `actions`: The slot the actions arrive through. A slot draws no box, so it passes inherited properties to the actions; `display: flex` lays them out in a row.
68882
69839
  * - `heading`: The heading at `heading-level`: the one `heading` draws while nothing is slotted into `heading`, or the one around a slotted element that is no heading.
69840
+ * - `icon`: The slot the icon arrives through, drawing no box, as `actions` does.
68883
69841
  * - `live`: A copy of the heading and the message, in a live region that screen readers announce when the view appears. Visually hidden in the styled tier.
69842
+ * - `message`: The slot the message arrives through, drawing no box, as `actions` does.
68884
69843
  *
68885
69844
  * ## CSS States
68886
69845
  *
68887
69846
  * These can be used to apply styling when a component is in a given state.
68888
69847
  *
69848
+ * - `has-actions`: Something is slotted into `actions`.
69849
+ * - `has-icon`: Something is slotted into `icon`.
68889
69850
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
68890
69851
  */
68891
69852
  "helix-headless-empty": Partial<
@@ -71225,8 +72186,16 @@ export type CustomElementsSolidJs = {
71225
72186
  * a glyph that came later is drawn. A glyph registered after the element
71226
72187
  * rendered is drawn then.
71227
72188
  *
71228
- * A name with no match renders nothing, and the element fires `error`, so a
71229
- * typo in a name can be heard. It waits until the page has loaded and painted
72189
+ * **Or point `src` at an SVG file**, such as `src="/icons/rocket.svg"`, and
72190
+ * the element fetches it and draws its shapes in `currentColor` where the file
72191
+ * does not color them. A file is fetched once a page, however many icons name
72192
+ * it, and `load` fires when it is drawn. Scripts, event handlers and
72193
+ * `javascript:` links in the file are taken out before it is drawn. A server
72194
+ * fetches nothing, so a served icon with a `src` is drawn once the script
72195
+ * runs.
72196
+ *
72197
+ * A name with no match, or a `src` that is no SVG, renders nothing, and the
72198
+ * element fires `error`, so a typo in a name can be heard. It waits until the page has loaded and painted
71230
72199
  * first, so a library a later module registers is not taken for a typo.
71231
72200
  *
71232
72201
  * An icon is decorative by default and hidden from assistive technology. Set
@@ -71263,6 +72232,10 @@ export type CustomElementsSolidJs = {
71263
72232
  *
71264
72233
  * A name written `prefix:name` asks the library registered under that
71265
72234
  * prefix.
72235
+ * - `src`: The URL of an SVG file to draw, fetched once a page and drawn in
72236
+ * `currentColor` where the file does not color its shapes.
72237
+ *
72238
+ * Wins over `name`; `icon` wins over both. Absent draws `name`.
71266
72239
  * - `icon`: The icon to draw, as an object you import.
71267
72240
  *
71268
72241
  * **The scalable door, and the one this library uses internally.** An icon is
@@ -71300,8 +72273,8 @@ export type CustomElementsSolidJs = {
71300
72273
  *
71301
72274
  * Events that will be emitted by the component.
71302
72275
  *
71303
- * - `error`: `name` matches no registered icon and no library answers it, so nothing is drawn.
71304
- * - `load`: A glyph a library gave later for `name` is drawn.
72276
+ * - `error`: `name` matches no registered icon and no library answers it, or `src` is no SVG, so nothing is drawn.
72277
+ * - `load`: A glyph a library gave later for `name`, or the file at `src`, is drawn.
71305
72278
  *
71306
72279
  * ## Methods
71307
72280
  *
@@ -75566,6 +76539,15 @@ export type CustomElementsSolidJs = {
75566
76539
  * links and not a single control, and the keys across the other axis are
75567
76540
  * left to the page and to an open panel.
75568
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
+ *
75569
76551
  * ## Attributes & Properties
75570
76552
  *
75571
76553
  * Component attributes and properties that can be applied to the element or by using JavaScript.
@@ -75621,6 +76603,7 @@ export type CustomElementsSolidJs = {
75621
76603
  *
75622
76604
  * These can be used to apply styling when a component is in a given state.
75623
76605
  *
76606
+ * - `open`: While a megamenu or another disclosure among the destinations is open.
75624
76607
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
75625
76608
  */
75626
76609
  "helix-headless-navigation": Partial<
@@ -78434,6 +79417,12 @@ export type CustomElementsSolidJs = {
78434
79417
  * element, and its marks follow it: `lang="de"` sets „…“ and `lang="fr"` «…»
78435
79418
  * inside an English page.
78436
79419
  *
79420
+ * **`no-marks` leaves the marks off**, for a quotation set where the page draws
79421
+ * its own, such as a pull quote with a large decorative mark beside it or a
79422
+ * table of sayings. The quotation still counts toward nesting, so a quote
79423
+ * inside it takes the inner marks it would have had. Text with marks typed
79424
+ * into it raises no warning under `no-marks`.
79425
+ *
78437
79426
  * For a passage set off from the surrounding text, use a blockquote.
78438
79427
  *
78439
79428
  * ## Attributes & Properties
@@ -78441,6 +79430,12 @@ export type CustomElementsSolidJs = {
78441
79430
  * Component attributes and properties that can be applied to the element or by using JavaScript.
78442
79431
  *
78443
79432
  * - `cite`: URL identifying where the quotation came from.
79433
+ * - `no-marks`/`noMarks`: Whether to leave the quotation marks off, for a quotation set where the
79434
+ * page draws its own.
79435
+ *
79436
+ * Negative, because the marks are on by default and a boolean attribute is
79437
+ * true whenever it is present. Reflected, because a stylesheet takes the
79438
+ * marks off on it.
78444
79439
  * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
78445
79440
  *
78446
79441
  * **Named `whenSettled` because `settled` is taken four times over**, by
@@ -79645,7 +80640,10 @@ export type CustomElementsSolidJs = {
79645
80640
  * place for focus to return to when the list closes.
79646
80641
  *
79647
80642
  * Your options stay in your light DOM and are slotted through into the listbox,
79648
- * 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.
79649
80647
  *
79650
80648
  * `Select` owns the value, passes it down to the listbox, and takes changes
79651
80649
  * back, so the value lives in one place.
@@ -79790,6 +80788,17 @@ export type CustomElementsSolidJs = {
79790
80788
  *
79791
80789
  * No attribute, because it is coordination between elements rather than
79792
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)
79793
80802
  * - `valueContent`: What the trigger shows for the chosen options: a function given them, in
79794
80803
  * the order they appear, that returns text, an element or a Lit template.
79795
80804
  *
@@ -79967,6 +80976,8 @@ export type CustomElementsSolidJs = {
79967
80976
  *
79968
80977
  * - `invalid`: The control has an error to show, from the browser's validation or from your `feedback`.
79969
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.
79970
80981
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
79971
80982
  */
79972
80983
  "helix-headless-select": Partial<
@@ -80152,7 +81163,12 @@ export type CustomElementsSolidJs = {
80152
81163
  * does not draw a hundred and one marks by accident.
80153
81164
  *
80154
81165
  * A range with two thumbs is two inputs stacked on one track, because there is
80155
- * 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`.
80156
81172
  * `min-steps-between-thumbs` keeps them that many steps apart, and the readout
80157
81173
  * joins the two as `range-text` writes them.
80158
81174
  *
@@ -80183,6 +81199,8 @@ export type CustomElementsSolidJs = {
80183
81199
  * | Page Up, Page Down | Moves the thumb by a larger step. |
80184
81200
  * | Home, End | Moves the thumb to its lowest or highest value. |
80185
81201
  *
81202
+ * Under `readonly` none of these move the thumb, and Tab still reaches it.
81203
+ *
80186
81204
  * Each thumb is an `<input type="range">` with `aria-valuetext` where the value
80187
81205
  * is formatted or worded. A range's thumbs say they stop at each other with
80188
81206
  * `aria-valuemin` and `aria-valuemax`.
@@ -80241,13 +81259,24 @@ export type CustomElementsSolidJs = {
80241
81259
  * between its thumbs and ignores it.
80242
81260
  * - `range`: Adds a second thumb, so the value is a pair.
80243
81261
  *
80244
- * The pair is one string, `"10,50"`, which is what a form submits and what
80245
- * `MixinControllerValue` already holds. `valueAsNumber` reads the lower of
80246
- * 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.
80247
81267
  * - `range-text`/`rangeText`: How the readout joins a range's two values, with `{start}` and `{end}`
80248
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`.
80249
81275
  * - `show-value`/`showValue`: Shows the chosen value beside the track.
80250
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`.
80251
81280
  * - `tooltip`: Whether each thumb shows its value in a bubble beside it, as Web
80252
81281
  * Awesome's `with-tooltip`. The styled slider shows the bubbles while the
80253
81282
  * slider is under the pointer or holds focus. They repeat what each thumb
@@ -80349,6 +81378,8 @@ export type CustomElementsSolidJs = {
80349
81378
  * - `feedback`: The message that says what is wrong, for content richer than a string. It shows while there is a message.
80350
81379
  * - `hint`: Help under the control, for content richer than the `hint` text.
80351
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.
80352
81383
  *
80353
81384
  * ## Methods
80354
81385
  *
@@ -80417,7 +81448,7 @@ export type CustomElementsSolidJs = {
80417
81448
  *
80418
81449
  * CSS variables available for styling the component.
80419
81450
  *
80420
- * - `--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.
80421
81452
  * - `--slider-fraction`: The value as a fraction of the range, 0 to 1.
80422
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`.
80423
81454
  * - `--slider-marker-at`: Where one marker sits, as a percentage of the track.
@@ -80427,7 +81458,7 @@ export type CustomElementsSolidJs = {
80427
81458
  *
80428
81459
  * Custom selectors for styling elements within the component.
80429
81460
  *
80430
- * - `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.
80431
81462
  * - `feedback`: The error message under the track.
80432
81463
  * - `field`: The row that holds the control and its readout.
80433
81464
  * - `hint`: The help text under the track, shown while there is no error.
@@ -80436,7 +81467,9 @@ export type CustomElementsSolidJs = {
80436
81467
  * - `marker-label`: The value a mark stands at, when `marker-labels` is set.
80437
81468
  * - `markers`: The row of marks along the track.
80438
81469
  * - `output`: The current value, shown beside the track.
80439
- * - `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.
80440
81473
  * - `tooltips`: The layer over the track that holds the bubbles, under `tooltip`.
80441
81474
  *
80442
81475
  * ## CSS States
@@ -80741,14 +81774,25 @@ export type CustomElementsSolidJs = {
80741
81774
  * Put a `Kbd` in the `shortcut` slot to draw it as keys instead; the dial
80742
81775
  * imports no `Kbd` of its own. Showing a shortcut does not bind it.
80743
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
+ *
80744
81782
  * ## Attributes & Properties
80745
81783
  *
80746
81784
  * Component attributes and properties that can be applied to the element or by using JavaScript.
80747
81785
  *
80748
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"`.
80749
81792
  * - `shortcut`: The action's keyboard shortcut as a chord, such as `mod+s`, carried as
80750
81793
  * `aria-keyshortcuts` and drawn after the name. `mod` is Command on an Apple
80751
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.
80752
81796
  * - `value`: The action's value, sent in `helix-select` when the action is chosen.
80753
81797
  * - `active`: Whether the action has focus, which makes it the action the keyboard is on.
80754
81798
  *
@@ -80805,7 +81849,7 @@ export type CustomElementsSolidJs = {
80805
81849
  * Custom selectors for styling elements within the component.
80806
81850
  *
80807
81851
  * - `icon`: The box that holds the icon.
80808
- * - `item`: The control for the action.
81852
+ * - `item`: The control for the action, which is an `<a>` where `href` is set.
80809
81853
  * - `label`: The action's name, beside the icon.
80810
81854
  * - `shortcut`: The box after the name that holds the shortcut, shown while `shortcut` is set or something is in the `shortcut` slot.
80811
81855
  *
@@ -80843,8 +81887,9 @@ export type CustomElementsSolidJs = {
80843
81887
  * action whose name starts with it. The actions are one tab stop, and Tab
80844
81888
  * closes the dial and moves on.
80845
81889
  *
80846
- * **Keyboard.** On the trigger, Enter, Space or a press opens the dial on its
80847
- * 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:
80848
81893
  *
80849
81894
  * | Key | What it does |
80850
81895
  * |---|---|
@@ -80868,6 +81913,13 @@ export type CustomElementsSolidJs = {
80868
81913
  * and a slotted one alike. A press that has opened the dial does not also do
80869
81914
  * the trigger's action.
80870
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
+ *
80871
81923
  * ## Attributes & Properties
80872
81924
  *
80873
81925
  * Component attributes and properties that can be applied to the element or by using JavaScript.
@@ -80881,9 +81933,11 @@ export type CustomElementsSolidJs = {
80881
81933
  * plain element of yours once a reader reaches it, after hydration, unless
80882
81934
  * you described or labeled it yourself.
80883
81935
  * - `offset`: Space between the trigger and the actions, in pixels.
80884
- * - `open-on`/`openOn`: What opens the dial. `click` opens it on a press of the trigger. Under
80885
- * `long-press`, a press is the trigger's own action, and the dial opens on a
80886
- * 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.
80887
81941
  * - `placement`: The direction the actions open in. They move to another side if that side
80888
81942
  * does not fit.
80889
81943
  *
@@ -80937,6 +81991,7 @@ export type CustomElementsSolidJs = {
80937
81991
  * Areas where markup can be added to the component.
80938
81992
  *
80939
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.
80940
81995
  * - `trigger`: The control that opens the actions. Without one, a button named by `label` is drawn.
80941
81996
  *
80942
81997
  * ## Methods
@@ -81009,6 +82064,13 @@ export type CustomElementsSolidJs = {
81009
82064
  * takes all of the change, as Web Awesome's split panel does. Without it,
81010
82065
  * both panes keep their share.
81011
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
+ *
81012
82074
  * **Keyboard.** The divider is one tab stop.
81013
82075
  *
81014
82076
  * | Key | What it does |
@@ -81199,15 +82261,21 @@ export type CustomElementsSolidJs = {
81199
82261
  >;
81200
82262
 
81201
82263
  /**
81202
- * Screen readers announce the stats as a group. The figures are read together
81203
- * and their order has no meaning, so the group does not announce positions such
81204
- * as "1 of 4".
82264
+ * **A named group is a group**, so a screen reader announces the stats
82265
+ * together under its name, such as "Usage, group". Name it with `label`,
82266
+ * `aria-label` or `aria-labelledby`. An unnamed one has no role, since a group
82267
+ * with no name only adds "group" to what a reader says, as an unnamed Card
82268
+ * has none. The figures are read together and their order has no meaning, so
82269
+ * the group does not announce positions such as "1 of 4".
81205
82270
  *
81206
82271
  * ## Attributes & Properties
81207
82272
  *
81208
82273
  * Component attributes and properties that can be applied to the element or by using JavaScript.
81209
82274
  *
81210
- * - `label`: Accessible name for the group.
82275
+ * - `label`: Accessible name for the group, which makes it a group.
82276
+ *
82277
+ * Absent leaves the stats with no group around them, unless `aria-label` or
82278
+ * `aria-labelledby` names it.
81211
82279
  * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
81212
82280
  *
81213
82281
  * **Named `whenSettled` because `settled` is taken four times over**, by
@@ -81235,6 +82303,14 @@ export type CustomElementsSolidJs = {
81235
82303
  *
81236
82304
  * - `(default)`: The stats.
81237
82305
  *
82306
+ * ## Methods
82307
+ *
82308
+ * Methods that can be called to access component functionality.
82309
+ *
82310
+ * - `attributeChangedCallback(name: string, old: string | null, value: string | null) => void`: Called by the browser when an observed attribute changes. A name written
82311
+ * or taken off asks for an update, because it decides whether the stats are
82312
+ * a group.
82313
+ *
81238
82314
  * ## CSS States
81239
82315
  *
81240
82316
  * These can be used to apply styling when a component is in a given state.
@@ -81264,6 +82340,19 @@ export type CustomElementsSolidJs = {
81264
82340
  * attribute; a stat with no label has no role. Put a `Trend` in the `trend`
81265
82341
  * slot to have it read inside the group, after the figure it qualifies.
81266
82342
  *
82343
+ * **Or give the figure as a number.** `value` is written with
82344
+ * `Intl.NumberFormat`, in `locale` and with `format-options`, so
82345
+ * `value="1234567" format-options='{"notation":"compact"}'` shows `1.2M`, and
82346
+ * a server writes it as the browser does. A number in `value` takes the place
82347
+ * of a slotted figure.
82348
+ *
82349
+ * **Each slot is a part of the same name**, and `value` for the figure, so a
82350
+ * page reaches the label, the unit and the trend from outside. A slot draws no
82351
+ * box, so a part passes inherited properties to what is slotted. **The stat
82352
+ * says which pieces it holds**, as `:state(has-label)`, `:state(has-unit)` and
82353
+ * `:state(has-trend)`, read in the browser, so a served stat carries none
82354
+ * until the script runs.
82355
+ *
81267
82356
  * ## Attributes & Properties
81268
82357
  *
81269
82358
  * Component attributes and properties that can be applied to the element or by using JavaScript.
@@ -81293,6 +82382,20 @@ export type CustomElementsSolidJs = {
81293
82382
  * reports a hydration mismatch. The absent attribute is the column, which the
81294
82383
  * stylesheet reads as the base case, and the server spec asserts the host
81295
82384
  * carries nothing nobody wrote.
82385
+ * - `format-options`/`formatOptions`: `Intl.NumberFormat` options `value` is written with, such as
82386
+ * `{"notation":"compact"}` for `1.2M` or `{"style":"percent"}` for `98%`,
82387
+ * written as JSON in the attribute.
82388
+ *
82389
+ * Absent writes the number as the locale writes any number.
82390
+ * - `locale`: The locale `value` is written in, such as `de` for `1.234.567`.
82391
+ *
82392
+ * Absent reads the nearest `lang`, then the runtime's own. Set it on a page
82393
+ * rendered on a server, so the server and the browser write the figure
82394
+ * alike.
82395
+ * - `value`: The figure as a number, written with `format-options` in `locale` in
82396
+ * place of a slotted value.
82397
+ *
82398
+ * Absent leaves the figure to the slot.
81296
82399
  * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
81297
82400
  *
81298
82401
  * **Named `whenSettled` because `settled` is taken four times over**, by
@@ -81327,12 +82430,18 @@ export type CustomElementsSolidJs = {
81327
82430
  *
81328
82431
  * Custom selectors for styling elements within the component.
81329
82432
  *
81330
- * - `value`: The slot the value is written in. A slot draws no box, so it takes the inherited properties, such as color and font, and passes them to the value.
82433
+ * - `label`: The slot the label arrives through, drawing no box, as `value` does.
82434
+ * - `trend`: The slot the trend arrives through, drawing no box, as `value` does.
82435
+ * - `unit`: The slot the unit arrives through, drawing no box, as `value` does.
82436
+ * - `value`: The slot the value is written in, or the figure `value` writes. A slot draws no box, so it takes the inherited properties, such as color and font, and passes them to the value.
81331
82437
  *
81332
82438
  * ## CSS States
81333
82439
  *
81334
82440
  * These can be used to apply styling when a component is in a given state.
81335
82441
  *
82442
+ * - `has-label`: Something is slotted into `label`.
82443
+ * - `has-trend`: Something is slotted into `trend`.
82444
+ * - `has-unit`: Something is slotted into `unit`.
81336
82445
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
81337
82446
  */
81338
82447
  "helix-headless-stat": Partial<
@@ -81355,7 +82464,13 @@ export type CustomElementsSolidJs = {
81355
82464
  * UI's linear steps do: a stage ahead is out of reach, and its button disabled,
81356
82465
  * until every stage before it is `complete` or `optional`. Going back is always
81357
82466
  * allowed. `next()` and `previous()` move one stage either way, under the
81358
- * 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.
81359
82474
  *
81360
82475
  * To check a stage before a reader moves on from it, set `validate` to a
81361
82476
  * function that answers whether the stage is valid, as Ark UI's `isStepValid`
@@ -81376,10 +82491,25 @@ export type CustomElementsSolidJs = {
81376
82491
  * current stage's button says `aria-current="step"`, and a finished stage's
81377
82492
  * button is described by its `complete-label`.
81378
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
+ *
81379
82501
  * ## Attributes & Properties
81380
82502
  *
81381
82503
  * Component attributes and properties that can be applied to the element or by using JavaScript.
81382
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.
81383
82513
  * - `label`: The sequence's name, read by screen readers.
81384
82514
  *
81385
82515
  * A list of stages is a landmark a reader arrives at out of order, so it
@@ -81470,6 +82600,10 @@ export type CustomElementsSolidJs = {
81470
82600
  * does. Returns whether it moved: not past the last stage, not into a stage
81471
82601
  * `linear` holds out of reach, and not where a listener refused.
81472
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.
81473
82607
  * - `requestActive(next: string) => boolean`: Requests a new current item, and returns whether the change was applied.
81474
82608
  *
81475
82609
  * Announces before it acts, so `preventDefault()` on the `helix-before-activate` is
@@ -81584,6 +82718,8 @@ export type CustomElementsSolidJs = {
81584
82718
  *
81585
82719
  * Methods that can be called to access component functionality.
81586
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.
81587
82723
  * - `select() => void`: Fires `helix-select` for the step, unless the step is `disabled` or a
81588
82724
  * linear sequence has it out of reach.
81589
82725
  *
@@ -81609,6 +82745,7 @@ export type CustomElementsSolidJs = {
81609
82745
  * These can be used to apply styling when a component is in a given state.
81610
82746
  *
81611
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.
81612
82749
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
81613
82750
  */
81614
82751
  "helix-headless-step": Partial<
@@ -82667,6 +83804,16 @@ export type CustomElementsSolidJs = {
82667
83804
  * `active` says so, with `helix-activate`. Where the removed tab had focus,
82668
83805
  * focus moves to the tab now selected.
82669
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
+ *
82670
83817
  * The `indicator` part moves to the selected tab and carries its place and
82671
83818
  * size, so a mark of your own can be drawn there: style the part, or slot an
82672
83819
  * element into `indicator`, which sits inside the part and reads the same
@@ -82690,6 +83837,8 @@ export type CustomElementsSolidJs = {
82690
83837
  * panels and tells a screen reader the list is vertical.
82691
83838
  *
82692
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.
82693
83842
  * - `variant`: How the row of tabs is drawn.
82694
83843
  *
82695
83844
  * Unset is a raised pill on the selected tab with nothing behind the row,
@@ -82779,6 +83928,8 @@ export type CustomElementsSolidJs = {
82779
83928
  *
82780
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.
82781
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.
82782
83933
  * - `tabs`: The tab list.
82783
83934
  *
82784
83935
  * ## CSS States
@@ -82802,14 +83953,27 @@ export type CustomElementsSolidJs = {
82802
83953
  * first, and canceling it keeps the browser from following, so a client-side
82803
83954
  * router follows it instead.
82804
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
+ *
82805
83965
  * ## Attributes & Properties
82806
83966
  *
82807
83967
  * Component attributes and properties that can be applied to the element or by using JavaScript.
82808
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`.
82809
83972
  * - `href`: The URL the tab links to. Setting it renders the tab as a link, for a set
82810
83973
  * of tabs that are pages of a site.
82811
83974
  * - `rel`: The link's `rel`, for a tab with an `href`.
82812
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.
82813
83977
  * - `disabled`: Whether the item is disabled and cannot be chosen.
82814
83978
  * - `selected`: Whether the item is selected.
82815
83979
  *
@@ -82843,6 +84007,7 @@ export type CustomElementsSolidJs = {
82843
84007
  *
82844
84008
  * Events that will be emitted by the component.
82845
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.
82846
84011
  * - `helix-select`: Fired when the tab is chosen. Cancelable: canceling it stops the change and leaves the decision to you.
82847
84012
  *
82848
84013
  * ## Slots
@@ -82857,6 +84022,10 @@ export type CustomElementsSolidJs = {
82857
84022
  *
82858
84023
  * - `focus(options?: FocusOptions) => void`: Moves focus to the tab's control, the button or the link inside it, so a
82859
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.
82860
84029
  * - `focusItem() => void`: Moves focus to the item's control, for the set's arrow keys.
82861
84030
  *
82862
84031
  * The set drives the keys and cannot reach the control itself, which is
@@ -82869,6 +84038,7 @@ export type CustomElementsSolidJs = {
82869
84038
  *
82870
84039
  * Custom selectors for styling elements within the component.
82871
84040
  *
84041
+ * - `dismiss`: The mark a pointer presses to close a `dismissible` tab.
82872
84042
  * - `tab`: The tab itself.
82873
84043
  *
82874
84044
  * ## CSS States
@@ -82896,8 +84066,12 @@ export type CustomElementsSolidJs = {
82896
84066
  * `selection-mode` lets a reader select tags, with Space, Enter or a press:
82897
84067
  * `single` selects one at a time and `multiple` any number. In `multiple`,
82898
84068
  * Shift with an arrow, Home or End selects the range from the tag last
82899
- * pressed to the tag focus moves to, and Control or Command with A selects
82900
- * 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
82901
84075
  * selected tags' values, separated by commas, and a change asks with
82902
84076
  * `helix-before-change` and tells with `change`. Enter on a tag with an
82903
84077
  * `href` follows its link. A `disabled` tag is passed over. A selected tag
@@ -82919,10 +84093,19 @@ export type CustomElementsSolidJs = {
82919
84093
  *
82920
84094
  * Component attributes and properties that can be applied to the element or by using JavaScript.
82921
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`.
82922
84099
  * - `empty-label`/`emptyLabel`: The words the group shows and says once its last tag is removed, where
82923
84100
  * nothing is in the `empty` slot.
82924
84101
  * - `label`: The name of the set, such as "Filters", which a screen reader announces
82925
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.
82926
84109
  * - `selection-mode`/`selectionMode`: How many tags a reader can select: `single`, `multiple`, or none.
82927
84110
  *
82928
84111
  * Absent selects nothing, and the tags carry no selected state at all.
@@ -85044,6 +86227,8 @@ export type CustomElementsSolidJs = {
85044
86227
  * Areas where markup can be added to the component.
85045
86228
  *
85046
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.
85047
86232
  *
85048
86233
  * ## Methods
85049
86234
  *
@@ -86031,6 +87216,13 @@ export type CustomElementsSolidJs = {
86031
87216
  * or open, and the tree's one tab stop stays on the item last reached. In a
86032
87217
  * tree of check marks, Control+A (Command+A on an Apple keyboard) checks every
86033
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.
86034
87226
  *
86035
87227
  * Removing the item that has focus moves focus to the item after it among its
86036
87228
  * siblings, or the one before, or its parent, so focus stays in the tree.
@@ -86046,7 +87238,15 @@ export type CustomElementsSolidJs = {
86046
87238
  * `helix-before-reorder`, which you can refuse, and then `helix-reorder`, whose
86047
87239
  * `keys` hold the siblings in the new order. **You move the items**: the tree
86048
87240
  * moves no element of yours, and focus follows the moved item once you have.
86049
- * 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`.
86050
87250
  *
86051
87251
  * ## Attributes & Properties
86052
87252
  *
@@ -86059,6 +87259,11 @@ export type CustomElementsSolidJs = {
86059
87259
  *
86060
87260
  * An `aria-label` or `aria-labelledby` on the host names the tree too, and
86061
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.
86062
87267
  * - `moved-label`/`movedLabel`: What screen readers hear each time an item moves, in a `reorderable`
86063
87268
  * tree. `{name}` is the item's words, `{position}` its place among its
86064
87269
  * siblings, counting from 1, and `{count}` the number of siblings.
@@ -87455,7 +88660,7 @@ export type CustomCssProperties = {
87455
88660
  "--scroll-area-scroll-fraction"?: (string) | undefined;
87456
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. */
87457
88662
  "--scroll-area-thumb-fraction"?: (string) | undefined;
87458
- /** 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. */
87459
88664
  "--slider-at"?: (string) | undefined;
87460
88665
  /** The value as a fraction of the range, 0 to 1. */
87461
88666
  "--slider-fraction"?: (string) | undefined;