@fusion.dev/helix 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.
@@ -6238,7 +6238,7 @@
6238
6238
  "declarations": [
6239
6239
  {
6240
6240
  "kind": "class",
6241
- "description": "One fragment shader draws over a full-screen triangle, and its palette comes\nfrom the tokens. A background built on `--helix-color-primary` changes when\nyour brand color changes.\n\nEvery shape ramps through four token stops, and the token layer inverts each\none: the page background, `primary-subtle`, `primary`, and a peak. The peak\nis the foreground on a dark page and `primary-active` on a light one, because\nmixing a saturated hue toward near-black removes its chroma. The component\nreads which way the page runs from the background's luminance, because the\nmode is a private token.\n\nThe geometry is three vertices derived from `gl_VertexID`. There is no\ndependency, scene graph, attribute, buffer, or upload.\n\nThe shader stops drawing in these cases:\n- The element is off screen or in a background tab.\n- `prefers-reduced-motion` is set. The element shows one still frame.\n- `paused` is set, from a pause control on your page. The element holds the\n frame it shows.\n- The browser takes back the drawing context, on a GPU reset or past its\n limit of about sixteen contexts. The gradient shows until the context\n returns.\n\nOn a renderer that draws on the CPU, such as a headless browser or a machine\nwith no usable GPU, the element shows the gradient. There the shader costs\nabout 450ms for the first frame of each element, against 2ms on a GPU.\n\nAura is styled only and has behavior, which the tier split does not otherwise\nallow. Its behavior is drawing to a canvas, so there is no structure for you\nto restyle and nothing for a headless version to hold.\n\n**Content placed inside sits over the field**, in a `content` part that\ncovers the aura, so an interactive aura answers the pointer over the\ncontent too. Clicks still reach the content. Style `::part(content)` to\nplace it, such as centering a hero's heading.\n\n**The colors are the theme's, and each has a hook**: `--aura-ground`,\n`--aura-haze`, `--aura-glow` and `--aura-peak`, read by the shader and by the\nfallback gradient alike, from wherever on the page you set them. A hook\nchanged while the aura draws, by a class, a style or the color mode,\nreaches the shader on the next frame.\n\nWhere the gradient shows in place of the shader, the aura matches\n`:state(fallback)` and sends `helix-aura-fallback` with the reason.",
6241
+ "description": "One fragment shader draws over a full-screen triangle, and its palette comes\nfrom the tokens. A background built on `--helix-color-primary` changes when\nyour brand color changes.\n\nEvery shape ramps through four token stops, and the token layer inverts each\none: the page background, `primary-subtle`, `primary`, and a peak. The peak\nis the foreground on a dark page and `primary-active` on a light one, because\nmixing a saturated hue toward near-black removes its chroma. The component\nreads which way the page runs from the background's luminance, because the\nmode is a private token.\n\nThe geometry is three vertices derived from `gl_VertexID`. There is no\ndependency, scene graph, attribute, buffer, or upload.\n\nThe shader stops drawing in these cases:\n- The element is off screen or in a background tab.\n- `prefers-reduced-motion` is set. The element shows one still frame.\n- `paused` is set, from a pause control on your page or from the aura's own\n under `pause-control`. The element holds the frame it shows.\n- The browser takes back the drawing context, on a GPU reset or past its\n limit of about sixteen contexts. The gradient shows until the context\n returns.\n\nOn a renderer that draws on the CPU, such as a headless browser or a machine\nwith no usable GPU, the element shows the gradient. There the shader costs\nabout 450ms for the first frame of each element, against 2ms on a GPU.\n\nAura is styled only and has behavior, which the tier split does not otherwise\nallow. Its behavior is drawing to a canvas, so there is no structure for you\nto restyle and nothing for a headless version to hold.\n\n**Content placed inside sits over the field**, in a `content` part that\ncovers the aura, so an interactive aura answers the pointer over the\ncontent too. Clicks still reach the content. Style `::part(content)` to\nplace it, such as centering a hero's heading.\n\n**The colors are the theme's, and each has a hook**: `--aura-ground`,\n`--aura-haze`, `--aura-glow` and `--aura-peak`, read by the shader and by the\nfallback gradient alike, from wherever on the page you set them. A hook\nchanged while the aura draws, by a class, a style or the color mode,\nreaches the shader on the next frame.\n\n**`pause-control` draws a control that stops the motion and starts it\nagain**, in the trailing corner of the field, as WCAG 2.2.2 asks of\nanything that moves for more than five seconds. It is a toggle button named\nby `pause-label`, which says it is pressed while the field is paused, and a\npress sends `change`. A reader who asked for reduced motion sees no motion\nand no control.\n\nWhere the gradient shows in place of the shader, the aura matches\n`:state(fallback)` and sends `helix-aura-fallback` with the reason.",
6242
6242
  "name": "HelixAura",
6243
6243
  "cssProperties": [
6244
6244
  {
@@ -6253,6 +6253,10 @@
6253
6253
  "description": "The faint stop between the ground and the glow. Defaults to `--helix-color-primary-subtle`.",
6254
6254
  "name": "--aura-haze"
6255
6255
  },
6256
+ {
6257
+ "description": "The pause control's ground. Defaults to `--helix-color-surface-overlay`.",
6258
+ "name": "--aura-pause-background-color"
6259
+ },
6256
6260
  {
6257
6261
  "description": "The hottest stop, at the center of a shape. Defaults to `--helix-color-primary-active` on a light page and `--helix-color-foreground` on a dark one.",
6258
6262
  "name": "--aura-peak"
@@ -6266,6 +6270,14 @@
6266
6270
  {
6267
6271
  "description": "The box over the field that holds the content. It covers the aura.",
6268
6272
  "name": "content"
6273
+ },
6274
+ {
6275
+ "description": "The control that pauses the field and starts it again, drawn under `pause-control`.",
6276
+ "name": "pause"
6277
+ },
6278
+ {
6279
+ "description": "The glyph on the pause control: pause while the field moves, play while it is paused.",
6280
+ "name": "pause-mark"
6269
6281
  }
6270
6282
  ],
6271
6283
  "slots": [
@@ -6275,6 +6287,16 @@
6275
6287
  }
6276
6288
  ],
6277
6289
  "members": [
6290
+ {
6291
+ "kind": "field",
6292
+ "name": "words",
6293
+ "type": {
6294
+ "text": "string"
6295
+ },
6296
+ "static": true,
6297
+ "default": "'helix-aura'",
6298
+ "description": "The key this family's words are registered under:\n`registerWords('de', { 'helix-aura': { pauseLabel: 'Bewegung anhalten' } })`."
6299
+ },
6278
6300
  {
6279
6301
  "kind": "field",
6280
6302
  "name": "bloom",
@@ -6325,6 +6347,16 @@
6325
6347
  "attribute": "interactive",
6326
6348
  "reflects": true
6327
6349
  },
6350
+ {
6351
+ "kind": "field",
6352
+ "name": "pauseControl",
6353
+ "type": {
6354
+ "text": "boolean"
6355
+ },
6356
+ "default": "false",
6357
+ "description": "Whether the aura draws its own control that pauses the field and starts it\nagain, in its trailing corner. Absent draws none, for a page with a pause\ncontrol of its own.",
6358
+ "attribute": "pause-control"
6359
+ },
6328
6360
  {
6329
6361
  "kind": "field",
6330
6362
  "name": "paused",
@@ -6335,6 +6367,19 @@
6335
6367
  "description": "Whether the field holds still on the frame it shows.\n\nSet it from a pause control on your page, so a reader can stop the motion,\nas WCAG 2.2.2 asks of anything that moves for more than five seconds. A\nchange to another property still repaints the frame. Clearing it starts\nthe field from where it stopped.",
6336
6368
  "attribute": "paused"
6337
6369
  },
6370
+ {
6371
+ "kind": "field",
6372
+ "name": "pauseLabel",
6373
+ "type": {
6374
+ "text": "string"
6375
+ },
6376
+ "default": "'Pause the motion'",
6377
+ "description": "The pause control's name, read by screen readers. The control is a toggle\nand says it is pressed while the field is paused, so the name stays the\nsame.",
6378
+ "attribute": "pause-label",
6379
+ "helix": {
6380
+ "words": true
6381
+ }
6382
+ },
6338
6383
  {
6339
6384
  "kind": "field",
6340
6385
  "name": "reach",
@@ -6631,6 +6676,23 @@
6631
6676
  "default": "0",
6632
6677
  "description": "When to stop waiting and draw anyway.\n\nA page that resizes the field every frame forever would otherwise never get\nan opening frame at all. Half a second is far longer than a load takes to\nsettle and far shorter than a reader waits before deciding the background is\nsimply a gradient."
6633
6678
  },
6679
+ {
6680
+ "kind": "method",
6681
+ "name": "renderPause",
6682
+ "privacy": "private",
6683
+ "return": {
6684
+ "type": {
6685
+ "text": "TemplateResult | typeof nothing"
6686
+ }
6687
+ },
6688
+ "description": "The aura's own pause control, under `pause-control`."
6689
+ },
6690
+ {
6691
+ "kind": "field",
6692
+ "name": "togglePause",
6693
+ "privacy": "private",
6694
+ "readonly": true
6695
+ },
6634
6696
  {
6635
6697
  "kind": "method",
6636
6698
  "name": "start",
@@ -7264,6 +7326,14 @@
7264
7326
  }
7265
7327
  ],
7266
7328
  "events": [
7329
+ {
7330
+ "type": {
7331
+ "text": "Event"
7332
+ },
7333
+ "description": "Fired when the aura's own pause control pauses the field or starts it again.",
7334
+ "name": "change",
7335
+ "reactProp": "onchange"
7336
+ },
7267
7337
  {
7268
7338
  "type": {
7269
7339
  "text": "HelixAuraFallbackEvent"
@@ -7318,6 +7388,15 @@
7318
7388
  "description": "Whether the pointer shifts and lifts the field.\n\nReflected because the stylesheet selects on it: a background is not\nhit-testable at rest, or it would swallow clicks meant for what is over it,\nand an element that is not hit-testable never receives the `pointermove`\nthis listens for. Asking for the pointer is asking for the hit test.",
7319
7389
  "fieldName": "interactive"
7320
7390
  },
7391
+ {
7392
+ "name": "pause-control",
7393
+ "type": {
7394
+ "text": "boolean"
7395
+ },
7396
+ "default": "false",
7397
+ "description": "Whether the aura draws its own control that pauses the field and starts it\nagain, in its trailing corner. Absent draws none, for a page with a pause\ncontrol of its own.",
7398
+ "fieldName": "pauseControl"
7399
+ },
7321
7400
  {
7322
7401
  "name": "paused",
7323
7402
  "type": {
@@ -7327,6 +7406,15 @@
7327
7406
  "description": "Whether the field holds still on the frame it shows.\n\nSet it from a pause control on your page, so a reader can stop the motion,\nas WCAG 2.2.2 asks of anything that moves for more than five seconds. A\nchange to another property still repaints the frame. Clearing it starts\nthe field from where it stopped.",
7328
7407
  "fieldName": "paused"
7329
7408
  },
7409
+ {
7410
+ "name": "pause-label",
7411
+ "type": {
7412
+ "text": "string"
7413
+ },
7414
+ "default": "'Pause the motion'",
7415
+ "description": "The pause control's name, read by screen readers. The control is a toggle\nand says it is pressed while the field is paused, so the name stays the\nsame.",
7416
+ "fieldName": "pauseLabel"
7417
+ },
7330
7418
  {
7331
7419
  "name": "reach",
7332
7420
  "type": {
@@ -15888,6 +15976,23 @@
15888
15976
  "module": "src/button/root/button-root.ts"
15889
15977
  }
15890
15978
  },
15979
+ {
15980
+ "kind": "method",
15981
+ "name": "click",
15982
+ "return": {
15983
+ "type": {
15984
+ "text": "void"
15985
+ }
15986
+ },
15987
+ "description": "Presses the button, as `click()` presses a native one: the command is sent,\nthe form submits or resets, and `helix-press` says `virtual`.\n\n**Passed to the inner control, because a click on the host reaches nothing\nthat acts.** The control in the shadow root is what answers a click, so\n`click()` from a script, an automation or a test, dispatched on the host,\nsubmitted nothing and sent no `helix-press`. The control's own click reaches\nthe host's listeners once, retargeted, as one from a native button does. A\ndisabled button does nothing, and a pending one refuses the press.",
15988
+ "type": {
15989
+ "text": "click() => void"
15990
+ },
15991
+ "inheritedFrom": {
15992
+ "name": "HelixHeadlessButton",
15993
+ "module": "src/button/root/button-root.ts"
15994
+ }
15995
+ },
15891
15996
  {
15892
15997
  "kind": "method",
15893
15998
  "name": "act",
@@ -55439,6 +55544,23 @@
55439
55544
  "module": "src/button/root/button-root.ts"
55440
55545
  }
55441
55546
  },
55547
+ {
55548
+ "kind": "method",
55549
+ "name": "click",
55550
+ "return": {
55551
+ "type": {
55552
+ "text": "void"
55553
+ }
55554
+ },
55555
+ "description": "Presses the button, as `click()` presses a native one: the command is sent,\nthe form submits or resets, and `helix-press` says `virtual`.\n\n**Passed to the inner control, because a click on the host reaches nothing\nthat acts.** The control in the shadow root is what answers a click, so\n`click()` from a script, an automation or a test, dispatched on the host,\nsubmitted nothing and sent no `helix-press`. The control's own click reaches\nthe host's listeners once, retargeted, as one from a native button does. A\ndisabled button does nothing, and a pending one refuses the press.",
55556
+ "type": {
55557
+ "text": "click() => void"
55558
+ },
55559
+ "inheritedFrom": {
55560
+ "name": "HelixHeadlessButton",
55561
+ "module": "src/button/root/button-root.ts"
55562
+ }
55563
+ },
55442
55564
  {
55443
55565
  "kind": "method",
55444
55566
  "name": "act",
@@ -78452,6 +78574,23 @@
78452
78574
  "module": "src/drilldown/item/drilldown-item.ts"
78453
78575
  }
78454
78576
  },
78577
+ {
78578
+ "kind": "method",
78579
+ "name": "click",
78580
+ "return": {
78581
+ "type": {
78582
+ "text": "void"
78583
+ }
78584
+ },
78585
+ "description": "Presses the row, as `click()` presses a native button: passed to the\ncontrol inside, which is what answers a click, so a script's `click()`\nchooses the row, or follows its link, once.",
78586
+ "type": {
78587
+ "text": "click() => void"
78588
+ },
78589
+ "inheritedFrom": {
78590
+ "name": "HelixHeadlessDrilldownItem",
78591
+ "module": "src/drilldown/item/drilldown-item.ts"
78592
+ }
78593
+ },
78455
78594
  {
78456
78595
  "kind": "field",
78457
78596
  "name": "tier",
@@ -87900,6 +88039,20 @@
87900
88039
  "module": "src/filter-input/root/filter-input-root.ts"
87901
88040
  }
87902
88041
  },
88042
+ {
88043
+ "kind": "field",
88044
+ "name": "filterDelay",
88045
+ "type": {
88046
+ "text": "number"
88047
+ },
88048
+ "default": "0",
88049
+ "description": "How long typing rests before `source` is asked, in milliseconds. A delay\nsends one request for a word in place of one for each letter. The arrow\nkeys and Enter ask at once. `0` asks on every keystroke.",
88050
+ "attribute": "filter-delay",
88051
+ "inheritedFrom": {
88052
+ "name": "HelixHeadlessFilterInput",
88053
+ "module": "src/filter-input/root/filter-input-root.ts"
88054
+ }
88055
+ },
87903
88056
  {
87904
88057
  "kind": "field",
87905
88058
  "name": "filterSuggestions",
@@ -87974,6 +88127,18 @@
87974
88127
  "module": "src/filter-input/root/filter-input-root.ts"
87975
88128
  }
87976
88129
  },
88130
+ {
88131
+ "kind": "field",
88132
+ "name": "source",
88133
+ "type": {
88134
+ "text": "FilterSource | undefined | undefined"
88135
+ },
88136
+ "description": "Where the suggestions come from: a function given the term at the caret,\nthe field it is a value of, the whole text, and an `AbortSignal`, which\nreturns the suggestions or a promise of them. Each is a string, or a\n`value` with a `label` and `disabled`. The field draws them as options in\nthe panel, beside any you slot. A property only, there being no way to\nwrite a function in markup. See the class description.",
88137
+ "inheritedFrom": {
88138
+ "name": "HelixHeadlessFilterInput",
88139
+ "module": "src/filter-input/root/filter-input-root.ts"
88140
+ }
88141
+ },
87977
88142
  {
87978
88143
  "kind": "field",
87979
88144
  "name": "suggestionLabel",
@@ -88521,6 +88686,178 @@
88521
88686
  "module": "src/filter-input/root/filter-input-root.ts"
88522
88687
  }
88523
88688
  },
