@fusion.dev/helix-headless 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 (162) hide show
  1. package/custom-elements.json +7324 -3890
  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 +52 -56
  30. package/dist/color-picker/root/color-picker-root.d.ts +49 -49
  31. package/dist/combobox/root/combobox-root.d.ts +52 -53
  32. package/dist/command/root/command-root.d.ts +35 -40
  33. package/dist/copy-button/root/copy-button-root.d.ts +24 -26
  34. package/dist/data-table/root/data-table-root.d.ts +106 -107
  35. package/dist/date-input/root/date-input-root.d.ts +54 -53
  36. package/dist/date-picker/root/date-picker-root.d.ts +25 -21
  37. package/dist/description-list/item/description-list-item.d.ts +7 -7
  38. package/dist/description-list/root/description-list-root.d.ts +10 -15
  39. package/dist/dialog/root/dialog-root.d.ts +22 -19
  40. package/dist/divider/root/divider-root.d.ts +12 -13
  41. package/dist/donut-chart/root/donut-chart-root.d.ts +19 -20
  42. package/dist/drawer/root/drawer-root.d.ts +19 -18
  43. package/dist/drilldown/item/drilldown-item.d.ts +28 -28
  44. package/dist/drilldown/root/drilldown-root.d.ts +22 -28
  45. package/dist/element-events.generated.js +7 -0
  46. package/dist/empty/root/empty-root.d.ts +16 -19
  47. package/dist/file-input/root/file-input-root.d.ts +32 -32
  48. package/dist/filter-input/chip/filter-chip.d.ts +36 -39
  49. package/dist/filter-input/field/filter-field.d.ts +25 -31
  50. package/dist/filter-input/menu/filter-menu.d.ts +50 -47
  51. package/dist/filter-input/operator/filter-operator.d.ts +15 -20
  52. package/dist/filter-input/root/filter-input-root.d.ts +80 -98
  53. package/dist/format-date/root/format-date-root.d.ts +19 -27
  54. package/dist/heatmap/root/heatmap-root.d.ts +40 -41
  55. package/dist/icon/root/icon-root.d.ts +21 -23
  56. package/dist/icon-button/root/icon-button-root.d.ts +12 -14
  57. package/dist/image/root/image-root.d.ts +30 -30
  58. package/dist/input/root/input-root.d.ts +36 -35
  59. package/dist/kbd/root/kbd-root.d.ts +13 -15
  60. package/dist/legend/root/legend-root.d.ts +18 -16
  61. package/dist/lightbox/item/lightbox-item.d.ts +13 -15
  62. package/dist/lightbox/root/lightbox-root.d.ts +40 -41
  63. package/dist/line-chart/root/line-chart-root.d.ts +20 -29
  64. package/dist/list/item/list-item.d.ts +17 -22
  65. package/dist/list/root/list-root.d.ts +6 -7
  66. package/dist/listbox/root/listbox-root.d.ts +42 -41
  67. package/dist/loader/root/loader-root.d.ts +16 -20
  68. package/dist/map/area/map-area.d.ts +6 -0
  69. package/dist/map/area/map-area.js +3 -0
  70. package/dist/map/buildings/map-buildings.d.ts +45 -0
  71. package/dist/map/buildings/map-buildings.js +37 -0
  72. package/dist/map/contours/map-contours.d.ts +61 -0
  73. package/dist/map/contours/map-contours.js +54 -0
  74. package/dist/map/index.d.ts +7 -0
  75. package/dist/map/index.js +5 -0
  76. package/dist/map/landcover/map-landcover.d.ts +47 -0
  77. package/dist/map/landcover/map-landcover.js +37 -0
  78. package/dist/map/marker/map-marker.d.ts +11 -4
  79. package/dist/map/marker/map-marker.js +13 -1
  80. package/dist/map/points/map-points.d.ts +7 -1
  81. package/dist/map/points/map-points.js +3 -0
  82. package/dist/map/raster/map-raster.d.ts +84 -0
  83. package/dist/map/raster/map-raster.js +96 -0
  84. package/dist/map/root/map-root.d.ts +169 -7
  85. package/dist/map/root/map-root.js +352 -4
  86. package/dist/map/route/map-route.d.ts +6 -0
  87. package/dist/map/route/map-route.js +3 -0
  88. package/dist/map/terrain/map-terrain.d.ts +68 -0
  89. package/dist/map/terrain/map-terrain.js +58 -0
  90. package/dist/megamenu/root/megamenu-root.d.ts +27 -25
  91. package/dist/menu/item/menu-item.d.ts +30 -31
  92. package/dist/menu/root/menu-root.d.ts +25 -29
  93. package/dist/meter/root/meter-root.d.ts +22 -21
  94. package/dist/navigation/root/navigation-root.d.ts +13 -16
  95. package/dist/notifications/group/notification-group.d.ts +27 -28
  96. package/dist/notifications/notification/notification.d.ts +35 -42
  97. package/dist/notifications/root/notifications-root.d.ts +22 -24
  98. package/dist/number-input/root/number-input-root.d.ts +46 -50
  99. package/dist/object-inspector/root/object-inspector-root.d.ts +46 -58
  100. package/dist/option/group/option-group.d.ts +11 -11
  101. package/dist/option/root/option-root.d.ts +28 -33
  102. package/dist/outline/root/outline-root.d.ts +18 -17
  103. package/dist/pagination/root/pagination-root.d.ts +37 -39
  104. package/dist/pagination/size/pagination-size.d.ts +37 -43
  105. package/dist/pagination/summary/pagination-summary.d.ts +12 -14
  106. package/dist/pin-input/root/pin-input-root.d.ts +32 -38
  107. package/dist/popover/root/popover-root.d.ts +16 -21
  108. package/dist/progress/root/progress-root.d.ts +16 -14
  109. package/dist/qr-code/root/qr-code-root.d.ts +22 -25
  110. package/dist/quote/root/quote-root.d.ts +5 -6
  111. package/dist/radio/group/radio-group.d.ts +26 -28
  112. package/dist/radio/root/radio-root.d.ts +24 -28
  113. package/dist/rating/root/rating-root.d.ts +27 -30
  114. package/dist/scatter-chart/root/scatter-chart-root.d.ts +43 -55
  115. package/dist/scroll-area/root/scroll-area-root.d.ts +15 -21
  116. package/dist/select/root/select-root.d.ts +41 -44
  117. package/dist/skeleton/root/skeleton-root.d.ts +7 -8
  118. package/dist/skip-link/root/skip-link-root.d.ts +21 -28
  119. package/dist/slider/root/slider-root.d.ts +36 -39
  120. package/dist/sparkline/root/sparkline-root.d.ts +22 -28
  121. package/dist/speed-dial/item/speed-dial-item.d.ts +21 -21
  122. package/dist/speed-dial/root/speed-dial-root.d.ts +25 -27
  123. package/dist/splitter/root/splitter-root.d.ts +37 -41
  124. package/dist/stat/group/stat-group.d.ts +4 -4
  125. package/dist/stat/root/stat-root.d.ts +8 -9
  126. package/dist/steps/root/steps-root.d.ts +11 -14
  127. package/dist/steps/step/step.d.ts +22 -29
  128. package/dist/switch/root/switch-root.d.ts +20 -24
  129. package/dist/table/cell/table-cell.d.ts +18 -8
  130. package/dist/table/cell/table-cell.js +5 -1
  131. package/dist/table/column/table-column.d.ts +62 -55
  132. package/dist/table/root/table-root.d.ts +16 -17
  133. package/dist/table/row/table-row.d.ts +3 -3
  134. package/dist/tabs/panel/tab-panel.d.ts +3 -3
  135. package/dist/tabs/root/tabs-root.d.ts +19 -17
  136. package/dist/tabs/tab/tab.d.ts +6 -6
  137. package/dist/tag/root/tag-root.d.ts +11 -12
  138. package/dist/textarea/root/textarea-root.d.ts +29 -32
  139. package/dist/time-input/root/time-input-root.d.ts +70 -69
  140. package/dist/time-picker/root/time-picker-root.d.ts +58 -66
  141. package/dist/timeline/item/timeline-item.d.ts +18 -24
  142. package/dist/timeline/root/timeline-root.d.ts +13 -21
  143. package/dist/toast/item/toast-item.d.ts +21 -22
  144. package/dist/toast/root/toast-root.d.ts +18 -23
  145. package/dist/toggle/group/toggle-group.d.ts +23 -25
  146. package/dist/toggle/root/toggle-root.d.ts +8 -8
  147. package/dist/toolbar/root/toolbar-root.d.ts +7 -10
  148. package/dist/tooltip/root/tooltip-root.d.ts +41 -47
  149. package/dist/tour/root/tour-root.d.ts +24 -26
  150. package/dist/tour/stop/tour-stop.d.ts +39 -48
  151. package/dist/tree/item/tree-item.d.ts +23 -25
  152. package/dist/tree/root/tree-root.d.ts +13 -12
  153. package/dist/trend/root/trend-root.d.ts +18 -19
  154. package/dist/video/root/video-root.d.ts +108 -101
  155. package/dist/video-playlist/item/video-playlist-item.d.ts +23 -28
  156. package/dist/video-playlist/menu/video-playlist-menu.d.ts +17 -21
  157. package/dist/video-playlist/root/video-playlist-root.d.ts +21 -25
  158. package/dist/virtual-list/root/virtual-list-root.d.ts +27 -26
  159. package/package.json +5 -5
  160. package/types/jsx.d.ts +10363 -9520
  161. package/types/svelte.d.ts +5 -0
  162. package/types/vue.d.ts +1440 -1032
