@fusion.dev/helix 0.143.0 → 0.144.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 (105) hide show
  1. package/custom-elements.json +10028 -511
  2. package/dist/badge/root/badge-root.css.js +35 -0
  3. package/dist/badge/root/badge-root.d.ts +16 -0
  4. package/dist/badge/root/badge-root.js +3 -0
  5. package/dist/blockquote/root/blockquote-root.css.js +5 -5
  6. package/dist/blockquote/root/blockquote-root.d.ts +5 -0
  7. package/dist/button/root/button-root.css.js +38 -1
  8. package/dist/button/root/button-root.d.ts +5 -0
  9. package/dist/button/root/button-root.js +2 -1
  10. package/dist/callout/root/callout-root.css.js +69 -11
  11. package/dist/callout/root/callout-root.d.ts +25 -2
  12. package/dist/callout/root/callout-root.js +4 -0
  13. package/dist/card/root/card-root.css.js +26 -1
  14. package/dist/card/root/card-root.d.ts +11 -0
  15. package/dist/checkbox-group/root/checkbox-group-root.d.ts +2 -0
  16. package/dist/checkbox-group/root/checkbox-group-root.js +2 -0
  17. package/dist/code-block/root/code-block-root.css.js +23 -0
  18. package/dist/code-block/root/code-block-root.d.ts +15 -0
  19. package/dist/code-block/root/code-block-root.js +8 -0
  20. package/dist/color-picker/root/color-picker-root.css.js +64 -0
  21. package/dist/color-picker/root/color-picker-root.d.ts +2 -0
  22. package/dist/copy-button/root/copy-button-root.css.js +5 -0
  23. package/dist/date-input/root/date-input-root.css.js +19 -0
  24. package/dist/date-input/root/date-input-root.d.ts +8 -0
  25. package/dist/date-input/root/date-input-root.js +2 -0
  26. package/dist/date-picker/root/date-picker-root.css.js +68 -0
  27. package/dist/date-picker/root/date-picker-root.d.ts +1 -0
  28. package/dist/dialog/root/dialog-root.css.js +47 -0
  29. package/dist/divider/root/divider-root.css.js +8 -3
  30. package/dist/divider/root/divider-root.d.ts +17 -1
  31. package/dist/divider/root/divider-root.js +4 -0
  32. package/dist/drawer/root/drawer-root.css.js +28 -1
  33. package/dist/element-events.generated.js +8 -5
  34. package/dist/empty/root/empty-root.css.js +9 -9
  35. package/dist/empty/root/empty-root.d.ts +9 -0
  36. package/dist/file-input/root/file-input-root.js +2 -0
  37. package/dist/filter-input/root/filter-input-root.js +2 -0
  38. package/dist/heatmap/root/heatmap-root.css.js +33 -5
  39. package/dist/heatmap/root/heatmap-root.d.ts +4 -1
  40. package/dist/icon/index.d.ts +1 -0
  41. package/dist/icon/index.js +1 -0
  42. package/dist/icon/root/icon-root.d.ts +1 -1
  43. package/dist/icon/root/icon-root.js +1 -1
  44. package/dist/icon/root/index.d.ts +2 -0
  45. package/dist/icon/root/index.js +2 -0
  46. package/dist/icon-button/root/icon-button-root.css.js +37 -0
  47. package/dist/icon-button/root/icon-button-root.d.ts +4 -0
  48. package/dist/icon-button/root/icon-button-root.js +2 -1
  49. package/dist/input/root/input-root.css.js +3 -3
  50. package/dist/input/root/input-root.d.ts +3 -0
  51. package/dist/legend/root/legend-root.css.js +40 -13
  52. package/dist/legend/root/legend-root.d.ts +6 -0
  53. package/dist/legend/root/legend-root.js +1 -1
  54. package/dist/lightbox/root/lightbox-root.css.js +84 -0
  55. package/dist/lightbox/root/lightbox-root.d.ts +1 -0
  56. package/dist/loader/root/loader-root.css.js +10 -0
  57. package/dist/loader/root/loader-root.d.ts +3 -0
  58. package/dist/meter/root/meter-root.css.js +23 -1
  59. package/dist/meter/root/meter-root.d.ts +5 -0
  60. package/dist/notifications/notification/notification.css.js +5 -0
  61. package/dist/number-input/root/number-input-root.css.js +3 -3
  62. package/dist/number-input/root/number-input-root.d.ts +3 -0
  63. package/dist/pin-input/root/pin-input-root.css.js +12 -5
  64. package/dist/pin-input/root/pin-input-root.d.ts +5 -0
  65. package/dist/popover/root/popover-root.css.js +36 -0
  66. package/dist/popover/root/popover-root.d.ts +1 -0
  67. package/dist/progress/root/progress-root.css.js +22 -1
  68. package/dist/progress/root/progress-root.d.ts +5 -0
  69. package/dist/quote/root/quote-root.css.js +1 -1
  70. package/dist/quote/root/quote-root.d.ts +1 -0
  71. package/dist/shared/chart/tooltip.css.js +25 -2
  72. package/dist/shared/field/field-segments.css.d.ts +1 -0
  73. package/dist/shared/field/field-segments.css.js +40 -0
  74. package/dist/skeleton/root/skeleton-root.css.js +56 -5
  75. package/dist/skeleton/root/skeleton-root.d.ts +17 -1
  76. package/dist/skeleton/root/skeleton-root.js +3 -0
  77. package/dist/stat/root/stat-root.css.js +7 -7
  78. package/dist/stat/root/stat-root.d.ts +8 -0
  79. package/dist/switch/root/switch-root.css.js +13 -5
  80. package/dist/switch/root/switch-root.d.ts +25 -1
  81. package/dist/switch/root/switch-root.js +7 -0
  82. package/dist/tag/group/tag-group.css.d.ts +1 -0
  83. package/dist/tag/group/tag-group.css.js +6 -0
  84. package/dist/tag/group/tag-group.d.ts +25 -0
  85. package/dist/tag/group/tag-group.js +16 -0
  86. package/dist/tag/index.d.ts +1 -0
  87. package/dist/tag/index.js +1 -0
  88. package/dist/tag/root/tag-root.css.js +50 -0
  89. package/dist/tag/root/tag-root.d.ts +4 -0
  90. package/dist/textarea/root/textarea-root.css.js +12 -4
  91. package/dist/textarea/root/textarea-root.d.ts +4 -0
  92. package/dist/time-input/root/time-input-root.css.js +19 -0
  93. package/dist/time-input/root/time-input-root.d.ts +8 -0
  94. package/dist/time-input/root/time-input-root.js +2 -0
  95. package/dist/toast/item/toast-item.css.js +16 -0
  96. package/dist/toggle/group/toggle-group.css.js +16 -0
  97. package/dist/tour/root/tour-root.css.js +8 -0
  98. package/dist/tour/stop/tour-stop.css.js +32 -0
  99. package/dist/trend/root/trend-root.css.js +12 -5
  100. package/dist/trend/root/trend-root.d.ts +6 -1
  101. package/lint.json +1 -1
  102. package/package.json +6 -6
  103. package/types/jsx.d.ts +4556 -111
  104. package/types/svelte.d.ts +1 -0
  105. package/types/vue.d.ts +1307 -24
