@fusion.dev/helix-headless 0.177.2 → 0.179.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.
package/types/jsx.d.ts CHANGED
@@ -14098,6 +14098,14 @@ an icon. */
14098
14098
  /** The name of the clear button, read by screen readers. The button shows only
14099
14099
  an icon. */
14100
14100
  clearLabel?: (HelixHeadlessFilterInput["clearLabel"]) | undefined;
14101
+ /** How long typing rests before `source` is asked, in milliseconds. A delay
14102
+ sends one request for a word in place of one for each letter. The arrow
14103
+ keys and Enter ask at once. `0` asks on every keystroke. */
14104
+ "filter-delay"?: (HelixHeadlessFilterInput["filterDelay"] | `${number}`) | undefined;
14105
+ /** How long typing rests before `source` is asked, in milliseconds. A delay
14106
+ sends one request for a word in place of one for each letter. The arrow
14107
+ keys and Enter ask at once. `0` asks on every keystroke. */
14108
+ filterDelay?: (HelixHeadlessFilterInput["filterDelay"]) | undefined;
14101
14109
  /** Whether the panel narrows itself to the suggestions that hold the term
14102
14110
  being typed, as React Aria's Autocomplete filters. Off, the panel shows
14103
14111
  what you slot and you narrow it. */
@@ -14291,6 +14299,13 @@ imperatively later, and nothing is hydrating by then.
14291
14299
 
14292
14300
  Here rather than on each control. */
14293
14301
  name?: (HelixHeadlessFilterInput["name"]) | undefined;
14302
+ /** Where the suggestions come from: a function given the term at the caret,
14303
+ the field it is a value of, the whole text, and an `AbortSignal`, which
14304
+ returns the suggestions or a promise of them. Each is a string, or a
14305
+ `value` with a `label` and `disabled`. The field draws them as options in
14306
+ the panel, beside any you slot. A property only, there being no way to
14307
+ write a function in markup. See the class description. */
14308
+ source?: (HelixHeadlessFilterInput["source"]) | undefined;
14294
14309
 
14295
14310
  /** Fired from the input when the user finishes editing the text. */
14296
14311
  onchange?: ((e: HelixHeadlessFilterInputElementEvent) => void) | undefined;
@@ -14312,7 +14327,7 @@ Here rather than on each control. */
14312
14327
  ) => void) | undefined;
14313
14328
  /** Fired when a filter changes, whether it was typed, picked, or removed. Cancelable: call `preventDefault()` to leave the text and the chip as they were. */
14314
14329
  "onhelix-facet"?: ((e: HelixHeadlessFilterInputHelixFacetElementEvent) => void) | undefined;
14315
- /** Fired by an option in `suggestions` when it is chosen, and bubbles out of the field. Cancelable: call `preventDefault()` to stop other listeners acting on it. The field takes no action on a choice; you decide what it does. */
14330
+ /** Fired by an option in `suggestions` when it is chosen, and bubbles out of the field. Cancelable: call `preventDefault()` to stop other listeners acting on it. The field takes no action on an option you slotted, and you decide what it does. A suggestion from `source` is written over the term at the caret unless you cancel it. */
14316
14331
  "onhelix-select"?: ((
14317
14332
  e: HelixHeadlessFilterInputHelixSelectElementEvent,
14318
14333
  ) => void) | undefined;
@@ -14348,6 +14363,14 @@ an icon. */
14348
14363
  /** The name of the clear button, read by screen readers. The button shows only
14349
14364
  an icon. */
14350
14365
  "prop:clearLabel"?: (HelixHeadlessFilterInput["clearLabel"]) | undefined;
14366
+ /** How long typing rests before `source` is asked, in milliseconds. A delay
14367
+ sends one request for a word in place of one for each letter. The arrow
14368
+ keys and Enter ask at once. `0` asks on every keystroke. */
14369
+ "attr:filter-delay"?: (HelixHeadlessFilterInput["filterDelay"] | `${number}`) | undefined;
14370
+ /** How long typing rests before `source` is asked, in milliseconds. A delay
14371
+ sends one request for a word in place of one for each letter. The arrow
14372
+ keys and Enter ask at once. `0` asks on every keystroke. */
14373
+ "prop:filterDelay"?: (HelixHeadlessFilterInput["filterDelay"]) | undefined;
14351
14374
  /** Whether the panel narrows itself to the suggestions that hold the term
14352
14375
  being typed, as React Aria's Autocomplete filters. Off, the panel shows
14353
14376
  what you slot and you narrow it. */
@@ -14541,6 +14564,13 @@ imperatively later, and nothing is hydrating by then.
14541
14564
 
14542
14565
  Here rather than on each control. */
14543
14566
  "prop:name"?: (HelixHeadlessFilterInput["name"]) | undefined;
14567
+ /** Where the suggestions come from: a function given the term at the caret,
14568
+ the field it is a value of, the whole text, and an `AbortSignal`, which
14569
+ returns the suggestions or a promise of them. Each is a string, or a
14570
+ `value` with a `label` and `disabled`. The field draws them as options in
14571
+ the panel, beside any you slot. A property only, there being no way to
14572
+ write a function in markup. See the class description. */
14573
+ "prop:source"?: (HelixHeadlessFilterInput["source"]) | undefined;
14544
14574
  /** Fired from the input when the user finishes editing the text. */
14545
14575
  "on:change"?: ((e: HelixHeadlessFilterInputElementEvent) => void) | undefined;
14546
14576
  /** Fired as the text changes. Cancelable: call `preventDefault()` to keep the current text. */
@@ -14563,7 +14593,7 @@ Here rather than on each control. */
14563
14593
  "on:helix-facet"?: ((
14564
14594
  e: HelixHeadlessFilterInputHelixFacetElementEvent,
14565
14595
  ) => void) | undefined;
14566
- /** Fired by an option in `suggestions` when it is chosen, and bubbles out of the field. Cancelable: call `preventDefault()` to stop other listeners acting on it. The field takes no action on a choice; you decide what it does. */
14596
+ /** Fired by an option in `suggestions` when it is chosen, and bubbles out of the field. Cancelable: call `preventDefault()` to stop other listeners acting on it. The field takes no action on an option you slotted, and you decide what it does. A suggestion from `source` is written over the term at the caret unless you cancel it. */
14567
14597
  "on:helix-select"?: ((
14568
14598
  e: HelixHeadlessFilterInputHelixSelectElementEvent,
14569
14599
  ) => void) | undefined;
@@ -14950,6 +14980,14 @@ or hides its notes. Drawn where the notes have two groups or more. */
14950
14980
  "legend-label"?: (HelixHeadlessGraph["legendLabel"]) | undefined;
14951
14981
  /** The legend's name, read by screen readers. */
14952
14982
  legendLabel?: (HelixHeadlessGraph["legendLabel"]) | undefined;
14983
+ /** What screen readers hear when a walk along the links reaches a note that
14984
+ has no link to follow, or goes back to a note: `{note}` for its name and
14985
+ `{count}` for how many notes the list holds that it links to or from. */
14986
+ "link-count-label"?: (HelixHeadlessGraph["linkCountLabel"]) | undefined;
14987
+ /** What screen readers hear when a walk along the links reaches a note that
14988
+ has no link to follow, or goes back to a note: `{note}` for its name and
14989
+ `{count}` for how many notes the list holds that it links to or from. */
14990
+ linkCountLabel?: (HelixHeadlessGraph["linkCountLabel"]) | undefined;
14953
14991
  /** How a note linked both to and from the selected one is described, with `{note}`. */
14954
14992
  "linked-both-label"?: (HelixHeadlessGraph["linkedBothLabel"]) | undefined;
14955
14993
  /** How a note linked both to and from the selected one is described, with `{note}`. */
@@ -15029,6 +15067,16 @@ the list then holds, written with `count-label`. */
15029
15067
  "using-label"?: (HelixHeadlessGraph["usingLabel"]) | undefined;
15030
15068
  /** The line shown while the graph, with `gestures="activate"`, has the gestures. */
15031
15069
  usingLabel?: (HelixHeadlessGraph["usingLabel"]) | undefined;
15070
+ /** What screen readers hear when a walk along the links moves to a note:
15071
+ `{note}` for its name, `{relation}` for how it stands to the note the
15072
+ step came from, such as "Linked from Roadmap", and `{index}` and `{count}`
15073
+ for its place among that note's links. */
15074
+ "walk-label"?: (HelixHeadlessGraph["walkLabel"]) | undefined;
15075
+ /** What screen readers hear when a walk along the links moves to a note:
15076
+ `{note}` for its name, `{relation}` for how it stands to the note the
15077
+ step came from, such as "Linked from Roadmap", and `{index}` and `{count}`
15078
+ for its place among that note's links. */
15079
+ walkLabel?: (HelixHeadlessGraph["walkLabel"]) | undefined;
15032
15080
  /** The hint shown when the wheel scrolls past the graph with
15033
15081
  `gestures="cooperative"`. `{key}` is ⌘ on a Mac and Ctrl elsewhere. */
15034
15082
  "wheel-hint-label"?: (HelixHeadlessGraph["wheelHintLabel"]) | undefined;
@@ -15227,7 +15275,7 @@ markup. */
15227
15275
  "onhelix-graph-pan"?: ((
15228
15276
  e: HelixHeadlessGraphHelixGraphPanElementEvent,
15229
15277
  ) => void) | undefined;
15230
- /** The notes, the links, the selection, the depth or the gestures changed. Used by `connectGraph`; pages do not need to listen for it. */
15278
+ /** The notes, the links, the selection, the depth, the note the keys are on, or the gestures changed. Used by `connectGraph`; pages do not need to listen for it. */
15231
15279
  "onhelix-graph-part-change"?: ((
15232
15280
  e: HelixHeadlessGraphHelixGraphPartChangeElementEvent,
15233
15281
  ) => void) | undefined;
@@ -15289,6 +15337,14 @@ or hides its notes. Drawn where the notes have two groups or more. */
15289
15337
  "attr:legend-label"?: (HelixHeadlessGraph["legendLabel"]) | undefined;
15290
15338
  /** The legend's name, read by screen readers. */
15291
15339
  "prop:legendLabel"?: (HelixHeadlessGraph["legendLabel"]) | undefined;
15340
+ /** What screen readers hear when a walk along the links reaches a note that
15341
+ has no link to follow, or goes back to a note: `{note}` for its name and
15342
+ `{count}` for how many notes the list holds that it links to or from. */
15343
+ "attr:link-count-label"?: (HelixHeadlessGraph["linkCountLabel"]) | undefined;
15344
+ /** What screen readers hear when a walk along the links reaches a note that
15345
+ has no link to follow, or goes back to a note: `{note}` for its name and
15346
+ `{count}` for how many notes the list holds that it links to or from. */
15347
+ "prop:linkCountLabel"?: (HelixHeadlessGraph["linkCountLabel"]) | undefined;
15292
15348
  /** How a note linked both to and from the selected one is described, with `{note}`. */
