@fusion.dev/helix-headless 0.104.1 → 0.106.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (167) hide show
  1. package/custom-elements.json +10386 -3813
  2. package/dist/accordion/item/accordion-item.d.ts +17 -16
  3. package/dist/accordion/root/accordion-root.d.ts +13 -17
  4. package/dist/announcement/root/announcement-root.d.ts +24 -31
  5. package/dist/app-header/root/app-header-root.d.ts +14 -14
  6. package/dist/area-chart/root/area-chart-root.d.ts +29 -48
  7. package/dist/avatar/group/avatar-group.d.ts +6 -8
  8. package/dist/avatar/root/avatar-root.d.ts +11 -11
  9. package/dist/badge/root/badge-root.d.ts +14 -15
  10. package/dist/bar-chart/root/bar-chart-root.d.ts +40 -44
  11. package/dist/blockquote/root/blockquote-root.d.ts +5 -7
  12. package/dist/breadcrumbs/breadcrumb/breadcrumb.d.ts +25 -33
  13. package/dist/breadcrumbs/root/breadcrumbs-root.d.ts +12 -11
  14. package/dist/button/root/button-root.d.ts +16 -17
  15. package/dist/button-group/root/button-group-root.d.ts +9 -10
  16. package/dist/callout/root/callout-root.d.ts +10 -15
  17. package/dist/canvas/edge/canvas-edge.d.ts +21 -21
  18. package/dist/canvas/node/canvas-node.d.ts +43 -45
  19. package/dist/canvas/root/canvas-root.d.ts +100 -99
  20. package/dist/card/root/card-root.d.ts +10 -12
  21. package/dist/carousel/root/carousel-root.d.ts +32 -33
  22. package/dist/chat/composer/chat-composer.d.ts +24 -26
  23. package/dist/chat/message/chat-message.d.ts +30 -33
  24. package/dist/chat/root/chat-root.d.ts +63 -80
  25. package/dist/checkbox/root/checkbox-root.d.ts +30 -32
  26. package/dist/checkbox-group/root/checkbox-group-root.d.ts +25 -25
  27. package/dist/code/root/code-root.d.ts +6 -10
  28. package/dist/code-block/root/code-block-root.d.ts +35 -48
  29. package/dist/color-input/root/color-input-root.d.ts +62 -56
  30. package/dist/color-input/root/color-input-root.js +3 -0
  31. package/dist/color-picker/root/color-picker-root.d.ts +61 -49
  32. package/dist/color-picker/root/color-picker-root.js +4 -0
  33. package/dist/combobox/root/combobox-root.d.ts +52 -53
  34. package/dist/command/root/command-root.d.ts +40 -40
  35. package/dist/command/root/command-root.js +1 -0
  36. package/dist/copy-button/root/copy-button-root.d.ts +24 -26
  37. package/dist/data-table/root/data-table-root.d.ts +106 -107
  38. package/dist/date-input/root/date-input-root.d.ts +54 -53
  39. package/dist/date-picker/root/date-picker-root.d.ts +25 -21
  40. package/dist/description-list/item/description-list-item.d.ts +7 -7
  41. package/dist/description-list/root/description-list-root.d.ts +10 -15
  42. package/dist/dialog/root/dialog-root.d.ts +22 -19
  43. package/dist/divider/root/divider-root.d.ts +12 -13
  44. package/dist/donut-chart/root/donut-chart-root.d.ts +19 -20
  45. package/dist/drawer/root/drawer-root.d.ts +19 -18
  46. package/dist/drilldown/item/drilldown-item.d.ts +28 -28
  47. package/dist/drilldown/root/drilldown-root.d.ts +22 -28
  48. package/dist/element-events.generated.js +19 -1
  49. package/dist/empty/root/empty-root.d.ts +16 -19
  50. package/dist/file-input/root/file-input-root.d.ts +32 -32
  51. package/dist/filter-input/chip/filter-chip.d.ts +36 -39
  52. package/dist/filter-input/field/filter-field.d.ts +25 -31
  53. package/dist/filter-input/menu/filter-menu.d.ts +50 -47
  54. package/dist/filter-input/operator/filter-operator.d.ts +15 -20
  55. package/dist/filter-input/root/filter-input-root.d.ts +80 -98
  56. package/dist/format-date/root/format-date-root.d.ts +19 -27
  57. package/dist/heatmap/root/heatmap-root.d.ts +40 -41
  58. package/dist/icon/root/icon-root.d.ts +21 -23
  59. package/dist/icon-button/root/icon-button-root.d.ts +12 -14
  60. package/dist/image/root/image-root.d.ts +30 -30
  61. package/dist/input/root/input-root.d.ts +36 -35
  62. package/dist/kbd/root/kbd-root.d.ts +13 -15
  63. package/dist/legend/root/legend-root.d.ts +18 -16
  64. package/dist/lightbox/item/lightbox-item.d.ts +13 -15
  65. package/dist/lightbox/root/lightbox-root.d.ts +40 -41
  66. package/dist/line-chart/root/line-chart-root.d.ts +20 -29
  67. package/dist/list/item/list-item.d.ts +17 -22
  68. package/dist/list/root/list-root.d.ts +6 -7
  69. package/dist/listbox/root/listbox-root.d.ts +42 -41
  70. package/dist/loader/root/loader-root.d.ts +16 -20
  71. package/dist/map/area/map-area.d.ts +48 -0
  72. package/dist/map/area/map-area.js +40 -0
  73. package/dist/map/buildings/map-buildings.d.ts +45 -0
  74. package/dist/map/buildings/map-buildings.js +37 -0
  75. package/dist/map/contours/map-contours.d.ts +61 -0
  76. package/dist/map/contours/map-contours.js +54 -0
  77. package/dist/map/index.d.ts +14 -0
  78. package/dist/map/index.js +10 -0
  79. package/dist/map/landcover/map-landcover.d.ts +47 -0
  80. package/dist/map/landcover/map-landcover.js +37 -0
  81. package/dist/map/marker/map-marker.d.ts +120 -0
  82. package/dist/map/marker/map-marker.js +109 -0
  83. package/dist/map/points/map-points.d.ts +139 -0
  84. package/dist/map/points/map-points.js +161 -0
  85. package/dist/map/position/map-position.d.ts +70 -0
  86. package/dist/map/position/map-position.js +89 -0
  87. package/dist/map/raster/map-raster.d.ts +84 -0
  88. package/dist/map/raster/map-raster.js +96 -0
  89. package/dist/map/root/map-root.d.ts +269 -52
  90. package/dist/map/root/map-root.js +473 -5
  91. package/dist/map/route/map-route.d.ts +73 -0
  92. package/dist/map/route/map-route.js +52 -0
  93. package/dist/map/terrain/map-terrain.d.ts +68 -0
  94. package/dist/map/terrain/map-terrain.js +58 -0
  95. package/dist/megamenu/root/megamenu-root.d.ts +27 -25
  96. package/dist/menu/item/menu-item.d.ts +30 -31
  97. package/dist/menu/root/menu-root.d.ts +25 -29
  98. package/dist/meter/root/meter-root.d.ts +22 -21
  99. package/dist/navigation/root/navigation-root.d.ts +13 -16
  100. package/dist/notifications/group/notification-group.d.ts +27 -28
  101. package/dist/notifications/notification/notification.d.ts +35 -42
  102. package/dist/notifications/root/notifications-root.d.ts +22 -24
  103. package/dist/number-input/root/number-input-root.d.ts +46 -50
  104. package/dist/object-inspector/root/object-inspector-root.d.ts +46 -58
  105. package/dist/option/group/option-group.d.ts +11 -11
  106. package/dist/option/root/option-root.d.ts +28 -33
  107. package/dist/outline/root/outline-root.d.ts +18 -17
  108. package/dist/pagination/root/pagination-root.d.ts +37 -39
  109. package/dist/pagination/size/pagination-size.d.ts +37 -43
  110. package/dist/pagination/summary/pagination-summary.d.ts +12 -14
  111. package/dist/pin-input/root/pin-input-root.d.ts +32 -38
  112. package/dist/popover/root/popover-root.d.ts +16 -21
  113. package/dist/progress/root/progress-root.d.ts +16 -14
  114. package/dist/qr-code/root/qr-code-root.d.ts +22 -25
  115. package/dist/quote/root/quote-root.d.ts +5 -6
  116. package/dist/radio/group/radio-group.d.ts +26 -28
  117. package/dist/radio/root/radio-root.d.ts +24 -28
  118. package/dist/rating/root/rating-root.d.ts +27 -30
  119. package/dist/scatter-chart/root/scatter-chart-root.d.ts +43 -55
  120. package/dist/scroll-area/root/scroll-area-root.d.ts +15 -21
  121. package/dist/select/root/select-root.d.ts +41 -44
  122. package/dist/skeleton/root/skeleton-root.d.ts +7 -8
  123. package/dist/skip-link/root/skip-link-root.d.ts +21 -28
  124. package/dist/slider/root/slider-root.d.ts +36 -39
  125. package/dist/sparkline/root/sparkline-root.d.ts +22 -28
  126. package/dist/speed-dial/item/speed-dial-item.d.ts +21 -21
  127. package/dist/speed-dial/root/speed-dial-root.d.ts +25 -27
  128. package/dist/splitter/root/splitter-root.d.ts +37 -41
  129. package/dist/stat/group/stat-group.d.ts +4 -4
  130. package/dist/stat/root/stat-root.d.ts +8 -9
  131. package/dist/steps/root/steps-root.d.ts +11 -14
  132. package/dist/steps/step/step.d.ts +22 -29
  133. package/dist/switch/root/switch-root.d.ts +20 -24
  134. package/dist/table/cell/table-cell.d.ts +18 -8
  135. package/dist/table/cell/table-cell.js +5 -1
  136. package/dist/table/column/table-column.d.ts +62 -55
  137. package/dist/table/root/table-root.d.ts +16 -17
  138. package/dist/table/row/table-row.d.ts +3 -3
  139. package/dist/tabs/panel/tab-panel.d.ts +3 -3
  140. package/dist/tabs/root/tabs-root.d.ts +19 -17
  141. package/dist/tabs/tab/tab.d.ts +6 -6
  142. package/dist/tag/root/tag-root.d.ts +11 -12
  143. package/dist/textarea/root/textarea-root.d.ts +29 -32
  144. package/dist/time-input/root/time-input-root.d.ts +70 -69
  145. package/dist/time-picker/root/time-picker-root.d.ts +58 -66
  146. package/dist/timeline/item/timeline-item.d.ts +18 -24
  147. package/dist/timeline/root/timeline-root.d.ts +13 -21
  148. package/dist/toast/item/toast-item.d.ts +21 -22
  149. package/dist/toast/root/toast-root.d.ts +18 -23
  150. package/dist/toggle/group/toggle-group.d.ts +23 -25
  151. package/dist/toggle/root/toggle-root.d.ts +8 -8
  152. package/dist/toolbar/root/toolbar-root.d.ts +7 -10
  153. package/dist/tooltip/root/tooltip-root.d.ts +41 -47
  154. package/dist/tour/root/tour-root.d.ts +24 -26
  155. package/dist/tour/stop/tour-stop.d.ts +39 -48
  156. package/dist/tree/item/tree-item.d.ts +23 -25
  157. package/dist/tree/root/tree-root.d.ts +13 -12
  158. package/dist/trend/root/trend-root.d.ts +18 -19
  159. package/dist/video/root/video-root.d.ts +108 -101
  160. package/dist/video-playlist/item/video-playlist-item.d.ts +23 -28
  161. package/dist/video-playlist/menu/video-playlist-menu.d.ts +17 -21
  162. package/dist/video-playlist/root/video-playlist-root.d.ts +21 -25
  163. package/dist/virtual-list/root/virtual-list-root.d.ts +27 -26
  164. package/package.json +5 -5
  165. package/types/jsx.d.ts +14011 -11983
  166. package/types/svelte.d.ts +10 -0
  167. package/types/vue.d.ts +2143 -1497
