@fusion.dev/helix-headless 0.104.1 → 0.106.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 (167) hide show
  1. package/custom-elements.json +10386 -3813
  2. package/dist/accordion/item/accordion-item.d.ts +17 -16
  3. package/dist/accordion/root/accordion-root.d.ts +13 -17
  4. package/dist/announcement/root/announcement-root.d.ts +24 -31
  5. package/dist/app-header/root/app-header-root.d.ts +14 -14
  6. package/dist/area-chart/root/area-chart-root.d.ts +29 -48
  7. package/dist/avatar/group/avatar-group.d.ts +6 -8
  8. package/dist/avatar/root/avatar-root.d.ts +11 -11
  9. package/dist/badge/root/badge-root.d.ts +14 -15
  10. package/dist/bar-chart/root/bar-chart-root.d.ts +40 -44
  11. package/dist/blockquote/root/blockquote-root.d.ts +5 -7
  12. package/dist/breadcrumbs/breadcrumb/breadcrumb.d.ts +25 -33
  13. package/dist/breadcrumbs/root/breadcrumbs-root.d.ts +12 -11
  14. package/dist/button/root/button-root.d.ts +16 -17
  15. package/dist/button-group/root/button-group-root.d.ts +9 -10
  16. package/dist/callout/root/callout-root.d.ts +10 -15
  17. package/dist/canvas/edge/canvas-edge.d.ts +21 -21
  18. package/dist/canvas/node/canvas-node.d.ts +43 -45
  19. package/dist/canvas/root/canvas-root.d.ts +100 -99
  20. package/dist/card/root/card-root.d.ts +10 -12
  21. package/dist/carousel/root/carousel-root.d.ts +32 -33
  22. package/dist/chat/composer/chat-composer.d.ts +24 -26
  23. package/dist/chat/message/chat-message.d.ts +30 -33
  24. package/dist/chat/root/chat-root.d.ts +63 -80
  25. package/dist/checkbox/root/checkbox-root.d.ts +30 -32
  26. package/dist/checkbox-group/root/checkbox-group-root.d.ts +25 -25
  27. package/dist/code/root/code-root.d.ts +6 -10
  28. package/dist/code-block/root/code-block-root.d.ts +35 -48
  29. package/dist/color-input/root/color-input-root.d.ts +62 -56
  30. package/dist/color-input/root/color-input-root.js +3 -0
  31. package/dist/color-picker/root/color-picker-root.d.ts +61 -49
  32. package/dist/color-picker/root/color-picker-root.js +4 -0
  33. package/dist/combobox/root/combobox-root.d.ts +52 -53
  34. package/dist/command/root/command-root.d.ts +40 -40
  35. package/dist/command/root/command-root.js +1 -0
  36. package/dist/copy-button/root/copy-button-root.d.ts +24 -26
  37. package/dist/data-table/root/data-table-root.d.ts +106 -107
  38. package/dist/date-input/root/date-input-root.d.ts +54 -53
  39. package/dist/date-picker/root/date-picker-root.d.ts +25 -21
  40. package/dist/description-list/item/description-list-item.d.ts +7 -7
  41. package/dist/description-list/root/description-list-root.d.ts +10 -15
  42. package/dist/dialog/root/dialog-root.d.ts +22 -19
  43. package/dist/divider/root/divider-root.d.ts +12 -13
  44. package/dist/donut-chart/root/donut-chart-root.d.ts +19 -20
  45. package/dist/drawer/root/drawer-root.d.ts +19 -18
  46. package/dist/drilldown/item/drilldown-item.d.ts +28 -28
  47. package/dist/drilldown/root/drilldown-root.d.ts +22 -28
  48. package/dist/element-events.generated.js +19 -1
  49. package/dist/empty/root/empty-root.d.ts +16 -19
  50. package/dist/file-input/root/file-input-root.d.ts +32 -32
  51. package/dist/filter-input/chip/filter-chip.d.ts +36 -39
  52. package/dist/filter-input/field/filter-field.d.ts +25 -31
  53. package/dist/filter-input/menu/filter-menu.d.ts +50 -47
  54. package/dist/filter-input/operator/filter-operator.d.ts +15 -20
  55. package/dist/filter-input/root/filter-input-root.d.ts +80 -98
  56. package/dist/format-date/root/format-date-root.d.ts +19 -27
  57. package/dist/heatmap/root/heatmap-root.d.ts +40 -41
  58. package/dist/icon/root/icon-root.d.ts +21 -23
  59. package/dist/icon-button/root/icon-button-root.d.ts +12 -14
  60. package/dist/image/root/image-root.d.ts +30 -30
  61. package/dist/input/root/input-root.d.ts +36 -35
  62. package/dist/kbd/root/kbd-root.d.ts +13 -15
  63. package/dist/legend/root/legend-root.d.ts +18 -16
  64. package/dist/lightbox/item/lightbox-item.d.ts +13 -15
  65. package/dist/lightbox/root/lightbox-root.d.ts +40 -41
  66. package/dist/line-chart/root/line-chart-root.d.ts +20 -29
  67. package/dist/list/item/list-item.d.ts +17 -22
  68. package/dist/list/root/list-root.d.ts +6 -7
  69. package/dist/listbox/root/listbox-root.d.ts +42 -41
  70. package/dist/loader/root/loader-root.d.ts +16 -20
  71. package/dist/map/area/map-area.d.ts +48 -0
  72. package/dist/map/area/map-area.js +40 -0
  73. package/dist/map/buildings/map-buildings.d.ts +45 -0
  74. package/dist/map/buildings/map-buildings.js +37 -0
  75. package/dist/map/contours/map-contours.d.ts +61 -0
  76. package/dist/map/contours/map-contours.js +54 -0
  77. package/dist/map/index.d.ts +14 -0
  78. package/dist/map/index.js +10 -0
  79. package/dist/map/landcover/map-landcover.d.ts +47 -0
  80. package/dist/map/landcover/map-landcover.js +37 -0
  81. package/dist/map/marker/map-marker.d.ts +120 -0
  82. package/dist/map/marker/map-marker.js +109 -0
  83. package/dist/map/points/map-points.d.ts +139 -0
  84. package/dist/map/points/map-points.js +161 -0
  85. package/dist/map/position/map-position.d.ts +70 -0
  86. package/dist/map/position/map-position.js +89 -0
  87. package/dist/map/raster/map-raster.d.ts +84 -0
  88. package/dist/map/raster/map-raster.js +96 -0
  89. package/dist/map/root/map-root.d.ts +269 -52
  90. package/dist/map/root/map-root.js +473 -5
  91. package/dist/map/route/map-route.d.ts +73 -0
  92. package/dist/map/route/map-route.js +52 -0
  93. package/dist/map/terrain/map-terrain.d.ts +68 -0
  94. package/dist/map/terrain/map-terrain.js +58 -0
  95. package/dist/megamenu/root/megamenu-root.d.ts +27 -25
  96. package/dist/menu/item/menu-item.d.ts +30 -31
  97. package/dist/menu/root/menu-root.d.ts +25 -29
  98. package/dist/meter/root/meter-root.d.ts +22 -21
  99. package/dist/navigation/root/navigation-root.d.ts +13 -16
  100. package/dist/notifications/group/notification-group.d.ts +27 -28
  101. package/dist/notifications/notification/notification.d.ts +35 -42
  102. package/dist/notifications/root/notifications-root.d.ts +22 -24
  103. package/dist/number-input/root/number-input-root.d.ts +46 -50
  104. package/dist/object-inspector/root/object-inspector-root.d.ts +46 -58
  105. package/dist/option/group/option-group.d.ts +11 -11
  106. package/dist/option/root/option-root.d.ts +28 -33
  107. package/dist/outline/root/outline-root.d.ts +18 -17
  108. package/dist/pagination/root/pagination-root.d.ts +37 -39
  109. package/dist/pagination/size/pagination-size.d.ts +37 -43
  110. package/dist/pagination/summary/pagination-summary.d.ts +12 -14
  111. package/dist/pin-input/root/pin-input-root.d.ts +32 -38
  112. package/dist/popover/root/popover-root.d.ts +16 -21
  113. package/dist/progress/root/progress-root.d.ts +16 -14
  114. package/dist/qr-code/root/qr-code-root.d.ts +22 -25
  115. package/dist/quote/root/quote-root.d.ts +5 -6
  116. package/dist/radio/group/radio-group.d.ts +26 -28
  117. package/dist/radio/root/radio-root.d.ts +24 -28
  118. package/dist/rating/root/rating-root.d.ts +27 -30
  119. package/dist/scatter-chart/root/scatter-chart-root.d.ts +43 -55
  120. package/dist/scroll-area/root/scroll-area-root.d.ts +15 -21
  121. package/dist/select/root/select-root.d.ts +41 -44
  122. package/dist/skeleton/root/skeleton-root.d.ts +7 -8
  123. package/dist/skip-link/root/skip-link-root.d.ts +21 -28
  124. package/dist/slider/root/slider-root.d.ts +36 -39
  125. package/dist/sparkline/root/sparkline-root.d.ts +22 -28
  126. package/dist/speed-dial/item/speed-dial-item.d.ts +21 -21
  127. package/dist/speed-dial/root/speed-dial-root.d.ts +25 -27
  128. package/dist/splitter/root/splitter-root.d.ts +37 -41
  129. package/dist/stat/group/stat-group.d.ts +4 -4
  130. package/dist/stat/root/stat-root.d.ts +8 -9
  131. package/dist/steps/root/steps-root.d.ts +11 -14
  132. package/dist/steps/step/step.d.ts +22 -29
  133. package/dist/switch/root/switch-root.d.ts +20 -24
  134. package/dist/table/cell/table-cell.d.ts +18 -8
  135. package/dist/table/cell/table-cell.js +5 -1
  136. package/dist/table/column/table-column.d.ts +62 -55
  137. package/dist/table/root/table-root.d.ts +16 -17
  138. package/dist/table/row/table-row.d.ts +3 -3
  139. package/dist/tabs/panel/tab-panel.d.ts +3 -3
  140. package/dist/tabs/root/tabs-root.d.ts +19 -17
  141. package/dist/tabs/tab/tab.d.ts +6 -6
  142. package/dist/tag/root/tag-root.d.ts +11 -12
  143. package/dist/textarea/root/textarea-root.d.ts +29 -32
  144. package/dist/time-input/root/time-input-root.d.ts +70 -69
  145. package/dist/time-picker/root/time-picker-root.d.ts +58 -66
  146. package/dist/timeline/item/timeline-item.d.ts +18 -24
  147. package/dist/timeline/root/timeline-root.d.ts +13 -21
  148. package/dist/toast/item/toast-item.d.ts +21 -22
  149. package/dist/toast/root/toast-root.d.ts +18 -23
  150. package/dist/toggle/group/toggle-group.d.ts +23 -25
  151. package/dist/toggle/root/toggle-root.d.ts +8 -8
  152. package/dist/toolbar/root/toolbar-root.d.ts +7 -10
  153. package/dist/tooltip/root/tooltip-root.d.ts +41 -47
  154. package/dist/tour/root/tour-root.d.ts +24 -26
  155. package/dist/tour/stop/tour-stop.d.ts +39 -48
  156. package/dist/tree/item/tree-item.d.ts +23 -25
  157. package/dist/tree/root/tree-root.d.ts +13 -12
  158. package/dist/trend/root/trend-root.d.ts +18 -19
  159. package/dist/video/root/video-root.d.ts +108 -101
  160. package/dist/video-playlist/item/video-playlist-item.d.ts +23 -28
  161. package/dist/video-playlist/menu/video-playlist-menu.d.ts +17 -21
  162. package/dist/video-playlist/root/video-playlist-root.d.ts +21 -25
  163. package/dist/virtual-list/root/virtual-list-root.d.ts +27 -26
  164. package/package.json +5 -5
  165. package/types/jsx.d.ts +14011 -11983
  166. package/types/svelte.d.ts +10 -0
  167. package/types/vue.d.ts +2143 -1497
