@fusion.dev/helix 0.105.0 → 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 (178) hide show
  1. package/custom-elements.json +8259 -4085
  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 +7 -0
  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/buildings/map-buildings.css.d.ts +1 -0
  73. package/dist/map/buildings/map-buildings.css.js +27 -0
  74. package/dist/map/buildings/map-buildings.d.ts +28 -0
  75. package/dist/map/buildings/map-buildings.js +20 -0
  76. package/dist/map/contours/map-contours.css.d.ts +1 -0
  77. package/dist/map/contours/map-contours.css.js +8 -0
  78. package/dist/map/contours/map-contours.d.ts +25 -0
  79. package/dist/map/contours/map-contours.js +16 -0
  80. package/dist/map/index.d.ts +5 -0
  81. package/dist/map/index.js +5 -0
  82. package/dist/map/landcover/map-landcover.css.d.ts +1 -0
  83. package/dist/map/landcover/map-landcover.css.js +5 -0
  84. package/dist/map/landcover/map-landcover.d.ts +25 -0
  85. package/dist/map/landcover/map-landcover.js +16 -0
  86. package/dist/map/marker/map-marker.css.js +5 -0
  87. package/dist/map/position/map-position.css.js +5 -0
  88. package/dist/map/raster/map-raster.css.d.ts +1 -0
  89. package/dist/map/raster/map-raster.css.js +4 -0
  90. package/dist/map/raster/map-raster.d.ts +23 -0
  91. package/dist/map/raster/map-raster.js +16 -0
  92. package/dist/map/root/map-root.css.js +218 -1
  93. package/dist/map/terrain/map-terrain.css.d.ts +1 -0
  94. package/dist/map/terrain/map-terrain.css.js +12 -0
  95. package/dist/map/terrain/map-terrain.d.ts +27 -0
  96. package/dist/map/terrain/map-terrain.js +16 -0
  97. package/dist/megamenu/root/megamenu-root.d.ts +14 -14
  98. package/dist/menu/item/menu-item.d.ts +8 -8
  99. package/dist/menu/root/menu-root.d.ts +9 -9
  100. package/dist/meter/root/meter-root.d.ts +29 -38
  101. package/dist/navigation/root/navigation-root.d.ts +4 -5
  102. package/dist/notifications/group/notification-group.d.ts +9 -13
  103. package/dist/notifications/notification/notification.d.ts +27 -33
  104. package/dist/notifications/root/notifications-root.d.ts +9 -11
  105. package/dist/number-input/root/number-input-root.d.ts +16 -18
  106. package/dist/object-inspector/root/object-inspector-root.d.ts +11 -12
  107. package/dist/option/group/option-group.d.ts +3 -4
  108. package/dist/option/root/option-root.d.ts +7 -8
  109. package/dist/orb/root/orb-root.d.ts +30 -36
  110. package/dist/outline/root/outline-root.d.ts +8 -10
  111. package/dist/pagination/root/pagination-root.d.ts +13 -23
  112. package/dist/pagination/size/pagination-size.d.ts +7 -7
  113. package/dist/pagination/summary/pagination-summary.d.ts +3 -4
  114. package/dist/pin-input/root/pin-input-root.d.ts +8 -11
  115. package/dist/popover/root/popover-root.d.ts +14 -16
  116. package/dist/progress/root/progress-root.d.ts +10 -13
  117. package/dist/qr-code/root/qr-code-root.d.ts +13 -14
  118. package/dist/quote/root/quote-root.d.ts +2 -2
  119. package/dist/radio/group/radio-group.d.ts +6 -6
  120. package/dist/radio/root/radio-root.d.ts +16 -19
  121. package/dist/rating/root/rating-root.d.ts +9 -9
  122. package/dist/sandbox/preview/sandbox-preview.d.ts +18 -19
  123. package/dist/sandbox/root/sandbox-root.d.ts +27 -27
  124. package/dist/sandbox/source/sandbox-source.d.ts +9 -12
  125. package/dist/sandbox/status-bar/sandbox-status-bar.d.ts +9 -11
  126. package/dist/sandbox/terminal/sandbox-terminal.d.ts +13 -15
  127. package/dist/sandbox/toolbar/sandbox-toolbar.d.ts +8 -9
  128. package/dist/scatter-chart/root/scatter-chart-root.d.ts +18 -29
  129. package/dist/scroll-area/root/scroll-area-root.d.ts +13 -13
  130. package/dist/select/root/select-root.d.ts +14 -14
  131. package/dist/shared/mixin-control-surface/mixin-control-surface.d.ts +8 -2
  132. package/dist/shared/viewport/viewport.css.js +5 -1
  133. package/dist/skeleton/root/skeleton-root.d.ts +6 -7
  134. package/dist/skip-link/root/skip-link-root.d.ts +16 -19
  135. package/dist/slider/root/slider-root.d.ts +16 -18
  136. package/dist/sparkline/root/sparkline-root.d.ts +16 -24
  137. package/dist/speed-dial/item/speed-dial-item.d.ts +5 -5
  138. package/dist/speed-dial/root/speed-dial-root.d.ts +3 -4
  139. package/dist/splitter/root/splitter-root.d.ts +23 -32
  140. package/dist/stat/group/stat-group.d.ts +4 -5
  141. package/dist/stat/root/stat-root.d.ts +4 -5
  142. package/dist/steps/root/steps-root.d.ts +12 -13
  143. package/dist/switch/root/switch-root.d.ts +13 -17
  144. package/dist/table/cell/table-cell.css.js +5 -0
  145. package/dist/table/cell/table-cell.d.ts +4 -4
  146. package/dist/table/column/table-column.d.ts +3 -4
  147. package/dist/table/root/table-root.d.ts +5 -6
  148. package/dist/table/row/table-row.d.ts +3 -3
  149. package/dist/tabs/panel/tab-panel.d.ts +2 -3
  150. package/dist/tabs/root/tabs-root.d.ts +12 -11
  151. package/dist/tabs/tab/tab.d.ts +4 -4
  152. package/dist/tag/root/tag-root.d.ts +10 -11
  153. package/dist/text/root/text-root.d.ts +22 -30
  154. package/dist/textarea/root/textarea-root.d.ts +4 -5
  155. package/dist/time-input/root/time-input-root.d.ts +12 -14
  156. package/dist/time-picker/root/time-picker-root.d.ts +8 -10
  157. package/dist/timeline/item/timeline-item.d.ts +2 -2
  158. package/dist/timeline/root/timeline-root.d.ts +3 -3
  159. package/dist/toast/item/toast-item.d.ts +7 -8
  160. package/dist/toast/root/toast-root.d.ts +10 -12
  161. package/dist/toggle/group/toggle-group.d.ts +10 -12
  162. package/dist/toggle/root/toggle-root.d.ts +2 -3
  163. package/dist/toolbar/root/toolbar-root.d.ts +3 -3
  164. package/dist/tooltip/root/tooltip-root.d.ts +10 -10
  165. package/dist/tour/root/tour-root.d.ts +5 -6
  166. package/dist/tour/stop/tour-stop.d.ts +14 -14
  167. package/dist/tree/item/tree-item.d.ts +6 -9
  168. package/dist/tree/root/tree-root.d.ts +7 -8
  169. package/dist/trend/root/trend-root.d.ts +12 -19
  170. package/dist/video/root/video-root.d.ts +15 -21
  171. package/dist/video-playlist/item/video-playlist-item.d.ts +4 -4
  172. package/dist/video-playlist/menu/video-playlist-menu.d.ts +14 -16
  173. package/dist/video-playlist/root/video-playlist-root.d.ts +5 -5
  174. package/dist/virtual-list/root/virtual-list-root.d.ts +6 -8
  175. package/package.json +6 -6
  176. package/types/jsx.d.ts +10064 -8833
  177. package/types/svelte.d.ts +5 -0
  178. package/types/vue.d.ts +1909 -1480
