@fusion.dev/helix 0.143.0 → 0.145.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 (211) hide show
  1. package/custom-elements.json +19817 -1238
  2. package/dist/accordion/item/accordion-item.css.js +14 -3
  3. package/dist/accordion/item/accordion-item.d.ts +2 -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 +24 -3
  7. package/dist/aura/root/aura-root.d.ts +42 -7
  8. package/dist/aura/root/aura-root.js +31 -25
  9. package/dist/badge/root/badge-root.css.js +35 -0
  10. package/dist/badge/root/badge-root.d.ts +16 -0
  11. package/dist/badge/root/badge-root.js +3 -0
  12. package/dist/blockquote/root/blockquote-root.css.js +5 -5
  13. package/dist/blockquote/root/blockquote-root.d.ts +5 -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 +1 -1
  17. package/dist/breadcrumbs/root/breadcrumbs-root.d.ts +3 -0
  18. package/dist/breadcrumbs/root/breadcrumbs-root.js +2 -0
  19. package/dist/button/root/button-root.css.js +38 -1
  20. package/dist/button/root/button-root.d.ts +5 -0
  21. package/dist/button/root/button-root.js +2 -1
  22. package/dist/button-group/root/button-group-root.d.ts +3 -0
  23. package/dist/callout/root/callout-root.css.js +69 -11
  24. package/dist/callout/root/callout-root.d.ts +25 -2
  25. package/dist/callout/root/callout-root.js +4 -0
  26. package/dist/canvas/root/canvas-root.css.js +1 -0
  27. package/dist/card/root/card-root.css.js +26 -1
  28. package/dist/card/root/card-root.d.ts +11 -0
  29. package/dist/carousel/root/carousel-root.css.js +17 -1
  30. package/dist/checkbox-group/root/checkbox-group-root.d.ts +2 -0
  31. package/dist/checkbox-group/root/checkbox-group-root.js +2 -0
  32. package/dist/code-block/root/code-block-root.css.js +23 -0
  33. package/dist/code-block/root/code-block-root.d.ts +15 -0
  34. package/dist/code-block/root/code-block-root.js +8 -0
  35. package/dist/color-picker/root/color-picker-root.css.js +64 -0
  36. package/dist/color-picker/root/color-picker-root.d.ts +2 -0
  37. package/dist/copy-button/root/copy-button-root.css.js +5 -0
  38. package/dist/data-table/root/data-table-root.css.js +63 -0
  39. package/dist/data-table/root/data-table-root.d.ts +1 -0
  40. package/dist/date-input/root/date-input-root.css.js +19 -0
  41. package/dist/date-input/root/date-input-root.d.ts +8 -0
  42. package/dist/date-input/root/date-input-root.js +2 -0
  43. package/dist/date-picker/root/date-picker-root.css.js +68 -0
  44. package/dist/date-picker/root/date-picker-root.d.ts +1 -0
  45. package/dist/description-list/item/description-list-item.css.js +11 -0
  46. package/dist/dialog/root/dialog-root.css.js +47 -0
  47. package/dist/divider/root/divider-root.css.js +8 -3
  48. package/dist/divider/root/divider-root.d.ts +17 -1
  49. package/dist/divider/root/divider-root.js +4 -0
  50. package/dist/drawer/root/drawer-root.css.js +28 -1
  51. package/dist/drilldown/item/drilldown-item.css.js +2 -1
  52. package/dist/drilldown/root/drilldown-root.css.js +2 -1
  53. package/dist/element-events.generated.js +66 -14
  54. package/dist/empty/root/empty-root.css.js +9 -9
  55. package/dist/empty/root/empty-root.d.ts +9 -0
  56. package/dist/file-input/root/file-input-root.js +2 -0
  57. package/dist/filter-input/root/filter-input-root.js +2 -0
  58. package/dist/flex/root/flex-root.css.js +134 -9
  59. package/dist/flex/root/flex-root.d.ts +51 -5
  60. package/dist/flex/root/flex-root.js +17 -1
  61. package/dist/grid/root/grid-root.css.js +114 -11
  62. package/dist/grid/root/grid-root.d.ts +37 -0
  63. package/dist/grid/root/grid-root.js +13 -1
  64. package/dist/heatmap/root/heatmap-root.css.js +33 -5
  65. package/dist/heatmap/root/heatmap-root.d.ts +4 -1
  66. package/dist/icon/index.d.ts +1 -0
  67. package/dist/icon/index.js +1 -0
  68. package/dist/icon/root/icon-root.d.ts +1 -1
  69. package/dist/icon/root/icon-root.js +1 -1
  70. package/dist/icon/root/index.d.ts +2 -0
  71. package/dist/icon/root/index.js +2 -0
  72. package/dist/icon-button/root/icon-button-root.css.js +37 -0
  73. package/dist/icon-button/root/icon-button-root.d.ts +4 -0
  74. package/dist/icon-button/root/icon-button-root.js +2 -1
  75. package/dist/input/root/input-root.css.js +3 -3
  76. package/dist/input/root/input-root.d.ts +3 -0
  77. package/dist/legend/root/legend-root.css.js +40 -13
  78. package/dist/legend/root/legend-root.d.ts +6 -0
  79. package/dist/legend/root/legend-root.js +1 -1
  80. package/dist/lightbox/root/lightbox-root.css.js +84 -0
  81. package/dist/lightbox/root/lightbox-root.d.ts +1 -0
  82. package/dist/list/item/list-item.css.js +21 -1
  83. package/dist/list/item/list-item.d.ts +3 -0
  84. package/dist/list/root/list-root.css.js +13 -1
  85. package/dist/loader/root/loader-root.css.js +10 -0
  86. package/dist/loader/root/loader-root.d.ts +3 -0
  87. package/dist/menu/index.d.ts +1 -0
  88. package/dist/menu/index.js +1 -0
  89. package/dist/menu/item/menu-item.css.js +15 -1
  90. package/dist/menu/item/menu-item.d.ts +3 -0
  91. package/dist/menu/item/menu-item.js +2 -0
  92. package/dist/menu/section/menu-section.css.d.ts +1 -0
  93. package/dist/menu/section/menu-section.css.js +14 -0
  94. package/dist/menu/section/menu-section.d.ts +24 -0
  95. package/dist/menu/section/menu-section.js +16 -0
  96. package/dist/meter/root/meter-root.css.js +23 -1
  97. package/dist/meter/root/meter-root.d.ts +5 -0
  98. package/dist/navigation/root/navigation-root.css.js +3 -2
  99. package/dist/navigation/root/navigation-root.d.ts +6 -0
  100. package/dist/notifications/notification/notification.css.js +5 -0
  101. package/dist/notifications/root/notifications-root.css.js +24 -1
  102. package/dist/notifications/root/notifications-root.d.ts +1 -0
  103. package/dist/number-input/root/number-input-root.css.js +3 -3
  104. package/dist/number-input/root/number-input-root.d.ts +3 -0
  105. package/dist/object-inspector/root/object-inspector-root.css.js +36 -1
  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/orb/index.d.ts +1 -1
  109. package/dist/orb/index.js +1 -1
  110. package/dist/orb/root/orb-root.d.ts +31 -5
  111. package/dist/orb/root/orb-root.js +33 -4
  112. package/dist/outline/root/outline-root.css.js +10 -0
  113. package/dist/outline/root/outline-root.d.ts +7 -0
  114. package/dist/pin-input/root/pin-input-root.css.js +12 -5
  115. package/dist/pin-input/root/pin-input-root.d.ts +5 -0
  116. package/dist/popover/root/popover-root.css.js +36 -0
  117. package/dist/popover/root/popover-root.d.ts +1 -0
  118. package/dist/progress/root/progress-root.css.js +22 -1
  119. package/dist/progress/root/progress-root.d.ts +5 -0
  120. package/dist/quote/root/quote-root.css.js +1 -1
  121. package/dist/quote/root/quote-root.d.ts +1 -0
  122. package/dist/sandbox/frame.d.ts +63 -0
  123. package/dist/sandbox/frame.js +132 -0
  124. package/dist/sandbox/index.d.ts +1 -0
  125. package/dist/sandbox/index.js +1 -0
  126. package/dist/sandbox/levels.d.ts +10 -0
  127. package/dist/sandbox/levels.js +5 -0
  128. package/dist/sandbox/root/sandbox-root.d.ts +3 -0
  129. package/dist/sandbox/root/sandbox-root.js +13 -3
  130. package/dist/sandbox/source/sandbox-source.d.ts +1 -0
  131. package/dist/sandbox/source/sandbox-source.js +7 -3
  132. package/dist/sandbox/terminal/sandbox-terminal.css.js +39 -0
  133. package/dist/sandbox/terminal/sandbox-terminal.d.ts +42 -1
  134. package/dist/sandbox/terminal/sandbox-terminal.js +47 -3
  135. package/dist/scroll-area/root/scroll-area-root.css.js +83 -1
  136. package/dist/scroll-area/root/scroll-area-root.d.ts +6 -0
  137. package/dist/shared/chart/tooltip.css.js +25 -2
  138. package/dist/shared/field/field-segments.css.d.ts +1 -0
  139. package/dist/shared/field/field-segments.css.js +40 -0
  140. package/dist/skeleton/root/skeleton-root.css.js +56 -5
  141. package/dist/skeleton/root/skeleton-root.d.ts +17 -1
  142. package/dist/skeleton/root/skeleton-root.js +3 -0
  143. package/dist/skip-link/root/skip-link-root.css.js +8 -8
  144. package/dist/skip-link/root/skip-link-root.d.ts +9 -0
  145. package/dist/speed-dial/item/speed-dial-item.css.js +11 -4
  146. package/dist/speed-dial/item/speed-dial-item.d.ts +4 -0
  147. package/dist/speed-dial/root/speed-dial-root.css.js +7 -3
  148. package/dist/speed-dial/root/speed-dial-root.d.ts +9 -0
  149. package/dist/speed-dial/root/speed-dial-root.js +4 -0
  150. package/dist/stat/root/stat-root.css.js +7 -7
  151. package/dist/stat/root/stat-root.d.ts +8 -0
  152. package/dist/steps/step/step.js +2 -1
  153. package/dist/switch/root/switch-root.css.js +13 -5
  154. package/dist/switch/root/switch-root.d.ts +25 -1
  155. package/dist/switch/root/switch-root.js +7 -0
  156. package/dist/table/root/table-root.css.js +18 -0
  157. package/dist/table/root/table-root.d.ts +6 -0
  158. package/dist/table/root/table-root.js +2 -0
  159. package/dist/table/row/table-row.css.js +18 -0
  160. package/dist/table/row/table-row.d.ts +2 -0
  161. package/dist/table/row/table-row.js +2 -0
  162. package/dist/tabs/panel/tab-panel.css.js +5 -1
  163. package/dist/tabs/root/tabs-root.css.js +56 -1
  164. package/dist/tabs/tab/tab.css.js +5 -1
  165. package/dist/tag/group/tag-group.css.d.ts +1 -0
  166. package/dist/tag/group/tag-group.css.js +6 -0
  167. package/dist/tag/group/tag-group.d.ts +25 -0
  168. package/dist/tag/group/tag-group.js +16 -0
  169. package/dist/tag/index.d.ts +1 -0
  170. package/dist/tag/index.js +1 -0
  171. package/dist/tag/root/tag-root.css.js +50 -0
  172. package/dist/tag/root/tag-root.d.ts +4 -0
  173. package/dist/text/clamp.d.ts +8 -0
  174. package/dist/text/clamp.js +1 -0
  175. package/dist/text/root/text-root.css.js +85 -45
  176. package/dist/text/root/text-root.d.ts +48 -7
  177. package/dist/text/root/text-root.js +17 -11
  178. package/dist/textarea/root/textarea-root.css.js +12 -4
  179. package/dist/textarea/root/textarea-root.d.ts +4 -0
  180. package/dist/time-input/root/time-input-root.css.js +19 -0
  181. package/dist/time-input/root/time-input-root.d.ts +8 -0
  182. package/dist/time-input/root/time-input-root.js +2 -0
  183. package/dist/timeline/group/timeline-group.css.d.ts +1 -0
  184. package/dist/timeline/group/timeline-group.css.js +32 -0
  185. package/dist/timeline/group/timeline-group.d.ts +25 -0
  186. package/dist/timeline/group/timeline-group.js +16 -0
  187. package/dist/timeline/index.d.ts +1 -0
  188. package/dist/timeline/index.js +1 -0
  189. package/dist/timeline/item/timeline-item.css.js +43 -16
  190. package/dist/timeline/root/timeline-root.css.js +56 -0
  191. package/dist/timeline/root/timeline-root.d.ts +26 -0
  192. package/dist/timeline/root/timeline-root.js +7 -0
  193. package/dist/toast/item/toast-item.css.js +16 -0
  194. package/dist/toggle/group/toggle-group.css.js +16 -0
  195. package/dist/toolbar/root/toolbar-root.css.js +3 -0
  196. package/dist/toolbar/root/toolbar-root.d.ts +3 -0
  197. package/dist/tour/root/tour-root.css.js +8 -0
  198. package/dist/tour/stop/tour-stop.css.js +32 -0
  199. package/dist/tree/item/tree-item.css.js +72 -0
  200. package/dist/tree/item/tree-item.d.ts +10 -0
  201. package/dist/trend/root/trend-root.css.js +12 -5
  202. package/dist/trend/root/trend-root.d.ts +6 -1
  203. package/dist/video/root/video-root.css.js +6 -0
  204. package/dist/video/root/video-root.d.ts +3 -0
  205. package/dist/virtual-list/root/virtual-list-root.css.js +5 -0
  206. package/dist/virtual-list/root/virtual-list-root.d.ts +4 -3
  207. package/lint.json +1 -1
  208. package/package.json +6 -6
  209. package/types/jsx.d.ts +8620 -813
  210. package/types/svelte.d.ts +3 -0
  211. package/types/vue.d.ts +2372 -213