88689
+ {
88690
+ "kind": "field",
88691
+ "name": "fetching",
88692
+ "type": {
88693
+ "text": "boolean"
88694
+ },
88695
+ "privacy": "private",
88696
+ "default": "false",
88697
+ "description": "Whether a request to `source` is out, which the panel shows as loading.",
88698
+ "inheritedFrom": {
88699
+ "name": "HelixHeadlessFilterInput",
88700
+ "module": "src/filter-input/root/filter-input-root.ts"
88701
+ }
88702
+ },
88703
+ {
88704
+ "kind": "field",
88705
+ "name": "busy",
88706
+ "type": {
88707
+ "text": "boolean"
88708
+ },
88709
+ "privacy": "private",
88710
+ "description": "Whether the suggestions are loading: `loading`, or a request to `source` out.",
88711
+ "readonly": true,
88712
+ "inheritedFrom": {
88713
+ "name": "HelixHeadlessFilterInput",
88714
+ "module": "src/filter-input/root/filter-input-root.ts"
88715
+ }
88716
+ },
88717
+ {
88718
+ "kind": "field",
88719
+ "name": "request",
88720
+ "type": {
88721
+ "text": "AbortController | undefined"
88722
+ },
88723
+ "privacy": "private",
88724
+ "description": "The request to `source` still out, which a later one aborts.",
88725
+ "inheritedFrom": {
88726
+ "name": "HelixHeadlessFilterInput",
88727
+ "module": "src/filter-input/root/filter-input-root.ts"
88728
+ }
88729
+ },
88730
+ {
88731
+ "kind": "field",
88732
+ "name": "asked",
88733
+ "type": {
88734
+ "text": "string | undefined"
88735
+ },
88736
+ "privacy": "private",
88737
+ "description": "The text `source` was last asked about, so focus alone does not ask again.",
88738
+ "inheritedFrom": {
88739
+ "name": "HelixHeadlessFilterInput",
88740
+ "module": "src/filter-input/root/filter-input-root.ts"
88741
+ }
88742
+ },
88743
+ {
88744
+ "kind": "field",
88745
+ "name": "used",
88746
+ "type": {
88747
+ "text": "FilterSource | undefined"
88748
+ },
88749
+ "privacy": "private",
88750
+ "description": "The source the suggestions drawn now came from.",
88751
+ "inheritedFrom": {
88752
+ "name": "HelixHeadlessFilterInput",
88753
+ "module": "src/filter-input/root/filter-input-root.ts"
88754
+ }
88755
+ },
88756
+ {
88757
+ "kind": "field",
88758
+ "name": "sourced",
88759
+ "type": {
88760
+ "text": "SuggestionOption[]"
88761
+ },
88762
+ "privacy": "private",
88763
+ "default": "[]",
88764
+ "description": "The options this element drew from what `source` gave, which the next answer replaces.",
88765
+ "inheritedFrom": {
88766
+ "name": "HelixHeadlessFilterInput",
88767
+ "module": "src/filter-input/root/filter-input-root.ts"
88768
+ }
88769
+ },
88770
+ {
88771
+ "kind": "field",
88772
+ "name": "asking",
88773
+ "privacy": "private",
88774
+ "readonly": true,
88775
+ "default": "new DelayController(this, { renders: false })",
88776
+ "description": "The request waiting out `filterDelay`, if any.",
88777
+ "inheritedFrom": {
88778
+ "name": "HelixHeadlessFilterInput",
88779
+ "module": "src/filter-input/root/filter-input-root.ts"
88780
+ }
88781
+ },
88782
+ {
88783
+ "kind": "method",
88784
+ "name": "resetSource",
88785
+ "privacy": "private",
88786
+ "return": {
88787
+ "type": {
88788
+ "text": "void"
88789
+ }
88790
+ },
88791
+ "description": "A new source, or none: what the old one gave goes, and the new one is\nasked where the reader is in the field.",
88792
+ "inheritedFrom": {
88793
+ "name": "HelixHeadlessFilterInput",
88794
+ "module": "src/filter-input/root/filter-input-root.ts"
88795
+ }
88796
+ },
88797
+ {
88798
+ "kind": "method",
88799
+ "name": "askSoon",
88800
+ "privacy": "private",
88801
+ "return": {
88802
+ "type": {
88803
+ "text": "void"
88804
+ }
88805
+ },
88806
+ "description": "Asks `source` once typing rests for `filterDelay`, or at once without one.",
88807
+ "inheritedFrom": {
88808
+ "name": "HelixHeadlessFilterInput",
88809
+ "module": "src/filter-input/root/filter-input-root.ts"
88810
+ }
88811
+ },
88812
+ {
88813
+ "kind": "method",
88814
+ "name": "ask",
88815
+ "privacy": "private",
88816
+ "return": {
88817
+ "type": {
88818
+ "text": "void"
88819
+ }
88820
+ },
88821
+ "description": "Asks `source` for suggestions for the term at the caret, and draws what\nit gives.\n\n**A later request aborts this one, and an answer that arrives late is\ndropped**, whether or not the source heeds the signal: the panel shows\nwhat the text says now.",
88822
+ "inheritedFrom": {
88823
+ "name": "HelixHeadlessFilterInput",
88824
+ "module": "src/filter-input/root/filter-input-root.ts"
88825
+ }
88826
+ },
88827
+ {
88828
+ "kind": "method",
88829
+ "name": "drawSourced",
88830
+ "privacy": "private",
88831
+ "return": {
88832
+ "type": {
88833
+ "text": "void"
88834
+ }
88835
+ },
88836
+ "parameters": [
88837
+ {
88838
+ "name": "suggestions",
88839
+ "type": {
88840
+ "text": "readonly FilterSuggestion[]"
88841
+ }
88842
+ }
88843
+ ],
88844
+ "description": "Draws what `source` gave as options in the `suggestions` slot, in place of\nthe ones it gave before, and leaves the ones you slotted alone. The\noptions are this tier's `Option`, which a page on the headless tier\nimports; one not registered is reported.",
88845
+ "inheritedFrom": {
88846
+ "name": "HelixHeadlessFilterInput",
88847
+ "module": "src/filter-input/root/filter-input-root.ts"
88848
+ }
88849
+ },
88850
+ {
88851
+ "kind": "field",
88852
+ "name": "handleSourcedSelect",
88853
+ "privacy": "private",
88854
+ "readonly": true,
88855
+ "description": "A suggestion `source` gave, chosen: its value written over the term at the\ncaret, and a finished `field:value` read into a chip, as Enter reads it.\n\n**After every listener has had its turn**, as a chip under `chips` is\ndrawn, so a `preventDefault()` on the `helix-select` is read and leaves the\ntext to you.",
88856
+ "inheritedFrom": {
88857
+ "name": "HelixHeadlessFilterInput",
88858
+ "module": "src/filter-input/root/filter-input-root.ts"
88859
+ }
88860
+ },
88524
88861
  {
88525
88862
  "kind": "method",
88526
88863
  "name": "move",
@@ -89829,6 +90166,19 @@
89829
90166
  "module": "src/filter-input/root/filter-input-root.ts"
89830
90167
  }