@@ -4,26 +4,21 @@ import { nothing, type PropertyValues, type TemplateResult } from 'lit';
4
4
  * @summary One row of a list.
5
5
  *
6
6
  * @description
7
- * Layout and semantics, and deliberately not a target.
7
+ * Provides layout and semantics. The row is a target only when you set `href`.
8
8
  *
9
- * **`href` makes the row itself the link.** A whole-row target needs the anchor
10
- * to wrap the layout, which a *consumer's* anchor cannot do for slots it does not
11
- * own. The component's can: an `<a part="row">` wraps this component's own layout
12
- * perfectly well, which is what `Tree.Item` does.
9
+ * **`href` makes the whole row a link.** The component wraps its own layout in
10
+ * an `<a part="row">`, as `Tree.Item` does. An anchor of your own cannot wrap
11
+ * slots it does not own. With the anchor, the whole row is a target, Enter
12
+ * follows it, middle click opens a new tab, the status bar shows the
13
+ * destination, and all of it works before JavaScript runs.
13
14
  *
14
- * What the anchor buys is what the row could not fake: the whole row is a
15
- * target, Enter follows it, middle click opens a tab, the status bar shows the
16
- * destination, and it all works before any JavaScript runs.
15
+ * Client-side routing needs your own handling. A router cannot render its
16
+ * anchor inside the shadow root, so to navigate without a page load, intercept
17
+ * the click: the anchor is in `composedPath()`. Handle only a plain primary
18
+ * click, so native gestures keep working.
17
19
  *