@@ -77,6 +77,25 @@ flex-basis: 0;
77
77
  min-inline-size: var(--helix-size-icon-loose);
78
78
  }
79
79
 
80
+ [part="segments"] {
81
+ --_segment-focus-background-color: var(
82
+ --date-input-segment-focus-background-color,
83
+ var(--helix-color-primary)
84
+ );
85
+ --_segment-focus-color: var(
86
+ --date-input-segment-focus-color,
87
+ var(--helix-color-foreground-on-primary)
88
+ );
89
+ --_segment-literal-color: var(
90
+ --date-input-segment-literal-color,
91
+ var(--helix-color-foreground-muted)
92
+ );
93
+ --_segment-placeholder-color: var(
94
+ --date-input-segment-placeholder-color,
95
+ var(--helix-color-foreground-subtle)
96
+ );
97
+ }
98
+
80
99
  @media print {
81
100
  :host {
82
101
  print-color-adjust: exact;
@@ -27,6 +27,14 @@ import '../../tag/index.js';
27
27
  * @cssproperty --date-input-border-width - The width of the panel's border. It
28
28
  * follows `--helix-border-floating`, which is `0`, so the panel stands out by its
29
29
  * shadow unless a theme sets a border.
30
+ * @cssproperty --date-input-segment-focus-background-color - The fill behind the
31
+ * segment with focus, in `segmented`. It follows `--helix-color-primary`.
32
+ * @cssproperty --date-input-segment-focus-color - The text of the segment with
33
+ * focus, in `segmented`.
34
+ * @cssproperty --date-input-segment-literal-color - The text the locale writes
35
+ * between two segments, in `segmented`.
36
+ * @cssproperty --date-input-segment-placeholder-color - The dashes of a segment
37
+ * with nothing in it, in `segmented`. It matches the text field's placeholder.
30
38
  * @cssproperty --date-input-shadow - The shadow under the panel. It follows
31
39
  * `--helix-shadow-floating`. The panel can sit over any content, so it has a
32
40
  * shadow by default.
@@ -10,6 +10,7 @@ import '../../date-picker/index.js';
10
10
  import '../../tag/index.js';
11
11
  import { styles as fieldStyles } from '../../shared/field/field.css.js';
12
12
  import { styles as fieldFrameStyles } from '../../shared/field/field-frame.css.js';
13
+ import { styles as fieldSegmentsStyles } from '../../shared/field/field-segments.css.js';
13
14
  import { styles as fieldStackedStyles } from '../../shared/field/field-stacked.css.js';
14
15
  import { styles as floatingEntranceStyles } from '../../shared/floating/entrance.css.js';
15
16
  import { styles as floatingPanelStyles } from '../../shared/floating/panel.css.js';
@@ -21,6 +22,7 @@ let HelixDateInput = class HelixDateInput extends HelixHeadlessDateInput {
21
22
  fieldStyles,
22
23
  fieldFrameStyles,
23
24
  fieldStackedStyles,
25
+ fieldSegmentsStyles,
24
26
  tagRowStyles,
25
27
  floatingPanelStyles,
26
28
  floatingEntranceStyles,
@@ -68,6 +68,74 @@ outline: var(--helix-size-focus-ring) solid var(--helix-color-focus-ring);
68
68
  outline-offset: var(--helix-size-focus-offset);
69
69
  }
70
70
 
71
+ [part="heading-button"] {
72
+ all: unset;
73
+ box-sizing: border-box;
74
+ border-radius: var(--helix-radii-sm);
75
+ cursor: pointer;
76
+ padding-inline: var(--helix-space-2xs);
77
+ }
78
+
79
+ [part="heading-button"]:hover:not(:disabled) {
80
+ background-color: var(--helix-color-surface-sunken);
81
+ }
82
+
83
+ [part="heading-button"]:focus-visible {
84
+ outline: var(--helix-size-focus-ring) solid var(--helix-color-focus-ring);
85
+ outline-offset: var(--helix-size-focus-offset);
86
+ }
87
+
88
+ [part="periods"] {
89
+ display: grid;
90
+ gap: var(--helix-space-2xs);
91
+ inline-size: calc(var(--_calendar-track) * 7);
92
+ }
93
+
94
+ [part="period-row"] {
95
+ display: grid;
96
+ gap: var(--helix-space-2xs);
97
+ grid-template-columns: repeat(3, 1fr);
98
+ }
99
+
100
+ [part~="period"] {
101
+ align-items: center;
102
+ block-size: var(--date-picker-period-size, calc(var(--_calendar-row) * 1.5));
103
+ border-radius: var(--helix-radii-sm);
104
+ cursor: pointer;
105
+ display: inline-flex;
106
+ font-size: var(--helix-text-sm);
107
+ justify-content: center;
108
+ transition: background-color var(--helix-duration-fast) var(--helix-easing-standard);
109
+ }
110
+
111
+ [part~="period"]:hover:not([aria-disabled]) {
112
+ background-color: var(--helix-color-surface-sunken);
113
+ }
114
+
115
+ [part~="period-current"] {
116
+ box-shadow: inset 0 0 0 var(--helix-border-thin) var(--helix-color-border);
117
+ }
118
+
119
+ [part~="period-selected"] {
120
+ background-color: var(--date-picker-selected-color, var(--helix-color-surface-inverse));
121
+ color: var(--helix-color-foreground-inverse);
122
+ }
123
+
124
+ [part~="period-selected"]:hover:not([aria-disabled]) {
125
+ background-color: var(--date-picker-selected-color, var(--helix-color-surface-inverse));
126
+ }
127
+
128
+ [part~="period-disabled"] {
129
+ color: var(--helix-color-foreground-subtle);
130
+ cursor: default;
131
+ opacity: 0.4;
132
+ }
133
+
134
+ [part~="period"]:focus-visible {
135
+ outline: var(--helix-size-focus-ring) solid var(--helix-color-focus-ring);
136
+ outline-offset: var(--helix-size-focus-offset);
137
+ }
138
+
71
139
  [part="previous"]:disabled,
72
140
  [part="next"]:disabled {
73
141
  cursor: default;
@@ -25,6 +25,7 @@ import type { CSSResultGroup } from 'lit';
25
25
  *
26
26
  * @cssproperty --date-picker-columns - Months per row. Two unless there is only one.
27
27
  * @cssproperty --date-picker-day-size - Width and height of a day.
28
+ * @cssproperty --date-picker-period-size - Height of a month or a year in the months and years views, where `max-view` is set.
28
29
  * @cssproperty --date-picker-range-color - Band behind the days in a range.
29
30
  * @cssproperty --date-picker-row-size - Height of a week row.
30
31
  * @cssproperty --date-picker-selected-color - Fill behind a selected day.
@@ -24,6 +24,17 @@ overflow-wrap: anywhere;
24
24
  text-align: var(--_description-list-value-align, start);
25
25
  }
26
26
 
27
+ ::slotted(dd) {
28
+ color: var(--helix-color-foreground);
29
+ font-variant-numeric: var(--_description-list-value-figures, normal);
30
+ grid-column: -2 / -1;
31
+ justify-self: var(--_description-list-value-align, stretch);
32
+ margin: 0;
33
+ min-inline-size: 0;
34
+ overflow-wrap: anywhere;
35
+ text-align: var(--_description-list-value-align, start);
36
+ }
37
+
27
38
  @media print {
28
39
  :host {
29
40
  break-inside: avoid;
@@ -176,6 +176,53 @@ justify-content: center;
176
176
  margin-inline: auto;
177
177
  }
178
178
 
179
+ [part="dismiss"] {
180
+ all: unset;
181
+
182
+ box-sizing: border-box;
183
+ position: absolute;
184
+ inset-block-start: calc(
185
+ var(--dialog-padding, var(--helix-space-lg)) +
186
+ (var(--helix-text-xl) * var(--helix-leading-tight) - var(--helix-size-control-sm)) /
187
+ 2
188
+ );
189
+ inset-inline-end: var(--helix-space-md);
190
+ block-size: var(--helix-size-control-sm);
191
+ border-radius: var(--helix-radii-sm);
192
+ color: var(--helix-color-foreground-muted);
193
+ cursor: pointer;
194
+ display: inline-flex;
195
+ inline-size: var(--helix-size-control-sm);
196
+ place-content: center;
197
+ place-items: center;
198
+ transition: color var(--helix-duration-fast) var(--helix-easing-standard);
199
+ }
200
+
201
+ [part="dismiss"] svg {
202
+ block-size: var(--helix-size-icon-sm);
203
+ inline-size: var(--helix-size-icon-sm);
204
+ }
205
+
206
+ [part="dismiss"]:hover {
207
+ background-color: color-mix(in oklab, var(--helix-color-foreground) 8%, transparent);
208
+ color: var(--helix-color-foreground);
209
+ }
210
+
211
+ [part="dismiss"]:focus-visible {
212
+ outline: var(--helix-size-focus-ring) solid var(--helix-color-focus-ring);
213
+ outline-offset: var(--helix-size-focus-offset);
214
+ }
215
+
216
+ :host([dismissible]) ::slotted([slot="header"]) {
217
+ padding-inline-end: calc(var(--helix-size-control-sm) + var(--helix-space-xs));
218
+ }
219
+
220
+ @media (prefers-reduced-motion: reduce) {
221
+ [part="dismiss"] {
222
+ transition: none;
223
+ }
224
+ }
225
+
179
226
  @media print {
180
227
  :host {
181
228
  display: none;
@@ -7,8 +7,8 @@ display: flex;
7
7
  }
8
8
 
9
9
  [part="content"] {
10
- color: var(--helix-color-foreground-muted);
11
- margin-inline: var(--helix-space-sm);
10
+ color: var(--divider-content-color, var(--helix-color-foreground-muted));
11
+ margin-inline: var(--divider-content-gap, var(--helix-space-sm));
12
12
  display: inline-flex;
13
13
  flex: 0 0 auto;
14
14
  font-family: var(--helix-font-sans);
@@ -49,7 +49,7 @@ flex-direction: column;
49
49
  }
50
50
 
51
51
  :host([orientation="vertical"]) [part="content"] {
52
- margin-block: var(--helix-space-sm);
52
+ margin-block: var(--divider-content-gap, var(--helix-space-sm));
53
53
  margin-inline: var(--helix-space-none);
54
54
  }
55
55
 
@@ -74,6 +74,11 @@ inline-size: var(--_divider-thickness);
74
74
  min-block-size: 1em;
75
75
  }
76
76
 
77
+ :host([content-placement="start"]) [part="line"]:has(+ [part="content"]:not([data-empty])),
78
+ :host([content-placement="end"]) [part="content"]:not([data-empty]) + [part="line"] {
79
+ flex: 0 0 var(--divider-content-offset, var(--helix-space-lg));
80
+ }
81
+
77
82
  @media print {
78
83
  :host {
79
84
  print-color-adjust: economy;
@@ -8,15 +8,23 @@ import type { CSSResultGroup } from 'lit';
8
8
  * default. A vertical divider stretches to fit its flex parent, so it matches
9
9
  * the height of what it sits beside.
10
10
  *
11
+ * Content set into the line sits at its middle. `content-placement` moves it
12
+ * toward the start or the end, leaving a short length of line before or after
13
+ * it, the way a section label sits in a form.
14
+ *
11
15
  * @since 0.1.0
12
16
  * @status stable
13
17
  * @category layout
14
18
  * @aliases Separator, Rule
15
19
  * @documentation https://fusion.dev/helix/components/divider
16
20
  *
17
- * @csspart line - The line.
21
+ * @csspart content - The content set into the line.
22
+ * @csspart line - The line, or each half of it when content is set into it.
18
23
  *
19
24
  * @cssproperty --divider-color - The color of the line.
25
+ * @cssproperty --divider-content-color - The color of the content set into the line.
26
+ * @cssproperty --divider-content-gap - The space either side of the content set into the line.
27
+ * @cssproperty --divider-content-offset - The length of line before the content under `content-placement="start"`, or after it under `end`.
20
28
  * @cssproperty --divider-length - The length of a vertical line. A horizontal line takes the divider's width.
21
29
  * @cssproperty --divider-padding - The space removed from both ends of the line.
22
30
  * @cssproperty --divider-padding-end - The space removed from the end of the line only.
@@ -24,6 +32,14 @@ import type { CSSResultGroup } from 'lit';
24
32
  * @cssproperty --divider-thickness - The thickness of the line.
25
33
  */
26
34
  export declare class HelixDivider extends HelixHeadlessDivider {
35
+ /**
36
+ * Where content set into the line sits along it.
37
+ *
38
+ * Absent is the middle. `start` and `end` move it toward one end, with a
39
+ * short length of line, `--divider-content-offset`, kept before or after it.
40
+ * A divider with nothing set into it is one line whatever this says.
41
+ */
42
+ contentPlacement?: 'end' | 'start';
27
43
  static styles: CSSResultGroup;
28
44
  }
29
45
  declare global {
@@ -6,10 +6,14 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
6
6
  };
7
7
  import { customElement } from '@fusion.dev/helix-core';
8
8
  import { HelixHeadlessDivider } from '@fusion.dev/helix-headless/divider';
9
+ import { property } from 'lit/decorators.js';
9
10
  import { styles } from './divider-root.css.js';
10
11
  let HelixDivider = class HelixDivider extends HelixHeadlessDivider {
11
12
  static { this.styles = styles; }
12
13
  };
14
+ __decorate([
15
+ property({ attribute: 'content-placement', reflect: true })
16
+ ], HelixDivider.prototype, "contentPlacement", void 0);
13
17
  HelixDivider = __decorate([
14
18
  customElement('helix-divider')
15
19
  ], HelixDivider);
@@ -134,7 +134,23 @@ inset-inline: 0;
134
134
  border: var(--drawer-border-width, var(--helix-border-floating)) solid
135
135
  var(--drawer-border-color, var(--helix-color-border));
136
136
  box-shadow: var(--drawer-shadow, var(--helix-shadow-floating));
137
- transform: translate(0, 0);
137
+
138
+ transform: translate(var(--drawer-swipe-x, 0), var(--drawer-swipe-y, 0));
139
+ }
140
+
141
+ [part="panel"],
142
+ [part="content"] {
143
+ touch-action: pan-y;
144
+ }
145
+
146
+ :host([placement="bottom"]) [part="panel"],
147
+ :host([placement="top"]) [part="panel"] {
148
+ touch-action: pan-x;
149
+ }
150
+
151
+ [part="panel"][data-swiping] {
152
+ transition: none;
153
+ user-select: none;
138
154
  }
139
155
 
140
156
  @starting-style {
@@ -159,6 +175,17 @@ margin: var(--helix-space-none);
159
175
  margin-block-end: var(--helix-space-md);
160
176
  }
161
177
 
178
+ [part="footer"] {
179
+ flex: 0 0 auto;
180
+ }
181
+
182
+ ::slotted([slot="footer"]) {
183
+ display: flex;
184
+ flex-wrap: wrap;
185
+ gap: var(--helix-space-xs);
186
+ margin-block-start: var(--helix-space-md);
187
+ }
188
+
162
189
  [part="content"] {
163
190
  flex: 1 1 auto;
164
191
  min-block-size: 0;
@@ -27,7 +27,8 @@ text-overflow: ellipsis;
27
27
  white-space: nowrap;
28
28
  }
29
29
 
30
- [part="mark"] {
30
+ [part="mark"],
31
+ slot[name="chevron"]::slotted(*) {
31
32
  block-size: var(--helix-size-icon-tight);
32
33
  color: var(--helix-color-foreground-subtle);
33
34
  flex: none;
@@ -31,7 +31,8 @@ inline-size: var(--helix-size-control-tight);
31
31
  justify-content: center;
32
32
  }
33
33
 
34
- [part="back"] svg {
34
+ [part="back"] svg,
35
+ slot[name="back-icon"]::slotted(*) {
35
36
  block-size: var(--helix-size-icon-tight);
36
37
  inline-size: var(--helix-size-icon-tight);
37
38
  }
@@ -3,7 +3,9 @@ registerElementEvents({
3
3
  'helix-accordion-item': ['helix-before-close', 'helix-before-open', 'toggle'],
4
4
  'helix-announcement': ['helix-dismiss'],
5
5
  'helix-app-header': ['helix-scrolled'],
6
+ 'helix-aura': ['helix-aura-fallback'],
6
7
  'helix-avatar': ['error', 'load'],
8
+ 'helix-callout': ['helix-dismiss'],
7
9
  'helix-canvas': [
8
10
  'helix-before-move',
9
11
  'helix-before-reconnect',
@@ -21,7 +23,7 @@ registerElementEvents({
21
23
  ],
22
24
  'helix-carousel': ['helix-activate', 'helix-select'],
23
25
  'helix-chat': ['helix-before-pin', 'helix-history', 'helix-pin', 'helix-send'],
24
- 'helix-chat-composer': ['helix-send', 'input'],
26
+ 'helix-chat-composer': ['helix-send', 'helix-typing', 'input'],
25
27
  'helix-chat-message': ['helix-send'],
26
28
  'helix-checkbox': ['change', 'helix-before-toggle', 'input'],
27
29
  'helix-checkbox-group': ['change', 'helix-before-change', 'input'],
@@ -58,11 +60,13 @@ registerElementEvents({
58
60
  'helix-select',
59
61
  'toggle',
60
62
  ],
61
- 'helix-copy-button': ['helix-copy'],
63
+ 'helix-copy-button': ['helix-copy', 'helix-copy-error'],
62
64
  'helix-data-table': [
63
65
  'helix-activate',
66
+ 'helix-expand',
64
67
  'helix-filter',
65
68
  'helix-filtered',
69
+ 'helix-load-more',
66
70
  'helix-navigate',
67
71
  'helix-reorder',
68
72
  'helix-reordered',
@@ -84,7 +88,7 @@ registerElementEvents({
84
88
  'helix-drawer': ['close', 'helix-before-close', 'helix-before-open', 'toggle'],
85
89
  'helix-drilldown': ['helix-select'],
86
90
  'helix-drilldown-item': ['helix-select'],
87
- 'helix-file-input': ['change', 'helix-before-change', 'input'],
91
+ 'helix-file-input': ['change', 'helix-before-change', 'helix-reject', 'input'],
88
92
  'helix-filter-chip': ['helix-dismiss'],
89
93
  'helix-filter-input': [
90
94
  'change',
@@ -110,10 +114,11 @@ registerElementEvents({
110
114
  'helix-graph-zoom',
111
115
  ],
112
116
  'helix-heatmap': ['helix-resize'],
113
- 'helix-icon': ['error'],
117
+ 'helix-icon': ['error', 'load'],
114
118
  'helix-image': ['error', 'load'],
115
- 'helix-input': ['change', 'helix-before-change', 'input'],
119
+ 'helix-input': ['change', 'helix-before-change', 'helix-clear', 'input'],
116
120
  'helix-kbd': ['helix-shortcut'],
121
+ 'helix-legend': ['change', 'helix-before-change'],
117
122
  'helix-lightbox': [
118
123
  'close',
119
124
  'helix-activate',
@@ -122,6 +127,8 @@ registerElementEvents({
122
127
  'helix-before-open',
123
128
  'toggle',
124
129
  ],
130
+ 'helix-list': ['change', 'helix-action', 'helix-before-change'],
131
+ 'helix-list-item': ['helix-action'],
125
132
  'helix-listbox': ['change', 'helix-before-change', 'helix-filter', 'input'],
126
133
  'helix-map': [
127
134
  'change',
@@ -135,6 +142,7 @@ registerElementEvents({
135
142
  'helix-map-rotate',
136
143
  'helix-map-tilt',
137
144
  'helix-map-zoom',
145
+ 'helix-toggle',
138
146
  ],
139
147
  'helix-map-area': ['helix-map-part-change'],
140
148
  'helix-map-buildings': ['helix-map-part-change'],
@@ -151,9 +159,15 @@ registerElementEvents({
151
159
  'helix-menu-item': ['helix-before-toggle', 'helix-select'],
152
160
  'helix-notification': ['helix-dismiss', 'helix-read'],
153
161
  'helix-notification-group': ['helix-before-close', 'helix-before-open', 'toggle'],
154
- 'helix-notifications': ['helix-dismiss', 'helix-read'],
162
+ 'helix-notifications': ['helix-dismiss', 'helix-load-more', 'helix-read'],
155
163
  'helix-number-input': ['change', 'helix-before-change', 'input'],
156
- 'helix-object-inspector': ['helix-copy'],
164
+ 'helix-object-inspector': [
165
+ 'helix-activate',
166
+ 'helix-before-activate',
167
+ 'helix-copy',
168
+ 'helix-filter',
169
+ 'helix-filtered',
170
+ ],
157
171
  'helix-option': ['helix-select'],
158
172
  'helix-outline': ['helix-activate'],
159
173
  'helix-pagination': ['helix-activate', 'helix-navigate'],
@@ -163,17 +177,21 @@ registerElementEvents({
163
177
  'helix-qr-code': ['error'],
164
178
  'helix-radio': ['helix-select'],
165
179
  'helix-radio-group': ['change', 'helix-before-change', 'helix-select', 'input'],
166
- 'helix-rating': ['change', 'helix-before-change', 'input'],
180
+ 'helix-rating': ['change', 'helix-before-change', 'helix-clear', 'input'],
167
181
  'helix-sandbox': [
168
182
  'helix-before-edit',
169
183
  'helix-before-panel-resize',
170
184
  'helix-before-split',
171
185
  'helix-caret',
172
186
  'helix-console',
187
+ 'helix-edit',
188
+ 'helix-panel-resize',
173
189
  'helix-resize',
190
+ 'helix-split',
174
191
  ],
175
192
  'helix-sandbox-preview': ['helix-console', 'helix-resize'],
176
- 'helix-sandbox-source': ['helix-before-edit', 'helix-caret'],
193
+ 'helix-sandbox-source': ['helix-before-edit', 'helix-caret', 'helix-edit'],
194
+ 'helix-scroll-area': ['scroll', 'scrollend'],
177
195
  'helix-select': [
178
196
  'change',
179
197
  'helix-before-change',
@@ -196,10 +214,11 @@ registerElementEvents({
196
214
  'helix-steps': ['helix-activate', 'helix-before-activate', 'helix-select'],
197
215
  'helix-switch': ['change', 'helix-before-toggle', 'input'],
198
216
  'helix-tab': ['helix-select'],
199
- 'helix-table': ['helix-sort'],
200
- 'helix-table-column': ['helix-before-resize'],
217
+ 'helix-table': ['helix-select', 'helix-selected', 'helix-sort', 'helix-sorted'],
218
+ 'helix-table-column': ['helix-before-resize', 'helix-resized'],
201
219
  'helix-tabs': ['helix-activate', 'helix-before-activate', 'helix-select'],
202
220
  'helix-tag': ['helix-dismiss'],
221
+ 'helix-tag-group': ['change', 'helix-before-change', 'helix-dismiss'],
203
222
  'helix-textarea': ['change', 'helix-before-change', 'input'],
204
223
  'helix-time-input': [
205
224
  'change',
@@ -226,9 +245,42 @@ registerElementEvents({
226
245
  ],
227
246
  'helix-tour-stop': ['helix-tour-ask'],
228
247
  'helix-tree': ['helix-activate', 'helix-before-activate', 'helix-select'],
229
- 'helix-tree-item': ['helix-before-close', 'helix-before-open', 'helix-select', 'toggle'],
230
- 'helix-video': ['ended', 'helix-next', 'helix-previous', 'pause', 'play'],
231
- 'helix-video-playlist': ['helix-activate', 'helix-before-activate'],
248
+ 'helix-tree-item': [
249
+ 'helix-before-close',
250
+ 'helix-before-open',
251
+ 'helix-load',
252
+ 'helix-select',
253
+ 'toggle',
254
+ ],
255
+ 'helix-video': [
256
+ 'abort',
257
+ 'canplay',
258
+ 'canplaythrough',
259
+ 'durationchange',
260
+ 'emptied',
261
+ 'ended',
262
+ 'error',
263
+ 'helix-next',
264
+ 'helix-previous',
265
+ 'loadeddata',
266
+ 'loadedmetadata',
267
+ 'loadstart',
268
+ 'pause',
269
+ 'play',
270
+ 'playing',
271
+ 'progress',
272
+ 'ratechange',
273
+ 'resize',
274
+ 'seeked',
275
+ 'seeking',
276
+ 'stalled',
277
+ 'suspend',
278
+ 'timeupdate',
279
+ 'volumechange',
280
+ 'waiting',
281
+ ],
282
+ 'helix-video-playlist': ['helix-activate', 'helix-before-activate', 'helix-end'],
232
283
  'helix-video-playlist-item': ['helix-select'],
233
284
  'helix-video-playlist-menu': ['helix-select'],
285
+ 'helix-virtual-list': ['helix-load-more', 'helix-range-change'],
234
286
  });
@@ -3,37 +3,37 @@ export const styles = createSheet(`:host {
3
3
  align-items: center;
4
4
  display: flex;
5
5
  flex-direction: column;
6
- gap: var(--helix-space-sm);
6
+ gap: var(--empty-gap, var(--helix-space-sm));
7
7
  padding: var(--empty-padding, var(--helix-space-2xl));
8
8
  text-align: center;
9
9
  }
10
10
 
11
11
  slot[name="icon"]::slotted(*) {
12
12
 
13
- --icon-size: var(--helix-size-icon-lg);
13
+ --icon-size: var(--empty-icon-size, var(--helix-size-icon-lg));
14
14
 
15
- color: var(--helix-color-foreground-subtle);
15
+ color: var(--empty-icon-color, var(--helix-color-foreground-subtle));
16
16
  }
17
17
 
18
18
  slot[name="heading"]::slotted(*) {
19
- color: var(--helix-color-foreground);
20
- font-size: var(--helix-text-lg);
19
+ color: var(--empty-heading-color, var(--helix-color-foreground));
20
+ font-size: var(--empty-heading-size, var(--helix-text-lg));
21
21
  font-weight: var(--helix-weight-semibold);
22
22
  letter-spacing: var(--helix-tracking-tight);
23
23
  margin: var(--helix-space-none);
24
24
  }
25
25
 
26
26
  slot:not([name]) {
27
- color: var(--helix-color-foreground-muted);
28
- font-size: var(--helix-text-sm);
27
+ color: var(--empty-message-color, var(--helix-color-foreground-muted));
28
+ font-size: var(--empty-message-size, var(--helix-text-sm));
29
29
  }
30
30
 
31
31
  slot:not([name])::slotted(*) {
32
32
  margin: var(--helix-space-none);
33
- max-inline-size: 46ch;
33
+ max-inline-size: var(--empty-message-measure, 46ch);
34
34
  }
35
35
  slot[name="actions"]::slotted(*) {
36
- margin-block-start: var(--helix-space-sm);
36
+ margin-block-start: var(--empty-actions-gap, var(--helix-space-sm));
37
37
  }
38
38
 
39
39
  @media print {
@@ -13,6 +13,15 @@ import type { CSSResultGroup } from 'lit';
13
13
  * @aliases Placeholder, NoResults, Blank
14
14
  * @documentation https://fusion.dev/helix/components/empty
15
15
  *
16
+ * @cssproperty --empty-actions-gap - Space added above the actions.
17
+ * @cssproperty --empty-gap - Space between the icon, the heading, the message and the actions.
18
+ * @cssproperty --empty-heading-color - Color of the heading.
19
+ * @cssproperty --empty-heading-size - Size of the heading.
20
+ * @cssproperty --empty-icon-color - Color of the icon.
21
+ * @cssproperty --empty-icon-size - Size of the icon.
22
+ * @cssproperty --empty-message-color - Color of the message.
23
+ * @cssproperty --empty-message-measure - Widest the message runs before it wraps.
24
+ * @cssproperty --empty-message-size - Size of the message.
16
25
  * @cssproperty --empty-padding - Space around the whole block.
17
26
  */
18
27
  export declare class HelixEmpty extends HelixHeadlessEmpty {
@@ -11,10 +11,12 @@ import { styles as fieldStyles } from '../../shared/field/field.css.js';
11
11
  import { styles as fieldFrameStyles } from '../../shared/field/field-frame.css.js';
12
12
  import { styles as fieldStackedStyles } from '../../shared/field/field-stacked.css.js';
13
13
  import { styles as glyphStyles } from '../../shared/glyph/glyph.css.js';
14
+ import { styles as liveStyles } from '../../shared/live/live.css.js';
14
15
  import { styles } from './file-input-root.css.js';
15
16
  let HelixFileInput = class HelixFileInput extends HelixHeadlessFileInput {
16
17
  static { this.tier = 'helix-'; }
17
18
  static { this.styles = [
19
+ liveStyles,
18
20
  glyphStyles,
19
21
  fieldStyles,
20
22
  fieldFrameStyles,
@@ -13,10 +13,12 @@ import { styles as fieldStackedStyles } from '../../shared/field/field-stacked.c
13
13
  import { styles as floatingEntranceStyles } from '../../shared/floating/entrance.css.js';
14
14
  import { styles as floatingPanelStyles } from '../../shared/floating/panel.css.js';
15
15
  import { styles as glyphStyles } from '../../shared/glyph/glyph.css.js';
16
+ import { styles as liveStyles } from '../../shared/live/live.css.js';
16
17
  import { styles as tagRowStyles } from '../../shared/tags/tags.css.js';
17
18
  import { styles } from './filter-input-root.css.js';
18
19
  let HelixFilterInput = class HelixFilterInput extends HelixHeadlessFilterInput {
19
20
  static { this.styles = [
21
+ liveStyles,
20
22
  glyphStyles,
21
23
  fieldStyles,
22
24
  fieldFrameStyles,