@fusion.dev/helix 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 (198) hide show
  1. package/custom-elements.json +13098 -4950
  2. package/dist/accordion/item/accordion-item.d.ts +9 -10
  3. package/dist/accordion/root/accordion-root.d.ts +8 -9
  4. package/dist/announcement/root/announcement-root.d.ts +7 -7
  5. package/dist/app-header/root/app-header-root.d.ts +14 -12
  6. package/dist/area-chart/root/area-chart-root.d.ts +23 -32
  7. package/dist/aura/root/aura-root.d.ts +32 -31
  8. package/dist/avatar/group/avatar-group.d.ts +8 -11
  9. package/dist/avatar/root/avatar-root.d.ts +4 -5
  10. package/dist/badge/root/badge-root.d.ts +7 -8
  11. package/dist/bar-chart/root/bar-chart-root.d.ts +17 -16
  12. package/dist/blockquote/root/blockquote-root.d.ts +4 -5
  13. package/dist/breadcrumbs/breadcrumb/breadcrumb.d.ts +7 -7
  14. package/dist/breadcrumbs/root/breadcrumbs-root.d.ts +2 -2
  15. package/dist/button/root/button-root.d.ts +16 -13
  16. package/dist/button-group/root/button-group-root.d.ts +6 -6
  17. package/dist/callout/root/callout-root.d.ts +8 -8
  18. package/dist/canvas/edge/canvas-edge.d.ts +3 -3
  19. package/dist/canvas/node/canvas-node.d.ts +17 -18
  20. package/dist/canvas/root/canvas-root.d.ts +18 -19
  21. package/dist/card/root/card-root.d.ts +14 -14
  22. package/dist/carousel/root/carousel-root.d.ts +11 -14
  23. package/dist/chat/composer/chat-composer.d.ts +10 -11
  24. package/dist/chat/message/chat-message.d.ts +18 -18
  25. package/dist/chat/root/chat-root.d.ts +15 -18
  26. package/dist/checkbox/root/checkbox-root.d.ts +17 -16
  27. package/dist/checkbox-group/root/checkbox-group-root.d.ts +6 -5
  28. package/dist/code/root/code-root.d.ts +9 -9
  29. package/dist/code-block/root/code-block-root.d.ts +14 -15
  30. package/dist/color-input/root/color-input-root.d.ts +13 -18
  31. package/dist/color-picker/root/color-picker-root.d.ts +26 -27
  32. package/dist/combobox/root/combobox-root.css.js +3 -2
  33. package/dist/combobox/root/combobox-root.d.ts +8 -8
  34. package/dist/command/root/command-root.d.ts +5 -6
  35. package/dist/copy-button/root/copy-button-root.d.ts +4 -5
  36. package/dist/data-table/root/data-table-root.d.ts +30 -37
  37. package/dist/date-input/root/date-input-root.d.ts +15 -17
  38. package/dist/date-picker/root/date-picker-root.d.ts +11 -12
  39. package/dist/description-list/item/description-list-item.d.ts +2 -2
  40. package/dist/description-list/root/description-list-root.d.ts +13 -14
  41. package/dist/dialog/root/dialog-root.d.ts +9 -10
  42. package/dist/divider/root/divider-root.d.ts +11 -12
  43. package/dist/donut-chart/root/donut-chart-root.d.ts +12 -15
  44. package/dist/drawer/root/drawer-root.d.ts +14 -13
  45. package/dist/drilldown/item/drilldown-item.d.ts +3 -4
  46. package/dist/drilldown/root/drilldown-root.d.ts +6 -9
  47. package/dist/element-events.generated.js +19 -1
  48. package/dist/empty/root/empty-root.d.ts +3 -4
  49. package/dist/file-input/root/file-input-root.d.ts +8 -12
  50. package/dist/filter-input/chip/filter-chip.d.ts +11 -10
  51. package/dist/filter-input/field/filter-field.d.ts +7 -8
  52. package/dist/filter-input/menu/filter-menu.d.ts +7 -8
  53. package/dist/filter-input/operator/filter-operator.d.ts +5 -5
  54. package/dist/filter-input/root/filter-input-root.d.ts +25 -27
  55. package/dist/flex/root/flex-root.d.ts +9 -14
  56. package/dist/format-date/root/format-date-root.d.ts +5 -8
  57. package/dist/grid/root/grid-root.d.ts +13 -11
  58. package/dist/heatmap/root/heatmap-root.d.ts +34 -31
  59. package/dist/icon/root/icon-root.d.ts +6 -6
  60. package/dist/icon-button/root/icon-button-root.d.ts +9 -10
  61. package/dist/image/root/image-root.d.ts +10 -10
  62. package/dist/input/root/input-root.d.ts +10 -13
  63. package/dist/kbd/root/kbd-root.d.ts +6 -7
  64. package/dist/legend/root/legend-root.d.ts +19 -20
  65. package/dist/lightbox/item/lightbox-item.d.ts +4 -5
  66. package/dist/lightbox/root/lightbox-root.d.ts +13 -16
  67. package/dist/line-chart/root/line-chart-root.d.ts +24 -25
  68. package/dist/list/item/list-item.d.ts +7 -8
  69. package/dist/list/root/list-root.d.ts +7 -9
  70. package/dist/listbox/root/listbox-root.d.ts +8 -9
  71. package/dist/loader/root/loader-root.d.ts +5 -7
  72. package/dist/map/area/map-area.css.d.ts +1 -0
  73. package/dist/map/area/map-area.css.js +24 -0
  74. package/dist/map/area/map-area.d.ts +27 -0
  75. package/dist/map/area/map-area.js +20 -0
  76. package/dist/map/buildings/map-buildings.css.d.ts +1 -0
  77. package/dist/map/buildings/map-buildings.css.js +27 -0
  78. package/dist/map/buildings/map-buildings.d.ts +28 -0
  79. package/dist/map/buildings/map-buildings.js +20 -0
  80. package/dist/map/contours/map-contours.css.d.ts +1 -0
  81. package/dist/map/contours/map-contours.css.js +8 -0
  82. package/dist/map/contours/map-contours.d.ts +25 -0
  83. package/dist/map/contours/map-contours.js +16 -0
  84. package/dist/map/index.d.ts +10 -0
  85. package/dist/map/index.js +10 -0
  86. package/dist/map/landcover/map-landcover.css.d.ts +1 -0
  87. package/dist/map/landcover/map-landcover.css.js +5 -0
  88. package/dist/map/landcover/map-landcover.d.ts +25 -0
  89. package/dist/map/landcover/map-landcover.js +16 -0
  90. package/dist/map/marker/map-marker.css.d.ts +1 -0
  91. package/dist/map/marker/map-marker.css.js +340 -0
  92. package/dist/map/marker/map-marker.d.ts +51 -0
  93. package/dist/map/marker/map-marker.js +29 -0
  94. package/dist/map/points/map-points.css.d.ts +1 -0
  95. package/dist/map/points/map-points.css.js +82 -0
  96. package/dist/map/points/map-points.d.ts +29 -0
  97. package/dist/map/points/map-points.js +20 -0
  98. package/dist/map/position/map-position.css.d.ts +1 -0
  99. package/dist/map/position/map-position.css.js +239 -0
  100. package/dist/map/position/map-position.d.ts +41 -0
  101. package/dist/map/position/map-position.js +26 -0
  102. package/dist/map/raster/map-raster.css.d.ts +1 -0
  103. package/dist/map/raster/map-raster.css.js +4 -0
  104. package/dist/map/raster/map-raster.d.ts +23 -0
  105. package/dist/map/raster/map-raster.js +16 -0
  106. package/dist/map/root/map-root.css.js +252 -1
  107. package/dist/map/root/map-root.d.ts +13 -12
  108. package/dist/map/root/map-root.js +4 -0
  109. package/dist/map/route/map-route.css.d.ts +1 -0
  110. package/dist/map/route/map-route.css.js +25 -0
  111. package/dist/map/route/map-route.d.ts +31 -0
  112. package/dist/map/route/map-route.js +23 -0
  113. package/dist/map/terrain/map-terrain.css.d.ts +1 -0
  114. package/dist/map/terrain/map-terrain.css.js +12 -0
  115. package/dist/map/terrain/map-terrain.d.ts +27 -0
  116. package/dist/map/terrain/map-terrain.js +16 -0
  117. package/dist/megamenu/root/megamenu-root.d.ts +14 -14
  118. package/dist/menu/item/menu-item.d.ts +8 -8
  119. package/dist/menu/root/menu-root.d.ts +9 -9
  120. package/dist/meter/root/meter-root.d.ts +29 -38
  121. package/dist/navigation/root/navigation-root.d.ts +4 -5
  122. package/dist/notifications/group/notification-group.d.ts +9 -13
  123. package/dist/notifications/notification/notification.d.ts +27 -33
  124. package/dist/notifications/root/notifications-root.d.ts +9 -11
  125. package/dist/number-input/root/number-input-root.d.ts +16 -18
  126. package/dist/object-inspector/root/object-inspector-root.d.ts +11 -12
  127. package/dist/option/group/option-group.d.ts +3 -4
  128. package/dist/option/root/option-root.d.ts +7 -8
  129. package/dist/orb/root/orb-root.d.ts +30 -36
  130. package/dist/outline/root/outline-root.d.ts +8 -10
  131. package/dist/pagination/root/pagination-root.d.ts +13 -23
  132. package/dist/pagination/size/pagination-size.d.ts +7 -7
  133. package/dist/pagination/summary/pagination-summary.d.ts +3 -4
  134. package/dist/pin-input/root/pin-input-root.d.ts +8 -11
  135. package/dist/popover/root/popover-root.d.ts +14 -16
  136. package/dist/progress/root/progress-root.d.ts +10 -13
  137. package/dist/qr-code/root/qr-code-root.d.ts +13 -14
  138. package/dist/quote/root/quote-root.d.ts +2 -2
  139. package/dist/radio/group/radio-group.d.ts +6 -6
  140. package/dist/radio/root/radio-root.d.ts +16 -19
  141. package/dist/rating/root/rating-root.d.ts +9 -9
  142. package/dist/sandbox/preview/sandbox-preview.d.ts +18 -19
  143. package/dist/sandbox/root/sandbox-root.d.ts +27 -27
  144. package/dist/sandbox/source/sandbox-source.d.ts +9 -12
  145. package/dist/sandbox/status-bar/sandbox-status-bar.d.ts +9 -11
  146. package/dist/sandbox/terminal/sandbox-terminal.d.ts +13 -15
  147. package/dist/sandbox/toolbar/sandbox-toolbar.d.ts +8 -9
  148. package/dist/scatter-chart/root/scatter-chart-root.d.ts +18 -29
  149. package/dist/scroll-area/root/scroll-area-root.d.ts +13 -13
  150. package/dist/select/root/select-root.d.ts +14 -14
  151. package/dist/shared/mixin-control-surface/mixin-control-surface.d.ts +8 -2
  152. package/dist/shared/viewport/viewport.css.js +7 -2
  153. package/dist/skeleton/root/skeleton-root.d.ts +6 -7
  154. package/dist/skip-link/root/skip-link-root.d.ts +16 -19
  155. package/dist/slider/root/slider-root.d.ts +16 -18
  156. package/dist/sparkline/root/sparkline-root.d.ts +16 -24
  157. package/dist/speed-dial/item/speed-dial-item.d.ts +5 -5
  158. package/dist/speed-dial/root/speed-dial-root.d.ts +3 -4
  159. package/dist/splitter/root/splitter-root.d.ts +23 -32
  160. package/dist/stat/group/stat-group.d.ts +4 -5
  161. package/dist/stat/root/stat-root.d.ts +4 -5
  162. package/dist/steps/root/steps-root.d.ts +12 -13
  163. package/dist/switch/root/switch-root.d.ts +13 -17
  164. package/dist/table/cell/table-cell.css.js +5 -0
  165. package/dist/table/cell/table-cell.d.ts +4 -4
  166. package/dist/table/column/table-column.d.ts +3 -4
  167. package/dist/table/root/table-root.d.ts +5 -6
  168. package/dist/table/row/table-row.d.ts +3 -3
  169. package/dist/tabs/panel/tab-panel.d.ts +2 -3
  170. package/dist/tabs/root/tabs-root.d.ts +12 -11
  171. package/dist/tabs/tab/tab.d.ts +4 -4
  172. package/dist/tag/root/tag-root.d.ts +10 -11
  173. package/dist/text/root/text-root.d.ts +22 -30
  174. package/dist/textarea/root/textarea-root.d.ts +4 -5
  175. package/dist/time-input/root/time-input-root.d.ts +12 -14
  176. package/dist/time-picker/root/time-picker-root.d.ts +8 -10
  177. package/dist/timeline/item/timeline-item.d.ts +2 -2
  178. package/dist/timeline/root/timeline-root.d.ts +3 -3
  179. package/dist/toast/item/toast-item.d.ts +7 -8
  180. package/dist/toast/root/toast-root.d.ts +10 -12
  181. package/dist/toggle/group/toggle-group.d.ts +10 -12
  182. package/dist/toggle/root/toggle-root.d.ts +2 -3
  183. package/dist/toolbar/root/toolbar-root.d.ts +3 -3
  184. package/dist/tooltip/root/tooltip-root.d.ts +10 -10
  185. package/dist/tour/root/tour-root.d.ts +5 -6
  186. package/dist/tour/stop/tour-stop.d.ts +14 -14
  187. package/dist/tree/item/tree-item.d.ts +6 -9
  188. package/dist/tree/root/tree-root.d.ts +7 -8
  189. package/dist/trend/root/trend-root.d.ts +12 -19
  190. package/dist/video/root/video-root.d.ts +15 -21
  191. package/dist/video-playlist/item/video-playlist-item.d.ts +4 -4
  192. package/dist/video-playlist/menu/video-playlist-menu.d.ts +14 -16
  193. package/dist/video-playlist/root/video-playlist-root.d.ts +5 -5
  194. package/dist/virtual-list/root/virtual-list-root.d.ts +6 -8
  195. package/package.json +6 -6
  196. package/types/jsx.d.ts +14221 -11621
  197. package/types/svelte.d.ts +10 -0
  198. package/types/vue.d.ts +2679 -1951