18
- * What it costs is client-side routing, and that is the consumer's to restore.
19
- * A router renders its own anchor and cannot render one inside this shadow
20
- * root, so a framework wanting a soft navigation intercepts the click on the
21
- * way out: the anchor is in `composedPath()`, and taking only a plain primary
22
- * press leaves every native gesture alone.
23
- *
24
- * **`data-list-item` is still the answer for a row that is not a destination.**
25
- * A list row is often a container of controls rather than a place to go, and a
26
- * row with `href` unset behaves exactly as it always did.
20
+ * **For a row that holds controls and is not a destination, use
21
+ * `data-list-item`.** With `href` unset, the row is not a link.
27
22
  *
28
23
  * @since 0.1.0
29
24
  * @status stable
@@ -35,11 +30,11 @@ import { nothing, type PropertyValues, type TemplateResult } from 'lit';
35
30
  * @slot end - Trailing content.
36
31
  * @slot start - Leading content, usually an icon or an avatar.
37
32
  *
38
- * @csspart row - The layout, held off the host so the host can carry a marker.
33
+ * @csspart row - The row's layout. It sits inside the host so the host can carry a list marker.
39
34
  */
40
35
  export declare class HelixHeadlessListItem extends HelixElement {
41
36
  /**
42
- * Where the row goes, and nothing when it goes nowhere.
37
+ * The URL the row links to. Leave it empty for a row that is not a link.
43
38
  *
44
39
  * Empty rather than optional, and unset by default: a list is not always a
45
40
  * list of links, and an empty `href` written onto every row would be a link
@@ -47,12 +42,12 @@ export declare class HelixHeadlessListItem extends HelixElement {
47
42
  */
48
43
  href: string;
49
44
  /**
50
- * What the link declares about where it goes. The consumer's decision rather
51
- * than one derived from `target`, for the reason `Tree.Item` gives.
45
+ * The link's `rel` value. You set it yourself. It is not derived from
46
+ * `target`, for the reason `Tree.Item` gives.
52
47
  */
53
48
  rel: string;
54
49
  /**
55
- * Where the link opens, for the rare row that leaves the site.
50
+ * Where the link opens. Use it for a row that leaves the site.
56
51
  */
57
52
  target: string;
58
53
  protected willUpdate(changed: PropertyValues): void;
@@ -1,12 +1,11 @@
1
1
  import { HelixElement } from '@fusion.dev/helix-core';
2
2
  import { type PropertyValues, type TemplateResult } from 'lit';
3
3
  /**
4
- * @summary A set of rows, read as a set.
4
+ * @summary A set of rows, announced as a list.
5
5
  *
6
6
  * @description
7
- * `role="list"` on the host, so the rows are counted and announced as "1 of 7"
8
- * rather than as seven unrelated passages. That count is the whole reason to
9
- * use a list rather than a stack of divs.
7
+ * Sets `role="list"` on the host, so a screen reader counts the rows and
8
+ * announces each one's position, such as "1 of 7".
10
9
  *
11
10
  * @since 0.1.0
12
11
  * @status stable
@@ -18,7 +17,7 @@ import { type PropertyValues, type TemplateResult } from 'lit';
18
17
  */
19
18
  export declare class HelixHeadlessList extends HelixElement {
20
19
  /**
21
- * What kind of list this is, which is a fact about the content.
20
+ * The kind of list, which follows from the content.
22
21
  *
23
22
  * On the headless tier because it is meaning rather than decoration, the same
24
23
  * argument `severity` makes on `Callout`. A numbered list is numbered because
@@ -41,11 +40,11 @@ export declare class HelixHeadlessList extends HelixElement {
41
40
  */
42
41
  kind?: 'default' | 'description' | 'ordered' | 'unordered';
43
42
  /**
44
- * Accessible name for the set.
43
+ * The list's name, read by screen readers.
45
44
  */
46
45
  label: string;
47
46
  /**
48
- * Which markers an ordered list draws, in `<ol type>`'s own five values.
47
+ * The markers an ordered list draws. It takes the five values of `<ol type>`.
49
48
  *
50
49
  * Reflected, because this is one of the things a stylesheet selects on, each
51
50
  * value mapping to a `list-style-type`. The platform's spellings rather than
@@ -3,22 +3,22 @@ import { type PropertyValues, type TemplateResult } from 'lit';
3
3
  import { HelixHeadlessOption } from '../../option/root/option-root.js';
4
4
  declare const HelixHeadlessListbox_base: (new (...args: any[]) => import("@fusion.dev/helix-core").CollectionElement) & (new (...args: any[]) => import("@fusion.dev/helix-core").MixinControllerValueInterface) & (new (...args: any[]) => import("@fusion.dev/helix-core").MixinFieldInterface) & typeof HelixFormElement;
5
5
  /**
6
- * @summary A list of options, one or several of which are the answer.
6
+ * @summary A list of options, from which you choose one or several.
7
7
  *
8
8
  * @description
9
- * **The listbox is the control and the options are its vocabulary.** A Select
10
- * is this with a trigger in front of it, a Combobox is this with a text input,
11
- * and a command palette is this again: they differ in what opens the list and
12
- * what filters it, not in what the list is.
9
+ * The listbox is the control, and options are its items. A Select is a listbox
10
+ * with a trigger in front of it, a Combobox is a listbox with a text input, and
11
+ * a command palette is a listbox in a dialog. They differ only in what opens
12
+ * the list and what filters it.
13
13
  *
14
- * **`value` is comma separated when `multiple` is set**, the way
15
- * `Checkbox.Group`'s is, and a string because that is what `MixinControllerValue`
16
- * holds. The form is sent one entry per answer, as a native `<select multiple>`
17
- * sends it, so a server never has to know to split on a comma.
14
+ * With `multiple` set, `value` is a comma-separated string, like
15
+ * `Checkbox.Group`'s, because `MixinControllerValue` holds a string. The form
16
+ * receives one entry per selected option, as a native `<select multiple>` sends
17
+ * it, so your server does not split on commas.
18
18
  *
19
- * **Chosen and active are two different things.** Chosen is the answer; active
20
- * is where the keyboard is. Only the second moves with the arrows, and
21
- * `aria-activedescendant` names it while focus stays on the list.
19
+ * Selected and active are separate. The selected option is the value. The
20
+ * active option is where the keyboard is: the arrow keys move it, and
21
+ * `aria-activedescendant` points to it while focus stays on the list.
22
22
  *
23
23
  * @since 0.1.0
24
24
  * @status stable
@@ -27,28 +27,28 @@ declare const HelixHeadlessListbox_base: (new (...args: any[]) => import("@fusio
27
27
  * @documentation https://fusion.dev/helix/components/listbox
28
28
  *
29
29
  * @slot - The options, and any groups of them.
30
- * @slot filter-icon - The mark in the filter's field. Left empty, a magnifier is drawn.
31
- * @slot hint - Richer than a string.
32
- * @slot label - Richer than a string.
30
+ * @slot filter-icon - The icon in the filter field. Defaults to a magnifying glass.
31
+ * @slot hint - The hint, for content richer than plain text.
32
+ * @slot label - The label, for content richer than plain text.
33
33
  *
34
- * @event {Event} change - Announced once the value has moved.
35
- * @event {HelixBeforeChangeEvent} helix-before-change - Fired when the answer changes, and cancelable.
36
- * @event {HelixFilterEvent} helix-filter - Fired before the list narrows, and cancelable.
37
- * @event {Event} input - Announced once the value has moved.
34
+ * @event {Event} change - Fired after the value changes.
35
+ * @event {HelixBeforeChangeEvent} helix-before-change - Fired when the value is about to change, and cancelable.
36
+ * @event {HelixFilterEvent} helix-filter - Fired before the list is filtered, and cancelable.
37
+ * @event {Event} input - Fired after the value changes.
38
38
  *
39
- * @csspart empty - Shown when a filter has hidden everything.
40
- * @csspart feedback - What is wrong with it.
41
- * @csspart filter-icon - The mark beside that field.
42
- * @csspart filter-mark - The glyph beside the filter field, where none is slotted.
39
+ * @csspart empty - The text shown when the filter hides every option.
40
+ * @csspart feedback - The message that says what is wrong with the value.
41
+ * @csspart filter-icon - The icon beside the filter field.
42
+ * @csspart filter-mark - The default icon beside the filter field, shown when none is slotted.
43
43
  * @csspart hint - Help under the list.
44
- * @csspart items - The list itself.
45
- * @csspart label - The question, over the list.
46
- * @csspart live - The empty and loading lines again, in a region a screen reader hears when they change. Visually hidden in the styled tier.
47
- * @csspart loading - Shown while the options are still on their way.
48
- * @csspart search - The region holding the field that narrows the list.
49
- * @csspart search-field - The field itself.
44
+ * @csspart items - The list of options.
45
+ * @csspart label - The label above the list.
46
+ * @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.
47
+ * @csspart loading - The text shown while the options load.
48
+ * @csspart search - The region that holds the filter field.
49
+ * @csspart search-field - The filter field.
50
50
  *
51
- * @cssstate invalid - While there is feedback to show: the platform's verdict, or the consumer's `feedback`.
51
+ * @cssstate invalid - The control has an error to show, from the browser's validation or from your `feedback`.
52
52
  */
53
53
  export declare class HelixHeadlessListbox extends HelixHeadlessListbox_base {
54
54
  protected readonly aria: AriaForwardController;
@@ -62,11 +62,11 @@ export declare class HelixHeadlessListbox extends HelixHeadlessListbox_base {
62
62
  */
63
63
  autocomplete: string;
64
64
  /**
65
- * What to start narrowed to, where nothing declared it.
65
+ * The filter text the list starts with, when `filter` is not set.
66
66
  */
67
67
  defaultFilter: string;
68
68
  /**
69
- * What is shown when a filter has hidden every option.
69
+ * The text shown when the filter hides every option.
70
70
  *
71
71
  * From `MixinCollection`, which every collection in the library now shares,
72
72
  * and re-declared here only to keep this list's own wording: "No matches" is
@@ -77,7 +77,7 @@ export declare class HelixHeadlessListbox extends HelixHeadlessListbox_base {
77
77
  /** What the list is narrowed to, whoever set it. */
78
78
  private filterState;
79
79
  /**
80
- * What the list is narrowed to, if anything.
80
+ * The text the list is filtered by, if any.
81
81
  *
82
82
  * Filtering hides rather than removes, so nothing about the value changes and
83
83
  * the list is still the consumer's own elements in their own order. Reading
@@ -87,7 +87,7 @@ export declare class HelixHeadlessListbox extends HelixHeadlessListbox_base {
87
87
  get filter(): string;
88
88
  set filter(next: string);
89
89
  /**
90
- * Whether the list renders a field for narrowing itself.
90
+ * Whether the list shows a field for filtering it.
91
91
  *
92
92
  * The field lives here rather than in whatever frames the list, because the
93
93
  * filtering already does: `filter`, the empty state and the keyboard are all
@@ -96,11 +96,11 @@ export declare class HelixHeadlessListbox extends HelixHeadlessListbox_base {
96
96
  */
97
97
  filterable: boolean;
98
98
  /**
99
- * Placeholder for the field that narrows the list.
99
+ * Placeholder text for the filter field.
100
100
  */
101
101
  filterLabel: string;
102
102
  /**
103
- * Whether more than one option can be the answer.
103
+ * Whether more than one option can be chosen.
104
104
  */
105
105
  multiple: boolean;
106
106
  /**
@@ -151,14 +151,15 @@ export declare class HelixHeadlessListbox extends HelixHeadlessListbox_base {
151
151
  get selectedIndex(): number;
152
152
  set selectedIndex(at: number);
153
153
  /**
154
- * Which kind of chooser this is, in the platform's two words.
154
+ * The kind of list, as the platform names it: `select-one` or
155
+ * `select-multiple`.
155
156
  *
156
157
  * Derived rather than declared, because `multiple` already decides it and a
157
158
  * second property could disagree.
158
159
  */
159
160
  get type(): string;
160
161
  /**
161
- * Every option, in the order a reader meets them.
162
+ * Every option, in the order they appear.
162
163
  *
163
164
  * Descendants rather than children, because a group puts a level between the
164
165
  * list and its options and the keyboard has to move through a grouped list
@@ -179,7 +180,7 @@ export declare class HelixHeadlessListbox extends HelixHeadlessListbox_base {
179
180
  private get groups();
180
181
  /** The options a filter has left showing. */
181
182
  private get shown();
182
- /** The chosen values, which is a list whether or not `multiple` is set. */
183
+ /** The chosen values, as an array whether or not `multiple` is set. */
183
184
  get values(): string[];
184
185
  /**
185
186
  * Applies a choice, announcing first so a listener can refuse it.
@@ -219,7 +220,7 @@ export declare class HelixHeadlessListbox extends HelixHeadlessListbox_base {
219
220
  */
220
221
  navigate(event: KeyboardEvent): void;
221
222
  /**
222
- * Brings the chosen option to rest in the middle of the list.
223
+ * Scrolls the chosen option to the middle of the list.
223
224
  *
224
225
  * A method rather than something this does on its own, because a listbox
225
226
  * opening on its answer usually wants it merely *visible* and the browser
@@ -266,7 +267,7 @@ export declare class HelixHeadlessListbox extends HelixHeadlessListbox_base {
266
267
  * their answer moved when it did not is worse than telling them nothing.
267
268
  */
268
269
  private readonly handleFilter;
269
- /** Requests a narrowing, and reports whether the request stood. */
270
+ /** Requests a new filter, and returns whether the request went through. */
270
271
  requestFilter(next: string): boolean;
271
272
  /**
272
273
  * Sends the keys that belong to the list to the list.
@@ -1,28 +1,23 @@
1
1
  import { HelixElement } from '@fusion.dev/helix-core';
2
2
  import { type PropertyValues, type TemplateResult } from 'lit';
3
3
  /**
4
- * @summary Says that something indeterminate is in progress.
4
+ * @summary Shows that work of unknown length is in progress.
5
5
  *
6
6
  * @description
7
- * Two concentric circles rather than one arc: the track is what makes the
8
- * moving part read as a proportion of a whole rather than as a shape drifting
9
- * on its own, and it costs one element.
7
+ * Draws two concentric circles: a track and a moving arc. The track shows the
8
+ * arc as a proportion of a whole, and costs one element.
10
9
  *
11
- * **The center is a slot and is empty by default.** A loader with a mark in the
12
- * middle is a brand's loader, and this library does not know whose. The slot is
13
- * the capability; the logo is the application's, put in once wherever the app
14
- * wraps it. Nothing is rendered when nothing is slotted, so an unbranded loader
15
- * is still two circles and no extra box.
10
+ * **The center is a slot, empty by default.** Put your logo there once, where
11
+ * your app wraps the loader. When nothing is slotted, nothing extra is
12
+ * rendered.
16
13
  *
17
- * What is slotted does not turn. Only the arc moves, because a mark rotating
18
- * with it stops reading as a mark and becomes part of the animation, and a
19
- * wordmark upside down twice a second is worse than no wordmark.
14
+ * Slotted content does not rotate. Only the arc moves, so a logo stays
15
+ * readable.
20
16
  *
21
- * The semantics are on the host through `ElementInternals`, not on an inner
22
- * span. A `role` written into the shadow root announces correctly but leaves
23
- * the host itself anonymous to anything walking the light DOM, and a `role`
24
- * written onto the host as an attribute is one a React consumer's server markup
25
- * never had.
17
+ * The role is set on the host through `ElementInternals`. A `role` in the
18
+ * shadow root would leave the host itself without a role in the light DOM, and
19
+ * a `role` attribute on the host would be missing from React server-rendered
20
+ * markup.
26
21
  *
27
22
  * @since 0.1.0
28
23
  * @status stable
@@ -30,16 +25,17 @@ import { type PropertyValues, type TemplateResult } from 'lit';
30
25
  * @aliases Spinner, Busy, Activity
31
26
  * @documentation https://fusion.dev/helix/components/loader
32
27
  *
33
- * @slot - A mark to sit still at the center, usually a logo. Empty by default.
28
+ * @slot - An icon or logo that stays still at the center. Empty by default.
34
29
  *
35
30
  * @csspart indicator - The arc that turns.
36
- * @csspart mark - The region holding what was slotted at the center.
31
+ * @csspart mark - The region that holds the slotted content at the center.
37
32
  * @csspart svg - The rotating circle pair.
38
33
  * @csspart track - The full circle behind the indicator.
39
34
  */
40
35
  export declare class HelixHeadlessLoader extends HelixElement {
41
36
  /**
42
- * Accessible name, announced while the work is outstanding.
37
+ * The loader's name, announced by screen readers while the work is in
38
+ * progress.
43
39
  */
44
40
  label: string;
45
41
  protected willUpdate(changed: PropertyValues): void;
@@ -0,0 +1,48 @@
1
+ import { HelixElement } from '@fusion.dev/helix-core';
2
+ import { nothing, type PropertyValues } from 'lit';
3
+ import { type MapPoint } from '../route/map-route.js';
4
+ /**
5
+ * @summary A shape on a map, such as a delivery zone.
6
+ *
7
+ * @description
8
+ * `connectMap` fills the shape as a layer of the map, under its place names.
9
+ * The frame lists each area by its `label` and `description` for screen
10
+ * readers.
11
+ *
12
+ * @since 0.105.0
13
+ * @status experimental
14
+ * @category media
15
+ * @aliases Map region, Polygon, Zone
16
+ * @documentation https://fusion.dev/helix/components/map
17
+ *
18
+ * @event {HelixMapPartChangeEvent} helix-map-part-change - The area's points, name, or color changed. Used by `connectMap`; pages do not need to listen for it.
19
+ */
20
+ export declare class HelixHeadlessMapArea extends HelixElement {
21
+ /** More about the area. Read after its label in the frame's list. */
22
+ description?: string;
23
+ /**
24
+ * A name this layer shares with other layers, such as a route and its
25
+ * dotted legs. The layers menu shows layers in the same group as one entry,
26
+ * named by the first of them, and its checkbox shows or hides them all.
27
+ */
28
+ group?: string;
29
+ /** Marks this as a layer for the frame and the connector, whatever its tag. */
30
+ readonly isMapLayer = true;
31
+ /** @internal Which kind of layer, which is how the connector draws it. */
32
+ readonly layerKind: 'area' | 'route';
33
+ /** The area's name, used in the frame's list. */
34
+ label?: string;
35
+ /**
36
+ * The corners of the shape, in order. The last point connects back to the
37
+ * first.
38
+ */
39
+ points?: MapPoint[];
40
+ /** Tells the frame and the connector the shape moved, was renamed or was retoned. */
41
+ protected updated(changed: PropertyValues): void;
42
+ protected render(): typeof nothing;
43
+ }
44
+ declare global {
45
+ interface HTMLElementTagNameMap {
46
+ 'helix-headless-map-area': HelixHeadlessMapArea;
47
+ }
48
+ }
@@ -0,0 +1,40 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { customElement, HelixElement, HelixMapPartChangeEvent } from '@fusion.dev/helix-core';
8
+ import { nothing } from 'lit';
9
+ import { property } from 'lit/decorators.js';
10
+ import { pointsConverter } from '../route/map-route.js';
11
+ let HelixHeadlessMapArea = class HelixHeadlessMapArea extends HelixElement {
12
+ constructor() {
13
+ super(...arguments);
14
+ this.isMapLayer = true;
15
+ this.layerKind = 'area';
16
+ }
17
+ updated(changed) {
18
+ super.updated(changed);
19
+ this.dispatchEvent(new HelixMapPartChangeEvent({ kind: 'layer' }));
20
+ }
21
+ render() {
22
+ return nothing;
23
+ }
24
+ };
25
+ __decorate([
26
+ property()
27
+ ], HelixHeadlessMapArea.prototype, "description", void 0);
28
+ __decorate([
29
+ property()
30
+ ], HelixHeadlessMapArea.prototype, "group", void 0);
31
+ __decorate([
32
+ property()
33
+ ], HelixHeadlessMapArea.prototype, "label", void 0);
34
+ __decorate([
35
+ property({ converter: pointsConverter })
36
+ ], HelixHeadlessMapArea.prototype, "points", void 0);
37
+ HelixHeadlessMapArea = __decorate([
38
+ customElement('helix-headless-map-area')
39
+ ], HelixHeadlessMapArea);
40
+ export { HelixHeadlessMapArea };
@@ -0,0 +1,45 @@
1
+ import { HelixElement } from '@fusion.dev/helix-core';
2
+ import { nothing, type PropertyValues } from 'lit';
3
+ /**
4
+ * @summary The buildings on a map, raised to their real heights in 3D.
5
+ *
6
+ * @description
7
+ * `connectMap` raises the buildings in the map's tiles to the heights the tiles
8
+ * record, under the map's place names. Tilt the map to see the heights. The
9
+ * buildings appear from zoom 13, where the tiles start to carry them.
10
+ *
11
+ * MapLibre draws the buildings. Leaflet draws maps flat, so a Leaflet map shows
12
+ * none. The frame lists the layer by its `label` for screen readers.
13
+ *
14
+ * @since 0.105.0
15
+ * @status experimental
16
+ * @category media
17
+ * @aliases 3D buildings, Extrusion
18
+ * @documentation https://fusion.dev/helix/components/map
19
+ *
20
+ * @event {HelixMapPartChangeEvent} helix-map-part-change - The layer's name or color changed. Used by `connectMap`; pages do not need to listen for it.
21
+ */
22
+ export declare class HelixHeadlessMapBuildings extends HelixElement {
23
+ /** More about the buildings. Read after the label in the frame's list. */
24
+ description?: string;
25
+ /**
26
+ * A name this layer shares with other layers, such as a route and its
27
+ * dotted legs. The layers menu shows layers in the same group as one entry,
28
+ * named by the first of them, and its checkbox shows or hides them all.
29
+ */
30
+ group?: string;
31
+ /** Marks this as a layer for the frame and the connector, whatever its tag. */
32
+ readonly isMapLayer = true;
33
+ /** @internal Which kind of layer, which is how the connector draws it. */
34
+ readonly layerKind: 'buildings';
35
+ /** The layer's name in the frame's list. */
36
+ label: string;
37
+ /** Tells the frame and the connector the layer was renamed or recolored. */
38
+ protected updated(changed: PropertyValues): void;
39
+ protected render(): typeof nothing;
40
+ }
41
+ declare global {
42
+ interface HTMLElementTagNameMap {
43
+ 'helix-headless-map-buildings': HelixHeadlessMapBuildings;
44
+ }
45
+ }
@@ -0,0 +1,37 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { customElement, HelixElement, HelixMapPartChangeEvent } from '@fusion.dev/helix-core';
8
+ import { nothing } from 'lit';
9
+ import { property } from 'lit/decorators.js';
10
+ let HelixHeadlessMapBuildings = class HelixHeadlessMapBuildings extends HelixElement {
11
+ constructor() {
12
+ super(...arguments);
13
+ this.isMapLayer = true;
14
+ this.layerKind = 'buildings';
15
+ this.label = '3D buildings';
16
+ }
17
+ updated(changed) {
18
+ super.updated(changed);
19
+ this.dispatchEvent(new HelixMapPartChangeEvent({ kind: 'layer' }));
20
+ }
21
+ render() {
22
+ return nothing;
23
+ }
24
+ };
25
+ __decorate([
26
+ property()
27
+ ], HelixHeadlessMapBuildings.prototype, "description", void 0);
28
+ __decorate([
29
+ property()
30
+ ], HelixHeadlessMapBuildings.prototype, "group", void 0);
31
+ __decorate([
32
+ property()
33
+ ], HelixHeadlessMapBuildings.prototype, "label", void 0);
34
+ HelixHeadlessMapBuildings = __decorate([
35
+ customElement('helix-headless-map-buildings')
36
+ ], HelixHeadlessMapBuildings);
37
+ export { HelixHeadlessMapBuildings };
@@ -0,0 +1,61 @@
1
+ import { HelixElement } from '@fusion.dev/helix-core';
2
+ import { nothing, type PropertyValues } from 'lit';
3
+ import type { MapTerrainEncoding } from '../terrain/map-terrain.js';
4
+ /**
5
+ * @summary Contour lines on a map, each at one height, labeled at every fifth.
6
+ *
7
+ * @description
8
+ * `connectMap` traces lines of equal height from elevation tiles, the same
9
+ * tiles `helix-map-terrain` reads, and draws them under the roads. The lines
10
+ * are closer together as the map zooms in, and every fifth, the index line,
11
+ * is heavier and labeled with its height. They show from zoom 9.
12
+ *
13
+ * Set `src` to an elevation tile URL with `{z}`, `{x}`, and `{y}` in it, and
14
+ * `encoding` to how its tiles store heights. Set `unit` to `feet` to label
15
+ * the heights in feet. Put the provider's credit in `attribution`.
16
+ *
17
+ * MapLibre draws the lines. The frame lists the layer by its `label` for
18
+ * screen readers.
19
+ *
20
+ * @since 0.105.0
21
+ * @status experimental
22
+ * @category media
23
+ * @aliases Contours, Topographic lines, Elevation lines, Isolines
24
+ * @documentation https://fusion.dev/helix/components/map
25
+ *
26
+ * @event {HelixMapPartChangeEvent} helix-map-part-change - The tiles, the unit, or the layer's name or color changed. Used by `connectMap`; pages do not need to listen for it.
27
+ */
28
+ export declare class HelixHeadlessMapContours extends HelixElement {
29
+ /** The elevation provider's credit, shown in the frame's footer. Links in it stay links. */
30
+ attribution?: string;
31
+ /** More about the lines. Read after the label in the frame's list. */
32
+ description?: string;
33
+ /** How the tiles store heights in their colors: `terrarium` or `mapbox`. */
34
+ encoding: MapTerrainEncoding;
35
+ /**
36
+ * A name this layer shares with other layers, such as a route and its
37
+ * dotted legs. The layers menu shows layers in the same group as one entry,
38
+ * named by the first of them, and its checkbox shows or hides them all.
39
+ */
40
+ group?: string;
41
+ /** Marks this as a layer for the frame and the connector, whatever its tag. */
42
+ readonly isMapLayer = true;
43
+ /** @internal Which kind of layer, which is how the connector draws it. */
44
+ readonly layerKind: 'contours';
45
+ /** The layer's name in the frame's list. */
46
+ label: string;
47
+ /** The deepest zoom the provider has tiles for. */
48
+ maxZoom?: number;
49
+ /** One elevation tile URL with `{z}`, `{x}`, and `{y}` in it. */
50
+ src?: string;
51
+ /** The unit the heights are labeled in: `meters` or `feet`. */
52
+ unit: 'feet' | 'meters';
53
+ /** Tells the frame and the connector the layer changed. */
54
+ protected updated(changed: PropertyValues): void;
55
+ protected render(): typeof nothing;
56
+ }
57
+ declare global {
58
+ interface HTMLElementTagNameMap {
59
+ 'helix-headless-map-contours': HelixHeadlessMapContours;
60
+ }
61
+ }
@@ -0,0 +1,54 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { customElement, HelixElement, HelixMapPartChangeEvent } from '@fusion.dev/helix-core';
8
+ import { nothing } from 'lit';
9
+ import { property } from 'lit/decorators.js';
10
+ let HelixHeadlessMapContours = class HelixHeadlessMapContours extends HelixElement {
11
+ constructor() {
12
+ super(...arguments);
13
+ this.encoding = 'terrarium';
14
+ this.isMapLayer = true;
15
+ this.layerKind = 'contours';
16
+ this.label = 'Contour lines';
17
+ this.unit = 'meters';
18
+ }
19
+ updated(changed) {
20
+ super.updated(changed);
21
+ this.dispatchEvent(new HelixMapPartChangeEvent({ kind: 'layer' }));
22
+ }
23
+ render() {
24
+ return nothing;
25
+ }
26
+ };
27
+ __decorate([
28
+ property()
29
+ ], HelixHeadlessMapContours.prototype, "attribution", void 0);
30
+ __decorate([
31
+ property()
32
+ ], HelixHeadlessMapContours.prototype, "description", void 0);
33
+ __decorate([
34
+ property()
35
+ ], HelixHeadlessMapContours.prototype, "encoding", void 0);
36
+ __decorate([
37
+ property()
38
+ ], HelixHeadlessMapContours.prototype, "group", void 0);
39
+ __decorate([
40
+ property()
41
+ ], HelixHeadlessMapContours.prototype, "label", void 0);
42
+ __decorate([
43
+ property({ attribute: 'max-zoom', type: Number })
44
+ ], HelixHeadlessMapContours.prototype, "maxZoom", void 0);
45
+ __decorate([
46
+ property()
47
+ ], HelixHeadlessMapContours.prototype, "src", void 0);
48
+ __decorate([
49
+ property()
50
+ ], HelixHeadlessMapContours.prototype, "unit", void 0);
51
+ HelixHeadlessMapContours = __decorate([
52
+ customElement('helix-headless-map-contours')
53
+ ], HelixHeadlessMapContours);
54
+ export { HelixHeadlessMapContours };