@fusion.dev/helix 0.22.0 → 0.24.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.
Files changed (110) hide show
  1. package/custom-elements.json +63613 -38645
  2. package/dist/accordion/item/accordion-item.css.js +4 -0
  3. package/dist/announcement/root/announcement-root.css.js +26 -12
  4. package/dist/announcement/root/announcement-root.d.ts +17 -0
  5. package/dist/announcement/root/announcement-root.js +4 -0
  6. package/dist/app-header/root/app-header-root.css.js +6 -0
  7. package/dist/area-chart/index.d.ts +1 -0
  8. package/dist/area-chart/index.js +1 -0
  9. package/dist/area-chart/root/area-chart-root.css.d.ts +1 -0
  10. package/dist/area-chart/root/area-chart-root.css.js +97 -0
  11. package/dist/area-chart/root/area-chart-root.d.ts +38 -0
  12. package/dist/area-chart/root/area-chart-root.js +20 -0
  13. package/dist/bar-chart/root/bar-chart-root.css.js +0 -141
  14. package/dist/bar-chart/root/bar-chart-root.js +2 -1
  15. package/dist/button/root/button-root.css.js +4 -1
  16. package/dist/chat/composer/chat-composer.css.js +4 -0
  17. package/dist/chat/message/chat-message.css.js +20 -0
  18. package/dist/chat/root/chat-root.css.js +26 -0
  19. package/dist/code-block/root/code-block-root.css.js +122 -0
  20. package/dist/code-block/root/code-block-root.d.ts +5 -0
  21. package/dist/data-table/root/data-table-root.css.js +21 -3
  22. package/dist/data-table/root/data-table-root.d.ts +1 -0
  23. package/dist/data-table/root/data-table-root.js +1 -0
  24. package/dist/description-list/index.d.ts +2 -0
  25. package/dist/description-list/index.js +2 -0
  26. package/dist/description-list/item/description-list-item.css.d.ts +1 -0
  27. package/dist/description-list/item/description-list-item.css.js +31 -0
  28. package/dist/description-list/item/description-list-item.d.ts +21 -0
  29. package/dist/description-list/item/description-list-item.js +16 -0
  30. package/dist/description-list/root/description-list-root.css.d.ts +1 -0
  31. package/dist/description-list/root/description-list-root.css.js +35 -0
  32. package/dist/description-list/root/description-list-root.d.ts +62 -0
  33. package/dist/description-list/root/description-list-root.js +23 -0
  34. package/dist/donut-chart/root/donut-chart-root.css.js +0 -138
  35. package/dist/donut-chart/root/donut-chart-root.js +2 -1
  36. package/dist/element-events.generated.js +36 -8
  37. package/dist/filter-input/chip/filter-chip.css.d.ts +1 -0
  38. package/dist/filter-input/chip/filter-chip.css.js +85 -0
  39. package/dist/filter-input/chip/filter-chip.d.ts +32 -0
  40. package/dist/filter-input/chip/filter-chip.js +16 -0
  41. package/dist/filter-input/field/filter-field.css.d.ts +1 -0
  42. package/dist/filter-input/field/filter-field.css.js +4 -0
  43. package/dist/filter-input/field/filter-field.d.ts +29 -0
  44. package/dist/filter-input/field/filter-field.js +16 -0
  45. package/dist/filter-input/index.d.ts +4 -0
  46. package/dist/filter-input/index.js +4 -0
  47. package/dist/filter-input/menu/filter-menu.css.d.ts +1 -0
  48. package/dist/filter-input/menu/filter-menu.css.js +4 -0
  49. package/dist/filter-input/menu/filter-menu.d.ts +33 -0
  50. package/dist/filter-input/menu/filter-menu.js +19 -0
  51. package/dist/filter-input/operator/filter-operator.css.d.ts +1 -0
  52. package/dist/filter-input/operator/filter-operator.css.js +4 -0
  53. package/dist/filter-input/operator/filter-operator.d.ts +27 -0
  54. package/dist/filter-input/operator/filter-operator.js +16 -0
  55. package/dist/filter-input/root/filter-input-root.css.js +25 -2
  56. package/dist/filter-input/root/filter-input-root.d.ts +3 -0
  57. package/dist/heatmap/root/heatmap-root.d.ts +1 -0
  58. package/dist/heatmap/root/heatmap-root.js +1 -0
  59. package/dist/index.d.ts +5 -0
  60. package/dist/index.js +5 -0
  61. package/dist/line-chart/root/line-chart-root.css.js +0 -138
  62. package/dist/line-chart/root/line-chart-root.js +2 -1
  63. package/dist/menu/item/menu-item.css.js +33 -6
  64. package/dist/menu/item/menu-item.d.ts +2 -1
  65. package/dist/menu/root/menu-root.css.js +15 -0
  66. package/dist/navigation/root/navigation-root.css.js +2 -1
  67. package/dist/notifications/group/notification-group.css.d.ts +1 -0
  68. package/dist/notifications/group/notification-group.css.js +61 -0
  69. package/dist/notifications/group/notification-group.d.ts +37 -0
  70. package/dist/notifications/group/notification-group.js +16 -0
  71. package/dist/notifications/index.d.ts +1 -0
  72. package/dist/notifications/index.js +1 -0
  73. package/dist/notifications/notification/notification.css.js +74 -8
  74. package/dist/notifications/notification/notification.d.ts +25 -0
  75. package/dist/notifications/notification/notification.js +5 -0
  76. package/dist/notifications/root/notifications-root.css.js +8 -0
  77. package/dist/object-inspector/index.d.ts +1 -0
  78. package/dist/object-inspector/index.js +1 -0
  79. package/dist/object-inspector/root/object-inspector-root.css.d.ts +1 -0
  80. package/dist/object-inspector/root/object-inspector-root.css.js +148 -0
  81. package/dist/object-inspector/root/object-inspector-root.d.ts +35 -0
  82. package/dist/object-inspector/root/object-inspector-root.js +18 -0
  83. package/dist/sandbox/root/sandbox-root.d.ts +4 -0
  84. package/dist/sandbox/toolbar/sandbox-toolbar.css.js +7 -1
  85. package/dist/scatter-chart/index.d.ts +1 -0
  86. package/dist/scatter-chart/index.js +1 -0
  87. package/dist/scatter-chart/root/scatter-chart-root.css.d.ts +1 -0
  88. package/dist/scatter-chart/root/scatter-chart-root.css.js +138 -0
  89. package/dist/scatter-chart/root/scatter-chart-root.d.ts +38 -0
  90. package/dist/scatter-chart/root/scatter-chart-root.js +20 -0
  91. package/dist/shared/chart/tooltip.css.d.ts +1 -0
  92. package/dist/shared/chart/tooltip.css.js +141 -0
  93. package/dist/skip-link/index.d.ts +1 -0
  94. package/dist/skip-link/index.js +1 -0
  95. package/dist/skip-link/root/skip-link-root.css.d.ts +1 -0
  96. package/dist/skip-link/root/skip-link-root.css.js +36 -0
  97. package/dist/skip-link/root/skip-link-root.d.ts +42 -0
  98. package/dist/skip-link/root/skip-link-root.js +17 -0
  99. package/dist/steps/step/step.css.js +4 -0
  100. package/dist/table/column/table-column.css.js +66 -0
  101. package/dist/tag/root/tag-root.d.ts +10 -0
  102. package/dist/text/root/text-root.d.ts +26 -13
  103. package/dist/text/root/text-root.js +3 -0
  104. package/dist/time-picker/root/time-picker-root.css.js +2 -2
  105. package/dist/toast/item/toast-item.css.js +9 -4
  106. package/dist/toolbar/root/toolbar-root.css.js +6 -0
  107. package/package.json +6 -6
  108. package/types/jsx.d.ts +4797 -701
  109. package/types/svelte.d.ts +11 -0
  110. package/types/vue.d.ts +910 -52