@@ -4,25 +4,23 @@ import { type PropertyValues, type TemplateResult } from 'lit';
4
4
  export type InputType = 'email' | 'number' | 'password' | 'search' | 'tel' | 'text' | 'url';
5
5
  declare const HelixHeadlessInput_base: (new (...args: any[]) => import("@fusion.dev/helix-core").MixinControllerValueInterface) & (new (...args: any[]) => import("@fusion.dev/helix-core").MixinFieldInterface) & typeof HelixFormElement;
6
6
  /**
7
- * @summary A single line of text a reader types into.
7
+ * @summary A field for a single line of text.
8
8
  *
9
9
  * @description
10
- * Renders a real `<input>`, so the caret, selection, autofill, spellcheck, the
11
- * password manager and the on-screen keyboard a phone chooses are all the
12
- * platform's. It serializes into the server's markup, so the field is usable
13
- * before any script loads.
10
+ * Renders a real `<input>`, so the caret, selection, autofill, spellcheck,
11
+ * password managers, and a phone's on-screen keyboard all work natively. The
12
+ * field is in the server markup, so it works before any script loads.
14
13
  *
15
- * **The input inside a shadow root submits nothing**, the form being on the
16
- * other side of the boundary. The host is form-associated instead and reports
17
- * its own value through `ElementInternals`, which also carries validity and
18
- * answers a form reset.
14
+ * An input inside a shadow root does not submit with a form outside it, so the
15
+ * host is form-associated and reports its value through `ElementInternals`.
16
+ * That also carries validity and handles a form reset.
19
17
  *
20
- * `value` and `defaultValue` are separate the way `checked` and
21
- * `defaultChecked` are: `value` is what is in the field now, `defaultValue` is
22
- * what the markup asked for and where a reset returns to.
18
+ * `value` and `defaultValue` work like `checked` and `defaultChecked`. `value`
19
+ * is what is in the field now, and `defaultValue` is the value from the markup,
20
+ * which a reset restores.
23
21
  *
24
- * **Validity is the platform's.** `type` and `required` are set on the real
25
- * input and its `validity` is copied onto the host.
22
+ * Validity comes from the browser. `type` and `required` are set on the real
23
+ * input, and its `validity` is copied to the host.
26
24
  *
27
25
  * @since 0.1.0
28
26
  * @status stable
@@ -33,34 +31,35 @@ declare const HelixHeadlessInput_base: (new (...args: any[]) => import("@fusion.
33
31
  * @slot end - After the text, for an icon or a unit.
34
32
  * @slot start - Before the text, for an icon or a prefix.
35
33
  *
36
- * @event {Event} change - Relayed from the input once the reader has finished.
37
- * @event {HelixBeforeChangeEvent} helix-before-change - Fired as the text changes, and cancelable.
38
- * @event {Event} input - Announced once the value has moved.
34
+ * @event {Event} change - Sent when the user finishes changing the value. Relayed from the native input.
35
+ * @event {HelixBeforeChangeEvent} helix-before-change - The text is about to change. Cancelable: cancel it to keep the current text.
36
+ * @event {Event} input - Fired as the value changes.
39
37
  *
40
38
  * @csspart clear - The button that empties the field.
41
- * @csspart control - The input itself.
42
- * @csspart feedback - What is wrong with it.
43
- * @csspart field - The box holding everything.
44
- * @csspart hint - Help under the field, while nothing is wrong.
45
- * @csspart label - The question, over the field.
39
+ * @csspart control - The native input.
40
+ * @csspart feedback - The message that says what is wrong with the value.
41
+ * @csspart field - The box around the input, its slots, and its buttons.
42
+ * @csspart hint - Help text under the field, shown while there is no feedback.
43
+ * @csspart label - The label above the field.
46
44
  * @csspart reveal - The button that shows and hides a password.
47
- * @csspart reveal-pressed - The reveal button while the password shows, beside `reveal`.
45
+ * @csspart reveal-pressed - The reveal button while the password is shown, added beside `reveal`.
48
46
  *
49
- * @cssstate invalid - While there is feedback to show: the platform's verdict, or the consumer's `feedback`.
47
+ * @cssstate invalid - The control has an error to show, from the browser's validation or from your `feedback`.
50
48
  */
