@fusion.dev/helix 0.25.1 → 0.30.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 (133) hide show
  1. package/custom-elements.json +6072 -2074
  2. package/dist/accordion/root/accordion-root.css.js +1 -2
  3. package/dist/announcement/root/announcement-root.css.js +0 -1
  4. package/dist/area-chart/root/area-chart-root.css.js +2 -1
  5. package/dist/area-chart/root/area-chart-root.d.ts +1 -1
  6. package/dist/aura/{root/aura-axis.d.ts → axis.d.ts} +2 -2
  7. package/dist/aura/root/aura-root.d.ts +5 -1
  8. package/dist/aura/root/aura-root.js +3 -3
  9. package/dist/avatar/root/avatar-root.css.js +1 -1
  10. package/dist/bar-chart/root/bar-chart-root.css.js +2 -2
  11. package/dist/bar-chart/root/bar-chart-root.d.ts +1 -1
  12. package/dist/blockquote/root/blockquote-root.css.js +1 -2
  13. package/dist/breadcrumbs/root/breadcrumbs-root.css.js +1 -1
  14. package/dist/callout/root/callout-root.css.js +0 -1
  15. package/dist/carousel/root/carousel-root.css.js +0 -1
  16. package/dist/chat/message/chat-message.css.js +4 -1
  17. package/dist/chat/root/chat-root.css.js +5 -1
  18. package/dist/chat/root/chat-root.js +2 -1
  19. package/dist/checkbox/root/checkbox-root.css.js +1 -1
  20. package/dist/checkbox/root/checkbox-root.d.ts +4 -3
  21. package/dist/checkbox-group/root/checkbox-group-root.css.js +0 -1
  22. package/dist/code/root/code-root.css.js +0 -1
  23. package/dist/code-block/root/code-block-root.css.js +0 -1
  24. package/dist/color-input/root/color-input-root.css.js +5 -82
  25. package/dist/color-input/root/color-input-root.js +11 -1
  26. package/dist/color-picker/root/color-picker-root.js +1 -1
  27. package/dist/combobox/root/combobox-root.css.js +4 -83
  28. package/dist/combobox/root/combobox-root.js +12 -1
  29. package/dist/data-table/root/data-table-root.css.js +0 -8
  30. package/dist/data-table/root/data-table-root.js +2 -1
  31. package/dist/date-input/root/date-input-root.css.js +4 -80
  32. package/dist/date-input/root/date-input-root.js +12 -1
  33. package/dist/divider/root/divider-root.css.js +1 -1
  34. package/dist/donut-chart/root/donut-chart-root.css.js +3 -2
  35. package/dist/drilldown/root/drilldown-root.css.js +0 -11
  36. package/dist/drilldown/root/drilldown-root.js +2 -1
  37. package/dist/empty/root/empty-root.css.js +1 -2
  38. package/dist/file-input/root/file-input-root.css.js +3 -21
  39. package/dist/file-input/root/file-input-root.js +9 -2
  40. package/dist/filter-input/root/filter-input-root.css.js +4 -82
  41. package/dist/filter-input/root/filter-input-root.js +7 -1
  42. package/dist/flex/root/flex-root.css.js +1 -1
  43. package/dist/grid/root/grid-root.css.js +1 -1
  44. package/dist/icon/root/icon-root.css.js +1 -1
  45. package/dist/image/root/image-root.css.js +1 -1
  46. package/dist/input/root/input-root.css.js +0 -32
  47. package/dist/input/root/input-root.js +9 -2
  48. package/dist/legend/root/legend-root.css.js +1 -2
  49. package/dist/line-chart/root/line-chart-root.css.js +2 -2
  50. package/dist/line-chart/root/line-chart-root.d.ts +3 -1
  51. package/dist/list/root/list-root.css.js +1 -1
  52. package/dist/listbox/root/listbox-root.css.js +2 -8
  53. package/dist/listbox/root/listbox-root.js +7 -1
  54. package/dist/loader/root/loader-root.css.js +9 -5
  55. package/dist/menu/root/menu-root.css.js +4 -64
  56. package/dist/menu/root/menu-root.js +9 -1
  57. package/dist/meter/root/meter-root.css.js +0 -1
  58. package/dist/notifications/group/notification-group.css.js +1 -0
  59. package/dist/notifications/notification/notification.js +1 -1
  60. package/dist/notifications/root/notifications-root.css.js +2 -7
  61. package/dist/notifications/root/notifications-root.js +2 -1
  62. package/dist/number-input/root/number-input-root.css.js +2 -40
  63. package/dist/number-input/root/number-input-root.d.ts +2 -0
  64. package/dist/number-input/root/number-input-root.js +7 -1
  65. package/dist/option/root/option-root.css.js +0 -1
  66. package/dist/orb/index.d.ts +1 -1
  67. package/dist/orb/index.js +1 -1
  68. package/dist/orb/root/orb-root.d.ts +5 -1
  69. package/dist/orb/root/orb-root.js +3 -3
  70. package/dist/outline/root/outline-root.css.js +1 -1
  71. package/dist/pin-input/root/pin-input-root.css.js +0 -1
  72. package/dist/progress/root/progress-root.css.js +0 -1
  73. package/dist/qr-code/root/qr-code-root.css.js +1 -1
  74. package/dist/quote/root/quote-root.css.js +1 -2
  75. package/dist/radio/root/radio-root.css.js +5 -2
  76. package/dist/rating/root/rating-root.css.js +0 -1
  77. package/dist/scroll-area/root/scroll-area-root.css.js +0 -2
  78. package/dist/select/root/select-root.css.js +3 -57
  79. package/dist/select/root/select-root.js +9 -1
  80. package/dist/shared/chart/series.css.js +4 -1
  81. package/dist/shared/chart/tooltip.css.js +1 -96
  82. package/dist/shared/collection/state.css.js +11 -0
  83. package/dist/shared/field/field-frame.css.d.ts +1 -0
  84. package/dist/shared/field/field-frame.css.js +36 -0
  85. package/dist/shared/field/field.css.js +0 -6
  86. package/dist/shared/floating/entrance.css.d.ts +1 -0
  87. package/dist/shared/floating/entrance.css.js +39 -0
  88. package/dist/shared/floating/panel.css.d.ts +1 -0
  89. package/dist/shared/floating/panel.css.js +18 -0
  90. package/dist/shared/glyph/glyph.css.d.ts +1 -0
  91. package/dist/sparkline/root/sparkline-root.css.js +0 -1
  92. package/dist/speed-dial/root/speed-dial-root.js +1 -1
  93. package/dist/splitter/root/splitter-root.css.js +0 -2
  94. package/dist/stat/root/stat-root.css.js +1 -1
  95. package/dist/steps/root/steps-root.css.js +1 -1
  96. package/dist/switch/root/switch-root.css.js +0 -1
  97. package/dist/table/cell/table-cell.d.ts +4 -3
  98. package/dist/table/root/table-root.css.js +1 -13
  99. package/dist/table/root/table-root.js +2 -1
  100. package/dist/table/row/table-row.d.ts +4 -3
  101. package/dist/tabs/panel/tab-panel.d.ts +3 -3
  102. package/dist/tabs/root/tabs-root.css.js +0 -1
  103. package/dist/tabs/tab/tab.d.ts +4 -3
  104. package/dist/tag/root/tag-root.css.js +1 -1
  105. package/dist/text/root/text-root.css.js +1 -1
  106. package/dist/textarea/root/textarea-root.css.js +2 -36
  107. package/dist/textarea/root/textarea-root.js +7 -1
  108. package/dist/time-input/root/time-input-root.css.js +7 -82
  109. package/dist/time-input/root/time-input-root.js +12 -1
  110. package/dist/time-picker/root/time-picker-root.css.js +0 -1
  111. package/dist/timeline/root/timeline-root.css.js +1 -1
  112. package/dist/tooltip/root/tooltip-root.css.js +1 -0
  113. package/dist/tour/stop/tour-stop.css.js +7 -6
  114. package/dist/tree/root/tree-root.css.js +1 -12
  115. package/dist/tree/root/tree-root.js +2 -1
  116. package/dist/trend/root/trend-root.css.js +1 -1
  117. package/dist/trend/root/trend-root.js +1 -1
  118. package/dist/video/root/video-root.css.js +11 -8
  119. package/dist/video/root/video-root.js +1 -1
  120. package/dist/video-playlist/menu/video-playlist-menu.js +1 -1
  121. package/dist/virtual-list/root/virtual-list-root.css.js +0 -2
  122. package/package.json +9 -8
  123. package/types/jsx.d.ts +493 -405
  124. package/types/vue.d.ts +142 -129
  125. /package/dist/aura/{root/aura-axis.js → axis.js} +0 -0
  126. /package/dist/aura/{root/aura-shader.d.ts → shader.d.ts} +0 -0
  127. /package/dist/aura/{root/aura-shader.js → shader.js} +0 -0
  128. /package/dist/orb/{root/orb-color.d.ts → color.d.ts} +0 -0
  129. /package/dist/orb/{root/orb-color.js → color.js} +0 -0
  130. /package/dist/orb/{root/orb-shapes.d.ts → shapes.d.ts} +0 -0
  131. /package/dist/orb/{root/orb-shapes.js → shapes.js} +0 -0
  132. /package/dist/{icon/glyph.css.d.ts → shared/collection/state.css.d.ts} +0 -0
  133. /package/dist/{icon → shared/glyph}/glyph.css.js +0 -0