@@ -0,0 +1,35 @@
1
+ import { HelixHeadlessObjectInspector } from '@fusion.dev/helix-headless/object-inspector';
2
+ import type { CSSResultGroup } from 'lit';
3
+ import '../../copy-button/index.js';
4
+ /**
5
+ * @summary A value read as a tree: collapse what you do not need, count what
6
+ * you collapsed, copy the part you do.
7
+ *
8
+ * @description
9
+ * Code Block's frame around a tree of entries. Each type takes its ink from the
10
+ * syntax set the code blocks already use, a key in one, a string in another and
11
+ * a number, a boolean and a null in theirs, and each row is one line with a long
12
+ * string ending in an ellipsis, so every row is one height and a windowed tree
13
+ * never has to measure them one by one.
14
+ *
15
+ * @since 0.1.0
16
+ * @status experimental
17
+ * @category data
18
+ * @aliases JSON viewer, Object viewer, Inspector, Data explorer
19
+ * @documentation https://helix.fusion.dev/components/object-inspector
20
+ *
21
+ * @cssproperty --object-inspector-background-color - Ground under the tree.
22
+ * @cssproperty --object-inspector-block-size - Height of the scrolling box, when windowed.
23
+ * @cssproperty --object-inspector-border-color - The edge around the tree and its header.
24
+ * @cssproperty --object-inspector-header-background-color - The bar carrying the label.
25
+ * @cssproperty --object-inspector-radius - Corner radius of the tree.
26
+ */
27
+ export declare class HelixObjectInspector extends HelixHeadlessObjectInspector {
28
+ static tier: string;
29
+ static styles: CSSResultGroup;
30
+ }
31
+ declare global {
32
+ interface HTMLElementTagNameMap {
33
+ 'helix-object-inspector': HelixObjectInspector;
34
+ }
35
+ }
@@ -0,0 +1,18 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { customElement } from '@fusion.dev/helix-core';
8
+ import { HelixHeadlessObjectInspector } from '@fusion.dev/helix-headless/object-inspector';
9
+ import { styles } from './object-inspector-root.css.js';
10
+ import '../../copy-button/index.js';
11
+ let HelixObjectInspector = class HelixObjectInspector extends HelixHeadlessObjectInspector {
12
+ static { this.tier = 'helix-'; }
13
+ static { this.styles = styles; }
14
+ };
15
+ HelixObjectInspector = __decorate([
16
+ customElement('helix-object-inspector')
17
+ ], HelixObjectInspector);
18
+ export { HelixObjectInspector };
@@ -32,8 +32,12 @@ import type { CSSResultGroup, PropertyValues, TemplateResult } from 'lit';
32
32
  * @slot status - A status bar, spanning both panes at the bottom.
