@fusion.dev/helix-headless 0.0.0-dev → 0.0.3

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 (210) hide show
  1. package/custom-elements.json +4513 -4483
  2. package/dist/accordion/item/accordion-item.d.ts +13 -15
  3. package/dist/accordion/item/accordion-item.js +15 -17
  4. package/dist/announcement/root/announcement-root.d.ts +7 -25
  5. package/dist/announcement/root/announcement-root.js +7 -20
  6. package/dist/app-header/root/app-header-root.d.ts +10 -17
  7. package/dist/app-header/root/app-header-root.js +9 -18
  8. package/dist/avatar/group/avatar-group.d.ts +10 -19
  9. package/dist/avatar/group/avatar-group.js +12 -17
  10. package/dist/avatar/root/avatar-root.d.ts +8 -8
  11. package/dist/avatar/root/avatar-root.js +19 -20
  12. package/dist/badge/root/badge-root.d.ts +6 -6
  13. package/dist/badge/root/badge-root.js +13 -13
  14. package/dist/bar-chart/root/bar-chart-root.d.ts +21 -29
  15. package/dist/bar-chart/root/bar-chart-root.js +42 -57
  16. package/dist/breadcrumbs/breadcrumb/breadcrumb.d.ts +12 -18
  17. package/dist/breadcrumbs/breadcrumb/breadcrumb.js +13 -16
  18. package/dist/breadcrumbs/root/breadcrumbs-root.d.ts +9 -28
  19. package/dist/breadcrumbs/root/breadcrumbs-root.js +9 -28
  20. package/dist/button/root/button-root.d.ts +84 -94
  21. package/dist/button/root/button-root.js +82 -92
  22. package/dist/callout/root/callout-root.d.ts +4 -5
  23. package/dist/carousel/root/carousel-root.d.ts +59 -71
  24. package/dist/carousel/root/carousel-root.js +73 -101
  25. package/dist/chat/composer/chat-composer.d.ts +29 -33
  26. package/dist/chat/composer/chat-composer.js +40 -44
  27. package/dist/chat/message/chat-message.d.ts +25 -25
  28. package/dist/chat/message/chat-message.js +26 -26
  29. package/dist/chat/root/chat-root.d.ts +28 -41
  30. package/dist/chat/root/chat-root.js +27 -40
  31. package/dist/checkbox/root/checkbox-root.d.ts +10 -12
  32. package/dist/checkbox/root/checkbox-root.js +29 -35
  33. package/dist/checkbox-group/root/checkbox-group-root.d.ts +32 -45
  34. package/dist/checkbox-group/root/checkbox-group-root.js +53 -79
  35. package/dist/code-block/root/code-block-root.d.ts +3 -4
  36. package/dist/code-block/root/code-block-root.js +8 -12
  37. package/dist/color-input/root/color-input-root.d.ts +36 -37
  38. package/dist/color-input/root/color-input-root.js +29 -34
  39. package/dist/color-picker/color.d.ts +7 -8
  40. package/dist/color-picker/color.js +7 -8
  41. package/dist/color-picker/root/color-picker-root.d.ts +55 -57
  42. package/dist/color-picker/root/color-picker-root.js +60 -64
  43. package/dist/combobox/root/combobox-root.d.ts +53 -58
  44. package/dist/combobox/root/combobox-root.js +85 -94
  45. package/dist/command/root/command-root.d.ts +8 -8
  46. package/dist/command/root/command-root.js +29 -33
  47. package/dist/copy-button/root/copy-button-root.d.ts +21 -24
  48. package/dist/copy-button/root/copy-button-root.js +25 -35
  49. package/dist/data-table/root/data-table-root.d.ts +77 -76
  50. package/dist/data-table/root/data-table-root.js +95 -84
  51. package/dist/data-table/root/order.d.ts +2 -2
  52. package/dist/data-table/root/order.js +1 -3
  53. package/dist/date-input/root/date-input-root.d.ts +88 -93
  54. package/dist/date-input/root/date-input-root.js +147 -158
  55. package/dist/date-picker/root/date-picker-root.d.ts +75 -83
  56. package/dist/date-picker/root/date-picker-root.js +120 -143
  57. package/dist/dialog/root/dialog-root.d.ts +41 -24
  58. package/dist/dialog/root/dialog-root.js +47 -24
  59. package/dist/divider/root/divider-root.d.ts +5 -6
  60. package/dist/divider/root/divider-root.js +4 -5
  61. package/dist/donut-chart/root/donut-chart-root.d.ts +22 -25
  62. package/dist/donut-chart/root/donut-chart-root.js +37 -51
  63. package/dist/drawer/root/drawer-root.d.ts +24 -29
  64. package/dist/drawer/root/drawer-root.js +15 -22
  65. package/dist/drilldown/item/drilldown-item.d.ts +14 -14
  66. package/dist/drilldown/item/drilldown-item.js +24 -26
  67. package/dist/drilldown/root/drilldown-root.d.ts +8 -10
  68. package/dist/drilldown/root/drilldown-root.js +6 -7
  69. package/dist/element-events.generated.js +1 -1
  70. package/dist/file-input/root/file-input-root.d.ts +20 -24
  71. package/dist/file-input/root/file-input-root.js +42 -57
  72. package/dist/format-date/root/format-date-root.js +1 -1
  73. package/dist/heatmap/root/buckets.d.ts +8 -8
  74. package/dist/heatmap/root/buckets.js +8 -8
  75. package/dist/heatmap/root/heatmap-root.d.ts +57 -63
  76. package/dist/heatmap/root/heatmap-root.js +72 -83
  77. package/dist/icon/root/icon-root.d.ts +4 -4
  78. package/dist/icon/root/icon-root.js +9 -9
  79. package/dist/icon-button/root/icon-button-root.d.ts +4 -6
  80. package/dist/icon-button/root/icon-button-root.js +4 -6
  81. package/dist/image/root/image-root.d.ts +49 -59
  82. package/dist/image/root/image-root.js +55 -65
  83. package/dist/index.d.ts +5 -5
  84. package/dist/index.js +5 -5
  85. package/dist/input/root/input-root.d.ts +61 -85
  86. package/dist/input/root/input-root.js +79 -106
  87. package/dist/kbd/root/kbd-root.d.ts +8 -7
  88. package/dist/kbd/root/kbd-root.js +71 -11
  89. package/dist/legend/root/legend-root.d.ts +1 -1
  90. package/dist/legend/root/legend-root.js +4 -5
  91. package/dist/line-chart/root/line-chart-root.d.ts +26 -30
  92. package/dist/line-chart/root/line-chart-root.js +10 -10
  93. package/dist/list/item/list-item.d.ts +14 -18
  94. package/dist/list/item/list-item.js +18 -22
  95. package/dist/list/root/list-root.d.ts +4 -4
  96. package/dist/list/root/list-root.js +3 -3
  97. package/dist/listbox/root/listbox-root.d.ts +31 -58
  98. package/dist/listbox/root/listbox-root.js +66 -109
  99. package/dist/megamenu/root/megamenu-root.d.ts +34 -35
  100. package/dist/megamenu/root/megamenu-root.js +53 -58
  101. package/dist/menu/item/menu-item.d.ts +39 -53
  102. package/dist/menu/item/menu-item.js +50 -64
  103. package/dist/menu/root/menu-root.d.ts +30 -40
  104. package/dist/menu/root/menu-root.js +49 -82
  105. package/dist/meter/root/meter-root.d.ts +49 -53
  106. package/dist/meter/root/meter-root.js +22 -27
  107. package/dist/navigation/root/navigation-root.js +11 -19
  108. package/dist/notifications/notification/notification.d.ts +16 -22
  109. package/dist/notifications/notification/notification.js +21 -27
  110. package/dist/notifications/root/notifications-root.d.ts +31 -39
  111. package/dist/notifications/root/notifications-root.js +41 -52
  112. package/dist/number-input/root/number-input-root.d.ts +31 -33
  113. package/dist/number-input/root/number-input-root.js +37 -39
  114. package/dist/option/root/option-root.d.ts +73 -74
  115. package/dist/option/root/option-root.js +62 -64
  116. package/dist/outline/root/outline-root.d.ts +38 -44
  117. package/dist/outline/root/outline-root.js +66 -82
  118. package/dist/pagination/root/pagination-root.d.ts +87 -92
  119. package/dist/pagination/root/pagination-root.js +116 -123
  120. package/dist/pagination/size/pagination-size.d.ts +31 -50
  121. package/dist/pagination/size/pagination-size.js +35 -55
  122. package/dist/pagination/summary/pagination-summary.d.ts +12 -12
  123. package/dist/pagination/summary/pagination-summary.js +18 -18
  124. package/dist/pin-input/root/pin-input-root.d.ts +53 -70
  125. package/dist/pin-input/root/pin-input-root.js +74 -94
  126. package/dist/popover/root/popover-root.d.ts +15 -20
  127. package/dist/popover/root/popover-root.js +19 -36
  128. package/dist/progress/root/progress-root.d.ts +12 -14
  129. package/dist/progress/root/progress-root.js +22 -25
  130. package/dist/qr-code/root/qr-code-root.d.ts +11 -11
  131. package/dist/qr-code/root/qr-code-root.js +12 -14
  132. package/dist/radio/group/radio-group.js +19 -26
  133. package/dist/radio/root/radio-root.d.ts +12 -13
  134. package/dist/radio/root/radio-root.js +12 -13
  135. package/dist/rating/root/rating-root.d.ts +25 -30
  136. package/dist/rating/root/rating-root.js +43 -50
  137. package/dist/scroll-area/root/scroll-area-root.d.ts +11 -14
  138. package/dist/scroll-area/root/scroll-area-root.js +39 -33
  139. package/dist/select/root/select-root.d.ts +7 -12
  140. package/dist/select/root/select-root.js +40 -55
  141. package/dist/slider/root/slider-root.d.ts +53 -60
  142. package/dist/slider/root/slider-root.js +74 -85
  143. package/dist/sparkline/root/sparkline-root.d.ts +43 -47
  144. package/dist/sparkline/root/sparkline-root.js +23 -32
  145. package/dist/speed-dial/item/speed-dial-item.d.ts +6 -6
  146. package/dist/speed-dial/item/speed-dial-item.js +9 -9
  147. package/dist/speed-dial/root/speed-dial-root.d.ts +21 -25
  148. package/dist/speed-dial/root/speed-dial-root.js +32 -40
  149. package/dist/splitter/root/splitter-root.d.ts +98 -111
  150. package/dist/splitter/root/splitter-root.js +96 -123
  151. package/dist/stat/root/stat-root.d.ts +2 -7
  152. package/dist/stat/root/stat-root.js +0 -5
  153. package/dist/steps/step/step.d.ts +19 -24
  154. package/dist/steps/step/step.js +27 -32
  155. package/dist/switch/root/switch-root.js +2 -2
  156. package/dist/table/column/table-column.d.ts +54 -60
  157. package/dist/table/column/table-column.js +95 -68
  158. package/dist/table/root/table-root.d.ts +5 -6
  159. package/dist/table/root/table-root.js +7 -10
  160. package/dist/tabs/panel/tab-panel.d.ts +21 -25
  161. package/dist/tabs/panel/tab-panel.js +25 -29
  162. package/dist/tabs/root/tabs-root.d.ts +25 -34
  163. package/dist/tabs/root/tabs-root.js +22 -28
  164. package/dist/tabs/tab/tab.d.ts +12 -12
  165. package/dist/tabs/tab/tab.js +19 -20
  166. package/dist/textarea/root/textarea-root.d.ts +36 -36
  167. package/dist/textarea/root/textarea-root.js +43 -47
  168. package/dist/time-input/root/time-input-root.d.ts +58 -68
  169. package/dist/time-input/root/time-input-root.js +62 -77
  170. package/dist/time-picker/root/time-picker-root.d.ts +73 -79
  171. package/dist/time-picker/root/time-picker-root.js +72 -84
  172. package/dist/timeline/item/timeline-item.d.ts +8 -11
  173. package/dist/timeline/item/timeline-item.js +8 -11
  174. package/dist/timeline/root/timeline-root.d.ts +5 -7
  175. package/dist/timeline/root/timeline-root.js +5 -7
  176. package/dist/toast/item/toast-item.d.ts +9 -27
  177. package/dist/toast/item/toast-item.js +19 -41
  178. package/dist/toast/root/toast-root.d.ts +10 -14
  179. package/dist/toast/root/toast-root.js +4 -5
  180. package/dist/toggle/group/toggle-group.d.ts +6 -15
  181. package/dist/toggle/group/toggle-group.js +21 -36
  182. package/dist/toggle/root/toggle-root.d.ts +26 -27
  183. package/dist/toggle/root/toggle-root.js +30 -31
  184. package/dist/toolbar/root/toolbar-root.d.ts +7 -10
  185. package/dist/toolbar/root/toolbar-root.js +10 -14
  186. package/dist/tooltip/root/tooltip-root.d.ts +52 -59
  187. package/dist/tooltip/root/tooltip-root.js +98 -93
  188. package/dist/tour/root/tour-root.d.ts +19 -23
  189. package/dist/tour/root/tour-root.js +31 -41
  190. package/dist/tour/stop/tour-stop.d.ts +14 -15
  191. package/dist/tour/stop/tour-stop.js +31 -34
  192. package/dist/tree/item/tree-item.d.ts +30 -35
  193. package/dist/tree/item/tree-item.js +43 -55
  194. package/dist/tree/root/tree-root.d.ts +7 -10
  195. package/dist/tree/root/tree-root.js +33 -42
  196. package/dist/trend/root/trend-root.d.ts +3 -5
  197. package/dist/trend/root/trend-root.js +5 -9
  198. package/dist/video/root/video-root.d.ts +100 -124
  199. package/dist/video/root/video-root.js +142 -176
  200. package/dist/video-playlist/item/video-playlist-item.d.ts +16 -16
  201. package/dist/video-playlist/item/video-playlist-item.js +24 -24
  202. package/dist/video-playlist/menu/video-playlist-menu.d.ts +5 -8
  203. package/dist/video-playlist/menu/video-playlist-menu.js +20 -29
  204. package/dist/video-playlist/root/video-playlist-root.d.ts +16 -11
  205. package/dist/video-playlist/root/video-playlist-root.js +21 -25
  206. package/dist/virtual-list/root/virtual-list-root.d.ts +8 -12
  207. package/dist/virtual-list/root/virtual-list-root.js +11 -16
  208. package/jsx.d.ts +9797 -12561
  209. package/package.json +6 -6
  210. package/vue.d.ts +2684 -3228