89831
90168
  },
90169
+ {
90170
+ "name": "filter-delay",
90171
+ "type": {
90172
+ "text": "number"
90173
+ },
90174
+ "default": "0",
90175
+ "description": "How long typing rests before `source` is asked, in milliseconds. A delay\nsends one request for a word in place of one for each letter. The arrow\nkeys and Enter ask at once. `0` asks on every keystroke.",
90176
+ "fieldName": "filterDelay",
90177
+ "inheritedFrom": {
90178
+ "name": "HelixHeadlessFilterInput",
90179
+ "module": "src/filter-input/root/filter-input-root.ts"
90180
+ }
90181
+ },
89832
90182
  {
89833
90183
  "name": "filter-suggestions",
89834
90184
  "type": {
@@ -90035,7 +90385,7 @@
90035
90385
  "type": {
90036
90386
  "text": "HelixSelectEvent"
90037
90387
  },
90038
- "description": "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.",
90388
+ "description": "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.",
90039
90389
  "name": "helix-select",
90040
90390
  "reactProp": "onhelix-select",
90041
90391
  "inheritedFrom": {
@@ -90212,7 +90562,7 @@
90212
90562
  }
90213
90563
  },
90214
90564
  {
90215
- "description": "Shown in the panel while the suggestions load.",
90565
+ "description": "Shown in the panel while the suggestions load: while `loading` is set, or a request to `source` is out.",
90216
90566
  "name": "loading",
90217
90567
  "inheritedFrom": {
90218
90568
  "name": "HelixHeadlessFilterInput",
@@ -90254,7 +90604,7 @@
90254
90604
  }
90255
90605
  },
90256
90606
  {
90257
- "description": "While `loading` is set.",
90607
+ "description": "While `loading` is set, or a request to `source` is out.",
90258
90608
  "name": "loading",
90259
90609
  "inheritedFrom": {
90260
90610
  "name": "HelixHeadlessFilterInput",
@@ -93504,6 +93854,23 @@
93504
93854
  "module": "src/graph/root/graph-root.ts"
93505
93855
  }
93506
93856
  },
93857
+ {
93858
+ "kind": "field",
93859
+ "name": "linkCountLabel",
93860
+ "type": {
93861
+ "text": "string"
93862
+ },
93863
+ "default": "'{note}. {count, plural, =0 {No links} one {# link} other {# links}}'",
93864
+ "description": "What screen readers hear when a walk along the links reaches a note that\nhas no link to follow, or goes back to a note: `{note}` for its name and\n`{count}` for how many notes the list holds that it links to or from.",
93865
+ "attribute": "link-count-label",
93866
+ "helix": {
93867
+ "words": true
93868
+ },
93869
+ "inheritedFrom": {
93870
+ "name": "HelixHeadlessGraph",
93871
+ "module": "src/graph/root/graph-root.ts"
93872
+ }
93873
+ },
93507
93874
  {
93508
93875
  "kind": "field",
93509
93876
  "name": "linkedBothLabel",
@@ -93793,6 +94160,23 @@
93793
94160
  "module": "src/graph/root/graph-root.ts"
93794
94161
  }
93795
94162
  },
