@fusion.dev/helix 0.178.0 → 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",
@@ -97542,7 +97681,7 @@
97542
97681
  }
97543
97682
  },
97544
97683
  {
97545
- "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.",
97546
97685
  "name": "empty",
97547
97686
  "inheritedFrom": {
97548
97687
  "name": "HelixHeadlessHeatmap",
@@ -97557,6 +97696,14 @@
97557
97696
  "module": "src/heatmap/root/heatmap-root.ts"
97558
97697
  }
97559
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
+ },
97560
97707
  {
97561
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.",
97562
97709
  "name": "overview",
@@ -97565,6 +97712,22 @@
97565
97712
  "module": "src/heatmap/root/heatmap-root.ts"
97566
97713
  }
97567
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
+ },
97568
97731
  {
97569
97732
  "description": "A polite region that says how many cells are selected after a change, rendered from the first change. Hide it visually.",
97570
97733
  "name": "selection",
@@ -97622,6 +97785,22 @@
97622
97785
  "name": "HelixHeadlessHeatmap",
97623
97786
  "module": "src/heatmap/root/heatmap-root.ts"
97624
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
+ }
97625
97804
  }
97626
97805
  ],
97627
97806
  "members": [
@@ -97675,12 +97854,91 @@
97675
97854
  },
97676
97855
  "static": true,
97677
97856
  "default": "''",
97678
- "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.",
97679
97858
  "inheritedFrom": {
97680
97859
  "name": "MixinChartSource",
97681
97860
  "module": "src/mixins/mixin-chart-source/mixin-chart-source.ts"
97682
97861
  }
97683
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
+ },
97684
97942
  {
97685
97943
  "kind": "field",
97686
97944
  "name": "source",
@@ -97949,23 +98207,6 @@
97949
98207
  "module": "src/heatmap/root/heatmap-root.ts"
97950
98208
  }
97951
98209
  },
97952
- {
97953
- "kind": "field",
97954
- "name": "emptyText",
97955
- "type": {
97956
- "text": "string"
97957
- },
97958
- "default": "'No readings'",
97959
- "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`.",
97960
- "attribute": "empty-text",
97961
- "helix": {
97962
- "words": true
97963
- },
97964
- "inheritedFrom": {
97965
- "name": "HelixHeadlessHeatmap",
97966
- "module": "src/heatmap/root/heatmap-root.ts"
97967
- }
97968
- },
97969
98210
  {
97970
98211
  "kind": "field",
97971
98212
  "name": "overviewLabel",
@@ -98004,7 +98245,7 @@
98004
98245
  "text": "string"
98005
98246
  },
98006
98247
  "default": "'selected'",
98007
- "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`.",
98008
98249
  "attribute": "selected-label",
98009
98250
  "helix": {
98010
98251
  "words": true
@@ -98330,20 +98571,6 @@
98330
98571
  "module": "src/heatmap/root/heatmap-root.ts"
98331
98572
  }
98332
98573
  },
98333
- {
98334
- "kind": "field",
98335
- "name": "sourceKnown",
98336
- "type": {
98337
- "text": "boolean"
98338
- },
98339
- "privacy": "private",
98340
- "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.",
98341
- "readonly": true,
98342
- "inheritedFrom": {
98343
- "name": "HelixHeadlessHeatmap",
98344
- "module": "src/heatmap/root/heatmap-root.ts"
98345
- }
98346
- },
98347
98574
  {
98348
98575
  "kind": "field",
98349
98576
  "name": "rowCount",
@@ -98477,22 +98704,22 @@
98477
98704
  },