@@ -39,9 +39,19 @@ export declare class HelixHeadlessDrilldownItem extends HelixElement {
39
39
  */
40
40
  disabled: boolean;
41
41
  /**
42
- * Identifies the row to whatever is listening.
42
+ * Whether this row holds the region's tab stop. Written by the stack.
43
+ *
44
+ * A drill-down keeps one stop and moves within it on the arrows, so every
45
+ * other row is at `-1`. Leave it off every row, including the first, and
46
+ * nothing in the region is tab-reachable: the keyboard cannot get in without
47
+ * first clicking something with a pointer.
48
+ *
49
+ * No attribute, the same as `Button`'s: this is coordination between
50
+ * elements, and writing `tabindex` onto a host the consumer rendered is a
51
+ * change a React consumer's hydration reports and does not patch up. The stop
52
+ * lands inside this shadow root instead.
43
53
  */
44
- value: string;
54
+ focusable: boolean;
45
55
  /**
46
56
  * @internal Read by a parent to identify its children across the light DOM,
47
57
  * which is cheaper than `instanceof` and is why this is public rather than
@@ -61,19 +71,9 @@ export declare class HelixHeadlessDrilldownItem extends HelixElement {
61
71
  */
62
72
  showingPage: boolean;
63
73
  /**
64
- * Whether this row holds the region's tab stop. Written by the stack.
65
- *
66
- * A drill-down keeps one stop and moves within it on the arrows, so every
67
- * other row is at `-1`. Every row was, including the first, which left
68
- * nothing in the region tab-reachable at all: the keyboard could not get in
69
- * without first clicking something with a pointer.
70
- *
71
- * No attribute, the same as `Button`'s: this is coordination between
72
- * elements, and writing `tabindex` onto a host the consumer rendered is a
73
- * change a React consumer's hydration reports and does not patch up. The stop
74
- * lands inside this shadow root instead.
74
+ * Identifies the row to whatever is listening.
75
75
  */
76
- focusable: boolean;
76
+ value: string;
77
77
  /** Moves focus onto the row itself. */
78
78
  focusItem(): void;
79
79
  /** Announces that this row was chosen. */
@@ -48,9 +48,19 @@ let HelixHeadlessDrilldownItem = class HelixHeadlessDrilldownItem extends HelixE
48
48
  */
49
49
  this.disabled = false;
50
50
  /**
51
- * Identifies the row to whatever is listening.
51
+ * Whether this row holds the region's tab stop. Written by the stack.
52
+ *
53
+ * A drill-down keeps one stop and moves within it on the arrows, so every
54
+ * other row is at `-1`. Leave it off every row, including the first, and
55
+ * nothing in the region is tab-reachable: the keyboard cannot get in without
56
+ * first clicking something with a pointer.
57
+ *
58
+ * No attribute, the same as `Button`'s: this is coordination between
59
+ * elements, and writing `tabindex` onto a host the consumer rendered is a
60
+ * change a React consumer's hydration reports and does not patch up. The stop
61
+ * lands inside this shadow root instead.
52
62
  */
53
- this.value = '';
63
+ this.focusable = false;
54
64
  /**
55
65
  * @internal Read by a parent to identify its children across the light DOM,
56
66
  * which is cheaper than `instanceof` and is why this is public rather than
@@ -70,19 +80,9 @@ let HelixHeadlessDrilldownItem = class HelixHeadlessDrilldownItem extends HelixE
70
80
  */
71
81
  this.showingPage = false;
72
82
  /**
73
- * Whether this row holds the region's tab stop. Written by the stack.
74
- *
75
- * A drill-down keeps one stop and moves within it on the arrows, so every
76
- * other row is at `-1`. Every row was, including the first, which left
77
- * nothing in the region tab-reachable at all: the keyboard could not get in
78
- * without first clicking something with a pointer.
79
- *
80
- * No attribute, the same as `Button`'s: this is coordination between
81
- * elements, and writing `tabindex` onto a host the consumer rendered is a
82
- * change a React consumer's hydration reports and does not patch up. The stop
83
- * lands inside this shadow root instead.
83
+ * Identifies the row to whatever is listening.
84
84
  */
85
- this.focusable = false;
85
+ this.value = '';
86
86
  }
