@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
@@ -47,6 +47,14 @@ list-style-type: upper-roman;
47
47
  list-style-type: disc;
48
48
  }
49
49
 
50
+ :host([kind="ordered"]) ::slotted(*) {
51
+ counter-increment: list-item var(--list-step, 1);
52
+ }
53
+
54
+ :host([kind="ordered"]) ::slotted(:first-child) {
55
+ counter-set: list-item var(--list-first);
56
+ }
57
+
50
58
  :host([marker="rail"]) {
51
59
  counter-reset: list-rail;
52
60
 
@@ -57,7 +65,11 @@ padding-inline-start: var(--helix-space-none);
57
65
  --list-item-rail-content: counter(list-rail, var(--list-rail-style, decimal-leading-zero));
58
66
 
59
67
  --list-item-rail-display: block;
60
- counter-increment: list-rail;
68
+ counter-increment: list-rail var(--list-step, 1);
69
+ }
70
+
71
+ :host([marker="rail"]) ::slotted(:first-child) {
72
+ counter-set: list-rail var(--list-first);
61
73
  }
62
74
 
63
75
  :host([kind="ordered"][marker="rail"]) ::slotted(*),
@@ -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;
@@ -1,2 +1,3 @@
1
1
  export * from './item/menu-item.js';
2
2
  export * from './root/menu-root.js';
3
+ export * from './section/menu-section.js';
@@ -1,2 +1,3 @@
1
1
  export * from './item/menu-item.js';
2
2
  export * from './root/menu-root.js';
3
+ export * from './section/menu-section.js';
@@ -20,6 +20,7 @@ font-weight: var(--helix-weight-medium);
20
20
  grid-template-columns:
21
21
  var(--menu-item-start, 0px)
22
22
  minmax(0, 1fr)
23
+ auto
23
24
  var(--menu-item-end, 0px);
24
25
 
25
26
  min-block-size: var(--helix-size-control);
@@ -72,25 +73,59 @@ grid-column: 2;
72
73
  min-inline-size: 0;
73
74
  }
74
75
 
