@fusion.dev/helix-headless 0.178.0 → 0.179.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/types/vue.d.ts CHANGED
@@ -8007,6 +8007,12 @@ export type HelixHeadlessHeatmapElementEvent<E = Event> = TypedEvent<
8007
8007
  /** `helix-before-change` event type */
8008
8008
  export type HelixHeadlessHeatmapHelixBeforeChangeElementEvent =
8009
8009
  HelixHeadlessHeatmapElementEvent<HelixBeforeChangeEvent>;
8010
+ /** `helix-reading-change` event type */
8011
+ export type HelixHeadlessHeatmapHelixReadingChangeElementEvent =
8012
+ HelixHeadlessHeatmapElementEvent<HelixReadingChangeEvent>;
8013
+ /** `helix-reading-press` event type */
8014
+ export type HelixHeadlessHeatmapHelixReadingPressElementEvent =
8015
+ HelixHeadlessHeatmapElementEvent<HelixReadingPressEvent>;
8010
8016
  /** `helix-resize` event type */
8011
8017
  export type HelixHeadlessHeatmapHelixResizeElementEvent =
8012
8018
  HelixHeadlessHeatmapElementEvent<HelixResizeEvent>;
@@ -8018,16 +8024,6 @@ export type HelixHeadlessHeatmapVueProps = {
8018
8024
  /** The name the `overview` gives the busiest reading, `{busiestLabel}` in
8019
8025
  `overview-label`. */
8020
8026
  busiestLabel?: (HelixHeadlessHeatmap["busiestLabel"]) | undefined;
8021
- /** Shown when the table has no readings in it.
8022
-
8023
- Never shown while the table cannot be read at all, which is a server render
8024
- and the hydrating one after it: see `sourceKnown`. */
8025
- "empty-text"?: (HelixHeadlessHeatmap["emptyText"]) | undefined;
8026
- /** Shown when the table has no readings in it.
8027
-
8028
- Never shown while the table cannot be read at all, which is a server render
8029
- and the hydrating one after it: see `sourceKnown`. */
8030
- emptyText?: (HelixHeadlessHeatmap["emptyText"]) | undefined;
8031
8027
  /** Space between cells, in CSS pixels. It is a number for the same reason
8032
8028
  `min-cell` is. */
8033
8029
  gap?: (HelixHeadlessHeatmap["gap"]) | undefined;
@@ -8085,13 +8081,9 @@ calendar heatmap does: a week is a column, so the strip reads along the
8085
8081
  line in weeks, from the right on a right-to-left page, and top to bottom in
8086
8082
  days. */
8087
8083
  rows?: (HelixHeadlessHeatmap["rows"]) | undefined;
8088
- /** What the readout adds for a selected cell, under `selection-mode`, after
8089
- where the cell stands: "Day 1: 0 (1 of 14, selected)". Empty adds
8090
- nothing. */
8084
+ /** What the readout added for a selected cell, under `selection-mode`. */
8091
8085
  "selected-label"?: (HelixHeadlessHeatmap["selectedLabel"]) | undefined;
8092
- /** What the readout adds for a selected cell, under `selection-mode`, after
8093
- where the cell stands: "Day 1: 0 (1 of 14, selected)". Empty adds
8094
- nothing. */
8086
+ /** What the readout added for a selected cell, under `selection-mode`. */
8095
8087
  selectedLabel?: (HelixHeadlessHeatmap["selectedLabel"]) | undefined;
8096
8088
  /** What the `selection` part says after the selection changes. `{count}` is
8097
8089
  how many cells are selected, written in the locale, and a language that
@@ -8148,6 +8140,25 @@ header's words where it carries none.
8148
8140
  Set it to start with cells selected. Written by a press or a key under
8149
8141
  `selection-mode`. */
8150
8142
  value?: (HelixHeadlessHeatmap["value"]) | undefined;
8143
+ /** The words shown in place of the drawing when the table has no readings,
8144
+ and the fallback of the `empty` slot. */
8145
+ "empty-text"?: (HelixHeadlessHeatmap["emptyText"]) | undefined;
8146
+ /** The words shown in place of the drawing when the table has no readings,
8147
+ and the fallback of the `empty` slot. */
8148
+ emptyText?: (HelixHeadlessHeatmap["emptyText"]) | undefined;
8149
+ /** Whether the readings are still on their way. The chart shows
8150
+ `loading-text` in place of an empty drawing until it has readings.
8151
+
8152
+ Reflected, so a stylesheet can treat the chart while it waits. A chart
8153
+ that already has readings keeps drawing them, so a refresh does not
8154
+ blank it. */
8155
+ loading?: (HelixHeadlessHeatmap["loading"]) | undefined;
8156
+ /** The words shown in place of the drawing while `loading` is set and
8157
+ there are no readings yet, and the fallback of the `loading` slot. */
8158
+ "loading-text"?: (HelixHeadlessHeatmap["loadingText"]) | undefined;
8159
+ /** The words shown in place of the drawing while `loading` is set and
8160
+ there are no readings yet, and the fallback of the `loading` slot. */
8161
+ loadingText?: (HelixHeadlessHeatmap["loadingText"]) | undefined;
8151
8162
  /** The id of the table to read.
8152
8163
 
8153
8164
  Names a table in the same tree, so a chart inside another component's
@@ -8214,6 +8225,10 @@ export type HelixHeadlessHeatmapVueEvents = {
8214
8225
  change: HelixHeadlessHeatmapElementEvent;
8215
8226
  /** Fired before a press or a key changes which cells are selected, with the `value` it would leave. Cancelable. */
8216
8227
  "helix-before-change": HelixHeadlessHeatmapHelixBeforeChangeElementEvent;
8228
+ /** 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. */
8229
+ "helix-reading-change": HelixHeadlessHeatmapHelixReadingChangeElementEvent;
8230
+ /** A reading was clicked, tapped, or pressed with Enter or Space, with the same detail as `helix-reading-change`. */
8231
+ "helix-reading-press": HelixHeadlessHeatmapHelixReadingPressElementEvent;
8217
8232
  /** Fired when the number of cells drawn changes, with the new number. */
8218
8233
  "helix-resize": HelixHeadlessHeatmapHelixResizeElementEvent;
8219
8234
  };
