@fusion.dev/helix 0.144.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 (213) hide show
  1. package/custom-elements.json +17914 -4368
  2. package/dist/accordion/item/accordion-item.css.js +25 -10
  3. package/dist/accordion/item/accordion-item.d.ts +10 -0
  4. package/dist/aura/palette.d.ts +38 -0
  5. package/dist/aura/palette.js +22 -0
  6. package/dist/aura/root/aura-root.css.js +27 -3
  7. package/dist/aura/root/aura-root.d.ts +61 -14
  8. package/dist/aura/root/aura-root.js +40 -23
  9. package/dist/badge/root/badge-root.css.js +86 -16
  10. package/dist/badge/root/badge-root.d.ts +18 -0
  11. package/dist/badge/root/badge-root.js +6 -0
  12. package/dist/blockquote/root/blockquote-root.css.js +2 -2
  13. package/dist/blockquote/root/blockquote-root.d.ts +2 -0
  14. package/dist/breadcrumbs/breadcrumb/breadcrumb.css.js +7 -7
  15. package/dist/breadcrumbs/breadcrumb/breadcrumb.d.ts +5 -0
  16. package/dist/breadcrumbs/root/breadcrumbs-root.css.js +24 -1
  17. package/dist/breadcrumbs/root/breadcrumbs-root.d.ts +4 -0
  18. package/dist/breadcrumbs/root/breadcrumbs-root.js +2 -0
  19. package/dist/button/root/button-root.css.js +4 -3
  20. package/dist/button/root/button-root.d.ts +2 -0
  21. package/dist/button-group/root/button-group-root.d.ts +3 -0
  22. package/dist/callout/root/callout-root.css.js +4 -3
  23. package/dist/callout/root/callout-root.d.ts +6 -2
  24. package/dist/canvas/root/canvas-root.css.js +1 -0
  25. package/dist/card/root/card-root.d.ts +6 -0
  26. package/dist/carousel/root/carousel-root.css.js +17 -1
  27. package/dist/chat/message/chat-message.css.js +0 -62
  28. package/dist/chat/message/chat-message.js +2 -1
  29. package/dist/chat/root/chat-root.css.js +7 -0
  30. package/dist/chat/root/chat-root.d.ts +2 -0
  31. package/dist/chat/root/chat-root.js +2 -1
  32. package/dist/chat/typing.css.d.ts +1 -0
  33. package/dist/chat/typing.css.js +62 -0
  34. package/dist/checkbox/root/checkbox-root.css.js +15 -0
  35. package/dist/checkbox/root/checkbox-root.d.ts +2 -1
  36. package/dist/code/root/code-root.css.js +2 -2
  37. package/dist/code/root/code-root.d.ts +2 -0
  38. package/dist/code-block/root/code-block-root.css.js +24 -0
  39. package/dist/code-block/root/code-block-root.d.ts +2 -1
  40. package/dist/color-input/root/color-input-root.css.js +10 -0
  41. package/dist/color-picker/root/color-picker-root.css.js +8 -0
  42. package/dist/color-picker/root/color-picker-root.d.ts +1 -0
  43. package/dist/copy-button/root/copy-button-root.css.js +15 -6
  44. package/dist/copy-button/root/copy-button-root.d.ts +7 -0
  45. package/dist/data-table/root/data-table-root.css.js +70 -0
  46. package/dist/data-table/root/data-table-root.d.ts +6 -0
  47. package/dist/date-input/root/date-input-root.css.js +10 -0
  48. package/dist/description-list/item/description-list-item.css.js +11 -0
  49. package/dist/donut-chart/root/donut-chart-root.css.js +19 -0
  50. package/dist/donut-chart/root/donut-chart-root.d.ts +3 -0
  51. package/dist/drawer/root/drawer-root.css.js +47 -0
  52. package/dist/drawer/root/drawer-root.d.ts +5 -0
  53. package/dist/drilldown/item/drilldown-item.css.js +8 -7
  54. package/dist/drilldown/item/drilldown-item.d.ts +6 -0
  55. package/dist/drilldown/root/drilldown-root.css.js +27 -13
  56. package/dist/drilldown/root/drilldown-root.d.ts +10 -0
  57. package/dist/element-events.generated.js +72 -13
  58. package/dist/file-input/root/file-input-root.css.js +12 -11
  59. package/dist/file-input/root/file-input-root.d.ts +11 -0
  60. package/dist/filter-input/root/filter-input-root.css.js +6 -5
  61. package/dist/filter-input/root/filter-input-root.d.ts +5 -0
  62. package/dist/flex/root/flex-root.css.js +143 -9
  63. package/dist/flex/root/flex-root.d.ts +62 -5
  64. package/dist/flex/root/flex-root.js +17 -1
  65. package/dist/graph/root/graph-root.css.js +11 -8
  66. package/dist/graph/root/graph-root.d.ts +8 -0
  67. package/dist/grid/root/grid-root.css.js +114 -11
  68. package/dist/grid/root/grid-root.d.ts +40 -0
  69. package/dist/grid/root/grid-root.js +13 -1
  70. package/dist/heatmap/root/heatmap-root.css.js +2 -1
  71. package/dist/icon-button/root/icon-button-root.css.js +68 -13
  72. package/dist/icon-button/root/icon-button-root.d.ts +4 -0
  73. package/dist/kbd/root/kbd-root.css.js +27 -0
  74. package/dist/kbd/root/kbd-root.d.ts +2 -0
  75. package/dist/lightbox/item/lightbox-item.css.js +4 -0
  76. package/dist/lightbox/root/lightbox-root.css.js +41 -0
  77. package/dist/line-chart/root/line-chart-root.css.js +16 -0
  78. package/dist/line-chart/root/line-chart-root.d.ts +2 -0
  79. package/dist/list/item/list-item.css.js +21 -1
  80. package/dist/list/item/list-item.d.ts +3 -0
  81. package/dist/list/root/list-root.css.js +13 -1
  82. package/dist/listbox/root/listbox-root.css.js +9 -0
  83. package/dist/listbox/root/listbox-root.d.ts +1 -0
  84. package/dist/loader/root/loader-root.css.js +3 -3
  85. package/dist/loader/root/loader-root.d.ts +2 -0
  86. package/dist/megamenu/root/megamenu-root.css.js +16 -13
  87. package/dist/megamenu/root/megamenu-root.d.ts +11 -0
  88. package/dist/menu/index.d.ts +1 -0
  89. package/dist/menu/index.js +1 -0
  90. package/dist/menu/item/menu-item.css.js +39 -4
  91. package/dist/menu/item/menu-item.d.ts +4 -0
  92. package/dist/menu/item/menu-item.js +2 -0
  93. package/dist/menu/section/menu-section.css.d.ts +1 -0
  94. package/dist/menu/section/menu-section.css.js +14 -0
  95. package/dist/menu/section/menu-section.d.ts +24 -0
  96. package/dist/menu/section/menu-section.js +16 -0
  97. package/dist/meter/root/meter-root.css.js +6 -3
  98. package/dist/meter/root/meter-root.d.ts +1 -0
  99. package/dist/navigation/root/navigation-root.css.js +3 -2
  100. package/dist/navigation/root/navigation-root.d.ts +13 -0
  101. package/dist/notifications/root/notifications-root.css.js +30 -1
  102. package/dist/notifications/root/notifications-root.d.ts +1 -0
  103. package/dist/number-input/root/number-input-root.css.js +12 -9
  104. package/dist/number-input/root/number-input-root.d.ts +8 -0
  105. package/dist/object-inspector/root/object-inspector-root.css.js +38 -7
  106. package/dist/object-inspector/root/object-inspector-root.d.ts +4 -1
  107. package/dist/object-inspector/root/object-inspector-root.js +2 -1
  108. package/dist/option/root/option-root.css.js +1 -1
  109. package/dist/orb/index.d.ts +1 -1
  110. package/dist/orb/index.js +1 -1
  111. package/dist/orb/root/orb-root.d.ts +40 -6
  112. package/dist/orb/root/orb-root.js +29 -11
  113. package/dist/outline/root/outline-root.css.js +10 -0
  114. package/dist/outline/root/outline-root.d.ts +7 -0
  115. package/dist/pin-input/root/pin-input-root.css.js +4 -4
  116. package/dist/pin-input/root/pin-input-root.d.ts +4 -0
  117. package/dist/progress/root/progress-root.css.js +4 -2
  118. package/dist/progress/root/progress-root.d.ts +1 -0
  119. package/dist/qr-code/root/qr-code-root.css.js +11 -0
  120. package/dist/quote/root/quote-root.css.js +3 -0
  121. package/dist/quote/root/quote-root.d.ts +2 -0
  122. package/dist/radio/root/radio-root.css.js +16 -0
  123. package/dist/radio/root/radio-root.d.ts +2 -1
  124. package/dist/sandbox/frame.d.ts +64 -0
  125. package/dist/sandbox/frame.js +146 -0
  126. package/dist/sandbox/index.d.ts +2 -0
  127. package/dist/sandbox/index.js +1 -0
  128. package/dist/sandbox/levels.d.ts +10 -0
  129. package/dist/sandbox/levels.js +5 -0
  130. package/dist/sandbox/root/sandbox-root.d.ts +3 -0
  131. package/dist/sandbox/root/sandbox-root.js +13 -3
  132. package/dist/sandbox/source/sandbox-source.css.js +70 -0
  133. package/dist/sandbox/source/sandbox-source.d.ts +35 -0
  134. package/dist/sandbox/source/sandbox-source.js +22 -3
  135. package/dist/sandbox/terminal/sandbox-terminal.css.js +39 -0
  136. package/dist/sandbox/terminal/sandbox-terminal.d.ts +50 -1
  137. package/dist/sandbox/terminal/sandbox-terminal.js +61 -4
  138. package/dist/sandbox/tokens.d.ts +39 -0
  139. package/dist/sandbox/tokens.js +9 -0
  140. package/dist/scatter-chart/root/scatter-chart-root.css.js +9 -0
  141. package/dist/scatter-chart/root/scatter-chart-root.d.ts +2 -0
  142. package/dist/scroll-area/root/scroll-area-root.css.js +83 -1
  143. package/dist/scroll-area/root/scroll-area-root.d.ts +6 -0
  144. package/dist/skeleton/root/skeleton-root.css.js +11 -11
  145. package/dist/skeleton/root/skeleton-root.d.ts +1 -0
  146. package/dist/skip-link/root/skip-link-root.css.js +20 -8
  147. package/dist/skip-link/root/skip-link-root.d.ts +12 -3
  148. package/dist/slider/root/slider-root.css.js +26 -0
  149. package/dist/sparkline/root/sparkline-root.css.js +49 -0
  150. package/dist/sparkline/root/sparkline-root.d.ts +6 -0
  151. package/dist/sparkline/root/sparkline-root.js +2 -1
  152. package/dist/speed-dial/item/speed-dial-item.css.js +18 -10
  153. package/dist/speed-dial/item/speed-dial-item.d.ts +7 -0
  154. package/dist/speed-dial/root/speed-dial-root.css.js +17 -8
  155. package/dist/speed-dial/root/speed-dial-root.d.ts +16 -1
  156. package/dist/speed-dial/root/speed-dial-root.js +4 -1
  157. package/dist/stat/root/stat-root.css.js +4 -0
  158. package/dist/steps/root/steps-root.css.js +28 -0
  159. package/dist/steps/root/steps-root.d.ts +5 -0
  160. package/dist/steps/step/step.js +2 -1
  161. package/dist/table/root/table-root.css.js +18 -0
  162. package/dist/table/root/table-root.d.ts +6 -0
  163. package/dist/table/root/table-root.js +2 -0
  164. package/dist/table/row/table-row.css.js +18 -0
  165. package/dist/table/row/table-row.d.ts +2 -0
  166. package/dist/table/row/table-row.js +2 -0
  167. package/dist/tabs/panel/tab-panel.css.js +5 -1
  168. package/dist/tabs/root/tabs-root.css.js +58 -3
  169. package/dist/tabs/root/tabs-root.d.ts +4 -0
  170. package/dist/tabs/tab/tab.css.js +21 -10
  171. package/dist/tabs/tab/tab.d.ts +7 -0
  172. package/dist/tag/group/tag-group.css.js +6 -0
  173. package/dist/text/clamp.d.ts +11 -0
  174. package/dist/text/clamp.js +3 -0
  175. package/dist/text/root/text-root.css.js +79 -45
  176. package/dist/text/root/text-root.d.ts +49 -7
  177. package/dist/text/root/text-root.js +17 -11
  178. package/dist/textarea/root/textarea-root.css.js +27 -0
  179. package/dist/time-input/root/time-input-root.css.js +12 -0
  180. package/dist/time-picker/root/time-picker-root.css.js +1 -1
  181. package/dist/timeline/group/timeline-group.css.d.ts +1 -0
  182. package/dist/timeline/group/timeline-group.css.js +32 -0
  183. package/dist/timeline/group/timeline-group.d.ts +25 -0
  184. package/dist/timeline/group/timeline-group.js +16 -0
  185. package/dist/timeline/index.d.ts +1 -0
  186. package/dist/timeline/index.js +1 -0
  187. package/dist/timeline/item/timeline-item.css.js +43 -16
  188. package/dist/timeline/root/timeline-root.css.js +56 -0
  189. package/dist/timeline/root/timeline-root.d.ts +26 -0
  190. package/dist/timeline/root/timeline-root.js +7 -0
  191. package/dist/toast/item/toast-item.css.js +10 -0
  192. package/dist/toast/root/toast-root.d.ts +1 -0
  193. package/dist/toast/root/toast-root.js +1 -0
  194. package/dist/toggle/group/toggle-group.css.js +10 -7
  195. package/dist/toggle/group/toggle-group.d.ts +6 -1
  196. package/dist/toggle/root/toggle-root.d.ts +6 -0
  197. package/dist/toolbar/root/toolbar-root.css.js +4 -0
  198. package/dist/toolbar/root/toolbar-root.d.ts +5 -0
  199. package/dist/tooltip/root/tooltip-root.css.js +5 -5
  200. package/dist/tooltip/root/tooltip-root.d.ts +4 -0
  201. package/dist/tree/item/tree-item.css.js +89 -7
  202. package/dist/tree/item/tree-item.d.ts +19 -0
  203. package/dist/trend/root/trend-root.css.js +3 -5
  204. package/dist/trend/root/trend-root.d.ts +2 -2
  205. package/dist/video/root/video-root.css.js +6 -0
  206. package/dist/video/root/video-root.d.ts +3 -0
  207. package/dist/virtual-list/root/virtual-list-root.css.js +19 -0
  208. package/dist/virtual-list/root/virtual-list-root.d.ts +10 -3
  209. package/lint.json +1 -1
  210. package/package.json +9 -9
  211. package/types/jsx.d.ts +8253 -1233
  212. package/types/svelte.d.ts +2 -0
  213. package/types/vue.d.ts +2357 -312