94163
+ {
94164
+ "kind": "field",
94165
+ "name": "walkLabel",
94166
+ "type": {
94167
+ "text": "string"
94168
+ },
94169
+ "default": "'{note}. {relation}. {index} of {count}'",
94170
+ "description": "What screen readers hear when a walk along the links moves to a note:\n`{note}` for its name, `{relation}` for how it stands to the note the\nstep came from, such as \"Linked from Roadmap\", and `{index}` and `{count}`\nfor its place among that note's links.",
94171
+ "attribute": "walk-label",
94172
+ "helix": {
94173
+ "words": true
94174
+ },
94175
+ "inheritedFrom": {
94176
+ "name": "HelixHeadlessGraph",
94177
+ "module": "src/graph/root/graph-root.ts"
94178
+ }
94179
+ },
93796
94180
  {
93797
94181
  "kind": "field",
93798
94182
  "name": "zoomedInLabel",
@@ -93869,6 +94253,61 @@
93869
94253
  "module": "src/graph/root/graph-root.ts"
93870
94254
  }
93871
94255
  },
94256
+ {
94257
+ "kind": "field",
94258
+ "name": "fieldKeys",
94259
+ "type": {
94260
+ "text": "boolean"
94261
+ },
94262
+ "privacy": "private",
94263
+ "default": "false",
94264
+ "description": "Whether the search field's arrow keys have moved onto a note, which the\nfield then names as its `aria-activedescendant` while the focus stays in\nit. Typing, Left, Right, Escape, and leaving the field let it go.",
94265
+ "inheritedFrom": {
94266
+ "name": "HelixHeadlessGraph",
94267
+ "module": "src/graph/root/graph-root.ts"
94268
+ }
94269
+ },
94270
+ {
94271
+ "kind": "field",
94272
+ "name": "listKeys",
94273
+ "type": {
94274
+ "text": "boolean"
94275
+ },
94276
+ "privacy": "private",
94277
+ "default": "false",
94278
+ "description": "Whether the list has the focus, so the drawing marks the note its keys are on.",
94279
+ "inheritedFrom": {
94280
+ "name": "HelixHeadlessGraph",
94281
+ "module": "src/graph/root/graph-root.ts"
94282
+ }
94283
+ },
94284
+ {
94285
+ "kind": "field",
94286
+ "name": "trail",
94287
+ "type": {
94288
+ "text": "string[]"
94289
+ },
94290
+ "privacy": "private",
94291
+ "default": "[]",
94292
+ "description": "The notes a walk along the links stepped from, by `id`, the last the one\nthe note the keys are on was reached from. Empty when the keys moved some\nother way.",
94293
+ "inheritedFrom": {
94294
+ "name": "HelixHeadlessGraph",
94295
+ "module": "src/graph/root/graph-root.ts"
94296
+ }
94297
+ },
94298
+ {
94299
+ "kind": "field",
94300
+ "name": "keyedSent",
94301
+ "type": {
94302
+ "text": "string | undefined"
94303
+ },
94304
+ "privacy": "private",
94305
+ "description": "The note the drawing last heard the keys are on, so it hears each move once.",
94306
+ "inheritedFrom": {
94307
+ "name": "HelixHeadlessGraph",
94308
+ "module": "src/graph/root/graph-root.ts"
94309
+ }
94310
+ },
93872
94311
  {
93873
94312
  "kind": "field",
93874
94313
  "name": "adjacency",
@@ -94043,6 +94482,21 @@
94043
94482
  "module": "src/graph/root/graph-root.ts"
94044
94483
  }
94045
94484
  },
94485
+ {
94486
+ "kind": "method",
94487
+ "name": "keyedId",
94488
+ "privacy": "private",
94489
+ "return": {
94490
+ "type": {
94491
+ "text": "string | undefined"
94492
+ }
94493
+ },
94494
+ "description": "The `id` of the note the keys are on, or `undefined` where neither the list nor the field has them.",
94495
+ "inheritedFrom": {
94496
+ "name": "HelixHeadlessGraph",
94497
+ "module": "src/graph/root/graph-root.ts"
94498
+ }
94499
+ },
94046
94500
  {
94047
94501
  "kind": "field",
94048
94502
  "name": "ready",
@@ -94296,6 +94750,10 @@
94296
94750
  "type": {
94297
94751
  "text": "number"
94298
94752
  }
94753
+ },
94754
+ {
94755
+ "name": "walking",
94756
+ "default": "false"
94299
94757
  }
94300
94758
  ],
94301
94759
  "description": "Moves the keyboard to a row, and the list to show it.\n\n**The row the keys are on is always drawn**, beside the window where it is\noutside it, so `aria-activedescendant` names a row that exists. The list\nthen scrolls to it, see `revealCursor`.",
@@ -94385,6 +94843,104 @@
94385
94843
  "module": "src/graph/root/graph-root.ts"
94386
94844
  }
94387
94845
  },
