@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
@@ -7,10 +7,11 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
7
7
  import { customElement } from '@fusion.dev/helix-core';
8
8
  import { HelixHeadlessChatMessage } from '@fusion.dev/helix-headless/chat';
9
9
  import { property } from 'lit/decorators.js';
10
+ import { styles as typingStyles } from '../typing.css.js';
10
11
  import { styles } from './chat-message.css.js';
11
12
  let HelixChatMessage = class HelixChatMessage extends HelixHeadlessChatMessage {
12
13
  static { this.tier = 'helix-'; }
13
- static { this.styles = styles; }
14
+ static { this.styles = [typingStyles, styles]; }
14
15
  };
15
16
  __decorate([
16
17
  property({ reflect: true })
@@ -109,6 +109,13 @@ padding-block-start: var(--helix-space-xs);
109
109
  padding-inline: var(--chat-padding-inline, var(--helix-space-md));
110
110
  }
111
111
 
112
+ [part="typing"] {
113
+ align-items: center;
114
+ color: var(--chat-typing-color, var(--helix-color-foreground-muted));
115
+ display: inline-flex;
116
+ gap: var(--chat-typing-gap, var(--helix-space-xs));
117
+ }
118
+
112
119
  [part="composer"] {
113
120
  padding-block: var(--helix-space-sm);
114
121
  padding-inline: var(--chat-padding-inline, var(--helix-space-md));
@@ -36,6 +36,8 @@ import '../message/chat-message.js';
36
36
  * @cssproperty --chat-resume-border-width - Width of the edge around the resume control, which sits over content.
37
37
  * @cssproperty --chat-resume-shadow - Shadow under the resume control, which floats over the transcript.
38
38
  * @cssproperty --chat-rule - The hairline under the header.
39
+ * @cssproperty --chat-typing-color - The color of the dots and the words that say who is typing.
40
+ * @cssproperty --chat-typing-gap - The space between the dots and the words that say who is typing.
39
41
  */
40
42
  export declare class HelixChat extends HelixHeadlessChat {
41
43
  static tier: string;
@@ -8,12 +8,13 @@ import { customElement } from '@fusion.dev/helix-core';
8
8
  import { HelixHeadlessChat } from '@fusion.dev/helix-headless/chat';
9
9
  import { styles as collectionStateStyles } from '../../shared/collection/state.css.js';
10
10
  import { styles as liveStyles } from '../../shared/live/live.css.js';
11
+ import { styles as typingStyles } from '../typing.css.js';
11
12
  import { styles } from './chat-root.css.js';
12
13
  import '../composer/chat-composer.js';
13
14
  import '../message/chat-message.js';
14
15
  let HelixChat = class HelixChat extends HelixHeadlessChat {
15
16
  static { this.tier = 'helix-'; }
16
- static { this.styles = [liveStyles, collectionStateStyles, styles]; }
17
+ static { this.styles = [liveStyles, collectionStateStyles, typingStyles, styles]; }
17
18
  };
18
19
  HelixChat = __decorate([
19
20
  customElement('helix-chat')
@@ -0,0 +1 @@
1
+ export declare const styles: import("lit").CSSResult;
@@ -0,0 +1,62 @@
1
+ import { createSheet } from '@fusion.dev/helix-core';
2
+ export const styles = createSheet(`[part="indicator"] {
3
+
4
+ --_chat-typing-cycle: 1.2s;
5
+
6
+ animation: helix-chat-typing var(--_chat-typing-cycle) infinite ease-in-out;
7
+ background-image:
8
+ radial-gradient(circle closest-side, currentColor 90%, transparent),
9
+ radial-gradient(circle closest-side, currentColor 90%, transparent),
10
+ radial-gradient(circle closest-side, currentColor 90%, transparent);
11
+ background-position:
12
+ 0% 50%,
13
+ 50% 50%,
14
+ 100% 50%;
15
+ background-repeat: no-repeat;
16
+ background-size:
17
+ 20% 30%,
18
+ 20% 30%,
19
+ 20% 30%;
20
+ block-size: 1lh;
21
+ display: block;
22
+ inline-size: 1.75em;
23
+ opacity: 0.7;
24
+ }
25
+
26
+ @keyframes helix-chat-typing {
27
+ 0%,
28
+ 60%,
29
+ 100% {
30
+ background-position:
31
+ 0% 50%,
32
+ 50% 50%,
33
+ 100% 50%;
34
+ }
35
+
36
+ 20% {
37
+ background-position:
38
+ 0% 10%,
39
+ 50% 50%,
40
+ 100% 50%;
41
+ }
42
+
43
+ 33% {
44
+ background-position:
45
+ 0% 50%,
46
+ 50% 10%,
47
+ 100% 50%;
48
+ }
49
+
50
+ 46% {
51
+ background-position:
52
+ 0% 50%,
53
+ 50% 50%,
54
+ 100% 10%;
55
+ }
56
+ }
57
+
58
+ @media (prefers-reduced-motion: reduce) {
59
+ [part="indicator"] {
60
+ animation: none;
61
+ }
62
+ }`);
@@ -86,6 +86,21 @@ scale: 1;
86
86
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.5' stroke-linecap='round'%3E%3Cpath d='M7 12h10'/%3E%3C/svg%3E");
87
87
  }
88
88
 
89
+ :host(:state(has-check)) [part~="mark"]:not([part~="mark-dash"]),
90
+ :host(:state(has-dash)) [part~="mark-dash"] {
91
+ background-color: transparent;
92
+ color: var(--checkbox-mark-color, var(--helix-color-foreground));
93
+ display: grid;
94
+ mask-image: none;
95
+ place-items: center;
96
+ }
97
+
98
+ slot[name="check"]::slotted(*),
99
+ slot[name="dash"]::slotted(*) {
100
+ block-size: var(--checkbox-icon-size, 100%);
101
+ inline-size: var(--checkbox-icon-size, 100%);
102
+ }
103
+
89
104
  [part="control"]:focus-visible {
90
105
  outline: var(--helix-size-focus-ring) solid var(--helix-color-focus-ring);
91
106
  outline-offset: var(--helix-size-focus-offset);
@@ -24,7 +24,8 @@ import type { CSSResultGroup } from 'lit';
24
24
  * @cssproperty --checkbox-card-border-color - The border color of the card.
25
25
  * @cssproperty --checkbox-card-padding - The padding of the card.
26
26
  * @cssproperty --checkbox-checked-color - The border color of a checked box when `--checkbox-border-color` is not set.
27
- * @cssproperty --checkbox-mark-color - The color of the check mark and the dash.
27
+ * @cssproperty --checkbox-icon-size - The width and height of an icon slotted into `check` or `dash`. It fills the box by default.
28
+ * @cssproperty --checkbox-mark-color - The color of the check mark and the dash, and of an icon slotted into `check` or `dash`.
28
29
  * @cssproperty --checkbox-size - The width and height of the box.
29
30
  */
30
31
  export declare class HelixCheckbox extends HelixHeadlessCheckbox {
@@ -9,13 +9,13 @@ background-color: var(
9
9
  --code-background-color,
10
10
  color-mix(in oklab, var(--helix-color-foreground) 6%, transparent)
11
11
  );
12
- border-radius: var(--helix-radii-sm);
12
+ border-radius: var(--code-radius, var(--helix-radii-sm));
13
13
 
14
14
  color: var(
15
15
  --code-foreground-color,
16
16
  color-mix(in oklab, var(--helix-color-foreground) 30%, var(--helix-color-foreground-muted))
17
17
  );
18
- font-family: var(--helix-font-mono);
18
+ font-family: var(--code-font-family, var(--helix-font-mono));
19
19
 
20
20
  font-size: var(--code-size, calc(var(--helix-text-sm) / var(--helix-text-md) * 1em));
21
21
  padding-block: var(--helix-space-none);
@@ -15,10 +15,12 @@ import type { CSSResultGroup } from 'lit';
15
15
  *
16
16
  * @cssproperty --code-background-color - Fill behind the fragment. Defaults to the
17
17
  * foreground color at 6%, which looks the same on a light page and a dark one.
18
+ * @cssproperty --code-font-family - The fragment's typeface. Defaults to the mono face.
18
19
  * @cssproperty --code-foreground-color - Color of the fragment's text. Defaults to the
19
20
  * foreground color mixed toward `foreground-muted`.
20
21
  * @cssproperty --code-padding - Space either side of the fragment. Defaults to half of
21
22
  * `space-2xs`, so a bracket next to the fragment sits close to it.
23
+ * @cssproperty --code-radius - Corner radius of the wash. Defaults to `radii-sm`.
22
24
  * @cssproperty --code-size - The fragment's size. Defaults to `text-sm`.
23
25
  */
24
26
  export declare class HelixCode extends HelixHeadlessCode {
@@ -106,6 +106,30 @@ max-block-size: var(--code-block-max-block-size, none);
106
106
  overflow-x: auto;
107
107
  }
108
108
 
109
+ :host(:state(expanded)) [part="code"] {
110
+ max-block-size: none;
111
+ }
112
+
113
+ [part="expand"] {
114
+ all: unset;
115
+
116
+ box-sizing: border-box;
117
+ border-radius: var(--helix-radii-sm);
118
+ color: var(--code-block-expand-color, var(--helix-color-foreground-muted));
119
+ cursor: pointer;
120
+ font-size: var(--helix-text-sm);
121
+ padding: var(--helix-space-xs);
122
+ }
123
+
124
+ [part="expand"]:hover {
125
+ color: var(--helix-color-foreground);
126
+ }
127
+
128
+ [part="expand"]:focus-visible {
129
+ outline: var(--helix-size-focus-ring) solid var(--helix-color-focus-ring);
130
+ outline-offset: var(--helix-size-focus-offset);
131
+ }
132
+
109
133
  :host([wrap]:not([diff], [line-numbers])) [part="code"] {
110
134
  overflow-wrap: anywhere;
111
135
  white-space: pre-wrap;
@@ -28,9 +28,10 @@ import '../../copy-button/index.js';
28
28
  * @cssproperty --code-block-backdrop - A backdrop filter for the block and its header, for a translucent background.
29
29
  * @cssproperty --code-block-background-color - The background behind the code. Set it for a block that sits on a surface other than the page background.
30
30
  * @cssproperty --code-block-border-color - The line around the block and its header.
31
+ * @cssproperty --code-block-expand-color - The color of the button under a capped block that shows every line.
31
32
  * @cssproperty --code-block-gutter-color - The color of the line numbers.
32
33
  * @cssproperty --code-block-header-background-color - The background behind the name. The default is `surface-raised`.
33
- * @cssproperty --code-block-max-block-size - The tallest the code grows before it scrolls. The default is no limit.
34
+ * @cssproperty --code-block-max-block-size - The tallest the code grows before it scrolls, or until `expandable`'s button shows every line. The default is no limit.
34
35
  * @cssproperty --code-block-radius - The corner radius of the header's top and the block's bottom, which form one shape.
35
36
  */
36
37
  export declare class HelixCodeBlock extends HelixHeadlessCodeBlock {
@@ -71,6 +71,16 @@ display: block;
71
71
  padding: var(--helix-space-sm);
72
72
  }
73
73
 
74
+ ::slotted([slot="panel-header"]) {
75
+ display: block;
76
+ margin: var(--helix-space-sm) var(--helix-space-sm) var(--helix-space-none);
77
+ }
78
+
79
+ ::slotted([slot="panel-footer"]) {
80
+ display: block;
81
+ margin: var(--helix-space-none) var(--helix-space-sm) var(--helix-space-sm);
82
+ }
83
+
74
84
  @media (prefers-reduced-motion: reduce) {
75
85
  [part="field"] {
76
86
  transition: none;
@@ -337,6 +337,14 @@ inline-size: var(--color-picker-swatch-size, var(--helix-size-icon-loose));
337
337
  padding: var(--helix-space-none);
338
338
  }
339
339
 
340
+ [part="feedback"] {
341
+ color: var(--color-picker-feedback-color, var(--helix-color-danger));
342
+ font-family: var(--helix-font-sans);
343
+ font-size: var(--helix-text-sm);
344
+ margin: var(--helix-space-sm) var(--helix-space-none) var(--helix-space-none);
345
+ padding-inline: var(--color-picker-padding, var(--helix-space-none));
346
+ }
347
+
340
348
  @media (prefers-reduced-motion: reduce) {
341
349
 
342
350
  [part="sample"] {
@@ -34,6 +34,7 @@ import '../../slider/index.js';
34
34
  * @aliases Color, ColorArea, Swatch picker
35
35
  * @documentation https://fusion.dev/helix/components/color-picker
36
36
  *
37
+ * @cssproperty --color-picker-feedback-color - The color of the message under the picker, while `feedback` is set.
37
38
  * @cssproperty --color-picker-field-label-color - The color of the names above the channel number fields, in `channel-fields`.
38
39
  * @cssproperty --color-picker-fields-gap - The space between the channel number fields, in `channel-fields`.
39
40
  * @cssproperty --color-picker-grid-radius - The corner radius of the square.
@@ -1,5 +1,14 @@
1
1
  import { createSheet } from '@fusion.dev/helix-core';
2
- export const styles = createSheet(`[part="button"] {
2
+ export const styles = createSheet(`:host {
3
+ --_icon-button-ink: var(--copy-button-color, var(--helix-color-foreground-muted));
4
+ --_icon-button-ink-hover: var(
5
+ --copy-button-color-hover,
6
+ var(--copy-button-color, var(--helix-color-foreground))
7
+ );
8
+ --_icon-button-size: var(--copy-button-size, var(--icon-button-size, var(--helix-size-control)));
9
+ }
10
+
11
+ [part="button"] {
3
12
  display: inline-grid;
4
13
  place-items: center;
5
14
  }
@@ -13,21 +22,21 @@ display: none;
13
22
  }
14
23
 
15
24
  [part="button"][data-copied] {
16
- color: var(--helix-color-success);
25
+ color: var(--copy-button-success-color, var(--helix-color-success));
17
26
  }
18
27
 
19
28
  :host(:not(:disabled)) [part="button"][data-copied]:hover {
20
- color: var(--helix-color-success);
29
+ color: var(--copy-button-success-color, var(--helix-color-success));
21
30
  }
22
31
 
23
32
  [part="button"][data-failed],
24
33
  :host(:not(:disabled)) [part="button"][data-failed]:hover {
25
- color: var(--helix-color-danger);
34
+ color: var(--copy-button-error-color, var(--helix-color-danger));
26
35
  }
27
36
 
28
37
  slot > svg {
29
- block-size: var(--helix-size-icon-tight);
30
- inline-size: var(--helix-size-icon-tight);
38
+ block-size: var(--copy-button-icon-size, var(--helix-size-icon-tight));
39
+ inline-size: var(--copy-button-icon-size, var(--helix-size-icon-tight));
31
40
  }
32
41
 
33
42
  @media print {
@@ -14,6 +14,13 @@ declare const HelixCopyButton_base: (new (...args: any[]) => import("../../share
14
14
  * @status stable
15
15
  * @category actions
16
16
  * @documentation https://fusion.dev/helix/components/copy-button
17
+ *
18
+ * @cssproperty --copy-button-color - The icon's color at rest. A `tone` keeps its own.
19
+ * @cssproperty --copy-button-color-hover - The icon's color under the pointer. Without it, `--copy-button-color` also applies on hover.
20
+ * @cssproperty --copy-button-error-color - The cross's color after a copy that put nothing on the clipboard.
21
+ * @cssproperty --copy-button-icon-size - The width and height of the clipboard, check, and cross icons drawn by default.
22
+ * @cssproperty --copy-button-size - Edge length of the button. Without it, `--icon-button-size` applies.
23
+ * @cssproperty --copy-button-success-color - The check mark's color after a copy.
17
24
  */
18
25
  export declare class HelixCopyButton extends HelixCopyButton_base {
19
26
  static tier: string;
@@ -144,7 +144,10 @@ grid-column: 1 / -1;
144
144
  }
145
145
 
146
146
  :host([child-field]) [part~="cell-header"] {
147
- --_data-table-gutter: calc(var(--helix-size-icon-tight) + var(--helix-space-2xs));
147
+ --_data-table-gutter: calc(
148
+ var(--data-table-toggle-size, var(--helix-size-icon-tight)) +
149
+ var(--helix-space-2xs)
150
+ );
148
151
  padding-inline-start: calc(
149
152
  (var(--data-table-level, 1) - 1) *
150
153
  var(--data-table-indent, var(--_data-table-gutter))
@@ -162,12 +165,12 @@ var(--_data-table-gutter)
162
165
  [part~="toggle"] {
163
166
  align-items: center;
164
167
  background: none;
165
- block-size: var(--helix-size-icon-tight);
168
+ block-size: var(--data-table-toggle-size, var(--helix-size-icon-tight));
166
169
  border: none;
167
- color: var(--helix-color-foreground-muted);
170
+ color: var(--data-table-toggle-color, var(--helix-color-foreground-muted));
168
171
  cursor: pointer;
169
172
  display: inline-flex;
170
- inline-size: var(--helix-size-icon-tight);
173
+ inline-size: var(--data-table-toggle-size, var(--helix-size-icon-tight));
171
174
  justify-content: center;
172
175
  margin-inline-end: var(--helix-space-2xs);
173
176
  padding: 0;
@@ -191,8 +194,9 @@ padding-block: var(--data-table-padding-block, var(--helix-space-sm));
191
194
 
192
195
  [part="more-button"] {
193
196
  background: none;
194
- border: var(--helix-border-thin) solid var(--helix-color-border);
195
- border-radius: var(--helix-radii-sm);
197
+ border: var(--helix-border-thin) solid
198
+ var(--data-table-more-border-color, var(--helix-color-border));
199
+ border-radius: var(--data-table-more-radius, var(--helix-radii-sm));
196
200
  color: var(--data-table-color, var(--helix-color-foreground));
197
201
  cursor: pointer;
198
202
  font-family: var(--helix-font-sans);
@@ -202,7 +206,10 @@ padding-inline: var(--helix-space-sm);
202
206
  }
203
207
 
204
208
  [part="more-button"]:hover {
205
- background-color: var(--helix-color-surface-raised);
209
+ background-color: var(
210
+ --data-table-more-hover-background-color,
211
+ var(--helix-color-surface-raised)
212
+ );
206
213
  }
207
214
 
208
215
  :host([windowed]) [part="table"] {
@@ -45,12 +45,17 @@ import '../../table/index.js';
45
45
  * It is opaque, because rows scroll under the sticky heading. Unset otherwise.
46
46
  * @cssproperty --data-table-heading-color - The text color of a heading.
47
47
  * @cssproperty --data-table-indent - How far a tree grid's row header steps in for each level. It defaults to the width of the mark that opens a row.
48
+ * @cssproperty --data-table-more-border-color - The color of the edge around the button in the `load-more` row.
49
+ * @cssproperty --data-table-more-hover-background-color - The fill behind the button in the `load-more` row while the pointer is over it.
50
+ * @cssproperty --data-table-more-radius - The corner radius of the button in the `load-more` row.
48
51
  * @cssproperty --data-table-padding-block - The space above and below a cell's content.
49
52
  * @cssproperty --data-table-padding-inline - The space on either side of a cell's content.
50
53
  * @cssproperty --data-table-rule-color - The color of the line between rows. It takes a
51
54
  * color only, because it fills the color in a border shorthand, and a full border value
52
55
  * makes the rule invalid. It is drawn on the cells, because the row is `display: contents`.
53
56
  * @cssproperty --data-table-text - The font size of headings and cells.
57
+ * @cssproperty --data-table-toggle-color - The color of the mark that opens and closes a row of a tree grid.
58
+ * @cssproperty --data-table-toggle-size - The size of the mark that opens and closes a row of a tree grid, and of the room a row with no children keeps for it.
54
59
  */
55
60
  export declare class HelixDataTable extends HelixHeadlessDataTable {
56
61
  static tier: string;
@@ -51,6 +51,16 @@ padding: var(--helix-space-sm);
51
51
  position: absolute;
52
52
  }
53
53
 
54
+ ::slotted([slot="panel-header"]) {
55
+ display: block;
56
+ margin-block-end: var(--helix-space-sm);
57
+ }
58
+
59
+ ::slotted([slot="panel-footer"]) {
60
+ display: block;
61
+ margin-block-start: var(--helix-space-sm);
62
+ }
63
+
54
64
  :host(:disabled) [part="field"] {
55
65
  color: var(--helix-color-foreground-subtle);
56
66
  }
@@ -185,4 +185,23 @@ margin: var(--helix-space-none);
185
185
  overflow: hidden;
186
186
  position: absolute;
187
187
  white-space: nowrap;
188
+ }
189
+
190
+ [part="slice-label"] {
191
+ background-color: var(--donut-chart-slice-label-background-color, var(--helix-color-surface));
192
+ border-radius: var(--helix-radii-sm);
193
+ color: var(--donut-chart-slice-label-color, var(--helix-color-foreground));
194
+ font-family: var(--helix-font-sans);
195
+ font-size: var(--donut-chart-slice-label-font-size, var(--helix-text-xs));
196
+ font-variant-numeric: tabular-nums;
197
+ line-height: 1.4;
198
+ padding: 0 var(--helix-space-2xs);
199
+ pointer-events: none;
200
+ position: absolute;
201
+ translate: -50% -50%;
202
+ white-space: nowrap;
203
+ }
204
+
205
+ :host([sweep="half"]:dir(rtl)) [part="slice-label"] {
206
+ translate: 50% -50%;
188
207
  }`);
@@ -28,6 +28,9 @@ import '../../tooltip/index.js';
28
28
  *
29
29
  * @cssproperty --donut-chart-edge-stroke - Thickness of the slice boundary under `outlined`.
30
30
  * @cssproperty --donut-chart-size - Width and height of the ring.
31
+ * @cssproperty --donut-chart-slice-label-background-color - Plate behind a slice's share, under `slice-labels`.
32
+ * @cssproperty --donut-chart-slice-label-color - Color of a slice's share, under `slice-labels`.
33
+ * @cssproperty --donut-chart-slice-label-font-size - Size of a slice's share, under `slice-labels`.
31
34
  * @cssproperty --donut-chart-track-color - Color of the ring under the slices.
32
35
  */
33
36
  export declare class HelixDonutChart extends HelixHeadlessDonutChart {
@@ -195,6 +195,53 @@ overflow-y: auto;
195
195
  padding-inline: var(--helix-size-focus-reach);
196
196
  }
197
197
 
198
+ [part="dismiss"] {
199
+ all: unset;
200
+
201
+ box-sizing: border-box;
202
+ position: absolute;
203
+ inset-block-start: calc(
204
+ var(--drawer-padding-block-start, var(--drawer-padding, var(--helix-space-2xl))) +
205
+ (var(--helix-text-lg) * var(--helix-leading-tight) - var(--helix-size-control-sm)) /
206
+ 2
207
+ );
208
+ inset-inline-end: var(--helix-space-md);
209
+ block-size: var(--helix-size-control-sm);
210
+ border-radius: var(--helix-radii-sm);
211
+ color: var(--helix-color-foreground-muted);
212
+ cursor: pointer;
213
+ display: inline-flex;
214
+ inline-size: var(--helix-size-control-sm);
215
+ place-content: center;
216
+ place-items: center;
217
+ transition: color var(--helix-duration-fast) var(--helix-easing-standard);
218
+ }
219
+
220
+ [part="dismiss"] svg {
221
+ block-size: var(--helix-size-icon-sm);
222
+ inline-size: var(--helix-size-icon-sm);
223
+ }
224
+
225
+ [part="dismiss"]:hover {
226
+ background-color: color-mix(in oklab, var(--helix-color-foreground) 8%, transparent);
227
+ color: var(--helix-color-foreground);
228
+ }
229
+
230
+ [part="dismiss"]:focus-visible {
231
+ outline: var(--helix-size-focus-ring) solid var(--helix-color-focus-ring);
232
+ outline-offset: var(--helix-size-focus-offset);
233
+ }
234
+
235
+ :host([dismissible]) ::slotted([slot="header"]) {
236
+ padding-inline-end: calc(var(--helix-size-control-sm) + var(--helix-space-xs));
237
+ }
238
+
239
+ @media (prefers-reduced-motion: reduce) {
240
+ [part="dismiss"] {
241
+ transition: none;
242
+ }
243
+ }
244
+
198
245
  @media print {
199
246
  :host {
200
247
  display: none;
@@ -15,9 +15,14 @@ import type { CSSResultGroup } from 'lit';
15
15
  * @documentation https://fusion.dev/helix/components/drawer
16
16
  *
17
17
  * @slot - The drawer's content.
18
+ * @slot dismiss-icon - Replaces the glyph inside the close control.
19
+ * @slot footer - Content pinned below the scrolling area, such as the drawer's actions.
18
20
  * @slot header - Content pinned above the scrolling area.
19
21
  *
20
22
  * @csspart content - The scrolling content region.
23
+ * @csspart dismiss - The close control, drawn when the drawer is `dismissible`, in the corner by the title.
24
+ * @csspart dismiss-mark - The glyph on the close control, where none is slotted.
25
+ * @csspart footer - The footer region.
21
26
  * @csspart header - The header region.
22
27
  * @csspart panel - The sliding panel.
23
28
  *
@@ -6,17 +6,17 @@ display: block;
6
6
  [part="item"] {
7
7
  all: unset;
8
8
  align-items: center;
9
- block-size: var(--helix-size-control-tight);
9
+ block-size: var(--drilldown-item-block-size, var(--helix-size-control-tight));
10
10
  box-sizing: border-box;
11
11
  inline-size: 100%;
12
- color: var(--helix-color-foreground);
12
+ color: var(--drilldown-item-color, var(--helix-color-foreground));
13
13
  cursor: pointer;
14
14
  display: flex;
15
15
  font-family: var(--helix-font-sans);
16
- font-size: var(--helix-text-sm);
16
+ font-size: var(--drilldown-item-font-size, var(--helix-text-sm));
17
17
  gap: var(--helix-space-xs);
18
18
 
19
- padding-inline: var(--helix-space-sm);
19
+ padding-inline: var(--drilldown-item-padding-inline, var(--helix-space-sm));
20
20
  user-select: none;
21
21
  }
22
22
 
@@ -30,7 +30,7 @@ white-space: nowrap;
30
30
  [part="mark"],
31
31
  slot[name="chevron"]::slotted(*) {
32
32
  block-size: var(--helix-size-icon-tight);
33
- color: var(--helix-color-foreground-subtle);
33
+ color: var(--drilldown-item-mark-color, var(--helix-color-foreground-subtle));
34
34
  flex: none;
35
35
  inline-size: var(--helix-size-icon-tight);
36
36
  }
@@ -50,5 +50,5 @@ outline-offset: calc(var(--helix-size-focus-offset) * -1);
50
50
 
51
51
  :host([disabled]) [part="item"] {
52
52
  cursor: default;
53
- opacity: 0.5;
53
+ opacity: var(--drilldown-item-disabled-opacity, 0.5);
54
54
  }`);
@@ -12,7 +12,13 @@ import type { CSSResultGroup } from 'lit';
12
12
  * @aliases Panel item, Drill row
13
13
  * @documentation https://fusion.dev/helix/components/drilldown
14
14
  *
15
+ * @cssproperty --drilldown-item-block-size - Height of a row.
16
+ * @cssproperty --drilldown-item-color - Color of a row's words.
17
+ * @cssproperty --drilldown-item-disabled-opacity - How faint a disabled row is drawn.
18
+ * @cssproperty --drilldown-item-font-size - Size of a row's words.
15
19
  * @cssproperty --drilldown-item-hover-color - Fill when a row is under the pointer.
20
+ * @cssproperty --drilldown-item-mark-color - Color of the caret on a row that opens a page.
21
+ * @cssproperty --drilldown-item-padding-inline - Space at either end of a row.
16
22
  */
17
23
  export declare class HelixDrilldownItem extends HelixHeadlessDrilldownItem {
18
24
  static styles: CSSResultGroup;