33
33
  * @slot toolbar - A bar across the top, spanning both panes.
34
34
  *
35
+ * @event {HelixBeforeEditEvent} helix-before-edit - Fired before the source is edited, by the source pane and heard here. Cancelable: refusing it takes the decision and nothing moves.
35
36
  * @event {HelixBeforePanelResizeEvent} helix-before-panel-resize - Fired before the panel's divider is let go, with its height in pixels. Cancelable: refusing it takes the decision and nothing moves.
36
37
  * @event {HelixBeforeSplitEvent} helix-before-split - Fired before the panes' divider is let go, with the lead pane's share. Cancelable: refusing it takes the decision and nothing moves.
38
+ * @event {HelixCaretEvent} helix-caret - Fired when the cursor moves in the source, by the source pane and heard here.
39
+ * @event {HelixConsoleEvent} helix-console - Relayed from the frame by the preview pane, one per console call.
40
+ * @event {HelixResizeEvent} helix-resize - How tall the frame's content is, from the preview pane, whenever it changes.
37
41
  *
38
42
  * @csspart body - The splitter holding the panes above the panel.
39
43
  * @csspart corner - The handle where the two dividers cross.
@@ -2,14 +2,20 @@ import { createSheet } from '@fusion.dev/helix-core';
2
2
  export const styles = createSheet(`:host {
3
3
 
4
4
  --helix-size-checkbox: var(--helix-size-checkbox-sm);
5
+ --helix-size-checkbox-loose: calc(var(--helix-size-checkbox) * 1.2);
6
+ --helix-size-checkbox-tight: calc(var(--helix-size-checkbox) * 0.8);
5
7
  --helix-size-icon: var(--helix-size-icon-sm);
8
+ --helix-size-icon-loose: calc(var(--helix-size-icon) * 1.2);
9
+ --helix-size-icon-tight: calc(var(--helix-size-icon) * 0.8);
6
10
  --helix-size-control: var(--helix-size-control-sm);
11
+ --helix-size-control-loose: calc(var(--helix-size-control) * 1.2);
12
+ --helix-size-control-tight: calc(var(--helix-size-control) * 0.8);
7
13
  --helix-size-tag: var(--helix-size-tag-sm);
8
14
 
9
15
  align-items: center;
10
16
  background-color: var(--helix-color-background);
11
17
 
12
- block-size: var(--sandbox-toolbar-size, var(--helix-size-control-loose));
18
+ block-size: var(--sandbox-toolbar-size, var(--helix-size-control-lg));
13
19
 
14
20
  border-block-end: var(--helix-border-thin) solid var(--helix-color-border);
15
21
  display: flex;
@@ -0,0 +1 @@
1
+ export * from './root/scatter-chart-root.js';
@@ -0,0 +1 @@
1
+ export * from './root/scatter-chart-root.js';
@@ -0,0 +1 @@
1
+ export declare const styles: import("lit").CSSResult;
@@ -0,0 +1,138 @@
1
+ import { createSheet } from '@fusion.dev/helix-core';
2
+ export const styles = createSheet(`:host {
3
+ column-gap: var(--helix-space-xs);
4
+ container-type: inline-size;
5
+ display: grid;
6
+ grid-template-areas:
7
+ "y-name ."
8
+ "y-axis plot"
9
+ ". x-axis"
10
+ ". x-name";
11
+ grid-template-columns: auto minmax(0, 1fr);
12
+ position: relative;
13
+ row-gap: var(--scatter-chart-gap, var(--helix-space-2xs));
14
+ }
15
+
16
+ [part="plot"] {
17
+ block-size: var(--scatter-chart-block-size, 14em);
18
+ cursor: crosshair;
19
+ grid-area: plot;
20
+ position: relative;
21
+ }
22
+
23
+ [part="plot"] svg {
24
+ block-size: 100%;
25
+ inline-size: 100%;
26
+ overflow: visible;
27
+ }
28
+
29
+ [part="gridline"] {
30
+ stroke: var(--scatter-chart-gridline-color, var(--helix-color-border));
31
+ stroke-width: var(--helix-border-thin);
32
+ vector-effect: non-scaling-stroke;
33
+ }
34
+
35
+ [part="point"] {
36
+ background-color: var(--chart-series);
37
+ block-size: var(--scatter-chart-point-size, 8px);
38
+ border-radius: var(--helix-radii-full);
39
+ box-shadow: 0 0 0 var(--helix-border-thin)
40
+ var(--scatter-chart-point-ring-color, var(--helix-color-background));
41
+ inline-size: var(--scatter-chart-point-size, 8px);
42
+ inset-block-start: var(--chart-point-y);
43
+ inset-inline-start: var(--chart-point-x);
44
+ opacity: var(--scatter-chart-point-opacity, 0.8);
45
+ pointer-events: none;
46
+ position: absolute;
47
+ transition:
48
+ inset-block-start var(--helix-duration-normal) var(--helix-easing-decelerate),
49
+ inset-inline-start var(--helix-duration-normal) var(--helix-easing-decelerate),
50
+ scale var(--helix-duration-fast) var(--helix-easing-decelerate);
51
+ translate: -50% -50%;
52
+ }
53
+
54
+ [part="point"][data-active] {
55
+ opacity: 1;
56
+ scale: 1.5;
57
+ }
58
+
59
+ [part="x-axis"],
60
+ [part="y-axis"] {
61
+ display: grid;
62
+ }
63
+
64
+ [part="x-axis"] {
65
+ grid-area: x-axis;
66
+ }
67
+
68
+ [part="y-axis"] {
69
+ grid-area: y-axis;
70
+ }
71
+
72
+ [part="x-tick"],
73
+ [part="y-tick"] {
74
+ color: var(--helix-color-foreground-muted);
75
+ font-size: var(--helix-text-xs);
76
+ font-variant-numeric: tabular-nums;
77
+ grid-area: 1 / 1;
78
+ line-height: 1;
79
+ position: relative;
80
+ white-space: nowrap;
81
+ }
82
+
83
+ [part="x-tick"] {
84
+ inset-inline-start: var(--chart-tick);
85
+ justify-self: start;
86
+ translate: -50% 0;
87
+ }
88
+
89
+ [part="y-tick"] {
90
+ align-self: start;
91
+ inset-block-start: var(--chart-tick);
92
+ justify-self: end;
93
+ translate: 0 -50%;
94
+ }
95
+
96
+ @container (inline-size < 30rem) {
97
+ [part="x-tick"]:nth-last-child(even) {
98
+ visibility: hidden;
99
+ }
100
+ }
101
+
102
+ [part="x-name"],
103
+ [part="y-name"] {
104
+ color: var(--helix-color-foreground-muted);
105
+ font-size: var(--helix-text-xs);
106
+ font-weight: var(--helix-weight-medium);
107
+ }
108
+
109
+ [part="x-name"] {
110
+ grid-area: x-name;
111
+ justify-self: end;
112
+ }
113
+
114
+ [part="y-name"] {
115
+ grid-area: y-name;
116
+ }
117
+
118
+ [part="summary"] {
119
+ block-size: 1px;
120
+ clip-path: inset(50%);
121
+ inline-size: 1px;
122
+ margin: var(--helix-space-none);
123
+ overflow: hidden;
124
+ position: absolute;
125
+ white-space: nowrap;
126
+ }
127
+
128
+ @starting-style {
129
+ [part="point"] {
130
+ opacity: 0;
131
+ }
132
+ }
133
+
134
+ @media print {
135
+ :host {
136
+ print-color-adjust: exact;
137
+ }
138
+ }`);
@@ -0,0 +1,38 @@
1
+ import { HelixHeadlessScatterChart } from '@fusion.dev/helix-headless/scatter-chart';
2
+ import type { CSSResultGroup } from 'lit';
3
+ import '../../tooltip/index.js';
4
+ /**
5
+ * @summary Whether two measures move together, one point per row.
6
+ *
7
+ * @description
8
+ * The points take the series palette in order, so a table with one column
9
+ * measured up is series one and a table with three is the first three.
10
+ *
11
+ * Each point has a ring of the page around it and stops short of opaque, so a
12
+ * dense cluster reads as dense rather than as one blot, and two points that
13
+ * overlap each keep their edge.
14
+ *
15
+ * @since 0.1.0
16
+ * @status experimental
17
+ * @category charts
18
+ * @groups charts
19
+ * @aliases Scatter Plot, XY Chart, Correlation Chart, Dot Plot
20
+ * @documentation https://helix.fusion.dev/components/scatter-chart
21
+ *
22
+ * @cssproperty --scatter-chart-block-size - Height of the drawing.
23
+ * @cssproperty --scatter-chart-gap - Space between the drawing and its axes.
24
+ * @cssproperty --scatter-chart-gridline-color - One rule across the plot, under `gridlines`.
25
+ * @cssproperty --scatter-chart-point-opacity - How much of its color a point shows, so a cluster reads darker where it is denser.
26
+ * @cssproperty --scatter-chart-point-ring-color - The ring around each point, which is the page's color unless the chart sits on something else.
27
+ * @cssproperty --scatter-chart-point-size - Diameter of a point.
28
+ */
29
+ export declare class HelixScatterChart extends HelixHeadlessScatterChart {
30
+ /** The styled tier, so the tooltip this renders is the styled one. */
31
+ static tier: string;
32
+ static styles: CSSResultGroup;
33
+ }
34
+ declare global {
35
+ interface HTMLElementTagNameMap {
36
+ 'helix-scatter-chart': HelixScatterChart;
37
+ }
38
+ }
@@ -0,0 +1,20 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { customElement } from '@fusion.dev/helix-core';
8
+ import { HelixHeadlessScatterChart } from '@fusion.dev/helix-headless/scatter-chart';
9
+ import { styles as seriesStyles } from '../../shared/chart/series.css.js';
10
+ import { styles as tooltipStyles } from '../../shared/chart/tooltip.css.js';
11
+ import { styles } from './scatter-chart-root.css.js';
12
+ import '../../tooltip/index.js';
13
+ let HelixScatterChart = class HelixScatterChart extends HelixHeadlessScatterChart {
14
+ static { this.tier = 'helix-'; }
15
+ static { this.styles = [seriesStyles, tooltipStyles, styles]; }
16
+ };
17
+ HelixScatterChart = __decorate([
18
+ customElement('helix-scatter-chart')
19
+ ], HelixScatterChart);
20
+ export { HelixScatterChart };
@@ -0,0 +1 @@
1
+ export declare const styles: import("lit").CSSResult;
@@ -0,0 +1,141 @@
1
+ import { createSheet } from '@fusion.dev/helix-core';
2
+ export const styles = createSheet(`[part="mark"] {
3
+ block-size: 1px;
4
+ inline-size: 1px;
5
+ pointer-events: none;
6
+ position: absolute;
7
+ }
8
+
9
+ [part="tooltip-anchor"] {
10
+ inset: 0;
11
+ pointer-events: none;
12
+ position: absolute;
13
+ }
14
+
15
+ [part="tooltip-label"] {
16
+ display: block;
17
+ font-weight: var(--helix-weight-medium);
18
+ margin-block-end: var(--helix-space-2xs);
19
+ }
20
+
21
+ [part="tooltip-cell"] {
22
+ align-items: baseline;
23
+ column-gap: var(--helix-space-sm);
24
+ display: grid;
25
+ grid-template-columns: 0.5em minmax(0, 1fr) auto;
26
+ }
27
+
28
+ [part="tooltip-name"] {
29
+ grid-column: 2;
30
+
31
+ opacity: 0.72;
32
+ }
33
+
34
+ [part="tooltip-value"] {
35
+ font-variant-numeric: tabular-nums;
36
+ grid-column: 3;
37
+ }
38
+
39
+ [part="tooltip-cell"][data-series]::before {
40
+ block-size: 0.5em;
41
+ border-radius: var(--helix-radii-full);
42
+ content: "";
43
+ grid-column: 1;
44
+ inline-size: 0.5em;
45
+ }
46
+
47
+ [part="tooltip-cell"][data-series="1"]::before {
48
+ background-color: var(--chart-series-1);
49
+ }
50
+
51
+ [part="tooltip-cell"][data-series="2"]::before {
52
+ background-color: var(--chart-series-2);
53
+ }
54
+
55
+ [part="tooltip-cell"][data-series="3"]::before {
56
+ background-color: var(--chart-series-3);
57
+ }
58
+
59
+ [part="tooltip-cell"][data-series="4"]::before {
60
+ background-color: var(--chart-series-4);
61
+ }
62
+
63
+ [part="tooltip-cell"][data-series="5"]::before {
64
+ background-color: var(--chart-series-5);
65
+ }
66
+
67
+ [part="tooltip-cell"][data-series="6"]::before {
68
+ background-color: var(--chart-series-6);
69
+ }
70
+
71
+ [part="tooltip-cell"][data-series="7"]::before {
72
+ background-color: var(--chart-series-7);
73
+ }
74
+
75
+ [part="tooltip-cell"][data-series="8"]::before {
76
+ background-color: var(--chart-series-8);
77
+ }
78
+
79
+ [part="tooltip-cell"][data-series="9"]::before {
80
+ background-color: var(--chart-series-9);
81
+ }
82
+
83
+ [part="tooltip-cell"][data-series="10"]::before {
84
+ background-color: var(--chart-series-10);
85
+ }
86
+
87
+ [part="tooltip-cell"][data-series="11"]::before {
88
+ background-color: var(--chart-series-11);
89
+ }
90
+
91
+ [part="tooltip-cell"][data-series="12"]::before {
92
+ background-color: var(--chart-series-12);
93
+ }
94
+
95
+ [part="tooltip-cell"][data-series="13"]::before {
96
+ background-color: var(--chart-series-13);
97
+ }
98
+
99
+ [part="tooltip-cell"][data-series="14"]::before {
100
+ background-color: var(--chart-series-14);
101
+ }
102
+
103
+ [part="tooltip-cell"][data-series="15"]::before {
104
+ background-color: var(--chart-series-15);
105
+ }
106
+
107
+ [part="tooltip-cell"][data-series="16"]::before {
108
+ background-color: var(--chart-series-16);
109
+ }
110
+
111
+ [part="tooltip-cell"][data-series="17"]::before {
112
+ background-color: var(--chart-series-17);
113
+ }
114
+
115
+ [part="tooltip-cell"][data-series="18"]::before {
116
+ background-color: var(--chart-series-18);
117
+ }
118
+
119
+ [part="tooltip-cell"][data-series="19"]::before {
120
+ background-color: var(--chart-series-19);
121
+ }
122
+
123
+ [part="tooltip-cell"][data-series="20"]::before {
124
+ background-color: var(--chart-series-20);
125
+ }
126
+
127
+ [part="tooltip-cell"][data-series="21"]::before {
128
+ background-color: var(--chart-series-21);
129
+ }
130
+
131
+ [part="tooltip-cell"][data-series="22"]::before {
132
+ background-color: var(--chart-series-22);
133
+ }
134
+
135
+ [part="tooltip-cell"][data-series="23"]::before {
136
+ background-color: var(--chart-series-23);
137
+ }
138
+
139
+ [part="tooltip-cell"][data-series="24"]::before {
140
+ background-color: var(--chart-series-24);
141
+ }`);
@@ -0,0 +1 @@
1
+ export { HelixSkipLink } from './root/skip-link-root.js';
@@ -0,0 +1 @@
1
+ export { HelixSkipLink } from './root/skip-link-root.js';
@@ -0,0 +1 @@
1
+ export declare const styles: import("lit").CSSResult;
@@ -0,0 +1,36 @@
1
+ import { createSheet } from '@fusion.dev/helix-core';
2
+ export const styles = createSheet(`:host {
3
+ display: block;
4
+ inset-block-start: var(--helix-space-sm);
5
+ inset-inline-start: var(--helix-space-sm);
6
+ position: fixed;
7
+ z-index: var(--helix-layer-overlay);
8
+ }
9
+
10
+ [part="link"] {
11
+ background-color: var(--helix-color-surface-inverse);
12
+ border: var(--skip-link-border-width, var(--helix-border-floating)) solid
13
+ var(--skip-link-border-color, var(--helix-color-border));
14
+ border-radius: var(--helix-radii-sm);
15
+ box-shadow: var(--skip-link-shadow, var(--helix-shadow-floating));
16
+ color: var(--helix-color-foreground-inverse);
17
+ display: inline-block;
18
+ font-family: var(--helix-font-sans);
19
+ font-size: var(--helix-text-sm);
20
+ font-weight: var(--helix-weight-medium);
21
+ line-height: var(--helix-leading-normal);
22
+ padding-block: var(--helix-space-sm);
23
+ padding-inline: var(--helix-space-md);
24
+ text-decoration: none;
25
+ }
26
+
27
+ [part="link"]:focus-visible {
28
+ outline: var(--helix-size-focus-ring) solid var(--helix-color-focus-ring);
29
+ outline-offset: var(--helix-size-focus-offset);
30
+ }
31
+
32
+ @media print {
33
+ :host {
34
+ display: none;
35
+ }
36
+ }`);
@@ -0,0 +1,42 @@
1
+ import { HelixHeadlessSkipLink } from '@fusion.dev/helix-headless/skip-link';
2
+ import type { CSSResultGroup } from 'lit';
3
+ /**
4
+ * @summary The first stop on a page, which moves the reader past everything
5
+ * repeated on every page.
6
+ *
7
+ * @description
8
+ * Out of sight until the keyboard reaches it, then in the corner of the
9
+ * viewport and impossible to miss. The hiding is the base layer's visually
10
+ * hidden helper, so the link stays in the tab order and in the accessibility
11
+ * tree while nobody can see it; `display: none` would have taken it out of
12
+ * both. The reveal is this sheet's.
13
+ *
14
+ * **Fixed to the viewport rather than placed where it sits in the document**,
15
+ * because it is first in the document and the page may already be scrolled
16
+ * when focus arrives, by a restored position or an anchor in the address. A
17
+ * link revealed above the top of the screen is revealed to nobody.
18
+ *
19
+ * Put it first inside `<body>`, before the header, and give the content
20
+ * region the id its `href` names.
21
+ *
22
+ * @since 0.1.0
23
+ * @status experimental
24
+ * @category navigation
25
+ * @documentation https://helix.fusion.dev/components/skip-link
26
+ *
27
+ * @cssproperty --skip-link-border-color - Color of the revealed link's edge.
28
+ * @cssproperty --skip-link-border-width - Width of the revealed link's edge. Follows
29
+ * `--helix-border-floating`, which is `0`, so the link is told apart by its lift unless a
30
+ * theme says otherwise.
31
+ * @cssproperty --skip-link-shadow - Lift under the revealed link. Follows
32
+ * `--helix-shadow-floating`, since it sits over whatever the page has at its corner.
33
+ */
34
+ export declare class HelixSkipLink extends HelixHeadlessSkipLink {
35
+ static tier: string;
36
+ static styles: CSSResultGroup;
37
+ }
38
+ declare global {
39
+ interface HTMLElementTagNameMap {
40
+ 'helix-skip-link': HelixSkipLink;
41
+ }
42
+ }
@@ -0,0 +1,17 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { customElement } from '@fusion.dev/helix-core';
8
+ import { HelixHeadlessSkipLink } from '@fusion.dev/helix-headless/skip-link';
9
+ import { styles } from './skip-link-root.css.js';
10
+ let HelixSkipLink = class HelixSkipLink extends HelixHeadlessSkipLink {
11
+ static { this.tier = 'helix-'; }
12
+ static { this.styles = styles; }
13
+ };
14
+ HelixSkipLink = __decorate([
15
+ customElement('helix-skip-link')
16
+ ], HelixSkipLink);
17
+ export { HelixSkipLink };
@@ -105,7 +105,11 @@ z-index: 1;
105
105
 
106
106
  [part="label"] {
107
107
  --helix-size-control: var(--helix-size-control-sm);
108
+ --helix-size-control-loose: calc(var(--helix-size-control) * 1.2);
109
+ --helix-size-control-tight: calc(var(--helix-size-control) * 0.8);
108
110
  --helix-size-icon: var(--helix-size-icon-sm);
111
+ --helix-size-icon-loose: calc(var(--helix-size-icon) * 1.2);
112
+ --helix-size-icon-tight: calc(var(--helix-size-icon) * 0.8);
109
113
  --helix-space-control: var(--_step-inset);
110
114
  --helix-text-control: var(--helix-text-sm);
111
115
  --button-foreground-color: var(--helix-color-foreground-muted);
@@ -17,4 +17,70 @@ font-weight: var(--helix-weight-semibold);
17
17
  min-block-size: var(--helix-size-control-loose);
18
18
  min-inline-size: 0;
19
19
  padding-inline-end: var(--helix-space-md);
20
+ }
21
+
22
+ [part="column"] {
23
+ position: relative;
24
+ }
25
+
26
+ [part="sort"] {
27
+ all: unset;
28
+ align-items: center;
29
+ box-sizing: border-box;
30
+ cursor: pointer;
31
+ display: inline-flex;
32
+ flex: 1;
33
+ gap: var(--helix-space-2xs);
34
+ min-inline-size: 0;
35
+ }
36
+
37
+ [part="sort"]:focus-visible,
38
+ [part="grip"]:focus-visible,
39
+ [part="resizer"]:focus-visible {
40
+ outline: var(--helix-size-focus-ring) solid var(--helix-color-focus-ring);
41
+ outline-offset: var(--helix-size-focus-offset);
42
+ }
43
+
44
+ [part="grip"] {
45
+ all: unset;
46
+ align-items: center;
47
+ border-radius: var(--helix-radii-sm);
48
+ box-sizing: border-box;
49
+ color: var(--helix-color-foreground-muted);
50
+ cursor: grab;
51
+ display: inline-flex;
52
+ flex: none;
53
+ margin-inline-end: var(--helix-space-2xs);
54
+ touch-action: none;
55
+ }
56
+
57
+ [part="grip"]:active {
58
+ cursor: grabbing;
59
+ }
60
+
61
+ [part="grip-mark"] {
62
+ block-size: 1em;
63
+ inline-size: 1em;
64
+ }
65
+
66
+ [part="resizer"] {
67
+ cursor: col-resize;
68
+ inline-size: var(--helix-space-sm);
69
+ inset-block: 0;
70
+ inset-inline-end: 0;
71
+ position: absolute;
72
+ touch-action: none;
73
+ }
74
+
75
+ [part="resizer"]::after {
76
+ border-inline-end: var(--helix-border-thin) solid transparent;
77
+ content: "";
78
+ inset-block: var(--helix-space-xs);
79
+ inset-inline-end: 0;
80
+ position: absolute;
81
+ }
82
+
83
+ [part="resizer"]:hover::after,
84
+ [part="resizer"]:focus-visible::after {
85
+ border-inline-end-color: var(--helix-color-foreground-muted);
20
86
  }`);
@@ -46,6 +46,16 @@ export declare class HelixTag extends HelixHeadlessTag {
46
46
  *
47
47
  * `tone` is semantic color, which is what these are and what `helix-text`
48
48
  * already calls them. `helix component`'s `axes` holds the vocabulary.
49
+ *
50
+ * **Not all seven are statuses, and `accent` is the one worth saying out
51
+ * loud**: it is the second emphasis, a rotation off the brand seed rather than
52
+ * a color of its own, so it stays in relation when somebody rethemes.
53
+ * `primary` is the seed itself. The four that are statuses are the four
54
+ * `HelixStatusTone` names, and those are the ones that would carry a glyph
55
+ * somewhere that draws one.
56
+ *
57
+ * `Badge` and `Announcement` take the same seven, all three being a mark that
58
+ * carries a meaning beside something else.
49
59
  */
50
60
  tone?: 'accent' | 'danger' | 'info' | 'neutral' | 'primary' | 'success' | 'warning';
51
61
  static styles: CSSResultGroup;