@fusion.dev/helix 0.30.1 → 0.31.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 (36) hide show
  1. package/custom-elements.json +2936 -155
  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/bar-chart/root/bar-chart-root.css.js +2 -2
  5. package/dist/breadcrumbs/breadcrumb/breadcrumb.css.js +10 -1
  6. package/dist/carousel/root/carousel-root.css.js +10 -10
  7. package/dist/chat/composer/chat-composer.css.js +1 -1
  8. package/dist/chat/message/chat-message.css.js +2 -0
  9. package/dist/chat/root/chat-root.css.js +1 -5
  10. package/dist/checkbox/root/checkbox-root.css.js +4 -4
  11. package/dist/code-block/root/code-block-root.css.js +18 -4
  12. package/dist/color-input/root/color-input-root.css.js +1 -3
  13. package/dist/data-table/root/data-table-root.css.js +47 -5
  14. package/dist/data-table/root/data-table-root.d.ts +1 -0
  15. package/dist/date-picker/root/date-picker-root.css.js +19 -19
  16. package/dist/donut-chart/root/donut-chart-root.css.js +13 -13
  17. package/dist/drawer/root/drawer-root.css.js +12 -0
  18. package/dist/heatmap/root/heatmap-root.css.js +2 -2
  19. package/dist/heatmap/root/heatmap-root.d.ts +1 -0
  20. package/dist/input/root/input-root.css.js +4 -4
  21. package/dist/meter/root/meter-root.css.js +20 -20
  22. package/dist/meter/root/meter-root.d.ts +5 -0
  23. package/dist/object-inspector/root/object-inspector-root.css.js +5 -5
  24. package/dist/option/root/option-root.css.js +5 -5
  25. package/dist/pagination/root/pagination-root.css.js +5 -5
  26. package/dist/pagination/root/pagination-root.d.ts +1 -0
  27. package/dist/pagination/size/pagination-size.d.ts +3 -2
  28. package/dist/scatter-chart/root/scatter-chart-root.css.js +5 -5
  29. package/dist/stat/group/stat-group.css.js +10 -3
  30. package/dist/time-picker/root/time-picker-root.css.js +19 -16
  31. package/dist/tree/item/tree-item.css.js +4 -6
  32. package/dist/video/root/video-root.css.js +4 -1
  33. package/dist/video-playlist/item/video-playlist-item.css.js +6 -6
  34. package/package.json +6 -6
  35. package/types/jsx.d.ts +2073 -29
  36. package/types/vue.d.ts +6 -4
@@ -97,6 +97,10 @@ min-inline-size: 0;
97
97
  text-align: center;
98
98
  }
99
99
 
100
+ :host([dismissible]) [part="content"] {
101
+ padding-inline: calc(var(--helix-size-icon) + var(--helix-space-2xs) * 2 + var(--helix-space-xs));
102
+ }
103
+
100
104
  [part="actions"] slot::slotted(*) {
101
105
  margin-inline-start: var(--helix-space-md);
102
106
  }
