@fusion.dev/helix 0.30.2 → 0.32.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 (42) hide show
  1. package/custom-elements.json +3005 -160
  2. package/dist/announcement/root/announcement-root.css.js +4 -0
  3. package/dist/app-header/root/app-header-root.css.js +12 -2
  4. package/dist/aura/root/aura-root.d.ts +2 -2
  5. package/dist/aura/root/aura-root.js +2 -1
  6. package/dist/bar-chart/root/bar-chart-root.css.js +2 -2
  7. package/dist/breadcrumbs/breadcrumb/breadcrumb.css.js +10 -1
  8. package/dist/carousel/root/carousel-root.css.js +10 -10
  9. package/dist/chat/composer/chat-composer.css.js +1 -1
  10. package/dist/chat/message/chat-message.css.js +2 -0
  11. package/dist/chat/root/chat-root.css.js +1 -5
  12. package/dist/checkbox/root/checkbox-root.css.js +4 -4
  13. package/dist/code-block/root/code-block-root.css.js +18 -4
  14. package/dist/color-input/root/color-input-root.css.js +1 -3
  15. package/dist/data-table/root/data-table-root.css.js +62 -15
  16. package/dist/data-table/root/data-table-root.d.ts +1 -0
  17. package/dist/date-picker/root/date-picker-root.css.js +19 -19
  18. package/dist/donut-chart/root/donut-chart-root.css.js +13 -13
  19. package/dist/drawer/root/drawer-root.css.js +12 -0
  20. package/dist/drilldown/item/drilldown-item.css.js +11 -0
  21. package/dist/heatmap/root/heatmap-root.css.js +2 -2
  22. package/dist/heatmap/root/heatmap-root.d.ts +1 -0
  23. package/dist/input/root/input-root.css.js +4 -4
  24. package/dist/meter/root/meter-root.css.js +20 -20
  25. package/dist/meter/root/meter-root.d.ts +5 -0
  26. package/dist/object-inspector/root/object-inspector-root.css.js +5 -5
  27. package/dist/option/root/option-root.css.js +5 -5
  28. package/dist/orb/root/orb-root.d.ts +1 -1
  29. package/dist/orb/root/orb-root.js +2 -1
  30. package/dist/pagination/root/pagination-root.css.js +5 -5
  31. package/dist/pagination/root/pagination-root.d.ts +1 -0
  32. package/dist/pagination/size/pagination-size.d.ts +3 -2
  33. package/dist/scatter-chart/root/scatter-chart-root.css.js +5 -5
  34. package/dist/stat/group/stat-group.css.js +10 -3
  35. package/dist/table/column/table-column.css.js +23 -5
  36. package/dist/time-picker/root/time-picker-root.css.js +19 -16
  37. package/dist/tree/item/tree-item.css.js +4 -6
  38. package/dist/video/root/video-root.css.js +4 -1
  39. package/dist/video-playlist/item/video-playlist-item.css.js +6 -6
  40. package/package.json +6 -6
  41. package/types/jsx.d.ts +2128 -30
  42. package/types/vue.d.ts +17 -4
@@ -126,6 +126,18 @@ transform: translate(0, 0);
126
126
  flex: 0 0 auto;
127
127
  }
128
128
 
129
+ ::slotted([slot="header"]) {
130
+ color: var(--helix-color-foreground);
131
+ display: block;
132
+ font-family: var(--helix-font-sans);
133
+ font-size: var(--helix-text-lg);
134
+ font-weight: var(--helix-weight-semibold);
135
+ letter-spacing: var(--helix-tracking-tight);
136
+ line-height: var(--helix-leading-tight);
137
+ margin: var(--helix-space-none);
138
+ margin-block-end: var(--helix-space-md);
139
+ }
140
+
129
141
  [part="content"] {
130
142
  flex: 1 1 auto;
131
143
  min-block-size: 0;
@@ -27,6 +27,17 @@ text-overflow: ellipsis;
27
27
  white-space: nowrap;
28
28
  }
29
29
 
