@fusion.dev/helix 0.184.0 → 0.186.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.
@@ -1,2 +1,2 @@
1
1
  import { createSheet } from '@fusion.dev/helix-core';
2
- export const styles = createSheet(`:host {display: block}[part="toolbar"], [part="table"], [part="footer"] {grid-column: 1 / -1}[part="table"] {display: grid;grid-template-columns: var(--data-table-columns, var(--data-table-template, minmax(0, 1fr)));inline-size: 100%;overflow-x: auto}[part="table"] {--_data-table-fade: to right;animation: data-table-edges linear both;animation-timeline: scroll(self inline);mask-image: linear-gradient(var(--_data-table-fade), transparent, #000 var(--_data-table-fade-start, 0rem), #000 calc(100% - var(--_data-table-fade-end, 0rem)), transparent)}:host(:dir(rtl)) [part="table"] {--_data-table-fade: to left}@keyframes data-table-edges {0% {--_data-table-fade-end: var(--helix-space-xl);--_data-table-fade-start: 0rem}5%, 95% {--_data-table-fade-end: var(--helix-space-xl);--_data-table-fade-start: var(--helix-space-xl)}100% {--_data-table-fade-end: 0rem;--_data-table-fade-start: var(--helix-space-xl)}}@media (prefers-reduced-motion: reduce) {[part="table"] {animation: none}}[part="head"], [part~="row"] {display: contents}[part~="cell"] {border-block-end: var(--helix-border-thin) solid var(--data-table-rule-color, var(--helix-color-border));color: var(--data-table-color, var(--helix-color-foreground));font-family: var(--helix-font-sans);font-size: var(--data-table-text, var(--helix-text-sm));padding-block: var(--data-table-padding-block, var(--helix-space-sm));padding-inline: var(--data-table-padding-inline, var(--helix-space-none) var(--helix-space-md));text-align: var(--data-table-cell-align)}[part~="row"]:last-of-type [part~="cell"] {border-block-end-color: transparent}::slotted(helix-table-column) {--_table-heading-color: var(--data-table-heading-color);--_table-heading-padding-block: var(--data-table-padding-block);--_table-heading-padding-inline: var(--data-table-padding-inline);--_table-heading-rule-color: var(--data-table-rule-color);--_table-heading-text: var(--data-table-text)}::slotted(helix-table-column[sortable]) {cursor: pointer}[part~="cell"]:focus-visible, [part="more-cell"]:focus-visible, [part~="select"]:focus-visible, [part="select-all"]:focus-visible, [part="row-grip"]:focus-visible, [part="grip-head"]:focus-visible {outline: var(--helix-size-focus-ring) solid var(--helix-color-focus-ring);outline-offset: calc(var(--helix-size-focus-offset) * -1)}[part~="select"], [part="select-all"], [part="row-grip"], [part="grip-head"] {align-items: center;border-block-end: var(--helix-border-thin) solid var(--data-table-rule-color, var(--helix-color-border));display: flex;justify-content: center;padding-block: var(--data-table-padding-block, var(--helix-space-sm));padding-inline: var(--data-table-padding-inline, var(--helix-space-sm))}[part~="row"]:last-of-type [part~="select"], [part~="row"]:last-of-type [part="row-grip"] {border-block-end-color: transparent}[part~="row"][aria-selected="true"] > * {background-color: var(--data-table-selected-background-color, color-mix(in srgb, var(--helix-color-primary) 10%, var(--helix-color-background)))}[part="row-grip-button"] {all: unset;align-items: center;border-radius: var(--helix-radii-sm);box-sizing: border-box;color: var(--data-table-grip-color, var(--helix-color-foreground-muted));cursor: grab;display: inline-flex;touch-action: none}[part="row-grip-button"]:active {cursor: grabbing}[part="row-grip-button"][aria-disabled="true"] {cursor: default;opacity: var(--data-table-grip-disabled-opacity, 0.4)}[part="row-grip-mark"] {block-size: 1em;inline-size: 1em}[part~="row"][part~="row-dragging"] > * {opacity: var(--data-table-dragging-opacity, 0.5)}[part~="row"][part~="row-drop-before"] > * {box-shadow: inset 0 var(--data-table-drop-indicator-size, var(--helix-border-thick)) 0 0 var(--data-table-drop-indicator-color, var(--helix-color-primary))}[part~="row"][part~="row-drop-after"] > * {box-shadow: inset 0 calc(var(--data-table-drop-indicator-size, var(--helix-border-thick)) * -1) 0 0 var(--data-table-drop-indicator-color, var(--helix-color-primary))}[part="toolbar"][data-empty], [part="footer"][data-empty] {display: none}[part="toolbar"] {padding-block-end: var(--data-table-toolbar-gap, var(--helix-space-sm))}[part="footer"] {align-items: center;display: flex;flex-wrap: wrap;gap: var(--data-table-footer-item-gap, var(--helix-space-md));padding-block-start: var(--data-table-footer-gap, var(--helix-space-sm))}[part="pagination"] {margin-inline-start: auto}[part="empty"], [part="loading"] {grid-column: 1 / -1}[part="error"] {color: var(--data-table-error-color, var(--helix-color-foreground));font-family: var(--helix-font-sans);font-size: var(--helix-text-sm);grid-column: 1 / -1;margin: var(--helix-space-none);padding-block: var(--helix-space-md);padding-inline: var(--helix-space-sm);text-align: center}:host([child-field]) [part~="cell-header"] {--_data-table-gutter: calc(var(--data-table-toggle-size, var(--helix-size-icon-tight)) + var(--data-table-toggle-gap, var(--helix-space-2xs)));padding-inline-start: calc((var(--data-table-level, 1) - 1) * var(--data-table-indent, var(--_data-table-gutter)))}:host([child-field]) [part~="cell-header"]:not(:has([part~="toggle"])) {padding-inline-start: calc((var(--data-table-level, 1) - 1) * var(--data-table-indent, var(--_data-table-gutter)) + var(--_data-table-gutter))}[part~="toggle"] {align-items: center;background: none;block-size: var(--data-table-toggle-size, var(--helix-size-icon-tight));border: none;color: var(--data-table-toggle-color, var(--helix-color-foreground-muted));cursor: pointer;display: inline-flex;inline-size: var(--data-table-toggle-size, var(--helix-size-icon-tight));justify-content: center;margin-inline-end: var(--data-table-toggle-gap, var(--helix-space-2xs));padding: 0;vertical-align: middle}[part="toggle-mark"] {block-size: 100%;inline-size: 100%}[part="more"] {display: contents}[part="more-cell"] {display: flex;grid-column: 1 / -1;padding-block: var(--data-table-padding-block, var(--helix-space-sm))}[part="more-button"] {background: none;border: var(--helix-border-thin) solid var(--data-table-more-border-color, var(--helix-color-border));border-radius: var(--data-table-more-radius, var(--helix-radii-sm));color: var(--data-table-color, var(--helix-color-foreground));cursor: pointer;font-family: var(--helix-font-sans);font-size: var(--data-table-text, var(--helix-text-sm));padding-block: var(--data-table-more-padding-block, var(--helix-space-2xs));padding-inline: var(--data-table-more-padding-inline, var(--helix-space-sm))}[part="more-button"]:hover {background-color: var(--data-table-more-hover-background-color, var(--helix-color-surface-raised))}:host([windowed]) [part="table"] {block-size: var(--data-table-block-size, 24em);overflow-y: auto;overscroll-behavior: contain}:host([windowed]) ::slotted(helix-table-column) {--_table-heading-background-color: var(--data-table-heading-background-color, var(--helix-color-background));--_table-heading-layer: var(--helix-layer-sticky);--_table-heading-position: sticky}:host([windowed]) [part="select-all"], :host([windowed]) [part="grip-head"] {background-color: var(--data-table-heading-background-color, var(--helix-color-background));inset-block-start: 0;position: sticky;z-index: var(--helix-layer-sticky)}[part="before"], [part="after"] {grid-column: 1 / -1}:host([loading]) [part="table"] {opacity: 0.5}[part="drag-preview"] {background-color: var(--data-table-drag-preview-background-color, var(--helix-color-surface-raised));border: var(--data-table-drag-preview-border-width, var(--helix-border-floating)) solid var(--data-table-drag-preview-border-color, var(--helix-color-border));border-radius: var(--data-table-drag-preview-radius, var(--helix-radii-sm));box-shadow: var(--data-table-drag-preview-shadow, var(--helix-shadow-floating));opacity: var(--data-table-drag-preview-opacity, 0.9)}@media print {:host {background-color: transparent}[part="table"] {overflow-x: visible}:host([windowed]) [part="table"] {block-size: auto;overflow-y: visible}[part="footer"] {display: none}}`);
2
+ export const styles = createSheet(`:host {display: block}[part="toolbar"], [part="table"], [part="footer"] {grid-column: 1 / -1}[part="table"] {display: grid;grid-template-columns: var(--data-table-columns, var(--data-table-template, minmax(0, 1fr)));inline-size: 100%;overflow-x: auto}[part="table"] {--_data-table-fade: to right;animation: data-table-edges linear both;animation-timeline: scroll(self inline);mask-image: linear-gradient(var(--_data-table-fade), transparent, #000 var(--_data-table-fade-start, 0rem), #000 calc(100% - var(--_data-table-fade-end, 0rem)), transparent)}:host(:dir(rtl)) [part="table"] {--_data-table-fade: to left}@keyframes data-table-edges {0% {--_data-table-fade-end: var(--helix-space-xl);--_data-table-fade-start: 0rem}5%, 95% {--_data-table-fade-end: var(--helix-space-xl);--_data-table-fade-start: var(--helix-space-xl)}100% {--_data-table-fade-end: 0rem;--_data-table-fade-start: var(--helix-space-xl)}}@media (prefers-reduced-motion: reduce) {[part="table"] {animation: none}}[part="head"], [part~="row"] {display: contents}[part~="cell"] {border-block-end: var(--helix-border-thin) solid var(--data-table-rule-color, var(--helix-color-border));color: var(--data-table-color, var(--helix-color-foreground));font-family: var(--helix-font-sans);font-size: var(--data-table-text, var(--helix-text-sm));padding-block: var(--data-table-padding-block, var(--helix-space-sm));padding-inline: var(--data-table-padding-inline, var(--helix-space-none) var(--helix-space-md));text-align: var(--data-table-cell-align)}[part~="row"]:last-of-type [part~="cell"] {border-block-end-color: transparent}::slotted(helix-table-column) {--_table-heading-color: var(--data-table-heading-color);--_table-heading-padding-block: var(--data-table-padding-block);--_table-heading-padding-inline: var(--data-table-padding-inline);--_table-heading-rule-color: var(--data-table-rule-color);--_table-heading-text: var(--data-table-text)}::slotted(helix-table-column[sortable]) {cursor: pointer}[part~="cell"]:focus-visible, [part="more-cell"]:focus-visible, [part~="select"]:focus-visible, [part="select-all"]:focus-visible, [part="row-grip"]:focus-visible, [part="grip-head"]:focus-visible {outline: var(--helix-size-focus-ring) solid var(--helix-color-focus-ring);outline-offset: calc(var(--helix-size-focus-offset) * -1)}[part~="select"], [part="select-all"], [part="row-grip"], [part="grip-head"] {align-items: center;border-block-end: var(--helix-border-thin) solid var(--data-table-rule-color, var(--helix-color-border));display: flex;justify-content: center;padding-block: var(--data-table-padding-block, var(--helix-space-sm));padding-inline: var(--data-table-padding-inline, var(--helix-space-sm))}[part="grip-head"]::before {content: "";inline-size: 1em}[part~="row"]:last-of-type [part~="select"], [part~="row"]:last-of-type [part="row-grip"] {border-block-end-color: transparent}[part~="row"][aria-selected="true"] > * {background-color: var(--data-table-selected-background-color, color-mix(in srgb, var(--helix-color-primary) 10%, var(--helix-color-background)))}[part="row-grip-button"] {all: unset;align-items: center;border-radius: var(--helix-radii-sm);box-sizing: border-box;color: var(--data-table-grip-color, var(--helix-color-foreground-muted));cursor: grab;display: inline-flex;touch-action: none}[part="row-grip-button"]:active {cursor: grabbing}[part="row-grip-button"][aria-disabled="true"] {cursor: default;opacity: var(--data-table-grip-disabled-opacity, 0.4)}[part="row-grip-mark"] {block-size: 1em;inline-size: 1em}[part~="row"][part~="row-dragging"] > * {opacity: var(--data-table-dragging-opacity, 0.5)}[part~="row"][part~="row-drop-before"] > * {box-shadow: inset 0 var(--data-table-drop-indicator-size, var(--helix-border-thick)) 0 0 var(--data-table-drop-indicator-color, var(--helix-color-primary))}[part~="row"][part~="row-drop-after"] > * {box-shadow: inset 0 calc(var(--data-table-drop-indicator-size, var(--helix-border-thick)) * -1) 0 0 var(--data-table-drop-indicator-color, var(--helix-color-primary))}[part="toolbar"][data-empty], [part="footer"][data-empty] {display: none}[part="toolbar"] {padding-block-end: var(--data-table-toolbar-gap, var(--helix-space-sm))}[part="footer"] {align-items: center;display: flex;flex-wrap: wrap;gap: var(--data-table-footer-item-gap, var(--helix-space-md));padding-block-start: var(--data-table-footer-gap, var(--helix-space-sm))}[part="pagination"] {margin-inline-start: auto}[part="footer"][data-held] {min-block-size: calc(var(--pagination-size, var(--helix-size-control-tight)) + var(--data-table-footer-gap, var(--helix-space-sm)))}[part="footer"][data-held] [part="pagination"] {visibility: hidden}:host(:not(:defined))::before, :host(:not(:defined))::after {content: none !important}[part="empty"], [part="loading"] {grid-column: 1 / -1}[part="error"] {color: var(--data-table-error-color, var(--helix-color-foreground));font-family: var(--helix-font-sans);font-size: var(--helix-text-sm);grid-column: 1 / -1;margin: var(--helix-space-none);padding-block: var(--helix-space-md);padding-inline: var(--helix-space-sm);text-align: center}:host([child-field]) [part~="cell-header"] {--_data-table-gutter: calc(var(--data-table-toggle-size, var(--helix-size-icon-tight)) + var(--data-table-toggle-gap, var(--helix-space-2xs)));padding-inline-start: calc((var(--data-table-level, 1) - 1) * var(--data-table-indent, var(--_data-table-gutter)))}:host([child-field]) [part~="cell-header"]:not(:has([part~="toggle"])) {padding-inline-start: calc((var(--data-table-level, 1) - 1) * var(--data-table-indent, var(--_data-table-gutter)) + var(--_data-table-gutter))}[part~="toggle"] {align-items: center;background: none;block-size: var(--data-table-toggle-size, var(--helix-size-icon-tight));border: none;color: var(--data-table-toggle-color, var(--helix-color-foreground-muted));cursor: pointer;display: inline-flex;inline-size: var(--data-table-toggle-size, var(--helix-size-icon-tight));justify-content: center;margin-inline-end: var(--data-table-toggle-gap, var(--helix-space-2xs));padding: 0;vertical-align: middle}[part="toggle-mark"] {block-size: 100%;inline-size: 100%}[part="more"] {display: contents}[part="more-cell"] {display: flex;grid-column: 1 / -1;padding-block: var(--data-table-padding-block, var(--helix-space-sm))}[part="more-button"] {background: none;border: var(--helix-border-thin) solid var(--data-table-more-border-color, var(--helix-color-border));border-radius: var(--data-table-more-radius, var(--helix-radii-sm));color: var(--data-table-color, var(--helix-color-foreground));cursor: pointer;font-family: var(--helix-font-sans);font-size: var(--data-table-text, var(--helix-text-sm));padding-block: var(--data-table-more-padding-block, var(--helix-space-2xs));padding-inline: var(--data-table-more-padding-inline, var(--helix-space-sm))}[part="more-button"]:hover {background-color: var(--data-table-more-hover-background-color, var(--helix-color-surface-raised))}:host([windowed]) [part="table"] {block-size: var(--data-table-block-size, 24em);overflow-y: auto;overscroll-behavior: contain}:host([windowed]) ::slotted(helix-table-column) {--_table-heading-background-color: var(--data-table-heading-background-color, var(--helix-color-background));--_table-heading-layer: var(--helix-layer-sticky);--_table-heading-position: sticky}:host([windowed]) [part="select-all"], :host([windowed]) [part="grip-head"] {background-color: var(--data-table-heading-background-color, var(--helix-color-background));inset-block-start: 0;position: sticky;z-index: var(--helix-layer-sticky)}[part="before"], [part="after"] {grid-column: 1 / -1}:host([loading]) [part="table"] {opacity: 0.5}[part="drag-preview"] {background-color: var(--data-table-drag-preview-background-color, var(--helix-color-surface-raised));border: var(--data-table-drag-preview-border-width, var(--helix-border-floating)) solid var(--data-table-drag-preview-border-color, var(--helix-color-border));border-radius: var(--data-table-drag-preview-radius, var(--helix-radii-sm));box-shadow: var(--data-table-drag-preview-shadow, var(--helix-shadow-floating));opacity: var(--data-table-drag-preview-opacity, 0.9)}@media print {:host {background-color: transparent}[part="table"] {overflow-x: visible}:host([windowed]) [part="table"] {block-size: auto;overflow-y: visible}[part="footer"] {display: none}}`);
@@ -22,7 +22,9 @@ import '../../pagination/index.js';
22
22
  * Write it under the columns as `helix-table-row` and `helix-table-cell`