@@ -15,6 +15,8 @@ export const styles = createSheet(`:host {
15
15
 
16
16
  background-color: var(--app-header-background-color, var(--helix-color-background));
17
17
  border-block-end: var(--helix-border-thin) solid var(--app-header-border-color, transparent);
18
+
19
+ container-type: inline-size;
18
20
  display: block;
19
21
  inline-size: 100%;
20
22
 
@@ -54,7 +56,7 @@ align-items: center;
54
56
  block-size: var(--app-header-block-size, var(--helix-size-header));
55
57
  display: grid;
56
58
  gap: var(--helix-space-lg);
57
- grid-template-columns: 1fr auto 1fr;
59
+ grid-template-columns: minmax(max-content, 1fr) minmax(0, auto) minmax(max-content, 1fr);
58
60
  margin-inline: auto;
59
61
  max-inline-size: var(--app-header-max-inline-size, 72rem);
60
62
  padding-inline: var(--app-header-padding, var(--helix-space-lg));
@@ -94,7 +96,8 @@ display: flex;
94
96
 
95
97
  position: relative;
96
98
  gap: var(--helix-space-md);
97
- justify-content: center;
99
+
100
+ justify-content: safe center;
98
101
 
99
102
  min-inline-size: 0;
100
103
  overflow-x: auto;
@@ -104,6 +107,13 @@ overflow-x: auto;
104
107
  justify-content: flex-start;
105
108
  }
106
109
 
110
+ @container (inline-size < 24rem) {
111
+ [part="row"] {
112
+ gap: var(--helix-space-md);
113
+ padding-inline: var(--app-header-padding, var(--helix-space-md));
114
+ }
115
+ }
116
+
107
117
  @media print {
108
118
  :host {
109
119
  display: none;
@@ -81,11 +81,11 @@ text-align: end;
81
81
  --_bar-chart-series: var(--chart-series);
82
82
  }
83
83
 
84
- [part="plot"]:has([data-active]) [part="group"]:not([data-active]) {
84
+ [part="plot"]:has([data-active]) [part~="group"]:not([data-active]) {
85
85
  opacity: 0.45;
86
86
  }
87
87
 
88
- [part="group"] {
88
+ [part~="group"] {
89
89
  transition: opacity var(--helix-duration-fast) var(--helix-easing-decelerate);
90
90
  }
91
91
 
@@ -22,13 +22,14 @@ gap: var(--breadcrumbs-gap, var(--helix-space-xs));
22
22
 
23
23
  [part="separator"] {
24
24
  color: var(--breadcrumbs-separator-color, var(--helix-color-foreground-subtle));
25
- display: inline-flex;
25
+ display: block;
26
26
  user-select: none;
27
27
  }
28
28
 
29
29
  [part="separator"] svg {
30
30
  block-size: 1em;
31
31
  inline-size: 1em;
32
+ vertical-align: calc(0.5cap - 0.5em);
32
33
  }
33
34
 
34
35
  :host(:first-child) [part="separator"] {
@@ -81,10 +82,18 @@ padding: var(--helix-space-2xs) var(--helix-space-xs);
81
82
  text-decoration: none;
82
83
  }
83
84
 
85
+ :host(:first-child) a[part="link"] {
86
+ margin-inline-start: calc(var(--helix-space-xs) * -1);
87
+ }
88
+
84
89
  :host(:not([href])) [part="link"] {
85
90
  padding-block: var(--helix-space-none);
86
91
  }
87
92
 
93
+ :host(:not([href]):not([current])) [part="link"] {
94
+ padding-inline: var(--helix-space-none);
95
+ }
96
+
88
97
  a[part="link"]:hover {
89
98
  background-color: var(
90
99
  --breadcrumbs-hover-color,
@@ -237,7 +237,7 @@ var(--_carousel-per-view)
237
237
  --_carousel-per-view: 5;
238
238
  }
239
239
 
240
- [part="indicator"] {
240
+ [part~="indicator"] {
241
241
 
242
242
  --_carousel-indicator-motion: var(--helix-duration-slow) var(--helix-easing-emphasized);
243
243
  all: unset;
@@ -252,29 +252,29 @@ background-color var(--_carousel-indicator-motion),
252
252
  inline-size var(--_carousel-indicator-motion);
253
253
  }
254
254
 
255
- [part="indicator"][data-current] {
255
+ [part~="indicator"][data-current] {
256
256
  background-color: var(--helix-color-primary);
257
257
  inline-size: var(--helix-space-lg);
258
258
  }
259
259
 
260
- :host([indicator-placement="inline-start"]) [part="indicator"],
261
- :host([indicator-placement="inline-end"]) [part="indicator"] {
260
+ :host([indicator-placement="inline-start"]) [part~="indicator"],
261
+ :host([indicator-placement="inline-end"]) [part~="indicator"] {
262
262
  transition:
263
263
  background-color var(--_carousel-indicator-motion),
264
264
  block-size var(--_carousel-indicator-motion);
265
265
  }
266
266
 
267
- :host([indicator-placement="inline-start"]) [part="indicator"][data-current],
268
- :host([indicator-placement="inline-end"]) [part="indicator"][data-current] {
267
+ :host([indicator-placement="inline-start"]) [part~="indicator"][data-current],
268
+ :host([indicator-placement="inline-end"]) [part~="indicator"][data-current] {
269
269
  block-size: var(--helix-space-lg);
270
270
  inline-size: var(--helix-space-xs);
271
271
  }
272
272
 
273
- [part="indicator"]:hover {
273
+ [part~="indicator"]:hover {
274
274
  background-color: var(--helix-color-foreground-muted);
275
275
  }
276
276
 
277
- [part="indicator"]:focus-visible {
277
+ [part~="indicator"]:focus-visible {
278
278
  outline: var(--helix-size-focus-ring) solid var(--helix-color-focus-ring);
279
279
  outline-offset: var(--helix-size-focus-offset);
280
280
  }
@@ -337,13 +337,13 @@ padding-inline: var(--helix-space-none);
337
337
  padding-inline-start: var(--helix-space-sm);
338
338
  }
339
339
 
340
- :host([orientation="vertical"]:not([indicator-placement])) [part="indicator"] {
340
+ :host([orientation="vertical"]:not([indicator-placement])) [part~="indicator"] {
341
341
  transition:
342
342
  background-color var(--_carousel-indicator-motion),
343
343
  block-size var(--_carousel-indicator-motion);
344
344
  }
345
345
 
346
- :host([orientation="vertical"]:not([indicator-placement])) [part="indicator"][data-current] {
346
+ :host([orientation="vertical"]:not([indicator-placement])) [part~="indicator"][data-current] {
347
347
  block-size: var(--helix-space-lg);
348
348
  inline-size: var(--helix-space-xs);
349
349
  }
@@ -29,7 +29,7 @@ font-size: var(--helix-text-sm);
29
29
  line-height: var(--helix-leading-normal);
30
30
  max-block-size: var(--chat-composer-max-block-size, 12rem);
31
31
  padding-block: var(--helix-space-2xs);
32
- padding-inline: var(--helix-space-none);
32
+ padding-inline: calc(var(--helix-space-sm) - var(--helix-space-xs) - var(--helix-border-thin));
33
33
  resize: none;
34
34
  }
35
35
 
@@ -272,6 +272,8 @@ color: var(--helix-color-foreground);
272
272
  cursor: pointer;
273
273
  font: inherit;
274
274
  font-weight: var(--helix-weight-medium);
275
+
276
+ margin-inline-end: calc(var(--helix-space-2xs) * -1);
275
277
  min-block-size: calc(var(--helix-size-control-tight) - var(--helix-space-2xs));
276
278
  padding-block: var(--helix-space-2xs);
277
279
  padding-inline: var(--helix-space-2xs);
@@ -108,11 +108,7 @@ padding-inline: var(--chat-padding-inline, var(--helix-space-md));
108
108
 
109
109
  [part="composer"] {
110
110
  padding-block: var(--helix-space-sm);
111
- padding-inline: calc(
112
- var(--chat-padding-inline, var(--helix-space-md)) -
113
- var(--helix-space-xs) -
114
- var(--helix-border-thin)
115
- );
111
+ padding-inline: var(--chat-padding-inline, var(--helix-space-md));
116
112
  }
117
113
 
118
114
  [part="empty"],
@@ -61,7 +61,7 @@ var(--checkbox-checked-color, var(--helix-color-foreground))
61
61
  );
62
62
  }
63
63
 
64
- [part="mark"] {
64
+ [part~="mark"] {
65
65
 
66
66
  background-color: var(--checkbox-mark-color, var(--helix-color-foreground));
67
67
  block-size: var(--_checkbox-size);
@@ -77,12 +77,12 @@ scale: 0;
77
77
  transition: scale var(--helix-duration-fast) var(--helix-easing-emphasized);
78
78
  }
79
79
 
80
- :host(:state(checked)) [part="mark"],
81
- :host([indeterminate]) [part="mark"] {
80
+ :host(:state(checked)) [part~="mark"],
81
+ :host([indeterminate]) [part~="mark"] {
82
82
  scale: 1;
83
83
  }
84
84
 
85
- :host([indeterminate]) [part="mark"] {
85
+ :host([indeterminate]) [part~="mark"] {
86
86
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.5' stroke-linecap='round'%3E%3Cpath d='M7 12h10'/%3E%3C/svg%3E");
87
87
  }
88
88
 
@@ -1,5 +1,13 @@
1
1
  import { createSheet } from '@fusion.dev/helix-core';
2
2
  export const styles = createSheet(`:host {
3
+
4
+ --_code-block-line: calc(var(--helix-text-sm) * var(--helix-leading-normal));
5
+ --_code-block-copy-inset: calc(
6
+ var(--helix-space-sm) +
7
+ (var(--_code-block-line) - var(--helix-size-control-sm)) /
8
+ 2
9
+ );
10
+ --_code-block-gutter: calc(var(--helix-size-control-sm) + var(--_code-block-copy-inset) * 2);
3
11
  display: flex;
4
12
  flex-direction: column;
5
13
  }
@@ -41,8 +49,9 @@ block-size: 100%;
41
49
  }
