@fusion.dev/helix 0.185.0 → 0.186.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/svelte.d.ts CHANGED
@@ -89,6 +89,7 @@ declare module 'svelte/elements' {
89
89
  'helix-icon': Helix<'helix-icon'>
90
90
  'helix-image': Helix<'helix-image'>
91
91
  'helix-input': Helix<'helix-input'>
92
+ 'helix-isometric-heatmap': Helix<'helix-isometric-heatmap'>
92
93
  'helix-kbd': Helix<'helix-kbd'>
93
94
  'helix-legend': Helix<'helix-legend'>
94
95
  'helix-lightbox-item': Helix<'helix-lightbox-item'>
package/types/vue.d.ts CHANGED
@@ -59,6 +59,7 @@ import type {
59
59
  HelixIcon,
60
60
  HelixImage,
61
61
  HelixInput,
62
+ HelixIsometricHeatmap,
62
63
  HelixKbd,
63
64
  HelixLegend,
64
65
  HelixLightboxItem,
@@ -9743,10 +9744,12 @@ disagreeing with its own name for every reader who meant the left. */
9743
9744
  /** The name of the icon in the Helix set.
9744
9745
 
9745
9746
  **A lookup, and the reason both this and `icon` exist.** A name is a string,
9746
- so it is what markup can carry, and resolving one means an index that no
9747
- bundler can shake. The family's entry indexes a small set, `icon/all`
9748
- indexes the whole set at 15 kB, and `icon/root` indexes nothing, for a
9749
- page that registers the glyphs it names or hands over the value instead.
9747
+ so it is what markup can carry, and resolving one means an index of the
9748
+ whole set that no bundler can shake: 15 kB for a consumer who renders one
9749
+ mark. An attribute is the only thing an HTML author can write, and that is
9750
+ worth the index; a consumer who would rather not pay it imports the
9751
+ element from `icon/root` and registers the glyphs it names, or hands over
9752
+ the value instead.
9750
9753
 
9751
9754
  A name written `prefix:name` asks the library registered under that
9752
9755
  prefix. */
@@ -10145,6 +10148,253 @@ export type HelixInputVueEvents = {
10145
10148
  input: HelixInputElementEvent;
10146
10149
  };
10147
10150
 
10151
+ /** `HelixIsometricHeatmap` component event */
10152
+ export type HelixIsometricHeatmapElementEvent<E = Event> = TypedEvent<
10153
+ HelixIsometricHeatmap,
10154
+ E
10155
+ >;
10156
+ /** `helix-before-change` event type */
10157
+ export type HelixIsometricHeatmapHelixBeforeChangeElementEvent =
10158
+ HelixIsometricHeatmapElementEvent<HelixBeforeChangeEvent>;
10159
+ /** `helix-reading-change` event type */
10160
+ export type HelixIsometricHeatmapHelixReadingChangeElementEvent =
10161
+ HelixIsometricHeatmapElementEvent<HelixReadingChangeEvent>;
10162
+ /** `helix-reading-press` event type */
10163
+ export type HelixIsometricHeatmapHelixReadingPressElementEvent =
10164
+ HelixIsometricHeatmapElementEvent<HelixReadingPressEvent>;
10165
+ /** `helix-resize` event type */
10166
+ export type HelixIsometricHeatmapHelixResizeElementEvent =
10167
+ HelixIsometricHeatmapElementEvent<HelixResizeEvent>;
10168
+
10169
+ export type HelixIsometricHeatmapVueProps = {
10170
+ /** Draws every prism at no height, so the tones lie on a plane. */
10171
+ flat?: (HelixIsometricHeatmap["flat"]) | undefined;
10172
+ /** How tall the highest reading stands, in cells. Every other reading stands
10173
+ at its share of it. */
10174
+ relief?: (HelixIsometricHeatmap["relief"]) | undefined;
10175
+ /** The words shown in place of the drawing when the table has no readings,
10176
+ and the fallback of the `empty` slot. */
10177
+ "empty-text"?: (HelixIsometricHeatmap["emptyText"]) | undefined;
10178
+ /** The words shown in place of the drawing when the table has no readings,
10179
+ and the fallback of the `empty` slot. */
10180
+ emptyText?: (HelixIsometricHeatmap["emptyText"]) | undefined;
10181
+ /** Whether the readings are still on their way. The chart shows
10182
+ `loading-text` in place of an empty drawing until it has readings.
10183
+
10184
+ Reflected, so a stylesheet can treat the chart while it waits. A chart
10185
+ that already has readings keeps drawing them, so a refresh does not
10186
+ blank it. */
10187
+ loading?: (HelixIsometricHeatmap["loading"]) | undefined;
10188
+ /** The words shown in place of the drawing while `loading` is set and
10189
+ there are no readings yet, and the fallback of the `loading` slot. */
10190
+ "loading-text"?: (HelixIsometricHeatmap["loadingText"]) | undefined;
10191
+ /** The words shown in place of the drawing while `loading` is set and
10192
+ there are no readings yet, and the fallback of the `loading` slot. */
10193
+ loadingText?: (HelixIsometricHeatmap["loadingText"]) | undefined;
10194
+ /** The id of the table to read.
10195
+
10196
+ Names a table in the same tree, so a chart inside another component's
10197
+ shadow root reads a table in that root rather than one in the document. A
10198
+ `<table>` or anything built from grid roles, including `helix-table`.
10199
+
10200
+ **In React this arrives as a property and not as an attribute**, the way
10201
+ `Tooltip.for` does, so it does not reflect and nothing styles on it. */
10202
+ for?: (HelixIsometricHeatmap["for"]) | undefined;
10203
+ /** The chart's name, which starts the chart's text summary.
10204
+
10205
+ Absent falls back to the table's own caption, which is usually the right
10206
+ words and is already written. */
10207
+ label?: (HelixIsometricHeatmap["label"]) | undefined;
10208
+ /** The locale the chart's own numbers are written in: its axis, its
10209
+ percentages and its totals, such as `de` for `1.240` and `32 %`.
10210
+
10211
+ Absent reads the nearest `lang`, then the runtime's own. The table's
10212
+ cells are shown as the table writes them, whatever this says. */
10213
+ locale?: (HelixIsometricHeatmap["locale"]) | undefined;
10214
+ /** Where a reading the keys moved to stands among the readings, said after
10215
+ it. `{position}` and `{count}` are replaced with the numbers, written in
10216
+ `locale`.
10217
+
10218
+ Set it to the words of the page's language, such as `{position} von
10219
+ {count}`, or to nothing to say no position. A slice or a series a
10220
+ legend hid is not counted. */
10221
+ "position-label"?: (HelixIsometricHeatmap["positionLabel"]) | undefined;
10222
+ /** Where a reading the keys moved to stands among the readings, said after
10223
+ it. `{position}` and `{count}` are replaced with the numbers, written in
10224
+ `locale`.
10225
+
10226
+ Set it to the words of the page's language, such as `{position} von
10227
+ {count}`, or to nothing to say no position. A slice or a series a
10228
+ legend hid is not counted. */
10229
+ positionLabel?: (HelixIsometricHeatmap["positionLabel"]) | undefined;
10230
+ /** The name the `overview` gives the busiest reading, `{busiestLabel}` in
10231
+ `overview-label`. */
10232
+ "busiest-label"?: (HelixIsometricHeatmap["busiestLabel"]) | undefined;
10233
+ /** The name the `overview` gives the busiest reading, `{busiestLabel}` in
10234
+ `overview-label`. */
10235
+ busiestLabel?: (HelixIsometricHeatmap["busiestLabel"]) | undefined;
10236
+ /** Space between cells, in CSS pixels. It is a number for the same reason
10237
+ `min-cell` is. */
10238
+ gap?: (HelixIsometricHeatmap["gap"]) | undefined;
10239
+ /** The smallest a cell may get before the strip draws fewer of them, in CSS pixels.
10240
+
10241
+ **Set this only to overrule what the strip actually draws.** The arithmetic
10242
+ needs a width in pixels and the width is a length the stylesheet resolves,
10243
+ so a number written here that disagrees with the sheet is a promise the
10244
+ consumer has to keep by hand, and the one number a summary is told to trust
10245
+ is the one it gets wrong.
10246
+
10247
+ The strip measures itself, so sizing the cells in a sheet is enough on its
10248
+ own and these two are the estimate used until the first measurement lands.
10249
+ Writing the attribute pins the value and stops the measurement being
10250
+ consulted, which is what a container query or a transition on the cell size
10251
+ wants, where what is drawn this frame is not what the arithmetic should
10252
+ plan around.
10253
+
10254
+ Zero turns the dropping off altogether, which is right for a strip in a
10255
+ container that cannot get narrow. */
10256
+ "min-cell"?: (HelixIsometricHeatmap["minCell"] | `${number}`) | undefined;
10257
+ /** The smallest a cell may get before the strip draws fewer of them, in CSS pixels.
10258
+
10259
+ **Set this only to overrule what the strip actually draws.** The arithmetic
10260
+ needs a width in pixels and the width is a length the stylesheet resolves,
10261
+ so a number written here that disagrees with the sheet is a promise the
10262
+ consumer has to keep by hand, and the one number a summary is told to trust
10263
+ is the one it gets wrong.
10264
+
10265
+ The strip measures itself, so sizing the cells in a sheet is enough on its
10266
+ own and these two are the estimate used until the first measurement lands.
10267
+ Writing the attribute pins the value and stops the measurement being
10268
+ consulted, which is what a container query or a transition on the cell size
10269
+ wants, where what is drawn this frame is not what the arithmetic should
10270
+ plan around.
10271
+
10272
+ Zero turns the dropping off altogether, which is right for a strip in a
10273
+ container that cannot get narrow. */
10274
+ minCell?: (HelixIsometricHeatmap["minCell"]) | undefined;
10275
+ /** The `overview`'s sentence. `{busiestLabel}` and `{totalLabel}` are
10276
+ `busiest-label` and `total-label`, `{busiest}` the busiest reading's name
10277
+ and its reading as the table writes it, and `{total}` the total of the
10278
+ readings drawn, written in the locale. */
10279
+ "overview-label"?: (HelixIsometricHeatmap["overviewLabel"]) | undefined;
10280
+ /** The `overview`'s sentence. `{busiestLabel}` and `{totalLabel}` are
10281
+ `busiest-label` and `total-label`, `{busiest}` the busiest reading's name
10282
+ and its reading as the table writes it, and `{total}` the total of the
10283
+ readings drawn, written in the locale. */
10284
+ overviewLabel?: (HelixIsometricHeatmap["overviewLabel"]) | undefined;
10285
+ /** How many rows the strip has.
10286
+
10287
+ `1` is a status strip and `7` is a calendar week, which are the two readings
10288
+ this covers. Cells fill down the column and then across, which is what a
10289
+ calendar heatmap does: a week is a column, so the strip reads along the
10290
+ line in weeks, from the right on a right-to-left page, and top to bottom in
10291
+ days. */
10292
+ rows?: (HelixIsometricHeatmap["rows"]) | undefined;
10293
+ /** What the readout added for a selected cell, under `selection-mode`. */
10294
+ "selected-label"?: (HelixIsometricHeatmap["selectedLabel"]) | undefined;
10295
+ /** What the readout added for a selected cell, under `selection-mode`. */
10296
+ selectedLabel?: (HelixIsometricHeatmap["selectedLabel"]) | undefined;
10297
+ /** What the `selection` part says after the selection changes. `{count}` is
10298
+ how many cells are selected, written in the locale, and a language that
10299
+ needs plural forms writes them: `{count, plural, one {# wybrany} few
10300
+ {# wybrane} many {# wybranych} other {# wybranego}}`. */
10301
+ "selection-label"?: (HelixIsometricHeatmap["selectionLabel"]) | undefined;
10302
+ /** What the `selection` part says after the selection changes. `{count}` is
10303
+ how many cells are selected, written in the locale, and a language that
10304
+ needs plural forms writes them: `{count, plural, one {# wybrany} few
10305
+ {# wybrane} many {# wybranych} other {# wybranego}}`. */
10306
+ selectionLabel?: (HelixIsometricHeatmap["selectionLabel"]) | undefined;
10307
+ /** How many cells a reader can select: `single` or `multiple`.
10308
+
10309
+ Absent selects nothing, and a press or Space does what it did. */
10310
+ "selection-mode"?: (HelixIsometricHeatmap["selectionMode"]) | undefined;
10311
+ /** How many cells a reader can select: `single` or `multiple`.
10312
+
10313
+ Absent selects nothing, and a press or Space does what it did. */
10314
+ selectionMode?: (HelixIsometricHeatmap["selectionMode"]) | undefined;
10315
+ /** What Shift takes in under `selection-mode="multiple"`: `linear`, every
10316
+ cell between two in the table's order, or `rectangle`, the cells between
10317
+ two corners by row and by column, as a spreadsheet selects a range. */
10318
+ "selection-shape"?: (HelixIsometricHeatmap["selectionShape"]) | undefined;
10319
+ /** What Shift takes in under `selection-mode="multiple"`: `linear`, every
10320
+ cell between two in the table's order, or `rectangle`, the cells between
10321
+ two corners by row and by column, as a spreadsheet selects a range. */
10322
+ selectionShape?: (HelixIsometricHeatmap["selectionShape"]) | undefined;
10323
+ /** The strip's name where the chart has none: no `aria-label`, `label`, or
10324
+ table caption. */
10325
+ "strip-label"?: (HelixIsometricHeatmap["stripLabel"]) | undefined;
10326
+ /** The strip's name where the chart has none: no `aria-label`, `label`, or
10327
+ table caption. */
10328
+ stripLabel?: (HelixIsometricHeatmap["stripLabel"]) | undefined;
10329
+ /** Lower bounds for the tone buckets, in the order the tones are given.
10330
+
10331
+ `thresholds="1 3 6 9"` with `tones="1 2 3 4"` puts 1 and 2 in the ramp's
10332
+ first step, 3 to 5 in the second, 6 to 8 in the third, and 9 upward in the
10333
+ fourth. A value below the first bound gets no tone at all: an empty day in a
10334
+ contribution graph is a day with nothing in it, and painting it as the
10335
+ lowest bucket claims a reading that does not exist. */
10336
+ thresholds?: (HelixIsometricHeatmap["thresholds"]) | undefined;
10337
+ /** The tone for each bucket, in the same order as `thresholds`.
10338
+
10339
+ A name, resolved as `--heatmap-tone-<name>` by whichever tier answers.
10340
+ **`"1"` through `"5"` are a ramp and everything else is a category**, which
10341
+ is the distinction a heatmap lives or dies on: magnitude has to be one hue
10342
+ getting louder, because a reader compares two cells by weight and cannot
10343
+ compare two hues at all. `tones="surface info accent success primary"` for a
10344
+ commit count is five unrelated hues for five amounts, which is confetti with
10345
+ no order in it. */
10346
+ tones?: (HelixIsometricHeatmap["tones"]) | undefined;
10347
+ /** The name the `overview` gives the total of the readings drawn,
10348
+ `{totalLabel}` in `overview-label`. */
10349
+ "total-label"?: (HelixIsometricHeatmap["totalLabel"]) | undefined;
10350
+ /** The name the `overview` gives the total of the readings drawn,
10351
+ `{totalLabel}` in `overview-label`. */
10352
+ totalLabel?: (HelixIsometricHeatmap["totalLabel"]) | undefined;
10353
+ /** The selected cells, separated by commas: each by the date its row's
10354
+ header carries in a `<time datetime>`, such as `2026-06-11`, or by the
10355
+ header's words where it carries none.
10356
+
10357
+ Set it to start with cells selected. Written by a press or a key under
10358
+ `selection-mode`. */
10359
+ value?: (HelixIsometricHeatmap["value"]) | undefined;
10360
+ /** The readings as data, in the shape of a table, where the page has no
10361
+ table to point `for` at. `for` wins where both are set.
10362
+
10363
+ ```js
10364
+ chart.data = {
10365
+ caption: 'Sessions by channel',
10366
+ columns: ['Month', 'Direct', 'Referral'],
10367
+ rows: [['Jan', 10, 4], ['Feb', 20, 8]],
10368
+ }
10369
+ ```
10370
+
10371
+ The first column holds each row's label and every column after it a
10372
+ series, as in a table. A cell is a number, words, `null` for a blank,
10373
+ or `{ value, text }` for a number shown as words, such as `$128k`. A
10374
+ number is shown in `locale`.
10375
+
10376
+ **A table is still the better source where the page can show one**:
10377
+ it reads with no script and before hydration, and a reader can sort and
10378
+ copy it. Data is drawn on the client only, so a server serves the
10379
+ frame, and the summary, the keys and the readout are then the whole of
10380
+ what a screen reader is given. Set a new object to redraw: the chart
10381
+ does not look inside the one it has. */
10382
+ data?: (HelixIsometricHeatmap["data"]) | undefined;
10383
+ };
10384
+
10385
+ export type HelixIsometricHeatmapVueEvents = {
10386
+ /** Fired once a press or a key has changed which cells are selected. */
10387
+ change: HelixIsometricHeatmapElementEvent;
10388
+ /** Fired before a press or a key changes which cells are selected, with the `value` it would leave. Cancelable. */
10389
+ "helix-before-change": HelixIsometricHeatmapHelixBeforeChangeElementEvent;
10390
+ /** 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. */
10391
+ "helix-reading-change": HelixIsometricHeatmapHelixReadingChangeElementEvent;
10392
+ /** A reading was clicked, tapped, or pressed with Enter or Space, with the same detail as `helix-reading-change`. */
10393
+ "helix-reading-press": HelixIsometricHeatmapHelixReadingPressElementEvent;
10394
+ /** Fired when the number of cells drawn changes, with the new number. */
10395
+ "helix-resize": HelixIsometricHeatmapHelixResizeElementEvent;
10396
+ };
10397
+
10148
10398
  /** `HelixKbd` component event */
10149
10399
  export type HelixKbdElementEvent<E = Event> = TypedEvent<HelixKbd, E>;
10150
10400
  /** `helix-shortcut` event type */
@@ -22761,6 +23011,16 @@ export type CustomCssProperties = {
22761
23011
  "--input-radius"?: (string) | undefined;
22762
23012
  /** Height of the field. */
22763
23013
  "--input-size"?: (string) | undefined;
23014
+ /** The largest a cell grows, along its edge. The strip is never wider than its box, and draws smaller cells to fit. */
23015
+ "--isometric-heatmap-cell-size"?: (string) | undefined;
23016
+ /** How much darker the left face is than the top, as a percentage mixed toward black. */
23017
+ "--isometric-heatmap-left-shade"?: (string) | undefined;
23018
+ /** How much darker the right face is than the top, as a percentage mixed toward black. */
23019
+ "--isometric-heatmap-right-shade"?: (string) | undefined;
23020
+ /** The color of the dashed edges of a selected prism, under `selection-mode`. By default, white on a dark face and black on a light one. */
23021
+ "--isometric-heatmap-selected-color"?: (string) | undefined;
23022
+ /** 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. */
23023
+ "--isometric-heatmap-span"?: (string) | undefined;
22764
23024
  /** The fill of the key. */
22765
23025
  "--kbd-background-color"?: (string) | undefined;
22766
23026
  /** The height of a key, and the least width of one, in `em` of the text around it. */
@@ -24607,7 +24867,7 @@ export interface WcToolkitVueGlobalComponents {
24607
24867
  HelixIconButtonVueProps,
24608
24868
  HelixIconButtonVueEvents
24609
24869
  >;
24610
- /** Draws in 'currentColor' and sizes from '--icon-size', so an icon takes the color of the text around it and a container can resize it without a property. Inside a button, '--icon-size' is set in 'em', so the icon scales with the button. **The glyph turns, flips and moves inside its own box**, so the line around it keeps its place: 'rotate' turns it by a quarter, a half or three quarters, '--icon-rotate' by any angle, 'flip' mirrors it across either axis, and 'animation' spins, pulses or beats it, as Web Awesome's icon does. Reduced motion stills every animation. 'auto-width' gives the box the glyph's own proportions, for a mark wider than it is tall. **'@fusion.dev/helix/icon' registers thirteen glyphs by name**, the ones a control most often needs, and '@fusion.dev/helix/icon/all' registers the whole set. The headless element lists the thirteen and says how a name is resolved. */
24870
+ /** Draws in 'currentColor' and sizes from '--icon-size', so an icon takes the color of the text around it and a container can resize it without a property. Inside a button, '--icon-size' is set in 'em', so the icon scales with the button. **The glyph turns, flips and moves inside its own box**, so the line around it keeps its place: 'rotate' turns it by a quarter, a half or three quarters, '--icon-rotate' by any angle, 'flip' mirrors it across either axis, and 'animation' spins, pulses or beats it, as Web Awesome's icon does. Reduced motion stills every animation. 'auto-width' gives the box the glyph's own proportions, for a mark wider than it is tall. */
24611
24871
  "helix-icon": DefineCustomElement<
24612
24872
  HelixIcon,
24613
24873
  HelixIconVueProps,
@@ -24625,6 +24885,12 @@ export interface WcToolkitVueGlobalComponents {
24625
24885
  HelixInputVueProps,
24626
24886
  HelixInputVueEvents
24627
24887
  >;
24888
+ /** Each reading is a prism. The top face takes the cell's tone, and the two sides are the same tone, shaded darker, so the whole relief follows your theme's colors. 'tones="1 2 3 4 5"' uses the same five-step ramp as 'Heatmap', so the tone and the height both show the value. Set '--isometric-heatmap-cell-size' to change how large a cell may grow. */
24889
+ "helix-isometric-heatmap": DefineCustomElement<
24890
+ HelixIsometricHeatmap,
24891
+ HelixIsometricHeatmapVueProps,
24892
+ HelixIsometricHeatmapVueEvents
24893
+ >;
24628
24894
  /** Drawn as a physical key, with a hairline border, a sunken fill, and one inset shadow along the bottom edge. Sized in 'em', so it stays in proportion with the text around it, including in a heading. */
24629
24895
  "helix-kbd": DefineCustomElement<
24630
24896
  HelixKbd,
File without changes
File without changes