@fusion.dev/helix 0.176.1 → 0.177.1

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,13 @@ 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 field holds still on the frame it shows.
934
+
935
+ Set it from a pause control on your page, so a reader can stop the motion,
936
+ as WCAG 2.2.2 asks of anything that moves for more than five seconds. A
937
+ change to another property still repaints the frame. Clearing it starts
938
+ the field from where it stopped. */
939
+ paused?: (HelixAura["paused"]) | undefined;
933
940
  /** How far the pointer reaches into the field, `0` upward.
934
941
 
935
942
  Multiplied into the presence the pointer already fades in and out with, so
@@ -3414,7 +3421,7 @@ export type HelixChatComposerVueEvents = {
3414
3421
  "helix-send": HelixChatComposerHelixSendElementEvent;
3415
3422
  /** The user started or stopped writing, with `typing` saying which, as the composer's `typing` does. */
3416
3423
  "helix-typing": HelixChatComposerHelixTypingElementEvent;
3417
- /** The user changed the text. Read it from `value`, for a typing indicator or a saved draft. Sent on the composer and does not bubble. */
3424
+ /** The user changed the text. Read it from `value`, for a typing indicator or a saved draft. Bubbles and is composed, as a native field's is. */
3418
3425
  input: HelixChatComposerElementEvent;
3419
3426
  };
3420
3427
 
@@ -7291,6 +7298,18 @@ Unset is horizontal, or across the toolbar the divider sits in. */
7291
7298
 
7292
7299
  export type HelixDividerVueEvents = {};
7293
7300
 
7301
+ /** `HelixDonutChart` component event */
7302
+ export type HelixDonutChartElementEvent<E = Event> = TypedEvent<
7303
+ HelixDonutChart,
7304
+ E
7305
+ >;
7306
+ /** `helix-reading-change` event type */
7307
+ export type HelixDonutChartHelixReadingChangeElementEvent =
7308
+ HelixDonutChartElementEvent<HelixReadingChangeEvent>;
7309
+ /** `helix-reading-press` event type */
7310
+ export type HelixDonutChartHelixReadingPressElementEvent =
7311
+ HelixDonutChartElementEvent<HelixReadingPressEvent>;
7312
+
7294
7313
  export type HelixDonutChartVueProps = {
7295
7314
  /** How strongly the slices are drawn.
7296
7315
 
@@ -7333,6 +7352,25 @@ chart and a card mean the same thing by the word.
7333
7352
  material choice, it is an absent series, and a chart says that by not
7334
7353
  having the datum rather than by painting it invisibly. */
7335
7354
  material?: (HelixDonutChart["material"]) | undefined;
7355
+ /** The words shown in place of the drawing when the table has no readings,
7356
+ and the fallback of the `empty` slot. */
7357
+ "empty-text"?: (HelixDonutChart["emptyText"]) | undefined;
7358
+ /** The words shown in place of the drawing when the table has no readings,
7359
+ and the fallback of the `empty` slot. */
7360
+ emptyText?: (HelixDonutChart["emptyText"]) | undefined;
7361
+ /** Whether the readings are still on their way. The chart shows
7362
+ `loading-text` in place of an empty drawing until it has readings.
7363
+
7364
+ Reflected, so a stylesheet can treat the chart while it waits. A chart
7365
+ that already has readings keeps drawing them, so a refresh does not
7366
+ blank it. */
7367
+ loading?: (HelixDonutChart["loading"]) | undefined;
7368
+ /** The words shown in place of the drawing while `loading` is set and
7369
+ there are no readings yet, and the fallback of the `loading` slot. */
7370
+ "loading-text"?: (HelixDonutChart["loadingText"]) | undefined;
7371
+ /** The words shown in place of the drawing while `loading` is set and
7372
+ there are no readings yet, and the fallback of the `loading` slot. */
7373
+ loadingText?: (HelixDonutChart["loadingText"]) | undefined;
7336
7374
  /** The id of the table to read.
7337
7375
 
7338
7376
  Names a table in the same tree, so a chart inside another component's
@@ -7458,7 +7496,12 @@ does not look inside the one it has. */
7458
7496
  data?: (HelixDonutChart["data"]) | undefined;
7459
7497
  };
7460
7498
 
7461
- export type HelixDonutChartVueEvents = {};
7499
+ export type HelixDonutChartVueEvents = {
7500
+ /** The slice shown moved, or was put away: `index` is the slice's row, or `-1` for none, with its `label` and the `pointerType` that moved it. */
7501
+ "helix-reading-change": HelixDonutChartHelixReadingChangeElementEvent;
7502
+ /** A slice was clicked, tapped, or pressed with Enter or Space, with the same detail as `helix-reading-change`. */
7503
+ "helix-reading-press": HelixDonutChartHelixReadingPressElementEvent;
7504
+ };
7462
7505
 