42
50
 
43
51
  [part="copy"] {
44
- inset-block-start: var(--helix-space-2xs);
45
- inset-inline-end: var(--helix-space-2xs);
52
+ --icon-button-size: var(--helix-size-control-sm);
53
+ inset-block-start: var(--_code-block-copy-inset);
54
+ inset-inline-end: var(--_code-block-copy-inset);
46
55
  position: absolute;
47
56
  }
48
57
 
@@ -59,7 +68,7 @@ padding-inline: var(--helix-space-md);
59
68
  }
60
69
 
61
70
  :host(:not([no-copy])) [part="block"] {
62
- padding-inline-end: calc(var(--helix-size-control) + var(--helix-space-sm));
71
+ padding-inline-end: var(--_code-block-gutter);
63
72
  }
64
73
 
65
74
  [part="header"] + [part="frame"] [part="block"] {
@@ -75,6 +84,11 @@ font-size: var(--helix-text-sm);
75
84
  line-height: var(--helix-leading-normal);
76
85
  }
77
86
 
87
+ :host(:not([diff])) [part="code"] {
88
+ display: block;
89
+ overflow-x: auto;
90
+ }
91
+
78
92
  :host([diff]) {
79
93
  gap: var(--helix-space-md);
80
94
  }
@@ -134,7 +148,7 @@ text-decoration: none;
134
148
  }