30
+ [part="mark"] {
31
+ block-size: var(--helix-size-icon-tight);
32
+ color: var(--helix-color-foreground-subtle);
33
+ flex: none;
34
+ inline-size: var(--helix-size-icon-tight);
35
+ }
36
+
37
+ :host(:dir(rtl)) [part="mark"] {
38
+ scale: -1 1;
39
+ }
40
+
30
41
  :host(:not([disabled])) [part="item"]:hover {
31
42
  background-color: var(
32
43
  --drilldown-item-hover-color,
@@ -69,9 +69,9 @@ position: absolute;
69
69
  }
70
70
 
71
71
  [part="tooltip-label"] {
72
- color: var(--helix-color-foreground-muted);
73
72
  display: block;
74
73
  font-weight: var(--helix-weight-medium);
74
+ opacity: 0.72;
75
75
  }
76
76
 
77
77
  [part="tooltip-cell"] {
@@ -82,7 +82,7 @@ justify-content: space-between;
82
82
  }
83
83
 
84
84
  [part="tooltip-name"] {
85
- color: var(--helix-color-foreground-muted);
85
+ opacity: 0.72;
86
86
  }
87
87
 
88
88
  [part="tooltip-value"] {
@@ -33,6 +33,7 @@ import '../../tooltip/index.js';
33
33
  * @csspart strip - The grid of cells.
34
34
  * @csspart tooltip - The bubble, forwarded from `Tooltip`.
35
35
  * @csspart tooltip-anchor - The `Tooltip` element itself.
36
+ * @csspart tooltip-arrow - The bubble's point, forwarded from `Tooltip`.
36
37
  * @csspart tooltip-cell - One column's name and value inside the tooltip.
37
38
  * @csspart tooltip-label - The reading's own name inside the tooltip.
38
39
  * @csspart tooltip-name - A column's name inside the tooltip.
@@ -42,7 +42,7 @@ background-color: transparent;
42
42
  }
43
43
 
44
44
  [part="clear"],
45
- [part="reveal"] {
45
+ [part~="reveal"] {
46
46
  --icon-size: var(--helix-size-icon-tight);
47
47
  all: unset;
48
48
 
@@ -60,17 +60,17 @@ transition: color var(--helix-duration-fast) var(--helix-easing-standard);
60
60
  }
61
61
 
62
62
  [part="clear"]:hover,
63
- [part="reveal"]:hover {
63
+ [part~="reveal"]:hover {
64
64
  color: var(--helix-color-foreground);
65
65
  }
66
66
 
67
67
  [part="clear"]:focus-visible,
68
- [part="reveal"]:focus-visible {
68
+ [part~="reveal"]:focus-visible {
69
69
  outline: var(--helix-size-focus-ring) solid var(--helix-color-focus-ring);
70
70
  outline-offset: var(--helix-size-focus-offset);
71
71
  }
72
72
 
73
- [part="reveal"][aria-pressed="true"] {
73
+ [part~="reveal"][aria-pressed="true"] {
74
74
  color: var(--helix-color-foreground);
75
75
  }
76
76
 
@@ -30,7 +30,7 @@ overflow: hidden;
30
30
  position: relative;
31
31
  }
32
32
 
33
- [part="indicator"] {
33
+ [part~="indicator"] {
34
34
  --_meter-hue: var(--meter-color, var(--helix-color-primary));
35
35
  background-color: var(--_meter-hue);
36
36
  block-size: 100%;
@@ -43,31 +43,31 @@ background-color var(--helix-duration-normal) var(--helix-easing-standard),
43
43
  scale var(--helix-duration-normal) var(--helix-easing-decelerate);
44
44
  }
45
45
 
46
- :host(:dir(rtl)) [part="indicator"] {
46
+ :host(:dir(rtl)) [part~="indicator"] {
47
47
  transform-origin: right center;
48
48
  }
49
49
 
50
- [part="indicator"][data-band="good"] {
50
+ [part~="indicator"][data-band="good"] {
51
51
  --_meter-hue: var(--meter-color, var(--helix-color-success));
52
52
  background-color: var(--_meter-hue);
53
53
  }
54
54
 
55
- [part="indicator"][data-band="fair"] {
55
+ [part~="indicator"][data-band="fair"] {
56
56
  --_meter-hue: var(--meter-color, var(--helix-color-warning));
57
57
  background-color: var(--_meter-hue);
58
58
  }
59
59
 
60
- [part="indicator"][data-band="poor"] {
60
+ [part~="indicator"][data-band="poor"] {
61
61
  --_meter-hue: var(--meter-color, var(--helix-color-danger));
62
62
  background-color: var(--_meter-hue);
63
63
  }
64
64
 
65
- [part="indicator"][data-beyond="over"] {
65
+ [part~="indicator"][data-beyond="over"] {
66
66
  border-end-end-radius: var(--helix-radii-none);
67
67
  border-start-end-radius: var(--helix-radii-none);
68
68
  }
69
69
 
70
- [part="indicator"][data-beyond="under"] {
70
+ [part~="indicator"][data-beyond="under"] {
71
71
  border-end-start-radius: var(--helix-radii-none);
72
72
  border-start-start-radius: var(--helix-radii-none);
73
73
  }
@@ -110,10 +110,10 @@ rotate: 135deg;
110
110
  }
111
111
 
112
112
  :host([shape="arc"]) [part="groove"],
113
- :host([shape="arc"]) [part="indicator"],
113
+ :host([shape="arc"]) [part~="indicator"],
114
114
  :host([shape="arc"]) [part="tick"],
115
115
  :host([shape="ring"]) [part="groove"],
116
- :host([shape="ring"]) [part="indicator"],
116
+ :host([shape="ring"]) [part~="indicator"],
117
117
  :host([shape="ring"]) [part="tick"] {
118
118
  cx: 50%;
119
119
  cy: 50%;
@@ -128,8 +128,8 @@ stroke: var(--meter-track-color, var(--helix-color-surface-sunken));
128
128
  stroke-dasharray: var(--meter-sweep) 100;
129
129
  }
130
130
 
131
- :host([shape="arc"]) [part="indicator"],
132
- :host([shape="ring"]) [part="indicator"] {
131
+ :host([shape="arc"]) [part~="indicator"],
132
+ :host([shape="ring"]) [part~="indicator"] {
133
133
 
134
134
  --_meter-hue: var(--helix-color-foreground-muted);
135
135
  scale: none;
@@ -149,20 +149,20 @@ stroke-dasharray: 1 99;
149
149
  stroke-dashoffset: calc(var(--meter-along) * -1);
150
150
  }
151
151
 
152
- :host([shape="arc"]) [part="indicator"][data-band="good"],
153
- :host([shape="ring"]) [part="indicator"][data-band="good"] {
152
+ :host([shape="arc"]) [part~="indicator"][data-band="good"],
153
+ :host([shape="ring"]) [part~="indicator"][data-band="good"] {
154
154
  --_meter-hue: var(--helix-color-success);
155
155
  stroke: var(--_meter-hue);
156
156
  }
157
157
 
158
- :host([shape="arc"]) [part="indicator"][data-band="fair"],
159
- :host([shape="ring"]) [part="indicator"][data-band="fair"] {
158
+ :host([shape="arc"]) [part~="indicator"][data-band="fair"],
159
+ :host([shape="ring"]) [part~="indicator"][data-band="fair"] {
160
160
  --_meter-hue: var(--helix-color-warning);
161
161
  stroke: var(--_meter-hue);
162
162
  }
163
163
 
164
- :host([shape="arc"]) [part="indicator"][data-band="poor"],
165
- :host([shape="ring"]) [part="indicator"][data-band="poor"] {
164
+ :host([shape="arc"]) [part~="indicator"][data-band="poor"],
165
+ :host([shape="ring"]) [part~="indicator"][data-band="poor"] {
166
166
  --_meter-hue: var(--helix-color-danger);
167
167
  stroke: var(--_meter-hue);
168
168
  }
@@ -178,7 +178,7 @@ print-color-adjust: exact;
178
178
  }
179
179
  }
180
180
 
181
- :host([emphasis="subtle"]) [part="indicator"] {
181
+ :host([emphasis="subtle"]) [part~="indicator"] {
182
182
  background-color: color-mix(
183
183
  in oklab,
184
184
  var(--_meter-hue) 30%,
@@ -186,8 +186,8 @@ var(--meter-track-color, var(--helix-color-surface-sunken))
186
186
  );
187
187
  }
188
188
 
189
- :host([emphasis="subtle"][shape="arc"]) [part="indicator"],
190
- :host([emphasis="subtle"][shape="ring"]) [part="indicator"] {
189
+ :host([emphasis="subtle"][shape="arc"]) [part~="indicator"],
190
+ :host([emphasis="subtle"][shape="ring"]) [part~="indicator"] {
191
191
  stroke: color-mix(
192
192
  in oklab,
193
193
  var(--_meter-hue) 30%,
@@ -39,6 +39,11 @@ import type { CSSResultGroup } from 'lit';
39
39
  * @documentation https://helix.fusion.dev/components/meter
40
40
  *
41
41
  * @csspart indicator - The part of it the value fills.
42
+ * @csspart indicator-fair - The fill while the reading is in a band beside the good one, beside `indicator`.
43
+ * @csspart indicator-good - The fill while the reading is in the good band, beside `indicator`.
44
+ * @csspart indicator-over - The fill while the value is past the top, beside `indicator`.
45
+ * @csspart indicator-poor - The fill while the reading is two bands from the good one, beside `indicator`.
46
+ * @csspart indicator-under - The fill while the value is below the floor, beside `indicator`.
42
47
  * @csspart tick - A mark at `low` or at `high`.
43
48
  * @csspart track - The whole range.
44
49
  * @csspart value - The reading, under `show-value`.
@@ -57,7 +57,7 @@ overscroll-behavior: contain;
57
57
  outline: none;
58
58
  }
59
59
 
60
- [part="row"] {
60
+ [part~="row"] {
61
61
  cursor: default;
62
62
  overflow: hidden;
63
63
  padding-inline-end: var(--helix-space-2xl);
@@ -72,7 +72,7 @@ text-overflow: ellipsis;
72
72
  white-space: nowrap;
73
73
  }
74
74
 
75
- [part="row"][aria-expanded] {
75
+ [part~="row"][aria-expanded] {
76
76
  cursor: pointer;
77
77
  padding-inline-start: calc(
78
78
  var(--object-inspector-level) *
@@ -81,11 +81,11 @@ var(--helix-space-sm)
81
81
  );
82
82
  }
83
83
 
84
- [part="tree"]:focus [part="row"][data-active] {
84
+ [part="tree"]:focus [part~="row"][data-active] {
85
85
  background-color: var(--helix-color-surface-sunken);
86
86
  }
87
87
 
88
- [part="tree"]:focus-visible [part="row"][data-active] {
88
+ [part="tree"]:focus-visible [part~="row"][data-active] {
89
89
  outline: var(--helix-size-focus-ring) solid var(--helix-color-focus-ring);
90
90
  outline-offset: calc(var(--helix-size-focus-offset) * -1);
91
91
  }
@@ -98,7 +98,7 @@ margin-inline-end: var(--helix-space-2xs);
98
98
  vertical-align: -0.125em;
99
99
  }
100
100
 
101
- :host(:dir(rtl)) [part="row"][aria-expanded="false"] > [part="toggle"] {
101
+ :host(:dir(rtl)) [part~="row"][aria-expanded="false"] > [part="toggle"] {
102
102
  scale: -1 1;
103
103
  }
104
104
 
@@ -9,7 +9,7 @@ display: block;
9
9
  display: none;
10
10
  }
11
11
 
12
- [part="item"] {
12
+ [part~="item"] {
13
13
  align-items: center;
14
14
 
15
15
  border-radius: var(--option-radius, var(--helix-radii-sm));
@@ -54,7 +54,7 @@ text-overflow: ellipsis;
54
54
  white-space: nowrap;
55
55
  }
56
56
 
57
- :host(:state(selected)) [part="item"]::after {
57
+ :host(:state(selected)) [part~="item"]::after {
58
58
  content: "";
59
59
  background-color: currentColor;
60
60
  block-size: var(--helix-size-icon-tight);
@@ -67,8 +67,8 @@ mask-repeat: no-repeat;
67
67
  mask-size: contain;
68
68
  }
69
69
 
70
- :host([data-active]) [part="item"],
71
- :host(:not([disabled])) [part="item"]:hover {
70
+ :host([data-active]) [part~="item"],
71
+ :host(:not([disabled])) [part~="item"]:hover {
72
72
 
73
73
  background-color: var(
74
74
  --option-active-color,
@@ -79,7 +79,7 @@ color-mix(in oklab, var(--helix-color-foreground) 12%, transparent)
79
79
  );
80
80
  }
81
81
 
82
- :host([disabled]) [part="item"] {
82
+ :host([disabled]) [part~="item"] {
83
83
  cursor: default;
84
84
  opacity: 0.5;
85
85
  }
@@ -121,7 +121,7 @@ export declare class HelixOrb extends HelixElement {
121
121
  private last;
122
122
  protected willUpdate(changed: PropertyValues): void;
123
123
  protected render(): TemplateResult;
124
- protected firstUpdated(): void;
124
+ protected firstUpdated(changed: PropertyValues): void;
125
125
  connectedCallback(): void;
126
126
  disconnectedCallback(): void;
127
127
  private start;
@@ -86,7 +86,8 @@ let HelixOrb = class HelixOrb extends HelixElement {
86
86
  render() {
87
87
  return html `<canvas part="canvas" aria-hidden="true"></canvas>`;
88
88
  }
89
- firstUpdated() {
89
+ firstUpdated(changed) {
90
+ super.firstUpdated(changed);
90
91
  this.start();
91
92
  }
92
93
  connectedCallback() {
@@ -25,7 +25,7 @@ display: inline-flex;
25
25
  [part="first"],
26
26
  [part="gap"],
27
27
  [part="last"],
28
- [part="page"],
28
+ [part~="page"],
29
29
  [part="previous"],
30
30
  [part="next"] {
31
31
  align-items: center;
@@ -52,7 +52,7 @@ color var(--helix-duration-fast) var(--helix-easing-standard);
52
52
  [part="first"]:hover,
53
53
  [part="gap"]:hover,
54
54
  [part="last"]:hover,
55
- [part="page"]:hover,
55
+ [part~="page"]:hover,
56
56
  [part="previous"]:hover,
57
57
  [part="next"]:hover {
58
58
  background-color: var(--pagination-hover-color, var(--helix-color-surface-sunken));
@@ -62,15 +62,15 @@ color: var(--helix-color-foreground);
62
62
  [part="first"]:focus-visible,
63
63
  [part="gap"]:focus-visible,
64
64
  [part="last"]:focus-visible,
65
- [part="page"]:focus-visible,
65
+ [part~="page"]:focus-visible,
66
66
  [part="previous"]:focus-visible,
67
67
  [part="next"]:focus-visible {
68
68
  outline: var(--helix-size-focus-ring) solid var(--helix-color-focus-ring);
69
69
  outline-offset: var(--helix-size-focus-offset);
70
70
  }
71
71
 
72
- [part="page"][aria-current="page"],
73
- [part="page"][aria-current="page"]:hover {
72
+ [part~="page"][aria-current="page"],
73
+ [part~="page"][aria-current="page"]:hover {
74
74
  background-color: var(--pagination-current-color, var(--helix-color-surface-raised));
75
75
  border-color: var(--helix-color-border);
76
76
  color: var(--helix-color-foreground);
@@ -41,6 +41,7 @@ import type { CSSResultGroup } from 'lit';
41
41
  * @csspart list - The run of pages.
42
42
  * @csspart next - The control that moves forward one page.
43
43
  * @csspart page - The control for one page.
44
+ * @csspart page-current - The page you are on, beside `page`.
44
45
  * @csspart previous - The control that moves back one page.
45
46
  * @csspart status - The reading of where you are, in `compact`.
46
47
  *
@@ -10,8 +10,9 @@ import '../../select/index.js';
10
10
  * stands in a column of fields; this one stands in a footer beside a run of page
11
11
  * numbers, where a two-line control makes the whole row two lines tall.
12
12
  *
13
- * `Select`'s own parts are exported, so `::part(trigger)` and `::part(label)`
14
- * reach through both boundaries and a consumer styles it as the select it is.
13
+ * `Select`'s own parts are exported under `control-`, so `::part(control-trigger)` and
14
+ * `::part(control-label)` reach through both boundaries and a consumer styles it
15
+ * as the select it is.
15
16
  *
16
17
  * @since 0.1.0
17
18
  * @status experimental
@@ -4,13 +4,13 @@ column-gap: var(--helix-space-xs);
4
4
  container-type: inline-size;
5
5
  display: grid;
6
6
  grid-template-areas:
7
- "y-name ."
7
+ "y-name y-name"
8
8
  "y-axis plot"
9
9
  ". x-axis"
10
10
  ". x-name";
11
11
  grid-template-columns: auto minmax(0, 1fr);
12
12
  position: relative;
13
- row-gap: var(--scatter-chart-gap, var(--helix-space-2xs));
13
+ row-gap: var(--scatter-chart-gap, var(--helix-space-xs));
14
14
  }
15
15
 
16
16
  [part="plot"] {
@@ -32,7 +32,7 @@ stroke-width: var(--helix-border-thin);
32
32
  vector-effect: non-scaling-stroke;
33
33
  }
34
34
 
35
- [part="point"] {
35
+ [part~="point"] {
36
36
  background-color: var(--chart-series);
37
37
  block-size: var(--scatter-chart-point-size, 8px);
38
38
  border-radius: var(--helix-radii-full);
@@ -51,7 +51,7 @@ scale var(--helix-duration-fast) var(--helix-easing-decelerate);
51
51
  translate: -50% -50%;
52
52
  }
53
53
 
54
- [part="point"][data-active] {
54
+ [part~="point"][data-active] {
55
55
  opacity: 1;
56
56
  scale: 1.5;
57
57
  }
@@ -126,7 +126,7 @@ white-space: nowrap;
126
126
  }
127
127
 
128
128
  @starting-style {
129
- [part="point"] {
129
+ [part~="point"] {
130
130
  opacity: 0;
131
131
  }
132
132
  }
@@ -1,11 +1,18 @@
1
1
  import { createSheet } from '@fusion.dev/helix-core';
2
2
  export const styles = createSheet(`:host {
3
+ --_stat-group-gap: var(--stat-group-gap, var(--helix-space-2xl));
3
4
  display: flex;
4
5
  flex-wrap: wrap;
5
- gap: var(--stat-group-gap, var(--helix-space-2xl));
6
+ gap: var(--_stat-group-gap);
6
7
  }
7
8
 
8
- :host([divided]) ::slotted(*:not(:first-child)) {
9
+ :host([divided]) {
10
+ column-gap: calc(var(--_stat-group-gap) * 2);
11
+ overflow-x: clip;
12
+ }
13
+
14
+ :host([divided]) ::slotted(*) {
9
15
  border-inline-start: var(--helix-border-thin) solid var(--helix-color-border);
10
- padding-inline-start: var(--stat-group-gap, var(--helix-space-2xl));
16
+ margin-inline-start: calc(var(--_stat-group-gap) * -1 - var(--helix-border-thin));
17
+ padding-inline-start: var(--_stat-group-gap);
11
18
  }`);
@@ -5,22 +5,30 @@ display: contents;
5
5
 
6
6
  [part="column"] {
7
7
  align-items: center;
8
- border-block-end: var(--helix-border-thin) solid var(--helix-color-border);
8
+ border-block-end: var(--helix-border-thin) solid
9
+ var(--_table-heading-rule-color, var(--helix-color-border));
9
10
  box-sizing: border-box;
10
11
 
11
- color: var(--helix-color-foreground-muted);
12
+ color: var(--_table-heading-color, var(--helix-color-foreground-muted));
12
13
  display: flex;
13
14
  font-family: var(--helix-font-sans);
14
- font-size: var(--helix-text-sm);
15
+ font-size: var(--_table-heading-text, var(--helix-text-sm));
15
16
  font-weight: var(--helix-weight-semibold);
16
17
 
17
18
  min-block-size: var(--helix-size-control-loose);
18
19
  min-inline-size: 0;
19
- padding-inline-end: var(--helix-space-md);
20
+ padding-block: var(--_table-heading-padding-block, var(--helix-space-none));
21
+ padding-inline: var(
22
+ --_table-heading-padding-inline,
23
+ var(--helix-space-none) var(--helix-space-md)
24
+ );
20
25
  }
21
26
 
22
27
  [part="column"] {
23
- position: relative;
28
+ background-color: var(--_table-heading-background-color, transparent);
29
+ inset-block-start: 0;
30
+ position: var(--_table-heading-position, relative);
31
+ z-index: var(--_table-heading-layer, auto);
24
32
  }
25
33
 
26
34
  [part="sort"] {
@@ -34,6 +42,16 @@ gap: var(--helix-space-2xs);
34
42
  min-inline-size: 0;
35
43
  }
36
44
 
45
+ :host([align="center"]) [part="column"],
46
+ :host([align="center"]) [part="sort"] {
47
+ justify-content: center;
48
+ }
49
+
50
+ :host([align="end"]) [part="column"],
51
+ :host([align="end"]) [part="sort"] {
52
+ justify-content: flex-end;
53
+ }
54
+
37
55
  [part="sort"]:focus-visible,
38
56
  [part="grip"]:focus-visible,
39
57
  [part="resizer"]:focus-visible {
@@ -4,7 +4,10 @@ display: block;
4
4
  }
5
5
 
6
6
  [part="list"] {
7
- --listbox-max-block-size: var(--time-picker-list-block-size, 16rem);
7
+ --listbox-max-block-size: var(
8
+ --time-picker-list-block-size,
9
+ calc(var(--helix-size-control-tight) * 7)
10
+ );
8
11
 
9
12
  display: block;
10
13
  }
@@ -16,13 +19,13 @@ border-radius: var(--helix-radii-none);
16
19
  padding-block: var(--helix-space-none);
17
20
  }
18
21
 
19
- :host([mode="range"]) [part="option"]:state(selected)::part(item) {
22
+ :host([mode="range"]) [part~="option"]:state(selected)::part(item) {
20
23
 
21
24
  background-color: var(--helix-color-surface-inverse);
22
25
  color: var(--helix-color-foreground-inverse);
23
26
  }
24
27
 
25
- [part="option"][data-between]::part(item) {
28
+ [part~="option"][data-between]::part(item) {
26
29
  background-color: var(
27
30
  --time-picker-range-color,
28
31
  light-dark(
@@ -32,7 +35,7 @@ color-mix(in oklab, var(--helix-color-foreground) 14%, transparent)
32
35
  );
33
36
  }
34
37
 
35
- [part="option"][data-between]::part(item)::after {
38
+ [part~="option"][data-between]::part(item)::after {
36
39
  content: "";
37
40
  background-color: currentColor;
38
41
  block-size: var(--helix-size-icon-tight);
@@ -69,19 +72,19 @@ scroll-snap-type: y mandatory;
69
72
  scrollbar-width: none;
70
73
  }
71
74
 
72
- [part="column"] [part="option"] {
75
+ [part="column"] [part~="option"] {
73
76
  scroll-snap-align: center;
74
77
  }
75
78
 
76
- [part="column"] [part="option"]::part(item) {
79
+ [part="column"] [part~="option"]::part(item) {
77
80
  justify-content: center;
78
81
  }
79
82
 
80
- [part="column"] [part="option"]::part(label) {
83
+ [part="column"] [part~="option"]::part(label) {
81
84
  text-align: center;
82
85
  }
83
86
 
84
- [part="column"] [part="option"]::part(item) {
87
+ [part="column"] [part~="option"]::part(item) {
85
88
  min-block-size: var(--_time-row);
86
89
  min-inline-size: var(--_time-row);
87
90
 
@@ -89,11 +92,11 @@ padding-block: var(--helix-space-none);
89
92
  padding-inline: var(--helix-space-sm);
90
93
  }
91
94
 
92
- [part="column"] [part="option"]::part(item) {
95
+ [part="column"] [part~="option"]::part(item) {
93
96
  background-color: transparent;
94
97
  }
95
98
 
96
- [part="column"] [part="option"]::part(label) {
99
+ [part="column"] [part~="option"]::part(label) {
97
100
  align-items: center;
98
101
  block-size: var(--_time-row);
99
102
 
@@ -105,22 +108,22 @@ padding-inline: var(--helix-space-2xs);
105
108
  transition: background-color var(--helix-duration-fast) var(--helix-easing-standard);
106
109
  }
107
110
 
108
- [part="column"] [part="option"]:not([disabled]):hover::part(label),
109
- [part="column"] [part="option"][data-active]::part(label) {
111
+ [part="column"] [part~="option"]:not([disabled]):hover::part(label),
112
+ [part="column"] [part~="option"][data-active]::part(label) {
110
113
  background-color: var(--helix-color-surface-sunken);
111
114
  }
112
115
 
113
- [part="column"] [part="option"]:state(selected)::part(label) {
116
+ [part="column"] [part~="option"]:state(selected)::part(label) {
114
117
  background-color: var(--time-picker-selected-color, var(--helix-color-surface-inverse));
115
118
  color: var(--helix-color-foreground-inverse);
116
119
  }
117
120
 
118
- [part="column"] [part="option"]::part(item)::after {
121
+ [part="column"] [part~="option"]::part(item)::after {
119
122
  content: none;
120
123
  }
121
124
 
122
- :host([invalid]) [part="option"]:state(selected)::part(item),
123
- :host([invalid]) [part="column"] [part="option"]:state(selected)::part(label) {
125
+ :host([invalid]) [part~="option"]:state(selected)::part(item),
126
+ :host([invalid]) [part="column"] [part~="option"]:state(selected)::part(label) {
124
127
  outline: var(--helix-size-focus-ring) solid var(--helix-color-danger);
125
128
  outline-offset: var(--helix-size-focus-offset);
126
129
  }
@@ -7,7 +7,6 @@ display: block;
7
7
 
8
8
  [part="item"] {
9
9
  border-radius: var(--helix-radii-sm);
10
- margin-block-end: var(--tree-gap, var(--helix-space-2xs));
11
10
  outline: none;
12
11
  }
13
12
 
@@ -18,9 +17,12 @@ border-radius: var(--helix-radii-sm);
18
17
  color: var(--helix-color-foreground-muted);
19
18
  cursor: pointer;
20
19
  display: flex;
21
- font-size: var(--_tree-text, var(--helix-text-sm));
20
+
21
+ font-size: var(--helix-text-sm);
22
22
  gap: var(--helix-space-2xs);
23
23
 
24
+ margin-block-end: var(--tree-gap, var(--helix-space-2xs));
25
+
24
26
  block-size: max(
25
27
  var(--tree-row-size, var(--helix-size-control-tight)),
26
28
  calc(1lh + var(--helix-space-xs) * 2)
@@ -55,10 +57,6 @@ font-weight: var(--helix-weight-medium);
55
57
  font-weight: var(--helix-weight-medium);
56
58
  }
57
59
 
58
- slot[name="children"]::slotted(*) {
59
- --_tree-text: var(--helix-text-xs);
60
- }
61
-
62
60
  [part="row"]:hover {
63
61
  background-color: var(--helix-color-surface-raised);
64
62
  color: var(--helix-color-foreground);
@@ -13,6 +13,9 @@ position: relative;
13
13
  [part="stage"] {
14
14
  border-radius: var(--video-radius, var(--helix-radii-md));
15
15
  display: block;
16
+
17
+ outline: var(--helix-border-thin) solid var(--helix-color-border);
18
+ outline-offset: calc(var(--helix-border-thin) * -1);
16
19
  overflow: hidden;
17
20
  position: relative;
18
21
  }
@@ -332,7 +335,7 @@ font-weight: var(--helix-weight-medium);
332
335
  min-inline-size: var(--video-speed-size, 2.5rem);
333
336
  }
334
337
 
335
- [part="remote"][aria-pressed="true"] {
338
+ [part~="remote"][aria-pressed="true"] {
336
339
  color: var(--helix-color-primary);
337
340
  }
338
341