@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
@@ -1,9 +1,17 @@
1
1
  import { createSheet } from '@fusion.dev/helix-core';
2
2
  export const styles = createSheet(`:host {
3
- display: grid;
4
3
 
5
- gap: var(--helix-space-none);
4
+ --_grid-column-gap: var(--_grid-gap);
5
+
6
+ --_grid-gap: var(--helix-space-none);
7
+ --_grid-row-gap: var(--_grid-gap);
8
+
9
+ column-gap: var(--_grid-column-gap);
10
+ display: grid;
11
+ grid-template-areas: var(--grid-areas, none);
6
12
  grid-template-columns: var(--grid-columns, var(--_grid-template, minmax(0, 1fr)));
13
+ grid-template-rows: var(--grid-rows, none);
14
+ row-gap: var(--_grid-row-gap);
7
15
  }
8
16
 
9
17
  :host([columns="2"]) {
@@ -23,33 +31,89 @@ grid-template-columns: var(--grid-columns, var(--_grid-template, repeat(6, minma
23
31
  }
24
32
 
25
33
  :host([gap="none"]) {
26
- gap: var(--helix-space-none);
34
+ --_grid-gap: var(--helix-space-none);
27
35
  }
28
36
  :host([gap="2xs"]) {
29
- gap: var(--helix-space-2xs);
37
+ --_grid-gap: var(--helix-space-2xs);
30
38
  }
31
39
  :host([gap="xs"]) {
32
- gap: var(--helix-space-xs);
40
+ --_grid-gap: var(--helix-space-xs);
33
41
  }
34
42
  :host([gap="sm"]) {
35
- gap: var(--helix-space-sm);
43
+ --_grid-gap: var(--helix-space-sm);
36
44
  }
37
45
 
38
46
  :host([gap="md"]) {
39
- gap: var(--helix-space-md);
47
+ --_grid-gap: var(--helix-space-md);
40
48
  }
41
49
  :host([gap="lg"]) {
42
- gap: var(--helix-space-lg);
50
+ --_grid-gap: var(--helix-space-lg);
43
51
  }
44
52
  :host([gap="xl"]) {
45
- gap: var(--helix-space-xl);
53
+ --_grid-gap: var(--helix-space-xl);
46
54
  }
47
55
  :host([gap="2xl"]) {
48
- gap: var(--helix-space-2xl);
56
+ --_grid-gap: var(--helix-space-2xl);
49
57
  }
50
58
 
51
59
  :host([gap="3xl"]) {
52
- gap: var(--helix-space-3xl);
60
+ --_grid-gap: var(--helix-space-3xl);
61
+ }
62
+
63
+ :host([row-gap="none"]) {
64
+ --_grid-row-gap: var(--helix-space-none);
65
+ }
66
+ :host([row-gap="2xs"]) {
67
+ --_grid-row-gap: var(--helix-space-2xs);
68
+ }
69
+ :host([row-gap="xs"]) {
70
+ --_grid-row-gap: var(--helix-space-xs);
71
+ }
72
+ :host([row-gap="sm"]) {
73
+ --_grid-row-gap: var(--helix-space-sm);
74
+ }
75
+ :host([row-gap="md"]) {
76
+ --_grid-row-gap: var(--helix-space-md);
77
+ }
78
+ :host([row-gap="lg"]) {
79
+ --_grid-row-gap: var(--helix-space-lg);
80
+ }
81
+ :host([row-gap="xl"]) {
82
+ --_grid-row-gap: var(--helix-space-xl);
83
+ }
84
+ :host([row-gap="2xl"]) {
85
+ --_grid-row-gap: var(--helix-space-2xl);
86
+ }
87
+ :host([row-gap="3xl"]) {
88
+ --_grid-row-gap: var(--helix-space-3xl);
89
+ }
90
+
91
+ :host([column-gap="none"]) {
92
+ --_grid-column-gap: var(--helix-space-none);
93
+ }
94
+ :host([column-gap="2xs"]) {
95
+ --_grid-column-gap: var(--helix-space-2xs);
96
+ }
97
+ :host([column-gap="xs"]) {
98
+ --_grid-column-gap: var(--helix-space-xs);
99
+ }
100
+ :host([column-gap="sm"]) {
101
+ --_grid-column-gap: var(--helix-space-sm);
102
+ }
103
+ :host([column-gap="md"]) {
104
+ --_grid-column-gap: var(--helix-space-md);
105
+ }
106
+ :host([column-gap="lg"]) {
107
+ --_grid-column-gap: var(--helix-space-lg);
108
+ }
109
+ :host([column-gap="xl"]) {
110
+ --_grid-column-gap: var(--helix-space-xl);
111
+ }
112
+ :host([column-gap="2xl"]) {
113
+ --_grid-column-gap: var(--helix-space-2xl);
114
+ }
115
+ :host([column-gap="3xl"]) {
116
+ --_grid-column-gap: var(--helix-space-3xl);
53
117
  }
54
118
 
55
119
  :host([align-items="start"]) {
@@ -62,6 +126,45 @@ align-items: center;
62
126
  align-items: end;
63
127
  }
64
128
 
129
+ :host([justify-items="start"]) {
130
+ justify-items: start;
131
+ }
132
+ :host([justify-items="center"]) {
133
+ justify-items: center;
134
+ }
135
+ :host([justify-items="end"]) {
136
+ justify-items: end;
137
+ }
138
+
139
+ :host([auto-flow="column"]) {
140
+ grid-auto-flow: column;
141
+ }
142
+ :host([auto-flow="dense"]) {
143
+ grid-auto-flow: dense;
144
+ }
145
+ :host([auto-flow="column-dense"]) {
146
+ grid-auto-flow: column dense;
147
+ }
148
+
149
+ ::slotted([data-grid-span="full"]) {
150
+ grid-column: 1 / -1;
151
+ }
152
+ ::slotted([data-grid-span="2"]) {
153
+ grid-column: span 2;
154
+ }
155
+ ::slotted([data-grid-span="3"]) {
156
+ grid-column: span 3;
157
+ }
158
+ ::slotted([data-grid-span="4"]) {
159
+ grid-column: span 4;
160
+ }
161
+ ::slotted([data-grid-span="5"]) {
162
+ grid-column: span 5;
163
+ }
164
+ ::slotted([data-grid-span="6"]) {
165
+ grid-column: span 6;
166
+ }
167
+
65
168
  @media print {
66
169
  :host {
67
170
  print-color-adjust: economy;
@@ -13,6 +13,17 @@ import type { CSSResultGroup, PropertyValues, TemplateResult } from 'lit';
13
13
  * If you set both, `min` wins. The grid is presentation only, so there is no
14
14
  * headless tier.
15
15
  *
16
+ * `row-gap` and `column-gap` set one axis each and win over `gap` on theirs.
17
+ * `--grid-rows` and `--grid-areas` set the rows and named areas, and a child
18
+ * takes its place with `grid-area` in your own stylesheet.
19
+ *
20
+ * **A child can span columns with `data-grid-span`.** `data-grid-span="full"`
21
+ * runs from the first column to the last, such as a heading across a set of
22
+ * cards, and a number from `2` to `6` spans that many columns. A number wider
23
+ * than the grid adds columns of no width beside the real ones, as CSS does,
24
+ * so in a `min` grid, whose count changes with its width, use `full` for a
25
+ * child that must span them all.
26
+ *
16
27
  * @since 0.1.0
17
28
  * @status stable
18
29
  * @category layout
@@ -21,7 +32,9 @@ import type { CSSResultGroup, PropertyValues, TemplateResult } from 'lit';
21
32
  *
22
33
  * @slot - The items to lay out.
23
34
  *
35
+ * @cssproperty --grid-areas - The named areas, as `grid-template-areas` takes them, such as `"rail main"`. A child takes its area with `grid-area`.
24
36
  * @cssproperty --grid-columns - An explicit track list. It overrides `min` and `columns`. Use it for tracks of unequal widths, which neither attribute can set.
37
+ * @cssproperty --grid-rows - An explicit row track list, such as `auto minmax(0, 1fr) auto`. Rows are sized by their content when it is unset.
25
38
  */
26
39
  export declare class HelixGrid extends HelixElement {
27
40
  /**
@@ -40,6 +53,21 @@ export declare class HelixGrid extends HelixElement {
40
53
  * wide its tracks are.
41
54
  */
42
55
  alignItems?: 'start' | 'center' | 'end' | 'stretch';
56
+ /**
57
+ * How cells fill the grid when no child places itself, set as
58
+ * `grid-auto-flow`.
59
+ *
60
+ * `column` fills each column before the next. `dense` and `column-dense`
61
+ * also move a later small cell back into an earlier gap. Moving them changes
62
+ * only where they are drawn, so focus and a screen reader still follow the
63
+ * markup.
64
+ */
65
+ autoFlow?: 'row' | 'column' | 'dense' | 'column-dense';
66
+ /**
67
+ * The space between columns, as a step on the space scale. Wins over `gap`
68
+ * across the row.
69
+ */
70
+ columnGap?: 'none' | '2xs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl';
43
71
  /**
44
72
  * A fixed number of equal columns.
45
73
  *
@@ -51,6 +79,13 @@ export declare class HelixGrid extends HelixElement {
51
79
  * The space between cells, as a step on the space scale.
52
80
  */
53
81
  gap?: 'none' | '2xs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl';
82
+ /**
83
+ * How each cell aligns within its column. Sets `justify-items`.
84
+ *
85
+ * Named for the CSS property it sets, the way `alignItems` is. Absent, every
86
+ * cell stretches to the width of its column.
87
+ */
88
+ justifyItems?: 'start' | 'center' | 'end' | 'stretch';
54
89
  /**
55
90
  * The minimum column width. The grid fits as many columns as the width allows.
56
91
  *
@@ -62,6 +97,11 @@ export declare class HelixGrid extends HelixElement {
62
97
  * is two intentions in one element.
63
98
  */
64
99
  min: string;
100
+ /**
101
+ * The space between rows, as a step on the space scale. Wins over `gap` down
102
+ * the column.
103
+ */
104
+ rowGap?: 'none' | '2xs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl';
65
105
  /**
66
106
  * The rule the shadow root's own `<style>` holds: the reset, and the track
67
107
  * list `min` or an unlisted `columns` asks for.
@@ -8,7 +8,7 @@ import { customElement, HelixElement, reportRuntime } from '@fusion.dev/helix-co
8
8
  import { property } from 'lit/decorators.js';
9
9
  import { html, unsafeStatic } from 'lit/static-html.js';
10
10
  import { styles } from './grid-root.css.js';
11
- const UNINHERITED = '--grid-columns: initial; --_grid-template: initial;';
11
+ const UNINHERITED = '--grid-areas: initial; --grid-columns: initial; --grid-rows: initial; --_grid-template: initial;';
12
12
  const NUMBER = /^-?(?:\d+\.?\d*|\.\d+)(?:px|r?em|r?ex|r?ch|r?lh|r?ic|r?cap|%|[sdl]?v(?:w|h|i|b|min|max)|cq(?:w|h|i|b|min|max)|cm|mm|in|pt|pc|q)?$/i;
13
13
  const TOKEN = /\s+|(?:calc|clamp|min|max)\(|var\(--[\w-]+|-?(?:\d+\.?\d*|\.\d+)[a-z%]*|[(),+*/-]/giy;
14
14
  const lengthOf = (value) => {
@@ -75,15 +75,27 @@ let HelixGrid = class HelixGrid extends HelixElement {
75
75
  __decorate([
76
76
  property({ attribute: 'align-items', reflect: true })
77
77
  ], HelixGrid.prototype, "alignItems", void 0);
78
+ __decorate([
79
+ property({ attribute: 'auto-flow', reflect: true })
80
+ ], HelixGrid.prototype, "autoFlow", void 0);
81
+ __decorate([
82
+ property({ attribute: 'column-gap', reflect: true })
83
+ ], HelixGrid.prototype, "columnGap", void 0);
78
84
  __decorate([
79
85
  property({ reflect: true, type: Number })
80
86
  ], HelixGrid.prototype, "columns", void 0);
81
87
  __decorate([
82
88
  property({ reflect: true })
83
89
  ], HelixGrid.prototype, "gap", void 0);
90
+ __decorate([
91
+ property({ attribute: 'justify-items', reflect: true })
92
+ ], HelixGrid.prototype, "justifyItems", void 0);
84
93
  __decorate([
85
94
  property()
86
95
  ], HelixGrid.prototype, "min", void 0);
96
+ __decorate([
97
+ property({ attribute: 'row-gap', reflect: true })
98
+ ], HelixGrid.prototype, "rowGap", void 0);
87
99
  HelixGrid = __decorate([
88
100
  customElement('helix-grid')
89
101
  ], HelixGrid);
@@ -119,7 +119,8 @@ outline-offset: var(--helix-size-focus-offset);
119
119
  font-weight: var(--helix-weight-medium);
120
120
  }
121
121
 
122
- [part="live"] {
122
+ [part="live"],
123
+ [part="overview"] {
123
124
  block-size: 1px;
124
125
  clip-path: inset(50%);
125
126
  inline-size: 1px;
@@ -60,7 +60,10 @@ var(--helix-color-foreground)
60
60
 
61
61
  [part="button"] {
62
62
  align-items: center;
63
- background-color: var(--icon-button-background-color, transparent);
63
+ background-color: var(
64
+ --_icon-button-pressed-fill,
65
+ var(--icon-button-background-color, transparent)
66
+ );
64
67
  block-size: var(--_icon-button-size);
65
68
  border: var(--helix-border-thin) solid transparent;
66
69
 
@@ -77,7 +80,10 @@ border-start-start-radius: var(
77
80
  --button-radius-start,
78
81
  var(--icon-button-radius, var(--helix-radii-sm))
79
82
  );
80
- color: var(--icon-button-foreground-color, var(--_icon-button-ink));
83
+ color: var(
84
+ --_icon-button-pressed-ink,
85
+ var(--icon-button-foreground-color, var(--_icon-button-ink))
86
+ );
81
87
  cursor: pointer;
82
88
  display: inline-flex;
83
89
 
@@ -92,13 +98,24 @@ color var(--helix-duration-fast) var(--helix-easing-standard);
92
98
 
93
99
  :host(:not(:disabled)) [part="button"]:hover {
94
100
  background-color: var(
101
+ --_icon-button-pressed-fill,
102
+ var(
95
103
  --icon-button-background-color-hover,
96
104
  var(
97
105
  --icon-button-background-color,
98
106
  color-mix(in oklab, var(--_icon-button-tone) 8%, transparent)
99
107
  )
108
+ )
109
+ );
110
+ color: var(
111
+ --_icon-button-pressed-ink,
112
+ var(--icon-button-foreground-color, var(--_icon-button-ink-hover))
100
113
  );
101
- color: var(--icon-button-foreground-color, var(--_icon-button-ink-hover));
114
+ }
115
+
116
+ :host(:not(:disabled)) [part="button"]:active {
117
+ --_icon-button-pressed-fill: var(--icon-button-background-color-active);
118
+ --_icon-button-pressed-ink: var(--icon-button-foreground-color-active);
102
119
  }
103
120
 
104
121
  :host([shape="circle"]) [part="button"] {
@@ -123,55 +140,91 @@ outline-offset: var(--helix-size-focus-offset);
123
140
  }
124
141
 
125
142
  :host([emphasis="solid"]) [part="button"] {
126
- background-color: var(--icon-button-background-color, var(--_icon-button-fill));
143
+ background-color: var(
144
+ --_icon-button-pressed-fill,
145
+ var(--icon-button-background-color, var(--_icon-button-fill))
146
+ );
127
147
  border-color: transparent;
128
- color: var(--icon-button-foreground-color, var(--_icon-button-on-tone));
148
+ color: var(
149
+ --_icon-button-pressed-ink,
150
+ var(--icon-button-foreground-color, var(--_icon-button-on-tone))
151
+ );
129
152
  }
130
153
  :host(:not(:disabled)[emphasis="solid"]) [part="button"]:hover {
131
154
  background-color: var(
155
+ --_icon-button-pressed-fill,
156
+ var(
132
157
  --icon-button-background-color-hover,
133
158
  var(--icon-button-background-color, var(--_icon-button-fill-hover))
159
+ )
160
+ );
161
+ color: var(
162
+ --_icon-button-pressed-ink,
163
+ var(--icon-button-foreground-color, var(--_icon-button-on-tone))
134
164
  );
135
- color: var(--icon-button-foreground-color, var(--_icon-button-on-tone));
136
165
  }
137
166
 
138
167
  :host([emphasis="outlined"]) [part="button"] {
139
168
  background-color: var(
169
+ --_icon-button-pressed-fill,
170
+ var(
140
171
  --icon-button-background-color,
141
172
  color-mix(in oklab, var(--_icon-button-tone) 6%, transparent)
173
+ )
142
174
  );
143
175
  border-color: var(--_icon-button-edge);
144
- color: var(--icon-button-foreground-color, var(--_icon-button-tone));
176
+ color: var(
177
+ --_icon-button-pressed-ink,
178
+ var(--icon-button-foreground-color, var(--_icon-button-tone))
179
+ );
145
180
  }
146
181
  :host(:not(:disabled)[emphasis="outlined"]) [part="button"]:hover {
147
182
  background-color: var(
183
+ --_icon-button-pressed-fill,
184
+ var(
148
185
  --icon-button-background-color-hover,
149
186
  var(
150
187
  --icon-button-background-color,
151
188
  color-mix(in oklab, var(--_icon-button-tone) 12%, transparent)
152
189
  )
190
+ )
191
+ );
192
+ color: var(
193
+ --_icon-button-pressed-ink,
194
+ var(--icon-button-foreground-color, var(--_icon-button-tone))
153
195
  );
154
- color: var(--icon-button-foreground-color, var(--_icon-button-tone));
155
196
  }
156
197
 
157
198
  :host([emphasis="subtle"]) [part="button"] {
158
199
  background-color: var(
200
+ --_icon-button-pressed-fill,
201
+ var(
159
202
  --icon-button-background-color,
160
203
  color-mix(in oklab, var(--_icon-button-tone) 14%, transparent)
204
+ )
161
205
  );
162
206
  border-color: transparent;
163
- color: var(--icon-button-foreground-color, var(--_icon-button-tone));
207
+ color: var(
208
+ --_icon-button-pressed-ink,
209
+ var(--icon-button-foreground-color, var(--_icon-button-tone))
210
+ );
164
211
  }
165
212
 
166
213
  :host(:not(:disabled)[emphasis="subtle"]) [part="button"]:hover {
167
214
  background-color: var(
215
+ --_icon-button-pressed-fill,
216
+ var(
168
217
  --icon-button-background-color-hover,
169
218
  var(
170
219
  --icon-button-background-color,
171
220
  color-mix(in oklab, var(--_icon-button-tone) 22%, transparent)
172
221
  )
222
+ )
223
+ );
224
+ color: var(
225
+ --_icon-button-pressed-ink,
226
+ var(--icon-button-foreground-color, var(--_icon-button-tone))
173
227
  );
174
- color: var(--icon-button-foreground-color, var(--_icon-button-tone));
175
228
  }
176
229
 
177
230
  :host(:disabled) [part="button"] {
@@ -189,10 +242,12 @@ visibility: hidden;
189
242
  }
190
243
 
191
244
  :host(:state(pending)) [part="button"]::after {
192
- animation: helix-icon-button-turn var(--_icon-button-turn) linear infinite;
245
+ animation: helix-icon-button-turn var(--icon-button-spinner-duration, var(--_icon-button-turn))
246
+ linear infinite;
193
247
  block-size: var(--icon-button-spinner-size, 1.15em);
194
- border: var(--helix-border-thick) solid color-mix(in oklab, currentColor 30%, transparent);
195
- border-block-start-color: currentColor;
248
+ border: var(--helix-border-thick) solid
249
+ color-mix(in oklab, var(--icon-button-spinner-color, currentColor) 30%, transparent);
250
+ border-block-start-color: var(--icon-button-spinner-color, currentColor);
196
251
  border-radius: var(--helix-radii-full);
197
252
  box-sizing: border-box;
198
253
  content: "";
@@ -25,11 +25,15 @@ declare const HelixIconButton_base: (new (...args: any[]) => import("../../share
25
25
  * @csspart live - The live region that says `pending-label` when the button becomes pending under focus. It is clipped out of view and still read.
26
26
  *
27
27
  * @cssproperty --icon-button-background-color - Fill behind the button, in every state.
28
+ * @cssproperty --icon-button-background-color-active - Fill behind the button while it is pressed. Without it, a press shows the fill of the state under it.
28
29
  * @cssproperty --icon-button-background-color-hover - Fill behind the button under the pointer. Without it, `--icon-button-background-color` also applies on hover.
29
30
  * @cssproperty --icon-button-foreground-color - Icon color.
31
+ * @cssproperty --icon-button-foreground-color-active - Icon color while the button is pressed. Without it, a press shows the color of the state under it.
30
32
  * @cssproperty --icon-button-radius - Corner radius of the control, which a group flattens through `--button-radius-start` and `--button-radius-end`.
31
33
  * @cssproperty --icon-button-shadow - Shadow of a raised icon button.
32
34
  * @cssproperty --icon-button-size - Edge length of the control.
35
+ * @cssproperty --icon-button-spinner-color - Color of the ring a pending button turns. It follows the icon's color.
36
+ * @cssproperty --icon-button-spinner-duration - How long the ring takes to turn once.
33
37
  * @cssproperty --icon-button-spinner-size - Size of the ring a pending button turns.
34
38
  *
35
39
  * @cssstate pending - The button is pending: `pending` is set. A ring turns over its hidden icon.
@@ -39,6 +39,33 @@ padding-inline: var(--_kbd-inset);
39
39
  padding-block-start: var(--helix-border-thin);
40
40
  }
41
41
 
42
+ :host([caps]) [part="kbd"] {
43
+ background-color: transparent;
44
+ border: 0;
45
+ box-shadow: none;
46
+ gap: var(--kbd-gap, var(--helix-space-2xs));
47
+ min-inline-size: 0;
48
+ padding: 0;
49
+ }
50
+
51
+ :host([caps]) [part="key"] {
52
+ align-items: center;
53
+ background-color: var(--kbd-background-color, var(--helix-color-surface-sunken));
54
+ block-size: var(--_kbd-height);
55
+ border: var(--helix-border-thin) solid var(--kbd-border-color, var(--helix-color-border));
56
+ border-radius: var(--helix-radii-sm);
57
+ box-shadow: inset 0 -1px 0 0 var(--kbd-border-color, var(--helix-color-border));
58
+ display: inline-flex;
59
+ justify-content: center;
60
+ min-inline-size: var(--_kbd-height);
61
+ padding-block-start: var(--helix-border-thin);
62
+ padding-inline: var(--_kbd-inset);
63
+ }
64
+
65
+ [part="separator"] {
66
+ color: var(--kbd-separator-color, var(--helix-color-foreground-muted));
67
+ }
68
+
42
69
  @media print {
43
70
  :host {
44
71
  box-shadow: none;
@@ -18,6 +18,8 @@ import type { CSSResultGroup } from 'lit';
18
18
  *
19
19
  * @cssproperty --kbd-background-color - The fill of the key.
20
20
  * @cssproperty --kbd-border-color - The color of the key's border and its bottom edge.
21
+ * @cssproperty --kbd-gap - The space between two keys of a chord under `caps`.
22
+ * @cssproperty --kbd-separator-color - The color of the `+` between two keys of a chord under `caps`.
21
23
  */
22
24
  export declare class HelixKbd extends HelixHeadlessKbd {
23
25
  static styles: CSSResultGroup;
@@ -20,6 +20,10 @@ min-inline-size: 0;
20
20
  display: none;
21
21
  }
22
22
 
23
+ [part="item"] {
24
+ transform: translate(var(--lightbox-pan-x), var(--lightbox-pan-y)) scale(var(--lightbox-zoom));
25
+ }
26
+
23
27
  [part="item"] ::slotted(*) {
24
28
  max-block-size: 100%;
25
29
  max-inline-size: 100%;
@@ -114,6 +114,27 @@ block-size: var(--helix-size-icon);
114
114
  inline-size: var(--helix-size-icon);
115
115
  }
116
116
 
117
+ [part="previous"] ::slotted(*),
118
+ [part="next"] ::slotted(*),
119
+ [part="dismiss"] ::slotted(*) {
120
+ --icon-size: var(--helix-size-icon);
121
+
122
+ block-size: var(--helix-size-icon);
123
+ inline-size: var(--helix-size-icon);
124
+ }
125
+
126
+ :host(:state(zoomable)) [part="dialog"] {
127
+ touch-action: none;
128
+ }
129
+
130
+ :host(:state(zoomable)) [part="viewport"] {
131
+ cursor: zoom-in;
132
+ }
133
+
134
+ :host(:state(zoomed)) [part="viewport"] {
135
+ cursor: grab;
136
+ }
137
+
117
138
  [part="previous"]:hover,
118
139
  [part="next"]:hover,
119
140
  [part="dismiss"]:hover {
@@ -133,6 +154,25 @@ cursor: default;
133
154
  opacity: 0.4;
134
155
  }
135
156
 
157
+ [part="counter"] {
158
+ background-color: var(--helix-color-surface-overlay);
159
+ border-radius: var(--helix-radii-full);
160
+ box-shadow: var(--helix-shadow-md);
161
+ color: var(--lightbox-foreground, var(--helix-color-foreground));
162
+ font-family: var(--helix-font-sans);
163
+ font-size: var(--helix-text-sm);
164
+ font-variant-numeric: tabular-nums;
165
+ inset-block-start: var(--lightbox-padding, var(--helix-space-md));
166
+ inset-inline-start: var(--lightbox-padding, var(--helix-space-md));
167
+ line-height: var(--helix-leading-tight);
168
+ padding: var(--helix-space-2xs) var(--helix-space-sm);
169
+ position: absolute;
170
+ transition:
171
+ opacity var(--helix-duration-fast) var(--helix-easing-standard),
172
+ visibility var(--helix-duration-fast) var(--helix-easing-standard);
173
+ }
174
+
175
+ :host(:state(idle)) [part="counter"],
136
176
  :host(:state(idle)) [part="previous"],
137
177
  :host(:state(idle)) [part="next"],
138
178
  :host(:state(idle)) [part="dismiss"] {
@@ -141,6 +181,7 @@ visibility: hidden;
141
181
  }
142
182
 
143
183
  @media (prefers-reduced-motion: reduce) {
184
+ [part="counter"],
144
185
  [part="previous"],
145
186
  [part="next"],
146
187
  [part="dismiss"] {
@@ -61,6 +61,22 @@ stroke: var(--chart-series);
61
61
  color: var(--chart-series);
62
62
  }
63
63
 
64
+ [part~="marker"] {
65
+ background-color: var(--chart-series);
66
+ block-size: var(--line-chart-marker-size, 6px);
67
+ border-radius: var(--helix-radii-full);
68
+ box-shadow: 0 0 0 var(--helix-border-thin)
69
+ var(--line-chart-marker-ring-color, var(--helix-color-background));
70
+ inline-size: var(--line-chart-marker-size, 6px);
71
+ pointer-events: none;
72
+ position: absolute;
73
+ translate: -50% -50%;
74
+ }
75
+
76
+ :host(:dir(rtl)) [part~="marker"] {
77
+ translate: 50% -50%;
78
+ }
79
+
64
80
  :host([terminus="ring"]) [part="svg"] {
65
81
  mask-composite: intersect;
66
82
  mask-image: var(--_line-chart-holes);
@@ -38,6 +38,8 @@ import '../../tooltip/index.js';
38
38
  * @cssproperty --line-chart-block-size - Height of the drawing.
39
39
  * @cssproperty --line-chart-gap - Space between the drawing and its labels.
40
40
  * @cssproperty --line-chart-gridline-color - Color of the rules drawn across the plot under `gridlines`.
41
+ * @cssproperty --line-chart-marker-ring-color - Color of the ring round the mark on a reading, which matches the page. Change it when the chart sits on another surface.
42
+ * @cssproperty --line-chart-marker-size - Size of the mark on a reading, under `markers`.
41
43
  * @cssproperty --line-chart-width - Thickness of a line. Overrides `--chart-stroke`.
42
44
  */
43
45
  export declare class HelixLineChart extends HelixHeadlessLineChart {
@@ -3,7 +3,7 @@ export const styles = createSheet(`:host {
3
3
  display: block;
4
4
  }
5
5
 
6
- [part="row"] {
6
+ [part~="row"] {
7
7
  align-items: center;
8
8
  display: grid;
9
9
 
@@ -72,4 +72,24 @@ grid-row: 1 / span 2;
72
72
  grid-template-columns: subgrid;
73
73
  grid-template-rows: subgrid;
74
74
  text-decoration: none;
75
+ }
76
+
77
+ [part~="row-current"] {
78
+ background-color: var(--list-item-current-background-color, var(--helix-color-well));
79
+ border-radius: var(--helix-radii-sm);
80
+ }
81
+
82
+ [part~="row"]:focus-visible {
83
+ border-radius: var(--helix-radii-sm);
84
+ outline: var(--helix-size-focus-ring) solid var(--helix-color-focus-ring);
85
+ outline-offset: calc(var(--helix-size-focus-offset) * -1);
86
+ }
87
+
88
+ :host(:state(selected)) [part~="row"] {
89
+ background-color: var(--list-item-selected-background-color, var(--helix-color-primary-subtle));
90
+ border-radius: var(--helix-radii-sm);
91
+ }
92
+
93
+ :host([disabled]) {
94
+ opacity: var(--list-item-disabled-opacity, 0.5);
75
95
  }`);
@@ -14,9 +14,12 @@ import { type CSSResultGroup, type TemplateResult } from 'lit';
14
14
  *
15
15
  * @csspart rail - The cell that holds the number in a railed list.
16
16
  *
17
+ * @cssproperty --list-item-current-background-color - The fill behind a row that is `current`.
18
+ * @cssproperty --list-item-disabled-opacity - The opacity of a `disabled` row.
17
19
  * @cssproperty --list-item-padding - The padding inside the row.
18
20
  * @cssproperty --list-item-rail-content - What the rail cell shows. The list sets it.
19
21
  * @cssproperty --list-item-rail-display - Whether the row has a rail. The list sets it.
22
+ * @cssproperty --list-item-selected-background-color - The fill behind a selected row, in a list that selects.
20
23
  * @cssproperty --list-item-term-weight - The font weight of a term in a description list.
21
24
  */
22
25
  export declare class HelixListItem extends HelixHeadlessListItem {