@fusion.dev/helix 0.145.0 → 0.146.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 (153) hide show
  1. package/custom-elements.json +7841 -3357
  2. package/dist/accordion/item/accordion-item.css.js +12 -8
  3. package/dist/accordion/item/accordion-item.d.ts +8 -0
  4. package/dist/aura/root/aura-root.css.js +3 -0
  5. package/dist/aura/root/aura-root.d.ts +21 -9
  6. package/dist/aura/root/aura-root.js +23 -12
  7. package/dist/badge/root/badge-root.css.js +86 -16
  8. package/dist/badge/root/badge-root.d.ts +18 -0
  9. package/dist/badge/root/badge-root.js +6 -0
  10. package/dist/blockquote/root/blockquote-root.css.js +2 -2
  11. package/dist/blockquote/root/blockquote-root.d.ts +2 -0
  12. package/dist/breadcrumbs/root/breadcrumbs-root.css.js +23 -0
  13. package/dist/breadcrumbs/root/breadcrumbs-root.d.ts +1 -0
  14. package/dist/button/root/button-root.css.js +4 -3
  15. package/dist/button/root/button-root.d.ts +2 -0
  16. package/dist/callout/root/callout-root.css.js +4 -3
  17. package/dist/callout/root/callout-root.d.ts +6 -2
  18. package/dist/card/root/card-root.d.ts +6 -0
  19. package/dist/chat/message/chat-message.css.js +0 -62
  20. package/dist/chat/message/chat-message.js +2 -1
  21. package/dist/chat/root/chat-root.css.js +7 -0
  22. package/dist/chat/root/chat-root.d.ts +2 -0
  23. package/dist/chat/root/chat-root.js +2 -1
  24. package/dist/chat/typing.css.d.ts +1 -0
  25. package/dist/chat/typing.css.js +62 -0
  26. package/dist/checkbox/root/checkbox-root.css.js +15 -0
  27. package/dist/checkbox/root/checkbox-root.d.ts +2 -1
  28. package/dist/code/root/code-root.css.js +2 -2
  29. package/dist/code/root/code-root.d.ts +2 -0
  30. package/dist/code-block/root/code-block-root.css.js +24 -0
  31. package/dist/code-block/root/code-block-root.d.ts +2 -1
  32. package/dist/color-input/root/color-input-root.css.js +10 -0
  33. package/dist/color-picker/root/color-picker-root.css.js +8 -0
  34. package/dist/color-picker/root/color-picker-root.d.ts +1 -0
  35. package/dist/copy-button/root/copy-button-root.css.js +15 -6
  36. package/dist/copy-button/root/copy-button-root.d.ts +7 -0
  37. package/dist/data-table/root/data-table-root.css.js +14 -7
  38. package/dist/data-table/root/data-table-root.d.ts +5 -0
  39. package/dist/date-input/root/date-input-root.css.js +10 -0
  40. package/dist/donut-chart/root/donut-chart-root.css.js +19 -0
  41. package/dist/donut-chart/root/donut-chart-root.d.ts +3 -0
  42. package/dist/drawer/root/drawer-root.css.js +47 -0
  43. package/dist/drawer/root/drawer-root.d.ts +5 -0
  44. package/dist/drilldown/item/drilldown-item.css.js +6 -6
  45. package/dist/drilldown/item/drilldown-item.d.ts +6 -0
  46. package/dist/drilldown/root/drilldown-root.css.js +25 -12
  47. package/dist/drilldown/root/drilldown-root.d.ts +10 -0
  48. package/dist/element-events.generated.js +15 -5
  49. package/dist/file-input/root/file-input-root.css.js +12 -11
  50. package/dist/file-input/root/file-input-root.d.ts +11 -0
  51. package/dist/filter-input/root/filter-input-root.css.js +6 -5
  52. package/dist/filter-input/root/filter-input-root.d.ts +5 -0
  53. package/dist/flex/root/flex-root.css.js +9 -0
  54. package/dist/flex/root/flex-root.d.ts +17 -6
  55. package/dist/graph/root/graph-root.css.js +11 -8
  56. package/dist/graph/root/graph-root.d.ts +8 -0
  57. package/dist/grid/root/grid-root.d.ts +4 -1
  58. package/dist/heatmap/root/heatmap-root.css.js +2 -1
  59. package/dist/icon-button/root/icon-button-root.css.js +68 -13
  60. package/dist/icon-button/root/icon-button-root.d.ts +4 -0
  61. package/dist/kbd/root/kbd-root.css.js +27 -0
  62. package/dist/kbd/root/kbd-root.d.ts +2 -0
  63. package/dist/lightbox/item/lightbox-item.css.js +4 -0
  64. package/dist/lightbox/root/lightbox-root.css.js +41 -0
  65. package/dist/line-chart/root/line-chart-root.css.js +16 -0
  66. package/dist/line-chart/root/line-chart-root.d.ts +2 -0
  67. package/dist/listbox/root/listbox-root.css.js +9 -0
  68. package/dist/listbox/root/listbox-root.d.ts +1 -0
  69. package/dist/loader/root/loader-root.css.js +3 -3
  70. package/dist/loader/root/loader-root.d.ts +2 -0
  71. package/dist/megamenu/root/megamenu-root.css.js +16 -13
  72. package/dist/megamenu/root/megamenu-root.d.ts +11 -0
  73. package/dist/menu/item/menu-item.css.js +25 -4
  74. package/dist/menu/item/menu-item.d.ts +1 -0
  75. package/dist/meter/root/meter-root.css.js +6 -3
  76. package/dist/meter/root/meter-root.d.ts +1 -0
  77. package/dist/navigation/root/navigation-root.d.ts +7 -0
  78. package/dist/notifications/root/notifications-root.css.js +6 -0
  79. package/dist/number-input/root/number-input-root.css.js +12 -9
  80. package/dist/number-input/root/number-input-root.d.ts +8 -0
  81. package/dist/object-inspector/root/object-inspector-root.css.js +2 -6
  82. package/dist/option/root/option-root.css.js +1 -1
  83. package/dist/orb/root/orb-root.d.ts +14 -6
  84. package/dist/orb/root/orb-root.js +16 -27
  85. package/dist/pin-input/root/pin-input-root.css.js +4 -4
  86. package/dist/pin-input/root/pin-input-root.d.ts +4 -0
  87. package/dist/progress/root/progress-root.css.js +4 -2
  88. package/dist/progress/root/progress-root.d.ts +1 -0
  89. package/dist/qr-code/root/qr-code-root.css.js +11 -0
  90. package/dist/quote/root/quote-root.css.js +3 -0
  91. package/dist/quote/root/quote-root.d.ts +2 -0
  92. package/dist/radio/root/radio-root.css.js +16 -0
  93. package/dist/radio/root/radio-root.d.ts +2 -1
  94. package/dist/sandbox/frame.d.ts +3 -2
  95. package/dist/sandbox/frame.js +19 -5
  96. package/dist/sandbox/index.d.ts +1 -0
  97. package/dist/sandbox/source/sandbox-source.css.js +70 -0
  98. package/dist/sandbox/source/sandbox-source.d.ts +34 -0
  99. package/dist/sandbox/source/sandbox-source.js +15 -0
  100. package/dist/sandbox/terminal/sandbox-terminal.d.ts +10 -2
  101. package/dist/sandbox/terminal/sandbox-terminal.js +18 -5
  102. package/dist/sandbox/tokens.d.ts +39 -0
  103. package/dist/sandbox/tokens.js +9 -0
  104. package/dist/scatter-chart/root/scatter-chart-root.css.js +9 -0
  105. package/dist/scatter-chart/root/scatter-chart-root.d.ts +2 -0
  106. package/dist/skeleton/root/skeleton-root.css.js +11 -11
  107. package/dist/skeleton/root/skeleton-root.d.ts +1 -0
  108. package/dist/skip-link/root/skip-link-root.css.js +12 -0
  109. package/dist/skip-link/root/skip-link-root.d.ts +3 -3
  110. package/dist/slider/root/slider-root.css.js +26 -0
  111. package/dist/sparkline/root/sparkline-root.css.js +49 -0
  112. package/dist/sparkline/root/sparkline-root.d.ts +6 -0
  113. package/dist/sparkline/root/sparkline-root.js +2 -1
  114. package/dist/speed-dial/item/speed-dial-item.css.js +7 -6
  115. package/dist/speed-dial/item/speed-dial-item.d.ts +3 -0
  116. package/dist/speed-dial/root/speed-dial-root.css.js +10 -5
  117. package/dist/speed-dial/root/speed-dial-root.d.ts +7 -1
  118. package/dist/speed-dial/root/speed-dial-root.js +0 -1
  119. package/dist/stat/root/stat-root.css.js +4 -0
  120. package/dist/steps/root/steps-root.css.js +28 -0
  121. package/dist/steps/root/steps-root.d.ts +5 -0
  122. package/dist/tabs/root/tabs-root.css.js +2 -2
  123. package/dist/tabs/root/tabs-root.d.ts +4 -0
  124. package/dist/tabs/tab/tab.css.js +16 -9
  125. package/dist/tabs/tab/tab.d.ts +7 -0
  126. package/dist/tag/group/tag-group.css.js +6 -0
  127. package/dist/text/clamp.d.ts +5 -2
  128. package/dist/text/clamp.js +3 -1
  129. package/dist/text/root/text-root.css.js +0 -6
  130. package/dist/text/root/text-root.d.ts +2 -1
  131. package/dist/textarea/root/textarea-root.css.js +27 -0
  132. package/dist/time-input/root/time-input-root.css.js +12 -0
  133. package/dist/time-picker/root/time-picker-root.css.js +1 -1
  134. package/dist/toast/item/toast-item.css.js +10 -0
  135. package/dist/toast/root/toast-root.d.ts +1 -0
  136. package/dist/toast/root/toast-root.js +1 -0
  137. package/dist/toggle/group/toggle-group.css.js +10 -7
  138. package/dist/toggle/group/toggle-group.d.ts +6 -1
  139. package/dist/toggle/root/toggle-root.d.ts +6 -0
  140. package/dist/toolbar/root/toolbar-root.css.js +1 -0
  141. package/dist/toolbar/root/toolbar-root.d.ts +2 -0
  142. package/dist/tooltip/root/tooltip-root.css.js +5 -5
  143. package/dist/tooltip/root/tooltip-root.d.ts +4 -0
  144. package/dist/tree/item/tree-item.css.js +19 -9
  145. package/dist/tree/item/tree-item.d.ts +9 -0
  146. package/dist/trend/root/trend-root.css.js +3 -5
  147. package/dist/trend/root/trend-root.d.ts +2 -2
  148. package/dist/virtual-list/root/virtual-list-root.css.js +14 -0
  149. package/dist/virtual-list/root/virtual-list-root.d.ts +7 -1
  150. package/lint.json +1 -1
  151. package/package.json +9 -9
  152. package/types/jsx.d.ts +4289 -631
  153. package/types/vue.d.ts +1296 -127