@@ -11421,6 +11436,20 @@ empty string would give. */
11421
11436
  "default-read"?: (HelixHeadlessNotification["defaultRead"]) | undefined;
11422
11437
  /** Whether the notification starts as read, used until `read` is set. */
11423
11438
  defaultRead?: (HelixHeadlessNotification["defaultRead"]) | undefined;
11439
+ /** The dismiss control's name, read by screen readers, with `{label}` for the
11440
+ row's own words.
11441
+
11442
+ One sentence with the words in it, so a translation puts them where its
11443
+ language does: `registerWords('de', { 'helix-notification': { dismissLabel:
11444
+ '{label} schließen' } })`. */
11445
+ "dismiss-label"?: (HelixHeadlessNotification["dismissLabel"]) | undefined;
11446
+ /** The dismiss control's name, read by screen readers, with `{label}` for the
11447
+ row's own words.
11448
+
11449
+ One sentence with the words in it, so a translation puts them where its
11450
+ language does: `registerWords('de', { 'helix-notification': { dismissLabel:
11451
+ '{label} schließen' } })`. */
11452
+ dismissLabel?: (HelixHeadlessNotification["dismissLabel"]) | undefined;
11424
11453
  /** Locale for the timestamp.
11425
11454
 
11426
11455
  Empty is the runtime's own. */
@@ -11451,28 +11480,6 @@ its place. Translate it with the rest of your interface. */
11451
11480
  unreadLabel?: (HelixHeadlessNotification["unreadLabel"]) | undefined;
11452
11481
  /** Whether the element shows a control that dismisses it. */
11453
11482
  dismissible?: (HelixHeadlessNotification["dismissible"]) | undefined;
11454
- /** The dismiss control's label, read by screen readers.
11455
-
11456
- `attribute` is spelled out because Lit lowercases a property name to
11457
- derive one rather than dash-casing it, so this would otherwise be
11458
- reachable only as `dismisslabel`, which nobody would guess and no linter
11459
- would catch.
11460
-
11461
- A word property: register it for a locale under the host's key. A family
11462
- that names the control otherwise, such as Tag's `Remove {label}`,
11463
- declares its own English with `@words` above the override. */
11464
- "dismiss-label"?: (HelixHeadlessNotification["dismissLabel"]) | undefined;
11465
- /** The dismiss control's label, read by screen readers.
11466
-
11467
- `attribute` is spelled out because Lit lowercases a property name to
11468
- derive one rather than dash-casing it, so this would otherwise be
11469
- reachable only as `dismisslabel`, which nobody would guess and no linter
11470
- would catch.
11471
-
11472
- A word property: register it for a locale under the host's key. A family
11473
- that names the control otherwise, such as Tag's `Remove {label}`,
11474
- declares its own English with `@words` above the override. */
11475
- dismissLabel?: (HelixHeadlessNotification["dismissLabel"]) | undefined;
11476
11483
  };
