@fusion.dev/helix-headless 0.147.0 → 0.148.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 (141) hide show
  1. package/custom-elements.json +4512 -790
  2. package/dist/accordion/item/accordion-item.d.ts +5 -2
  3. package/dist/accordion/item/accordion-item.js +11 -7
  4. package/dist/accordion/root/accordion-root.js +4 -6
  5. package/dist/announcement/root/announcement-root.d.ts +56 -5
  6. package/dist/announcement/root/announcement-root.js +124 -21
  7. package/dist/area-chart/root/area-chart-root.js +3 -4
  8. package/dist/badge/count.d.ts +14 -0
  9. package/dist/badge/count.js +20 -0
  10. package/dist/badge/root/badge-root.js +8 -22
  11. package/dist/blockquote/root/blockquote-root.d.ts +66 -8
  12. package/dist/blockquote/root/blockquote-root.js +85 -8
  13. package/dist/breadcrumbs/breadcrumb/breadcrumb.js +2 -2
  14. package/dist/button-group/arrows.d.ts +14 -0
  15. package/dist/button-group/arrows.js +10 -0
  16. package/dist/button-group/root/button-group-root.d.ts +141 -3
  17. package/dist/button-group/root/button-group-root.js +142 -2
  18. package/dist/canvas/edge-pan.d.ts +61 -0
  19. package/dist/canvas/edge-pan.js +63 -0
  20. package/dist/canvas/node/canvas-node.d.ts +12 -2
  21. package/dist/canvas/node/canvas-node.js +6 -2
  22. package/dist/canvas/root/canvas-document.d.ts +10 -0
  23. package/dist/canvas/root/canvas-document.js +1 -0
  24. package/dist/canvas/root/canvas-root.d.ts +107 -5
  25. package/dist/canvas/root/canvas-root.js +140 -36
  26. package/dist/canvas/snap.d.ts +42 -0
  27. package/dist/canvas/snap.js +32 -0
  28. package/dist/carousel/root/carousel-root.d.ts +4 -3
  29. package/dist/carousel/root/carousel-root.js +2 -6
  30. package/dist/chat/root/chat-root.d.ts +13 -3
  31. package/dist/chat/root/chat-root.js +2 -6
  32. package/dist/checkbox-group/root/checkbox-group-root.d.ts +13 -0
  33. package/dist/checkbox-group/root/checkbox-group-root.js +18 -10
  34. package/dist/checkbox-group/select-all.d.ts +11 -0
  35. package/dist/checkbox-group/select-all.js +5 -0
  36. package/dist/code-block/root/code-block-root.d.ts +8 -6
  37. package/dist/code-block/root/code-block-root.js +4 -3
  38. package/dist/color-picker/root/color-picker-root.js +6 -12
  39. package/dist/color-picker/wheel.d.ts +11 -0
  40. package/dist/color-picker/wheel.js +9 -0
  41. package/dist/combobox/root/combobox-root.d.ts +70 -11
  42. package/dist/combobox/root/combobox-root.js +68 -18
  43. package/dist/command/root/command-root.d.ts +4 -3
  44. package/dist/data-table/root/data-table-root.js +17 -44
  45. package/dist/description-list/item/description-list-item.d.ts +4 -0
  46. package/dist/description-list/item/description-list-item.js +7 -1
  47. package/dist/divider/root/divider-root.d.ts +45 -16
  48. package/dist/divider/root/divider-root.js +28 -4
  49. package/dist/drilldown/item/drilldown-item.js +3 -4
  50. package/dist/element-events.generated.js +1 -0
  51. package/dist/empty/root/empty-root.d.ts +17 -3
  52. package/dist/empty/root/empty-root.js +29 -5
  53. package/dist/file-input/root/file-input-root.js +3 -4
  54. package/dist/file-input/status.js +2 -1
  55. package/dist/filter-input/chip/filter-chip.js +2 -3
  56. package/dist/format-date/fields.d.ts +20 -0
  57. package/dist/format-date/fields.js +14 -0
  58. package/dist/format-date/options.d.ts +2 -1
  59. package/dist/format-date/options.js +9 -38
  60. package/dist/format-date/root/format-date-root.d.ts +35 -3
  61. package/dist/format-date/root/format-date-root.js +24 -32
  62. package/dist/graph/root/graph-root.d.ts +23 -5
  63. package/dist/graph/root/graph-root.js +17 -20
  64. package/dist/heatmap/root/heatmap-root.d.ts +12 -0
  65. package/dist/heatmap/root/heatmap-root.js +26 -11
  66. package/dist/image/root/image-root.d.ts +11 -0
  67. package/dist/kbd/root/kbd-root.js +1 -2
  68. package/dist/legend/root/legend-root.js +4 -17
  69. package/dist/list/root/list-root.js +8 -22
  70. package/dist/listbox/root/listbox-root.d.ts +119 -24
  71. package/dist/listbox/root/listbox-root.js +130 -132
  72. package/dist/map/marker/map-marker.d.ts +2 -1
  73. package/dist/map/root/map-root.d.ts +40 -2
  74. package/dist/map/root/map-root.js +64 -23
  75. package/dist/megamenu/root/megamenu-root.js +4 -11
  76. package/dist/menu/root/menu-root.d.ts +2 -2
  77. package/dist/navigation/root/navigation-root.js +5 -8
  78. package/dist/notifications/group/notification-group.d.ts +8 -1
  79. package/dist/notifications/group/notification-group.js +12 -6
  80. package/dist/notifications/notification/notification.d.ts +12 -1
  81. package/dist/notifications/notification/notification.js +3 -1
  82. package/dist/notifications/root/notifications-root.d.ts +41 -5
  83. package/dist/notifications/root/notifications-root.js +27 -7
  84. package/dist/object-inspector/root/object-inspector-root.d.ts +5 -1
  85. package/dist/object-inspector/root/object-inspector-root.js +21 -11
  86. package/dist/pagination/size/pagination-size.d.ts +1 -0
  87. package/dist/pagination/size/pagination-size.js +1 -1
  88. package/dist/pin-input/code.d.ts +23 -0
  89. package/dist/pin-input/code.js +25 -0
  90. package/dist/pin-input/root/pin-input-root.js +9 -23
  91. package/dist/qr-code/root/qr-code-root.d.ts +14 -3
  92. package/dist/qr-code/root/qr-code-root.js +19 -5
  93. package/dist/scatter-chart/measures.d.ts +22 -0
  94. package/dist/scatter-chart/measures.js +11 -0
  95. package/dist/scatter-chart/root/scatter-chart-root.d.ts +2 -6
  96. package/dist/scatter-chart/root/scatter-chart-root.js +6 -19
  97. package/dist/select/root/select-root.d.ts +56 -8
  98. package/dist/select/root/select-root.js +33 -9
  99. package/dist/speed-dial/group/speed-dial-group.d.ts +48 -0
  100. package/dist/speed-dial/group/speed-dial-group.js +43 -0
  101. package/dist/speed-dial/index.d.ts +1 -0
  102. package/dist/speed-dial/index.js +1 -0
  103. package/dist/speed-dial/item/speed-dial-item.d.ts +26 -1
  104. package/dist/speed-dial/item/speed-dial-item.js +41 -3
  105. package/dist/speed-dial/long-press.d.ts +50 -0
  106. package/dist/speed-dial/long-press.js +48 -0
  107. package/dist/speed-dial/root/speed-dial-root.d.ts +80 -1
  108. package/dist/speed-dial/root/speed-dial-root.js +114 -5
  109. package/dist/splitter/root/splitter-root.d.ts +7 -3
  110. package/dist/splitter/root/splitter-root.js +16 -3
  111. package/dist/table/cell/table-cell.d.ts +8 -1
  112. package/dist/table/cell/table-cell.js +6 -2
  113. package/dist/table/grid-controller.d.ts +117 -0
  114. package/dist/table/grid-controller.js +293 -0
  115. package/dist/table/root/table-root.d.ts +47 -3
  116. package/dist/table/root/table-root.js +81 -24
  117. package/dist/table/row/table-row.d.ts +13 -1
  118. package/dist/table/row/table-row.js +20 -6
  119. package/dist/tag/group/tag-group.js +6 -15
  120. package/dist/time-picker/root/time-picker-root.d.ts +1 -0
  121. package/dist/time-picker/root/time-picker-root.js +3 -0
  122. package/dist/toast/item/toast-item.d.ts +6 -3
  123. package/dist/toast/item/toast-item.js +1 -0
  124. package/dist/toast/root/toast-root.d.ts +13 -1
  125. package/dist/toast/root/toast-root.js +20 -14
  126. package/dist/toggle/group/toggle-group.js +3 -5
  127. package/dist/toolbar/root/toolbar-root.d.ts +31 -0
  128. package/dist/toolbar/root/toolbar-root.js +39 -8
  129. package/dist/tooltip/root/tooltip-root.js +1 -2
  130. package/dist/video/root/video-root.d.ts +11 -0
  131. package/dist/video/root/video-root.js +15 -1
  132. package/dist/virtual-list/root/virtual-list-root.js +6 -18
  133. package/lint.json +1 -1
  134. package/package.json +5 -5
  135. package/types/jsx.d.ts +2005 -266
  136. package/types/svelte.d.ts +1 -0
  137. package/types/vue.d.ts +338 -62
  138. package/dist/kbd/keys.d.ts +0 -29
  139. package/dist/kbd/keys.js +0 -52
  140. package/dist/tooltip/focus-target.d.ts +0 -6
  141. package/dist/tooltip/focus-target.js +0 -9