7463
7506
  /** `HelixDrawer` component event */
7464
7507
  export type HelixDrawerElementEvent<E = Event> = TypedEvent<HelixDrawer, E>;
@@ -8929,6 +8972,14 @@ own, since the fallback name is the same word. Empty leaves the role. */
8929
8972
  "selected-label"?: (HelixGraph["selectedLabel"]) | undefined;
8930
8973
  /** How the selected note is described in the list. */
8931
8974
  selectedLabel?: (HelixGraph["selectedLabel"]) | undefined;
8975
+ /** What screen readers hear after a reader selects a note, in the list or in
8976
+ the drawing, with `{note}` for its name and `{count}` for how many notes
8977
+ the list then holds, written with `count-label`. */
8978
+ "selection-label"?: (HelixGraph["selectionLabel"]) | undefined;
8979
+ /** What screen readers hear after a reader selects a note, in the list or in
8980
+ the drawing, with `{note}` for its name and `{count}` for how many notes
8981
+ the list then holds, written with `count-label`. */
8982
+ selectionLabel?: (HelixGraph["selectionLabel"]) | undefined;
8932
8983
  /** The hint shown when one finger swipes over the graph with `gestures="cooperative"`. */
8933
8984
  "two-finger-hint-label"?: (HelixGraph["twoFingerHintLabel"]) | undefined;
8934
8985
  /** The hint shown when one finger swipes over the graph with `gestures="cooperative"`. */
@@ -9252,8 +9303,9 @@ no order in it. */
9252
9303
  /** The name the `overview` gives the total of the readings drawn,
9253
9304
  `{totalLabel}` in `overview-label`. */
9254
9305
  totalLabel?: (HelixHeatmap["totalLabel"]) | undefined;
9255
- /** The selected cells, by the names their rows have in the table, such as
9256
- `2026-06-11`, separated by commas.
9306
+ /** The selected cells, separated by commas: each by the date its row's
9307
+ header carries in a `<time datetime>`, such as `2026-06-11`, or by the
9308
+ header's words where it carries none.
9257
9309
 
9258
9310
  Set it to start with cells selected. Written by a press or a key under
9259
9311
  `selection-mode`. */
@@ -11225,6 +11277,10 @@ loader is on the page.
11225
11277
  Names an element in the same tree. In React it arrives as a property, the
11226
11278
  way `Tooltip.for` does. */
11227
11279
  for?: (HelixLoader["for"]) | undefined;
11280
+ /** Whether no work is in progress. The loader draws nothing of its own, has
11281
+ no role, and marks no region busy, and what is in the `content` slot
11282
+ shows. Clearing it starts `delay` again. */
11283
+ idle?: (HelixLoader["idle"]) | undefined;
11228
11284
  /** The loader's name, announced by screen readers while the work is in
11229
11285
  progress. */
11230
11286
  label?: (HelixLoader["label"]) | undefined;
@@ -16404,6 +16460,18 @@ export type HelixSliderVueEvents = {
16404
16460
  input: HelixSliderElementEvent;
16405
16461
  };
16406
16462
 
16463
+ /** `HelixSparkline` component event */
16464
+ export type HelixSparklineElementEvent<E = Event> = TypedEvent<
16465
+ HelixSparkline,
16466
+ E
16467
+ >;
16468
+ /** `helix-reading-change` event type */
16469
+ export type HelixSparklineHelixReadingChangeElementEvent =
16470
+ HelixSparklineElementEvent<HelixReadingChangeEvent>;
16471
+ /** `helix-reading-press` event type */
16472
+ export type HelixSparklineHelixReadingPressElementEvent =
16473
+ HelixSparklineElementEvent<HelixReadingPressEvent>;
16474
+
16407
16475
  export type HelixSparklineVueProps = {
16408
16476
  /** How strongly the line, area, or columns are drawn.
16409
16477
 
@@ -16589,7 +16657,12 @@ not. */
16589
16657
  values?: (HelixSparkline["values"]) | undefined;
16590
16658
  };
16591
16659
 
16592
- export type HelixSparklineVueEvents = {};
16660
+ export type HelixSparklineVueEvents = {
16661
+ /** The reading shown moved, or was put away: `index` is the reading, or `-1` for none, with its row's `label` from a table and the `pointerType` that moved it. */
16662
+ "helix-reading-change": HelixSparklineHelixReadingChangeElementEvent;
16663
+ /** A reading was clicked, tapped, or pressed with Enter or Space, with the same detail as `helix-reading-change`. */
16664
+ "helix-reading-press": HelixSparklineHelixReadingPressElementEvent;
16665
+ };
16593
16666
 