package/types/vue.d.ts CHANGED
@@ -132,6 +132,7 @@ import type {
132
132
  HelixTabPanel,
133
133
  HelixTabs,
134
134
  HelixTab,
135
+ HelixTagGroup,
135
136
  HelixTag,
136
137
  HelixText,
137
138
  HelixTextarea,
@@ -192,6 +193,7 @@ import type {
192
193
  HelixSelectedEvent,
193
194
  HelixSortEvent,
194
195
  HelixSortedEvent,
196
+ HelixRejectEvent,
195
197
  HelixFacetEvent,
196
198
  HelixBeforeActivateEvent,
197
199
  HelixGraphFilterEvent,
@@ -791,6 +793,24 @@ for it is the one the registry already has. */
791
793
  shape?: (HelixAvatar["shape"]) | undefined;
792
794
  /** Edge length of the avatar. */
793
795
  size?: (HelixAvatar["size"]) | undefined;
796
+ /** How long, in milliseconds, a picture may take before the initials stand
797
+ in for it while it loads.
798
+
799
+ Absent keeps the picture's place empty until it arrives or fails. Set,
800
+ the initials show once the wait is over and the picture
801
+ replaces them when it arrives, so a slow connection shows who it is
802
+ without a cached picture flashing initials first. Radix's `delayMs` is the
803
+ same idea. */
804
+ "fallback-delay"?: (HelixAvatar["fallbackDelay"] | `${number}`) | undefined;
805
+ /** How long, in milliseconds, a picture may take before the initials stand
806
+ in for it while it loads.
807
+
808
+ Absent keeps the picture's place empty until it arrives or fails. Set,
809
+ the initials show once the wait is over and the picture
810
+ replaces them when it arrives, so a slow connection shows who it is
811
+ without a cached picture flashing initials first. Radix's `delayMs` is the
812
+ same idea. */
813
+ fallbackDelay?: (HelixAvatar["fallbackDelay"]) | undefined;
794
814
  /** Name of the person or entity.
795
815
 
796
816
  Used for the label and the initials. */
@@ -820,6 +840,13 @@ export type HelixAvatarVueEvents = {
820
840
  };
821
841
 
822
842
  export type HelixBadgeVueProps = {
843
+ /** Where the mark sits: a corner, `top-start`, `bottom-end` or `bottom-start`,
844
+ or `inline`, in the line after the content.
845
+
846
+ Absent is the top end, the corner a count is looked for in. `inline` is
847
+ for a badge inside a control, where its count is read as part of the
848
+ control's name. */
849
+ placement?: (HelixBadge["placement"]) | undefined;
823
850
  /** What the mark means. The stylesheet picks the fill from it.
824
851
 
825
852
  **`Tag`'s vocabulary, because a badge is the same kind of thing.** Both are
@@ -1285,6 +1312,22 @@ Lives here rather than only on `IconButton` so the two share one render.
1285
1312
  An icon-only button without it is a control a screen reader announces as
1286
1313
  "button" and nothing else. */
1287
1314
  label?: (HelixButton["label"]) | undefined;
1315
+ /** Whether the action the button started is still running.
1316
+
1317
+ A pending button keeps focus and stays in the tab order, and refuses every
1318
+ press: a click, Enter and Space, and Enter in a field of its form. The
1319
+ click does not reach your listeners. The inner control carries
1320
+ `aria-busy` and `aria-disabled`, and when the button becomes pending while
1321
+ it has focus, a reader hears `pending-label`. The styled button draws a
1322
+ turning ring over its words.
1323
+
1324
+ `disabled` takes the button out of reach. Use `pending` for the wait after
1325
+ a press, so focus stays where the reader left it. */
1326
+ pending?: (HelixButton["pending"]) | undefined;
1327
+ /** What a reader hears when the button becomes pending while it has focus. */
1328
+ "pending-label"?: (HelixButton["pendingLabel"]) | undefined;
1329
+ /** What a reader hears when the button becomes pending while it has focus. */
1330
+ pendingLabel?: (HelixButton["pendingLabel"]) | undefined;
1288
1331
  /** What activating the button does to its form. */
1289
1332
  type?: (HelixButton["type"]) | undefined;
1290
1333
  /** The value this button submits under its own `name`, as a native submit
@@ -1384,7 +1427,40 @@ invoker without an id in the same tree needs. */
1384
1427
 
1385
1428
  export type HelixButtonVueEvents = {};
1386
1429
 
1430
+ /** `HelixCallout` component event */
1431
+ export type HelixCalloutElementEvent<E = Event> = TypedEvent<HelixCallout, E>;
1432
+ /** `helix-dismiss` event type */
1433
+ export type HelixCalloutHelixDismissElementEvent =
1434
+ HelixCalloutElementEvent<HelixDismissEvent>;
1435
+
1387
1436
  export type HelixCalloutVueProps = {
1437
+ /** Where the callout's box ends, whatever its tone.
1438
+
1439
+ Absent, or `filled`, is the tint with the bar, the resting look.
1440
+ `outlined` draws the tone at the edge with no fill, and `plain` keeps only
1441
+ the bar and the mark, for an aside in running prose. The bar stays in
1442
+ every one, being what says the tone where the hue is not seen.
1443
+
1444
+ Web Awesome calls this `appearance`. It is `separation` here, as on
1445
+ `Announcement` and `Card`, since a box's edge and its meaning are two
1446
+ choices. */
1447
+ separation?: (HelixCallout["separation"]) | undefined;
1448
+ /** Whether the element shows a control that dismisses it. */
1449
+ dismissible?: (HelixCallout["dismissible"]) | undefined;
1450
+ /** The dismiss control's label, read by screen readers.
1451
+
1452
+ `attribute` is spelled out because Lit lowercases a property name to
1453
+ derive one rather than dash-casing it, so this would otherwise be
1454
+ reachable only as `dismisslabel`, which nobody would guess and no linter
1455
+ would catch. */
1456
+ "dismiss-label"?: (HelixCallout["dismissLabel"]) | undefined;
1457
+ /** The dismiss control's label, read by screen readers.
1458
+
1459
+ `attribute` is spelled out because Lit lowercases a property name to
1460
+ derive one rather than dash-casing it, so this would otherwise be
1461
+ reachable only as `dismisslabel`, which nobody would guess and no linter
1462
+ would catch. */
1463
+ dismissLabel?: (HelixCallout["dismissLabel"]) | undefined;
1388
1464
  /** What kind of attention the passage needs.
1389
1465
 
1390
1466
  `tone` is the axis for what a thing means, and this is a subset of it: a
@@ -1404,7 +1480,10 @@ Absent is the English for the tone: "Error", "Information", "Note",
1404
1480
  toneLabel?: (HelixCallout["toneLabel"]) | undefined;
1405
1481
  };
1406
1482
 
1407
- export type HelixCalloutVueEvents = {};
1483
+ export type HelixCalloutVueEvents = {
1484
+ /** The dismiss button was pressed. The callout does not remove itself, so remove it in response. Cancelable. */
1485
+ "helix-dismiss": HelixCalloutHelixDismissElementEvent;
1486
+ };
1408
1487
 
1409
1488
  export type HelixCanvasEdgeVueProps = {
1410
1489
  /** The name of the card the connection starts from. */
@@ -2048,6 +2127,10 @@ twice what this says once.
2048
2127
  Reflected and undefaulted, so a card that has not asked reads as a card
2049
2128
  with no attribute on it and the stylesheet only describes the departure. */
2050
2129
  mediaPlacement?: (HelixCard["mediaPlacement"]) | undefined;
2130
+ /** */
2131
+ "aria-labelledby"?: unknown;
2132
+ /** */
2133
+ "aria-label"?: unknown;
2051
2134
  };
2052
2135
 
2053
2136
  export type HelixCardVueEvents = {};
@@ -2760,10 +2843,19 @@ and this one was the English a form in another language still spoke in
2760
2843
  the bubble it raises on submit: `feedback` replaces the message under
2761
2844
  the field and does not reach that one. */
2762
2845
  valueMissingMessage?: (HelixCheckboxGroup["valueMissingMessage"]) | undefined;
2846
+ /** Whether a box above the set checks or unchecks every enabled box. */
2847
+ "select-all"?: (HelixCheckboxGroup["selectAll"]) | undefined;
2848
+ /** Whether a box above the set checks or unchecks every enabled box. */
2849
+ selectAll?: (HelixCheckboxGroup["selectAll"]) | undefined;
2850
+ /** The words beside the box `select-all` draws. */
2851
+ "select-all-label"?: (HelixCheckboxGroup["selectAllLabel"]) | undefined;
2852
+ /** The words beside the box `select-all` draws. */
2853
+ selectAllLabel?: (HelixCheckboxGroup["selectAllLabel"]) | undefined;
2763
2854
  /** The checked values, comma separated.
2764
2855
 
2765
2856
  Read from the boxes once they are known, so a box a script ticks directly
2766
- is in it at once. Written, it is pushed onto the boxes. */
2857
+ is in it at once. Written, it is pushed onto the boxes. A box whose value
2858
+ holds a comma cannot be named here: use `values`. */
2767
2859
  value?: (HelixCheckboxGroup["value"]) | undefined;
2768
2860
  /** Whether the control is disabled and cannot be used.
2769
2861
 
@@ -2791,6 +2883,11 @@ imperatively later, and nothing is hydrating by then.
2791
2883
 
2792
2884
  Here rather than on each control. */
2793
2885
  name?: (HelixCheckboxGroup["name"]) | undefined;
2886
+ /** The checked values, as a list, in the order the boxes are written.
2887
+
2888
+ The same set as `value`, and the one to use where a value may hold a
2889
+ comma. Written, it checks exactly those boxes and unchecks the rest. */
2890
+ values?: (HelixCheckboxGroup["values"]) | undefined;
2794
2891
  };
2795
2892
 
2796
2893
  export type HelixCheckboxGroupVueEvents = {
@@ -2848,6 +2945,28 @@ stylesheets. */
2848
2945
  "default-checked"?: (HelixCheckbox["defaultChecked"]) | undefined;
2849
2946
  /** Whether the control starts checked. A form reset returns it to this state. */
2850
2947
  defaultChecked?: (HelixCheckbox["defaultChecked"]) | undefined;
2948
+ /** Whether a reader can see and focus the control and cannot change it. A
2949
+ read-only control still submits its value.
2950
+
2951
+ React Aria's `isReadOnly`. A native checkbox has no read-only state, so
2952
+ the press is refused at the inner control, which keeps its box as it
2953
+ was, and the control says `aria-readonly`. A script can still set
2954
+ `checked`, as it can set the value of a read-only text field.
2955
+
2956
+ The attribute is `readonly`, which is the platform's spelling for the
2957
+ text fields. */
2958
+ readonly?: (HelixCheckbox["readOnly"]) | undefined;
2959
+ /** Whether a reader can see and focus the control and cannot change it. A
2960
+ read-only control still submits its value.
2961
+
2962
+ React Aria's `isReadOnly`. A native checkbox has no read-only state, so
2963
+ the press is refused at the inner control, which keeps its box as it
2964
+ was, and the control says `aria-readonly`. A script can still set
2965
+ `checked`, as it can set the value of a read-only text field.
2966
+
2967
+ The attribute is `readonly`, which is the platform's spelling for the
2968
+ text fields. */
2969
+ readOnly?: (HelixCheckbox["readOnly"]) | undefined;
2851
2970
  /** */
2852
2971
  "aria-label"?: unknown;
2853
2972
  /** The validation message shown under the control. It replaces the
@@ -2926,6 +3045,13 @@ export type HelixCheckboxVueEvents = {
2926
3045
  };
2927
3046
 
2928
3047
  export type HelixCodeBlockVueProps = {
3048
+ /** Whether long lines wrap.
3049
+
3050
+ Off by default, so long lines scroll, because a line break can be
3051
+ significant in code and a wrapped line reads as two. For prose-like code, such as a long command or
3052
+ a log line, a wrap reads better than a scroll. Line numbers keep the lines
3053
+ unwrapped, since a wrapped line would take one number and several rows. */
3054
+ wrap?: (HelixCodeBlock["wrap"]) | undefined;
2929
3055
  /** The copy button's name and tooltip text after a copy. */
2930
3056
  "copied-label"?: (HelixCodeBlock["copiedLabel"]) | undefined;
2931
3057
  /** The copy button's name and tooltip text after a copy. */
@@ -2944,6 +3070,20 @@ Reflected, because the stylesheet paints a diff differently from code, and
2944
3070
  In a diff, each file is named from the patch, and this names a patch that
2945
3071
  carries no name of its own. */
2946
3072
  label?: (HelixCodeBlock["label"]) | undefined;
3073
+ /** Whether the lines are numbered in a gutter beside the code.
3074
+
3075
+ The numbers are hidden from the accessibility tree and are not part of a
3076
+ copy, which takes the code alone. Reflected, because the stylesheet lays
3077
+ the gutter out beside the code. A diff numbers its lines from its hunks
3078
+ whether or not this is set. */
3079
+ "line-numbers"?: (HelixCodeBlock["lineNumbers"]) | undefined;
3080
+ /** Whether the lines are numbered in a gutter beside the code.
3081
+
3082
+ The numbers are hidden from the accessibility tree and are not part of a
3083
+ copy, which takes the code alone. Reflected, because the stylesheet lays
3084
+ the gutter out beside the code. A diff numbers its lines from its hunks
3085
+ whether or not this is set. */
3086
+ lineNumbers?: (HelixCodeBlock["lineNumbers"]) | undefined;
2947
3087
  /** Whether to leave the copy button off.
2948
3088
 
2949
3089
  Negative, which is not a style choice. A boolean attribute is true whenever
@@ -2990,6 +3130,17 @@ Absent is unified, each removal above its replacement, which fits any
2990
3130
  width. `split` sets the old version beside the new one. Optional rather
2991
3131
  than defaulted, so the host carries no attribute the consumer did not write. */
2992
3132
  variant?: (HelixCodeBlock["variant"]) | undefined;
3133
+ /** Turns the code into highlighted markup, which the block draws in place of
3134
+ the plain text.
3135
+
3136
+ Called with the code as written and returning HTML, such as the output of
3137
+ Shiki's `codeToHtml` or Prism's `highlight`. **The markup is drawn as
3138
+ given**, so it has to escape the code it was handed, which those
3139
+ highlighters do. Bind the language in the function you pass. The code
3140
+ stays in the slot, so the copy button copies it as written and a reader
3141
+ without the script still has it. Not called on a server, which has no code
3142
+ to read, nor for a diff. */
3143
+ highlight?: (HelixCodeBlock["highlight"]) | undefined;
2993
3144
  };
2994
3145
 
2995
3146
  export type HelixCodeBlockVueEvents = {};
@@ -3100,6 +3251,26 @@ point.** The field holds a color, so a browser offering to fill it with a
3100
3251
  saved address is competing for the same keystrokes as the picker. A
3101
3252
  consumer who wants autofill can still ask. */
3102
3253
  autocomplete?: (HelixColorInput["autocomplete"]) | undefined;
3254
+ /** Whether the panel shows a number field for each channel of the color.
3255
+ Passed to the panel; see Color Picker's `channel-fields`. */
3256
+ "channel-fields"?: (HelixColorInput["channelFields"]) | undefined;
3257
+ /** Whether the panel shows a number field for each channel of the color.
3258
+ Passed to the panel; see Color Picker's `channel-fields`. */
3259
+ channelFields?: (HelixColorInput["channelFields"]) | undefined;
3260
+ /** The words a color's name is spoken in, as JSON keyed by their English,
3261
+ such as `{"red": "rot", "vibrant": "kräftiges"}`.
3262
+
3263
+ Passed to the panel, whose square, hue ramp and presets say the color's
3264
+ name, and read by the swatch in `swatch`, which says it before the value.
3265
+ Color Picker lists the keys. */
3266
+ "color-words"?: (HelixColorInput["colorWords"]) | undefined;
3267
+ /** The words a color's name is spoken in, as JSON keyed by their English,
3268
+ such as `{"red": "rot", "vibrant": "kräftiges"}`.
3269
+
3270
+ Passed to the panel, whose square, hue ramp and presets say the color's
3271
+ name, and read by the swatch in `swatch`, which says it before the value.
3272
+ Color Picker lists the keys. */
3273
+ colorWords?: (HelixColorInput["colorWords"]) | undefined;
3103
3274
  /** The syntax the value is written in: `hex`, `rgb`, or `hsl`.
3104
3275
 
3105
3276
  **Undefaulted, because it reflects.** The two together stamp an attribute
@@ -3237,6 +3408,10 @@ ramps. A consumer who wants autofill can still ask. */
3237
3408
  "bad-input-message"?: (HelixColorPicker["badInputMessage"]) | undefined;
3238
3409
  /** The message shown when the value is text that is not a color. */
3239
3410
  badInputMessage?: (HelixColorPicker["badInputMessage"]) | undefined;
3411
+ /** What the blue channel's field is called, in `channel-fields`. */
3412
+ "blue-label"?: (HelixColorPicker["blueLabel"]) | undefined;
3413
+ /** What the blue channel's field is called, in `channel-fields`. */
3414
+ blueLabel?: (HelixColorPicker["blueLabel"]) | undefined;
3240
3415
  /** What the square's vertical ramp is called.
3241
3416
 
3242
3417
  **Every word the picker speaks is a property**, so a page in another
@@ -3247,6 +3422,50 @@ language hears its own rather than English between its own labels. */
3247
3422
  **Every word the picker speaks is a property**, so a page in another
3248
3423
  language hears its own rather than English between its own labels. */
3249
3424
  brightnessLabel?: (HelixColorPicker["brightnessLabel"]) | undefined;
3425
+ /** Whether the picker shows a number field for each channel of the color, as
3426
+ React Aria's ColorField does with `channel`: red, green and blue for hex
3427
+ and rgb, hue, saturation and lightness for hsl, and the opacity with
3428
+ `alpha`.
3429
+
3430
+ For a reader who has the numbers from a brand guide, and for a keyboard,
3431
+ where typing 128 is quicker than holding an arrow key. The fields follow
3432
+ the syntax the format toggle sets. */
3433
+ "channel-fields"?: (HelixColorPicker["channelFields"]) | undefined;
3434
+ /** Whether the picker shows a number field for each channel of the color, as
3435
+ React Aria's ColorField does with `channel`: red, green and blue for hex
3436
+ and rgb, hue, saturation and lightness for hsl, and the opacity with
3437
+ `alpha`.
3438
+
3439
+ For a reader who has the numbers from a brand guide, and for a keyboard,
3440
+ where typing 128 is quicker than holding an arrow key. The fields follow
3441
+ the syntax the format toggle sets. */
3442
+ channelFields?: (HelixColorPicker["channelFields"]) | undefined;
3443
+ /** The words a color's name is spoken in, as JSON keyed by their English,
3444
+ such as `{"red": "rot", "vibrant": "kräftiges"}`.
3445
+
3446
+ **A color is named the way React Aria names one**, as "vibrant red" or
3447
+ "dark grayish blue", and the keys are the ones `@react-stately/color`
3448
+ translates, so a table a page already has for it can be handed over whole.
3449
+ `colorName` and `transparentColorName` are the two sentences that put the
3450
+ words together. A word left out is spoken in English.
3451
+
3452
+ The name follows the numbers on the square, follows the number on the hue
3453
+ ramp, and names each preset, so a reader who cannot see the color hears
3454
+ which one it is. */
3455
+ "color-words"?: (HelixColorPicker["colorWords"]) | undefined;
3456
+ /** The words a color's name is spoken in, as JSON keyed by their English,
3457
+ such as `{"red": "rot", "vibrant": "kräftiges"}`.
3458
+
3459
+ **A color is named the way React Aria names one**, as "vibrant red" or
3460
+ "dark grayish blue", and the keys are the ones `@react-stately/color`
3461
+ translates, so a table a page already has for it can be handed over whole.
3462
+ `colorName` and `transparentColorName` are the two sentences that put the
3463
+ words together. A word left out is spoken in English.
3464
+
3465
+ The name follows the numbers on the square, follows the number on the hue
3466
+ ramp, and names each preset, so a reader who cannot see the color hears
3467
+ which one it is. */
3468
+ colorWords?: (HelixColorPicker["colorWords"]) | undefined;
3250
3469
  /** The text the sample shows for a moment after it copies the value. */
3251
3470
  "copied-label"?: (HelixColorPicker["copiedLabel"]) | undefined;
3252
3471
  /** The text the sample shows for a moment after it copies the value. */
@@ -3270,6 +3489,10 @@ Only what is written. Everything is read whatever this says, so a picker on
3270
3489
  "format-label"?: (HelixColorPicker["formatLabel"]) | undefined;
3271
3490
  /** What the syntax toggle is called, with `{format}` filled in. */
3272
3491
  formatLabel?: (HelixColorPicker["formatLabel"]) | undefined;
3492
+ /** What the green channel's field is called, in `channel-fields`. */
3493
+ "green-label"?: (HelixColorPicker["greenLabel"]) | undefined;
3494
+ /** What the green channel's field is called, in `channel-fields`. */
3495
+ greenLabel?: (HelixColorPicker["greenLabel"]) | undefined;
3273
3496
  /** What the hue channel is called. */
3274
3497
  "hue-label"?: (HelixColorPicker["hueLabel"]) | undefined;
3275
3498
  /** What the hue channel is called. */
@@ -3282,6 +3505,12 @@ the label, the hint and the feedback, and a second message inside the panel
3282
3505
  would be the same error said twice. What is left for the picker is the one
3283
3506
  thing the field cannot draw from outside, the mark on the answer itself. */
3284
3507
  invalid?: (HelixColorPicker["invalid"]) | undefined;
3508
+ /** What the lightness channel's field is called, in `channel-fields` with
3509
+ hsl. */
3510
+ "lightness-label"?: (HelixColorPicker["lightnessLabel"]) | undefined;
3511
+ /** What the lightness channel's field is called, in `channel-fields` with
3512
+ hsl. */
3513
+ lightnessLabel?: (HelixColorPicker["lightnessLabel"]) | undefined;
3285
3514
  /** Hides the eyedropper. Without it, the eyedropper appears in browsers that
3286
3515
  support one. */
3287
3516
  "no-eyedropper"?: (HelixColorPicker["noEyedropper"]) | undefined;
@@ -3378,6 +3607,10 @@ letting it move would show `rgb` over a hex it is no longer allowed to
3378
3607
  restate. The eyedropper clears the screen and runs a system sampler, so
3379
3608
  letting it open would take a color from the reader and drop it. */
3380
3609
  readOnly?: (HelixColorPicker["readOnly"]) | undefined;
3610
+ /** What the red channel's field is called, in `channel-fields`. */
3611
+ "red-label"?: (HelixColorPicker["redLabel"]) | undefined;
3612
+ /** What the red channel's field is called, in `channel-fields`. */
3613
+ redLabel?: (HelixColorPicker["redLabel"]) | undefined;
3381
3614
  /** Requires a color before the form can submit.
3382
3615
 
3383
3616
  **A color is exactly as requirable as a date**, which is the comparison
@@ -3564,6 +3797,24 @@ and this one was the English a form in another language still spoke in
3564
3797
  the bubble it raises on submit: `feedback` replaces the message under
3565
3798
  the field and does not reach that one. */
3566
3799
  valueMissingMessage?: (HelixCombobox["valueMissingMessage"]) | undefined;
3800
+ /** Whether text that names no option is taken as the value, as React Aria's
3801
+ `allowsCustomValue`.
3802
+
3803
+ For a field where the list is a help and not the whole of the answer, a
3804
+ city or a job title. What was typed becomes the value when the reader
3805
+ leaves the field or presses Enter with nothing highlighted, and text that
3806
+ names an option takes that option. Unlike `creatable`, no event asks
3807
+ first and no option is expected to be added: the value is the text. */
3808
+ "allows-custom-value"?: (HelixCombobox["allowsCustomValue"]) | undefined;
3809
+ /** Whether text that names no option is taken as the value, as React Aria's
3810
+ `allowsCustomValue`.
3811
+
3812
+ For a field where the list is a help and not the whole of the answer, a
3813
+ city or a job title. What was typed becomes the value when the reader
3814
+ leaves the field or presses Enter with nothing highlighted, and text that
3815
+ names an option takes that option. Unlike `creatable`, no event asks
3816
+ first and no option is expected to be added: the value is the text. */
3817
+ allowsCustomValue?: (HelixCombobox["allowsCustomValue"]) | undefined;
3567
3818
  /** What the browser may autofill in the text field, as a platform token.
3568
3819
 
3569
3820
  **Defaults to `off`, which is not the platform's default and is the
@@ -3642,6 +3893,20 @@ filled in.
3642
3893
  **The name goes in**, so a row of them is heard as which one each
3643
3894
  removes rather than as "Remove" said once per chosen option. */
3644
3895
  removeLabel?: (HelixCombobox["removeLabel"]) | undefined;
3896
+ /** What a screen reader hears when typing leaves one option. `{count}` is
3897
+ the count. */
3898
+ "result-label"?: (HelixCombobox["resultLabel"]) | undefined;
3899
+ /** What a screen reader hears when typing leaves one option. `{count}` is
3900
+ the count. */
3901
+ resultLabel?: (HelixCombobox["resultLabel"]) | undefined;
3902
+ /** What a screen reader hears when typing leaves any other number of
3903
+ options. `{count}` is the count, and `Intl.PluralRules` picks between the
3904
+ two. */
3905
+ "results-label"?: (HelixCombobox["resultsLabel"]) | undefined;
3906
+ /** What a screen reader hears when typing leaves any other number of
3907
+ options. `{count}` is the count, and `Intl.PluralRules` picks between the
3908
+ two. */
3909
+ resultsLabel?: (HelixCombobox["resultsLabel"]) | undefined;
3645
3910
  /** Whether the field completes the word as the user types.
3646
3911
 
3647
3912
  `suggest` rather than `autocomplete`, which is a real HTML attribute this
@@ -3743,6 +4008,14 @@ the resolved state for stylesheets, which is what the mirror is for. */
3743
4008
  "empty-text"?: (HelixCommand["emptyText"]) | undefined;
3744
4009
  /** The text shown when the filter matches no commands. */
3745
4010
  emptyText?: (HelixCommand["emptyText"]) | undefined;
4011
+ /** How long typing rests before the commands are filtered, in milliseconds,
4012
+ so a palette filtered on a server sends one `helix-filter` for a word.
4013
+ `0` filters on every keystroke. See Listbox's `filter-delay`. */
4014
+ "filter-delay"?: (HelixCommand["filterDelay"] | `${number}`) | undefined;
4015
+ /** How long typing rests before the commands are filtered, in milliseconds,
4016
+ so a palette filtered on a server sends one `helix-filter` for a word.
4017
+ `0` filters on every keystroke. See Listbox's `filter-delay`. */
4018
+ filterDelay?: (HelixCommand["filterDelay"]) | undefined;
3746
4019
  /** The key that opens the palette, written as `mod+k`, `shift+p`, or `k`.
3747
4020
 
3748
4021
  Empty turns it off, for a consumer who opens the palette from a button or
@@ -3762,6 +4035,20 @@ Passed to the list, which shows `loading-text` and tells screen readers. */
3762
4035
  loadingText?: (HelixCommand["loadingText"]) | undefined;
3763
4036
  /** The text shown in the filter field before anything is typed. */
3764
4037
  placeholder?: (HelixCommand["placeholder"]) | undefined;
4038
+ /** What a screen reader hears when typing leaves one command. `{count}` is
4039
+ the count. */
4040
+ "result-label"?: (HelixCommand["resultLabel"]) | undefined;
4041
+ /** What a screen reader hears when typing leaves one command. `{count}` is
4042
+ the count. */
4043
+ resultLabel?: (HelixCommand["resultLabel"]) | undefined;
4044
+ /** What a screen reader hears when typing leaves any other number of
4045
+ commands. `{count}` is the count, and `Intl.PluralRules` picks between the
4046
+ two. */
4047
+ "results-label"?: (HelixCommand["resultsLabel"]) | undefined;
4048
+ /** What a screen reader hears when typing leaves any other number of
4049
+ commands. `{count}` is the count, and `Intl.PluralRules` picks between the
4050
+ two. */
4051
+ resultsLabel?: (HelixCommand["resultsLabel"]) | undefined;
3765
4052
  };
3766
4053
 
3767
4054
  export type HelixCommandVueEvents = {
@@ -3773,7 +4060,7 @@ export type HelixCommandVueEvents = {
3773
4060
  "helix-before-open": HelixCommandHelixBeforeOpenElementEvent;
3774
4061
  /** Fired as the user types, with the text the list is filtered by. Cancelable: cancel it to leave the list unfiltered and filter the commands yourself, for example on a server while `loading` is set. */
3775
4062
  "helix-filter": HelixCommandHelixFilterElementEvent;
3776
- /** A command was chosen. Cancelable: cancel it to keep the palette open. */
4063
+ /** A command was chosen, with its `href` where the option is a link. Cancelable: cancel it to keep the palette open, and to keep the browser from following the link. */
3777
4064
  "helix-select": HelixCommandHelixSelectElementEvent;
3778
4065
  };
3779
4066
 
@@ -3820,6 +4107,17 @@ dash-casing it, and `copiedlabel` is not what anyone would type. */
3820
4107
  `attribute` written out, because Lit lowercases a property name rather than
3821
4108
  dash-casing it, and `copiedlabel` is not what anyone would type. */
3822
4109
  copiedLabel?: (HelixCopyButton["copiedLabel"]) | undefined;
4110
+ /** The button's name and tooltip text after a press that put nothing on the
4111
+ clipboard. */
4112
+ "error-label"?: (HelixCopyButton["errorLabel"]) | undefined;
4113
+ /** The button's name and tooltip text after a press that put nothing on the
4114
+ clipboard. */
4115
+ errorLabel?: (HelixCopyButton["errorLabel"]) | undefined;
4116
+ /** The element to copy from, by its id: `key` for its text, `key[value]` for
4117
+ an attribute, and `key.value` for a property. Read at the press, and used
4118
+ in place of `value`. An element that is not there copies nothing, which is
4119
+ a failed copy. */
4120
+ from?: (HelixCopyButton["from"]) | undefined;
3823
4121
  /** The button's name and tooltip text before a copy.
3824
4122
 
3825
4123
  Defaulted rather than left empty. An icon-only control must be named, and
@@ -3899,6 +4197,22 @@ native submitter would have given it, which is the point. */
3899
4197
  formtarget?: (HelixCopyButton["formTarget"]) | undefined;
3900
4198
  /** Which browsing context the response lands in, overriding the form's own. */
3901
4199
  formTarget?: (HelixCopyButton["formTarget"]) | undefined;
4200
+ /** Whether the action the button started is still running.
4201
+
4202
+ A pending button keeps focus and stays in the tab order, and refuses every
4203
+ press: a click, Enter and Space, and Enter in a field of its form. The
4204
+ click does not reach your listeners. The inner control carries
4205
+ `aria-busy` and `aria-disabled`, and when the button becomes pending while
4206
+ it has focus, a reader hears `pending-label`. The styled button draws a
4207
+ turning ring over its words.
4208
+
4209
+ `disabled` takes the button out of reach. Use `pending` for the wait after
4210
+ a press, so focus stays where the reader left it. */
4211
+ pending?: (HelixCopyButton["pending"]) | undefined;
4212
+ /** What a reader hears when the button becomes pending while it has focus. */
4213
+ "pending-label"?: (HelixCopyButton["pendingLabel"]) | undefined;
4214
+ /** What a reader hears when the button becomes pending while it has focus. */
4215
+ pendingLabel?: (HelixCopyButton["pendingLabel"]) | undefined;
3902
4216
  /** What activating the button does to its form. */
3903
4217
  type?: (HelixCopyButton["type"]) | undefined;
3904
4218
  /** Whether the control is disabled and cannot be used.
@@ -3984,6 +4298,8 @@ invoker without an id in the same tree needs. */
3984
4298
  export type HelixCopyButtonVueEvents = {
3985
4299
  /** Fired after the clipboard write succeeds. */
3986
4300
  "helix-copy": HelixCopyButtonHelixCopyElementEvent;
4301
+ /** Fired when a press put nothing on the clipboard: the browser refused the write, or there was nothing to copy. */
4302
+ "helix-copy-error": HelixCopyButtonElementEvent;
3987
4303
  };
3988
4304
 
3989
4305
  /** `HelixDataTable` component event */
@@ -4325,6 +4641,20 @@ export type HelixDateInputHelixBeforeOpenElementEvent =
4325
4641
  HelixDateInputElementEvent<HelixBeforeOpenEvent>;
4326
4642
 
4327
4643
  export type HelixDateInputVueProps = {
4644
+ /** What a screen reader hears for a segment with nothing in it, which a
4645
+ sighted reader sees as dashes. */
4646
+ "empty-segment-label"?: (HelixDateInput["emptySegmentLabel"]) | undefined;
4647
+ /** What a screen reader hears for a segment with nothing in it, which a
4648
+ sighted reader sees as dashes. */
4649
+ emptySegmentLabel?: (HelixDateInput["emptySegmentLabel"]) | undefined;
4650
+ /** Whether the field is a row of segments, one for each part of the date or
4651
+ time, in place of a line of text.
4652
+
4653
+ Each segment is set with digits or the arrow keys, in the order the
4654
+ locale writes them, so a reader types a date the way they write one and
4655
+ no format has to be read back. The picker still opens from the trigger
4656
+ and with Alt+Down. */
4657
+ segmented?: (HelixDateInput["segmented"]) | undefined;
4328
4658
  /** Whether the value is locked. A read-only control still submits its value.
4329
4659
 
4330
4660
  **Enforced by refusing every request in one place**, which is the seam this
@@ -4523,6 +4853,12 @@ and is Sunday otherwise. */
4523
4853
  locale?: (HelixDateInput["locale"]) | undefined;
4524
4854
  /** The latest date that can be chosen, as `YYYY-MM-DD`. */
4525
4855
  max?: (HelixDateInput["max"]) | undefined;
4856
+ /** How far the calendar's heading steps back from the days: `month` or
4857
+ `year`. Handed to the calendar; see Date Picker's `max-view`. */
4858
+ "max-view"?: (HelixDateInput["maxView"]) | undefined;
4859
+ /** How far the calendar's heading steps back from the days: `month` or
4860
+ `year`. Handed to the calendar; see Date Picker's `max-view`. */
4861
+ maxView?: (HelixDateInput["maxView"]) | undefined;
4526
4862
  /** The earliest date that can be chosen, as `YYYY-MM-DD`. */
4527
4863
  min?: (HelixDateInput["min"]) | undefined;
4528
4864
  /** How many dates can be held at once.
@@ -4538,16 +4874,38 @@ an end in April otherwise means paging between them and losing sight of the
4538
4874
  first. The panel is sized by its content, so this widens it, and where the
4539
4875
  window has no room for that width it shows one month until there is. */
4540
4876
  months?: (HelixDateInput["months"]) | undefined;
4877
+ /** The name of the calendar's heading where it shows the months, with
4878
+ `{heading}` filled in. */
4879
+ "month-view-label"?: (HelixDateInput["monthViewLabel"]) | undefined;
4880
+ /** The name of the calendar's heading where it shows the months, with
4881
+ `{heading}` filled in. */
4882
+ monthViewLabel?: (HelixDateInput["monthViewLabel"]) | undefined;
4541
4883
  /** The name of the calendar's control that moves to the next month. */
4542
4884
  "next-label"?: (HelixDateInput["nextLabel"]) | undefined;
4543
4885
  /** The name of the calendar's control that moves to the next month. */
4544
4886
  nextLabel?: (HelixDateInput["nextLabel"]) | undefined;
4887
+ /** The name of the calendar's control that moves forward a year. */
4888
+ "next-year-label"?: (HelixDateInput["nextYearLabel"]) | undefined;
4889
+ /** The name of the calendar's control that moves forward a year. */
4890
+ nextYearLabel?: (HelixDateInput["nextYearLabel"]) | undefined;
4891
+ /** The name of the calendar's control that moves forward a page of years. */
4892
+ "next-years-label"?: (HelixDateInput["nextYearsLabel"]) | undefined;
4893
+ /** The name of the calendar's control that moves forward a page of years. */
4894
+ nextYearsLabel?: (HelixDateInput["nextYearsLabel"]) | undefined;
4545
4895
  /** The text the field shows before a date is entered. */
4546
4896
  placeholder?: (HelixDateInput["placeholder"]) | undefined;
4547
4897
  /** The name of the calendar's control that moves to the previous month. */
4548
4898
  "previous-label"?: (HelixDateInput["previousLabel"]) | undefined;
4549
4899
  /** The name of the calendar's control that moves to the previous month. */
4550
4900
  previousLabel?: (HelixDateInput["previousLabel"]) | undefined;
4901
+ /** The name of the calendar's control that moves back a year. */
4902
+ "previous-year-label"?: (HelixDateInput["previousYearLabel"]) | undefined;
4903
+ /** The name of the calendar's control that moves back a year. */
4904
+ previousYearLabel?: (HelixDateInput["previousYearLabel"]) | undefined;
4905
+ /** The name of the calendar's control that moves back a page of years. */
4906
+ "previous-years-label"?: (HelixDateInput["previousYearsLabel"]) | undefined;
4907
+ /** The name of the calendar's control that moves back a page of years. */
4908
+ previousYearsLabel?: (HelixDateInput["previousYearsLabel"]) | undefined;
4551
4909
  /** The message shown when a range holds more than two dates.
4552
4910
 
4553
4911
  **Every sentence a control raises in the browser's bubble is a property**,
@@ -4603,6 +4961,12 @@ platform's base. */
4603
4961
  "unavailable-message"?: (HelixDateInput["unavailableMessage"]) | undefined;
4604
4962
  /** The message shown when `disable-dates` or `disable-days` bars a date. */
4605
4963
  unavailableMessage?: (HelixDateInput["unavailableMessage"]) | undefined;
4964
+ /** The name of the calendar's heading where it shows a page of years, with
4965
+ `{heading}` filled in. */
4966
+ "year-view-label"?: (HelixDateInput["yearViewLabel"]) | undefined;
4967
+ /** The name of the calendar's heading where it shows a page of years, with
4968
+ `{heading}` filled in. */
4969
+ yearViewLabel?: (HelixDateInput["yearViewLabel"]) | undefined;
4606
4970
  /** Whether the control is disabled and cannot be used.
4607
4971
 
4608
4972
  Reflected, because the styled tier selects on it, and mirrored to
@@ -4629,6 +4993,14 @@ imperatively later, and nothing is hydrating by then.
4629
4993
 
4630
4994
  Here rather than on each control. */
4631
4995
  name?: (HelixDateInput["name"]) | undefined;
4996
+ /** What each day in the calendar shows, in place of its number: a function
4997
+ given the date as `YYYY-MM-DD`. Handed to the calendar; see Date Picker's
4998
+ `dayContent`. */
4999
+ dayContent?: (HelixDateInput["dayContent"]) | undefined;
5000
+ /** A rule for which dates cannot be chosen: a function given the date as
5001
+ `YYYY-MM-DD` that returns `true` to bar it. The calendar offers such a date
5002
+ as unavailable, and a typed one is invalid, as with `disable-dates`. */
5003
+ isDateUnavailable?: (HelixDateInput["isDateUnavailable"]) | undefined;
4632
5004
  /** The value as a `Date`, at midnight UTC, or `null` while there is no date.
4633
5005
 
4634
5006
  The platform's own pair on `<input type="date">`, and this control holds the
@@ -4732,6 +5104,24 @@ Absent uses the runtime's own. */
4732
5104
  locale?: (HelixDatePicker["locale"]) | undefined;
4733
5105
  /** Latest selectable date, as `YYYY-MM-DD`. */
4734
5106
  max?: (HelixDatePicker["max"]) | undefined;
5107
+ /** How far the heading lets a reader step back from the days: `month` to a
5108
+ year's months, or `year` to a page of years and then its months.
5109
+
5110
+ Absent, the heading is text and the calendar moves a month at a time. Set,
5111
+ the heading is a button that shows the months, and from there the years,
5112
+ so a birth date forty years back is three presses rather than four hundred
5113
+ and eighty. Choosing a year shows its months, and choosing a month shows
5114
+ its days. */
5115
+ "max-view"?: (HelixDatePicker["maxView"]) | undefined;
5116
+ /** How far the heading lets a reader step back from the days: `month` to a
5117
+ year's months, or `year` to a page of years and then its months.
5118
+
5119
+ Absent, the heading is text and the calendar moves a month at a time. Set,
5120
+ the heading is a button that shows the months, and from there the years,
5121
+ so a birth date forty years back is three presses rather than four hundred
5122
+ and eighty. Choosing a year shows its months, and choosing a month shows
5123
+ its days. */
5124
+ maxView?: (HelixDatePicker["maxView"]) | undefined;
4735
5125
  /** Earliest selectable date, as `YYYY-MM-DD`. */
4736
5126
  min?: (HelixDatePicker["min"]) | undefined;
4737
5127
  /** How many dates can be held at once. */
@@ -4745,10 +5135,24 @@ can drive the view. Reading gives the month on show; writing sets it, and
4745
5135
  month?: (HelixDatePicker["month"]) | undefined;
4746
5136
  /** How many months to show, side by side. */
4747
5137
  months?: (HelixDatePicker["months"]) | undefined;
5138
+ /** The name of the heading where it shows the months, with `{heading}`
5139
+ filled in as the month on show. */
5140
+ "month-view-label"?: (HelixDatePicker["monthViewLabel"]) | undefined;
5141
+ /** The name of the heading where it shows the months, with `{heading}`
5142
+ filled in as the month on show. */
5143
+ monthViewLabel?: (HelixDatePicker["monthViewLabel"]) | undefined;
4748
5144
  /** Accessible name for the control that pages forward. */
4749
5145
  "next-label"?: (HelixDatePicker["nextLabel"]) | undefined;
4750
5146
  /** Accessible name for the control that pages forward. */
4751
5147
  nextLabel?: (HelixDatePicker["nextLabel"]) | undefined;
5148
+ /** Accessible name for the control that moves forward a year, in the months. */
5149
+ "next-year-label"?: (HelixDatePicker["nextYearLabel"]) | undefined;
5150
+ /** Accessible name for the control that moves forward a year, in the months. */
5151
+ nextYearLabel?: (HelixDatePicker["nextYearLabel"]) | undefined;
5152
+ /** Accessible name for the control that moves forward a page, in the years. */
5153
+ "next-years-label"?: (HelixDatePicker["nextYearsLabel"]) | undefined;
5154
+ /** Accessible name for the control that moves forward a page, in the years. */
5155
+ nextYearsLabel?: (HelixDatePicker["nextYearsLabel"]) | undefined;
4752
5156
  /** Accessible name for the control that pages back.
4753
5157
 
4754
5158
  A property because a calendar rendering its own month names from `locale`
@@ -4763,6 +5167,14 @@ would otherwise still announce its controls in English. `attribute:`
4763
5167
  spelled out, since Lit lowercases a camelCase name rather than dash-casing
4764
5168
  it. */
4765
5169
  previousLabel?: (HelixDatePicker["previousLabel"]) | undefined;
5170
+ /** Accessible name for the control that moves back a year, in the months. */
5171
+ "previous-year-label"?: (HelixDatePicker["previousYearLabel"]) | undefined;
5172
+ /** Accessible name for the control that moves back a year, in the months. */
5173
+ previousYearLabel?: (HelixDatePicker["previousYearLabel"]) | undefined;
5174
+ /** Accessible name for the control that moves back a page, in the years. */
5175
+ "previous-years-label"?: (HelixDatePicker["previousYearsLabel"]) | undefined;
5176
+ /** Accessible name for the control that moves back a page, in the years. */
5177
+ previousYearsLabel?: (HelixDatePicker["previousYearsLabel"]) | undefined;
4766
5178
  /** The validation message for a date after `max`. `{max}` is replaced with
4767
5179
  `max`, written as a date in `locale`. */
4768
5180
  "range-overflow-message"?: (HelixDatePicker["rangeOverflowMessage"]) | undefined;
@@ -4827,6 +5239,17 @@ bars. */
4827
5239
  "value-missing-message"?: (HelixDatePicker["valueMissingMessage"]) | undefined;
4828
5240
  /** The validation message for a required date picker with no date chosen. */
4829
5241
  valueMissingMessage?: (HelixDatePicker["valueMissingMessage"]) | undefined;
5242
+ /** What the calendar shows: the days of a month, the months of a year, or a
5243
+ page of years. `day` unless `max-view` lets a reader step back.
5244
+
5245
+ Not reflected, being state. Set it to open on the months or the years. */
5246
+ view?: (HelixDatePicker["view"]) | undefined;
5247
+ /** The name of the heading where it shows a page of years, with `{heading}`
5248
+ filled in as the year on show. */
5249
+ "year-view-label"?: (HelixDatePicker["yearViewLabel"]) | undefined;
5250
+ /** The name of the heading where it shows a page of years, with `{heading}`
5251
+ filled in as the year on show. */
5252
+ yearViewLabel?: (HelixDatePicker["yearViewLabel"]) | undefined;
4830
5253
  /** Whether the control is disabled and cannot be used.
4831
5254
 
4832
5255
  Reflected, because the styled tier selects on it, and mirrored to
@@ -4853,6 +5276,24 @@ imperatively later, and nothing is hydrating by then.
4853
5276
 
4854
5277
  Here rather than on each control. */
4855
5278
  name?: (HelixDatePicker["name"]) | undefined;
5279
+ /** What each day shows, in place of its number: a function given the date as
5280
+ `YYYY-MM-DD` that returns text, an element or a Lit template.
5281
+
5282
+ For a price or a dot under the number, as React Aria's `CalendarCell`
5283
+ takes children. The cell is still named by its whole date, so what you
5284
+ draw here is for the eye; say anything a reader must hear in the date's
5285
+ description elsewhere. Return the day's number with it where it should
5286
+ still show. A property only, there being no way to write a function in
5287
+ markup. */
5288
+ dayContent?: (HelixDatePicker["dayContent"]) | undefined;
5289
+ /** A rule for which dates cannot be chosen: a function given the date as
5290
+ `YYYY-MM-DD` that returns `true` to bar it.
5291
+
5292
+ For what a list cannot say, such as the second Tuesday of each month or
5293
+ the days a server has fully booked. It bars a date as `disable-dates`
5294
+ does, in the grid and in validation. A property only, as React Aria's
5295
+ `isDateUnavailable` is a prop. */
5296
+ isDateUnavailable?: (HelixDatePicker["isDateUnavailable"]) | undefined;
4856
5297
  /** The value as a `Date`, at midnight UTC, or `null` while there is no date.
4857
5298
 
4858
5299
  The platform's own pair on `<input type="date">`, and this control holds the
@@ -5022,6 +5463,16 @@ hydration, or diffed by a framework, it comes back holding whatever the
5022
5463
  last reader did rather than what the author wrote. `:state(open)` carries
5023
5464
  the resolved state for stylesheets, which is what the mirror is for. */
5024
5465
  open?: (HelixDialog["open"]) | undefined;
5466
+ /** Makes the dialog an alert dialog, for a message that interrupts to ask for
5467
+ an answer, such as a confirmation before something is deleted.
5468
+
5469
+ The `<dialog>` takes `role="alertdialog"`, so a screen reader announces the
5470
+ dialog and its description as it opens. Everything else stays the same:
5471
+ the dialog is modal, Escape asks to close it, and `persistent` still
5472
+ refuses that.
5473
+
5474
+ Not reflected, because no stylesheet selects on it. */
5475
+ alert?: (HelixDialog["alert"]) | undefined;
5025
5476
  /** Which close requests the browser handles on its own.
5026
5477
 
5027
5478
  `<dialog closedby>`, forwarded, and safe to forward because every path it
@@ -5044,6 +5495,17 @@ the property this component exists to keep.
5044
5495
  Absent by default, which is the platform's `auto` and this library's rule
5045
5496
  that a resting value is an attribute's absence. */
5046
5497
  closedBy?: (HelixDialog["closedBy"]) | undefined;
5498
+ /** Draws a control that closes the dialog, in the corner where the title is.
5499
+
5500
+ Pressing it is `close()`, so it sends `helix-before-close` like every other
5501
+ way out, and `persistent` does not disable it. */
5502
+ dismissible?: (HelixDialog["dismissible"]) | undefined;
5503
+ /** The close control's accessible name. Translate it with the rest of your
5504
+ interface. */
5505
+ "dismiss-label"?: (HelixDialog["dismissLabel"]) | undefined;
5506
+ /** The close control's accessible name. Translate it with the rest of your
5507
+ interface. */
5508
+ dismissLabel?: (HelixDialog["dismissLabel"]) | undefined;
5047
5509
  /** Accessible name for the dialog. When it is empty, the heading in the
5048
5510
  `header` slot names the dialog. */
5049
5511
  label?: (HelixDialog["label"]) | undefined;
@@ -5082,6 +5544,18 @@ export type HelixDialogVueEvents = {
5082
5544
  };
5083
5545
 
5084
5546
  export type HelixDividerVueProps = {
5547
+ /** Where content set into the line sits along it.
5548
+
5549
+ Absent is the middle. `start` and `end` move it toward one end, with a
5550
+ short length of line, `--divider-content-offset`, kept before or after it.
5551
+ A divider with nothing set into it is one line whatever this says. */
5552
+ "content-placement"?: (HelixDivider["contentPlacement"]) | undefined;
5553
+ /** Where content set into the line sits along it.
5554
+
5555
+ Absent is the middle. `start` and `end` move it toward one end, with a
5556
+ short length of line, `--divider-content-offset`, kept before or after it.
5557
+ A divider with nothing set into it is one line whatever this says. */
5558
+ contentPlacement?: (HelixDivider["contentPlacement"]) | undefined;
5085
5559
  /** Whether screen readers announce the line as a separator.
5086
5560
 
5087
5561
  Off by default, and out of the accessibility tree. Most rules on a page
@@ -5305,6 +5779,24 @@ default assigned to the property would reflect onto every host and put a
5305
5779
  `placement="end"` into markup no consumer wrote. So what this tier
5306
5780
  guarantees is the absence, and a sheet selects on it. */
5307
5781
  placement?: (HelixDrawer["placement"]) | undefined;
5782
+ /** The fractions of the panel a reader can leave on screen, as a list such as
5783
+ `0.5 1`. The drawer opens at the smallest, and a swipe comes to rest at the
5784
+ nearest, or closes the drawer below the smallest.
5785
+
5786
+ Empty is `1`: the whole panel, and a swipe either closes it or puts it
5787
+ back. */
5788
+ "snap-points"?: (HelixDrawer["snapPoints"]) | undefined;
5789
+ /** The fractions of the panel a reader can leave on screen, as a list such as
5790
+ `0.5 1`. The drawer opens at the smallest, and a swipe comes to rest at the
5791
+ nearest, or closes the drawer below the smallest.
5792
+
5793
+ Empty is `1`: the whole panel, and a swipe either closes it or puts it
5794
+ back. */
5795
+ snapPoints?: (HelixDrawer["snapPoints"]) | undefined;
5796
+ /** Whether a touch or a pen can swipe the drawer away. `swipe="false"` turns
5797
+ it off, for a panel whose content has its own use for the gesture, such as
5798
+ a map. */
5799
+ swipe?: (HelixDrawer["swipe"]) | undefined;
5308
5800
  /** What the dialog closed with, the way `<dialog>` reports it.
5309
5801
 
5310
5802
  **The whole point of a `<dialog>` returning a value is lost behind a shadow
@@ -5440,6 +5932,9 @@ export type HelixFileInputElementEvent<E = Event> = TypedEvent<
5440
5932
  /** `helix-before-change` event type */
5441
5933
  export type HelixFileInputHelixBeforeChangeElementEvent =
5442
5934
  HelixFileInputElementEvent<HelixBeforeChangeEvent>;
5935
+ /** `helix-reject` event type */
5936
+ export type HelixFileInputHelixRejectElementEvent =
5937
+ HelixFileInputElementEvent<HelixRejectEvent>;
5443
5938
 
5444
5939
  export type HelixFileInputVueProps = {
5445
5940
  /** */
@@ -5479,12 +5974,31 @@ filter is the only check the platform makes and a drop never meets it. */
5479
5974
  accept?: (HelixFileInput["accept"]) | undefined;
5480
5975
  /** Which camera or microphone a mobile picker should offer, if any. */
5481
5976
  capture?: (HelixFileInput["capture"]) | undefined;
5977
+ /** Whether the picker chooses a folder, and the field takes every file in
5978
+ it. The platform's `webkitdirectory`. */
5979
+ directory?: (HelixFileInput["directory"]) | undefined;
5482
5980
  /** Language tag the sizes are written in.
5483
5981
 
5484
5982
  Absent uses the runtime's own. */
5485
5983
  locale?: (HelixFileInput["locale"]) | undefined;
5984
+ /** The most files the field holds, under `multiple`. Files past it are
5985
+ refused. */
5986
+ "max-files"?: (HelixFileInput["maxFiles"] | `${number}`) | undefined;
5987
+ /** The most files the field holds, under `multiple`. Files past it are
5988
+ refused. */
5989
+ maxFiles?: (HelixFileInput["maxFiles"]) | undefined;
5990
+ /** The most bytes one file may have. A larger one is refused. */
5991
+ "max-file-size"?: (HelixFileInput["maxFileSize"] | `${number}`) | undefined;
5992
+ /** The most bytes one file may have. A larger one is refused. */
5993
+ maxFileSize?: (HelixFileInput["maxFileSize"]) | undefined;
5486
5994
  /** Whether more than one file can be chosen. */
5487
5995
  multiple?: (HelixFileInput["multiple"]) | undefined;
5996
+ /** What a reader hears when files are refused, with `{count}` and `{names}`
5997
+ filled in. */
5998
+ "rejected-text"?: (HelixFileInput["rejectedText"]) | undefined;
5999
+ /** What a reader hears when files are refused, with `{count}` and `{names}`
6000
+ filled in. */
6001
+ rejectedText?: (HelixFileInput["rejectedText"]) | undefined;
5488
6002
  /** The accessible name of the control that removes a file. `{name}` is
5489
6003
  replaced with the file's name.
5490
6004
 
@@ -5529,6 +6043,9 @@ imperatively later, and nothing is hydrating by then.
5529
6043
 
5530
6044
  Here rather than on each control. */
5531
6045
  name?: (HelixFileInput["name"]) | undefined;
6046
+ /** Your own check on each arriving file, which returns why it is refused, or
6047
+ nothing to take it. A property, since a function cannot be an attribute. */
6048
+ validate?: (HelixFileInput["validate"]) | undefined;
5532
6049
  };
5533
6050
 
5534
6051
  export type HelixFileInputVueEvents = {
@@ -5536,6 +6053,8 @@ export type HelixFileInputVueEvents = {
5536
6053
  change: HelixFileInputElementEvent;
5537
6054
  /** Fired before the chosen files change, with their names, and cancelable. Canceling it keeps the files the field had, even when the browser has already written a new pick. */
5538
6055
  "helix-before-change": HelixFileInputHelixBeforeChangeElementEvent;
6056
+ /** Fired when files arrive and some are left out. `detail.files` lists each with its `reason`: `type`, `size`, `count` or `invalid`, and your `validate` message. */
6057
+ "helix-reject": HelixFileInputHelixRejectElementEvent;
5539
6058
  /** Fired after the value changes. */
5540
6059
  input: HelixFileInputElementEvent;
5541
6060
  };
@@ -5823,10 +6342,26 @@ an icon. */
5823
6342
  /** The name of the clear button, read by screen readers. The button shows only
5824
6343
  an icon. */
5825
6344
  clearLabel?: (HelixFilterInput["clearLabel"]) | undefined;
6345
+ /** Whether the panel narrows itself to the suggestions that hold the term
6346
+ being typed, as React Aria's Autocomplete filters. Off, the panel shows
6347
+ what you slot and you narrow it. */
6348
+ "filter-suggestions"?: (HelixFilterInput["filterSuggestions"]) | undefined;
6349
+ /** Whether the panel narrows itself to the suggestions that hold the term
6350
+ being typed, as React Aria's Autocomplete filters. Off, the panel shows
6351
+ what you slot and you narrow it. */
6352
+ filterSuggestions?: (HelixFilterInput["filterSuggestions"]) | undefined;
5826
6353
  /** The text shown while the field is empty.
5827
6354
 
5828
6355
  Not a label: it goes when typing starts. */
5829
6356
  placeholder?: (HelixFilterInput["placeholder"]) | undefined;
6357
+ /** What a reader hears for one suggestion, with `{count}` filled in. */
6358
+ "suggestion-label"?: (HelixFilterInput["suggestionLabel"]) | undefined;
6359
+ /** What a reader hears for one suggestion, with `{count}` filled in. */
6360
+ suggestionLabel?: (HelixFilterInput["suggestionLabel"]) | undefined;
6361
+ /** What a reader hears for any other number of suggestions, with `{count}` filled in. */
6362
+ "suggestions-label"?: (HelixFilterInput["suggestionsLabel"]) | undefined;
6363
+ /** What a reader hears for any other number of suggestions, with `{count}` filled in. */
6364
+ suggestionsLabel?: (HelixFilterInput["suggestionsLabel"]) | undefined;
5830
6365
  /** Whether the control is disabled and cannot be used.
5831
6366
 
5832
6367
  Reflected, because the styled tier selects on it, and mirrored to
@@ -5952,6 +6487,12 @@ Lit's server shim, `textContent`, `children`, `firstChild` and
5952
6487
  it. An element rendered on a server needs the attribute; one rendered in a
5953
6488
  browser may use either. */
5954
6489
  date?: (HelixFormatDate["date"]) | undefined;
6490
+ /** The locale's own pattern for the date: `full`, `long`, `medium`, or
6491
+ `short`. Set, it stands in for `weekday`, `day`, `month`, `year` and `era`. */
6492
+ "date-style"?: (HelixFormatDate["dateStyle"]) | undefined;
6493
+ /** The locale's own pattern for the date: `full`, `long`, `medium`, or
6494
+ `short`. Set, it stands in for `weekday`, `day`, `month`, `year` and `era`. */
6495
+ dateStyle?: (HelixFormatDate["dateStyle"]) | undefined;
5955
6496
  /** How the day of the month is written, where a date is shown. */
5956
6497
  day?: (HelixFormatDate["day"]) | undefined;
5957
6498
  /** Shows how long ago the timestamp was, in a compact form such as "3h", in
@@ -5961,8 +6502,22 @@ Reflected, because it is the one property that decides which of two readings
5961
6502
  this is and a stylesheet has a reason to know: a compact reading is a fixed
5962
6503
  few characters and a date is not. */
5963
6504
  elapsed?: (HelixFormatDate["elapsed"]) | undefined;
6505
+ /** How the era is written, such as AD, where a date is shown. */
6506
+ era?: (HelixFormatDate["era"]) | undefined;
5964
6507
  /** How the hour is written, where a time of day is shown. */
5965
6508
  hour?: (HelixFormatDate["hour"]) | undefined;
6509
+ /** The clock a time of day is written on: `h12` or `h11` for twelve hours,
6510
+ `h23` or `h24` for twenty-four.
6511
+
6512
+ Absent is the locale's own, which is right unless your product shows every
6513
+ reader the same clock whatever their language. */
6514
+ "hour-cycle"?: (HelixFormatDate["hourCycle"]) | undefined;
6515
+ /** The clock a time of day is written on: `h12` or `h11` for twelve hours,
6516
+ `h23` or `h24` for twenty-four.
6517
+
6518
+ Absent is the locale's own, which is right unless your product shows every
6519
+ reader the same clock whatever their language. */
6520
+ hourCycle?: (HelixFormatDate["hourCycle"]) | undefined;
5966
6521
  /** The locale to format the timestamp in.
5967
6522
 
5968
6523
  Empty is the runtime's own. */
@@ -5971,8 +6526,26 @@ Empty is the runtime's own. */
5971
6526
  minute?: (HelixFormatDate["minute"]) | undefined;
5972
6527
  /** How the month is written, where a date is shown. */
5973
6528
  month?: (HelixFormatDate["month"]) | undefined;
6529
+ /** Whether a `relative` reading may use a word for a number: `auto` says
6530
+ "yesterday" and "now", and `always` says "1 day ago" and "in 0 seconds". */
6531
+ numeric?: (HelixFormatDate["numeric"]) | undefined;
6532
+ /** Shows how long ago the timestamp was, or how long until it, in words, in
6533
+ place of the date: `long` ("3 hours ago"), `short` ("3 hr. ago") or
6534
+ `narrow` ("3h ago").
6535
+
6536
+ The reading refreshes as it goes stale, as `elapsed` does, and the whole
6537
+ date is its title. `elapsed` wins where both are set. */
6538
+ relative?: (HelixFormatDate["relative"]) | undefined;
5974
6539
  /** How the second is written, where a time of day is shown. */
5975
6540
  second?: (HelixFormatDate["second"]) | undefined;
6541
+ /** The locale's own pattern for the time of day: `full`, `long`, `medium`, or
6542
+ `short`. Set, it stands in for `hour`, `minute`, `second` and
6543
+ `time-zone-name`. */
6544
+ "time-style"?: (HelixFormatDate["timeStyle"]) | undefined;
6545
+ /** The locale's own pattern for the time of day: `full`, `long`, `medium`, or
6546
+ `short`. Set, it stands in for `hour`, `minute`, `second` and
6547
+ `time-zone-name`. */
6548
+ timeStyle?: (HelixFormatDate["timeStyle"]) | undefined;
5976
6549
  /** The time zone to read the timestamp in.
5977
6550
 
5978
6551
  Empty is the runtime's own. */
@@ -6568,6 +7141,22 @@ Lives here rather than only on `IconButton` so the two share one render.
6568
7141
  An icon-only button without it is a control a screen reader announces as
6569
7142
  "button" and nothing else. */
6570
7143
  label?: (HelixIconButton["label"]) | undefined;
7144
+ /** Whether the action the button started is still running.
7145
+
7146
+ A pending button keeps focus and stays in the tab order, and refuses every
7147
+ press: a click, Enter and Space, and Enter in a field of its form. The
7148
+ click does not reach your listeners. The inner control carries
7149
+ `aria-busy` and `aria-disabled`, and when the button becomes pending while
7150
+ it has focus, a reader hears `pending-label`. The styled button draws a
7151
+ turning ring over its words.
7152
+
7153
+ `disabled` takes the button out of reach. Use `pending` for the wait after
7154
+ a press, so focus stays where the reader left it. */
7155
+ pending?: (HelixIconButton["pending"]) | undefined;
7156
+ /** What a reader hears when the button becomes pending while it has focus. */
7157
+ "pending-label"?: (HelixIconButton["pendingLabel"]) | undefined;
7158
+ /** What a reader hears when the button becomes pending while it has focus. */
7159
+ pendingLabel?: (HelixIconButton["pendingLabel"]) | undefined;
6571
7160
  /** What activating the button does to its form. */
6572
7161
  type?: (HelixIconButton["type"]) | undefined;
6573
7162
  /** The value this button submits under its own `name`, as a native submit
@@ -6687,8 +7276,12 @@ disagreeing with its own name for every reader who meant the left. */
6687
7276
  so it is what markup can carry, and resolving one means an index of the
6688
7277
  whole set that no bundler can shake: 15 kB for a consumer who renders one
6689
7278
  mark. An attribute is the only thing an HTML author can write, and that is
6690
- worth the index; a consumer who would rather not pay it hands over the
6691
- value instead. */
7279
+ worth the index; a consumer who would rather not pay it imports the
7280
+ element from `icon/root` and registers the glyphs it names, or hands over
7281
+ the value instead.
7282
+
7283
+ A name written `prefix:name` asks the library registered under that
7284
+ prefix. */
6692
7285
  name?: (HelixIcon["name"]) | undefined;
6693
7286
  /** The icon to draw, as an object you import.
6694
7287
 
@@ -6706,8 +7299,10 @@ for. Set both and this wins, the value being the more specific statement. */
6706
7299
  };
6707
7300
 
6708
7301
  export type HelixIconVueEvents = {
6709
- /** `name` matches no icon in the set, so nothing is drawn. */
7302
+ /** `name` matches no registered icon and no library answers it, so nothing is drawn. */
6710
7303
  error: HelixIconElementEvent;
7304
+ /** A glyph a library gave later for `name` is drawn. */
7305
+ load: HelixIconElementEvent;
6711
7306
  };
6712
7307
 
6713
7308
  /** `HelixImage` component event */
@@ -6766,6 +7361,18 @@ ninety-nine pictures. */
6766
7361
  picture worth putting in a component is usually below the fold and the one
6767
7362
  that is not is the exception worth writing down. */
6768
7363
  loading?: (HelixImage["loading"]) | undefined;
7364
+ /** How long, in milliseconds, the placeholder waits before it shows.
7365
+
7366
+ Absent or `0` shows it at once. A picture that arrives inside
7367
+ the wait never shows a placeholder at all, so a cached or fast image does
7368
+ not flash one. Radix's `delayMs` on its avatar fallback is the same idea. */
7369
+ "placeholder-delay"?: (HelixImage["placeholderDelay"] | `${number}`) | undefined;
7370
+ /** How long, in milliseconds, the placeholder waits before it shows.
7371
+
7372
+ Absent or `0` shows it at once. A picture that arrives inside
7373
+ the wait never shows a placeholder at all, so a cached or fast image does
7374
+ not flash one. Radix's `delayMs` on its avatar fallback is the same idea. */
7375
+ placeholderDelay?: (HelixImage["placeholderDelay"]) | undefined;
6769
7376
  /** How much of the referring URL to send with the request. */
6770
7377
  referrerpolicy?: (HelixImage["referrerPolicy"]) | undefined;
6771
7378
  /** How much of the referring URL to send with the request. */
@@ -7011,6 +7618,8 @@ export type HelixInputVueEvents = {
7011
7618
  change: HelixInputElementEvent;
7012
7619
  /** The text is about to change. Cancelable: cancel it to keep the current text. */
7013
7620
  "helix-before-change": HelixInputHelixBeforeChangeElementEvent;
7621
+ /** Fired after the clear button has emptied the field, after `input` and `change`. */
7622
+ "helix-clear": HelixInputElementEvent;
7014
7623
  /** Fired as the value changes. */
7015
7624
  input: HelixInputElementEvent;
7016
7625
  };
@@ -7022,6 +7631,13 @@ export type HelixKbdHelixShortcutElementEvent =
7022
7631
  HelixKbdElementEvent<HelixShortcutEvent>;
7023
7632
 
7024
7633
  export type HelixKbdVueProps = {
7634
+ /** The id of the control the shortcut works, which is given the chord as its
7635
+ `aria-keyshortcuts`.
7636
+
7637
+ Names an element in the same tree, the way `Tooltip.for` does. Separate
7638
+ from `within`, which says where the key listens: a key can describe a
7639
+ shortcut the page binds itself. */
7640
+ for?: (HelixKbd["for"]) | undefined;
7025
7641
  /** The key or chord to show, such as `mod+k`, `?`, or `/`.
7026
7642
 
7027
7643
  `mod` is the platform's own command modifier, which is the reason to write
@@ -7050,6 +7666,12 @@ export type HelixKbdVueEvents = {
7050
7666
  "helix-shortcut": HelixKbdHelixShortcutElementEvent;
7051
7667
  };
7052
7668
 
7669
+ /** `HelixLegend` component event */
7670
+ export type HelixLegendElementEvent<E = Event> = TypedEvent<HelixLegend, E>;
7671
+ /** `helix-before-change` event type */
7672
+ export type HelixLegendHelixBeforeChangeElementEvent =
7673
+ HelixLegendElementEvent<HelixBeforeChangeEvent>;
7674
+
7053
7675
  export type HelixLegendVueProps = {
7054
7676
  /** How the swatches are drawn: `outlined`, `subtle`, or `solid`.
7055
7677
 
@@ -7145,14 +7767,40 @@ shadow root reads a table in that root rather than one in the document.
7145
7767
  **In React this arrives as a property and not as an attribute**, the way
7146
7768
  `Tooltip.for` does, so it does not reflect and nothing styles on it. */
7147
7769
  for?: (HelixLegend["for"]) | undefined;
7770
+ /** The series hidden on the table, by name, separated by commas: what
7771
+ `toggles` hides and shows.
7772
+
7773
+ Set it to start with series hidden. Every chart reading the same table
7774
+ draws without them. Commas only, because a column's heading may hold a
7775
+ space. For a ring the names are the rows. */
7776
+ "hidden-series"?: (HelixLegend["hiddenSeries"]) | undefined;
7777
+ /** The series hidden on the table, by name, separated by commas: what
7778
+ `toggles` hides and shows.
7779
+
7780
+ Set it to start with series hidden. Every chart reading the same table
7781
+ draws without them. Commas only, because a column's heading may hold a
7782
+ space. For a ring the names are the rows. */
7783
+ hiddenSeries?: (HelixLegend["hiddenSeries"]) | undefined;
7148
7784
  /** The name of the list, which a screen reader announces before its entries.
7149
7785
 
7150
7786
  Absent names the list after the table's caption, so a page with several
7151
7787
  charts has a legend list for each that says which chart it keys. */
7152
7788
  label?: (HelixLegend["label"]) | undefined;
7789
+ /** Makes each entry a button that hides or shows its series in every chart
7790
+ reading the same table.
7791
+
7792
+ Absent, the legend only displays, which is what it did before this
7793
+ existed. Reflected, because the styled tier draws a button differently
7794
+ from a plain entry. */
7795
+ toggles?: (HelixLegend["toggles"]) | undefined;
7153
7796
  };
7154
7797
 
7155
- export type HelixLegendVueEvents = {};
7798
+ export type HelixLegendVueEvents = {
7799
+ /** Fired once a toggle has hidden or shown a series. */
7800
+ change: HelixLegendElementEvent;
7801
+ /** Fired before a toggle hides or shows a series, with the `hidden-series` it would leave. Cancelable. */
7802
+ "helix-before-change": HelixLegendHelixBeforeChangeElementEvent;
7803
+ };
7156
7804
 
7157
7805
  export type HelixLightboxItemVueProps = {
7158
7806
  /** Whether this item is the one shown.
@@ -7221,6 +7869,19 @@ hydration, or diffed by a framework, it comes back holding whatever the
7221
7869
  last reader did rather than what the author wrote. `:state(open)` carries
7222
7870
  the resolved state for stylesheets, which is what the mirror is for. */
7223
7871
  open?: (HelixLightbox["open"]) | undefined;
7872
+ /** Draws the viewer's own previous, next and close controls over the picture.
7873
+
7874
+ Off by default, for a viewer whose chrome you compose in the `header` and
7875
+ `footer` slots. The controls hide with the rest of the chrome while the
7876
+ reader is idle, and the previous and next ones say they are unavailable at
7877
+ either end of a set that does not `loop`. */
7878
+ controls?: (HelixLightbox["controls"]) | undefined;
7879
+ /** The close control's accessible name. Translate it with the rest of your
7880
+ interface. */
7881
+ "dismiss-label"?: (HelixLightbox["dismissLabel"]) | undefined;
7882
+ /** The close control's accessible name. Translate it with the rest of your
7883
+ interface. */
7884
+ dismissLabel?: (HelixLightbox["dismissLabel"]) | undefined;
7224
7885
  /** How long the user can be idle before the header and footer hide, in
7225
7886
  milliseconds.
7226
7887
 
@@ -7239,6 +7900,28 @@ keep the chrome up is the consumer's to decide with this. */
7239
7900
  label?: (HelixLightbox["label"]) | undefined;
7240
7901
  /** Whether moving past the last item returns to the first. */
7241
7902
  loop?: (HelixLightbox["loop"]) | undefined;
7903
+ /** The next control's accessible name. */
7904
+ "next-label"?: (HelixLightbox["nextLabel"]) | undefined;
7905
+ /** The next control's accessible name. */
7906
+ nextLabel?: (HelixLightbox["nextLabel"]) | undefined;
7907
+ /** The previous control's accessible name. */
7908
+ "previous-label"?: (HelixLightbox["previousLabel"]) | undefined;
7909
+ /** The previous control's accessible name. */
7910
+ previousLabel?: (HelixLightbox["previousLabel"]) | undefined;
7911
+ /** The name of an item with no `label` of its own, with `{index}` and
7912
+ `{count}` filled in. */
7913
+ "slide-label"?: (HelixLightbox["slideLabel"]) | undefined;
7914
+ /** The name of an item with no `label` of its own, with `{index}` and
7915
+ `{count}` filled in. */
7916
+ slideLabel?: (HelixLightbox["slideLabel"]) | undefined;
7917
+ /** The word screen readers announce in place of an item's role, set as
7918
+ `aria-roledescription`. Translate it with the rest of your text, or empty
7919
+ it to leave the role as `group`. */
7920
+ "slide-role-label"?: (HelixLightbox["slideRoleLabel"]) | undefined;
7921
+ /** The word screen readers announce in place of an item's role, set as
7922
+ `aria-roledescription`. Translate it with the rest of your text, or empty
7923
+ it to leave the role as `group`. */
7924
+ slideRoleLabel?: (HelixLightbox["slideRoleLabel"]) | undefined;
7242
7925
  /** The status text that says which item is shown, with `{index}`, `{count}`
7243
7926
  and the item's `{label}` filled in.
7244
7927
 
@@ -7595,6 +8278,22 @@ filtering already does: `filter`, the empty state and the keyboard are all
7595
8278
  this component's. A select, a combobox and a command palette drawing their
7596
8279
  own search boxes would be three copies of one field. */
7597
8280
  filterable?: (HelixListbox["filterable"]) | undefined;
8281
+ /** How long typing in the filter field rests before the list is filtered, in
8282
+ milliseconds. `0` filters on every keystroke.
8283
+
8284
+ For a list filtered on a server, where `helix-filter` starts a request: a
8285
+ reader typing a word sends one request for the word, not one for each
8286
+ letter. Enter and the arrow keys filter at once on what is typed, so they
8287
+ act on the list the reader expects. */
8288
+ "filter-delay"?: (HelixListbox["filterDelay"] | `${number}`) | undefined;
8289
+ /** How long typing in the filter field rests before the list is filtered, in
8290
+ milliseconds. `0` filters on every keystroke.
8291
+
8292
+ For a list filtered on a server, where `helix-filter` starts a request: a
8293
+ reader typing a word sends one request for the word, not one for each
8294
+ letter. Enter and the arrow keys filter at once on what is typed, so they
8295
+ act on the list the reader expects. */
8296
+ filterDelay?: (HelixListbox["filterDelay"]) | undefined;
7598
8297
  /** Placeholder text for the filter field. */
7599
8298
  "filter-label"?: (HelixListbox["filterLabel"]) | undefined;
7600
8299
  /** Placeholder text for the filter field. */
@@ -7608,6 +8307,26 @@ a reader can move through the options before closing the panel on one. */
7608
8307
  manual?: (HelixListbox["manual"]) | undefined;
7609
8308
  /** Whether more than one option can be chosen. */
7610
8309
  multiple?: (HelixListbox["multiple"]) | undefined;
8310
+ /** What a screen reader hears when a filter leaves one option. `{count}` is
8311
+ the count. */
8312
+ "result-label"?: (HelixListbox["resultLabel"]) | undefined;
8313
+ /** What a screen reader hears when a filter leaves one option. `{count}` is
8314
+ the count. */
8315
+ resultLabel?: (HelixListbox["resultLabel"]) | undefined;
8316
+ /** What a screen reader hears when a filter leaves any other number of
8317
+ options. `{count}` is the count.
8318
+
8319
+ **Two sentences, chosen by `Intl.PluralRules`**, which is Data Table's
8320
+ pair: a language with more forms than two picks the one for its `one` and
8321
+ writes the rest here. */
8322
+ "results-label"?: (HelixListbox["resultsLabel"]) | undefined;
8323
+ /** What a screen reader hears when a filter leaves any other number of
8324
+ options. `{count}` is the count.
8325
+
8326
+ **Two sentences, chosen by `Intl.PluralRules`**, which is Data Table's
8327
+ pair: a language with more forms than two picks the one for its `one` and
8328
+ writes the rest here. */
8329
+ resultsLabel?: (HelixListbox["resultsLabel"]) | undefined;
7611
8330
  /** Whether the control is disabled and cannot be used.
7612
8331
 
7613
8332
  Reflected, because the styled tier selects on it, and mirrored to
@@ -7671,6 +8390,18 @@ swells with it, in step. It is the shape for a wait that has a mark to
7671
8390
  show, a splash or a first paint behind a wordmark, where a rotating rim
7672
8391
  around a logo reads as chrome bolted to the brand. */
7673
8392
  variant?: (HelixLoader["variant"]) | undefined;
8393
+ /** How long the loader waits before it shows, in milliseconds, so work that
8394
+ finishes quickly never flashes one.
8395
+
8396
+ Absent shows it at once. Hidden in the served markup too, so a page that
8397
+ loads quickly never draws it. */
8398
+ delay?: (HelixLoader["delay"]) | undefined;
8399
+ /** The id of the region being loaded, which is marked `aria-busy` while the
8400
+ loader is on the page.
8401
+
8402
+ Names an element in the same tree. In React it arrives as a property, the
8403
+ way `Tooltip.for` does. */
8404
+ for?: (HelixLoader["for"]) | undefined;
7674
8405
  /** The loader's name, announced by screen readers while the work is in
7675
8406
  progress. */
7676
8407
  label?: (HelixLoader["label"]) | undefined;
@@ -8797,7 +9528,10 @@ no reader. */
8797
9528
 
8798
9529
  Absent leaves the range unbanded. */
8799
9530
  high?: (HelixMeter["high"]) | undefined;
8800
- /** Accessible name for the reading. */
9531
+ /** Accessible name for the reading.
9532
+
9533
+ A visible label in the `label` slot names it instead, with the words it
9534
+ shows, so the name and the label cannot disagree. */
8801
9535
  label?: (HelixMeter["label"]) | undefined;
8802
9536
  /** The locale the percentage is written in, such as `fr` for `72 %`.
8803
9537
 
@@ -9075,6 +9809,12 @@ say that without the component knowing what a row looks like. */
9075
9809
  "mark-all-label"?: (HelixNotifications["markAllLabel"]) | undefined;
9076
9810
  /** Label for the mark-all control. */
9077
9811
  markAllLabel?: (HelixNotifications["markAllLabel"]) | undefined;
9812
+ /** How many notifications there are in all, where the feed holds only some of
9813
+ them, read as each row's `aria-setsize`. `-1` says the count is unknown.
9814
+
9815
+ Unset, the browser counts the rows it can see, which is right for a feed
9816
+ that holds everything. */
9817
+ total?: (HelixNotifications["total"]) | undefined;
9078
9818
  };
9079
9819
 
9080
9820
  export type HelixNotificationsVueEvents = {
@@ -9162,6 +9902,22 @@ reach the bubble. Absent is the control's own sentence, in English. */
9162
9902
  "decrement-label"?: (HelixNumberInput["decrementLabel"]) | undefined;
9163
9903
  /** The name of the step down button, read by screen readers. */
9164
9904
  decrementLabel?: (HelixNumberInput["decrementLabel"]) | undefined;
9905
+ /** `Intl.NumberFormat` options the number is shown with while the field is
9906
+ not being edited: a currency, a percent, a unit, or a number of decimals.
9907
+ Written as JSON in the attribute.
9908
+
9909
+ ```html
9910
+ <helix-number-input format-options='{"style":"currency","currency":"EUR"}'></helix-number-input>
9911
+ ``` */
9912
+ "format-options"?: (HelixNumberInput["formatOptions"]) | undefined;
9913
+ /** `Intl.NumberFormat` options the number is shown with while the field is
9914
+ not being edited: a currency, a percent, a unit, or a number of decimals.
9915
+ Written as JSON in the attribute.
9916
+
9917
+ ```html
9918
+ <helix-number-input format-options='{"style":"currency","currency":"EUR"}'></helix-number-input>
9919
+ ``` */
9920
+ formatOptions?: (HelixNumberInput["formatOptions"]) | undefined;
9165
9921
  /** The name of the step up button, read by screen readers. */
9166
9922
  "increment-label"?: (HelixNumberInput["incrementLabel"]) | undefined;
9167
9923
  /** The name of the step up button, read by screen readers. */
@@ -9213,6 +9969,12 @@ filled in. */
9213
9969
  readonly?: (HelixNumberInput["readOnly"]) | undefined;
9214
9970
  /** Prevents editing. The value is still submitted with the form. */
9215
9971
  readOnly?: (HelixNumberInput["readOnly"]) | undefined;
9972
+ /** What the field is described as on iOS and iPadOS, where it carries no
9973
+ spinbutton role. See the class description. */
9974
+ "role-description"?: (HelixNumberInput["roleDescription"]) | undefined;
9975
+ /** What the field is described as on iOS and iPadOS, where it carries no
9976
+ spinbutton role. See the class description. */
9977
+ roleDescription?: (HelixNumberInput["roleDescription"]) | undefined;
9216
9978
  /** Makes the label a grip that changes the value when it is dragged.
9217
9979
 
9218
9980
  The label is what is dragged, so this adds no chrome at all. Still opt-in,
@@ -9245,6 +10007,10 @@ A unit slotted into `end` is drawn beside the number and is not part of
9245
10007
  what the spinbutton announces, so it goes here too. Empty announces the
9246
10008
  number alone. */
9247
10009
  valueText?: (HelixNumberInput["valueText"]) | undefined;
10010
+ /** Whether the mouse wheel steps the number while the field has focus, as
10011
+ React Aria's NumberField does unless told not to. Off, the wheel scrolls
10012
+ the page, which is what a reader passing over a form expects. */
10013
+ wheel?: (HelixNumberInput["wheel"]) | undefined;
9248
10014
  /** Whether the control is disabled and cannot be used.
9249
10015
 
9250
10016
  Reflected, because the styled tier selects on it, and mirrored to
@@ -9479,6 +10245,24 @@ string is not a fact a selector needs. */
9479
10245
  description?: (HelixOption["description"]) | undefined;
9480
10246
  /** Prevents the option from being chosen. */
9481
10247
  disabled?: (HelixOption["disabled"]) | undefined;
10248
+ /** Whether following the link downloads what it names. Only meaningful
10249
+ beside an `href`. */
10250
+ download?: (HelixOption["download"]) | undefined;
10251
+ /** The URL the option links to. Setting it makes the option a link: choosing
10252
+ it, with a press, Enter or a click, follows the link and selects nothing,
10253
+ as React Aria's items with `href` do. Command, Control and Shift open it
10254
+ where they open a link, in a new tab or a new window.
10255
+
10256
+ `helix-select` is said first with the `href` in it, and canceling it keeps
10257
+ the browser from following, so a client-side router follows it instead.
10258
+
10259
+ **The option stays an option**, and an anchor is never drawn inside it:
10260
+ `role="option"` sits on the host, where a listbox's
10261
+ `aria-activedescendant` can name it, and an `<a>` inside would be exposed
10262
+ as a link within the option and take its name (Menu Item's `href` records
10263
+ the measurement). The link is followed through an anchor made for the
10264
+ moment, which `followLink` describes. */
10265
+ href?: (HelixOption["href"]) | undefined;
9482
10266
  /** A shorter name for this choice, for where the row does not fit.
9483
10267
 
9484
10268
  `<option label>`'s own meaning: the text a chooser shows when it has less
@@ -9490,10 +10274,30 @@ simply the accessible name.
9490
10274
  `<option label>` does: written the platform's way, a select listed a row of
9491
10275
  nothing for every choice. */
9492
10276
  label?: (HelixOption["label"]) | undefined;
10277
+ /** The link's `rel`. Set it whenever you set `target="_blank"`. */
10278
+ rel?: (HelixOption["rel"]) | undefined;
9493
10279
  /** Whether this choice is currently chosen.
9494
10280
 
9495
10281
  Written by the listbox. */
9496
10282
  selected?: (HelixOption["selected"]) | undefined;
10283
+ /** Where the link opens, such as `_blank`, for an option with an `href`. */
10284
+ target?: (HelixOption["target"]) | undefined;
10285
+ /** The words a reader types to reach this choice, where the row's own words
10286
+ are not them: typeahead, a filter and a combobox match against it, and a
10287
+ select's trigger shows it.
10288
+
10289
+ For a row whose content is a picture, an avatar beside a name and a role,
10290
+ or a name written in another script, as React Aria's `textValue`. Empty
10291
+ reads the row's words, then `label`. */
10292
+ "text-value"?: (HelixOption["textValue"]) | undefined;
10293
+ /** The words a reader types to reach this choice, where the row's own words
10294
+ are not them: typeahead, a filter and a combobox match against it, and a
10295
+ select's trigger shows it.
10296
+
10297
+ For a row whose content is a picture, an avatar beside a name and a role,
10298
+ or a name written in another script, as React Aria's `textValue`. Empty
10299
+ reads the row's words, then `label`. */
10300
+ textValue?: (HelixOption["textValue"]) | undefined;
9497
10301
  /** The value that identifies the option, and that a form submits. */
9498
10302
  value?: (HelixOption["value"]) | undefined;
9499
10303
  /** Whether the markup declares this option selected. A form reset returns to it.
@@ -9525,7 +10329,7 @@ change of its own rather than a property being added. */
9525
10329
  };
9526
10330
 
9527
10331
  export type HelixOptionVueEvents = {
9528
- /** The option was chosen. Cancelable: canceling it leaves the selection as it was. */
10332
+ /** The option was chosen. Cancelable: canceling it leaves the selection as it was, and keeps the browser from following an option's `href`. */
9529
10333
  "helix-select": HelixOptionHelixSelectElementEvent;
9530
10334
  };
9531
10335
 
@@ -9908,10 +10712,18 @@ that lets a phone offer the code out of a message. Later cells stay `off`
9908
10712
  for the reason in the class comment above, that six cells each offering
9909
10713
  the same code is one offer made six times. */
9910
10714
  autocomplete?: (HelixPinInput["autocomplete"]) | undefined;
10715
+ /** Whether the form is submitted once the last box is filled, as Web
10716
+ Awesome's `autosubmit` and Radix's `autoSubmit`. Only for a code the field
10717
+ took: a refused last character submits nothing. */
10718
+ autosubmit?: (HelixPinInput["autosubmit"]) | undefined;
9911
10719
  /** Accessible name for one box, with `{index}` and `{length}` filled in. */
9912
10720
  "cell-label"?: (HelixPinInput["cellLabel"]) | undefined;
9913
10721
  /** Accessible name for one box, with `{index}` and `{length}` filled in. */
9914
10722
  cellLabel?: (HelixPinInput["cellLabel"]) | undefined;
10723
+ /** Separators drawn between the boxes: `#` or `*` for a box and anything
10724
+ else as it is written, so `###-###` draws a dash after the third. The
10725
+ separators are hidden from screen readers and are not part of the value. */
10726
+ format?: (HelixPinInput["format"]) | undefined;
9915
10727
  /** How many characters the code has. */
9916
10728
  length?: (HelixPinInput["length"]) | undefined;
9917
10729
  /** Whether the characters are hidden, the way a password is. */
@@ -10037,8 +10849,17 @@ hydration, or diffed by a framework, it comes back holding whatever the
10037
10849
  last reader did rather than what the author wrote. `:state(open)` carries
10038
10850
  the resolved state for stylesheets, which is what the mirror is for. */
10039
10851
  open?: (HelixPopover["open"]) | undefined;
10040
- /** The panel's name, read by screen readers. */
10852
+ /** Draws a point on the panel's edge facing the trigger.
10853
+
10854
+ Off by default, which is the house style: a panel that opens from its
10855
+ trigger already reads as belonging to it. */
10856
+ arrow?: (HelixPopover["arrow"]) | undefined;
10857
+ /** The panel's name, read by screen readers. Left at `Popover`, the first
10858
+ heading in the panel names it instead. */
10041
10859
  label?: (HelixPopover["label"]) | undefined;
10860
+ /** Keeps `Tab` inside the panel while it is open, and marks the panel
10861
+ `aria-modal`. A press outside and Escape still close it. */
10862
+ modal?: (HelixPopover["modal"]) | undefined;
10042
10863
  /** Space between the trigger and the panel, in pixels. */
10043
10864
  offset?: (HelixPopover["offset"]) | undefined;
10044
10865
  /** Preferred side.
@@ -10088,7 +10909,10 @@ Not `Loader`, which is the other thing this could be. A loader says the
10088
10909
  page is busy; a bar says a named piece of work is running, and keeps its
10089
10910
  place in the layout when the answer arrives and it becomes determinate. */
10090
10911
  indeterminate?: (HelixProgress["indeterminate"]) | undefined;
10091
- /** Accessible name for what is in progress. */
10912
+ /** Accessible name for what is in progress.
10913
+
10914
+ A visible label in the `label` slot names it instead, with the words it
10915
+ shows, so the name and the label cannot disagree. */
10092
10916
  label?: (HelixProgress["label"]) | undefined;
10093
10917
  /** The locale the percentage is written in, such as `fr` for `72 %`.
10094
10918
 
@@ -10271,6 +11095,22 @@ not touch, and React reads that as a hydration mismatch. The absent
10271
11095
  attribute *is* the column, which the stylesheet reads as the base rule, so
10272
11096
  only `horizontal` has to be named. */
10273
11097
  orientation?: (HelixRadioGroup["orientation"]) | undefined;
11098
+ /** Whether a reader can see and focus the answer and cannot change it. A
11099
+ read-only group still submits its value.
11100
+
11101
+ React Aria's `isReadOnly`. A press on a radio is refused, and the arrow
11102
+ keys, Home and End leave focus on the answer, so Tab still reaches it and
11103
+ a reader hears it with the group's name. The group says `aria-readonly`.
11104
+ A script can still set `value`. */
11105
+ readonly?: (HelixRadioGroup["readOnly"]) | undefined;
11106
+ /** Whether a reader can see and focus the answer and cannot change it. A
11107
+ read-only group still submits its value.
11108
+
11109
+ React Aria's `isReadOnly`. A press on a radio is refused, and the arrow
11110
+ keys, Home and End leave focus on the answer, so Tab still reaches it and
11111
+ a reader hears it with the group's name. The group says `aria-readonly`.
11112
+ A script can still set `value`. */
11113
+ readOnly?: (HelixRadioGroup["readOnly"]) | undefined;
10274
11114
  /** Whether the control is disabled and cannot be used.
10275
11115
 
10276
11116
  Reflected, because the styled tier selects on it, and mirrored to
@@ -10528,6 +11368,10 @@ and this one was the English a form in another language still spoke in
10528
11368
  the bubble it raises on submit: `feedback` replaces the message under
10529
11369
  the field and does not reach that one. */
10530
11370
  valueMissingMessage?: (HelixRating["valueMissingMessage"]) | undefined;
11371
+ /** Whether a reader can take the rating back to unrated: by pressing the
11372
+ chosen score again, or with Backspace or Delete. Zag's rating group
11373
+ clears the same way. */
11374
+ clearable?: (HelixRating["clearable"]) | undefined;
10531
11375
  /** How many marks there are. */
10532
11376
  max?: (HelixRating["max"]) | undefined;
10533
11377
  /** The lowest score that can be given. A cleared rating shows this score.
@@ -10673,6 +11517,8 @@ export type HelixRatingVueEvents = {
10673
11517
  change: HelixRatingElementEvent;
10674
11518
  /** The score is about to change. Cancelable: cancel it to keep the current score. */
10675
11519
  "helix-before-change": HelixRatingHelixBeforeChangeElementEvent;
11520
+ /** The rating went back to unrated, under `clearable`. Sent after `input` and `change`. */
11521
+ "helix-clear": HelixRatingElementEvent;
10676
11522
  /** The score changed. */
10677
11523
  input: HelixRatingElementEvent;
10678
11524
  };
@@ -11183,6 +12029,15 @@ imperatively later, and nothing is hydrating by then.
11183
12029
 
11184
12030
  Here rather than on each control. */
11185
12031
  name?: (HelixSelect["name"]) | undefined;
12032
+ /** What the trigger shows for the chosen options: a function given them, in
12033
+ the order they appear, that returns text, an element or a Lit template.
12034
+
12035
+ For a trigger that shows more than the words, an avatar beside a name or a
12036
+ count of a long set, as React Aria's `SelectValue` takes children. The
12037
+ trigger is named by what this draws, so keep the words in it. Nothing
12038
+ chosen still shows `placeholder`. A property only, there being no way to
12039
+ write a function in markup. */
12040
+ valueContent?: (HelixSelect["valueContent"]) | undefined;
11186
12041
  /** Which option is chosen, as an index, or `-1` where none is.
11187
12042
 
11188
12043
  Read off the listbox this renders, which owns the options and is where the
@@ -11210,6 +12065,11 @@ export type HelixSelectVueEvents = {
11210
12065
  };
11211
12066
 
11212
12067
  export type HelixSkeletonVueProps = {
12068
+ /** How the placeholder shows it is waiting: a sweep when unset, `pulse` to
12069
+ fade the fill in and out, or `none` to sit still.
12070
+
12071
+ Reduced motion stills both. */
12072
+ effect?: (HelixSkeleton["effect"]) | undefined;
11213
12073
  /** The shape of the placeholder: `text`, `circle`, or a block when unset.
11214
12074
 
11215
12075
  Unset is a block, which is what most missing things are. A block is the
@@ -11221,6 +12081,12 @@ profile".
11221
12081
 
11222
12082
  Absent hides the placeholder from screen readers. */
11223
12083
  label?: (HelixSkeleton["label"]) | undefined;
12084
+ /** Whether the content inside is still loading, which keeps it inert and
12085
+ draws the placeholder over it.
12086
+
12087
+ Absent shows the content. An empty skeleton is a placeholder whatever
12088
+ this says. Reflected, because the styled tier hides the content on it. */
12089
+ loading?: (HelixSkeleton["loading"]) | undefined;
11224
12090
  };
11225
12091
 
11226
12092
  export type HelixSkeletonVueEvents = {};
@@ -11290,6 +12156,25 @@ and this one was the English a form in another language still spoke in
11290
12156
  the bubble it raises on submit: `feedback` replaces the message under
11291
12157
  the field and does not reach that one. */
11292
12158
  valueMissingMessage?: (HelixSlider["valueMissingMessage"]) | undefined;
12159
+ /** `Intl.NumberFormat` options the value is written with: a currency, a
12160
+ percent, a unit, or a number of decimals. Written as JSON in the
12161
+ attribute.
12162
+
12163
+ ```html
12164
+ <helix-slider format-options='{"style":"currency","currency":"USD"}'></helix-slider>
12165
+ ``` */
12166
+ "format-options"?: (HelixSlider["formatOptions"]) | undefined;
12167
+ /** `Intl.NumberFormat` options the value is written with: a currency, a
12168
+ percent, a unit, or a number of decimals. Written as JSON in the
12169
+ attribute.
12170
+
12171
+ ```html
12172
+ <helix-slider format-options='{"style":"currency","currency":"USD"}'></helix-slider>
12173
+ ``` */
12174
+ formatOptions?: (HelixSlider["formatOptions"]) | undefined;
12175
+ /** The locale `format-options` writes the value in, such as `de-DE`. Empty is
12176
+ the reader's own. */
12177
+ locale?: (HelixSlider["locale"]) | undefined;
11293
12178
  /** Shows the value at each mark. */
11294
12179
  "marker-labels"?: (HelixSlider["markerLabels"]) | undefined;
11295
12180
  /** Shows the value at each mark. */
@@ -11332,6 +12217,12 @@ property, like every other word a control speaks. */
11332
12217
  "minimum-label"?: (HelixSlider["minimumLabel"]) | undefined;
11333
12218
  /** The name of a range's lower thumb, read after the slider's label. */
11334
12219
  minimumLabel?: (HelixSlider["minimumLabel"]) | undefined;
12220
+ /** How many steps a range's two thumbs stay apart, as Zag's
12221
+ `minStepsBetweenThumbs`. A thumb pushed closer stops there. */
12222
+ "min-steps-between-thumbs"?: (HelixSlider["minStepsBetweenThumbs"] | `${number}`) | undefined;
12223
+ /** How many steps a range's two thumbs stay apart, as Zag's
12224
+ `minStepsBetweenThumbs`. A thumb pushed closer stops there. */
12225
+ minStepsBetweenThumbs?: (HelixSlider["minStepsBetweenThumbs"]) | undefined;
11335
12226
  /** The direction the track runs. `vertical` stands it on end.
11336
12227
 
11337
12228
  For a level rather than a quantity: a fader, a channel, anything a reader
@@ -11387,6 +12278,10 @@ imperatively later, and nothing is hydrating by then.
11387
12278
 
11388
12279
  Here rather than on each control. */
11389
12280
  name?: (HelixSlider["name"]) | undefined;
12281
+ /** Writes a value as text, in place of `format-options`: words for a scale,
12282
+ or anything `Intl.NumberFormat` cannot say. A property, since a function
12283
+ cannot be written in an attribute. */
12284
+ formatter?: (HelixSlider["formatter"]) | undefined;
11390
12285
  };
11391
12286
 
11392
12287
  export type HelixSliderVueEvents = {
@@ -11933,6 +12828,28 @@ stylesheets. */
11933
12828
  "default-checked"?: (HelixSwitch["defaultChecked"]) | undefined;
11934
12829
  /** Whether the control starts checked. A form reset returns it to this state. */
11935
12830
  defaultChecked?: (HelixSwitch["defaultChecked"]) | undefined;
12831
+ /** Whether a reader can see and focus the control and cannot change it. A
12832
+ read-only control still submits its value.
12833
+
12834
+ React Aria's `isReadOnly`. A native checkbox has no read-only state, so
12835
+ the press is refused at the inner control, which keeps its box as it
12836
+ was, and the control says `aria-readonly`. A script can still set
12837
+ `checked`, as it can set the value of a read-only text field.
12838
+
12839
+ The attribute is `readonly`, which is the platform's spelling for the
12840
+ text fields. */
12841
+ readonly?: (HelixSwitch["readOnly"]) | undefined;
12842
+ /** Whether a reader can see and focus the control and cannot change it. A
12843
+ read-only control still submits its value.
12844
+
12845
+ React Aria's `isReadOnly`. A native checkbox has no read-only state, so
12846
+ the press is refused at the inner control, which keeps its box as it
12847
+ was, and the control says `aria-readonly`. A script can still set
12848
+ `checked`, as it can set the value of a read-only text field.
12849
+
12850
+ The attribute is `readonly`, which is the platform's spelling for the
12851
+ text fields. */
12852
+ readOnly?: (HelixSwitch["readOnly"]) | undefined;
11936
12853
  /** */
11937
12854
  "aria-label"?: unknown;
11938
12855
  /** The validation message shown under the control. It replaces the
@@ -12406,6 +13323,44 @@ export type HelixTabVueEvents = {
12406
13323
  "helix-select": HelixTabHelixSelectElementEvent;
12407
13324
  };
12408
13325
 
13326
+ /** `HelixTagGroup` component event */
13327
+ export type HelixTagGroupElementEvent<E = Event> = TypedEvent<HelixTagGroup, E>;
13328
+ /** `helix-before-change` event type */
13329
+ export type HelixTagGroupHelixBeforeChangeElementEvent =
13330
+ HelixTagGroupElementEvent<HelixBeforeChangeEvent>;
13331
+ /** `helix-dismiss` event type */
13332
+ export type HelixTagGroupHelixDismissElementEvent =
13333
+ HelixTagGroupElementEvent<HelixDismissEvent>;
13334
+
13335
+ export type HelixTagGroupVueProps = {
13336
+ /** The name of the set, such as "Filters", which a screen reader announces
13337
+ before its tags. */
13338
+ label?: (HelixTagGroup["label"]) | undefined;
13339
+ /** How many tags a reader can select: `single`, `multiple`, or none.
13340
+
13341
+ Absent selects nothing, and the tags carry no selected state at all. */
13342
+ "selection-mode"?: (HelixTagGroup["selectionMode"]) | undefined;
13343
+ /** How many tags a reader can select: `single`, `multiple`, or none.
13344
+
13345
+ Absent selects nothing, and the tags carry no selected state at all. */
13346
+ selectionMode?: (HelixTagGroup["selectionMode"]) | undefined;
13347
+ /** The selected tags' values, separated by commas, since a value may hold a
13348
+ space.
13349
+
13350
+ Set it to start with tags selected. A tag's value is its `value`, or its
13351
+ words where it has none. */
13352
+ value?: (HelixTagGroup["value"]) | undefined;
13353
+ };
13354
+
13355
+ export type HelixTagGroupVueEvents = {
13356
+ /** Fired once a press has changed which tags are selected. */
13357
+ change: HelixTagGroupElementEvent;
13358
+ /** Fired before a press changes which tags are selected, with the `value` it would leave. Cancelable. */
13359
+ "helix-before-change": HelixTagGroupHelixBeforeChangeElementEvent;
13360
+ /** A tag's remove button was pressed, or Delete or Backspace on the focused tag. Bubbles from that tag, which is its `target`; remove the tag in response. Cancelable. */
13361
+ "helix-dismiss": HelixTagGroupHelixDismissElementEvent;
13362
+ };
13363
+
12409
13364
  /** `HelixTag` component event */
12410
13365
  export type HelixTagElementEvent<E = Event> = TypedEvent<HelixTag, E>;
12411
13366
  /** `helix-dismiss` event type */
@@ -12456,6 +13411,28 @@ derive one rather than dash-casing it, so this would otherwise be
12456
13411
  reachable only as `dismisslabel`, which nobody would guess and no linter
12457
13412
  would catch. */
12458
13413
  dismissLabel?: (HelixTag["dismissLabel"]) | undefined;
13414
+ /** Takes the tag out of reach: its link and its remove button stop
13415
+ answering, and in a `Tag.Group` the arrow keys pass over it and it cannot
13416
+ be selected or removed. */
13417
+ disabled?: (HelixTag["disabled"]) | undefined;
13418
+ /** Makes the label a link to this address. */
13419
+ href?: (HelixTag["href"]) | undefined;
13420
+ /** What the tag stands for in its group's `value`.
13421
+
13422
+ Absent is the tag's own words, its category first. */
13423
+ value?: (HelixTag["value"]) | undefined;
13424
+ /** Whether the tag holds its group's tab stop.
13425
+
13426
+ Written by `Tag.Group` on every tag it holds, and unset outside one, which
13427
+ is how a tag knows it is a row. No attribute: it is coordination between
13428
+ elements, the same shape `Toggle.focusable` has. */
13429
+ focusable?: (HelixTag["focusable"]) | undefined;
13430
+ /** Whether the tag is selected, in a `Tag.Group` that selects.
13431
+
13432
+ Written by the group from its own `value`, and unset where nothing can be
13433
+ selected, which is what keeps `aria-selected` off a set that does not
13434
+ select. */
13435
+ selected?: (HelixTag["selected"]) | undefined;
12459
13436
  };
12460
13437
 
12461
13438
  export type HelixTagVueEvents = {
@@ -12596,6 +13573,12 @@ element sends two entries, and that is what this does. */
12596
13573
  maxlength?: (HelixTextarea["maxLength"] | `${number}`) | undefined;
12597
13574
  /** The most characters the value can have. */
12598
13575
  maxLength?: (HelixTextarea["maxLength"]) | undefined;
13576
+ /** How many lines an `auto-grow` field grows to before it scrolls. Absent,
13577
+ it grows with all of its text. */
13578
+ "max-rows"?: (HelixTextarea["maxRows"] | `${number}`) | undefined;
13579
+ /** How many lines an `auto-grow` field grows to before it scrolls. Absent,
13580
+ it grows with all of its text. */
13581
+ maxRows?: (HelixTextarea["maxRows"]) | undefined;
12599
13582
  /** The fewest characters the value can have.
12600
13583
 
12601
13584
  Forwarded to the real `<textarea>` rather than checked here, which is what
@@ -12695,6 +13678,20 @@ export type HelixTimeInputHelixBeforeOpenElementEvent =
12695
13678
  HelixTimeInputElementEvent<HelixBeforeOpenEvent>;
12696
13679
 
12697
13680
  export type HelixTimeInputVueProps = {
13681
+ /** What a screen reader hears for a segment with nothing in it, which a
13682
+ sighted reader sees as dashes. */
13683
+ "empty-segment-label"?: (HelixTimeInput["emptySegmentLabel"]) | undefined;
13684
+ /** What a screen reader hears for a segment with nothing in it, which a
13685
+ sighted reader sees as dashes. */
13686
+ emptySegmentLabel?: (HelixTimeInput["emptySegmentLabel"]) | undefined;
13687
+ /** Whether the field is a row of segments, one for each part of the date or
13688
+ time, in place of a line of text.
13689
+
13690
+ Each segment is set with digits or the arrow keys, in the order the
13691
+ locale writes them, so a reader types a date the way they write one and
13692
+ no format has to be read back. The picker still opens from the trigger
13693
+ and with Alt+Down. */
13694
+ segmented?: (HelixTimeInput["segmented"]) | undefined;
12698
13695
  /** Whether the value is locked. A read-only control still submits its value.
12699
13696
 
12700
13697
  **Enforced by refusing every request in one place**, which is the seam this
@@ -12824,6 +13821,16 @@ a typed time, which is then invalid. */
12824
13821
  Handed to the list, which offers them as unavailable, and checked against
12825
13822
  a typed time, which is then invalid. */
12826
13823
  disableTimes?: (HelixTimeInput["disableTimes"]) | undefined;
13824
+ /** The clock the times are written on: `h12` for twelve hours with a
13825
+ meridiem, `h23` for twenty-four. Absent is the locale's own.
13826
+
13827
+ Handed to the list. The value is `HH:mm` on twenty-four hours either way. */
13828
+ "hour-cycle"?: (HelixTimeInput["hourCycle"]) | undefined;
13829
+ /** The clock the times are written on: `h12` for twelve hours with a
13830
+ meridiem, `h23` for twenty-four. Absent is the locale's own.
13831
+
13832
+ Handed to the list. The value is `HH:mm` on twenty-four hours either way. */
13833
+ hourCycle?: (HelixTimeInput["hourCycle"]) | undefined;
12827
13834
  /** Language tag the times are written in.
12828
13835
 
12829
13836
  Absent uses the runtime's own. */
@@ -12875,7 +13882,12 @@ removes rather than as "Remove" said once per time. */
12875
13882
  **The name goes in**, so a row of them is heard as which one each
12876
13883
  removes rather than as "Remove" said once per time. */
12877
13884
  removeLabel?: (HelixTimeInput["removeLabel"]) | undefined;
12878
- /** How far apart the offered times are, in minutes. */
13885
+ /** Whether times carry their seconds: the value is `HH:mm:ss`, a typed time
13886
+ may give them, the field writes them, and the list's `step` counts seconds.
13887
+ See Time Picker's `seconds`. */
13888
+ seconds?: (HelixTimeInput["seconds"]) | undefined;
13889
+ /** How far apart the offered times are, in minutes, or in seconds with
13890
+ `seconds`. */
12879
13891
  step?: (HelixTimeInput["step"]) | undefined;
12880
13892
  /** Whether the field shows the time in the local style or as the value
12881
13893
  itself.
@@ -13025,6 +14037,20 @@ A time not on the step is simply never offered, so it is not an error to
13025
14037
  name one, and naming every time in the list is how the empty state is
13026
14038
  reached honestly rather than by handing over an empty range. */
13027
14039
  disableTimes?: (HelixTimePicker["disableTimes"]) | undefined;
14040
+ /** The clock the times are written on: `h12` for twelve hours with a
14041
+ meridiem, `h23` for twenty-four.
14042
+
14043
+ Absent is the locale's own, which is right for a reader's own form. Set it
14044
+ where every reader must see the same clock whatever their language, as a
14045
+ timetable does. The value is `HH:mm` on twenty-four hours either way. */
14046
+ "hour-cycle"?: (HelixTimePicker["hourCycle"]) | undefined;
14047
+ /** The clock the times are written on: `h12` for twelve hours with a
14048
+ meridiem, `h23` for twenty-four.
14049
+
14050
+ Absent is the locale's own, which is right for a reader's own form. Set it
14051
+ where every reader must see the same clock whatever their language, as a
14052
+ timetable does. The value is `HH:mm` on twenty-four hours either way. */
14053
+ hourCycle?: (HelixTimePicker["hourCycle"]) | undefined;
13028
14054
  /** What the wheel of hours is called, read by screen readers. */
13029
14055
  "hour-label"?: (HelixTimePicker["hourLabel"]) | undefined;
13030
14056
  /** What the wheel of hours is called, read by screen readers. */
@@ -13121,7 +14147,20 @@ else set needs. */
13121
14147
  readOnly?: (HelixTimePicker["readOnly"]) | undefined;
13122
14148
  /** Stops the form from submitting while no time is chosen. */
13123
14149
  required?: (HelixTimePicker["required"]) | undefined;
13124
- /** How far apart the offered times are, in minutes.
14150
+ /** What the wheel of seconds is called, read by screen readers. */
14151
+ "second-label"?: (HelixTimePicker["secondLabel"]) | undefined;
14152
+ /** What the wheel of seconds is called, read by screen readers. */
14153
+ secondLabel?: (HelixTimePicker["secondLabel"]) | undefined;
14154
+ /** Whether times carry their seconds.
14155
+
14156
+ The value becomes `HH:mm:ss`, each time is written with its seconds, the
14157
+ wheels take a column of seconds, and `step` counts seconds, the unit
14158
+ `<input type="time">` counts in. A list at a step of one second is 86,400
14159
+ rows, so give `seconds` a `step` and bounds that keep it a list, or use
14160
+ the wheels. */
14161
+ seconds?: (HelixTimePicker["seconds"]) | undefined;
14162
+ /** How far apart the offered times are, in minutes, or in seconds with
14163
+ `seconds`.
13125
14164
 
13126
14165
  Fifteen, which is four rows an hour and ninety-six in a day: enough that a
13127
14166
  reader scrolls rather than hunts, and few enough that the list is a list.
@@ -13295,7 +14334,11 @@ export type HelixToastHelixDismissElementEvent =
13295
14334
  HelixToastElementEvent<HelixDismissEvent>;
13296
14335
 
13297
14336
  export type HelixToastVueProps = {
13298
- /** Accessible name for the region, such as "Notifications". */
14337
+ /** The key that takes focus to the stack and back, such as `F8` or `Alt+T`:
14338
+ keys joined by `+`, the last one the key. Empty turns it off. */
14339
+ hotkey?: (HelixToast["hotkey"]) | undefined;
14340
+ /** Accessible name for the region, with `{hotkey}` filled in. Translate it with
14341
+ the rest of your interface. */
13299
14342
  label?: (HelixToast["label"]) | undefined;
13300
14343
  /** Which corner or edge the stack sits at.
13301
14344
 
@@ -13428,6 +14471,21 @@ reader while looking correct to everybody else. Worse, setting both draws
13428
14471
  it twice. One property moves the label the consumer already has to give,
13429
14472
  and cannot be used to remove it. */
13430
14473
  labelPlacement?: (HelixToggleGroup["labelPlacement"]) | undefined;
14474
+ /** The direction the items run. `vertical` puts them in a column, and the up
14475
+ and down arrows move between them.
14476
+
14477
+ Optional, so the attribute is absent until a consumer writes it. */
14478
+ orientation?: (HelixToggleGroup["orientation"]) | undefined;
14479
+ /** Whether one item is chosen, as a radio group, or several can be pressed,
14480
+ as a toolbar of buttons with `aria-pressed`.
14481
+
14482
+ Optional, so the attribute is absent until a consumer writes it. */
14483
+ "selection-mode"?: (HelixToggleGroup["selectionMode"]) | undefined;
14484
+ /** Whether one item is chosen, as a radio group, or several can be pressed,
14485
+ as a toolbar of buttons with `aria-pressed`.
14486
+
14487
+ Optional, so the attribute is absent until a consumer writes it. */
14488
+ selectionMode?: (HelixToggleGroup["selectionMode"]) | undefined;
13431
14489
  /** Whether the control is disabled and cannot be used.
13432
14490
 
13433
14491
  Reflected, because the styled tier selects on it, and mirrored to
@@ -13464,6 +14522,10 @@ work as before once focus is in it.
13464
14522
  No attribute: it is coordination between elements, and a consumer has no
13465
14523
  reason to set it. */
13466
14524
  focusable?: (HelixToggleGroup["focusable"]) | undefined;
14525
+ /** The pressed values as a list, under `selection-mode="multiple"`, in the
14526
+ order the items are written. Written, it presses exactly those items.
14527
+ Where one item is chosen, it is that one value, or none. */
14528
+ values?: (HelixToggleGroup["values"]) | undefined;
13467
14529
  };
13468
14530
 
13469
14531
  export type HelixToggleGroupVueEvents = {
@@ -13531,6 +14593,11 @@ group sits in holds the stop. No attribute: it is coordination between
13531
14593
  elements, and `tabindex` on a host the consumer rendered is the change a
13532
14594
  React consumer's hydration reports and does not patch up. */
13533
14595
  focusable?: (HelixToggle["focusable"]) | undefined;
14596
+ /** Whether the item is pressed, in a group where several can be, and
14597
+ `undefined` in a group where one is chosen.
14598
+
14599
+ Written by the group, like `selected`, so no attribute. */
14600
+ pressed?: (HelixToggle["pressed"]) | undefined;
13534
14601
  };
13535
14602
 
13536
14603
  export type HelixToggleVueEvents = {
@@ -13675,6 +14742,22 @@ worked. */
13675
14742
 
13676
14743
  It moves if that side does not fit. */
13677
14744
  placement?: (HelixTooltip["placement"]) | undefined;
14745
+ /** What shows the bubble. Unset, it is a pointer resting on the trigger and
14746
+ keyboard focus. `focus` is keyboard focus alone, for a hint a pointer does
14747
+ not need, such as a shortcut a mouse reader has no use for. */
14748
+ "show-on"?: (HelixTooltip["showOn"]) | undefined;
14749
+ /** What shows the bubble. Unset, it is a pointer resting on the trigger and
14750
+ keyboard focus. `focus` is keyboard focus alone, for a hint a pointer does
14751
+ not need, such as a shortcut a mouse reader has no use for. */
14752
+ showOn?: (HelixTooltip["showOn"]) | undefined;
14753
+ /** How long after a tooltip hides the next one still shows at once, with no
14754
+ `delay`, in milliseconds. The same skip delay Radix uses. Zero makes every
14755
+ tooltip wait. */
14756
+ "skip-delay"?: (HelixTooltip["skipDelay"] | `${number}`) | undefined;
14757
+ /** How long after a tooltip hides the next one still shows at once, with no
14758
+ `delay`, in milliseconds. The same skip delay Radix uses. Zero makes every
14759
+ tooltip wait. */
14760
+ skipDelay?: (HelixTooltip["skipDelay"]) | undefined;
13678
14761
  /** The id of a box to keep the bubble inside. Defaults to the viewport.
13679
14762
 
13680
14763
  Resolved the way `for` is, so an id in the same tree, which is what lets a
@@ -13768,6 +14851,14 @@ The shape is `Carousel`'s, which is the nearest thing in the library: a
13768
14851
  "next-label"?: (HelixTour["nextLabel"]) | undefined;
13769
14852
  /** Label for the control that goes on. */
13770
14853
  nextLabel?: (HelixTour["nextLabel"]) | undefined;
14854
+ /** Draws each stop's place in the run in its panel, as well as saying it. */
14855
+ progress?: (HelixTour["progress"]) | undefined;
14856
+ /** Each stop's place in the run, with `{index}` and `{count}` filled in.
14857
+ Translate it with the rest of your text. */
14858
+ "progress-label"?: (HelixTour["progressLabel"]) | undefined;
14859
+ /** Each stop's place in the run, with `{index}` and `{count}` filled in.
14860
+ Translate it with the rest of your text. */
14861
+ progressLabel?: (HelixTour["progressLabel"]) | undefined;
13771
14862
  /** Label for the control that leaves the tour. */
13772
14863
  "skip-label"?: (HelixTour["skipLabel"]) | undefined;
13773
14864
  /** Label for the control that leaves the tour. */
@@ -13822,6 +14913,9 @@ closed tour, a closed tour shows nothing, and nothing can disagree. */
13822
14913
  first?: (HelixTourStop["first"]) | undefined;
13823
14914
  /** The id of the element the stop points at. */
13824
14915
  for?: (HelixTourStop["for"]) | undefined;
14916
+ /** The panel's name, where neither the `heading` slot nor the content holds a
14917
+ heading. */
14918
+ label?: (HelixTourStop["label"]) | undefined;
13825
14919
  /** Whether the stop is the last one. Its next control then shows `doneLabel`. */
13826
14920
  last?: (HelixTourStop["last"]) | undefined;
13827
14921
  /** Label for the control that goes on. */
@@ -13834,6 +14928,15 @@ closed tour, a closed tour shows nothing, and nothing can disagree. */
13834
14928
  "skip-label"?: (HelixTourStop["skipLabel"]) | undefined;
13835
14929
  /** Label for the control that leaves the tour. */
13836
14930
  skipLabel?: (HelixTourStop["skipLabel"]) | undefined;
14931
+ /** What kind of stop this is. Unset, it is a bubble pointing at its target.
14932
+
14933
+ - `dialog`: a panel in the middle of the window, over a backdrop
14934
+ - `floating`: a panel in a corner of the window
14935
+ - `wait`: nothing shown, while the tour waits for the target to be on the page
14936
+
14937
+ Reflected, because the styled tier places a dialog and a floating panel by
14938
+ it, and unset at rest, so no default is written onto the host. */
14939
+ type?: (HelixTourStop["type"]) | undefined;
13837
14940
  };
13838
14941
 
13839
14942
  export type HelixTourStopVueEvents = {
@@ -14695,6 +15798,8 @@ export type CustomCssProperties = {
14695
15798
  "--badge-background-color"?: (string) | undefined;
14696
15799
  /** The color of the count, to pair with a fill set through `--badge-background-color`. */
14697
15800
  "--badge-color"?: (string) | undefined;
15801
+ /** The space between the content and the count under `placement="inline"`. */
15802
+ "--badge-gap"?: (string) | undefined;
14698
15803
  /** Pulls the mark in from the corner, along both axes. */
14699
15804
  "--badge-offset"?: (string) | undefined;
14700
15805
  /** The color of the ring between the indicator and what is behind it. */
@@ -14721,6 +15826,16 @@ export type CustomCssProperties = {
14721
15826
  "--bar-chart-secondary"?: (string) | undefined;
14722
15827
  /** The gradient for a bar, named per bar so the styled tier can use it as the `fill`. It is always drawn, and used only when `wash="gradient"` is set. */
14723
15828
  "--chart-bar-wash"?: (string) | undefined;
15829
+ /** The color of the attribution. */
15830
+ "--blockquote-attribution-color"?: (string) | undefined;
15831
+ /** The font size of the attribution. */
15832
+ "--blockquote-attribution-size"?: (string) | undefined;
15833
+ /** The color of the quoted passage. */
15834
+ "--blockquote-color"?: (string) | undefined;
15835
+ /** The typeface of the quoted passage, the display face by default. */
15836
+ "--blockquote-font-family"?: (string) | undefined;
15837
+ /** The space between the passage and its attribution. */
15838
+ "--blockquote-gap"?: (string) | undefined;
14724
15839
  /** The font size of the quoted passage. */
14725
15840
  "--blockquote-size"?: (string) | undefined;
14726
15841
  /** Inline padding of a control slotted into a crumb, matching the steps either side of it. */
@@ -14739,6 +15854,8 @@ export type CustomCssProperties = {
14739
15854
  "--button-background-color"?: (string) | undefined;
14740
15855
  /** Fill behind the button under the pointer. Without it, `--button-background-color` also applies on hover. */
14741
15856
  "--button-background-color-hover"?: (string) | undefined;
15857
+ /** Edge color of an outlined button. The other emphases draw no edge. */
15858
+ "--button-border-color"?: (string) | undefined;
14742
15859
  /** Label and icon color. */
14743
15860
  "--button-foreground-color"?: (string) | undefined;
14744
15861
  /** Space between the label and the content on either side of it. */
@@ -14763,8 +15880,20 @@ export type CustomCssProperties = {
14763
15880
  "--button-radius-start-start"?: (string) | undefined;
14764
15881
  /** Height of the control, for a row height outside the density steps. */
14765
15882
  "--button-size"?: (string) | undefined;
15883
+ /** Size of the ring a pending button turns. Defaults to the size of its icons. */
15884
+ "--button-spinner-size"?: (string) | undefined;
15885
+ /** The color of the bar, the mark and the tint, in place of the tone's. */
15886
+ "--callout-accent-color"?: (string) | undefined;
14766
15887
  /** The fill behind the callout. */
14767
15888
  "--callout-background-color"?: (string) | undefined;
15889
+ /** The thickness of the bar on the inline start edge. */
15890
+ "--callout-bar-thickness"?: (string) | undefined;
15891
+ /** The size of the callout's text. */
15892
+ "--callout-font-size"?: (string) | undefined;
15893
+ /** The space between the mark and the content. */
15894
+ "--callout-gap"?: (string) | undefined;
15895
+ /** The inset around the content, to which the bar's width is added at the start. */
15896
+ "--callout-padding"?: (string) | undefined;
14768
15897
  /** The corner radius of the callout. */
14769
15898
  "--callout-radius"?: (string) | undefined;
14770
15899
  /** The size of the corner handles that resize a selected card. */
@@ -14811,6 +15940,8 @@ export type CustomCssProperties = {
14811
15940
  "--card-border-color"?: (string) | undefined;
14812
15941
  /** Width of the surface's edge. Follows `--helix-border-surface`, which is a hairline unless your theme sets another width. The edge is what sets the surface apart. */
14813
15942
  "--card-border-width"?: (string) | undefined;
15943
+ /** Space between the regions, and between a header or footer and its actions. */
15944
+ "--card-gap"?: (string) | undefined;
14814
15945
  /** Height of the media region. Defaults to `auto`, which follows an image's own proportions. A chart has no height of its own, so set one here for a chart. */
14815
15946
  "--card-media-block-size"?: (string) | undefined;
14816
15947
  /** Width of the media column when horizontal. */
@@ -14889,8 +16020,12 @@ export type CustomCssProperties = {
14889
16020
  "--code-block-background-color"?: (string) | undefined;
14890
16021
  /** The line around the block and its header. */
14891
16022
  "--code-block-border-color"?: (string) | undefined;
16023
+ /** The color of the line numbers. */
16024
+ "--code-block-gutter-color"?: (string) | undefined;
14892
16025
  /** The background behind the name. The default is `surface-raised`. */
14893
16026
  "--code-block-header-background-color"?: (string) | undefined;
16027
+ /** The tallest the code grows before it scrolls. The default is no limit. */
16028
+ "--code-block-max-block-size"?: (string) | undefined;
14894
16029
  /** The corner radius of the header's top and the block's bottom, which form one shape. */
14895
16030
  "--code-block-radius"?: (string) | undefined;
14896
16031
  /** Fill behind the fragment. Defaults to the foreground color at 6%, which looks the same on a light page and a dark one. */
@@ -14917,6 +16052,10 @@ export type CustomCssProperties = {
14917
16052
  "--color-input-swatch-size"?: (string) | undefined;
14918
16053
  /** The chosen color, painted over the checkerboard that shows transparency. */
14919
16054
  "--color-input-swatch"?: (string) | undefined;
16055
+ /** The color of the names above the channel number fields, in `channel-fields`. */
16056
+ "--color-picker-field-label-color"?: (string) | undefined;
16057
+ /** The space between the channel number fields, in `channel-fields`. */
16058
+ "--color-picker-fields-gap"?: (string) | undefined;
14920
16059
  /** The corner radius of the square. */
14921
16060
  "--color-picker-grid-radius"?: (string) | undefined;
14922
16061
  /** The aspect ratio of the square. */
@@ -14963,6 +16102,8 @@ export type CustomCssProperties = {
14963
16102
  "--icon-button-shadow"?: (string) | undefined;
14964
16103
  /** Edge length of the control. */
14965
16104
  "--icon-button-size"?: (string) | undefined;
16105
+ /** Size of the ring a pending button turns. */
16106
+ "--icon-button-spinner-size"?: (string) | undefined;
14966
16107
  /** The height of the scrolling box while `windowed`. Ignored otherwise, where the grid is as tall as its rows. It is a fixed height, so a short result keeps the full box with space below it. */
14967
16108
  "--data-table-block-size"?: (string) | undefined;
14968
16109
  /** The text color of a cell. */
@@ -14991,12 +16132,22 @@ export type CustomCssProperties = {
14991
16132
  "--date-input-border-color"?: (string) | undefined;
14992
16133
  /** The width of the panel's border. It follows `--helix-border-floating`, which is `0`, so the panel stands out by its shadow unless a theme sets a border. */
14993
16134
  "--date-input-border-width"?: (string) | undefined;
16135
+ /** The fill behind the segment with focus, in `segmented`. It follows `--helix-color-primary`. */
16136
+ "--date-input-segment-focus-background-color"?: (string) | undefined;
16137
+ /** The text of the segment with focus, in `segmented`. */
16138
+ "--date-input-segment-focus-color"?: (string) | undefined;
16139
+ /** The text the locale writes between two segments, in `segmented`. */
16140
+ "--date-input-segment-literal-color"?: (string) | undefined;
16141
+ /** The dashes of a segment with nothing in it, in `segmented`. It matches the text field's placeholder. */
16142
+ "--date-input-segment-placeholder-color"?: (string) | undefined;
14994
16143
  /** The shadow under the panel. It follows `--helix-shadow-floating`. The panel can sit over any content, so it has a shadow by default. */
14995
16144
  "--date-input-shadow"?: (string) | undefined;
14996
16145
  /** Months per row. Two unless there is only one. */
14997
16146
  "--date-picker-columns"?: (string) | undefined;
14998
16147
  /** Width and height of a day. */
14999
16148
  "--date-picker-day-size"?: (string) | undefined;
16149
+ /** Height of a month or a year in the months and years views, where `max-view` is set. */
16150
+ "--date-picker-period-size"?: (string) | undefined;
15000
16151
  /** Band behind the days in a range. */
15001
16152
  "--date-picker-range-color"?: (string) | undefined;
15002
16153
  /** Height of a week row. */
@@ -15027,6 +16178,12 @@ export type CustomCssProperties = {
15027
16178
  "--dialog-shadow"?: (string) | undefined;
15028
16179
  /** The color of the line. */
15029
16180
  "--divider-color"?: (string) | undefined;
16181
+ /** The color of the content set into the line. */
16182
+ "--divider-content-color"?: (string) | undefined;
16183
+ /** The space either side of the content set into the line. */
16184
+ "--divider-content-gap"?: (string) | undefined;
16185
+ /** The length of line before the content under `content-placement="start"`, or after it under `end`. */
16186
+ "--divider-content-offset"?: (string) | undefined;
15030
16187
  /** The length of a vertical line. A horizontal line takes the divider's width. */
15031
16188
  "--divider-length"?: (string) | undefined;
15032
16189
  /** The space removed from both ends of the line. */
@@ -15065,12 +16222,34 @@ export type CustomCssProperties = {
15065
16222
  "--drawer-shadow"?: (string) | undefined;
15066
16223
  /** Width or height of the panel. */
15067
16224
  "--drawer-size"?: (string) | undefined;
16225
+ /** How far a swipe, or a snap point, has moved the panel across, in pixels, toward the right. */
16226
+ "--drawer-swipe-x"?: (string) | undefined;
16227
+ /** How far a swipe, or a snap point, has moved the panel down, in pixels. */
16228
+ "--drawer-swipe-y"?: (string) | undefined;
15068
16229
  /** Fill when a row is under the pointer. */
15069
16230
  "--drilldown-item-hover-color"?: (string) | undefined;
15070
16231
  /** Fill behind the pages. */
15071
16232
  "--drilldown-background-color"?: (string) | undefined;
15072
16233
  /** Width of the region. */
15073
16234
  "--drilldown-inline-size"?: (string) | undefined;
16235
+ /** Space added above the actions. */
16236
+ "--empty-actions-gap"?: (string) | undefined;
16237
+ /** Space between the icon, the heading, the message and the actions. */
16238
+ "--empty-gap"?: (string) | undefined;
16239
+ /** Color of the heading. */
16240
+ "--empty-heading-color"?: (string) | undefined;
16241
+ /** Size of the heading. */
16242
+ "--empty-heading-size"?: (string) | undefined;
16243
+ /** Color of the icon. */
16244
+ "--empty-icon-color"?: (string) | undefined;
16245
+ /** Size of the icon. */
16246
+ "--empty-icon-size"?: (string) | undefined;
16247
+ /** Color of the message. */
16248
+ "--empty-message-color"?: (string) | undefined;
16249
+ /** Widest the message runs before it wraps. */
16250
+ "--empty-message-measure"?: (string) | undefined;
16251
+ /** Size of the message. */
16252
+ "--empty-message-size"?: (string) | undefined;
15074
16253
  /** Space around the whole block. */
15075
16254
  "--empty-padding"?: (string) | undefined;
15076
16255
  /** Fill behind the field. */
@@ -15165,6 +16344,12 @@ export type CustomCssProperties = {
15165
16344
  "--image-radius"?: (string) | undefined;
15166
16345
  /** Fill behind the text. */
15167
16346
  "--input-background-color"?: (string) | undefined;
16347
+ /** Edge of the field at rest. Hover, focus and an error still draw their own. */
16348
+ "--input-border-color"?: (string) | undefined;
16349
+ /** Space between the edge of the field and what is inside it. */
16350
+ "--input-padding-inline"?: (string) | undefined;
16351
+ /** Corner radius of the field. */
16352
+ "--input-radius"?: (string) | undefined;
15168
16353
  /** Height of the field. */
15169
16354
  "--input-size"?: (string) | undefined;
15170
16355
  /** The fill of the key. */
@@ -15173,8 +16358,14 @@ export type CustomCssProperties = {
15173
16358
  "--kbd-border-color"?: (string) | undefined;
15174
16359
  /** The direction the entries run: `row`, which wraps, or `column`. */
15175
16360
  "--legend-direction"?: (string) | undefined;
16361
+ /** The space between a swatch and its name. */
16362
+ "--legend-entry-gap"?: (string) | undefined;
15176
16363
  /** The space between entries. */
15177
16364
  "--legend-gap"?: (string) | undefined;
16365
+ /** How strongly a hidden series' entry is drawn, under `toggles`. */
16366
+ "--legend-hidden-opacity"?: (string) | undefined;
16367
+ /** The corner of the color swatch. */
16368
+ "--legend-swatch-radius"?: (string) | undefined;
15178
16369
  /** The size of the color swatch. */
15179
16370
  "--legend-swatch-size"?: (string) | undefined;
15180
16371
  /** The width of the edge an `outlined` or `subtle` swatch is drawn with. */
@@ -15183,6 +16374,8 @@ export type CustomCssProperties = {
15183
16374
  "--lightbox-item-description-color"?: (string) | undefined;
15184
16375
  /** Space between the content and the line under it. */
15185
16376
  "--lightbox-item-gap"?: (string) | undefined;
16377
+ /** Size of the previous, next and close controls drawn with `controls`. */
16378
+ "--lightbox-control-size"?: (string) | undefined;
15186
16379
  /** Color of the controls and text drawn over the content. */
15187
16380
  "--lightbox-foreground"?: (string) | undefined;
15188
16381
  /** Space between the header or footer and the content. */
@@ -15327,6 +16520,12 @@ export type CustomCssProperties = {
15327
16520
  "--menu-shadow"?: (string) | undefined;
15328
16521
  /** The fill color. Overrides the band's tone. */
15329
16522
  "--meter-color"?: (string) | undefined;
16523
+ /** The color of a slotted label. */
16524
+ "--meter-label-color"?: (string) | undefined;
16525
+ /** The space between a slotted label and the meter. */
16526
+ "--meter-label-gap"?: (string) | undefined;
16527
+ /** The type size of a slotted label. */
16528
+ "--meter-label-size"?: (string) | undefined;
15330
16529
  /** The width and height of the drawing in `ring` and `arc`. */
15331
16530
  "--meter-ring-size"?: (string) | undefined;
15332
16531
  /** The thickness of the stroke in `ring` and `arc`. */
@@ -15385,6 +16584,12 @@ export type CustomCssProperties = {
15385
16584
  "--notifications-media-column"?: (string) | undefined;
15386
16585
  /** The fill behind the number. */
15387
16586
  "--number-input-background-color"?: (string) | undefined;
16587
+ /** Edge of the field at rest. Hover, focus and an error still draw their own. */
16588
+ "--number-input-border-color"?: (string) | undefined;
16589
+ /** Corner radius of the field. */
16590
+ "--number-input-radius"?: (string) | undefined;
16591
+ /** Height of the field. */
16592
+ "--number-input-size"?: (string) | undefined;
15388
16593
  /** The background of the tree. */
15389
16594
  "--object-inspector-background-color"?: (string) | undefined;
15390
16595
  /** The height of the scrolling box when `windowed` is set. */
@@ -15423,8 +16628,18 @@ export type CustomCssProperties = {
15423
16628
  "--pagination-hover-color"?: (string) | undefined;
15424
16629
  /** The box every control in the row takes. */
15425
16630
  "--pagination-size"?: (string) | undefined;
16631
+ /** Fill behind each box. */
16632
+ "--pin-input-cell-background-color"?: (string) | undefined;
16633
+ /** Edge of each box at rest. Hover, focus and an error still draw their own. */
16634
+ "--pin-input-cell-border-color"?: (string) | undefined;
16635
+ /** Corner radius of each box. */
16636
+ "--pin-input-cell-radius"?: (string) | undefined;
16637
+ /** Width and height of each box. */
16638
+ "--pin-input-cell-size"?: (string) | undefined;
15426
16639
  /** The space between one box and the next. */
15427
16640
  "--pin-input-gap"?: (string) | undefined;
16641
+ /** Size of the point drawn with `arrow`. Tooltip's point is the same size. */
16642
+ "--popover-arrow-size"?: (string) | undefined;
15428
16643
  /** Color of the panel's edge. */
15429
16644
  "--popover-border-color"?: (string) | undefined;
15430
16645
  /** Width of the panel's edge. Defaults to `--helix-border-floating`, which is `0`, so the panel stands out by its shadow unless your theme sets a width. */
@@ -15439,6 +16654,12 @@ export type CustomCssProperties = {
15439
16654
  "--popover-shadow"?: (string) | undefined;
15440
16655
  /** Fill of the part that is done. */
15441
16656
  "--progress-color"?: (string) | undefined;
16657
+ /** Color of a slotted label. */
16658
+ "--progress-label-color"?: (string) | undefined;
16659
+ /** Space between a slotted label and the bar. */
16660
+ "--progress-label-gap"?: (string) | undefined;
16661
+ /** Type size of a slotted label. */
16662
+ "--progress-label-size"?: (string) | undefined;
15442
16663
  /** Diameter of the ring. */
15443
16664
  "--progress-ring-size"?: (string) | undefined;
15444
16665
  /** Thickness of the ring's stroke. */
@@ -15463,6 +16684,8 @@ export type CustomCssProperties = {
15463
16684
  "--qr-code-size"?: (string) | undefined;
15464
16685
  /** Color of the quoted text. */
15465
16686
  "--quote-color"?: (string) | undefined;
16687
+ /** The slant of the quoted text, `italic` by default. Set `normal` for a face whose italic is too loud, or `oblique` for one with no italic of its own. */
16688
+ "--quote-font-style"?: (string) | undefined;
15466
16689
  /** The space between the choices. */
15467
16690
  "--radio-group-gap"?: (string) | undefined;
15468
16691
  /** The fill of an unselected circle. */
@@ -15563,6 +16786,14 @@ export type CustomCssProperties = {
15563
16786
  "--select-surface-max-block-size"?: (string) | undefined;
15564
16787
  /** The height of the block shape, which is the shape when `shape` is unset. Defaults to the control height. */
15565
16788
  "--skeleton-block-size"?: (string) | undefined;
16789
+ /** The placeholder's fill. */
16790
+ "--skeleton-color"?: (string) | undefined;
16791
+ /** How long one sweep or one pulse takes. */
16792
+ "--skeleton-duration"?: (string) | undefined;
16793
+ /** The corner of the block shape. */
16794
+ "--skeleton-radius"?: (string) | undefined;
16795
+ /** The highlight the sweep carries across the fill. */
16796
+ "--skeleton-sheen-color"?: (string) | undefined;
15566
16797
  /** The diameter of the circle shape. */
15567
16798
  "--skeleton-size"?: (string) | undefined;
15568
16799
  /** The border color of the link while it is shown. */
@@ -15641,6 +16872,18 @@ export type CustomCssProperties = {
15641
16872
  "--stat-group-columns"?: (string) | undefined;
15642
16873
  /** Space between figures. */
15643
16874
  "--stat-group-gap"?: (string) | undefined;
16875
+ /** Space between the label and the value, and between the value and the unit in a row. */
16876
+ "--stat-gap"?: (string) | undefined;
16877
+ /** Color of the label. */
16878
+ "--stat-label-color"?: (string) | undefined;
16879
+ /** Size of the label. */
16880
+ "--stat-label-size"?: (string) | undefined;
16881
+ /** Color of the unit. */
16882
+ "--stat-unit-color"?: (string) | undefined;
16883
+ /** Size of the unit. */
16884
+ "--stat-unit-size"?: (string) | undefined;
16885
+ /** Color of the figure. */
16886
+ "--stat-value-color"?: (string) | undefined;
15644
16887
  /** Size of the figure. */
15645
16888
  "--stat-value-size"?: (string) | undefined;
15646
16889
  /** Color of the mark on a finished step. */
@@ -15657,6 +16900,8 @@ export type CustomCssProperties = {
15657
16900
  "--steps-marker-size"?: (string) | undefined;
15658
16901
  /** Height of the track. The width follows it. */
15659
16902
  "--switch-block-size"?: (string) | undefined;
16903
+ /** Color of the icon on the thumb. Without it, the icon is muted while off and takes the on color while on. */
16904
+ "--switch-icon-color"?: (string) | undefined;
15660
16905
  /** Length of the track. Set it to override the length derived from the height. */
15661
16906
  "--switch-inline-size"?: (string) | undefined;
15662
16907
  /** Fill when the switch is on. */
@@ -15687,22 +16932,42 @@ export type CustomCssProperties = {
15687
16932
  "--tabs-tab-padding-inline"?: (string) | undefined;
15688
16933
  /** The label color of the current tab. */
15689
16934
  "--tabs-tab-selected-color"?: (string) | undefined;
16935
+ /** The space between tags, across and between rows. */
16936
+ "--tag-group-gap"?: (string) | undefined;
15690
16937
  /** The fill behind the tag. */
15691
16938
  "--tag-background-color"?: (string) | undefined;
15692
16939
  /** The color of the tag's edge. */
15693
16940
  "--tag-border-color"?: (string) | undefined;
16941
+ /** How strongly a `disabled` tag is drawn. */
16942
+ "--tag-disabled-opacity"?: (string) | undefined;
15694
16943
  /** The label color. */
15695
16944
  "--tag-foreground-color"?: (string) | undefined;
15696
16945
  /** The corner radius of the tag. */
15697
16946
  "--tag-radius"?: (string) | undefined;
15698
16947
  /** Fill behind the text. */
15699
16948
  "--textarea-background-color"?: (string) | undefined;
16949
+ /** Edge of the field at rest. Hover, focus and an error still draw their own. */
16950
+ "--textarea-border-color"?: (string) | undefined;
16951
+ /** Space between the edge of the field and the text. */
16952
+ "--textarea-padding"?: (string) | undefined;
16953
+ /** Corner radius of the field. */
16954
+ "--textarea-radius"?: (string) | undefined;
16955
+ /** Which way a reader can drag the field: `vertical` by default, `none`, `both` or `horizontal`. A field under `auto-grow` has nothing to drag. */
16956
+ "--textarea-resize"?: (string) | undefined;
15700
16957
  /** Fill behind the field. */
15701
16958
  "--time-input-background-color"?: (string) | undefined;
15702
16959
  /** Color of the panel's edge. */
15703
16960
  "--time-input-border-color"?: (string) | undefined;
15704
16961
  /** Width of the panel's edge. Defaults to `--helix-border-floating`, which is `0`, so the panel stands out by its shadow unless your theme sets a width. */
15705
16962
  "--time-input-border-width"?: (string) | undefined;
16963
+ /** The fill behind the segment with focus, in `segmented`. It follows `--helix-color-primary`. */
16964
+ "--time-input-segment-focus-background-color"?: (string) | undefined;
16965
+ /** The text of the segment with focus, in `segmented`. */
16966
+ "--time-input-segment-focus-color"?: (string) | undefined;
16967
+ /** The text the locale writes between two segments, in `segmented`. */
16968
+ "--time-input-segment-literal-color"?: (string) | undefined;
16969
+ /** The dashes of a segment with nothing in it, in `segmented`. It matches the text field's placeholder. */
16970
+ "--time-input-segment-placeholder-color"?: (string) | undefined;
15706
16971
  /** Shadow under the panel. Defaults to `--helix-shadow-floating`, because the panel can sit over any content. */
15707
16972
  "--time-input-shadow"?: (string) | undefined;
15708
16973
  /** How tall the list is before it scrolls. */
@@ -15733,6 +16998,8 @@ export type CustomCssProperties = {
15733
16998
  "--toast-shadow"?: (string) | undefined;
15734
16999
  /** How long this message stays, in milliseconds, for a progress hint. */
15735
17000
  "--toast-duration"?: (string) | undefined;
17001
+ /** How far a swipe has moved the message across, in pixels, toward the right. */
17002
+ "--toast-swipe-x"?: (string) | undefined;
15736
17003
  /** Space between one message and the next. */
15737
17004
  "--toast-gap"?: (string) | undefined;
15738
17005
  /** Width of a message. */
@@ -15781,10 +17048,20 @@ export type CustomCssProperties = {
15781
17048
  "--tree-chevron-gap"?: (string) | undefined;
15782
17049
  /** The chevron's order in the row. Set from `chevron-placement` and read by each item. */
15783
17050
  "--tree-chevron-order"?: (string) | undefined;
17051
+ /** Color of a move that `good` says is an improvement. */
17052
+ "--trend-better-color"?: (string) | undefined;
15784
17053
  /** Color of the arrow. Setting it overrides the color that `good` sets. */
15785
17054
  "--trend-color"?: (string) | undefined;
15786
- /** Size of the arrow. */
17055
+ /** Space between the arrow, the metric and the label. */
17056
+ "--trend-gap"?: (string) | undefined;
17057
+ /** Size of the arrow, or of a glyph in the `icon` slot. */
15787
17058
  "--trend-icon-size"?: (string) | undefined;
17059
+ /** Color of the label. */
17060
+ "--trend-label-color"?: (string) | undefined;
17061
+ /** Color of a trend that `good` does not judge, or one that did not move. */
17062
+ "--trend-neutral-color"?: (string) | undefined;
17063
+ /** Color of a move that `good` says is a setback. */
17064
+ "--trend-worse-color"?: (string) | undefined;
15788
17065
  /** The fill behind a row. */
15789
17066
  "--video-playlist-item-background-color"?: (string) | undefined;
15790
17067
  /** The width of the thumbnail column. */
@@ -15875,7 +17152,7 @@ export interface WcToolkitVueGlobalComponents {
15875
17152
  HelixAvatarVueProps,
15876
17153
  HelixAvatarVueEvents
15877
17154
  >;
15878
- /** The indicator has a ring in the page background color, so it stays legible where it overlaps the element it is pinned to, such as a dark badge on a dark icon. */
17155
+ /** The indicator has a ring in the page background color, so it stays legible where it overlaps the element it is pinned to, such as a dark badge on a dark icon. 'placement' pins it to another corner, or puts it in the line with 'inline'. **Inside a control, 'inline' puts the count in the control's name**: '<button>Inbox <helix-badge placement="inline" value="8" label="8 unread"></helix-badge></button>' is the button "Inbox 8 unread", kept current by the badge with no label of yours to update. */
15879
17156
  "helix-badge": DefineCustomElement<
15880
17157
  HelixBadge,
15881
17158
  HelixBadgeVueProps,
@@ -15917,7 +17194,7 @@ export interface WcToolkitVueGlobalComponents {
15917
17194
  HelixButtonVueProps,
15918
17195
  HelixButtonVueEvents
15919
17196
  >;
15920
- /** The background is a tint of the tone's color, mixed with 'color-mix'. A 'neutral' callout is drawn in the muted ink, for a note that reports no status, so it keeps to the palette whatever the brand. A bar on the inline start edge also marks the tone, so it still shows in grayscale and for people who do not distinguish the hues. This tier has no treatment property. 'tone' is set on the headless tier and carries the meaning, and this tier draws it. */
17197
+ /** The background is a tint of the tone's color, mixed with 'color-mix'. A 'neutral' callout is drawn in the muted ink, for a note that reports no status, so it keeps to the palette whatever the brand. A bar on the inline start edge also marks the tone, so it still shows in grayscale and for people who do not distinguish the hues. 'tone' is set on the headless tier and carries the meaning, and this tier draws it. 'separation' is where the box ends: absent is the tint with the bar, 'outlined' an edge with no fill, and 'plain' the bar and the mark alone. */
15921
17198
  "helix-callout": DefineCustomElement<
15922
17199
  HelixCallout,
15923
17200
  HelixCalloutVueProps,
@@ -15941,7 +17218,7 @@ export interface WcToolkitVueGlobalComponents {
15941
17218
  HelixCanvasVueProps,
15942
17219
  HelixCanvasVueEvents
15943
17220
  >;
15944
- /** The regions are the 'media', 'header', and 'footer' slots and the default slot for content. None of them has a wrapper element. A region you leave out takes no space, so a card with only content needs no extra markup. Style slotted content directly: a header is the element you slotted, so there is no part to target. 'media' runs edge to edge and clips to the card's corners, so an image needs no inset. Set 'orientation="horizontal"' to put the media beside the header, content, and footer. Set 'media-placement="end"' to put it below the content, for example for a chart that ends a card. */
17221
+ /** The regions are the 'media', 'header', and 'footer' slots and the default slot for content. None of them has a wrapper element. A region you leave out takes no space, so a card with only content needs no extra markup. Style slotted content directly: a header is the element you slotted, so there is no part to target. 'header-actions' and 'footer-actions' put controls at the end of the header's and the footer's line; the footer then moves to the start of its line. Put a header of more than one element in one wrapper, since the header and its actions share a line. 'media' runs edge to edge and clips to the card's corners, so an image needs no inset. Set 'orientation="horizontal"' to put the media beside the header, content, and footer. Set 'media-placement="end"' to put it below the content, for example for a chart that ends a card. */
15945
17222
  "helix-card": DefineCustomElement<
15946
17223
  HelixCard,
15947
17224
  HelixCardVueProps,
@@ -15983,7 +17260,7 @@ export interface WcToolkitVueGlobalComponents {
15983
17260
  HelixCheckboxVueProps,
15984
17261
  HelixCheckboxVueEvents
15985
17262
  >;
15986
- /** The header sits above the code with the copy button at its end, so the button never covers the first line. A block with no name has no header. The button then sits beside the code in space the block keeps clear: an end gutter for code, and a band above the first hunk for a diff. A diff draws one block per file in the same frame. Each changed line is tinted in its tone at Tag's resting strength, with its '+' or '-' in the tone's ink color, so you can see the change without comparing two pale backgrounds. A split diff stacks its two versions when the file is narrower than about 40rem. */
17263
+ /** The header sits above the code with the copy button at its end, so the button never covers the first line. A block with no name has no header. The button then sits beside the code in space the block keeps clear: an end gutter for code, and a band above the first hunk for a diff. A diff draws one block per file in the same frame. Each changed line is tinted in its tone at Tag's resting strength, with its '+' or '-' in the tone's ink color, so you can see the change without comparing two pale backgrounds. A split diff stacks its two versions when the file is narrower than about 40rem. Long lines scroll by default. Set 'wrap' to wrap them instead, for prose-like code such as a long command, and set '--code-block-max-block-size' to cap the height of a long file, which then scrolls. */
15987
17264
  "helix-code-block": DefineCustomElement<
15988
17265
  HelixCodeBlock,
15989
17266
  HelixCodeBlockVueProps,
@@ -16061,7 +17338,7 @@ export interface WcToolkitVueGlobalComponents {
16061
17338
  HelixDialogVueProps,
16062
17339
  HelixDialogVueEvents
16063
17340
  >;
16064
- /** A one-pixel rule in the border color that spans the full inline size by default. A vertical divider stretches to fit its flex parent, so it matches the height of what it sits beside. */
17341
+ /** A one-pixel rule in the border color that spans the full inline size by default. A vertical divider stretches to fit its flex parent, so it matches the height of what it sits beside. Content set into the line sits at its middle. 'content-placement' moves it toward the start or the end, leaving a short length of line before or after it, the way a section label sits in a form. */
16065
17342
  "helix-divider": DefineCustomElement<
16066
17343
  HelixDivider,
16067
17344
  HelixDividerVueProps,
@@ -16193,7 +17470,7 @@ export interface WcToolkitVueGlobalComponents {
16193
17470
  HelixKbdVueProps,
16194
17471
  HelixKbdVueEvents
16195
17472
  >;
16196
- /** Entries are laid out in a row that wraps, because a legend under a chart is as wide as the chart, and its names have to fit any width. Set '--legend-direction' to 'column' when the legend sits beside a chart. Series colors are mapped in this tier. The headless tier carries the index and holds no tokens. The mapping is in 'shared/chart/series.css', because an index in markup cannot select a token, and an inline custom property would put a color in the headless tier. Charts and legends share the file, so both use the same twenty-four color names. */
17473
+ /** Entries are laid out in a row that wraps, because a legend under a chart is as wide as the chart, and its names have to fit any width. Set '--legend-direction' to 'column' when the legend sits beside a chart. Series colors are mapped in this tier. The headless tier carries the index and holds no tokens. The mapping is in 'shared/chart/series.css', because an index in markup cannot select a token, and an inline custom property would put a color in the headless tier. Charts and legends share the file, so both use the same twenty-four color names. Under 'toggles', each name is a button. A hidden series' entry fades and its swatch empties to an outline, so the color stays readable. */
16197
17474
  "helix-legend": DefineCustomElement<
16198
17475
  HelixLegend,
16199
17476
  HelixLegendVueProps,
@@ -16235,7 +17512,7 @@ export interface WcToolkitVueGlobalComponents {
16235
17512
  HelixListboxVueProps,
16236
17513
  HelixListboxVueEvents
16237
17514
  >;
16238
- /** Sized from the loader size tokens, so a loader is the same size wherever it is placed and follows the density region it sits in. Set '--loader-size: 1em' to match the text beside it, as inside a button. The color is 'currentColor', so it matches the text color around it, including inside a primary button. */
17515
+ /** Sized from the loader size tokens, so a loader is the same size wherever it is placed and follows the density region it sits in. Set '--loader-size: 1em' to match the text beside it, as inside a button. The color is 'currentColor', so it matches the text color around it, including inside a primary button. While 'delay' runs, the loader keeps its size and draws nothing, so the line it sits in does not move when it appears. */
16239
17516
  "helix-loader": DefineCustomElement<
16240
17517
  HelixLoader,
16241
17518
  HelixLoaderVueProps,
@@ -16511,7 +17788,7 @@ export interface WcToolkitVueGlobalComponents {
16511
17788
  HelixSelectVueProps,
16512
17789
  HelixSelectVueEvents
16513
17790
  >;
16514
- /** Animates a highlight sweeping across the block, which reads as work in progress. A block fading in and out can look broken. */
17791
+ /** Animates a highlight sweeping across the block, which reads as work in progress. A block fading in and out can look broken, so 'effect="pulse"' is a choice rather than the default. Around content with 'loading', the skeleton takes the content's box and paints over it, and the content is hidden until 'loading' is taken off. */
16515
17792
  "helix-skeleton": DefineCustomElement<
16516
17793
  HelixSkeleton,
16517
17794
  HelixSkeletonVueProps,
@@ -16576,7 +17853,7 @@ export interface WcToolkitVueGlobalComponents {
16576
17853
  HelixStepVueProps,
16577
17854
  HelixStepVueEvents
16578
17855
  >;
16579
- /** A thumb moves along a track. The switch is the one place in Helix where color means "on". A checkbox has a tick, and a switch has no mark, so the fill is what tells the two states apart. The input is the hit target. It is stretched over the track and made invisible, so the press, the focus, and the label forwarding come from the platform. The height is '--helix-size-switch', one step above the checkbox's at every density. At the checkbox's height the thumb has two pixels of track around it, and the control looks like a small dash. The width follows the height, so setting '--switch-block-size' widens the switch too and keeps the proportion. */
17856
+ /** A thumb moves along a track. The switch is the one place in Helix where color means "on". A checkbox has a tick, and a switch has no mark, so the fill is what tells the two states apart. The input is the hit target. It is stretched over the track and made invisible, so the press, the focus, and the label forwarding come from the platform. The height is '--helix-size-switch', one step above the checkbox's at every density. At the checkbox's height the thumb has two pixels of track around it, and the control looks like a small dash. The width follows the height, so setting '--switch-block-size' widens the switch too and keeps the proportion. The thumb is an element, the 'thumb' part, and holds an icon for each state: one in the 'on' slot shows while the switch is on, and one in the 'off' slot while it is off. */
16580
17857
  "helix-switch": DefineCustomElement<
16581
17858
  HelixSwitch,
16582
17859
  HelixSwitchVueProps,
@@ -16624,6 +17901,12 @@ export interface WcToolkitVueGlobalComponents {
16624
17901
  HelixTabVueProps,
16625
17902
  HelixTabVueEvents
16626
17903
  >;
17904
+ /** The tags sit in a row that wraps. A selected tag is filled with its tone, as 'emphasis="solid"' draws one, and the focused tag takes the focus ring round its whole box. */
17905
+ "helix-tag-group": DefineCustomElement<
17906
+ HelixTagGroup,
17907
+ HelixTagGroupVueProps,
17908
+ HelixTagGroupVueEvents
17909
+ >;
16627
17910
  /** Seven tones. The fill is a tint of the status color made with 'color-mix', so when a theme changes its status colors, the tints change with them. */
16628
17911
  "helix-tag": DefineCustomElement<
16629
17912
  HelixTag,