@@ -24,7 +24,6 @@ var(--accordion-border-color, var(--helix-color-border));
24
24
 
25
25
  @media print {
26
26
  :host {
27
- background-color: transparent;
28
- box-shadow: none;
27
+ print-color-adjust: economy;
29
28
  }
30
29
  }`);
@@ -152,6 +152,5 @@ display: none;
152
152
  @media print {
153
153
  :host {
154
154
  background-color: transparent;
155
- box-shadow: none;
156
155
  }
157
156
  }`);
@@ -29,7 +29,8 @@ stroke: none;
29
29
  [part="line"] {
30
30
  stroke: var(--chart-series);
31
31
  stroke-linejoin: round;
32
- stroke-width: var(--area-chart-width, 1.5px);
32
+
33
+ stroke-width: var(--area-chart-width, var(--_chart-stroke));
33
34
  vector-effect: non-scaling-stroke;
34
35
  }
35
36
 
@@ -24,7 +24,7 @@ import '../../tooltip/index.js';
24
24
  * @cssproperty --area-chart-fill-strength - How much of its series' color a band takes, as a percentage mixed toward the page.
25
25
  * @cssproperty --area-chart-gap - Space between the drawing and its labels.
26
26
  * @cssproperty --area-chart-gridline-color - One rule across the plot, under `gridlines`.