94846
+ {
94847
+ "kind": "method",
94848
+ "name": "linkedRows",
94849
+ "privacy": "private",
94850
+ "return": {
94851
+ "type": {
94852
+ "text": "number[]"
94853
+ }
94854
+ },
94855
+ "parameters": [
94856
+ {
94857
+ "name": "id",
94858
+ "type": {
94859
+ "text": "string"
94860
+ }
94861
+ }
94862
+ ],
94863
+ "description": "The rows of the notes `id` links to or is linked from, in the list's\norder, which is the order of their names. Only the notes the list holds:\na search, the legend, or `depth` leaves the others out.",
94864
+ "inheritedFrom": {
94865
+ "name": "HelixHeadlessGraph",
94866
+ "module": "src/graph/root/graph-root.ts"
94867
+ }
94868
+ },
94869
+ {
94870
+ "kind": "method",
94871
+ "name": "relationFrom",
94872
+ "privacy": "private",
94873
+ "return": {
94874
+ "type": {
94875
+ "text": "string"
94876
+ }
94877
+ },
94878
+ "parameters": [
94879
+ {
94880
+ "name": "from",
94881
+ "type": {
94882
+ "text": "string"
94883
+ }
94884
+ },
94885
+ {
94886
+ "name": "id",
94887
+ "type": {
94888
+ "text": "string"
94889
+ }
94890
+ }
94891
+ ],
94892
+ "description": "How the note `id` stands to the note `from`, in the words the list uses for the selection.",
94893
+ "inheritedFrom": {
94894
+ "name": "HelixHeadlessGraph",
94895
+ "module": "src/graph/root/graph-root.ts"
94896
+ }
94897
+ },
94898
+ {
94899
+ "kind": "method",
94900
+ "name": "walk",
94901
+ "privacy": "private",
94902
+ "return": {
94903
+ "type": {
94904
+ "text": "boolean"
94905
+ }
94906
+ },
94907
+ "parameters": [
94908
+ {
94909
+ "name": "event",
94910
+ "type": {
94911
+ "text": "KeyboardEvent"
94912
+ }
94913
+ }
94914
+ ],
94915
+ "description": "A walk along the links from the note the keys are on, with Alt and the\narrow keys, so a reader follows the lines of the drawing and not only\nthe order of the list. **The same four keys a tree takes**, with Alt,\nsince the list's own arrows already move through it:\n\n- Alt+Right follows a link, to the first note the one the keys are on\n links to or from.\n- Alt+Down and Alt+Up move to the next and the previous note linked to\n the one the step came from, wrapping.\n- Alt+Left goes back along the links walked.\n\nRight and Left swap on a right-to-left page. Each step says the note, how\nit stands to the note it was reached from, and its place among that\nnote's links. Returns whether the key was one of the walk's.",
94916
+ "inheritedFrom": {
94917
+ "name": "HelixHeadlessGraph",
94918
+ "module": "src/graph/root/graph-root.ts"
94919
+ }
94920
+ },
94921
+ {
94922
+ "kind": "method",
94923
+ "name": "sayLinks",
94924
+ "privacy": "private",
94925
+ "return": {
94926
+ "type": {
94927
+ "text": "void"
94928
+ }
94929
+ },
94930
+ "parameters": [
94931
+ {
94932
+ "name": "at",
94933
+ "type": {
94934
+ "text": "number"
94935
+ }
94936
+ }
94937
+ ],
94938
+ "description": "Says the note at row `at` and how many notes in the list it links to or from.",
94939
+ "inheritedFrom": {
94940
+ "name": "HelixHeadlessGraph",
94941
+ "module": "src/graph/root/graph-root.ts"
94942
+ }
94943
+ },
94388
94944
  {
94389
94945
  "kind": "method",
94390
94946
  "name": "pageRows",
@@ -94405,7 +94961,18 @@
94405
94961
  "name": "handleSearchKeydown",
94406
94962
  "privacy": "private",
94407
94963
  "readonly": true,
94408
- "description": "The search field's keys, which belong to the field and never pan the\ngraph. Escape empties a search that has words in it, and passes through\nan empty one to whatever the page does with it.",
94964
+ "description": "The search field's keys, which belong to the field and never pan the\ngraph.\n\n**The field is a combobox over the list**, as React Aria's Autocomplete\nand the APG combobox are: the focus stays in the field, and Down and Up\nmove the keys through the notes, which the field names as its\n`aria-activedescendant`. Down starts on the note the keys were last on,\nthe first after a search, and Up on the last. Page Down and Page Up move\na page, Enter selects, Alt and the arrows walk the links as in the list,\nand Left, Right, Home and End go back to the text.\n\nEscape lets the note go, then empties a search that has words in it, and\npasses through an empty one to whatever the page does with it.",
94965
+ "inheritedFrom": {
94966
+ "name": "HelixHeadlessGraph",
94967
+ "module": "src/graph/root/graph-root.ts"
94968
+ }
94969
+ },
94970
+ {
94971
+ "kind": "field",
94972
+ "name": "handleSearchBlur",
94973
+ "privacy": "private",
94974
+ "readonly": true,
94975
+ "description": "Leaving the field lets go of the note its keys were on.",
94409
94976
  "inheritedFrom": {
94410
94977
  "name": "HelixHeadlessGraph",
94411
94978
  "module": "src/graph/root/graph-root.ts"
@@ -94448,6 +95015,7 @@
94448
95015
  "name": "handleSearch",
94449
95016
  "privacy": "private",
94450
95017
  "readonly": true,
95018
+ "description": "Typing is a new search, read from its top, with no note under the keys until Down.",
94451
95019
  "inheritedFrom": {
94452
95020
  "name": "HelixHeadlessGraph",
94453
95021
  "module": "src/graph/root/graph-root.ts"
@@ -95166,6 +95734,19 @@
95166
95734
  "module": "src/graph/root/graph-root.ts"
95167
95735
  }
95168
95736
  },
95737
+ {
95738
+ "name": "link-count-label",
95739
+ "type": {
95740
+ "text": "string"
95741
+ },
95742
+ "default": "'{note}. {count, plural, =0 {No links} one {# link} other {# links}}'",
95743
+ "description": "What screen readers hear when a walk along the links reaches a note that\nhas no link to follow, or goes back to a note: `{note}` for its name and\n`{count}` for how many notes the list holds that it links to or from.",
95744
+ "fieldName": "linkCountLabel",
95745
+ "inheritedFrom": {
95746
+ "name": "HelixHeadlessGraph",
95747
+ "module": "src/graph/root/graph-root.ts"
95748
+ }
95749
+ },
95169
95750
  {
95170
95751
  "name": "linked-both-label",
95171
95752
  "type": {
@@ -95387,6 +95968,19 @@
95387
95968
  "module": "src/graph/root/graph-root.ts"
95388
95969
  }
95389
95970
  },
95971
+ {
95972
+ "name": "walk-label",
95973
+ "type": {
95974
+ "text": "string"
95975
+ },
95976
+ "default": "'{note}. {relation}. {index} of {count}'",
95977
+ "description": "What screen readers hear when a walk along the links moves to a note:\n`{note}` for its name, `{relation}` for how it stands to the note the\nstep came from, such as \"Linked from Roadmap\", and `{index}` and `{count}`\nfor its place among that note's links.",
95978
+ "fieldName": "walkLabel",
95979
+ "inheritedFrom": {
95980
+ "name": "HelixHeadlessGraph",
95981
+ "module": "src/graph/root/graph-root.ts"
95982
+ }
95983
+ },
95390
95984
  {
95391
95985
  "name": "wheel-hint-label",
95392
95986
  "type": {
@@ -95492,7 +96086,7 @@
95492
96086
  "type": {
95493
96087
  "text": "HelixGraphPartChangeEvent"
95494
96088
  },
95495
- "description": "The notes, the links, the selection, the depth or the gestures changed. Used by `connectGraph`; pages do not need to listen for it.",
96089
+ "description": "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.",
95496
96090
  "name": "helix-graph-part-change",
95497
96091
  "reactProp": "onhelix-graph-part-change",
95498
96092
  "inheritedFrom": {
@@ -97087,7 +97681,7 @@
97087
97681
  }
97088
97682
  },
97089
97683
  {
97090
- "description": "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.",
97684
+ "description": "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.",
97091
97685
  "name": "empty",
97092
97686
  "inheritedFrom": {
97093
97687
  "name": "HelixHeadlessHeatmap",
@@ -97102,6 +97696,14 @@
97102
97696
  "module": "src/heatmap/root/heatmap-root.ts"
97103
97697
  }
97104
97698
  },
97699
+ {
97700
+ "description": "The words under the strip while `loading` is set and there are no readings: the `loading` slot, falling back to `loading-text`.",
97701
+ "name": "loading",
97702
+ "inheritedFrom": {
97703
+ "name": "HelixHeadlessHeatmap",
97704
+ "module": "src/heatmap/root/heatmap-root.ts"
97705
+ }
97706
+ },
97105
97707
  {
97106
97708
  "description": "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.",
97107
97709
  "name": "overview",
@@ -97110,6 +97712,22 @@
97110
97712
  "module": "src/heatmap/root/heatmap-root.ts"
97111
97713
  }
97112
97714
  },
97715
+ {
97716
+ "description": "The same element as `strip`, under the name every chart gives the drawing that takes focus.",
97717
+ "name": "plot",
97718
+ "inheritedFrom": {
97719
+ "name": "HelixHeadlessHeatmap",
97720
+ "module": "src/heatmap/root/heatmap-root.ts"
97721
+ }
97722
+ },
97723
+ {
97724
+ "description": "A column of cells, which a grid reads as a row, under `selection-mode`. It draws no box.",
97725
+ "name": "row",
97726
+ "inheritedFrom": {
97727
+ "name": "HelixHeadlessHeatmap",
97728
+ "module": "src/heatmap/root/heatmap-root.ts"
97729
+ }
97730
+ },
97113
97731
  {
97114
97732
  "description": "A polite region that says how many cells are selected after a change, rendered from the first change. Hide it visually.",
97115
97733
  "name": "selection",
@@ -97167,6 +97785,22 @@
97167
97785
  "name": "HelixHeadlessHeatmap",
97168
97786
  "module": "src/heatmap/root/heatmap-root.ts"
97169
97787
  }
97788
+ },
97789
+ {
97790
+ "description": "Content shown under the strip when the table has no readings, such as a link to add the first. Falls back to `empty-text`.",
97791
+ "name": "empty",
97792
+ "inheritedFrom": {
97793
+ "name": "HelixHeadlessHeatmap",
97794
+ "module": "src/heatmap/root/heatmap-root.ts"
97795
+ }
97796
+ },
97797
+ {
97798
+ "description": "Content shown under the strip while `loading` is set and there are no readings yet. Falls back to `loading-text`.",
97799
+ "name": "loading",
97800
+ "inheritedFrom": {
97801
+ "name": "HelixHeadlessHeatmap",
97802
+ "module": "src/heatmap/root/heatmap-root.ts"
97803
+ }
97170
97804
  }
97171
97805
  ],
97172
97806
  "members": [
@@ -97220,12 +97854,91 @@
97220
97854
  },
97221
97855
  "static": true,
97222
97856
  "default": "''",
97223
- "description": "The key `position-label` is registered under: the host's own, which\neach chart names with its styled tag, `static words =\n'helix-line-chart'`. A host with none reads its tag name.",
97857
+ "description": "The key the empty and loading words are registered under: the host's\nown, which each chart names with its styled tag, `static words =\n'helix-line-chart'`. A host with none reads its tag name.",
97224
97858
  "inheritedFrom": {
97225
97859
  "name": "MixinChartSource",
97226
97860
  "module": "src/mixins/mixin-chart-source/mixin-chart-source.ts"
97227
97861
  }
97228
97862
  },