16594
16667
  export type HelixSpeedDialGroupVueProps = {
16595
16668
  /** The group's name, drawn above its actions and read by screen readers. */
@@ -18124,8 +18197,9 @@ Absent selects nothing, and the tags carry no selected state at all. */
18124
18197
 
18125
18198
  Absent selects nothing, and the tags carry no selected state at all. */
18126
18199
  selectionMode?: (HelixTagGroup["selectionMode"]) | undefined;
18127
- /** The selected tags' values, separated by commas, since a value may hold a
18128
- space.
18200
+ /** The selected tags' values, separated by commas with no space, as Toggle
18201
+ Group and Table write theirs, since a value may hold a space. A value
18202
+ written with a space after each comma is read the same way.
18129
18203
 
18130
18204
  Set it to start with tags selected. A tag's value is its `value`, or its
18131
18205
  words where it has none. */
@@ -18882,10 +18956,22 @@ never something this element would refuse to read back. */
18882
18956
  /** The message shown when `disable-times` bars a time. */
18883
18957
  unavailableMessage?: (HelixTimeInput["unavailableMessage"]) | undefined;
18884
18958
  /** The message for text that is no time, where `bad-input-message` is not
18885
- set. `{mode}` is `single`, `range`, or `multiple`, and `{shape}` is `HH:mm`, or `HH:mm:ss` with `seconds`. */
18959
+ set. `{mode}` is `single`, `range`, or `multiple`, `{example}` is a time
18960
+ written as the field writes one, `2:30 PM` in `en-US` and `14:30` in
18961
+ `de-DE`, and `{shape}` is `HH:mm`, or `HH:mm:ss` with `seconds`.
18962
+
18963
+ **The default names a time the field reads back.** It said "Enter a time
18964
+ as HH:mm." to a reader whose field showed `2:30 PM`, and a pattern token
18965
+ is words for a developer. */
18886
18966
  "unreadable-message"?: (HelixTimeInput["unreadableMessage"]) | undefined;
18887
18967
  /** The message for text that is no time, where `bad-input-message` is not
18888
- set. `{mode}` is `single`, `range`, or `multiple`, and `{shape}` is `HH:mm`, or `HH:mm:ss` with `seconds`. */
18968
+ set. `{mode}` is `single`, `range`, or `multiple`, `{example}` is a time
18969
+ written as the field writes one, `2:30 PM` in `en-US` and `14:30` in
18970
+ `de-DE`, and `{shape}` is `HH:mm`, or `HH:mm:ss` with `seconds`.
18971
+
18972
+ **The default names a time the field reads back.** It said "Enter a time
18973
+ as HH:mm." to a reader whose field showed `2:30 PM`, and a pattern token
18974
+ is words for a developer. */
18889
18975
  unreadableMessage?: (HelixTimeInput["unreadableMessage"]) | undefined;
18890
18976
  /** Whether the panel shows one list of times or a column for each part of the
18891
18977
  time.
@@ -22670,7 +22756,7 @@ export type CustomCssProperties = {
22670
22756
  "--listbox-max-block-size"?: (string) | undefined;
22671
22757
  /** Color of the moving arc. */
22672
22758
  "--loader-color"?: (string) | undefined;
22673
- /** How long one turn of the arc takes, 0.8s by default. With motion reduced the turn slows to a crawl whatever this says. */
22759
+ /** How long one turn of the arc takes, 0.8s by default. With motion reduced the arc turns once every four seconds, whatever this says. */
22674
22760
  "--loader-duration"?: (string) | undefined;
22675
22761
  /** Diameter. Defaults to the size token that `size` picks, which is 1.5rem at the default density. */
22676
22762
  "--loader-size"?: (string) | undefined;
@@ -24032,7 +24118,7 @@ export interface WcToolkitVueGlobalComponents {
24032
24118
  HelixAreaChartVueProps,
24033
24119
  HelixAreaChartVueEvents
24034
24120
  >;
24035
- /** 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. - 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. */
24121
+ /** 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. */
24036
24122
  "helix-aura": DefineCustomElement<
24037
24123
  HelixAura,
24038
24124
  HelixAuraVueProps,
@@ -24110,7 +24196,7 @@ export interface WcToolkitVueGlobalComponents {
24110
24196
  HelixCanvasNodeVueProps,
24111
24197
  HelixCanvasNodeVueEvents
24112
24198
  >;
24113
- /** Cards and connections take 'tone', like every other family. The tones resolve to semantic tokens, so a board follows the page into dark mode. 'fromJsonCanvas' maps the six JSON Canvas color presets to tones. Panning and zooming move only the plane. They write three custom properties that one transform reads, so the cards are placed once in the document's coordinates and are not laid out again. */
24199
+ /** Cards and connections take 'tone', like every other family. The tones resolve to semantic tokens, so a board follows the page into dark mode. 'fromJsonCanvas' maps the six JSON Canvas color presets to tones. Panning and zooming move only the plane. They write three custom properties that one transform reads, so the cards are placed once in the document's coordinates and are not laid out again. The [Canvases](https://fusion.dev/helix/docs/canvases) guide loads and saves a board, keeps it in your state, and lists every key and the roles a screen reader meets. */
24114
24200
  "helix-canvas": DefineCustomElement<
24115
24201
  HelixCanvas,
24116
24202
  HelixCanvasVueProps,
@@ -24320,7 +24406,7 @@ export interface WcToolkitVueGlobalComponents {
24320
24406
  HelixFormatDateVueProps,
24321
24407
  HelixFormatDateVueEvents
24322
24408
  >;
24323
- /** The styled frame: the drawing with its zoom and fullscreen buttons, and the list of notes beside it, which moves below the drawing where the frame is narrower than 40rem. The selected note leads the list on a surface of its own, and the notes linked to it are named by how they link. With 'no-panel', the drawing takes the whole frame, and a button among the controls opens the search and the list over its end. */
24409
+ /** The styled frame: the drawing with its zoom and fullscreen buttons, and the list of notes beside it, which moves below the drawing where the frame is narrower than 40rem. The selected note leads the list on a surface of its own, and the notes linked to it are named by how they link. With 'no-panel', the drawing takes the whole frame, and a button among the controls opens the search and the list over its end. The [Graphs](https://fusion.dev/helix/docs/graphs) guide connects a renderer, lists the keys and what a screen reader hears, and describes the methods of a driver for another renderer. */
24324
24410
  "helix-graph": DefineCustomElement<
24325
24411
  HelixGraph,
24326
24412
  HelixGraphVueProps,
@@ -24410,7 +24496,7 @@ export interface WcToolkitVueGlobalComponents {
24410
24496
  HelixListboxVueProps,
24411
24497
  HelixListboxVueEvents
24412
24498
  >;
24413
- /** Sized from the loader size tokens, so a loader is the same size wherever it is placed and follows the density region it sits in. Set '--loader-size: 1em' to match the text beside it, as inside a button. The color is 'currentColor', so it matches the text color around it, including inside a primary button. While 'delay' runs, the loader keeps its size and draws nothing, so the line it sits in does not move when it appears. */
24499
+ /** Sized from the loader size tokens, so a loader is the same size wherever it is placed and follows the density region it sits in. Set '--loader-size: 1em' to match the text beside it, as inside a button. The color is 'currentColor', so it matches the text color around it, including inside a primary button. While 'delay' runs, the loader keeps its size and draws nothing, so the line it sits in does not move when it appears. With something in the 'content' slot, the loader takes the larger of the ring and the content, and the ring centers over the content while the work runs. */
24414
24500
  "helix-loader": DefineCustomElement<
24415
24501
  HelixLoader,
24416
24502
  HelixLoaderVueProps,
@@ -24464,7 +24550,7 @@ export interface WcToolkitVueGlobalComponents {
24464
24550
  HelixMapRasterVueProps,
24465
24551
  HelixMapRasterVueEvents
24466
24552
  >;
24467
- /** The styled frame: a bordered box with the pan and zoom buttons in its top corner. The buttons stay visible when the header and footer fade. Set 'fill' to lay the map behind a page's own content, such as a hero whose words decide its height: the frame covers its container, which needs a position of its own, such as 'position: relative'. Set 'credit-placement' to draw the map's credit compact in a corner over the map, which suits a map the width of the page. */
24553
+ /** The styled frame: a bordered box with the pan and zoom buttons in its top corner. The buttons stay visible when the header and footer fade. Set 'fill' to lay the map behind a page's own content, such as a hero whose words decide its height: the frame covers its container, which needs a position of its own, such as 'position: relative'. Set 'credit-placement' to draw the map's credit compact in a corner over the map, which suits a map the width of the page. The [Maps](https://fusion.dev/helix/docs/maps) guide connects a renderer, lists the keys and what a screen reader hears, and describes every method a driver for another renderer can have. */
24468
24554
  "helix-map": DefineCustomElement<
24469
24555
  HelixMap,
24470
24556
  HelixMapVueProps,