75
- [part="mark"] {
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
+
90
+ [part="end"] {
91
+ align-items: center;
92
+ color: var(--menu-item-detail-color, var(--helix-color-foreground-subtle));
93
+ display: flex;
94
+ gap: var(--helix-space-2xs);
76
95
  grid-column: 3;
96
+ padding-inline-start: var(--helix-space-sm);
97
+ }
98
+
99
+ [part="end"][data-empty] {
100
+ display: none;
101
+ }
102
+
103
+ [part="mark"],
104
+ slot[name="check"]::slotted(*),
105
+ slot[name="chevron"]::slotted(*) {
106
+ grid-column: 4;
107
+ grid-row: 1;
77
108
  }
78
109
 
79
110
  [part="start"][data-empty] {
80
111
  display: none;
81
112
  }
82
113
 
83
- [part="mark"] {
114
+ [part="mark"],
115
+ slot[name="check"]::slotted(*),
116
+ slot[name="chevron"]::slotted(*) {
84
117
  block-size: var(--helix-size-icon);
85
118
  inline-size: var(--helix-size-icon);
86
119
  justify-self: end;
87
120
  }
88
121
 
89
- svg[part="mark"] {
122
+ svg[part="mark"],
123
+ slot[name="chevron"]::slotted(*) {
90
124
  color: var(--helix-color-foreground-subtle);
91
125
  }
92
126
 
93
- :host(:state(checked)) svg[part="mark"] {
127
+ :host(:state(checked)) svg[part="mark"],
128
+ slot[name="check"]::slotted(*) {
94
129
  color: var(--helix-color-foreground);
95
130
  }
96
131
 
@@ -1,5 +1,6 @@
1
1
  import { HelixHeadlessMenuItem } from '@fusion.dev/helix-headless/menu';
2
2
  import type { CSSResultGroup } from 'lit';
3
+ import '../../kbd/index.js';
3
4
  /**
4
5
  * @summary One row in a menu: a command, a choice, or a way into a submenu.
5
6
  *
@@ -16,11 +17,14 @@ import type { CSSResultGroup } from 'lit';
16
17
  * @aliases Menu option, Menu row
17
18
  * @documentation https://fusion.dev/helix/components/menu
18
19
  *
20
+ * @cssproperty --menu-item-description-color - Color of the line under the label.
21
+ * @cssproperty --menu-item-detail-color - Color of the shortcut and the words in the `end` slot.
19
22
  * @cssproperty --menu-item-end - Width of the trailing column, including the gap before it, which holds a check mark or a submenu caret.
20
23
  * @cssproperty --menu-item-hover-color - Fill under the pointer.
21
24
  * @cssproperty --menu-item-start - Width of the leading column, including the gap after it, for a row with more than a mark. The menu sets it for each page, and `0` removes the column.
22
25
  */
23
26
  export declare class HelixMenuItem extends HelixHeadlessMenuItem {
27
+ static tier: string;
24
28
  static styles: CSSResultGroup;
25
29
  }
26
30
  declare global {
@@ -6,8 +6,10 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
6
6
  };
7
7
  import { customElement } from '@fusion.dev/helix-core';
8
8
  import { HelixHeadlessMenuItem } from '@fusion.dev/helix-headless/menu';
9
+ import '../../kbd/index.js';
9
10
  import { styles } from './menu-item.css.js';
10
11
  let HelixMenuItem = class HelixMenuItem extends HelixHeadlessMenuItem {
12
+ static { this.tier = 'helix-'; }
11
13
  static { this.styles = styles; }
12
14
  };
13
15
  HelixMenuItem = __decorate([
@@ -0,0 +1 @@
1
+ export declare const styles: import("lit").CSSResult;
@@ -0,0 +1,14 @@
1
+ import { createSheet } from '@fusion.dev/helix-core';
2
+ export const styles = createSheet(`:host {
3
+ display: block;
4
+ }
5
+
6
+ [part="heading"] {
7
+ color: var(--menu-section-heading-color, var(--helix-color-foreground-subtle));
8
+ font-size: var(--helix-text-xs);
9
+ font-weight: var(--helix-weight-medium);
10
+ line-height: var(--helix-leading-normal);
11
+ padding-block: var(--helix-space-xs) var(--helix-space-2xs);
12
+ padding-inline: var(--helix-space-sm);
13
+ user-select: none;
14
+ }`);
@@ -0,0 +1,24 @@
1
+ import { HelixHeadlessMenuSection } from '@fusion.dev/helix-headless/menu';
2
+ import type { CSSResultGroup } from 'lit';
3
+ /**
4
+ * @summary A group of rows in a menu, under a heading.
5
+ *
6
+ * @description
7
+ * The heading is set in the menu's small type, quieter than the rows, with the
8
+ * rows' own inset, so it reads as the name of what follows.
9
+ *
10
+ * @since 0.1.0
11
+ * @status stable
12
+ * @aliases Menu group, Menu heading
13
+ * @documentation https://fusion.dev/helix/components/menu
14
+ *
15
+ * @cssproperty --menu-section-heading-color - Color of the heading.
16
+ */
17
+ export declare class HelixMenuSection extends HelixHeadlessMenuSection {
18
+ static styles: CSSResultGroup;
19
+ }
20
+ declare global {
21
+ interface HTMLElementTagNameMap {
22
+ 'helix-menu-section': HelixMenuSection;
23
+ }
24
+ }
@@ -0,0 +1,16 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { customElement } from '@fusion.dev/helix-core';
8
+ import { HelixHeadlessMenuSection } from '@fusion.dev/helix-headless/menu';
9
+ import { styles } from './menu-section.css.js';
10
+ let HelixMenuSection = class HelixMenuSection extends HelixHeadlessMenuSection {
11
+ static { this.styles = styles; }
12
+ };
13
+ HelixMenuSection = __decorate([
14
+ customElement('helix-menu-section')
15
+ ], HelixMenuSection);
16
+ export { HelixMenuSection };
@@ -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
  /**
@@ -6,7 +6,7 @@ display: block;
6
6
  [part="nav"] {
7
7
  align-items: center;
8
8
 
9
- block-size: var(--helix-size-control-sm);
9
+ block-size: var(--navigation-block-size, var(--helix-size-control-sm));
10
10
  display: flex;
11
11
  gap: var(--navigation-gap, var(--helix-space-2xs));
12
12
 
@@ -19,7 +19,8 @@ position: relative;
19
19
  [part="indicator"] {
20
20
  background-color: var(--navigation-indicator-color, var(--helix-color-surface-sunken));
21
21
  block-size: var(--indicator-block-size, 0);
22
- border-radius: var(--helix-radii-sm);
22
+ border-radius: var(--navigation-indicator-radius, var(--helix-radii-sm));
23
+ box-shadow: var(--navigation-indicator-shadow, none);
23
24
  inline-size: var(--indicator-inline-size, 0);
24
25
  inset-block-start: 50%;
25
26
  inset-inline-start: 0;
@@ -14,8 +14,21 @@ import type { CSSResultGroup } from 'lit';
14
14
  * @aliases Nav, NavList, Tabs
15
15
  * @documentation https://fusion.dev/helix/components/navigation
16
16
  *
17
+ * @cssproperty --navigation-block-size - Height of the bar in a row. Each destination fills it.
17
18
  * @cssproperty --navigation-gap - Space between destinations.
18
19
  * @cssproperty --navigation-indicator-color - Fill of the marker on the current destination.
20
+ * @cssproperty --navigation-indicator-radius - Corner radius of the marker.
21
+ * @cssproperty --navigation-indicator-shadow - Shadow under the marker, for a marker that sits
22
+ * raised on the bar.
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
+ * @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.
19
32
  */
20
33
  export declare class HelixNavigation extends HelixHeadlessNavigation {
21
34
  static styles: CSSResultGroup;
@@ -71,6 +71,34 @@ transition: color var(--helix-duration-fast) var(--helix-easing-standard);
71
71
  color: var(--helix-color-foreground);
72
72
  }
73
73
 
74
+ [part="more"] {
75
+ background: none;
76
+ border: 0;
77
+ border-block-start: var(--helix-border-thin) solid var(--helix-color-border);
78
+ color: var(--helix-color-foreground-muted);
79
+ cursor: pointer;
80
+ font-family: var(--helix-font-sans);
81
+ font-size: var(--helix-text-sm);
82
+ inline-size: 100%;
83
+ padding-block: var(--helix-space-sm);
84
+ transition: color var(--helix-duration-fast) var(--helix-easing-standard);
85
+ }
86
+
87
+ [part="more"]:hover {
88
+ color: var(--helix-color-foreground);
89
+ }
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
+
97
+ [part="more"]:focus-visible {
98
+ outline: var(--helix-size-focus-ring) solid var(--helix-color-focus-ring);
99
+ outline-offset: calc(var(--helix-size-focus-offset) * -1);
100
+ }
101
+
74
102
  [part="mark-all"]:focus-visible {
75
103
  outline: var(--helix-size-focus-ring) solid var(--helix-color-focus-ring);
76
104
  outline-offset: var(--helix-size-focus-offset);
@@ -91,7 +119,8 @@ max-block-size: none;
91
119
  overflow-y: visible;
92
120
  }
93
121
 
94
- [part="mark-all"] {
122
+ [part="mark-all"],
123
+ [part="more"] {
95
124
  display: none;
96
125
  }
97
126
  }`);
@@ -25,6 +25,7 @@ import '../notification/notification.js';
25
25
  * @csspart list - The list itself.
26
26
  * @csspart live - A copy of the empty and loading messages, in a live region that screen readers announce when they change. Visually hidden in the styled tier.
27
27
  * @csspart mark-all - The control that marks everything read.
28
+ * @csspart more - The button after the list that asks for more, while `load-more` is set and the feed is not loading.
28
29
  *
29
30
  * @cssproperty --notifications-max-block-size - How tall the feed may get before the list scrolls.
30
31
  * @cssproperty --notifications-media-column - Width of the media column that every item keeps when any item in the feed has media.
@@ -23,7 +23,7 @@ background-color: transparent;
23
23
 
24
24
  [part="control"] {
25
25
  font-variant-numeric: tabular-nums;
26
- padding-inline: var(--helix-space-xs);
26
+ padding-inline: var(--number-input-padding-inline, var(--helix-space-xs));
27
27
  text-align: center;
28
28
  }
29
29
 
@@ -46,12 +46,13 @@ padding-inline-end: var(--helix-space-xs);
46
46
  all: unset;
47
47
  align-items: center;
48
48
  align-self: stretch;
49
+ background-color: var(--number-input-stepper-background-color, transparent);
49
50
  box-sizing: border-box;
50
- color: var(--helix-color-foreground-muted);
51
+ color: var(--number-input-stepper-color, var(--helix-color-foreground-muted));
51
52
  cursor: pointer;
52
53
  display: flex;
53
54
  flex: none;
54
- inline-size: var(--helix-size-control);
55
+ inline-size: var(--number-input-stepper-size, var(--helix-size-control));
55
56
  justify-content: center;
56
57
  transition:
57
58
  background-color var(--helix-duration-fast) var(--helix-easing-standard),
@@ -59,17 +60,19 @@ color var(--helix-duration-fast) var(--helix-easing-standard);
59
60
  }
60
61
 
61
62
  [part="decrement"] {
62
- border-inline-end: var(--helix-border-thin) solid var(--helix-color-border);
63
+ border-inline-end: var(--helix-border-thin) solid
64
+ var(--number-input-stepper-border-color, var(--helix-color-border));
63
65
  }
64
66
 
65
67
  [part="increment"] {
66
- border-inline-start: var(--helix-border-thin) solid var(--helix-color-border);
68
+ border-inline-start: var(--helix-border-thin) solid
69
+ var(--number-input-stepper-border-color, var(--helix-color-border));
67
70
  }
68
71
 
69
72
  [part="decrement"]:hover:not(:disabled),
70
73
  [part="increment"]:hover:not(:disabled) {
71
- background-color: var(--helix-color-surface);
72
- color: var(--helix-color-foreground);
74
+ background-color: var(--number-input-stepper-background-color-hover, var(--helix-color-surface));
75
+ color: var(--number-input-stepper-color-hover, var(--helix-color-foreground));
73
76
  }
74
77
 
75
78
  [part="decrement"]:disabled,
@@ -80,8 +83,8 @@ opacity: 0.4;
80
83
 
81
84
  [part="decrement"] svg,
82
85
  [part="increment"] svg {
83
- block-size: var(--helix-size-icon-tight);
84
- inline-size: var(--helix-size-icon-tight);
86
+ block-size: var(--number-input-stepper-icon-size, var(--helix-size-icon-tight));
87
+ inline-size: var(--number-input-stepper-icon-size, var(--helix-size-icon-tight));
85
88
  }
86
89
 
87
90
  :host([scrub]) [part="label"] {
@@ -34,8 +34,16 @@ import type { CSSResultGroup } from 'lit';
34
34
  *
35
35
  * @cssproperty --number-input-background-color - The fill behind the number.
36
36
  * @cssproperty --number-input-border-color - Edge of the field at rest. Hover, focus and an error still draw their own.
37
+ * @cssproperty --number-input-padding-inline - Space at each side of the number, inside the steppers.
37
38
  * @cssproperty --number-input-radius - Corner radius of the field.
38
39
  * @cssproperty --number-input-size - Height of the field.
40
+ * @cssproperty --number-input-stepper-background-color - Fill behind each stepper button at rest.
41
+ * @cssproperty --number-input-stepper-background-color-hover - Fill behind a stepper button under the pointer.
42
+ * @cssproperty --number-input-stepper-border-color - The rule between each stepper button and the number.
43
+ * @cssproperty --number-input-stepper-color - Icon color of the stepper buttons at rest.
44
+ * @cssproperty --number-input-stepper-color-hover - Icon color of a stepper button under the pointer.
45
+ * @cssproperty --number-input-stepper-icon-size - Width and height of the stepper icons.
46
+ * @cssproperty --number-input-stepper-size - Width of each stepper button.
39
47
  */
40
48
  export declare class HelixNumberInput extends HelixHeadlessNumberInput {
41
49
  static styles: CSSResultGroup;
@@ -42,7 +42,31 @@ line-height: var(--helix-leading-normal);
42
42
  padding-block: var(--helix-space-xs);
43
43
  }
44
44
 
45
- [part="header"] + [part="frame"] [part="tree"] {
45
+ [part="search-field"] {
46
+ appearance: none;
47
+ background-color: var(--object-inspector-background-color, var(--helix-color-background));
48
+ border: var(--helix-border-thin) solid
49
+ var(--object-inspector-border-color, var(--helix-color-border));
50
+ border-block-end: none;
51
+ border-start-end-radius: var(--object-inspector-radius, var(--helix-radii-lg));
52
+ border-start-start-radius: var(--object-inspector-radius, var(--helix-radii-lg));
53
+ box-sizing: border-box;
54
+ color: var(--helix-color-foreground);
55
+ font-family: var(--helix-font-sans);
56
+ font-size: var(--helix-text-sm);
57
+ inline-size: 100%;
58
+ margin: 0;
59
+ padding-block: var(--helix-space-xs);
60
+ padding-inline: var(--helix-space-md);
61
+ }
62
+
63
+ [part="search-field"]:focus-visible {
64
+ outline: var(--helix-size-focus-ring) solid var(--helix-color-focus-ring);
65
+ outline-offset: calc(var(--helix-size-focus-offset) * -1);
66
+ }
67
+
68
+ [part="header"] + [part="search-field"],
69
+ :is([part="header"], [part="search-field"]) ~ [part="frame"] [part="tree"] {
46
70
  border-start-end-radius: var(--helix-radii-none);
47
71
  border-start-start-radius: var(--helix-radii-none);
48
72
  }
@@ -53,10 +77,6 @@ overflow-y: auto;
53
77
  overscroll-behavior: contain;
54
78
  }
55
79
 
56
- [part="tree"]:focus-visible {
57
- outline: none;
58
- }
59
-
60
80
  [part~="row"] {
61
81
  cursor: default;
62
82
  overflow: hidden;
@@ -81,15 +101,22 @@ var(--helix-space-sm)
81
101
  );
82
102
  }
83
103
 
84
- [part="tree"]:focus [part~="row-active"] {
104
+ [part="tree"]:focus-within [part~="row-active"] {
85
105
  background-color: var(--helix-color-surface-sunken);
86
106
  }
87
107
 
88
- [part="tree"]:focus-visible [part~="row-active"] {
108
+ [part~="row"]:focus-visible {
89
109
  outline: var(--helix-size-focus-ring) solid var(--helix-color-focus-ring);
90
110
  outline-offset: calc(var(--helix-size-focus-offset) * -1);
91
111
  }
92
112
 
113
+ [part~="row-match"] {
114
+ background-color: var(
115
+ --object-inspector-match-background-color,
116
+ var(--helix-color-accent-subtle)
117
+ );
118
+ }
119
+
93
120
  [part="toggle"] {
94
121
  block-size: 1em;
95
122
  color: var(--helix-color-foreground-muted);
@@ -102,6 +129,10 @@ vertical-align: -0.125em;
102
129
  color: var(--helix-color-syntax-name);
103
130
  }
104
131
 
132
+ [part~="row-match"] [part="key"] {
133
+ color: var(--helix-color-foreground);
134
+ }
135
+
105
136
  [part="string"] {
106
137
  color: var(--helix-color-syntax-string);
107
138
  }