87
87
  /** Moves focus onto the row itself. */
88
88
  focusItem() {
@@ -104,16 +104,14 @@ let HelixHeadlessDrilldownItem = class HelixHeadlessDrilldownItem extends HelixE
104
104
  }
105
105
  /* A real `<button>`, and `role="menuitem"` on it.
106
106
  *
107
- * It was a `<div role="button">` with a click handler and nothing else, so
108
- * the row could not be activated from the keyboard at all: Enter and Space
109
- * are behavior the platform gives a real button and gives nothing else,
110
- * and neither was handled here. Same argument `Button` makes for rendering
111
- * one rather than reproducing it.
107
+ * A `<div role="button">` with a click handler cannot be activated from the
108
+ * keyboard: Enter and Space are behavior the platform gives a real button
109
+ * and gives nothing else. Same argument `Button` makes for rendering one
110
+ * rather than reproducing it.
112
111
  *
113
112
  * `menuitem` because the stack says `role="menu"`, and a menu whose
114
- * children are buttons is not a menu: the roles contradicted each other and
115
- * a reader was told the count of items by one and the kind of them by the
116
- * other.
113
+ * children are buttons is not a menu: a reader would be told the count of
114
+ * items by one role and the kind of them by the other.
117
115
  *
118
116
  * `aria-disabled` rather than `disabled`, so a row that cannot be chosen is
119
117
  * still reachable and still announces why. `select()` is what refuses. */