97863
+ {
97864
+ "kind": "field",
97865
+ "name": "emptyText",
97866
+ "type": {
97867
+ "text": "string"
97868
+ },
97869
+ "default": "'No readings'",
97870
+ "description": "The words shown in place of the drawing when the table has no readings,\nand the fallback of the `empty` slot.",
97871
+ "attribute": "empty-text",
97872
+ "helix": {
97873
+ "words": true
97874
+ },
97875
+ "inheritedFrom": {
97876
+ "name": "MixinChartStatus",
97877
+ "module": "src/mixins/mixin-chart-status/mixin-chart-status.ts"
97878
+ }
97879
+ },
97880
+ {
97881
+ "kind": "field",
97882
+ "name": "loading",
97883
+ "type": {
97884
+ "text": "boolean"
97885
+ },
97886
+ "default": "false",
97887
+ "description": "Whether the readings are still on their way. The chart shows\n`loading-text` in place of an empty drawing until it has readings.\n\nReflected, so a stylesheet can treat the chart while it waits. A chart\nthat already has readings keeps drawing them, so a refresh does not\nblank it.",
97888
+ "attribute": "loading",
97889
+ "reflects": true,
97890
+ "inheritedFrom": {
97891
+ "name": "MixinChartStatus",
97892
+ "module": "src/mixins/mixin-chart-status/mixin-chart-status.ts"
97893
+ }
97894
+ },
97895
+ {
97896
+ "kind": "field",
97897
+ "name": "loadingText",
97898
+ "type": {
97899
+ "text": "string"
97900
+ },
97901
+ "default": "'Loading readings'",
97902
+ "description": "The words shown in place of the drawing while `loading` is set and\nthere are no readings yet, and the fallback of the `loading` slot.",
97903
+ "attribute": "loading-text",
97904
+ "helix": {
97905
+ "words": true
97906
+ },
97907
+ "inheritedFrom": {
97908
+ "name": "MixinChartStatus",
97909
+ "module": "src/mixins/mixin-chart-status/mixin-chart-status.ts"
97910
+ }
97911
+ },
97912
+ {
97913
+ "kind": "method",
97914
+ "name": "renderStatus",
97915
+ "privacy": "protected",
97916
+ "return": {
97917
+ "type": {
97918
+ "text": "TemplateResult | typeof nothing"
97919
+ }
97920
+ },
97921
+ "description": "What stands in the plot while there is nothing to draw: the `loading`\nline, the `empty` line, or nothing while the table cannot be read yet.\n\n`dir=\"auto\"`, so words in a right-to-left script read their own way in\na plot that holds itself left to right, as Scatter Chart's does.",
97922
+ "inheritedFrom": {
97923
+ "name": "MixinChartStatus",
97924
+ "module": "src/mixins/mixin-chart-status/mixin-chart-status.ts"
97925
+ }
97926
+ },
97927
+ {
97928
+ "kind": "method",
97929
+ "name": "renderEmpty",
97930
+ "privacy": "protected",
97931
+ "return": {
97932
+ "type": {
97933
+ "text": "TemplateResult"
97934
+ }
97935
+ },
97936
+ "description": "The plot while there is nothing to draw: a group named as the chart is,\nholding `renderStatus`. Not focusable, there being no reading to walk.",
97937
+ "inheritedFrom": {
97938
+ "name": "MixinChartStatus",
97939
+ "module": "src/mixins/mixin-chart-status/mixin-chart-status.ts"
97940
+ }
97941
+ },
97229
97942
  {
97230
97943
  "kind": "field",
97231
97944
  "name": "source",
@@ -97494,23 +98207,6 @@
97494
98207
  "module": "src/heatmap/root/heatmap-root.ts"
97495
98208
  }
97496
98209
  },
97497
- {
97498
- "kind": "field",
97499
- "name": "emptyText",
97500
- "type": {
97501
- "text": "string"
97502
- },
97503
- "default": "'No readings'",
97504
- "description": "Shown when the table has no readings in it.\n\nNever shown while the table cannot be read at all, which is a server render\nand the hydrating one after it: see `sourceKnown`.",
97505
- "attribute": "empty-text",
97506
- "helix": {
97507
- "words": true
97508
- },
97509
- "inheritedFrom": {
97510
- "name": "HelixHeadlessHeatmap",
97511
- "module": "src/heatmap/root/heatmap-root.ts"
97512
- }
97513
- },
97514
98210
  {
97515
98211
  "kind": "field",
97516
98212
  "name": "overviewLabel",
@@ -97549,7 +98245,7 @@
97549
98245
  "text": "string"
97550
98246
  },
97551
98247
  "default": "'selected'",
97552
- "description": "What the readout adds for a selected cell, under `selection-mode`, after\nwhere the cell stands: \"Day 1: 0 (1 of 14, selected)\". Empty adds\nnothing.",
98248
+ "description": "What the readout added for a selected cell, under `selection-mode`.",
97553
98249
  "attribute": "selected-label",
97554
98250
  "helix": {
97555
98251
  "words": true
@@ -97875,20 +98571,6 @@
97875
98571
  "module": "src/heatmap/root/heatmap-root.ts"
97876
98572
  }
97877
98573
  },
97878
- {
97879
- "kind": "field",
97880
- "name": "sourceKnown",
97881
- "type": {
97882
- "text": "boolean"
97883
- },
97884
- "privacy": "private",
97885
- "description": "Whether this render can tell a table with no readings from one it has not\nresolved yet.\n\n**Unknown is not empty, which is what an empty state must never say.**\n`for` names an id and resolving an id wants a document, so a server has\nnone and a hydrating render must not look either. Without this the server\ndrew \"No readings\" over a table holding ninety days of them, a crawler read\nthat sentence, and the strip flipped to a full one on hydration: the fault\n`MixinCollection` names for a slotted collection, arriving through the one\nchannel that mixin cannot see.\n\nThe same shape as `childrenKnown`, asked of a tree that can answer about\nids rather than of one that holds children. An id that resolves to nothing\nin a browser is still known, and still empty: a `for` naming no table\nshould say so rather than sit blank, which is why this asks\n`searchableById` and not `elementById`.\n\n`readingsKnown` asks it for every chart, and for `data` too, which a\nserver does not draw.",
97886
- "readonly": true,
97887
- "inheritedFrom": {
97888
- "name": "HelixHeadlessHeatmap",
97889
- "module": "src/heatmap/root/heatmap-root.ts"
97890
- }
97891
- },
97892
98574
  {
97893
98575
  "kind": "field",
97894
98576
  "name": "rowCount",
@@ -98022,22 +98704,22 @@
98022
98704
  },