51
49
  export declare class HelixHeadlessInput extends HelixHeadlessInput_base {
52
50
  protected readonly aria: AriaForwardController;
53
51
  /** Typed or dragged, so every edit is announced. See `announcesInput`. */
54
52
  protected readonly announcesInput = true;
55
53
  /**
56
- * What the browser may autofill here, as one of the platform's own tokens.
54
+ * What the browser may autofill in the field, as an HTML `autocomplete`
55
+ * token.
57
56
  *
58
57
  * Empty leaves the attribute off, which is the browser's default. Set it to
59
58
  * a token like `email` or `bday` to ask for autofill, or to `off` to refuse.
60
59
  */
61
60
  autocomplete: string;
62
61
  /**
63
- * Whether the field offers a button that empties it.
62
+ * Whether the field shows a button that empties it.
64
63
  *
65
64
  * Shown only while there is something to clear, because a control that does
66
65
  * nothing is worse than no control: a reader who presses it and sees no
@@ -69,7 +68,7 @@ export declare class HelixHeadlessInput extends HelixHeadlessInput_base {
69
68
  */
70
69
  clearable: boolean;
71
70
  /**
72
- * What the clear button is called, since an icon has no name of its own.
71
+ * The accessible name of the clear button, which shows only an icon.
73
72
  */
74
73
  clearLabel: string;
75
74
  /**
@@ -89,13 +88,14 @@ export declare class HelixHeadlessInput extends HelixHeadlessInput_base {
89
88
  */
90
89
  pattern: string;
91
90
  /**
92
- * Shown while the field is empty.
91
+ * The text shown while the field is empty.
93
92
  *
94
93
  * Not a label: it goes when typing starts.
95
94
  */
96
95
  placeholder: string;
97
96
  /**
98
- * Whether the field refuses input while still submitting its value.
97
+ * Whether the field blocks editing. A read-only field still submits its
98
+ * value.
99
99
  *
100
100
  * **The attribute is `readonly`, which is the platform's spelling.** A
101
101
  * camelCase property needs an explicit `attribute`, and dash-casing a word
@@ -128,7 +128,7 @@ export declare class HelixHeadlessInput extends HelixHeadlessInput_base {
128
128
  /** Focus is delegated to the input, so the host is never the focus target. */
129
129
  static shadowRootOptions: ShadowRootInit;
130
130
  /**
131
- * The caret and the selection, under the platform's own names.
131
+ * The direction of the selection, as the native input names it.
132
132
  *
133
133
  * The `<input>` is inside this shadow root, so a consumer had no way to ask
134
134
  * where the selection is, let alone move it: `querySelector` does not cross
@@ -149,8 +149,8 @@ export declare class HelixHeadlessInput extends HelixHeadlessInput_base {
149
149
  get selectionStart(): number;
150
150
  set selectionStart(at: number);
151
151
  /**
152
- * Selects a range, which is the one operation the three accessors above
153
- * cannot express between them.
152
+ * Selects the range from `start` to `end` in one call, which setting
153
+ * `selectionStart` and `selectionEnd` one at a time cannot always do.
154
154
  *
155
155
  * Setting `selectionStart` past the current `selectionEnd` drags the end
156
156
  * along, so the two writes a consumer would make in sequence do not compose
@@ -185,7 +185,7 @@ export declare class HelixHeadlessInput extends HelixHeadlessInput_base {
185
185
  private readonly handleChange;
186
186
  /** Reports the value and the validity the host stands behind. */
187
187
  private sync;
188
- /** Puts the caret in the field, the way a label pointing at one would. */
188
+ /** Puts the caret in the field, as clicking its label does. */
189
189
  focus(options?: FocusOptions): void;
190
190
  /** Selects everything in the field. */
191
191
  select(): void;
@@ -208,13 +208,14 @@ export declare class HelixHeadlessInput extends HelixHeadlessInput_base {
208
208
  */
209
209
  reveal: boolean;
210
210
  /**
211
- * What the reveal toggle is called.
211
+ * The accessible name of the reveal toggle.
212
212
  *
213
213
  * The state is `aria-pressed`, not this.
214
214
  */
215
215
  revealLabel: string;
216
216
  /**
217
- * What the field accepts, which decides the keyboard and the validation.
217
+ * The kind of text the field accepts. It sets the on-screen keyboard and the
218
+ * validation.
218
219
  *
219
220
  * **Not reflected.** Reflection exists so a selector can reach a value, and
220
221
  * no stylesheet in this repository selects on `type`. Reflecting it writes
@@ -4,21 +4,18 @@ import { type PropertyValues, type TemplateResult } from 'lit';
4
4
  * @summary A keyboard key or chord, set inline with text.
5
5
  *
6
6
  * @description
7
- * Renders a real `<kbd>`, so the passage still means "press this" to anything
8
- * reading the markup.
7
+ * Renders a `<kbd>` element.
9
8
  *
10
- * **One key per element, with `keys` as the stated exception.** A sequence is
11
- * several of these with the separator written between them as ordinary text,
12
- * because that separator is prose: "then" in a sequence, "plus" in a chord, and
13
- * a component inserting one would have to guess which.
9
+ * Each element holds one key, except when you use `keys`. For a sequence or a
10
+ * chord, write one element per key and put the separator between them as text,
11
+ * such as "then" or "plus".
14
12
  *
15
- * **`keys` exists because the glyphs were being typed by hand and were wrong.**
16
- * A literal `⌘K` in a template tells a reader on Windows to press a key their
17
- * keyboard does not have, and nothing catches it. Given `mod` this renders
18
- * `⌘K` on Apple and `Ctrl+K` everywhere else.
13
+ * `keys` renders the right glyphs for the platform. Given `mod`, it renders
14
+ * `⌘K` on Apple devices and `Ctrl+K` everywhere else. A `⌘K` typed into a
15
+ * template is wrong for anyone on Windows.
19
16
  *
20
- * **`within` is what binds it, and it is absent by default**, so this draws a
21
- * key and listens for nothing unless asked.
17
+ * The element binds the shortcut only when `within` is set. By default it draws
18
+ * the key and listens for nothing.
22
19
  *
23
20
  * @since 0.1.0
24
21
  * @status stable
@@ -28,13 +25,13 @@ import { type PropertyValues, type TemplateResult } from 'lit';
28
25
  *
29
26
  * @slot - The key's label, where `keys` is not set.
30
27
  *
31
- * @event {HelixShortcutEvent} helix-shortcut - Fired when the chord is pressed, and cancelable.
28
+ * @event {HelixShortcutEvent} helix-shortcut - The chord was pressed. Cancelable: cancel it to let the key press keep its usual effect.
32
29
  *
33
30
  * @csspart kbd - The key.
34
31
  */
35
32
  export declare class HelixHeadlessKbd extends HelixElement {
36
33
  /**
37
- * The chord, written plainly: `mod+k`, `shift+?`, `/`.
34
+ * The key or chord to show, such as `mod+k`, `shift+?`, or `/`.
38
35
  *
39
36
  * `mod` is the platform's own command modifier, which is the reason to write
40
37
  * a chord here rather than a glyph: it is the one token whose right answer
@@ -42,7 +39,8 @@ export declare class HelixHeadlessKbd extends HelixElement {
42
39
  */
43
40
  keys: string;
44
41
  /**
45
- * Where the chord is listened for, and whether it is listened for at all.
42
+ * Where the chord is listened for. `control` listens inside the control the
43
+ * key sits in, and `document` listens on the whole page.
46
44
  *
47
45
  * Unset draws a key and binds nothing.
48
46
  *
@@ -1,20 +1,22 @@
1
1
  import { HelixElement, SourceController } from '@fusion.dev/helix-core';
2
2
  import { type PropertyValues, type TemplateResult } from 'lit';
3
3
  /**
4
- * @summary The names a chart draws, each beside the color it is drawn in.
4
+ * @summary A list of the series in a chart, each name beside the color it is drawn in.
5
5
  *
6
6
  * @description
7
- * A legend is a list, so it is a list: not part of a chart, and shared by
8
- * whichever of them needs one. It takes its entries from the same table the
9
- * chart reads, through `for`, so the two cannot disagree.
7
+ * Renders a legend as a list, separate from any chart, so any chart can use
8
+ * one. Set `for` to the table the chart reads, and the legend takes its entries
9
+ * from that table, so the two always match.
10
10
  *
11
- * `entries` picks which way to read that table. `series` is one entry per data
12
- * column, named by the header row, which is a line or a bar chart.
13
- * `categories` is one entry per body row, which is a donut: its slices are the
14
- * rows and it has no axis to write their names along. `measures` drops the
15
- * first data column, which is a scatter.
11
+ * `entries` sets how the table is read:
16
12
  *
17
- * **The table is resolved on the client and there is no server pass.**
13
+ * - `series`: one entry per data column, named by the header row. Use it for a
14
+ * line or bar chart.
15
+ * - `categories`: one entry per body row. Use it for a donut, whose slices are
16
+ * the rows and which has no axis to name them on.
17
+ * - `measures`: drops the first data column. Use it for a scatter.
18
+ *
19
+ * The table is resolved on the client. There is no server pass.
18
20
  *
19
21
  * @since 0.1.0
20
22
  * @status stable
@@ -22,16 +24,16 @@ import { type PropertyValues, type TemplateResult } from 'lit';
22
24
  * @aliases Key, Series Key
23
25
  * @documentation https://fusion.dev/helix/components/legend
24
26
  *
25
- * @csspart entry - One name and its swatch. The swatch is drawn on the entry,
26
- * which is `::part(entry)::before` from a consumer's sheet: the series is
27
- * already on the entry as `--chart-series`, so a box would have carried nothing,
28
- * and this tier ships no CSS.
29
- * @csspart list - The list itself.
27
+ * @csspart entry - One name and its swatch. Draw the swatch with
28
+ * `::part(entry)::before` in your stylesheet. The entry holds its series color
29
+ * as `--chart-series`, and this tier ships no CSS.
30
+ * @csspart list - The list of entries.
30
31
  * @csspart name - One series name.
31
32
  */
32
33
  export declare class HelixHeadlessLegend extends HelixElement {
33
34
  /**
34
- * Which way to read the table.
35
+ * How the entries are read from the table: `series`, `categories`, or
36
+ * `measures`.
35
37
  *
36
38
  * Absent is `series`, one entry per data column. `categories` reads one entry
37
39
  * per body row instead, for a donut, whose slices are the rows.
@@ -1,18 +1,16 @@
1
1
  import { HelixElement } from '@fusion.dev/helix-core';
2
2
  import { type PropertyValues, type TemplateResult } from 'lit';
3
3
  /**
4
- * @summary One thing a lightbox can show.
4
+ * @summary One item a lightbox can show, such as a picture, a video frame, or a chart.
5
5
  *
6
6
  * @description
7
- * A wrapper around whatever the consumer opened, which is the whole of what it
8
- * is: a picture, a frame of video, a chart. The family shows one at a time and
9
- * this is how it says which, so the content stays the consumer's and the
10
- * arithmetic stays the root's.
7
+ * Wraps one piece of content in the lightbox, such as a picture, a video frame,
8
+ * or a chart. The lightbox shows one item at a time, and the root decides
9
+ * which.
11
10
  *
12
- * Hidden rather than unmounted while another item is current, for the reason
13
- * `TabPanel` gives: what is in the markup is what a crawler reads and what a
14
- * server sent, and an `<img>` that has already decoded does not decode again
15
- * when the reader walks back to it.
11
+ * An item that is not current is hidden and stays in the DOM, as a `TabPanel`
12
+ * does. Crawlers can read it, it is in the server-rendered markup, and an
13
+ * `<img>` that has decoded does not decode again when you go back to it.
16
14
  *
17
15
  * @since 0.100.0
18
16
  * @status stable
@@ -20,26 +18,26 @@ import { type PropertyValues, type TemplateResult } from 'lit';
20
18
  * @aliases LightboxSlide, GalleryItem
21
19
  * @documentation https://fusion.dev/helix/components/lightbox
22
20
  *
23
- * @slot - What is being shown.
24
- * @slot description - A line under it saying what it is.
21
+ * @slot - The content to show.
22
+ * @slot description - A line under the content that describes it.
25
23
  *
26
24
  * @csspart item - The box the content is shown in.
27
25
  *
28
- * @cssstate current - While this is the item the lightbox is showing.
26
+ * @cssstate current - The item the lightbox is showing.
29
27
  */
30
28
  export declare class HelixHeadlessLightboxItem extends HelixElement {
31
29
  /**
32
- * Whether this is the one being shown.
30
+ * Whether this item is the one shown.
33
31
  *
34
32
  * Written by the root, which is the only thing that sees the set.
35
33
  */
36
34
  current: boolean;
37
35
  /**
38
- * What this item is called, for the reading that says where the reader is.
36
+ * The item's name, used in the status text that says which item is shown.
39
37
  */
40
38
  label: string;
41
39
  /**
42
- * What names this item, and what `active` on the root is compared against.
40
+ * The item's identifier. The root compares its `active` value against it.
43
41
  */
44
42
  value: string;
45
43
  /**
@@ -2,33 +2,25 @@ import { CommandController, HelixElement } from '@fusion.dev/helix-core';
2
2
  import { type PropertyValues, type TemplateResult } from 'lit';
3
3
  declare const HelixHeadlessLightbox_base: (new (...args: any[]) => import("@fusion.dev/helix-core").MixinControllerActiveInterface) & (new (...args: any[]) => import("@fusion.dev/helix-core").MixinControllerOpenInterface) & typeof HelixElement;
4
4
  /**
5
- * @summary A viewer that opens one thing over the page.
5
+ * @summary A viewer that shows one item at a time over the page.
6
6
  *
7
7
  * @description
8
- * **A lightbox is chrome around a picture rather than a picture.** It draws
9
- * nothing of its own: what it shows is whatever the consumer opened, so this
10
- * earns its place on the frame, the keyboard and the reading that says where in
11
- * the set the reader is.
8
+ * The frame around content you open, such as a picture, a video frame, or a
9
+ * chart. The lightbox draws no content of its own. It provides the frame, the
10
+ * keyboard behavior, and text that states the current position in the set.
12
11
  *
13
- * **The modal half is the platform's.** A real `<dialog>` opened with
14
- * `showModal()` brings the top layer, a backdrop, Escape and `inert` behind it,
15
- * and this repository has already removed one hand-written focus trap for being
16
- * worse than that: `inert` on the rest of the document is something no
17
- * JavaScript trap can achieve. Every way it can close comes back through
18
- * `requestOpen`, which is what `Dialog` and `Drawer` both do and for the reason
19
- * they both give.
12
+ * The modal behavior comes from a native `<dialog>` opened with `showModal()`,
13
+ * which provides the top layer, a backdrop, Escape to close, and `inert` on the
14
+ * rest of the document. Every way of closing goes through `requestOpen`, as in
15
+ * `Dialog` and `Drawer`.
20
16
  *
21
- * **The set is this component's own and not `Carousel`'s.** A carousel is a
22
- * track: a scroller with snap points, per-view arithmetic and stops it can rest
23
- * between. A lightbox shows one thing at a time and has no track, so what it
24
- * needs is which item is current, which is `active` and the same pair `Tabs`
25
- * uses. The arrow keys move the picture under a reader whose focus stays in the
26
- * dialog, which is also why `KeyboardNavigationController` is not the right
27
- * tool: that one moves focus between focusable items, and these are pictures.
17
+ * A lightbox shows one item at a time and has no scrolling track, so `active`
18
+ * holds the current item, as in `Tabs`. The arrow keys change the item while
19
+ * focus stays in the dialog.
28
20
  *
29
- * **Chrome hides while the reader is still**, on `IdleController`, and comes
30
- * back on a pointer move or a focus. `fullscreen` is `FullscreenController`, the
31
- * same pair `Video` holds and the only two it shares.
21
+ * The chrome hides when there is no input, through `IdleController`, and comes
22
+ * back on a pointer move or a focus. `fullscreen` uses `FullscreenController`,
23
+ * as `Video` does.
32
24
  *
33
25
  * @since 0.100.0
34
26
  * @status stable
@@ -37,27 +29,28 @@ declare const HelixHeadlessLightbox_base: (new (...args: any[]) => import("@fusi
37
29
  * @documentation https://fusion.dev/helix/components/lightbox
38
30
  *
39
31
  * @slot - The items, which are `<helix-headless-lightbox-item>` elements.
40
- * @slot footer - Chrome below the item, such as a counter or a thumbnail strip.
41
- * @slot header - Chrome above the item, such as a title and a close button.
32
+ * @slot footer - Content below the item, such as a counter or a thumbnail strip.
33
+ * @slot header - Content above the item, such as a title and a close button.
42
34
  *
43
- * @event {Event} close - Relayed, because the platform's own does not escape.
44
- * @event {HelixActivateEvent} helix-activate - Fired once the shown item has moved, so the element already holds it.
45
- * @event {HelixBeforeActivateEvent} helix-before-activate - Fired before the shown item changes, and cancelable. The only way to refuse one.
46
- * @event {HelixBeforeCloseEvent} helix-before-close - Fired before it closes, and cancelable.
47
- * @event {HelixBeforeOpenEvent} helix-before-open - Fired before it opens, and cancelable.
48
- * @event {Event} toggle - Says the state moved, carrying `newState` and `oldState`.
35
+ * @event {Event} close - Fired when the viewer closes. The component dispatches it again from the host, because the dialog's own event does not leave the shadow root.
36
+ * @event {HelixActivateEvent} helix-activate - Fired after the shown item changes, when the element already holds the new item.
37
+ * @event {HelixBeforeActivateEvent} helix-before-activate - Fired before the shown item changes. Cancelable: cancel it to keep the current item. It is the only way to stop the change.
38
+ * @event {HelixBeforeCloseEvent} helix-before-close - Fired before the viewer closes. Cancelable.
39
+ * @event {HelixBeforeOpenEvent} helix-before-open - Fired before the viewer opens. Cancelable.
40
+ * @event {Event} toggle - Fired when the viewer opens or closes, with `newState` and `oldState`.
49
41
  *
50
42
  * @csspart dialog - The native dialog element.
51
- * @csspart live - The region that says which item is shown.
43
+ * @csspart live - The live region that announces which item is shown.
52
44
  * @csspart viewport - The box the current item is shown in.
53
45
  *
54
46
  * @cssstate fullscreen - While the viewer fills the screen.
55
- * @cssstate idle - While the reader has been still long enough to hide the chrome.
47
+ * @cssstate idle - The user has been still long enough for the controls to hide.
56
48
  * @cssstate open - While the viewer is open.
57
49
  */
58
50
  export declare class HelixHeadlessLightbox extends HelixHeadlessLightbox_base {
59
51
  /**
60
- * How long the reader may be still before the chrome hides, in milliseconds.
52
+ * How long the user can be idle before the header and footer hide, in
53
+ * milliseconds.
61
54
  *
62
55
  * Zero keeps it up, which is what a viewer with a caption worth reading
63
56
  * wants. The wait is only ever about idling: whether anything else should
@@ -65,16 +58,16 @@ export declare class HelixHeadlessLightbox extends HelixHeadlessLightbox_base {
65
58
  */
66
59
  idleDelay: number;
67
60
  /**
68
- * Accessible name for the viewer.
61
+ * The viewer's name, read by screen readers.
69
62
  */
70
63
  label: string;
71
64
  /**
72
- * Whether walking past the end comes back to the beginning.
65
+ * Whether moving past the last item returns to the first.
73
66
  */
74
67
  loop: boolean;
75
68
  /**
76
- * The reading that says where in the set the reader is, with `{index}` and
77
- * `{count}` filled in.
69
+ * The status text that says which item is shown, with `{index}` and `{count}`
70
+ * filled in.
78
71
  *
79
72
  * Announced rather than only drawn, because the picture changing under a
80
73
  * reader who cannot see it is otherwise silent. A consumer who has their own
@@ -102,13 +95,19 @@ export declare class HelixHeadlessLightbox extends HelixHeadlessLightbox_base {
102
95
  private get dialog();
103
96
  /** Opens the viewer, which makes the rest of the page inert. */
104
97
  show(): void;
105
- /** Asks to close, which a consumer may refuse. */
98
+ /** Closes the viewer, unless a `helix-before-close` listener cancels it. */
106
99
  close(): void;
107
- /** Shows the next item, or the first where it is past the end and looping. */
100
+ /**
101
+ * Shows the next item. After the last item, it shows the first when `loop`
102
+ * is set.
103
+ */
108
104
  next(): void;
109
- /** Shows the previous item, or the last where it is past the start and looping. */
105
+ /**
106
+ * Shows the previous item. Before the first item, it shows the last when
107
+ * `loop` is set.
108
+ */
110
109
  previous(): void;
111
- /** Fills the screen with the viewer, or comes back. */
110
+ /** Makes the viewer fill the screen, or exits fullscreen. */
112
111
  toggleFullscreen(): void;
113
112
  /**
114
113
  * Moves the shown item, through `requestActive` so a consumer can refuse.
@@ -3,37 +3,28 @@ import { nothing, type TemplateResult } from 'lit';
3
3
  import '../../tooltip/index.js';
4
4
  declare const HelixHeadlessLineChart_base: typeof HelixElement & (new (...args: any[]) => import("@fusion.dev/helix-core").MixinChartSourceInterface);
5
5
  /**
6
- * @summary A series over time as a line, read from a table.
6
+ * @summary A chart that draws series over time as lines, read from a table.
7
7
  *
8
8
  * @description
9
- * The chart for a shape rather than for a quantity, which is what decides the
10
- * one thing a bar chart is not allowed to do.
9
+ * A line chart shows the shape of each series: where the readings went.
11
10
  *
12
- * **It measures from its own range and not from zero, deliberately.** `BarChart`
13
- * refuses that switch because a bar's length *is* its value, so a baseline
14
- * anywhere else makes the lengths proportional to nothing. A line claims no
15
- * such thing: it says where the readings went, and forcing zero into the range
16
- * of a series that moves between 980 and 1020 flattens the entire shape into a
17
- * rule across the top of the box. The two rules are opposite because the two
18
- * charts answer opposite questions, and `zero` is here for the case where the
19
- * distance from nothing is the point.
11
+ * The scale covers the range of the data. Including zero in the range of a
12
+ * series that moves between 980 and 1020 would flatten the line into a rule
13
+ * across the top of the box. `BarChart` always starts at zero, because a bar's
14
+ * length is its value. Set `zero` when the distance from zero is the point.
20
15
  *
21
- * **One scale across every series**, the same as the bar chart, because two
22
- * series drawn to different scales are two charts sharing a picture.
16
+ * Every series shares one scale, as in the bar chart.
23
17
  *
24
- * **Not the chart for a total made of parts.** `area` washes each series from
25
- * the floor on its own, so they overlap; `Area Chart` stacks them, so the top
26
- * edge is the total and each band is a share. A line chart answers how each
27
- * series moved, an area chart how the whole is made up.
18
+ * `area` fills each series down to the floor on its own, so the fills overlap.
19
+ * For a total made of parts, use `Area Chart`, which stacks the series so the
20
+ * top edge is the total and each band is a share.
28
21
  *
29
- * **The labels are HTML beside the drawing rather than `<text>` inside it**, for
30
- * the reason `BarChart` records: an `<svg>` that fills its box scales its type
31
- * with everything else, the same `font-size` arriving at 10px in a narrow chart
32
- * and 43px in a wide one, and there is no non-scaling-font to answer it the way
33
- * `vector-effect` answers strokes.
22
+ * The labels are HTML beside the drawing, as in `BarChart`. Text inside an
23
+ * `<svg>` that fills its box scales with the box, so the same `font-size` can
24
+ * render at 10px in a narrow chart and 43px in a wide one.
34
25
  *
35
- * The table is the accessible representation and this drawing is `aria-hidden`.
36
- * A reader who wants the numbers gets the numbers, not a described picture.
26
+ * The table is the accessible representation, and the drawing is `aria-hidden`.
27
+ * Screen reader users get the numbers.
37
28
  *
38
29
  * @since 0.1.0
39
30
  * @status stable
@@ -42,13 +33,13 @@ declare const HelixHeadlessLineChart_base: typeof HelixElement & (new (...args:
42
33
  * @documentation https://fusion.dev/helix/components/line-chart
43
34
  *
44
35
  * @csspart area - The wash under one line, where `area` is set.
45
- * @csspart band - The slot the pointer is resting in.
36
+ * @csspart band - The band around the reading under the pointer.
46
37
  * @csspart baseline - The rule at zero, where zero is inside the range.
47
38
  * @csspart gridline - One rule across the plot, under `gridlines`.
48
39
  * @csspart guide - A rule down the reading a pointer is resting on.
49
40
  * @csspart label - One reading's name.
50
41
  * @csspart labels - The row of reading names.
51
- * @csspart line - One series.
42
+ * @csspart line - The line for one series.
52
43
  * @csspart mark - The invisible point the tooltip is anchored to.
53
44
  * @csspart plot - The drawing.
54
45
  * @csspart svg - The drawing surface the lines and areas sit on.
@@ -74,8 +65,8 @@ declare const HelixHeadlessLineChart_base: typeof HelixElement & (new (...args:
74
65
  */
75
66
  export declare class HelixHeadlessLineChart extends HelixHeadlessLineChart_base {
76
67
  /**
77
- * Whether a wash is drawn under each line, each from the floor on its own.
78
- * The washes overlap rather than add up: for parts that make a total, use
68
+ * Draws a wash under each line, down to the floor of the plot. The washes
69
+ * overlap and do not add up, so for parts that make a total, use
79
70
  * `Area Chart`, which stacks them.
80
71
  *
81
72
  * Absent is lines alone, which is what suits more than one series: washes
@@ -174,7 +165,7 @@ export declare class HelixHeadlessLineChart extends HelixHeadlessLineChart_base
174
165
  /** The domain every series is drawn against, which the tooltip also needs. */
175
166
  private range;
176
167
  /**
177
- * Whether zero is forced into the range.
168
+ * Whether the range always includes zero.
178
169
  *
179
170
  * Absent measures from the data's own extent, which is what a line is for.
180
171
  * Set it where the distance from nothing is the point rather than the shape,