@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.
@@ -144,6 +144,13 @@ registerElementEvents({
144
144
  'helix-icon-button': ['helix-press'],
145
145
  'helix-image': ['error', 'load'],
146
146
  'helix-input': ['change', 'helix-before-change', 'helix-clear', 'input'],
147
+ 'helix-isometric-heatmap': [
148
+ 'change',
149
+ 'helix-before-change',
150
+ 'helix-reading-change',
151
+ 'helix-reading-press',
152
+ 'helix-resize',
153
+ ],
147
154
  'helix-kbd': ['helix-shortcut'],
148
155
  'helix-legend': ['change', 'helix-before-change'],
149
156
  'helix-lightbox': [
@@ -1,2 +1 @@
1
- import '@fusion.dev/helix-headless/icon/all';
2
1
  export * from '../index.js';
@@ -1,2 +1 @@
1
- import '@fusion.dev/helix-headless/icon/all';
2
1
  export * from '../index.js';
@@ -16,11 +16,6 @@ import type { CSSResultGroup } from 'lit';
16
16
  * Reduced motion stills every animation. `auto-width` gives the box the
17
17
  * glyph's own proportions, for a mark wider than it is tall.
18
18
  *
19
- * **`@fusion.dev/helix/icon` registers thirteen glyphs by name**, the ones a
20
- * control most often needs, and `@fusion.dev/helix/icon/all` registers the
21
- * whole set. The headless element lists the thirteen and says how a name is
22
- * resolved.
23
- *
24
19
  * @since 0.1.0
25
20
  * @status stable
26
21
  * @category media
package/dist/index.d.ts CHANGED
@@ -49,10 +49,11 @@ export * from './format-date/index.js';
49
49
  export * from './graph/index.js';
50
50
  export * from './grid/index.js';
51
51
  export * from './heatmap/index.js';
52
- export * from './icon/all/index.js';
52
+ export * from './icon/index.js';
53
53
  export * from './icon-button/index.js';
54
54
  export * from './image/index.js';
55
55
  export * from './input/index.js';
56
+ export * from './isometric-heatmap/index.js';
56
57
  export * from './kbd/index.js';
57
58
  export * from './legend/index.js';
58
59
  export * from './lightbox/index.js';
package/dist/index.js CHANGED
@@ -44,10 +44,11 @@ export * from './format-date/index.js';
44
44
  export * from './graph/index.js';
45
45
  export * from './grid/index.js';
46
46
  export * from './heatmap/index.js';
47
- export * from './icon/all/index.js';
47
+ export * from './icon/index.js';
48
48
  export * from './icon-button/index.js';
49
49
  export * from './image/index.js';
50
50
  export * from './input/index.js';
51
+ export * from './isometric-heatmap/index.js';
51
52
  export * from './kbd/index.js';
52
53
  export * from './legend/index.js';
53
54
  export * from './lightbox/index.js';
@@ -0,0 +1 @@
1
+ export { HelixIsometricHeatmap } from './root/isometric-heatmap-root.js';
@@ -0,0 +1 @@
1
+ export { HelixIsometricHeatmap } from './root/isometric-heatmap-root.js';
@@ -0,0 +1 @@
1
+ export declare const styles: import("lit").CSSResult;
@@ -0,0 +1,2 @@
1
+ import { createSheet } from '@fusion.dev/helix-core';
2
+ export const styles = createSheet(`:host {--_isometric-heatmap-cell: var(--isometric-heatmap-cell-size, 1.25rem);--heatmap-tone-accent: var(--helix-color-accent);--heatmap-tone-danger: var(--helix-color-danger);--heatmap-tone-info: var(--helix-color-info);--heatmap-tone-muted: var(--helix-color-surface-sunken);--heatmap-tone-primary: var(--helix-color-primary);--heatmap-tone-success: var(--helix-color-success);--heatmap-tone-warning: var(--helix-color-warning);--heatmap-tone-1: color-mix(in oklab, var(--helix-color-primary-active) 20%, var(--helix-color-surface-sunken));--heatmap-tone-2: color-mix(in oklab, var(--helix-color-primary-active) 40%, var(--helix-color-surface-sunken));--heatmap-tone-3: color-mix(in oklab, var(--helix-color-primary-active) 60%, var(--helix-color-surface-sunken));--heatmap-tone-4: color-mix(in oklab, var(--helix-color-primary-active) 80%, var(--helix-color-surface-sunken));--heatmap-tone-5: var(--helix-color-primary-active);display: grid;grid-template-columns: minmax(0, max-content)}[part~="strip"] {inline-size: calc(var(--isometric-heatmap-span, 1) * 0.866 * var(--_isometric-heatmap-cell));max-inline-size: 100%;position: relative}[part="drawing"] {block-size: auto;display: block;inline-size: 100%;overflow: visible}[part~="cell"] {--_isometric-heatmap-top: var(--heatmap-tone, var(--helix-color-surface-sunken));--_isometric-heatmap-left: color-mix(in oklab, var(--_isometric-heatmap-top), black var(--isometric-heatmap-left-shade, 22%));--_isometric-heatmap-right: color-mix(in oklab, var(--_isometric-heatmap-top), black var(--isometric-heatmap-right-shade, 38%))}[part~="top-face"] {--_isometric-heatmap-face: var(--_isometric-heatmap-top)}[part~="left-face"] {--_isometric-heatmap-face: var(--_isometric-heatmap-left)}[part~="right-face"] {--_isometric-heatmap-face: var(--_isometric-heatmap-right)}[part~="cell"] > * {--_isometric-heatmap-ink: oklch(from var(--_isometric-heatmap-face) clamp(0, (0.6 - l) * 1000, 1) 0 0);fill: var(--_isometric-heatmap-face);stroke: color-mix(in oklab, var(--_isometric-heatmap-face), var(--_isometric-heatmap-ink) 25%);stroke-linejoin: round;stroke-width: var(--helix-border-thin);vector-effect: non-scaling-stroke}[part~="cell-selected"] > * {stroke: var(--isometric-heatmap-selected-color, var(--_isometric-heatmap-ink));stroke-dasharray: 3px 2px;stroke-width: var(--helix-border-thick)}@media (hover: hover) {[part~="cell"]:hover > * {stroke: var(--_isometric-heatmap-ink);stroke-dasharray: none;stroke-width: var(--helix-border-thick)}}[part~="cell-active"] > * {stroke: var(--_isometric-heatmap-ink);stroke-dasharray: none;stroke-width: var(--helix-border-thick)}[part~="strip"]:focus-visible {outline: var(--helix-size-focus-ring) solid var(--helix-color-focus-ring);outline-offset: var(--helix-size-focus-offset)}[part="live"], [part="overview"], [part="selection"], [part="table"] {block-size: 1px;clip-path: inset(50%);inline-size: 1px;margin: var(--helix-space-none);overflow: hidden;position: absolute;white-space: nowrap}[part="footer"] {align-items: baseline;color: var(--helix-color-foreground-subtle);display: grid;font-family: var(--helix-font-sans);font-size: var(--helix-text-xs);gap: var(--helix-space-xs);grid-template-columns: auto minmax(0, 1fr) auto;padding-block-start: var(--helix-space-xs)}[part="summary"] {text-align: center}[part="end"] {text-align: end}[part="footer"][data-empty] {display: none}[part="empty"], [part="loading"] {color: var(--helix-color-foreground-subtle);font-family: var(--helix-font-sans);font-size: var(--helix-text-sm);margin: var(--helix-space-none);text-align: center}@media print {[part~="cell"] > * {stroke: var(--helix-color-border);stroke-width: var(--helix-border-thin)}}@media (forced-colors: active) {[part~="cell"] > * {forced-color-adjust: none;stroke: CanvasText}[part~="cell-active"] > *, [part~="cell-selected"] > * {stroke: Highlight;stroke-width: var(--helix-border-thick)}}`);
@@ -0,0 +1,39 @@
1
+ import { HelixHeadlessIsometricHeatmap } from '@fusion.dev/helix-headless/isometric-heatmap';
2
+ import type { CSSResultGroup } from 'lit';
3
+ import '../../tooltip/index.js';
4
+ /**
5
+ * @summary A heatmap drawn as a relief, where each reading stands as tall as its value.
6
+ *
7
+ * @description
8
+ * Each reading is a prism. The top face takes the cell's tone, and the two
9
+ * sides are the same tone, shaded darker, so the whole relief follows your
10
+ * theme's colors.
11
+ *
12
+ * `tones="1 2 3 4 5"` uses the same five-step ramp as `Heatmap`, so the tone
13
+ * and the height both show the value. Set `--isometric-heatmap-cell-size` to
14
+ * change how large a cell may grow.
15
+ *
16
+ * @since 0.185.0
17
+ * @status experimental
18
+ * @category charts
19
+ * @documentation https://fusion.dev/helix/components/isometric-heatmap
20
+ *
21
+ * @cssproperty --isometric-heatmap-cell-size - The largest a cell grows, along its edge. The strip is never wider than its box, and draws smaller cells to fit.
22
+ * @cssproperty --isometric-heatmap-left-shade - How much darker the left face is than the top, as a percentage mixed toward black.
23
+ * @cssproperty --isometric-heatmap-right-shade - How much darker the right face is than the top, as a percentage mixed toward black.
24
+ * @cssproperty --isometric-heatmap-selected-color - 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.
25
+ */
26
+ export declare class HelixIsometricHeatmap extends HelixHeadlessIsometricHeatmap {
27
+ static tier: string;
28
+ static styles: CSSResultGroup;
29
+ /**
30
+ * The smallest cell, in CSS pixels, before the strip draws fewer columns.
31
+ * `gap` is two pixels at that size, so a prism covers five sixths of its cell.
32
+ */
33
+ minCell: number;
34
+ }
35
+ declare global {
36
+ interface HTMLElementTagNameMap {
37
+ 'helix-isometric-heatmap': HelixIsometricHeatmap;
38
+ }
39
+ }
@@ -0,0 +1,18 @@
1
+ import { __decorate } from "tslib";
2
+ import { customElement } from '@fusion.dev/helix-core';
3
+ import { HelixHeadlessIsometricHeatmap } from '@fusion.dev/helix-headless/isometric-heatmap';
4
+ import { styles as tooltipStyles } from '../../shared/chart/tooltip.css.js';
5
+ import { styles } from './isometric-heatmap-root.css.js';
6
+ import '../../tooltip/index.js';
7
+ let HelixIsometricHeatmap = class HelixIsometricHeatmap extends HelixHeadlessIsometricHeatmap {
8
+ constructor() {
9
+ super(...arguments);
10
+ this.minCell = 10;
11
+ }
12
+ static { this.tier = 'helix-'; }
13
+ static { this.styles = [tooltipStyles, styles]; }
14
+ };
15
+ HelixIsometricHeatmap = __decorate([
16
+ customElement('helix-isometric-heatmap')
17
+ ], HelixIsometricHeatmap);
18
+ export { HelixIsometricHeatmap };
@@ -464,7 +464,7 @@ let HelixSandbox = class HelixSandbox extends HelixElement {
464
464
  auditName(this, () => {
465
465
  const tabs = [...this.renderRoot.querySelectorAll('[part~="file"]')];
466
466
  return tabs.find((tab) => !tab.textContent?.trim()) ?? tabs[0];
467
- }, 'Give each source pane a `label` or a `name`, which its file tab shows.');
467
+ }, 'sandbox');
468
468
  }
469
469
  }
470
470
  renderPane(name, at) {