@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
@@ -5,23 +5,24 @@ declare const HelixHeadlessDrawer_base: (new (...args: any[]) => import("@fusion
5
5
  * @summary A panel that slides in from an edge.
6
6
  *
7
7
  * @description
8
- * Takes `MixinControllerOpen`, so `open`, `defaultOpen` and the
9
- * `helix-before-open` and `helix-before-close` requests behave exactly as they
10
- * do on an accordion item, and a consumer already knows the API.
8
+ * Uses `MixinControllerOpen`, so `open`, `defaultOpen`, and the
9
+ * `helix-before-open` and `helix-before-close` events work the same way as on
10
+ * an accordion item.
11
11
  *
12
- * Modal by default, which is three things together and not one: focus is
13
- * trapped inside, Escape and an outside press close it, and the page behind is
14
- * covered. A panel with the look of a modal and none of its behavior is worse
15
- * than an inline one, because it invites the reader to treat it as blocking.
12
+ * The drawer is modal by default, which means three things:
16
13
  *
17
- * Content stays mounted when closed, so it is in the server's markup and can
18
- * animate. A closed `<dialog>` is already out of the tab order and out of the
19
- * accessibility tree, so nothing here writes `inert`. The `role`, the
20
- * `aria-modal` and the scrim come from the element too, and
21
- * `drawer-root.ssr.spec.ts` asserts the panel carries no hand-written `inert`
22
- * and no hand-written `role`.
14
+ * - focus is trapped inside
15
+ * - Escape and a press outside close it
16
+ * - the page behind is covered
23
17
  *
24
- * Opened declaratively with the platform's invoker attributes:
18
+ * Content stays mounted when the drawer is closed, so it is in the server
19
+ * markup and can animate. A closed `<dialog>` is already out of the tab order
20
+ * and the accessibility tree, so the drawer does not write `inert`. The `role`,
21
+ * `aria-modal`, and the scrim also come from the `<dialog>` element.
22
+ * `drawer-root.ssr.spec.ts` checks that the panel has no hand-written `inert`
23
+ * or `role`.
24
+ *
25
+ * Open the drawer declaratively with the platform's invoker attributes:
25
26
  *
26
27
  * ```html
27
28
  * <helix-headless-button commandfor="nav" command="--toggle">Menu</helix-headless-button>
@@ -37,10 +38,10 @@ declare const HelixHeadlessDrawer_base: (new (...args: any[]) => import("@fusion
37
38
  * @slot - The drawer's content.
38
39
  * @slot header - Content pinned above the scrolling area.
39
40
  *
40
- * @event {Event} close - Relayed, because the platform's own does not escape.
41
+ * @event {Event} close - Sent from the host after the drawer closes, because the native `close` event does not leave the shadow root.
41
42
  * @event {HelixBeforeCloseEvent} helix-before-close - Fired before the panel closes, and cancelable.
42
- * @event {HelixBeforeOpenEvent} helix-before-open - Fired before the panel opens. Cancelable: refusing it takes the decision and nothing moves.
43
- * @event {Event} toggle - Says the state moved, carrying `newState` and `oldState`.
43
+ * @event {HelixBeforeOpenEvent} helix-before-open - Fired before the panel opens, and cancelable. Canceling it keeps the panel closed.
44
+ * @event {Event} toggle - Sent when the drawer opens or closes, with `newState` and `oldState`.
44
45
  *
45
46
  * @csspart content - The scrolling content region.
46
47
  * @csspart header - The header region.
@@ -51,7 +52,7 @@ declare const HelixHeadlessDrawer_base: (new (...args: any[]) => import("@fusion
51
52
  export declare class HelixHeadlessDrawer extends HelixHeadlessDrawer_base {
52
53
  protected readonly commands: CommandController;
53
54
  /**
54
- * Which close requests the browser answers on its own.
55
+ * Which close requests the browser handles on its own.
55
56
  *
56
57
  * `<dialog closedby>`, forwarded, and safe to forward because every path it
57
58
  * opens still comes back through this element: a close request fires `cancel`
@@ -1,43 +1,43 @@
1
1
  import { HelixElement } from '@fusion.dev/helix-core';
2
2
  import { nothing, type PropertyValues, type TemplateResult } from 'lit';
3
3
  /**
4
- * @summary One row of a drill-down, which may hold a page of its own.
4
+ * @summary One row of a drill-down, which can open a page of its own.
5
5
  *
6
6
  * @description
7
- * A row that opens a page *contains* that page: its rows are this row's own
8
- * children, assigned to the `page` slot. The tree is the structure, so there
9
- * are no ids to wire and a consumer who moves a row has moved its page with it.
7
+ * A row that opens a page contains that page: the page's rows are this row's
8
+ * own children, assigned to the `page` slot. There are no ids to wire, and
9
+ * moving a row moves its page with it.
10
10
  *
11
- * **It renders one of three things**, and which one is the stack's business
12
- * rather than its own. On the page showing, it is a row. Showing its own page,
13
- * it contributes that page's rows and nothing else, because its row belongs to
14
- * the page above. On neither, it renders nothing at all: the rows are in the
15
- * light DOM and come back untouched, so there is no state to keep and nothing
16
- * to hide with an attribute this element would have to write onto itself.
11
+ * What the item renders depends on the stack:
17
12
  *
18
- * Choosing is announced, never applied. The row dispatches and the stack
19
- * decides whether that means drilling in or choosing a command.
13
+ * - On the page that is showing, it renders its row.
14
+ * - When its own page is showing, it renders only that page's rows. Its row
15
+ * belongs to the page above.
16
+ * - Otherwise it renders nothing. The rows stay in the light DOM untouched, so
17
+ * there is no state to keep.
20
18
  *
21
- * **A row that opens a page says so**, with a caret after its words and
22
- * `aria-haspopup`, the way `Menu` marks a row with a submenu: a row that goes
23
- * somewhere and a row that does something otherwise look the same until one is
24
- * pressed. Not on the server, which cannot see the children and so cannot know.
19
+ * Choosing a row dispatches an event, and the stack decides whether that drills
20
+ * in or runs a command.
21
+ *
22
+ * A row that opens a page shows a caret after its text and sets
23
+ * `aria-haspopup`, the same way `Menu` marks a row with a submenu. The server
24
+ * render leaves both out, because the server cannot see the children.
25
25
  *
26
26
  * @since 0.1.0
27
27
  * @status stable
28
28
  * @aliases Panel item, Drill row
29
29
  * @documentation https://fusion.dev/helix/components/drilldown
30
30
  *
31
- * @slot - The words naming this row.
32
- * @slot end - After the words, usually a mark or a count.
33
- * @slot page - The rows of the page this one opens.
34
- * @slot start - Before the words, usually an icon.
31
+ * @slot - The row's label.
32
+ * @slot end - Content after the label, usually an icon or a count.
33
+ * @slot page - The rows of the page this row opens.
34
+ * @slot start - Content before the label, usually an icon.
35
35
  *
36
- * @event {HelixSelectEvent} helix-select - Fired when the row is chosen. Cancelable: refusing it takes the decision and nothing moves.
36
+ * @event {HelixSelectEvent} helix-select - Fired when the row is chosen. Cancelable: canceling it stops the change and leaves the decision to you.
37
37
  *
38
38
  * @csspart item - The row itself.
39
- * @csspart label - The words.
40
- * @csspart mark - The caret at the end of a row that opens a page, after the `end` slot. A caret points, so a sheet mirrors it in a right-to-left document.
39
+ * @csspart label - The row's label.
40
+ * @csspart mark - The caret at the end of a row that opens a page, after the `end` slot. The caret points, so a stylesheet mirrors it in a right-to-left document.
41
41
  */
42
42
  export declare class HelixHeadlessDrilldownItem extends HelixElement {
43
43
  /**
@@ -45,7 +45,7 @@ export declare class HelixHeadlessDrilldownItem extends HelixElement {
45
45
  */
46
46
  disabled: boolean;
47
47
  /**
48
- * Whether this row holds the region's tab stop. Written by the stack.
48
+ * Whether this row holds the region's tab stop. Set by the drill-down.
49
49
  *
50
50
  * A drill-down keeps one stop and moves within it on the arrows, so every
51
51
  * other row is at `-1`. Leave it off every row, including the first, and
@@ -77,7 +77,7 @@ export declare class HelixHeadlessDrilldownItem extends HelixElement {
77
77
  */
78
78
  showingPage: boolean;
79
79
  /**
80
- * Identifies the row to whatever is listening.
80
+ * Identifies the row to your event listeners.
81
81
  */
82
82
  value: string;
83
83
  /**
@@ -112,8 +112,8 @@ export declare class HelixHeadlessDrilldownItem extends HelixElement {
112
112
  /** Moves focus onto the row itself. */
113
113
  focusItem(): void;
114
114
  /**
115
- * Whether this is the row the set is on, which in a drill-down is where focus
116
- * is.
115
+ * Whether this is the current row, which in a drill-down is the row with
116
+ * focus.
117
117
  *
118
118
  * A radio group's selection is an answer it holds; a page of rows has no
119
119
  * answer, only the row a reader has walked to, so focus is the whole of what
@@ -129,7 +129,7 @@ export declare class HelixHeadlessDrilldownItem extends HelixElement {
129
129
  * dereferences what it ran out of.
130
130
  */
131
131
  get selected(): boolean;
132
- /** Announces that this row was chosen. */
132
+ /** Fires `helix-select` for this row. */
133
133
  select(): void;
134
134
  protected render(): TemplateResult | typeof nothing;
135
135
  }
@@ -2,29 +2,23 @@ import { HelixElement, KeyboardNavigationController } from '@fusion.dev/helix-co
2
2
  import { type PropertyValues, type TemplateResult } from 'lit';
3
3
  declare const HelixHeadlessDrilldown_base: (new (...args: any[]) => import("@fusion.dev/helix-core").CollectionElement) & typeof HelixElement;
4
4
  /**
5
- * @summary A stack of pages, one showing at a time, with a way back.
5
+ * @summary A stack of pages that shows one at a time, with a back button.
6
6
  *
7
7
  * @description
8
- * One panel that changes rather than panels opening beside each other. That is
9
- * the right shape wherever there is no room for a second column: a phone has
10
- * none, and a touch screen has no hover to open one with.
8
+ * One panel whose content changes as you move between pages. Use it where there
9
+ * is no room for a second column, such as on a phone, or on a touch screen with
10
+ * no hover to open one.
11
11
  *
12
- * **Not a `Menu`, and the difference is what it is for rather than how it
13
- * looks.** A menu is a thing that opens from a trigger and closes when it is
14
- * done; this is a region that sits where it is put, inside a drawer or a
15
- * sidebar or a settings panel. `Menu` drills too, through the same controller,
16
- * because a menu deep enough to need pages wants exactly this behavior without
17
- * being this component.
12
+ * It is a region that stays where you put it, such as inside a drawer, a
13
+ * sidebar, or a settings panel. A `Menu` opens from a trigger and closes when
14
+ * you are done. `Menu` can drill into pages too, through the same controller.
18
15
  *
19
- * **Navigation, never a value.** Rows are places to go and commands to run, so
20
- * nothing here is form-associated and nothing is submitted. A drill-down that
21
- * reported a value would be a `Listbox` whose options happen to nest, and that
22
- * is the component to reach for instead.
16
+ * Rows are places to go and commands to run. Nothing here is form-associated
17
+ * and nothing is submitted. To choose a value, use a `Listbox`.
23
18
  *
24
- * **The tree is the state.** A row that opens a page contains that page, so the
25
- * stack holds one reference and reads the rest from the DOM. See
26
- * `DrilldownController`, which is where this behavior lives and which `Menu`
27
- * shares.
19
+ * A row that opens a page contains that page, so the stack holds one reference
20
+ * and reads the rest from the DOM. The behavior lives in `DrilldownController`,
21
+ * which `Menu` shares.
28
22
  *
29
23
  * @since 0.1.0
30
24
  * @status stable
@@ -34,26 +28,26 @@ declare const HelixHeadlessDrilldown_base: (new (...args: any[]) => import("@fus
34
28
  *
35
29
  * @slot - The rows of the top page.
36
30
  *
37
- * @event {HelixSelectEvent} helix-select - Fired when a row with no page is chosen. Cancelable: refusing it takes the decision and nothing moves.
31
+ * @event {HelixSelectEvent} helix-select - Fired when a row with no page is chosen. Cancelable: canceling it stops the change and leaves the decision to you.
38
32
  *
39
- * @csspart back - The control that returns one page.
40
- * @csspart back-mark - The glyph on the back control.
33
+ * @csspart back - The button that goes back one page.
34
+ * @csspart back-mark - The icon on the back button.
41
35
  * @csspart empty - Shown when there are no entries to show.
42
- * @csspart header - The bar above a page, holding the way back and its name.
43
- * @csspart live - The empty and loading lines again, in a region a screen reader hears when they change. Visually hidden in the styled tier.
44
- * @csspart loading - Shown while the entries are still on their way.
36
+ * @csspart header - The bar above a page, which holds the back button and the page's name.
37
+ * @csspart live - A copy of the empty and loading text, in a region that screen readers announce when it changes. Visually hidden in the styled tier.
38
+ * @csspart loading - Shown while the entries load.
45
39
  * @csspart page - The region the rows are in.
46
40
  * @csspart title - The name of the page showing.
47
41
  *
48
- * @cssstate drilled - While a row's page is showing rather than the top one, so a frame around this can answer the depth it is at.
42
+ * @cssstate drilled - A row's page is showing, so a frame around the drilldown can style itself for that depth.
49
43
  */
50
44
  export declare class HelixHeadlessDrilldown extends HelixHeadlessDrilldown_base {
51
45
  /**
52
- * Accessible name for the region.
46
+ * The region's name, read by screen readers.
53
47
  */
54
48
  label: string;
55
49
  /**
56
- * What the control returning from a page reads.
50
+ * The text of the back button.
57
51
  */
58
52
  backLabel: string;
59
53
  /**
@@ -108,7 +102,7 @@ export declare class HelixHeadlessDrilldown extends HelixHeadlessDrilldown_base
108
102
  /** Shows a row's page, and puts focus on the first row of it. */
109
103
  private enter;
110
104
  /**
111
- * Returns one page, and reports whether there was one to return to.
105
+ * Goes back one page, and returns whether there was a page to go back to.
112
106
  *
113
107
  * Focus lands on the row that opened the page being left, which is why the
114
108
  * row is read before going back rather than after: a reader who drills in and
@@ -100,7 +100,25 @@ registerElementEvents({
100
100
  'toggle',
101
101
  ],
102
102
  'helix-headless-listbox': ['change', 'helix-before-change', 'helix-filter', 'input'],
103
- 'helix-headless-map': ['helix-map-pan', 'helix-map-zoom'],
103
+ 'helix-headless-map': [
104
+ 'helix-activate',
105
+ 'helix-map-cluster',
106
+ 'helix-map-pan',
107
+ 'helix-map-part-change',
108
+ 'helix-map-rotate',
109
+ 'helix-map-tilt',
110
+ 'helix-map-zoom',
111
+ ],
112
+ 'helix-headless-map-area': ['helix-map-part-change'],
113
+ 'helix-headless-map-buildings': ['helix-map-part-change'],
114
+ 'helix-headless-map-contours': ['helix-map-part-change'],
115
+ 'helix-headless-map-landcover': ['helix-map-part-change'],
116
+ 'helix-headless-map-marker': ['helix-map-cluster', 'helix-map-part-change'],
117
+ 'helix-headless-map-points': ['helix-activate', 'helix-map-cluster', 'helix-map-part-change'],
118
+ 'helix-headless-map-position': ['helix-map-part-change'],
119
+ 'helix-headless-map-raster': ['helix-map-part-change'],
120
+ 'helix-headless-map-route': ['helix-map-part-change'],
121
+ 'helix-headless-map-terrain': ['helix-map-part-change'],
104
122
  'helix-headless-megamenu': ['helix-before-close', 'helix-before-open', 'toggle'],
105
123
  'helix-headless-menu': ['helix-before-close', 'helix-before-open', 'helix-select', 'toggle'],
106
124
  'helix-headless-menu-item': ['helix-select'],
@@ -1,24 +1,21 @@
1
1
  import { ArrivalController, HelixElement } from '@fusion.dev/helix-core';
2
2
  import { type TemplateResult } from 'lit';
3
3
  /**
4
- * @summary Says that a region has nothing in it, and what to do about it.
4
+ * @summary A message that a region has nothing in it, and the next step to take.
5
5
  *
6
6
  * @description
7
- * An empty region with no explanation is indistinguishable from one that failed
8
- * to load, so this exists to tell the difference: what would be here, and the
9
- * one action that would put something here.
7
+ * Shows what would be in a region and the one action that would fill it, so an
8
+ * empty region does not look like one that failed to load.
10
9
  *
11
- * Announced, because an empty view usually arrives in place of content that was
12
- * being fetched: saying so is the only way a screen-reader user learns the
13
- * search returned nothing, rather than being left waiting. **From a region of
14
- * its own that is there before its words are**, filled a frame after the view
15
- * appears. The host was the region, and a page inserts an empty state with its
16
- * message already in it, which is a region arriving with its words: read
17
- * inconsistently at best.
10
+ * The message is announced, because an empty view often replaces content that
11
+ * was loading, and the announcement tells a screen reader user that the search
12
+ * returned nothing. It is announced from a status region of its own, which is
13
+ * rendered empty and filled a frame after the view appears. Screen readers read
14
+ * a region that arrives with its text already in it inconsistently.
18
15
  *
19
- * Every region is a bare slot. The reference ships an `empty-state-heading` and
20
- * an `empty-state-actions` whose only job is to assign themselves a slot on
21
- * connect, which is a component for something the consumer can write.
16
+ * Every region is a bare slot. There is no `empty-state-heading` or
17
+ * `empty-state-actions` element: assign your own heading and actions to the
18
+ * slots.
22
19
  *
23
20
  * @since 0.1.0
24
21
  * @status stable
@@ -26,12 +23,12 @@ import { type TemplateResult } from 'lit';
26
23
  * @aliases Placeholder, NoResults, Blank
27
24
  * @documentation https://fusion.dev/helix/components/empty
28
25
  *
29
- * @slot - Why, and what to do about it.
30
- * @slot actions - The way out.
31
- * @slot heading - What is missing.
32
- * @slot icon - A mark above the heading.
26
+ * @slot - The message: why the region is empty, and what to do about it.
27
+ * @slot actions - The action that would put something in the region.
28
+ * @slot heading - The heading, which names what is missing.
29
+ * @slot icon - An icon above the heading.
33
30
  *
34
- * @csspart live - The heading and the message again, in a region a screen reader hears when the view appears. Visually hidden in the styled tier.
31
+ * @csspart live - A copy of the heading and the message, in a live region that screen readers announce when the view appears. Visually hidden in the styled tier.
35
32
  */
36
33
  export declare class HelixHeadlessEmpty extends HelixElement {
37
34
  /**
@@ -3,19 +3,18 @@ import { type PropertyValues, type TemplateResult } from 'lit';
3
3
  import '../../tag/index.js';
4
4
  declare const HelixHeadlessFileInput_base: (new (...args: any[]) => import("@fusion.dev/helix-core").MixinFieldInterface) & typeof HelixFormElement;
5
5
  /**
6
- * @summary A control for choosing files, by pointer or by dropping them on it.
6
+ * @summary A field for choosing files from a picker or by dropping them on it.
7
7
  *
8
8
  * @description
9
- * **A real `<input type="file">`, kept and made invisible rather than
10
- * replaced.** It is the only way to open a file picker: the dialog is a
11
- * privileged action a script cannot start on its own, and it opens for a click
12
- * on the input or on a `<label>` pointing at it. A component that draws its own
13
- * button calls `.click()` on a hidden input anyway, and then has two things a
14
- * screen reader can find where there is one control.
9
+ * File Input keeps a real `<input type="file">` and makes it invisible. Only a
10
+ * file input opens the file picker: the browser opens it for a click on the
11
+ * input or on a `<label>` that points at it, and a script cannot open it on its
12
+ * own. A custom button would still call `.click()` on a hidden input, and a
13
+ * screen reader would find two controls.
15
14
  *
16
- * So the input stays, holding the label, the name, the validity and the focus,
17
- * and the visible trigger is a `<label for>`. A label is not focusable and does
18
- * not need to be: the input is, and Enter and Space on it open the picker.
15
+ * The input holds the label, the name, the validity, and the focus, and the
16
+ * visible trigger is a `<label for>`. The label is not focusable. The input is,
17
+ * and Enter and Space on it open the picker.
19
18
  *
20
19
  * @since 0.1.0
21
20
  * @status stable
@@ -23,36 +22,36 @@ declare const HelixHeadlessFileInput_base: (new (...args: any[]) => import("@fus
23
22
  * @aliases FileUpload, FilePicker, Dropzone, InputFile
24
23
  * @documentation https://fusion.dev/helix/components/file-input
25
24
  *
26
- * @slot feedback - What is wrong with it.
25
+ * @slot feedback - The message that says what is wrong with the chosen files.
27
26
  * @slot hint - Help under the field.
28
- * @slot trigger - What the reader presses to open the picker.
27
+ * @slot trigger - The content that opens the picker when pressed.
29
28
  *
30
- * @event {Event} change - Announced once the value has moved.
31
- * @event {HelixBeforeChangeEvent} helix-before-change - Fired before the chosen files change, with their names. Cancelable: refusing it takes the decision and the field keeps the files it had, a pick the browser has already written included.
32
- * @event {Event} input - Announced once the value has moved.
29
+ * @event {Event} change - Fired after the value changes.
30
+ * @event {HelixBeforeChangeEvent} helix-before-change - Fired before the chosen files change, with their names, and cancelable. Canceling it keeps the files the field had, even when the browser has already written a new pick.
31
+ * @event {Event} input - Fired after the value changes.
33
32
  *
34
33
  * @csspart control - The file input itself, which carries the label and validity.
35
- * @csspart detail - Its name and its reading, stacked.
36
- * @csspart feedback - What is wrong with it.
37
- * @csspart field - The box that is pressed and dropped on.
34
+ * @csspart detail - A file's name, with its size and type below it.
35
+ * @csspart feedback - The message that says what is wrong.
36
+ * @csspart field - The box you press or drop files on.
38
37
  * @csspart file - One chosen file.
39
38
  * @csspart hint - Help under the field, while nothing is wrong.
40
- * @csspart kind - What kind of file it is.
39
+ * @csspart kind - A file's type.
41
40
  * @csspart kind-dismiss - The remove button, when `dismissible`.
42
41
  * @csspart kind-dismiss-mark - The glyph on the dismiss control, where none is slotted.
43
42
  * @csspart kind-start - The category before the label.
44
- * @csspart label - The question, over the field.
43
+ * @csspart label - The label above the field.
45
44
  * @csspart list - The chosen files.
46
- * @csspart meta - The row holding its size and kind.
47
- * @csspart name - Its name.
48
- * @csspart remove - The control that takes it back out.
49
- * @csspart size - How big it is.
45
+ * @csspart meta - The row that holds a file's size and type.
46
+ * @csspart name - A file's name.
47
+ * @csspart remove - The control that removes a file.
48
+ * @csspart size - A file's size.
50
49
  * @csspart size-dismiss - The remove button, when `dismissible`.
51
50
  * @csspart size-dismiss-mark - The glyph on the dismiss control, where none is slotted.
52
51
  * @csspart size-start - The category before the label.
53
52
  * @csspart trigger - The label that opens the picker.
54
53
  *
55
- * @cssstate invalid - While there is feedback to show: the platform's verdict, or the consumer's `feedback`.
54
+ * @cssstate invalid - The control has an error to show, from the browser's validation or from your `feedback`.
56
55
  */
57
56
  export declare class HelixHeadlessFileInput extends HelixHeadlessFileInput_base {
58
57
  protected readonly aria: AriaForwardController;
@@ -75,7 +74,8 @@ export declare class HelixHeadlessFileInput extends HelixHeadlessFileInput_base
75
74
  */
76
75
  multiple: boolean;
77
76
  /**
78
- * What the control removing one file is called, with `{name}` filled in.
77
+ * The accessible name of the control that removes a file. `{name}` is
78
+ * replaced with the file's name.
79
79
  *
80
80
  * **The name goes in**, so a row of them is heard as which one each
81
81
  * removes rather than as "Remove" said once per file. A label with no
@@ -83,7 +83,7 @@ export declare class HelixHeadlessFileInput extends HelixHeadlessFileInput_base
83
83
  */
84
84
  removeLabel: string;
85
85
  /**
86
- * What the trigger reads, where nothing is slotted into it.
86
+ * The trigger's text when nothing is slotted into it.
87
87
  */
88
88
  triggerLabel: string;
89
89
  /**
@@ -96,7 +96,7 @@ export declare class HelixHeadlessFileInput extends HelixHeadlessFileInput_base
96
96
  */
97
97
  private dropping;
98
98
  /**
99
- * The files chosen, which is the element's own and never assigned.
99
+ * The chosen files. It is read-only.
100
100
  *
101
101
  * Read from the input rather than mirrored into a field. The input is what
102
102
  * the picker filled and what a form submits, so a copy here could only ever
@@ -114,7 +114,7 @@ export declare class HelixHeadlessFileInput extends HelixHeadlessFileInput_base
114
114
  */
115
115
  private get control();
116
116
  /**
117
- * Takes every file back out.
117
+ * Removes every chosen file.
118
118
  *
119
119
  * The one change a consumer can ask for. Setting a `FileList` is refused by
120
120
  * every browser for a reason worth keeping, but emptying one is not: nothing
@@ -122,7 +122,7 @@ export declare class HelixHeadlessFileInput extends HelixHeadlessFileInput_base
122
122
  */
123
123
  clear(): void;
124
124
  /**
125
- * Drops one file, by index.
125
+ * Removes one file, by its index.
126
126
  *
127
127
  * `removeAt` rather than `remove`, which is `Element`'s own and takes no
128
128
  * arguments: shadowing it would break every caller who meant the node.
@@ -185,10 +185,10 @@ export declare class HelixHeadlessFileInput extends HelixHeadlessFileInput_base
185
185
  private readonly handleDrop;
186
186
  private readonly handleRemove;
187
187
  protected firstUpdated(changed: PropertyValues): void;
188
- /** Puts focus on the input, the way a label pointing at one would. */
188
+ /** Moves focus to the native file input, as a label pointing at it would. */
189
189
  focus(options?: FocusOptions): void;
190
190
  /**
191
- * Empties it, which is what a form reset means for a file input.
191
+ * Clears the chosen files when the form resets.
192
192
  *
193
193
  * Not through `commit`, and that is the point of the split: a reset is the
194
194
  * form's decision and there is nothing here for a listener to refuse. What it
@@ -2,39 +2,35 @@ import { HelixElement } from '@fusion.dev/helix-core';
2
2
  import { type PropertyValues, type TemplateResult } from 'lit';
3
3
  declare const HelixHeadlessFilterChip_base: (new (...args: any[]) => import("@fusion.dev/helix-core").DismissibleElement) & typeof HelixElement;
4
4
  /**
5
- * @summary One filter in force: a field, how it is compared, and to what.
5
+ * @summary One active filter: a field, a comparison, and the values it is compared to.
6
6
  *
7
7
  * @description
8
- * A chip is the readable form of the thing `FilterField` declares. It carries
9
- * the three parts a filter has and a control that asks for it to go.
8
+ * Shows one filter declared by a `FilterField`: the field, the operator, and
9
+ * the values, with a control to remove the filter.
10
10
  *
11
- * **The operator is drawn only when it is worth drawing**, which is the whole
12
- * reason the common case reads as plainly as it does:
11
+ * The operator is shown only when it is not the field's default:
13
12
  *
14
13
  * ```
15
- * Disposition refunded, chargeback the field's usual comparison, unwritten
16
- * Disposition is not refunded a comparison somebody chose, so it shows
17
- * Created after 1 Aug a scalar, which has no usual comparison
14
+ * Disposition refunded, chargeback default operator, hidden
15
+ * Disposition is not refunded chosen operator, shown
16
+ * Created after 1 Aug a scalar field has no default
18
17
  * ```
19
18
  *
20
- * A reader ticking two values in a menu gets the first, with no jargon on it. A
21
- * reader who reaches for a comparison gets the third, which explains itself the
22
- * first time they see one. The rule is one line: **omit `operator-label` for the
23
- * field's default operator and pass it for every other.** Whoever builds the
24
- * chip holds the field, and the field knows which its default is.
19
+ * Omit `operator-label` for the field's default operator and pass it for every
20
+ * other operator. The code that builds the chip has the field, and the field
21
+ * defines its default.
25
22
  *
26
- * **It shows a filter and never applies one.** Dismissing is a request, the way
27
- * it is on `Tag` and `Announcement`: the chip is the consumer's element in a
28
- * consumer's list, and taking it out from under them would put their model and
29
- * the document out of step. `preventDefault()` on the `helix-dismiss` is a
30
- * refusal, and that is also how a consumer takes control of the interaction for
31
- * one press: `requestChange` documents the whole pattern, and its first line is
32
- * that control is an action rather than a mode.
23
+ * The chip shows a filter and does not apply it. Dismissing fires
24
+ * `helix-dismiss` as a request, as on `Tag` and `Announcement`. The chip is
25
+ * your element in your list, so you remove it, which keeps your model and the
26
+ * document in step. Call `preventDefault()` on `helix-dismiss` to cancel the
27
+ * dismissal, which is also how you take control of the interaction for one
28
+ * press. `requestChange` documents the pattern.
33
29
  *
34
- * **Changing the comparison belongs to whatever is slotted into `operator`.** A
35
- * menu trigger there makes the segment a control; the text fallback makes it a
36
- * label. This element does not learn either, for the reason `FilterOperator`
37
- * gives: what the words mean is the domain's.
30
+ * To let the user change the operator, slot a menu trigger into `operator`.
31
+ * With the text fallback, the operator is a label. The chip does not interpret
32
+ * operators: their meaning belongs to your domain, as `FilterOperator`
33
+ * explains.
38
34
  *
39
35
  * @since 0.23.0
40
36
  * @status stable
@@ -42,32 +38,32 @@ declare const HelixHeadlessFilterChip_base: (new (...args: any[]) => import("@fu
42
38
  * @aliases FilterToken, FacetChip
43
39
  * @documentation https://fusion.dev/helix/components/filter-input
44
40
  *
45
- * @slot - What the field is compared to, which is usually text and may be
46
- * anything a consumer wants read there.
47
- * @slot field - Replaces the field's name, for a chip that wants a mark beside
48
- * it or a shortened form.
49
- * @slot operator - Replaces the comparison, and is where a control that changes
50
- * it goes.
41
+ * @slot - The values the field is compared to, usually as text. It takes any
42
+ * content you want shown there.
43
+ * @slot field - Replaces the field's name. Use it to put an icon beside the name
44
+ * or to shorten it.
45
+ * @slot operator - Replaces the comparison. Put a control that changes the
46
+ * comparison here.
51
47
  *
52
- * @event {HelixDismissEvent} helix-dismiss - Fired when the reader asks to remove the filter. Cancelable: refusing it takes the decision and nothing moves.
48
+ * @event {HelixDismissEvent} helix-dismiss - Fired when the user asks to remove the filter. Cancelable: call `preventDefault()` to keep the chip.
53
49
  *
54
- * @csspart dismiss - The control that asks to remove the filter.
55
- * @csspart dismiss-mark - The glyph on the dismiss control, where none is slotted.
50
+ * @csspart dismiss - The button that removes the filter.
51
+ * @csspart dismiss-mark - The icon on the remove button, shown when no icon is slotted.
56
52
  * @csspart field - The name of what is being filtered.
57
- * @csspart operator - How it is compared, drawn only where there is one to draw.
58
- * @csspart values - What it is compared to.
53
+ * @csspart operator - The comparison, drawn only when there is one to show.
54
+ * @csspart values - The values the field is compared to.
59
55
  */
60
56
  export declare class HelixHeadlessFilterChip extends HelixHeadlessFilterChip_base {
61
57
  dismissLabel: string;
62
58
  /**
63
- * The field this filter is on, as a reader sees it.
59
+ * The name of the field the filter is on, as shown on the chip.
64
60
  *
65
61
  * The slot's fallback rather than the slot's replacement: a consumer who wants
66
62
  * a mark beside the name slots `field` and this goes unused.
67
63
  */
68
64
  label: string;
69
65
  /**
70
- * The field this filter is on, as the consumer's model calls it.
66
+ * The name of the field the filter is on, in your data model.
71
67
  *
72
68
  * Never shown. Reflected, because a consumer removing one filter from a list
73
69
  * of them selects on this, and so undefaulted for the reason `operator` gives.
@@ -83,7 +79,7 @@ export declare class HelixHeadlessFilterChip extends HelixHeadlessFilterChip_bas
83
79
  */
84
80
  name?: string;
85
81
  /**
86
- * What the consumer's own model calls the comparison in force.
82
+ * The name of the active comparison in your data model.
87
83
  *
88
84
  * Never shown, and it is what a consumer matches on when the chip comes back
89
85
  * to them. `label` translates; this does not.
@@ -94,7 +90,8 @@ export declare class HelixHeadlessFilterChip extends HelixHeadlessFilterChip_bas
94
90
  */
95
91
  operator?: string;
96
92
  /**
97
- * The comparison, as a reader sees it, and empty for the field's usual one.
93
+ * The comparison as shown on the chip. Leave it empty for the field's usual
94
+ * comparison.
98
95
  *
99
96
  * **Empty is the whole design and not an oversight.** A chip drawn for the
100
97
  * comparison a field is normally filtered by says the field and the values and