@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
@@ -31,51 +31,49 @@ export declare const at: (row: Readonly<Record<string, unknown>>, path: string)
31
31
  */
32
32
  export declare const edgeOf: (align: string | undefined) => string | undefined;
33
33
  /**
34
- * @summary One column of a table: its heading, how wide it is, and what it reads.
34
+ * @summary One column of a table: its heading, its width, and the field it reads from each row.
35
35
  *
36
36
  * @description
37
- * **The column is the source of both its heading and its track.** Add one and
38
- * the table has another track; remove one and it does not. That is what ties
39
- * the two together, and a table-level track list on its own does not: a list
40
- * that is accidentally the headings is invalid CSS a grid ignores in silence,
41
- * drawing the whole table as one column. `Table`'s `columns` is dealt out a
42
- * track at a time against the columns declared under it, so a heading among the
43
- * widths costs its own column a width and no more, and a list longer or shorter
44
- * than the columns is trimmed or shared rather than being a second count of
45
- * them. A column's own `width` wins over the track in its place.
37
+ * Each column provides both its heading and its grid track. Adding a column
38
+ * adds a track, and removing one removes it. `Table`'s `columns` is applied one
39
+ * track at a time to the columns declared under it:
46
40
  *
47
- * **It is also where every per-column fact goes**, which is the reason
48
- * `DataTable` needs no column config object. `field` names the key the cell
49
- * reads, `sortable` says a reader may reorder by it, `text-align` says which edge
50
- * the values line up against, and `cell` takes a function for anything the
51
- * field alone cannot express. The schema is markup and the data is a property:
52
- * a schema is small, declarative, and something a reader should be able to see
53
- * in the HTML, and data is large and windowed.
41
+ * - A heading name in the list affects only its own column's width.
42
+ * - A list longer or shorter than the columns is trimmed or shared.
43
+ * - A column's own `width` overrides the track in its place.
54
44
  *
55
- * **The same element serves both tables**, the markup one and the data one. It
56
- * is identified by a flag rather than by `instanceof`, so a `TableColumn` works
57
- * inside either without the two roots sharing anything else.
45
+ * This protects the table from a track list that contains the headings by
46
+ * mistake, which is invalid CSS that the grid ignores silently, drawing the
47
+ * whole table as one column.
58
48
  *
59
- * **It generates no box of its own**, the same as a row: the heading is a grid
60
- * item of the table, so it lines up with the cells under it rather than sitting
61
- * in a wrapper that has to be kept the same width.
49
+ * Every per-column setting goes on the column, so `DataTable` needs no column
50
+ * configuration object:
62
51
  *
63
- * **`hidden` takes the column out of the grid**, its heading and its track
64
- * both, so the columns after it keep their own widths and every row keeps its
65
- * cells under their headings. `hidden="until-found"` keeps its track, the
66
- * heading being left drawn, as every Helix element leaves one with that value.
67
- * `DataTable` draws the cells, so it leaves out the ones under a hidden column.
68
- * A `Table`'s cells are markup the consumer wrote, so hide them with the
69
- * column, as removing a column means removing its cells: a row with a cell more
70
- * than the table has tracks wraps into the next.
52
+ * - `field` names the key the cell reads.
53
+ * - `sortable` lets people sort by the column.
54
+ * - `text-align` sets which edge the values line up against.
55
+ * - `cell` takes a function for anything `field` alone cannot express.
71
56
  *
72
- * **A heading that does something holds a control that does it.** The host is
73
- * the column header, and a header is not focusable, so a sortable heading is a
74
- * `<button>` inside it: the pattern for a sortable table, and the only way a
75
- * reader on a keyboard reaches the sort at all. A column a reader may resize
76
- * carries a `separator` on its end edge, moved by dragging it or with the arrow
77
- * keys, and a column in a table that lets a reader reorder its columns carries
78
- * a grip the table moves.
57
+ * The same element works in both `Table` and `DataTable`. It is identified by a
58
+ * flag, so the two roots share nothing else.
59
+ *
60
+ * The column generates no box of its own, the same as a row. The heading is a
61
+ * grid item of the table, so it lines up with the cells below it.
62
+ *
63
+ * `hidden` takes the column out of the grid, both its heading and its track, so
64
+ * the other columns keep their widths and every row keeps its cells under their
65
+ * headings. `hidden="until-found"` keeps the track and leaves the heading
66
+ * drawn, as it does on every Helix element. `DataTable` leaves out the cells
67
+ * under a hidden column. In a `Table` the cells are markup you wrote, so hide
68
+ * them with the column: a row with more cells than the table has tracks wraps
69
+ * onto the next line.
70
+ *
71
+ * A heading that does something holds a control. A column header is not
72
+ * focusable, so a sortable heading contains a `<button>`, which is the pattern
73
+ * for a sortable table and the only way to reach the sort by keyboard. A
74
+ * resizable column has a `separator` on its end edge, moved by dragging or with
75
+ * the arrow keys. In a table with reorderable columns, each column has a grip
76
+ * that the table moves.
79
77
  *
80
78
  * @since 0.1.0
81
79
  * @status stable
@@ -84,20 +82,21 @@ export declare const edgeOf: (align: string | undefined) => string | undefined;
84
82
  *
85
83
  * @slot - The heading.
86
84
  *
87
- * @event {HelixBeforeResizeEvent} helix-before-resize - Fired as a reader resizes the column, with the width asked for, and cancelable.
85
+ * @event {HelixBeforeResizeEvent} helix-before-resize - The column is about to be resized, with the requested width. Cancelable: cancel it to keep the current width.
88
86
  *
89
87
  * @csspart column - The heading cell.
90
- * @csspart grip - The handle a reader moves the column by, where the table allows it.
91
- * @csspart grip-mark - The glyph on it.
92
- * @csspart resizer - The edge a reader drags to change the width, where the column allows it.
93
- * @csspart sort - The button a sortable heading is.
88
+ * @csspart grip - The handle for moving the column, when the table allows it.
89
+ * @csspart grip-mark - The icon on the grip.
90
+ * @csspart resizer - The edge that is dragged to change the width, when the column is resizable.
91
+ * @csspart sort - The button that a sortable heading renders as.
94
92
  *
95
93
  * @cssstate sorted-ascending - While the table is sorted by this column, smallest first.
96
94
  * @cssstate sorted-descending - While the table is sorted by this column, largest first.
97
95
  */