27
- * @cssproperty --area-chart-width - Thickness of a band's top edge.
27
+ * @cssproperty --area-chart-width - Thickness of a band's top edge, over `--chart-stroke`.
28
28
  */
29
29
  export declare class HelixAreaChart extends HelixHeadlessAreaChart {
30
30
  /** The styled tier, so the tooltip this renders is the styled one. */
@@ -16,13 +16,13 @@
16
16
  * form**, which is deliberate and is what makes the round trip worth running.
17
17
  * A closed form checked against its own algebra proves only that the algebra
18
18
  * was inverted correctly. Written as the same three operations `main()`
19
- * performs, in the same order, it is a claim about `aura-shader.ts`, and the
19
+ * performs, in the same order, it is a claim about `shader.ts`, and the
20
20
  * day someone changes how that file handles the aspect this stops agreeing.
21
21
  */
22
22
  /**
23
23
  * Where the shader's axis crosses the top edge, as a fraction of the width.
24
24
  *
25
- * Follows `main()` in `aura-shader.ts`:
25
+ * Follows `main()` in `shader.ts`:
26
26
  *
27
27
  * 1. `p.x *= aspect` stretches the frame before anything rotates, so the tilt
28
28
  * the rotation takes is a slope in the stretched frame rather than on
@@ -22,6 +22,10 @@ import type { CSSResultGroup, TemplateResult } from 'lit';
22
22
  * **It stops when nobody is looking**, off screen and in a background tab, and
23
23
  * `prefers-reduced-motion` gets one still frame rather than an empty box.
24
24
  *
25
+ * Styled only, and with behavior, which the tier split does not otherwise
26
+ * allow: the behavior is drawing to a canvas, so there is no structure a
27
+ * consumer could restyle and nothing for a headless twin to hold.
28
+ *
25
29
  * @since 0.1.0
26
30
  * @status experimental
27
31
  * @category media
@@ -373,7 +377,7 @@ export declare class HelixAura extends HelixElement {
373
377
  * business knowing when: it is read once per frame from numbers already
374
378
  * there.
375
379
  *
376
- * The solve is `tiltFor` in `aura-axis.ts` rather than an expression here, so
380
+ * The solve is `tiltFor` in `axis.ts` rather than an expression here, so
377
381
  * it is callable and `aura-root.dom.spec.ts` runs it against a model of the
378
382
  * shader in both directions.
379
383
  */
@@ -8,9 +8,9 @@ var HelixAura_1;
8
8
  import { customElement, HelixElement, TokenColorController, } from '@fusion.dev/helix-core';
9
9
  import { html } from 'lit';
10
10
  import { property } from 'lit/decorators.js';
11
- import { tiltFor } from './aura-axis.js';
11
+ import { tiltFor } from '../axis.js';
12
+ import { FRAGMENT, INTERACTIONS, SHAPES, VERTEX } from '../shader.js';
12
13
  import { styles } from './aura-root.css.js';
13
- import { FRAGMENT, INTERACTIONS, SHAPES, VERTEX } from './aura-shader.js';
14
14
  const MAX_CANVAS_EDGE = 4096;
15
15
  const MAX_CANVAS_PIXELS = 4_194_304;
16
16
  const OPENING_PATIENCE = 500;
@@ -118,7 +118,7 @@ let HelixAura = class HelixAura extends HelixElement {
118
118
  };
119
119
  }