98023
98705
  {
98024
98706
  "kind": "method",
98025
- "name": "renderOverview",
98026
- "privacy": "protected",
98707
+ "name": "renderRows",
98708
+ "privacy": "private",
98027
98709
  "return": {
98028
98710
  "type": {
98029
- "text": "TemplateResult"
98711
+ "text": "TemplateResult[]"
98030
98712
  }
98031
98713
  },
98032
98714
  "parameters": [
98033
98715
  {
98034
98716
  "name": "cells",
98035
98717
  "type": {
98036
- "text": "Reading[]"
98718
+ "text": "TemplateResult[]"
98037
98719
  }
98038
98720
  }
98039
98721
  ],
98040
- "description": "What the strip shows, in a sentence: the busiest reading drawn, as the\ntable writes it, and the total of them all, in `locale`. The strip is\ndescribed by it, so a reader landing on the strip hears what it holds\nbefore walking it.",
98722
+ "description": "The cells as a grid's rows, one for each column of the strip, so a week\nis a row with `rows=\"7\"` and a status strip is one row.\n\n**A column, because that is the order the cells are in.** The strip fills\ndown the column and then across, so a row wrapping a column keeps every\ncell where it was, and `display: contents` keeps the wrapper out of the\nstrip's grid, drawing no box, which is a mechanism and not a look. A row\nacross the strip would have taken cells out of order and moved them.",
98041
98723
  "inheritedFrom": {
98042
98724
  "name": "HelixHeadlessHeatmap",
98043
98725
  "module": "src/heatmap/root/heatmap-root.ts"
@@ -98045,14 +98727,40 @@
98045
98727
  },
98046
98728
  {
98047
98729
  "kind": "method",
98048
- "name": "renderTooltip",
98049
- "privacy": "protected",
98730
+ "name": "renderGridCell",
98731
+ "privacy": "private",
98050
98732
  "return": {
98051
98733
  "type": {
98052
- "text": "TemplateResult | typeof nothing"
98734
+ "text": "TemplateResult"
98053
98735
  }
98054
98736
  },
98055
- "description": "The bubble over the cell a pointer is resting on.\n\n**One tooltip that moves, which is what every other chart here does.** Bar\nChart, Line Chart and Donut Chart each render a single anchor against an\ninvisible mark and move the mark, so the count is one however many readings\nthere are, rather than one element per cell. `drawTooltip` is their shared\nmarkup and this is the fourth caller.\n\nWhat it buys over a native `title` is the row rather than the reading.\n`sourceRows` carries every column of the table including the ones nothing\nwas plotted from, so a cell reads \"11 Jun 2026 / Uptime 81.2% / Note Partial\noutage\" where `title` could only ever say the two values this component\nhappens to hold. It is also styleable, appears at once rather than after the\nplatform's second of delay, and cannot be truncated by the window edge.\n\nThe mark is placed in pixels rather than in percent, which is the one thing\nthis does differently from its siblings: they divide a plot into equal\nslots, and a strip's cells are a fixed size with a fixed gap inside a box\nthat is usually wider, so a percentage of the box lands between cells. The\npitch is `cell + gap` and both are measured.",
98737
+ "parameters": [
98738
+ {
98739
+ "name": "index",
98740
+ "type": {
98741
+ "text": "number"
98742
+ }
98743
+ },
98744
+ {
98745
+ "name": "active",
98746
+ "type": {
98747
+ "text": "boolean"
98748
+ }
98749
+ },
98750
+ {
98751
+ "name": "picked",
98752
+ "type": {
98753
+ "text": "boolean"
98754
+ }
98755
+ },
98756
+ {
98757
+ "name": "tone",
98758
+ "type": {
98759
+ "text": "string | undefined"
98760
+ }
98761
+ }
98762
+ ],
98763
+ "description": "One cell under `selection-mode`: a `gridcell` named by its row in the\ntable, its reading and its place, and saying whether it is selected, which\na reader hears on reaching it as the strip's active descendant.",
98056
98764
  "inheritedFrom": {
98057
98765
  "name": "HelixHeadlessHeatmap",
98058
98766
  "module": "src/heatmap/root/heatmap-root.ts"
@@ -98060,22 +98768,43 @@
98060
98768
  },
98061
98769
  {
98062
98770
  "kind": "method",
98063
- "name": "reading",
98064
- "privacy": "private",
98771
+ "name": "renderOverview",
98772
+ "privacy": "protected",
98065
98773
  "return": {
98066
98774
  "type": {
98067
- "text": "ReadingCursor"
98775
+ "text": "TemplateResult"
98068
98776
  }
98069
98777
  },
98070
98778
  "parameters": [
98071
98779
  {
98072
- "name": "at",
98780
+ "name": "cells",
98073
98781
  "type": {
98074
- "text": "number"
98782
+ "text": "Reading[]"
98075
98783
  }
98076
98784
  }
98077
98785
  ],
98078
- "description": "The readout's cursor: the pointer, with the selected word after where a\nselected cell stands, so a reader moving through the strip hears which\ncells are in the selection and not only how many.",
98786
+ "description": "What the strip shows, in a sentence: the busiest reading drawn, as the\ntable writes it, and the total of them all, in `locale`. The strip is\ndescribed by it, so a reader landing on the strip hears what it holds\nbefore walking it.",
98787
+ "inheritedFrom": {
98788
+ "name": "HelixHeadlessHeatmap",
98789
+ "module": "src/heatmap/root/heatmap-root.ts"
98790
+ }
98791
+ },
98792
+ {
98793
+ "kind": "method",
98794
+ "name": "renderTooltip",
98795
+ "privacy": "protected",
98796
+ "return": {
98797
+ "type": {
98798
+ "text": "TemplateResult | typeof nothing"
98799
+ }
98800
+ },
98801
+ "parameters": [
98802
+ {
98803
+ "name": "grid",
98804
+ "default": "false"
98805
+ }
98806
+ ],
98807
+ "description": "The bubble over the cell a pointer is resting on.\n\n**One tooltip that moves, which is what every other chart here does.** Bar\nChart, Line Chart and Donut Chart each render a single anchor against an\ninvisible mark and move the mark, so the count is one however many readings\nthere are, rather than one element per cell. `drawTooltip` is their shared\nmarkup and this is the fourth caller.\n\nWhat it buys over a native `title` is the row rather than the reading.\n`sourceRows` carries every column of the table including the ones nothing\nwas plotted from, so a cell reads \"11 Jun 2026 / Uptime 81.2% / Note Partial\noutage\" where `title` could only ever say the two values this component\nhappens to hold. It is also styleable, appears at once rather than after the\nplatform's second of delay, and cannot be truncated by the window edge.\n\nThe mark is placed in pixels rather than in percent, which is the one thing\nthis does differently from its siblings: they divide a plot into equal\nslots, and a strip's cells are a fixed size with a fixed gap inside a box\nthat is usually wider, so a percentage of the box lands between cells. The\npitch is `cell + gap` and both are measured.",
98079
98808
  "inheritedFrom": {
98080
98809
  "name": "HelixHeadlessHeatmap",
98081
98810
  "module": "src/heatmap/root/heatmap-root.ts"
@@ -98092,6 +98821,16 @@
98092
98821
  "module": "src/heatmap/root/heatmap-root.ts"
98093
98822
  }
98094
98823
  },
98824
+ {
98825
+ "kind": "field",
98826
+ "name": "onPointerUp",
98827
+ "privacy": "private",
98828
+ "readonly": true,
98829
+ "inheritedFrom": {
98830
+ "name": "HelixHeadlessHeatmap",
98831
+ "module": "src/heatmap/root/heatmap-root.ts"
98832
+ }
98833
+ },
98095
98834
  {
98096
98835
  "kind": "field",
98097
98836
  "name": "onPointerLeave",
@@ -98476,6 +99215,45 @@
98476
99215
  "tagName": "helix-heatmap",
98477
99216
  "customElement": true,
98478
99217
  "attributes": [
99218
+ {
99219
+ "name": "empty-text",
99220
+ "type": {
99221
+ "text": "string"
99222
+ },
99223
+ "default": "'No readings'",
99224
+ "description": "The words shown in place of the drawing when the table has no readings,\nand the fallback of the `empty` slot.",
99225
+ "fieldName": "emptyText",
99226
+ "inheritedFrom": {
99227
+ "name": "MixinChartStatus",
99228
+ "module": "src/mixins/mixin-chart-status/mixin-chart-status.ts"
99229
+ }
99230
+ },
99231
+ {
99232
+ "name": "loading",
99233
+ "type": {
99234
+ "text": "boolean"
99235
+ },
99236
+ "default": "false",
99237
+ "description": "Whether the readings are still on their way. The chart shows\n`loading-text` in place of an empty drawing until it has readings.\n\nReflected, so a stylesheet can treat the chart while it waits. A chart\nthat already has readings keeps drawing them, so a refresh does not\nblank it.",
99238
+ "fieldName": "loading",
99239
+ "inheritedFrom": {
99240
+ "name": "MixinChartStatus",
99241
+ "module": "src/mixins/mixin-chart-status/mixin-chart-status.ts"
99242
+ }
99243
+ },
99244
+ {
99245
+ "name": "loading-text",
99246
+ "type": {
99247
+ "text": "string"
99248
+ },
99249
+ "default": "'Loading readings'",
99250
+ "description": "The words shown in place of the drawing while `loading` is set and\nthere are no readings yet, and the fallback of the `loading` slot.",
99251
+ "fieldName": "loadingText",
99252
+ "inheritedFrom": {
99253
+ "name": "MixinChartStatus",
99254
+ "module": "src/mixins/mixin-chart-status/mixin-chart-status.ts"
99255
+ }
99256
+ },
98479
99257
  {
98480
99258
  "name": "for",
98481
99259
  "type": {
@@ -98541,19 +99319,6 @@
98541
99319
  "module": "src/heatmap/root/heatmap-root.ts"
98542
99320
  }
98543
99321
  },
98544
- {
98545
- "name": "empty-text",
98546
- "type": {
98547
- "text": "string"
98548
- },
98549
- "default": "'No readings'",
98550
- "description": "Shown when the table has no readings in it.\n\nNever shown while the table cannot be read at all, which is a server render\nand the hydrating one after it: see `sourceKnown`.",
98551
- "fieldName": "emptyText",
98552
- "inheritedFrom": {
98553
- "name": "HelixHeadlessHeatmap",
98554
- "module": "src/heatmap/root/heatmap-root.ts"
98555
- }
98556
- },
98557
99322
  {
98558
99323
  "name": "gap",
98559
99324
  "type": {
@@ -98612,7 +99377,7 @@
98612
99377
  "text": "string"
98613
99378
  },
98614
99379
  "default": "'selected'",
98615
- "description": "What the readout adds for a selected cell, under `selection-mode`, after\nwhere the cell stands: \"Day 1: 0 (1 of 14, selected)\". Empty adds\nnothing.",
99380
+ "description": "What the readout added for a selected cell, under `selection-mode`.",
98616
99381
  "fieldName": "selectedLabel",
98617
99382
  "inheritedFrom": {
98618
99383
  "name": "HelixHeadlessHeatmap",
@@ -98735,6 +99500,30 @@
98735
99500
  "module": "src/heatmap/root/heatmap-root.ts"
98736
99501
  }
98737
99502
  },
99503
+ {
99504
+ "type": {
99505
+ "text": "HelixReadingChangeEvent"
99506
+ },
99507
+ "description": "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.",
99508
+ "name": "helix-reading-change",
99509
+ "reactProp": "onhelix-reading-change",
99510
+ "inheritedFrom": {
99511
+ "name": "HelixHeadlessHeatmap",
99512
+ "module": "src/heatmap/root/heatmap-root.ts"
99513
+ }
99514
+ },
99515
+ {
99516
+ "type": {
99517
+ "text": "HelixReadingPressEvent"
99518
+ },
99519
+ "description": "A reading was clicked, tapped, or pressed with Enter or Space, with the same detail as `helix-reading-change`.",
99520
+ "name": "helix-reading-press",
99521
+ "reactProp": "onhelix-reading-press",
99522
+ "inheritedFrom": {
99523
+ "name": "HelixHeadlessHeatmap",
99524
+ "module": "src/heatmap/root/heatmap-root.ts"
99525
+ }
99526
+ },
98738
99527
  {
98739
99528
  "type": {
98740
99529
  "text": "HelixResizeEvent"
@@ -98765,6 +99554,14 @@
98765
99554
  "module": "src/heatmap/root/heatmap-root.ts"
98766
99555
  }
98767
99556
  },
99557
+ {
99558
+ "description": "While the `loading` part stands in place of the cells.",
99559
+ "name": "loading",
99560
+ "inheritedFrom": {
99561
+ "name": "HelixHeadlessHeatmap",
99562
+ "module": "src/heatmap/root/heatmap-root.ts"
99563
+ }
99564
+ },
98768
99565
  {
98769
99566
  "description": "Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.",
98770
99567
  "name": "settled",
@@ -99281,6 +100078,23 @@
99281
100078
  "module": "src/button/root/button-root.ts"
99282
100079
  }
99283
100080
  },
100081
+ {
100082
+ "kind": "method",
100083
+ "name": "click",
100084
+ "return": {
100085
+ "type": {
100086
+ "text": "void"
100087
+ }
100088
+ },
100089
+ "description": "Presses the button, as `click()` presses a native one: the command is sent,\nthe form submits or resets, and `helix-press` says `virtual`.\n\n**Passed to the inner control, because a click on the host reaches nothing\nthat acts.** The control in the shadow root is what answers a click, so\n`click()` from a script, an automation or a test, dispatched on the host,\nsubmitted nothing and sent no `helix-press`. The control's own click reaches\nthe host's listeners once, retargeted, as one from a native button does. A\ndisabled button does nothing, and a pending one refuses the press.",
100090
+ "type": {
100091
+ "text": "click() => void"
100092
+ },
100093
+ "inheritedFrom": {
100094
+ "name": "HelixHeadlessButton",
100095
+ "module": "src/button/root/button-root.ts"
100096
+ }
100097
+ },
99284
100098
  {
99285
100099
  "kind": "method",
99286
100100
  "name": "act",
@@ -134168,6 +134982,23 @@
134168
134982
  "module": "src/menu/item/menu-item.ts"
134169
134983
  }
134170
134984
  },
134985
+ {
134986
+ "kind": "method",
134987
+ "name": "click",
134988
+ "return": {
134989
+ "type": {
134990
+ "text": "void"
134991
+ }
134992
+ },
134993
+ "description": "Presses the row, as `click()` presses a native button: passed to the\ncontrol inside, which is what answers a click, so a script's `click()`\nchooses the row, or follows its link, once.",
134994
+ "type": {
134995
+ "text": "click() => void"
134996
+ },
134997
+ "inheritedFrom": {
134998
+ "name": "HelixHeadlessMenuItem",
134999
+ "module": "src/menu/item/menu-item.ts"
135000
+ }
135001
+ },
134171
135002
  {
134172
135003
  "kind": "method",
134173
135004
  "name": "tag",
@@ -141797,23 +142628,6 @@
141797
142628
  "module": "src/notifications/notification/notification.ts"
141798
142629
  }
141799
142630
  },
141800
- {
141801
- "kind": "field",
141802
- "name": "unreadLabel",
141803
- "type": {
141804
- "text": "string"
141805
- },
141806
- "default": "'Unread'",
141807
- "description": "What a screen reader hears before an unread notification's text.\n\nThe unread mark is drawn, so a reader who cannot see it hears this word in\nits place. Translate it with the rest of your interface.",
141808
- "attribute": "unread-label",
141809
- "helix": {
141810
- "words": true
141811
- },
141812
- "inheritedFrom": {
141813
- "name": "HelixHeadlessNotification",
141814
- "module": "src/notifications/notification/notification.ts"
141815
- }
141816
- },
141817
142631
  {
141818
142632
  "kind": "field",
141819
142633
  "name": "readState",
@@ -141910,6 +142724,37 @@
141910
142724
  "module": "src/notifications/notification/notification.ts"
141911
142725
  }
141912
142726
  },