package/types/jsx.d.ts CHANGED
@@ -148,6 +148,7 @@ import type {
148
148
  HelixHeadlessSlider,
149
149
  HelixHeadlessSparkline,
150
150
  HelixHeadlessSpeedDial,
151
+ HelixHeadlessSpeedDialGroup,
151
152
  HelixHeadlessSpeedDialItem,
152
153
  HelixHeadlessSplitter,
153
154
  HelixHeadlessStat,
@@ -780,6 +781,22 @@ export type HelixHeadlessAnnouncementProps = {
780
781
  Read once when the announcement is first rendered, as `Toast` reads its
781
782
  own. The clock stops while the pointer or focus is on the announcement. */
782
783
  duration?: (HelixHeadlessAnnouncement["duration"]) | undefined;
784
+ /** The key that moves focus to the announcement's first control, and back
785
+ to where it was, written as keys joined by `+`, such as `F6` or `Alt+A`.
786
+
787
+ F6 by default, the key React Aria's regions answer to. Empty turns it
788
+ off. With several announcements, the first one in the page takes focus. */
789
+ hotkey?: (HelixHeadlessAnnouncement["hotkey"]) | undefined;
790
+ /** The name of the announcement's region, which screen readers list among
791
+ the page's landmarks. Translate it with the rest of your interface.
792
+
793
+ Empty leaves the announcement no region. */
794
+ label?: (HelixHeadlessAnnouncement["label"]) | undefined;
795
+ /** Whether the announcement waits its turn behind the queued announcements
796
+ before it in the same parent, showing when the last of them is removed.
797
+
798
+ Off by default, so every announcement on a page shows at once. */
799
+ queued?: (HelixHeadlessAnnouncement["queued"]) | undefined;
783
800
  /** The band's color.
784
801
 
785
802
  Paint only: unlike `Callout`, no value here draws a mark, changes the label,
@@ -831,6 +848,22 @@ export type HelixHeadlessAnnouncementSolidJsProps = {
831
848
  Read once when the announcement is first rendered, as `Toast` reads its
832
849
  own. The clock stops while the pointer or focus is on the announcement. */
833
850
  "prop:duration"?: (HelixHeadlessAnnouncement["duration"]) | undefined;
851
+ /** The key that moves focus to the announcement's first control, and back
852
+ to where it was, written as keys joined by `+`, such as `F6` or `Alt+A`.
853
+
854
+ F6 by default, the key React Aria's regions answer to. Empty turns it
855
+ off. With several announcements, the first one in the page takes focus. */
856
+ "prop:hotkey"?: (HelixHeadlessAnnouncement["hotkey"]) | undefined;
857
+ /** The name of the announcement's region, which screen readers list among
858
+ the page's landmarks. Translate it with the rest of your interface.
859
+
860
+ Empty leaves the announcement no region. */
861
+ "prop:label"?: (HelixHeadlessAnnouncement["label"]) | undefined;
862
+ /** Whether the announcement waits its turn behind the queued announcements
863
+ before it in the same parent, showing when the last of them is removed.
864
+
865
+ Off by default, so every announcement on a page shows at once. */
866
+ "prop:queued"?: (HelixHeadlessAnnouncement["queued"]) | undefined;
834
867
  /** The band's color.
835
868
 
836
869
  Paint only: unlike `Callout`, no value here draws a mark, changes the label,
@@ -1707,13 +1740,35 @@ legend hid is not counted. */
1707
1740
  };
1708
1741
 
1709
1742
  export type HelixHeadlessBlockquoteProps = {
1710
- /** The URL of the source the passage came from. */
1743
+ /** Who said it, and where, as words, such as "Maria Lopez, operations
1744
+ manager". The `attribution` slot replaces them, for markup such as a link.
1745
+
1746
+ Words are served with the figure they name, where a server cannot see a
1747
+ slotted attribution. */
1748
+ attribution?: (HelixHeadlessBlockquote["attribution"]) | undefined;
1749
+ /** The URL of the source the passage came from. Who said it goes in
1750
+ `attribution`: a `cite` with words in it warns once, with the runtime kind
1751
+ `cite-not-url`. */
1711
1752
  cite?: (HelixHeadlessBlockquote["cite"]) | undefined;
1753
+ /** Whether to draw an opening quotation mark before the passage, in the
1754
+ element's language. Leave the marks out of the text. */
1755
+ marks?: (HelixHeadlessBlockquote["marks"]) | undefined;
1712
1756
  };
1713
1757
 
1714
1758
  export type HelixHeadlessBlockquoteSolidJsProps = {
1715
- /** The URL of the source the passage came from. */
1759
+ /** Who said it, and where, as words, such as "Maria Lopez, operations
1760
+ manager". The `attribution` slot replaces them, for markup such as a link.
1761
+
1762
+ Words are served with the figure they name, where a server cannot see a
1763
+ slotted attribution. */
1764
+ "prop:attribution"?: (HelixHeadlessBlockquote["attribution"]) | undefined;
1765
+ /** The URL of the source the passage came from. Who said it goes in
1766
+ `attribution`: a `cite` with words in it warns once, with the runtime kind
1767
+ `cite-not-url`. */
1716
1768
  "prop:cite"?: (HelixHeadlessBlockquote["cite"]) | undefined;
1769
+ /** Whether to draw an opening quotation mark before the passage, in the
1770
+ element's language. Leave the marks out of the text. */
1771
+ "prop:marks"?: (HelixHeadlessBlockquote["marks"]) | undefined;
1717
1772
 
1718
1773
  /** Set the innerHTML of the element */
1719
1774
  innerHTML?: (string) | undefined;
@@ -1841,6 +1896,15 @@ attribute would put the whole path into the markup twice. */
1841
1896
  textContent?: (string | number) | undefined;
1842
1897
  };
1843
1898
 
1899
+ /** `HelixHeadlessButtonGroup` component event */
1900
+ export type HelixHeadlessButtonGroupElementEvent<E = Event> = TypedEvent<
1901
+ HelixHeadlessButtonGroup,
1902
+ E
1903
+ >;
1904
+ /** `helix-before-change` event type */
1905
+ export type HelixHeadlessButtonGroupHelixBeforeChangeElementEvent =
1906
+ HelixHeadlessButtonGroupElementEvent<HelixBeforeChangeEvent>;
1907
+
1844
1908
  export type HelixHeadlessButtonGroupProps = {
1845
1909
  /** The group's name, read by screen readers.
1846
1910
 
@@ -1865,6 +1929,31 @@ buttons sharing edges as one shape, and a wrapped row carries the corners of
1865
1929
  a first row into a second. Stacked, the same three keep one shape and one
1866
1930
  column. */
1867
1931
  orientation?: (HelixHeadlessButtonGroup["orientation"]) | undefined;
1932
+ /** Whether the buttons stay pressed: `single` keeps one pressed at a time and
1933
+ `multiple` any number. Unset, they are action buttons, each its own tab
1934
+ stop, as before.
1935
+
1936
+ Optional, so the attribute is absent until a consumer writes it. */
1937
+ "selection-mode"?: (HelixHeadlessButtonGroup["selectionMode"]) | undefined;
1938
+ /** Whether the buttons stay pressed: `single` keeps one pressed at a time and
1939
+ `multiple` any number. Unset, they are action buttons, each its own tab
1940
+ stop, as before.
1941
+
1942
+ Optional, so the attribute is absent until a consumer writes it. */
1943
+ selectionMode?: (HelixHeadlessButtonGroup["selectionMode"]) | undefined;
1944
+ /** The values of the pressed buttons, comma separated, in a selection mode.
1945
+ A button's own `value` names it, so a value holds no comma.
1946
+
1947
+ The attribute is the seed, and a press changes the property, which does
1948
+ not reflect, as a native control's `value` does not. */
1949
+ value?: (HelixHeadlessButtonGroup["value"]) | undefined;
1950
+
1951
+ /** Fired after a press changes `value`, in a selection mode. */
1952
+ onchange?: ((e: HelixHeadlessButtonGroupElementEvent) => void) | undefined;
1953
+ /** Fired before a press changes `value`, with the value it would leave in `detail.value`. Cancelable: call `preventDefault()` to keep the buttons as they are. */
1954
+ "onhelix-before-change"?: ((
1955
+ e: HelixHeadlessButtonGroupHelixBeforeChangeElementEvent,
1956
+ ) => void) | undefined;
1868
1957
  };
1869
1958
 
1870
1959
  export type HelixHeadlessButtonGroupSolidJsProps = {
@@ -1891,6 +1980,30 @@ buttons sharing edges as one shape, and a wrapped row carries the corners of
1891
1980
  a first row into a second. Stacked, the same three keep one shape and one
1892
1981
  column. */
1893
1982
  "prop:orientation"?: (HelixHeadlessButtonGroup["orientation"]) | undefined;
1983
+ /** Whether the buttons stay pressed: `single` keeps one pressed at a time and
1984
+ `multiple` any number. Unset, they are action buttons, each its own tab
1985
+ stop, as before.
1986
+
1987
+ Optional, so the attribute is absent until a consumer writes it. */
1988
+ "attr:selection-mode"?: (HelixHeadlessButtonGroup["selectionMode"]) | undefined;
1989
+ /** Whether the buttons stay pressed: `single` keeps one pressed at a time and
1990
+ `multiple` any number. Unset, they are action buttons, each its own tab
1991
+ stop, as before.
1992
+
1993
+ Optional, so the attribute is absent until a consumer writes it. */
1994
+ "prop:selectionMode"?: (HelixHeadlessButtonGroup["selectionMode"]) | undefined;
1995
+ /** The values of the pressed buttons, comma separated, in a selection mode.
1996
+ A button's own `value` names it, so a value holds no comma.
1997
+
1998
+ The attribute is the seed, and a press changes the property, which does
1999
+ not reflect, as a native control's `value` does not. */
2000
+ "prop:value"?: (HelixHeadlessButtonGroup["value"]) | undefined;
2001
+ /** Fired after a press changes `value`, in a selection mode. */
2002
+ "on:change"?: ((e: HelixHeadlessButtonGroupElementEvent) => void) | undefined;
2003
+ /** Fired before a press changes `value`, with the value it would leave in `detail.value`. Cancelable: call `preventDefault()` to keep the buttons as they are. */
2004
+ "on:helix-before-change"?: ((
2005
+ e: HelixHeadlessButtonGroupHelixBeforeChangeElementEvent,
2006
+ ) => void) | undefined;
1894
2007
 
1895
2008
  /** Set the innerHTML of the element */
1896
2009
  innerHTML?: (string) | undefined;
@@ -2749,6 +2862,20 @@ as the list.
2749
2862
  The list is joined the way the page's language joins one, "Second and
2750
2863
  Third", rather than with a comma this component chose. */
2751
2864
  leadsToLabel?: (HelixHeadlessCanvas["leadsToLabel"]) | undefined;
2865
+ /** What screen readers hear after a key moves a card, with `{name}` for the
2866
+ card and `{x}` and `{y}` for where it now is, in the document's units.
2867
+
2868
+ **A move a reader cannot see has to be said.** Shift with an arrow moved
2869
+ the card and said nothing, so a reader moving one by keys could not tell
2870
+ whether it had moved, or how far. */
2871
+ "moved-label"?: (HelixHeadlessCanvas["movedLabel"]) | undefined;
2872
+ /** What screen readers hear after a key moves a card, with `{name}` for the
2873
+ card and `{x}` and `{y}` for where it now is, in the document's units.
2874
+
2875
+ **A move a reader cannot see has to be said.** Shift with an arrow moved
2876
+ the card and said nothing, so a reader moving one by keys could not tell
2877
+ whether it had moved, or how far. */
2878
+ movedLabel?: (HelixHeadlessCanvas["movedLabel"]) | undefined;
2752
2879
  /** The order the arrow keys and screen readers move through the cards:
2753
2880
  `spatial` or `edges`.
2754
2881
 
@@ -2789,6 +2916,14 @@ walk the cards. */
2789
2916
  /** The text announced when a connection's end is picked up, with `{from}` and
2790
2917
  `{to}`. */
2791
2918
  reconnectingLabel?: (HelixHeadlessCanvas["reconnectingLabel"]) | undefined;
2919
+ /** What screen readers hear after a key resizes a card, with `{name}` for the
2920
+ card and `{width}` and `{height}` for its new size, in the document's
2921
+ units. */
2922
+ "resized-label"?: (HelixHeadlessCanvas["resizedLabel"]) | undefined;
2923
+ /** What screen readers hear after a key resizes a card, with `{name}` for the
2924
+ card and `{width}` and `{height}` for its new size, in the document's
2925
+ units. */
2926
+ resizedLabel?: (HelixHeadlessCanvas["resizedLabel"]) | undefined;
2792
2927
  /** The names of the selected cards and connections, comma separated. Empty
2793
2928
  when nothing is selected.
2794
2929
 
@@ -2809,6 +2944,43 @@ on its board across cards and connections both, and may not hold a comma.
2809
2944
 
2810
2945
  Written to select from outside, and read to act on the selection. */
2811
2946
  selected?: (HelixHeadlessCanvas["selected"]) | undefined;
2947
+ /** What a selected card or connection adds to what screen readers hear on
2948
+ it, before its tone and its connections. Empty adds nothing.
2949
+
2950
+ A card is an article and a connection a button, and neither has a selected
2951
+ state for `aria-selected` to carry, so the state is said in words. */
2952
+ "selected-label"?: (HelixHeadlessCanvas["selectedLabel"]) | undefined;
2953
+ /** What a selected card or connection adds to what screen readers hear on
2954
+ it, before its tone and its connections. Empty adds nothing.
2955
+
2956
+ A card is an article and a connection a button, and neither has a selected
2957
+ state for `aria-selected` to carry, so the state is said in words. */
2958
+ selectedLabel?: (HelixHeadlessCanvas["selectedLabel"]) | undefined;
2959
+ /** What screen readers hear after the selection grows or shrinks, with
2960
+ `{count}` for how many cards and connections are selected: by Space, a
2961
+ click with Shift, Command or Control, Command or Control with A, a box
2962
+ drawn across the board, or Escape.
2963
+
2964
+ A selection of one made by arriving on a card or clicking it is not said,
2965
+ since the card is. */
2966
+ "selection-label"?: (HelixHeadlessCanvas["selectionLabel"]) | undefined;
2967
+ /** What screen readers hear after the selection grows or shrinks, with
2968
+ `{count}` for how many cards and connections are selected: by Space, a
2969
+ click with Shift, Command or Control, Command or Control with A, a box
2970
+ drawn across the board, or Escape.
2971
+
2972
+ A selection of one made by arriving on a card or clicking it is not said,
2973
+ since the card is. */
2974
+ selectionLabel?: (HelixHeadlessCanvas["selectionLabel"]) | undefined;
2975
+ /** Snaps the cards a reader moves or resizes to a multiple of this many of the
2976
+ document's units, such as `32` to land on the lines `grid` draws.
2977
+
2978
+ **A drag lets go on the nearest line and a key goes to the next one.**
2979
+ Shift with an arrow moves a card to the next line that way, rather than
2980
+ by its step of 16, and Alt with an arrow moves its bottom right corner
2981
+ the same way. A group moves with what it carries, so a card inside one
2982
+ keeps its place in it. Absent, cards land where they are let go. */
2983
+ snap?: (HelixHeadlessCanvas["snap"]) | undefined;
2812
2984
  /** The text announced when a connection is stopped before it is requested. */
2813
2985
  "stopped-label"?: (HelixHeadlessCanvas["stoppedLabel"]) | undefined;
2814
2986
  /** The text announced when a connection is stopped before it is requested. */
@@ -2831,6 +3003,12 @@ red is "blocked" on one board and "urgent" on the next. A reader who can
2831
3003
  see the board is told by the color; this is how a reader who cannot is
2832
3004
  told the same. A tone left out is not read. */
2833
3005
  toneLabels?: (HelixHeadlessCanvas["toneLabels"]) | undefined;
3006
+ /** What screen readers hear after a zoom button or key, with `{zoom}` for the
3007
+ zoom as a percentage, written the way the page's language writes one. */
3008
+ "zoomed-label"?: (HelixHeadlessCanvas["zoomedLabel"]) | undefined;
3009
+ /** What screen readers hear after a zoom button or key, with `{zoom}` for the
3010
+ zoom as a percentage, written the way the page's language writes one. */
3011
+ zoomedLabel?: (HelixHeadlessCanvas["zoomedLabel"]) | undefined;
2834
3012
  /** The hint shown when a surface waiting to be pressed is scrolled or
2835
3013
  swiped over, with `gestures="activate"`. Absent is the family's own. */
2836
3014
  "activate-hint-label"?: (HelixHeadlessCanvas["activateHintLabel"]) | undefined;
@@ -3113,6 +3291,20 @@ as the list.
3113
3291
  The list is joined the way the page's language joins one, "Second and
3114
3292
  Third", rather than with a comma this component chose. */
3115
3293
  "prop:leadsToLabel"?: (HelixHeadlessCanvas["leadsToLabel"]) | undefined;
3294
+ /** What screen readers hear after a key moves a card, with `{name}` for the
3295
+ card and `{x}` and `{y}` for where it now is, in the document's units.
3296
+
3297
+ **A move a reader cannot see has to be said.** Shift with an arrow moved
3298
+ the card and said nothing, so a reader moving one by keys could not tell
3299
+ whether it had moved, or how far. */
3300
+ "attr:moved-label"?: (HelixHeadlessCanvas["movedLabel"]) | undefined;
3301
+ /** What screen readers hear after a key moves a card, with `{name}` for the
3302
+ card and `{x}` and `{y}` for where it now is, in the document's units.
3303
+
3304
+ **A move a reader cannot see has to be said.** Shift with an arrow moved
3305
+ the card and said nothing, so a reader moving one by keys could not tell
3306
+ whether it had moved, or how far. */
3307
+ "prop:movedLabel"?: (HelixHeadlessCanvas["movedLabel"]) | undefined;
3116
3308
  /** The order the arrow keys and screen readers move through the cards:
3117
3309
  `spatial` or `edges`.
3118
3310
 
@@ -3153,6 +3345,14 @@ walk the cards. */
3153
3345
  /** The text announced when a connection's end is picked up, with `{from}` and
3154
3346
  `{to}`. */
3155
3347
  "prop:reconnectingLabel"?: (HelixHeadlessCanvas["reconnectingLabel"]) | undefined;
3348
+ /** What screen readers hear after a key resizes a card, with `{name}` for the
3349
+ card and `{width}` and `{height}` for its new size, in the document's
3350
+ units. */
3351
+ "attr:resized-label"?: (HelixHeadlessCanvas["resizedLabel"]) | undefined;
3352
+ /** What screen readers hear after a key resizes a card, with `{name}` for the
3353
+ card and `{width}` and `{height}` for its new size, in the document's
3354
+ units. */
3355
+ "prop:resizedLabel"?: (HelixHeadlessCanvas["resizedLabel"]) | undefined;
3156
3356
  /** The names of the selected cards and connections, comma separated. Empty
3157
3357
  when nothing is selected.
3158
3358
 
@@ -3173,6 +3373,43 @@ on its board across cards and connections both, and may not hold a comma.
3173
3373
 
3174
3374
  Written to select from outside, and read to act on the selection. */
3175
3375
  "prop:selected"?: (HelixHeadlessCanvas["selected"]) | undefined;
3376
+ /** What a selected card or connection adds to what screen readers hear on
3377
+ it, before its tone and its connections. Empty adds nothing.
3378
+
3379
+ A card is an article and a connection a button, and neither has a selected
3380
+ state for `aria-selected` to carry, so the state is said in words. */
3381
+ "attr:selected-label"?: (HelixHeadlessCanvas["selectedLabel"]) | undefined;
3382
+ /** What a selected card or connection adds to what screen readers hear on
3383
+ it, before its tone and its connections. Empty adds nothing.
3384
+
3385
+ A card is an article and a connection a button, and neither has a selected
3386
+ state for `aria-selected` to carry, so the state is said in words. */
3387
+ "prop:selectedLabel"?: (HelixHeadlessCanvas["selectedLabel"]) | undefined;
3388
+ /** What screen readers hear after the selection grows or shrinks, with
3389
+ `{count}` for how many cards and connections are selected: by Space, a
3390
+ click with Shift, Command or Control, Command or Control with A, a box
3391
+ drawn across the board, or Escape.
3392
+
3393
+ A selection of one made by arriving on a card or clicking it is not said,
3394
+ since the card is. */
3395
+ "attr:selection-label"?: (HelixHeadlessCanvas["selectionLabel"]) | undefined;
3396
+ /** What screen readers hear after the selection grows or shrinks, with
3397
+ `{count}` for how many cards and connections are selected: by Space, a
3398
+ click with Shift, Command or Control, Command or Control with A, a box
3399
+ drawn across the board, or Escape.
3400
+
3401
+ A selection of one made by arriving on a card or clicking it is not said,
3402
+ since the card is. */
3403
+ "prop:selectionLabel"?: (HelixHeadlessCanvas["selectionLabel"]) | undefined;
3404
+ /** Snaps the cards a reader moves or resizes to a multiple of this many of the
3405
+ document's units, such as `32` to land on the lines `grid` draws.
3406
+
3407
+ **A drag lets go on the nearest line and a key goes to the next one.**
3408
+ Shift with an arrow moves a card to the next line that way, rather than
3409
+ by its step of 16, and Alt with an arrow moves its bottom right corner
3410
+ the same way. A group moves with what it carries, so a card inside one
3411
+ keeps its place in it. Absent, cards land where they are let go. */
3412
+ "prop:snap"?: (HelixHeadlessCanvas["snap"]) | undefined;
3176
3413
  /** The text announced when a connection is stopped before it is requested. */
3177
3414
  "attr:stopped-label"?: (HelixHeadlessCanvas["stoppedLabel"]) | undefined;
3178
3415
  /** The text announced when a connection is stopped before it is requested. */
@@ -3195,6 +3432,12 @@ red is "blocked" on one board and "urgent" on the next. A reader who can
3195
3432
  see the board is told by the color; this is how a reader who cannot is
3196
3433
  told the same. A tone left out is not read. */
3197
3434
  "prop:toneLabels"?: (HelixHeadlessCanvas["toneLabels"]) | undefined;
3435
+ /** What screen readers hear after a zoom button or key, with `{zoom}` for the
3436
+ zoom as a percentage, written the way the page's language writes one. */
3437
+ "attr:zoomed-label"?: (HelixHeadlessCanvas["zoomedLabel"]) | undefined;
3438
+ /** What screen readers hear after a zoom button or key, with `{zoom}` for the
3439
+ zoom as a percentage, written the way the page's language writes one. */
3440
+ "prop:zoomedLabel"?: (HelixHeadlessCanvas["zoomedLabel"]) | undefined;
3198
3441
  /** The hint shown when a surface waiting to be pressed is scrolled or
3199
3442
  swiped over, with `gestures="activate"`. Absent is the family's own. */
3200
3443
  "attr:activate-hint-label"?: (HelixHeadlessCanvas["activateHintLabel"]) | undefined;
@@ -5108,16 +5351,18 @@ block lays out. Not for a diff, whose files each scroll on their own. */
5108
5351
  "expand-label"?: (HelixHeadlessCodeBlock["expandLabel"]) | undefined;
5109
5352
  /** The expand button's words while the cap hides lines. */
5110
5353
  expandLabel?: (HelixHeadlessCodeBlock["expandLabel"]) | undefined;
5111
- /** The block's name, usually a file name or a language.
5354
+ /** The block's name, usually a file name, drawn in the header.
5112
5355
 
5113
- In a diff, each file is named from the patch, and this names a patch that
5114
- carries no name of its own. */
5356
+ Absent, the block is named by `language` where there is one. In a diff,
5357
+ each file is named from the patch, and this names a patch that carries no
5358
+ name of its own. */
5115
5359
  label?: (HelixHeadlessCodeBlock["label"]) | undefined;
5116
5360
  /** The language the code is written in, such as `ts` or `css`, handed to
5117
5361
  `highlight` as its second argument.
5118
5362
 
5119
- Absent hands it an empty string. It draws nothing of its own: the block's
5120
- name is `label`. */
5363
+ A block with no `label` is named by it, in the header and on the copy
5364
+ button, as a docs site names a snippet by its language. Absent hands
5365
+ `highlight` an empty string and names nothing. */
5121
5366
  language?: (HelixHeadlessCodeBlock["language"]) | undefined;
5122
5367
  /** Whether the lines are numbered in a gutter beside the code.
5123
5368
 
@@ -5240,16 +5485,18 @@ block lays out. Not for a diff, whose files each scroll on their own. */
5240
5485
  "attr:expand-label"?: (HelixHeadlessCodeBlock["expandLabel"]) | undefined;
5241
5486
  /** The expand button's words while the cap hides lines. */
5242
5487
  "prop:expandLabel"?: (HelixHeadlessCodeBlock["expandLabel"]) | undefined;
5243
- /** The block's name, usually a file name or a language.
5488
+ /** The block's name, usually a file name, drawn in the header.
5244
5489
 
5245
- In a diff, each file is named from the patch, and this names a patch that
5246
- carries no name of its own. */
5490
+ Absent, the block is named by `language` where there is one. In a diff,
5491
+ each file is named from the patch, and this names a patch that carries no
5492
+ name of its own. */
5247
5493
  "prop:label"?: (HelixHeadlessCodeBlock["label"]) | undefined;
5248
5494
  /** The language the code is written in, such as `ts` or `css`, handed to
5249
5495
  `highlight` as its second argument.
5250
5496
 
5251
- Absent hands it an empty string. It draws nothing of its own: the block's
5252
- name is `label`. */
5497
+ A block with no `label` is named by it, in the header and on the copy
5498
+ button, as a docs site names a snippet by its language. Absent hands
5499
+ `highlight` an empty string and names nothing. */
5253
5500
  "prop:language"?: (HelixHeadlessCodeBlock["language"]) | undefined;
5254
5501
  /** Whether the lines are numbered in a gutter beside the code.
5255
5502
 
@@ -6539,12 +6786,19 @@ leaves the field or presses Enter with nothing highlighted, and text that
6539
6786
  names an option takes that option. Unlike `creatable`, no event asks
6540
6787
  first and no option is expected to be added: the value is the text. */
6541
6788
  allowsCustomValue?: (HelixHeadlessCombobox["allowsCustomValue"]) | undefined;
6542
- /** What the browser may autofill in the text field, as a platform token.
6789
+ /** What the browser may autofill, as a platform token such as `country`.
6543
6790
 
6544
6791
  **Defaults to `off`, which is not the platform's default and is the
6545
6792
  point.** The field filters a list rather than collecting a value, so a
6546
6793
  browser offering to fill it with a saved address is competing for the same
6547
- keystrokes as the listbox. A consumer who wants autofill can still ask. */
6794
+ keystrokes as the listbox. A consumer who wants autofill can still ask.
6795
+
6796
+ Set, a combobox whose answer is one of its options keeps a hidden native
6797
+ `<select>` with the same options for the browser to fill, as React Aria's
6798
+ combobox and Select do, and the option the browser picks, by its value or
6799
+ its words, becomes the value. The text field itself stays `off`, so the
6800
+ browser fills the answer and not the filter. With `allows-custom-value`
6801
+ the token goes on the text field, whose words are the answer. */
6548
6802
  autocomplete?: (HelixHeadlessCombobox["autocomplete"]) | undefined;
6549
6803
  /** Whether the user can add a value that is not in the list.
6550
6804
 
@@ -6583,12 +6837,14 @@ every keystroke. See Listbox's `filter-delay`. */
6583
6837
  /** The list's name, read by screen readers. The list has no visible name. */
6584
6838
  listLabel?: (HelixHeadlessCombobox["listLabel"]) | undefined;
6585
6839
  /** What the list says when its options could not be loaded, such as after a
6586
- request to a server fails. Empty is no error. Passed to the list, which
6587
- shows it under any options there are and tells screen readers. */
6840
+ request to a server fails. Empty, null or no attribute is no error, so
6841
+ removing the attribute clears it. Passed to the list, which shows it
6842
+ under any options there are and tells screen readers. */
6588
6843
  "load-error"?: (HelixHeadlessCombobox["loadError"]) | undefined;
6589
6844
  /** What the list says when its options could not be loaded, such as after a
6590
- request to a server fails. Empty is no error. Passed to the list, which
6591
- shows it under any options there are and tells screen readers. */
6845
+ request to a server fails. Empty, null or no attribute is no error, so
6846
+ removing the attribute clears it. Passed to the list, which shows it
6847
+ under any options there are and tells screen readers. */
6592
6848
  loadError?: (HelixHeadlessCombobox["loadError"]) | undefined;
6593
6849
  /** Whether the options are still loading.
6594
6850
 
@@ -6671,6 +6927,12 @@ two. */
6671
6927
  options. `{count}` is the count, and `Intl.PluralRules` picks between the
6672
6928
  two. */
6673
6929
  resultsLabel?: (HelixHeadlessCombobox["resultsLabel"]) | undefined;
6930
+ /** What VoiceOver hears for a chosen option, as the highlight reaches it and
6931
+ once it is chosen, on Apple devices. `{name}` is the option's words. */
6932
+ "selected-label"?: (HelixHeadlessCombobox["selectedLabel"]) | undefined;
6933
+ /** What VoiceOver hears for a chosen option, as the highlight reaches it and
6934
+ once it is chosen, on Apple devices. `{name}` is the option's words. */
6935
+ selectedLabel?: (HelixHeadlessCombobox["selectedLabel"]) | undefined;
6674
6936
  /** Whether the field completes the word as the user types.
6675
6937
 
6676
6938
  `suggest` rather than `autocomplete`, which is a real HTML attribute this
@@ -6839,12 +7101,19 @@ leaves the field or presses Enter with nothing highlighted, and text that
6839
7101
  names an option takes that option. Unlike `creatable`, no event asks
6840
7102
  first and no option is expected to be added: the value is the text. */
6841
7103
  "prop:allowsCustomValue"?: (HelixHeadlessCombobox["allowsCustomValue"]) | undefined;
6842
- /** What the browser may autofill in the text field, as a platform token.
7104
+ /** What the browser may autofill, as a platform token such as `country`.
6843
7105
 
6844
7106
  **Defaults to `off`, which is not the platform's default and is the
6845
7107
  point.** The field filters a list rather than collecting a value, so a
6846
7108
  browser offering to fill it with a saved address is competing for the same
6847
- keystrokes as the listbox. A consumer who wants autofill can still ask. */
7109
+ keystrokes as the listbox. A consumer who wants autofill can still ask.
7110
+
7111
+ Set, a combobox whose answer is one of its options keeps a hidden native
7112
+ `<select>` with the same options for the browser to fill, as React Aria's
7113
+ combobox and Select do, and the option the browser picks, by its value or
7114
+ its words, becomes the value. The text field itself stays `off`, so the
7115
+ browser fills the answer and not the filter. With `allows-custom-value`
7116
+ the token goes on the text field, whose words are the answer. */
6848
7117
  "prop:autocomplete"?: (HelixHeadlessCombobox["autocomplete"]) | undefined;
6849
7118
  /** Whether the user can add a value that is not in the list.
6850
7119
 
@@ -6883,12 +7152,14 @@ every keystroke. See Listbox's `filter-delay`. */
6883
7152
  /** The list's name, read by screen readers. The list has no visible name. */
6884
7153
  "prop:listLabel"?: (HelixHeadlessCombobox["listLabel"]) | undefined;
6885
7154
  /** What the list says when its options could not be loaded, such as after a
6886
- request to a server fails. Empty is no error. Passed to the list, which
6887
- shows it under any options there are and tells screen readers. */
7155
+ request to a server fails. Empty, null or no attribute is no error, so
7156
+ removing the attribute clears it. Passed to the list, which shows it
7157
+ under any options there are and tells screen readers. */
6888
7158
  "attr:load-error"?: (HelixHeadlessCombobox["loadError"]) | undefined;
6889
7159
  /** What the list says when its options could not be loaded, such as after a
6890
- request to a server fails. Empty is no error. Passed to the list, which
6891
- shows it under any options there are and tells screen readers. */
7160
+ request to a server fails. Empty, null or no attribute is no error, so
7161
+ removing the attribute clears it. Passed to the list, which shows it
7162
+ under any options there are and tells screen readers. */
6892
7163
  "prop:loadError"?: (HelixHeadlessCombobox["loadError"]) | undefined;
6893
7164
  /** Whether the options are still loading.
6894
7165
 
@@ -6971,6 +7242,12 @@ two. */
6971
7242
  options. `{count}` is the count, and `Intl.PluralRules` picks between the
6972
7243
  two. */
6973
7244
  "prop:resultsLabel"?: (HelixHeadlessCombobox["resultsLabel"]) | undefined;
7245
+ /** What VoiceOver hears for a chosen option, as the highlight reaches it and
7246
+ once it is chosen, on Apple devices. `{name}` is the option's words. */
7247
+ "attr:selected-label"?: (HelixHeadlessCombobox["selectedLabel"]) | undefined;
7248
+ /** What VoiceOver hears for a chosen option, as the highlight reaches it and
7249
+ once it is chosen, on Apple devices. `{name}` is the option's words. */
7250
+ "prop:selectedLabel"?: (HelixHeadlessCombobox["selectedLabel"]) | undefined;
6974
7251
  /** Whether the field completes the word as the user types.
6975
7252
 
6976
7253
  `suggest` rather than `autocomplete`, which is a real HTML attribute this
@@ -7172,12 +7449,14 @@ with: one key, said once. */
7172
7449
  /** Accessible name for the overlay, which has no visible heading. */
7173
7450
  label?: (HelixHeadlessCommand["label"]) | undefined;
7174
7451
  /** What the list says when its commands could not be loaded, such as after a
7175
- request to a server fails. Empty is no error. Passed to the list, which
7176
- shows it under any commands there are and tells screen readers. */
7452
+ request to a server fails. Empty, null or no attribute is no error, so
7453
+ removing the attribute clears it. Passed to the list, which shows it
7454
+ under any commands there are and tells screen readers. */
7177
7455
  "load-error"?: (HelixHeadlessCommand["loadError"]) | undefined;
7178
7456
  /** What the list says when its commands could not be loaded, such as after a
7179
- request to a server fails. Empty is no error. Passed to the list, which
7180
- shows it under any commands there are and tells screen readers. */
7457
+ request to a server fails. Empty, null or no attribute is no error, so
7458
+ removing the attribute clears it. Passed to the list, which shows it
7459
+ under any commands there are and tells screen readers. */
7181
7460
  loadError?: (HelixHeadlessCommand["loadError"]) | undefined;
7182
7461
  /** Whether the commands are still loading, for a palette that asks a server
7183
7462
  for them as the user types.
@@ -7272,12 +7551,14 @@ with: one key, said once. */
7272
7551
  /** Accessible name for the overlay, which has no visible heading. */
7273
7552
  "prop:label"?: (HelixHeadlessCommand["label"]) | undefined;
7274
7553
  /** What the list says when its commands could not be loaded, such as after a
7275
- request to a server fails. Empty is no error. Passed to the list, which
7276
- shows it under any commands there are and tells screen readers. */
7554
+ request to a server fails. Empty, null or no attribute is no error, so
7555
+ removing the attribute clears it. Passed to the list, which shows it
7556
+ under any commands there are and tells screen readers. */
7277
7557
  "attr:load-error"?: (HelixHeadlessCommand["loadError"]) | undefined;
7278
7558
  /** What the list says when its commands could not be loaded, such as after a
7279
- request to a server fails. Empty is no error. Passed to the list, which
7280
- shows it under any commands there are and tells screen readers. */
7559
+ request to a server fails. Empty, null or no attribute is no error, so
7560
+ removing the attribute clears it. Passed to the list, which shows it
7561
+ under any commands there are and tells screen readers. */
7281
7562
  "prop:loadError"?: (HelixHeadlessCommand["loadError"]) | undefined;
7282
7563
  /** Whether the commands are still loading, for a palette that asks a server
7283
7564
  for them as the user types.
@@ -10065,38 +10346,44 @@ survives to it and a consumer reading one back gets what they wrote. */
10065
10346
  };
10066
10347
 
10067
10348
  export type HelixHeadlessDividerProps = {
10068
- /** Whether screen readers announce the line as a separator.
10069
-
10070
- Off by default, and out of the accessibility tree. Most rules on a page
10071
- separate nothing: they underline a heading or close a section that space
10072
- had already closed, and announcing every one as a separator is noise a
10073
- screen-reader user has to walk past.
10074
-
10075
- An opt-in, not a `decorative` opt-out, because a boolean attribute cannot
10076
- be turned off: `decorative="false"` parses as `true`, which would put the
10077
- quiet default out of reach from HTML and leave it settable only as a
10078
- property. An opt-in is absent by default, which every reflected property
10079
- here has to be. */
10349
+ /** Whether screen readers announce the line as a separator, which they now do
10350
+ by default.
10351
+
10352
+ It dates from when the line was decorative by default. It is still read,
10353
+ and it wins over `decorative`, so a divider written with it stays a
10354
+ separator. */
10080
10355
  announced?: (HelixHeadlessDivider["announced"]) | undefined;
10081
- /** The direction the line runs: `horizontal` or `vertical`. */
10356
+ /** Takes the line out of the accessibility tree, for a rule that separates
10357
+ nothing: one under a heading, or between the facts of a byline.
10358
+
10359
+ Absent, the line is a separator, as `<hr>` is. Radix Separator's opt-out
10360
+ has the same name. It turns the role off because a boolean attribute that
10361
+ is on by default cannot be turned off from HTML. */
10362
+ decorative?: (HelixHeadlessDivider["decorative"]) | undefined;
10363
+ /** The direction the line runs: `horizontal` or `vertical`.
10364
+
10365
+ Unset is horizontal, or across the toolbar the divider sits in. */
10082
10366
  orientation?: (HelixHeadlessDivider["orientation"]) | undefined;
10083
10367
  };
10084
10368
 
10085
10369
  export type HelixHeadlessDividerSolidJsProps = {
10086
- /** Whether screen readers announce the line as a separator.
10087
-
10088
- Off by default, and out of the accessibility tree. Most rules on a page
10089
- separate nothing: they underline a heading or close a section that space
10090
- had already closed, and announcing every one as a separator is noise a
10091
- screen-reader user has to walk past.
10092
-
10093
- An opt-in, not a `decorative` opt-out, because a boolean attribute cannot
10094
- be turned off: `decorative="false"` parses as `true`, which would put the
10095
- quiet default out of reach from HTML and leave it settable only as a
10096
- property. An opt-in is absent by default, which every reflected property
10097
- here has to be. */
10370
+ /** Whether screen readers announce the line as a separator, which they now do
10371
+ by default.
10372
+
10373
+ It dates from when the line was decorative by default. It is still read,
10374
+ and it wins over `decorative`, so a divider written with it stays a
10375
+ separator. */
10098
10376
  "prop:announced"?: (HelixHeadlessDivider["announced"]) | undefined;
10099
- /** The direction the line runs: `horizontal` or `vertical`. */
10377
+ /** Takes the line out of the accessibility tree, for a rule that separates
10378
+ nothing: one under a heading, or between the facts of a byline.
10379
+
10380
+ Absent, the line is a separator, as `<hr>` is. Radix Separator's opt-out
10381
+ has the same name. It turns the role off because a boolean attribute that
10382
+ is on by default cannot be turned off from HTML. */
10383
+ "prop:decorative"?: (HelixHeadlessDivider["decorative"]) | undefined;
10384
+ /** The direction the line runs: `horizontal` or `vertical`.
10385
+
10386
+ Unset is horizontal, or across the toolbar the divider sits in. */
10100
10387
  "prop:orientation"?: (HelixHeadlessDivider["orientation"]) | undefined;
10101
10388
 
10102
10389
  /** Set the innerHTML of the element */
@@ -11829,6 +12116,14 @@ few characters and a date is not. */
11829
12116
  elapsed?: (HelixHeadlessFormatDate["elapsed"]) | undefined;
11830
12117
  /** How the era is written, such as AD, where a date is shown. */
11831
12118
  era?: (HelixHeadlessFormatDate["era"]) | undefined;
12119
+ /** Draws each field of a date in a part of its own: `weekday`, `day`,
12120
+ `month`, `year`, `era`, `hour`, `minute`, `second`, `day-period` and
12121
+ `time-zone-name`, so `::part(year)` can set the year apart.
12122
+
12123
+ Off by default, which draws the date as one run of text, as Shoelace and
12124
+ Web Awesome do. An `elapsed` or `relative` reading is one phrase either
12125
+ way. */
12126
+ fields?: (HelixHeadlessFormatDate["fields"]) | undefined;
11832
12127
  /** Draws an `elapsed` or `relative` reading once and leaves it, where it
11833
12128
  would otherwise move on as it goes stale.
11834
12129
 
@@ -11935,6 +12230,14 @@ few characters and a date is not. */
11935
12230
  "prop:elapsed"?: (HelixHeadlessFormatDate["elapsed"]) | undefined;
11936
12231
  /** How the era is written, such as AD, where a date is shown. */
11937
12232
  "prop:era"?: (HelixHeadlessFormatDate["era"]) | undefined;
12233
+ /** Draws each field of a date in a part of its own: `weekday`, `day`,
12234
+ `month`, `year`, `era`, `hour`, `minute`, `second`, `day-period` and
12235
+ `time-zone-name`, so `::part(year)` can set the year apart.
12236
+
12237
+ Off by default, which draws the date as one run of text, as Shoelace and
12238
+ Web Awesome do. An `elapsed` or `relative` reading is one phrase either
12239
+ way. */
12240
+ "prop:fields"?: (HelixHeadlessFormatDate["fields"]) | undefined;
11938
12241
  /** Draws an `elapsed` or `relative` reading once and leaves it, where it
11939
12242
  would otherwise move on as it goes stale.
11940
12243
 
@@ -12689,6 +12992,14 @@ calendar heatmap does: a week is a column, so the strip reads along the
12689
12992
  line in weeks, from the right on a right-to-left page, and top to bottom in
12690
12993
  days. */
12691
12994
  rows?: (HelixHeadlessHeatmap["rows"]) | undefined;
12995
+ /** What the readout adds for a selected cell, under `selection-mode`, after
12996
+ where the cell stands: "Day 1: 0 (1 of 14, selected)". Empty adds
12997
+ nothing. */
12998
+ "selected-label"?: (HelixHeadlessHeatmap["selectedLabel"]) | undefined;
12999
+ /** What the readout adds for a selected cell, under `selection-mode`, after
13000
+ where the cell stands: "Day 1: 0 (1 of 14, selected)". Empty adds
13001
+ nothing. */
13002
+ selectedLabel?: (HelixHeadlessHeatmap["selectedLabel"]) | undefined;
12692
13003
  /** What the `selection` part says after the selection changes, with `{count}` for
12693
13004
  how many cells are selected. */
12694
13005
  "selection-label"?: (HelixHeadlessHeatmap["selectionLabel"]) | undefined;
@@ -12840,6 +13151,14 @@ calendar heatmap does: a week is a column, so the strip reads along the
12840
13151
  line in weeks, from the right on a right-to-left page, and top to bottom in
12841
13152
  days. */
12842
13153
  "prop:rows"?: (HelixHeadlessHeatmap["rows"]) | undefined;
13154
+ /** What the readout adds for a selected cell, under `selection-mode`, after
13155
+ where the cell stands: "Day 1: 0 (1 of 14, selected)". Empty adds
13156
+ nothing. */
13157
+ "attr:selected-label"?: (HelixHeadlessHeatmap["selectedLabel"]) | undefined;
13158
+ /** What the readout adds for a selected cell, under `selection-mode`, after
13159
+ where the cell stands: "Day 1: 0 (1 of 14, selected)". Empty adds
13160
+ nothing. */
13161
+ "prop:selectedLabel"?: (HelixHeadlessHeatmap["selectedLabel"]) | undefined;
12843
13162
  /** What the `selection` part says after the selection changes, with `{count}` for
12844
13163
  how many cells are selected. */
12845
13164
  "attr:selection-label"?: (HelixHeadlessHeatmap["selectionLabel"]) | undefined;
@@ -15280,12 +15599,16 @@ export type HelixHeadlessListboxHelixLoadMoreElementEvent =
15280
15599
  HelixHeadlessListboxElementEvent<HelixLoadMoreEvent>;
15281
15600
 
15282
15601
  export type HelixHeadlessListboxProps = {
15283
- /** What the browser may autofill in the text field, as a platform token.
15602
+ /** What a browser's autofill may choose, as a platform token such as
15603
+ `country` or `cc-exp-month`, as a native `<select>` takes it.
15284
15604
 
15285
- **Defaults to `off`, which is not the platform's default and is the
15286
- point.** The field filters a list rather than collecting a value, so a
15287
- browser offering to fill it with a saved address is competing for the same
15288
- keystrokes as the listbox. A consumer who wants autofill can still ask. */
15605
+ Set, the list draws a hidden native `<select>` with the same options for
15606
+ the browser to fill, as React Aria's `HiddenSelect` does, and a fill
15607
+ chooses the option. `off`, the default, draws none.
15608
+
15609
+ **The filter field is never filled.** It narrows the list rather than
15610
+ collecting a value, so a browser offering it a saved address competes
15611
+ with the reader for the same keystrokes: it is always `off`. */
15289
15612
  autocomplete?: (HelixHeadlessListbox["autocomplete"]) | undefined;
15290
15613
  /** The filter text the list starts with, when `filter` is not set. */
15291
15614
  "default-filter"?: (HelixHeadlessListbox["defaultFilter"]) | undefined;
@@ -15339,14 +15662,27 @@ act on the list the reader expects. */
15339
15662
  "filter-label"?: (HelixHeadlessListbox["filterLabel"]) | undefined;
15340
15663
  /** Placeholder text for the filter field. */
15341
15664
  filterLabel?: (HelixHeadlessListbox["filterLabel"]) | undefined;
15665
+ /** How the options are laid out, which the arrow keys follow: `stack`, one
15666
+ under another, or `grid`, in rows and columns, as React Aria's `ListBox`
15667
+ lays out cards or photos. With `grid`, Up and Down move within a column,
15668
+ and Left and Right along the list, mirrored right to left.
15669
+
15670
+ The columns are the stylesheet's: the styled tier draws them at
15671
+ `--listbox-column-min-inline-size` or wider, and a headless list lays out
15672
+ `::part(items)` as it likes, since the keys read where each option is
15673
+ drawn. A list of `items` stays a stack. Left out, the list is a stack,
15674
+ and the host carries no attribute for it. */
15675
+ layout?: (HelixHeadlessListbox["layout"]) | undefined;
15342
15676
  /** What the list says when its options could not be loaded, such as after a
15343
- request to a server fails. Empty is no error.
15677
+ request to a server fails. Empty, null or no attribute is no error, so
15678
+ removing the attribute clears it.
15344
15679
 
15345
15680
  Set, it shows under any options there are, in place of `empty-text` and
15346
15681
  `loading-text`, and a screen reader hears it. Clear it when you ask again. */
15347
15682
  "load-error"?: (HelixHeadlessListbox["loadError"]) | undefined;
15348
15683
  /** What the list says when its options could not be loaded, such as after a
15349
- request to a server fails. Empty is no error.
15684
+ request to a server fails. Empty, null or no attribute is no error, so
15685
+ removing the attribute clears it.
15350
15686
 
15351
15687
  Set, it shows under any options there are, in place of `empty-text` and
15352
15688
  `loading-text`, and a screen reader hears it. Clear it when you ask again. */
@@ -15390,6 +15726,12 @@ options. `{count}` is the count.
15390
15726
  pair: a language with more forms than two picks the one for its `one` and
15391
15727
  writes the rest here. */
15392
15728
  resultsLabel?: (HelixHeadlessListbox["resultsLabel"]) | undefined;
15729
+ /** What VoiceOver hears as the highlight reaches a chosen option from the
15730
+ filter field, on Apple devices. `{name}` is the option's words. */
15731
+ "selected-label"?: (HelixHeadlessListbox["selectedLabel"]) | undefined;
15732
+ /** What VoiceOver hears as the highlight reaches a chosen option from the
15733
+ filter field, on Apple devices. `{name}` is the option's words. */
15734
+ selectedLabel?: (HelixHeadlessListbox["selectedLabel"]) | undefined;
15393
15735
  /** Whether the rows are still loading.
15394
15736
 
15395
15737
  Reflected, because a stylesheet needs it: the rows that are already there
@@ -15473,6 +15815,23 @@ imperatively later, and nothing is hydrating by then.
15473
15815
 
15474
15816
  Here rather than on each control. */
15475
15817
  name?: (HelixHeadlessListbox["name"]) | undefined;
15818
+ /** The options as data, for a list too long to draw whole: each a value,
15819
+ which is also its words, or a record with a `value`, a `label` and
15820
+ `disabled`. Set, the list draws only the options in sight, and the ones
15821
+ you write as children are not read.
15822
+
15823
+ **Every option is still reachable.** The keyboard, the typeahead, the
15824
+ filter and the value work over the whole set, and the option the keyboard
15825
+ is on is drawn wherever it is, so a screen reader is told about it. Each
15826
+ drawn option says its place in the set (`aria-posinset`, `aria-setsize`).
15827
+ React Aria virtualizes a `ListBox` with its `Virtualizer`; this is core's
15828
+ `VirtualizeController`.
15829
+
15830
+ **The list needs a height to scroll in**: the styled tier's
15831
+ `--listbox-max-block-size`, or a `max-block-size` on `::part(items)` in the
15832
+ headless tier. Import the Option family as well, whose elements are drawn.
15833
+ A server sends the list empty, and the options are drawn once it hydrates. */
15834
+ items?: (HelixHeadlessListbox["items"]) | undefined;
15476
15835
  /** Which option is chosen, as an index, or `-1` where none is.
15477
15836
 
15478
15837
  `<select>`'s own pair, and this control is what stands in for one. The
@@ -15502,12 +15861,16 @@ that can. */
15502
15861
  };
15503
15862
 
15504
15863
  export type HelixHeadlessListboxSolidJsProps = {
15505
- /** What the browser may autofill in the text field, as a platform token.
15864
+ /** What a browser's autofill may choose, as a platform token such as
15865
+ `country` or `cc-exp-month`, as a native `<select>` takes it.
15506
15866
 
15507
- **Defaults to `off`, which is not the platform's default and is the
15508
- point.** The field filters a list rather than collecting a value, so a
15509
- browser offering to fill it with a saved address is competing for the same
15510
- keystrokes as the listbox. A consumer who wants autofill can still ask. */
15867
+ Set, the list draws a hidden native `<select>` with the same options for
15868
+ the browser to fill, as React Aria's `HiddenSelect` does, and a fill
15869
+ chooses the option. `off`, the default, draws none.
15870
+
15871
+ **The filter field is never filled.** It narrows the list rather than
15872
+ collecting a value, so a browser offering it a saved address competes
15873
+ with the reader for the same keystrokes: it is always `off`. */
15511
15874
  "prop:autocomplete"?: (HelixHeadlessListbox["autocomplete"]) | undefined;
15512
15875
  /** The filter text the list starts with, when `filter` is not set. */
15513
15876
  "attr:default-filter"?: (HelixHeadlessListbox["defaultFilter"]) | undefined;
@@ -15561,14 +15924,27 @@ act on the list the reader expects. */
15561
15924
  "attr:filter-label"?: (HelixHeadlessListbox["filterLabel"]) | undefined;
15562
15925
  /** Placeholder text for the filter field. */
15563
15926
  "prop:filterLabel"?: (HelixHeadlessListbox["filterLabel"]) | undefined;
15927
+ /** How the options are laid out, which the arrow keys follow: `stack`, one
15928
+ under another, or `grid`, in rows and columns, as React Aria's `ListBox`
15929
+ lays out cards or photos. With `grid`, Up and Down move within a column,
15930
+ and Left and Right along the list, mirrored right to left.
15931
+
15932
+ The columns are the stylesheet's: the styled tier draws them at
15933
+ `--listbox-column-min-inline-size` or wider, and a headless list lays out
15934
+ `::part(items)` as it likes, since the keys read where each option is
15935
+ drawn. A list of `items` stays a stack. Left out, the list is a stack,
15936
+ and the host carries no attribute for it. */
15937
+ "prop:layout"?: (HelixHeadlessListbox["layout"]) | undefined;
15564
15938
  /** What the list says when its options could not be loaded, such as after a
15565
- request to a server fails. Empty is no error.
15939
+ request to a server fails. Empty, null or no attribute is no error, so
15940
+ removing the attribute clears it.
15566
15941
 
15567
15942
  Set, it shows under any options there are, in place of `empty-text` and
15568
15943
  `loading-text`, and a screen reader hears it. Clear it when you ask again. */
15569
15944
  "attr:load-error"?: (HelixHeadlessListbox["loadError"]) | undefined;
15570
15945
  /** What the list says when its options could not be loaded, such as after a
15571
- request to a server fails. Empty is no error.
15946
+ request to a server fails. Empty, null or no attribute is no error, so
15947
+ removing the attribute clears it.
15572
15948
 
15573
15949
  Set, it shows under any options there are, in place of `empty-text` and
15574
15950
  `loading-text`, and a screen reader hears it. Clear it when you ask again. */
@@ -15612,6 +15988,12 @@ options. `{count}` is the count.
15612
15988
  pair: a language with more forms than two picks the one for its `one` and
15613
15989
  writes the rest here. */
15614
15990
  "prop:resultsLabel"?: (HelixHeadlessListbox["resultsLabel"]) | undefined;
15991
+ /** What VoiceOver hears as the highlight reaches a chosen option from the
15992
+ filter field, on Apple devices. `{name}` is the option's words. */
15993
+ "attr:selected-label"?: (HelixHeadlessListbox["selectedLabel"]) | undefined;
15994
+ /** What VoiceOver hears as the highlight reaches a chosen option from the
15995
+ filter field, on Apple devices. `{name}` is the option's words. */
15996
+ "prop:selectedLabel"?: (HelixHeadlessListbox["selectedLabel"]) | undefined;
15615
15997
  /** Whether the rows are still loading.
15616
15998
 
15617
15999
  Reflected, because a stylesheet needs it: the rows that are already there
@@ -15695,6 +16077,23 @@ imperatively later, and nothing is hydrating by then.
15695
16077
 
15696
16078
  Here rather than on each control. */
15697
16079
  "prop:name"?: (HelixHeadlessListbox["name"]) | undefined;
16080
+ /** The options as data, for a list too long to draw whole: each a value,
16081
+ which is also its words, or a record with a `value`, a `label` and
16082
+ `disabled`. Set, the list draws only the options in sight, and the ones
16083
+ you write as children are not read.
16084
+
16085
+ **Every option is still reachable.** The keyboard, the typeahead, the
16086
+ filter and the value work over the whole set, and the option the keyboard
16087
+ is on is drawn wherever it is, so a screen reader is told about it. Each
16088
+ drawn option says its place in the set (`aria-posinset`, `aria-setsize`).
16089
+ React Aria virtualizes a `ListBox` with its `Virtualizer`; this is core's
16090
+ `VirtualizeController`.
16091
+
16092
+ **The list needs a height to scroll in**: the styled tier's
16093
+ `--listbox-max-block-size`, or a `max-block-size` on `::part(items)` in the
16094
+ headless tier. Import the Option family as well, whose elements are drawn.
16095
+ A server sends the list empty, and the options are drawn once it hydrates. */
16096
+ "prop:items"?: (HelixHeadlessListbox["items"]) | undefined;
15698
16097
  /** Which option is chosen, as an index, or `-1` where none is.
15699
16098
 
15700
16099
  `<select>`'s own pair, and this control is what stands in for one. The
@@ -18381,6 +18780,20 @@ export type HelixHeadlessNotificationsHelixReadElementEvent =
18381
18780
  export type HelixHeadlessNotificationsProps = {
18382
18781
  /** The feed's name, read by screen readers. */
18383
18782
  label?: (HelixHeadlessNotifications["label"]) | undefined;
18783
+ /** What the feed says when a page of it could not be loaded, such as after a
18784
+ request to a server fails. Empty, null or no attribute is no error, so
18785
+ removing the attribute clears it.
18786
+
18787
+ Set, it shows under the rows there are, in place of `empty-text` and
18788
+ `loading-text`, and a screen reader hears it. Clear it when you ask again. */
18789
+ "load-error"?: (HelixHeadlessNotifications["loadError"]) | undefined;
18790
+ /** What the feed says when a page of it could not be loaded, such as after a
18791
+ request to a server fails. Empty, null or no attribute is no error, so
18792
+ removing the attribute clears it.
18793
+
18794
+ Set, it shows under the rows there are, in place of `empty-text` and
18795
+ `loading-text`, and a screen reader hears it. Clear it when you ask again. */
18796
+ loadError?: (HelixHeadlessNotifications["loadError"]) | undefined;
18384
18797
  /** Whether to draw a button after the list that asks for the next page, by
18385
18798
  sending `helix-load-more`. Take it off once there is nothing more. */
18386
18799
  "load-more"?: (HelixHeadlessNotifications["loadMore"]) | undefined;
@@ -18435,6 +18848,20 @@ say that without the component knowing what a row looks like. */
18435
18848
  export type HelixHeadlessNotificationsSolidJsProps = {
18436
18849
  /** The feed's name, read by screen readers. */
18437
18850
  "prop:label"?: (HelixHeadlessNotifications["label"]) | undefined;
18851
+ /** What the feed says when a page of it could not be loaded, such as after a
18852
+ request to a server fails. Empty, null or no attribute is no error, so
18853
+ removing the attribute clears it.
18854
+
18855
+ Set, it shows under the rows there are, in place of `empty-text` and
18856
+ `loading-text`, and a screen reader hears it. Clear it when you ask again. */
18857
+ "attr:load-error"?: (HelixHeadlessNotifications["loadError"]) | undefined;
18858
+ /** What the feed says when a page of it could not be loaded, such as after a
18859
+ request to a server fails. Empty, null or no attribute is no error, so
18860
+ removing the attribute clears it.
18861
+
18862
+ Set, it shows under the rows there are, in place of `empty-text` and
18863
+ `loading-text`, and a screen reader hears it. Clear it when you ask again. */
18864
+ "prop:loadError"?: (HelixHeadlessNotifications["loadError"]) | undefined;
18438
18865
  /** Whether to draw a button after the list that asks for the next page, by
18439
18866
  sending `helix-load-more`. Take it off once there is nothing more. */
18440
18867
  "bool:load-more"?: (HelixHeadlessNotifications["loadMore"]) | undefined;
@@ -22194,6 +22621,14 @@ export type HelixHeadlessSelectToggleElementEvent =
22194
22621
  HelixHeadlessSelectElementEvent<ToggleEvent>;
22195
22622
 
22196
22623
  export type HelixHeadlessSelectProps = {
22624
+ /** What a browser's autofill may fill in, as a platform token such as
22625
+ `country` or `cc-exp-month`, as on a native `<select>`.
22626
+
22627
+ Set, the select keeps a hidden native `<select>` with the same options for
22628
+ the browser to fill, as React Aria's `HiddenSelect` does, and takes the
22629
+ option the browser picks, by its value or its words, as the value. Empty
22630
+ draws no hidden select, and a browser fills nothing. */
22631
+ autocomplete?: (HelixHeadlessSelect["autocomplete"]) | undefined;
22197
22632
  /** The text shown when no options match the filter. */
22198
22633
  "empty-text"?: (HelixHeadlessSelect["emptyText"]) | undefined;
22199
22634
  /** The text shown when no options match the filter. */
@@ -22389,6 +22824,14 @@ differently: they are one chooser to a consumer. */
22389
22824
  };
22390
22825
 
22391
22826
  export type HelixHeadlessSelectSolidJsProps = {
22827
+ /** What a browser's autofill may fill in, as a platform token such as
22828
+ `country` or `cc-exp-month`, as on a native `<select>`.
22829
+
22830
+ Set, the select keeps a hidden native `<select>` with the same options for
22831
+ the browser to fill, as React Aria's `HiddenSelect` does, and takes the
22832
+ option the browser picks, by its value or its words, as the value. Empty
22833
+ draws no hidden select, and a browser fills nothing. */
22834
+ "prop:autocomplete"?: (HelixHeadlessSelect["autocomplete"]) | undefined;
22392
22835
  /** The text shown when no options match the filter. */
22393
22836
  "attr:empty-text"?: (HelixHeadlessSelect["emptyText"]) | undefined;
22394
22837
  /** The text shown when no options match the filter. */
@@ -23327,6 +23770,21 @@ not. */
23327
23770
  textContent?: (string | number) | undefined;
23328
23771
  };
23329
23772
 
23773
+ export type HelixHeadlessSpeedDialGroupProps = {
23774
+ /** The group's name, drawn above its actions and read by screen readers. */
23775
+ label?: (HelixHeadlessSpeedDialGroup["label"]) | undefined;
23776
+ };
23777
+
23778
+ export type HelixHeadlessSpeedDialGroupSolidJsProps = {
23779
+ /** The group's name, drawn above its actions and read by screen readers. */
23780
+ "prop:label"?: (HelixHeadlessSpeedDialGroup["label"]) | undefined;
23781
+
23782
+ /** Set the innerHTML of the element */
23783
+ innerHTML?: (string) | undefined;
23784
+ /** Set the textContent of the element */
23785
+ textContent?: (string | number) | undefined;
23786
+ };
23787
+
23330
23788
  /** `HelixHeadlessSpeedDialItem` component event */
23331
23789
  export type HelixHeadlessSpeedDialItemElementEvent<E = Event> = TypedEvent<
23332
23790
  HelixHeadlessSpeedDialItem,
@@ -23339,6 +23797,10 @@ export type HelixHeadlessSpeedDialItemHelixSelectElementEvent =
23339
23797
  export type HelixHeadlessSpeedDialItemProps = {
23340
23798
  /** Whether the action is disabled, so it cannot be chosen. */
23341
23799
  disabled?: (HelixHeadlessSpeedDialItem["disabled"]) | undefined;
23800
+ /** The action's keyboard shortcut as a chord, such as `mod+s`, carried as
23801
+ `aria-keyshortcuts` and drawn after the name. `mod` is Command on an Apple
23802
+ keyboard and Control elsewhere. Showing a shortcut does not bind it. */
23803
+ shortcut?: (HelixHeadlessSpeedDialItem["shortcut"]) | undefined;
23342
23804
  /** The action's value, sent in `helix-select` when the action is chosen. */
23343
23805
  value?: (HelixHeadlessSpeedDialItem["value"]) | undefined;
23344
23806
 
@@ -23351,6 +23813,10 @@ export type HelixHeadlessSpeedDialItemProps = {
23351
23813
  export type HelixHeadlessSpeedDialItemSolidJsProps = {
23352
23814
  /** Whether the action is disabled, so it cannot be chosen. */
23353
23815
  "prop:disabled"?: (HelixHeadlessSpeedDialItem["disabled"]) | undefined;
23816
+ /** The action's keyboard shortcut as a chord, such as `mod+s`, carried as
23817
+ `aria-keyshortcuts` and drawn after the name. `mod` is Command on an Apple
23818
+ keyboard and Control elsewhere. Showing a shortcut does not bind it. */
23819
+ "prop:shortcut"?: (HelixHeadlessSpeedDialItem["shortcut"]) | undefined;
23354
23820
  /** The action's value, sent in `helix-select` when the action is chosen. */
23355
23821
  "prop:value"?: (HelixHeadlessSpeedDialItem["value"]) | undefined;
23356
23822
  /** The action was chosen. Cancelable: cancel it to keep the dial open. */
@@ -23385,8 +23851,32 @@ export type HelixHeadlessSpeedDialToggleElementEvent =
23385
23851
  export type HelixHeadlessSpeedDialProps = {
23386
23852
  /** Accessible name for the trigger and the set of actions it opens. */
23387
23853
  label?: (HelixHeadlessSpeedDial["label"]) | undefined;
23854
+ /** The description the trigger gives under `open-on="long-press"`, saying how
23855
+ its actions are reached.
23856
+
23857
+ A slotted trigger is described by the dial, which carries the words as
23858
+ its own label for that: a Helix button's inner control at once, and a
23859
+ plain element of yours once a reader reaches it, after hydration, unless
23860
+ you described or labeled it yourself. */
23861
+ "long-press-label"?: (HelixHeadlessSpeedDial["longPressLabel"]) | undefined;
23862
+ /** The description the trigger gives under `open-on="long-press"`, saying how
23863
+ its actions are reached.
23864
+
23865
+ A slotted trigger is described by the dial, which carries the words as
23866
+ its own label for that: a Helix button's inner control at once, and a
23867
+ plain element of yours once a reader reaches it, after hydration, unless
23868
+ you described or labeled it yourself. */
23869
+ longPressLabel?: (HelixHeadlessSpeedDial["longPressLabel"]) | undefined;
23388
23870
  /** Space between the trigger and the actions, in pixels. */
23389
23871
  offset?: (HelixHeadlessSpeedDial["offset"]) | undefined;
23872
+ /** What opens the dial. `click` opens it on a press of the trigger. Under
23873
+ `long-press`, a press is the trigger's own action, and the dial opens on a
23874
+ press held for half a second, or on Alt+Down or Alt+Up. */
23875
+ "open-on"?: (HelixHeadlessSpeedDial["openOn"]) | undefined;
23876
+ /** What opens the dial. `click` opens it on a press of the trigger. Under
23877
+ `long-press`, a press is the trigger's own action, and the dial opens on a
23878
+ press held for half a second, or on Alt+Down or Alt+Up. */
23879
+ openOn?: (HelixHeadlessSpeedDial["openOn"]) | undefined;
23390
23880
  /** The direction the actions open in. They move to another side if that side
23391
23881
  does not fit.
23392
23882
 
@@ -23428,8 +23918,32 @@ the resolved state for stylesheets, which is what the mirror is for. */
23428
23918
  export type HelixHeadlessSpeedDialSolidJsProps = {
23429
23919
  /** Accessible name for the trigger and the set of actions it opens. */
23430
23920
  "prop:label"?: (HelixHeadlessSpeedDial["label"]) | undefined;
23921
+ /** The description the trigger gives under `open-on="long-press"`, saying how
23922
+ its actions are reached.
23923
+
23924
+ A slotted trigger is described by the dial, which carries the words as
23925
+ its own label for that: a Helix button's inner control at once, and a
23926
+ plain element of yours once a reader reaches it, after hydration, unless
23927
+ you described or labeled it yourself. */
23928
+ "attr:long-press-label"?: (HelixHeadlessSpeedDial["longPressLabel"]) | undefined;
23929
+ /** The description the trigger gives under `open-on="long-press"`, saying how
23930
+ its actions are reached.
23931
+
23932
+ A slotted trigger is described by the dial, which carries the words as
23933
+ its own label for that: a Helix button's inner control at once, and a
23934
+ plain element of yours once a reader reaches it, after hydration, unless
23935
+ you described or labeled it yourself. */
23936
+ "prop:longPressLabel"?: (HelixHeadlessSpeedDial["longPressLabel"]) | undefined;
23431
23937
  /** Space between the trigger and the actions, in pixels. */
23432
23938
  "prop:offset"?: (HelixHeadlessSpeedDial["offset"]) | undefined;
23939
+ /** What opens the dial. `click` opens it on a press of the trigger. Under
23940
+ `long-press`, a press is the trigger's own action, and the dial opens on a
23941
+ press held for half a second, or on Alt+Down or Alt+Up. */
23942
+ "attr:open-on"?: (HelixHeadlessSpeedDial["openOn"]) | undefined;
23943
+ /** What opens the dial. `click` opens it on a press of the trigger. Under
23944
+ `long-press`, a press is the trigger's own action, and the dial opens on a
23945
+ press held for half a second, or on Alt+Down or Alt+Up. */
23946
+ "prop:openOn"?: (HelixHeadlessSpeedDial["openOn"]) | undefined;
23433
23947
  /** The direction the actions open in. They move to another side if that side
23434
23948
  does not fit.
23435
23949
 
@@ -23629,7 +24143,7 @@ The arrow keys move by `step` and do not snap. */
23629
24143
  "onhelix-resized"?: ((
23630
24144
  e: HelixHeadlessSplitterHelixResizedElementEvent,
23631
24145
  ) => void) | undefined;
23632
- /** Fired each time a drag moves the divider, before it settles, as a range input does while it is dragged. Read `position` for where it is now. */
24146
+ /** Fired each time the divider moves, as a range input does: on each step of a drag, and before `helix-resized` for a key, a double click or a corner. Read `position` for where it is now. */
23633
24147
  oninput?: ((e: HelixHeadlessSplitterElementEvent) => void) | undefined;
23634
24148
  };
23635
24149
 
@@ -23769,7 +24283,7 @@ The arrow keys move by `step` and do not snap. */
23769
24283
  "on:helix-resized"?: ((
23770
24284
  e: HelixHeadlessSplitterHelixResizedElementEvent,
23771
24285
  ) => void) | undefined;
23772
- /** Fired each time a drag moves the divider, before it settles, as a range input does while it is dragged. Read `position` for where it is now. */
24286
+ /** Fired each time the divider moves, as a range input does: on each step of a drag, and before `helix-resized` for a key, a double click or a corner. Read `position` for where it is now. */
23773
24287
  "on:input"?: ((e: HelixHeadlessSplitterElementEvent) => void) | undefined;
23774
24288
 
23775
24289
  /** Set the innerHTML of the element */
@@ -24788,6 +25302,14 @@ is set. */
24788
25302
  "descending-label"?: (HelixHeadlessTable["descendingLabel"]) | undefined;
24789
25303
  /** The word for a descending sort, in `sorted-label`. */
24790
25304
  descendingLabel?: (HelixHeadlessTable["descendingLabel"]) | undefined;
25305
+ /** Makes the table a grid: one tab stop, and the arrow keys, Home, End and the
25306
+ Page keys move focus between its cells, the headings included. Enter moves
25307
+ into a cell's controls, and Tab leaves the table.
25308
+
25309
+ Off by default, where the table is a static `table` and Tab reaches each
25310
+ link and control in it. On, the table writes a `tabindex` onto each of its
25311
+ cells, which is the one way a cell of your markup can take focus. */
25312
+ grid?: (HelixHeadlessTable["grid"]) | undefined;
24791
25313
  /** Accessible name for the table.
24792
25314
 
24793
25315
  An `aria-label` or `aria-labelledby` on the host names the table too, and
@@ -24909,6 +25431,14 @@ is set. */
24909
25431
  "attr:descending-label"?: (HelixHeadlessTable["descendingLabel"]) | undefined;
24910
25432
  /** The word for a descending sort, in `sorted-label`. */
24911
25433
  "prop:descendingLabel"?: (HelixHeadlessTable["descendingLabel"]) | undefined;
25434
+ /** Makes the table a grid: one tab stop, and the arrow keys, Home, End and the
25435
+ Page keys move focus between its cells, the headings included. Enter moves
25436
+ into a cell's controls, and Tab leaves the table.
25437
+
25438
+ Off by default, where the table is a static `table` and Tab reaches each
25439
+ link and control in it. On, the table writes a `tabindex` onto each of its
25440
+ cells, which is the one way a cell of your markup can take focus. */
25441
+ "prop:grid"?: (HelixHeadlessTable["grid"]) | undefined;
24912
25442
  /** Accessible name for the table.
24913
25443
 
24914
25444
  An `aria-label` or `aria-labelledby` on the host names the table too, and
@@ -30642,6 +31172,23 @@ export type CustomElements = {
30642
31172
  * announcement beside it, move focus yourself, for example to the page's main
30643
31173
  * heading.
30644
31174
  *
31175
+ * **The announcement is a landmark region**, named by `label`, "Announcement"
31176
+ * unless you set it, so a screen reader lists it among the page's regions.
31177
+ * `hotkey`, F6 unless you set it, moves focus to the announcement's first
31178
+ * control, an action or the dismiss button, and pressed there moves focus
31179
+ * back to where it was, as React Aria's toast region does. An announcement
31180
+ * with no control leaves the key to the browser. When an announcement that
31181
+ * the key moved focus into is removed with focus still inside, focus goes
31182
+ * back to where it was before the key.
31183
+ *
31184
+ * **Set `queued` to show several announcements one at a time.** A queued
31185
+ * announcement waits while a queued announcement before it in the same parent
31186
+ * is still there, and shows when that one is removed: its message is then
31187
+ * read out, and its `duration` starts. While it waits it renders nothing,
31188
+ * is no region, and carries `:state(waiting)`. A server cannot see the
31189
+ * announcements beside it, so a served page shows every one until the script
31190
+ * runs.
31191
+ *
30645
31192
  * Set `duration` to dismiss it after a time. The clock stops while the pointer
30646
31193
  * or focus is on the announcement, and continues from what was left, so a
30647
31194
  * reader partway through is not cut off. It stops while the page is hidden too,
@@ -30659,6 +31206,19 @@ export type CustomElements = {
30659
31206
  *
30660
31207
  * Read once when the announcement is first rendered, as `Toast` reads its
30661
31208
  * own. The clock stops while the pointer or focus is on the announcement.
31209
+ * - `hotkey`: The key that moves focus to the announcement's first control, and back
31210
+ * to where it was, written as keys joined by `+`, such as `F6` or `Alt+A`.
31211
+ *
31212
+ * F6 by default, the key React Aria's regions answer to. Empty turns it
31213
+ * off. With several announcements, the first one in the page takes focus.
31214
+ * - `label`: The name of the announcement's region, which screen readers list among
31215
+ * the page's landmarks. Translate it with the rest of your interface.
31216
+ *
31217
+ * Empty leaves the announcement no region.
31218
+ * - `queued`: Whether the announcement waits its turn behind the queued announcements
31219
+ * before it in the same parent, showing when the last of them is removed.
31220
+ *
31221
+ * Off by default, so every announcement on a page shows at once.
30662
31222
  * - `tone`: The band's color.
30663
31223
  *
30664
31224
  * Paint only: unlike `Callout`, no value here draws a mark, changes the label,
@@ -30743,6 +31303,7 @@ export type CustomElements = {
30743
31303
  * These can be used to apply styling when a component is in a given state.
30744
31304
  *
30745
31305
  * - `paused`: The clock `duration` started is stopped, while the pointer or focus is on the announcement or the page is hidden.
31306
+ * - `waiting`: The announcement is `queued` behind another, and renders nothing until that one is removed.
30746
31307
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
30747
31308
  */
30748
31309
  "helix-headless-announcement": Partial<
@@ -31049,6 +31610,9 @@ export type CustomElements = {
31049
31610
  *
31050
31611
  * A column's heading is the cell's name in every row, so the first row
31051
31612
  * answers for the column.
31613
+ * - `columnName(cell: number) => string`: The heading of the column at this place in a row: a cell's name is its
31614
+ * column's heading, read from the first row that has a cell there, so a
31615
+ * short first row does not lose the heading. `''` where no row has one.
31052
31616
  *
31053
31617
  * ## CSS Parts
31054
31618
  *
@@ -31646,6 +32210,9 @@ export type CustomElements = {
31646
32210
  *
31647
32211
  * A column's heading is the cell's name in every row, so the first row
31648
32212
  * answers for the column.
32213
+ * - `columnName(cell: number) => string`: The heading of the column at this place in a row: a cell's name is its
32214
+ * column's heading, read from the first row that has a cell there, so a
32215
+ * short first row does not lose the heading. `''` where no row has one.
31649
32216
  *
31650
32217
  * ## CSS Custom Properties
31651
32218
  *
@@ -31705,13 +32272,33 @@ export type CustomElements = {
31705
32272
  >;
31706
32273
 
31707
32274
  /**
31708
- * Renders a `<figure>` holding the `<blockquote>` and a `<figcaption>` for the
32275
+ * Renders a figure holding the `<blockquote>` and a caption for the
31709
32276
  * attribution, the structure the HTML spec describes. The attribution sits
31710
32277
  * outside the quotation because it is about the quotation, and it names the
31711
32278
  * figure, so a screen reader reads the source as the figure's caption.
31712
32279
  *
31713
- * The figure keeps the browser's default margins on this tier. Set
31714
- * `::part(figure) { margin: 0 }` where they are unwanted.
32280
+ * **The figure is a `<div role="figure">`**, so the headless tier draws no
32281
+ * space around the quotation. A `<figure>` takes a 40px indent and a line of
32282
+ * space above and below from the browser's own sheet, which every page had to
32283
+ * reset. The `<blockquote>` keeps its own margins, as a bare one does. A
32284
+ * screen reader meets the same figure, named by its caption.
32285
+ *
32286
+ * **A figure only while there is an attribution.** With nothing in the caption
32287
+ * the figure has no name and nothing to say, so the role and its name are
32288
+ * dropped and a reader meets the quotation alone. A server cannot see what is
32289
+ * slotted, so it serves the figure, and the client drops it after hydration;
32290
+ * an `attribution` written as words is served exactly.
32291
+ *
32292
+ * **Quotation marks follow the language**, under `marks`. The opening mark is
32293
+ * the one the browser sets for a `<q>` in the element's language, „ under
32294
+ * `lang="de"` and « under `lang="fr"`, and a `Quote` inside the passage takes
32295
+ * the inner marks. The mark is drawn, not read: a screen reader hears the
32296
+ * passage. A passage under `marks` that starts with a mark typed into the text
32297
+ * would show two, and warns once, with the runtime kind `typed-marks`.
32298
+ *
32299
+ * **`cite` is the source's URL**, which the browser keeps and does not show.
32300
+ * Words in it, such as the author's name, warn once, with the runtime kind
32301
+ * `cite-not-url`.
31715
32302
  *
31716
32303
  * For a quotation inside a sentence, use `Quote`.
31717
32304
  *
@@ -31719,7 +32306,16 @@ export type CustomElements = {
31719
32306
  *
31720
32307
  * Component attributes and properties that can be applied to the element or by using JavaScript.
31721
32308
  *
31722
- * - `cite`: The URL of the source the passage came from.
32309
+ * - `attribution`: Who said it, and where, as words, such as "Maria Lopez, operations
32310
+ * manager". The `attribution` slot replaces them, for markup such as a link.
32311
+ *
32312
+ * Words are served with the figure they name, where a server cannot see a
32313
+ * slotted attribution.
32314
+ * - `cite`: The URL of the source the passage came from. Who said it goes in
32315
+ * `attribution`: a `cite` with words in it warns once, with the runtime kind
32316
+ * `cite-not-url`.
32317
+ * - `marks`: Whether to draw an opening quotation mark before the passage, in the
32318
+ * element's language. Leave the marks out of the text.
31723
32319
  * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
31724
32320
  *
31725
32321
  * **Named `whenSettled` because `settled` is taken four times over**, by
@@ -31746,15 +32342,15 @@ export type CustomElements = {
31746
32342
  * Areas where markup can be added to the component.
31747
32343
  *
31748
32344
  * - `(default)`: The quoted passage.
31749
- * - `attribution`: Who said it, and where.
32345
+ * - `attribution`: Who said it, and where. Replaces the words of `attribution`.
31750
32346
  *
31751
32347
  * ## CSS Parts
31752
32348
  *
31753
32349
  * Custom selectors for styling elements within the component.
31754
32350
  *
31755
- * - `attribution`: The `<figcaption>` carrying the source.
32351
+ * - `attribution`: The caption carrying the source.
31756
32352
  * - `blockquote`: The quotation.
31757
- * - `figure`: The `<figure>` holding the quotation and its attribution.
32353
+ * - `figure`: The figure holding the quotation and its attribution, a `<div>` with `role="figure"` while the attribution has words.
31758
32354
  *
31759
32355
  * ## CSS States
31760
32356
  *
@@ -31962,12 +32558,50 @@ export type CustomElements = {
31962
32558
  * controls, and a development build warns once with the kind `missing-name`.
31963
32559
  *
31964
32560
  * The group does not manage focus, so each button keeps its own tab stop. For
31965
- * one tab stop with arrow keys between the buttons, the APG toolbar pattern,
31966
- * use Toolbar.
32561
+ * one tab stop with arrow keys between a mix of controls, the APG toolbar
32562
+ * pattern, use Toolbar.
31967
32563
  *
31968
32564
  * Buttons are slotted, so they stay your own elements and keep their own
31969
32565
  * appearance and size.
31970
32566
  *
32567
+ * **Buttons that stay pressed.** With `selection-mode`, each button with a
32568
+ * `value` is a toggle button: a press presses or releases it, and it says so
32569
+ * with `aria-pressed`. `single` keeps one pressed at a time, and a press on the
32570
+ * pressed one releases it. `multiple` lets any number be pressed. `value` is
32571
+ * the pressed values, comma separated. A press sends a cancelable
32572
+ * `helix-before-change` with the value it would leave, then `change`.
32573
+ *
32574
+ * The pressed state is written on the control inside each button's shadow
32575
+ * root, so the markup you rendered is never changed and a framework hydrating
32576
+ * it sees what its server sent. That is also why only Helix buttons are
32577
+ * toggles: a native `<button>` or a button without a `value` stays a plain
32578
+ * action button in the group, and a native one without its own
32579
+ * `aria-pressed` warns once, with the runtime kind `untold-toggle`. The inner
32580
+ * control also carries
32581
+ * `--button-group-pressed`, `1` or `0`, for a `::part(button)` rule of yours.
32582
+ *
32583
+ * Use Toggle Group instead for a choice that belongs in a form, or one where
32584
+ * the arrow keys choose as they move: it is a `radiogroup` of options with a
32585
+ * form value, `required` and validation. A Button Group in a selection mode is
32586
+ * a set of actions that stay on, such as bold and italic, or a view that a
32587
+ * press switches, and it submits nothing.
32588
+ *
32589
+ * **Keyboard.** In a selection mode the group is one tab stop: the button
32590
+ * focus was last on, then the first pressed one, then the first one.
32591
+ *
32592
+ * | Key | What it does |
32593
+ * |---|---|
32594
+ * | Right, Down | Moves to the next button, from the last back to the first. |
32595
+ * | Left, Up | Moves to the button before, from the first round to the last. |
32596
+ * | Home, End | Moves to the first or the last button. |
32597
+ * | Space, Enter | Presses or releases the focused button. |
32598
+ *
32599
+ * Left and Right swap on a right-to-left page, and a disabled button is
32600
+ * passed over. In a selection mode the group is a `toolbar`, with
32601
+ * `aria-orientation` under `orientation="vertical"`. Inside a toolbar it stays
32602
+ * a named `group`, and the toolbar's own arrow keys walk its buttons, so a
32603
+ * reader meets one toolbar.
32604
+ *
31971
32605
  * ## Attributes & Properties
31972
32606
  *
31973
32607
  * Component attributes and properties that can be applied to the element or by using JavaScript.
@@ -31993,6 +32627,16 @@ export type CustomElements = {
31993
32627
  * buttons sharing edges as one shape, and a wrapped row carries the corners of
31994
32628
  * a first row into a second. Stacked, the same three keep one shape and one
31995
32629
  * column.
32630
+ * - `selection-mode`/`selectionMode`: Whether the buttons stay pressed: `single` keeps one pressed at a time and
32631
+ * `multiple` any number. Unset, they are action buttons, each its own tab
32632
+ * stop, as before.
32633
+ *
32634
+ * Optional, so the attribute is absent until a consumer writes it.
32635
+ * - `value`: The values of the pressed buttons, comma separated, in a selection mode.
32636
+ * A button's own `value` names it, so a value holds no comma.
32637
+ *
32638
+ * The attribute is the seed, and a press changes the property, which does
32639
+ * not reflect, as a native control's `value` does not.
31996
32640
  * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
31997
32641
  *
31998
32642
  * **Named `whenSettled` because `settled` is taken four times over**, by
@@ -32014,12 +32658,25 @@ export type CustomElements = {
32014
32658
  * browser harness's awaits it alone: a browser always runs the frame, and a
32015
32659
  * timer beside it was a bet on how long one takes, which a busy run lost. (property only) (readonly)
32016
32660
  *
32661
+ * ## Events
32662
+ *
32663
+ * Events that will be emitted by the component.
32664
+ *
32665
+ * - `change`: Fired after a press changes `value`, in a selection mode.
32666
+ * - `helix-before-change`: Fired before a press changes `value`, with the value it would leave in `detail.value`. Cancelable: call `preventDefault()` to keep the buttons as they are.
32667
+ *
32017
32668
  * ## Slots
32018
32669
  *
32019
32670
  * Areas where markup can be added to the component.
32020
32671
  *
32021
32672
  * - `(default)`: The buttons in the group.
32022
32673
  *
32674
+ * ## CSS Custom Properties
32675
+ *
32676
+ * CSS variables available for styling the component.
32677
+ *
32678
+ * - `--button-group-pressed`: Written on the control inside each toggle button of a group with `selection-mode`: `1` while it is pressed and `0` while it is not. Read it in a `::part(button)` rule to draw the pressed look.
32679
+ *
32023
32680
  * ## CSS States
32024
32681
  *
32025
32682
  * These can be used to apply styling when a component is in a given state.
@@ -32686,20 +33343,34 @@ export type CustomElements = {
32686
33343
  * keep every card in place, such as on a published board. Set `readonly` on one
32687
33344
  * card or connection to keep only that one in place.
32688
33345
  *
33346
+ * Set `snap` to a length in the document's units, such as `32`, and a card
33347
+ * that is moved or resized lands on a multiple of it. Carrying a card, a
33348
+ * corner, a connection, or the selection box near the edge of the board moves
33349
+ * the board under it, so a card can be taken to a place off screen in one
33350
+ * drag. A connection let go within 20 pixels of a card arrives at it. A
33351
+ * double click on the empty board zooms in about that point, and Shift with a
33352
+ * double click zooms out.
33353
+ *
32689
33354
  * Keyboard behavior:
32690
33355
  * - One card holds the board's tab stop.
32691
33356
  * - The arrow keys move through the cards in reading order. The card you land
32692
33357
  * on scrolls into view, and its connections are announced with it.
32693
- * - Shift with an arrow key moves the card.
33358
+ * - Shift with an arrow key moves the card: by 16 units, or to the next
33359
+ * multiple of `snap` where it is set. Alt with an arrow key resizes it from
33360
+ * its bottom right corner the same way.
32694
33361
  * - The connections leaving a card are stops of their own, straight after it.
32695
33362
  * Enter on one moves to the card it arrives at.
33363
+ * - What a key changes that a reader cannot see is said: where a card moved
33364
+ * to, its new size, how many cards are selected, and the zoom. A selected
33365
+ * card or connection says so when a reader arrives on it.
32696
33366
  *
32697
33367
  * Every drag also works with clicks, as WCAG 2.5.7 requires for a pointer that
32698
33368
  * cannot hold a button down. Click a selected card's move handle, a corner, a
32699
33369
  * card's connection point, or the end of a selected connection to pick it up.
32700
33370
  * It follows the pointer with no button held, and the next click puts it down
32701
33371
  * where a drag would have. On touch, the next tap sets where it lands. Escape,
32702
- * or a press outside the board, puts it back.
33372
+ * or a press outside the board, puts it back. So a finger connects two cards
33373
+ * with three taps: the card, one of its points, and the card to connect to.
32703
33374
  *
32704
33375
  * Connecting and removing dispatch requests, and your code applies them:
32705
33376
  * - Drawing from a card's handle to another card, or pressing C on one card and
@@ -32744,6 +33415,12 @@ export type CustomElements = {
32744
33415
  *
32745
33416
  * The list is joined the way the page's language joins one, "Second and
32746
33417
  * Third", rather than with a comma this component chose.
33418
+ * - `moved-label`/`movedLabel`: What screen readers hear after a key moves a card, with `{name}` for the
33419
+ * card and `{x}` and `{y}` for where it now is, in the document's units.
33420
+ *
33421
+ * **A move a reader cannot see has to be said.** Shift with an arrow moved
33422
+ * the card and said nothing, so a reader moving one by keys could not tell
33423
+ * whether it had moved, or how far.
32747
33424
  * - `order`: The order the arrow keys and screen readers move through the cards:
32748
33425
  * `spatial` or `edges`.
32749
33426
  *
@@ -32769,6 +33446,9 @@ export type CustomElements = {
32769
33446
  * walk the cards.
32770
33447
  * - `reconnecting-label`/`reconnectingLabel`: The text announced when a connection's end is picked up, with `{from}` and
32771
33448
  * `{to}`.
33449
+ * - `resized-label`/`resizedLabel`: What screen readers hear after a key resizes a card, with `{name}` for the
33450
+ * card and `{width}` and `{height}` for its new size, in the document's
33451
+ * units.
32772
33452
  * - `selected`: The names of the selected cards and connections, comma separated. Empty
32773
33453
  * when nothing is selected.
32774
33454
  *
@@ -32788,6 +33468,26 @@ export type CustomElements = {
32788
33468
  * on its board across cards and connections both, and may not hold a comma.
32789
33469
  *
32790
33470
  * Written to select from outside, and read to act on the selection.
33471
+ * - `selected-label`/`selectedLabel`: What a selected card or connection adds to what screen readers hear on
33472
+ * it, before its tone and its connections. Empty adds nothing.
33473
+ *
33474
+ * A card is an article and a connection a button, and neither has a selected
33475
+ * state for `aria-selected` to carry, so the state is said in words.
33476
+ * - `selection-label`/`selectionLabel`: What screen readers hear after the selection grows or shrinks, with
33477
+ * `{count}` for how many cards and connections are selected: by Space, a
33478
+ * click with Shift, Command or Control, Command or Control with A, a box
33479
+ * drawn across the board, or Escape.
33480
+ *
33481
+ * A selection of one made by arriving on a card or clicking it is not said,
33482
+ * since the card is.
33483
+ * - `snap`: Snaps the cards a reader moves or resizes to a multiple of this many of the
33484
+ * document's units, such as `32` to land on the lines `grid` draws.
33485
+ *
33486
+ * **A drag lets go on the nearest line and a key goes to the next one.**
33487
+ * Shift with an arrow moves a card to the next line that way, rather than
33488
+ * by its step of 16, and Alt with an arrow moves its bottom right corner
33489
+ * the same way. A group moves with what it carries, so a card inside one
33490
+ * keeps its place in it. Absent, cards land where they are let go.
32791
33491
  * - `stopped-label`/`stoppedLabel`: The text announced when a connection is stopped before it is requested.
32792
33492
  * - `tone-labels`/`toneLabels`: What each tone means on this board, in words read out with the cards and
32793
33493
  * connections in it, such as `{"danger": "Blocked", "success": "Done"}`.
@@ -32797,6 +33497,8 @@ export type CustomElements = {
32797
33497
  * red is "blocked" on one board and "urgent" on the next. A reader who can
32798
33498
  * see the board is told by the color; this is how a reader who cannot is
32799
33499
  * told the same. A tone left out is not read.
33500
+ * - `zoomed-label`/`zoomedLabel`: What screen readers hear after a zoom button or key, with `{zoom}` for the
33501
+ * zoom as a percentage, written the way the page's language writes one.
32800
33502
  * - `activate-hint-label`/`activateHintLabel`: The hint shown when a surface waiting to be pressed is scrolled or
32801
33503
  * swiped over, with `gestures="activate"`. Absent is the family's own.
32802
33504
  * - `controls`: Which controls to show, as a list such as `pan zoom fullscreen`, or
@@ -32943,7 +33645,14 @@ export type CustomElements = {
32943
33645
  * - `(default)`: The board's `helix-canvas-node` and `helix-canvas-edge` elements, drawn on the plane.
32944
33646
  * - `empty`: Content shown when the document has no nodes.
32945
33647
  * - `footer`: Content below the board.
33648
+ * - `fullscreen-icon`: Replaces the glyph inside the fullscreen button.
32946
33649
  * - `header`: Content above the board.
33650
+ * - `pan-down-icon`: Replaces the glyph inside the pan down button.
33651
+ * - `pan-end-icon`: Replaces the glyph inside the button that pans toward the end of a line of text.
33652
+ * - `pan-start-icon`: Replaces the glyph inside the button that pans toward the start of a line of text.
33653
+ * - `pan-up-icon`: Replaces the glyph inside the pan up button.
33654
+ * - `zoom-in-icon`: Replaces the glyph inside the zoom-in button.
33655
+ * - `zoom-out-icon`: Replaces the glyph inside the zoom-out button.
32947
33656
  *
32948
33657
  * ## Methods
32949
33658
  *
@@ -34492,15 +35201,17 @@ export type CustomElements = {
34492
35201
  * the button is drawn only while the cap hides something, measured as the
34493
35202
  * block lays out. Not for a diff, whose files each scroll on their own.
34494
35203
  * - `expand-label`/`expandLabel`: The expand button's words while the cap hides lines.
34495
- * - `label`: The block's name, usually a file name or a language.
35204
+ * - `label`: The block's name, usually a file name, drawn in the header.
34496
35205
  *
34497
- * In a diff, each file is named from the patch, and this names a patch that
34498
- * carries no name of its own.
35206
+ * Absent, the block is named by `language` where there is one. In a diff,
35207
+ * each file is named from the patch, and this names a patch that carries no
35208
+ * name of its own.
34499
35209
  * - `language`: The language the code is written in, such as `ts` or `css`, handed to
34500
35210
  * `highlight` as its second argument.
34501
35211
  *
34502
- * Absent hands it an empty string. It draws nothing of its own: the block's
34503
- * name is `label`.
35212
+ * A block with no `label` is named by it, in the header and on the copy
35213
+ * button, as a docs site names a snippet by its language. Absent hands
35214
+ * `highlight` an empty string and names nothing.
34504
35215
  * - `line-numbers`/`lineNumbers`: Whether the lines are numbered in a gutter beside the code.
34505
35216
  *
34506
35217
  * The numbers are hidden from the accessibility tree and are not part of a
@@ -34610,7 +35321,7 @@ export type CustomElements = {
34610
35321
  * - `gutter`: The line numbers beside the code, shown when `line-numbers` is set.
34611
35322
  * - `header`: The bar that holds the name and the copy button, shown when there is a name.
34612
35323
  * - `hunk`: In a diff, a `@@` line saying where the lines under it are.
34613
- * - `label`: The file name or language, where one is given.
35324
+ * - `label`: The block's name: its `label`, or its `language` where it has no label.
34614
35325
  * - `marker`: In a diff, the `+`, `-`, or space that starts a line.
34615
35326
  * - `new`: In a split diff, the new version's `<pre>`.
34616
35327
  * - `number`: In a diff, a line number.
@@ -35406,13 +36117,33 @@ export type CustomElements = {
35406
36117
  * reopened combobox starts from the whole list.
35407
36118
  *
35408
36119
  * Focus stays in the text field. The arrow keys move through the list with the
35409
- * listbox's public `navigate` method. `role="combobox"` is on the input itself.
35410
- * ArrowDown and ArrowUp open the list on the chosen option, and Enter chooses
35411
- * the highlighted one. As typing narrows the list, a screen reader hears how
35412
- * many options are left, such as "3 results". Space, Home, End and letters edit the text, and Enter in
35413
- * a closed field is left to the form. Emptying the field and leaving it clears
35414
- * a single choice; Escape puts the chosen words back, and a second Escape on
35415
- * the closed field clears the choice.
36120
+ * listbox's public `navigate` method. As typing narrows the list, a screen
36121
+ * reader hears how many options are left, such as "3 results". Emptying the
36122
+ * field and leaving it clears a single choice.
36123
+ *
36124
+ * **Keyboard.**
36125
+ *
36126
+ * | Key | What it does |
36127
+ * |---|---|
36128
+ * | Down, Up | On a closed field, opens the list on the chosen option, or the first or the last. In the open list, moves the highlight, round from the last option to the first. |
36129
+ * | Page Down, Page Up | In the open list, moves the highlight by as many options as the list shows at once. |
36130
+ * | Enter | Chooses the highlighted option. With nothing left in the list, creates what was typed with `creatable`, or takes it with `allows-custom-value`. On a closed field, submits the form. |
36131
+ * | Escape | Closes the list and puts the chosen words back. On a closed field, a second Escape clears a single choice. |
36132
+ * | Tab | Closes the list and moves on. |
36133
+ * | Backspace | With `multiple`, on an empty field, removes the last tag. |
36134
+ * | Space, Home, End, letters | Edit the text. |
36135
+ *
36136
+ * **ARIA.** The input is the `combobox`, named by the label, with
36137
+ * `aria-expanded`, `aria-controls` naming the list, `aria-autocomplete`
36138
+ * (`both` with `suggest`, `list` otherwise) and `aria-activedescendant` on
36139
+ * the highlighted option. The list is the listbox `Listbox` describes.
36140
+ *
36141
+ * On Apple devices, where VoiceOver does not read the option the field points
36142
+ * to, the field says it in a live region as the highlight moves, says how many
36143
+ * options there are as the list opens, and says a choice once it is made, as
36144
+ * React Aria's combobox does there.
36145
+ *
36146
+ * Set `autocomplete` to let a browser's autofill choose an option.
35416
36147
  *
35417
36148
  * With `multiple`, each chosen option is a tag in the field with its own remove
35418
36149
  * control. The panel stays open and the filter clears after each choice, so the
@@ -35435,12 +36166,19 @@ export type CustomElements = {
35435
36166
  * leaves the field or presses Enter with nothing highlighted, and text that
35436
36167
  * names an option takes that option. Unlike `creatable`, no event asks
35437
36168
  * first and no option is expected to be added: the value is the text.
35438
- * - `autocomplete`: What the browser may autofill in the text field, as a platform token.
36169
+ * - `autocomplete`: What the browser may autofill, as a platform token such as `country`.
35439
36170
  *
35440
36171
  * **Defaults to `off`, which is not the platform's default and is the
35441
36172
  * point.** The field filters a list rather than collecting a value, so a
35442
36173
  * browser offering to fill it with a saved address is competing for the same
35443
36174
  * keystrokes as the listbox. A consumer who wants autofill can still ask.
36175
+ *
36176
+ * Set, a combobox whose answer is one of its options keeps a hidden native
36177
+ * `<select>` with the same options for the browser to fill, as React Aria's
36178
+ * combobox and Select do, and the option the browser picks, by its value or
36179
+ * its words, becomes the value. The text field itself stays `off`, so the
36180
+ * browser fills the answer and not the filter. With `allows-custom-value`
36181
+ * the token goes on the text field, whose words are the answer.
35444
36182
  * - `creatable`: Whether the user can add a value that is not in the list.
35445
36183
  *
35446
36184
  * The row appears while what is typed matches no option's words exactly, so
@@ -35459,8 +36197,9 @@ export type CustomElements = {
35459
36197
  * every keystroke. See Listbox's `filter-delay`.
35460
36198
  * - `list-label`/`listLabel`: The list's name, read by screen readers. The list has no visible name.
35461
36199
  * - `load-error`/`loadError`: What the list says when its options could not be loaded, such as after a
35462
- * request to a server fails. Empty is no error. Passed to the list, which
35463
- * shows it under any options there are and tells screen readers.
36200
+ * request to a server fails. Empty, null or no attribute is no error, so
36201
+ * removing the attribute clears it. Passed to the list, which shows it
36202
+ * under any options there are and tells screen readers.
35464
36203
  * - `loading`: Whether the options are still loading.
35465
36204
  *
35466
36205
  * Passed straight to the list, which is where the rows are and so where the
@@ -35504,6 +36243,8 @@ export type CustomElements = {
35504
36243
  * - `results-label`/`resultsLabel`: What a screen reader hears when typing leaves any other number of
35505
36244
  * options. `{count}` is the count, and `Intl.PluralRules` picks between the
35506
36245
  * two.
36246
+ * - `selected-label`/`selectedLabel`: What VoiceOver hears for a chosen option, as the highlight reaches it and
36247
+ * once it is chosen, on Apple devices. `{name}` is the option's words.
35507
36248
  * - `suggest`: Whether the field completes the word as the user types.
35508
36249
  *
35509
36250
  * `suggest` rather than `autocomplete`, which is a real HTML attribute this
@@ -35724,6 +36465,7 @@ export type CustomElements = {
35724
36465
  * - `listbox-loading`: Shown while the options are loading.
35725
36466
  * - `listbox-search`: The region holding the field that narrows the list.
35726
36467
  * - `listbox-search-field`: The filter field inside that region.
36468
+ * - `live`: The region VoiceOver hears the highlight, the count and a choice from on Apple devices, drawn once there is one to say. Visually hidden in the styled tier.
35727
36469
  * - `rest`: The count of choices held beyond `max-tags`. A `<button>` with `expandable`, a `<span>` without it.
35728
36470
  * - `surface`: The floating panel.
35729
36471
  * - `tag`: One chosen option.
@@ -35739,8 +36481,10 @@ export type CustomElements = {
35739
36481
  *
35740
36482
  * These can be used to apply styling when a component is in a given state.
35741
36483
  *
36484
+ * - `blank`: While nothing is chosen.
35742
36485
  * - `error`: While `load-error` is set.
35743
36486
  * - `invalid`: The control has an error to show, from the browser's validation or from your `feedback`.
36487
+ * - `loading`: While `loading` is set.
35744
36488
  * - `no-results`: What was typed hid every option of a list that has some.
35745
36489
  * - `open`: While the list is open.
35746
36490
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
@@ -35786,8 +36530,9 @@ export type CustomElements = {
35786
36530
  * with: one key, said once.
35787
36531
  * - `label`: Accessible name for the overlay, which has no visible heading.
35788
36532
  * - `load-error`/`loadError`: What the list says when its commands could not be loaded, such as after a
35789
- * request to a server fails. Empty is no error. Passed to the list, which
35790
- * shows it under any commands there are and tells screen readers.
36533
+ * request to a server fails. Empty, null or no attribute is no error, so
36534
+ * removing the attribute clears it. Passed to the list, which shows it
36535
+ * under any commands there are and tells screen readers.
35791
36536
  * - `loading`: Whether the commands are still loading, for a palette that asks a server
35792
36537
  * for them as the user types.
35793
36538
  *
@@ -37376,6 +38121,7 @@ export type CustomElements = {
37376
38121
  *
37377
38122
  * Custom selectors for styling elements within the component.
37378
38123
  *
38124
+ * - `actions`: The box after the value inside its `<dd>`, holding the `actions` slot.
37379
38125
  * - `label`: The `<dt>`, holding the label.
37380
38126
  * - `value`: The `<dd>`, holding the value.
37381
38127
  *
@@ -37383,6 +38129,7 @@ export type CustomElements = {
37383
38129
  *
37384
38130
  * These can be used to apply styling when a component is in a given state.
37385
38131
  *
38132
+ * - `several`: The values are several `<dd>` elements of your own, so the item draws no `value` part.
37386
38133
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
37387
38134
  */
37388
38135
  "helix-headless-description-list-item": Partial<
@@ -37672,30 +38419,42 @@ export type CustomElements = {
37672
38419
  * rendered element. The semantics are then in the server-rendered markup, with
37673
38420
  * no attribute written by script after the element connects.
37674
38421
  *
37675
- * Set `announced` for a line that divides one thing from another, and it is
37676
- * read as a separator, named by any content set into it.
38422
+ * **The line is a separator**, as `<hr>` is, and as Radix Separator, React
38423
+ * Aria Separator, and Web Awesome's divider are. It is named by any content
38424
+ * set into it, so a screen reader says "Or, separator" where you wrote "Or" on
38425
+ * the line. Set `decorative` on a rule that separates nothing, such as one
38426
+ * under a heading or between the facts of a byline, and it leaves the
38427
+ * accessibility tree.
37677
38428
  *
37678
- * Use `orientation="vertical"` between items on one line, such as inside a
37679
- * toolbar. A vertical divider stretches to fit its flex parent and sets no
37680
- * height of its own.
38429
+ * Use `orientation="vertical"` between items on one line. A vertical divider
38430
+ * stretches to fit its flex parent and sets no height of its own.
38431
+ *
38432
+ * **Inside a toolbar it runs across the toolbar** without being told: vertical
38433
+ * in a horizontal toolbar and horizontal in a vertical one, with
38434
+ * `aria-orientation` to match, as React Aria's separator does inside a
38435
+ * toolbar. Inside means a child of Toolbar or of the page's own
38436
+ * `role="toolbar"`. An `orientation` you write still wins. A server cannot see
38437
+ * the toolbar, so the turn arrives with hydration, inside the shadow root.
37681
38438
  *
37682
38439
  * ## Attributes & Properties
37683
38440
  *
37684
38441
  * Component attributes and properties that can be applied to the element or by using JavaScript.
37685
38442
  *
37686
- * - `announced`: Whether screen readers announce the line as a separator.
38443
+ * - `announced`: Whether screen readers announce the line as a separator, which they now do
38444
+ * by default.
37687
38445
  *
37688
- * Off by default, and out of the accessibility tree. Most rules on a page
37689
- * separate nothing: they underline a heading or close a section that space
37690
- * had already closed, and announcing every one as a separator is noise a
37691
- * screen-reader user has to walk past.
38446
+ * It dates from when the line was decorative by default. It is still read,
38447
+ * and it wins over `decorative`, so a divider written with it stays a
38448
+ * separator.
38449
+ * - `decorative`: Takes the line out of the accessibility tree, for a rule that separates
38450
+ * nothing: one under a heading, or between the facts of a byline.
37692
38451
  *
37693
- * An opt-in, not a `decorative` opt-out, because a boolean attribute cannot
37694
- * be turned off: `decorative="false"` parses as `true`, which would put the
37695
- * quiet default out of reach from HTML and leave it settable only as a
37696
- * property. An opt-in is absent by default, which every reflected property
37697
- * here has to be.
38452
+ * Absent, the line is a separator, as `<hr>` is. Radix Separator's opt-out
38453
+ * has the same name. It turns the role off because a boolean attribute that
38454
+ * is on by default cannot be turned off from HTML.
37698
38455
  * - `orientation`: The direction the line runs: `horizontal` or `vertical`.
38456
+ *
38457
+ * Unset is horizontal, or across the toolbar the divider sits in.
37699
38458
  * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
37700
38459
  *
37701
38460
  * **Named `whenSettled` because `settled` is taken four times over**, by
@@ -37734,6 +38493,7 @@ export type CustomElements = {
37734
38493
  *
37735
38494
  * These can be used to apply styling when a component is in a given state.
37736
38495
  *
38496
+ * - `vertical`: The line runs vertically: `orientation="vertical"`, or no `orientation` inside a horizontal toolbar.
37737
38497
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
37738
38498
  */
37739
38499
  "helix-headless-divider": Partial<
@@ -37935,6 +38695,9 @@ export type CustomElements = {
37935
38695
  *
37936
38696
  * A column's heading is the cell's name in every row, so the first row
37937
38697
  * answers for the column.
38698
+ * - `columnName(cell: number) => string`: The heading of the column at this place in a row: a cell's name is its
38699
+ * column's heading, read from the first row that has a cell there, so a
38700
+ * short first row does not lose the heading. `''` where no row has one.
37938
38701
  *
37939
38702
  * ## CSS Custom Properties
37940
38703
  *
@@ -38467,6 +39230,13 @@ export type CustomElements = {
38467
39230
  * rendering from data or on a server gets a heading a reader finds in the
38468
39231
  * outline without writing the element. A heading slotted in replaces it.
38469
39232
  *
39233
+ * **Whatever is slotted into `heading` is read as a heading.** An element that
39234
+ * is no heading, such as a `<span>` or a `<p>`, is set inside the `heading`
39235
+ * part at `heading-level`, so a screen reader still finds it in the outline.
39236
+ * A heading element, or an element holding one, keeps its own level. A server
39237
+ * cannot see the slotted element, so a served `<span>` becomes a heading once
39238
+ * the script runs.
39239
+ *
38470
39240
  * ## Attributes & Properties
38471
39241
  *
38472
39242
  * Component attributes and properties that can be applied to the element or by using JavaScript.
@@ -38511,14 +39281,14 @@ export type CustomElements = {
38511
39281
  *
38512
39282
  * - `(default)`: The message: why the region is empty, and what to do about it.
38513
39283
  * - `actions`: The action that would put something in the region.
38514
- * - `heading`: The heading, which names what is missing. Slot a heading element, such as an `<h3>`, so a reader can find it in the page's outline. Replaces the one `heading` draws.
39284
+ * - `heading`: The heading, which names what is missing. A heading element, such as an `<h3>`, keeps its level; any other element is read as a heading at `heading-level`. Replaces the one `heading` draws.
38515
39285
  * - `icon`: An icon above the heading.
38516
39286
  *
38517
39287
  * ## CSS Parts
38518
39288
  *
38519
39289
  * Custom selectors for styling elements within the component.
38520
39290
  *
38521
- * - `heading`: The heading `heading` draws, a heading at `heading-level`. Drawn only while `heading` holds words and nothing is slotted into `heading`.
39291
+ * - `heading`: The heading at `heading-level`: the one `heading` draws while nothing is slotted into `heading`, or the one around a slotted element that is no heading.
38522
39292
  * - `live`: A copy of the heading and the message, in a live region that screen readers announce when the view appears. Visually hidden in the styled tier.
38523
39293
  *
38524
39294
  * ## CSS States
@@ -39707,6 +40477,12 @@ export type CustomElements = {
39707
40477
  * showing a date schedules none, so a long feed left open costs almost nothing.
39708
40478
  * `frozen` draws the reading once and leaves it.
39709
40479
  *
40480
+ * **`fields` draws each field of a date as a part of its own**, such as
40481
+ * `day`, `month` and `year`, so a stylesheet can set the year in a lighter ink
40482
+ * or the weekday in capitals with `::part()`. The text between the fields is
40483
+ * the locale's own and has no part. An `elapsed` or `relative` reading is one
40484
+ * phrase, with no parts inside it.
40485
+ *
39710
40486
  * **The output is always `<time datetime>`**, so copy and paste and scripts
39711
40487
  * parsing the page get the exact instant, whatever the visible text says. A
39712
40488
  * screen reader reads the text, so an `elapsed` reading is named in full, such
@@ -39746,6 +40522,13 @@ export type CustomElements = {
39746
40522
  * this is and a stylesheet has a reason to know: a compact reading is a fixed
39747
40523
  * few characters and a date is not.
39748
40524
  * - `era`: How the era is written, such as AD, where a date is shown.
40525
+ * - `fields`: Draws each field of a date in a part of its own: `weekday`, `day`,
40526
+ * `month`, `year`, `era`, `hour`, `minute`, `second`, `day-period` and
40527
+ * `time-zone-name`, so `::part(year)` can set the year apart.
40528
+ *
40529
+ * Off by default, which draws the date as one run of text, as Shoelace and
40530
+ * Web Awesome do. An `elapsed` or `relative` reading is one phrase either
40531
+ * way.
39749
40532
  * - `frozen`: Draws an `elapsed` or `relative` reading once and leaves it, where it
39750
40533
  * would otherwise move on as it goes stale.
39751
40534
  *
@@ -39811,12 +40594,24 @@ export type CustomElements = {
39811
40594
  *
39812
40595
  * Custom selectors for styling elements within the component.
39813
40596
  *
40597
+ * - `day`: The day of the month, with `fields`.
40598
+ * - `day-period`: AM or PM, or the locale's word for the part of the day, with `fields`.
40599
+ * - `era`: The era, such as AD, with `fields` and `era`.
40600
+ * - `hour`: The hour, with `fields`.
40601
+ * - `minute`: The minute, with `fields`.
40602
+ * - `month`: The month, with `fields`.
40603
+ * - `second`: The second, with `fields`.
39814
40604
  * - `time`: The `<time>` element that holds the formatted text.
40605
+ * - `time-zone-name`: The time zone's name, with `fields`, where `time-zone-name` or a `long` or `full` `time-style` shows it.
40606
+ * - `weekday`: The day of the week, with `fields`.
40607
+ * - `year`: The year, with `fields`.
39815
40608
  *
39816
40609
  * ## CSS States
39817
40610
  *
39818
40611
  * These can be used to apply styling when a component is in a given state.
39819
40612
  *
40613
+ * - `future`: An `elapsed` or `relative` reading of a moment still to come, such as "in 3 hours".
40614
+ * - `past`: An `elapsed` or `relative` reading of a moment gone, such as "3 hours ago".
39820
40615
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
39821
40616
  */
39822
40617
  "helix-headless-format-date": Partial<
@@ -40020,7 +40815,14 @@ export type CustomElements = {
40020
40815
  * - `(default)`: The renderer's box, which the drawing is made in.
40021
40816
  * - `filter-icon`: The icon in the search field. Defaults to a magnifying glass.
40022
40817
  * - `footer`: Content below the graph.
40818
+ * - `fullscreen-icon`: Replaces the glyph inside the fullscreen button.
40023
40819
  * - `header`: Content above the graph.
40820
+ * - `pan-down-icon`: Replaces the glyph inside the pan down button.
40821
+ * - `pan-end-icon`: Replaces the glyph inside the button that pans toward the end of a line of text.
40822
+ * - `pan-start-icon`: Replaces the glyph inside the button that pans toward the start of a line of text.
40823
+ * - `pan-up-icon`: Replaces the glyph inside the pan up button.
40824
+ * - `zoom-in-icon`: Replaces the glyph inside the zoom-in button.
40825
+ * - `zoom-out-icon`: Replaces the glyph inside the zoom-out button.
40024
40826
  *
40025
40827
  * ## Methods
40026
40828
  *
@@ -40101,9 +40903,14 @@ export type CustomElements = {
40101
40903
  *
40102
40904
  * These can be used to apply styling when a component is in a given state.
40103
40905
  *
40906
+ * - `empty`: The list holds no notes: the graph has none, or a search or the groups hid them all.
40104
40907
  * - `fullscreen`: The graph fills the screen.
40105
40908
  * - `idle`: The user has been still long enough for the header and footer to fade.
40909
+ * - `local`: The drawing shows the selected note's local graph, with `depth`.
40910
+ * - `panel-open`: A graph with `no-panel` has the search and the list open over the drawing.
40106
40911
  * - `ready`: The graph has been drawn whole, after `helix-graph-ready`.
40912
+ * - `searching`: The search field holds words, and the list holds only the notes they find.
40913
+ * - `selected`: A note is selected, in the list or in the drawing.
40107
40914
  * - `sharing`: The page keeps the plain wheel and one finger, with `gestures="cooperative"` or while a graph with `gestures="activate"` waits to be pressed.
40108
40915
  * - `using`: A graph with `gestures="activate"` has been pressed and has the gestures.
40109
40916
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
@@ -40190,6 +40997,9 @@ export type CustomElements = {
40190
40997
  * calendar heatmap does: a week is a column, so the strip reads along the
40191
40998
  * line in weeks, from the right on a right-to-left page, and top to bottom in
40192
40999
  * days.
41000
+ * - `selected-label`/`selectedLabel`: What the readout adds for a selected cell, under `selection-mode`, after
41001
+ * where the cell stands: "Day 1: 0 (1 of 14, selected)". Empty adds
41002
+ * nothing.
40193
41003
  * - `selection-label`/`selectionLabel`: What the `selection` part says after the selection changes, with `{count}` for
40194
41004
  * how many cells are selected.
40195
41005
  * - `selection-mode`/`selectionMode`: How many cells a reader can select: `single` or `multiple`.
@@ -40370,6 +41180,9 @@ export type CustomElements = {
40370
41180
  *
40371
41181
  * A column's heading is the cell's name in every row, so the first row
40372
41182
  * answers for the column.
41183
+ * - `columnName(cell: number) => string`: The heading of the column at this place in a row: a cell's name is its
41184
+ * column's heading, read from the first row that has a cell there, so a
41185
+ * short first row does not lose the heading. `''` where no row has one.
40373
41186
  *
40374
41187
  * ## CSS Custom Properties
40375
41188
  *
@@ -40839,6 +41652,17 @@ export type CustomElements = {
40839
41652
  * its own. The fallback is read once the picture fails, after the picture's
40840
41653
  * `alt`, so a reader hears that it did not load, as a sighted reader sees.
40841
41654
  *
41655
+ * **An image with no `alt` says so.** At its first render it reports a
41656
+ * `missing-alt` warning, printed in the console and counted by
41657
+ * `@fusion.dev/helix-diagnostics`, which names the fix: describe the picture
41658
+ * in `alt`, or write `alt=""` for one that is decoration. An image hidden with
41659
+ * `aria-hidden="true"` needs neither and is not reported.
41660
+ *
41661
+ * A sheet of yours reads the state as `:state(loading)`, `:state(loaded)`,
41662
+ * `:state(error)`, and `:state(waiting)`, the last while `placeholder-delay`
41663
+ * holds the placeholder back. It can also read `data-status` on the host once
41664
+ * the picture has loaded or failed.
41665
+ *
40842
41666
  * ## Attributes & Properties
40843
41667
  *
40844
41668
  * Component attributes and properties that can be applied to the element or by using JavaScript.
@@ -42084,6 +42908,9 @@ export type CustomElements = {
42084
42908
  *
42085
42909
  * A column's heading is the cell's name in every row, so the first row
42086
42910
  * answers for the column.
42911
+ * - `columnName(cell: number) => string`: The heading of the column at this place in a row: a cell's name is its
42912
+ * column's heading, read from the first row that has a cell there, so a
42913
+ * short first row does not lose the heading. `''` where no row has one.
42087
42914
  *
42088
42915
  * ## CSS Custom Properties
42089
42916
  *
@@ -42428,16 +43255,31 @@ export type CustomElements = {
42428
43255
  * active option is where the keyboard is: the arrow keys move it, and
42429
43256
  * `aria-activedescendant` points to it while focus stays on the list.
42430
43257
  *
42431
- * The arrow keys, Home, End, PageUp and PageDown move the highlight, and typed
42432
- * letters move it to the next option whose words start with them. In a
42433
- * single-choice list the highlight is the choice unless `manual` is set; then
42434
- * Enter, Space or a click chooses. With `multiple`, Space toggles the
42435
- * highlighted option, Shift with an arrow adds the option it moves to, Shift
42436
- * with Home or End adds every option from the highlight to that end, and
42437
- * Control+A or Command+A chooses every option, or none where all are chosen.
42438
- * In a filter field, Space, Home, End and letters edit the text, and with
42439
- * `multiple`, Control with Shift and Home or End adds every option from the
42440
- * highlight to that end.
43258
+ * **Keyboard.** The list is one tab stop, or its filter field is where there
43259
+ * is one. In a single-choice list the highlight is the choice unless `manual`
43260
+ * is set; then Enter, Space or a click chooses.
43261
+ *
43262
+ * | Key | What it does |
43263
+ * |---|---|
43264
+ * | Down, Up | Moves the highlight to the next or the previous option, round from the last to the first. With `layout="grid"`, to the option below or above, stopping at the edge. |
43265
+ * | Right, Left | With `layout="grid"`, moves to the next or the previous option, mirrored right to left. In a filter field, moves the caret. |
43266
+ * | Home, End | Moves to the first or the last option. In a filter field, moves the caret. |
43267
+ * | Page Down, Page Up | Moves by as many options as the list shows at once. |
43268
+ * | A letter or a word | Moves to the next option whose words start with what you typed. In a filter field, types it. |
43269
+ * | Enter | Chooses the highlighted option, or follows it where it is a link. |
43270
+ * | Space | Chooses the highlighted option, or with `multiple` toggles it. In a filter field, types a space. |
43271
+ * | Shift with Down or Up | With `multiple`, adds the option the highlight moves to. In a filter field, moves the highlight and leaves the value. |
43272
+ * | Shift with Space | With `multiple`, adds every option from the one last chosen to the highlighted one. In a filter field, types a space. |
43273
+ * | Shift with Home or End | With `multiple`, adds every option from the highlight to that end. In a filter field, hold Control as well. |
43274
+ * | Control or Command with A | With `multiple`, chooses every option, or none where all are chosen. In a filter field, selects the text. |
43275
+ * | Escape | In a filter field, clears the filter. |
43276
+ *
43277
+ * **ARIA.** The `items` part is the `listbox`, named by the label and
43278
+ * described by the hint and the message, with `aria-multiselectable` under
43279
+ * `multiple`, `aria-required`, `aria-invalid`, and `aria-busy` while loading.
43280
+ * Each option is an `option` with `aria-selected`. The list, or its filter
43281
+ * field, points `aria-activedescendant` at the highlighted option; the field
43282
+ * is `aria-autocomplete="list"` and controls the list.
42441
43283
  *
42442
43284
  * An option with `href` is a link: Enter or a press follows it and selects
42443
43285
  * nothing, and moving onto it with the arrows does not follow it.
@@ -42450,12 +43292,16 @@ export type CustomElements = {
42450
43292
  *
42451
43293
  * Component attributes and properties that can be applied to the element or by using JavaScript.
42452
43294
  *
42453
- * - `autocomplete`: What the browser may autofill in the text field, as a platform token.
43295
+ * - `autocomplete`: What a browser's autofill may choose, as a platform token such as
43296
+ * `country` or `cc-exp-month`, as a native `<select>` takes it.
42454
43297
  *
42455
- * **Defaults to `off`, which is not the platform's default and is the
42456
- * point.** The field filters a list rather than collecting a value, so a
42457
- * browser offering to fill it with a saved address is competing for the same
42458
- * keystrokes as the listbox. A consumer who wants autofill can still ask.
43298
+ * Set, the list draws a hidden native `<select>` with the same options for
43299
+ * the browser to fill, as React Aria's `HiddenSelect` does, and a fill
43300
+ * chooses the option. `off`, the default, draws none.
43301
+ *
43302
+ * **The filter field is never filled.** It narrows the list rather than
43303
+ * collecting a value, so a browser offering it a saved address competes
43304
+ * with the reader for the same keystrokes: it is always `off`.
42459
43305
  * - `default-filter`/`defaultFilter`: The filter text the list starts with, when `filter` is not set.
42460
43306
  * - `empty-text`/`emptyText`: The text shown when the filter hides every option.
42461
43307
  *
@@ -42483,8 +43329,19 @@ export type CustomElements = {
42483
43329
  * letter. Enter and the arrow keys filter at once on what is typed, so they
42484
43330
  * act on the list the reader expects.
42485
43331
  * - `filter-label`/`filterLabel`: Placeholder text for the filter field.
43332
+ * - `layout`: How the options are laid out, which the arrow keys follow: `stack`, one
43333
+ * under another, or `grid`, in rows and columns, as React Aria's `ListBox`
43334
+ * lays out cards or photos. With `grid`, Up and Down move within a column,
43335
+ * and Left and Right along the list, mirrored right to left.
43336
+ *
43337
+ * The columns are the stylesheet's: the styled tier draws them at
43338
+ * `--listbox-column-min-inline-size` or wider, and a headless list lays out
43339
+ * `::part(items)` as it likes, since the keys read where each option is
43340
+ * drawn. A list of `items` stays a stack. Left out, the list is a stack,
43341
+ * and the host carries no attribute for it.
42486
43342
  * - `load-error`/`loadError`: What the list says when its options could not be loaded, such as after a
42487
- * request to a server fails. Empty is no error.
43343
+ * request to a server fails. Empty, null or no attribute is no error, so
43344
+ * removing the attribute clears it.
42488
43345
  *
42489
43346
  * Set, it shows under any options there are, in place of `empty-text` and
42490
43347
  * `loading-text`, and a screen reader hears it. Clear it when you ask again.
@@ -42507,6 +43364,8 @@ export type CustomElements = {
42507
43364
  * **Two sentences, chosen by `Intl.PluralRules`**, which is Data Table's
42508
43365
  * pair: a language with more forms than two picks the one for its `one` and
42509
43366
  * writes the rest here.
43367
+ * - `selected-label`/`selectedLabel`: What VoiceOver hears as the highlight reaches a chosen option from the
43368
+ * filter field, on Apple devices. `{name}` is the option's words.
42510
43369
  * - `loading`: Whether the rows are still loading.
42511
43370
  *
42512
43371
  * Reflected, because a stylesheet needs it: the rows that are already there
@@ -42561,6 +43420,22 @@ export type CustomElements = {
42561
43420
  * imperatively later, and nothing is hydrating by then.
42562
43421
  *
42563
43422
  * Here rather than on each control.
43423
+ * - `items`: The options as data, for a list too long to draw whole: each a value,
43424
+ * which is also its words, or a record with a `value`, a `label` and
43425
+ * `disabled`. Set, the list draws only the options in sight, and the ones
43426
+ * you write as children are not read.
43427
+ *
43428
+ * **Every option is still reachable.** The keyboard, the typeahead, the
43429
+ * filter and the value work over the whole set, and the option the keyboard
43430
+ * is on is drawn wherever it is, so a screen reader is told about it. Each
43431
+ * drawn option says its place in the set (`aria-posinset`, `aria-setsize`).
43432
+ * React Aria virtualizes a `ListBox` with its `Virtualizer`; this is core's
43433
+ * `VirtualizeController`.
43434
+ *
43435
+ * **The list needs a height to scroll in**: the styled tier's
43436
+ * `--listbox-max-block-size`, or a `max-block-size` on `::part(items)` in the
43437
+ * headless tier. Import the Option family as well, whose elements are drawn.
43438
+ * A server sends the list empty, and the options are drawn once it hydrates. (property only)
42564
43439
  * - `selectedIndex`: Which option is chosen, as an index, or `-1` where none is.
42565
43440
  *
42566
43441
  * `<select>`'s own pair, and this control is what stands in for one. The
@@ -42663,10 +43538,8 @@ export type CustomElements = {
42663
43538
  * read as a dial rather than scanned as a list, which is what Time Picker's
42664
43539
  * wheels do with three of these.
42665
43540
  *
42666
- * A delta from the two boxes rather than `offsetTop`. An option is a slotted
42667
- * light DOM child, so its `offsetParent` is whatever is positioned above it,
42668
- * which is not this list and is not guaranteed to be anything: measuring both
42669
- * rects and moving by the difference needs no such assumption.
43541
+ * Measured by core's `centerInView`, or, for a list of `items`, by the
43542
+ * arithmetic, since the chosen option may not be drawn.
42670
43543
  * - `requestFilter(next: string) => boolean`: Requests a new filter, and returns whether the request went through.
42671
43544
  * - `requestValue(next: string) => boolean`: Requests a new value, and returns whether the change was applied.
42672
43545
  *
@@ -43107,7 +43980,8 @@ export type CustomElements = {
43107
43980
  * `name`, or its `label` if it has no name.
43108
43981
  *
43109
43982
  * All the markers in a map share one tab stop. The arrow keys move between
43110
- * them in the order they are written.
43983
+ * them in the order they are written. Taking away the marker that has focus
43984
+ * moves focus to the next one, or to the one before where it was the last.
43111
43985
  *
43112
43986
  * ## Attributes & Properties
43113
43987
  *
@@ -43646,8 +44520,20 @@ export type CustomElements = {
43646
44520
  *
43647
44521
  * - `(default)`: The element your renderer draws the map in, and the map's markers, routes, areas, positions, and points layers.
43648
44522
  * - `attribution`: The map credit, which most tile licenses require.
44523
+ * - `face-north-icon`: Replaces the compass needle. It inherits `--map-needle-turn`, so `rotate: var(--map-needle-turn)` keeps it pointing north.
43649
44524
  * - `footer`: Content below the map, such as a legend or a scale.
44525
+ * - `fullscreen-icon`: Replaces the glyph inside the fullscreen button.
43650
44526
  * - `header`: Content above the map, such as a title or a search field.
44527
+ * - `layers-icon`: Replaces the glyph inside the layers button.
44528
+ * - `pan-down-icon`: Replaces the glyph inside the pan down button.
44529
+ * - `pan-end-icon`: Replaces the glyph inside the button that pans toward the end of a line of text.
44530
+ * - `pan-start-icon`: Replaces the glyph inside the button that pans toward the start of a line of text.
44531
+ * - `pan-up-icon`: Replaces the glyph inside the pan up button.
44532
+ * - `rotate-left-icon`: Replaces the glyph inside the rotate left button.
44533
+ * - `rotate-right-icon`: Replaces the glyph inside the rotate right button.
44534
+ * - `tilt-icon`: Replaces the "3D" inside the 3D button.
44535
+ * - `zoom-in-icon`: Replaces the glyph inside the zoom-in button.
44536
+ * - `zoom-out-icon`: Replaces the glyph inside the zoom-out button.
43651
44537
  *
43652
44538
  * ## Methods
43653
44539
  *
@@ -43734,8 +44620,11 @@ export type CustomElements = {
43734
44620
  *
43735
44621
  * - `fullscreen`: The map fills the screen.
43736
44622
  * - `idle`: The user has been still long enough for the header and footer to fade.
44623
+ * - `layers-open`: The layers menu is open.
43737
44624
  * - `ready`: The map has been drawn whole, after `helix-map-ready`.
44625
+ * - `rotated`: The map is turned away from north, by `bearing`.
43738
44626
  * - `sharing`: The page keeps the plain wheel and one finger, with `gestures="cooperative"` or while a map with `gestures="activate"` waits to be pressed.
44627
+ * - `tilted`: The map is tilted by `pitch`, so it no longer looks straight down.
43739
44628
  * - `using`: A map with `gestures="activate"` has been pressed and has the gestures.
43740
44629
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
43741
44630
  */
@@ -44282,8 +45171,8 @@ export type CustomElements = {
44282
45171
  * onto your element after it upgrades causes a hydration mismatch.
44283
45172
  *
44284
45173
  * Group rows under a heading with `Menu.Section`, which is a `group` named by
44285
- * its heading. Between runs of rows, a `<helix-divider announced>` is a
44286
- * separator a screen reader announces.
45174
+ * its heading. Between runs of rows, a `<helix-divider>` is a separator a
45175
+ * screen reader announces.
44287
45176
  *
44288
45177
  * Keys: Enter, Space or Down Arrow on the trigger opens the menu on its first
44289
45178
  * row, and Up Arrow on its last. In the menu, Up and Down Arrow move between
@@ -45028,6 +45917,16 @@ export type CustomElements = {
45028
45917
  * - `label`: What happened, on the first line.
45029
45918
  * - `media`: The leading slot's box.
45030
45919
  * - `time`: When it happened, formatted for people to read.
45920
+ * - `time-day`: Format Date's `day`, forwarded for a time drawn as fields. An elapsed time draws none.
45921
+ * - `time-day-period`: Format Date's `day-period`, forwarded for a time drawn as fields. An elapsed time draws none.
45922
+ * - `time-era`: Format Date's `era`, forwarded for a time drawn as fields. An elapsed time draws none.
45923
+ * - `time-hour`: Format Date's `hour`, forwarded for a time drawn as fields. An elapsed time draws none.
45924
+ * - `time-minute`: Format Date's `minute`, forwarded for a time drawn as fields. An elapsed time draws none.
45925
+ * - `time-month`: Format Date's `month`, forwarded for a time drawn as fields. An elapsed time draws none.
45926
+ * - `time-second`: Format Date's `second`, forwarded for a time drawn as fields. An elapsed time draws none.
45927
+ * - `time-time-zone-name`: Format Date's `time-zone-name`, forwarded for a time drawn as fields. An elapsed time draws none.
45928
+ * - `time-weekday`: Format Date's `weekday`, forwarded for a time drawn as fields. An elapsed time draws none.
45929
+ * - `time-year`: Format Date's `year`, forwarded for a time drawn as fields. An elapsed time draws none.
45031
45930
  * - `trailing`: The column holding the time and the controls.
45032
45931
  *
45033
45932
  * ## CSS States
@@ -45074,11 +45973,22 @@ export type CustomElements = {
45074
45973
  * nothing more. While the feed is loading the button stays, so focus stays on
45075
45974
  * it, and it is `aria-disabled` and sends nothing.
45076
45975
  *
45976
+ * **`load-error` says a page could not be fetched**, such as "Could not load
45977
+ * notifications": it shows under the rows there are, in the `error` part, in
45978
+ * place of the empty and loading lines, and a screen reader hears it. Clear it
45979
+ * when you ask again.
45980
+ *
45077
45981
  * ## Attributes & Properties
45078
45982
  *
45079
45983
  * Component attributes and properties that can be applied to the element or by using JavaScript.
45080
45984
  *
45081
45985
  * - `label`: The feed's name, read by screen readers.
45986
+ * - `load-error`/`loadError`: What the feed says when a page of it could not be loaded, such as after a
45987
+ * request to a server fails. Empty, null or no attribute is no error, so
45988
+ * removing the attribute clears it.
45989
+ *
45990
+ * Set, it shows under the rows there are, in place of `empty-text` and
45991
+ * `loading-text`, and a screen reader hears it. Clear it when you ask again.
45082
45992
  * - `load-more`/`loadMore`: Whether to draw a button after the list that asks for the next page, by
45083
45993
  * sending `helix-load-more`. Take it off once there is nothing more.
45084
45994
  * - `load-more-label`/`loadMoreLabel`: The text of the `load-more` button.
@@ -45167,6 +46077,7 @@ export type CustomElements = {
45167
46077
  *
45168
46078
  * - `(default)`: The notifications.
45169
46079
  * - `empty`: Replaces the words of `empty-text` in the `empty` part, such as a picture and a line of your own. The live region still says `empty-text`.
46080
+ * - `error`: Replaces the words of `load-error` in the `error` part, such as a line with a retry button. The live region still says `load-error`.
45170
46081
  * - `footer`: Below the list, for a link to everything.
45171
46082
  * - `header`: Above the list, for a title and the mark-all control.
45172
46083
  * - `loading`: Replaces the words of `loading-text` in the `loading` part, such as a loader. The live region still says `loading-text`.
@@ -45207,10 +46118,11 @@ export type CustomElements = {
45207
46118
  * Custom selectors for styling elements within the component.
45208
46119
  *
45209
46120
  * - `empty`: Shown when there is nothing in the feed.
46121
+ * - `error`: Shown while `load-error` is set, under any rows there are, in place of the empty and loading lines.
45210
46122
  * - `footer`: The region below the list.
45211
46123
  * - `header`: The region above the list.
45212
46124
  * - `list`: The list itself.
45213
- * - `live`: A copy of the empty and loading messages, in a live region that screen readers announce when they change. Visually hidden in the styled tier.
46125
+ * - `live`: A copy of the empty, loading and error messages, in a live region that screen readers announce when they change. Visually hidden in the styled tier.
45214
46126
  * - `loading`: Shown while the feed is loading.
45215
46127
  * - `mark-all`: The control that marks everything read.
45216
46128
  * - `more`: The button after the list that asks for more, while `load-more` is set. It is `aria-disabled` while the feed is loading.
@@ -45219,7 +46131,8 @@ export type CustomElements = {
45219
46131
  *
45220
46132
  * These can be used to apply styling when a component is in a given state.
45221
46133
  *
45222
- * - `empty`: While the feed holds no notification and is not loading. Never on the server, which cannot count the rows.
46134
+ * - `empty`: While the feed holds no notification and is not loading, and `load-error` is not set. Never on the server, which cannot count the rows.
46135
+ * - `error`: While `load-error` is set.
45223
46136
  * - `loading`: While `loading` is set.
45224
46137
  * - `media`: While a notification in the list holds something in its media slot, so every row keeps that column.
45225
46138
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
@@ -46621,6 +47534,7 @@ export type CustomElements = {
46621
47534
  * - `control-listbox-loading`: The text shown while the options load.
46622
47535
  * - `control-listbox-search`: The region that holds the filter field.
46623
47536
  * - `control-listbox-search-field`: The filter field.
47537
+ * - `control-live`: The select's `live` part, the region a screen reader hears a choice made on the closed trigger from.
46624
47538
  * - `control-surface`: The floating panel.
46625
47539
  * - `control-trigger`: The closed control, which shows the chosen size.
46626
47540
  * - `control-value`: The chosen size inside the trigger.
@@ -47329,7 +48243,8 @@ export type CustomElements = {
47329
48243
  * `correction` sets how much of the code can be lost. At `H` a code can lose
47330
48244
  * thirty percent and still scan, so a mark in the center slot is safe. At `L`
47331
48245
  * the same mark makes the code unscannable. The default is `M`, and `H` when the
47332
- * `logo` slot is filled.
48246
+ * `logo` slot is filled. A code that holds a logo at a `correction` below `H`
48247
+ * warns once with the kind `unscannable-logo`.
47333
48248
  *
47334
48249
  * A higher level holds fewer characters, so a value that fits at `M` can be too
47335
48250
  * long once a logo raises the level to `H`. A value too long for the level
@@ -47339,7 +48254,8 @@ export type CustomElements = {
47339
48254
  * `toSvg()`, `toPng()` and `download()` give the drawn code as a file of its
47340
48255
  * own, in the colors it is drawn in, with a slotted image or SVG logo where
47341
48256
  * it sits, for a page that offers it to save or print, as Zag's download
47342
- * trigger does.
48257
+ * trigger does. `download()` saves an SVG for a name ending in `.svg`, and a
48258
+ * PNG for any other.
47343
48259
  *
47344
48260
  * ## Attributes & Properties
47345
48261
  *
@@ -47425,7 +48341,8 @@ export type CustomElements = {
47425
48341
  * - `toPng(size = 512) => Promise<Blob | null>`: The code as a PNG, `size` pixels square, drawn from `toSvg()`.
47426
48342
  *
47427
48343
  * `null` where no code is drawn.
47428
- * - `download(filename = 'qr-code.png', size = 512) => Promise<void>`: Saves the code as a PNG named `filename`, `size` pixels square.
48344
+ * - `download(filename = 'qr-code.png', size = 512) => Promise<void>`: Saves the code as a file named `filename`, `size` pixels square: an SVG
48345
+ * where the name ends in `.svg`, and a PNG otherwise.
47429
48346
  *
47430
48347
  * Call it from a press, since a browser lets a page start a download only
47431
48348
  * in answer to one. Does nothing where no code is drawn.
@@ -48359,12 +49276,6 @@ export type CustomElements = {
48359
49276
  * The across gets no dot at all rather than a shifted one. It is an axis and
48360
49277
  * not a series: it has a scale under the plot with its name at the end of it,
48361
49278
  * which is where a reader is told what it is.
48362
- * - `showsColumn(cell: number) => boolean`: Whether the series read from the cell at this place in a row is drawn,
48363
- * by its column's heading. The keys and the readout pass over one a
48364
- * legend hid.
48365
- *
48366
- * A column's heading is the cell's name in every row, so the first row
48367
- * answers for the column.
48368
49279
  * - `attributeChangedCallback(name: string, old: string | null, value: string | null) => void`: Called by the browser when an observed attribute changes. A new
48369
49280
  * `aria-label` asks for an update, because it names the plot.
48370
49281
  * - `showsSeries(name: string) => boolean`: Whether the series of this name is drawn, which it is unless a legend
@@ -48374,6 +49285,15 @@ export type CustomElements = {
48374
49285
  * thing the two share: see `SourceController.hide`. A series keeps its
48375
49286
  * palette slot while it is hidden, so the colors of the others do not move.
48376
49287
  * For a ring the names are its rows, the slices being the rows.
49288
+ * - `showsColumn(cell: number) => boolean`: Whether the series read from the cell at this place in a row is drawn,
49289
+ * by its column's heading. The keys and the readout pass over one a
49290
+ * legend hid.
49291
+ *
49292
+ * A column's heading is the cell's name in every row, so the first row
49293
+ * answers for the column.
49294
+ * - `columnName(cell: number) => string`: The heading of the column at this place in a row: a cell's name is its
49295
+ * column's heading, read from the first row that has a cell there, so a
49296
+ * short first row does not lose the heading. `''` where no row has one.
48377
49297
  *
48378
49298
  * ## CSS Custom Properties
48379
49299
  *
@@ -48594,18 +49514,48 @@ export type CustomElements = {
48594
49514
  * Set `valueContent` to draw the trigger's content from the chosen options,
48595
49515
  * and several chosen options are written as a list in the reader's language.
48596
49516
  *
48597
- * In the open list the arrow keys, Home, End, PageUp, PageDown and typed
48598
- * letters move the highlight, and Enter, Space or a click chooses it and
48599
- * closes the list. Tab closes the list and moves on. On the closed trigger,
48600
- * ArrowDown, Enter and Space open the list on the chosen option, ArrowUp opens
48601
- * it on the chosen or last option, Home and End open it on the first or last,
48602
- * and typed letters choose the option whose words start with them, as a native
48603
- * `<select>` does.
49517
+ * **Keyboard.** On the closed trigger:
49518
+ *
49519
+ * | Key | What it does |
49520
+ * |---|---|
49521
+ * | Down, Enter, Space | Opens the list on the chosen option, or the first. |
49522
+ * | Up | Opens the list on the chosen option, or the last. |
49523
+ * | Home, End | Opens the list on the first or the last option. |
49524
+ * | Left, Right | Chooses the option before or after the chosen one without opening, as React Aria's Select does, in either direction of text. |
49525
+ * | A letter or a word | Chooses the option whose words start with what you typed, as a native `<select>` does. With `multiple`, opens the list on it. |
49526
+ *
49527
+ * In the open list, which is a `Listbox`:
49528
+ *
49529
+ * | Key | What it does |
49530
+ * |---|---|
49531
+ * | Down, Up, Home, End, Page Down, Page Up | Moves the highlight. |
49532
+ * | A letter or a word | Moves the highlight to the next option whose words start with what you typed. |
49533
+ * | Enter, Space | Chooses the highlighted option and closes the list. With `multiple`, toggles it and leaves the list open. |
49534
+ * | Escape | Closes the list and puts focus back on the trigger. |
49535
+ * | Tab | Closes the list and moves on. |
49536
+ *
49537
+ * A choice made on the closed trigger is said aloud on Apple devices, where
49538
+ * VoiceOver does not read the trigger's new name.
49539
+ *
49540
+ * **ARIA.** The trigger is a `button` with `aria-haspopup="listbox"` and
49541
+ * `aria-expanded`, named by the label and then the chosen words, as a native
49542
+ * `<select>` is. The list is the listbox `Listbox` describes, named by the
49543
+ * label, or by `list-label` where there is none.
49544
+ *
49545
+ * Set `autocomplete` to let a browser's autofill choose, as a native `<select>`
49546
+ * with the same attribute would.
48604
49547
  *
48605
49548
  * ## Attributes & Properties
48606
49549
  *
48607
49550
  * Component attributes and properties that can be applied to the element or by using JavaScript.
48608
49551
  *
49552
+ * - `autocomplete`: What a browser's autofill may fill in, as a platform token such as
49553
+ * `country` or `cc-exp-month`, as on a native `<select>`.
49554
+ *
49555
+ * Set, the select keeps a hidden native `<select>` with the same options for
49556
+ * the browser to fill, as React Aria's `HiddenSelect` does, and takes the
49557
+ * option the browser picks, by its value or its words, as the value. Empty
49558
+ * draws no hidden select, and a browser fills nothing.
48609
49559
  * - `empty-text`/`emptyText`: The text shown when no options match the filter.
48610
49560
  * - `filterable`: Whether the list can be narrowed by typing.
48611
49561
  *
@@ -48872,6 +49822,7 @@ export type CustomElements = {
48872
49822
  * - `listbox-loading`: The text shown while the options load.
48873
49823
  * - `listbox-search`: The region that holds the filter field.
48874
49824
  * - `listbox-search-field`: The filter field.
49825
+ * - `live`: The region a screen reader announces a choice made on the closed trigger from, drawn once there is one to say. Visually hidden in the styled tier.
48875
49826
  * - `surface`: The floating panel.
48876
49827
  * - `trigger`: The closed control, which shows the chosen value.
48877
49828
  * - `value`: The chosen option's text inside the trigger.
@@ -49561,6 +50512,67 @@ export type CustomElements = {
49561
50512
  HelixHeadlessSparklineProps & BaseProps<HelixHeadlessSparkline> & BaseEvents<HelixHeadlessSparkline>
49562
50513
  >;
49563
50514
 
50515
+ /**
50516
+ * A `group` of the dial's menu, named by its label, as React Aria's menu
50517
+ * sections and Menu's groups are: a reader hears the name on entering the set,
50518
+ * and the arrow keys walk through every group's actions in order, from the
50519
+ * last action of one group to the first of the next.
50520
+ *
50521
+ * Put actions straight into the group, and the group straight into the dial.
50522
+ * Anything else slotted here is drawn and is not an action.
50523
+ *
50524
+ * ## Attributes & Properties
50525
+ *
50526
+ * Component attributes and properties that can be applied to the element or by using JavaScript.
50527
+ *
50528
+ * - `label`: The group's name, drawn above its actions and read by screen readers.
50529
+ * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
50530
+ *
50531
+ * **Named `whenSettled` because `settled` is taken four times over**, by
50532
+ * Image, Splitter and both color controls, none of them about transitions. A
50533
+ * base class takes the name every subclass then cannot use.
50534
+ *
50535
+ * **The state it reports cannot be watched, which is why this exists.** A
50536
+ * custom state is deliberately not in the DOM, so there is no
50537
+ * `MutationObserver` equivalent for `ElementInternals.states`. Await this
50538
+ * instead.
50539
+ *
50540
+ * Separate from `updateComplete`, which resolves in the microtask checkpoint
50541
+ * the suppression is still active in. That is the distinction `readyToMove`
50542
+ * in `@fusion.dev/helix-testing` is written around.
50543
+ *
50544
+ * It never resolves where `requestAnimationFrame` never fires, which is a
50545
+ * server, a hidden tab, and happy-dom. Callers that must not hang there race
50546
+ * it against a timeout, as the happy-dom harness's `readyToMove` does. The
50547
+ * browser harness's awaits it alone: a browser always runs the frame, and a
50548
+ * timer beside it was a bet on how long one takes, which a busy run lost. (property only) (readonly)
50549
+ *
50550
+ * ## Slots
50551
+ *
50552
+ * Areas where markup can be added to the component.
50553
+ *
50554
+ * - `(default)`: The group's actions.
50555
+ * - `label`: The group's name, for content richer than the `label` text.
50556
+ *
50557
+ * ## CSS Parts
50558
+ *
50559
+ * Custom selectors for styling elements within the component.
50560
+ *
50561
+ * - `group`: The set, which carries the `group` role.
50562
+ * - `label`: The group's name, drawn above its actions while there is one.
50563
+ *
50564
+ * ## CSS States
50565
+ *
50566
+ * These can be used to apply styling when a component is in a given state.
50567
+ *
50568
+ * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
50569
+ */
50570
+ "helix-headless-speed-dial-group": Partial<
50571
+ HelixHeadlessSpeedDialGroupProps &
50572
+ BaseProps<HelixHeadlessSpeedDialGroup> &
50573
+ BaseEvents<HelixHeadlessSpeedDialGroup>
50574
+ >;
50575
+
49564
50576
  /**
49565
50577
  * Each item is a command, so it has the `menuitem` role. A megamenu holds
49566
50578
  * destinations, so it is a disclosure of links. A speed dial holds actions,
@@ -49570,11 +50582,21 @@ export type CustomElements = {
49570
50582
  * `title` on an icon shows only on hover. Visible text is read, searched, and
49571
50583
  * translated like other text.
49572
50584
  *
50585
+ * `shortcut` gives the action's keyboard shortcut as a chord, such as `mod+s`,
50586
+ * the grammar Menu's rows use. The action carries it as `aria-keyshortcuts`
50587
+ * and draws it after the name in the platform's glyphs or words, `⌘S` on an
50588
+ * Apple keyboard and `Ctrl+S` elsewhere, as Menu draws its rows' shortcuts.
50589
+ * Put a `Kbd` in the `shortcut` slot to draw it as keys instead; the dial
50590
+ * imports no `Kbd` of its own. Showing a shortcut does not bind it.
50591
+ *
49573
50592
  * ## Attributes & Properties
49574
50593
  *
49575
50594
  * Component attributes and properties that can be applied to the element or by using JavaScript.
49576
50595
  *
49577
50596
  * - `disabled`: Whether the action is disabled, so it cannot be chosen.
50597
+ * - `shortcut`: The action's keyboard shortcut as a chord, such as `mod+s`, carried as
50598
+ * `aria-keyshortcuts` and drawn after the name. `mod` is Command on an Apple
50599
+ * keyboard and Control elsewhere. Showing a shortcut does not bind it.
49578
50600
  * - `value`: The action's value, sent in `helix-select` when the action is chosen.
49579
50601
  * - `active`: Whether the action has focus, which makes it the action the keyboard is on.
49580
50602
  *
@@ -49615,6 +50637,7 @@ export type CustomElements = {
49615
50637
  *
49616
50638
  * - `(default)`: The action's name.
49617
50639
  * - `icon`: The action's icon, the main way the action is recognized.
50640
+ * - `shortcut`: The action's keyboard shortcut, drawn after its name, such as a `Kbd`. It replaces the text drawn for `shortcut`, and is hidden from the name, which `aria-keyshortcuts` carries instead.
49618
50641
  *
49619
50642
  * ## Methods
49620
50643
  *
@@ -49632,6 +50655,7 @@ export type CustomElements = {
49632
50655
  * - `icon`: The box that holds the icon.
49633
50656
  * - `item`: The control for the action.
49634
50657
  * - `label`: The action's name, beside the icon.
50658
+ * - `shortcut`: The box after the name that holds the shortcut, shown while `shortcut` is set or something is in the `shortcut` slot.
49635
50659
  *
49636
50660
  * ## CSS States
49637
50661
  *
@@ -49666,12 +50690,47 @@ export type CustomElements = {
49666
50690
  * action whose name starts with it. The actions are one tab stop, and Tab
49667
50691
  * closes the dial and moves on.
49668
50692
  *
50693
+ * **Keyboard.** On the trigger, Enter, Space or a press opens the dial on its
50694
+ * first action. With the dial open:
50695
+ *
50696
+ * | Key | What it does |
50697
+ * |---|---|
50698
+ * | Down, Right | Moves to the next action, from the last back to the first. |
50699
+ * | Up, Left | Moves to the action before, from the first round to the last. |
50700
+ * | Home, End | Moves to the first or the last action. |
50701
+ * | A letter | Moves to the next action whose name starts with it. |
50702
+ * | Enter, Space | Chooses the action, and the dial closes. |
50703
+ * | Escape | Closes the dial and puts focus back on the trigger. |
50704
+ * | Tab | Closes the dial and moves on. |
50705
+ *
50706
+ * **Groups.** Put actions in `Speed Dial.Group`, named by its `label`, to set
50707
+ * them apart as Menu's sections do: each is a `group` of the menu, and the
50708
+ * arrow keys walk through every group's actions in order.
50709
+ *
50710
+ * **A trigger with its own action.** With `open-on="long-press"`, a press on
50711
+ * the trigger is the trigger's own, such as composing a message, and holding it
50712
+ * for half a second opens the dial, as React Aria's menu trigger does with
50713
+ * `trigger="longPress"`. Alt+Down or Alt+Up opens it from the keyboard, and
50714
+ * the trigger says so in its description, `long-press-label`, the drawn one
50715
+ * and a slotted one alike. A press that has opened the dial does not also do
50716
+ * the trigger's action.
50717
+ *
49669
50718
  * ## Attributes & Properties
49670
50719
  *
49671
50720
  * Component attributes and properties that can be applied to the element or by using JavaScript.
49672
50721
  *
49673
50722
  * - `label`: Accessible name for the trigger and the set of actions it opens.
50723
+ * - `long-press-label`/`longPressLabel`: The description the trigger gives under `open-on="long-press"`, saying how
50724
+ * its actions are reached.
50725
+ *
50726
+ * A slotted trigger is described by the dial, which carries the words as
50727
+ * its own label for that: a Helix button's inner control at once, and a
50728
+ * plain element of yours once a reader reaches it, after hydration, unless
50729
+ * you described or labeled it yourself.
49674
50730
  * - `offset`: Space between the trigger and the actions, in pixels.
50731
+ * - `open-on`/`openOn`: What opens the dial. `click` opens it on a press of the trigger. Under
50732
+ * `long-press`, a press is the trigger's own action, and the dial opens on a
50733
+ * press held for half a second, or on Alt+Down or Alt+Up.
49675
50734
  * - `placement`: The direction the actions open in. They move to another side if that side
49676
50735
  * does not fit.
49677
50736
  *
@@ -49772,8 +50831,9 @@ export type CustomElements = {
49772
50831
  * added at `firstUpdated` and is not in the server markup. Before it appears,
49773
50832
  * both dividers work on their own.
49774
50833
  *
49775
- * The divider has `role="separator"` and `aria-valuenow`, and `aria-controls`
49776
- * names the start pane. Drag it with a pointer or move it with the arrow keys,
50834
+ * The divider has `role="separator"` and `aria-valuenow`, with
50835
+ * `aria-valuetext` saying the start pane's share as a percentage in the
50836
+ * reader's locale, and `aria-controls` names the start pane. Drag it with a pointer or move it with the arrow keys,
49777
50837
  * press `Home` or `End` to move it to its bounds, and press `Enter` to collapse
49778
50838
  * the start pane and open it again. A drag in progress is tracked as a state, so both dividers a
49779
50839
  * corner moves stay lit for as long as they move.
@@ -49910,13 +50970,14 @@ export type CustomElements = {
49910
50970
  * - `helix-before-resize`: Fired before the divider settles, and only when the gesture moved it. A press that moved nothing, a drag that came back, an arrow key with no room left, and a corner that moved only the other divider do not fire it. Cancelable: canceling it leaves the position to you and keeps the rest of the gesture, so a collapse the gesture reached still fires `helix-before-collapse`, which you can also cancel. A dragged divider stays where it was dropped until you set your own `position`.
49911
50971
  * - `helix-collapse`: Fired after a pane shuts or reopens, with the side that is shut, or empty where both are open.
49912
50972
  * - `helix-resized`: Fired after the divider settles somewhere new, with the new position.
49913
- * - `input`: Fired each time a drag moves the divider, before it settles, as a range input does while it is dragged. Read `position` for where it is now.
50973
+ * - `input`: Fired each time the divider moves, as a range input does: on each step of a drag, and before `helix-resized` for a key, a double click or a corner. Read `position` for where it is now.
49914
50974
  *
49915
50975
  * ## Slots
49916
50976
  *
49917
50977
  * Areas where markup can be added to the component.
49918
50978
  *
49919
50979
  * - `end`: The pane after the divider.
50980
+ * - `handle`: A mark drawn at the middle of the divider, such as a grip icon. It takes no focus and no pointer of its own: a press on it is a press on the divider.
49920
50981
  * - `start`: The pane before the divider.
49921
50982
  *
49922
50983
  * ## Methods
@@ -49952,7 +51013,9 @@ export type CustomElements = {
49952
51013
  *
49953
51014
  * These can be used to apply styling when a component is in a given state.
49954
51015
  *
51016
+ * - `collapsed`: While a pane is shut. `data-collapsed` on the host says which.
49955
51017
  * - `dragging`: While the pointer or a corner holds the divider.
51018
+ * - `vertical`: While the panes are one above the other, whether `orientation` says so or `auto` turned them.
49956
51019
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
49957
51020
  */
49958
51021
  "helix-headless-splitter": Partial<
@@ -50601,7 +51664,9 @@ export type CustomElements = {
50601
51664
  * table with no `TableColumn` heads its columns with.
50602
51665
  *
50603
51666
  * The role is on the host so the cell stays a child of its row in the flat
50604
- * tree, which keeps the table structure intact.
51667
+ * tree, which keeps the table structure intact. In a `grid` table a value is
51668
+ * a `gridcell`, and the table gives the cell a `tabindex` so focus can rest on
51669
+ * it.
50605
51670
  *
50606
51671
  * ## Attributes & Properties
50607
51672
  *
@@ -50935,9 +52000,28 @@ export type CustomElements = {
50935
52000
  * 4. A chosen row takes `:state(selected)`, and a screen reader hears
50936
52001
  * `selected-label` ("2 selected") from a polite region.
50937
52002
  *
50938
- * Tab reaches each checkbox, and Space ticks it. For a grid a reader moves
50939
- * through with the arrow keys, with typeahead and range selection, use
50940
- * `DataTable`. To act on one row, put a link or a button in a cell.
52003
+ * Tab reaches each checkbox, and Space ticks it. To act on one row, put a
52004
+ * link or a button in a cell, or give the row an `href`.
52005
+ *
52006
+ * **A grid.** `grid` makes the table one tab stop that the arrow keys move
52007
+ * through cell by cell, the headings included, as React Aria's table is. The
52008
+ * table is then a `grid` and each value a `gridcell`, and the table gives
52009
+ * every cell a `tabindex` so focus can rest on it: set `grid` only where the
52010
+ * cells may carry one. For typeahead and range selection, use `DataTable`.
52011
+ *
52012
+ * | Key | What it does |
52013
+ * |---|---|
52014
+ * | Right, Left | Moves one cell along the row. Left moves on, on a right-to-left page. |
52015
+ * | Down, Up | Moves one row, the headings included. |
52016
+ * | Home, End | Moves to the first or the last cell of the row. |
52017
+ * | Control with Home or End | Moves to the first or the last cell of the table. |
52018
+ * | Page Down, Page Up | Moves by the rows that fit in view. |
52019
+ * | Enter, F2 | Moves into the cell's links and controls. Escape or F2 moves back to the cell, and Tab moves between the controls of one cell. |
52020
+ * | Enter on a cell of a row with `href` | Follows the row's link. |
52021
+ * | Enter, Space on a sortable heading | Sorts by the column. |
52022
+ * | Space on a row, Enter or Space on its checkbox cell | Selects the row, in a `selectable` table. |
52023
+ * | Control or Command with A | Selects every row, in a `selectable` table. |
52024
+ * | Tab | Leaves the table. |
50941
52025
  *
50942
52026
  * The CSS custom properties listed for this component are written by it and
50943
52027
  * read by the stylesheet that draws it. Do not set them. Each holds a number
@@ -50981,6 +52065,13 @@ export type CustomElements = {
50981
52065
  * is set.
50982
52066
  * - `default-sort`/`defaultSort`: The starting sort order, used until `sort` is set.
50983
52067
  * - `descending-label`/`descendingLabel`: The word for a descending sort, in `sorted-label`.
52068
+ * - `grid`: Makes the table a grid: one tab stop, and the arrow keys, Home, End and the
52069
+ * Page keys move focus between its cells, the headings included. Enter moves
52070
+ * into a cell's controls, and Tab leaves the table.
52071
+ *
52072
+ * Off by default, where the table is a static `table` and Tab reaches each
52073
+ * link and control in it. On, the table writes a `tabindex` onto each of its
52074
+ * cells, which is the one way a cell of your markup can take focus.
50984
52075
  * - `label`: Accessible name for the table.
50985
52076
  *
50986
52077
  * An `aria-label` or `aria-labelledby` on the host names the table too, and
@@ -51082,6 +52173,8 @@ export type CustomElements = {
51082
52173
  * - `checkbox-mark-dash`: Added to `checkbox-mark` while it draws the dash, which it keeps until its box is checked.
51083
52174
  * - `checkbox-mark-indeterminate`: Added to `checkbox-mark` while only some rows are selected.
51084
52175
  * - `empty`: The text shown when there are no rows.
52176
+ * - `grid-end`: An empty box after the rows, in a `grid` table. Tab focuses it on its way out of the table, so the key leaves from the end.
52177
+ * - `grid-start`: An empty box before the rows, in a `grid` table. Shift with Tab focuses it on its way out of the table.
51085
52178
  * - `head`: The row that holds the column headings. It has `display: contents`, so it takes no space of its own.
51086
52179
  * - `live`: A live region that repeats the empty and loading text, so screen readers announce it when it changes. Visually hidden in the styled tier.
51087
52180
  * - `loading`: The text shown while the rows are loading.
@@ -51112,7 +52205,8 @@ export type CustomElements = {
51112
52205
  * of the row's own, and Control, Command or Shift open it the way they open a
51113
52206
  * link. A drag that selects text follows nothing. A row in a table is not a
51114
52207
  * stop of its own, so put the same link in a cell, usually the row header,
51115
- * which is what the keyboard and a screen reader reach.
52208
+ * which is what the keyboard and a screen reader reach. In a `grid` table,
52209
+ * Enter on any cell of the row follows it as well.
51116
52210
  *
51117
52211
  * ## Attributes & Properties
51118
52212
  *
@@ -52741,6 +53835,7 @@ export type CustomElements = {
52741
53835
  *
52742
53836
  * These can be used to apply styling when a component is in a given state.
52743
53837
  *
53838
+ * - `blank`: While no time is chosen.
52744
53839
  * - `invalid`: While `invalid` is set or `feedback` says what is wrong.
52745
53840
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
52746
53841
  */
@@ -52961,7 +54056,8 @@ export type CustomElements = {
52961
54056
  *
52962
54057
  * **Each item runs its own timer.** A timer held by the region would restart
52963
54058
  * with each new message, and the last of three messages would stay for nine
52964
- * seconds.
54059
+ * seconds. It pauses while the pointer or focus is on the message, and while
54060
+ * the page is hidden, so a message is not spent in a background tab.
52965
54061
  *
52966
54062
  * **Each message is an `alertdialog` named by its words**, which is how a reader
52967
54063
  * who moves into the stack hears which message they are on. Give it a
@@ -53629,6 +54725,10 @@ export type CustomElements = {
53629
54725
  * focus counts as a control, including your own elements. A child that takes no
53630
54726
  * focus, such as a divider, is skipped. A menu is reached at its trigger.
53631
54727
  *
54728
+ * A Divider in the toolbar is a separator across the toolbar's axis, as React
54729
+ * Aria's is: vertical in a horizontal toolbar and horizontal in a vertical
54730
+ * one, without an `orientation` of its own.
54731
+ *
53632
54732
  * Controls inside a plain wrapper, such as a `Button Group`, are each a stop
53633
54733
  * of the toolbar's own, as React Aria's toolbar flattens a group: the arrows
53634
54734
  * walk through the group's buttons and on past it, and the group takes no tab
@@ -53637,6 +54737,28 @@ export type CustomElements = {
53637
54737
  * The arrows wrap from the last control to the first. Set `stop-at-ends` to
53638
54738
  * keep them at the ends, as Radix's `loop` set to false does.
53639
54739
  *
54740
+ * **Keyboard.** Tab enters the toolbar on the control that last had focus, the
54741
+ * first control at the start, and the next Tab leaves it.
54742
+ *
54743
+ * | Key | What it does |
54744
+ * |---|---|
54745
+ * | Right | Moves to the next control in a horizontal toolbar, from the last back to the first. |
54746
+ * | Left | Moves to the control before in a horizontal toolbar, from the first round to the last. |
54747
+ * | Down, Up | The same in a vertical toolbar. |
54748
+ * | Home, End | Moves to the first or the last control. |
54749
+ *
54750
+ * Left and Right swap on a right-to-left page, where the first control is on
54751
+ * the right. The arrows across the toolbar's axis are left to the control that
54752
+ * has focus, so a radio-style toggle group or a select answers them itself.
54753
+ * The toolbar is `role="toolbar"` with `aria-orientation`, named by `label`.
54754
+ *
54755
+ * The stop moves through a control's own `focusable` property where it has
54756
+ * one, as Button, Select and Toggle Group do. A control without one has
54757
+ * `tabindex` written on the element that takes focus: a native element
54758
+ * itself, or the control inside a custom element's open shadow root, so the
54759
+ * host keeps the markup you rendered. Only a custom element whose shadow root
54760
+ * is closed takes it on the host.
54761
+ *
53640
54762
  * A toggle group of pressed buttons, `selection-mode="multiple"`, is walked
53641
54763
  * through the same way, each toggle a stop on the toolbar's axis, as React
53642
54764
  * Aria's toolbar walks its toggle buttons. Another nested composite, such as a
@@ -53700,6 +54822,9 @@ export type CustomElements = {
53700
54822
  *
53701
54823
  * These can be used to apply styling when a component is in a given state.
53702
54824
  *
54825
+ * - `horizontal`: The controls run along a row, which is the default.
54826
+ * - `nested`: The toolbar is a group inside another toolbar, which owns the keys and the tab stop.
54827
+ * - `vertical`: The controls run down a column, under `orientation="vertical"`.
53703
54828
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
53704
54829
  */
53705
54830
  "helix-headless-toolbar": Partial<
@@ -55482,6 +56607,14 @@ export type CustomElements = {
55482
56607
  *
55483
56608
  * These can be used to apply styling when a component is in a given state.
55484
56609
  *
56610
+ * - `ended`: Playback reached the end, until it starts again or the source changes.
56611
+ * - `error`: The source could not be played, and `failure` shows.
56612
+ * - `fullscreen`: The player fills the screen.
56613
+ * - `idle`: The video plays and the user has been still for `idle-delay`, so the bar hides.
56614
+ * - `muted`: The sound is off.
56615
+ * - `paused`: Playback is paused, which is where every player starts.
56616
+ * - `playing`: Playback runs, waiting for data included.
56617
+ * - `waiting`: Playback stopped to wait for more data, and `loading` shows.
55485
56618
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
55486
56619
  */
55487
56620
  "helix-headless-video": Partial<
@@ -55980,6 +57113,23 @@ export type CustomElementsSolidJs = {
55980
57113
  * announcement beside it, move focus yourself, for example to the page's main
55981
57114
  * heading.
55982
57115
  *
57116
+ * **The announcement is a landmark region**, named by `label`, "Announcement"
57117
+ * unless you set it, so a screen reader lists it among the page's regions.
57118
+ * `hotkey`, F6 unless you set it, moves focus to the announcement's first
57119
+ * control, an action or the dismiss button, and pressed there moves focus
57120
+ * back to where it was, as React Aria's toast region does. An announcement
57121
+ * with no control leaves the key to the browser. When an announcement that
57122
+ * the key moved focus into is removed with focus still inside, focus goes
57123
+ * back to where it was before the key.
57124
+ *
57125
+ * **Set `queued` to show several announcements one at a time.** A queued
57126
+ * announcement waits while a queued announcement before it in the same parent
57127
+ * is still there, and shows when that one is removed: its message is then
57128
+ * read out, and its `duration` starts. While it waits it renders nothing,
57129
+ * is no region, and carries `:state(waiting)`. A server cannot see the
57130
+ * announcements beside it, so a served page shows every one until the script
57131
+ * runs.
57132
+ *
55983
57133
  * Set `duration` to dismiss it after a time. The clock stops while the pointer
55984
57134
  * or focus is on the announcement, and continues from what was left, so a
55985
57135
  * reader partway through is not cut off. It stops while the page is hidden too,
@@ -55997,6 +57147,19 @@ export type CustomElementsSolidJs = {
55997
57147
  *
55998
57148
  * Read once when the announcement is first rendered, as `Toast` reads its
55999
57149
  * own. The clock stops while the pointer or focus is on the announcement.
57150
+ * - `hotkey`: The key that moves focus to the announcement's first control, and back
57151
+ * to where it was, written as keys joined by `+`, such as `F6` or `Alt+A`.
57152
+ *
57153
+ * F6 by default, the key React Aria's regions answer to. Empty turns it
57154
+ * off. With several announcements, the first one in the page takes focus.
57155
+ * - `label`: The name of the announcement's region, which screen readers list among
57156
+ * the page's landmarks. Translate it with the rest of your interface.
57157
+ *
57158
+ * Empty leaves the announcement no region.
57159
+ * - `queued`: Whether the announcement waits its turn behind the queued announcements
57160
+ * before it in the same parent, showing when the last of them is removed.
57161
+ *
57162
+ * Off by default, so every announcement on a page shows at once.
56000
57163
  * - `tone`: The band's color.
56001
57164
  *
56002
57165
  * Paint only: unlike `Callout`, no value here draws a mark, changes the label,
@@ -56081,6 +57244,7 @@ export type CustomElementsSolidJs = {
56081
57244
  * These can be used to apply styling when a component is in a given state.
56082
57245
  *
56083
57246
  * - `paused`: The clock `duration` started is stopped, while the pointer or focus is on the announcement or the page is hidden.
57247
+ * - `waiting`: The announcement is `queued` behind another, and renders nothing until that one is removed.
56084
57248
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
56085
57249
  */
56086
57250
  "helix-headless-announcement": Partial<
@@ -56391,6 +57555,9 @@ export type CustomElementsSolidJs = {
56391
57555
  *
56392
57556
  * A column's heading is the cell's name in every row, so the first row
56393
57557
  * answers for the column.
57558
+ * - `columnName(cell: number) => string`: The heading of the column at this place in a row: a cell's name is its
57559
+ * column's heading, read from the first row that has a cell there, so a
57560
+ * short first row does not lose the heading. `''` where no row has one.
56394
57561
  *
56395
57562
  * ## CSS Parts
56396
57563
  *
@@ -56998,6 +58165,9 @@ export type CustomElementsSolidJs = {
56998
58165
  *
56999
58166
  * A column's heading is the cell's name in every row, so the first row
57000
58167
  * answers for the column.
58168
+ * - `columnName(cell: number) => string`: The heading of the column at this place in a row: a cell's name is its
58169
+ * column's heading, read from the first row that has a cell there, so a
58170
+ * short first row does not lose the heading. `''` where no row has one.
57001
58171
  *
57002
58172
  * ## CSS Custom Properties
57003
58173
  *
@@ -57060,13 +58230,33 @@ export type CustomElementsSolidJs = {
57060
58230
  >;
57061
58231
 
57062
58232
  /**
57063
- * Renders a `<figure>` holding the `<blockquote>` and a `<figcaption>` for the
58233
+ * Renders a figure holding the `<blockquote>` and a caption for the
57064
58234
  * attribution, the structure the HTML spec describes. The attribution sits
57065
58235
  * outside the quotation because it is about the quotation, and it names the
57066
58236
  * figure, so a screen reader reads the source as the figure's caption.
57067
58237
  *
57068
- * The figure keeps the browser's default margins on this tier. Set
57069
- * `::part(figure) { margin: 0 }` where they are unwanted.
58238
+ * **The figure is a `<div role="figure">`**, so the headless tier draws no
58239
+ * space around the quotation. A `<figure>` takes a 40px indent and a line of
58240
+ * space above and below from the browser's own sheet, which every page had to
58241
+ * reset. The `<blockquote>` keeps its own margins, as a bare one does. A
58242
+ * screen reader meets the same figure, named by its caption.
58243
+ *
58244
+ * **A figure only while there is an attribution.** With nothing in the caption
58245
+ * the figure has no name and nothing to say, so the role and its name are
58246
+ * dropped and a reader meets the quotation alone. A server cannot see what is
58247
+ * slotted, so it serves the figure, and the client drops it after hydration;
58248
+ * an `attribution` written as words is served exactly.
58249
+ *
58250
+ * **Quotation marks follow the language**, under `marks`. The opening mark is
58251
+ * the one the browser sets for a `<q>` in the element's language, „ under
58252
+ * `lang="de"` and « under `lang="fr"`, and a `Quote` inside the passage takes
58253
+ * the inner marks. The mark is drawn, not read: a screen reader hears the
58254
+ * passage. A passage under `marks` that starts with a mark typed into the text
58255
+ * would show two, and warns once, with the runtime kind `typed-marks`.
58256
+ *
58257
+ * **`cite` is the source's URL**, which the browser keeps and does not show.
58258
+ * Words in it, such as the author's name, warn once, with the runtime kind
58259
+ * `cite-not-url`.
57070
58260
  *
57071
58261
  * For a quotation inside a sentence, use `Quote`.
57072
58262
  *
@@ -57074,7 +58264,16 @@ export type CustomElementsSolidJs = {
57074
58264
  *
57075
58265
  * Component attributes and properties that can be applied to the element or by using JavaScript.
57076
58266
  *
57077
- * - `cite`: The URL of the source the passage came from.
58267
+ * - `attribution`: Who said it, and where, as words, such as "Maria Lopez, operations
58268
+ * manager". The `attribution` slot replaces them, for markup such as a link.
58269
+ *
58270
+ * Words are served with the figure they name, where a server cannot see a
58271
+ * slotted attribution.
58272
+ * - `cite`: The URL of the source the passage came from. Who said it goes in
58273
+ * `attribution`: a `cite` with words in it warns once, with the runtime kind
58274
+ * `cite-not-url`.
58275
+ * - `marks`: Whether to draw an opening quotation mark before the passage, in the
58276
+ * element's language. Leave the marks out of the text.
57078
58277
  * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
57079
58278
  *
57080
58279
  * **Named `whenSettled` because `settled` is taken four times over**, by
@@ -57101,15 +58300,15 @@ export type CustomElementsSolidJs = {
57101
58300
  * Areas where markup can be added to the component.
57102
58301
  *
57103
58302
  * - `(default)`: The quoted passage.
57104
- * - `attribution`: Who said it, and where.
58303
+ * - `attribution`: Who said it, and where. Replaces the words of `attribution`.
57105
58304
  *
57106
58305
  * ## CSS Parts
57107
58306
  *
57108
58307
  * Custom selectors for styling elements within the component.
57109
58308
  *
57110
- * - `attribution`: The `<figcaption>` carrying the source.
58309
+ * - `attribution`: The caption carrying the source.
57111
58310
  * - `blockquote`: The quotation.
57112
- * - `figure`: The `<figure>` holding the quotation and its attribution.
58311
+ * - `figure`: The figure holding the quotation and its attribution, a `<div>` with `role="figure"` while the attribution has words.
57113
58312
  *
57114
58313
  * ## CSS States
57115
58314
  *
@@ -57320,12 +58519,50 @@ export type CustomElementsSolidJs = {
57320
58519
  * controls, and a development build warns once with the kind `missing-name`.
57321
58520
  *
57322
58521
  * The group does not manage focus, so each button keeps its own tab stop. For
57323
- * one tab stop with arrow keys between the buttons, the APG toolbar pattern,
57324
- * use Toolbar.
58522
+ * one tab stop with arrow keys between a mix of controls, the APG toolbar
58523
+ * pattern, use Toolbar.
57325
58524
  *
57326
58525
  * Buttons are slotted, so they stay your own elements and keep their own
57327
58526
  * appearance and size.
57328
58527
  *
58528
+ * **Buttons that stay pressed.** With `selection-mode`, each button with a
58529
+ * `value` is a toggle button: a press presses or releases it, and it says so
58530
+ * with `aria-pressed`. `single` keeps one pressed at a time, and a press on the
58531
+ * pressed one releases it. `multiple` lets any number be pressed. `value` is
58532
+ * the pressed values, comma separated. A press sends a cancelable
58533
+ * `helix-before-change` with the value it would leave, then `change`.
58534
+ *
58535
+ * The pressed state is written on the control inside each button's shadow
58536
+ * root, so the markup you rendered is never changed and a framework hydrating
58537
+ * it sees what its server sent. That is also why only Helix buttons are
58538
+ * toggles: a native `<button>` or a button without a `value` stays a plain
58539
+ * action button in the group, and a native one without its own
58540
+ * `aria-pressed` warns once, with the runtime kind `untold-toggle`. The inner
58541
+ * control also carries
58542
+ * `--button-group-pressed`, `1` or `0`, for a `::part(button)` rule of yours.
58543
+ *
58544
+ * Use Toggle Group instead for a choice that belongs in a form, or one where
58545
+ * the arrow keys choose as they move: it is a `radiogroup` of options with a
58546
+ * form value, `required` and validation. A Button Group in a selection mode is
58547
+ * a set of actions that stay on, such as bold and italic, or a view that a
58548
+ * press switches, and it submits nothing.
58549
+ *
58550
+ * **Keyboard.** In a selection mode the group is one tab stop: the button
58551
+ * focus was last on, then the first pressed one, then the first one.
58552
+ *
58553
+ * | Key | What it does |
58554
+ * |---|---|
58555
+ * | Right, Down | Moves to the next button, from the last back to the first. |
58556
+ * | Left, Up | Moves to the button before, from the first round to the last. |
58557
+ * | Home, End | Moves to the first or the last button. |
58558
+ * | Space, Enter | Presses or releases the focused button. |
58559
+ *
58560
+ * Left and Right swap on a right-to-left page, and a disabled button is
58561
+ * passed over. In a selection mode the group is a `toolbar`, with
58562
+ * `aria-orientation` under `orientation="vertical"`. Inside a toolbar it stays
58563
+ * a named `group`, and the toolbar's own arrow keys walk its buttons, so a
58564
+ * reader meets one toolbar.
58565
+ *
57329
58566
  * ## Attributes & Properties
57330
58567
  *
57331
58568
  * Component attributes and properties that can be applied to the element or by using JavaScript.
@@ -57351,6 +58588,16 @@ export type CustomElementsSolidJs = {
57351
58588
  * buttons sharing edges as one shape, and a wrapped row carries the corners of
57352
58589
  * a first row into a second. Stacked, the same three keep one shape and one
57353
58590
  * column.
58591
+ * - `selection-mode`/`selectionMode`: Whether the buttons stay pressed: `single` keeps one pressed at a time and
58592
+ * `multiple` any number. Unset, they are action buttons, each its own tab
58593
+ * stop, as before.
58594
+ *
58595
+ * Optional, so the attribute is absent until a consumer writes it.
58596
+ * - `value`: The values of the pressed buttons, comma separated, in a selection mode.
58597
+ * A button's own `value` names it, so a value holds no comma.
58598
+ *
58599
+ * The attribute is the seed, and a press changes the property, which does
58600
+ * not reflect, as a native control's `value` does not.
57354
58601
  * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
57355
58602
  *
57356
58603
  * **Named `whenSettled` because `settled` is taken four times over**, by
@@ -57372,12 +58619,25 @@ export type CustomElementsSolidJs = {
57372
58619
  * browser harness's awaits it alone: a browser always runs the frame, and a
57373
58620
  * timer beside it was a bet on how long one takes, which a busy run lost. (property only) (readonly)
57374
58621
  *
58622
+ * ## Events
58623
+ *
58624
+ * Events that will be emitted by the component.
58625
+ *
58626
+ * - `change`: Fired after a press changes `value`, in a selection mode.
58627
+ * - `helix-before-change`: Fired before a press changes `value`, with the value it would leave in `detail.value`. Cancelable: call `preventDefault()` to keep the buttons as they are.
58628
+ *
57375
58629
  * ## Slots
57376
58630
  *
57377
58631
  * Areas where markup can be added to the component.
57378
58632
  *
57379
58633
  * - `(default)`: The buttons in the group.
57380
58634
  *
58635
+ * ## CSS Custom Properties
58636
+ *
58637
+ * CSS variables available for styling the component.
58638
+ *
58639
+ * - `--button-group-pressed`: Written on the control inside each toggle button of a group with `selection-mode`: `1` while it is pressed and `0` while it is not. Read it in a `::part(button)` rule to draw the pressed look.
58640
+ *
57381
58641
  * ## CSS States
57382
58642
  *
57383
58643
  * These can be used to apply styling when a component is in a given state.
@@ -58053,20 +59313,34 @@ export type CustomElementsSolidJs = {
58053
59313
  * keep every card in place, such as on a published board. Set `readonly` on one
58054
59314
  * card or connection to keep only that one in place.
58055
59315
  *
59316
+ * Set `snap` to a length in the document's units, such as `32`, and a card
59317
+ * that is moved or resized lands on a multiple of it. Carrying a card, a
59318
+ * corner, a connection, or the selection box near the edge of the board moves
59319
+ * the board under it, so a card can be taken to a place off screen in one
59320
+ * drag. A connection let go within 20 pixels of a card arrives at it. A
59321
+ * double click on the empty board zooms in about that point, and Shift with a
59322
+ * double click zooms out.
59323
+ *
58056
59324
  * Keyboard behavior:
58057
59325
  * - One card holds the board's tab stop.
58058
59326
  * - The arrow keys move through the cards in reading order. The card you land
58059
59327
  * on scrolls into view, and its connections are announced with it.
58060
- * - Shift with an arrow key moves the card.
59328
+ * - Shift with an arrow key moves the card: by 16 units, or to the next
59329
+ * multiple of `snap` where it is set. Alt with an arrow key resizes it from
59330
+ * its bottom right corner the same way.
58061
59331
  * - The connections leaving a card are stops of their own, straight after it.
58062
59332
  * Enter on one moves to the card it arrives at.
59333
+ * - What a key changes that a reader cannot see is said: where a card moved
59334
+ * to, its new size, how many cards are selected, and the zoom. A selected
59335
+ * card or connection says so when a reader arrives on it.
58063
59336
  *
58064
59337
  * Every drag also works with clicks, as WCAG 2.5.7 requires for a pointer that
58065
59338
  * cannot hold a button down. Click a selected card's move handle, a corner, a
58066
59339
  * card's connection point, or the end of a selected connection to pick it up.
58067
59340
  * It follows the pointer with no button held, and the next click puts it down
58068
59341
  * where a drag would have. On touch, the next tap sets where it lands. Escape,
58069
- * or a press outside the board, puts it back.
59342
+ * or a press outside the board, puts it back. So a finger connects two cards
59343
+ * with three taps: the card, one of its points, and the card to connect to.
58070
59344
  *
58071
59345
  * Connecting and removing dispatch requests, and your code applies them:
58072
59346
  * - Drawing from a card's handle to another card, or pressing C on one card and
@@ -58111,6 +59385,12 @@ export type CustomElementsSolidJs = {
58111
59385
  *
58112
59386
  * The list is joined the way the page's language joins one, "Second and
58113
59387
  * Third", rather than with a comma this component chose.
59388
+ * - `moved-label`/`movedLabel`: What screen readers hear after a key moves a card, with `{name}` for the
59389
+ * card and `{x}` and `{y}` for where it now is, in the document's units.
59390
+ *
59391
+ * **A move a reader cannot see has to be said.** Shift with an arrow moved
59392
+ * the card and said nothing, so a reader moving one by keys could not tell
59393
+ * whether it had moved, or how far.
58114
59394
  * - `order`: The order the arrow keys and screen readers move through the cards:
58115
59395
  * `spatial` or `edges`.
58116
59396
  *
@@ -58136,6 +59416,9 @@ export type CustomElementsSolidJs = {
58136
59416
  * walk the cards.
58137
59417
  * - `reconnecting-label`/`reconnectingLabel`: The text announced when a connection's end is picked up, with `{from}` and
58138
59418
  * `{to}`.
59419
+ * - `resized-label`/`resizedLabel`: What screen readers hear after a key resizes a card, with `{name}` for the
59420
+ * card and `{width}` and `{height}` for its new size, in the document's
59421
+ * units.
58139
59422
  * - `selected`: The names of the selected cards and connections, comma separated. Empty
58140
59423
  * when nothing is selected.
58141
59424
  *
@@ -58155,6 +59438,26 @@ export type CustomElementsSolidJs = {
58155
59438
  * on its board across cards and connections both, and may not hold a comma.
58156
59439
  *
58157
59440
  * Written to select from outside, and read to act on the selection.
59441
+ * - `selected-label`/`selectedLabel`: What a selected card or connection adds to what screen readers hear on
59442
+ * it, before its tone and its connections. Empty adds nothing.
59443
+ *
59444
+ * A card is an article and a connection a button, and neither has a selected
59445
+ * state for `aria-selected` to carry, so the state is said in words.
59446
+ * - `selection-label`/`selectionLabel`: What screen readers hear after the selection grows or shrinks, with
59447
+ * `{count}` for how many cards and connections are selected: by Space, a
59448
+ * click with Shift, Command or Control, Command or Control with A, a box
59449
+ * drawn across the board, or Escape.
59450
+ *
59451
+ * A selection of one made by arriving on a card or clicking it is not said,
59452
+ * since the card is.
59453
+ * - `snap`: Snaps the cards a reader moves or resizes to a multiple of this many of the
59454
+ * document's units, such as `32` to land on the lines `grid` draws.
59455
+ *
59456
+ * **A drag lets go on the nearest line and a key goes to the next one.**
59457
+ * Shift with an arrow moves a card to the next line that way, rather than
59458
+ * by its step of 16, and Alt with an arrow moves its bottom right corner
59459
+ * the same way. A group moves with what it carries, so a card inside one
59460
+ * keeps its place in it. Absent, cards land where they are let go.
58158
59461
  * - `stopped-label`/`stoppedLabel`: The text announced when a connection is stopped before it is requested.
58159
59462
  * - `tone-labels`/`toneLabels`: What each tone means on this board, in words read out with the cards and
58160
59463
  * connections in it, such as `{"danger": "Blocked", "success": "Done"}`.
@@ -58164,6 +59467,8 @@ export type CustomElementsSolidJs = {
58164
59467
  * red is "blocked" on one board and "urgent" on the next. A reader who can
58165
59468
  * see the board is told by the color; this is how a reader who cannot is
58166
59469
  * told the same. A tone left out is not read.
59470
+ * - `zoomed-label`/`zoomedLabel`: What screen readers hear after a zoom button or key, with `{zoom}` for the
59471
+ * zoom as a percentage, written the way the page's language writes one.
58167
59472
  * - `activate-hint-label`/`activateHintLabel`: The hint shown when a surface waiting to be pressed is scrolled or
58168
59473
  * swiped over, with `gestures="activate"`. Absent is the family's own.
58169
59474
  * - `controls`: Which controls to show, as a list such as `pan zoom fullscreen`, or
@@ -58310,7 +59615,14 @@ export type CustomElementsSolidJs = {
58310
59615
  * - `(default)`: The board's `helix-canvas-node` and `helix-canvas-edge` elements, drawn on the plane.
58311
59616
  * - `empty`: Content shown when the document has no nodes.
58312
59617
  * - `footer`: Content below the board.
59618
+ * - `fullscreen-icon`: Replaces the glyph inside the fullscreen button.
58313
59619
  * - `header`: Content above the board.
59620
+ * - `pan-down-icon`: Replaces the glyph inside the pan down button.
59621
+ * - `pan-end-icon`: Replaces the glyph inside the button that pans toward the end of a line of text.
59622
+ * - `pan-start-icon`: Replaces the glyph inside the button that pans toward the start of a line of text.
59623
+ * - `pan-up-icon`: Replaces the glyph inside the pan up button.
59624
+ * - `zoom-in-icon`: Replaces the glyph inside the zoom-in button.
59625
+ * - `zoom-out-icon`: Replaces the glyph inside the zoom-out button.
58314
59626
  *
58315
59627
  * ## Methods
58316
59628
  *
@@ -59877,15 +61189,17 @@ export type CustomElementsSolidJs = {
59877
61189
  * the button is drawn only while the cap hides something, measured as the
59878
61190
  * block lays out. Not for a diff, whose files each scroll on their own.
59879
61191
  * - `expand-label`/`expandLabel`: The expand button's words while the cap hides lines.
59880
- * - `label`: The block's name, usually a file name or a language.
61192
+ * - `label`: The block's name, usually a file name, drawn in the header.
59881
61193
  *
59882
- * In a diff, each file is named from the patch, and this names a patch that
59883
- * carries no name of its own.
61194
+ * Absent, the block is named by `language` where there is one. In a diff,
61195
+ * each file is named from the patch, and this names a patch that carries no
61196
+ * name of its own.
59884
61197
  * - `language`: The language the code is written in, such as `ts` or `css`, handed to
59885
61198
  * `highlight` as its second argument.
59886
61199
  *
59887
- * Absent hands it an empty string. It draws nothing of its own: the block's
59888
- * name is `label`.
61200
+ * A block with no `label` is named by it, in the header and on the copy
61201
+ * button, as a docs site names a snippet by its language. Absent hands
61202
+ * `highlight` an empty string and names nothing.
59889
61203
  * - `line-numbers`/`lineNumbers`: Whether the lines are numbered in a gutter beside the code.
59890
61204
  *
59891
61205
  * The numbers are hidden from the accessibility tree and are not part of a
@@ -59995,7 +61309,7 @@ export type CustomElementsSolidJs = {
59995
61309
  * - `gutter`: The line numbers beside the code, shown when `line-numbers` is set.
59996
61310
  * - `header`: The bar that holds the name and the copy button, shown when there is a name.
59997
61311
  * - `hunk`: In a diff, a `@@` line saying where the lines under it are.
59998
- * - `label`: The file name or language, where one is given.
61312
+ * - `label`: The block's name: its `label`, or its `language` where it has no label.
59999
61313
  * - `marker`: In a diff, the `+`, `-`, or space that starts a line.
60000
61314
  * - `new`: In a split diff, the new version's `<pre>`.
60001
61315
  * - `number`: In a diff, a line number.
@@ -60799,13 +62113,33 @@ export type CustomElementsSolidJs = {
60799
62113
  * reopened combobox starts from the whole list.
60800
62114
  *
60801
62115
  * Focus stays in the text field. The arrow keys move through the list with the
60802
- * listbox's public `navigate` method. `role="combobox"` is on the input itself.
60803
- * ArrowDown and ArrowUp open the list on the chosen option, and Enter chooses
60804
- * the highlighted one. As typing narrows the list, a screen reader hears how
60805
- * many options are left, such as "3 results". Space, Home, End and letters edit the text, and Enter in
60806
- * a closed field is left to the form. Emptying the field and leaving it clears
60807
- * a single choice; Escape puts the chosen words back, and a second Escape on
60808
- * the closed field clears the choice.
62116
+ * listbox's public `navigate` method. As typing narrows the list, a screen
62117
+ * reader hears how many options are left, such as "3 results". Emptying the
62118
+ * field and leaving it clears a single choice.
62119
+ *
62120
+ * **Keyboard.**
62121
+ *
62122
+ * | Key | What it does |
62123
+ * |---|---|
62124
+ * | Down, Up | On a closed field, opens the list on the chosen option, or the first or the last. In the open list, moves the highlight, round from the last option to the first. |
62125
+ * | Page Down, Page Up | In the open list, moves the highlight by as many options as the list shows at once. |
62126
+ * | Enter | Chooses the highlighted option. With nothing left in the list, creates what was typed with `creatable`, or takes it with `allows-custom-value`. On a closed field, submits the form. |
62127
+ * | Escape | Closes the list and puts the chosen words back. On a closed field, a second Escape clears a single choice. |
62128
+ * | Tab | Closes the list and moves on. |
62129
+ * | Backspace | With `multiple`, on an empty field, removes the last tag. |
62130
+ * | Space, Home, End, letters | Edit the text. |
62131
+ *
62132
+ * **ARIA.** The input is the `combobox`, named by the label, with
62133
+ * `aria-expanded`, `aria-controls` naming the list, `aria-autocomplete`
62134
+ * (`both` with `suggest`, `list` otherwise) and `aria-activedescendant` on
62135
+ * the highlighted option. The list is the listbox `Listbox` describes.
62136
+ *
62137
+ * On Apple devices, where VoiceOver does not read the option the field points
62138
+ * to, the field says it in a live region as the highlight moves, says how many
62139
+ * options there are as the list opens, and says a choice once it is made, as
62140
+ * React Aria's combobox does there.
62141
+ *
62142
+ * Set `autocomplete` to let a browser's autofill choose an option.
60809
62143
  *
60810
62144
  * With `multiple`, each chosen option is a tag in the field with its own remove
60811
62145
  * control. The panel stays open and the filter clears after each choice, so the
@@ -60828,12 +62162,19 @@ export type CustomElementsSolidJs = {
60828
62162
  * leaves the field or presses Enter with nothing highlighted, and text that
60829
62163
  * names an option takes that option. Unlike `creatable`, no event asks
60830
62164
  * first and no option is expected to be added: the value is the text.
60831
- * - `autocomplete`: What the browser may autofill in the text field, as a platform token.
62165
+ * - `autocomplete`: What the browser may autofill, as a platform token such as `country`.
60832
62166
  *
60833
62167
  * **Defaults to `off`, which is not the platform's default and is the
60834
62168
  * point.** The field filters a list rather than collecting a value, so a
60835
62169
  * browser offering to fill it with a saved address is competing for the same
60836
62170
  * keystrokes as the listbox. A consumer who wants autofill can still ask.
62171
+ *
62172
+ * Set, a combobox whose answer is one of its options keeps a hidden native
62173
+ * `<select>` with the same options for the browser to fill, as React Aria's
62174
+ * combobox and Select do, and the option the browser picks, by its value or
62175
+ * its words, becomes the value. The text field itself stays `off`, so the
62176
+ * browser fills the answer and not the filter. With `allows-custom-value`
62177
+ * the token goes on the text field, whose words are the answer.
60837
62178
  * - `creatable`: Whether the user can add a value that is not in the list.
60838
62179
  *
60839
62180
  * The row appears while what is typed matches no option's words exactly, so
@@ -60852,8 +62193,9 @@ export type CustomElementsSolidJs = {
60852
62193
  * every keystroke. See Listbox's `filter-delay`.
60853
62194
  * - `list-label`/`listLabel`: The list's name, read by screen readers. The list has no visible name.
60854
62195
  * - `load-error`/`loadError`: What the list says when its options could not be loaded, such as after a
60855
- * request to a server fails. Empty is no error. Passed to the list, which
60856
- * shows it under any options there are and tells screen readers.
62196
+ * request to a server fails. Empty, null or no attribute is no error, so
62197
+ * removing the attribute clears it. Passed to the list, which shows it
62198
+ * under any options there are and tells screen readers.
60857
62199
  * - `loading`: Whether the options are still loading.
60858
62200
  *
60859
62201
  * Passed straight to the list, which is where the rows are and so where the
@@ -60897,6 +62239,8 @@ export type CustomElementsSolidJs = {
60897
62239
  * - `results-label`/`resultsLabel`: What a screen reader hears when typing leaves any other number of
60898
62240
  * options. `{count}` is the count, and `Intl.PluralRules` picks between the
60899
62241
  * two.
62242
+ * - `selected-label`/`selectedLabel`: What VoiceOver hears for a chosen option, as the highlight reaches it and
62243
+ * once it is chosen, on Apple devices. `{name}` is the option's words.
60900
62244
  * - `suggest`: Whether the field completes the word as the user types.
60901
62245
  *
60902
62246
  * `suggest` rather than `autocomplete`, which is a real HTML attribute this
@@ -61117,6 +62461,7 @@ export type CustomElementsSolidJs = {
61117
62461
  * - `listbox-loading`: Shown while the options are loading.
61118
62462
  * - `listbox-search`: The region holding the field that narrows the list.
61119
62463
  * - `listbox-search-field`: The filter field inside that region.
62464
+ * - `live`: The region VoiceOver hears the highlight, the count and a choice from on Apple devices, drawn once there is one to say. Visually hidden in the styled tier.
61120
62465
  * - `rest`: The count of choices held beyond `max-tags`. A `<button>` with `expandable`, a `<span>` without it.
61121
62466
  * - `surface`: The floating panel.
61122
62467
  * - `tag`: One chosen option.
@@ -61132,8 +62477,10 @@ export type CustomElementsSolidJs = {
61132
62477
  *
61133
62478
  * These can be used to apply styling when a component is in a given state.
61134
62479
  *
62480
+ * - `blank`: While nothing is chosen.
61135
62481
  * - `error`: While `load-error` is set.
61136
62482
  * - `invalid`: The control has an error to show, from the browser's validation or from your `feedback`.
62483
+ * - `loading`: While `loading` is set.
61137
62484
  * - `no-results`: What was typed hid every option of a list that has some.
61138
62485
  * - `open`: While the list is open.
61139
62486
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
@@ -61182,8 +62529,9 @@ export type CustomElementsSolidJs = {
61182
62529
  * with: one key, said once.
61183
62530
  * - `label`: Accessible name for the overlay, which has no visible heading.
61184
62531
  * - `load-error`/`loadError`: What the list says when its commands could not be loaded, such as after a
61185
- * request to a server fails. Empty is no error. Passed to the list, which
61186
- * shows it under any commands there are and tells screen readers.
62532
+ * request to a server fails. Empty, null or no attribute is no error, so
62533
+ * removing the attribute clears it. Passed to the list, which shows it
62534
+ * under any commands there are and tells screen readers.
61187
62535
  * - `loading`: Whether the commands are still loading, for a palette that asks a server
61188
62536
  * for them as the user types.
61189
62537
  *
@@ -62783,6 +64131,7 @@ export type CustomElementsSolidJs = {
62783
64131
  *
62784
64132
  * Custom selectors for styling elements within the component.
62785
64133
  *
64134
+ * - `actions`: The box after the value inside its `<dd>`, holding the `actions` slot.
62786
64135
  * - `label`: The `<dt>`, holding the label.
62787
64136
  * - `value`: The `<dd>`, holding the value.
62788
64137
  *
@@ -62790,6 +64139,7 @@ export type CustomElementsSolidJs = {
62790
64139
  *
62791
64140
  * These can be used to apply styling when a component is in a given state.
62792
64141
  *
64142
+ * - `several`: The values are several `<dd>` elements of your own, so the item draws no `value` part.
62793
64143
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
62794
64144
  */
62795
64145
  "helix-headless-description-list-item": Partial<
@@ -63084,30 +64434,42 @@ export type CustomElementsSolidJs = {
63084
64434
  * rendered element. The semantics are then in the server-rendered markup, with
63085
64435
  * no attribute written by script after the element connects.
63086
64436
  *
63087
- * Set `announced` for a line that divides one thing from another, and it is
63088
- * read as a separator, named by any content set into it.
64437
+ * **The line is a separator**, as `<hr>` is, and as Radix Separator, React
64438
+ * Aria Separator, and Web Awesome's divider are. It is named by any content
64439
+ * set into it, so a screen reader says "Or, separator" where you wrote "Or" on
64440
+ * the line. Set `decorative` on a rule that separates nothing, such as one
64441
+ * under a heading or between the facts of a byline, and it leaves the
64442
+ * accessibility tree.
64443
+ *
64444
+ * Use `orientation="vertical"` between items on one line. A vertical divider
64445
+ * stretches to fit its flex parent and sets no height of its own.
63089
64446
  *
63090
- * Use `orientation="vertical"` between items on one line, such as inside a
63091
- * toolbar. A vertical divider stretches to fit its flex parent and sets no
63092
- * height of its own.
64447
+ * **Inside a toolbar it runs across the toolbar** without being told: vertical
64448
+ * in a horizontal toolbar and horizontal in a vertical one, with
64449
+ * `aria-orientation` to match, as React Aria's separator does inside a
64450
+ * toolbar. Inside means a child of Toolbar or of the page's own
64451
+ * `role="toolbar"`. An `orientation` you write still wins. A server cannot see
64452
+ * the toolbar, so the turn arrives with hydration, inside the shadow root.
63093
64453
  *
63094
64454
  * ## Attributes & Properties
63095
64455
  *
63096
64456
  * Component attributes and properties that can be applied to the element or by using JavaScript.
63097
64457
  *
63098
- * - `announced`: Whether screen readers announce the line as a separator.
64458
+ * - `announced`: Whether screen readers announce the line as a separator, which they now do
64459
+ * by default.
63099
64460
  *
63100
- * Off by default, and out of the accessibility tree. Most rules on a page
63101
- * separate nothing: they underline a heading or close a section that space
63102
- * had already closed, and announcing every one as a separator is noise a
63103
- * screen-reader user has to walk past.
64461
+ * It dates from when the line was decorative by default. It is still read,
64462
+ * and it wins over `decorative`, so a divider written with it stays a
64463
+ * separator.
64464
+ * - `decorative`: Takes the line out of the accessibility tree, for a rule that separates
64465
+ * nothing: one under a heading, or between the facts of a byline.
63104
64466
  *
63105
- * An opt-in, not a `decorative` opt-out, because a boolean attribute cannot
63106
- * be turned off: `decorative="false"` parses as `true`, which would put the
63107
- * quiet default out of reach from HTML and leave it settable only as a
63108
- * property. An opt-in is absent by default, which every reflected property
63109
- * here has to be.
64467
+ * Absent, the line is a separator, as `<hr>` is. Radix Separator's opt-out
64468
+ * has the same name. It turns the role off because a boolean attribute that
64469
+ * is on by default cannot be turned off from HTML.
63110
64470
  * - `orientation`: The direction the line runs: `horizontal` or `vertical`.
64471
+ *
64472
+ * Unset is horizontal, or across the toolbar the divider sits in.
63111
64473
  * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
63112
64474
  *
63113
64475
  * **Named `whenSettled` because `settled` is taken four times over**, by
@@ -63146,6 +64508,7 @@ export type CustomElementsSolidJs = {
63146
64508
  *
63147
64509
  * These can be used to apply styling when a component is in a given state.
63148
64510
  *
64511
+ * - `vertical`: The line runs vertically: `orientation="vertical"`, or no `orientation` inside a horizontal toolbar.
63149
64512
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
63150
64513
  */
63151
64514
  "helix-headless-divider": Partial<
@@ -63350,6 +64713,9 @@ export type CustomElementsSolidJs = {
63350
64713
  *
63351
64714
  * A column's heading is the cell's name in every row, so the first row
63352
64715
  * answers for the column.
64716
+ * - `columnName(cell: number) => string`: The heading of the column at this place in a row: a cell's name is its
64717
+ * column's heading, read from the first row that has a cell there, so a
64718
+ * short first row does not lose the heading. `''` where no row has one.
63353
64719
  *
63354
64720
  * ## CSS Custom Properties
63355
64721
  *
@@ -63890,6 +65256,13 @@ export type CustomElementsSolidJs = {
63890
65256
  * rendering from data or on a server gets a heading a reader finds in the
63891
65257
  * outline without writing the element. A heading slotted in replaces it.
63892
65258
  *
65259
+ * **Whatever is slotted into `heading` is read as a heading.** An element that
65260
+ * is no heading, such as a `<span>` or a `<p>`, is set inside the `heading`
65261
+ * part at `heading-level`, so a screen reader still finds it in the outline.
65262
+ * A heading element, or an element holding one, keeps its own level. A server
65263
+ * cannot see the slotted element, so a served `<span>` becomes a heading once
65264
+ * the script runs.
65265
+ *
63893
65266
  * ## Attributes & Properties
63894
65267
  *
63895
65268
  * Component attributes and properties that can be applied to the element or by using JavaScript.
@@ -63934,14 +65307,14 @@ export type CustomElementsSolidJs = {
63934
65307
  *
63935
65308
  * - `(default)`: The message: why the region is empty, and what to do about it.
63936
65309
  * - `actions`: The action that would put something in the region.
63937
- * - `heading`: The heading, which names what is missing. Slot a heading element, such as an `<h3>`, so a reader can find it in the page's outline. Replaces the one `heading` draws.
65310
+ * - `heading`: The heading, which names what is missing. A heading element, such as an `<h3>`, keeps its level; any other element is read as a heading at `heading-level`. Replaces the one `heading` draws.
63938
65311
  * - `icon`: An icon above the heading.
63939
65312
  *
63940
65313
  * ## CSS Parts
63941
65314
  *
63942
65315
  * Custom selectors for styling elements within the component.
63943
65316
  *
63944
- * - `heading`: The heading `heading` draws, a heading at `heading-level`. Drawn only while `heading` holds words and nothing is slotted into `heading`.
65317
+ * - `heading`: The heading at `heading-level`: the one `heading` draws while nothing is slotted into `heading`, or the one around a slotted element that is no heading.
63945
65318
  * - `live`: A copy of the heading and the message, in a live region that screen readers announce when the view appears. Visually hidden in the styled tier.
63946
65319
  *
63947
65320
  * ## CSS States
@@ -65141,6 +66514,12 @@ export type CustomElementsSolidJs = {
65141
66514
  * showing a date schedules none, so a long feed left open costs almost nothing.
65142
66515
  * `frozen` draws the reading once and leaves it.
65143
66516
  *
66517
+ * **`fields` draws each field of a date as a part of its own**, such as
66518
+ * `day`, `month` and `year`, so a stylesheet can set the year in a lighter ink
66519
+ * or the weekday in capitals with `::part()`. The text between the fields is
66520
+ * the locale's own and has no part. An `elapsed` or `relative` reading is one
66521
+ * phrase, with no parts inside it.
66522
+ *
65144
66523
  * **The output is always `<time datetime>`**, so copy and paste and scripts
65145
66524
  * parsing the page get the exact instant, whatever the visible text says. A
65146
66525
  * screen reader reads the text, so an `elapsed` reading is named in full, such
@@ -65180,6 +66559,13 @@ export type CustomElementsSolidJs = {
65180
66559
  * this is and a stylesheet has a reason to know: a compact reading is a fixed
65181
66560
  * few characters and a date is not.
65182
66561
  * - `era`: How the era is written, such as AD, where a date is shown.
66562
+ * - `fields`: Draws each field of a date in a part of its own: `weekday`, `day`,
66563
+ * `month`, `year`, `era`, `hour`, `minute`, `second`, `day-period` and
66564
+ * `time-zone-name`, so `::part(year)` can set the year apart.
66565
+ *
66566
+ * Off by default, which draws the date as one run of text, as Shoelace and
66567
+ * Web Awesome do. An `elapsed` or `relative` reading is one phrase either
66568
+ * way.
65183
66569
  * - `frozen`: Draws an `elapsed` or `relative` reading once and leaves it, where it
65184
66570
  * would otherwise move on as it goes stale.
65185
66571
  *
@@ -65245,12 +66631,24 @@ export type CustomElementsSolidJs = {
65245
66631
  *
65246
66632
  * Custom selectors for styling elements within the component.
65247
66633
  *
66634
+ * - `day`: The day of the month, with `fields`.
66635
+ * - `day-period`: AM or PM, or the locale's word for the part of the day, with `fields`.
66636
+ * - `era`: The era, such as AD, with `fields` and `era`.
66637
+ * - `hour`: The hour, with `fields`.
66638
+ * - `minute`: The minute, with `fields`.
66639
+ * - `month`: The month, with `fields`.
66640
+ * - `second`: The second, with `fields`.
65248
66641
  * - `time`: The `<time>` element that holds the formatted text.
66642
+ * - `time-zone-name`: The time zone's name, with `fields`, where `time-zone-name` or a `long` or `full` `time-style` shows it.
66643
+ * - `weekday`: The day of the week, with `fields`.
66644
+ * - `year`: The year, with `fields`.
65249
66645
  *
65250
66646
  * ## CSS States
65251
66647
  *
65252
66648
  * These can be used to apply styling when a component is in a given state.
65253
66649
  *
66650
+ * - `future`: An `elapsed` or `relative` reading of a moment still to come, such as "in 3 hours".
66651
+ * - `past`: An `elapsed` or `relative` reading of a moment gone, such as "3 hours ago".
65254
66652
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
65255
66653
  */
65256
66654
  "helix-headless-format-date": Partial<
@@ -65455,7 +66853,14 @@ export type CustomElementsSolidJs = {
65455
66853
  * - `(default)`: The renderer's box, which the drawing is made in.
65456
66854
  * - `filter-icon`: The icon in the search field. Defaults to a magnifying glass.
65457
66855
  * - `footer`: Content below the graph.
66856
+ * - `fullscreen-icon`: Replaces the glyph inside the fullscreen button.
65458
66857
  * - `header`: Content above the graph.
66858
+ * - `pan-down-icon`: Replaces the glyph inside the pan down button.
66859
+ * - `pan-end-icon`: Replaces the glyph inside the button that pans toward the end of a line of text.
66860
+ * - `pan-start-icon`: Replaces the glyph inside the button that pans toward the start of a line of text.
66861
+ * - `pan-up-icon`: Replaces the glyph inside the pan up button.
66862
+ * - `zoom-in-icon`: Replaces the glyph inside the zoom-in button.
66863
+ * - `zoom-out-icon`: Replaces the glyph inside the zoom-out button.
65459
66864
  *
65460
66865
  * ## Methods
65461
66866
  *
@@ -65536,9 +66941,14 @@ export type CustomElementsSolidJs = {
65536
66941
  *
65537
66942
  * These can be used to apply styling when a component is in a given state.
65538
66943
  *
66944
+ * - `empty`: The list holds no notes: the graph has none, or a search or the groups hid them all.
65539
66945
  * - `fullscreen`: The graph fills the screen.
65540
66946
  * - `idle`: The user has been still long enough for the header and footer to fade.
66947
+ * - `local`: The drawing shows the selected note's local graph, with `depth`.
66948
+ * - `panel-open`: A graph with `no-panel` has the search and the list open over the drawing.
65541
66949
  * - `ready`: The graph has been drawn whole, after `helix-graph-ready`.
66950
+ * - `searching`: The search field holds words, and the list holds only the notes they find.
66951
+ * - `selected`: A note is selected, in the list or in the drawing.
65542
66952
  * - `sharing`: The page keeps the plain wheel and one finger, with `gestures="cooperative"` or while a graph with `gestures="activate"` waits to be pressed.
65543
66953
  * - `using`: A graph with `gestures="activate"` has been pressed and has the gestures.
65544
66954
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
@@ -65628,6 +67038,9 @@ export type CustomElementsSolidJs = {
65628
67038
  * calendar heatmap does: a week is a column, so the strip reads along the
65629
67039
  * line in weeks, from the right on a right-to-left page, and top to bottom in
65630
67040
  * days.
67041
+ * - `selected-label`/`selectedLabel`: What the readout adds for a selected cell, under `selection-mode`, after
67042
+ * where the cell stands: "Day 1: 0 (1 of 14, selected)". Empty adds
67043
+ * nothing.
65631
67044
  * - `selection-label`/`selectionLabel`: What the `selection` part says after the selection changes, with `{count}` for
65632
67045
  * how many cells are selected.
65633
67046
  * - `selection-mode`/`selectionMode`: How many cells a reader can select: `single` or `multiple`.
@@ -65808,6 +67221,9 @@ export type CustomElementsSolidJs = {
65808
67221
  *
65809
67222
  * A column's heading is the cell's name in every row, so the first row
65810
67223
  * answers for the column.
67224
+ * - `columnName(cell: number) => string`: The heading of the column at this place in a row: a cell's name is its
67225
+ * column's heading, read from the first row that has a cell there, so a
67226
+ * short first row does not lose the heading. `''` where no row has one.
65811
67227
  *
65812
67228
  * ## CSS Custom Properties
65813
67229
  *
@@ -66284,6 +67700,17 @@ export type CustomElementsSolidJs = {
66284
67700
  * its own. The fallback is read once the picture fails, after the picture's
66285
67701
  * `alt`, so a reader hears that it did not load, as a sighted reader sees.
66286
67702
  *
67703
+ * **An image with no `alt` says so.** At its first render it reports a
67704
+ * `missing-alt` warning, printed in the console and counted by
67705
+ * `@fusion.dev/helix-diagnostics`, which names the fix: describe the picture
67706
+ * in `alt`, or write `alt=""` for one that is decoration. An image hidden with
67707
+ * `aria-hidden="true"` needs neither and is not reported.
67708
+ *
67709
+ * A sheet of yours reads the state as `:state(loading)`, `:state(loaded)`,
67710
+ * `:state(error)`, and `:state(waiting)`, the last while `placeholder-delay`
67711
+ * holds the placeholder back. It can also read `data-status` on the host once
67712
+ * the picture has loaded or failed.
67713
+ *
66287
67714
  * ## Attributes & Properties
66288
67715
  *
66289
67716
  * Component attributes and properties that can be applied to the element or by using JavaScript.
@@ -67545,6 +68972,9 @@ export type CustomElementsSolidJs = {
67545
68972
  *
67546
68973
  * A column's heading is the cell's name in every row, so the first row
67547
68974
  * answers for the column.
68975
+ * - `columnName(cell: number) => string`: The heading of the column at this place in a row: a cell's name is its
68976
+ * column's heading, read from the first row that has a cell there, so a
68977
+ * short first row does not lose the heading. `''` where no row has one.
67548
68978
  *
67549
68979
  * ## CSS Custom Properties
67550
68980
  *
@@ -67898,16 +69328,31 @@ export type CustomElementsSolidJs = {
67898
69328
  * active option is where the keyboard is: the arrow keys move it, and
67899
69329
  * `aria-activedescendant` points to it while focus stays on the list.
67900
69330
  *
67901
- * The arrow keys, Home, End, PageUp and PageDown move the highlight, and typed
67902
- * letters move it to the next option whose words start with them. In a
67903
- * single-choice list the highlight is the choice unless `manual` is set; then
67904
- * Enter, Space or a click chooses. With `multiple`, Space toggles the
67905
- * highlighted option, Shift with an arrow adds the option it moves to, Shift
67906
- * with Home or End adds every option from the highlight to that end, and
67907
- * Control+A or Command+A chooses every option, or none where all are chosen.
67908
- * In a filter field, Space, Home, End and letters edit the text, and with
67909
- * `multiple`, Control with Shift and Home or End adds every option from the
67910
- * highlight to that end.
69331
+ * **Keyboard.** The list is one tab stop, or its filter field is where there
69332
+ * is one. In a single-choice list the highlight is the choice unless `manual`
69333
+ * is set; then Enter, Space or a click chooses.
69334
+ *
69335
+ * | Key | What it does |
69336
+ * |---|---|
69337
+ * | Down, Up | Moves the highlight to the next or the previous option, round from the last to the first. With `layout="grid"`, to the option below or above, stopping at the edge. |
69338
+ * | Right, Left | With `layout="grid"`, moves to the next or the previous option, mirrored right to left. In a filter field, moves the caret. |
69339
+ * | Home, End | Moves to the first or the last option. In a filter field, moves the caret. |
69340
+ * | Page Down, Page Up | Moves by as many options as the list shows at once. |
69341
+ * | A letter or a word | Moves to the next option whose words start with what you typed. In a filter field, types it. |
69342
+ * | Enter | Chooses the highlighted option, or follows it where it is a link. |
69343
+ * | Space | Chooses the highlighted option, or with `multiple` toggles it. In a filter field, types a space. |
69344
+ * | Shift with Down or Up | With `multiple`, adds the option the highlight moves to. In a filter field, moves the highlight and leaves the value. |
69345
+ * | Shift with Space | With `multiple`, adds every option from the one last chosen to the highlighted one. In a filter field, types a space. |
69346
+ * | Shift with Home or End | With `multiple`, adds every option from the highlight to that end. In a filter field, hold Control as well. |
69347
+ * | Control or Command with A | With `multiple`, chooses every option, or none where all are chosen. In a filter field, selects the text. |
69348
+ * | Escape | In a filter field, clears the filter. |
69349
+ *
69350
+ * **ARIA.** The `items` part is the `listbox`, named by the label and
69351
+ * described by the hint and the message, with `aria-multiselectable` under
69352
+ * `multiple`, `aria-required`, `aria-invalid`, and `aria-busy` while loading.
69353
+ * Each option is an `option` with `aria-selected`. The list, or its filter
69354
+ * field, points `aria-activedescendant` at the highlighted option; the field
69355
+ * is `aria-autocomplete="list"` and controls the list.
67911
69356
  *
67912
69357
  * An option with `href` is a link: Enter or a press follows it and selects
67913
69358
  * nothing, and moving onto it with the arrows does not follow it.
@@ -67920,12 +69365,16 @@ export type CustomElementsSolidJs = {
67920
69365
  *
67921
69366
  * Component attributes and properties that can be applied to the element or by using JavaScript.
67922
69367
  *
67923
- * - `autocomplete`: What the browser may autofill in the text field, as a platform token.
69368
+ * - `autocomplete`: What a browser's autofill may choose, as a platform token such as
69369
+ * `country` or `cc-exp-month`, as a native `<select>` takes it.
67924
69370
  *
67925
- * **Defaults to `off`, which is not the platform's default and is the
67926
- * point.** The field filters a list rather than collecting a value, so a
67927
- * browser offering to fill it with a saved address is competing for the same
67928
- * keystrokes as the listbox. A consumer who wants autofill can still ask.
69371
+ * Set, the list draws a hidden native `<select>` with the same options for
69372
+ * the browser to fill, as React Aria's `HiddenSelect` does, and a fill
69373
+ * chooses the option. `off`, the default, draws none.
69374
+ *
69375
+ * **The filter field is never filled.** It narrows the list rather than
69376
+ * collecting a value, so a browser offering it a saved address competes
69377
+ * with the reader for the same keystrokes: it is always `off`.
67929
69378
  * - `default-filter`/`defaultFilter`: The filter text the list starts with, when `filter` is not set.
67930
69379
  * - `empty-text`/`emptyText`: The text shown when the filter hides every option.
67931
69380
  *
@@ -67953,8 +69402,19 @@ export type CustomElementsSolidJs = {
67953
69402
  * letter. Enter and the arrow keys filter at once on what is typed, so they
67954
69403
  * act on the list the reader expects.
67955
69404
  * - `filter-label`/`filterLabel`: Placeholder text for the filter field.
69405
+ * - `layout`: How the options are laid out, which the arrow keys follow: `stack`, one
69406
+ * under another, or `grid`, in rows and columns, as React Aria's `ListBox`
69407
+ * lays out cards or photos. With `grid`, Up and Down move within a column,
69408
+ * and Left and Right along the list, mirrored right to left.
69409
+ *
69410
+ * The columns are the stylesheet's: the styled tier draws them at
69411
+ * `--listbox-column-min-inline-size` or wider, and a headless list lays out
69412
+ * `::part(items)` as it likes, since the keys read where each option is
69413
+ * drawn. A list of `items` stays a stack. Left out, the list is a stack,
69414
+ * and the host carries no attribute for it.
67956
69415
  * - `load-error`/`loadError`: What the list says when its options could not be loaded, such as after a
67957
- * request to a server fails. Empty is no error.
69416
+ * request to a server fails. Empty, null or no attribute is no error, so
69417
+ * removing the attribute clears it.
67958
69418
  *
67959
69419
  * Set, it shows under any options there are, in place of `empty-text` and
67960
69420
  * `loading-text`, and a screen reader hears it. Clear it when you ask again.
@@ -67977,6 +69437,8 @@ export type CustomElementsSolidJs = {
67977
69437
  * **Two sentences, chosen by `Intl.PluralRules`**, which is Data Table's
67978
69438
  * pair: a language with more forms than two picks the one for its `one` and
67979
69439
  * writes the rest here.
69440
+ * - `selected-label`/`selectedLabel`: What VoiceOver hears as the highlight reaches a chosen option from the
69441
+ * filter field, on Apple devices. `{name}` is the option's words.
67980
69442
  * - `loading`: Whether the rows are still loading.
67981
69443
  *
67982
69444
  * Reflected, because a stylesheet needs it: the rows that are already there
@@ -68031,6 +69493,22 @@ export type CustomElementsSolidJs = {
68031
69493
  * imperatively later, and nothing is hydrating by then.
68032
69494
  *
68033
69495
  * Here rather than on each control.
69496
+ * - `items`: The options as data, for a list too long to draw whole: each a value,
69497
+ * which is also its words, or a record with a `value`, a `label` and
69498
+ * `disabled`. Set, the list draws only the options in sight, and the ones
69499
+ * you write as children are not read.
69500
+ *
69501
+ * **Every option is still reachable.** The keyboard, the typeahead, the
69502
+ * filter and the value work over the whole set, and the option the keyboard
69503
+ * is on is drawn wherever it is, so a screen reader is told about it. Each
69504
+ * drawn option says its place in the set (`aria-posinset`, `aria-setsize`).
69505
+ * React Aria virtualizes a `ListBox` with its `Virtualizer`; this is core's
69506
+ * `VirtualizeController`.
69507
+ *
69508
+ * **The list needs a height to scroll in**: the styled tier's
69509
+ * `--listbox-max-block-size`, or a `max-block-size` on `::part(items)` in the
69510
+ * headless tier. Import the Option family as well, whose elements are drawn.
69511
+ * A server sends the list empty, and the options are drawn once it hydrates. (property only)
68034
69512
  * - `selectedIndex`: Which option is chosen, as an index, or `-1` where none is.
68035
69513
  *
68036
69514
  * `<select>`'s own pair, and this control is what stands in for one. The
@@ -68133,10 +69611,8 @@ export type CustomElementsSolidJs = {
68133
69611
  * read as a dial rather than scanned as a list, which is what Time Picker's
68134
69612
  * wheels do with three of these.
68135
69613
  *
68136
- * A delta from the two boxes rather than `offsetTop`. An option is a slotted
68137
- * light DOM child, so its `offsetParent` is whatever is positioned above it,
68138
- * which is not this list and is not guaranteed to be anything: measuring both
68139
- * rects and moving by the difference needs no such assumption.
69614
+ * Measured by core's `centerInView`, or, for a list of `items`, by the
69615
+ * arithmetic, since the chosen option may not be drawn.
68140
69616
  * - `requestFilter(next: string) => boolean`: Requests a new filter, and returns whether the request went through.
68141
69617
  * - `requestValue(next: string) => boolean`: Requests a new value, and returns whether the change was applied.
68142
69618
  *
@@ -68589,7 +70065,8 @@ export type CustomElementsSolidJs = {
68589
70065
  * `name`, or its `label` if it has no name.
68590
70066
  *
68591
70067
  * All the markers in a map share one tab stop. The arrow keys move between
68592
- * them in the order they are written.
70068
+ * them in the order they are written. Taking away the marker that has focus
70069
+ * moves focus to the next one, or to the one before where it was the last.
68593
70070
  *
68594
70071
  * ## Attributes & Properties
68595
70072
  *
@@ -69138,8 +70615,20 @@ export type CustomElementsSolidJs = {
69138
70615
  *
69139
70616
  * - `(default)`: The element your renderer draws the map in, and the map's markers, routes, areas, positions, and points layers.
69140
70617
  * - `attribution`: The map credit, which most tile licenses require.
70618
+ * - `face-north-icon`: Replaces the compass needle. It inherits `--map-needle-turn`, so `rotate: var(--map-needle-turn)` keeps it pointing north.
69141
70619
  * - `footer`: Content below the map, such as a legend or a scale.
70620
+ * - `fullscreen-icon`: Replaces the glyph inside the fullscreen button.
69142
70621
  * - `header`: Content above the map, such as a title or a search field.
70622
+ * - `layers-icon`: Replaces the glyph inside the layers button.
70623
+ * - `pan-down-icon`: Replaces the glyph inside the pan down button.
70624
+ * - `pan-end-icon`: Replaces the glyph inside the button that pans toward the end of a line of text.
70625
+ * - `pan-start-icon`: Replaces the glyph inside the button that pans toward the start of a line of text.
70626
+ * - `pan-up-icon`: Replaces the glyph inside the pan up button.
70627
+ * - `rotate-left-icon`: Replaces the glyph inside the rotate left button.
70628
+ * - `rotate-right-icon`: Replaces the glyph inside the rotate right button.
70629
+ * - `tilt-icon`: Replaces the "3D" inside the 3D button.
70630
+ * - `zoom-in-icon`: Replaces the glyph inside the zoom-in button.
70631
+ * - `zoom-out-icon`: Replaces the glyph inside the zoom-out button.
69143
70632
  *
69144
70633
  * ## Methods
69145
70634
  *
@@ -69226,8 +70715,11 @@ export type CustomElementsSolidJs = {
69226
70715
  *
69227
70716
  * - `fullscreen`: The map fills the screen.
69228
70717
  * - `idle`: The user has been still long enough for the header and footer to fade.
70718
+ * - `layers-open`: The layers menu is open.
69229
70719
  * - `ready`: The map has been drawn whole, after `helix-map-ready`.
70720
+ * - `rotated`: The map is turned away from north, by `bearing`.
69230
70721
  * - `sharing`: The page keeps the plain wheel and one finger, with `gestures="cooperative"` or while a map with `gestures="activate"` waits to be pressed.
70722
+ * - `tilted`: The map is tilted by `pitch`, so it no longer looks straight down.
69231
70723
  * - `using`: A map with `gestures="activate"` has been pressed and has the gestures.
69232
70724
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
69233
70725
  */
@@ -69787,8 +71279,8 @@ export type CustomElementsSolidJs = {
69787
71279
  * onto your element after it upgrades causes a hydration mismatch.
69788
71280
  *
69789
71281
  * Group rows under a heading with `Menu.Section`, which is a `group` named by
69790
- * its heading. Between runs of rows, a `<helix-divider announced>` is a
69791
- * separator a screen reader announces.
71282
+ * its heading. Between runs of rows, a `<helix-divider>` is a separator a
71283
+ * screen reader announces.
69792
71284
  *
69793
71285
  * Keys: Enter, Space or Down Arrow on the trigger opens the menu on its first
69794
71286
  * row, and Up Arrow on its last. In the menu, Up and Down Arrow move between
@@ -70542,6 +72034,16 @@ export type CustomElementsSolidJs = {
70542
72034
  * - `label`: What happened, on the first line.
70543
72035
  * - `media`: The leading slot's box.
70544
72036
  * - `time`: When it happened, formatted for people to read.
72037
+ * - `time-day`: Format Date's `day`, forwarded for a time drawn as fields. An elapsed time draws none.
72038
+ * - `time-day-period`: Format Date's `day-period`, forwarded for a time drawn as fields. An elapsed time draws none.
72039
+ * - `time-era`: Format Date's `era`, forwarded for a time drawn as fields. An elapsed time draws none.
72040
+ * - `time-hour`: Format Date's `hour`, forwarded for a time drawn as fields. An elapsed time draws none.
72041
+ * - `time-minute`: Format Date's `minute`, forwarded for a time drawn as fields. An elapsed time draws none.
72042
+ * - `time-month`: Format Date's `month`, forwarded for a time drawn as fields. An elapsed time draws none.
72043
+ * - `time-second`: Format Date's `second`, forwarded for a time drawn as fields. An elapsed time draws none.
72044
+ * - `time-time-zone-name`: Format Date's `time-zone-name`, forwarded for a time drawn as fields. An elapsed time draws none.
72045
+ * - `time-weekday`: Format Date's `weekday`, forwarded for a time drawn as fields. An elapsed time draws none.
72046
+ * - `time-year`: Format Date's `year`, forwarded for a time drawn as fields. An elapsed time draws none.
70545
72047
  * - `trailing`: The column holding the time and the controls.
70546
72048
  *
70547
72049
  * ## CSS States
@@ -70589,11 +72091,22 @@ export type CustomElementsSolidJs = {
70589
72091
  * nothing more. While the feed is loading the button stays, so focus stays on
70590
72092
  * it, and it is `aria-disabled` and sends nothing.
70591
72093
  *
72094
+ * **`load-error` says a page could not be fetched**, such as "Could not load
72095
+ * notifications": it shows under the rows there are, in the `error` part, in
72096
+ * place of the empty and loading lines, and a screen reader hears it. Clear it
72097
+ * when you ask again.
72098
+ *
70592
72099
  * ## Attributes & Properties
70593
72100
  *
70594
72101
  * Component attributes and properties that can be applied to the element or by using JavaScript.
70595
72102
  *
70596
72103
  * - `label`: The feed's name, read by screen readers.
72104
+ * - `load-error`/`loadError`: What the feed says when a page of it could not be loaded, such as after a
72105
+ * request to a server fails. Empty, null or no attribute is no error, so
72106
+ * removing the attribute clears it.
72107
+ *
72108
+ * Set, it shows under the rows there are, in place of `empty-text` and
72109
+ * `loading-text`, and a screen reader hears it. Clear it when you ask again.
70597
72110
  * - `load-more`/`loadMore`: Whether to draw a button after the list that asks for the next page, by
70598
72111
  * sending `helix-load-more`. Take it off once there is nothing more.
70599
72112
  * - `load-more-label`/`loadMoreLabel`: The text of the `load-more` button.
@@ -70682,6 +72195,7 @@ export type CustomElementsSolidJs = {
70682
72195
  *
70683
72196
  * - `(default)`: The notifications.
70684
72197
  * - `empty`: Replaces the words of `empty-text` in the `empty` part, such as a picture and a line of your own. The live region still says `empty-text`.
72198
+ * - `error`: Replaces the words of `load-error` in the `error` part, such as a line with a retry button. The live region still says `load-error`.
70685
72199
  * - `footer`: Below the list, for a link to everything.
70686
72200
  * - `header`: Above the list, for a title and the mark-all control.
70687
72201
  * - `loading`: Replaces the words of `loading-text` in the `loading` part, such as a loader. The live region still says `loading-text`.
@@ -70722,10 +72236,11 @@ export type CustomElementsSolidJs = {
70722
72236
  * Custom selectors for styling elements within the component.
70723
72237
  *
70724
72238
  * - `empty`: Shown when there is nothing in the feed.
72239
+ * - `error`: Shown while `load-error` is set, under any rows there are, in place of the empty and loading lines.
70725
72240
  * - `footer`: The region below the list.
70726
72241
  * - `header`: The region above the list.
70727
72242
  * - `list`: The list itself.
70728
- * - `live`: A copy of the empty and loading messages, in a live region that screen readers announce when they change. Visually hidden in the styled tier.
72243
+ * - `live`: A copy of the empty, loading and error messages, in a live region that screen readers announce when they change. Visually hidden in the styled tier.
70729
72244
  * - `loading`: Shown while the feed is loading.
70730
72245
  * - `mark-all`: The control that marks everything read.
70731
72246
  * - `more`: The button after the list that asks for more, while `load-more` is set. It is `aria-disabled` while the feed is loading.
@@ -70734,7 +72249,8 @@ export type CustomElementsSolidJs = {
70734
72249
  *
70735
72250
  * These can be used to apply styling when a component is in a given state.
70736
72251
  *
70737
- * - `empty`: While the feed holds no notification and is not loading. Never on the server, which cannot count the rows.
72252
+ * - `empty`: While the feed holds no notification and is not loading, and `load-error` is not set. Never on the server, which cannot count the rows.
72253
+ * - `error`: While `load-error` is set.
70738
72254
  * - `loading`: While `loading` is set.
70739
72255
  * - `media`: While a notification in the list holds something in its media slot, so every row keeps that column.
70740
72256
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
@@ -72148,6 +73664,7 @@ export type CustomElementsSolidJs = {
72148
73664
  * - `control-listbox-loading`: The text shown while the options load.
72149
73665
  * - `control-listbox-search`: The region that holds the filter field.
72150
73666
  * - `control-listbox-search-field`: The filter field.
73667
+ * - `control-live`: The select's `live` part, the region a screen reader hears a choice made on the closed trigger from.
72151
73668
  * - `control-surface`: The floating panel.
72152
73669
  * - `control-trigger`: The closed control, which shows the chosen size.
72153
73670
  * - `control-value`: The chosen size inside the trigger.
@@ -72867,7 +74384,8 @@ export type CustomElementsSolidJs = {
72867
74384
  * `correction` sets how much of the code can be lost. At `H` a code can lose
72868
74385
  * thirty percent and still scan, so a mark in the center slot is safe. At `L`
72869
74386
  * the same mark makes the code unscannable. The default is `M`, and `H` when the
72870
- * `logo` slot is filled.
74387
+ * `logo` slot is filled. A code that holds a logo at a `correction` below `H`
74388
+ * warns once with the kind `unscannable-logo`.
72871
74389
  *
72872
74390
  * A higher level holds fewer characters, so a value that fits at `M` can be too
72873
74391
  * long once a logo raises the level to `H`. A value too long for the level
@@ -72877,7 +74395,8 @@ export type CustomElementsSolidJs = {
72877
74395
  * `toSvg()`, `toPng()` and `download()` give the drawn code as a file of its
72878
74396
  * own, in the colors it is drawn in, with a slotted image or SVG logo where
72879
74397
  * it sits, for a page that offers it to save or print, as Zag's download
72880
- * trigger does.
74398
+ * trigger does. `download()` saves an SVG for a name ending in `.svg`, and a
74399
+ * PNG for any other.
72881
74400
  *
72882
74401
  * ## Attributes & Properties
72883
74402
  *
@@ -72963,7 +74482,8 @@ export type CustomElementsSolidJs = {
72963
74482
  * - `toPng(size = 512) => Promise<Blob | null>`: The code as a PNG, `size` pixels square, drawn from `toSvg()`.
72964
74483
  *
72965
74484
  * `null` where no code is drawn.
72966
- * - `download(filename = 'qr-code.png', size = 512) => Promise<void>`: Saves the code as a PNG named `filename`, `size` pixels square.
74485
+ * - `download(filename = 'qr-code.png', size = 512) => Promise<void>`: Saves the code as a file named `filename`, `size` pixels square: an SVG
74486
+ * where the name ends in `.svg`, and a PNG otherwise.
72967
74487
  *
72968
74488
  * Call it from a press, since a browser lets a page start a download only
72969
74489
  * in answer to one. Does nothing where no code is drawn.
@@ -73910,12 +75430,6 @@ export type CustomElementsSolidJs = {
73910
75430
  * The across gets no dot at all rather than a shifted one. It is an axis and
73911
75431
  * not a series: it has a scale under the plot with its name at the end of it,
73912
75432
  * which is where a reader is told what it is.
73913
- * - `showsColumn(cell: number) => boolean`: Whether the series read from the cell at this place in a row is drawn,
73914
- * by its column's heading. The keys and the readout pass over one a
73915
- * legend hid.
73916
- *
73917
- * A column's heading is the cell's name in every row, so the first row
73918
- * answers for the column.
73919
75433
  * - `attributeChangedCallback(name: string, old: string | null, value: string | null) => void`: Called by the browser when an observed attribute changes. A new
73920
75434
  * `aria-label` asks for an update, because it names the plot.
73921
75435
  * - `showsSeries(name: string) => boolean`: Whether the series of this name is drawn, which it is unless a legend
@@ -73925,6 +75439,15 @@ export type CustomElementsSolidJs = {
73925
75439
  * thing the two share: see `SourceController.hide`. A series keeps its
73926
75440
  * palette slot while it is hidden, so the colors of the others do not move.
73927
75441
  * For a ring the names are its rows, the slices being the rows.
75442
+ * - `showsColumn(cell: number) => boolean`: Whether the series read from the cell at this place in a row is drawn,
75443
+ * by its column's heading. The keys and the readout pass over one a
75444
+ * legend hid.
75445
+ *
75446
+ * A column's heading is the cell's name in every row, so the first row
75447
+ * answers for the column.
75448
+ * - `columnName(cell: number) => string`: The heading of the column at this place in a row: a cell's name is its
75449
+ * column's heading, read from the first row that has a cell there, so a
75450
+ * short first row does not lose the heading. `''` where no row has one.
73928
75451
  *
73929
75452
  * ## CSS Custom Properties
73930
75453
  *
@@ -74147,18 +75670,48 @@ export type CustomElementsSolidJs = {
74147
75670
  * Set `valueContent` to draw the trigger's content from the chosen options,
74148
75671
  * and several chosen options are written as a list in the reader's language.
74149
75672
  *
74150
- * In the open list the arrow keys, Home, End, PageUp, PageDown and typed
74151
- * letters move the highlight, and Enter, Space or a click chooses it and
74152
- * closes the list. Tab closes the list and moves on. On the closed trigger,
74153
- * ArrowDown, Enter and Space open the list on the chosen option, ArrowUp opens
74154
- * it on the chosen or last option, Home and End open it on the first or last,
74155
- * and typed letters choose the option whose words start with them, as a native
74156
- * `<select>` does.
75673
+ * **Keyboard.** On the closed trigger:
75674
+ *
75675
+ * | Key | What it does |
75676
+ * |---|---|
75677
+ * | Down, Enter, Space | Opens the list on the chosen option, or the first. |
75678
+ * | Up | Opens the list on the chosen option, or the last. |
75679
+ * | Home, End | Opens the list on the first or the last option. |
75680
+ * | Left, Right | Chooses the option before or after the chosen one without opening, as React Aria's Select does, in either direction of text. |
75681
+ * | A letter or a word | Chooses the option whose words start with what you typed, as a native `<select>` does. With `multiple`, opens the list on it. |
75682
+ *
75683
+ * In the open list, which is a `Listbox`:
75684
+ *
75685
+ * | Key | What it does |
75686
+ * |---|---|
75687
+ * | Down, Up, Home, End, Page Down, Page Up | Moves the highlight. |
75688
+ * | A letter or a word | Moves the highlight to the next option whose words start with what you typed. |
75689
+ * | Enter, Space | Chooses the highlighted option and closes the list. With `multiple`, toggles it and leaves the list open. |
75690
+ * | Escape | Closes the list and puts focus back on the trigger. |
75691
+ * | Tab | Closes the list and moves on. |
75692
+ *
75693
+ * A choice made on the closed trigger is said aloud on Apple devices, where
75694
+ * VoiceOver does not read the trigger's new name.
75695
+ *
75696
+ * **ARIA.** The trigger is a `button` with `aria-haspopup="listbox"` and
75697
+ * `aria-expanded`, named by the label and then the chosen words, as a native
75698
+ * `<select>` is. The list is the listbox `Listbox` describes, named by the
75699
+ * label, or by `list-label` where there is none.
75700
+ *
75701
+ * Set `autocomplete` to let a browser's autofill choose, as a native `<select>`
75702
+ * with the same attribute would.
74157
75703
  *
74158
75704
  * ## Attributes & Properties
74159
75705
  *
74160
75706
  * Component attributes and properties that can be applied to the element or by using JavaScript.
74161
75707
  *
75708
+ * - `autocomplete`: What a browser's autofill may fill in, as a platform token such as
75709
+ * `country` or `cc-exp-month`, as on a native `<select>`.
75710
+ *
75711
+ * Set, the select keeps a hidden native `<select>` with the same options for
75712
+ * the browser to fill, as React Aria's `HiddenSelect` does, and takes the
75713
+ * option the browser picks, by its value or its words, as the value. Empty
75714
+ * draws no hidden select, and a browser fills nothing.
74162
75715
  * - `empty-text`/`emptyText`: The text shown when no options match the filter.
74163
75716
  * - `filterable`: Whether the list can be narrowed by typing.
74164
75717
  *
@@ -74425,6 +75978,7 @@ export type CustomElementsSolidJs = {
74425
75978
  * - `listbox-loading`: The text shown while the options load.
74426
75979
  * - `listbox-search`: The region that holds the filter field.
74427
75980
  * - `listbox-search-field`: The filter field.
75981
+ * - `live`: The region a screen reader announces a choice made on the closed trigger from, drawn once there is one to say. Visually hidden in the styled tier.
74428
75982
  * - `surface`: The floating panel.
74429
75983
  * - `trigger`: The closed control, which shows the chosen value.
74430
75984
  * - `value`: The chosen option's text inside the trigger.
@@ -75129,6 +76683,68 @@ export type CustomElementsSolidJs = {
75129
76683
  BaseEvents<HelixHeadlessSparkline>
75130
76684
  >;
75131
76685
 
76686
+ /**
76687
+ * A `group` of the dial's menu, named by its label, as React Aria's menu
76688
+ * sections and Menu's groups are: a reader hears the name on entering the set,
76689
+ * and the arrow keys walk through every group's actions in order, from the
76690
+ * last action of one group to the first of the next.
76691
+ *
76692
+ * Put actions straight into the group, and the group straight into the dial.
76693
+ * Anything else slotted here is drawn and is not an action.
76694
+ *
76695
+ * ## Attributes & Properties
76696
+ *
76697
+ * Component attributes and properties that can be applied to the element or by using JavaScript.
76698
+ *
76699
+ * - `label`: The group's name, drawn above its actions and read by screen readers.
76700
+ * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
76701
+ *
76702
+ * **Named `whenSettled` because `settled` is taken four times over**, by
76703
+ * Image, Splitter and both color controls, none of them about transitions. A
76704
+ * base class takes the name every subclass then cannot use.
76705
+ *
76706
+ * **The state it reports cannot be watched, which is why this exists.** A
76707
+ * custom state is deliberately not in the DOM, so there is no
76708
+ * `MutationObserver` equivalent for `ElementInternals.states`. Await this
76709
+ * instead.
76710
+ *
76711
+ * Separate from `updateComplete`, which resolves in the microtask checkpoint
76712
+ * the suppression is still active in. That is the distinction `readyToMove`
76713
+ * in `@fusion.dev/helix-testing` is written around.
76714
+ *
76715
+ * It never resolves where `requestAnimationFrame` never fires, which is a
76716
+ * server, a hidden tab, and happy-dom. Callers that must not hang there race
76717
+ * it against a timeout, as the happy-dom harness's `readyToMove` does. The
76718
+ * browser harness's awaits it alone: a browser always runs the frame, and a
76719
+ * timer beside it was a bet on how long one takes, which a busy run lost. (property only) (readonly)
76720
+ *
76721
+ * ## Slots
76722
+ *
76723
+ * Areas where markup can be added to the component.
76724
+ *
76725
+ * - `(default)`: The group's actions.
76726
+ * - `label`: The group's name, for content richer than the `label` text.
76727
+ *
76728
+ * ## CSS Parts
76729
+ *
76730
+ * Custom selectors for styling elements within the component.
76731
+ *
76732
+ * - `group`: The set, which carries the `group` role.
76733
+ * - `label`: The group's name, drawn above its actions while there is one.
76734
+ *
76735
+ * ## CSS States
76736
+ *
76737
+ * These can be used to apply styling when a component is in a given state.
76738
+ *
76739
+ * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
76740
+ */
76741
+ "helix-headless-speed-dial-group": Partial<
76742
+ HelixHeadlessSpeedDialGroupProps &
76743
+ HelixHeadlessSpeedDialGroupSolidJsProps &
76744
+ BaseProps<HelixHeadlessSpeedDialGroup> &
76745
+ BaseEvents<HelixHeadlessSpeedDialGroup>
76746
+ >;
76747
+
75132
76748
  /**
75133
76749
  * Each item is a command, so it has the `menuitem` role. A megamenu holds
75134
76750
  * destinations, so it is a disclosure of links. A speed dial holds actions,
@@ -75138,11 +76754,21 @@ export type CustomElementsSolidJs = {
75138
76754
  * `title` on an icon shows only on hover. Visible text is read, searched, and
75139
76755
  * translated like other text.
75140
76756
  *
76757
+ * `shortcut` gives the action's keyboard shortcut as a chord, such as `mod+s`,
76758
+ * the grammar Menu's rows use. The action carries it as `aria-keyshortcuts`
76759
+ * and draws it after the name in the platform's glyphs or words, `⌘S` on an
76760
+ * Apple keyboard and `Ctrl+S` elsewhere, as Menu draws its rows' shortcuts.
76761
+ * Put a `Kbd` in the `shortcut` slot to draw it as keys instead; the dial
76762
+ * imports no `Kbd` of its own. Showing a shortcut does not bind it.
76763
+ *
75141
76764
  * ## Attributes & Properties
75142
76765
  *
75143
76766
  * Component attributes and properties that can be applied to the element or by using JavaScript.
75144
76767
  *
75145
76768
  * - `disabled`: Whether the action is disabled, so it cannot be chosen.
76769
+ * - `shortcut`: The action's keyboard shortcut as a chord, such as `mod+s`, carried as
76770
+ * `aria-keyshortcuts` and drawn after the name. `mod` is Command on an Apple
76771
+ * keyboard and Control elsewhere. Showing a shortcut does not bind it.
75146
76772
  * - `value`: The action's value, sent in `helix-select` when the action is chosen.
75147
76773
  * - `active`: Whether the action has focus, which makes it the action the keyboard is on.
75148
76774
  *
@@ -75183,6 +76809,7 @@ export type CustomElementsSolidJs = {
75183
76809
  *
75184
76810
  * - `(default)`: The action's name.
75185
76811
  * - `icon`: The action's icon, the main way the action is recognized.
76812
+ * - `shortcut`: The action's keyboard shortcut, drawn after its name, such as a `Kbd`. It replaces the text drawn for `shortcut`, and is hidden from the name, which `aria-keyshortcuts` carries instead.
75186
76813
  *
75187
76814
  * ## Methods
75188
76815
  *
@@ -75200,6 +76827,7 @@ export type CustomElementsSolidJs = {
75200
76827
  * - `icon`: The box that holds the icon.
75201
76828
  * - `item`: The control for the action.
75202
76829
  * - `label`: The action's name, beside the icon.
76830
+ * - `shortcut`: The box after the name that holds the shortcut, shown while `shortcut` is set or something is in the `shortcut` slot.
75203
76831
  *
75204
76832
  * ## CSS States
75205
76833
  *
@@ -75235,12 +76863,47 @@ export type CustomElementsSolidJs = {
75235
76863
  * action whose name starts with it. The actions are one tab stop, and Tab
75236
76864
  * closes the dial and moves on.
75237
76865
  *
76866
+ * **Keyboard.** On the trigger, Enter, Space or a press opens the dial on its
76867
+ * first action. With the dial open:
76868
+ *
76869
+ * | Key | What it does |
76870
+ * |---|---|
76871
+ * | Down, Right | Moves to the next action, from the last back to the first. |
76872
+ * | Up, Left | Moves to the action before, from the first round to the last. |
76873
+ * | Home, End | Moves to the first or the last action. |
76874
+ * | A letter | Moves to the next action whose name starts with it. |
76875
+ * | Enter, Space | Chooses the action, and the dial closes. |
76876
+ * | Escape | Closes the dial and puts focus back on the trigger. |
76877
+ * | Tab | Closes the dial and moves on. |
76878
+ *
76879
+ * **Groups.** Put actions in `Speed Dial.Group`, named by its `label`, to set
76880
+ * them apart as Menu's sections do: each is a `group` of the menu, and the
76881
+ * arrow keys walk through every group's actions in order.
76882
+ *
76883
+ * **A trigger with its own action.** With `open-on="long-press"`, a press on
76884
+ * the trigger is the trigger's own, such as composing a message, and holding it
76885
+ * for half a second opens the dial, as React Aria's menu trigger does with
76886
+ * `trigger="longPress"`. Alt+Down or Alt+Up opens it from the keyboard, and
76887
+ * the trigger says so in its description, `long-press-label`, the drawn one
76888
+ * and a slotted one alike. A press that has opened the dial does not also do
76889
+ * the trigger's action.
76890
+ *
75238
76891
  * ## Attributes & Properties
75239
76892
  *
75240
76893
  * Component attributes and properties that can be applied to the element or by using JavaScript.
75241
76894
  *
75242
76895
  * - `label`: Accessible name for the trigger and the set of actions it opens.
76896
+ * - `long-press-label`/`longPressLabel`: The description the trigger gives under `open-on="long-press"`, saying how
76897
+ * its actions are reached.
76898
+ *
76899
+ * A slotted trigger is described by the dial, which carries the words as
76900
+ * its own label for that: a Helix button's inner control at once, and a
76901
+ * plain element of yours once a reader reaches it, after hydration, unless
76902
+ * you described or labeled it yourself.
75243
76903
  * - `offset`: Space between the trigger and the actions, in pixels.
76904
+ * - `open-on`/`openOn`: What opens the dial. `click` opens it on a press of the trigger. Under
76905
+ * `long-press`, a press is the trigger's own action, and the dial opens on a
76906
+ * press held for half a second, or on Alt+Down or Alt+Up.
75244
76907
  * - `placement`: The direction the actions open in. They move to another side if that side
75245
76908
  * does not fit.
75246
76909
  *
@@ -75344,8 +77007,9 @@ export type CustomElementsSolidJs = {
75344
77007
  * added at `firstUpdated` and is not in the server markup. Before it appears,
75345
77008
  * both dividers work on their own.
75346
77009
  *
75347
- * The divider has `role="separator"` and `aria-valuenow`, and `aria-controls`
75348
- * names the start pane. Drag it with a pointer or move it with the arrow keys,
77010
+ * The divider has `role="separator"` and `aria-valuenow`, with
77011
+ * `aria-valuetext` saying the start pane's share as a percentage in the
77012
+ * reader's locale, and `aria-controls` names the start pane. Drag it with a pointer or move it with the arrow keys,
75349
77013
  * press `Home` or `End` to move it to its bounds, and press `Enter` to collapse
75350
77014
  * the start pane and open it again. A drag in progress is tracked as a state, so both dividers a
75351
77015
  * corner moves stay lit for as long as they move.
@@ -75482,13 +77146,14 @@ export type CustomElementsSolidJs = {
75482
77146
  * - `helix-before-resize`: Fired before the divider settles, and only when the gesture moved it. A press that moved nothing, a drag that came back, an arrow key with no room left, and a corner that moved only the other divider do not fire it. Cancelable: canceling it leaves the position to you and keeps the rest of the gesture, so a collapse the gesture reached still fires `helix-before-collapse`, which you can also cancel. A dragged divider stays where it was dropped until you set your own `position`.
75483
77147
  * - `helix-collapse`: Fired after a pane shuts or reopens, with the side that is shut, or empty where both are open.
75484
77148
  * - `helix-resized`: Fired after the divider settles somewhere new, with the new position.
75485
- * - `input`: Fired each time a drag moves the divider, before it settles, as a range input does while it is dragged. Read `position` for where it is now.
77149
+ * - `input`: Fired each time the divider moves, as a range input does: on each step of a drag, and before `helix-resized` for a key, a double click or a corner. Read `position` for where it is now.
75486
77150
  *
75487
77151
  * ## Slots
75488
77152
  *
75489
77153
  * Areas where markup can be added to the component.
75490
77154
  *
75491
77155
  * - `end`: The pane after the divider.
77156
+ * - `handle`: A mark drawn at the middle of the divider, such as a grip icon. It takes no focus and no pointer of its own: a press on it is a press on the divider.
75492
77157
  * - `start`: The pane before the divider.
75493
77158
  *
75494
77159
  * ## Methods
@@ -75524,7 +77189,9 @@ export type CustomElementsSolidJs = {
75524
77189
  *
75525
77190
  * These can be used to apply styling when a component is in a given state.
75526
77191
  *
77192
+ * - `collapsed`: While a pane is shut. `data-collapsed` on the host says which.
75527
77193
  * - `dragging`: While the pointer or a corner holds the divider.
77194
+ * - `vertical`: While the panes are one above the other, whether `orientation` says so or `auto` turned them.
75528
77195
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
75529
77196
  */
75530
77197
  "helix-headless-splitter": Partial<
@@ -76191,7 +77858,9 @@ export type CustomElementsSolidJs = {
76191
77858
  * table with no `TableColumn` heads its columns with.
76192
77859
  *
76193
77860
  * The role is on the host so the cell stays a child of its row in the flat
76194
- * tree, which keeps the table structure intact.
77861
+ * tree, which keeps the table structure intact. In a `grid` table a value is
77862
+ * a `gridcell`, and the table gives the cell a `tabindex` so focus can rest on
77863
+ * it.
76195
77864
  *
76196
77865
  * ## Attributes & Properties
76197
77866
  *
@@ -76529,9 +78198,28 @@ export type CustomElementsSolidJs = {
76529
78198
  * 4. A chosen row takes `:state(selected)`, and a screen reader hears
76530
78199
  * `selected-label` ("2 selected") from a polite region.
76531
78200
  *
76532
- * Tab reaches each checkbox, and Space ticks it. For a grid a reader moves
76533
- * through with the arrow keys, with typeahead and range selection, use
76534
- * `DataTable`. To act on one row, put a link or a button in a cell.
78201
+ * Tab reaches each checkbox, and Space ticks it. To act on one row, put a
78202
+ * link or a button in a cell, or give the row an `href`.
78203
+ *
78204
+ * **A grid.** `grid` makes the table one tab stop that the arrow keys move
78205
+ * through cell by cell, the headings included, as React Aria's table is. The
78206
+ * table is then a `grid` and each value a `gridcell`, and the table gives
78207
+ * every cell a `tabindex` so focus can rest on it: set `grid` only where the
78208
+ * cells may carry one. For typeahead and range selection, use `DataTable`.
78209
+ *
78210
+ * | Key | What it does |
78211
+ * |---|---|
78212
+ * | Right, Left | Moves one cell along the row. Left moves on, on a right-to-left page. |
78213
+ * | Down, Up | Moves one row, the headings included. |
78214
+ * | Home, End | Moves to the first or the last cell of the row. |
78215
+ * | Control with Home or End | Moves to the first or the last cell of the table. |
78216
+ * | Page Down, Page Up | Moves by the rows that fit in view. |
78217
+ * | Enter, F2 | Moves into the cell's links and controls. Escape or F2 moves back to the cell, and Tab moves between the controls of one cell. |
78218
+ * | Enter on a cell of a row with `href` | Follows the row's link. |
78219
+ * | Enter, Space on a sortable heading | Sorts by the column. |
78220
+ * | Space on a row, Enter or Space on its checkbox cell | Selects the row, in a `selectable` table. |
78221
+ * | Control or Command with A | Selects every row, in a `selectable` table. |
78222
+ * | Tab | Leaves the table. |
76535
78223
  *
76536
78224
  * The CSS custom properties listed for this component are written by it and
76537
78225
  * read by the stylesheet that draws it. Do not set them. Each holds a number
@@ -76575,6 +78263,13 @@ export type CustomElementsSolidJs = {
76575
78263
  * is set.
76576
78264
  * - `default-sort`/`defaultSort`: The starting sort order, used until `sort` is set.
76577
78265
  * - `descending-label`/`descendingLabel`: The word for a descending sort, in `sorted-label`.
78266
+ * - `grid`: Makes the table a grid: one tab stop, and the arrow keys, Home, End and the
78267
+ * Page keys move focus between its cells, the headings included. Enter moves
78268
+ * into a cell's controls, and Tab leaves the table.
78269
+ *
78270
+ * Off by default, where the table is a static `table` and Tab reaches each
78271
+ * link and control in it. On, the table writes a `tabindex` onto each of its
78272
+ * cells, which is the one way a cell of your markup can take focus.
76578
78273
  * - `label`: Accessible name for the table.
76579
78274
  *
76580
78275
  * An `aria-label` or `aria-labelledby` on the host names the table too, and
@@ -76676,6 +78371,8 @@ export type CustomElementsSolidJs = {
76676
78371
  * - `checkbox-mark-dash`: Added to `checkbox-mark` while it draws the dash, which it keeps until its box is checked.
76677
78372
  * - `checkbox-mark-indeterminate`: Added to `checkbox-mark` while only some rows are selected.
76678
78373
  * - `empty`: The text shown when there are no rows.
78374
+ * - `grid-end`: An empty box after the rows, in a `grid` table. Tab focuses it on its way out of the table, so the key leaves from the end.
78375
+ * - `grid-start`: An empty box before the rows, in a `grid` table. Shift with Tab focuses it on its way out of the table.
76679
78376
  * - `head`: The row that holds the column headings. It has `display: contents`, so it takes no space of its own.
76680
78377
  * - `live`: A live region that repeats the empty and loading text, so screen readers announce it when it changes. Visually hidden in the styled tier.
76681
78378
  * - `loading`: The text shown while the rows are loading.
@@ -76709,7 +78406,8 @@ export type CustomElementsSolidJs = {
76709
78406
  * of the row's own, and Control, Command or Shift open it the way they open a
76710
78407
  * link. A drag that selects text follows nothing. A row in a table is not a
76711
78408
  * stop of its own, so put the same link in a cell, usually the row header,
76712
- * which is what the keyboard and a screen reader reach.
78409
+ * which is what the keyboard and a screen reader reach. In a `grid` table,
78410
+ * Enter on any cell of the row follows it as well.
76713
78411
  *
76714
78412
  * ## Attributes & Properties
76715
78413
  *
@@ -78362,6 +80060,7 @@ export type CustomElementsSolidJs = {
78362
80060
  *
78363
80061
  * These can be used to apply styling when a component is in a given state.
78364
80062
  *
80063
+ * - `blank`: While no time is chosen.
78365
80064
  * - `invalid`: While `invalid` is set or `feedback` says what is wrong.
78366
80065
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
78367
80066
  */
@@ -78588,7 +80287,8 @@ export type CustomElementsSolidJs = {
78588
80287
  *
78589
80288
  * **Each item runs its own timer.** A timer held by the region would restart
78590
80289
  * with each new message, and the last of three messages would stay for nine
78591
- * seconds.
80290
+ * seconds. It pauses while the pointer or focus is on the message, and while
80291
+ * the page is hidden, so a message is not spent in a background tab.
78592
80292
  *
78593
80293
  * **Each message is an `alertdialog` named by its words**, which is how a reader
78594
80294
  * who moves into the stack hears which message they are on. Give it a
@@ -79266,6 +80966,10 @@ export type CustomElementsSolidJs = {
79266
80966
  * focus counts as a control, including your own elements. A child that takes no
79267
80967
  * focus, such as a divider, is skipped. A menu is reached at its trigger.
79268
80968
  *
80969
+ * A Divider in the toolbar is a separator across the toolbar's axis, as React
80970
+ * Aria's is: vertical in a horizontal toolbar and horizontal in a vertical
80971
+ * one, without an `orientation` of its own.
80972
+ *
79269
80973
  * Controls inside a plain wrapper, such as a `Button Group`, are each a stop
79270
80974
  * of the toolbar's own, as React Aria's toolbar flattens a group: the arrows
79271
80975
  * walk through the group's buttons and on past it, and the group takes no tab
@@ -79274,6 +80978,28 @@ export type CustomElementsSolidJs = {
79274
80978
  * The arrows wrap from the last control to the first. Set `stop-at-ends` to
79275
80979
  * keep them at the ends, as Radix's `loop` set to false does.
79276
80980
  *
80981
+ * **Keyboard.** Tab enters the toolbar on the control that last had focus, the
80982
+ * first control at the start, and the next Tab leaves it.
80983
+ *
80984
+ * | Key | What it does |
80985
+ * |---|---|
80986
+ * | Right | Moves to the next control in a horizontal toolbar, from the last back to the first. |
80987
+ * | Left | Moves to the control before in a horizontal toolbar, from the first round to the last. |
80988
+ * | Down, Up | The same in a vertical toolbar. |
80989
+ * | Home, End | Moves to the first or the last control. |
80990
+ *
80991
+ * Left and Right swap on a right-to-left page, where the first control is on
80992
+ * the right. The arrows across the toolbar's axis are left to the control that
80993
+ * has focus, so a radio-style toggle group or a select answers them itself.
80994
+ * The toolbar is `role="toolbar"` with `aria-orientation`, named by `label`.
80995
+ *
80996
+ * The stop moves through a control's own `focusable` property where it has
80997
+ * one, as Button, Select and Toggle Group do. A control without one has
80998
+ * `tabindex` written on the element that takes focus: a native element
80999
+ * itself, or the control inside a custom element's open shadow root, so the
81000
+ * host keeps the markup you rendered. Only a custom element whose shadow root
81001
+ * is closed takes it on the host.
81002
+ *
79277
81003
  * A toggle group of pressed buttons, `selection-mode="multiple"`, is walked
79278
81004
  * through the same way, each toggle a stop on the toolbar's axis, as React
79279
81005
  * Aria's toolbar walks its toggle buttons. Another nested composite, such as a
@@ -79337,6 +81063,9 @@ export type CustomElementsSolidJs = {
79337
81063
  *
79338
81064
  * These can be used to apply styling when a component is in a given state.
79339
81065
  *
81066
+ * - `horizontal`: The controls run along a row, which is the default.
81067
+ * - `nested`: The toolbar is a group inside another toolbar, which owns the keys and the tab stop.
81068
+ * - `vertical`: The controls run down a column, under `orientation="vertical"`.
79340
81069
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
79341
81070
  */
79342
81071
  "helix-headless-toolbar": Partial<
@@ -81143,6 +82872,14 @@ export type CustomElementsSolidJs = {
81143
82872
  *
81144
82873
  * These can be used to apply styling when a component is in a given state.
81145
82874
  *
82875
+ * - `ended`: Playback reached the end, until it starts again or the source changes.
82876
+ * - `error`: The source could not be played, and `failure` shows.
82877
+ * - `fullscreen`: The player fills the screen.
82878
+ * - `idle`: The video plays and the user has been still for `idle-delay`, so the bar hides.
82879
+ * - `muted`: The sound is off.
82880
+ * - `paused`: Playback is paused, which is where every player starts.
82881
+ * - `playing`: Playback runs, waiting for data included.
82882
+ * - `waiting`: Playback stopped to wait for more data, and `loading` shows.
81146
82883
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
81147
82884
  */
81148
82885
  "helix-headless-video": Partial<
@@ -81368,6 +83105,8 @@ export type CustomCssProperties = {
81368
83105
  "--bar-chart-secondary"?: (string) | undefined;
81369
83106
  /** 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. */
81370
83107
  "--chart-bar-wash"?: (string) | undefined;
83108
+ /** Written on the control inside each toggle button of a group with `selection-mode`: `1` while it is pressed and `0` while it is not. Read it in a `::part(button)` rule to draw the pressed look. */
83109
+ "--button-group-pressed"?: (string) | undefined;
81371
83110
  /** Space between slides. Your stylesheet sets it, and the component uses it to measure the run. */
81372
83111
  "--carousel-gap"?: (string) | undefined;
81373
83112
  /** The size of one pane. Your stylesheet sets it, and the component uses it to measure the run. */