@fusion.dev/helix-headless 0.188.0 → 0.189.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/api.json +1 -1
  2. package/custom-elements.json +39844 -36049
  3. package/dist/element-events.generated.js +21 -7
  4. package/dist/index.d.ts +3 -1
  5. package/dist/index.js +3 -1
  6. package/dist/spatial-heatmap/index.d.ts +1 -0
  7. package/dist/spatial-heatmap/index.js +1 -0
  8. package/dist/{isometric-heatmap → spatial-heatmap}/projection.d.ts +32 -6
  9. package/dist/{isometric-heatmap → spatial-heatmap}/projection.js +33 -8
  10. package/dist/spatial-heatmap/root/spatial-heatmap-root.d.ts +239 -0
  11. package/dist/spatial-heatmap/root/spatial-heatmap-root.js +252 -0
  12. package/dist/spatial-scatter-chart/field.d.ts +63 -0
  13. package/dist/spatial-scatter-chart/field.js +61 -0
  14. package/dist/spatial-scatter-chart/index.d.ts +2 -0
  15. package/dist/spatial-scatter-chart/index.js +2 -0
  16. package/dist/spatial-scatter-chart/root/spatial-scatter-chart-root.d.ts +207 -0
  17. package/dist/spatial-scatter-chart/root/spatial-scatter-chart-root.js +222 -0
  18. package/dist/spatial-scatter-chart/view.d.ts +93 -0
  19. package/dist/spatial-scatter-chart/view.js +115 -0
  20. package/dist/spatial-surface-chart/grid.d.ts +50 -0
  21. package/dist/spatial-surface-chart/grid.js +46 -0
  22. package/dist/spatial-surface-chart/index.d.ts +2 -0
  23. package/dist/spatial-surface-chart/index.js +2 -0
  24. package/dist/spatial-surface-chart/root/spatial-surface-chart-root.d.ts +234 -0
  25. package/dist/spatial-surface-chart/root/spatial-surface-chart-root.js +281 -0
  26. package/examples.json +1 -1
  27. package/lint.json +1 -1
  28. package/package.json +5 -5
  29. package/types/jsx.d.ts +5417 -3661
  30. package/types/svelte.d.ts +3 -1
  31. package/types/vue.d.ts +590 -298
  32. package/types/words.d.ts +153 -69
  33. package/dist/isometric-heatmap/index.d.ts +0 -1
  34. package/dist/isometric-heatmap/index.js +0 -1
  35. package/dist/isometric-heatmap/root/isometric-heatmap-root.d.ts +0 -118
  36. package/dist/isometric-heatmap/root/isometric-heatmap-root.js +0 -127