@@ -4,14 +4,12 @@ import type { CSSResultGroup } from 'lit';
4
4
  * @summary One choice in a radio group.
5
5
  *
6
6
  * @description
7
- * A circle with a dot in it, drawn here rather than by the browser for the
8
- * reason the checkbox's box is: this is a `<button role="radio">`, so there was
9
- * never a native control to restyle, and the weight and the motion of the mark
10
- * are ours either way.
7
+ * Draws a circle with a dot in it. The element is a `<button role="radio">`, so
8
+ * there is no native control to restyle, the same as the checkbox's box.
11
9
  *
12
- * The dot scales from nothing, like the checkbox's tick, so choosing shows
13
- * something happening. It has no color, because color is reserved for state
14
- * and being chosen is an answer rather than a state.
10
+ * The dot scales up from nothing when the radio is chosen, like the checkbox's
11
+ * tick. It has no color, because Helix reserves color for state, and a chosen
12
+ * radio is an answer.
15
13
  *
16
14
  * @since 0.1.0
17
15
  * @status stable
@@ -19,19 +17,19 @@ import type { CSSResultGroup } from 'lit';
19
17
  * @aliases Option, Choice
20
18
  * @documentation https://fusion.dev/helix/components/radio
21
19
  *
22
- * @cssproperty --radio-background-color - Fill of an unselected circle.
23
- * @cssproperty --radio-border-color - Edge of the circle, in every state.
24
- * @cssproperty --radio-card-background-color - Fill behind a card-shaped choice.
25
- * @cssproperty --radio-card-border-color - Edge around one.
26
- * @cssproperty --radio-card-padding - Inset of the card appearance.
27
- * @cssproperty --radio-chip-size - Diameter of the chip appearance.
28
- * @cssproperty --radio-mark-color - Color of the dot.
29
- * @cssproperty --radio-size - Diameter of the circle.
20
+ * @cssproperty --radio-background-color - The fill of an unselected circle.
21
+ * @cssproperty --radio-border-color - The border color of the circle, in every state.
22
+ * @cssproperty --radio-card-background-color - The fill behind a card-shaped choice.
23
+ * @cssproperty --radio-card-border-color - The border color of a card-shaped choice.
24
+ * @cssproperty --radio-card-padding - The padding inside a card-shaped choice.
25
+ * @cssproperty --radio-chip-size - The diameter of a chip.
26
+ * @cssproperty --radio-mark-color - The color of the dot.
27
+ * @cssproperty --radio-size - The diameter of the circle.
30
28
  */