@@ -60,7 +60,10 @@ var(--helix-color-foreground)
60
60
 
61
61
  [part="button"] {
62
62
  align-items: center;
63
- background-color: var(--icon-button-background-color, transparent);
63
+ background-color: var(
64
+ --_icon-button-pressed-fill,
65
+ var(--icon-button-background-color, transparent)
66
+ );
64
67
  block-size: var(--_icon-button-size);
65
68
  border: var(--helix-border-thin) solid transparent;
66
69
 
@@ -77,7 +80,10 @@ border-start-start-radius: var(
77
80
  --button-radius-start,
78
81
  var(--icon-button-radius, var(--helix-radii-sm))
79
82
  );
80
- color: var(--icon-button-foreground-color, var(--_icon-button-ink));
83
+ color: var(
84
+ --_icon-button-pressed-ink,
85
+ var(--icon-button-foreground-color, var(--_icon-button-ink))
86
+ );
81
87
  cursor: pointer;
82
88
  display: inline-flex;
83
89
 
@@ -92,13 +98,24 @@ color var(--helix-duration-fast) var(--helix-easing-standard);
92
98
 
93
99
  :host(:not(:disabled)) [part="button"]:hover {
94
100
  background-color: var(
101
+ --_icon-button-pressed-fill,
102
+ var(
95
103
  --icon-button-background-color-hover,
96
104
  var(
97
105
  --icon-button-background-color,
98
106
  color-mix(in oklab, var(--_icon-button-tone) 8%, transparent)
99
107
  )
108
+ )
109
+ );
110
+ color: var(
111
+ --_icon-button-pressed-ink,
112
+ var(--icon-button-foreground-color, var(--_icon-button-ink-hover))
100
113
  );
101
- color: var(--icon-button-foreground-color, var(--_icon-button-ink-hover));
114
+ }
115
+
116
+ :host(:not(:disabled)) [part="button"]:active {
117
+ --_icon-button-pressed-fill: var(--icon-button-background-color-active);
118
+ --_icon-button-pressed-ink: var(--icon-button-foreground-color-active);
102
119
  }
103
120
 
104
121
  :host([shape="circle"]) [part="button"] {
@@ -123,55 +140,91 @@ outline-offset: var(--helix-size-focus-offset);
123
140
  }
124
141
 
125
142
  :host([emphasis="solid"]) [part="button"] {
126
- background-color: var(--icon-button-background-color, var(--_icon-button-fill));
143
+ background-color: var(
144
+ --_icon-button-pressed-fill,
145
+ var(--icon-button-background-color, var(--_icon-button-fill))
146
+ );
127
147
  border-color: transparent;
128
- color: var(--icon-button-foreground-color, var(--_icon-button-on-tone));
148
+ color: var(
149
+ --_icon-button-pressed-ink,
150
+ var(--icon-button-foreground-color, var(--_icon-button-on-tone))
151
+ );
129
152
  }
130
153
  :host(:not(:disabled)[emphasis="solid"]) [part="button"]:hover {
131
154
  background-color: var(
155
+ --_icon-button-pressed-fill,
156
+ var(
132
157
  --icon-button-background-color-hover,
133
158
  var(--icon-button-background-color, var(--_icon-button-fill-hover))
159
+ )
160
+ );
161
+ color: var(
162
+ --_icon-button-pressed-ink,
163
+ var(--icon-button-foreground-color, var(--_icon-button-on-tone))
134
164
  );
135
- color: var(--icon-button-foreground-color, var(--_icon-button-on-tone));
136
165
  }
137
166
 
138
167
  :host([emphasis="outlined"]) [part="button"] {
139
168
  background-color: var(
169
+ --_icon-button-pressed-fill,
170
+ var(
140
171
  --icon-button-background-color,
141
172
  color-mix(in oklab, var(--_icon-button-tone) 6%, transparent)
173
+ )
142
174
  );
143
175
  border-color: var(--_icon-button-edge);
144
- color: var(--icon-button-foreground-color, var(--_icon-button-tone));
176
+ color: var(
177
+ --_icon-button-pressed-ink,
178
+ var(--icon-button-foreground-color, var(--_icon-button-tone))
179
+ );
145
180
  }
146
181
  :host(:not(:disabled)[emphasis="outlined"]) [part="button"]:hover {
147
182
  background-color: var(
183
+ --_icon-button-pressed-fill,
184
+ var(
148
185
  --icon-button-background-color-hover,
149
186
  var(
150
187
  --icon-button-background-color,
151
188
  color-mix(in oklab, var(--_icon-button-tone) 12%, transparent)
152
189
  )
190
+ )
191
+ );
192
+ color: var(
193
+ --_icon-button-pressed-ink,
194
+ var(--icon-button-foreground-color, var(--_icon-button-tone))
153
195
  );
154
- color: var(--icon-button-foreground-color, var(--_icon-button-tone));
155
196
  }
156
197
 
157
198
  :host([emphasis="subtle"]) [part="button"] {
158
199
  background-color: var(
200
+ --_icon-button-pressed-fill,
201
+ var(
159
202
  --icon-button-background-color,
160
203
  color-mix(in oklab, var(--_icon-button-tone) 14%, transparent)
204
+ )
161
205
  );
162
206
  border-color: transparent;
163
- color: var(--icon-button-foreground-color, var(--_icon-button-tone));
207
+ color: var(
208
+ --_icon-button-pressed-ink,
209
+ var(--icon-button-foreground-color, var(--_icon-button-tone))
210
+ );
164
211
  }
165
212
 
166
213
  :host(:not(:disabled)[emphasis="subtle"]) [part="button"]:hover {
167
214
  background-color: var(
215
+ --_icon-button-pressed-fill,
216
+ var(
168
217
  --icon-button-background-color-hover,
169
218
  var(
170
219
  --icon-button-background-color,
171
220
  color-mix(in oklab, var(--_icon-button-tone) 22%, transparent)
172
221
  )
222
+ )
223
+ );
224
+ color: var(
225
+ --_icon-button-pressed-ink,
226
+ var(--icon-button-foreground-color, var(--_icon-button-tone))
173
227
  );
174
- color: var(--icon-button-foreground-color, var(--_icon-button-tone));
175
228
  }
176
229
 
177
230
  :host(:disabled) [part="button"] {
@@ -189,10 +242,12 @@ visibility: hidden;
189
242
  }
190
243
 
191
244
  :host(:state(pending)) [part="button"]::after {
192
- animation: helix-icon-button-turn var(--_icon-button-turn) linear infinite;
245
+ animation: helix-icon-button-turn var(--icon-button-spinner-duration, var(--_icon-button-turn))
246
+ linear infinite;
193
247
  block-size: var(--icon-button-spinner-size, 1.15em);
194
- border: var(--helix-border-thick) solid color-mix(in oklab, currentColor 30%, transparent);
195
- border-block-start-color: currentColor;
248
+ border: var(--helix-border-thick) solid
249
+ color-mix(in oklab, var(--icon-button-spinner-color, currentColor) 30%, transparent);
250
+ border-block-start-color: var(--icon-button-spinner-color, currentColor);
196
251
  border-radius: var(--helix-radii-full);
197
252
  box-sizing: border-box;
198
253
  content: "";
@@ -25,11 +25,15 @@ declare const HelixIconButton_base: (new (...args: any[]) => import("../../share
25
25
  * @csspart live - The live region that says `pending-label` when the button becomes pending under focus. It is clipped out of view and still read.
26
26
  *
27
27
  * @cssproperty --icon-button-background-color - Fill behind the button, in every state.
28
+ * @cssproperty --icon-button-background-color-active - Fill behind the button while it is pressed. Without it, a press shows the fill of the state under it.
28
29
  * @cssproperty --icon-button-background-color-hover - Fill behind the button under the pointer. Without it, `--icon-button-background-color` also applies on hover.
29
30
  * @cssproperty --icon-button-foreground-color - Icon color.
31
+ * @cssproperty --icon-button-foreground-color-active - Icon color while the button is pressed. Without it, a press shows the color of the state under it.
30
32
  * @cssproperty --icon-button-radius - Corner radius of the control, which a group flattens through `--button-radius-start` and `--button-radius-end`.
31
33
  * @cssproperty --icon-button-shadow - Shadow of a raised icon button.
32
34
  * @cssproperty --icon-button-size - Edge length of the control.
35
+ * @cssproperty --icon-button-spinner-color - Color of the ring a pending button turns. It follows the icon's color.
36
+ * @cssproperty --icon-button-spinner-duration - How long the ring takes to turn once.
33
37
  * @cssproperty --icon-button-spinner-size - Size of the ring a pending button turns.
34
38
  *
35
39
  * @cssstate pending - The button is pending: `pending` is set. A ring turns over its hidden icon.
@@ -39,6 +39,33 @@ padding-inline: var(--_kbd-inset);
39
39
  padding-block-start: var(--helix-border-thin);
40
40
  }
41
41
 
42
+ :host([caps]) [part="kbd"] {
43
+ background-color: transparent;
44
+ border: 0;
45
+ box-shadow: none;
46
+ gap: var(--kbd-gap, var(--helix-space-2xs));
47
+ min-inline-size: 0;
48
+ padding: 0;
49
+ }
50
+
51
+ :host([caps]) [part="key"] {
52
+ align-items: center;
53
+ background-color: var(--kbd-background-color, var(--helix-color-surface-sunken));
54
+ block-size: var(--_kbd-height);
55
+ border: var(--helix-border-thin) solid var(--kbd-border-color, var(--helix-color-border));
56
+ border-radius: var(--helix-radii-sm);
57
+ box-shadow: inset 0 -1px 0 0 var(--kbd-border-color, var(--helix-color-border));
58
+ display: inline-flex;
59
+ justify-content: center;
60
+ min-inline-size: var(--_kbd-height);
61
+ padding-block-start: var(--helix-border-thin);
62
+ padding-inline: var(--_kbd-inset);
63
+ }
64
+
65
+ [part="separator"] {
66
+ color: var(--kbd-separator-color, var(--helix-color-foreground-muted));
67
+ }
68
+
42
69
  @media print {
43
70
  :host {
44
71
  box-shadow: none;
@@ -18,6 +18,8 @@ import type { CSSResultGroup } from 'lit';
18
18
  *
19
19
  * @cssproperty --kbd-background-color - The fill of the key.
20
20
  * @cssproperty --kbd-border-color - The color of the key's border and its bottom edge.
21
+ * @cssproperty --kbd-gap - The space between two keys of a chord under `caps`.
22
+ * @cssproperty --kbd-separator-color - The color of the `+` between two keys of a chord under `caps`.
21
23
  */
22
24
  export declare class HelixKbd extends HelixHeadlessKbd {
23
25
  static styles: CSSResultGroup;
@@ -20,6 +20,10 @@ min-inline-size: 0;
20
20
  display: none;
21
21
  }
22
22
 
23
+ [part="item"] {
24
+ transform: translate(var(--lightbox-pan-x), var(--lightbox-pan-y)) scale(var(--lightbox-zoom));
25
+ }
26
+
23
27
  [part="item"] ::slotted(*) {
24
28
  max-block-size: 100%;
25
29
  max-inline-size: 100%;
@@ -114,6 +114,27 @@ block-size: var(--helix-size-icon);
114
114
  inline-size: var(--helix-size-icon);
115
115
  }
116
116
 
117
+ [part="previous"] ::slotted(*),
118
+ [part="next"] ::slotted(*),
119
+ [part="dismiss"] ::slotted(*) {
120
+ --icon-size: var(--helix-size-icon);
121
+
122
+ block-size: var(--helix-size-icon);
123
+ inline-size: var(--helix-size-icon);
124
+ }
125
+
126
+ :host(:state(zoomable)) [part="dialog"] {
127
+ touch-action: none;
128
+ }
129
+
130
+ :host(:state(zoomable)) [part="viewport"] {
131
+ cursor: zoom-in;
132
+ }
133
+
134
+ :host(:state(zoomed)) [part="viewport"] {
135
+ cursor: grab;
136
+ }
137
+
117
138
  [part="previous"]:hover,
118
139
  [part="next"]:hover,
119
140
  [part="dismiss"]:hover {
@@ -133,6 +154,25 @@ cursor: default;
133
154
  opacity: 0.4;
134
155
  }
135
156
 
157
+ [part="counter"] {
158
+ background-color: var(--helix-color-surface-overlay);
159
+ border-radius: var(--helix-radii-full);
160
+ box-shadow: var(--helix-shadow-md);
161
+ color: var(--lightbox-foreground, var(--helix-color-foreground));
162
+ font-family: var(--helix-font-sans);
163
+ font-size: var(--helix-text-sm);
164
+ font-variant-numeric: tabular-nums;
165
+ inset-block-start: var(--lightbox-padding, var(--helix-space-md));
166
+ inset-inline-start: var(--lightbox-padding, var(--helix-space-md));
167
+ line-height: var(--helix-leading-tight);
168
+ padding: var(--helix-space-2xs) var(--helix-space-sm);
169
+ position: absolute;
170
+ transition:
171
+ opacity var(--helix-duration-fast) var(--helix-easing-standard),
172
+ visibility var(--helix-duration-fast) var(--helix-easing-standard);
173
+ }
174
+
175
+ :host(:state(idle)) [part="counter"],
136
176
  :host(:state(idle)) [part="previous"],
137
177
  :host(:state(idle)) [part="next"],
138
178
  :host(:state(idle)) [part="dismiss"] {
@@ -141,6 +181,7 @@ visibility: hidden;
141
181
  }
142
182
 
143
183
  @media (prefers-reduced-motion: reduce) {
184
+ [part="counter"],
144
185
  [part="previous"],
145
186
  [part="next"],
146
187
  [part="dismiss"] {
@@ -61,6 +61,22 @@ stroke: var(--chart-series);
61
61
  color: var(--chart-series);
62
62
  }
63
63
 
64
+ [part~="marker"] {
65
+ background-color: var(--chart-series);
66
+ block-size: var(--line-chart-marker-size, 6px);
67
+ border-radius: var(--helix-radii-full);
68
+ box-shadow: 0 0 0 var(--helix-border-thin)
69
+ var(--line-chart-marker-ring-color, var(--helix-color-background));
70
+ inline-size: var(--line-chart-marker-size, 6px);
71
+ pointer-events: none;
72
+ position: absolute;
73
+ translate: -50% -50%;
74
+ }
75
+
76
+ :host(:dir(rtl)) [part~="marker"] {
77
+ translate: 50% -50%;
78
+ }
79
+
64
80
  :host([terminus="ring"]) [part="svg"] {
65
81
  mask-composite: intersect;
66
82
  mask-image: var(--_line-chart-holes);
@@ -38,6 +38,8 @@ import '../../tooltip/index.js';
38
38
  * @cssproperty --line-chart-block-size - Height of the drawing.
39
39
  * @cssproperty --line-chart-gap - Space between the drawing and its labels.
40
40
  * @cssproperty --line-chart-gridline-color - Color of the rules drawn across the plot under `gridlines`.
41
+ * @cssproperty --line-chart-marker-ring-color - Color of the ring round the mark on a reading, which matches the page. Change it when the chart sits on another surface.
42
+ * @cssproperty --line-chart-marker-size - Size of the mark on a reading, under `markers`.
41
43
  * @cssproperty --line-chart-width - Thickness of a line. Overrides `--chart-stroke`.
42
44
  */
43
45
  export declare class HelixLineChart extends HelixHeadlessLineChart {
@@ -48,6 +48,15 @@ cursor: not-allowed;
48
48
  --_collection-inset-inline: var(--helix-space-xs);
49
49
  }
50
50
 
51
+ [part="error"] {
52
+ color: var(--listbox-error-color, var(--helix-color-danger));
53
+ font-family: var(--helix-font-sans);
54
+ font-size: var(--helix-text-sm);
55
+ margin: var(--helix-space-none);
56
+ padding: var(--helix-space-xs);
57
+ text-align: center;
58
+ }
59
+
51
60
  [part="filter-icon"] {
52
61
  align-items: center;
53
62
  color: var(--helix-color-foreground-subtle);
@@ -19,6 +19,7 @@ import type { CSSResultGroup } from 'lit';
19
19
  *
20
20
  * @cssproperty --listbox-background-color - The panel's fill. Set it to `transparent` when the list is already inside a panel.
21
21
  * @cssproperty --listbox-border - The panel's border, as a shorthand. Set it to `none` when the list is already inside a panel.
22
+ * @cssproperty --listbox-error-color - The color of the line shown while `load-error` is set.
22
23
  * @cssproperty --listbox-max-block-size - Maximum height of the list before it scrolls.
23
24
  */
24
25
  export declare class HelixListbox extends HelixHeadlessListbox {
@@ -23,7 +23,7 @@ vertical-align: middle;
23
23
  }
24
24
 
25
25
  [part="svg"] {
26
- animation: helix-loader-turn var(--_loader-turn) linear infinite;
26
+ animation: helix-loader-turn var(--loader-duration, var(--_loader-turn)) linear infinite;
27
27
  grid-area: 1 / 1;
28
28
  block-size: var(--loader-size, var(--_loader-size));
29
29
  inline-size: var(--loader-size, var(--_loader-size));
@@ -33,7 +33,7 @@ inline-size: var(--loader-size, var(--_loader-size));
33
33
  animation: helix-loader-breathe var(--_loader-breathe) ease-in-out infinite;
34
34
  opacity: 0.18;
35
35
  stroke: var(--loader-track-color, currentColor);
36
- stroke-width: var(--_loader-stroke);
36
+ stroke-width: var(--loader-track-width, var(--_loader-stroke));
37
37
  }
38
38
 
39
39
  [part="mark"] {
@@ -68,7 +68,7 @@ scale: 1;
68
68
  stroke: var(--loader-color, currentColor);
69
69
  stroke-dasharray: 50, 100;
70
70
  stroke-linecap: round;
71
- stroke-width: var(--_loader-stroke);
71
+ stroke-width: var(--loader-track-width, var(--_loader-stroke));
72
72
  }
73
73
 
74
74
  @keyframes helix-loader-turn {
@@ -20,8 +20,10 @@ import type { CSSResultGroup } from 'lit';
20
20
  * @documentation https://fusion.dev/helix/components/loader
21
21
  *
22
22
  * @cssproperty --loader-color - Color of the moving arc.
23
+ * @cssproperty --loader-duration - How long one turn of the arc takes, 0.8s by default. With motion reduced the turn slows to a crawl whatever this says.
23
24
  * @cssproperty --loader-size - Diameter. Defaults to the size token that `size` picks, which is 1.5rem at the default density.
24
25
  * @cssproperty --loader-track-color - Color of the circle behind the arc.
26
+ * @cssproperty --loader-track-width - Width of the arc and the circle behind it, in units of a 24-unit drawing. Defaults to 2.
25
27
  */
26
28
  export declare class HelixLoader extends HelixHeadlessLoader {
27
29
  /**
@@ -8,23 +8,23 @@ all: unset;
8
8
  box-sizing: border-box;
9
9
 
10
10
  align-items: center;
11
- border-radius: var(--helix-radii-sm);
12
- color: var(--helix-color-foreground-muted);
11
+ border-radius: var(--megamenu-trigger-radius, var(--helix-radii-sm));
12
+ color: var(--megamenu-trigger-color, var(--helix-color-foreground-muted));
13
13
  cursor: pointer;
14
14
  display: inline-flex;
15
15
  font-family: var(--helix-font-sans);
16
- font-size: var(--helix-text-sm);
17
- font-weight: var(--helix-weight-medium);
16
+ font-size: var(--megamenu-trigger-font-size, var(--helix-text-sm));
17
+ font-weight: var(--megamenu-trigger-font-weight, var(--helix-weight-medium));
18
18
  gap: var(--helix-space-2xs);
19
19
  min-block-size: var(--helix-size-control-tight);
20
- padding-inline: var(--helix-space-xs);
20
+ padding-inline: var(--megamenu-trigger-padding-inline, var(--helix-space-xs));
21
21
  transition:
22
22
  background-color var(--helix-duration-fast) var(--helix-easing-standard),
23
23
  color var(--helix-duration-fast) var(--helix-easing-standard);
24
24
  }
25
25
 
26
26
  [part="trigger"]:hover {
27
- color: var(--helix-color-foreground);
27
+ color: var(--megamenu-trigger-hover-color, var(--helix-color-foreground));
28
28
  }
29
29
 
30
30
  [part="trigger"]:focus-visible {
@@ -33,8 +33,11 @@ outline-offset: var(--helix-size-focus-offset);
33
33
  }
34
34
 
35
35
  [part="trigger"][aria-expanded="true"] {
36
- background-color: color-mix(in oklab, var(--helix-color-foreground) 8%, transparent);
37
- color: var(--helix-color-foreground);
36
+ background-color: var(
37
+ --megamenu-trigger-open-background-color,
38
+ color-mix(in oklab, var(--helix-color-foreground) 8%, transparent)
39
+ );
40
+ color: var(--megamenu-trigger-open-color, var(--helix-color-foreground));
38
41
  }
39
42
 
40
43
  [part="surface"] {
@@ -52,7 +55,7 @@ box-sizing: border-box;
52
55
  clip-path: inset(0 calc(var(--helix-space-xl) * -1) 100% calc(var(--helix-space-xl) * -1));
53
56
 
54
57
  display: grid;
55
- gap: var(--helix-space-xl);
58
+ gap: var(--megamenu-gap, var(--helix-space-xl));
56
59
  grid-auto-columns: minmax(var(--megamenu-column-size, 15rem), 1fr);
57
60
  grid-auto-flow: column;
58
61
 
@@ -60,12 +63,12 @@ inline-size: max-content;
60
63
  margin: var(--helix-space-none);
61
64
 
62
65
  max-inline-size: min(var(--megamenu-size, 52rem), calc(100% - var(--helix-space-xl) * 2));
63
- padding: var(--helix-space-md);
66
+ padding: var(--megamenu-padding, var(--helix-space-md));
64
67
 
65
68
  transition:
66
- clip-path var(--helix-duration-slow) var(--helix-easing-decelerate),
67
- display var(--helix-duration-slow) allow-discrete,
68
- overlay var(--helix-duration-slow) allow-discrete;
69
+ clip-path var(--megamenu-duration, var(--helix-duration-slow)) var(--helix-easing-decelerate),
70
+ display var(--megamenu-duration, var(--helix-duration-slow)) allow-discrete,
71
+ overlay var(--megamenu-duration, var(--helix-duration-slow)) allow-discrete;
69
72
  }
70
73
 
71
74
  [part="surface"]:popover-open {
@@ -20,10 +20,21 @@ import type { CSSResultGroup } from 'lit';
20
20
  * `--helix-border-floating`, which is `0` unless a theme changes it, so the panel stands out
21
21
  * by its shadow.
22
22
  * @cssproperty --megamenu-column-size - The minimum width of a column before the grid wraps.
23
+ * @cssproperty --megamenu-duration - How long the panel takes to open and close.
23
24
  * @cssproperty --megamenu-full-size - The maximum width of the band's contents, which are centered in it.
25
+ * @cssproperty --megamenu-gap - The space between the panel's columns.
26
+ * @cssproperty --megamenu-padding - The space inside the card's edge.
24
27
  * @cssproperty --megamenu-shadow - The shadow under the panel. Follows `--helix-shadow-floating`,
25
28
  * so the panel has a shadow by default, because it sits over content you cannot predict.
26
29
  * @cssproperty --megamenu-size - The maximum width of the panel.
30
+ * @cssproperty --megamenu-trigger-color - The trigger's text color at rest.
31
+ * @cssproperty --megamenu-trigger-font-size - The size of the trigger's text.
32
+ * @cssproperty --megamenu-trigger-font-weight - The weight of the trigger's text.
33
+ * @cssproperty --megamenu-trigger-hover-color - The trigger's text color under the pointer.
34
+ * @cssproperty --megamenu-trigger-open-background-color - The trigger's fill while its panel is open.
35
+ * @cssproperty --megamenu-trigger-open-color - The trigger's text color while its panel is open.
36
+ * @cssproperty --megamenu-trigger-padding-inline - The space either side of the trigger's text.
37
+ * @cssproperty --megamenu-trigger-radius - The trigger's corners.
27
38
  */
28
39
  export declare class HelixMegamenu extends HelixHeadlessMegamenu {
29
40
  static styles: CSSResultGroup;
@@ -73,6 +73,20 @@ grid-column: 2;
73
73
  min-inline-size: 0;
74
74
  }
75
75
 
76
+ slot[name="description"] {
77
+ color: var(--menu-item-description-color, var(--helix-color-foreground-subtle));
78
+ display: block;
79
+ font-weight: var(--helix-weight-regular);
80
+ grid-column: 2;
81
+ grid-row: 2;
82
+ min-inline-size: 0;
83
+ padding-block-end: var(--helix-space-2xs);
84
+ }
85
+
86
+ slot[name="description"][data-empty] {
87
+ display: none;
88
+ }
89
+
76
90
  [part="end"] {
77
91
  align-items: center;
78
92
  color: var(--menu-item-detail-color, var(--helix-color-foreground-subtle));
@@ -86,25 +100,32 @@ padding-inline-start: var(--helix-space-sm);
86
100
  display: none;
87
101
  }
88
102
 
89
- [part="mark"] {
103
+ [part="mark"],
104
+ slot[name="check"]::slotted(*),
105
+ slot[name="chevron"]::slotted(*) {
90
106
  grid-column: 4;
107
+ grid-row: 1;
91
108
  }
92
109
 
93
110
  [part="start"][data-empty] {
94
111
  display: none;
95
112
  }
96
113
 
97
- [part="mark"] {
114
+ [part="mark"],
115
+ slot[name="check"]::slotted(*),
116
+ slot[name="chevron"]::slotted(*) {
98
117
  block-size: var(--helix-size-icon);
99
118
  inline-size: var(--helix-size-icon);
100
119
  justify-self: end;
101
120
  }
102
121
 
103
- svg[part="mark"] {
122
+ svg[part="mark"],
123
+ slot[name="chevron"]::slotted(*) {
104
124
  color: var(--helix-color-foreground-subtle);
105
125
  }
106
126
 
107
- :host(:state(checked)) svg[part="mark"] {
127
+ :host(:state(checked)) svg[part="mark"],
128
+ slot[name="check"]::slotted(*) {
108
129
  color: var(--helix-color-foreground);
109
130
  }
110
131
 
@@ -17,6 +17,7 @@ import '../../kbd/index.js';
17
17
  * @aliases Menu option, Menu row
18
18
  * @documentation https://fusion.dev/helix/components/menu
19
19
  *
20
+ * @cssproperty --menu-item-description-color - Color of the line under the label.
20
21
  * @cssproperty --menu-item-detail-color - Color of the shortcut and the words in the `end` slot.
21
22
  * @cssproperty --menu-item-end - Width of the trailing column, including the gap before it, which holds a check mark or a submenu caret.
22
23
  * @cssproperty --menu-item-hover-color - Fill under the pointer.
@@ -60,8 +60,10 @@ inline-size: 100%;
60
60
  scale: var(--meter-fraction, 0) 1;
61
61
  transform-origin: left center;
62
62
  transition:
63
- background-color var(--helix-duration-normal) var(--helix-easing-standard),
64
- scale var(--helix-duration-normal) var(--helix-easing-decelerate);
63
+ background-color var(--meter-transition-duration, var(--helix-duration-normal))
64
+ var(--helix-easing-standard),
65
+ scale var(--meter-transition-duration, var(--helix-duration-normal))
66
+ var(--helix-easing-decelerate);
65
67
  }
66
68
 
67
69
  :host(:dir(rtl)) [part~="indicator"] {
@@ -158,7 +160,8 @@ scale: none;
158
160
  stroke: var(--_meter-hue);
159
161
  stroke-dasharray: var(--meter-along) 100;
160
162
  stroke-linecap: round;
161
- transition: stroke-dasharray var(--helix-duration-normal) var(--helix-easing-standard);
163
+ transition: stroke-dasharray var(--meter-transition-duration, var(--helix-duration-normal))
164
+ var(--helix-easing-standard);
162
165
  }
163
166
 
164
167
  :host([shape="arc"]) [part="tick"],
@@ -50,6 +50,7 @@ import type { CSSResultGroup } from 'lit';
50
50
  * @cssproperty --meter-size - The thickness of the bar.
51
51
  * @cssproperty --meter-tick-color - The color of the mark at each threshold.
52
52
  * @cssproperty --meter-track-color - The color of the groove behind the fill.
53
+ * @cssproperty --meter-transition-duration - How long the fill takes to move to a new reading, and to change its color. `0s` moves it at once.
53
54
  */
54
55
  export declare class HelixMeter extends HelixHeadlessMeter {
55
56
  /**
@@ -22,6 +22,13 @@ import type { CSSResultGroup } from 'lit';
22
22
  * raised on the bar.
23
23
  * @cssproperty --navigation-item-color - Text color of a destination that is not the current one. Read by the page's stylesheet, which styles the links you slot.
24
24
  * @cssproperty --navigation-item-current-color - Text color of the current destination, the one marked `aria-current="page"`.
25
+ * @cssproperty --navigation-item-current-font-weight - Weight of the current destination's text.
26
+ * @cssproperty --navigation-item-font-size - Size of a destination's text.
27
+ * @cssproperty --navigation-item-font-weight - Weight of a destination's text.
28
+ * @cssproperty --navigation-item-hover-background-color - Background of a destination under the pointer.
29
+ * @cssproperty --navigation-item-hover-color - Text color of a destination under the pointer.
30
+ * @cssproperty --navigation-item-padding-inline - Space either side of a destination's text.
31
+ * @cssproperty --navigation-item-radius - Corner radius of a destination, which its hover background follows.
25
32
  */
26
33
  export declare class HelixNavigation extends HelixHeadlessNavigation {
27
34
  static styles: CSSResultGroup;
@@ -88,6 +88,12 @@ transition: color var(--helix-duration-fast) var(--helix-easing-standard);
88
88
  color: var(--helix-color-foreground);
89
89
  }
90
90
 
91
+ [part="more"][aria-disabled="true"],
92
+ [part="more"][aria-disabled="true"]:hover {
93
+ color: var(--helix-color-foreground-subtle);
94
+ cursor: default;
95
+ }
96
+
91
97
  [part="more"]:focus-visible {
92
98
  outline: var(--helix-size-focus-ring) solid var(--helix-color-focus-ring);
93
99
  outline-offset: calc(var(--helix-size-focus-offset) * -1);