@fusion.dev/helix-headless 0.178.0 → 0.180.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 (54) hide show
  1. package/custom-elements.json +543 -145
  2. package/dist/button/root/button-root.d.ts +12 -0
  3. package/dist/button/root/button-root.js +9 -0
  4. package/dist/chat/composer/chat-composer.d.ts +2 -1
  5. package/dist/chat/composer/chat-composer.js +1 -1
  6. package/dist/combobox/root/combobox-root.d.ts +12 -0
  7. package/dist/combobox/root/combobox-root.js +3 -2
  8. package/dist/command/root/command-root.d.ts +12 -0
  9. package/dist/command/root/command-root.js +3 -2
  10. package/dist/data-table/root/data-table-root.d.ts +13 -1
  11. package/dist/data-table/root/data-table-root.js +18 -15
  12. package/dist/date-input/root/date-input-root.d.ts +7 -0
  13. package/dist/date-input/root/date-input-root.js +12 -0
  14. package/dist/date-picker/root/date-picker-root.d.ts +7 -1
  15. package/dist/date-picker/root/date-picker-root.js +12 -0
  16. package/dist/drilldown/item/drilldown-item.d.ts +6 -0
  17. package/dist/drilldown/item/drilldown-item.js +9 -0
  18. package/dist/drilldown/root/drilldown-root.js +9 -0
  19. package/dist/element-events.generated.js +7 -1
  20. package/dist/filter-input/root/filter-input-root.d.ts +13 -0
  21. package/dist/filter-input/root/filter-input-root.js +2 -1
  22. package/dist/heatmap/root/heatmap-root.d.ts +54 -42
  23. package/dist/heatmap/root/heatmap-root.js +72 -54
  24. package/dist/listbox/root/listbox-root.d.ts +16 -2
  25. package/dist/listbox/root/listbox-root.js +8 -4
  26. package/dist/menu/item/menu-item.d.ts +6 -0
  27. package/dist/menu/item/menu-item.js +9 -0
  28. package/dist/meter/root/meter-root.js +1 -2
  29. package/dist/notifications/notification/notification.d.ts +37 -9
  30. package/dist/notifications/notification/notification.js +35 -5
  31. package/dist/option/among.d.ts +23 -0
  32. package/dist/option/among.js +2 -0
  33. package/dist/option/root/option-root.d.ts +1 -17
  34. package/dist/option/root/option-root.js +1 -4
  35. package/dist/scatter-chart/root/scatter-chart-root.d.ts +5 -4
  36. package/dist/scatter-chart/root/scatter-chart-root.js +1 -0
  37. package/dist/select/root/select-root.d.ts +13 -2
  38. package/dist/select/root/select-root.js +3 -3
  39. package/dist/speed-dial/item/speed-dial-item.d.ts +6 -0
  40. package/dist/speed-dial/item/speed-dial-item.js +9 -0
  41. package/dist/table/column/table-column.d.ts +1 -10
  42. package/dist/table/column/table-column.js +1 -2
  43. package/dist/table/edge.d.ts +10 -0
  44. package/dist/table/edge.js +2 -0
  45. package/dist/tabs/root/tabs-root.d.ts +1 -0
  46. package/dist/tabs/root/tabs-root.js +13 -0
  47. package/dist/tabs/tab/tab.d.ts +6 -0
  48. package/dist/tabs/tab/tab.js +9 -0
  49. package/dist/tooltip/root/tooltip-root.js +1 -0
  50. package/lint.json +1 -1
  51. package/package.json +5 -5
  52. package/types/jsx.d.ts +472 -130
  53. package/types/vue.d.ts +71 -50
  54. package/types/words.d.ts +27 -6
package/types/jsx.d.ts CHANGED
@@ -10476,6 +10476,12 @@ for the page's language, then the English. */
10476
10476
  so a form in another language speaks it. Unset is the sentence registered
10477
10477
  for the page's language, then the English. */
10478
10478
  rangeLengthMessage?: (HelixHeadlessDateInput["rangeLengthMessage"]) | undefined;
10479
+ /** The message shown when a range ends before it starts. `{start}` is
10480
+ replaced with the start, written the way the field writes dates. */
10481
+ "range-order-message"?: (HelixHeadlessDateInput["rangeOrderMessage"]) | undefined;
10482
+ /** The message shown when a range ends before it starts. `{start}` is
10483
+ replaced with the start, written the way the field writes dates. */
10484
+ rangeOrderMessage?: (HelixHeadlessDateInput["rangeOrderMessage"]) | undefined;
10479
10485
  /** The message shown when a date is after `max`. `{max}` is replaced with
10480
10486
  `max`, written the way the field writes dates. */
10481
10487
  "range-overflow-message"?: (HelixHeadlessDateInput["rangeOverflowMessage"]) | undefined;
@@ -11008,6 +11014,12 @@ for the page's language, then the English. */
11008
11014
  so a form in another language speaks it. Unset is the sentence registered
11009
11015
  for the page's language, then the English. */
11010
11016
  "prop:rangeLengthMessage"?: (HelixHeadlessDateInput["rangeLengthMessage"]) | undefined;
11017
+ /** The message shown when a range ends before it starts. `{start}` is
11018
+ replaced with the start, written the way the field writes dates. */
11019
+ "attr:range-order-message"?: (HelixHeadlessDateInput["rangeOrderMessage"]) | undefined;
11020
+ /** The message shown when a range ends before it starts. `{start}` is
11021
+ replaced with the start, written the way the field writes dates. */
11022
+ "prop:rangeOrderMessage"?: (HelixHeadlessDateInput["rangeOrderMessage"]) | undefined;
11011
11023
  /** The message shown when a date is after `max`. `{max}` is replaced with
11012
11024
  `max`, written the way the field writes dates. */
11013
11025
  "attr:range-overflow-message"?: (HelixHeadlessDateInput["rangeOverflowMessage"]) | undefined;
@@ -11527,6 +11539,12 @@ it. */
11527
11539
  "previous-years-label"?: (HelixHeadlessDatePicker["previousYearsLabel"]) | undefined;
11528
11540
  /** Accessible name for the control that moves back a page, in the years. */
11529
11541
  previousYearsLabel?: (HelixHeadlessDatePicker["previousYearsLabel"]) | undefined;
11542
+ /** The validation message for a range that ends before it starts. `{start}`
11543
+ is replaced with the start, written as a date in `locale`. */
11544
+ "range-order-message"?: (HelixHeadlessDatePicker["rangeOrderMessage"]) | undefined;
11545
+ /** The validation message for a range that ends before it starts. `{start}`
11546
+ is replaced with the start, written as a date in `locale`. */
11547
+ rangeOrderMessage?: (HelixHeadlessDatePicker["rangeOrderMessage"]) | undefined;
11530
11548
  /** The validation message for a date after `max`. `{max}` is replaced with
11531
11549
  `max`, written as a date in `locale`. */
11532
11550
  "range-overflow-message"?: (HelixHeadlessDatePicker["rangeOverflowMessage"]) | undefined;
@@ -11882,6 +11900,12 @@ it. */
11882
11900
  "attr:previous-years-label"?: (HelixHeadlessDatePicker["previousYearsLabel"]) | undefined;
11883
11901
  /** Accessible name for the control that moves back a page, in the years. */
11884
11902
  "prop:previousYearsLabel"?: (HelixHeadlessDatePicker["previousYearsLabel"]) | undefined;
11903
+ /** The validation message for a range that ends before it starts. `{start}`
11904
+ is replaced with the start, written as a date in `locale`. */
11905
+ "attr:range-order-message"?: (HelixHeadlessDatePicker["rangeOrderMessage"]) | undefined;
11906
+ /** The validation message for a range that ends before it starts. `{start}`
11907
+ is replaced with the start, written as a date in `locale`. */
11908
+ "prop:rangeOrderMessage"?: (HelixHeadlessDatePicker["rangeOrderMessage"]) | undefined;
11885
11909
  /** The validation message for a date after `max`. `{max}` is replaced with
11886
11910
  `max`, written as a date in `locale`. */
11887
11911
  "attr:range-overflow-message"?: (HelixHeadlessDatePicker["rangeOverflowMessage"]) | undefined;
@@ -15664,6 +15688,12 @@ export type HelixHeadlessHeatmapElementEvent<E = Event> = TypedEvent<
15664
15688
  /** `helix-before-change` event type */
15665
15689
  export type HelixHeadlessHeatmapHelixBeforeChangeElementEvent =
15666
15690
  HelixHeadlessHeatmapElementEvent<HelixBeforeChangeEvent>;
15691
+ /** `helix-reading-change` event type */
15692
+ export type HelixHeadlessHeatmapHelixReadingChangeElementEvent =
15693
+ HelixHeadlessHeatmapElementEvent<HelixReadingChangeEvent>;
15694
+ /** `helix-reading-press` event type */
15695
+ export type HelixHeadlessHeatmapHelixReadingPressElementEvent =
15696
+ HelixHeadlessHeatmapElementEvent<HelixReadingPressEvent>;
15667
15697
  /** `helix-resize` event type */
15668
15698
  export type HelixHeadlessHeatmapHelixResizeElementEvent =
15669
15699
  HelixHeadlessHeatmapElementEvent<HelixResizeEvent>;