15293
15349
  "attr:linked-both-label"?: (HelixHeadlessGraph["linkedBothLabel"]) | undefined;
15294
15350
  /** How a note linked both to and from the selected one is described, with `{note}`. */
@@ -15368,6 +15424,16 @@ the list then holds, written with `count-label`. */
15368
15424
  "attr:using-label"?: (HelixHeadlessGraph["usingLabel"]) | undefined;
15369
15425
  /** The line shown while the graph, with `gestures="activate"`, has the gestures. */
15370
15426
  "prop:usingLabel"?: (HelixHeadlessGraph["usingLabel"]) | undefined;
15427
+ /** What screen readers hear when a walk along the links moves to a note:
15428
+ `{note}` for its name, `{relation}` for how it stands to the note the
15429
+ step came from, such as "Linked from Roadmap", and `{index}` and `{count}`
15430
+ for its place among that note's links. */
15431
+ "attr:walk-label"?: (HelixHeadlessGraph["walkLabel"]) | undefined;
15432
+ /** What screen readers hear when a walk along the links moves to a note:
15433
+ `{note}` for its name, `{relation}` for how it stands to the note the
15434
+ step came from, such as "Linked from Roadmap", and `{index}` and `{count}`
15435
+ for its place among that note's links. */
15436
+ "prop:walkLabel"?: (HelixHeadlessGraph["walkLabel"]) | undefined;
15371
15437
  /** The hint shown when the wheel scrolls past the graph with
15372
15438
  `gestures="cooperative"`. `{key}` is ⌘ on a Mac and Ctrl elsewhere. */
15373
15439
  "attr:wheel-hint-label"?: (HelixHeadlessGraph["wheelHintLabel"]) | undefined;
@@ -15567,7 +15633,7 @@ markup. */
15567
15633
  "on:helix-graph-pan"?: ((
15568
15634
  e: HelixHeadlessGraphHelixGraphPanElementEvent,
15569
15635
  ) => void) | undefined;
15570
- /** The notes, the links, the selection, the depth or the gestures changed. Used by `connectGraph`; pages do not need to listen for it. */
15636
+ /** The notes, the links, the selection, the depth, the note the keys are on, or the gestures changed. Used by `connectGraph`; pages do not need to listen for it. */
15571
15637
  "on:helix-graph-part-change"?: ((
15572
15638
  e: HelixHeadlessGraphHelixGraphPartChangeElementEvent,
15573
15639
  ) => void) | undefined;
@@ -15598,6 +15664,12 @@ export type HelixHeadlessHeatmapElementEvent<E = Event> = TypedEvent<
15598
15664
  /** `helix-before-change` event type */
15599
15665
  export type HelixHeadlessHeatmapHelixBeforeChangeElementEvent =
15600
15666
  HelixHeadlessHeatmapElementEvent<HelixBeforeChangeEvent>;
15667
+ /** `helix-reading-change` event type */
15668
+ export type HelixHeadlessHeatmapHelixReadingChangeElementEvent =
15669
+ HelixHeadlessHeatmapElementEvent<HelixReadingChangeEvent>;
15670
+ /** `helix-reading-press` event type */
15671
+ export type HelixHeadlessHeatmapHelixReadingPressElementEvent =
15672
+ HelixHeadlessHeatmapElementEvent<HelixReadingPressEvent>;
15601
15673
  /** `helix-resize` event type */
15602
15674
  export type HelixHeadlessHeatmapHelixResizeElementEvent =
15603
15675
  HelixHeadlessHeatmapElementEvent<HelixResizeEvent>;
@@ -15609,16 +15681,6 @@ export type HelixHeadlessHeatmapProps = {
15609
15681
  /** The name the `overview` gives the busiest reading, `{busiestLabel}` in
15610
15682
  `overview-label`. */
15611
15683
  busiestLabel?: (HelixHeadlessHeatmap["busiestLabel"]) | undefined;
15612
- /** Shown when the table has no readings in it.
15613
-
15614
- Never shown while the table cannot be read at all, which is a server render
15615
- and the hydrating one after it: see `sourceKnown`. */
15616
- "empty-text"?: (HelixHeadlessHeatmap["emptyText"]) | undefined;
15617
- /** Shown when the table has no readings in it.
15618
-
15619
- Never shown while the table cannot be read at all, which is a server render
15620
- and the hydrating one after it: see `sourceKnown`. */
15621
- emptyText?: (HelixHeadlessHeatmap["emptyText"]) | undefined;
15622
15684
  /** Space between cells, in CSS pixels. It is a number for the same reason
15623
15685
  `min-cell` is. */
15624
15686
  gap?: (HelixHeadlessHeatmap["gap"]) | undefined;
@@ -15676,13 +15738,9 @@ calendar heatmap does: a week is a column, so the strip reads along the
15676
15738
  line in weeks, from the right on a right-to-left page, and top to bottom in
15677
15739
  days. */
15678
15740
  rows?: (HelixHeadlessHeatmap["rows"]) | undefined;
15679
- /** What the readout adds for a selected cell, under `selection-mode`, after
15680
- where the cell stands: "Day 1: 0 (1 of 14, selected)". Empty adds
15681
- nothing. */
15741
+ /** What the readout added for a selected cell, under `selection-mode`. */
15682
15742
  "selected-label"?: (HelixHeadlessHeatmap["selectedLabel"]) | undefined;
15683
- /** What the readout adds for a selected cell, under `selection-mode`, after
15684
- where the cell stands: "Day 1: 0 (1 of 14, selected)". Empty adds
15685
- nothing. */
15743
+ /** What the readout added for a selected cell, under `selection-mode`. */
15686
15744
  selectedLabel?: (HelixHeadlessHeatmap["selectedLabel"]) | undefined;
15687
15745
  /** What the `selection` part says after the selection changes. `{count}` is
15688
15746
  how many cells are selected, written in the locale, and a language that
@@ -15739,6 +15797,25 @@ header's words where it carries none.
15739
15797
  Set it to start with cells selected. Written by a press or a key under
15740
15798
  `selection-mode`. */
15741
15799
  value?: (HelixHeadlessHeatmap["value"]) | undefined;
15800
+ /** The words shown in place of the drawing when the table has no readings,
15801
+ and the fallback of the `empty` slot. */
15802
+ "empty-text"?: (HelixHeadlessHeatmap["emptyText"]) | undefined;
15803
+ /** The words shown in place of the drawing when the table has no readings,
15804
+ and the fallback of the `empty` slot. */
15805
+ emptyText?: (HelixHeadlessHeatmap["emptyText"]) | undefined;
15806
+ /** Whether the readings are still on their way. The chart shows
15807
+ `loading-text` in place of an empty drawing until it has readings.
15808
+
15809
+ Reflected, so a stylesheet can treat the chart while it waits. A chart
15810
+ that already has readings keeps drawing them, so a refresh does not
15811
+ blank it. */
15812
+ loading?: (HelixHeadlessHeatmap["loading"]) | undefined;
15813
+ /** The words shown in place of the drawing while `loading` is set and
15814
+ there are no readings yet, and the fallback of the `loading` slot. */
15815
+ "loading-text"?: (HelixHeadlessHeatmap["loadingText"]) | undefined;
15816
+ /** The words shown in place of the drawing while `loading` is set and
15817
+ there are no readings yet, and the fallback of the `loading` slot. */
15818
+ loadingText?: (HelixHeadlessHeatmap["loadingText"]) | undefined;
15742
15819
  /** The id of the table to read.
15743
15820
 
15744
15821
  Names a table in the same tree, so a chart inside another component's
@@ -15805,6 +15882,14 @@ does not look inside the one it has. */
15805
15882
  "onhelix-before-change"?: ((
15806
15883
  e: HelixHeadlessHeatmapHelixBeforeChangeElementEvent,
15807
15884
  ) => void) | undefined;
15885
+ /** 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. */
15886
+ "onhelix-reading-change"?: ((
15887
+ e: HelixHeadlessHeatmapHelixReadingChangeElementEvent,
15888
+ ) => void) | undefined;
15889
+ /** A reading was clicked, tapped, or pressed with Enter or Space, with the same detail as `helix-reading-change`. */
15890
+ "onhelix-reading-press"?: ((
15891
+ e: HelixHeadlessHeatmapHelixReadingPressElementEvent,
15892
+ ) => void) | undefined;
15808
15893
  /** Fired when the number of cells drawn changes, with the new number. */
15809
15894
  "onhelix-resize"?: ((e: HelixHeadlessHeatmapHelixResizeElementEvent) => void) | undefined;
15810
15895
  };