package/types/vue.d.ts CHANGED
@@ -74,7 +74,6 @@ import type {
74
74
  HelixHeadlessIcon,
75
75
  HelixHeadlessImage,
76
76
  HelixHeadlessInput,
77
- HelixHeadlessIsometricHeatmap,
78
77
  HelixHeadlessKbd,
79
78
  HelixHeadlessLegend,
80
79
  HelixHeadlessLightboxItem,
@@ -135,6 +134,9 @@ import type {
135
134
  HelixHeadlessSkipLink,
136
135
  HelixHeadlessSlider,
137
136
  HelixHeadlessSparkline,
137
+ HelixHeadlessSpatialHeatmap,
138
+ HelixHeadlessSpatialScatterChart,
139
+ HelixHeadlessSpatialSurfaceChart,
138
140
  HelixHeadlessSpeedDialGroup,
139
141
  HelixHeadlessSpeedDialItem,
140
142
  HelixHeadlessSpeedDial,
@@ -249,6 +251,8 @@ import type {
249
251
  HelixReadEvent,
250
252
  HelixCompleteEvent,
251
253
  HelixPreviewEvent,
254
+ HelixPlotChangeEvent,
255
+ HelixPlotTurnEvent,
252
256
  HelixBeforeCollapseEvent,
253
257
  HelixBeforeResizeEvent,
254
258
  HelixCollapseEvent,
@@ -8884,253 +8888,6 @@ export type HelixHeadlessInputVueEvents = {
8884
8888
  input: HelixHeadlessInputElementEvent;
8885
8889
  };
8886
8890
 
8887
- /** `HelixHeadlessIsometricHeatmap` component event */
8888
- export type HelixHeadlessIsometricHeatmapElementEvent<E = Event> = TypedEvent<
8889
- HelixHeadlessIsometricHeatmap,
8890
- E
8891
- >;
8892
- /** `helix-before-change` event type */
8893
- export type HelixHeadlessIsometricHeatmapHelixBeforeChangeElementEvent =
8894
- HelixHeadlessIsometricHeatmapElementEvent<HelixBeforeChangeEvent>;
8895
- /** `helix-reading-change` event type */
8896
- export type HelixHeadlessIsometricHeatmapHelixReadingChangeElementEvent =
8897
- HelixHeadlessIsometricHeatmapElementEvent<HelixReadingChangeEvent>;
8898
- /** `helix-reading-press` event type */
8899
- export type HelixHeadlessIsometricHeatmapHelixReadingPressElementEvent =
8900
- HelixHeadlessIsometricHeatmapElementEvent<HelixReadingPressEvent>;
8901
- /** `helix-resize` event type */
8902
- export type HelixHeadlessIsometricHeatmapHelixResizeElementEvent =
8903
- HelixHeadlessIsometricHeatmapElementEvent<HelixResizeEvent>;
8904
-
8905
- export type HelixHeadlessIsometricHeatmapVueProps = {
8906
- /** Draws every prism at no height, so the tones lie on a plane. */
8907
- flat?: (HelixHeadlessIsometricHeatmap["flat"]) | undefined;
8908
- /** How tall the highest reading stands, in cells. Every other reading stands
8909
- at its share of it. */
8910
- relief?: (HelixHeadlessIsometricHeatmap["relief"]) | undefined;
8911
- /** The words shown in place of the drawing when the table has no readings,
8912
- and the fallback of the `empty` slot. */
8913
- "empty-text"?: (HelixHeadlessIsometricHeatmap["emptyText"]) | undefined;
8914
- /** The words shown in place of the drawing when the table has no readings,
8915
- and the fallback of the `empty` slot. */
8916
- emptyText?: (HelixHeadlessIsometricHeatmap["emptyText"]) | undefined;
8917
- /** Whether the readings are still on their way. The chart shows
8918
- `loading-text` in place of an empty drawing until it has readings.
8919
-
8920
- Reflected, so a stylesheet can treat the chart while it waits. A chart
8921
- that already has readings keeps drawing them, so a refresh does not
8922
- blank it. */
8923
- loading?: (HelixHeadlessIsometricHeatmap["loading"]) | undefined;
8924
- /** The words shown in place of the drawing while `loading` is set and
8925
- there are no readings yet, and the fallback of the `loading` slot. */
8926
- "loading-text"?: (HelixHeadlessIsometricHeatmap["loadingText"]) | undefined;
8927
- /** The words shown in place of the drawing while `loading` is set and
8928
- there are no readings yet, and the fallback of the `loading` slot. */
8929
- loadingText?: (HelixHeadlessIsometricHeatmap["loadingText"]) | undefined;
8930
- /** The id of the table to read.
8931
-
8932
- Names a table in the same tree, so a chart inside another component's
8933
- shadow root reads a table in that root rather than one in the document. A
8934
- `<table>` or anything built from grid roles, including `helix-table`.
8935
-
8936
- **In React this arrives as a property and not as an attribute**, the way
8937
- `Tooltip.for` does, so it does not reflect and nothing styles on it. */
8938
- for?: (HelixHeadlessIsometricHeatmap["for"]) | undefined;
8939
- /** The chart's name, which starts the chart's text summary.
8940
-
8941
- Absent falls back to the table's own caption, which is usually the right
8942
- words and is already written. */
8943
- label?: (HelixHeadlessIsometricHeatmap["label"]) | undefined;
8944
- /** The locale the chart's own numbers are written in: its axis, its
8945
- percentages and its totals, such as `de` for `1.240` and `32 %`.
8946
-
8947
- Absent reads the nearest `lang`, then the runtime's own. The table's
8948
- cells are shown as the table writes them, whatever this says. */
8949
- locale?: (HelixHeadlessIsometricHeatmap["locale"]) | undefined;
8950
- /** Where a reading the keys moved to stands among the readings, said after
8951
- it. `{position}` and `{count}` are replaced with the numbers, written in
8952
- `locale`.
8953
-
8954
- Set it to the words of the page's language, such as `{position} von
8955
- {count}`, or to nothing to say no position. A slice or a series a
8956
- legend hid is not counted. */
8957
- "position-label"?: (HelixHeadlessIsometricHeatmap["positionLabel"]) | undefined;
8958
- /** Where a reading the keys moved to stands among the readings, said after
8959
- it. `{position}` and `{count}` are replaced with the numbers, written in
8960
- `locale`.
8961
-
8962
- Set it to the words of the page's language, such as `{position} von
8963
- {count}`, or to nothing to say no position. A slice or a series a
8964
- legend hid is not counted. */
8965
- positionLabel?: (HelixHeadlessIsometricHeatmap["positionLabel"]) | undefined;
8966
- /** The name the `overview` gives the busiest reading, `{busiestLabel}` in
8967
- `overview-label`. */
8968
- "busiest-label"?: (HelixHeadlessIsometricHeatmap["busiestLabel"]) | undefined;
8969
- /** The name the `overview` gives the busiest reading, `{busiestLabel}` in
8970
- `overview-label`. */
8971
- busiestLabel?: (HelixHeadlessIsometricHeatmap["busiestLabel"]) | undefined;
8972
- /** Space between cells, in CSS pixels. It is a number for the same reason
8973
- `min-cell` is. */
8974
- gap?: (HelixHeadlessIsometricHeatmap["gap"]) | undefined;
8975
- /** The smallest a cell may get before the strip draws fewer of them, in CSS pixels.
8976
-
8977
- **Set this only to overrule what the strip actually draws.** The arithmetic
8978
- needs a width in pixels and the width is a length the stylesheet resolves,
8979
- so a number written here that disagrees with the sheet is a promise the
8980
- consumer has to keep by hand, and the one number a summary is told to trust
8981
- is the one it gets wrong.
8982
-
8983
- The strip measures itself, so sizing the cells in a sheet is enough on its
8984
- own and these two are the estimate used until the first measurement lands.
8985
- Writing the attribute pins the value and stops the measurement being
8986
- consulted, which is what a container query or a transition on the cell size
8987
- wants, where what is drawn this frame is not what the arithmetic should
8988
- plan around.
8989
-
8990
- Zero turns the dropping off altogether, which is right for a strip in a
8991
- container that cannot get narrow. */
8992
- "min-cell"?: (HelixHeadlessIsometricHeatmap["minCell"] | `${number}`) | undefined;
8993
- /** The smallest a cell may get before the strip draws fewer of them, in CSS pixels.
8994
-
8995
- **Set this only to overrule what the strip actually draws.** The arithmetic
8996
- needs a width in pixels and the width is a length the stylesheet resolves,
8997
- so a number written here that disagrees with the sheet is a promise the
8998
- consumer has to keep by hand, and the one number a summary is told to trust
8999
- is the one it gets wrong.
9000
-
9001
- The strip measures itself, so sizing the cells in a sheet is enough on its
9002
- own and these two are the estimate used until the first measurement lands.
9003
- Writing the attribute pins the value and stops the measurement being
9004
- consulted, which is what a container query or a transition on the cell size
9005
- wants, where what is drawn this frame is not what the arithmetic should
9006
- plan around.
9007
-
9008
- Zero turns the dropping off altogether, which is right for a strip in a
9009
- container that cannot get narrow. */
9010
- minCell?: (HelixHeadlessIsometricHeatmap["minCell"]) | undefined;
9011
- /** The `overview`'s sentence. `{busiestLabel}` and `{totalLabel}` are
9012
- `busiest-label` and `total-label`, `{busiest}` the busiest reading's name
9013
- and its reading as the table writes it, and `{total}` the total of the
9014
- readings drawn, written in the locale. */
9015
- "overview-label"?: (HelixHeadlessIsometricHeatmap["overviewLabel"]) | undefined;
9016
- /** The `overview`'s sentence. `{busiestLabel}` and `{totalLabel}` are
9017
- `busiest-label` and `total-label`, `{busiest}` the busiest reading's name
9018
- and its reading as the table writes it, and `{total}` the total of the
9019
- readings drawn, written in the locale. */
9020
- overviewLabel?: (HelixHeadlessIsometricHeatmap["overviewLabel"]) | undefined;
9021
- /** How many rows the strip has.
9022
-
9023
- `1` is a status strip and `7` is a calendar week, which are the two readings
9024
- this covers. Cells fill down the column and then across, which is what a
9025
- calendar heatmap does: a week is a column, so the strip reads along the
9026
- line in weeks, from the right on a right-to-left page, and top to bottom in
9027
- days. */
9028
- rows?: (HelixHeadlessIsometricHeatmap["rows"]) | undefined;
9029
- /** What the readout added for a selected cell, under `selection-mode`. */
9030
- "selected-label"?: (HelixHeadlessIsometricHeatmap["selectedLabel"]) | undefined;
9031
- /** What the readout added for a selected cell, under `selection-mode`. */
9032
- selectedLabel?: (HelixHeadlessIsometricHeatmap["selectedLabel"]) | undefined;
9033
- /** What the `selection` part says after the selection changes. `{count}` is
9034
- how many cells are selected, written in the locale, and a language that
9035
- needs plural forms writes them: `{count, plural, one {# wybrany} few
9036
- {# wybrane} many {# wybranych} other {# wybranego}}`. */
9037
- "selection-label"?: (HelixHeadlessIsometricHeatmap["selectionLabel"]) | undefined;
9038
- /** What the `selection` part says after the selection changes. `{count}` is
9039
- how many cells are selected, written in the locale, and a language that
9040
- needs plural forms writes them: `{count, plural, one {# wybrany} few
9041
- {# wybrane} many {# wybranych} other {# wybranego}}`. */
9042
- selectionLabel?: (HelixHeadlessIsometricHeatmap["selectionLabel"]) | undefined;
9043
- /** How many cells a reader can select: `single` or `multiple`.
9044
-
9045
- Absent selects nothing, and a press or Space does what it did. */
9046
- "selection-mode"?: (HelixHeadlessIsometricHeatmap["selectionMode"]) | undefined;
9047
- /** How many cells a reader can select: `single` or `multiple`.
9048
-
9049
- Absent selects nothing, and a press or Space does what it did. */
9050
- selectionMode?: (HelixHeadlessIsometricHeatmap["selectionMode"]) | undefined;
9051
- /** What Shift takes in under `selection-mode="multiple"`: `linear`, every
9052
- cell between two in the table's order, or `rectangle`, the cells between
9053
- two corners by row and by column, as a spreadsheet selects a range. */
9054
- "selection-shape"?: (HelixHeadlessIsometricHeatmap["selectionShape"]) | undefined;
9055
- /** What Shift takes in under `selection-mode="multiple"`: `linear`, every
9056
- cell between two in the table's order, or `rectangle`, the cells between
9057
- two corners by row and by column, as a spreadsheet selects a range. */
9058
- selectionShape?: (HelixHeadlessIsometricHeatmap["selectionShape"]) | undefined;
9059
- /** The strip's name where the chart has none: no `aria-label`, `label`, or
9060
- table caption. */
9061
- "strip-label"?: (HelixHeadlessIsometricHeatmap["stripLabel"]) | undefined;
9062
- /** The strip's name where the chart has none: no `aria-label`, `label`, or
9063
- table caption. */
9064
- stripLabel?: (HelixHeadlessIsometricHeatmap["stripLabel"]) | undefined;
9065
- /** Lower bounds for the tone buckets, in the order the tones are given.
9066
-
9067
- `thresholds="1 3 6 9"` with `tones="1 2 3 4"` puts 1 and 2 in the ramp's
9068
- first step, 3 to 5 in the second, 6 to 8 in the third, and 9 upward in the
9069
- fourth. A value below the first bound gets no tone at all: an empty day in a
9070
- contribution graph is a day with nothing in it, and painting it as the
9071
- lowest bucket claims a reading that does not exist. */
9072
- thresholds?: (HelixHeadlessIsometricHeatmap["thresholds"]) | undefined;
9073
- /** The tone for each bucket, in the same order as `thresholds`.
9074
-
9075
- A name, resolved as `--heatmap-tone-<name>` by whichever tier answers.
9076
- **`"1"` through `"5"` are a ramp and everything else is a category**, which
9077
- is the distinction a heatmap lives or dies on: magnitude has to be one hue
9078
- getting louder, because a reader compares two cells by weight and cannot
9079
- compare two hues at all. `tones="surface info accent success primary"` for a
9080
- commit count is five unrelated hues for five amounts, which is confetti with
9081
- no order in it. */
9082
- tones?: (HelixHeadlessIsometricHeatmap["tones"]) | undefined;
9083
- /** The name the `overview` gives the total of the readings drawn,
9084
- `{totalLabel}` in `overview-label`. */
9085
- "total-label"?: (HelixHeadlessIsometricHeatmap["totalLabel"]) | undefined;
9086
- /** The name the `overview` gives the total of the readings drawn,
9087
- `{totalLabel}` in `overview-label`. */
9088
- totalLabel?: (HelixHeadlessIsometricHeatmap["totalLabel"]) | undefined;
9089
- /** The selected cells, separated by commas: each by the date its row's
9090
- header carries in a `<time datetime>`, such as `2026-06-11`, or by the
9091
- header's words where it carries none.
9092
-
9093
- Set it to start with cells selected. Written by a press or a key under
9094
- `selection-mode`. */
9095
- value?: (HelixHeadlessIsometricHeatmap["value"]) | undefined;
9096
- /** The readings as data, in the shape of a table, where the page has no
9097
- table to point `for` at. `for` wins where both are set.
9098
-
9099
- ```js
9100
- chart.data = {
9101
- caption: 'Sessions by channel',
9102
- columns: ['Month', 'Direct', 'Referral'],
9103
- rows: [['Jan', 10, 4], ['Feb', 20, 8]],
9104
- }
9105
- ```
9106
-
9107
- The first column holds each row's label and every column after it a
9108
- series, as in a table. A cell is a number, words, `null` for a blank,
9109
- or `{ value, text }` for a number shown as words, such as `$128k`. A
9110
- number is shown in `locale`.
9111
-
9112
- **A table is still the better source where the page can show one**:
9113
- it reads with no script and before hydration, and a reader can sort and
9114
- copy it. Data is drawn on the client only, so a server serves the
9115
- frame, and the summary, the keys and the readout are then the whole of
9116
- what a screen reader is given. Set a new object to redraw: the chart
9117
- does not look inside the one it has. */
9118
- data?: (HelixHeadlessIsometricHeatmap["data"]) | undefined;
9119
- };
9120
-
9121
- export type HelixHeadlessIsometricHeatmapVueEvents = {
9122
- /** Fired once a press or a key has changed which cells are selected. */
9123
- change: HelixHeadlessIsometricHeatmapElementEvent;
9124
- /** Fired before a press or a key changes which cells are selected, with the `value` it would leave. Cancelable. */
9125
- "helix-before-change": HelixHeadlessIsometricHeatmapHelixBeforeChangeElementEvent;
9126
- /** 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. */
9127
- "helix-reading-change": HelixHeadlessIsometricHeatmapHelixReadingChangeElementEvent;
9128
- /** A reading was clicked, tapped, or pressed with Enter or Space, with the same detail as `helix-reading-change`. */
9129
- "helix-reading-press": HelixHeadlessIsometricHeatmapHelixReadingPressElementEvent;
9130
- /** Fired when the number of cells drawn changes, with the new number. */
9131
- "helix-resize": HelixHeadlessIsometricHeatmapHelixResizeElementEvent;
9132
- };
9133
-
9134
8891
  /** `HelixHeadlessKbd` component event */
9135
8892
  export type HelixHeadlessKbdElementEvent<E = Event> = TypedEvent<
9136
8893
  HelixHeadlessKbd,
@@ -14759,53 +14516,562 @@ export type HelixHeadlessSparklineVueEvents = {
14759
14516
  "helix-reading-press": HelixHeadlessSparklineHelixReadingPressElementEvent;
14760
14517
  };
14761
14518
 
14762
- export type HelixHeadlessSpeedDialGroupVueProps = {
14763
- /** The group's name, drawn above its actions and read by screen readers. */
14764
- label?: (HelixHeadlessSpeedDialGroup["label"]) | undefined;
14765
- };
14766
-
14767
- export type HelixHeadlessSpeedDialGroupVueEvents = {};
14768
-
14769
- /** `HelixHeadlessSpeedDialItem` component event */
14770
- export type HelixHeadlessSpeedDialItemElementEvent<E = Event> = TypedEvent<
14771
- HelixHeadlessSpeedDialItem,
14519
+ /** `HelixHeadlessSpatialHeatmap` component event */
14520
+ export type HelixHeadlessSpatialHeatmapElementEvent<E = Event> = TypedEvent<
14521
+ HelixHeadlessSpatialHeatmap,
14772
14522
  E
14773
14523
  >;
14774
- /** `helix-select` event type */
14775
- export type HelixHeadlessSpeedDialItemHelixSelectElementEvent =
14776
- HelixHeadlessSpeedDialItemElementEvent<HelixSelectEvent>;
14524
+ /** `helix-plot-change` event type */
14525
+ export type HelixHeadlessSpatialHeatmapHelixPlotChangeElementEvent =
14526
+ HelixHeadlessSpatialHeatmapElementEvent<HelixPlotChangeEvent>;
14527
+ /** `helix-plot-turn` event type */
14528
+ export type HelixHeadlessSpatialHeatmapHelixPlotTurnElementEvent =
14529
+ HelixHeadlessSpatialHeatmapElementEvent<HelixPlotTurnEvent>;
14530
+ /** `helix-before-change` event type */
14531
+ export type HelixHeadlessSpatialHeatmapHelixBeforeChangeElementEvent =
14532
+ HelixHeadlessSpatialHeatmapElementEvent<HelixBeforeChangeEvent>;
14533
+ /** `helix-reading-change` event type */
14534
+ export type HelixHeadlessSpatialHeatmapHelixReadingChangeElementEvent =
14535
+ HelixHeadlessSpatialHeatmapElementEvent<HelixReadingChangeEvent>;
14536
+ /** `helix-reading-press` event type */
14537
+ export type HelixHeadlessSpatialHeatmapHelixReadingPressElementEvent =
14538
+ HelixHeadlessSpatialHeatmapElementEvent<HelixReadingPressEvent>;
14539
+ /** `helix-resize` event type */
14540
+ export type HelixHeadlessSpatialHeatmapHelixResizeElementEvent =
14541
+ HelixHeadlessSpatialHeatmapElementEvent<HelixResizeEvent>;
14777
14542
 
14778
- export type HelixHeadlessSpeedDialItemVueProps = {
14779
- /** Whether the action is disabled, so it cannot be chosen. */
14780
- disabled?: (HelixHeadlessSpeedDialItem["disabled"]) | undefined;
14781
- /** Whether the link downloads the file when the action is chosen. Only
14782
- meaningful beside an `href`, and only for a file served from the page's
14783
- origin. */
14784
- download?: (HelixHeadlessSpeedDialItem["download"]) | undefined;
14785
- /** The URL the action links to. Setting it draws the action as a link. */
14786
- href?: (HelixHeadlessSpeedDialItem["href"]) | undefined;
14787
- /** The link's `rel`. Set it whenever you set `target="_blank"`. */
14788
- rel?: (HelixHeadlessSpeedDialItem["rel"]) | undefined;
14789
- /** The action's keyboard shortcut as a chord, such as `mod+s`, carried as
14790
- `aria-keyshortcuts` and drawn after the name. `mod` is Command on an Apple
14791
- keyboard and Control elsewhere. Showing a shortcut does not bind it. */
14792
- shortcut?: (HelixHeadlessSpeedDialItem["shortcut"]) | undefined;
14793
- /** Where the link opens, such as `_blank` for a new tab. */
14794
- target?: (HelixHeadlessSpeedDialItem["target"]) | undefined;
14795
- /** The action's value, sent in `helix-select` when the action is chosen. */
14796
- value?: (HelixHeadlessSpeedDialItem["value"]) | undefined;
14797
- };
14543
+ export type HelixHeadlessSpatialHeatmapVueProps = {
14544
+ /** Draws every prism at no height, so the tones lie on a plane. */
14545
+ flat?: (HelixHeadlessSpatialHeatmap["flat"]) | undefined;
14546
+ /** How tall the highest reading stands, in cells. Every other reading stands
14547
+ at its share of it. */
14548
+ relief?: (HelixHeadlessSpatialHeatmap["relief"]) | undefined;
14549
+ /** The words shown in place of the drawing when the table has no readings,
14550
+ and the fallback of the `empty` slot. */
14551
+ "empty-text"?: (HelixHeadlessSpatialHeatmap["emptyText"]) | undefined;
14552
+ /** The words shown in place of the drawing when the table has no readings,
14553
+ and the fallback of the `empty` slot. */
14554
+ emptyText?: (HelixHeadlessSpatialHeatmap["emptyText"]) | undefined;
14555
+ /** Whether the readings are still on their way. The chart shows
14556
+ `loading-text` in place of an empty drawing until it has readings.
14798
14557
 
14799
- export type HelixHeadlessSpeedDialItemVueEvents = {
14800
- /** The action was chosen. Cancelable: cancel it to keep the dial open. */
14801
- "helix-select": HelixHeadlessSpeedDialItemHelixSelectElementEvent;
14802
- };
14558
+ Reflected, so a stylesheet can treat the chart while it waits. A chart
14559
+ that already has readings keeps drawing them, so a refresh does not
14560
+ blank it. */
14561
+ loading?: (HelixHeadlessSpatialHeatmap["loading"]) | undefined;
14562
+ /** The words shown in place of the drawing while `loading` is set and
14563
+ there are no readings yet, and the fallback of the `loading` slot. */
14564
+ "loading-text"?: (HelixHeadlessSpatialHeatmap["loadingText"]) | undefined;
14565
+ /** The words shown in place of the drawing while `loading` is set and
14566
+ there are no readings yet, and the fallback of the `loading` slot. */
14567
+ loadingText?: (HelixHeadlessSpatialHeatmap["loadingText"]) | undefined;
14568
+ /** The id of the table to read.
14803
14569
 
14804
- /** `HelixHeadlessSpeedDial` component event */
14805
- export type HelixHeadlessSpeedDialElementEvent<E = Event> = TypedEvent<
14806
- HelixHeadlessSpeedDial,
14807
- E
14808
- >;
14570
+ Names a table in the same tree, so a chart inside another component's
14571
+ shadow root reads a table in that root rather than one in the document. A
14572
+ `<table>` or anything built from grid roles, including `helix-table`.
14573
+
14574
+ **In React this arrives as a property and not as an attribute**, the way
14575
+ `Tooltip.for` does, so it does not reflect and nothing styles on it. */
14576
+ for?: (HelixHeadlessSpatialHeatmap["for"]) | undefined;
14577
+ /** The chart's name, which starts the chart's text summary.
14578
+
14579
+ Absent falls back to the table's own caption, which is usually the right
14580
+ words and is already written. */
14581
+ label?: (HelixHeadlessSpatialHeatmap["label"]) | undefined;
14582
+ /** The locale the chart's own numbers are written in: its axis, its
14583
+ percentages and its totals, such as `de` for `1.240` and `32 %`.
14584
+
14585
+ Absent reads the nearest `lang`, then the runtime's own. The table's
14586
+ cells are shown as the table writes them, whatever this says. */
14587
+ locale?: (HelixHeadlessSpatialHeatmap["locale"]) | undefined;
14588
+ /** Where a reading the keys moved to stands among the readings, said after
14589
+ it. `{position}` and `{count}` are replaced with the numbers, written in
14590
+ `locale`.
14591
+
14592
+ Set it to the words of the page's language, such as `{position} von
14593
+ {count}`, or to nothing to say no position. A slice or a series a
14594
+ legend hid is not counted. */
14595
+ "position-label"?: (HelixHeadlessSpatialHeatmap["positionLabel"]) | undefined;
14596
+ /** Where a reading the keys moved to stands among the readings, said after
14597
+ it. `{position}` and `{count}` are replaced with the numbers, written in
14598
+ `locale`.
14599
+
14600
+ Set it to the words of the page's language, such as `{position} von
14601
+ {count}`, or to nothing to say no position. A slice or a series a
14602
+ legend hid is not counted. */
14603
+ positionLabel?: (HelixHeadlessSpatialHeatmap["positionLabel"]) | undefined;
14604
+ /** The name the `overview` gives the busiest reading, `{busiestLabel}` in
14605
+ `overview-label`. */
14606
+ "busiest-label"?: (HelixHeadlessSpatialHeatmap["busiestLabel"]) | undefined;
14607
+ /** The name the `overview` gives the busiest reading, `{busiestLabel}` in
14608
+ `overview-label`. */
14609
+ busiestLabel?: (HelixHeadlessSpatialHeatmap["busiestLabel"]) | undefined;
14610
+ /** Space between cells, in CSS pixels. It is a number for the same reason
14611
+ `min-cell` is. */
14612
+ gap?: (HelixHeadlessSpatialHeatmap["gap"]) | undefined;
14613
+ /** The smallest a cell may get before the strip draws fewer of them, in CSS pixels.
14614
+
14615
+ **Set this only to overrule what the strip actually draws.** The arithmetic
14616
+ needs a width in pixels and the width is a length the stylesheet resolves,
14617
+ so a number written here that disagrees with the sheet is a promise the
14618
+ consumer has to keep by hand, and the one number a summary is told to trust
14619
+ is the one it gets wrong.
14620
+
14621
+ The strip measures itself, so sizing the cells in a sheet is enough on its
14622
+ own and these two are the estimate used until the first measurement lands.
14623
+ Writing the attribute pins the value and stops the measurement being
14624
+ consulted, which is what a container query or a transition on the cell size
14625
+ wants, where what is drawn this frame is not what the arithmetic should
14626
+ plan around.
14627
+
14628
+ Zero turns the dropping off altogether, which is right for a strip in a
14629
+ container that cannot get narrow. */
14630
+ "min-cell"?: (HelixHeadlessSpatialHeatmap["minCell"] | `${number}`) | undefined;
14631
+ /** The smallest a cell may get before the strip draws fewer of them, in CSS pixels.
14632
+
14633
+ **Set this only to overrule what the strip actually draws.** The arithmetic
14634
+ needs a width in pixels and the width is a length the stylesheet resolves,
14635
+ so a number written here that disagrees with the sheet is a promise the
14636
+ consumer has to keep by hand, and the one number a summary is told to trust
14637
+ is the one it gets wrong.
14638
+
14639
+ The strip measures itself, so sizing the cells in a sheet is enough on its
14640
+ own and these two are the estimate used until the first measurement lands.
14641
+ Writing the attribute pins the value and stops the measurement being
14642
+ consulted, which is what a container query or a transition on the cell size
14643
+ wants, where what is drawn this frame is not what the arithmetic should
14644
+ plan around.
14645
+
14646
+ Zero turns the dropping off altogether, which is right for a strip in a
14647
+ container that cannot get narrow. */
14648
+ minCell?: (HelixHeadlessSpatialHeatmap["minCell"]) | undefined;
14649
+ /** The `overview`'s sentence. `{busiestLabel}` and `{totalLabel}` are
14650
+ `busiest-label` and `total-label`, `{busiest}` the busiest reading's name
14651
+ and its reading as the table writes it, and `{total}` the total of the
14652
+ readings drawn, written in the locale. */
14653
+ "overview-label"?: (HelixHeadlessSpatialHeatmap["overviewLabel"]) | undefined;
14654
+ /** The `overview`'s sentence. `{busiestLabel}` and `{totalLabel}` are
14655
+ `busiest-label` and `total-label`, `{busiest}` the busiest reading's name
14656
+ and its reading as the table writes it, and `{total}` the total of the
14657
+ readings drawn, written in the locale. */
14658
+ overviewLabel?: (HelixHeadlessSpatialHeatmap["overviewLabel"]) | undefined;
14659
+ /** How many rows the strip has.
14660
+
14661
+ `1` is a status strip and `7` is a calendar week, which are the two readings
14662
+ this covers. Cells fill down the column and then across, which is what a
14663
+ calendar heatmap does: a week is a column, so the strip reads along the
14664
+ line in weeks, from the right on a right-to-left page, and top to bottom in
14665
+ days. */
14666
+ rows?: (HelixHeadlessSpatialHeatmap["rows"]) | undefined;
14667
+ /** What the readout added for a selected cell, under `selection-mode`. */
14668
+ "selected-label"?: (HelixHeadlessSpatialHeatmap["selectedLabel"]) | undefined;
14669
+ /** What the readout added for a selected cell, under `selection-mode`. */
14670
+ selectedLabel?: (HelixHeadlessSpatialHeatmap["selectedLabel"]) | undefined;
14671
+ /** What the `selection` part says after the selection changes. `{count}` is
14672
+ how many cells are selected, written in the locale, and a language that
14673
+ needs plural forms writes them: `{count, plural, one {# wybrany} few
14674
+ {# wybrane} many {# wybranych} other {# wybranego}}`. */
14675
+ "selection-label"?: (HelixHeadlessSpatialHeatmap["selectionLabel"]) | undefined;
14676
+ /** What the `selection` part says after the selection changes. `{count}` is
14677
+ how many cells are selected, written in the locale, and a language that
14678
+ needs plural forms writes them: `{count, plural, one {# wybrany} few
14679
+ {# wybrane} many {# wybranych} other {# wybranego}}`. */
14680
+ selectionLabel?: (HelixHeadlessSpatialHeatmap["selectionLabel"]) | undefined;
14681
+ /** How many cells a reader can select: `single` or `multiple`.
14682
+
14683
+ Absent selects nothing, and a press or Space does what it did. */
14684
+ "selection-mode"?: (HelixHeadlessSpatialHeatmap["selectionMode"]) | undefined;
14685
+ /** How many cells a reader can select: `single` or `multiple`.
14686
+
14687
+ Absent selects nothing, and a press or Space does what it did. */
14688
+ selectionMode?: (HelixHeadlessSpatialHeatmap["selectionMode"]) | undefined;
14689
+ /** What Shift takes in under `selection-mode="multiple"`: `linear`, every
14690
+ cell between two in the table's order, or `rectangle`, the cells between
14691
+ two corners by row and by column, as a spreadsheet selects a range. */
14692
+ "selection-shape"?: (HelixHeadlessSpatialHeatmap["selectionShape"]) | undefined;
14693
+ /** What Shift takes in under `selection-mode="multiple"`: `linear`, every
14694
+ cell between two in the table's order, or `rectangle`, the cells between
14695
+ two corners by row and by column, as a spreadsheet selects a range. */
14696
+ selectionShape?: (HelixHeadlessSpatialHeatmap["selectionShape"]) | undefined;
14697
+ /** The strip's name where the chart has none: no `aria-label`, `label`, or
14698
+ table caption. */
14699
+ "strip-label"?: (HelixHeadlessSpatialHeatmap["stripLabel"]) | undefined;
14700
+ /** The strip's name where the chart has none: no `aria-label`, `label`, or
14701
+ table caption. */
14702
+ stripLabel?: (HelixHeadlessSpatialHeatmap["stripLabel"]) | undefined;
14703
+ /** Lower bounds for the tone buckets, in the order the tones are given.
14704
+
14705
+ `thresholds="1 3 6 9"` with `tones="1 2 3 4"` puts 1 and 2 in the ramp's
14706
+ first step, 3 to 5 in the second, 6 to 8 in the third, and 9 upward in the
14707
+ fourth. A value below the first bound gets no tone at all: an empty day in a
14708
+ contribution graph is a day with nothing in it, and painting it as the
14709
+ lowest bucket claims a reading that does not exist. */
14710
+ thresholds?: (HelixHeadlessSpatialHeatmap["thresholds"]) | undefined;
14711
+ /** The tone for each bucket, in the same order as `thresholds`.
14712
+
14713
+ A name, resolved as `--heatmap-tone-<name>` by whichever tier answers.
14714
+ **`"1"` through `"5"` are a ramp and everything else is a category**, which
14715
+ is the distinction a heatmap lives or dies on: magnitude has to be one hue
14716
+ getting louder, because a reader compares two cells by weight and cannot
14717
+ compare two hues at all. `tones="surface info accent success primary"` for a
14718
+ commit count is five unrelated hues for five amounts, which is confetti with
14719
+ no order in it. */
14720
+ tones?: (HelixHeadlessSpatialHeatmap["tones"]) | undefined;
14721
+ /** The name the `overview` gives the total of the readings drawn,
14722
+ `{totalLabel}` in `overview-label`. */
14723
+ "total-label"?: (HelixHeadlessSpatialHeatmap["totalLabel"]) | undefined;
14724
+ /** The name the `overview` gives the total of the readings drawn,
14725
+ `{totalLabel}` in `overview-label`. */
14726
+ totalLabel?: (HelixHeadlessSpatialHeatmap["totalLabel"]) | undefined;
14727
+ /** The selected cells, separated by commas: each by the date its row's
14728
+ header carries in a `<time datetime>`, such as `2026-06-11`, or by the
14729
+ header's words where it carries none.
14730
+
14731
+ Set it to start with cells selected. Written by a press or a key under
14732
+ `selection-mode`. */
14733
+ value?: (HelixHeadlessSpatialHeatmap["value"]) | undefined;
14734
+ /** The readings as data, in the shape of a table, where the page has no
14735
+ table to point `for` at. `for` wins where both are set.
14736
+
14737
+ ```js
14738
+ chart.data = {
14739
+ caption: 'Sessions by channel',
14740
+ columns: ['Month', 'Direct', 'Referral'],
14741
+ rows: [['Jan', 10, 4], ['Feb', 20, 8]],
14742
+ }
14743
+ ```
14744
+
14745
+ The first column holds each row's label and every column after it a
14746
+ series, as in a table. A cell is a number, words, `null` for a blank,
14747
+ or `{ value, text }` for a number shown as words, such as `$128k`. A
14748
+ number is shown in `locale`.
14749
+
14750
+ **A table is still the better source where the page can show one**:
14751
+ it reads with no script and before hydration, and a reader can sort and
14752
+ copy it. Data is drawn on the client only, so a server serves the
14753
+ frame, and the summary, the keys and the readout are then the whole of
14754
+ what a screen reader is given. Set a new object to redraw: the chart
14755
+ does not look inside the one it has. */
14756
+ data?: (HelixHeadlessSpatialHeatmap["data"]) | undefined;
14757
+ };
14758
+
14759
+ export type HelixHeadlessSpatialHeatmapVueEvents = {
14760
+ /** The readings drawn or the reading the keys rest on changed, which a renderer is told. It stays on the chart. */
14761
+ "helix-plot-change": HelixHeadlessSpatialHeatmapHelixPlotChangeElementEvent;
14762
+ /** Shift with an arrow asked a renderer's view to turn, by a step across or up. */
14763
+ "helix-plot-turn": HelixHeadlessSpatialHeatmapHelixPlotTurnElementEvent;
14764
+ /** Fired once a press or a key has changed which cells are selected. */
14765
+ change: HelixHeadlessSpatialHeatmapElementEvent;
14766
+ /** Fired before a press or a key changes which cells are selected, with the `value` it would leave. Cancelable. */
14767
+ "helix-before-change": HelixHeadlessSpatialHeatmapHelixBeforeChangeElementEvent;
14768
+ /** 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. */
14769
+ "helix-reading-change": HelixHeadlessSpatialHeatmapHelixReadingChangeElementEvent;
14770
+ /** A reading was clicked, tapped, or pressed with Enter or Space, with the same detail as `helix-reading-change`. */
14771
+ "helix-reading-press": HelixHeadlessSpatialHeatmapHelixReadingPressElementEvent;
14772
+ /** Fired when the number of cells drawn changes, with the new number. */
14773
+ "helix-resize": HelixHeadlessSpatialHeatmapHelixResizeElementEvent;
14774
+ };
14775
+
14776
+ /** `HelixHeadlessSpatialScatterChart` component event */
14777
+ export type HelixHeadlessSpatialScatterChartElementEvent<E = Event> =
14778
+ TypedEvent<HelixHeadlessSpatialScatterChart, E>;
14779
+ /** `helix-plot-change` event type */
14780
+ export type HelixHeadlessSpatialScatterChartHelixPlotChangeElementEvent =
14781
+ HelixHeadlessSpatialScatterChartElementEvent<HelixPlotChangeEvent>;
14782
+ /** `helix-plot-turn` event type */
14783
+ export type HelixHeadlessSpatialScatterChartHelixPlotTurnElementEvent =
14784
+ HelixHeadlessSpatialScatterChartElementEvent<HelixPlotTurnEvent>;
14785
+ /** `helix-reading-change` event type */
14786
+ export type HelixHeadlessSpatialScatterChartHelixReadingChangeElementEvent =
14787
+ HelixHeadlessSpatialScatterChartElementEvent<HelixReadingChangeEvent>;
14788
+ /** `helix-reading-press` event type */
14789
+ export type HelixHeadlessSpatialScatterChartHelixReadingPressElementEvent =
14790
+ HelixHeadlessSpatialScatterChartElementEvent<HelixReadingPressEvent>;
14791
+
14792
+ export type HelixHeadlessSpatialScatterChartVueProps = {
14793
+ /** The column of text that puts each point in a group, by its heading. None by default. */
14794
+ "group-by"?: (HelixHeadlessSpatialScatterChart["groupBy"]) | undefined;
14795
+ /** The column of text that puts each point in a group, by its heading. None by default. */
14796
+ groupBy?: (HelixHeadlessSpatialScatterChart["groupBy"]) | undefined;
14797
+ /** The plot's name where the chart has none: no `aria-label`, `label`, or table caption. */
14798
+ "plot-label"?: (HelixHeadlessSpatialScatterChart["plotLabel"]) | undefined;
14799
+ /** The plot's name where the chart has none: no `aria-label`, `label`, or table caption. */
14800
+ plotLabel?: (HelixHeadlessSpatialScatterChart["plotLabel"]) | undefined;
14801
+ /** The `summary` part's sentence. `{count}` is the number of points, written
14802
+ in the locale, and `{x}`, `{y}`, and `{z}` are the three measures' names. */
14803
+ "summary-label"?: (HelixHeadlessSpatialScatterChart["summaryLabel"]) | undefined;
14804
+ /** The `summary` part's sentence. `{count}` is the number of points, written
14805
+ in the locale, and `{x}`, `{y}`, and `{z}` are the three measures' names. */
14806
+ summaryLabel?: (HelixHeadlessSpatialScatterChart["summaryLabel"]) | undefined;
14807
+ /** The words shown in place of the drawing when the table has no readings,
14808
+ and the fallback of the `empty` slot. */
14809
+ "empty-text"?: (HelixHeadlessSpatialScatterChart["emptyText"]) | undefined;
14810
+ /** The words shown in place of the drawing when the table has no readings,
14811
+ and the fallback of the `empty` slot. */
14812
+ emptyText?: (HelixHeadlessSpatialScatterChart["emptyText"]) | undefined;
14813
+ /** Whether the readings are still on their way. The chart shows
14814
+ `loading-text` in place of an empty drawing until it has readings.
14815
+
14816
+ Reflected, so a stylesheet can treat the chart while it waits. A chart
14817
+ that already has readings keeps drawing them, so a refresh does not
14818
+ blank it. */
14819
+ loading?: (HelixHeadlessSpatialScatterChart["loading"]) | undefined;
14820
+ /** The words shown in place of the drawing while `loading` is set and
14821
+ there are no readings yet, and the fallback of the `loading` slot. */
14822
+ "loading-text"?: (HelixHeadlessSpatialScatterChart["loadingText"]) | undefined;
14823
+ /** The words shown in place of the drawing while `loading` is set and
14824
+ there are no readings yet, and the fallback of the `loading` slot. */
14825
+ loadingText?: (HelixHeadlessSpatialScatterChart["loadingText"]) | undefined;
14826
+ /** The id of the table to read.
14827
+
14828
+ Names a table in the same tree, so a chart inside another component's
14829
+ shadow root reads a table in that root rather than one in the document. A
14830
+ `<table>` or anything built from grid roles, including `helix-table`.
14831
+
14832
+ **In React this arrives as a property and not as an attribute**, the way
14833
+ `Tooltip.for` does, so it does not reflect and nothing styles on it. */
14834
+ for?: (HelixHeadlessSpatialScatterChart["for"]) | undefined;
14835
+ /** The chart's name, which starts the chart's text summary.
14836
+
14837
+ Absent falls back to the table's own caption, which is usually the right
14838
+ words and is already written. */
14839
+ label?: (HelixHeadlessSpatialScatterChart["label"]) | undefined;
14840
+ /** The locale the chart's own numbers are written in: its axis, its
14841
+ percentages and its totals, such as `de` for `1.240` and `32 %`.
14842
+
14843
+ Absent reads the nearest `lang`, then the runtime's own. The table's
14844
+ cells are shown as the table writes them, whatever this says. */
14845
+ locale?: (HelixHeadlessSpatialScatterChart["locale"]) | undefined;
14846
+ /** Where a reading the keys moved to stands among the readings, said after
14847
+ it. `{position}` and `{count}` are replaced with the numbers, written in
14848
+ `locale`.
14849
+
14850
+ Set it to the words of the page's language, such as `{position} von
14851
+ {count}`, or to nothing to say no position. A slice or a series a
14852
+ legend hid is not counted. */
14853
+ "position-label"?: (HelixHeadlessSpatialScatterChart["positionLabel"]) | undefined;
14854
+ /** Where a reading the keys moved to stands among the readings, said after
14855
+ it. `{position}` and `{count}` are replaced with the numbers, written in
14856
+ `locale`.
14857
+
14858
+ Set it to the words of the page's language, such as `{position} von
14859
+ {count}`, or to nothing to say no position. A slice or a series a
14860
+ legend hid is not counted. */
14861
+ positionLabel?: (HelixHeadlessSpatialScatterChart["positionLabel"]) | undefined;
14862
+ /** The readings as data, in the shape of a table, where the page has no
14863
+ table to point `for` at. `for` wins where both are set.
14864
+
14865
+ ```js
14866
+ chart.data = {
14867
+ caption: 'Sessions by channel',
14868
+ columns: ['Month', 'Direct', 'Referral'],
14869
+ rows: [['Jan', 10, 4], ['Feb', 20, 8]],
14870
+ }
14871
+ ```
14872
+
14873
+ The first column holds each row's label and every column after it a
14874
+ series, as in a table. A cell is a number, words, `null` for a blank,
14875
+ or `{ value, text }` for a number shown as words, such as `$128k`. A
14876
+ number is shown in `locale`.
14877
+
14878
+ **A table is still the better source where the page can show one**:
14879
+ it reads with no script and before hydration, and a reader can sort and
14880
+ copy it. Data is drawn on the client only, so a server serves the
14881
+ frame, and the summary, the keys and the readout are then the whole of
14882
+ what a screen reader is given. Set a new object to redraw: the chart
14883
+ does not look inside the one it has. */
14884
+ data?: (HelixHeadlessSpatialScatterChart["data"]) | undefined;
14885
+ };
14886
+
14887
+ export type HelixHeadlessSpatialScatterChartVueEvents = {
14888
+ /** The points or the point the keys rest on changed, which the renderer is told. It stays on the chart. */
14889
+ "helix-plot-change": HelixHeadlessSpatialScatterChartHelixPlotChangeElementEvent;
14890
+ /** Shift with an arrow asked the view to turn, by a step across or up. */
14891
+ "helix-plot-turn": HelixHeadlessSpatialScatterChartHelixPlotTurnElementEvent;
14892
+ /** The reading moved, or was put away: `index` is the row, or `-1` for none, with its `label` and the `pointerType` that moved it. */
14893
+ "helix-reading-change": HelixHeadlessSpatialScatterChartHelixReadingChangeElementEvent;
14894
+ /** A point was clicked, tapped, or pressed with Enter or Space, with the same detail as `helix-reading-change`. */
14895
+ "helix-reading-press": HelixHeadlessSpatialScatterChartHelixReadingPressElementEvent;
14896
+ };
14897
+
14898
+ /** `HelixHeadlessSpatialSurfaceChart` component event */
14899
+ export type HelixHeadlessSpatialSurfaceChartElementEvent<E = Event> =
14900
+ TypedEvent<HelixHeadlessSpatialSurfaceChart, E>;
14901
+ /** `helix-plot-change` event type */
14902
+ export type HelixHeadlessSpatialSurfaceChartHelixPlotChangeElementEvent =
14903
+ HelixHeadlessSpatialSurfaceChartElementEvent<HelixPlotChangeEvent>;
14904
+ /** `helix-plot-turn` event type */
14905
+ export type HelixHeadlessSpatialSurfaceChartHelixPlotTurnElementEvent =
14906
+ HelixHeadlessSpatialSurfaceChartElementEvent<HelixPlotTurnEvent>;
14907
+ /** `helix-reading-change` event type */
14908
+ export type HelixHeadlessSpatialSurfaceChartHelixReadingChangeElementEvent =
14909
+ HelixHeadlessSpatialSurfaceChartElementEvent<HelixReadingChangeEvent>;
14910
+ /** `helix-reading-press` event type */
14911
+ export type HelixHeadlessSpatialSurfaceChartHelixReadingPressElementEvent =
14912
+ HelixHeadlessSpatialSurfaceChartElementEvent<HelixReadingPressEvent>;
14913
+
14914
+ export type HelixHeadlessSpatialSurfaceChartVueProps = {
14915
+ /** What the readout says for a place with no reading. `{x}` and `{z}` are
14916
+ the place's numbers across and in depth, and `{across}` and `{depth}`
14917
+ the two measures' names. */
14918
+ "open-label"?: (HelixHeadlessSpatialSurfaceChart["openLabel"]) | undefined;
14919
+ /** What the readout says for a place with no reading. `{x}` and `{z}` are
14920
+ the place's numbers across and in depth, and `{across}` and `{depth}`
14921
+ the two measures' names. */
14922
+ openLabel?: (HelixHeadlessSpatialSurfaceChart["openLabel"]) | undefined;
14923
+ /** The plot's name where the chart has none: no `aria-label`, `label`, or table caption. */
14924
+ "plot-label"?: (HelixHeadlessSpatialSurfaceChart["plotLabel"]) | undefined;
14925
+ /** The plot's name where the chart has none: no `aria-label`, `label`, or table caption. */
14926
+ plotLabel?: (HelixHeadlessSpatialSurfaceChart["plotLabel"]) | undefined;
14927
+ /** The `summary` part's sentence. `{count}` is the number of readings,
14928
+ written in the locale, `{x}`, `{z}`, and `{y}` are the measures across,
14929
+ in depth, and up, and `{low}` and `{high}` the lowest and the highest
14930
+ reading. */
14931
+ "summary-label"?: (HelixHeadlessSpatialSurfaceChart["summaryLabel"]) | undefined;
14932
+ /** The `summary` part's sentence. `{count}` is the number of readings,
14933
+ written in the locale, `{x}`, `{z}`, and `{y}` are the measures across,
14934
+ in depth, and up, and `{low}` and `{high}` the lowest and the highest
14935
+ reading. */
14936
+ summaryLabel?: (HelixHeadlessSpatialSurfaceChart["summaryLabel"]) | undefined;
14937
+ /** The words shown in place of the drawing when the table has no readings,
14938
+ and the fallback of the `empty` slot. */
14939
+ "empty-text"?: (HelixHeadlessSpatialSurfaceChart["emptyText"]) | undefined;
14940
+ /** The words shown in place of the drawing when the table has no readings,
14941
+ and the fallback of the `empty` slot. */
14942
+ emptyText?: (HelixHeadlessSpatialSurfaceChart["emptyText"]) | undefined;
14943
+ /** Whether the readings are still on their way. The chart shows
14944
+ `loading-text` in place of an empty drawing until it has readings.
14945
+
14946
+ Reflected, so a stylesheet can treat the chart while it waits. A chart
14947
+ that already has readings keeps drawing them, so a refresh does not
14948
+ blank it. */
14949
+ loading?: (HelixHeadlessSpatialSurfaceChart["loading"]) | undefined;
14950
+ /** The words shown in place of the drawing while `loading` is set and
14951
+ there are no readings yet, and the fallback of the `loading` slot. */
14952
+ "loading-text"?: (HelixHeadlessSpatialSurfaceChart["loadingText"]) | undefined;
14953
+ /** The words shown in place of the drawing while `loading` is set and
14954
+ there are no readings yet, and the fallback of the `loading` slot. */
14955
+ loadingText?: (HelixHeadlessSpatialSurfaceChart["loadingText"]) | undefined;
14956
+ /** The id of the table to read.
14957
+
14958
+ Names a table in the same tree, so a chart inside another component's
14959
+ shadow root reads a table in that root rather than one in the document. A
14960
+ `<table>` or anything built from grid roles, including `helix-table`.
14961
+
14962
+ **In React this arrives as a property and not as an attribute**, the way
14963
+ `Tooltip.for` does, so it does not reflect and nothing styles on it. */
14964
+ for?: (HelixHeadlessSpatialSurfaceChart["for"]) | undefined;
14965
+ /** The chart's name, which starts the chart's text summary.
14966
+
14967
+ Absent falls back to the table's own caption, which is usually the right
14968
+ words and is already written. */
14969
+ label?: (HelixHeadlessSpatialSurfaceChart["label"]) | undefined;
14970
+ /** The locale the chart's own numbers are written in: its axis, its
14971
+ percentages and its totals, such as `de` for `1.240` and `32 %`.
14972
+
14973
+ Absent reads the nearest `lang`, then the runtime's own. The table's
14974
+ cells are shown as the table writes them, whatever this says. */
14975
+ locale?: (HelixHeadlessSpatialSurfaceChart["locale"]) | undefined;
14976
+ /** Where a reading the keys moved to stands among the readings, said after
14977
+ it. `{position}` and `{count}` are replaced with the numbers, written in
14978
+ `locale`.
14979
+
14980
+ Set it to the words of the page's language, such as `{position} von
14981
+ {count}`, or to nothing to say no position. A slice or a series a
14982
+ legend hid is not counted. */
14983
+ "position-label"?: (HelixHeadlessSpatialSurfaceChart["positionLabel"]) | undefined;
14984
+ /** Where a reading the keys moved to stands among the readings, said after
14985
+ it. `{position}` and `{count}` are replaced with the numbers, written in
14986
+ `locale`.
14987
+
14988
+ Set it to the words of the page's language, such as `{position} von
14989
+ {count}`, or to nothing to say no position. A slice or a series a
14990
+ legend hid is not counted. */
14991
+ positionLabel?: (HelixHeadlessSpatialSurfaceChart["positionLabel"]) | undefined;
14992
+ /** The readings as data, in the shape of a table, where the page has no
14993
+ table to point `for` at. `for` wins where both are set.
14994
+
14995
+ ```js
14996
+ chart.data = {
14997
+ caption: 'Sessions by channel',
14998
+ columns: ['Month', 'Direct', 'Referral'],
14999
+ rows: [['Jan', 10, 4], ['Feb', 20, 8]],
15000
+ }
15001
+ ```
15002
+
15003
+ The first column holds each row's label and every column after it a
15004
+ series, as in a table. A cell is a number, words, `null` for a blank,
15005
+ or `{ value, text }` for a number shown as words, such as `$128k`. A
15006
+ number is shown in `locale`.
15007
+
15008
+ **A table is still the better source where the page can show one**:
15009
+ it reads with no script and before hydration, and a reader can sort and
15010
+ copy it. Data is drawn on the client only, so a server serves the
15011
+ frame, and the summary, the keys and the readout are then the whole of
15012
+ what a screen reader is given. Set a new object to redraw: the chart
15013
+ does not look inside the one it has. */
15014
+ data?: (HelixHeadlessSpatialSurfaceChart["data"]) | undefined;
15015
+ };
15016
+
15017
+ export type HelixHeadlessSpatialSurfaceChartVueEvents = {
15018
+ /** The readings or the place the keys rest on changed, which the renderer is told. It stays on the chart. */
15019
+ "helix-plot-change": HelixHeadlessSpatialSurfaceChartHelixPlotChangeElementEvent;
15020
+ /** Shift with an arrow asked the view to turn, by a step across or up. */
15021
+ "helix-plot-turn": HelixHeadlessSpatialSurfaceChartHelixPlotTurnElementEvent;
15022
+ /** The reading moved, or was put away: `index` is the row, or `-1` for none or a place with no reading, with its `label` and the `pointerType` that moved it. */
15023
+ "helix-reading-change": HelixHeadlessSpatialSurfaceChartHelixReadingChangeElementEvent;
15024
+ /** A place was clicked or pressed with Enter or Space, with the same detail as `helix-reading-change`. */
15025
+ "helix-reading-press": HelixHeadlessSpatialSurfaceChartHelixReadingPressElementEvent;
15026
+ };
15027
+
15028
+ export type HelixHeadlessSpeedDialGroupVueProps = {
15029
+ /** The group's name, drawn above its actions and read by screen readers. */
15030
+ label?: (HelixHeadlessSpeedDialGroup["label"]) | undefined;
15031
+ };
15032
+
15033
+ export type HelixHeadlessSpeedDialGroupVueEvents = {};
15034
+
15035
+ /** `HelixHeadlessSpeedDialItem` component event */
15036
+ export type HelixHeadlessSpeedDialItemElementEvent<E = Event> = TypedEvent<
15037
+ HelixHeadlessSpeedDialItem,
15038
+ E
15039
+ >;
15040
+ /** `helix-select` event type */
15041
+ export type HelixHeadlessSpeedDialItemHelixSelectElementEvent =
15042
+ HelixHeadlessSpeedDialItemElementEvent<HelixSelectEvent>;
15043
+
15044
+ export type HelixHeadlessSpeedDialItemVueProps = {
15045
+ /** Whether the action is disabled, so it cannot be chosen. */
15046
+ disabled?: (HelixHeadlessSpeedDialItem["disabled"]) | undefined;
15047
+ /** Whether the link downloads the file when the action is chosen. Only
15048
+ meaningful beside an `href`, and only for a file served from the page's
15049
+ origin. */
15050
+ download?: (HelixHeadlessSpeedDialItem["download"]) | undefined;
15051
+ /** The URL the action links to. Setting it draws the action as a link. */
15052
+ href?: (HelixHeadlessSpeedDialItem["href"]) | undefined;
15053
+ /** The link's `rel`. Set it whenever you set `target="_blank"`. */
15054
+ rel?: (HelixHeadlessSpeedDialItem["rel"]) | undefined;
15055
+ /** The action's keyboard shortcut as a chord, such as `mod+s`, carried as
15056
+ `aria-keyshortcuts` and drawn after the name. `mod` is Command on an Apple
15057
+ keyboard and Control elsewhere. Showing a shortcut does not bind it. */
15058
+ shortcut?: (HelixHeadlessSpeedDialItem["shortcut"]) | undefined;
15059
+ /** Where the link opens, such as `_blank` for a new tab. */
15060
+ target?: (HelixHeadlessSpeedDialItem["target"]) | undefined;
15061
+ /** The action's value, sent in `helix-select` when the action is chosen. */
15062
+ value?: (HelixHeadlessSpeedDialItem["value"]) | undefined;
15063
+ };
15064
+
15065
+ export type HelixHeadlessSpeedDialItemVueEvents = {
15066
+ /** The action was chosen. Cancelable: cancel it to keep the dial open. */
15067
+ "helix-select": HelixHeadlessSpeedDialItemHelixSelectElementEvent;
15068
+ };
15069
+
15070
+ /** `HelixHeadlessSpeedDial` component event */
15071
+ export type HelixHeadlessSpeedDialElementEvent<E = Event> = TypedEvent<
15072
+ HelixHeadlessSpeedDial,
15073
+ E
15074
+ >;
14809
15075
  /** `helix-before-close` event type */
14810
15076
  export type HelixHeadlessSpeedDialHelixBeforeCloseElementEvent =
14811
15077
  HelixHeadlessSpeedDialElementEvent<HelixBeforeCloseEvent>;
@@ -19461,8 +19727,6 @@ export type CustomCssProperties = {
19461
19727
  "--heatmap-tone-success"?: (string) | undefined;
19462
19728
  /** The color of the `warning` tone. */
19463
19729
  "--heatmap-tone-warning"?: (string) | undefined;
19464
- /** How many cells the drawing spans across: its columns and its rows together. The component writes it on the strip, and a stylesheet that caps the cell size reads it. */
19465
- "--isometric-heatmap-span"?: (string) | undefined;
19466
19730
  /** How far the zoomed item is moved across from the middle of the viewport, in pixels, toward the right. Written only while zoomed. */
19467
19731
  "--lightbox-pan-x"?: (string) | undefined;
19468
19732
  /** How far the zoomed item is moved down from the middle of the viewport, in pixels. Written only while zoomed. */
@@ -19537,6 +19801,22 @@ export type CustomCssProperties = {
19537
19801
  "--slider-marker-at"?: (string) | undefined;
19538
19802
  /** Where the filled span ends, as a fraction of the track, 0 to 1: a range's upper thumb, or the farther of a single thumb and its `origin`. */
19539
19803
  "--slider-to"?: (string) | undefined;
19804
+ /** How tall the drawing is for its width. The component writes it on the footer, and a stylesheet that stands the `start` and `end` labels at their corners reads it. */
19805
+ "--spatial-heatmap-depth"?: (string) | undefined;
19806
+ /** Where the front edge ends, under the newest column, across the drawing, from 0 at its inline start to 1. The component writes it on the footer, and a stylesheet that stands the `end` label there reads it. */
19807
+ "--spatial-heatmap-end-x"?: (string) | undefined;
19808
+ /** How far down the drawing the front edge ends, under the newest column, as a share of the drawing's width: its whole depth in the chart's own drawing, and wherever a renderer draws it. The component writes it on the footer, and a stylesheet that stands the `end` label there reads it. */
19809
+ "--spatial-heatmap-end-y"?: (string) | undefined;
19810
+ /** How many cells the drawing spans across: its columns and its rows together. The component writes it on the strip, and a stylesheet that caps the cell size reads it. */
19811
+ "--spatial-heatmap-span"?: (string) | undefined;
19812
+ /** Where the front edge starts, under the first column, across the drawing, from 0 at its inline start to 1: 0 in the chart's own drawing, and wherever a renderer draws it. The component writes it on the footer, and a stylesheet that stands the `start` label there reads it. */
19813
+ "--spatial-heatmap-start-x"?: (string) | undefined;
19814
+ /** How far down the drawing the front edge starts, under the first column, as a share of the drawing's width. The component writes it on the footer, and a stylesheet that stands the `start` label there reads it. */
19815
+ "--spatial-heatmap-start-y"?: (string) | undefined;
19816
+ /** How high a face of the surface stands between the lowest reading and the highest, from 0 to 1: its corners' average. The component writes it on each face, and the stylesheet that colors the face along the ramp reads it. */
19817
+ "--spatial-surface-chart-level"?: (string) | undefined;
19818
+ /** How far a face of the surface turns from the light, as a share of lightness to take from its color, from 0 facing it to about 0.3. The component writes it on each face, and the stylesheet that shades the face reads it. */
19819
+ "--spatial-surface-chart-shade"?: (string) | undefined;
19540
19820
  /** Where a nested splitter crosses this one, as a percentage. */
19541
19821
  "--splitter-corner-at"?: (string) | undefined;
19542
19822
  /** Where the divider sits, as a percentage of the box. */
@@ -19919,12 +20199,6 @@ export interface WcToolkitVueGlobalComponents {
19919
20199
  HelixHeadlessInputVueProps,
19920
20200
  HelixHeadlessInputVueEvents
19921
20201
  >;
19922
- /** The same strip as 'Heatmap', seen from above at an angle. Each reading is a prism: its top face takes the cell's tone, and its height repeats the value, measured from zero against the highest reading in the table. 'rows="7"' makes a contribution graph, with each week a column running down to the right. **The height says what the tone says.** Read the exact value from the tooltip or the table, and compare readings by tone. A tall reading at the front can hide a short one behind it, so the newest column stands at the front, where nothing covers it. **Everything else is 'Heatmap'.** The table named by 'for', the tones and thresholds, the keys, the tooltip, the overview, 'selection-mode', and the events all work as they do there. The class extends the headless heatmap, and its own entry point carries the drawing, so a page using only 'Heatmap' loads none of it. **'flat' lays every prism down** at no height, which leaves the tones on a plane at the same angle. **'gap' and 'min-cell' set the smallest cell.** The drawing scales as a whole, so a wider box draws larger cells and the gap grows with them. A box too narrow for every column at 'min-cell' draws the newest that fit. **The drawing is SVG and holds still.** It scales with its box through its 'viewBox', needs no WebGL, and has no motion to pause. **Keyboard.** The keys are 'Heatmap''s. Down moves to the next reading in a column, drawn down to the left, and Right to the same reading in the next column, drawn down to the right. | Key | What it does | |---|---| | Tab | Moves focus to the strip and shows the first cell. | | Down, Up | Moves to the next or the previous cell. | | Right, Left | Moves a column on or back, a week with 'rows="7"'. On a right-to-left page, Left moves on. | | Home, End | Moves to the first or the last cell. | | Page Down, Page Up | Moves a month on or back where the rows carry dates, and four columns otherwise. | | Enter, Space | Presses the cell, which sends 'helix-reading-press', and selects it or lets it go under 'selection-mode'. | | Shift with an arrow, Home, End, Page Up or Page Down | Selects every cell from the last one pressed to where the key went, under 'selection-mode="multiple"'. | | Escape | Puts the cell's tooltip away. | */
19923
- "helix-headless-isometric-heatmap": DefineCustomElement<
19924
- HelixHeadlessIsometricHeatmap,
19925
- HelixHeadlessIsometricHeatmapVueProps,
19926
- HelixHeadlessIsometricHeatmapVueEvents
19927
- >;
19928
20202
  /** Renders a '<kbd>' element. Each element holds one key, except when you use 'keys'. For a sequence or a chord, write one element per key and put the separator between them as text, such as "then" or "plus". 'keys' renders the right glyphs for the platform. Given 'mod', it renders '⌘K' on Apple devices and 'Ctrl+K' everywhere else. A '⌘K' typed into a template is wrong for anyone on Windows. The element binds the shortcut only when 'within' is set. By default it draws the key and listens for nothing. **'for' names the control the shortcut works**, and the key writes its chord onto that control's 'aria-keyshortcuts', in the platform's words ('Meta+K' on an Apple keyboard, 'Control+K' elsewhere), so a screen reader announces the shortcut with the control. A chord the page wrote there itself is left alone, and the key takes back only what it added. A chord is drawn with the platform's modifiers first, in its order, so one 'keys' value is right everywhere: 'mod+shift+p' is '⇧⌘P' on an Apple keyboard and 'Ctrl+Shift+P' elsewhere. Where it is drawn in glyphs, it is read in words, such as 'Shift Command P'. 'caps' draws a chord as a key per key: each is a 'key' part and the '+' between two a 'separator' part, so a sheet can draw a cap for each. 'key-labels' renames any key, on every platform, such as 'key-labels='{"mod":"Command"}''. On an Apple keyboard a word joins the next key with a hyphen, as in 'Command-K'. **'activate' makes the shortcut work the control 'for' names**, with no script: 'activate="focus"' moves focus to it, as '/' does to a search field, and 'activate="click"' presses it. It acts once 'helix-shortcut' has gone out and no listener canceled it, and only where 'within' listens. */
19929
20203
  "helix-headless-kbd": DefineCustomElement<
19930
20204
  HelixHeadlessKbd,
@@ -20243,6 +20517,24 @@ export interface WcToolkitVueGlobalComponents {
20243
20517
  HelixHeadlessSparklineVueProps,
20244
20518
  HelixHeadlessSparklineVueEvents
20245
20519
  >;
20520
+ /** The same strip as 'Heatmap', seen from above at an angle. Each reading is a prism: its top face takes the cell's tone, and its height repeats the value, measured from zero against the highest reading in the table. 'rows="7"' makes a contribution graph, with each week a column running down to the right. **The height says what the tone says.** Read the exact value from the tooltip or the table, and compare readings by tone. A tall reading at the front can hide a short one behind it, so the newest column stands at the front, where nothing covers it. **Everything else is 'Heatmap'.** The table named by 'for', the tones and thresholds, the keys, the tooltip, the overview, 'selection-mode', and the events all work as they do there. The class extends the headless heatmap, and its own entry point carries the drawing, so a page using only 'Heatmap' loads none of it. **It was 'helix-isometric-heatmap' until 0.189.0**, and 'helix-headless-isometric-heatmap' in the headless tier. The old tags are gone, and so are the '--isometric-heatmap-*' hooks, which are '--spatial-heatmap-*', and the words key, which is 'helix-spatial-heatmap'. The two shade hooks now take a step of lightness, such as '0.07', where they took a percentage mixed toward black. Every attribute, part, and event kept its name. **'flat' lays every prism down** at no height, which leaves the tones on a plane at the same angle. **The prisms stand on a slab**, the 'base', which reaches a little past the grid, so the relief reads as one object. The 'start' and 'end' slots name the two ends of the front edge, which is the strip's first and last column: the component writes where those corners are on the 'footer', and a stylesheet stands each label at its corner. A renderer tells the chart where it draws those corners, so the labels stand at them there too, and follow them as the view turns. **'gap' and 'min-cell' set the smallest cell.** The drawing scales as a whole, so a wider box draws larger cells and the gap grows with them. A box too narrow for every column at 'min-cell' draws the newest that fit. **The drawing is SVG and holds still.** It scales with its box through its 'viewBox', needs no WebGL, and has no motion to pause. **A renderer can draw it in 3D instead.** Put a box for it in the 'renderer' slot, and 'connectSpatialHeatmap' from '@fusion.dev/helix-plot' draws the prisms in it with three.js, lit, in the same tones, in a view that drags round and zooms. The chart publishes its readings in 'field', and its own drawing stays under the renderer's, unseen, where a screen reader and the keys still reach it. Shift with an arrow turns the view, except under 'selection-mode="multiple"', where it selects. **Keyboard.** The keys are 'Heatmap''s. Down moves to the next reading in a column, drawn down to the left, and Right to the same reading in the next column, drawn down to the right. | Key | What it does | |---|---| | Tab | Moves focus to the strip and shows the first cell. | | Down, Up | Moves to the next or the previous cell. | | Right, Left | Moves a column on or back, a week with 'rows="7"'. On a right-to-left page, Left moves on. | | Home, End | Moves to the first or the last cell. | | Page Down, Page Up | Moves a month on or back where the rows carry dates, and four columns otherwise. | | Enter, Space | Presses the cell, which sends 'helix-reading-press', and selects it or lets it go under 'selection-mode'. | | Shift with an arrow, Home, End, Page Up or Page Down | Selects every cell from the last one pressed to where the key went, under 'selection-mode="multiple"'. | | Shift with an arrow | Turns a renderer's view, where one is connected and 'selection-mode' is not 'multiple'. | | Escape | Puts the cell's tooltip away. | */
20521
+ "helix-headless-spatial-heatmap": DefineCustomElement<
20522
+ HelixHeadlessSpatialHeatmap,
20523
+ HelixHeadlessSpatialHeatmapVueProps,
20524
+ HelixHeadlessSpatialHeatmapVueEvents
20525
+ >;
20526
+ /** A 3D scatter chart shows how three measures relate. The table's first three numeric columns are measured across, up, and in depth, and each row is one point. 'group-by' names a column of text, such as a team or a cluster, and each group is drawn in its own color. **Helix draws the frame, and a renderer draws the points in 3D.** Put a box for the renderer inside the chart, and 'connectSpatialScatterChart' from '@fusion.dev/helix-plot' draws the points in it with three.js and keeps it in step with the chart. Until a renderer has drawn, and where none is connected, the chart draws the points in 3D itself, in SVG, from the same place the renderer's camera starts: a still picture the server, a print, and a page without WebGL all show, which Shift with an arrow turns. **The table is the reading.** Every number is in it, and screen readers read it. The 'summary' part names the three measures and the number of points, and describes the plot. **The plot is read by key.** It takes focus, named by 'label' or the caption. The left and right arrows move from point to point in the table's order, Home and End go to the first and the last, and the up and down arrows move among the measures the readout says first. The 'live' part says the point's row in words, and the renderer marks it. Shift with an arrow turns the view, and Escape lets the point go. **A reading shows its row in a tooltip**, as on every chart: the point a mouse or a pen rests on in the drawing, the point tapped, or the one the keys move to, once a renderer has drawn. **Readings are sent as every chart sends them.** 'helix-reading-change' says each move of the reading, by pointer or key, and 'helix-reading-press' a point clicked, tapped, or pressed with Enter or Space, each with the row of the table in 'index'. **Keyboard.** The plot is one tab stop once it has points. | Key | What it does | |---|---| | Tab | Moves focus to the plot. | | Right, Left | Moves to the next or the previous point, in the table's order. | | Up, Down | Moves among the point's measures, which the readout says first. | | Home, End | Moves to the first or the last point. | | Shift with an arrow | Turns the view across, or tilts it up and down. | | Enter, Space | Presses the point, which sends 'helix-reading-press'. | | Escape | Lets the point go. | */
20527
+ "helix-headless-spatial-scatter-chart": DefineCustomElement<
20528
+ HelixHeadlessSpatialScatterChart,
20529
+ HelixHeadlessSpatialScatterChartVueProps,
20530
+ HelixHeadlessSpatialScatterChartVueEvents
20531
+ >;
20532
+ /** A 3D surface chart shows how one measure varies over two others, such as load by hour and by day. Each row of the table is one reading: **the first numeric column is across, the second is in depth, and the third is the height.** The readings make a grid from every distinct place across and in depth, and a place with no reading is left open. **Helix draws the frame, and a renderer draws the surface in 3D.** Put a box for the renderer inside the chart, and 'connectSpatialSurfaceChart' from '@fusion.dev/helix-plot' draws the surface in it with three.js, shaded from low to high in the theme's colors. Until a renderer has drawn, and where none is connected, the chart draws the surface in 3D itself, in SVG, from the same place the renderer's camera starts: a still picture the server, a print, and a page without WebGL all show, which Shift with an arrow turns. **The table is the reading.** Every number is in it, and screen readers read it. The 'summary' part names the measures, the number of readings, and the range of heights, and describes the plot. **The plot is read by key, across and in depth.** It takes focus, named by 'label' or the caption. The left and right arrows move across, the down and up arrows move in depth, forward and back, and Home and End go to the first and the last place. The 'live' part says the reading at the place in words, and the renderer marks it. Shift with an arrow turns the view, and Escape lets the place go. **A reading shows its row in a tooltip**, as on every chart: the place a mouse or a pen rests on in the drawing, the place tapped, or the one the keys move to, once a renderer has drawn. A place with no reading shows none. **Readings are sent as every chart sends them.** 'helix-reading-change' says each move of the reading, and 'helix-reading-press' a place clicked or pressed with Enter or Space, each with the row of the table in 'index', or '-1' for a place with no reading. **Keyboard.** The plot is one tab stop once it has readings. | Key | What it does | |---|---| | Tab | Moves focus to the plot. | | Right, Left | Moves across to the next or the previous place. | | Down, Up | Moves in depth to the next or the previous place. | | Home, End | Moves to the first or the last place. | | Shift with an arrow | Turns the view across, or tilts it up and down. | | Enter, Space | Presses the place, which sends 'helix-reading-press'. | | Escape | Lets the place go. | */
20533
+ "helix-headless-spatial-surface-chart": DefineCustomElement<
20534
+ HelixHeadlessSpatialSurfaceChart,
20535
+ HelixHeadlessSpatialSurfaceChartVueProps,
20536
+ HelixHeadlessSpatialSurfaceChartVueEvents
20537
+ >;
20246
20538
  /** A 'group' of the dial's menu, named by its label, as React Aria's menu sections and Menu's groups are: a reader hears the name on entering the set, and the arrow keys walk through every group's actions in order, from the last action of one group to the first of the next. Put actions straight into the group, and the group straight into the dial. Anything else slotted here is drawn and is not an action. */
20247
20539
  "helix-headless-speed-dial-group": DefineCustomElement<
20248
20540
  HelixHeadlessSpeedDialGroup,