135
149
 
136
150
  :host(:not([no-copy])) :is([part="hunk"], [part="context"], [part="added"], [part="removed"]) {
137
- padding-inline-end: calc(var(--helix-size-control) + var(--helix-space-sm));
151
+ padding-inline-end: var(--_code-block-gutter);
138
152
  }
139
153
 
140
154
  [part="hunk"] {
@@ -67,10 +67,8 @@ position: absolute;
67
67
  }
68
68
 
69
69
  [part="picker"] {
70
- --color-picker-grid-radius: var(--helix-radii-none);
71
- --color-picker-padding: var(--helix-space-sm);
72
-
73
70
  display: block;
71
+ padding: var(--helix-space-sm);
74
72
  }
75
73
 
76
74
  @media (prefers-reduced-motion: reduce) {
@@ -11,22 +11,64 @@ inline-size: 100%;
11
11
  overflow-x: auto;
12
12
  }
13
13
 
14
+ [part="table"] {
15
+ --_data-table-fade: to right;
16
+ animation: data-table-edges linear both;
17
+ animation-timeline: scroll(self inline);
18
+ mask-image: linear-gradient(
19
+ var(--_data-table-fade),
20
+ transparent,
21
+ #000 var(--_data-table-fade-start, 0rem),
22
+ #000 calc(100% - var(--_data-table-fade-end, 0rem)),
23
+ transparent
24
+ );
25
+ }
26
+
27
+ :host(:dir(rtl)) [part="table"] {
28
+ --_data-table-fade: to left;
29
+ }
30
+
31
+ @keyframes data-table-edges {
32
+ 0% {
33
+ --_data-table-fade-end: var(--helix-space-xl);
34
+ --_data-table-fade-start: 0rem;
35
+ }
36
+
37
+ 5%,
38
+ 95% {
39
+ --_data-table-fade-end: var(--helix-space-xl);
40
+ --_data-table-fade-start: var(--helix-space-xl);
41
+ }
42
+
43
+ 100% {
44
+ --_data-table-fade-end: 0rem;
45
+ --_data-table-fade-start: var(--helix-space-xl);
46
+ }
47
+ }
48
+
49
+ @media (prefers-reduced-motion: reduce) {
50
+ [part="table"] {
51
+ animation: none;
52
+ }
53
+ }
54
+
14
55
  [part="head"],