142727
+ {
142728
+ "kind": "field",
142729
+ "name": "unreadLabel",
142730
+ "type": {
142731
+ "text": "string"
142732
+ },
142733
+ "default": "'Unread'",
142734
+ "description": "What a screen reader hears before an unread notification's text.\n\nThe unread mark is drawn, so a reader who cannot see it hears this word in\nits place. Translate it with the rest of your interface.",
142735
+ "attribute": "unread-label",
142736
+ "helix": {
142737
+ "words": true
142738
+ },
142739
+ "inheritedFrom": {
142740
+ "name": "HelixHeadlessNotification",
142741
+ "module": "src/notifications/notification/notification.ts"
142742
+ }
142743
+ },
142744
+ {
142745
+ "kind": "field",
142746
+ "name": "dismissName",
142747
+ "type": {
142748
+ "text": "string"
142749
+ },
142750
+ "privacy": "private",
142751
+ "description": "The dismiss control's name: `dismissLabel` with the row's words.\n\n**Named for its row**, because a feed of rows each with a control named\nDismiss is a list of buttons that says nothing about which notice each one\nends. The words are the default slot's, the ones `helix-dismiss` reports,\nso a row's actions are not read into it. A page's own `dismiss-label` with\nno `{label}` is followed by them, unless it holds them already, as `Tag`\nnames its remove button. Read from the children, so the verb alone on a\nserver, until the update after.",
142752
+ "readonly": true,
142753
+ "inheritedFrom": {
142754
+ "name": "HelixHeadlessNotification",
142755
+ "module": "src/notifications/notification/notification.ts"
142756
+ }
142757
+ },
141913
142758
  {
141914
142759
  "kind": "field",
141915
142760
  "name": "handleActions",
@@ -141939,7 +142784,7 @@
141939
142784
  "text": "HTMLElement | null"
141940
142785
  }
141941
142786
  },
141942
- "description": "Where focus goes when this row leaves: the next row's first control, the\none before, then the first control left in the feed.",
142787
+ "description": "Where focus goes when this row leaves: the next row, the one before, then\nthe first control left in the feed.\n\n**The row itself, and not a control in it**, because the row is what a\nreader moves through the feed by, and every row takes focus. Sent to the\nnext dismiss control, focus passed over each row with no controls between,\nand to Load more where no row after had one. Focused, the row becomes the\nfeed's stop, as one reached with the arrows does.",
141943
142788
  "inheritedFrom": {
141944
142789
  "name": "HelixHeadlessNotification",
141945
142790
  "module": "src/notifications/notification/notification.ts"
@@ -188768,6 +189613,23 @@
188768
189613
  "module": "src/speed-dial/item/speed-dial-item.ts"
188769
189614
  }
188770
189615
  },
189616
+ {
189617
+ "kind": "method",
189618
+ "name": "click",
189619
+ "return": {
189620
+ "type": {
189621
+ "text": "void"
189622
+ }
189623
+ },
189624
+ "description": "Presses the action, as `click()` presses a native button: passed to the\ncontrol inside, which is what answers a click, so a script's `click()`\nchooses the action and follows its link, once.",
189625
+ "type": {
189626
+ "text": "click() => void"
189627
+ },
189628
+ "inheritedFrom": {
189629
+ "name": "HelixHeadlessSpeedDialItem",
189630
+ "module": "src/speed-dial/item/speed-dial-item.ts"
189631
+ }
189632
+ },
188771
189633
  {
188772
189634
  "kind": "method",
188773
189635
  "name": "select",
@@ -209204,6 +210066,23 @@
209204
210066
  "module": "src/tabs/tab/tab.ts"
209205
210067
  }
209206
210068
  },
210069
+ {
210070
+ "kind": "method",
210071
+ "name": "click",
210072
+ "return": {
210073
+ "type": {
210074
+ "text": "void"
210075
+ }
210076
+ },
210077
+ "description": "Presses the tab, as `click()` presses a native button: passed to the\ncontrol inside, which is what answers a click, so a script's `click()`\nselects the tab, or follows its link, once.",
210078
+ "type": {
210079
+ "text": "click() => void"
210080
+ },
210081
+ "inheritedFrom": {
210082
+ "name": "HelixHeadlessTab",
210083
+ "module": "src/tabs/tab/tab.ts"
210084
+ }
210085
+ },
209207
210086
  {
209208
210087
  "kind": "field",
209209
210088
  "name": "tier",
@@ -250249,6 +251128,6 @@
250249
251128
  ],
250250
251129
  "helix": {
250251
251130
  "package": "@fusion.dev/helix",
250252
- "version": "0.177.2"
251131
+ "version": "0.179.0"
250253
251132
  }
250254
251133
  }