@@ -135,8 +133,8 @@ __decorate([
135
133
  property({ reflect: true, type: Boolean })
136
134
  ], HelixHeadlessDrilldownItem.prototype, "disabled", void 0);
137
135
  __decorate([
138
- property()
139
- ], HelixHeadlessDrilldownItem.prototype, "value", void 0);
136
+ property({ attribute: false })
137
+ ], HelixHeadlessDrilldownItem.prototype, "focusable", void 0);
140
138
  __decorate([
141
139
  property({ attribute: false })
142
140
  ], HelixHeadlessDrilldownItem.prototype, "onPage", void 0);
@@ -144,8 +142,8 @@ __decorate([
144
142
  property({ attribute: false })
145
143
  ], HelixHeadlessDrilldownItem.prototype, "showingPage", void 0);
146
144
  __decorate([
147
- property({ attribute: false })
148
- ], HelixHeadlessDrilldownItem.prototype, "focusable", void 0);
145
+ property()
146
+ ], HelixHeadlessDrilldownItem.prototype, "value", void 0);
149
147
  HelixHeadlessDrilldownItem = __decorate([
150
148
  customElement('helix-headless-drilldown-item')
151
149
  ], HelixHeadlessDrilldownItem);
@@ -61,12 +61,11 @@ export declare class HelixHeadlessDrilldown extends HelixHeadlessDrilldown_base
61
61
  * reader went deeper or came back. Without it a slide has to pick one
62
62
  * direction and be wrong half the time.
63
63
  *
64
- * **Undefined until a move has happened**, which is what "the last move" means
65
- * before there has been one. It defaulted to `forward` and was written on the
66
- * first update, which cost two things: an attribute on the host that a
67
- * consumer's server never sent, reported as a hydration mismatch, and a first
68
- * page that animated itself in on load, since an animation is not a transition
69
- * and the settle guard does not suppress it.
64
+ * **Undefined until a move has happened**, and never defaulted. A value
65
+ * written on the first update puts an attribute on the host that a consumer's
66
+ * server never sent, reported as a hydration mismatch, and animates the first
67
+ * page in on load: an animation is not a transition, so the settle guard does
68
+ * not suppress it.
70
69
  */
71
70
  private direction?;
72
71
  private readonly drilldown;