23
23
  * elements. `@fusion.dev/helix-styles/helix.css` lays them out as the table
24
24
  * draws them before it upgrades, and the table shows them until `rows` holds a
25
- * row.
25
+ * row. It holds the checkbox column and the pagination's row from the first
26
+ * paint, and takes the widths from `columns`, so nothing moves when the table
27
+ * upgrades or draws its own rows.
26
28
  *
27
29
  * @since 0.1.0
28
30
  * @status stable
@@ -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) {
@@ -40,7 +40,7 @@ import { type StrandsVariant } from '../path.js';
40
40
  *
41
41
  * The ribbon stops moving in these cases:
42
42
  * - `prefers-reduced-motion` is set. The element shows one still frame, and in
43
- * `travel` still follows the scroll, without easing.
43
+ * `travel` still follows the scroll.
44
44
  * - The element is off screen or in a background tab.
45
45
  *
46
46
  * It shows a gradient from the same tokens in these cases, and matches
@@ -185,7 +185,7 @@ export declare class HelixStrands extends HelixElement {
185
185
  private readonly quietRects;
186
186
  /** In `travel`, the path's `y` at even steps of its parameter. */
187
187
  private table;
188
- /** In `travel`, the scroll position the ribbon is drawn at, easing toward the page's. */
188
+ /** In `travel`, the scroll position the ribbon was last drawn at. */
189
189
  private offset;
190
190
  /** Whether the opening frame has been drawn. Aura's settle: see `open`. */
191
191
  private opened;
@@ -256,8 +256,8 @@ export declare class HelixStrands extends HelixElement {
256
256
  /** A layout on the next frame, once, however many changes asked for one. */
257
257
  private readonly relayout;
258
258
  /**
259
- * The page scrolled. A running loop eases toward it on its own; a stopped
260
- * one, for a reader who asked for no motion, jumps there and paints once.
259
+ * The page scrolled. A running loop draws the new position on its next
260
+ * frame; a stopped one, for a reader who asked for no motion, paints once.
261
261
  */
262
262
  private readonly handleScroll;
263
263
  private paint;
@@ -10,7 +10,6 @@ import { styles } from './strands-root.css.js';
10
10
  const MAX_CANVAS_EDGE = 4096;
11
11
  const MAX_CANVAS_PIXELS = 4_194_304;
12
12
  const OPENING_PATIENCE = 500;
13
- const TRAVEL_EASE = 0.09;
14
13
  const PACE = 0.25;
15
14
  let HelixStrands = class HelixStrands extends HelixElement {
16
15
  constructor() {
@@ -465,11 +464,7 @@ let HelixStrands = class HelixStrands extends HelixElement {
465
464
  this.held = 0;
466
465
  this.elapsed += step * PACE * Math.max(0, this.speed);
467
466
  if (this.travel) {
468
- const target = window.scrollY;
469
- this.offset += (target - this.offset) * (1 - Math.exp(-step / TRAVEL_EASE));
470
- if (Math.abs(target - this.offset) < 0.5) {
471
- this.offset = target;
472
- }
467
+ this.offset = window.scrollY;
473
468
  }
474
469
  this.paint();
475
470
  }