@@ -15816,16 +15901,6 @@ export type HelixHeadlessHeatmapSolidJsProps = {
15816
15901
  /** The name the `overview` gives the busiest reading, `{busiestLabel}` in
15817
15902
  `overview-label`. */
15818
15903
  "prop:busiestLabel"?: (HelixHeadlessHeatmap["busiestLabel"]) | undefined;
15819
- /** Shown when the table has no readings in it.
15820
-
15821
- Never shown while the table cannot be read at all, which is a server render
15822
- and the hydrating one after it: see `sourceKnown`. */
15823
- "attr:empty-text"?: (HelixHeadlessHeatmap["emptyText"]) | undefined;
15824
- /** Shown when the table has no readings in it.
15825
-
15826
- Never shown while the table cannot be read at all, which is a server render
15827
- and the hydrating one after it: see `sourceKnown`. */
15828
- "prop:emptyText"?: (HelixHeadlessHeatmap["emptyText"]) | undefined;
15829
15904
  /** Space between cells, in CSS pixels. It is a number for the same reason
15830
15905
  `min-cell` is. */
15831
15906
  "prop:gap"?: (HelixHeadlessHeatmap["gap"]) | undefined;
@@ -15883,13 +15958,9 @@ calendar heatmap does: a week is a column, so the strip reads along the
15883
15958
  line in weeks, from the right on a right-to-left page, and top to bottom in
15884
15959
  days. */
15885
15960
  "prop:rows"?: (HelixHeadlessHeatmap["rows"]) | undefined;
15886
- /** What the readout adds for a selected cell, under `selection-mode`, after
15887
- where the cell stands: "Day 1: 0 (1 of 14, selected)". Empty adds
15888
- nothing. */
15961
+ /** What the readout added for a selected cell, under `selection-mode`. */
15889
15962
  "attr:selected-label"?: (HelixHeadlessHeatmap["selectedLabel"]) | undefined;
15890
- /** What the readout adds for a selected cell, under `selection-mode`, after
15891
- where the cell stands: "Day 1: 0 (1 of 14, selected)". Empty adds
15892
- nothing. */
15963
+ /** What the readout added for a selected cell, under `selection-mode`. */
15893
15964
  "prop:selectedLabel"?: (HelixHeadlessHeatmap["selectedLabel"]) | undefined;
15894
15965
  /** What the `selection` part says after the selection changes. `{count}` is
15895
15966
  how many cells are selected, written in the locale, and a language that
@@ -15946,6 +16017,25 @@ header's words where it carries none.
15946
16017
  Set it to start with cells selected. Written by a press or a key under
15947
16018
  `selection-mode`. */
15948
16019
  "prop:value"?: (HelixHeadlessHeatmap["value"]) | undefined;
16020
+ /** The words shown in place of the drawing when the table has no readings,
16021
+ and the fallback of the `empty` slot. */
16022
+ "attr:empty-text"?: (HelixHeadlessHeatmap["emptyText"]) | undefined;
16023
+ /** The words shown in place of the drawing when the table has no readings,
16024
+ and the fallback of the `empty` slot. */
16025
+ "prop:emptyText"?: (HelixHeadlessHeatmap["emptyText"]) | undefined;
16026
+ /** Whether the readings are still on their way. The chart shows
16027
+ `loading-text` in place of an empty drawing until it has readings.
16028
+
16029
+ Reflected, so a stylesheet can treat the chart while it waits. A chart
16030
+ that already has readings keeps drawing them, so a refresh does not
16031
+ blank it. */
16032
+ "prop:loading"?: (HelixHeadlessHeatmap["loading"]) | undefined;
16033
+ /** The words shown in place of the drawing while `loading` is set and
16034
+ there are no readings yet, and the fallback of the `loading` slot. */
16035
+ "attr:loading-text"?: (HelixHeadlessHeatmap["loadingText"]) | undefined;
16036
+ /** The words shown in place of the drawing while `loading` is set and
16037
+ there are no readings yet, and the fallback of the `loading` slot. */
16038
+ "prop:loadingText"?: (HelixHeadlessHeatmap["loadingText"]) | undefined;
15949
16039
  /** The id of the table to read.
15950
16040
 
15951
16041
  Names a table in the same tree, so a chart inside another component's
@@ -16011,6 +16101,14 @@ does not look inside the one it has. */
16011
16101
  "on:helix-before-change"?: ((
16012
16102
  e: HelixHeadlessHeatmapHelixBeforeChangeElementEvent,
16013
16103
  ) => void) | undefined;
16104
+ /** 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. */
16105
+ "on:helix-reading-change"?: ((
16106
+ e: HelixHeadlessHeatmapHelixReadingChangeElementEvent,
16107
+ ) => void) | undefined;
16108
+ /** A reading was clicked, tapped, or pressed with Enter or Space, with the same detail as `helix-reading-change`. */
16109
+ "on:helix-reading-press"?: ((
16110
+ e: HelixHeadlessHeatmapHelixReadingPressElementEvent,
16111
+ ) => void) | undefined;
16014
16112
  /** Fired when the number of cells drawn changes, with the new number. */
16015
16113
  "on:helix-resize"?: ((e: HelixHeadlessHeatmapHelixResizeElementEvent) => void) | undefined;
16016
16114
 
@@ -22217,6 +22315,20 @@ empty string would give. */
22217
22315
  "default-read"?: (HelixHeadlessNotification["defaultRead"]) | undefined;
22218
22316
  /** Whether the notification starts as read, used until `read` is set. */
22219
22317
  defaultRead?: (HelixHeadlessNotification["defaultRead"]) | undefined;
22318
+ /** The dismiss control's name, read by screen readers, with `{label}` for the
22319
+ row's own words.
22320
+
22321
+ One sentence with the words in it, so a translation puts them where its
22322
+ language does: `registerWords('de', { 'helix-notification': { dismissLabel:
22323
+ '{label} schließen' } })`. */
22324
+ "dismiss-label"?: (HelixHeadlessNotification["dismissLabel"]) | undefined;
22325
+ /** The dismiss control's name, read by screen readers, with `{label}` for the
22326
+ row's own words.
22327
+
22328
+ One sentence with the words in it, so a translation puts them where its
22329
+ language does: `registerWords('de', { 'helix-notification': { dismissLabel:
22330
+ '{label} schließen' } })`. */
22331
+ dismissLabel?: (HelixHeadlessNotification["dismissLabel"]) | undefined;
22220
22332
  /** Locale for the timestamp.
22221
22333
 
22222
22334
  Empty is the runtime's own. */
@@ -22247,28 +22359,6 @@ its place. Translate it with the rest of your interface. */
22247
22359
  unreadLabel?: (HelixHeadlessNotification["unreadLabel"]) | undefined;
22248
22360
  /** Whether the element shows a control that dismisses it. */
22249
22361
  dismissible?: (HelixHeadlessNotification["dismissible"]) | undefined;
22250
- /** The dismiss control's label, read by screen readers.
22251
-
22252
- `attribute` is spelled out because Lit lowercases a property name to
22253
- derive one rather than dash-casing it, so this would otherwise be
22254
- reachable only as `dismisslabel`, which nobody would guess and no linter
22255
- would catch.
22256
-
22257
- A word property: register it for a locale under the host's key. A family
22258
- that names the control otherwise, such as Tag's `Remove {label}`,
22259
- declares its own English with `@words` above the override. */
22260
- "dismiss-label"?: (HelixHeadlessNotification["dismissLabel"]) | undefined;
22261
- /** The dismiss control's label, read by screen readers.
22262
-
22263
- `attribute` is spelled out because Lit lowercases a property name to
22264
- derive one rather than dash-casing it, so this would otherwise be
22265
- reachable only as `dismisslabel`, which nobody would guess and no linter
22266
- would catch.
22267
-
22268
- A word property: register it for a locale under the host's key. A family
22269
- that names the control otherwise, such as Tag's `Remove {label}`,
22270
- declares its own English with `@words` above the override. */
22271
- dismissLabel?: (HelixHeadlessNotification["dismissLabel"]) | undefined;
22272
22362
 
22273
22363
  /** Fired when the user dismisses the notification. Cancelable. */
22274
22364
  "onhelix-dismiss"?: ((
@@ -22290,6 +22380,20 @@ empty string would give. */
22290
22380
  "bool:default-read"?: (HelixHeadlessNotification["defaultRead"]) | undefined;
22291
22381
  /** Whether the notification starts as read, used until `read` is set. */
22292
22382
  "prop:defaultRead"?: (HelixHeadlessNotification["defaultRead"]) | undefined;
22383
+ /** The dismiss control's name, read by screen readers, with `{label}` for the
22384
+ row's own words.
22385
+
22386
+ One sentence with the words in it, so a translation puts them where its
22387
+ language does: `registerWords('de', { 'helix-notification': { dismissLabel:
22388
+ '{label} schließen' } })`. */
22389
+ "attr:dismiss-label"?: (HelixHeadlessNotification["dismissLabel"]) | undefined;
22390
+ /** The dismiss control's name, read by screen readers, with `{label}` for the
22391
+ row's own words.
22392
+
22393
+ One sentence with the words in it, so a translation puts them where its
22394
+ language does: `registerWords('de', { 'helix-notification': { dismissLabel:
22395
+ '{label} schließen' } })`. */
22396
+ "prop:dismissLabel"?: (HelixHeadlessNotification["dismissLabel"]) | undefined;
22293
22397
  /** Locale for the timestamp.
22294
22398
 
22295
22399
  Empty is the runtime's own. */
@@ -22320,28 +22424,6 @@ its place. Translate it with the rest of your interface. */
22320
22424
  "prop:unreadLabel"?: (HelixHeadlessNotification["unreadLabel"]) | undefined;
22321
22425
  /** Whether the element shows a control that dismisses it. */
22322
22426
  "prop:dismissible"?: (HelixHeadlessNotification["dismissible"]) | undefined;
22323
- /** The dismiss control's label, read by screen readers.
22324
-
22325
- `attribute` is spelled out because Lit lowercases a property name to
22326
- derive one rather than dash-casing it, so this would otherwise be
22327
- reachable only as `dismisslabel`, which nobody would guess and no linter
22328
- would catch.
22329
-
22330
- A word property: register it for a locale under the host's key. A family
22331
- that names the control otherwise, such as Tag's `Remove {label}`,
22332
- declares its own English with `@words` above the override. */
22333
- "attr:dismiss-label"?: (HelixHeadlessNotification["dismissLabel"]) | undefined;
22334
- /** The dismiss control's label, read by screen readers.
22335
-
22336
- `attribute` is spelled out because Lit lowercases a property name to
22337
- derive one rather than dash-casing it, so this would otherwise be
22338
- reachable only as `dismisslabel`, which nobody would guess and no linter
22339
- would catch.
22340
-
22341
- A word property: register it for a locale under the host's key. A family
22342
- that names the control otherwise, such as Tag's `Remove {label}`,
22343
- declares its own English with `@words` above the override. */
22344
- "prop:dismissLabel"?: (HelixHeadlessNotification["dismissLabel"]) | undefined;
22345
22427
  /** Fired when the user dismisses the notification. Cancelable. */
22346
22428
  "on:helix-dismiss"?: ((
22347
22429
  e: HelixHeadlessNotificationHelixDismissElementEvent,
@@ -39464,6 +39546,15 @@ export type CustomElements = {
39464
39546
  *
39465
39547
  * Methods that can be called to access component functionality.
39466
39548
  *
39549
+ * - `click() => void`: Presses the button, as `click()` presses a native one: the command is sent,
39550
+ * the form submits or resets, and `helix-press` says `virtual`.
39551
+ *
39552
+ * **Passed to the inner control, because a click on the host reaches nothing
39553
+ * that acts.** The control in the shadow root is what answers a click, so
39554
+ * `click()` from a script, an automation or a test, dispatched on the host,
39555
+ * submitted nothing and sent no `helix-press`. The control's own click reaches
39556
+ * the host's listeners once, retargeted, as one from a native button does. A
39557
+ * disabled button does nothing, and a pending one refuses the press.
39467
39558
  * - `formAssociatedCallback(form: HTMLFormElement | null) => void`: Called by the browser when the button's form changes.
39468
39559
  * - `formDisabledCallback(disabled: boolean) => void`: Called by the browser when an ancestor fieldset is disabled or enabled.
39469
39560
  *
@@ -43920,6 +44011,15 @@ export type CustomElements = {
43920
44011
  *
43921
44012
  * Methods that can be called to access component functionality.
43922
44013
  *
44014
+ * - `click() => void`: Presses the button, as `click()` presses a native one: the command is sent,
44015
+ * the form submits or resets, and `helix-press` says `virtual`.
44016
+ *
44017
+ * **Passed to the inner control, because a click on the host reaches nothing
44018
+ * that acts.** The control in the shadow root is what answers a click, so
44019
+ * `click()` from a script, an automation or a test, dispatched on the host,
44020
+ * submitted nothing and sent no `helix-press`. The control's own click reaches
44021
+ * the host's listeners once, retargeted, as one from a native button does. A
44022
+ * disabled button does nothing, and a pending one refuses the press.
43923
44023
  * - `formAssociatedCallback(form: HTMLFormElement | null) => void`: Called by the browser when the control's form changes: watches the new
43924
44024
  * form's `checkValidity()`, as connecting does for the form it starts in.
43925
44025
  * - `formDisabledCallback(disabled: boolean) => void`: Called by the browser when an ancestor fieldset is disabled or enabled.
@@ -46550,6 +46650,9 @@ export type CustomElements = {
46550
46650
  *
46551
46651
  * - `focusItem() => void`: Moves focus onto the row itself.
46552
46652
  * - `select() => void`: Fires `helix-select` for this row.
46653
+ * - `click() => void`: Presses the row, as `click()` presses a native button: passed to the
46654
+ * control inside, which is what answers a click, so a script's `click()`
46655
+ * chooses the row, or follows its link, once.
46553
46656
  *
46554
46657
  * ## CSS Parts
46555
46658
  *
@@ -47722,9 +47825,15 @@ export type CustomElements = {
47722
47825
  *
47723
47826
  * **The picker has an entry of its own.** `FilterMenu` draws its pages with
47724
47827
  * `Menu`, which a field without a picker does not need, so this family's entry
47725
- * leaves it out. A page that writes one imports
47726
- * `@fusion.dev/helix/filter-input/menu` as well, and a picker written without it
47727
- * is reported once the page has loaded, with the entry to add.
47828
+ * leaves it out. A page that writes a `FilterMenu` imports both entries:
47829
+ *
47830
+ * ```js
47831
+ * import '@fusion.dev/helix/filter-input'
47832
+ * import '@fusion.dev/helix/filter-input/menu'
47833
+ * ```
47834
+ *
47835
+ * A picker written without the second is reported once the page has loaded,
47836
+ * with the entry to add.
47728
47837
  *
47729
47838
  * **Suggestions.** Slot options into `suggestions` and the field shows them,
47730
47839
  * moves through them with the arrow keys, and presses one on Enter. The option
@@ -47740,6 +47849,24 @@ export type CustomElements = {
47740
47849
  * completion back and put the caret after it, or the next parse reads the wrong
47741
47850
  * term.
47742
47851
  *
47852
+ * **Suggestions from a source.** Set `source` to a function, and the field asks
47853
+ * it for suggestions as the text changes and draws them as options in the
47854
+ * panel. It is given the term at the caret, the field the term is a value of,
47855
+ * the whole text, and an `AbortSignal`, and returns the suggestions or a
47856
+ * promise of them. `filter-delay` waits for typing to rest before asking, and
47857
+ * a later keystroke aborts a request still out. While a promise is pending, the
47858
+ * panel shows `loading-text` and a screen reader hears it, then the count.
47859
+ * Choosing a suggestion writes its value over the term at the caret, and a
47860
+ * finished `field:value` is read into a chip as Enter would. Cancel its
47861
+ * `helix-select` to write it yourself.
47862
+ *
47863
+ * ```js
47864
+ * filter.source = async ({ field, term, signal }) => {
47865
+ * const response = await fetch(`/values?field=${field}&q=${term}`, { signal })
47866
+ * return response.json()
47867
+ * }
47868
+ * ```
47869
+ *
47743
47870
  * **State.** Three things have three different owners:
47744
47871
  *
47745
47872
  * - `value` is the text. The user types, the element applies it, and `input`
@@ -47781,6 +47908,9 @@ export type CustomElements = {
47781
47908
  * them.
47782
47909
  * - `clear-label`/`clearLabel`: The name of the clear button, read by screen readers. The button shows only
47783
47910
  * an icon.
47911
+ * - `filter-delay`/`filterDelay`: How long typing rests before `source` is asked, in milliseconds. A delay
47912
+ * sends one request for a word in place of one for each letter. The arrow
47913
+ * keys and Enter ask at once. `0` asks on every keystroke.
47784
47914
  * - `filter-suggestions`/`filterSuggestions`: Whether the panel narrows itself to the suggestions that hold the term
47785
47915
  * being typed, as React Aria's Autocomplete filters. Off, the panel shows
47786
47916
  * what you slot and you narrow it.
@@ -47888,6 +48018,12 @@ export type CustomElements = {
47888
48018
  * imperatively later, and nothing is hydrating by then.
47889
48019
  *
47890
48020
  * Here rather than on each control.
48021
+ * - `source`: Where the suggestions come from: a function given the term at the caret,
48022
+ * the field it is a value of, the whole text, and an `AbortSignal`, which
48023
+ * returns the suggestions or a promise of them. Each is a string, or a
48024
+ * `value` with a `label` and `disabled`. The field draws them as options in
48025
+ * the panel, beside any you slot. A property only, there being no way to
48026
+ * write a function in markup. See the class description. (property only)
47891
48027
  * - `selectionDirection`: The direction of the selection, named as on `<input>`.
47892
48028
  *
47893
48029
  * **Published for the reason `Input` publishes them, and this element needs
@@ -47944,7 +48080,7 @@ export type CustomElements = {
47944
48080
  * - `helix-before-open`: Fired before the suggestions open. Cancelable: call `preventDefault()` to keep them closed.
47945
48081
  * - `helix-dismiss`: Fired when the user removes a token with its remove button or with Backspace in an empty field. A `FilterChip` that names a declared field sends `helix-facet` instead. Cancelable: call `preventDefault()` to keep the token.
47946
48082
  * - `helix-facet`: Fired when a filter changes, whether it was typed, picked, or removed. Cancelable: call `preventDefault()` to leave the text and the chip as they were.
47947
- * - `helix-select`: Fired by an option in `suggestions` when it is chosen, and bubbles out of the field. Cancelable: call `preventDefault()` to stop other listeners acting on it. The field takes no action on a choice; you decide what it does.
48083
+ * - `helix-select`: Fired by an option in `suggestions` when it is chosen, and bubbles out of the field. Cancelable: call `preventDefault()` to stop other listeners acting on it. The field takes no action on an option you slotted, and you decide what it does. A suggestion from `source` is written over the term at the caret unless you cancel it.
47948
48084
  * - `input`: Fired when the text changes.
47949
48085
  * - `toggle`: Fired when the suggestions panel opens or closes, with `newState` and `oldState`.
47950
48086
  *
@@ -48051,7 +48187,7 @@ export type CustomElements = {
48051
48187
  * - `label`: The label above the field.
48052
48188
  * - `lead`: The box before the text that holds the `start` slot.
48053
48189
  * - `live`: The live region that says how many suggestions the open panel offers. It is rendered from the first time the panel opens with suggestions.
48054
- * - `loading`: Shown in the panel while the suggestions load.
48190
+ * - `loading`: Shown in the panel while the suggestions load: while `loading` is set, or a request to `source` is out.
48055
48191
  * - `rest`: The count of tokens that did not fit. It is a `<button>` with `expandable` and a `<span>` without it.
48056
48192
  * - `surface`: The floating panel the suggestions sit in.
48057
48193
  * - `tags`: The row the tokens sit in.
@@ -48061,7 +48197,7 @@ export type CustomElements = {
48061
48197
  * These can be used to apply styling when a component is in a given state.
48062
48198
  *
48063
48199
  * - `invalid`: The field has an error to show, from the browser's validation or from your `feedback`.
48064
- * - `loading`: While `loading` is set.
48200
+ * - `loading`: While `loading` is set, or a request to `source` is out.
48065
48201
  * - `no-results`: `filter-suggestions` hid every suggestion, and `no-results-text` or the `no-results` slot says so.
48066
48202
  * - `open`: The suggestions are open.
48067
48203
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
@@ -48281,6 +48417,23 @@ export type CustomElements = {
48281
48417
  * Set `depth` to show the local graph: only the notes within that many links
48282
48418
  * of the selected one.
48283
48419
  *
48420
+ * The search field is a combobox over the list. Down and Up move through the
48421
+ * notes while the focus stays in the field, and Enter selects one.
48422
+ *
48423
+ * **Walk the links with Alt and the arrow keys**, in the list or in the
48424
+ * search field once its keys are on a note. The note the keys are on is
48425
+ * marked in the drawing.
48426
+ *
48427
+ * | Key | What it does |
48428
+ * |---|---|
48429
+ * | Alt+Right | Follows a link, to the first note the one the keys are on links to or from. |
48430
+ * | Alt+Down, Alt+Up | Moves to the next or the previous note linked to the one the step came from, wrapping. |
48431
+ * | Alt+Left | Goes back along the links walked. |
48432
+ *
48433
+ * Right and Left swap on a right-to-left page. Each step says the note, how it
48434
+ * stands to the note it came from, and its place among that note's links,
48435
+ * such as "Hiring plan. Linked from Roadmap. 2 of 3". Enter selects the note.
48436
+ *
48284
48437
  * Set `legend` to name the groups over the drawing, each a button that shows
48285
48438
  * or hides its notes. `hiddenGroups` holds the groups turned off, and the
48286
48439
  * list holds only what the drawing shows. The legend is a toolbar and one tab
@@ -48316,6 +48469,9 @@ export type CustomElements = {
48316
48469
  * - `legend`: Names the groups over the drawing, each a button in its color that shows
48317
48470
  * or hides its notes. Drawn where the notes have two groups or more.
48318
48471
  * - `legend-label`/`legendLabel`: The legend's name, read by screen readers.
48472
+ * - `link-count-label`/`linkCountLabel`: What screen readers hear when a walk along the links reaches a note that
48473
+ * has no link to follow, or goes back to a note: `{note}` for its name and
48474
+ * `{count}` for how many notes the list holds that it links to or from.
48319
48475
  * - `linked-both-label`/`linkedBothLabel`: How a note linked both to and from the selected one is described, with `{note}`.
48320
48476
  * - `linked-from-label`/`linkedFromLabel`: How a note the selected one links to is described, with `{note}`, the selected note's name.
48321
48477
  * - `links-to-label`/`linksToLabel`: How a note that links to the selected one is described, with `{note}`.
@@ -48340,6 +48496,10 @@ export type CustomElements = {
48340
48496
  * the list then holds, written with `count-label`.
48341
48497
  * - `two-finger-hint-label`/`twoFingerHintLabel`: The hint shown when one finger swipes over the graph with `gestures="cooperative"`.
48342
48498
  * - `using-label`/`usingLabel`: The line shown while the graph, with `gestures="activate"`, has the gestures.
48499
+ * - `walk-label`/`walkLabel`: What screen readers hear when a walk along the links moves to a note:
48500
+ * `{note}` for its name, `{relation}` for how it stands to the note the
48501
+ * step came from, such as "Linked from Roadmap", and `{index}` and `{count}`
48502
+ * for its place among that note's links.
48343
48503
  * - `wheel-hint-label`/`wheelHintLabel`: The hint shown when the wheel scrolls past the graph with
48344
48504
  * `gestures="cooperative"`. `{key}` is ⌘ on a Mac and Ctrl elsewhere.
48345
48505
  * - `zoomed-in-label`/`zoomedInLabel`: What screen readers hear once the drawing has zoomed in, after `moved()`.
@@ -48473,7 +48633,7 @@ export type CustomElements = {
48473
48633
  * - `helix-graph-filter`: A group in the legend was pressed, to show or hide its notes. The detail's `hidden` is every group that would be hidden. Cancelable: cancel it to keep the groups as they were, or to set `hiddenGroups` yourself.
48474
48634
  * - `helix-graph-layout`: A layout settled, with where it put each note, sent by `laidOut()`. Keep the positions and pass them back as each note's `x` and `y`, and `z` where a renderer draws in three dimensions.
48475
48635
  * - `helix-graph-pan`: A pan button or arrow key was pressed. `connectGraph` moves the drawing, then calls `moved()`.
48476
- * - `helix-graph-part-change`: The notes, the links, the selection, the depth or the gestures changed. Used by `connectGraph`; pages do not need to listen for it.
48636
+ * - `helix-graph-part-change`: The notes, the links, the selection, the depth, the note the keys are on, or the gestures changed. Used by `connectGraph`; pages do not need to listen for it.
48477
48637
  * - `helix-graph-ready`: The graph has been drawn whole, laid out and settled. Sent each time `drawn()` says it is drawn after it was not.
48478
48638
  * - `helix-graph-signal`: Something passed between two notes, sent by `signal()`. Used by `connectGraph`; pages do not need to listen for it.
48479
48639
  * - `helix-graph-zoom`: A zoom button or key was pressed. `connectGraph` zooms the drawing, then calls `moved()`.
@@ -48640,6 +48800,25 @@ export type CustomElements = {
48640
48800
  * `helix-before-change` and tells with `change`, and the `selection` part says
48641
48801
  * how many are selected, in `selection-label`.
48642
48802
  *
48803
+ * **Under `selection-mode` the strip is a grid**, so the selection is state a
48804
+ * reader is told rather than words alone: each column of the strip is a `row`,
48805
+ * a week with `rows="7"`, and each cell a `gridcell` named by its row in the
48806
+ * table and carrying `aria-selected`. The strip says
48807
+ * `aria-multiselectable` under `multiple` and points at the cell the keys rest
48808
+ * on with `aria-activedescendant`, so a screen reader reads that cell, and the
48809
+ * `live` part stays quiet. Without `selection-mode` nothing is selectable, and
48810
+ * the strip is an application with the readout, as every chart's plot is.
48811
+ *
48812
+ * **Readings are sent as every chart sends them.** `helix-reading-change`
48813
+ * says each move of the reading, by pointer, tap or key, and
48814
+ * `helix-reading-press` a reading clicked, tapped, or pressed with Enter or
48815
+ * Space, each with the row of the table in `index`.
48816
+ *
48817
+ * **Nothing to draw.** A table with no readings shows `empty-text`, "No
48818
+ * readings", under the strip, and `loading` shows `loading-text` there until
48819
+ * readings arrive. The `empty` and `loading` slots take markup in place of
48820
+ * either, as on every chart.
48821
+ *
48643
48822
  * **Keyboard.** The strip is one tab stop once it has cells.
48644
48823
  *
48645
48824
  * | Key | What it does |
@@ -48649,7 +48828,7 @@ export type CustomElements = {
48649
48828
  * | Right, Left | Moves a column on or back, a week with `rows="7"`. On a right-to-left page, Left moves on. |
48650
48829
  * | Home, End | Moves to the first or the last cell. |
48651
48830
  * | Page Down, Page Up | Moves a month on or back where the rows carry dates, and four columns otherwise. |
48652
- * | Enter, Space | Selects the cell, or lets it go, under `selection-mode`. |
48831
+ * | Enter, Space | Presses the cell, which sends `helix-reading-press`, and selects it or lets it go under `selection-mode`. |
48653
48832
  * | 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"`. |
48654
48833
  * | Escape | Puts the cell's tooltip away. |
48655
48834
  *
@@ -48659,10 +48838,6 @@ export type CustomElements = {
48659
48838
  *
48660
48839
  * - `busiest-label`/`busiestLabel`: The name the `overview` gives the busiest reading, `{busiestLabel}` in
48661
48840
  * `overview-label`.
48662
- * - `empty-text`/`emptyText`: Shown when the table has no readings in it.
48663
- *
48664
- * Never shown while the table cannot be read at all, which is a server render
48665
- * and the hydrating one after it: see `sourceKnown`.
48666
48841
  * - `gap`: Space between cells, in CSS pixels. It is a number for the same reason
48667
48842
  * `min-cell` is.
48668
48843
  * - `min-cell`/`minCell`: The smallest a cell may get before the strip draws fewer of them, in CSS pixels.
@@ -48693,9 +48868,7 @@ export type CustomElements = {
48693
48868
  * calendar heatmap does: a week is a column, so the strip reads along the
48694
48869
  * line in weeks, from the right on a right-to-left page, and top to bottom in
48695
48870
  * days.
48696
- * - `selected-label`/`selectedLabel`: What the readout adds for a selected cell, under `selection-mode`, after
48697
- * where the cell stands: "Day 1: 0 (1 of 14, selected)". Empty adds
48698
- * nothing.
48871
+ * - `selected-label`/`selectedLabel`: What the readout added for a selected cell, under `selection-mode`.
48699
48872
  * - `selection-label`/`selectionLabel`: What the `selection` part says after the selection changes. `{count}` is
48700
48873
  * how many cells are selected, written in the locale, and a language that
48701
48874
  * needs plural forms writes them: `{count, plural, one {# wybrany} few
@@ -48729,6 +48902,16 @@ export type CustomElements = {
48729
48902
  *
48730
48903
  * Set it to start with cells selected. Written by a press or a key under
48731
48904
  * `selection-mode`.
48905
+ * - `empty-text`/`emptyText`: The words shown in place of the drawing when the table has no readings,
48906
+ * and the fallback of the `empty` slot.
48907
+ * - `loading`: Whether the readings are still on their way. The chart shows
48908
+ * `loading-text` in place of an empty drawing until it has readings.
48909
+ *
48910
+ * Reflected, so a stylesheet can treat the chart while it waits. A chart
48911
+ * that already has readings keeps drawing them, so a refresh does not
48912
+ * blank it.
48913
+ * - `loading-text`/`loadingText`: The words shown in place of the drawing while `loading` is set and
48914
+ * there are no readings yet, and the fallback of the `loading` slot.
48732
48915
  * - `for`: The id of the table to read.
48733
48916
  *
48734
48917
  * Names a table in the same tree, so a chart inside another component's
@@ -48841,13 +49024,17 @@ export type CustomElements = {
48841
49024
  *
48842
49025
  * - `change`: Fired once a press or a key has changed which cells are selected.
48843
49026
  * - `helix-before-change`: Fired before a press or a key changes which cells are selected, with the `value` it would leave. Cancelable.
49027
+ * - `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.
49028
+ * - `helix-reading-press`: A reading was clicked, tapped, or pressed with Enter or Space, with the same detail as `helix-reading-change`.
48844
49029
  * - `helix-resize`: Fired when the number of cells drawn changes, with the new number.
48845
49030
  *
48846
49031
  * ## Slots
48847
49032
  *
48848
49033
  * Areas where markup can be added to the component.
48849
49034
  *
49035
+ * - `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`.
48850
49036
  * - `end`: Below the strip, at the trailing edge: usually the newest date.
49037
+ * - `loading`: Content shown under the strip while `loading` is set and there are no readings yet. Falls back to `loading-text`.
48851
49038
  * - `start`: Below the strip, at the leading edge: usually the oldest date.
48852
49039
  * - `summary`: Below the strip, in the middle: a summary of the range shown.
48853
49040
  *
@@ -48914,12 +49101,15 @@ export type CustomElements = {
48914
49101
  * - `cell`: One reading.
48915
49102
  * - `cell-active`: The cell the pointer or the keys rest on. Set alongside `cell`.
48916
49103
  * - `cell-selected`: A cell that is selected, under `selection-mode`. Set alongside `cell`.
48917
- * - `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.
49104
+ * - `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.
48918
49105
  * - `end`: The trailing slot's box.
48919
49106
  * - `footer`: The three-slot row under the strip.
48920
49107
  * - `live`: The readout: a polite live region that says the cell the keys moved to. Hide it visually.
49108
+ * - `loading`: The words under the strip while `loading` is set and there are no readings: the `loading` slot, falling back to `loading-text`.
48921
49109
  * - `mark`: The invisible point the tooltip is anchored to.
48922
49110
  * - `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.
49111
+ * - `plot`: The same element as `strip`, under the name every chart gives the drawing that takes focus.
49112
+ * - `row`: A column of cells, which a grid reads as a row, under `selection-mode`. It draws no box.
48923
49113
  * - `selection`: A polite region that says how many cells are selected after a change, rendered from the first change. Hide it visually.
48924
49114
  * - `start`: The leading slot's box.
48925
49115
  * - `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.
@@ -48948,6 +49138,7 @@ export type CustomElements = {
48948
49138
  *
48949
49139
  * - `active`: While a cell is shown, under the pointer or the keys, with its tooltip open.
48950
49140
  * - `empty`: While the `empty` part stands in place of the cells.
49141
+ * - `loading`: While the `loading` part stands in place of the cells.
48951
49142
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
48952
49143
  */
48953
49144
  "helix-headless-heatmap": Partial<
@@ -49154,6 +49345,15 @@ export type CustomElements = {
49154
49345
  *
49155
49346
  * Methods that can be called to access component functionality.
49156
49347
  *
49348
+ * - `click() => void`: Presses the button, as `click()` presses a native one: the command is sent,
49349
+ * the form submits or resets, and `helix-press` says `virtual`.
49350
+ *
49351
+ * **Passed to the inner control, because a click on the host reaches nothing
49352
+ * that acts.** The control in the shadow root is what answers a click, so
49353
+ * `click()` from a script, an automation or a test, dispatched on the host,
49354
+ * submitted nothing and sent no `helix-press`. The control's own click reaches
49355
+ * the host's listeners once, retargeted, as one from a native button does. A
49356
+ * disabled button does nothing, and a pending one refuses the press.
49157
49357
  * - `formAssociatedCallback(form: HTMLFormElement | null) => void`: Called by the browser when the control's form changes: watches the new
49158
49358
  * form's `checkValidity()`, as connecting does for the form it starts in.
49159
49359
  * - `formDisabledCallback(disabled: boolean) => void`: Called by the browser when an ancestor fieldset is disabled or enabled.
@@ -53197,6 +53397,9 @@ export type CustomElements = {
53197
53397
  * `focus()` above already puts focus on the control inside the row rather than
53198
53398
  * on the row, which is the whole of what moving here means.
53199
53399
  * - `select() => void`: Chooses the row, the same as pressing it.
53400
+ * - `click() => void`: Presses the row, as `click()` presses a native button: passed to the
53401
+ * control inside, which is what answers a click, so a script's `click()`
53402
+ * chooses the row, or follows its link, once.
53200
53403
  *
53201
53404
  * ## CSS Parts
53202
53405
  *
@@ -54033,6 +54236,12 @@ export type CustomElements = {
54033
54236
  * shows no timestamp rather than showing the epoch, which is what parsing an
54034
54237
  * empty string would give.
54035
54238
  * - `default-read`/`defaultRead`: Whether the notification starts as read, used until `read` is set.
54239
+ * - `dismiss-label`/`dismissLabel`: The dismiss control's name, read by screen readers, with `{label}` for the
54240
+ * row's own words.
54241
+ *
54242
+ * One sentence with the words in it, so a translation puts them where its
54243
+ * language does: `registerWords('de', { 'helix-notification': { dismissLabel:
54244
+ * '{label} schließen' } })`.
54036
54245
  * - `locale`: Locale for the timestamp.
54037
54246
  *
54038
54247
  * Empty is the runtime's own.
@@ -54054,16 +54263,6 @@ export type CustomElements = {
54054
54263
  * The unread mark is drawn, so a reader who cannot see it hears this word in
54055
54264
  * its place. Translate it with the rest of your interface.
54056
54265
  * - `dismissible`: Whether the element shows a control that dismisses it.
54057
- * - `dismiss-label`/`dismissLabel`: The dismiss control's label, read by screen readers.
54058
- *
54059
- * `attribute` is spelled out because Lit lowercases a property name to
54060
- * derive one rather than dash-casing it, so this would otherwise be
54061
- * reachable only as `dismisslabel`, which nobody would guess and no linter
54062
- * would catch.
54063
- *
54064
- * A word property: register it for a locale under the host's key. A family
54065
- * that names the control otherwise, such as Tag's `Remove {label}`,
54066
- * declares its own English with `@words` above the override.
54067
54266
  * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
54068
54267
  *
54069
54268
  * **Named `whenSettled` because `settled` is taken four times over**, by
@@ -59311,6 +59510,9 @@ export type CustomElements = {
59311
59510
  * - `focus(options?: FocusOptions) => void`: Puts focus on the control inside the item.
59312
59511
  * - `focusItem() => void`: Moves focus to the action. Part of `NavigableItem`, which the shared
59313
59512
  * keyboard controller uses for the arrow keys.
59513
+ * - `click() => void`: Presses the action, as `click()` presses a native button: passed to the
59514
+ * control inside, which is what answers a click, so a script's `click()`
59515
+ * chooses the action and follows its link, once.
59314
59516
  * - `select() => void`: Chooses the action, the same as pressing it.
59315
59517
  *
59316
59518
  * ## CSS Parts
@@ -61634,6 +61836,9 @@ export type CustomElements = {
61634
61836
  * listener refused it, or where the tab is not dismissible or is disabled.
61635
61837
  * The tab stays where it is either way: removing it is yours. Where the tab
61636
61838
  * had focus, focus moves to the tab beside it once you remove it.
61839
+ * - `click() => void`: Presses the tab, as `click()` presses a native button: passed to the
61840
+ * control inside, which is what answers a click, so a script's `click()`
61841
+ * selects the tab, or follows its link, once.
61637
61842
  * - `focusItem() => void`: Moves focus to the item's control, for the set's arrow keys.
61638
61843
  *
61639
61844
  * The set drives the keys and cannot reach the control itself, which is
@@ -68925,6 +69130,15 @@ export type CustomElementsSolidJs = {
68925
69130
  *
68926
69131
  * Methods that can be called to access component functionality.
68927
69132
  *
69133
+ * - `click() => void`: Presses the button, as `click()` presses a native one: the command is sent,
69134
+ * the form submits or resets, and `helix-press` says `virtual`.
69135
+ *
69136
+ * **Passed to the inner control, because a click on the host reaches nothing
69137
+ * that acts.** The control in the shadow root is what answers a click, so
69138
+ * `click()` from a script, an automation or a test, dispatched on the host,
69139
+ * submitted nothing and sent no `helix-press`. The control's own click reaches
69140
+ * the host's listeners once, retargeted, as one from a native button does. A
69141
+ * disabled button does nothing, and a pending one refuses the press.
68928
69142
  * - `formAssociatedCallback(form: HTMLFormElement | null) => void`: Called by the browser when the button's form changes.
68929
69143
  * - `formDisabledCallback(disabled: boolean) => void`: Called by the browser when an ancestor fieldset is disabled or enabled.
68930
69144
  *
@@ -73421,6 +73635,15 @@ export type CustomElementsSolidJs = {
73421
73635
  *
73422
73636
  * Methods that can be called to access component functionality.
73423
73637
  *
73638
+ * - `click() => void`: Presses the button, as `click()` presses a native one: the command is sent,
73639
+ * the form submits or resets, and `helix-press` says `virtual`.
73640
+ *
73641
+ * **Passed to the inner control, because a click on the host reaches nothing
73642
+ * that acts.** The control in the shadow root is what answers a click, so
73643
+ * `click()` from a script, an automation or a test, dispatched on the host,
73644
+ * submitted nothing and sent no `helix-press`. The control's own click reaches
73645
+ * the host's listeners once, retargeted, as one from a native button does. A
73646
+ * disabled button does nothing, and a pending one refuses the press.
73424
73647
  * - `formAssociatedCallback(form: HTMLFormElement | null) => void`: Called by the browser when the control's form changes: watches the new
73425
73648
  * form's `checkValidity()`, as connecting does for the form it starts in.
73426
73649
  * - `formDisabledCallback(disabled: boolean) => void`: Called by the browser when an ancestor fieldset is disabled or enabled.
@@ -76071,6 +76294,9 @@ export type CustomElementsSolidJs = {
76071
76294
  *
76072
76295
  * - `focusItem() => void`: Moves focus onto the row itself.
76073
76296
  * - `select() => void`: Fires `helix-select` for this row.
76297
+ * - `click() => void`: Presses the row, as `click()` presses a native button: passed to the
76298
+ * control inside, which is what answers a click, so a script's `click()`
76299
+ * chooses the row, or follows its link, once.
76074
76300
  *
76075
76301
  * ## CSS Parts
76076
76302
  *
@@ -77257,9 +77483,15 @@ export type CustomElementsSolidJs = {
77257
77483
  *
77258
77484
  * **The picker has an entry of its own.** `FilterMenu` draws its pages with
77259
77485
  * `Menu`, which a field without a picker does not need, so this family's entry
77260
- * leaves it out. A page that writes one imports
77261
- * `@fusion.dev/helix/filter-input/menu` as well, and a picker written without it
77262
- * is reported once the page has loaded, with the entry to add.
77486
+ * leaves it out. A page that writes a `FilterMenu` imports both entries:
77487
+ *
77488
+ * ```js
77489
+ * import '@fusion.dev/helix/filter-input'
77490
+ * import '@fusion.dev/helix/filter-input/menu'
77491
+ * ```
77492
+ *
77493
+ * A picker written without the second is reported once the page has loaded,
77494
+ * with the entry to add.
77263
77495
  *
77264
77496
  * **Suggestions.** Slot options into `suggestions` and the field shows them,
77265
77497
  * moves through them with the arrow keys, and presses one on Enter. The option
@@ -77275,6 +77507,24 @@ export type CustomElementsSolidJs = {
77275
77507
  * completion back and put the caret after it, or the next parse reads the wrong
77276
77508
  * term.
77277
77509
  *
77510
+ * **Suggestions from a source.** Set `source` to a function, and the field asks
77511
+ * it for suggestions as the text changes and draws them as options in the
77512
+ * panel. It is given the term at the caret, the field the term is a value of,
77513
+ * the whole text, and an `AbortSignal`, and returns the suggestions or a
77514
+ * promise of them. `filter-delay` waits for typing to rest before asking, and
77515
+ * a later keystroke aborts a request still out. While a promise is pending, the
77516
+ * panel shows `loading-text` and a screen reader hears it, then the count.
77517
+ * Choosing a suggestion writes its value over the term at the caret, and a
77518
+ * finished `field:value` is read into a chip as Enter would. Cancel its
77519
+ * `helix-select` to write it yourself.
77520
+ *
77521
+ * ```js
77522
+ * filter.source = async ({ field, term, signal }) => {
77523
+ * const response = await fetch(`/values?field=${field}&q=${term}`, { signal })
77524
+ * return response.json()
77525
+ * }
77526
+ * ```
77527
+ *
77278
77528
  * **State.** Three things have three different owners:
77279
77529
  *
77280
77530
  * - `value` is the text. The user types, the element applies it, and `input`
@@ -77316,6 +77566,9 @@ export type CustomElementsSolidJs = {
77316
77566
  * them.
77317
77567
  * - `clear-label`/`clearLabel`: The name of the clear button, read by screen readers. The button shows only
77318
77568
  * an icon.
77569
+ * - `filter-delay`/`filterDelay`: How long typing rests before `source` is asked, in milliseconds. A delay
77570
+ * sends one request for a word in place of one for each letter. The arrow
77571
+ * keys and Enter ask at once. `0` asks on every keystroke.
77319
77572
  * - `filter-suggestions`/`filterSuggestions`: Whether the panel narrows itself to the suggestions that hold the term
77320
77573
  * being typed, as React Aria's Autocomplete filters. Off, the panel shows
77321
77574
  * what you slot and you narrow it.
@@ -77423,6 +77676,12 @@ export type CustomElementsSolidJs = {
77423
77676
  * imperatively later, and nothing is hydrating by then.
77424
77677
  *
77425
77678
  * Here rather than on each control.
77679
+ * - `source`: Where the suggestions come from: a function given the term at the caret,
77680
+ * the field it is a value of, the whole text, and an `AbortSignal`, which
77681
+ * returns the suggestions or a promise of them. Each is a string, or a
77682
+ * `value` with a `label` and `disabled`. The field draws them as options in
77683
+ * the panel, beside any you slot. A property only, there being no way to
77684
+ * write a function in markup. See the class description. (property only)
77426
77685
  * - `selectionDirection`: The direction of the selection, named as on `<input>`.
77427
77686
  *
77428
77687
  * **Published for the reason `Input` publishes them, and this element needs
@@ -77479,7 +77738,7 @@ export type CustomElementsSolidJs = {
77479
77738
  * - `helix-before-open`: Fired before the suggestions open. Cancelable: call `preventDefault()` to keep them closed.
77480
77739
  * - `helix-dismiss`: Fired when the user removes a token with its remove button or with Backspace in an empty field. A `FilterChip` that names a declared field sends `helix-facet` instead. Cancelable: call `preventDefault()` to keep the token.
77481
77740
  * - `helix-facet`: Fired when a filter changes, whether it was typed, picked, or removed. Cancelable: call `preventDefault()` to leave the text and the chip as they were.
77482
- * - `helix-select`: Fired by an option in `suggestions` when it is chosen, and bubbles out of the field. Cancelable: call `preventDefault()` to stop other listeners acting on it. The field takes no action on a choice; you decide what it does.
77741
+ * - `helix-select`: Fired by an option in `suggestions` when it is chosen, and bubbles out of the field. Cancelable: call `preventDefault()` to stop other listeners acting on it. The field takes no action on an option you slotted, and you decide what it does. A suggestion from `source` is written over the term at the caret unless you cancel it.
77483
77742
  * - `input`: Fired when the text changes.
77484
77743
  * - `toggle`: Fired when the suggestions panel opens or closes, with `newState` and `oldState`.
77485
77744
  *
@@ -77586,7 +77845,7 @@ export type CustomElementsSolidJs = {
77586
77845
  * - `label`: The label above the field.
77587
77846
  * - `lead`: The box before the text that holds the `start` slot.
77588
77847
  * - `live`: The live region that says how many suggestions the open panel offers. It is rendered from the first time the panel opens with suggestions.
77589
- * - `loading`: Shown in the panel while the suggestions load.
77848
+ * - `loading`: Shown in the panel while the suggestions load: while `loading` is set, or a request to `source` is out.
77590
77849
  * - `rest`: The count of tokens that did not fit. It is a `<button>` with `expandable` and a `<span>` without it.
77591
77850
  * - `surface`: The floating panel the suggestions sit in.
77592
77851
  * - `tags`: The row the tokens sit in.
@@ -77596,7 +77855,7 @@ export type CustomElementsSolidJs = {
77596
77855
  * These can be used to apply styling when a component is in a given state.
77597
77856
  *
77598
77857
  * - `invalid`: The field has an error to show, from the browser's validation or from your `feedback`.
77599
- * - `loading`: While `loading` is set.
77858
+ * - `loading`: While `loading` is set, or a request to `source` is out.
77600
77859
  * - `no-results`: `filter-suggestions` hid every suggestion, and `no-results-text` or the `no-results` slot says so.
77601
77860
  * - `open`: The suggestions are open.
77602
77861
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
@@ -77818,6 +78077,23 @@ export type CustomElementsSolidJs = {
77818
78077
  * Set `depth` to show the local graph: only the notes within that many links
77819
78078
  * of the selected one.
77820
78079
  *
78080
+ * The search field is a combobox over the list. Down and Up move through the
78081
+ * notes while the focus stays in the field, and Enter selects one.
78082
+ *
78083
+ * **Walk the links with Alt and the arrow keys**, in the list or in the
78084
+ * search field once its keys are on a note. The note the keys are on is
78085
+ * marked in the drawing.
78086
+ *
78087
+ * | Key | What it does |
78088
+ * |---|---|
78089
+ * | Alt+Right | Follows a link, to the first note the one the keys are on links to or from. |
78090
+ * | Alt+Down, Alt+Up | Moves to the next or the previous note linked to the one the step came from, wrapping. |
78091
+ * | Alt+Left | Goes back along the links walked. |
78092
+ *
78093
+ * Right and Left swap on a right-to-left page. Each step says the note, how it
78094
+ * stands to the note it came from, and its place among that note's links,
78095
+ * such as "Hiring plan. Linked from Roadmap. 2 of 3". Enter selects the note.
78096
+ *
77821
78097
  * Set `legend` to name the groups over the drawing, each a button that shows
77822
78098
  * or hides its notes. `hiddenGroups` holds the groups turned off, and the
77823
78099
  * list holds only what the drawing shows. The legend is a toolbar and one tab
@@ -77853,6 +78129,9 @@ export type CustomElementsSolidJs = {
77853
78129
  * - `legend`: Names the groups over the drawing, each a button in its color that shows
77854
78130
  * or hides its notes. Drawn where the notes have two groups or more.
77855
78131
  * - `legend-label`/`legendLabel`: The legend's name, read by screen readers.
78132
+ * - `link-count-label`/`linkCountLabel`: What screen readers hear when a walk along the links reaches a note that
78133
+ * has no link to follow, or goes back to a note: `{note}` for its name and
78134
+ * `{count}` for how many notes the list holds that it links to or from.
77856
78135
  * - `linked-both-label`/`linkedBothLabel`: How a note linked both to and from the selected one is described, with `{note}`.
77857
78136
  * - `linked-from-label`/`linkedFromLabel`: How a note the selected one links to is described, with `{note}`, the selected note's name.
77858
78137
  * - `links-to-label`/`linksToLabel`: How a note that links to the selected one is described, with `{note}`.
@@ -77877,6 +78156,10 @@ export type CustomElementsSolidJs = {
77877
78156
  * the list then holds, written with `count-label`.
77878
78157
  * - `two-finger-hint-label`/`twoFingerHintLabel`: The hint shown when one finger swipes over the graph with `gestures="cooperative"`.
77879
78158
  * - `using-label`/`usingLabel`: The line shown while the graph, with `gestures="activate"`, has the gestures.
78159
+ * - `walk-label`/`walkLabel`: What screen readers hear when a walk along the links moves to a note:
78160
+ * `{note}` for its name, `{relation}` for how it stands to the note the
78161
+ * step came from, such as "Linked from Roadmap", and `{index}` and `{count}`
78162
+ * for its place among that note's links.
77880
78163
  * - `wheel-hint-label`/`wheelHintLabel`: The hint shown when the wheel scrolls past the graph with
77881
78164
  * `gestures="cooperative"`. `{key}` is ⌘ on a Mac and Ctrl elsewhere.
77882
78165
  * - `zoomed-in-label`/`zoomedInLabel`: What screen readers hear once the drawing has zoomed in, after `moved()`.
@@ -78010,7 +78293,7 @@ export type CustomElementsSolidJs = {
78010
78293
  * - `helix-graph-filter`: A group in the legend was pressed, to show or hide its notes. The detail's `hidden` is every group that would be hidden. Cancelable: cancel it to keep the groups as they were, or to set `hiddenGroups` yourself.
78011
78294
  * - `helix-graph-layout`: A layout settled, with where it put each note, sent by `laidOut()`. Keep the positions and pass them back as each note's `x` and `y`, and `z` where a renderer draws in three dimensions.
78012
78295
  * - `helix-graph-pan`: A pan button or arrow key was pressed. `connectGraph` moves the drawing, then calls `moved()`.
78013
- * - `helix-graph-part-change`: The notes, the links, the selection, the depth or the gestures changed. Used by `connectGraph`; pages do not need to listen for it.
78296
+ * - `helix-graph-part-change`: The notes, the links, the selection, the depth, the note the keys are on, or the gestures changed. Used by `connectGraph`; pages do not need to listen for it.
78014
78297
  * - `helix-graph-ready`: The graph has been drawn whole, laid out and settled. Sent each time `drawn()` says it is drawn after it was not.
78015
78298
  * - `helix-graph-signal`: Something passed between two notes, sent by `signal()`. Used by `connectGraph`; pages do not need to listen for it.
78016
78299
  * - `helix-graph-zoom`: A zoom button or key was pressed. `connectGraph` zooms the drawing, then calls `moved()`.
@@ -78180,6 +78463,25 @@ export type CustomElementsSolidJs = {
78180
78463
  * `helix-before-change` and tells with `change`, and the `selection` part says
78181
78464
  * how many are selected, in `selection-label`.
78182
78465
  *
78466
+ * **Under `selection-mode` the strip is a grid**, so the selection is state a
78467
+ * reader is told rather than words alone: each column of the strip is a `row`,
78468
+ * a week with `rows="7"`, and each cell a `gridcell` named by its row in the
78469
+ * table and carrying `aria-selected`. The strip says
78470
+ * `aria-multiselectable` under `multiple` and points at the cell the keys rest
78471
+ * on with `aria-activedescendant`, so a screen reader reads that cell, and the
78472
+ * `live` part stays quiet. Without `selection-mode` nothing is selectable, and
78473
+ * the strip is an application with the readout, as every chart's plot is.
78474
+ *
78475
+ * **Readings are sent as every chart sends them.** `helix-reading-change`
78476
+ * says each move of the reading, by pointer, tap or key, and
78477
+ * `helix-reading-press` a reading clicked, tapped, or pressed with Enter or
78478
+ * Space, each with the row of the table in `index`.
78479
+ *
78480
+ * **Nothing to draw.** A table with no readings shows `empty-text`, "No
78481
+ * readings", under the strip, and `loading` shows `loading-text` there until
78482
+ * readings arrive. The `empty` and `loading` slots take markup in place of
78483
+ * either, as on every chart.
78484
+ *
78183
78485
  * **Keyboard.** The strip is one tab stop once it has cells.
78184
78486
  *
78185
78487
  * | Key | What it does |
@@ -78189,7 +78491,7 @@ export type CustomElementsSolidJs = {
78189
78491
  * | Right, Left | Moves a column on or back, a week with `rows="7"`. On a right-to-left page, Left moves on. |
78190
78492
  * | Home, End | Moves to the first or the last cell. |
78191
78493
  * | Page Down, Page Up | Moves a month on or back where the rows carry dates, and four columns otherwise. |
78192
- * | Enter, Space | Selects the cell, or lets it go, under `selection-mode`. |
78494
+ * | Enter, Space | Presses the cell, which sends `helix-reading-press`, and selects it or lets it go under `selection-mode`. |
78193
78495
  * | 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"`. |
78194
78496
  * | Escape | Puts the cell's tooltip away. |
78195
78497
  *
@@ -78199,10 +78501,6 @@ export type CustomElementsSolidJs = {
78199
78501
  *
78200
78502
  * - `busiest-label`/`busiestLabel`: The name the `overview` gives the busiest reading, `{busiestLabel}` in
78201
78503
  * `overview-label`.
78202
- * - `empty-text`/`emptyText`: Shown when the table has no readings in it.
78203
- *
78204
- * Never shown while the table cannot be read at all, which is a server render
78205
- * and the hydrating one after it: see `sourceKnown`.
78206
78504
  * - `gap`: Space between cells, in CSS pixels. It is a number for the same reason
78207
78505
  * `min-cell` is.
78208
78506
  * - `min-cell`/`minCell`: The smallest a cell may get before the strip draws fewer of them, in CSS pixels.
@@ -78233,9 +78531,7 @@ export type CustomElementsSolidJs = {
78233
78531
  * calendar heatmap does: a week is a column, so the strip reads along the
78234
78532
  * line in weeks, from the right on a right-to-left page, and top to bottom in
78235
78533
  * days.
78236
- * - `selected-label`/`selectedLabel`: What the readout adds for a selected cell, under `selection-mode`, after
78237
- * where the cell stands: "Day 1: 0 (1 of 14, selected)". Empty adds
78238
- * nothing.
78534
+ * - `selected-label`/`selectedLabel`: What the readout added for a selected cell, under `selection-mode`.
78239
78535
  * - `selection-label`/`selectionLabel`: What the `selection` part says after the selection changes. `{count}` is
78240
78536
  * how many cells are selected, written in the locale, and a language that
78241
78537
  * needs plural forms writes them: `{count, plural, one {# wybrany} few
@@ -78269,6 +78565,16 @@ export type CustomElementsSolidJs = {
78269
78565
  *
78270
78566
  * Set it to start with cells selected. Written by a press or a key under
78271
78567
  * `selection-mode`.
78568
+ * - `empty-text`/`emptyText`: The words shown in place of the drawing when the table has no readings,
78569
+ * and the fallback of the `empty` slot.
78570
+ * - `loading`: Whether the readings are still on their way. The chart shows
78571
+ * `loading-text` in place of an empty drawing until it has readings.
78572
+ *
78573
+ * Reflected, so a stylesheet can treat the chart while it waits. A chart
78574
+ * that already has readings keeps drawing them, so a refresh does not
78575
+ * blank it.
78576
+ * - `loading-text`/`loadingText`: The words shown in place of the drawing while `loading` is set and
78577
+ * there are no readings yet, and the fallback of the `loading` slot.
78272
78578
  * - `for`: The id of the table to read.
78273
78579
  *
78274
78580
  * Names a table in the same tree, so a chart inside another component's
@@ -78381,13 +78687,17 @@ export type CustomElementsSolidJs = {
78381
78687
  *
78382
78688
  * - `change`: Fired once a press or a key has changed which cells are selected.
78383
78689
  * - `helix-before-change`: Fired before a press or a key changes which cells are selected, with the `value` it would leave. Cancelable.
78690
+ * - `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.
78691
+ * - `helix-reading-press`: A reading was clicked, tapped, or pressed with Enter or Space, with the same detail as `helix-reading-change`.
78384
78692
  * - `helix-resize`: Fired when the number of cells drawn changes, with the new number.
78385
78693
  *
78386
78694
  * ## Slots
78387
78695
  *
78388
78696
  * Areas where markup can be added to the component.
78389
78697
  *
78698
+ * - `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`.
78390
78699
  * - `end`: Below the strip, at the trailing edge: usually the newest date.
78700
+ * - `loading`: Content shown under the strip while `loading` is set and there are no readings yet. Falls back to `loading-text`.
78391
78701
  * - `start`: Below the strip, at the leading edge: usually the oldest date.
78392
78702
  * - `summary`: Below the strip, in the middle: a summary of the range shown.
78393
78703
  *
@@ -78454,12 +78764,15 @@ export type CustomElementsSolidJs = {
78454
78764
  * - `cell`: One reading.
78455
78765
  * - `cell-active`: The cell the pointer or the keys rest on. Set alongside `cell`.
78456
78766
  * - `cell-selected`: A cell that is selected, under `selection-mode`. Set alongside `cell`.
78457
- * - `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.
78767
+ * - `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.
78458
78768
  * - `end`: The trailing slot's box.
78459
78769
  * - `footer`: The three-slot row under the strip.
78460
78770
  * - `live`: The readout: a polite live region that says the cell the keys moved to. Hide it visually.
78771
+ * - `loading`: The words under the strip while `loading` is set and there are no readings: the `loading` slot, falling back to `loading-text`.
78461
78772
  * - `mark`: The invisible point the tooltip is anchored to.
78462
78773
  * - `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.
78774
+ * - `plot`: The same element as `strip`, under the name every chart gives the drawing that takes focus.
78775
+ * - `row`: A column of cells, which a grid reads as a row, under `selection-mode`. It draws no box.
78463
78776
  * - `selection`: A polite region that says how many cells are selected after a change, rendered from the first change. Hide it visually.
78464
78777
  * - `start`: The leading slot's box.
78465
78778
  * - `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.
@@ -78488,6 +78801,7 @@ export type CustomElementsSolidJs = {
78488
78801
  *
78489
78802
  * - `active`: While a cell is shown, under the pointer or the keys, with its tooltip open.
78490
78803
  * - `empty`: While the `empty` part stands in place of the cells.
78804
+ * - `loading`: While the `loading` part stands in place of the cells.
78491
78805
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
78492
78806
  */
78493
78807
  "helix-headless-heatmap": Partial<
@@ -78697,6 +79011,15 @@ export type CustomElementsSolidJs = {
78697
79011
  *
78698
79012
  * Methods that can be called to access component functionality.
78699
79013
  *
79014
+ * - `click() => void`: Presses the button, as `click()` presses a native one: the command is sent,
79015
+ * the form submits or resets, and `helix-press` says `virtual`.
79016
+ *
79017
+ * **Passed to the inner control, because a click on the host reaches nothing
79018
+ * that acts.** The control in the shadow root is what answers a click, so
79019
+ * `click()` from a script, an automation or a test, dispatched on the host,
79020
+ * submitted nothing and sent no `helix-press`. The control's own click reaches
79021
+ * the host's listeners once, retargeted, as one from a native button does. A
79022
+ * disabled button does nothing, and a pending one refuses the press.
78700
79023
  * - `formAssociatedCallback(form: HTMLFormElement | null) => void`: Called by the browser when the control's form changes: watches the new
78701
79024
  * form's `checkValidity()`, as connecting does for the form it starts in.
78702
79025
  * - `formDisabledCallback(disabled: boolean) => void`: Called by the browser when an ancestor fieldset is disabled or enabled.
@@ -82801,6 +83124,9 @@ export type CustomElementsSolidJs = {
82801
83124
  * `focus()` above already puts focus on the control inside the row rather than
82802
83125
  * on the row, which is the whole of what moving here means.
82803
83126
  * - `select() => void`: Chooses the row, the same as pressing it.
83127
+ * - `click() => void`: Presses the row, as `click()` presses a native button: passed to the
83128
+ * control inside, which is what answers a click, so a script's `click()`
83129
+ * chooses the row, or follows its link, once.
82804
83130
  *
82805
83131
  * ## CSS Parts
82806
83132
  *
@@ -83649,6 +83975,12 @@ export type CustomElementsSolidJs = {
83649
83975
  * shows no timestamp rather than showing the epoch, which is what parsing an
83650
83976
  * empty string would give.
83651
83977
  * - `default-read`/`defaultRead`: Whether the notification starts as read, used until `read` is set.
83978
+ * - `dismiss-label`/`dismissLabel`: The dismiss control's name, read by screen readers, with `{label}` for the
83979
+ * row's own words.
83980
+ *
83981
+ * One sentence with the words in it, so a translation puts them where its
83982
+ * language does: `registerWords('de', { 'helix-notification': { dismissLabel:
83983
+ * '{label} schließen' } })`.
83652
83984
  * - `locale`: Locale for the timestamp.
83653
83985
  *
83654
83986
  * Empty is the runtime's own.
@@ -83670,16 +84002,6 @@ export type CustomElementsSolidJs = {
83670
84002
  * The unread mark is drawn, so a reader who cannot see it hears this word in
83671
84003
  * its place. Translate it with the rest of your interface.
83672
84004
  * - `dismissible`: Whether the element shows a control that dismisses it.
83673
- * - `dismiss-label`/`dismissLabel`: The dismiss control's label, read by screen readers.
83674
- *
83675
- * `attribute` is spelled out because Lit lowercases a property name to
83676
- * derive one rather than dash-casing it, so this would otherwise be
83677
- * reachable only as `dismisslabel`, which nobody would guess and no linter
83678
- * would catch.
83679
- *
83680
- * A word property: register it for a locale under the host's key. A family
83681
- * that names the control otherwise, such as Tag's `Remove {label}`,
83682
- * declares its own English with `@words` above the override.
83683
84005
  * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
83684
84006
  *
83685
84007
  * **Named `whenSettled` because `settled` is taken four times over**, by
@@ -88982,6 +89304,9 @@ export type CustomElementsSolidJs = {
88982
89304
  * - `focus(options?: FocusOptions) => void`: Puts focus on the control inside the item.
88983
89305
  * - `focusItem() => void`: Moves focus to the action. Part of `NavigableItem`, which the shared
88984
89306
  * keyboard controller uses for the arrow keys.
89307
+ * - `click() => void`: Presses the action, as `click()` presses a native button: passed to the
89308
+ * control inside, which is what answers a click, so a script's `click()`
89309
+ * chooses the action and follows its link, once.
88985
89310
  * - `select() => void`: Chooses the action, the same as pressing it.
88986
89311
  *
88987
89312
  * ## CSS Parts
@@ -91343,6 +91668,9 @@ export type CustomElementsSolidJs = {
91343
91668
  * listener refused it, or where the tab is not dismissible or is disabled.
91344
91669
  * The tab stays where it is either way: removing it is yours. Where the tab
91345
91670
  * had focus, focus moves to the tab beside it once you remove it.
91671
+ * - `click() => void`: Presses the tab, as `click()` presses a native button: passed to the
91672
+ * control inside, which is what answers a click, so a script's `click()`
91673
+ * selects the tab, or follows its link, once.
91346
91674
  * - `focusItem() => void`: Moves focus to the item's control, for the set's arrow keys.
91347
91675
  *
91348
91676
  * The set drives the keys and cannot reach the control itself, which is