98478
98705
  {
98479
98706
  "kind": "method",
98480
- "name": "renderOverview",
98481
- "privacy": "protected",
98707
+ "name": "renderRows",
98708
+ "privacy": "private",
98482
98709
  "return": {
98483
98710
  "type": {
98484
- "text": "TemplateResult"
98711
+ "text": "TemplateResult[]"
98485
98712
  }
98486
98713
  },
98487
98714
  "parameters": [
98488
98715
  {
98489
98716
  "name": "cells",
98490
98717
  "type": {
98491
- "text": "Reading[]"
98718
+ "text": "TemplateResult[]"
98492
98719
  }
98493
98720
  }
98494
98721
  ],
98495
- "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.",
98496
98723
  "inheritedFrom": {
98497
98724
  "name": "HelixHeadlessHeatmap",
98498
98725
  "module": "src/heatmap/root/heatmap-root.ts"
@@ -98500,14 +98727,40 @@
98500
98727
  },
98501
98728
  {
98502
98729
  "kind": "method",
98503
- "name": "renderTooltip",
98504
- "privacy": "protected",
98730
+ "name": "renderGridCell",
98731
+ "privacy": "private",
98505
98732
  "return": {
98506
98733
  "type": {
98507
- "text": "TemplateResult | typeof nothing"
98734
+ "text": "TemplateResult"
98508
98735
  }
98509
98736
  },
98510
- "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.",
98511
98764
  "inheritedFrom": {
98512
98765
  "name": "HelixHeadlessHeatmap",
98513
98766
  "module": "src/heatmap/root/heatmap-root.ts"
@@ -98515,22 +98768,43 @@
98515
98768
  },
98516
98769
  {
98517
98770
  "kind": "method",
98518
- "name": "reading",
98519
- "privacy": "private",
98771
+ "name": "renderOverview",
98772
+ "privacy": "protected",
98520
98773
  "return": {
98521
98774
  "type": {
98522
- "text": "ReadingCursor"
98775
+ "text": "TemplateResult"
98523
98776
  }
98524
98777
  },
98525
98778
  "parameters": [
98526
98779
  {
98527
- "name": "at",
98780
+ "name": "cells",
98528
98781
  "type": {
98529
- "text": "number"
98782
+ "text": "Reading[]"
98530
98783
  }
98531
98784
  }
98532
98785
  ],
98533
- "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.",
98534
98808
  "inheritedFrom": {
98535
98809
  "name": "HelixHeadlessHeatmap",
98536
98810
  "module": "src/heatmap/root/heatmap-root.ts"
@@ -98547,6 +98821,16 @@
98547
98821
  "module": "src/heatmap/root/heatmap-root.ts"
98548
98822
  }
98549
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
+ },
98550
98834
  {
98551
98835
  "kind": "field",
98552
98836
  "name": "onPointerLeave",
@@ -98931,6 +99215,45 @@
98931
99215
  "tagName": "helix-heatmap",
98932
99216
  "customElement": true,
98933
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
+ },
98934
99257
  {
98935
99258
  "name": "for",
98936
99259
  "type": {
@@ -98996,19 +99319,6 @@
98996
99319
  "module": "src/heatmap/root/heatmap-root.ts"
98997
99320
  }
98998
99321
  },
98999
- {
99000
- "name": "empty-text",
99001
- "type": {
99002
- "text": "string"
99003
- },
99004
- "default": "'No readings'",
99005
- "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`.",
99006
- "fieldName": "emptyText",
99007
- "inheritedFrom": {
99008
- "name": "HelixHeadlessHeatmap",
99009
- "module": "src/heatmap/root/heatmap-root.ts"
99010
- }
99011
- },
99012
99322
  {
99013
99323
  "name": "gap",
99014
99324
  "type": {
@@ -99067,7 +99377,7 @@
99067
99377
  "text": "string"
99068
99378
  },
99069
99379
  "default": "'selected'",
99070
- "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`.",
99071
99381
  "fieldName": "selectedLabel",
99072
99382
  "inheritedFrom": {
99073
99383
  "name": "HelixHeadlessHeatmap",
@@ -99190,6 +99500,30 @@
99190
99500
  "module": "src/heatmap/root/heatmap-root.ts"
99191
99501
  }
99192
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
+ },
99193
99527
  {
99194
99528
  "type": {
99195
99529
  "text": "HelixResizeEvent"
@@ -99220,6 +99554,14 @@
99220
99554
  "module": "src/heatmap/root/heatmap-root.ts"
99221
99555
  }
99222
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
+ },
99223
99565
  {
99224
99566
  "description": "Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.",
99225
99567
  "name": "settled",
@@ -99736,6 +100078,23 @@
99736
100078
  "module": "src/button/root/button-root.ts"
99737
100079
  }
99738
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
+ },
99739
100098
  {
99740
100099
  "kind": "method",
99741
100100
  "name": "act",
@@ -134623,6 +134982,23 @@
134623
134982
  "module": "src/menu/item/menu-item.ts"
134624
134983
  }
134625
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
+ },
134626
135002
  {
134627
135003
  "kind": "method",
134628
135004
  "name": "tag",
@@ -142252,23 +142628,6 @@
142252
142628
  "module": "src/notifications/notification/notification.ts"
142253
142629
  }
142254
142630
  },
142255
- {
142256
- "kind": "field",
142257
- "name": "unreadLabel",
142258
- "type": {
142259
- "text": "string"
142260
- },
142261
- "default": "'Unread'",
142262
- "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.",
142263
- "attribute": "unread-label",
142264
- "helix": {
142265
- "words": true
142266
- },
142267
- "inheritedFrom": {
142268
- "name": "HelixHeadlessNotification",
142269
- "module": "src/notifications/notification/notification.ts"
142270
- }
142271
- },
142272
142631
  {
142273
142632
  "kind": "field",
142274
142633
  "name": "readState",
@@ -142365,6 +142724,37 @@
142365
142724
  "module": "src/notifications/notification/notification.ts"
142366
142725
  }
142367
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
+ },
142368
142758
  {
142369
142759
  "kind": "field",
142370
142760
  "name": "handleActions",
@@ -142394,7 +142784,7 @@
142394
142784
  "text": "HTMLElement | null"
142395
142785
  }
142396
142786
  },
142397
- "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.",
142398
142788
  "inheritedFrom": {
142399
142789
  "name": "HelixHeadlessNotification",
142400
142790
  "module": "src/notifications/notification/notification.ts"
@@ -189223,6 +189613,23 @@
189223
189613
  "module": "src/speed-dial/item/speed-dial-item.ts"
189224
189614
  }
189225
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
+ },
189226
189633
  {
189227
189634
  "kind": "method",
189228
189635
  "name": "select",
@@ -209659,6 +210066,23 @@
209659
210066
  "module": "src/tabs/tab/tab.ts"
209660
210067
  }
209661
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
+ },
209662
210086
  {
209663
210087
  "kind": "field",
209664
210088
  "name": "tier",
@@ -250704,6 +251128,6 @@
250704
251128
  ],
250705
251129
  "helix": {
250706
251130
  "package": "@fusion.dev/helix",
250707
- "version": "0.178.0"
251131
+ "version": "0.179.0"
250708
251132
  }
250709
251133
  }