98
96
  export declare class HelixHeadlessTableColumn extends HelixElement {
99
97
  /**
100
- * How to read the cell, where the field alone will not do.
98
+ * A function that reads the cell's content from a row, for cells that `field`
99
+ * alone cannot read.
101
100
  *
102
101
  * A property and not an attribute, because it is a function. Set it from a Lit
103
102
  * template with `.cell=${...}`, or assign it in script. A column with neither
@@ -106,7 +105,8 @@ export declare class HelixHeadlessTableColumn extends HelixElement {
106
105
  */
107
106
  cell: CellReader | undefined;
108
107
  /**
109
- * How to read the value that gets sorted and filtered, where it is not the cell.
108
+ * A function that reads the value used for sorting and filtering, when it
109
+ * differs from the cell.
110
110
  *
111
111
  * **The one that is easy to leave out and expensive to add later.** A cell
112
112
  * showing `2.4 MB` sorts as a string unless something says the underlying value
@@ -132,15 +132,15 @@ export declare class HelixHeadlessTableColumn extends HelixElement {
132
132
  */
133
133
  field: string;
134
134
  /**
135
- * What the grip that moves the column is called, with the heading's words as
136
- * `{name}`.
135
+ * The accessible name of the grip that moves the column. `{name}` is replaced
136
+ * with the heading text.
137
137
  *
138
138
  * **Every word a column speaks is a property**, so a table in another
139
139
  * language hears its own rather than English around its own headings.
140
140
  */
141
141
  moveLabel: string;
142
142
  /**
143
- * Whether a reader may change this column's width.
143
+ * Whether the column can be resized.
144
144
  *
145
145
  * By dragging the edge at the end of the heading, or with the arrow keys once
146
146
  * it has focus, a step at a time and four with Shift. The width lands in
@@ -149,12 +149,12 @@ export declare class HelixHeadlessTableColumn extends HelixElement {
149
149
  */
150
150
  resizable: boolean;
151
151
  /**
152
- * What the separator that resizes the column is called, with the heading's
153
- * words as `{name}`.
152
+ * The accessible name of the separator that resizes the column. `{name}` is
153
+ * replaced with the heading text.
154
154
  */
155
155
  resizeLabel: string;
156
156
  /**
157
- * Whether a reader may reorder the set by this column.
157
+ * Whether the table can be sorted by this column.
158
158
  *
159
159
  * Ignored without a `field`, and silently: a column with nothing to sort by
160
160
  * has no order to offer, and refusing loudly would mean an actions column
@@ -226,7 +226,8 @@ export declare class HelixHeadlessTableColumn extends HelixElement {
226
226
  */
227
227
  width: string;
228
228
  /**
229
- * How the separator reads out the column's width, with `{width}` filled in.
229
+ * The text screen readers announce for the column's width. `{width}` is
230
+ * replaced with the width.
230
231
  */
231
232
  widthLabel: string;
232
233
  /**
@@ -257,7 +258,7 @@ export declare class HelixHeadlessTableColumn extends HelixElement {
257
258
  /** Watches `hidden`, which is the platform's attribute and no property of this element's. */
258
259
  private hiding;
259
260
  /**
260
- * The narrowest a reader can drag a column, in pixels.
261
+ * The narrowest width a column can be dragged to, in pixels.
261
262
  *
262
263
  * Three characters and the inset around them. Narrower and the heading has
263
264
  * nothing left to be read by, and the separator is a grab target with no
@@ -275,7 +276,10 @@ export declare class HelixHeadlessTableColumn extends HelixElement {
275
276
  * exactly when the heading stops being drawn.
276
277
  */
277
278
  get shown(): boolean;
278
- /** Whether a reader can actually reorder by this column. */
279
+ /**
280
+ * Whether the table can be sorted by this column, which needs `sortable` and
281
+ * a `field`.
282
+ */
279
283
  get canSort(): boolean;
280
284
  /**
281
285
  * The value this column shows for a row.
@@ -285,7 +289,10 @@ export declare class HelixHeadlessTableColumn extends HelixElement {
285
289
  * default back for the rows it has nothing to say about.
286
290
  */
287
291
  read(row: Readonly<Record<string, unknown>>): unknown;
288
- /** The value this column sorts and filters by, which is not always what it shows. */
292
+ /**
293
+ * The value this column sorts and filters by for a row, which can differ from
294
+ * what it shows.
295
+ */
289
296
  order(row: Readonly<Record<string, unknown>>): unknown;
290
297
  protected willUpdate(changed: PropertyValues): void;
291
298
  /** The words of the heading, for naming the controls on it. */
@@ -3,23 +3,22 @@ import { type PropertyValues, type TemplateResult } from 'lit';
3
3
  import { type HelixHeadlessTableColumn } from '../column/table-column.js';
4
4
  declare const HelixHeadlessTable_base: (new (...args: any[]) => import("@fusion.dev/helix-core").CollectionElement) & typeof HelixElement;
5
5
  /**
6
- * @summary Tabular data laid out on a grid.
6
+ * @summary A table of data, laid out on a grid.
7
7
  *
8
8
  * @description
9
- * A grid rather than a `<table>`, so every column lines up across rows while
9
+ * Lays out the rows on a CSS grid, so every column lines up across rows and
10
10
  * each row stays a real element that can be styled, hidden, or made
11
- * interactive. Table layout gives column alignment and takes away almost
12
- * everything else; grid gives both.
11
+ * interactive. A `<table>` layout aligns columns but limits almost everything
12
+ * else.
13
13
  *
14
- * The cost is that the roles have to be declared, since a grid of divs is not a
15
- * table to anyone reading it. `table`, `row`, `cell`, and `columnheader` are
16
- * all set explicitly, and rows are `display: contents` so their cells become
17
- * items of the one grid that does the aligning.
14
+ * A grid of elements has no table structure for assistive technology, so the
15
+ * roles are set explicitly: `table`, `row`, `cell`, and `columnheader`. Rows
16
+ * are `display: contents`, so their cells become items of the one grid.
18
17
  *
19
- * The properties below are written by this component and read by whoever draws
20
- * it. A consumer sets none of them: they carry a number this element computed
21
- * and CSS cannot, which is what lets a stylesheet on this tier draw the thing
22
- * without measuring anything itself.
18
+ * The CSS custom properties listed for this component are written by it and
19
+ * read by the stylesheet that draws it. Do not set them. Each holds a number
20
+ * the component computes and CSS cannot, so the stylesheet can draw the table
21
+ * without measuring anything.
23
22
  *
24
23
  * @since 0.1.0
25
24
  * @status stable
@@ -29,13 +28,13 @@ declare const HelixHeadlessTable_base: (new (...args: any[]) => import("@fusion.
29
28
  *
30
29
  * @slot - The table's rows.
31
30
  *
32
- * @csspart empty - Shown when there are no rows to show.
33
- * @csspart head - The row the column headings sit in. `display: contents`, so it takes no space.
34
- * @csspart live - The empty and loading lines again, in a region a screen reader hears when they change. Visually hidden in the styled tier.
35
- * @csspart loading - Shown while the rows are still on their way.
31
+ * @csspart empty - The text shown when there are no rows.
32
+ * @csspart head - The row that holds the column headings. It has `display: contents`, so it takes no space of its own.
33
+ * @csspart live - A live region that repeats the empty and loading text, so screen readers announce it when it changes. Visually hidden in the styled tier.
34
+ * @csspart loading - The text shown while the rows are loading.
36
35
  * @csspart table - The grid.
37
36
  *
38
- * @cssproperty --table-template - The column track list this element worked out from the columns declared in it. Written by the component, read by the sheet that paints: a stylesheet takes it to lay the grid out, and setting it does nothing, because the component writes it inline on the very element that reads it and an inline declaration beats any sheet. `columns` is the one to set.
37
+ * @cssproperty --table-template - The column track list the table works out from its columns. The component writes it inline on the element that reads it, so setting it has no effect. Set `columns` to change the tracks.
39
38
  */
40
39
  export declare class HelixHeadlessTable extends HelixHeadlessTable_base {
41
40
  /**
@@ -5,9 +5,9 @@ import { type PropertyValues, type TemplateResult } from 'lit';
5
5
  *
6
6
  * @description
7
7
  * The row renders its cells straight through and lays out none of them, so a
8
- * sheet can take them into the table's own grid and every column lines up
9
- * across every row. The row still exists as an element, which is what a
10
- * `<table>` gives away when its cells are laid out by the table algorithm.
8
+ * stylesheet can place them in the table's grid and every column lines up
9
+ * across rows. The row still exists as an element, so you can style it, hide
10
+ * it, or make it interactive.
11
11
  *
12
12
  * @since 0.1.0
13
13
  * @status stable
@@ -4,9 +4,9 @@ import { type PropertyValues, type TemplateResult } from 'lit';
4
4
  * @summary The content shown for one tab.
5
5
  *
6
6
  * @description
7
- * Hidden rather than unmounted when inactive, so anything typed into a panel is
8
- * still there when the reader comes back to it, and so the content is in the
9
- * server's markup for a crawler regardless of which tab is open.
7
+ * An inactive panel is hidden and stays mounted. Anything typed into it is
8
+ * still there when the person comes back, and the content of every panel is in
9
+ * the server-rendered markup for crawlers, whichever tab is open.
10
10
  *
11
11
  * @since 0.1.0
12
12
  * @status stable
@@ -5,15 +5,16 @@ declare const HelixHeadlessTabs_base: (new (...args: any[]) => import("@fusion.d
5
5
  * @summary A row of tabs and the panel each one shows.
6
6
  *
7
7
  * @description
8
- * Selection is coordinated by event, the same shape the accordion and the tree
9
- * use: a tab dispatches `helix-select` and the root pairs it with the panel of
10
- * the same value. Nothing registers with anything, so tabs added later work
11
- * without the root being told.
8
+ * Selection works through an event, the same as in the accordion and the tree.
9
+ * A tab dispatches `helix-select`, and the root pairs it with the panel of the
10
+ * same value. Nothing registers with anything, so tabs added later work with no
11
+ * extra setup.
12
12
  *
13
- * The tab list is a single tab stop, moved with the arrow keys through
14
- * `KeyboardNavigationController`, the same one the radio and toggle groups use.
15
- * Selection follows focus, which is the right default for a small set where
16
- * showing a panel is cheap; a set where it is not should use `manual`.
13
+ * The tab list is a single tab stop, and the arrow keys move between tabs
14
+ * through `KeyboardNavigationController`, the same as in the radio and toggle
15
+ * groups. Selection follows focus, which suits a small set where showing a
16
+ * panel is cheap. Set `manual` when showing a panel is expensive, so focus can
17
+ * move without selecting.
17
18
  *
18
19
  * @since 0.1.0
19
20
  * @status stable
@@ -21,14 +22,14 @@ declare const HelixHeadlessTabs_base: (new (...args: any[]) => import("@fusion.d
21
22
  * @aliases TabList, Segmented control
22
23
  * @documentation https://fusion.dev/helix/components/tabs
23
24
  *
24
- * @slot - The tabs, which are this element's own children.
25
- * @slot panels - The panels, which are this element's own children. A wrapper around them is assigned to the slot and pairs with nothing, since the pairing walks these children rather than the slot's tree.
25
+ * @slot - The tabs, as direct children of this element.
26
+ * @slot panels - The panels, as direct children of this element. Panels inside a wrapper are not paired with tabs, because pairing reads only the direct children.
26
27
  *
27
- * @event {HelixActivateEvent} helix-activate - Fired once the current one has moved, so the element already holds it.
28
- * @event {HelixBeforeActivateEvent} helix-before-activate - Fired before the current tab moves, and cancelable. The only way to refuse one.
29
- * @event {HelixSelectEvent} helix-select - Fired when a tab is chosen. Dispatched by the tab and listened for here, because the root is what a consumer holds. Cancelable: refusing it takes the decision and nothing moves.
28
+ * @event {HelixActivateEvent} helix-activate - Fired after the active tab changes, so the element already holds the new value.
29
+ * @event {HelixBeforeActivateEvent} helix-before-activate - Fired before the active tab changes, and cancelable. Canceling it is the only way to block a change.
30
+ * @event {HelixSelectEvent} helix-select - Fired when a tab is chosen. The tab sends it and the root handles it, so you can listen on the root. Cancelable: canceling it stops the change and leaves the decision to you.
30
31
  *
31
- * @csspart indicator - The mark that travels to the selected tab.
32
+ * @csspart indicator - The marker that moves to the selected tab.
32
33
  * @csspart panels - The panel container.
33
34
  * @csspart tabs - The tab list.
34
35
  */
@@ -36,11 +37,12 @@ export declare class HelixHeadlessTabs extends HelixHeadlessTabs_base {
36
37
  protected readonly keys: KeyboardNavigationController;
37
38
  private readonly indicator;
38
39
  /**
39
- * Accessible name for the tab list.
40
+ * The tab list's name, read by screen readers.
40
41
  */
41
42
  label: string;
42
43
  /**
43
- * Whether arrowing to a tab also selects it.
44
+ * Stops the arrow keys from selecting each tab they move to. By default,
45
+ * arrowing to a tab also selects it.
44
46
  *
45
47
  * Automatic is the default because showing a panel is usually cheap. Set this
46
48
  * where it is not, so a reader arrowing past four tabs does not load four
@@ -48,7 +50,7 @@ export declare class HelixHeadlessTabs extends HelixHeadlessTabs_base {
48
50
  */
49
51
  manual: boolean;
50
52
  /**
51
- * How the row reads.
53
+ * How the row of tabs is drawn.
52
54
  *
53
55
  * Unset is a raised pill on the selected tab with nothing behind the row,
54
56
  * which is what a set sitting inside other chrome wants. `underlined` is a
@@ -5,12 +5,12 @@ declare const HelixHeadlessTab_base: (new (...args: any[]) => import("@fusion.de
5
5
  * @summary One tab in a tab list.
6
6
  *
7
7
  * @description
8
- * An element rather than a slot because it owns selection and its own tab stop.
8
+ * A tab is an element, because it manages selection and its own tab stop.
9
9
  *
10
- * Its id and the id it controls are both derived from `value`, so the pairing
11
- * between a tab and its panel survives server rendering. A generated id would
12
- * differ between the server's render and the client's and break the link, and
13
- * `aria-controls` pointing at nothing is worse than not being there.
10
+ * Its id and the id it controls both come from `value`, so the link between a
11
+ * tab and its panel works with server rendering. A generated id would differ
12
+ * between the server render and the client render, and `aria-controls` would
13
+ * point at nothing.
14
14
  *
15
15
  * @since 0.1.0
16
16
  * @status stable
@@ -19,7 +19,7 @@ declare const HelixHeadlessTab_base: (new (...args: any[]) => import("@fusion.de
19
19
  *
20
20
  * @slot - The tab's label.
21
21
  *
22
- * @event {HelixSelectEvent} helix-select - Fired when the tab is chosen. Cancelable: refusing it takes the decision and nothing moves.
22
+ * @event {HelixSelectEvent} helix-select - Fired when the tab is chosen. Cancelable: canceling it stops the change and leaves the decision to you.
23
23
  *
24
24
  * @csspart tab - The tab itself.
25
25
  *
@@ -2,17 +2,16 @@ import { HelixElement } from '@fusion.dev/helix-core';
2
2
  import { type TemplateResult } from 'lit';
3
3
  declare const HelixHeadlessTag_base: (new (...args: any[]) => import("@fusion.dev/helix-core").DismissibleElement) & typeof HelixElement;
4
4
  /**
5
- * @summary Labels content with a short piece of metadata.
5
+ * @summary A short label that adds metadata to content.
6
6
  *
7
7
  * @description
8
- * A tag is a label, and optionally a label the reader can take off.
9
- * `dismissible` is what separates it from a badge: a badge reports a state the
10
- * reader cannot change, a tag names something they can.
8
+ * A label that people can optionally remove. `dismissible` is the difference
9
+ * from a badge: a badge shows a state that people cannot change, and a tag
10
+ * names something they can remove.
11
11
  *
12
- * Dismissing is a request. The tag does not remove itself, because the consumer
13
- * owns the list it sits in and taking the node out from under them would put
14
- * their state and the document out of step. Canceling `helix-dismiss` is a
15
- * refusal.
12
+ * The remove button sends `helix-dismiss`. The tag does not remove itself,
13
+ * because your code owns the list it is in, so remove it in your handler. A
14
+ * listener can cancel `helix-dismiss`, and `dismiss()` then returns `false`.
16
15
  *
17
16
  * @since 0.1.0
18
17
  * @status stable
@@ -21,12 +20,12 @@ declare const HelixHeadlessTag_base: (new (...args: any[]) => import("@fusion.de
21
20
  * @documentation https://fusion.dev/helix/components/tag
22
21
  *
23
22
  * @slot - The tag's label.
24
- * @slot start - A category the label belongs to, set before it and weightier.
23
+ * @slot start - The category the label belongs to, shown before it in a heavier weight.
25
24
  *
26
- * @event {HelixDismissEvent} helix-dismiss - Fired when the reader asks to remove the tag. Cancelable: refusing it takes the decision and nothing moves.
25
+ * @event {HelixDismissEvent} helix-dismiss - The remove button was pressed. The tag does not remove itself, so remove it in response. Cancelable.
27
26
  *
28
- * @csspart dismiss - The control that asks to remove the tag.
29
- * @csspart dismiss-mark - The glyph on the dismiss control, where none is slotted.
27
+ * @csspart dismiss - The button that removes the tag.
28
+ * @csspart dismiss-mark - The icon on the remove button.
30
29
  * @csspart start - The category before the label.
31
30
  */
32
31
  export declare class HelixHeadlessTag extends HelixHeadlessTag_base {
@@ -2,23 +2,18 @@ import { AriaForwardController, HelixFormElement } from '@fusion.dev/helix-core'
2
2
  import { type PropertyValues, type TemplateResult } from 'lit';
3
3
  declare const HelixHeadlessTextarea_base: (new (...args: any[]) => import("@fusion.dev/helix-core").MixinControllerValueInterface) & (new (...args: any[]) => import("@fusion.dev/helix-core").MixinFieldInterface) & typeof HelixFormElement;
4
4
  /**
5
- * @summary Several lines of text a reader types into.
5
+ * @summary A multi-line text field.
6
6
  *
7
7
  * @description
8
- * A real `<textarea>`, so the caret, the selection, spellcheck, the resize
9
- * handle and the keyboard a phone chooses are all the platform's, and it
10
- * serializes into the server's markup so the field is usable before any script
11
- * loads.
8
+ * Renders a `<textarea>`, so the caret, selection, spellcheck, resize handle,
9
+ * and phone keyboard come from the platform. It is in the server markup, so the
10
+ * field works before any script loads.
12
11
  *
13
- * **Not an Input with a taller box.** The difference is the Enter key: in a
14
- * single-line field it submits the form, and here it inserts a line. That is a
15
- * behavioral difference the platform owns and cannot be styled into existence,
16
- * which is why this is its own element rather than `Input` with a property.
12
+ * It is a separate element from `Input` because Enter inserts a line break
13
+ * here. In a single-line field, Enter submits the form.
17
14
  *
18
- * `rows` sets the height it starts at, and `auto-grow` lets it follow its own
19
- * content. They are not alternatives: `rows` is where an empty field begins and
20
- * `auto-grow` is what happens after, so a field that grows still has to start
21
- * somewhere.
15
+ * `rows` sets the starting height, and `auto-grow` makes the field grow with
16
+ * its content. You can use both: `rows` sets where an empty field begins.
22
17
  *
23
18
  * @since 0.1.0
24
19
  * @status stable
@@ -26,35 +21,37 @@ declare const HelixHeadlessTextarea_base: (new (...args: any[]) => import("@fusi
26
21
  * @aliases Multiline, TextArea
27
22
  * @documentation https://fusion.dev/helix/components/textarea
28
23
  *
29
- * @event {Event} change - Relayed from the textarea once the reader has finished.
24
+ * @event {Event} change - Sent from the textarea when the user finishes an edit.
30
25
  * @event {HelixBeforeChangeEvent} helix-before-change - Fired as the text changes, and cancelable.
31
- * @event {Event} input - Announced once the value has moved.
26
+ * @event {Event} input - Fired after the value changes.
32
27
  *
33
28
  * @csspart control - The textarea itself.
34
- * @csspart feedback - What is wrong with it.
35
- * @csspart field - The box holding the control.
29
+ * @csspart feedback - The message that says what is wrong.
30
+ * @csspart field - The box that holds the textarea.
36
31
  * @csspart hint - Help under the field, while nothing is wrong.
37
- * @csspart label - The question, over the field.
32
+ * @csspart label - The label above the field.
38
33
  *
39
- * @cssstate invalid - While there is feedback to show: the platform's verdict, or the consumer's `feedback`.
34
+ * @cssstate invalid - The control has an error to show, from the browser's validation or from your `feedback`.
40
35
  */
41
36
  export declare class HelixHeadlessTextarea extends HelixHeadlessTextarea_base {
42
37
  protected readonly aria: AriaForwardController;
43
38
  /** Typed or dragged, so every edit is announced. See `announcesInput`. */
44
39
  protected readonly announcesInput = true;
45
40
  /**
46
- * What the browser may autofill here, as one of the platform's own tokens.
41
+ * What the browser can autofill in the field, as a standard `autocomplete`
42
+ * token.
47
43
  *
48
44
  * Empty leaves the attribute off, which is the browser's default. Set it to
49
45
  * a token like `email` or `bday` to ask for autofill, or to `off` to refuse.
50
46
  */
51
47
  autocomplete: string;
52
48
  /**
53
- * Whether the box follows its own content rather than scrolling.
49
+ * Grows the box to fit its content, so it does not scroll.
54
50
  */
55
51
  autoGrow: boolean;
56
52
  /**
57
- * How many characters wide the box is, where the layout is not deciding.
53
+ * How many characters wide the box is, when the layout does not set its
54
+ * width.
58
55
  *
59
56
  * Optional and absent by default, which is the reflected-property rule: a
60
57
  * `<textarea>` left alone is 20 columns wide and a styled one is whatever its
@@ -64,7 +61,7 @@ export declare class HelixHeadlessTextarea extends HelixHeadlessTextarea_base {
64
61
  */
65
62
  cols?: number;
66
63
  /**
67
- * The name a second entry carries, holding which way the text runs.
64
+ * The name of a second form entry that submits the direction of the text.
68
65
  *
69
66
  * **Submitted through `setFormValue`, because the inner control's own
70
67
  * `dirname` cannot reach the form.** This host is form-associated and reports
@@ -75,11 +72,11 @@ export declare class HelixHeadlessTextarea extends HelixHeadlessTextarea_base {
75
72
  */
76
73
  dirName: string;
77
74
  /**
78
- * Most characters the value may have.
75
+ * The most characters the value can have.
79
76
  */
80
77
  maxLength?: number;
81
78
  /**
82
- * Fewest characters the value may have.
79
+ * The fewest characters the value can have.
83
80
  *
84
81
  * Forwarded to the real `<textarea>` rather than checked here, which is what
85
82
  * makes the message the browser's and therefore the reader's own language.
@@ -88,13 +85,13 @@ export declare class HelixHeadlessTextarea extends HelixHeadlessTextarea_base {
88
85
  */
89
86
  minLength?: number;
90
87
  /**
91
- * Shown while the field is empty.
88
+ * Text shown while the field is empty.
92
89
  *
93
90
  * Not a label: it goes when typing starts.
94
91
  */
95
92
  placeholder: string;
96
93
  /**
97
- * Whether the field refuses input while still submitting its value.
94
+ * Blocks typing in the field. The value is still submitted with the form.
98
95
  */
99
96
  readOnly: boolean;
100
97
  /** Focus is delegated to the control, so the host is never the target. */
@@ -146,7 +143,7 @@ export declare class HelixHeadlessTextarea extends HelixHeadlessTextarea_base {
146
143
  */
147
144
  private formValue;
148
145
  /**
149
- * The caret and the selection, under the platform's own names.
146
+ * The direction of the selection, as a native textarea reports it.
150
147
  *
151
148
  * **The whole reason this renders a real `<textarea>` is the caret**, and the
152
149
  * control is inside this shadow root, so `querySelector` does not find it and
@@ -167,8 +164,8 @@ export declare class HelixHeadlessTextarea extends HelixHeadlessTextarea_base {
167
164
  get selectionStart(): number;
168
165
  set selectionStart(at: number);
169
166
  /**
170
- * Selects a range, which is the one operation the three accessors above
171
- * cannot express between them.
167
+ * Selects a range of text, which the three selection properties cannot do
168
+ * between them.
172
169
  *
173
170
  * Setting `selectionStart` past the current `selectionEnd` drags the end
174
171
  * along, so the two writes a consumer would make in sequence do not compose
@@ -178,9 +175,9 @@ export declare class HelixHeadlessTextarea extends HelixHeadlessTextarea_base {
178
175
  setSelectionRange(start: number, end: number, direction?: SelectionDirection): void;
179
176
  /** How many characters the value holds. */
180
177
  get textLength(): number;
181
- /** What kind of control this is, which for a textarea is always the one word. */
178
+ /** The control's type, which is always `textarea`. */
182
179
  get type(): string;
183
- /** Puts the caret in the field, the way a label pointing at one would. */
180
+ /** Puts the caret in the field, as a label pointing at it would. */
184
181
  focus(options?: FocusOptions): void;
185
182
  /** Reports the value and the validity the host stands behind. */
186
183
  private sync;