@@ -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;
@@ -3,16 +3,15 @@ import type { CSSResultGroup } from 'lit';
3
3
  import '../../listbox/index.js';
4
4
  import '../../option/index.js';
5
5
  /**
6
- * @summary A closed list that opens to be chosen from.
6
+ * @summary A control that opens a list of options to choose from.
7
7
  *
8
8
  * @description
9
- * The trigger wears the same frame as an `Input`, because in a form it stands
10
- * in a row with them and a control that looks like a button among fields reads
11
- * as an action rather than an answer.
9
+ * The trigger uses the same frame as `Input`, so it lines up with the fields
10
+ * beside it in a form. A trigger that looked like a button would read as an
11
+ * action.
12
12
  *
13
- * The panel is an overlay surface rather than a sunken one: it sits over the
14
- * page instead of on it, which is what its shadow says and what tells it apart
15
- * from the field it came out of.
13
+ * The panel uses an overlay surface. Its shadow shows that it sits over the
14
+ * page and sets it apart from the field it opened from.
16
15
  *
17
16
  * @since 0.1.0
18
17
  * @status stable
@@ -21,18 +20,19 @@ import '../../option/index.js';
21
20
  * @documentation https://fusion.dev/helix/components/select
22
21
  *
23
22
  * @cssproperty --select-border-color - Color of the panel's edge.
24
- * @cssproperty --select-border-width - Width of the panel's edge. Follows
25
- * `--helix-border-floating`, which is `0`, so the panel is told apart by its lift unless a
26
- * theme says otherwise.
27
- * @cssproperty --select-shadow - Lift under the panel. Follows `--helix-shadow-floating`: a
28
- * floating surface sits over content nobody can predict, so it keeps a lift by default.
29
- * @cssproperty --select-surface-max-block-size - How tall the panel gets.
23
+ * @cssproperty --select-border-width - Width of the panel's edge. Defaults to
24
+ * `--helix-border-floating`, which is `0`, so the panel stands out by its shadow unless
25
+ * your theme sets a width.
26
+ * @cssproperty --select-shadow - Shadow under the panel. Defaults to
27
+ * `--helix-shadow-floating`, because the panel can sit over any content.
28
+ * @cssproperty --select-surface-max-block-size - Maximum height of the panel.
30
29
  */