@@ -17,9 +17,9 @@ slot:not([name]) {
17
17
  color: var(--blockquote-color, var(--helix-color-foreground-muted));
18
18
  font-family: var(--blockquote-font-family, var(--helix-font-display));
19
19
  font-size: var(--blockquote-size, var(--helix-text-xl));
20
- font-weight: var(--helix-weight-medium);
20
+ font-weight: var(--blockquote-font-weight, var(--helix-weight-medium));
21
21
  letter-spacing: var(--helix-tracking-tight);
22
- line-height: var(--helix-leading-tight);
22
+ line-height: var(--blockquote-line-height, var(--helix-leading-tight));
23
23
  }
24
24
 
25
25
  slot:not([name])::slotted(*) {
@@ -18,7 +18,9 @@ import type { CSSResultGroup } from 'lit';
18
18
  * @cssproperty --blockquote-attribution-size - The font size of the attribution.
19
19
  * @cssproperty --blockquote-color - The color of the quoted passage.
20
20
  * @cssproperty --blockquote-font-family - The typeface of the quoted passage, the display face by default.
21
+ * @cssproperty --blockquote-font-weight - The weight of the quoted passage, medium by default.
21
22
  * @cssproperty --blockquote-gap - The space between the passage and its attribution.
23
+ * @cssproperty --blockquote-line-height - The line height of the quoted passage, the tight leading by default.
22
24
  * @cssproperty --blockquote-size - The font size of the quoted passage.
23
25
  */
24
26
  export declare class HelixBlockquote extends HelixHeadlessBlockquote {
@@ -38,7 +38,7 @@ display: none;
38
38
 
39
39
  ::slotted(a) {
40
40
  background-color: transparent;
41
- border-radius: var(--helix-radii-sm);
41
+ border-radius: var(--breadcrumbs-radius, var(--helix-radii-sm));
42
42
  padding: var(--helix-space-2xs) var(--helix-space-xs);
43
43
  transition: background-color var(--helix-duration-fast) var(--helix-easing-standard);
44
44
  }
@@ -61,17 +61,17 @@ outline-offset: var(--helix-size-focus-offset);
61
61
  }
62
62
 
63
63
  :host {
64
- font-weight: var(--helix-weight-medium);
64
+ font-weight: var(--breadcrumbs-font-weight, var(--helix-weight-medium));
65
65
  }
66
66
 
67
67
  :host([current]) {
68
- color: var(--helix-color-foreground);
68
+ color: var(--breadcrumbs-current-color, var(--helix-color-foreground));
69
69
  }
70
70
 
71
71
  [part="link"] {
72
72
  align-items: center;
73
- border-radius: var(--helix-radii-sm);
74
- color: var(--helix-color-foreground-muted);
73
+ border-radius: var(--breadcrumbs-radius, var(--helix-radii-sm));
74
+ color: var(--breadcrumbs-link-color, var(--helix-color-foreground-muted));
75
75
  display: inline-flex;
76
76
  gap: var(--helix-space-xs);
77
77
  padding: var(--helix-space-2xs) var(--helix-space-xs);
@@ -95,11 +95,11 @@ background-color: var(
95
95
  --breadcrumbs-hover-color,
96
96
  color-mix(in oklab, var(--helix-color-foreground) 8%, transparent)
97
97
  );
98
- color: var(--helix-color-foreground);
98
+ color: var(--breadcrumbs-current-color, var(--helix-color-foreground));
99
99
  }
100
100
 
101
101
  :host([current]) [part="link"] {
102
- color: var(--helix-color-foreground);
102
+ color: var(--breadcrumbs-current-color, var(--helix-color-foreground));
103
103
  }
104
104
 
105
105
  :host([hidden]) {
@@ -25,7 +25,12 @@ import type { CSSResultGroup } from 'lit';
25
25
  *
26
26
  * @cssproperty --breadcrumbs-control-padding-inline - Inline padding of a control slotted into a crumb, matching the steps either side of it.
27
27
  * @cssproperty --breadcrumbs-control-size - How tall a control slotted into a crumb is.
28
+ * @cssproperty --breadcrumbs-current-color - Text color of the current page's crumb.
29
+ * @cssproperty --breadcrumbs-font-weight - Weight of every crumb's text.
28
30
  * @cssproperty --breadcrumbs-hover-color - Fill behind a step under the pointer.
31
+ * @cssproperty --breadcrumbs-link-color - Text color of a crumb that is not the current page. A link
32
+ * you slot inherits it unless your own styles set a color.
33
+ * @cssproperty --breadcrumbs-radius - Corner radius of the fill behind a step under the pointer.
29
34
  * @cssproperty --breadcrumbs-separator-color - Color of the chevron.
30
35
  */
31
36
  export declare class HelixBreadcrumb extends HelixHeadlessBreadcrumb {
@@ -7,7 +7,7 @@ display: block;
7
7
  align-items: center;
8
8
  display: flex;
9
9
  flex-wrap: wrap;
10
- font-size: var(--helix-text-sm);
10
+ font-size: var(--breadcrumbs-font-size, var(--helix-text-sm));
11
11
  gap: var(--breadcrumbs-gap, var(--helix-space-xs));
12
12
 
13
13
  list-style: none;
@@ -15,6 +15,29 @@ margin: var(--helix-space-none);
15
15
  padding: var(--helix-space-none);
16
16
  }
17
17
 
18
+ [part="expand"] {
19
+ all: unset;
20
+ border-radius: var(--breadcrumbs-radius, var(--helix-radii-sm));
21
+ box-sizing: border-box;
22
+ color: var(--breadcrumbs-link-color, var(--helix-color-foreground-muted));
23
+ cursor: pointer;
24
+ line-height: var(--helix-leading-normal);
25
+ padding: var(--helix-space-2xs) var(--helix-space-xs);
26
+ }
27
+
28
+ [part="expand"]:hover {
29
+ background-color: var(
30
+ --breadcrumbs-hover-color,
31
+ color-mix(in oklab, var(--helix-color-foreground) 8%, transparent)
32
+ );
33
+ color: var(--breadcrumbs-current-color, var(--helix-color-foreground));
34
+ }
35
+
36
+ [part="expand"]:focus-visible {
37
+ outline: var(--helix-size-focus-ring) solid var(--helix-color-focus-ring);
38
+ outline-offset: var(--helix-size-focus-offset);
39
+ }
40
+
18
41
  @media print {
19
42
  :host {
20
43
  print-color-adjust: economy;
@@ -1,5 +1,6 @@
1
1
  import { HelixHeadlessBreadcrumbs } from '@fusion.dev/helix-headless/breadcrumbs';
2
2
  import type { CSSResultGroup } from 'lit';
3
+ import '../breadcrumb/breadcrumb.js';
3
4
  /**
4
5
  * @summary Shows the path to the current page.
5
6
  *
@@ -15,11 +16,14 @@ import type { CSSResultGroup } from 'lit';
15
16
  *
16
17
  * @slot - The trail's items, in order from root to current page.
17
18
  *
19
+ * @csspart expand - The button in the folded crumb that shows the whole trail.
18
20
  * @csspart list - The ordered list.
19
21
  *
22
+ * @cssproperty --breadcrumbs-font-size - Size of the trail's text.
20
23
  * @cssproperty --breadcrumbs-gap - Space between items and separators.
21
24
  */
22
25
  export declare class HelixBreadcrumbs extends HelixHeadlessBreadcrumbs {
26
+ static tier: string;
23
27
  static styles: CSSResultGroup;
24
28
  }
25
29
  declare global {
@@ -7,7 +7,9 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
7
7
  import { customElement } from '@fusion.dev/helix-core';
8
8
  import { HelixHeadlessBreadcrumbs } from '@fusion.dev/helix-headless/breadcrumbs';
9
9
  import { styles } from './breadcrumbs-root.css.js';
10
+ import '../breadcrumb/breadcrumb.js';
10
11
  let HelixBreadcrumbs = class HelixBreadcrumbs extends HelixHeadlessBreadcrumbs {
12
+ static { this.tier = 'helix-'; }
11
13
  static { this.styles = styles; }
12
14
  };
13
15
  HelixBreadcrumbs = __decorate([
@@ -195,10 +195,11 @@ visibility: hidden;
195
195
  }
196
196
 
197
197
  :host(:state(pending)) [part="button"]::after {
198
- animation: helix-button-turn var(--_button-turn) linear infinite;
198
+ animation: helix-button-turn var(--button-spinner-duration, var(--_button-turn)) linear infinite;
199
199
  block-size: var(--button-spinner-size, 1.15em);
200
- border: var(--helix-border-thick) solid color-mix(in oklab, currentColor 30%, transparent);
201
- border-block-start-color: currentColor;
200
+ border: var(--helix-border-thick) solid
201
+ color-mix(in oklab, var(--button-spinner-color, currentColor) 30%, transparent);
202
+ border-block-start-color: var(--button-spinner-color, currentColor);
202
203
  border-radius: var(--helix-radii-full);
203
204
  box-sizing: border-box;
204
205
  content: "";
@@ -43,6 +43,8 @@ declare const HelixButton_base: (new (...args: any[]) => import("../../shared/mi
43
43
  * @cssproperty --button-radius-start-end - The top trailing corner, for a group stacking down.
44
44
  * @cssproperty --button-radius-start-start - The top leading corner, for a group stacking down.
45
45
  * @cssproperty --button-size - Height of the control, for a row height outside the density steps.
46
+ * @cssproperty --button-spinner-color - Color of the ring a pending button turns. It follows the label's color.
47
+ * @cssproperty --button-spinner-duration - How long the ring takes to turn once.
46
48
  * @cssproperty --button-spinner-size - Size of the ring a pending button turns. Defaults to the size of its icons.
47
49
  *
48
50
  * @cssstate pending - The button is pending: `pending` is set. A ring turns over its hidden words.
@@ -12,6 +12,9 @@ import type { CSSResultGroup } from 'lit';
12
12
  * shadow root, where this component's styles cannot reach. The same rule works
13
13
  * for your own anchor styled as a button.
14
14
  *
15
+ * The buttons take their height from the region, so set `data-density` on the
16
+ * group to make every button in it smaller or larger together.
17
+ *
15
18
  * @since 0.1.0
16
19
  * @status stable
17
20
  * @category actions
@@ -4,9 +4,10 @@ export const styles = createSheet(`:host {
4
4
 
5
5
  --_callout-color: var(--callout-accent-color, var(--_callout-tone));
6
6
  --_callout-bar: var(--callout-bar-thickness, var(--helix-border-thick));
7
- --_callout-inset: var(--callout-padding, var(--helix-space-md));
8
7
 
9
- font-size: var(--callout-font-size, var(--helix-text-sm));
8
+ --_callout-inset: var(--callout-padding, var(--helix-space-control));
9
+
10
+ font-size: var(--callout-font-size, var(--helix-text-control));
10
11
  background-color: var(
11
12
  --callout-background-color,
12
13
  color-mix(in oklab, var(--_callout-color) 10%, transparent)
@@ -129,7 +130,7 @@ slot[name="heading"]::slotted(*) {
129
130
  color: var(--helix-color-foreground);
130
131
 
131
132
  display: block;
132
- font-size: var(--callout-font-size, var(--helix-text-sm));
133
+ font-size: var(--callout-font-size, var(--helix-text-control));
133
134
  font-weight: var(--helix-weight-semibold);
134
135
  margin: var(--helix-space-none);
135
136
  }
@@ -14,6 +14,10 @@ import type { CSSResultGroup } from 'lit';
14
14
  * draws it. `separation` is where the box ends: absent is the tint with the
15
15
  * bar, `outlined` an edge with no fill, and `plain` the bar and the mark alone.
16
16
  *
17
+ * The inset and the type follow `data-density`, as the controls around a
18
+ * callout do: set it on a region for tighter or looser callouts, or set
19
+ * `--callout-padding` and `--callout-font-size` on one.
20
+ *
17
21
  * @since 0.1.0
18
22
  * @status stable
19
23
  * @category markers
@@ -33,9 +37,9 @@ import type { CSSResultGroup } from 'lit';
33
37
  * @cssproperty --callout-accent-color - The color of the bar, the mark and the tint, in place of the tone's.
34
38
  * @cssproperty --callout-background-color - The fill behind the callout.
35
39
  * @cssproperty --callout-bar-thickness - The thickness of the bar on the inline start edge.
36
- * @cssproperty --callout-font-size - The size of the callout's text.
40
+ * @cssproperty --callout-font-size - The size of the callout's text. Defaults to the control text step, which follows `data-density`.
37
41
  * @cssproperty --callout-gap - The space between the mark and the content.
38
- * @cssproperty --callout-padding - The inset around the content, to which the bar's width is added at the start.
42
+ * @cssproperty --callout-padding - The inset around the content, to which the bar's width is added at the start. Defaults to the control space step, which follows `data-density`.
39
43
  * @cssproperty --callout-radius - The corner radius of the callout.
40
44
  */
41
45
  export declare class HelixCallout extends HelixHeadlessCallout {
@@ -84,6 +84,7 @@ transition: none;
84
84
  inset: 0;
85
85
  overflow: visible;
86
86
  position: absolute;
87
+ z-index: var(--helix-layer-beneath);
87
88
  }
88
89
 
89
90
  [part="edge"] {
@@ -33,8 +33,14 @@ import type { CSSResultGroup } from 'lit';
33
33
  * @slot header-actions - Controls for the whole card at the end of the header's line, such as a menu.
34
34
  * @slot media - Image, video, or chart that runs edge to edge, outside the inset.
35
35
  *
36
+ * @csspart body - The slot the main content arrives through. A slot draws no box, so it passes inherited properties, such as color and font, to the content; `display: block` gives it one.
37
+ * @csspart footer - The slot the footer arrives through, drawing no box, as `body` does.
38
+ * @csspart footer-actions - The slot the footer's controls arrive through, drawing no box, as `body` does.
36
39
  * @csspart footer-row - The line holding `footer` and `footer-actions`, drawn only while `footer-actions` holds something.
40
+ * @csspart header - The slot the header arrives through, drawing no box, as `body` does.
41
+ * @csspart header-actions - The slot the header's controls arrive through, drawing no box, as `body` does.
37
42
  * @csspart header-row - The line holding `header` and `header-actions`, drawn only while `header-actions` holds something.
43
+ * @csspart media - The slot the media arrives through, drawing no box, as `body` does.
38
44
  *
39
45
  * @cssproperty --card-align - How the regions pack when the card is stretched
40
46
  * taller than its content. `start` by default, so the slack is at the bottom;
@@ -170,11 +170,27 @@ outline-offset: var(--helix-size-focus-offset);
170
170
 
171
171
  [part="rotation"] svg,
172
172
  [part="previous"] svg,
173
- [part="next"] svg {
173
+ [part="next"] svg,
174
+ ::slotted([slot="previous-icon"]),
175
+ ::slotted([slot="next-icon"]) {
174
176
  block-size: 1em;
175
177
  inline-size: 1em;
176
178
  }
177
179
 
180
+ :host(:dir(rtl)) ::slotted([slot="previous-icon"]),
181
+ :host(:dir(rtl)) ::slotted([slot="next-icon"]) {
182
+ scale: -1 1;
183
+ }
184
+
185
+ :host([mouse-drag]) [part="track"] {
186
+ cursor: grab;
187
+ }
188
+
189
+ :host(:state(dragging)) [part="track"] {
190
+ cursor: grabbing;
191
+ user-select: none;
192
+ }
193
+
178
194
  [part="track"] {
179
195
 
180
196
  --_carousel-share: calc(
@@ -181,68 +181,6 @@ background-color: transparent;
181
181
  padding: var(--helix-space-none);
182
182
  }
183
183
 
184
- [part="indicator"] {
185
-
186
- --_chat-typing-cycle: 1.2s;
187
-
188
- animation: helix-chat-typing var(--_chat-typing-cycle) infinite ease-in-out;
189
- background-image:
190
- radial-gradient(circle closest-side, currentColor 90%, transparent),
191
- radial-gradient(circle closest-side, currentColor 90%, transparent),
192
- radial-gradient(circle closest-side, currentColor 90%, transparent);
193
- background-position:
194
- 0% 50%,
195
- 50% 50%,
196
- 100% 50%;
197
- background-repeat: no-repeat;
198
- background-size:
199
- 20% 30%,
200
- 20% 30%,
201
- 20% 30%;
202
- block-size: 1lh;
203
- display: block;
204
- inline-size: 1.75em;
205
- opacity: 0.7;
206
- }
207
-
208
- @keyframes helix-chat-typing {
209
- 0%,
210
- 60%,
211
- 100% {
212
- background-position:
213
- 0% 50%,
214
- 50% 50%,
215
- 100% 50%;
216
- }
217
-
218
- 20% {
219
- background-position:
220
- 0% 10%,
221
- 50% 50%,
222
- 100% 50%;
223
- }
224
-
225
- 33% {
226
- background-position:
227
- 0% 50%,
228
- 50% 10%,
229
- 100% 50%;
230
- }
231
-
232
- 46% {
233
- background-position:
234
- 0% 50%,
235
- 50% 50%,
236
- 100% 10%;
237
- }
238
- }
239
-
240
- @media (prefers-reduced-motion: reduce) {
241
- [part="indicator"] {
242
- animation: none;
243
- }
244
- }
245
-
246
184
  :host([state="failed"]) [part="meta"] {
247
185
  color: var(--helix-color-danger);
248
186
  }
@@ -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.