@fusion.dev/helix 0.177.2 → 0.179.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/types/vue.d.ts CHANGED
@@ -930,6 +930,14 @@ hit-testable at rest, or it would swallow clicks meant for what is over it,
930
930
  and an element that is not hit-testable never receives the `pointermove`
931
931
  this listens for. Asking for the pointer is asking for the hit test. */
932
932
  interactive?: (HelixAura["interactive"]) | undefined;
933
+ /** Whether the aura draws its own control that pauses the field and starts it
934
+ again, in its trailing corner. Absent draws none, for a page with a pause
935
+ control of its own. */
936
+ "pause-control"?: (HelixAura["pauseControl"]) | undefined;
937
+ /** Whether the aura draws its own control that pauses the field and starts it
938
+ again, in its trailing corner. Absent draws none, for a page with a pause
939
+ control of its own. */
940
+ pauseControl?: (HelixAura["pauseControl"]) | undefined;
933
941
  /** Whether the field holds still on the frame it shows.
934
942
 
935
943
  Set it from a pause control on your page, so a reader can stop the motion,
@@ -937,6 +945,14 @@ as WCAG 2.2.2 asks of anything that moves for more than five seconds. A
937
945
  change to another property still repaints the frame. Clearing it starts
938
946
  the field from where it stopped. */
939
947
  paused?: (HelixAura["paused"]) | undefined;
948
+ /** The pause control's name, read by screen readers. The control is a toggle
949
+ and says it is pressed while the field is paused, so the name stays the
950
+ same. */
951
+ "pause-label"?: (HelixAura["pauseLabel"]) | undefined;
952
+ /** The pause control's name, read by screen readers. The control is a toggle
953
+ and says it is pressed while the field is paused, so the name stays the
954
+ same. */
955
+ pauseLabel?: (HelixAura["pauseLabel"]) | undefined;
940
956
  /** How far the pointer reaches into the field, `0` upward.
941
957
 
942
958
  Multiplied into the presence the pointer already fades in and out with, so
@@ -1009,6 +1025,8 @@ states. */
1009
1025
  };
1010
1026
 
1011
1027
  export type HelixAuraVueEvents = {
1028
+ /** Fired when the aura's own pause control pauses the field or starts it again. */
1029
+ change: HelixAuraElementEvent;
1012
1030
  /** Fired each time the aura stops drawing its shader and shows its gradient, with the reason. */
1013
1031
  "helix-aura-fallback": HelixAuraHelixAuraFallbackElementEvent;
1014
1032
  };
@@ -8361,6 +8379,14 @@ an icon. */
8361
8379
  /** The name of the clear button, read by screen readers. The button shows only
8362
8380
  an icon. */
8363
8381
  clearLabel?: (HelixFilterInput["clearLabel"]) | undefined;
8382
+ /** How long typing rests before `source` is asked, in milliseconds. A delay
8383
+ sends one request for a word in place of one for each letter. The arrow
8384
+ keys and Enter ask at once. `0` asks on every keystroke. */
8385
+ "filter-delay"?: (HelixFilterInput["filterDelay"] | `${number}`) | undefined;
8386
+ /** How long typing rests before `source` is asked, in milliseconds. A delay
8387
+ sends one request for a word in place of one for each letter. The arrow
8388
+ keys and Enter ask at once. `0` asks on every keystroke. */
8389
+ filterDelay?: (HelixFilterInput["filterDelay"]) | undefined;
8364
8390
  /** Whether the panel narrows itself to the suggestions that hold the term
8365
8391
  being typed, as React Aria's Autocomplete filters. Off, the panel shows
8366
8392
  what you slot and you narrow it. */
@@ -8438,6 +8464,13 @@ imperatively later, and nothing is hydrating by then.
8438
8464
 
8439
8465
  Here rather than on each control. */
8440
8466
  name?: (HelixFilterInput["name"]) | undefined;
8467
+ /** Where the suggestions come from: a function given the term at the caret,
8468
+ the field it is a value of, the whole text, and an `AbortSignal`, which
8469
+ returns the suggestions or a promise of them. Each is a string, or a
8470
+ `value` with a `label` and `disabled`. The field draws them as options in
8471
+ the panel, beside any you slot. A property only, there being no way to
8472
+ write a function in markup. See the class description. */
8473
+ source?: (HelixFilterInput["source"]) | undefined;
8441
8474
  };
8442
8475
 