120
120
  static { HelixAura_1 = this; }
121
- static { this.styles = [styles]; }
121
+ static { this.styles = styles; }
122
122
  static { this.CONTEXT = {
123
123
  alpha: true,
124
124
  antialias: false,
@@ -49,6 +49,6 @@ user-select: none;
49
49
 
50
50
  @media print {
51
51
  :host {
52
- box-shadow: none;
52
+ print-color-adjust: economy;
53
53
  }
54
54
  }`);
@@ -127,7 +127,8 @@ fill: none;
127
127
  stroke: var(--bar-chart-line-color, var(--_bar-chart-series, var(--helix-color-series-1)));
128
128
  stroke-linecap: round;
129
129
  stroke-linejoin: round;
130
- stroke-width: var(--bar-chart-line-width, 2.5px);
130
+
131
+ stroke-width: var(--bar-chart-line-width, var(--_chart-stroke));
131
132
  vector-effect: non-scaling-stroke;
132
133
  }
133
134
 
@@ -283,7 +284,6 @@ stop-opacity: calc(0.35 * var(--helix-material-opacity));
283
284
 
284
285
  @media print {
285
286
  :host {
286
- box-shadow: none;
287
287
  print-color-adjust: exact;
288
288
  }
289
289
  }`);
@@ -25,7 +25,7 @@ import '../../tooltip/index.js';
25
25
  * @cssproperty --bar-chart-gap - Space between the drawing and its labels.
26
26
  * @cssproperty --bar-chart-gridline-color - One rule across the plot, under `gridlines`.
27
27
  * @cssproperty --bar-chart-line-color - A `lines` series, overriding its series color.
28
- * @cssproperty --bar-chart-line-width - Thickness of a `lines` series.
28
+ * @cssproperty --bar-chart-line-width - Thickness of a `lines` series, over `--chart-stroke`.
29
29
  */
30
30
  export declare class HelixBarChart extends HelixHeadlessBarChart {
31
31
  /**
@@ -35,7 +35,6 @@ display: none;
35
35
 
36
36
  @media print {
37
37
  :host {
38
- background-color: transparent;
39
- box-shadow: none;
38
+ print-color-adjust: economy;
40
39
  }
41
40
  }`);
@@ -17,6 +17,6 @@ padding: var(--helix-space-none);
17
17
 
18
18
  @media print {
19
19
  :host {
20
- box-shadow: none;
20
+ print-color-adjust: economy;
21
21
  }
22
22
  }`);
@@ -75,6 +75,5 @@ margin: var(--helix-space-none);
75
75
  @media print {
76
76
  :host {
77
77
  background-color: transparent;
78
- box-shadow: none;
79
78
  }
80
79
  }`);
@@ -351,7 +351,6 @@ inline-size: var(--helix-space-xs);
351
351
  @media print {
352
352
  :host {
353
353
  box-shadow: none;
354
- max-block-size: none;
355
354
  overflow: visible;
356
355
  }
357
356
  }
@@ -182,7 +182,10 @@ padding: var(--helix-space-none);
182
182
  }
183
183
 
184
184
  [part="indicator"] {
185
- animation: helix-chat-typing 1.2s infinite ease-in-out;
185
+
186
+ --_chat-typing-cycle: 1.2s;
187
+
188
+ animation: helix-chat-typing var(--_chat-typing-cycle) infinite ease-in-out;
186
189
  background-image:
187
190
  radial-gradient(circle closest-side, currentColor 90%, transparent),
188
191
  radial-gradient(circle closest-side, currentColor 90%, transparent),
@@ -116,8 +116,12 @@ var(--helix-border-thin)
116
116
  }
117
117
 
118
118
  [part="empty"],
119
- [part="history"],
120
119
  [part="loading"] {
120
+ --_collection-inset-block: var(--helix-space-lg);
121
+ --_collection-inset-inline: var(--helix-space-none);
122
+ }
123
+
124
+ [part="history"] {
121
125
  color: var(--helix-color-foreground-subtle);
122
126
  font-family: var(--helix-font-sans);
123
127
  font-size: var(--helix-text-sm);
@@ -6,12 +6,13 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
6
6
  };
7
7
  import { customElement } from '@fusion.dev/helix-core';
8
8
  import { HelixHeadlessChat } from '@fusion.dev/helix-headless/chat';
9
+ import { styles as collectionStateStyles } from '../../shared/collection/state.css.js';
9
10
  import { styles } from './chat-root.css.js';
10
11
  import '../composer/chat-composer.js';
11
12
  import '../message/chat-message.js';
12
13
  let HelixChat = class HelixChat extends HelixHeadlessChat {
13
14
  static { this.tier = 'helix-'; }
14
- static { this.styles = styles; }
15
+ static { this.styles = [collectionStateStyles, styles]; }
15
16
  };
16
17
  HelixChat = __decorate([
17
18
  customElement('helix-chat')
@@ -124,7 +124,7 @@ background-color var(--helix-duration-fast) var(--helix-easing-standard),
124
124
  border-color var(--helix-duration-fast) var(--helix-easing-standard);
125
125
  }
126
126
 
127
- :host(:not([disabled])[variant="card"]) [part="field"]:hover {
127
+ :host(:not(:disabled)[variant="card"]) [part="field"]:hover {
128
128
  border-color: var(--helix-color-foreground-muted);
129
129
  }
130
130
 
@@ -4,9 +4,10 @@ import type { CSSResultGroup } from 'lit';
4
4
  * @summary A box that is ticked, or not, or neither.
5
5
  *
6
6
  * @description
7
- * The box is the native input, restyled rather than replaced, so the tick and
8
- * the indeterminate dash are the browser's own and the control stays a control
9
- * for anything reading the page.
7
+ * The box is the native input with its own drawing switched off, so the control
8
+ * stays a control for anything reading the page while the tick and the
9
+ * indeterminate dash are drawn here, as masks over a mark beside it, and their
10
+ * weight, color and motion are the design system's rather than the browser's.
10
11
  *
11
12
  * The label sits beside it and the whole thing is the click target, which is
12
13
  * what a native `<label>` wrapping a checkbox gives and what a reader expects.
@@ -23,7 +23,6 @@ flex-wrap: wrap;
23
23
 
24
24
  @media print {
25
25
  :host {
26
- box-shadow: none;
27
26
  print-color-adjust: exact;
28
27
  }
29
28
  }`);
@@ -26,6 +26,5 @@ padding-inline: var(--code-padding, calc(var(--helix-space-2xs) * 0.5));
26
26
  @media print {
27
27
  [part="code"] {
28
28
  background-color: transparent;
29
- box-shadow: none;
30
29
  }
31
30
  }`);
@@ -186,7 +186,6 @@ user-select: none;
186
186
  @media print {
187
187
  :host {
188
188
  background-color: transparent;
189
- box-shadow: none;
190
189
  }
191
190
 
192
191
  :host([diff]) [part="block"],
@@ -1,9 +1,5 @@
1
1
  import { createSheet } from '@fusion.dev/helix-core';
2
- export const styles = createSheet(`:host {
3
- display: block;
4
- }
5
-
6
- [part="field"] {
2
+ export const styles = createSheet(`[part="field"] {
7
3
  align-items: center;
8
4
  background-color: var(--color-input-background-color, var(--helix-color-well));
9
5
  block-size: var(--helix-size-control);
@@ -18,28 +14,6 @@ background-color var(--helix-duration-fast) var(--helix-easing-standard),
18
14
  border-color var(--helix-duration-fast) var(--helix-easing-standard);
19
15
  }
20
16
 
21
- [part="control"] {
22
- all: unset;
23
- box-sizing: border-box;
24
- color: var(--helix-color-foreground);
25
- flex: 1 1 auto;
26
- font-family: var(--helix-font-sans);
27
- font-size: var(--helix-text-md);
28
- font-weight: var(--helix-weight-medium);
29
- min-inline-size: 0;
30
- }
31
-
32
- :host(:not(:disabled)) [part="field"]:hover {
33
- border-color: var(--helix-color-primary);
34
- }
35
-
36
- :host(:focus-within) [part="field"],
37
- :host(:focus-within) [part="field"]:hover {
38
- border-color: var(--helix-color-primary);
39
- outline: var(--helix-size-focus-ring) solid var(--helix-color-focus-ring);
40
- outline-offset: 0;
41
- }
42
-
43
17
  :host(:disabled) [part="field"] {
44
18
  color: var(--helix-color-foreground-subtle);
45
19
  }
@@ -82,14 +56,11 @@ inline-size: var(--helix-size-control);
82
56
  }
83
57
 
84
58
  [part="surface"] {
85
- background-color: var(--helix-color-surface-overlay);
86
- border: var(--color-input-border-width, var(--helix-border-floating)) solid
87
- var(--color-input-border-color, var(--helix-color-border));
88
- border-radius: var(--helix-radii-sm);
89
- box-shadow: var(--color-input-shadow, var(--helix-shadow-floating));
59
+ --_floating-border-color: var(--color-input-border-color, var(--helix-color-border));
60
+ --_floating-border-width: var(--color-input-border-width, var(--helix-border-floating));
61
+ --_floating-shadow: var(--color-input-shadow, var(--helix-shadow-floating));
62
+
90
63
  inline-size: var(--color-input-panel-size, 264px);
91
- inset: auto;
92
- margin: var(--helix-space-none);
93
64
  overflow: hidden;
94
65
  padding: var(--helix-space-none);
95
66
  position: absolute;
@@ -102,49 +73,10 @@ position: absolute;
102
73
  display: block;
103
74
  }
104
75
 
105
- [part="surface"] {
106
- --_travel: calc(var(--helix-space-2xs) * -1);
107
- opacity: 0;
108
- scale: 0.96;
109
- transform: translateY(var(--_travel));
110
- transition:
111
- opacity var(--helix-duration-fast) var(--helix-easing-standard),
112
- scale var(--helix-duration-fast) var(--helix-easing-emphasized),
113
- transform var(--helix-duration-fast) var(--helix-easing-emphasized),
114
- display var(--helix-duration-fast) allow-discrete,
115
- overlay var(--helix-duration-fast) allow-discrete;
116
- }
117
-
118
- [part="surface"][data-placement^="top"] {
119
- --_travel: var(--helix-space-2xs);
120
- transform-origin: var(--floating-arrow-x, 50%) 100%;
121
- }
122
-
123
- [part="surface"][data-placement^="bottom"] {
124
- transform-origin: var(--floating-arrow-x, 50%) 0;
125
- }
126
-
127
- [part="surface"][data-placed] {
128
- opacity: 1;
129
- scale: 1;
130
- transform: none;
131
- }
132
-
133
- [part="surface"][hidden] {
134
- display: none;
135
- }
136
-
137
76
  @media (prefers-reduced-motion: reduce) {
138
77
  [part="field"] {
139
78
  transition: none;
140
79
  }
141
-
142
- [part="surface"],
143
- [part="surface"][data-placed] {
144
- scale: 1;
145
- transform: none;
146
- transition: none;
147
- }
148
80
  }
149
81
 
150
82
  :host([variant="swatch"]) [part="field"] {
@@ -170,14 +102,6 @@ border-radius: var(--color-input-swatch-radius, var(--helix-radii-sm));
170
102
  inline-size: 100%;
171
103
  }
172
104
 
173
- :host(:state(invalid)) [part="field"],
174
- :host(:state(invalid)) [part="field"]:hover,
175
- :host(:state(invalid):focus-within) [part="field"],
176
- :host(:state(invalid):focus-within) [part="field"]:hover {
177
- border-color: var(--helix-color-danger);
178
- outline-color: var(--helix-color-danger);
179
- }
180
-
181
105
  slot[name="start"]::slotted(*),
182
106
  slot[name="end"]::slotted(*) {
183
107
  color: var(--helix-color-foreground-subtle);
@@ -186,7 +110,6 @@ flex: 0 0 auto;
186
110
 
187
111
  @media print {
188
112
  :host {
189
- box-shadow: none;
190
113
  print-color-adjust: exact;
191
114
  }
192
115
  }`);
@@ -8,11 +8,21 @@ import { customElement } from '@fusion.dev/helix-core';
8
8
  import { HelixHeadlessColorInput } from '@fusion.dev/helix-headless/color-input';
9
9
  import '../../color-picker/index.js';
10
10
  import { styles as fieldStyles } from '../../shared/field/field.css.js';
11
+ import { styles as fieldFrameStyles } from '../../shared/field/field-frame.css.js';
11
12
  import { styles as fieldStackedStyles } from '../../shared/field/field-stacked.css.js';
13
+ import { styles as floatingEntranceStyles } from '../../shared/floating/entrance.css.js';
14
+ import { styles as floatingPanelStyles } from '../../shared/floating/panel.css.js';
12
15
  import { styles } from './color-input-root.css.js';
13
16
  let HelixColorInput = class HelixColorInput extends HelixHeadlessColorInput {
14
17
  static { this.tier = 'helix-'; }
15
- static { this.styles = [fieldStyles, fieldStackedStyles, styles]; }
18
+ static { this.styles = [
19
+ fieldStyles,
20
+ fieldFrameStyles,
21
+ fieldStackedStyles,
22
+ floatingPanelStyles,
23
+ floatingEntranceStyles,
24
+ styles,
25
+ ]; }
16
26
  };
17
27
  HelixColorInput = __decorate([
18
28
  customElement('helix-color-input')
@@ -10,7 +10,7 @@ import '../../button/index.js';
10
10
  import '../../button-group/index.js';
11
11
  import '../../icon/index.js';
12
12
  import '../../slider/index.js';
13
- import { styles as glyphStyles } from '../../icon/glyph.css.js';
13
+ import { styles as glyphStyles } from '../../shared/glyph/glyph.css.js';
14
14
  import { styles } from './color-picker-root.css.js';
15
15
  let HelixColorPicker = class HelixColorPicker extends HelixHeadlessColorPicker {
16
16
  static { this.tier = 'helix-'; }
@@ -1,8 +1,5 @@
1
1
  import { createSheet } from '@fusion.dev/helix-core';
2
2
  export const styles = createSheet(`:host {
3
- display: flex;
4
- flex-direction: column;
5
- gap: var(--helix-space-2xs);
6
3
  position: relative;
7
4
  }
8
5
 
@@ -50,17 +47,6 @@ flex: 0 0 auto;
50
47
  max-inline-size: 100%;
51
48
  }
52
49
 
53
- [part="control"] {
54
- all: unset;
55
- box-sizing: border-box;
56
- color: var(--helix-color-foreground);
57
- flex: 1 1 auto;
58
- font-family: var(--helix-font-sans);
59
- font-size: var(--helix-text-md);
60
- font-weight: var(--helix-weight-medium);
61
- min-inline-size: 0;
62
- }
63
-
64
50
  [part="field"]:has([part="tags"]) [part="control"] {
65
51
  flex: 1 1 var(--combobox-control-size, 4ch);
66
52
  }
@@ -70,25 +56,6 @@ color: var(--helix-color-foreground-subtle);
70
56
  font-weight: var(--helix-weight-medium);
71
57
  }
72
58
 
73
- :host(:not(:disabled)) [part="field"]:hover {
74
- border-color: var(--helix-color-primary);
75
- }
76
-
77
- :host(:focus-within) [part="field"],
78
- :host(:focus-within) [part="field"]:hover {
79
- border-color: var(--helix-color-primary);
80
- outline: var(--helix-size-focus-ring) solid var(--helix-color-focus-ring);
81
- outline-offset: 0;
82
- }
83
-
84
- :host(:state(invalid)) [part="field"],
85
- :host(:state(invalid)) [part="field"]:hover,
86
- :host(:state(invalid):focus-within) [part="field"],
87
- :host(:state(invalid):focus-within) [part="field"]:hover {
88
- border-color: var(--helix-color-danger);
89
- outline-color: var(--helix-color-danger);
90
- }
91
-
92
59
  :host(:disabled) [part="field"] {
93
60
  color: var(--helix-color-foreground-subtle);
94
61
  cursor: not-allowed;
@@ -116,15 +83,12 @@ flex: 0 0 auto;
116
83
  }
117
84
 
118
85
  [part="surface"] {
119
- background-color: var(--helix-color-surface-overlay);
120
- border: var(--combobox-border-width, var(--helix-border-floating)) solid
121
- var(--combobox-border-color, var(--helix-color-border));
122
- border-radius: var(--helix-radii-sm);
123
- box-shadow: var(--combobox-shadow, var(--helix-shadow-floating));
86
+ --_floating-border-color: var(--combobox-border-color, var(--helix-color-border));
87
+ --_floating-border-width: var(--combobox-border-width, var(--helix-border-floating));
88
+ --_floating-shadow: var(--combobox-shadow, var(--helix-shadow-floating));
89
+
124
90
  box-sizing: border-box;
125
91
  inline-size: var(--combobox-panel-size, var(--floating-anchor-inline-size, 100%));
126
- inset: auto;
127
- margin: var(--helix-space-none);
128
92
  max-block-size: var(--floating-available-block-size, none);
129
93
  min-inline-size: max-content;
130
94
  overflow: hidden;
@@ -168,41 +132,6 @@ border: none;
168
132
  display: block;
169
133
  }
170
134
 
171
- [part="surface"] {
172
- --_travel: calc(var(--helix-space-2xs) * -1);
173
-
174
- opacity: 0;
175
- scale: 0.96;
176
- transform: translateY(var(--_travel));
177
- transition:
178
- opacity var(--helix-duration-fast) var(--helix-easing-standard),
179
- scale var(--helix-duration-fast) var(--helix-easing-emphasized),
180
- transform var(--helix-duration-fast) var(--helix-easing-emphasized),
181
- display var(--helix-duration-fast) allow-discrete,
182
- overlay var(--helix-duration-fast) allow-discrete;
183
- }
184
-
185
- [part="surface"][data-placement^="top"] {
186
- --_travel: var(--helix-space-2xs);
187
-
188
- transform-origin: var(--floating-arrow-x, 50%) 100%;
189
- }
190
-
191
- [part="surface"][data-placement^="bottom"] {
192
- transform-origin: var(--floating-arrow-x, 50%) 0;
193
- }
194
-
195
- [part="surface"][data-placed] {
196
- opacity: 1;
197
- scale: 1;
198
- transform: none;
199
- }
200
-
201
- [part="surface"][hidden],
202
- [part="surface"]:not(:popover-open) {
203
- display: none;
204
- }
205
-
206
135
  @media (prefers-reduced-motion: reduce) {
207
136
  [part="field"] {
208
137
  transition: none;
@@ -211,18 +140,10 @@ transition: none;
211
140
  [part="create"] {
212
141
  transition: none;
213
142
  }
214
-
215
- [part="surface"],
216
- [part="surface"][data-placed] {
217
- scale: 1;
218
- transform: none;
219
- transition: none;
220
- }
221
143
  }
222
144
 
223
145
  @media print {
224
146
  :host {
225
- box-shadow: none;
226
147
  print-color-adjust: exact;
227
148
  }
228
149
  }`);
@@ -9,12 +9,23 @@ import { HelixHeadlessCombobox } from '@fusion.dev/helix-headless/combobox';
9
9
  import '../../listbox/index.js';
10
10
  import '../../tag/index.js';
11
11
  import { styles as fieldStyles } from '../../shared/field/field.css.js';
12
+ import { styles as fieldFrameStyles } from '../../shared/field/field-frame.css.js';
12
13
  import { styles as fieldStackedStyles } from '../../shared/field/field-stacked.css.js';
14
+ import { styles as floatingEntranceStyles } from '../../shared/floating/entrance.css.js';
15
+ import { styles as floatingPanelStyles } from '../../shared/floating/panel.css.js';
13
16
  import { styles as tagRowStyles } from '../../shared/tags/tags.css.js';
14
17
  import { styles } from './combobox-root.css.js';
15
18
  let HelixCombobox = class HelixCombobox extends HelixHeadlessCombobox {
16
19
  static { this.tier = 'helix-'; }
17
- static { this.styles = [fieldStyles, fieldStackedStyles, tagRowStyles, styles]; }
20
+ static { this.styles = [
21
+ fieldStyles,
22
+ fieldFrameStyles,
23
+ fieldStackedStyles,
24
+ tagRowStyles,
25
+ floatingPanelStyles,
26
+ floatingEntranceStyles,
27
+ styles,
28
+ ]; }
18
29
  };
19
30
  HelixCombobox = __decorate([
20
31
  customElement('helix-combobox')
@@ -92,14 +92,7 @@ margin-inline-start: auto;
92
92
 
93
93
  [part="empty"],
94
94
  [part="loading"] {
95
- color: var(--helix-color-foreground-subtle);
96
- font-family: var(--helix-font-sans);
97
- font-size: var(--helix-text-sm);
98
95
  grid-column: 1 / -1;
99
- margin: var(--helix-space-none);
100
- padding-block: var(--helix-space-md);
101
- padding-inline: var(--helix-space-sm);
102
- text-align: center;
103
96
  }
104
97
 
105
98
  :host([windowed]) [part="table"] {
@@ -127,7 +120,6 @@ opacity: 0.5;
127
120
  @media print {
128
121
  :host {
129
122
  background-color: transparent;
130
- box-shadow: none;
131
123
  }
132
124
 
133
125
  [part="table"] {
@@ -6,13 +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 { HelixHeadlessDataTable } from '@fusion.dev/helix-headless/data-table';
9
+ import { styles as collectionStateStyles } from '../../shared/collection/state.css.js';
9
10
  import { styles } from './data-table-root.css.js';
10
11
  import '../../checkbox/index.js';
11
12
  import '../../pagination/index.js';
12
13
  import '../../table/index.js';
13
14
  let HelixDataTable = class HelixDataTable extends HelixHeadlessDataTable {
14
15
  static { this.tier = 'helix-'; }
15
- static { this.styles = styles; }
16
+ static { this.styles = [collectionStateStyles, styles]; }
16
17
  };
17
18
  HelixDataTable = __decorate([
18
19
  customElement('helix-data-table')