@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.
- package/custom-elements.json +3049 -418
- package/dist/data-table/root/data-table-root.css.js +1 -1
- package/dist/data-table/root/data-table-root.d.ts +3 -1
- package/dist/element-events.generated.js +7 -0
- package/dist/icon/all/index.d.ts +0 -1
- package/dist/icon/all/index.js +0 -1
- package/dist/icon/root/icon-root.d.ts +0 -5
- package/dist/index.d.ts +2 -1
- package/dist/index.js +2 -1
- package/dist/isometric-heatmap/index.d.ts +1 -0
- package/dist/isometric-heatmap/index.js +1 -0
- package/dist/isometric-heatmap/root/isometric-heatmap-root.css.d.ts +1 -0
- package/dist/isometric-heatmap/root/isometric-heatmap-root.css.js +2 -0
- package/dist/isometric-heatmap/root/isometric-heatmap-root.d.ts +39 -0
- package/dist/isometric-heatmap/root/isometric-heatmap-root.js +18 -0
- package/dist/sandbox/root/sandbox-root.js +1 -1
- package/dist/strands/root/strands-root.d.ts +4 -4
- package/dist/strands/root/strands-root.js +1 -6
- package/lint.json +1 -1
- package/package.json +6 -6
- package/types/jsx.d.ts +1256 -54
- package/types/svelte.d.ts +1 -0
- package/types/vue.d.ts +287 -13
|
@@ -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': [
|
package/dist/icon/all/index.d.ts
CHANGED
package/dist/icon/all/index.js
CHANGED
|
@@ -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/
|
|
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/
|
|
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
|
-
}, '
|
|
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
|
|
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
|
|
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
|
|
260
|
-
* one, for a reader who asked for no motion,
|
|
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
|
-
|
|
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
|
}
|