31
29
  export declare class HelixRadio extends HelixHeadlessRadio {
32
30
  static styles: CSSResultGroup;
33
31
  /**
34
- * Takes the circle away, leaving the card as the whole control.
32
+ * Hides the circle, so the card is the whole control.
35
33
  *
36
34
  * Unnecessary under `chip`, which has no room for a circle beside its mark
37
35
  * and hides it already.
@@ -50,7 +48,7 @@ export declare class HelixRadio extends HelixHeadlessRadio {
50
48
  */
51
49
  hideControl: boolean;
52
50
  /**
53
- * Where the choice's own surface ends.
51
+ * How the choice's own surface is set apart from its surroundings.
54
52
  *
55
53
  * The question `separation` asks everywhere else, asked of one option, so it
56
54
  * is that word: what these values pick is a surface, and `plain` is already
@@ -78,8 +76,7 @@ export declare class HelixRadio extends HelixHeadlessRadio {
78
76
  */
79
77
  separation?: 'filled' | 'outlined' | 'plain';
80
78
  /**
81
- * The answer as its own small surface, for a row of short choices read at a
82
- * glance.
79
+ * Draws the choice as a small chip, for a row of short choices.
83
80
  *
84
81
  * **Not a separation, which is why it is still `variant`.** The other values
85
82
  * pick where a surface ends around a row that keeps its circle and its words;
@@ -1,11 +1,11 @@
1
1
  import { HelixHeadlessRating } from '@fusion.dev/helix-headless/rating';
2
2
  import type { CSSResultGroup } from 'lit';
3
3
  /**
4
- * @summary A score out of a few marks, given or shown.
4
+ * @summary A row of marks, such as stars, for giving or showing a score.
5
5
  *
6
6
  * @description
7
- * Presentation only: the marks, and the clip that fills them partway.
8
- * Everything about what the score is and how it is chosen is the base class.
7
+ * Draws the marks and the clip that fills them partway. The value and how it is
8
+ * chosen come from the headless base class.
9
9
  *
10
10
  * @since 0.1.0
11
11
  * @status stable
@@ -13,19 +13,19 @@ import type { CSSResultGroup } from 'lit';
13
13
  * @aliases Stars, Score, Review score
14
14
  * @documentation https://fusion.dev/helix/components/rating
15
15
  *
16
- * @slot mark - The shape of a mark, cloned into every position. Left empty, the
17
- * stylesheet draws its own and `--rating-mark` swaps it.
16
+ * @slot mark - The shape of a mark, copied into every position. When the slot is
17
+ * empty, the stylesheet draws a mark, and `--rating-mark` changes its shape.
18
18
  *
19
19
  * @cssproperty --rating-color - The color of a filled mark.
20
- * @cssproperty --rating-empty-color - And of an unfilled one.
21
- * @cssproperty --rating-gap - Space between marks.
20
+ * @cssproperty --rating-empty-color - The color of an unfilled mark.
21
+ * @cssproperty --rating-gap - The space between marks.
22
22
  * @cssproperty --rating-mark - The shape of one mark, as a mask image.
23
- * @cssproperty --rating-size - How big one mark is.
23
+ * @cssproperty --rating-size - The size of one mark.
24
24
  */
25
25
  export declare class HelixRating extends HelixHeadlessRating {
26
26
  static styles: CSSResultGroup;
27
27
  /**
28
- * The geometry one mark is drawn to.
28
+ * The shape of each mark. `dots` draws plain circles.
29
29
  *
30
30
  * The registry's word, because the question is the registry's: `Avatar`,
31
31
  * `Skeleton`, `IconButton`, `Meter` and `Progress` each ask what geometry
@@ -39,38 +39,37 @@ export interface PreviewSize {
39
39
  }
40
40
  export type PreviewMessage = PreviewConsole | PreviewPress | PreviewReady | PreviewRender | PreviewSize;
41
41
  /**
42
- * @summary Renders sandbox source in a frame of its own.
42
+ * @summary A frame that renders sandbox source in a separate document.
43
43
  *
44
44
  * @description
45
- * A sandboxed `<iframe>` pointed at `src`, a document the consumer provides.
46
- * That document imports whatever the examples need, listens for a render
47
- * message, and writes the markup into itself.
45
+ * A sandboxed `<iframe>` that loads `src`, a document you provide. That
46
+ * document imports what the examples need, listens for a render message, and
47
+ * writes the markup into itself.
48
48
  *
49
- * **A frame rather than the page.** Rendering into the page meant an example
50
- * was styled by whatever surrounded it: an example restyling `helix-card`
51
- * restyled the sandbox too, a script ran against the real document, and a stray
52
- * `position: fixed` escaped the pane. The cost is that the frame starts empty,
53
- * a document having its own stylesheets and a window its own registry, so `src`
54
- * has to load them.
49
+ * **Examples render in a frame**, so an example's styles and scripts do not
50
+ * affect the page around the sandbox, and `position: fixed` stays inside the
51
+ * pane. The frame starts empty, with its own stylesheets and its own custom
52
+ * element registry, so `src` must load the styles and components the examples
53
+ * use.
55
54
  *
56
- * **The source is not trusted, and the frame is what makes that safe.**
57
- * `sandbox="allow-scripts"` and never `allow-same-origin`: the two together are
58
- * the same as no sandbox at all, a document on its own origin being able to
59
- * reach up and remove the attribute.
55
+ * **The source is untrusted, and the frame keeps it isolated.** The frame uses
56
+ * `sandbox="allow-scripts"` and never `allow-same-origin`. Together, the two
57
+ * let a document on the same origin remove its own sandbox, which is the same
58
+ * as having none.
60
59
  *
61
60
  * @since 0.1.0
62
61
  * @status stable
63
62
  * @aliases Result, Output
64
63
  * @documentation https://fusion.dev/helix/components/sandbox
65
64
  *
66
- * @event {HelixConsoleEvent} helix-console - Relayed from the frame, one per console call.
67
- * @event {HelixResizeEvent} helix-resize - How tall the frame's content is, whenever it changes.
65
+ * @event {HelixConsoleEvent} helix-console - Fired once per console call in the frame.
66
+ * @event {HelixResizeEvent} helix-resize - Fired when the height of the frame's content changes, with the new height.
68
67
  *
69
68
  * @csspart frame - The iframe.
70
69
  */
71
70
  export declare class HelixSandboxPreview extends HelixElement {
72
71
  /**
73
- * Which half of the palette the frame renders in.
72
+ * The color mode the frame renders in.
74
73
  *
75
74
  * **The frame is a document and a document has its own color mode.** Setting
76
75
  * `data-color-mode` on this element styles this element, and the contents of
@@ -95,7 +94,7 @@ export declare class HelixSandboxPreview extends HelixElement {
95
94
  */
96
95
  direction?: 'rtl';
97
96
  /**
98
- * Accessible name for the frame.
97
+ * The frame's name, read by screen readers.
99
98
  */
100
99
  label: string;
101
100
  /**
@@ -117,7 +116,7 @@ export declare class HelixSandboxPreview extends HelixElement {
117
116
  */
118
117
  source: string;
119
118
  /**
120
- * Document the frame loads, which brings the styles and the elements.
119
+ * The document the frame loads. It provides the styles and the elements.
121
120
  */
122
121
  src: string;
123
122
  /**
@@ -2,23 +2,22 @@ import { HelixElement } from '@fusion.dev/helix-core';
2
2
  import '../../splitter/index.js';
3
3
  import type { CSSResultGroup, PropertyValues, TemplateResult } from 'lit';
4
4
  /**
5
- * @summary Pairs an editable source pane with a live preview.
5
+ * @summary An editable source pane paired with a live preview.
6
6
  *
7
7
  * @description
8
- * Coordination is by event: a source pane dispatches `helix-before-edit`, which
9
- * bubbles, and the sandbox hands the value to whatever preview is slotted into
10
- * it. Neither child knows the other exists, so either can be replaced or used
8
+ * A source pane dispatches `helix-before-edit`, which bubbles, and the sandbox
9
+ * passes the value to the preview slotted into it. The source pane and the
10
+ * preview do not reference each other, so you can replace either one or use it
11
11
  * alone.
12
12
  *
13
- * The event carries the pane's `name`, which is what lets one sandbox hold
14
- * several panes: `html` is the preview's markup and `css` its stylesheet. A
15
- * pane named anything else is showing something rather than driving it, and is
16
- * ignored.
13
+ * The event carries the pane's `name`, so one sandbox can hold several panes.
14
+ * `html` sets the preview's markup and `css` sets its stylesheet. The sandbox
15
+ * ignores a pane with any other name, so that pane can show content without
16
+ * changing the preview.
17
17
  *
18
- * **The dividers are two nested `helix-splitter`s**, not a grid this element
19
- * drags itself, so the pointer handling, the keyboard handling and the corner
20
- * are all the splitter's. The panes are the inner splitter and the panel is the
21
- * outer one, which is the order that makes the panel span the full width.
18
+ * **The dividers are two nested `helix-splitter` elements**, which handle the
19
+ * pointer, the keyboard, and the corner. The inner splitter holds the panes and
20
+ * the outer one holds the panel, so the panel spans the full width.
22
21
  *
23
22
  * @since 0.1.0
24
23
  * @status stable
@@ -27,22 +26,22 @@ import type { CSSResultGroup, PropertyValues, TemplateResult } from 'lit';
27
26
  * @documentation https://fusion.dev/helix/components/sandbox
28
27
  *
29
28
  * @slot panel - A panel under both panes, usually a terminal.
30
- * @slot preview - The live preview. Second unless `lead` says otherwise.
31
- * @slot source - The editable source pane. First unless `lead` says otherwise.
29
+ * @slot preview - The live preview. It comes second unless `lead` is `preview`.
30
+ * @slot source - The editable source pane. It comes first unless `lead` is `preview`.
32
31
  * @slot status - A status bar, spanning both panes at the bottom.
33
32
  * @slot toolbar - A bar across the top, spanning both panes.
34
33
  *
35
- * @event {HelixBeforeEditEvent} helix-before-edit - Fired before the source is edited, by the source pane and heard here. Cancelable: refusing it takes the decision and nothing moves.
36
- * @event {HelixBeforePanelResizeEvent} helix-before-panel-resize - Fired before the panel's divider is let go, with its height in pixels, and a panel driven shut arrives as `panel-collapsed-size`, which is the least it goes to. Cancelable: refusing it takes the decision and nothing moves.
37
- * @event {HelixBeforeSplitEvent} helix-before-split - Fired before the panes' divider is let go, with the lead pane's share. Cancelable: refusing it takes the decision and nothing moves.
38
- * @event {HelixCaretEvent} helix-caret - Fired when the cursor moves in the source, by the source pane and heard here.
39
- * @event {HelixConsoleEvent} helix-console - Relayed from the frame by the preview pane, one per console call.
40
- * @event {HelixResizeEvent} helix-resize - How tall the frame's content is, from the preview pane, whenever it changes.
34
+ * @event {HelixBeforeEditEvent} helix-before-edit - Fired before the source is edited. The source pane dispatches it, and you can listen for it on the sandbox. Cancelable: cancel it to keep the source unchanged.
35
+ * @event {HelixBeforePanelResizeEvent} helix-before-panel-resize - Fired before the panel's divider is released, with the panel's height in pixels. A panel dragged closed reports `panel-collapsed-size`, its smallest height. Cancelable: cancel it to keep the current height.
36
+ * @event {HelixBeforeSplitEvent} helix-before-split - Fired before the panes' divider is released, with the lead pane's share. Cancelable: cancel it to keep the current split.
37
+ * @event {HelixCaretEvent} helix-caret - Fired when the cursor moves in the source. The source pane dispatches it, and you can listen for it on the sandbox.
38
+ * @event {HelixConsoleEvent} helix-console - Fired once per console call in the preview frame. The preview pane dispatches it.
39
+ * @event {HelixResizeEvent} helix-resize - Fired by the preview pane when the height of the frame's content changes, with the new height.
41
40
  *
42
41
  * @csspart body - The splitter holding the panes above the panel.
43
42
  * @csspart corner - The handle where the two dividers cross.
44
43
  * @csspart pane - Either pane.
45
- * @csspart panel - The box holding whatever was slotted as the panel.
44
+ * @csspart panel - The box that holds the slotted panel.
46
45
  * @csspart panes - The splitter holding the source and preview panes.
47
46
  * @csspart separator - Either divider.
48
47
  *
@@ -52,17 +51,18 @@ import type { CSSResultGroup, PropertyValues, TemplateResult } from 'lit';
52
51
  */
53
52
  export declare class HelixSandbox extends HelixElement {
54
53
  /**
55
- * Accessible name for the divider that moves both at once.
54
+ * The name of the corner handle that moves both dividers at once, read by
55
+ * screen readers.
56
56
  */
57
57
  cornerLabel: string;
58
58
  /**
59
- * What a reset makes the panel, in pixels.
59
+ * The panel height a reset restores, in pixels.
60
60
  *
61
61
  * The pair to `panel-size`.
62
62
  */
63
63
  defaultPanelSize: number;
64
64
  /**
65
- * Where a reset puts the divider, where nothing declared it.
65
+ * Where a reset puts the divider between the panes.
66
66
  *
67
67
  * Separate from `split` for the reason `Splitter` keeps `default-position`
68
68
  * separate from `position`. Resetting to whatever `split` held on the first
@@ -103,7 +103,7 @@ export declare class HelixSandbox extends HelixElement {
103
103
  */
104
104
  orientation?: 'horizontal' | 'vertical';
105
105
  /**
106
- * What the panel's height becomes when it is closed.
106
+ * The panel's height when it is closed.
107
107
  *
108
108
  * Zero closes it outright. A panel whose contents include the control that
109
109
  * reopens it, a row of tabs being the usual one, wants that row left showing,
@@ -118,7 +118,7 @@ export declare class HelixSandbox extends HelixElement {
118
118
  */
119
119
  panelCollapsedSize: number;
120
120
  /**
121
- * Accessible name for the panel's divider.
121
+ * The name of the panel's divider, read by screen readers.
122
122
  */
123
123
  panelLabel: string;
124
124
  /**
@@ -126,7 +126,7 @@ export declare class HelixSandbox extends HelixElement {
126
126
  */
127
127
  panelSize: number;
128
128
  /**
129
- * Accessible name for the divider.
129
+ * The name of the divider between the panes, read by screen readers.
130
130
  */
131
131
  separatorLabel: string;
132
132
  /**
@@ -1,24 +1,21 @@
1
1
  import { HelixElement } from '@fusion.dev/helix-core';
2
2
  import type { CSSResultGroup, TemplateResult } from 'lit';
3
3
  /**
4
- * @summary Editable source for a sandbox preview.
4
+ * @summary An editable source pane for a sandbox preview.
5
5
  *
6
6
  * @description
7
- * A real `<textarea>`, not a contenteditable div with a syntax highlighter over
8
- * it. Undo, selection, spellcheck suppression, mobile keyboards, and screen
9
- * reader support all come from the platform, and every one of them is
10
- * expensive to rebuild and easy to get subtly wrong.
7
+ * A real `<textarea>`, so undo, selection, spellcheck suppression, mobile
8
+ * keyboards, and screen reader support come from the platform.
11
9
  *
12
- * Tab inserts two spaces rather than leaving the field, because a code pane
13
- * that cannot indent is not one. Escape then Tab still moves focus out, which
14
- * is the documented escape hatch for exactly this trade.
10
+ * Tab inserts two spaces, so you can indent code. To move focus out of the
11
+ * field, press Escape and then Tab.
15
12
  *
16
13
  * @since 0.1.0
17
14
  * @status stable
18
15
  * @aliases Editor, Code pane
19
16
  * @documentation https://fusion.dev/helix/components/sandbox
20
17
  *
21
- * @event {HelixBeforeEditEvent} helix-before-edit - Fired before the source is edited. Cancelable: refusing it takes the decision and nothing moves.
18
+ * @event {HelixBeforeEditEvent} helix-before-edit - Fired before the source is edited. Cancelable: cancel it to keep the source unchanged.
22
19
  * @event {HelixCaretEvent} helix-caret - Fired when the cursor moves.
23
20
  *
24
21
  * @csspart source - The editable region.
@@ -28,11 +25,11 @@ import type { CSSResultGroup, TemplateResult } from 'lit';
28
25
  */
29
26
  export declare class HelixSandboxSource extends HelixElement {
30
27
  /**
31
- * Accessible name for the editable region.
28
+ * The editable region's name, read by screen readers.
32
29
  */
33
30
  fieldLabel: string;
34
31
  /**
35
- * Which source this pane holds, echoed in every `helix-before-edit`.
32
+ * Which source this pane holds. Every `helix-before-edit` event includes it.
36
33
  *
37
34
  * `html` and `css` are what the sandbox root routes on; any other name is
38
35
  * passed through untouched for a consumer wiring their own panes.
@@ -41,7 +38,7 @@ export declare class HelixSandboxSource extends HelixElement {
41
38
  */
42
39
  name: string;
43
40
  /**
44
- * Whether Tab indents rather than moving focus.
41
+ * Whether Tab indents the source. When it is off, Tab moves focus.
45
42
  */
46
43
  tabIndents: boolean;
47
44
  /**
@@ -1,21 +1,19 @@
1
1
  import { HelixElement } from '@fusion.dev/helix-core';
2
2
  import type { CSSResultGroup, TemplateResult } from 'lit';
3
3
  /**
4
- * @summary Reports where the cursor is and what is being edited.
4
+ * @summary A bar that shows the cursor position and the language being edited.
5
5
  *
6
6
  * @description
7
- * Slotted into a sandbox, which feeds it: the editor dispatches `helix-caret`
8
- * on every keystroke and every arrow press, the sandbox hears it and writes the
9
- * position here. Nothing about that reaches the consumer's framework, which is
10
- * the point. A caret position routed through React state would re-render the
11
- * workbench on every cursor move, to update two numbers.
7
+ * Shows the caret position. The editor dispatches `helix-caret` on every
8
+ * keystroke and arrow press, and the sandbox writes the position to the status
9
+ * bar. The position does not pass through your framework, so React state does
10
+ * not re-render the sandbox on every cursor move.
12
11
  *
13
- * **Not a live region.** The readout changes on every keystroke, so announcing
14
- * it would talk over the reader continuously while they type. It is text they
15
- * can navigate to, which is what a status bar is in every editor that has one.
12
+ * **The status bar is not a live region.** The readout changes on every
13
+ * keystroke, and announcing it would interrupt screen reader users as they
14
+ * type. It is text that screen reader users can navigate to.
16
15
  *
17
- * A readout with nothing to say is not rendered at all rather than rendered
18
- * empty, or the bar keeps a gap where a value is not.
16
+ * A readout with no value is not rendered, so the bar has no empty gap.
19
17
  *
20
18
  * @since 0.1.0
21
19
  * @status stable
@@ -1,31 +1,29 @@
1
1
  import { type ConsoleDetail, HelixElement } from '@fusion.dev/helix-core';
2
2
  import type { CSSResultGroup, TemplateResult } from 'lit';
3
3
  /**
4
- * @summary Shows what the previewed example wrote to the console.
4
+ * @summary A panel that shows what the previewed example wrote to the console.
5
5
  *
6
6
  * @description
7
- * Fed by the sandbox, which hears `helix-console` from the preview and hands it
8
- * here. The preview is a separate document, so what arrives has already crossed
9
- * `postMessage`: text, not values.
7
+ * The sandbox receives `helix-console` events from the preview and passes them
8
+ * to the terminal. The preview is a separate document, so messages cross
9
+ * `postMessage` and arrive as text.
10
10
  *
11
- * **Repeats collapse.** An example with a render loop can write the same
12
- * warning hundreds of times, and two hundred identical lines say nothing that
13
- * one line and a count does not. Only consecutive repeats collapse, so the
14
- * order of what happened survives.
11
+ * **Repeats collapse.** Consecutive identical lines show as one line with a
12
+ * count, so an example with a render loop does not fill the panel with the same
13
+ * warning. Only consecutive repeats collapse, so the order of messages is kept.
15
14
  *
16
- * A `role="log"` rather than a live region by hand. It is the semantic for an
17
- * append-only stream, and it means a reader is told about new output without
18
- * the whole panel being re-announced each time.
15
+ * The panel has `role="log"`, the role for an append-only stream. Screen
16
+ * readers announce new output without reading the whole panel again.
19
17
  *
20
18
  * @since 0.1.0
21
19
  * @status stable
22
20
  * @aliases Console, Output
23
21
  * @documentation https://fusion.dev/helix/components/sandbox
24
22
  *
25
- * @csspart count - How many times a repeated line arrived.
23
+ * @csspart count - How many times a repeated line was written.
26
24
  * @csspart empty - Shown while nothing has been written.
27
25
  * @csspart entry - One line.
28
- * @csspart level - The level a line came in at.
26
+ * @csspart level - The console level a line was written at.
29
27
  * @csspart log - The scrolling region.
30
28
  * @csspart message - The text of a line.
31
29
  *
@@ -33,11 +31,11 @@ import type { CSSResultGroup, TemplateResult } from 'lit';
33
31
  */
34
32
  export declare class HelixSandboxTerminal extends HelixElement {
35
33
  /**
36
- * What to show before anything has been written.
34
+ * Text shown before anything has been written.
37
35
  */
38
36
  emptyLabel: string;
39
37
  /**
40
- * Accessible name for the log.
38
+ * The log's name, read by screen readers.
41
39
  */
42
40
  label: string;
43
41
  private entries;
@@ -4,16 +4,15 @@ import type { CSSResultGroup, TemplateResult } from 'lit';
4
4
  * @summary The bar across the top of a sandbox.
5
5
  *
6
6
  * @description
7
- * Spans the source pane and the preview together, so what it holds is about the
8
- * sandbox rather than about one side of it. The files go at the start and the
9
- * menus at the end, which is the arrangement every editor has settled on.
7
+ * Spans the source pane and the preview, and holds controls for the whole
8
+ * sandbox. Files go at the start and menus at the end, as in most editors.
10
9
  *
11
- * **Not `role="toolbar"`.** That role brings a roving tabindex, one tab stop
12
- * for the whole group, and it is for a set of controls of the same kind. This
13
- * holds a tab list, which owns its own arrow-key behavior and would lose it.
14
- * Use `helix-toolbar` where the contents really are a row of buttons.
10
+ * The toolbar does not have `role="toolbar"`. That role gives a group of
11
+ * similar controls one tab stop with a roving tabindex. The toolbar holds a tab
12
+ * list, which has its own arrow-key behavior that the role would break. Use
13
+ * `helix-toolbar` for a row of buttons.
15
14
  *
16
- * Both slots are bare, so an unfilled one generates no box and costs no gap.
15
+ * Both slots are bare, so an empty slot adds no box and no gap.
17
16
  *
18
17
  * @since 0.1.0
19
18
  * @status stable
@@ -24,7 +23,7 @@ import type { CSSResultGroup, TemplateResult } from 'lit';
24
23
  * @slot end - Items at the end, usually menus.
25
24
  *
26
25
  * @cssproperty --sandbox-toolbar-gap - Space between items.
27
- * @cssproperty --sandbox-toolbar-size - The bar's height. Defaults to a large control.
26
+ * @cssproperty --sandbox-toolbar-size - The bar's height. Defaults to the height of a large control.
28
27
  */
29
28
  export declare class HelixSandboxToolbar extends HelixElement {
30
29
  protected render(): TemplateResult;
@@ -2,39 +2,28 @@ import { HelixHeadlessScatterChart } from '@fusion.dev/helix-headless/scatter-ch
2
2
  import type { CSSResultGroup } from 'lit';
3
3
  import '../../tooltip/index.js';
4
4
  /**
5
- * @summary Whether two measures move together, one point per row.
5
+ * @summary A chart that shows whether two measures move together, with one point per row.
6
6
  *
7
7
  * @description
8
8
  * The points take the series palette in order, so a table with one column
9
- * measured up is series one and a table with three is the first three.
9
+ * measured up uses the first color and a table with three uses the first three.
10
10
  *
11
- * Each point has a ring of the page around it and stops short of opaque, so a
12
- * dense cluster reads as dense rather than as one blot, and two points that
13
- * overlap each keep their edge.
11
+ * Each point has a ring in the page background color and is slightly
12
+ * transparent, so a dense cluster looks dense and overlapping points keep their
13
+ * edges.
14
14
  *
15
- * **No visual axis applies here, and that is the answer rather than a gap.**
16
- * Both refusals come out of that sentence, and both were argued in the
17
- * stylesheet before they were argued anywhere a reader looks.
15
+ * No visual axis applies to the scatter chart, including `emphasis` and
16
+ * `material`, because the points' opacity already carries data:
18
17
  *
19
- * `emphasis` is how much ink a mark claims, and on a scatter that channel is
20
- * already carrying data. The points rest at 0.8 so that where they pile up they
21
- * compound: how dark a region is *is* how many rows are in it, which is most of
22
- * what a reader is looking at a scatter to see and is the one thing a table of
23
- * the same numbers hides. `solid` flattens a dense cluster and a sparse one into
24
- * the same picture; `outlined` replaces the pile with overlapping rings, which
25
- * reads as texture rather than as count. An axis whose two ends each cost the
26
- * drawing its density is not a treatment, it is a second meaning for a property
27
- * the chart already spends.
18
+ * - The points rest at 0.8 opacity, so where they overlap they darken, and a
19
+ * darker region has more rows. `solid` would make dense and sparse clusters
20
+ * look the same, and `outlined` would turn a cluster into overlapping rings
21
+ * that do not show the count.
22
+ * - Translucency shows density, so `glass` and `frosted` would make each point
23
+ * count for less.
28
24
  *
29
- * `material` is the same refusal said once more. Translucency is the density
30
- * channel here, so `glass` and `frosted` are two more named stops on a scale
31
- * the data is using, and a point admitting the page through is a point that
32
- * counts for less than one.
33
- *
34
- * What stays adjustable is `--scatter-chart-point-opacity`, and it is a
35
- * continuum rather than an axis: a chart drawn over a busier ground wants a
36
- * different resting density, and that is a fact about the ground rather than a
37
- * claim about the points.
25
+ * To adjust the resting opacity, for example on a busier background, set
26
+ * `--scatter-chart-point-opacity`.
38
27
  *
39
28
  * @since 0.1.0
40
29
  * @status stable
@@ -45,9 +34,9 @@ import '../../tooltip/index.js';
45
34
  *
46
35
  * @cssproperty --scatter-chart-block-size - Height of the drawing.
47
36
  * @cssproperty --scatter-chart-gap - Space between the drawing and its axes.
48
- * @cssproperty --scatter-chart-gridline-color - One rule across the plot, under `gridlines`.
49
- * @cssproperty --scatter-chart-point-opacity - How much of its color a point shows, so a cluster reads darker where it is denser.
50
- * @cssproperty --scatter-chart-point-ring-color - The ring around each point, which is the page's color unless the chart sits on something else.
37
+ * @cssproperty --scatter-chart-gridline-color - Color of the gridlines across the plot, drawn when `gridlines` is set.
38
+ * @cssproperty --scatter-chart-point-opacity - Opacity of a point, so a cluster looks darker where it is denser.
39
+ * @cssproperty --scatter-chart-point-ring-color - Color of the ring around each point. It matches the page, so change it when the chart sits on another surface.
51
40
  * @cssproperty --scatter-chart-point-size - Diameter of a point.
52
41
  */
53
42
  export declare class HelixScatterChart extends HelixHeadlessScatterChart {
@@ -1,12 +1,12 @@
1
1
  import { HelixHeadlessScrollArea } from '@fusion.dev/helix-headless/scroll-area';
2
2
  import type { CSSResultGroup } from 'lit';
3
3
  /**
4
- * @summary A scrolling box that says there is more.
4
+ * @summary A scrolling box that shows which edges have more content past them.
5
5
  *
6
6
  * @description
7
- * Presentation only: the fades on the edges the base class names, and a
8
- * scrollbar that belongs to the system rather than to the platform. Which edges
9
- * have content past them is measured by the base class.
7
+ * Presentation only: fades on the edges the base class reports, and a scrollbar
8
+ * styled to match the design system. The base class measures which edges have
9
+ * content past them.
10
10
  *
11
11
  * @since 0.1.0
12
12
  * @status stable
@@ -14,15 +14,15 @@ import type { CSSResultGroup } from 'lit';
14
14
  * @aliases Scroller, Overflow, Scroll container
15
15
  * @documentation https://fusion.dev/helix/components/scroll-area
16
16
  *
17
- * @cssproperty --scroll-area-fade - How deep the fades are, at both edges.
18
- * @cssproperty --scroll-area-fade-block-end - And the bottom one.
19
- * @cssproperty --scroll-area-fade-block-start - How deep the top one is, or `0` to drop it.
20
- * @cssproperty --scroll-area-fade-color - What they fade to, which is the ground behind.
21
- * @cssproperty --scroll-area-fade-inline-end - And the trailing one.
22
- * @cssproperty --scroll-area-fade-inline-start - How deep the leading sideways one is, or `0` to drop it.
23
- * @cssproperty --scroll-area-scrollbar - The scrollbar width keyword.
24
- * @cssproperty --scroll-area-thumb-color - The scrollbar's handle.
25
- * @cssproperty --scroll-area-track-color - And its track.
17
+ * @cssproperty --scroll-area-fade - The depth of the fades at both edges.
18
+ * @cssproperty --scroll-area-fade-block-end - The depth of the bottom fade, or `0` to remove it.
19
+ * @cssproperty --scroll-area-fade-block-start - The depth of the top fade, or `0` to remove it.
20
+ * @cssproperty --scroll-area-fade-color - The color the fades blend into, which is the background behind the box.
21
+ * @cssproperty --scroll-area-fade-inline-end - The depth of the fade at the inline end, or `0` to remove it.
22
+ * @cssproperty --scroll-area-fade-inline-start - The depth of the fade at the inline start, or `0` to remove it.
23
+ * @cssproperty --scroll-area-scrollbar - The scrollbar width, as a `scrollbar-width` keyword.
24
+ * @cssproperty --scroll-area-thumb-color - The color of the scrollbar's thumb.
25
+ * @cssproperty --scroll-area-track-color - The color of the scrollbar's track.
26
26
  */
27
27
  export declare class HelixScrollArea extends HelixHeadlessScrollArea {
28
28
  static styles: CSSResultGroup;