15
56
  [part="row"] {
16
57
  display: contents;
17
58
  }
18
59
 
19
- [part="cell"] {
60
+ [part~="cell"] {
20
61
  border-block-end: var(--helix-border-thin) solid
21
62
  var(--data-table-rule-color, var(--helix-color-border));
22
63
  color: var(--data-table-color, var(--helix-color-foreground));
23
64
  font-family: var(--helix-font-sans);
24
65
  font-size: var(--data-table-text, var(--helix-text-sm));
25
66
  padding-block: var(--data-table-padding-block, var(--helix-space-sm));
26
- padding-inline: var(--data-table-padding-inline, var(--helix-space-sm));
67
+
68
+ padding-inline: var(--data-table-padding-inline, var(--helix-space-none) var(--helix-space-md));
27
69
  }
28
70
 
29
- [part="row"]:last-of-type [part="cell"] {
71
+ [part="row"]:last-of-type [part~="cell"] {
30
72
  border-block-end-color: transparent;
31
73
  }
32
74
 
@@ -46,7 +88,7 @@ text-align: start;
46
88
  cursor: pointer;
47
89
  }
48
90
 
49
- [part="select"],
91
+ [part~="select"],
50
92
  [part="select-all"] {
51
93
  align-items: center;
52
94
  border-block-end: var(--helix-border-thin) solid
@@ -57,7 +99,7 @@ padding-block: var(--data-table-padding-block, var(--helix-space-sm));
57
99
  padding-inline: var(--data-table-padding-inline, var(--helix-space-sm));
58
100
  }
59
101
 
60
- [part="row"]:last-of-type [part="select"] {
102
+ [part="row"]:last-of-type [part~="select"] {
61
103
  border-block-end-color: transparent;
62
104
  }
63
105
 
@@ -34,6 +34,7 @@ import '../../table/index.js';
34
34
  * @slot toolbar - Above the grid, for a search field or actions.
35
35
  *
36
36
  * @csspart cell - One cell.
37
+ * @csspart cell-selected - A cell of a selected row, beside `cell`.
37
38
  * @csspart table - The grid.
38
39
  *
39
40
  * @cssproperty --data-table-block-size - How tall the scrolling box is while `windowed`.
@@ -87,7 +87,7 @@ justify-content: center;
87
87
  padding-block-end: calc(var(--_calendar-track) / 2);
88
88
  }
89
89
 
90
- [part="cell"] {
90
+ [part~="cell"] {
91
91
  align-items: center;
92
92
  block-size: var(--_calendar-row);
93
93
  cursor: pointer;
@@ -96,7 +96,7 @@ inline-size: var(--_calendar-track);
96
96
  justify-content: center;
97
97
  }
98
98
 
99
- [part="day"] {
99
+ [part~="day"] {
100
100
  align-items: center;
101
101
  block-size: var(--_calendar-day);
102
102
 
@@ -108,19 +108,19 @@ justify-content: center;
108
108
  transition: background-color var(--helix-duration-fast) var(--helix-easing-standard);
109
109
  }
110
110
 
111
- [part="cell"][data-today] [part="day"] {
111
+ [part~="cell"][data-today] [part~="day"] {
112
112
  box-shadow: inset 0 0 0 var(--helix-border-thin) var(--helix-color-border);
113
113
  }
114
114
 
115
- [part="cell"][data-outside] [part="day"] {
115
+ [part~="cell"][data-outside] [part~="day"] {
116
116
  color: var(--helix-color-foreground-subtle);
117
117
  }
118
118
 
119
- [part="cell"]:hover:not([aria-disabled], [data-outside]) [part="day"] {
119
+ [part~="cell"]:hover:not([aria-disabled], [data-outside]) [part~="day"] {
120
120
  background-color: var(--helix-color-surface-sunken);
121
121
  }
122
122
 
123
- [part="cell"][aria-selected]:is([data-range-start], [data-range-middle], [data-range-end]) {
123
+ [part~="cell"][aria-selected]:is([data-range-start], [data-range-middle], [data-range-end]) {
124
124
  background-color: var(
125
125
  --date-picker-range-color,
126
126
  light-dark(
@@ -130,8 +130,8 @@ color-mix(in oklab, var(--helix-color-foreground) 14%, transparent)
130
130
  );
131
131
  }
132
132
 
133
- [part="cell"][aria-selected]:not([data-range-start]):not([data-range-middle]):not([data-range-end])
134
- [part="day"] {
133
+ [part~="cell"][aria-selected]:not([data-range-start]):not([data-range-middle]):not([data-range-end])
134
+ [part~="day"] {
135
135
  box-shadow: 0 0 0 calc((var(--_calendar-row) - var(--_calendar-day)) / 2)
136
136
  var(
137
137
  --date-picker-range-color,
@@ -142,37 +142,37 @@ color-mix(in oklab, var(--helix-color-foreground) 14%, transparent)
142
142
  );
143
143
  }
144
144
 
145
- [part="cell"][data-range-start],
146
- [part="cell"][aria-selected]:not([data-range-middle]):not([data-range-end]) {
145
+ [part~="cell"][data-range-start],
146
+ [part~="cell"][aria-selected]:not([data-range-middle]):not([data-range-end]) {
147
147
  border-end-start-radius: var(--helix-radii-sm);
148
148
  border-start-start-radius: var(--helix-radii-sm);
149
149
  }
150
150
 
151
- [part="cell"][data-range-end],
152
- [part="cell"][aria-selected]:not([data-range-middle]):not([data-range-start]) {
151
+ [part~="cell"][data-range-end],
152
+ [part~="cell"][aria-selected]:not([data-range-middle]):not([data-range-start]) {
153
153
  border-end-end-radius: var(--helix-radii-sm);
154
154
  border-start-end-radius: var(--helix-radii-sm);
155
155
  }
156
156
 
157
- [part="cell"][aria-selected]:not([data-range-middle]) [part="day"] {
157
+ [part~="cell"][aria-selected]:not([data-range-middle]) [part~="day"] {
158
158
  background-color: var(--date-picker-selected-color, var(--helix-color-surface-inverse));
159
159
  color: var(--helix-color-foreground-inverse);
160
160
  }
161
161
 
162
- [part="cell"][aria-disabled] {
162
+ [part~="cell"][aria-disabled] {
163
163
  cursor: default;
164
164
  }
165
165
 
166
- [part="cell"][aria-disabled] [part="day"] {
166
+ [part~="cell"][aria-disabled] [part~="day"] {
167
167
  color: var(--helix-color-foreground-subtle);
168
168
  opacity: 0.4;
169
169
  }
170
170
 
171
- [part="cell"]:focus-visible {
171
+ [part~="cell"]:focus-visible {
172
172
  outline: none;
173
173
  }
174
174
 
175
- [part="cell"]:focus-visible [part="day"] {
175
+ [part~="cell"]:focus-visible [part~="day"] {
176
176
  outline: var(--helix-size-focus-ring) solid var(--helix-color-focus-ring);
177
177
  outline-offset: var(--helix-size-focus-offset);
178
178
  }
@@ -189,12 +189,12 @@ cursor: not-allowed;
189
189
  opacity: 0.5;
190
190
  }
191
191
 
192
- :host([invalid]) [part="cell"][aria-selected] [part="day"] {
192
+ :host([invalid]) [part~="cell"][aria-selected] [part~="day"] {
193
193
  outline: var(--helix-size-focus-ring) solid var(--helix-color-danger);
194
194
  outline-offset: var(--helix-size-focus-offset);
195
195
  }
196
196
 
197
- :host([invalid]) [part="cell"]:focus-visible [part="day"] {
197
+ :host([invalid]) [part~="cell"]:focus-visible [part~="day"] {
198
198
  outline-color: var(--helix-color-danger);
199
199
  }
200
200
 
@@ -24,7 +24,7 @@ inline-size: 100%;
24
24
  }
25
25
 
26
26
  [part="track"],
27
- [part="segment"] {
27
+ [part~="segment"] {
28
28
  transform: rotate(-90deg);
29
29
  transform-box: fill-box;
30
30
  transform-origin: center;
@@ -34,7 +34,7 @@ transform-origin: center;
34
34
  stroke: var(--donut-chart-track-color, var(--helix-color-surface-sunken));
35
35
  }
36
36
 
37
- [part="segment"] {
37
+ [part~="segment"] {
38
38
  stroke-linecap: butt;
39
39
 
40
40
  stroke-width: var(--donut-chart-stroke);
@@ -65,20 +65,20 @@ place-items: center;
65
65
  text-align: center;
66
66
  }
67
67
 
68
- [part="segment"] {
68
+ [part~="segment"] {
69
69
  stroke: var(--chart-series);
70
70
  }
71
71
 
72
- [part="segment"][data-active] {
72
+ [part~="segment"][data-active] {
73
73
  stroke-width: calc(var(--donut-chart-stroke) * 1.18);
74
74
  }
75
75
 
76
- :host([emphasis="outlined"]) [part="segment"][data-active] {
76
+ :host([emphasis="outlined"]) [part~="segment"][data-active] {
77
77
  stroke: var(--chart-series);
78
78
  stroke-width: var(--donut-chart-stroke);
79
79
  }
80
80
 
81
- [part="segment"] {
81
+ [part~="segment"] {
82
82
  transition:
83
83
  r var(--helix-duration-normal) var(--helix-easing-decelerate),
84
84
  stroke var(--helix-duration-fast) var(--helix-easing-decelerate),
@@ -88,7 +88,7 @@ stroke-width var(--helix-duration-fast) var(--helix-easing-decelerate);
88
88
  }
89
89
 
90
90
  @starting-style {
91
- [part="segment"] {
91
+ [part~="segment"] {
92
92
  stroke-dasharray: 0 9999;
93
93
  }
94
94
  }
@@ -97,7 +97,7 @@ stroke-dasharray: 0 9999;
97
97
  transition: r var(--helix-duration-normal) var(--helix-easing-decelerate);
98
98
  }
99
99
 
100
- [part="segment"] {
100
+ [part~="segment"] {
101
101
  cursor: crosshair;
102
102
  }
103
103
 
@@ -106,7 +106,7 @@ aspect-ratio: 100 / calc(40 + var(--donut-chart-stroke, 16) / 2);
106
106
  }
107
107
 
108
108
  :host([sweep="half"]) [part="track"],
109
- :host([sweep="half"]) [part="segment"] {
109
+ :host([sweep="half"]) [part~="segment"] {
110
110
  transform: rotate(180deg);
111
111
  }
112
112
 
@@ -134,7 +134,7 @@ print-color-adjust: exact;
134
134
  }
135
135
  }
136
136
 
137
- :host([emphasis="subtle"]) [part="segment"] {
137
+ :host([emphasis="subtle"]) [part~="segment"] {
138
138
  stroke: color-mix(
139
139
  in oklab,
140
140
  var(--chart-series) 30%,
@@ -147,7 +147,7 @@ fill: none;
147
147
  stroke: none;
148
148
  }
149
149
 
150
- :host([emphasis="outlined"]) [part="segment"] {
150
+ :host([emphasis="outlined"]) [part~="segment"] {
151
151
  stroke: color-mix(
152
152
  in oklab,
153
153
  var(--chart-series) 55%,
@@ -161,10 +161,10 @@ stroke: var(--chart-series);
161
161
  stroke-width: var(--donut-chart-edge-stroke, 3);
162
162
  }
163
163
 
164
- :host([material="glass"]) [part="segment"] {
164
+ :host([material="glass"]) [part~="segment"] {
165
165
  stroke-opacity: calc(0.62 * var(--helix-material-opacity));
166
166
  }
167
167
 
168
- :host([material="frosted"]) [part="segment"] {
168
+ :host([material="frosted"]) [part~="segment"] {
169
169
  stroke-opacity: calc(0.88 * var(--helix-material-opacity));
170
170
  }`);
@@ -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;
@@ -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