31
30
  export declare class HelixSelect extends HelixHeadlessSelect {
32
31
  static tier: string;
33
32
  static styles: CSSResultGroup;
34
33
  /**
35
- * How much ink the trigger claims.
34
+ * How strongly the trigger is drawn. Leave it unset for a framed field, or
35
+ * set `ghost` for a trigger with no fill or edge.
36
36
  *
37
37
  * **The first field in this library to take an axis, and the case that asked
38
38
  * for it is a control in a row rather than a control on a form.** A chat's
@@ -19,9 +19,15 @@ type Constructor<T> = new (...args: any[]) => T;
19
19
  * three drift the first time one gains a value.
20
20
  */
21
21
  export declare class MixinControlSurfaceInterface {
22
- /** How filled it is drawn. Absent is the control's own resting treatment. */
22
+ /**
23
+ * How much fill the control is drawn with. Without it, the control uses its
24
+ * default.
25
+ */
23
26
  emphasis?: 'ghost' | 'outlined' | 'solid' | 'subtle';
24
- /** What it means. Absent is `neutral`, which is the resting case. */
27
+ /**
28
+ * Which color the control is drawn in, by what it means. Without it, the tone
29
+ * is `neutral`.
30
+ */
25
31
  tone?: 'accent' | 'danger' | 'neutral' | 'primary';
26
32
  }
27
33
  export declare const MixinControlSurface: <T extends Constructor<HelixElement>>(Base: T) => Constructor<MixinControlSurfaceInterface> & T;
@@ -103,5 +103,9 @@ outline-offset: var(--helix-size-focus-offset);
103
103
  }
104
104
 
105
105
  [part="controls"] button:hover {
106
- background-color: var(--helix-color-surface-raised);
106
+ background-color: color-mix(
107
+ in oklab,
108
+ var(--helix-color-foreground) 10%,
109
+ var(--viewport-control-background-color, var(--helix-color-surface-overlay))
110
+ );
107
111
  }`);
@@ -1,12 +1,11 @@
1
1
  import { HelixHeadlessSkeleton } from '@fusion.dev/helix-headless/skeleton';
2
2
  import type { CSSResultGroup } from 'lit';
3
3
  /**
4
- * @summary Stands in for content that has not arrived.
4
+ * @summary A placeholder shown in place of content that is still loading.
5
5
  *
6
6
  * @description
7
- * A sweep rather than a pulse. A block fading in and out reads as something
8
- * broken; a highlight traveling across it reads as work in progress, and it is
9
- * the same one property animating either way.
7
+ * Animates a highlight sweeping across the block, which reads as work in
8
+ * progress. A block fading in and out can look broken.
10
9
  *
11
10
  * @since 0.1.0
12
11
  * @status stable
@@ -14,13 +13,13 @@ import type { CSSResultGroup } from 'lit';
14
13
  * @aliases Placeholder, Shimmer, Ghost
15
14
  * @documentation https://fusion.dev/helix/components/skeleton
16
15
  *
17
- * @csspart skeleton - The placeholder surface.
16
+ * @csspart skeleton - The placeholder shape.
18
17
  *
19
- * @cssproperty --skeleton-size - Diameter of the circle shape.
18
+ * @cssproperty --skeleton-size - The diameter of the circle shape.
20
19
  */
21
20
  export declare class HelixSkeleton extends HelixHeadlessSkeleton {
22
21
  /**
23
- * What the missing content is shaped like.
22
+ * The shape of the placeholder: `text`, `circle`, or a block when unset.
24
23
  *
25
24
  * Unset is a block, which is what most missing things are.
26
25
  */