@@ -15675,16 +15705,6 @@ export type HelixHeadlessHeatmapProps = {
15675
15705
  /** The name the `overview` gives the busiest reading, `{busiestLabel}` in
15676
15706
  `overview-label`. */
15677
15707
  busiestLabel?: (HelixHeadlessHeatmap["busiestLabel"]) | undefined;
15678
- /** Shown when the table has no readings in it.
15679
-
15680
- Never shown while the table cannot be read at all, which is a server render
15681
- and the hydrating one after it: see `sourceKnown`. */
15682
- "empty-text"?: (HelixHeadlessHeatmap["emptyText"]) | undefined;
15683
- /** Shown when the table has no readings in it.
15684
-
15685
- Never shown while the table cannot be read at all, which is a server render
15686
- and the hydrating one after it: see `sourceKnown`. */
15687
- emptyText?: (HelixHeadlessHeatmap["emptyText"]) | undefined;
15688
15708
  /** Space between cells, in CSS pixels. It is a number for the same reason
15689
15709
  `min-cell` is. */
15690
15710
  gap?: (HelixHeadlessHeatmap["gap"]) | undefined;
@@ -15742,13 +15762,9 @@ calendar heatmap does: a week is a column, so the strip reads along the
15742
15762
  line in weeks, from the right on a right-to-left page, and top to bottom in
15743
15763
  days. */
15744
15764
  rows?: (HelixHeadlessHeatmap["rows"]) | undefined;
15745
- /** What the readout adds for a selected cell, under `selection-mode`, after
15746
- where the cell stands: "Day 1: 0 (1 of 14, selected)". Empty adds
15747
- nothing. */
15765
+ /** What the readout added for a selected cell, under `selection-mode`. */
15748
15766
  "selected-label"?: (HelixHeadlessHeatmap["selectedLabel"]) | undefined;
15749
- /** What the readout adds for a selected cell, under `selection-mode`, after
15750
- where the cell stands: "Day 1: 0 (1 of 14, selected)". Empty adds
15751
- nothing. */
15767
+ /** What the readout added for a selected cell, under `selection-mode`. */
15752
15768
  selectedLabel?: (HelixHeadlessHeatmap["selectedLabel"]) | undefined;
15753
15769
  /** What the `selection` part says after the selection changes. `{count}` is
15754
15770
  how many cells are selected, written in the locale, and a language that
@@ -15805,6 +15821,25 @@ header's words where it carries none.
15805
15821
  Set it to start with cells selected. Written by a press or a key under
15806
15822
  `selection-mode`. */
15807
15823
  value?: (HelixHeadlessHeatmap["value"]) | undefined;
15824
+ /** The words shown in place of the drawing when the table has no readings,
15825
+ and the fallback of the `empty` slot. */
15826
+ "empty-text"?: (HelixHeadlessHeatmap["emptyText"]) | undefined;
15827
+ /** The words shown in place of the drawing when the table has no readings,
15828
+ and the fallback of the `empty` slot. */
15829
+ emptyText?: (HelixHeadlessHeatmap["emptyText"]) | undefined;
15830
+ /** Whether the readings are still on their way. The chart shows
15831
+ `loading-text` in place of an empty drawing until it has readings.
15832
+
15833
+ Reflected, so a stylesheet can treat the chart while it waits. A chart
15834
+ that already has readings keeps drawing them, so a refresh does not
15835
+ blank it. */
15836
+ loading?: (HelixHeadlessHeatmap["loading"]) | undefined;
15837
+ /** The words shown in place of the drawing while `loading` is set and
15838
+ there are no readings yet, and the fallback of the `loading` slot. */
15839
+ "loading-text"?: (HelixHeadlessHeatmap["loadingText"]) | undefined;
15840
+ /** The words shown in place of the drawing while `loading` is set and
15841
+ there are no readings yet, and the fallback of the `loading` slot. */
15842
+ loadingText?: (HelixHeadlessHeatmap["loadingText"]) | undefined;
15808
15843
  /** The id of the table to read.
15809
15844
 
15810
15845
  Names a table in the same tree, so a chart inside another component's
@@ -15871,6 +15906,14 @@ does not look inside the one it has. */
15871
15906
  "onhelix-before-change"?: ((
15872
15907
  e: HelixHeadlessHeatmapHelixBeforeChangeElementEvent,
15873
15908
  ) => void) | undefined;
15909
+ /** The reading shown moved, or was put away: `index` is the row, or `-1` for none, with its `label`, the `series` the keys rest on, and the `pointerType` that moved it. */
15910
+ "onhelix-reading-change"?: ((
15911
+ e: HelixHeadlessHeatmapHelixReadingChangeElementEvent,
15912
+ ) => void) | undefined;
15913
+ /** A reading was clicked, tapped, or pressed with Enter or Space, with the same detail as `helix-reading-change`. */
15914
+ "onhelix-reading-press"?: ((
15915
+ e: HelixHeadlessHeatmapHelixReadingPressElementEvent,
15916
+ ) => void) | undefined;
15874
15917
  /** Fired when the number of cells drawn changes, with the new number. */
15875
15918
  "onhelix-resize"?: ((e: HelixHeadlessHeatmapHelixResizeElementEvent) => void) | undefined;
15876
15919
  };