@@ -75,10 +74,9 @@ export declare class HelixHeadlessDrilldown extends HelixHeadlessDrilldown_base
75
74
  /**
76
75
  * Puts the region's one tab stop on the first row of the page showing.
77
76
  *
78
- * Every row rendered at `-1`, so nothing in the region was tab-reachable and
79
- * the keyboard could not get in at all without a pointer first. One row holds
80
- * the stop and the arrows move within, which is the roving pattern the
81
- * toolbar uses and the one a `menu` wants.
77
+ * One row holds the stop and the arrows move within, which is the roving
78
+ * pattern the toolbar uses and the one a `menu` wants. Every row at `-1` is
79
+ * a region the keyboard cannot get into at all without a pointer first.
82
80
  *
83
81
  * Called after every update, because the set changes with the page: drilling
84
82
  * in replaces the rows outright, and the stop has to land on rows that are
@@ -133,10 +133,9 @@ let HelixHeadlessDrilldown = class HelixHeadlessDrilldown extends MixinCollectio
133
133
  /**
134
134
  * Puts the region's one tab stop on the first row of the page showing.
135
135
  *
136
- * Every row rendered at `-1`, so nothing in the region was tab-reachable and
137
- * the keyboard could not get in at all without a pointer first. One row holds
138
- * the stop and the arrows move within, which is the roving pattern the
139
- * toolbar uses and the one a `menu` wants.
136
+ * One row holds the stop and the arrows move within, which is the roving
137
+ * pattern the toolbar uses and the one a `menu` wants. Every row at `-1` is
138
+ * a region the keyboard cannot get into at all without a pointer first.
140
139
  *
141
140
  * Called after every update, because the set changes with the page: drilling
142
141
  * in replaces the rows outright, and the stop has to land on rows that are
@@ -247,9 +246,9 @@ let HelixHeadlessDrilldown = class HelixHeadlessDrilldown extends MixinCollectio
247
246
  };
248
247
  __decorate([
249
248
  property()
250
- /* Not "Menu", which is what it was: this component's own description is built
251
- around not being one, and a default accessible name is the one place that
252
- claim reaches a reader. */
249
+ /* Not "Menu". This component's own description is built around not being one,
250
+ and a default accessible name is the one place that claim reaches a
251
+ reader. */
253
252
  ], HelixHeadlessDrilldown.prototype, "label", void 0);