@@ -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
@@ -105,13 +105,20 @@ registerElementEvents({
105
105
  'helix-map-cluster',
106
106
  'helix-map-pan',
107
107
  'helix-map-part-change',
108
+ 'helix-map-rotate',
109
+ 'helix-map-tilt',
108
110
  'helix-map-zoom',
109
111
  ],
110
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'],
111
116
  'helix-headless-map-marker': ['helix-map-cluster', 'helix-map-part-change'],
112
117
  'helix-headless-map-points': ['helix-activate', 'helix-map-cluster', 'helix-map-part-change'],
113
118
  'helix-headless-map-position': ['helix-map-part-change'],
119
+ 'helix-headless-map-raster': ['helix-map-part-change'],
114
120
  'helix-headless-map-route': ['helix-map-part-change'],
121
+ 'helix-headless-map-terrain': ['helix-map-part-change'],
115
122
  'helix-headless-megamenu': ['helix-before-close', 'helix-before-open', 'toggle'],
116
123
  'helix-headless-menu': ['helix-before-close', 'helix-before-open', 'helix-select', 'toggle'],
117
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
@@ -4,13 +4,12 @@ import type { HelixHeadlessOption } from '../../option/index.js';
4
4
  import { type FilterGrammarField } from '../grammar.js';
5
5
  import type { HelixHeadlessFilterOperator } from '../operator/filter-operator.js';
6
6
  /**
7
- * @summary One thing a set can be filtered by, and how.
7
+ * @summary A field that a filter can apply to, with its comparisons and values.
8
8
  *
9
9
  * @description
10
- * **A declaration, not a control.** It renders nothing and is never seen. A
11
- * consumer writes one per field, with the comparisons that field supports and
12
- * the values it supports them on, and the filter input reads them to build its
13
- * menu:
10
+ * Declares a filter field. It renders nothing. Write one per field, with the
11
+ * operators that field supports and its values, and the filter input reads them
12
+ * to build its menu:
14
13
  *
15
14
  * ```html
16
15
  * <helix-headless-filter-field name="disposition" label="Disposition">
@@ -22,25 +21,19 @@ import type { HelixHeadlessFilterOperator } from '../operator/filter-operator.js
22
21
  * </helix-headless-filter-field>
23
22
  * ```
24
23
  *
25
- * **Operators are per field and never global.** `is after` belongs to a date and
26
- * `has all of` to a set, and a field that supports one comparison shows no
27
- * chooser at all. A global list would offer every field every word and leave the
28
- * component deciding which of them made sense, which is the domain question it
29
- * declines to answer.
24
+ * Operators are declared per field. `is after` fits a date and `has all of`
25
+ * fits a set. A field with one operator shows no operator chooser.
30
26
  *
31
- * **A field that declares none gets two, and they are the ones the punctuation
32
- * can say.** `is any of` and `is none of` are what `field:a,b` and `-field:a,b`
33
- * mean, so declaring them was ceremony for the case every product has; the
34
- * example above is what a consumer writes when the words matter, not the price
35
- * of admission. Declaring one comparison replaces both rather than joining
36
- * them: see `vocabulary`, which is where that is decided once for the menu and
37
- * the grammar together.
27
+ * A field that declares no operators gets two: `is any of` and `is none of`,
28
+ * which match the typed forms `field:a,b` and `-field:a,b`. Declare operators,
29
+ * as in the example above, when you want to set the words. Declaring any
30
+ * operator replaces both defaults. `vocabulary` defines this once for both the
31
+ * menu and the grammar.
38
32
  *
39
- * **Values are `Option`s, which is the element a consumer already has.** They
40
- * carry a value, a label and a disabled state, and a picker built on `Menu` or
41
- * `Listbox` can render them without this element inventing a second way to say
42
- * the same thing. A field whose values cannot be enumerated declares none, and
43
- * what fills a chip then is whatever the consumer types.
33
+ * Values are `Option` elements, with a value, a label, and a disabled state, so
34
+ * a picker built on `Menu` or `Listbox` can render them directly. A field whose
35
+ * values cannot be listed declares none, and a chip for it holds whatever you
36
+ * type.
44
37
  *
45
38
  * @since 0.23.0
46
39
  * @status stable
@@ -48,16 +41,17 @@ import type { HelixHeadlessFilterOperator } from '../operator/filter-operator.js
48
41
  * @aliases Facet, Dimension
49
42
  * @documentation https://fusion.dev/helix/components/filter-input
50
43
  *
51
- * @slot - The comparisons this field supports, as `FilterOperator`s, and the
52
- * values it supports them on, as `Option`s. Neither is rendered: they are read.
44
+ * @slot - The field's comparisons, as `FilterOperator`s, and its values, as
45
+ * `Option`s. The filter input reads them and does not render them.
53
46
  */
54
47
  export declare class HelixHeadlessFilterField extends HelixElement {
55
48
  /**
56
- * What a reader is shown, in the menu and on every chip built from this field.
49
+ * The field's name as shown in the menu and on every chip built from the
50
+ * field.
57
51
  */
58
52
  label: string;
59
53
  /**
60
- * What the consumer's own model calls this field.
54
+ * The field's name in your data model.
61
55
  *
62
56
  * Never shown, and what arrives in the filter this helps build.
63
57
  *
@@ -66,7 +60,7 @@ export declare class HelixHeadlessFilterField extends HelixElement {
66
60
  */
67
61
  name?: string;
68
62
  /**
69
- * The comparisons declared under this field, in the order they were written.
63
+ * The comparisons declared in the field, in source order.
70
64
  *
71
65
  * Read from the light DOM rather than from a slot, because there is no slot:
72
66
  * this element renders nothing, so nothing is ever assigned. Order is the
@@ -78,8 +72,8 @@ export declare class HelixHeadlessFilterField extends HelixElement {
78
72
  */
79
73
  get operators(): HelixHeadlessFilterOperator[];
80
74
  /**
81
- * The comparison a chip leaves unwritten, or nothing where the consumer named
82
- * none.
75
+ * The comparison a chip does not show, or `null` when no operator is marked
76
+ * `default`.
83
77
  *
84
78
  * **The first one marked, and a second is reported rather than resolved.** Two
85
79
  * defaults on one field is a consumer saying two different things, and picking
@@ -90,7 +84,7 @@ export declare class HelixHeadlessFilterField extends HelixElement {
90
84
  */
91
85
  get defaultOperator(): HelixHeadlessFilterOperator | null;
92
86
  /**
93
- * The values declared under this field, in the order they were written.
87
+ * The values declared in the field, in source order.
94
88
  *
95
89
  * Empty is meaningful rather than missing: a field whose values cannot be
96
90
  * listed, a free text search or an open ended number, declares none and the
@@ -98,7 +92,7 @@ export declare class HelixHeadlessFilterField extends HelixElement {
98
92
  */
99
93
  get values(): HelixHeadlessOption[];
100
94
  /**
101
- * This field flattened into what the menu renders and the grammar reads.
95
+ * The field as flat data, for the menu to render and the grammar to read.
102
96
  *
103
97
  * **The one place the defaults are applied.** A field that declares no
104
98
  * comparisons supports `is any of` and `is none of`, which is what the typed