11477
11484
 
11478
11485
  export type HelixHeadlessNotificationVueEvents = {
@@ -19555,7 +19562,7 @@ export interface WcToolkitVueGlobalComponents {
19555
19562
  HelixHeadlessGraphVueProps,
19556
19563
  HelixHeadlessGraphVueEvents
19557
19564
  >;
19558
- /** A grid of cells, each colored by a tone. 'rows="1"' makes a status strip, and 'rows="7"' makes a contribution graph. GitHub's contribution graph uses five discrete levels, which a set of tones covers. Color in a heatmap is per cell. In every other Helix chart, color is per series, so ninety differently colored cells would need ninety series. **The data is a real '<table>' named by 'for'**, as in every Helix chart, and the table is the accessible representation. Hide it with 'data-hidden-visually', and screen readers still read it. A cell takes its tone from its own 'data-tone', or from 'thresholds' and 'tones' applied to its value. 'data-tone' wins, so when you already know a day was degraded, you can set the tone directly. **The headless tier does not resolve tone names.** A tone named 'success' writes '--heatmap-tone: var(--heatmap-tone-success)', and the styled tier or your own stylesheet defines that property. The headless tier does not use 'var(--helix-color-*)'. **The strip is read by key.** It takes focus once it has cells. The up and down arrows move a cell, the left and right arrows move a column, which is a week with 'rows="7"', and Home and End go to the first and the last. The tooltip follows, the 'live' part says the cell's row in words, and Escape puts the tooltip away. PageUp and PageDown move a month, to the same day, where each row's header carries its date as a '<time datetime>', and four columns otherwise, which is four weeks with 'rows="7"'. **The strip describes itself.** The 'overview' part says the busiest reading and the total of the readings drawn, "Busiest: 11 Jun, 12; Total 84", and the strip is described by it, as every chart is by its summary. Hide it visually. The 'summary' slot is still yours, for words of your own. **'selection-mode' lets a reader select cells**: 'single' one at a time and 'multiple' any number. Space, Enter or a press selects the cell the keys or the pointer rest on, or lets it go, and under 'multiple' Shift with an arrow, Home, End, PageUp or PageDown takes in every cell from the last one pressed to where the key went. 'value' holds the selected days, separated by commas: each by its row's '<time datetime>', such as '2026-06-11', or by its row's name where the row carries no date. A change asks with 'helix-before-change' and tells with 'change', and the 'selection' part says how many are selected, in 'selection-label'. **Keyboard.** The strip is one tab stop once it has cells. | 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 | Selects the cell, 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. | */
19565
+ /** A grid of cells, each colored by a tone. 'rows="1"' makes a status strip, and 'rows="7"' makes a contribution graph. GitHub's contribution graph uses five discrete levels, which a set of tones covers. Color in a heatmap is per cell. In every other Helix chart, color is per series, so ninety differently colored cells would need ninety series. **The data is a real '<table>' named by 'for'**, as in every Helix chart, and the table is the accessible representation. Hide it with 'data-hidden-visually', and screen readers still read it. A cell takes its tone from its own 'data-tone', or from 'thresholds' and 'tones' applied to its value. 'data-tone' wins, so when you already know a day was degraded, you can set the tone directly. **The headless tier does not resolve tone names.** A tone named 'success' writes '--heatmap-tone: var(--heatmap-tone-success)', and the styled tier or your own stylesheet defines that property. The headless tier does not use 'var(--helix-color-*)'. **The strip is read by key.** It takes focus once it has cells. The up and down arrows move a cell, the left and right arrows move a column, which is a week with 'rows="7"', and Home and End go to the first and the last. The tooltip follows, the 'live' part says the cell's row in words, and Escape puts the tooltip away. PageUp and PageDown move a month, to the same day, where each row's header carries its date as a '<time datetime>', and four columns otherwise, which is four weeks with 'rows="7"'. **The strip describes itself.** The 'overview' part says the busiest reading and the total of the readings drawn, "Busiest: 11 Jun, 12; Total 84", and the strip is described by it, as every chart is by its summary. Hide it visually. The 'summary' slot is still yours, for words of your own. **'selection-mode' lets a reader select cells**: 'single' one at a time and 'multiple' any number. Space, Enter or a press selects the cell the keys or the pointer rest on, or lets it go, and under 'multiple' Shift with an arrow, Home, End, PageUp or PageDown takes in every cell from the last one pressed to where the key went. 'value' holds the selected days, separated by commas: each by its row's '<time datetime>', such as '2026-06-11', or by its row's name where the row carries no date. A change asks with 'helix-before-change' and tells with 'change', and the 'selection' part says how many are selected, in 'selection-label'. **Under 'selection-mode' the strip is a grid**, so the selection is state a reader is told rather than words alone: each column of the strip is a 'row', a week with 'rows="7"', and each cell a 'gridcell' named by its row in the table and carrying 'aria-selected'. The strip says 'aria-multiselectable' under 'multiple' and points at the cell the keys rest on with 'aria-activedescendant', so a screen reader reads that cell, and the 'live' part stays quiet. Without 'selection-mode' nothing is selectable, and the strip is an application with the readout, as every chart's plot is. **Readings are sent as every chart sends them.** 'helix-reading-change' says each move of the reading, by pointer, tap or key, and 'helix-reading-press' a reading clicked, tapped, or pressed with Enter or Space, each with the row of the table in 'index'. **Nothing to draw.** A table with no readings shows 'empty-text', "No readings", under the strip, and 'loading' shows 'loading-text' there until readings arrive. The 'empty' and 'loading' slots take markup in place of either, as on every chart. **Keyboard.** The strip is one tab stop once it has cells. | 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. | */
19559
19566
  "helix-headless-heatmap": DefineCustomElement<
19560
19567
  HelixHeadlessHeatmap,
19561
19568
  HelixHeadlessHeatmapVueProps,
package/types/words.d.ts CHANGED
@@ -1815,11 +1815,19 @@ declare module '@fusion.dev/helix-core' {
1815
1815
  */
1816
1816
  busiestLabel: Message
1817
1817
  /**
1818
- * Shown when the table has no readings in it.
1818
+ * The words shown in place of the drawing when the table has no readings,
1819
+ * and the fallback of the `empty` slot.
1819
1820
  *
1820
1821
  * English: `No readings`
1821
1822
  */
1822
1823
  emptyText: Message
1824
+ /**
1825
+ * The words shown in place of the drawing while `loading` is set and
1826
+ * there are no readings yet, and the fallback of the `loading` slot.
1827
+ *
1828
+ * English: `Loading readings`
1829
+ */
1830
+ loadingText: Message
1823
1831
  /**
1824
1832
  * The `overview`'s sentence. `{busiestLabel}` and `{totalLabel}` are
1825
1833
  * `busiest-label` and `total-label`, `{busiest}` the busiest reading's name
@@ -1838,9 +1846,7 @@ declare module '@fusion.dev/helix-core' {
1838
1846
  */
1839
1847
  positionLabel: Message
1840
1848
  /**
1841
- * What the readout adds for a selected cell, under `selection-mode`, after
1842
- * where the cell stands: "Day 1: 0 (1 of 14, selected)". Empty adds
1843
- * nothing.
1849
+ * What the readout added for a selected cell, under `selection-mode`.
1844
1850
  *
1845
1851
  * English: `selected`
1846
1852
  */
@@ -2458,9 +2464,10 @@ declare module '@fusion.dev/helix-core' {
2458
2464
  }
2459
2465
  'helix-notification': {
2460
2466
  /**
2461
- * The dismiss control's label, read by screen readers.
2467
+ * The dismiss control's name, read by screen readers, with `{label}` for the
2468
+ * row's own words.
2462
2469
  *
2463
- * English: `Dismiss`
2470
+ * English: `Dismiss {label}`
2464
2471
  */
2465
2472
  dismissLabel: Message
2466
2473
  /**