254
253
  __decorate([
255
254
  property({ attribute: 'back-label' })
@@ -1,4 +1,4 @@
1
- /* Generated by `bun run element-events` from this package's manifest. Do not edit.
1
+ /* Generated by `bun run gen:element-events` from this package's manifest. Do not edit.
2
2
  *
3
3
  * Which events each tag dispatches, registered so the React prop audit can tell
4
4
  * a handler on the wrong element from one on the right one. See
@@ -9,10 +9,9 @@ declare const HelixHeadlessFileInput_base: (new (...args: any[]) => import("@fus
9
9
  * **A real `<input type="file">`, kept and made invisible rather than
10
10
  * replaced.** It is the only way to open a file picker: the dialog is a
11
11
  * privileged action a script cannot start on its own, and it opens for a click
12
- * on the input or on a `<label>` pointing at it. Every version of this component
13
- * that draws its own button ends up calling `.click()` on a hidden input
14
- * anyway, and then has two things a screen reader can find where there is one
15
- * control.
12
+ * on the input or on a `<label>` pointing at it. A component that draws its own
13
+ * button ends up calling `.click()` on a hidden input anyway, and then has two
14
+ * things a screen reader can find where there is one control.
16
15
  *
17
16
  * So the input stays, holds the label, the name, the validity and the focus,
18
17
  * and the visible trigger is a `<label for>` rather than a button. A label is
@@ -25,10 +24,10 @@ declare const HelixHeadlessFileInput_base: (new (...args: any[]) => import("@fus
25
24
  *
26
25
  * **Files are not a value a consumer can hand back.** Every other control here
27
26
  * takes the controlled and uncontrolled pair, and this one does not: a `FileList`
28
- * cannot be constructed from markup, and a consumer writing `value` on a file
29
- * input is the one thing browsers refuse outright, because a page that could
30
- * name a file could read it. So this element owns what was chosen, announces it,
31
- * and offers `clear()` for the one change a consumer can legitimately ask for.
27
+ * cannot be constructed from markup, and browsers refuse a consumer writing
28
+ * `value` on a file input outright, because a page that could name a file could
29
+ * read it. So this element owns what was chosen, announces it, and offers
30
+ * `clear()` for the one change a consumer can legitimately ask for.
32
31
  *
33
32
  * **The list under it is the control's own, not decoration.** A file input with
34
33
  * files chosen reports "3 files" and nothing else, which is unusable for
@@ -55,7 +54,6 @@ declare const HelixHeadlessFileInput_base: (new (...args: any[]) => import("@fus
55
54
  * @csspart field - The box that is pressed and dropped on.
56
55
  * @csspart file - One chosen file.
57
56
  * @csspart hint - Help under the field, while nothing is wrong.
58
- * @csspart icon - A glyph this component draws.
59
57
  * @csspart kind - What kind of file it is.
60
58
  * @csspart kind-dismiss - The remove button, when `dismissible`.
61
59
  * @csspart kind-dismiss-mark - The glyph on the dismiss control, where none is slotted.
@@ -77,28 +75,28 @@ export declare class HelixHeadlessFileInput extends HelixHeadlessFileInput_base
77
75
  * Which files the picker offers, as a native `accept` list.
78
76
  */
79
77
  accept: string;
80
- /**
81
- * Whether more than one file can be chosen.
82
- */
83
- multiple: boolean;
84
78
  /**
85
79
  * Which camera or microphone a mobile picker should offer, if any.
86
80
  */
87
81
  capture?: 'environment' | 'user';
88
- /**
89
- * What the trigger reads, where nothing is slotted into it.
90
- */
91
- triggerLabel: string;
92
82
  /**
93
83
  * Language tag the sizes are written in.
94
84
  *
95
85
  * Absent uses the runtime's own.
96
86
  */
97
87
  locale: string;
88
+ /**
89
+ * Whether more than one file can be chosen.
90
+ */
91
+ multiple: boolean;
98
92
  /**
99
93
  * What the control removing one file is called, per file.
100
94
  */
101
95
  removeLabel: string;
96
+ /**
97
+ * What the trigger reads, where nothing is slotted into it.
98
+ */
99
+ triggerLabel: string;
102
100
  /**
103
101
  * Whether something is being dragged over the field.
104
102
  *
@@ -175,15 +173,13 @@ export declare class HelixHeadlessFileInput extends HelixHeadlessFileInput_base
175
173
  * element saying two things and two methods would be two places to keep in
176
174
  * step. Both parts are written out rather than passed in, and that is not
177
175
  * style: a part name behind an interpolation is a part the manifest cannot
178
- * see, so `check:selectors` reported the stylesheet as matching nothing the
179
- * moment this took the name as an argument.
176
+ * see, so a stylesheet targeting it matches nothing.
180
177
  *
181
178
  * A method rather than a fragment inline, so a tier above can render its own,
182
- * wrap this one, pass it a property the base does not know about, or leave it
183
- * out, without reimplementing the whole template to do any of them. The tag is
184
- * interpolated rather than written, so `tier` resolves it: this renders the
185
- * headless element, and a styled subclass that sets `tier` renders the styled one
186
- * from the same template.
179
+ * wrap this one, or leave it out without reimplementing the whole template.
180
+ * The tag is interpolated rather than written, so `tier` resolves it: this
181
+ * renders the headless element, and a styled subclass that sets `tier`
182
+ * renders the styled one from the same template.
187
183
  */
188
184
  protected renderMeta(file: File): TemplateResult;
189
185
  protected render(): TemplateResult;
@@ -19,7 +19,7 @@ import '../../tag/index.js';
19
19
  * a thing.
20
20
  *
21
21
  * `Intl.NumberFormat` for the number rather than `toFixed`, so a decimal comma
22
- * lands where a decimal comma belongs. The unit is not localised with it: `MB`
22
+ * lands where a decimal comma belongs. The unit is not localized with it: `MB`
23
23
  * is written the same way in the places this ships, and `Intl`'s own byte units
24
24
  * carry no scale to pick from.
25
25
  */
@@ -62,10 +62,9 @@ const kind = (file) => {
62
62
  * **A real `<input type="file">`, kept and made invisible rather than
63
63
  * replaced.** It is the only way to open a file picker: the dialog is a
64
64
  * privileged action a script cannot start on its own, and it opens for a click
65
- * on the input or on a `<label>` pointing at it. Every version of this component
66
- * that draws its own button ends up calling `.click()` on a hidden input
67
- * anyway, and then has two things a screen reader can find where there is one
68
- * control.
65
+ * on the input or on a `<label>` pointing at it. A component that draws its own
66
+ * button ends up calling `.click()` on a hidden input anyway, and then has two
67
+ * things a screen reader can find where there is one control.
69
68
  *
70
69
  * So the input stays, holds the label, the name, the validity and the focus,
71
70
  * and the visible trigger is a `<label for>` rather than a button. A label is
@@ -78,10 +77,10 @@ const kind = (file) => {
78
77
  *
79
78
  * **Files are not a value a consumer can hand back.** Every other control here
80
79
  * takes the controlled and uncontrolled pair, and this one does not: a `FileList`
81
- * cannot be constructed from markup, and a consumer writing `value` on a file
82
- * input is the one thing browsers refuse outright, because a page that could
83
- * name a file could read it. So this element owns what was chosen, announces it,
84
- * and offers `clear()` for the one change a consumer can legitimately ask for.
80
+ * cannot be constructed from markup, and browsers refuse a consumer writing
81
+ * `value` on a file input outright, because a page that could name a file could
82
+ * read it. So this element owns what was chosen, announces it, and offers
83
+ * `clear()` for the one change a consumer can legitimately ask for.
85
84
  *
86
85
  * **The list under it is the control's own, not decoration.** A file input with
87
86
  * files chosen reports "3 files" and nothing else, which is unusable for
@@ -108,7 +107,6 @@ const kind = (file) => {
108
107
  * @csspart field - The box that is pressed and dropped on.
109
108
  * @csspart file - One chosen file.
110
109
  * @csspart hint - Help under the field, while nothing is wrong.
111
- * @csspart icon - A glyph this component draws.
112
110
  * @csspart kind - What kind of file it is.
113
111
  * @csspart kind-dismiss - The remove button, when `dismissible`.
114
112
  * @csspart kind-dismiss-mark - The glyph on the dismiss control, where none is slotted.
@@ -139,24 +137,24 @@ let HelixHeadlessFileInput = class HelixHeadlessFileInput extends MixinField(Hel
139
137
  * Which files the picker offers, as a native `accept` list.
140
138
  */
141
139
  this.accept = '';
142
- /**
143
- * Whether more than one file can be chosen.
144
- */
145
- this.multiple = false;
146
- /**
147
- * What the trigger reads, where nothing is slotted into it.
148
- */
149
- this.triggerLabel = 'Choose files';
150
140
  /**
151
141
  * Language tag the sizes are written in.
152
142
  *
153
143
  * Absent uses the runtime's own.
154
144
  */
155
145
  this.locale = '';
146
+ /**
147
+ * Whether more than one file can be chosen.
148
+ */
149
+ this.multiple = false;
156
150
  /**
157
151
  * What the control removing one file is called, per file.
158
152
  */
159
153
  this.removeLabel = 'Remove';
154
+ /**
155
+ * What the trigger reads, where nothing is slotted into it.
156
+ */
157
+ this.triggerLabel = 'Choose files';
160
158
  /**
161
159
  * Whether something is being dragged over the field.
162
160
  *
@@ -295,12 +293,10 @@ let HelixHeadlessFileInput = class HelixHeadlessFileInput extends MixinField(Hel
295
293
  bind and what a native file input sends when the chosen files move: both,
296
294
  in that order, the way every other control here does.
297
295
 
298
- `input` was declared and never sent until 27 Aug 2026. The only one a
299
- consumer received was the inner `<input type="file">`'s own, composed out
300
- of this shadow root, so the documented event did not exist and an
301
- undocumented one arrived in its place. Found by sweeping every family
302
- that renders a native control rather than every family the first pass
303
- named. See 308. */
296
+ Without the explicit `input`, the only one a consumer receives is the
297
+ inner `<input type="file">`'s own, composed out of this shadow root, so
298
+ the documented event does not exist and an undocumented one arrives in
299
+ its place. */
304
300
  this.dispatchEvent(new Event('input', { bubbles: true, composed: true }));
305
301
  this.dispatchEvent(new Event('change', { bubbles: true, composed: false }));
306
302
  }
@@ -327,12 +323,10 @@ let HelixHeadlessFileInput = class HelixHeadlessFileInput extends MixinField(Hel
327
323
  Kept, as a decision rather than an omission. A phantom entry naming a file
328
324
  that does not exist is a thing every server reading this form has to know
329
325
  to discard, and the reason the platform sends one is compatibility with
330
- form encodings that predate `FormData` rather than anything a reader wants.
331
- `check:platform-fidelity` excuses `value` on this family already, for the
332
- neighbouring reason that the native one is `C:\fakepath\name`; this is
333
- the same component declining to reproduce a lie, one level down. Recorded
334
- here because a divergence nobody wrote down is indistinguishable from one
335
- nobody noticed. */
326
+ form encodings that predate `FormData`. `value` is excused on this family
327
+ already, for the neighboring reason that the native one is
328
+ `C:\fakepath\name`; this is the same component declining to reproduce a
329
+ lie, one level down. */
336
330
  this.internals.setFormValue(data);
337
331
  const control = this.control;
338
332
  if (!control) {
@@ -361,22 +355,15 @@ let HelixHeadlessFileInput = class HelixHeadlessFileInput extends MixinField(Hel
361
355
  /*
362
356
  * The hint goes under the field, and the list after both.
363
357
  *
364
- * It was under the list, on the reading that the field and its files are one
365
- * block and the hint describes the block. Three things say otherwise.
366
- *
367
358
  * A hint is instruction for the next action rather than a note about the
368
359
  * result: "up to 10MB each" is a rule for what may be added, and a rule read
369
- * after the outcome is a rule read too late.
360
+ * after the outcome is a rule read too late. Its position also has to be
361
+ * stable, and under the list it travels down the page as files are added, a
362
+ * card's height at a time. Every other field here puts it immediately under
363
+ * the control.
370
364
  *
371
- * Its position has to be stable, and this is the one that decides it. Under
372
- * the list the hint travels down the page as files are added, a card's height
373
- * at a time, so the one piece of guidance the control carries is never twice
374
- * in the same place. Every other field here puts it immediately under the
375
- * control, and a reader who has learned where to look should not have to
376
- * relearn it for this one.
377
- *
378
- * And feedback stands in place of the hint rather than beside it, so wherever
379
- * the hint is, an error is. An error about a file that was refused belongs
365
+ * Feedback stands in place of the hint rather than beside it, so wherever the
366
+ * hint is, an error is. An error about a file that was refused belongs
380
367
  * against the control that refused it, not below a list of the ones that were
381
368
  * not.
382
369
  */
@@ -388,15 +375,13 @@ let HelixHeadlessFileInput = class HelixHeadlessFileInput extends MixinField(Hel
388
375
  * element saying two things and two methods would be two places to keep in
389
376
  * step. Both parts are written out rather than passed in, and that is not
390
377
  * style: a part name behind an interpolation is a part the manifest cannot
391
- * see, so `check:selectors` reported the stylesheet as matching nothing the
392
- * moment this took the name as an argument.
378
+ * see, so a stylesheet targeting it matches nothing.
393
379
  *
394
380
  * A method rather than a fragment inline, so a tier above can render its own,
395
- * wrap this one, pass it a property the base does not know about, or leave it
396
- * out, without reimplementing the whole template to do any of them. The tag is
397
- * interpolated rather than written, so `tier` resolves it: this renders the
398
- * headless element, and a styled subclass that sets `tier` renders the styled one
399
- * from the same template.
381
+ * wrap this one, or leave it out without reimplementing the whole template.
382
+ * The tag is interpolated rather than written, so `tier` resolves it: this
383
+ * renders the headless element, and a styled subclass that sets `tier`
384
+ * renders the styled one from the same template.
400
385
  */
401
386
  renderMeta(file) {
402
387
  return html `<${this.tag('tag')} part="size"
@@ -435,7 +420,7 @@ let HelixHeadlessFileInput = class HelixHeadlessFileInput extends MixinField(Hel
435
420
  </div>
436
421
  <!-- The hint sits under the field and the list goes last, which is the
437
422
  one ordering decision this component makes differently from the way it
438
- reads. Reasoning below the template. -->
423
+ reads. Reasoning above renderMeta. -->
439
424
  ${this.renderHint()}${this.renderFeedback()}
440
425
  ${files.length === 0
441
426
  ? nothing
@@ -464,21 +449,21 @@ let HelixHeadlessFileInput = class HelixHeadlessFileInput extends MixinField(Hel
464
449
  __decorate([
465
450
  property()
466
451
  ], HelixHeadlessFileInput.prototype, "accept", void 0);
467
- __decorate([
468
- property({ reflect: true, type: Boolean })
469
- ], HelixHeadlessFileInput.prototype, "multiple", void 0);
470
452
  __decorate([
471
453
  property()
472
454
  ], HelixHeadlessFileInput.prototype, "capture", void 0);
473
- __decorate([
474
- property({ attribute: 'trigger-label' })
475
- ], HelixHeadlessFileInput.prototype, "triggerLabel", void 0);
476
455
  __decorate([
477
456
  property()
478
457
  ], HelixHeadlessFileInput.prototype, "locale", void 0);
458
+ __decorate([
459
+ property({ reflect: true, type: Boolean })
460
+ ], HelixHeadlessFileInput.prototype, "multiple", void 0);
479
461
  __decorate([
480
462
  property({ attribute: 'remove-label' })
481
463
  ], HelixHeadlessFileInput.prototype, "removeLabel", void 0);
464
+ __decorate([
465
+ property({ attribute: 'trigger-label' })
466
+ ], HelixHeadlessFileInput.prototype, "triggerLabel", void 0);
482
467
  __decorate([
483
468
  state()
484
469
  ], HelixHeadlessFileInput.prototype, "dropping", void 0);
@@ -142,7 +142,7 @@ let HelixHeadlessFormatDate = class HelixHeadlessFormatDate extends HelixElement
142
142
  ordinary reasons: built in `firstUpdated` alone this comes back
143
143
  permanently dead the first time a list is reordered. Guarded on
144
144
  `hasUpdated` because the first connection happens before there is anything
145
- to watch. See `check:observers`. */
145
+ to watch. */
146
146
  if (this.hasUpdated) {
147
147
  this.watch();
148
148
  }
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * Kept apart from the element because both answers are arithmetic and both are
5
5
  * easy to get subtly wrong in ways a picture hides: a threshold comparison off
6
- * by one boundary colours a handful of cells wrong out of ninety, and a fit
6
+ * by one boundary colors a handful of cells wrong out of ninety, and a fit
7
7
  * calculation off by one drops a day silently. Neither is visible in a
8
8
  * screenshot of a strip.
9
9
  */
@@ -18,7 +18,7 @@ export interface Reading {
18
18
  * **The cell's own tone wins**, and that ordering is the whole reason both
19
19
  * exist. A status page already knows a day was degraded; making it encode that
20
20
  * as a number so a component can decode it again is work for nothing, and the
21
- * encoding would have to agree with the thresholds or the colours would drift
21
+ * encoding would have to agree with the thresholds or the colors would drift
22
22
  * from the truth. A contribution graph has only counts and wants the buckets.
23
23
  *
24
24
  * Thresholds are read as lower bounds, in the order given, and the last one that
@@ -48,13 +48,13 @@ export declare const words: (source: string) => string[];
48
48
  * cannot show, which is why the element reflects the number and announces it.
49
49
  *
50
50
  * **What crosses the width is a column, and `rows` is how many cells are in
51
- * one.** This counted cells until 27 Aug 2026, which is the same number only
52
- * while `rows` is 1. At `rows="7"` a ten week graph came out at fifty-nine
51
+ * one.** Counting cells is the same number only while `rows` is 1. Divide by
52
+ * the wrong thing at `rows="7"` and a ten week graph comes back as fifty-nine
53
53
  * readings in a 592px box: eleven days dropped to fit a strip that wanted 156
54
- * pixels, and the fifty-nine were not a multiple of seven, so every column after
55
- * the cut was offset by a day and the day-of-week rows stopped meaning anything.
56
- * A calendar heatmap that silently rotates its own weekdays is worse than one
57
- * that drops a week, and both came from dividing by the wrong thing.
54
+ * pixels, and fifty-nine is not a multiple of seven, so every column after the
55
+ * cut is offset by a day and the day-of-week rows stop meaning anything. A
56
+ * calendar heatmap that silently rotates its own weekdays is worse than one
57
+ * that drops a week.
58
58
  *
59
59
  * The count is therefore always a whole number of columns, which is what keeps
60
60
  * the tail slice aligned.
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * Kept apart from the element because both answers are arithmetic and both are
5
5
  * easy to get subtly wrong in ways a picture hides: a threshold comparison off
6
- * by one boundary colours a handful of cells wrong out of ninety, and a fit
6
+ * by one boundary colors a handful of cells wrong out of ninety, and a fit
7
7
  * calculation off by one drops a day silently. Neither is visible in a
8
8
  * screenshot of a strip.
9
9
  */
@@ -13,7 +13,7 @@
13
13
  * **The cell's own tone wins**, and that ordering is the whole reason both
14
14
  * exist. A status page already knows a day was degraded; making it encode that
15
15
  * as a number so a component can decode it again is work for nothing, and the
16
- * encoding would have to agree with the thresholds or the colours would drift
16
+ * encoding would have to agree with the thresholds or the colors would drift
17
17
  * from the truth. A contribution graph has only counts and wants the buckets.
18
18
  *
19
19
  * Thresholds are read as lower bounds, in the order given, and the last one that
@@ -61,13 +61,13 @@ export const words = (source) => source.split(/[\s,]+/).filter((one) => one !==
61
61
  * cannot show, which is why the element reflects the number and announces it.
62
62
  *
63
63
  * **What crosses the width is a column, and `rows` is how many cells are in
64
- * one.** This counted cells until 27 Aug 2026, which is the same number only
65
- * while `rows` is 1. At `rows="7"` a ten week graph came out at fifty-nine
64
+ * one.** Counting cells is the same number only while `rows` is 1. Divide by
65
+ * the wrong thing at `rows="7"` and a ten week graph comes back as fifty-nine
66
66
  * readings in a 592px box: eleven days dropped to fit a strip that wanted 156
67
- * pixels, and the fifty-nine were not a multiple of seven, so every column after
68
- * the cut was offset by a day and the day-of-week rows stopped meaning anything.
69
- * A calendar heatmap that silently rotates its own weekdays is worse than one
70
- * that drops a week, and both came from dividing by the wrong thing.
67
+ * pixels, and fifty-nine is not a multiple of seven, so every column after the
68
+ * cut is offset by a day and the day-of-week rows stop meaning anything. A
69
+ * calendar heatmap that silently rotates its own weekdays is worse than one
70
+ * that drops a week.
71
71
  *
72
72
  * The count is therefore always a whole number of columns, which is what keeps
73
73
  * the tail slice aligned.