@@ -15882,16 +15925,6 @@ export type HelixHeadlessHeatmapSolidJsProps = {
15882
15925
  /** The name the `overview` gives the busiest reading, `{busiestLabel}` in
15883
15926
  `overview-label`. */
15884
15927
  "prop:busiestLabel"?: (HelixHeadlessHeatmap["busiestLabel"]) | undefined;
15885
- /** Shown when the table has no readings in it.
15886
-
15887
- Never shown while the table cannot be read at all, which is a server render
15888
- and the hydrating one after it: see `sourceKnown`. */
15889
- "attr:empty-text"?: (HelixHeadlessHeatmap["emptyText"]) | undefined;
15890
- /** Shown when the table has no readings in it.
15891
-
15892
- Never shown while the table cannot be read at all, which is a server render
15893
- and the hydrating one after it: see `sourceKnown`. */
15894
- "prop:emptyText"?: (HelixHeadlessHeatmap["emptyText"]) | undefined;
15895
15928
  /** Space between cells, in CSS pixels. It is a number for the same reason
15896
15929
  `min-cell` is. */
15897
15930
  "prop:gap"?: (HelixHeadlessHeatmap["gap"]) | undefined;
@@ -15949,13 +15982,9 @@ calendar heatmap does: a week is a column, so the strip reads along the
15949
15982
  line in weeks, from the right on a right-to-left page, and top to bottom in
15950
15983
  days. */
15951
15984
  "prop:rows"?: (HelixHeadlessHeatmap["rows"]) | undefined;
15952
- /** What the readout adds for a selected cell, under `selection-mode`, after
15953
- where the cell stands: "Day 1: 0 (1 of 14, selected)". Empty adds
15954
- nothing. */
15985
+ /** What the readout added for a selected cell, under `selection-mode`. */
15955
15986
  "attr:selected-label"?: (HelixHeadlessHeatmap["selectedLabel"]) | undefined;
15956
- /** What the readout adds for a selected cell, under `selection-mode`, after
15957
- where the cell stands: "Day 1: 0 (1 of 14, selected)". Empty adds
15958
- nothing. */
15987
+ /** What the readout added for a selected cell, under `selection-mode`. */
15959
15988
  "prop:selectedLabel"?: (HelixHeadlessHeatmap["selectedLabel"]) | undefined;
15960
15989
  /** What the `selection` part says after the selection changes. `{count}` is
15961
15990
  how many cells are selected, written in the locale, and a language that
@@ -16012,6 +16041,25 @@ header's words where it carries none.
16012
16041
  Set it to start with cells selected. Written by a press or a key under
16013
16042
  `selection-mode`. */
16014
16043
  "prop:value"?: (HelixHeadlessHeatmap["value"]) | undefined;
16044
+ /** The words shown in place of the drawing when the table has no readings,
16045
+ and the fallback of the `empty` slot. */
16046
+ "attr:empty-text"?: (HelixHeadlessHeatmap["emptyText"]) | undefined;
16047
+ /** The words shown in place of the drawing when the table has no readings,
16048
+ and the fallback of the `empty` slot. */
16049
+ "prop:emptyText"?: (HelixHeadlessHeatmap["emptyText"]) | undefined;
16050
+ /** Whether the readings are still on their way. The chart shows
16051
+ `loading-text` in place of an empty drawing until it has readings.
16052
+
16053
+ Reflected, so a stylesheet can treat the chart while it waits. A chart
16054
+ that already has readings keeps drawing them, so a refresh does not
16055
+ blank it. */
16056
+ "prop:loading"?: (HelixHeadlessHeatmap["loading"]) | undefined;
16057
+ /** The words shown in place of the drawing while `loading` is set and
16058
+ there are no readings yet, and the fallback of the `loading` slot. */
16059
+ "attr:loading-text"?: (HelixHeadlessHeatmap["loadingText"]) | undefined;
16060
+ /** The words shown in place of the drawing while `loading` is set and
16061
+ there are no readings yet, and the fallback of the `loading` slot. */
16062
+ "prop:loadingText"?: (HelixHeadlessHeatmap["loadingText"]) | undefined;
16015
16063
  /** The id of the table to read.
16016
16064
 
16017
16065
  Names a table in the same tree, so a chart inside another component's
@@ -16077,6 +16125,14 @@ does not look inside the one it has. */
16077
16125
  "on:helix-before-change"?: ((
16078
16126
  e: HelixHeadlessHeatmapHelixBeforeChangeElementEvent,
16079
16127
  ) => void) | undefined;
16128
+ /** The reading shown moved, or was put away: `index` is the row, or `-1` for none, with its `label`, the `series` the keys rest on, and the `pointerType` that moved it. */
16129
+ "on:helix-reading-change"?: ((
16130
+ e: HelixHeadlessHeatmapHelixReadingChangeElementEvent,
16131
+ ) => void) | undefined;
16132
+ /** A reading was clicked, tapped, or pressed with Enter or Space, with the same detail as `helix-reading-change`. */
16133
+ "on:helix-reading-press"?: ((
16134
+ e: HelixHeadlessHeatmapHelixReadingPressElementEvent,
16135
+ ) => void) | undefined;
16080
16136
  /** Fired when the number of cells drawn changes, with the new number. */
16081
16137
  "on:helix-resize"?: ((e: HelixHeadlessHeatmapHelixResizeElementEvent) => void) | undefined;
16082
16138
 
@@ -19125,7 +19181,8 @@ React Aria virtualizes a `ListBox` with its `Virtualizer`; this is core's
19125
19181
 
19126
19182
  **The list needs a height to scroll in**: the styled tier's
19127
19183
  `--listbox-max-block-size`, or a `max-block-size` on `::part(items)` in the
19128
- headless tier. Import the Option family as well, whose elements are drawn.
19184
+ headless tier. The options drawn are this tier's Option, which the page
19185
+ imports, as it imports the options it writes.
19129
19186
  A server sends the list empty, and the options are drawn once it hydrates. */
19130
19187
  items?: (HelixHeadlessListbox["items"]) | undefined;
19131
19188
  /** Which option is chosen, as an index, or `-1` where none is.
@@ -19423,7 +19480,8 @@ React Aria virtualizes a `ListBox` with its `Virtualizer`; this is core's
19423
19480
 
19424
19481
  **The list needs a height to scroll in**: the styled tier's
19425
19482
  `--listbox-max-block-size`, or a `max-block-size` on `::part(items)` in the
19426
- headless tier. Import the Option family as well, whose elements are drawn.
19483
+ headless tier. The options drawn are this tier's Option, which the page
19484
+ imports, as it imports the options it writes.
19427
19485
  A server sends the list empty, and the options are drawn once it hydrates. */
19428
19486
  "prop:items"?: (HelixHeadlessListbox["items"]) | undefined;
19429
19487
  /** Which option is chosen, as an index, or `-1` where none is.
@@ -22283,6 +22341,20 @@ empty string would give. */
22283
22341
  "default-read"?: (HelixHeadlessNotification["defaultRead"]) | undefined;
22284
22342
  /** Whether the notification starts as read, used until `read` is set. */
22285
22343
  defaultRead?: (HelixHeadlessNotification["defaultRead"]) | undefined;
22344
+ /** The dismiss control's name, read by screen readers, with `{label}` for the
22345
+ row's own words.
22346
+
22347
+ One sentence with the words in it, so a translation puts them where its
22348
+ language does: `registerWords('de', { 'helix-notification': { dismissLabel:
22349
+ '{label} schließen' } })`. */
22350
+ "dismiss-label"?: (HelixHeadlessNotification["dismissLabel"]) | undefined;
22351
+ /** The dismiss control's name, read by screen readers, with `{label}` for the
22352
+ row's own words.
22353
+
22354
+ One sentence with the words in it, so a translation puts them where its
22355
+ language does: `registerWords('de', { 'helix-notification': { dismissLabel:
22356
+ '{label} schließen' } })`. */
22357
+ dismissLabel?: (HelixHeadlessNotification["dismissLabel"]) | undefined;
22286
22358
  /** Locale for the timestamp.
22287
22359
 
22288
22360
  Empty is the runtime's own. */
@@ -22313,28 +22385,6 @@ its place. Translate it with the rest of your interface. */
22313
22385
  unreadLabel?: (HelixHeadlessNotification["unreadLabel"]) | undefined;
22314
22386
  /** Whether the element shows a control that dismisses it. */
22315
22387
  dismissible?: (HelixHeadlessNotification["dismissible"]) | undefined;
22316
- /** The dismiss control's label, read by screen readers.
22317
-
22318
- `attribute` is spelled out because Lit lowercases a property name to
22319
- derive one rather than dash-casing it, so this would otherwise be
22320
- reachable only as `dismisslabel`, which nobody would guess and no linter
22321
- would catch.
22322
-
22323
- A word property: register it for a locale under the host's key. A family
22324
- that names the control otherwise, such as Tag's `Remove {label}`,
22325
- declares its own English with `@words` above the override. */
22326
- "dismiss-label"?: (HelixHeadlessNotification["dismissLabel"]) | undefined;
22327
- /** The dismiss control's label, read by screen readers.
22328
-
22329
- `attribute` is spelled out because Lit lowercases a property name to
22330
- derive one rather than dash-casing it, so this would otherwise be
22331
- reachable only as `dismisslabel`, which nobody would guess and no linter
22332
- would catch.
22333
-
22334
- A word property: register it for a locale under the host's key. A family
22335
- that names the control otherwise, such as Tag's `Remove {label}`,
22336
- declares its own English with `@words` above the override. */
22337
- dismissLabel?: (HelixHeadlessNotification["dismissLabel"]) | undefined;
22338
22388
 
22339
22389
  /** Fired when the user dismisses the notification. Cancelable. */
22340
22390
  "onhelix-dismiss"?: ((
@@ -22356,6 +22406,20 @@ empty string would give. */
22356
22406
  "bool:default-read"?: (HelixHeadlessNotification["defaultRead"]) | undefined;
22357
22407
  /** Whether the notification starts as read, used until `read` is set. */
22358
22408
  "prop:defaultRead"?: (HelixHeadlessNotification["defaultRead"]) | undefined;
22409
+ /** The dismiss control's name, read by screen readers, with `{label}` for the
22410
+ row's own words.
22411
+
22412
+ One sentence with the words in it, so a translation puts them where its
22413
+ language does: `registerWords('de', { 'helix-notification': { dismissLabel:
22414
+ '{label} schließen' } })`. */
22415
+ "attr:dismiss-label"?: (HelixHeadlessNotification["dismissLabel"]) | undefined;
22416
+ /** The dismiss control's name, read by screen readers, with `{label}` for the
22417
+ row's own words.
22418
+
22419
+ One sentence with the words in it, so a translation puts them where its
22420
+ language does: `registerWords('de', { 'helix-notification': { dismissLabel:
22421
+ '{label} schließen' } })`. */
22422
+ "prop:dismissLabel"?: (HelixHeadlessNotification["dismissLabel"]) | undefined;
22359
22423
  /** Locale for the timestamp.
22360
22424
 
22361
22425
  Empty is the runtime's own. */
@@ -22386,28 +22450,6 @@ its place. Translate it with the rest of your interface. */
22386
22450
  "prop:unreadLabel"?: (HelixHeadlessNotification["unreadLabel"]) | undefined;
22387
22451
  /** Whether the element shows a control that dismisses it. */
22388
22452
  "prop:dismissible"?: (HelixHeadlessNotification["dismissible"]) | undefined;
22389
- /** The dismiss control's label, read by screen readers.
22390
-
22391
- `attribute` is spelled out because Lit lowercases a property name to
22392
- derive one rather than dash-casing it, so this would otherwise be
22393
- reachable only as `dismisslabel`, which nobody would guess and no linter
22394
- would catch.
22395
-
22396
- A word property: register it for a locale under the host's key. A family
22397
- that names the control otherwise, such as Tag's `Remove {label}`,
22398
- declares its own English with `@words` above the override. */
22399
- "attr:dismiss-label"?: (HelixHeadlessNotification["dismissLabel"]) | undefined;
22400
- /** The dismiss control's label, read by screen readers.
22401
-
22402
- `attribute` is spelled out because Lit lowercases a property name to
22403
- derive one rather than dash-casing it, so this would otherwise be
22404
- reachable only as `dismisslabel`, which nobody would guess and no linter
22405
- would catch.
22406
-
22407
- A word property: register it for a locale under the host's key. A family
22408
- that names the control otherwise, such as Tag's `Remove {label}`,
22409
- declares its own English with `@words` above the override. */
22410
- "prop:dismissLabel"?: (HelixHeadlessNotification["dismissLabel"]) | undefined;
22411
22453
  /** Fired when the user dismisses the notification. Cancelable. */
22412
22454
  "on:helix-dismiss"?: ((
22413
22455
  e: HelixHeadlessNotificationHelixDismissElementEvent,
@@ -39530,6 +39572,15 @@ export type CustomElements = {
39530
39572
  *
39531
39573
  * Methods that can be called to access component functionality.
39532
39574
  *
39575
+ * - `click() => void`: Presses the button, as `click()` presses a native one: the command is sent,
39576
+ * the form submits or resets, and `helix-press` says `virtual`.
39577
+ *
39578
+ * **Passed to the inner control, because a click on the host reaches nothing
39579
+ * that acts.** The control in the shadow root is what answers a click, so
39580
+ * `click()` from a script, an automation or a test, dispatched on the host,
39581
+ * submitted nothing and sent no `helix-press`. The control's own click reaches
39582
+ * the host's listeners once, retargeted, as one from a native button does. A
39583
+ * disabled button does nothing, and a pending one refuses the press.
39533
39584
  * - `formAssociatedCallback(form: HTMLFormElement | null) => void`: Called by the browser when the button's form changes.
39534
39585
  * - `formDisabledCallback(disabled: boolean) => void`: Called by the browser when an ancestor fieldset is disabled or enabled.
39535
39586
  *
@@ -40913,7 +40964,8 @@ export type CustomElements = {
40913
40964
  * The composer clears only when no listener cancels the send, so the text is
40914
40965
  * kept when you cancel a send that failed.
40915
40966
  *
40916
- * **In a form, the draft is the composer's value**, submitted under `name`. A
40967
+ * **In a form, the draft is the composer's value**, submitted under `name`,
40968
+ * and an empty draft submits an empty entry, as a native textarea does. A
40917
40969
  * form reset puts back the `value` the markup declared, and a `<fieldset
40918
40970
  * disabled>` turns the composer off. Sending is still `helix-send`, and it
40919
40971
  * does not submit the form.
@@ -43198,6 +43250,18 @@ export type CustomElements = {
43198
43250
  * framework would re-render over an element the combobox inserted, so add the
43199
43251
  * option in your event handler.
43200
43252
  *
43253
+ * **The options are an import of their own.** An option is the Option family's,
43254
+ * which the combobox does not register, so a page that writes one imports it
43255
+ * beside the combobox:
43256
+ *
43257
+ * ```js
43258
+ * import '@fusion.dev/helix/combobox'
43259
+ * import '@fusion.dev/helix/option'
43260
+ * ```
43261
+ *
43262
+ * In development, a combobox holding an option nobody registered says so once
43263
+ * the page has loaded, with the line to add.
43264
+ *
43201
43265
  * ## Attributes & Properties
43202
43266
  *
43203
43267
  * Component attributes and properties that can be applied to the element or by using JavaScript.
@@ -43630,6 +43694,18 @@ export type CustomElements = {
43630
43694
  * Aria's `Autocomplete` is. The commands are a `listbox` of `option`s. How many commands typing left, the empty text and
43631
43695
  * the loading text are said in a polite live region.
43632
43696
  *
43697
+ * **The commands are an import of their own.** A command is an option, the
43698
+ * Option family's, which the palette does not register, so a page that writes
43699
+ * one imports it beside the palette:
43700
+ *
43701
+ * ```js
43702
+ * import '@fusion.dev/helix/command'
43703
+ * import '@fusion.dev/helix/option'
43704
+ * ```
43705
+ *
43706
+ * In development, a palette holding an option nobody registered says so once
43707
+ * the page has loaded, with the line to add.
43708
+ *
43633
43709
  * ## Attributes & Properties
43634
43710
  *
43635
43711
  * Component attributes and properties that can be applied to the element or by using JavaScript.
@@ -43986,6 +44062,15 @@ export type CustomElements = {
43986
44062
  *
43987
44063
  * Methods that can be called to access component functionality.
43988
44064
  *
44065
+ * - `click() => void`: Presses the button, as `click()` presses a native one: the command is sent,
44066
+ * the form submits or resets, and `helix-press` says `virtual`.
44067
+ *
44068
+ * **Passed to the inner control, because a click on the host reaches nothing
44069
+ * that acts.** The control in the shadow root is what answers a click, so
44070
+ * `click()` from a script, an automation or a test, dispatched on the host,
44071
+ * submitted nothing and sent no `helix-press`. The control's own click reaches
44072
+ * the host's listeners once, retargeted, as one from a native button does. A
44073
+ * disabled button does nothing, and a pending one refuses the press.
43989
44074
  * - `formAssociatedCallback(form: HTMLFormElement | null) => void`: Called by the browser when the control's form changes: watches the new
43990
44075
  * form's `checkValidity()`, as connecting does for the form it starts in.
43991
44076
  * - `formDisabledCallback(disabled: boolean) => void`: Called by the browser when an ancestor fieldset is disabled or enabled.
@@ -44196,6 +44281,18 @@ export type CustomElements = {
44196
44281
  * Written on `DataTable`, `columns` has no effect, so watch for it when you
44197
44282
  * move a table from `Table` to `DataTable`.
44198
44283
  *
44284
+ * **The columns are an import of their own.** A column is the Table family's
44285
+ * `TableColumn`, which the data table does not register, so a page that writes
44286
+ * one imports the Table entry beside the data table:
44287
+ *
44288
+ * ```js
44289
+ * import '@fusion.dev/helix/data-table'
44290
+ * import '@fusion.dev/helix/table'
44291
+ * ```
44292
+ *
44293
+ * In development, a data table holding a column nobody registered says so once
44294
+ * the page has loaded, with the line to add.
44295
+ *
44199
44296
  * ## Attributes & Properties
44200
44297
  *
44201
44298
  * Component attributes and properties that can be applied to the element or by using JavaScript.
@@ -44594,6 +44691,8 @@ export type CustomElements = {
44594
44691
  * digits or the arrow keys. Alt+Down opens the calendar from a segment. A
44595
44692
  * `range` is two rows with a dash between them, the start and the end, as
44596
44693
  * React Aria's DateRangePicker draws them, and `multiple` keeps the text.
44694
+ * A range whose end is before its start reports `rangeUnderflow`, as Date
44695
+ * Picker does, with `range-order-message`.
44597
44696
  *
44598
44697
  * Text that is not a date gives the form an empty value, as a native date
44599
44698
  * field does, and `value` keeps the text so it can be corrected.
@@ -44714,6 +44813,8 @@ export type CustomElements = {
44714
44813
  * **Every sentence a control raises in the browser's bubble is a property**,
44715
44814
  * so a form in another language speaks it. Unset is the sentence registered
44716
44815
  * for the page's language, then the English.
44816
+ * - `range-order-message`/`rangeOrderMessage`: The message shown when a range ends before it starts. `{start}` is
44817
+ * replaced with the start, written the way the field writes dates.
44717
44818
  * - `range-overflow-message`/`rangeOverflowMessage`: The message shown when a date is after `max`. `{max}` is replaced with
44718
44819
  * `max`, written the way the field writes dates.
44719
44820
  * - `range-underflow-message`/`rangeUnderflowMessage`: The message shown when a date is before `min`. `{min}` is replaced with
@@ -45118,7 +45219,8 @@ export type CustomElements = {
45118
45219
  * when Previous or Next is pressed. Neither moves past `min` or `max`, and the
45119
45220
  * keys stop at them too. A value outside the bounds, on a barred day, or off
45120
45221
  * `step` reports `rangeUnderflow`, `rangeOverflow`, `badInput` or
45121
- * `stepMismatch`, so a form does not submit it.
45222
+ * `stepMismatch`, so a form does not submit it. A range set from a script
45223
+ * whose end is before its start reports `rangeUnderflow` as well.
45122
45224
  *
45123
45225
  * ## Attributes & Properties
45124
45226
  *
@@ -45199,6 +45301,8 @@ export type CustomElements = {
45199
45301
  * it.
45200
45302
  * - `previous-year-label`/`previousYearLabel`: Accessible name for the control that moves back a year, in the months.
45201
45303
  * - `previous-years-label`/`previousYearsLabel`: Accessible name for the control that moves back a page, in the years.
45304
+ * - `range-order-message`/`rangeOrderMessage`: The validation message for a range that ends before it starts. `{start}`
45305
+ * is replaced with the start, written as a date in `locale`.
45202
45306
  * - `range-overflow-message`/`rangeOverflowMessage`: The validation message for a date after `max`. `{max}` is replaced with
45203
45307
  * `max`, written as a date in `locale`.
45204
45308
  * - `range-underflow-message`/`rangeUnderflowMessage`: The validation message for a date before `min`. `{min}` is replaced with
@@ -46616,6 +46720,9 @@ export type CustomElements = {
46616
46720
  *
46617
46721
  * - `focusItem() => void`: Moves focus onto the row itself.
46618
46722
  * - `select() => void`: Fires `helix-select` for this row.
46723
+ * - `click() => void`: Presses the row, as `click()` presses a native button: passed to the
46724
+ * control inside, which is what answers a click, so a script's `click()`
46725
+ * chooses the row, or follows its link, once.
46619
46726
  *
46620
46727
  * ## CSS Parts
46621
46728
  *
@@ -47848,6 +47955,19 @@ export type CustomElements = {
47848
47955
  * filter goes. Set `chips` and the field adds, updates, and removes those
47849
47956
  * chips itself, from every `helix-facet` you do not cancel.
47850
47957
  *
47958
+ * **The suggestions you write are an import of their own.** A suggestion is an
47959
+ * option, the Option family's, which the field does not register, so a page
47960
+ * that slots one imports it beside the field:
47961
+ *
47962
+ * ```js
47963
+ * import '@fusion.dev/helix/filter-input'
47964
+ * import '@fusion.dev/helix/option'
47965
+ * ```
47966
+ *
47967
+ * In development, a field holding an option nobody registered says so once the
47968
+ * page has loaded, with the line to add. The options `source` gives are drawn
47969
+ * as this Option too, and need the same import.
47970
+ *
47851
47971
  * ## Attributes & Properties
47852
47972
  *
47853
47973
  * Component attributes and properties that can be applied to the element or by using JavaScript.
@@ -48763,6 +48883,25 @@ export type CustomElements = {
48763
48883
  * `helix-before-change` and tells with `change`, and the `selection` part says
48764
48884
  * how many are selected, in `selection-label`.
48765
48885
  *
48886
+ * **Under `selection-mode` the strip is a grid**, so the selection is state a
48887
+ * reader is told rather than words alone: each column of the strip is a `row`,
48888
+ * a week with `rows="7"`, and each cell a `gridcell` named by its row in the
48889
+ * table and carrying `aria-selected`. The strip says
48890
+ * `aria-multiselectable` under `multiple` and points at the cell the keys rest
48891
+ * on with `aria-activedescendant`, so a screen reader reads that cell, and the
48892
+ * `live` part stays quiet. Without `selection-mode` nothing is selectable, and
48893
+ * the strip is an application with the readout, as every chart's plot is.
48894
+ *
48895
+ * **Readings are sent as every chart sends them.** `helix-reading-change`
48896
+ * says each move of the reading, by pointer, tap or key, and
48897
+ * `helix-reading-press` a reading clicked, tapped, or pressed with Enter or
48898
+ * Space, each with the row of the table in `index`.
48899
+ *
48900
+ * **Nothing to draw.** A table with no readings shows `empty-text`, "No
48901
+ * readings", under the strip, and `loading` shows `loading-text` there until
48902
+ * readings arrive. The `empty` and `loading` slots take markup in place of
48903
+ * either, as on every chart.
48904
+ *
48766
48905
  * **Keyboard.** The strip is one tab stop once it has cells.
48767
48906
  *
48768
48907
  * | Key | What it does |
@@ -48772,7 +48911,7 @@ export type CustomElements = {
48772
48911
  * | Right, Left | Moves a column on or back, a week with `rows="7"`. On a right-to-left page, Left moves on. |
48773
48912
  * | Home, End | Moves to the first or the last cell. |
48774
48913
  * | Page Down, Page Up | Moves a month on or back where the rows carry dates, and four columns otherwise. |
48775
- * | Enter, Space | Selects the cell, or lets it go, under `selection-mode`. |
48914
+ * | Enter, Space | Presses the cell, which sends `helix-reading-press`, and selects it or lets it go under `selection-mode`. |
48776
48915
  * | Shift with an arrow, Home, End, Page Up or Page Down | Selects every cell from the last one pressed to where the key went, under `selection-mode="multiple"`. |
48777
48916
  * | Escape | Puts the cell's tooltip away. |
48778
48917
  *
@@ -48782,10 +48921,6 @@ export type CustomElements = {
48782
48921
  *
48783
48922
  * - `busiest-label`/`busiestLabel`: The name the `overview` gives the busiest reading, `{busiestLabel}` in
48784
48923
  * `overview-label`.
48785
- * - `empty-text`/`emptyText`: Shown when the table has no readings in it.
48786
- *
48787
- * Never shown while the table cannot be read at all, which is a server render
48788
- * and the hydrating one after it: see `sourceKnown`.
48789
48924
  * - `gap`: Space between cells, in CSS pixels. It is a number for the same reason
48790
48925
  * `min-cell` is.
48791
48926
  * - `min-cell`/`minCell`: The smallest a cell may get before the strip draws fewer of them, in CSS pixels.
@@ -48816,9 +48951,7 @@ export type CustomElements = {
48816
48951
  * calendar heatmap does: a week is a column, so the strip reads along the
48817
48952
  * line in weeks, from the right on a right-to-left page, and top to bottom in
48818
48953
  * days.
48819
- * - `selected-label`/`selectedLabel`: What the readout adds for a selected cell, under `selection-mode`, after
48820
- * where the cell stands: "Day 1: 0 (1 of 14, selected)". Empty adds
48821
- * nothing.
48954
+ * - `selected-label`/`selectedLabel`: What the readout added for a selected cell, under `selection-mode`.
48822
48955
  * - `selection-label`/`selectionLabel`: What the `selection` part says after the selection changes. `{count}` is
48823
48956
  * how many cells are selected, written in the locale, and a language that
48824
48957
  * needs plural forms writes them: `{count, plural, one {# wybrany} few
@@ -48852,6 +48985,16 @@ export type CustomElements = {
48852
48985
  *
48853
48986
  * Set it to start with cells selected. Written by a press or a key under
48854
48987
  * `selection-mode`.
48988
+ * - `empty-text`/`emptyText`: The words shown in place of the drawing when the table has no readings,
48989
+ * and the fallback of the `empty` slot.
48990
+ * - `loading`: Whether the readings are still on their way. The chart shows
48991
+ * `loading-text` in place of an empty drawing until it has readings.
48992
+ *
48993
+ * Reflected, so a stylesheet can treat the chart while it waits. A chart
48994
+ * that already has readings keeps drawing them, so a refresh does not
48995
+ * blank it.
48996
+ * - `loading-text`/`loadingText`: The words shown in place of the drawing while `loading` is set and
48997
+ * there are no readings yet, and the fallback of the `loading` slot.
48855
48998
  * - `for`: The id of the table to read.
48856
48999
  *
48857
49000
  * Names a table in the same tree, so a chart inside another component's
@@ -48964,13 +49107,17 @@ export type CustomElements = {
48964
49107
  *
48965
49108
  * - `change`: Fired once a press or a key has changed which cells are selected.
48966
49109
  * - `helix-before-change`: Fired before a press or a key changes which cells are selected, with the `value` it would leave. Cancelable.
49110
+ * - `helix-reading-change`: The reading shown moved, or was put away: `index` is the row, or `-1` for none, with its `label`, the `series` the keys rest on, and the `pointerType` that moved it.
49111
+ * - `helix-reading-press`: A reading was clicked, tapped, or pressed with Enter or Space, with the same detail as `helix-reading-change`.
48967
49112
  * - `helix-resize`: Fired when the number of cells drawn changes, with the new number.
48968
49113
  *
48969
49114
  * ## Slots
48970
49115
  *
48971
49116
  * Areas where markup can be added to the component.
48972
49117
  *
49118
+ * - `empty`: Content shown under the strip when the table has no readings, such as a link to add the first. Falls back to `empty-text`.
48973
49119
  * - `end`: Below the strip, at the trailing edge: usually the newest date.
49120
+ * - `loading`: Content shown under the strip while `loading` is set and there are no readings yet. Falls back to `loading-text`.
48974
49121
  * - `start`: Below the strip, at the leading edge: usually the oldest date.
48975
49122
  * - `summary`: Below the strip, in the middle: a summary of the range shown.
48976
49123
  *
@@ -49037,12 +49184,15 @@ export type CustomElements = {
49037
49184
  * - `cell`: One reading.
49038
49185
  * - `cell-active`: The cell the pointer or the keys rest on. Set alongside `cell`.
49039
49186
  * - `cell-selected`: A cell that is selected, under `selection-mode`. Set alongside `cell`.
49040
- * - `empty`: Shown when the table has no readings. It stays hidden until the table can be read: on the server and during hydration, there is no document to resolve `for` in.
49187
+ * - `empty`: The words under the strip when the table has no readings: the `empty` slot, falling back to `empty-text`. Not drawn while the table cannot be read yet, on the server and during hydration, there being no document to resolve `for` in.
49041
49188
  * - `end`: The trailing slot's box.
49042
49189
  * - `footer`: The three-slot row under the strip.
49043
49190
  * - `live`: The readout: a polite live region that says the cell the keys moved to. Hide it visually.
49191
+ * - `loading`: The words under the strip while `loading` is set and there are no readings: the `loading` slot, falling back to `loading-text`.
49044
49192
  * - `mark`: The invisible point the tooltip is anchored to.
49045
49193
  * - `overview`: The busiest reading and the total of the readings drawn, written as a sentence for screen readers, which describes the strip. Rendered once there are cells. Hide it visually.
49194
+ * - `plot`: The same element as `strip`, under the name every chart gives the drawing that takes focus.
49195
+ * - `row`: A column of cells, which a grid reads as a row, under `selection-mode`. It draws no box.
49046
49196
  * - `selection`: A polite region that says how many cells are selected after a change, rendered from the first change. Hide it visually.
49047
49197
  * - `start`: The leading slot's box.
49048
49198
  * - `strip`: The grid of cells, which takes focus to be read by key. It is named by the host's `aria-labelledby` or `aria-label`, then by `label`, then by the caption of the table.
@@ -49071,6 +49221,7 @@ export type CustomElements = {
49071
49221
  *
49072
49222
  * - `active`: While a cell is shown, under the pointer or the keys, with its tooltip open.
49073
49223
  * - `empty`: While the `empty` part stands in place of the cells.
49224
+ * - `loading`: While the `loading` part stands in place of the cells.
49074
49225
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
49075
49226
  */
49076
49227
  "helix-headless-heatmap": Partial<
@@ -49277,6 +49428,15 @@ export type CustomElements = {
49277
49428
  *
49278
49429
  * Methods that can be called to access component functionality.
49279
49430
  *
49431
+ * - `click() => void`: Presses the button, as `click()` presses a native one: the command is sent,
49432
+ * the form submits or resets, and `helix-press` says `virtual`.
49433
+ *
49434
+ * **Passed to the inner control, because a click on the host reaches nothing
49435
+ * that acts.** The control in the shadow root is what answers a click, so
49436
+ * `click()` from a script, an automation or a test, dispatched on the host,
49437
+ * submitted nothing and sent no `helix-press`. The control's own click reaches
49438
+ * the host's listeners once, retargeted, as one from a native button does. A
49439
+ * disabled button does nothing, and a pending one refuses the press.
49280
49440
  * - `formAssociatedCallback(form: HTMLFormElement | null) => void`: Called by the browser when the control's form changes: watches the new
49281
49441
  * form's `checkValidity()`, as connecting does for the form it starts in.
49282
49442
  * - `formDisabledCallback(disabled: boolean) => void`: Called by the browser when an ancestor fieldset is disabled or enabled.
@@ -51382,6 +51542,19 @@ export type CustomElements = {
51382
51542
  * filter narrows the list, under `layout="grid"`, or while the list is
51383
51543
  * disabled.
51384
51544
  *
51545
+ * **The options are an import of their own.** An option you write is the Option
51546
+ * family's, which the list does not register, so a page that writes one imports
51547
+ * it beside the list:
51548
+ *
51549
+ * ```js
51550
+ * import '@fusion.dev/helix/listbox'
51551
+ * import '@fusion.dev/helix/option'
51552
+ * ```
51553
+ *
51554
+ * In development, a list holding an option nobody registered says so once the
51555
+ * page has loaded, with the line to add. The options `items` draws are this
51556
+ * Option too, and need the same import.
51557
+ *
51385
51558
  * ## Attributes & Properties
51386
51559
  *
51387
51560
  * Component attributes and properties that can be applied to the element or by using JavaScript.
@@ -51550,7 +51723,8 @@ export type CustomElements = {
51550
51723
  *
51551
51724
  * **The list needs a height to scroll in**: the styled tier's
51552
51725
  * `--listbox-max-block-size`, or a `max-block-size` on `::part(items)` in the
51553
- * headless tier. Import the Option family as well, whose elements are drawn.
51726
+ * headless tier. The options drawn are this tier's Option, which the page
51727
+ * imports, as it imports the options it writes.
51554
51728
  * A server sends the list empty, and the options are drawn once it hydrates. (property only)
51555
51729
  * - `selectedIndex`: Which option is chosen, as an index, or `-1` where none is.
51556
51730
  *
@@ -53320,6 +53494,9 @@ export type CustomElements = {
53320
53494
  * `focus()` above already puts focus on the control inside the row rather than
53321
53495
  * on the row, which is the whole of what moving here means.
53322
53496
  * - `select() => void`: Chooses the row, the same as pressing it.
53497
+ * - `click() => void`: Presses the row, as `click()` presses a native button: passed to the
53498
+ * control inside, which is what answers a click, so a script's `click()`
53499
+ * chooses the row, or follows its link, once.
53323
53500
  *
53324
53501
  * ## CSS Parts
53325
53502
  *
@@ -54156,6 +54333,12 @@ export type CustomElements = {
54156
54333
  * shows no timestamp rather than showing the epoch, which is what parsing an
54157
54334
  * empty string would give.
54158
54335
  * - `default-read`/`defaultRead`: Whether the notification starts as read, used until `read` is set.
54336
+ * - `dismiss-label`/`dismissLabel`: The dismiss control's name, read by screen readers, with `{label}` for the
54337
+ * row's own words.
54338
+ *
54339
+ * One sentence with the words in it, so a translation puts them where its
54340
+ * language does: `registerWords('de', { 'helix-notification': { dismissLabel:
54341
+ * '{label} schließen' } })`.
54159
54342
  * - `locale`: Locale for the timestamp.
54160
54343
  *
54161
54344
  * Empty is the runtime's own.
@@ -54177,16 +54360,6 @@ export type CustomElements = {
54177
54360
  * The unread mark is drawn, so a reader who cannot see it hears this word in
54178
54361
  * its place. Translate it with the rest of your interface.
54179
54362
  * - `dismissible`: Whether the element shows a control that dismisses it.
54180
- * - `dismiss-label`/`dismissLabel`: The dismiss control's label, read by screen readers.
54181
- *
54182
- * `attribute` is spelled out because Lit lowercases a property name to
54183
- * derive one rather than dash-casing it, so this would otherwise be
54184
- * reachable only as `dismisslabel`, which nobody would guess and no linter
54185
- * would catch.
54186
- *
54187
- * A word property: register it for a locale under the host's key. A family
54188
- * that names the control otherwise, such as Tag's `Remove {label}`,
54189
- * declares its own English with `@words` above the override.
54190
54363
  * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
54191
54364
  *
54192
54365
  * **Named `whenSettled` because `settled` is taken four times over**, by
@@ -57760,9 +57933,10 @@ export type CustomElements = {
57760
57933
  *
57761
57934
  * The plot runs left to right in every text direction, as a number line does.
57762
57935
  * The plot, its axes, and the axis names sit in a `plane` part with
57763
- * `dir="ltr"`. The axis names carry `dir="auto"`, so a name in Arabic or Hebrew
57764
- * reads in its own direction. The summary and the tooltip bubble follow the
57765
- * page's direction.
57936
+ * `dir="ltr"`, and the arrow keys follow the drawing: Right moves to the next
57937
+ * point on a right-to-left page too. The axis names carry `dir="auto"`, so a
57938
+ * name in Arabic or Hebrew reads in its own direction. The summary and the
57939
+ * tooltip bubble follow the page's direction.
57766
57940
  *
57767
57941
  * **A tap shows the reading under it**, and keeps it until a tap lands
57768
57942
  * elsewhere. `helix-reading-change` says each move of the reading, by pointer,
@@ -57784,7 +57958,7 @@ export type CustomElements = {
57784
57958
  * | Key | What it does |
57785
57959
  * |---|---|
57786
57960
  * | Tab | Moves focus to the plot and shows the first reading. |
57787
- * | Right, Left | Moves to the next or the previous point, left to right across the plot. On a right-to-left page, Left moves to the next. |
57961
+ * | Right, Left | Moves to the next or the previous point, left to right across the plot, on a right-to-left page too. |
57788
57962
  * | Down, Up | Moves among the series of the point. With one series, moves to the next or the previous point. |
57789
57963
  * | Home, End | Moves to the first or the last point. |
57790
57964
  * | Page Down, Page Up | Moves a tenth of the points on or back. |
@@ -58236,6 +58410,18 @@ export type CustomElements = {
58236
58410
  * Set `autocomplete` to let a browser's autofill choose, as a native `<select>`
58237
58411
  * with the same attribute would.
58238
58412
  *
58413
+ * **The options are an import of their own.** An option is the Option family's,
58414
+ * which the select does not register, so a page that writes one imports it
58415
+ * beside the select:
58416
+ *
58417
+ * ```js
58418
+ * import '@fusion.dev/helix/select'
58419
+ * import '@fusion.dev/helix/option'
58420
+ * ```
58421
+ *
58422
+ * In development, a select holding an option nobody registered says so once the
58423
+ * page has loaded, with the line to add.
58424
+ *
58239
58425
  * ## Attributes & Properties
58240
58426
  *
58241
58427
  * Component attributes and properties that can be applied to the element or by using JavaScript.
@@ -59434,6 +59620,9 @@ export type CustomElements = {
59434
59620
  * - `focus(options?: FocusOptions) => void`: Puts focus on the control inside the item.
59435
59621
  * - `focusItem() => void`: Moves focus to the action. Part of `NavigableItem`, which the shared
59436
59622
  * keyboard controller uses for the arrow keys.
59623
+ * - `click() => void`: Presses the action, as `click()` presses a native button: passed to the
59624
+ * control inside, which is what answers a click, so a script's `click()`
59625
+ * chooses the action and follows its link, once.
59437
59626
  * - `select() => void`: Chooses the action, the same as pressing it.
59438
59627
  *
59439
59628
  * ## CSS Parts
@@ -61757,6 +61946,9 @@ export type CustomElements = {
61757
61946
  * listener refused it, or where the tab is not dismissible or is disabled.
61758
61947
  * The tab stays where it is either way: removing it is yours. Where the tab
61759
61948
  * had focus, focus moves to the tab beside it once you remove it.
61949
+ * - `click() => void`: Presses the tab, as `click()` presses a native button: passed to the
61950
+ * control inside, which is what answers a click, so a script's `click()`
61951
+ * selects the tab, or follows its link, once.
61760
61952
  * - `focusItem() => void`: Moves focus to the item's control, for the set's arrow keys.
61761
61953
  *
61762
61954
  * The set drives the keys and cannot reach the control itself, which is
@@ -69048,6 +69240,15 @@ export type CustomElementsSolidJs = {
69048
69240
  *
69049
69241
  * Methods that can be called to access component functionality.
69050
69242
  *
69243
+ * - `click() => void`: Presses the button, as `click()` presses a native one: the command is sent,
69244
+ * the form submits or resets, and `helix-press` says `virtual`.
69245
+ *
69246
+ * **Passed to the inner control, because a click on the host reaches nothing
69247
+ * that acts.** The control in the shadow root is what answers a click, so
69248
+ * `click()` from a script, an automation or a test, dispatched on the host,
69249
+ * submitted nothing and sent no `helix-press`. The control's own click reaches
69250
+ * the host's listeners once, retargeted, as one from a native button does. A
69251
+ * disabled button does nothing, and a pending one refuses the press.
69051
69252
  * - `formAssociatedCallback(form: HTMLFormElement | null) => void`: Called by the browser when the button's form changes.
69052
69253
  * - `formDisabledCallback(disabled: boolean) => void`: Called by the browser when an ancestor fieldset is disabled or enabled.
69053
69254
  *
@@ -70448,7 +70649,8 @@ export type CustomElementsSolidJs = {
70448
70649
  * The composer clears only when no listener cancels the send, so the text is
70449
70650
  * kept when you cancel a send that failed.
70450
70651
  *
70451
- * **In a form, the draft is the composer's value**, submitted under `name`. A
70652
+ * **In a form, the draft is the composer's value**, submitted under `name`,
70653
+ * and an empty draft submits an empty entry, as a native textarea does. A
70452
70654
  * form reset puts back the `value` the markup declared, and a `<fieldset
70453
70655
  * disabled>` turns the composer off. Sending is still `helix-send`, and it
70454
70656
  * does not submit the form.
@@ -72750,6 +72952,18 @@ export type CustomElementsSolidJs = {
72750
72952
  * framework would re-render over an element the combobox inserted, so add the
72751
72953
  * option in your event handler.
72752
72954
  *
72955
+ * **The options are an import of their own.** An option is the Option family's,
72956
+ * which the combobox does not register, so a page that writes one imports it
72957
+ * beside the combobox:
72958
+ *
72959
+ * ```js
72960
+ * import '@fusion.dev/helix/combobox'
72961
+ * import '@fusion.dev/helix/option'
72962
+ * ```
72963
+ *
72964
+ * In development, a combobox holding an option nobody registered says so once
72965
+ * the page has loaded, with the line to add.
72966
+ *
72753
72967
  * ## Attributes & Properties
72754
72968
  *
72755
72969
  * Component attributes and properties that can be applied to the element or by using JavaScript.
@@ -73185,6 +73399,18 @@ export type CustomElementsSolidJs = {
73185
73399
  * Aria's `Autocomplete` is. The commands are a `listbox` of `option`s. How many commands typing left, the empty text and
73186
73400
  * the loading text are said in a polite live region.
73187
73401
  *
73402
+ * **The commands are an import of their own.** A command is an option, the
73403
+ * Option family's, which the palette does not register, so a page that writes
73404
+ * one imports it beside the palette:
73405
+ *
73406
+ * ```js
73407
+ * import '@fusion.dev/helix/command'
73408
+ * import '@fusion.dev/helix/option'
73409
+ * ```
73410
+ *
73411
+ * In development, a palette holding an option nobody registered says so once
73412
+ * the page has loaded, with the line to add.
73413
+ *
73188
73414
  * ## Attributes & Properties
73189
73415
  *
73190
73416
  * Component attributes and properties that can be applied to the element or by using JavaScript.
@@ -73544,6 +73770,15 @@ export type CustomElementsSolidJs = {
73544
73770
  *
73545
73771
  * Methods that can be called to access component functionality.
73546
73772
  *
73773
+ * - `click() => void`: Presses the button, as `click()` presses a native one: the command is sent,
73774
+ * the form submits or resets, and `helix-press` says `virtual`.
73775
+ *
73776
+ * **Passed to the inner control, because a click on the host reaches nothing
73777
+ * that acts.** The control in the shadow root is what answers a click, so
73778
+ * `click()` from a script, an automation or a test, dispatched on the host,
73779
+ * submitted nothing and sent no `helix-press`. The control's own click reaches
73780
+ * the host's listeners once, retargeted, as one from a native button does. A
73781
+ * disabled button does nothing, and a pending one refuses the press.
73547
73782
  * - `formAssociatedCallback(form: HTMLFormElement | null) => void`: Called by the browser when the control's form changes: watches the new
73548
73783
  * form's `checkValidity()`, as connecting does for the form it starts in.
73549
73784
  * - `formDisabledCallback(disabled: boolean) => void`: Called by the browser when an ancestor fieldset is disabled or enabled.
@@ -73755,6 +73990,18 @@ export type CustomElementsSolidJs = {
73755
73990
  * Written on `DataTable`, `columns` has no effect, so watch for it when you
73756
73991
  * move a table from `Table` to `DataTable`.
73757
73992
  *
73993
+ * **The columns are an import of their own.** A column is the Table family's
73994
+ * `TableColumn`, which the data table does not register, so a page that writes
73995
+ * one imports the Table entry beside the data table:
73996
+ *
73997
+ * ```js
73998
+ * import '@fusion.dev/helix/data-table'
73999
+ * import '@fusion.dev/helix/table'
74000
+ * ```
74001
+ *
74002
+ * In development, a data table holding a column nobody registered says so once
74003
+ * the page has loaded, with the line to add.
74004
+ *
73758
74005
  * ## Attributes & Properties
73759
74006
  *
73760
74007
  * Component attributes and properties that can be applied to the element or by using JavaScript.
@@ -74156,6 +74403,8 @@ export type CustomElementsSolidJs = {
74156
74403
  * digits or the arrow keys. Alt+Down opens the calendar from a segment. A
74157
74404
  * `range` is two rows with a dash between them, the start and the end, as
74158
74405
  * React Aria's DateRangePicker draws them, and `multiple` keeps the text.
74406
+ * A range whose end is before its start reports `rangeUnderflow`, as Date
74407
+ * Picker does, with `range-order-message`.
74159
74408
  *
74160
74409
  * Text that is not a date gives the form an empty value, as a native date
74161
74410
  * field does, and `value` keeps the text so it can be corrected.
@@ -74276,6 +74525,8 @@ export type CustomElementsSolidJs = {
74276
74525
  * **Every sentence a control raises in the browser's bubble is a property**,
74277
74526
  * so a form in another language speaks it. Unset is the sentence registered
74278
74527
  * for the page's language, then the English.
74528
+ * - `range-order-message`/`rangeOrderMessage`: The message shown when a range ends before it starts. `{start}` is
74529
+ * replaced with the start, written the way the field writes dates.
74279
74530
  * - `range-overflow-message`/`rangeOverflowMessage`: The message shown when a date is after `max`. `{max}` is replaced with
74280
74531
  * `max`, written the way the field writes dates.
74281
74532
  * - `range-underflow-message`/`rangeUnderflowMessage`: The message shown when a date is before `min`. `{min}` is replaced with
@@ -74683,7 +74934,8 @@ export type CustomElementsSolidJs = {
74683
74934
  * when Previous or Next is pressed. Neither moves past `min` or `max`, and the
74684
74935
  * keys stop at them too. A value outside the bounds, on a barred day, or off
74685
74936
  * `step` reports `rangeUnderflow`, `rangeOverflow`, `badInput` or
74686
- * `stepMismatch`, so a form does not submit it.
74937
+ * `stepMismatch`, so a form does not submit it. A range set from a script
74938
+ * whose end is before its start reports `rangeUnderflow` as well.
74687
74939
  *
74688
74940
  * ## Attributes & Properties
74689
74941
  *
@@ -74764,6 +75016,8 @@ export type CustomElementsSolidJs = {
74764
75016
  * it.
74765
75017
  * - `previous-year-label`/`previousYearLabel`: Accessible name for the control that moves back a year, in the months.
74766
75018
  * - `previous-years-label`/`previousYearsLabel`: Accessible name for the control that moves back a page, in the years.
75019
+ * - `range-order-message`/`rangeOrderMessage`: The validation message for a range that ends before it starts. `{start}`
75020
+ * is replaced with the start, written as a date in `locale`.
74767
75021
  * - `range-overflow-message`/`rangeOverflowMessage`: The validation message for a date after `max`. `{max}` is replaced with
74768
75022
  * `max`, written as a date in `locale`.
74769
75023
  * - `range-underflow-message`/`rangeUnderflowMessage`: The validation message for a date before `min`. `{min}` is replaced with
@@ -76194,6 +76448,9 @@ export type CustomElementsSolidJs = {
76194
76448
  *
76195
76449
  * - `focusItem() => void`: Moves focus onto the row itself.
76196
76450
  * - `select() => void`: Fires `helix-select` for this row.
76451
+ * - `click() => void`: Presses the row, as `click()` presses a native button: passed to the
76452
+ * control inside, which is what answers a click, so a script's `click()`
76453
+ * chooses the row, or follows its link, once.
76197
76454
  *
76198
76455
  * ## CSS Parts
76199
76456
  *
@@ -77440,6 +77697,19 @@ export type CustomElementsSolidJs = {
77440
77697
  * filter goes. Set `chips` and the field adds, updates, and removes those
77441
77698
  * chips itself, from every `helix-facet` you do not cancel.
77442
77699
  *
77700
+ * **The suggestions you write are an import of their own.** A suggestion is an
77701
+ * option, the Option family's, which the field does not register, so a page
77702
+ * that slots one imports it beside the field:
77703
+ *
77704
+ * ```js
77705
+ * import '@fusion.dev/helix/filter-input'
77706
+ * import '@fusion.dev/helix/option'
77707
+ * ```
77708
+ *
77709
+ * In development, a field holding an option nobody registered says so once the
77710
+ * page has loaded, with the line to add. The options `source` gives are drawn
77711
+ * as this Option too, and need the same import.
77712
+ *
77443
77713
  * ## Attributes & Properties
77444
77714
  *
77445
77715
  * Component attributes and properties that can be applied to the element or by using JavaScript.
@@ -78360,6 +78630,25 @@ export type CustomElementsSolidJs = {
78360
78630
  * `helix-before-change` and tells with `change`, and the `selection` part says
78361
78631
  * how many are selected, in `selection-label`.
78362
78632
  *
78633
+ * **Under `selection-mode` the strip is a grid**, so the selection is state a
78634
+ * reader is told rather than words alone: each column of the strip is a `row`,
78635
+ * a week with `rows="7"`, and each cell a `gridcell` named by its row in the
78636
+ * table and carrying `aria-selected`. The strip says
78637
+ * `aria-multiselectable` under `multiple` and points at the cell the keys rest
78638
+ * on with `aria-activedescendant`, so a screen reader reads that cell, and the
78639
+ * `live` part stays quiet. Without `selection-mode` nothing is selectable, and
78640
+ * the strip is an application with the readout, as every chart's plot is.
78641
+ *
78642
+ * **Readings are sent as every chart sends them.** `helix-reading-change`
78643
+ * says each move of the reading, by pointer, tap or key, and
78644
+ * `helix-reading-press` a reading clicked, tapped, or pressed with Enter or
78645
+ * Space, each with the row of the table in `index`.
78646
+ *
78647
+ * **Nothing to draw.** A table with no readings shows `empty-text`, "No
78648
+ * readings", under the strip, and `loading` shows `loading-text` there until
78649
+ * readings arrive. The `empty` and `loading` slots take markup in place of
78650
+ * either, as on every chart.
78651
+ *
78363
78652
  * **Keyboard.** The strip is one tab stop once it has cells.
78364
78653
  *
78365
78654
  * | Key | What it does |
@@ -78369,7 +78658,7 @@ export type CustomElementsSolidJs = {
78369
78658
  * | Right, Left | Moves a column on or back, a week with `rows="7"`. On a right-to-left page, Left moves on. |
78370
78659
  * | Home, End | Moves to the first or the last cell. |
78371
78660
  * | Page Down, Page Up | Moves a month on or back where the rows carry dates, and four columns otherwise. |
78372
- * | Enter, Space | Selects the cell, or lets it go, under `selection-mode`. |
78661
+ * | Enter, Space | Presses the cell, which sends `helix-reading-press`, and selects it or lets it go under `selection-mode`. |
78373
78662
  * | Shift with an arrow, Home, End, Page Up or Page Down | Selects every cell from the last one pressed to where the key went, under `selection-mode="multiple"`. |
78374
78663
  * | Escape | Puts the cell's tooltip away. |
78375
78664
  *
@@ -78379,10 +78668,6 @@ export type CustomElementsSolidJs = {
78379
78668
  *
78380
78669
  * - `busiest-label`/`busiestLabel`: The name the `overview` gives the busiest reading, `{busiestLabel}` in
78381
78670
  * `overview-label`.
78382
- * - `empty-text`/`emptyText`: Shown when the table has no readings in it.
78383
- *
78384
- * Never shown while the table cannot be read at all, which is a server render
78385
- * and the hydrating one after it: see `sourceKnown`.
78386
78671
  * - `gap`: Space between cells, in CSS pixels. It is a number for the same reason
78387
78672
  * `min-cell` is.
78388
78673
  * - `min-cell`/`minCell`: The smallest a cell may get before the strip draws fewer of them, in CSS pixels.
@@ -78413,9 +78698,7 @@ export type CustomElementsSolidJs = {
78413
78698
  * calendar heatmap does: a week is a column, so the strip reads along the
78414
78699
  * line in weeks, from the right on a right-to-left page, and top to bottom in
78415
78700
  * days.
78416
- * - `selected-label`/`selectedLabel`: What the readout adds for a selected cell, under `selection-mode`, after
78417
- * where the cell stands: "Day 1: 0 (1 of 14, selected)". Empty adds
78418
- * nothing.
78701
+ * - `selected-label`/`selectedLabel`: What the readout added for a selected cell, under `selection-mode`.
78419
78702
  * - `selection-label`/`selectionLabel`: What the `selection` part says after the selection changes. `{count}` is
78420
78703
  * how many cells are selected, written in the locale, and a language that
78421
78704
  * needs plural forms writes them: `{count, plural, one {# wybrany} few
@@ -78449,6 +78732,16 @@ export type CustomElementsSolidJs = {
78449
78732
  *
78450
78733
  * Set it to start with cells selected. Written by a press or a key under
78451
78734
  * `selection-mode`.
78735
+ * - `empty-text`/`emptyText`: The words shown in place of the drawing when the table has no readings,
78736
+ * and the fallback of the `empty` slot.
78737
+ * - `loading`: Whether the readings are still on their way. The chart shows
78738
+ * `loading-text` in place of an empty drawing until it has readings.
78739
+ *
78740
+ * Reflected, so a stylesheet can treat the chart while it waits. A chart
78741
+ * that already has readings keeps drawing them, so a refresh does not
78742
+ * blank it.
78743
+ * - `loading-text`/`loadingText`: The words shown in place of the drawing while `loading` is set and
78744
+ * there are no readings yet, and the fallback of the `loading` slot.
78452
78745
  * - `for`: The id of the table to read.
78453
78746
  *
78454
78747
  * Names a table in the same tree, so a chart inside another component's
@@ -78561,13 +78854,17 @@ export type CustomElementsSolidJs = {
78561
78854
  *
78562
78855
  * - `change`: Fired once a press or a key has changed which cells are selected.
78563
78856
  * - `helix-before-change`: Fired before a press or a key changes which cells are selected, with the `value` it would leave. Cancelable.
78857
+ * - `helix-reading-change`: The reading shown moved, or was put away: `index` is the row, or `-1` for none, with its `label`, the `series` the keys rest on, and the `pointerType` that moved it.
78858
+ * - `helix-reading-press`: A reading was clicked, tapped, or pressed with Enter or Space, with the same detail as `helix-reading-change`.
78564
78859
  * - `helix-resize`: Fired when the number of cells drawn changes, with the new number.
78565
78860
  *
78566
78861
  * ## Slots
78567
78862
  *
78568
78863
  * Areas where markup can be added to the component.
78569
78864
  *
78865
+ * - `empty`: Content shown under the strip when the table has no readings, such as a link to add the first. Falls back to `empty-text`.
78570
78866
  * - `end`: Below the strip, at the trailing edge: usually the newest date.
78867
+ * - `loading`: Content shown under the strip while `loading` is set and there are no readings yet. Falls back to `loading-text`.
78571
78868
  * - `start`: Below the strip, at the leading edge: usually the oldest date.
78572
78869
  * - `summary`: Below the strip, in the middle: a summary of the range shown.
78573
78870
  *
@@ -78634,12 +78931,15 @@ export type CustomElementsSolidJs = {
78634
78931
  * - `cell`: One reading.
78635
78932
  * - `cell-active`: The cell the pointer or the keys rest on. Set alongside `cell`.
78636
78933
  * - `cell-selected`: A cell that is selected, under `selection-mode`. Set alongside `cell`.
78637
- * - `empty`: Shown when the table has no readings. It stays hidden until the table can be read: on the server and during hydration, there is no document to resolve `for` in.
78934
+ * - `empty`: The words under the strip when the table has no readings: the `empty` slot, falling back to `empty-text`. Not drawn while the table cannot be read yet, on the server and during hydration, there being no document to resolve `for` in.
78638
78935
  * - `end`: The trailing slot's box.
78639
78936
  * - `footer`: The three-slot row under the strip.
78640
78937
  * - `live`: The readout: a polite live region that says the cell the keys moved to. Hide it visually.
78938
+ * - `loading`: The words under the strip while `loading` is set and there are no readings: the `loading` slot, falling back to `loading-text`.
78641
78939
  * - `mark`: The invisible point the tooltip is anchored to.
78642
78940
  * - `overview`: The busiest reading and the total of the readings drawn, written as a sentence for screen readers, which describes the strip. Rendered once there are cells. Hide it visually.
78941
+ * - `plot`: The same element as `strip`, under the name every chart gives the drawing that takes focus.
78942
+ * - `row`: A column of cells, which a grid reads as a row, under `selection-mode`. It draws no box.
78643
78943
  * - `selection`: A polite region that says how many cells are selected after a change, rendered from the first change. Hide it visually.
78644
78944
  * - `start`: The leading slot's box.
78645
78945
  * - `strip`: The grid of cells, which takes focus to be read by key. It is named by the host's `aria-labelledby` or `aria-label`, then by `label`, then by the caption of the table.
@@ -78668,6 +78968,7 @@ export type CustomElementsSolidJs = {
78668
78968
  *
78669
78969
  * - `active`: While a cell is shown, under the pointer or the keys, with its tooltip open.
78670
78970
  * - `empty`: While the `empty` part stands in place of the cells.
78971
+ * - `loading`: While the `loading` part stands in place of the cells.
78671
78972
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
78672
78973
  */
78673
78974
  "helix-headless-heatmap": Partial<
@@ -78877,6 +79178,15 @@ export type CustomElementsSolidJs = {
78877
79178
  *
78878
79179
  * Methods that can be called to access component functionality.
78879
79180
  *
79181
+ * - `click() => void`: Presses the button, as `click()` presses a native one: the command is sent,
79182
+ * the form submits or resets, and `helix-press` says `virtual`.
79183
+ *
79184
+ * **Passed to the inner control, because a click on the host reaches nothing
79185
+ * that acts.** The control in the shadow root is what answers a click, so
79186
+ * `click()` from a script, an automation or a test, dispatched on the host,
79187
+ * submitted nothing and sent no `helix-press`. The control's own click reaches
79188
+ * the host's listeners once, retargeted, as one from a native button does. A
79189
+ * disabled button does nothing, and a pending one refuses the press.
78880
79190
  * - `formAssociatedCallback(form: HTMLFormElement | null) => void`: Called by the browser when the control's form changes: watches the new
78881
79191
  * form's `checkValidity()`, as connecting does for the form it starts in.
78882
79192
  * - `formDisabledCallback(disabled: boolean) => void`: Called by the browser when an ancestor fieldset is disabled or enabled.
@@ -81011,6 +81321,19 @@ export type CustomElementsSolidJs = {
81011
81321
  * filter narrows the list, under `layout="grid"`, or while the list is
81012
81322
  * disabled.
81013
81323
  *
81324
+ * **The options are an import of their own.** An option you write is the Option
81325
+ * family's, which the list does not register, so a page that writes one imports
81326
+ * it beside the list:
81327
+ *
81328
+ * ```js
81329
+ * import '@fusion.dev/helix/listbox'
81330
+ * import '@fusion.dev/helix/option'
81331
+ * ```
81332
+ *
81333
+ * In development, a list holding an option nobody registered says so once the
81334
+ * page has loaded, with the line to add. The options `items` draws are this
81335
+ * Option too, and need the same import.
81336
+ *
81014
81337
  * ## Attributes & Properties
81015
81338
  *
81016
81339
  * Component attributes and properties that can be applied to the element or by using JavaScript.
@@ -81179,7 +81502,8 @@ export type CustomElementsSolidJs = {
81179
81502
  *
81180
81503
  * **The list needs a height to scroll in**: the styled tier's
81181
81504
  * `--listbox-max-block-size`, or a `max-block-size` on `::part(items)` in the
81182
- * headless tier. Import the Option family as well, whose elements are drawn.
81505
+ * headless tier. The options drawn are this tier's Option, which the page
81506
+ * imports, as it imports the options it writes.
81183
81507
  * A server sends the list empty, and the options are drawn once it hydrates. (property only)
81184
81508
  * - `selectedIndex`: Which option is chosen, as an index, or `-1` where none is.
81185
81509
  *
@@ -82981,6 +83305,9 @@ export type CustomElementsSolidJs = {
82981
83305
  * `focus()` above already puts focus on the control inside the row rather than
82982
83306
  * on the row, which is the whole of what moving here means.
82983
83307
  * - `select() => void`: Chooses the row, the same as pressing it.
83308
+ * - `click() => void`: Presses the row, as `click()` presses a native button: passed to the
83309
+ * control inside, which is what answers a click, so a script's `click()`
83310
+ * chooses the row, or follows its link, once.
82984
83311
  *
82985
83312
  * ## CSS Parts
82986
83313
  *
@@ -83829,6 +84156,12 @@ export type CustomElementsSolidJs = {
83829
84156
  * shows no timestamp rather than showing the epoch, which is what parsing an
83830
84157
  * empty string would give.
83831
84158
  * - `default-read`/`defaultRead`: Whether the notification starts as read, used until `read` is set.
84159
+ * - `dismiss-label`/`dismissLabel`: The dismiss control's name, read by screen readers, with `{label}` for the
84160
+ * row's own words.
84161
+ *
84162
+ * One sentence with the words in it, so a translation puts them where its
84163
+ * language does: `registerWords('de', { 'helix-notification': { dismissLabel:
84164
+ * '{label} schließen' } })`.
83832
84165
  * - `locale`: Locale for the timestamp.
83833
84166
  *
83834
84167
  * Empty is the runtime's own.
@@ -83850,16 +84183,6 @@ export type CustomElementsSolidJs = {
83850
84183
  * The unread mark is drawn, so a reader who cannot see it hears this word in
83851
84184
  * its place. Translate it with the rest of your interface.
83852
84185
  * - `dismissible`: Whether the element shows a control that dismisses it.
83853
- * - `dismiss-label`/`dismissLabel`: The dismiss control's label, read by screen readers.
83854
- *
83855
- * `attribute` is spelled out because Lit lowercases a property name to
83856
- * derive one rather than dash-casing it, so this would otherwise be
83857
- * reachable only as `dismisslabel`, which nobody would guess and no linter
83858
- * would catch.
83859
- *
83860
- * A word property: register it for a locale under the host's key. A family
83861
- * that names the control otherwise, such as Tag's `Remove {label}`,
83862
- * declares its own English with `@words` above the override.
83863
84186
  * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
83864
84187
  *
83865
84188
  * **Named `whenSettled` because `settled` is taken four times over**, by
@@ -87470,9 +87793,10 @@ export type CustomElementsSolidJs = {
87470
87793
  *
87471
87794
  * The plot runs left to right in every text direction, as a number line does.
87472
87795
  * The plot, its axes, and the axis names sit in a `plane` part with
87473
- * `dir="ltr"`. The axis names carry `dir="auto"`, so a name in Arabic or Hebrew
87474
- * reads in its own direction. The summary and the tooltip bubble follow the
87475
- * page's direction.
87796
+ * `dir="ltr"`, and the arrow keys follow the drawing: Right moves to the next
87797
+ * point on a right-to-left page too. The axis names carry `dir="auto"`, so a
87798
+ * name in Arabic or Hebrew reads in its own direction. The summary and the
87799
+ * tooltip bubble follow the page's direction.
87476
87800
  *
87477
87801
  * **A tap shows the reading under it**, and keeps it until a tap lands
87478
87802
  * elsewhere. `helix-reading-change` says each move of the reading, by pointer,
@@ -87494,7 +87818,7 @@ export type CustomElementsSolidJs = {
87494
87818
  * | Key | What it does |
87495
87819
  * |---|---|
87496
87820
  * | Tab | Moves focus to the plot and shows the first reading. |
87497
- * | Right, Left | Moves to the next or the previous point, left to right across the plot. On a right-to-left page, Left moves to the next. |
87821
+ * | Right, Left | Moves to the next or the previous point, left to right across the plot, on a right-to-left page too. |
87498
87822
  * | Down, Up | Moves among the series of the point. With one series, moves to the next or the previous point. |
87499
87823
  * | Home, End | Moves to the first or the last point. |
87500
87824
  * | Page Down, Page Up | Moves a tenth of the points on or back. |
@@ -87948,6 +88272,18 @@ export type CustomElementsSolidJs = {
87948
88272
  * Set `autocomplete` to let a browser's autofill choose, as a native `<select>`
87949
88273
  * with the same attribute would.
87950
88274
  *
88275
+ * **The options are an import of their own.** An option is the Option family's,
88276
+ * which the select does not register, so a page that writes one imports it
88277
+ * beside the select:
88278
+ *
88279
+ * ```js
88280
+ * import '@fusion.dev/helix/select'
88281
+ * import '@fusion.dev/helix/option'
88282
+ * ```
88283
+ *
88284
+ * In development, a select holding an option nobody registered says so once the
88285
+ * page has loaded, with the line to add.
88286
+ *
87951
88287
  * ## Attributes & Properties
87952
88288
  *
87953
88289
  * Component attributes and properties that can be applied to the element or by using JavaScript.
@@ -89162,6 +89498,9 @@ export type CustomElementsSolidJs = {
89162
89498
  * - `focus(options?: FocusOptions) => void`: Puts focus on the control inside the item.
89163
89499
  * - `focusItem() => void`: Moves focus to the action. Part of `NavigableItem`, which the shared
89164
89500
  * keyboard controller uses for the arrow keys.
89501
+ * - `click() => void`: Presses the action, as `click()` presses a native button: passed to the
89502
+ * control inside, which is what answers a click, so a script's `click()`
89503
+ * chooses the action and follows its link, once.
89165
89504
  * - `select() => void`: Chooses the action, the same as pressing it.
89166
89505
  *
89167
89506
  * ## CSS Parts
@@ -91523,6 +91862,9 @@ export type CustomElementsSolidJs = {
91523
91862
  * listener refused it, or where the tab is not dismissible or is disabled.
91524
91863
  * The tab stays where it is either way: removing it is yours. Where the tab
91525
91864
  * had focus, focus moves to the tab beside it once you remove it.
91865
+ * - `click() => void`: Presses the tab, as `click()` presses a native button: passed to the
91866
+ * control inside, which is what answers a click, so a script's `click()`
91867
+ * selects the tab, or follows its link, once.
91526
91868
  * - `focusItem() => void`: Moves focus to the item's control, for the set's arrow keys.
91527
91869
  *
91528
91870
  * The set drives the keys and cannot reach the control itself, which is