8443
8476
  export type HelixFilterInputVueEvents = {
@@ -8455,7 +8488,7 @@ export type HelixFilterInputVueEvents = {
8455
8488
  "helix-dismiss": HelixFilterInputHelixDismissElementEvent;
8456
8489
  /** Fired when a filter changes, whether it was typed, picked, or removed. Cancelable: call `preventDefault()` to leave the text and the chip as they were. */
8457
8490
  "helix-facet": HelixFilterInputHelixFacetElementEvent;
8458
- /** Fired by an option in `suggestions` when it is chosen, and bubbles out of the field. Cancelable: call `preventDefault()` to stop other listeners acting on it. The field takes no action on a choice; you decide what it does. */
8491
+ /** Fired by an option in `suggestions` when it is chosen, and bubbles out of the field. Cancelable: call `preventDefault()` to stop other listeners acting on it. The field takes no action on an option you slotted, and you decide what it does. A suggestion from `source` is written over the term at the caret unless you cancel it. */
8459
8492
  "helix-select": HelixFilterInputHelixSelectElementEvent;
8460
8493
  /** Fired when the text changes. */
8461
8494
  input: HelixFilterInputElementEvent;
@@ -8929,6 +8962,14 @@ or hides its notes. Drawn where the notes have two groups or more. */
8929
8962
  "legend-label"?: (HelixGraph["legendLabel"]) | undefined;
8930
8963
  /** The legend's name, read by screen readers. */
8931
8964
  legendLabel?: (HelixGraph["legendLabel"]) | undefined;
8965
+ /** What screen readers hear when a walk along the links reaches a note that
8966
+ has no link to follow, or goes back to a note: `{note}` for its name and
8967
+ `{count}` for how many notes the list holds that it links to or from. */
8968
+ "link-count-label"?: (HelixGraph["linkCountLabel"]) | undefined;
8969
+ /** What screen readers hear when a walk along the links reaches a note that
8970
+ has no link to follow, or goes back to a note: `{note}` for its name and
8971
+ `{count}` for how many notes the list holds that it links to or from. */
8972
+ linkCountLabel?: (HelixGraph["linkCountLabel"]) | undefined;
8932
8973
  /** How a note linked both to and from the selected one is described, with `{note}`. */
8933
8974
  "linked-both-label"?: (HelixGraph["linkedBothLabel"]) | undefined;
8934
8975
  /** How a note linked both to and from the selected one is described, with `{note}`. */
@@ -9008,6 +9049,16 @@ the list then holds, written with `count-label`. */
9008
9049
  "using-label"?: (HelixGraph["usingLabel"]) | undefined;
9009
9050
  /** The line shown while the graph, with `gestures="activate"`, has the gestures. */
9010
9051
  usingLabel?: (HelixGraph["usingLabel"]) | undefined;
9052
+ /** What screen readers hear when a walk along the links moves to a note:
9053
+ `{note}` for its name, `{relation}` for how it stands to the note the
9054
+ step came from, such as "Linked from Roadmap", and `{index}` and `{count}`
9055
+ for its place among that note's links. */
9056
+ "walk-label"?: (HelixGraph["walkLabel"]) | undefined;
9057
+ /** What screen readers hear when a walk along the links moves to a note:
9058
+ `{note}` for its name, `{relation}` for how it stands to the note the
9059
+ step came from, such as "Linked from Roadmap", and `{index}` and `{count}`
9060
+ for its place among that note's links. */
9061
+ walkLabel?: (HelixGraph["walkLabel"]) | undefined;
9011
9062
  /** The hint shown when the wheel scrolls past the graph with
9012
9063
  `gestures="cooperative"`. `{key}` is ⌘ on a Mac and Ctrl elsewhere. */
9013
9064
  "wheel-hint-label"?: (HelixGraph["wheelHintLabel"]) | undefined;
@@ -9051,7 +9102,7 @@ export type HelixGraphVueEvents = {
9051
9102
  "helix-graph-layout": HelixGraphHelixGraphLayoutElementEvent;
9052
9103
  /** A pan button or arrow key was pressed. `connectGraph` moves the drawing, then calls `moved()`. */
9053
9104
  "helix-graph-pan": HelixGraphHelixGraphPanElementEvent;
9054
- /** The notes, the links, the selection, the depth or the gestures changed. Used by `connectGraph`; pages do not need to listen for it. */
9105
+ /** The notes, the links, the selection, the depth, the note the keys are on, or the gestures changed. Used by `connectGraph`; pages do not need to listen for it. */
9055
9106
  "helix-graph-part-change": HelixGraphHelixGraphPartChangeElementEvent;
9056
9107
  /** The graph has been drawn whole, laid out and settled. Sent each time `drawn()` says it is drawn after it was not. */
9057
9108
  "helix-graph-ready": HelixGraphHelixGraphReadyElementEvent;
@@ -9153,11 +9204,36 @@ export type HelixHeatmapElementEvent<E = Event> = TypedEvent<HelixHeatmap, E>;
9153
9204
  /** `helix-before-change` event type */
9154
9205
  export type HelixHeatmapHelixBeforeChangeElementEvent =
9155
9206
  HelixHeatmapElementEvent<HelixBeforeChangeEvent>;
9207
+ /** `helix-reading-change` event type */
9208
+ export type HelixHeatmapHelixReadingChangeElementEvent =
9209
+ HelixHeatmapElementEvent<HelixReadingChangeEvent>;
9210
+ /** `helix-reading-press` event type */
9211
+ export type HelixHeatmapHelixReadingPressElementEvent =
9212
+ HelixHeatmapElementEvent<HelixReadingPressEvent>;
9156
9213
  /** `helix-resize` event type */
9157
9214
  export type HelixHeatmapHelixResizeElementEvent =
9158
9215
  HelixHeatmapElementEvent<HelixResizeEvent>;
9159
9216
 
9160
9217
  export type HelixHeatmapVueProps = {
9218
+ /** The words shown in place of the drawing when the table has no readings,
9219
+ and the fallback of the `empty` slot. */
9220
+ "empty-text"?: (HelixHeatmap["emptyText"]) | undefined;
9221
+ /** The words shown in place of the drawing when the table has no readings,
9222
+ and the fallback of the `empty` slot. */
9223
+ emptyText?: (HelixHeatmap["emptyText"]) | undefined;
9224
+ /** Whether the readings are still on their way. The chart shows
9225
+ `loading-text` in place of an empty drawing until it has readings.
9226
+
9227
+ Reflected, so a stylesheet can treat the chart while it waits. A chart
9228
+ that already has readings keeps drawing them, so a refresh does not
9229
+ blank it. */
9230
+ loading?: (HelixHeatmap["loading"]) | undefined;
9231
+ /** The words shown in place of the drawing while `loading` is set and
9232
+ there are no readings yet, and the fallback of the `loading` slot. */
9233
+ "loading-text"?: (HelixHeatmap["loadingText"]) | undefined;
9234
+ /** The words shown in place of the drawing while `loading` is set and
9235
+ there are no readings yet, and the fallback of the `loading` slot. */
9236
+ loadingText?: (HelixHeatmap["loadingText"]) | undefined;
9161
9237
  /** The id of the table to read.
9162
9238
 
9163
9239
  Names a table in the same tree, so a chart inside another component's
@@ -9200,16 +9276,6 @@ legend hid is not counted. */
9200
9276
  /** The name the `overview` gives the busiest reading, `{busiestLabel}` in
9201
9277
  `overview-label`. */
9202
9278
  busiestLabel?: (HelixHeatmap["busiestLabel"]) | undefined;
9203
- /** Shown when the table has no readings in it.
9204
-
9205
- Never shown while the table cannot be read at all, which is a server render
9206
- and the hydrating one after it: see `sourceKnown`. */
9207
- "empty-text"?: (HelixHeatmap["emptyText"]) | undefined;
9208
- /** Shown when the table has no readings in it.
9209
-
9210
- Never shown while the table cannot be read at all, which is a server render
9211
- and the hydrating one after it: see `sourceKnown`. */
9212
- emptyText?: (HelixHeatmap["emptyText"]) | undefined;
9213
9279
  /** Space between cells, in CSS pixels. It is a number for the same reason
9214
9280
  `min-cell` is. */
9215
9281
  gap?: (HelixHeatmap["gap"]) | undefined;
@@ -9267,13 +9333,9 @@ calendar heatmap does: a week is a column, so the strip reads along the
9267
9333
  line in weeks, from the right on a right-to-left page, and top to bottom in
9268
9334
  days. */
9269
9335
  rows?: (HelixHeatmap["rows"]) | undefined;
9270
- /** What the readout adds for a selected cell, under `selection-mode`, after
9271
- where the cell stands: "Day 1: 0 (1 of 14, selected)". Empty adds
9272
- nothing. */
9336
+ /** What the readout added for a selected cell, under `selection-mode`. */
9273
9337
  "selected-label"?: (HelixHeatmap["selectedLabel"]) | undefined;
9274
- /** What the readout adds for a selected cell, under `selection-mode`, after
9275
- where the cell stands: "Day 1: 0 (1 of 14, selected)". Empty adds
9276
- nothing. */
9338
+ /** What the readout added for a selected cell, under `selection-mode`. */
9277
9339
  selectedLabel?: (HelixHeatmap["selectedLabel"]) | undefined;
9278
9340
  /** What the `selection` part says after the selection changes. `{count}` is
9279
9341
  how many cells are selected, written in the locale, and a language that
@@ -9360,6 +9422,10 @@ export type HelixHeatmapVueEvents = {
9360
9422
  change: HelixHeatmapElementEvent;
9361
9423
  /** Fired before a press or a key changes which cells are selected, with the `value` it would leave. Cancelable. */
9362
9424
  "helix-before-change": HelixHeatmapHelixBeforeChangeElementEvent;
9425
+ /** 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. */
9426
+ "helix-reading-change": HelixHeatmapHelixReadingChangeElementEvent;
9427
+ /** A reading was clicked, tapped, or pressed with Enter or Space, with the same detail as `helix-reading-change`. */
9428
+ "helix-reading-press": HelixHeatmapHelixReadingPressElementEvent;
9363
9429
  /** Fired when the number of cells drawn changes, with the new number. */
9364
9430
  "helix-resize": HelixHeatmapHelixResizeElementEvent;
9365
9431
  };
@@ -21668,6 +21734,8 @@ export type CustomCssProperties = {
21668
21734
  "--aura-ground"?: (string) | undefined;
21669
21735
  /** The faint stop between the ground and the glow. Defaults to `--helix-color-primary-subtle`. */
21670
21736
  "--aura-haze"?: (string) | undefined;
21737
+ /** The pause control's ground. Defaults to `--helix-color-surface-overlay`. */
21738
+ "--aura-pause-background-color"?: (string) | undefined;
21671
21739
  /** 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. */
21672
21740
  "--aura-peak"?: (string) | undefined;
21673
21741
  /** The fill of the count of avatars past `max`. */
@@ -24148,7 +24216,7 @@ export interface WcToolkitVueGlobalComponents {
24148
24216
  HelixAreaChartVueProps,
24149
24217
  HelixAreaChartVueEvents
24150
24218
  >;
24151
- /** One fragment shader draws over a full-screen triangle, and its palette comes from the tokens. A background built on '--helix-color-primary' changes when your brand color changes. Every shape ramps through four token stops, and the token layer inverts each one: the page background, 'primary-subtle', 'primary', and a peak. The peak is the foreground on a dark page and 'primary-active' on a light one, because mixing a saturated hue toward near-black removes its chroma. The component reads which way the page runs from the background's luminance, because the mode is a private token. The geometry is three vertices derived from 'gl_VertexID'. There is no dependency, scene graph, attribute, buffer, or upload. The shader stops drawing in these cases: - The element is off screen or in a background tab. - 'prefers-reduced-motion' is set. The element shows one still frame. - 'paused' is set, from a pause control on your page. The element holds the frame it shows. - The browser takes back the drawing context, on a GPU reset or past its limit of about sixteen contexts. The gradient shows until the context returns. On a renderer that draws on the CPU, such as a headless browser or a machine with no usable GPU, the element shows the gradient. There the shader costs about 450ms for the first frame of each element, against 2ms on a GPU. Aura is styled only and has behavior, which the tier split does not otherwise allow. Its behavior is drawing to a canvas, so there is no structure for you to restyle and nothing for a headless version to hold. **Content placed inside sits over the field**, in a 'content' part that covers the aura, so an interactive aura answers the pointer over the content too. Clicks still reach the content. Style '::part(content)' to place it, such as centering a hero's heading. **The colors are the theme's, and each has a hook**: '--aura-ground', '--aura-haze', '--aura-glow' and '--aura-peak', read by the shader and by the fallback gradient alike, from wherever on the page you set them. A hook changed while the aura draws, by a class, a style or the color mode, reaches the shader on the next frame. Where the gradient shows in place of the shader, the aura matches ':state(fallback)' and sends 'helix-aura-fallback' with the reason. */
24219
+ /** One fragment shader draws over a full-screen triangle, and its palette comes from the tokens. A background built on '--helix-color-primary' changes when your brand color changes. Every shape ramps through four token stops, and the token layer inverts each one: the page background, 'primary-subtle', 'primary', and a peak. The peak is the foreground on a dark page and 'primary-active' on a light one, because mixing a saturated hue toward near-black removes its chroma. The component reads which way the page runs from the background's luminance, because the mode is a private token. The geometry is three vertices derived from 'gl_VertexID'. There is no dependency, scene graph, attribute, buffer, or upload. The shader stops drawing in these cases: - The element is off screen or in a background tab. - 'prefers-reduced-motion' is set. The element shows one still frame. - 'paused' is set, from a pause control on your page or from the aura's own under 'pause-control'. The element holds the frame it shows. - The browser takes back the drawing context, on a GPU reset or past its limit of about sixteen contexts. The gradient shows until the context returns. On a renderer that draws on the CPU, such as a headless browser or a machine with no usable GPU, the element shows the gradient. There the shader costs about 450ms for the first frame of each element, against 2ms on a GPU. Aura is styled only and has behavior, which the tier split does not otherwise allow. Its behavior is drawing to a canvas, so there is no structure for you to restyle and nothing for a headless version to hold. **Content placed inside sits over the field**, in a 'content' part that covers the aura, so an interactive aura answers the pointer over the content too. Clicks still reach the content. Style '::part(content)' to place it, such as centering a hero's heading. **The colors are the theme's, and each has a hook**: '--aura-ground', '--aura-haze', '--aura-glow' and '--aura-peak', read by the shader and by the fallback gradient alike, from wherever on the page you set them. A hook changed while the aura draws, by a class, a style or the color mode, reaches the shader on the next frame. **'pause-control' draws a control that stops the motion and starts it again**, in the trailing corner of the field, as WCAG 2.2.2 asks of anything that moves for more than five seconds. It is a toggle button named by 'pause-label', which says it is pressed while the field is paused, and a press sends 'change'. A reader who asked for reduced motion sees no motion and no control. Where the gradient shows in place of the shader, the aura matches ':state(fallback)' and sends 'helix-aura-fallback' with the reason. */
24152
24220
  "helix-aura": DefineCustomElement<
24153
24221
  HelixAura,
24154
24222
  HelixAuraVueProps,
package/types/words.d.ts CHANGED
@@ -320,6 +320,14 @@ declare module '@fusion.dev/helix-core' {
320
320
  * English: `Groups`
321
321
  */
322
322
  legendLabel: Message
323
+ /**
324
+ * What screen readers hear when a walk along the links reaches a note that
325
+ * has no link to follow, or goes back to a note: `{note}` for its name and
326
+ * `{count}` for how many notes the list holds that it links to or from.
327
+ *
328
+ * English: `{note}. {count, plural, =0 {No links} one {# link} other {# links}}`
329
+ */
330
+ linkCountLabel: Message
323
331
  /**
324
332
  * How a note linked both to and from the selected one is described, with `{note}`.
325
333
  *
@@ -932,6 +940,15 @@ declare module '@fusion.dev/helix-core' {
932
940
  * English: `Choose one to continue.`
933
941
  */
934
942
  valueMissingMessage: Message
943
+ /**
944
+ * What screen readers hear when a walk along the links moves to a note:
945
+ * `{note}` for its name, `{relation}` for how it stands to the note the
946
+ * step came from, such as "Linked from Roadmap", and `{index}` and `{count}`
947
+ * for its place among that note's links.
948
+ *
949
+ * English: `{note}. {relation}. {index} of {count}`
950
+ */
951
+ walkLabel: Message
935
952
  /**
936
953
  * The hint shown when the wheel scrolls past a surface with
937
954
  * `gestures="cooperative"`, with `{key}`. Each family declares it as a
@@ -987,6 +1004,16 @@ declare module '@fusion.dev/helix-core' {
987
1004
  */
988
1005
  menuLabel: Message
989
1006
  }
1007
+ 'helix-aura': {
1008
+ /**
1009
+ * The pause control's name, read by screen readers. The control is a toggle
1010
+ * and says it is pressed while the field is paused, so the name stays the
1011
+ * same.
1012
+ *
1013
+ * English: `Pause the motion`
1014
+ */
1015
+ pauseLabel: Message
1016
+ }
990
1017
  'helix-avatar-group': {
991
1018
  /**
992
1019
  * What a screen reader is told the count is, with `{count}` for the number,