@slotted/styles 0.1.0-beta.1 → 0.1.0-beta.10

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 (176) hide show
  1. package/package.json +1 -1
  2. package/src/accordion/accordion.css +10 -10
  3. package/src/action-bar/action-bar.css +31 -32
  4. package/src/action-sheet/action-sheet.css +36 -36
  5. package/src/alert/alert.css +43 -35
  6. package/src/alert/alert.tokens.json +5 -0
  7. package/src/app-shell/app-shell.css +356 -301
  8. package/src/aspect-ratio/aspect-ratio.css +9 -9
  9. package/src/attachment/attachment.css +91 -99
  10. package/src/avatar/avatar.css +71 -41
  11. package/src/avatar/avatar.tokens.json +7 -0
  12. package/src/avatar-group/avatar-group.css +21 -22
  13. package/src/badge/badge.css +45 -37
  14. package/src/badge/badge.tokens.json +5 -0
  15. package/src/breadcrumb/breadcrumb.css +37 -37
  16. package/src/button/button.css +139 -64
  17. package/src/button/button.tokens.json +10 -0
  18. package/src/button-group/button-group.css +76 -72
  19. package/src/button-group/button-group.tokens.json +2 -0
  20. package/src/calendar/calendar.css +93 -103
  21. package/src/card/card.css +54 -61
  22. package/src/carousel/carousel.css +150 -161
  23. package/src/cascader/cascader.css +152 -153
  24. package/src/cascader/cascader.tokens.json +1 -0
  25. package/src/chart/chart.css +242 -239
  26. package/src/chart/chart.tokens.json +1 -0
  27. package/src/checkbox/checkbox.css +119 -124
  28. package/src/checkbox-group/checkbox-group.css +7 -7
  29. package/src/code-block/code-block.css +81 -85
  30. package/src/collapsible/collapsible.css +69 -76
  31. package/src/color-picker/color-picker.css +83 -91
  32. package/src/column-manager/column-manager.css +106 -114
  33. package/src/combobox/combobox.css +132 -107
  34. package/src/combobox/combobox.tokens.json +1 -0
  35. package/src/command-palette/command-palette.css +84 -90
  36. package/src/container/container.css +24 -24
  37. package/src/context-menu/context-menu.css +8 -8
  38. package/src/currency-field/currency-field.css +210 -88
  39. package/src/currency-field/currency-field.tokens.json +13 -0
  40. package/src/dashboard-grid/dashboard-grid.css +148 -116
  41. package/src/data-grid/data-grid.css +504 -469
  42. package/src/data-grid/data-grid.tokens.json +2 -0
  43. package/src/data-list/data-list.css +81 -70
  44. package/src/data-list/data-list.tokens.json +2 -1
  45. package/src/date-field/date-field.css +55 -52
  46. package/src/date-field/date-field.tokens.json +1 -0
  47. package/src/date-picker/date-picker.css +40 -42
  48. package/src/date-range-picker/date-range-picker.css +114 -118
  49. package/src/datetime-field/datetime-field.css +78 -80
  50. package/src/datetime-field/datetime-field.tokens.json +1 -0
  51. package/src/datetime-picker/datetime-picker.css +61 -63
  52. package/src/datetime-range-picker/datetime-range-picker.css +149 -156
  53. package/src/description-list/description-list.css +61 -64
  54. package/src/detail-panel/detail-panel.css +70 -70
  55. package/src/dialog/dialog.css +334 -153
  56. package/src/dialog/dialog.tokens.json +5 -0
  57. package/src/divider/divider.css +18 -18
  58. package/src/drawer/drawer.css +186 -209
  59. package/src/entity-picker/entity-picker.css +238 -241
  60. package/src/entity-picker/entity-picker.tokens.json +1 -0
  61. package/src/event-calendar/event-calendar.css +343 -385
  62. package/src/field/field.css +74 -78
  63. package/src/field-group/field-group.css +22 -25
  64. package/src/filter-bar/filter-bar.css +193 -209
  65. package/src/form/form.css +34 -24
  66. package/src/form/form.tokens.json +1 -0
  67. package/src/fullscreen/fullscreen.css +24 -25
  68. package/src/grid/grid.css +28 -28
  69. package/src/highlight/highlight.css +6 -6
  70. package/src/hover-card/hover-card.css +6 -6
  71. package/src/icon/icon.css +19 -15
  72. package/src/icon/icon.tokens.json +1 -0
  73. package/src/image/image.css +39 -39
  74. package/src/import-export-center/import-export-center.css +135 -156
  75. package/src/inline/inline.css +27 -27
  76. package/src/inline-message/inline-message.css +52 -28
  77. package/src/inline-message/inline-message.tokens.json +4 -0
  78. package/src/kbd/kbd.css +30 -26
  79. package/src/link/link.css +15 -15
  80. package/src/list/list.css +44 -17
  81. package/src/list/list.tokens.json +4 -0
  82. package/src/list-item/list-item.css +80 -66
  83. package/src/list-item/list-item.tokens.json +7 -0
  84. package/src/listbox/listbox.css +56 -59
  85. package/src/loading-overlay/loading-overlay.css +75 -92
  86. package/src/markdown/markdown.css +17 -17
  87. package/src/menu/menu.css +83 -63
  88. package/src/menubar/menubar.css +13 -13
  89. package/src/message/message.css +182 -202
  90. package/src/message/message.tokens.json +5 -0
  91. package/src/message-scroller/message-scroller.css +41 -42
  92. package/src/multi-select/multi-select.css +152 -145
  93. package/src/multi-select/multi-select.tokens.json +1 -0
  94. package/src/navigation-menu/navigation-menu.css +167 -188
  95. package/src/notification-center/notification-center.css +140 -148
  96. package/src/notification-center/notification-center.tokens.json +3 -0
  97. package/src/number-field/number-field.css +84 -83
  98. package/src/number-field/number-field.tokens.json +1 -0
  99. package/src/otp-input/otp-input.css +67 -57
  100. package/src/otp-input/otp-input.tokens.json +1 -0
  101. package/src/page/page.css +23 -23
  102. package/src/page-header/page-header.css +268 -281
  103. package/src/page-header/page-header.tokens.json +1 -0
  104. package/src/pagination/pagination.css +68 -72
  105. package/src/popover/popover.css +40 -49
  106. package/src/progress-indicator/progress-indicator.css +177 -120
  107. package/src/progress-indicator/progress-indicator.tokens.json +1 -1
  108. package/src/prompt-composer/prompt-composer.css +221 -102
  109. package/src/prompt-composer/prompt-composer.tokens.json +15 -0
  110. package/src/prose/prose.css +71 -75
  111. package/src/radio-group/radio-group.css +98 -103
  112. package/src/rating/rating.css +136 -132
  113. package/src/rating/rating.tokens.json +1 -0
  114. package/src/result-state/result-state.css +74 -77
  115. package/src/runtime-properties.mjs +2 -0
  116. package/src/saved-views/saved-views.css +41 -47
  117. package/src/scroll-area/scroll-area.css +39 -32
  118. package/src/section/section.css +161 -41
  119. package/src/section/section.tokens.json +7 -2
  120. package/src/segmented-control/segmented-control.css +254 -97
  121. package/src/segmented-control/segmented-control.tokens.json +15 -11
  122. package/src/select/select.css +118 -117
  123. package/src/select/select.tokens.json +1 -0
  124. package/src/side-navigation/side-navigation.css +179 -182
  125. package/src/side-navigation/side-navigation.tokens.json +1 -0
  126. package/src/skeleton/skeleton.css +47 -48
  127. package/src/slider/slider.css +86 -88
  128. package/src/sparkline/sparkline.css +62 -40
  129. package/src/sparkline/sparkline.tokens.json +2 -0
  130. package/src/spinner/spinner.css +39 -182
  131. package/src/spinner/spinner.tokens.json +0 -2
  132. package/src/split-button/split-button.css +30 -31
  133. package/src/split-button/split-button.tokens.json +1 -0
  134. package/src/splitter/splitter.css +35 -35
  135. package/src/stack/stack.css +24 -24
  136. package/src/stat-card/stat-card.css +341 -224
  137. package/src/stat-card/stat-card.tokens.json +3 -0
  138. package/src/status-indicator/status-indicator.css +28 -28
  139. package/src/stepper/stepper.css +58 -62
  140. package/src/switch/switch.css +86 -92
  141. package/src/table/table.css +310 -165
  142. package/src/table/table.tokens.json +6 -0
  143. package/src/table-of-contents/table-of-contents.css +51 -54
  144. package/src/tabs/tabs.css +330 -302
  145. package/src/tabs/tabs.tokens.json +8 -5
  146. package/src/tag/tag.css +79 -71
  147. package/src/tag/tag.tokens.json +9 -0
  148. package/src/tags-input/tags-input.css +145 -82
  149. package/src/tags-input/tags-input.tokens.json +7 -1
  150. package/src/text-field/text-field.css +132 -136
  151. package/src/text-field/text-field.tokens.json +1 -0
  152. package/src/textarea/textarea.css +31 -28
  153. package/src/textarea/textarea.tokens.json +1 -0
  154. package/src/time-field/time-field.css +72 -69
  155. package/src/time-field/time-field.tokens.json +1 -0
  156. package/src/time-picker/time-picker.css +56 -58
  157. package/src/time-range-picker/time-range-picker.css +126 -133
  158. package/src/timeline/timeline.css +254 -266
  159. package/src/timeline/timeline.tokens.json +5 -0
  160. package/src/toast/toast.css +89 -90
  161. package/src/toast/toast.tokens.json +5 -0
  162. package/src/toggle/toggle.css +62 -25
  163. package/src/toggle/toggle.tokens.json +8 -0
  164. package/src/toggle-group/toggle-group.css +106 -60
  165. package/src/toggle-group/toggle-group.tokens.json +10 -0
  166. package/src/toolbar/toolbar.css +30 -35
  167. package/src/tooltip/tooltip.css +26 -26
  168. package/src/top-navigation/top-navigation.css +243 -259
  169. package/src/tour/tour.css +51 -60
  170. package/src/transfer/transfer.css +160 -164
  171. package/src/tree/tree.css +103 -111
  172. package/src/typography/typography.css +40 -36
  173. package/src/typography/typography.tokens.json +1 -0
  174. package/src/upload/upload.css +224 -224
  175. package/src/visually-hidden/visually-hidden.css +1 -1
  176. package/src/wizard/wizard.css +185 -197
@@ -13,6 +13,7 @@
13
13
  "--slotted-font-size-xs",
14
14
  "--slotted-font-weight-medium",
15
15
  "--slotted-font-weight-semibold",
16
+ "--slotted-letter-spacing-tighter",
16
17
  "--slotted-line-height-2xl",
17
18
  "--slotted-line-height-3xl",
18
19
  "--slotted-line-height-4xl",
@@ -85,10 +86,12 @@
85
86
  "--slotted-stat-card-value-line-height-sm",
86
87
  "--slotted-surface-raised",
87
88
  "--slotted-surface-sunken",
89
+ "--slotted-target-comfortable",
88
90
  "--slotted-text",
89
91
  "--slotted-text-muted",
90
92
  "--slotted-tone-accent-text",
91
93
  "--slotted-tone-danger-text",
94
+ "--slotted-tone-info-text",
92
95
  "--slotted-tone-secondary-text",
93
96
  "--slotted-tone-success-text",
94
97
  "--slotted-tone-warning-text"
@@ -20,7 +20,7 @@
20
20
  * beside it — the answer Spectrum, Chakra and Ant Design all reached, and
21
21
  * the opposite of the coloured pill Primer and Atlassian draw.
22
22
  */
23
- [data-ui='status-indicator'][data-part='root'] {
23
+ [data-ui-status-indicator][data-part-root] {
24
24
  /**
25
25
  * Type and glyph come from the control scales, the only ones the theme
26
26
  * restates per density, so a status shrinks with the row it sits in. The
@@ -127,7 +127,7 @@
127
127
  * in greyscale as well as in `light`.
128
128
  */
129
129
 
130
- [data-ui='status-indicator'][data-part='root'][data-status='neutral'] {
130
+ [data-ui-status-indicator][data-part-root][data-status='neutral'] {
131
131
  /**
132
132
  * The one neutral the theme calibrates against the surface rather than
133
133
  * against a control, and the only fill that makes this dot read as filled.
@@ -145,12 +145,12 @@
145
145
  --_text: var(--slotted-tone-secondary-text);
146
146
  }
147
147
 
148
- [data-ui='status-indicator'][data-part='root'][data-status='info'] {
148
+ [data-ui-status-indicator][data-part-root][data-status='info'] {
149
149
  --_solid: var(--slotted-tone-accent-solid);
150
150
  --_text: var(--slotted-tone-accent-text);
151
151
  }
152
152
 
153
- [data-ui='status-indicator'][data-part='root'][data-status='success'] {
153
+ [data-ui-status-indicator][data-part-root][data-status='success'] {
154
154
  --_solid: var(--slotted-tone-success-solid);
155
155
  --_text: var(--slotted-tone-success-text);
156
156
  }
@@ -161,13 +161,13 @@
161
161
  * light, the fill itself in dark and black in `high-contrast` — an edge that
162
162
  * reads as the dot's own rim rather than as a second colour around it.
163
163
  */
164
- [data-ui='status-indicator'][data-part='root'][data-status='warning'] {
164
+ [data-ui-status-indicator][data-part-root][data-status='warning'] {
165
165
  --_edge: var(--slotted-tone-warning-border);
166
166
  --_solid: var(--slotted-tone-warning-solid);
167
167
  --_text: var(--slotted-tone-warning-text);
168
168
  }
169
169
 
170
- [data-ui='status-indicator'][data-part='root'][data-status='danger'] {
170
+ [data-ui-status-indicator][data-part-root][data-status='danger'] {
171
171
  --_solid: var(--slotted-tone-danger-solid);
172
172
  --_text: var(--slotted-tone-danger-text);
173
173
  }
@@ -178,7 +178,7 @@
178
178
  * has no halo of its own; the ring is drawn where the halo of a lit dot
179
179
  * ends, below.
180
180
  */
181
- [data-ui='status-indicator'][data-part='root'][data-status='unknown'] {
181
+ [data-ui-status-indicator][data-part-root][data-status='unknown'] {
182
182
  --_edge: var(--slotted-border-strong);
183
183
  --_halo: transparent;
184
184
  --_solid: transparent;
@@ -192,13 +192,13 @@
192
192
  * the mark left the ring the size of a dot around a sixteen-pixel glyph, and
193
193
  * one and three quarter pixels above where it belonged.
194
194
  */
195
- [data-ui='status-indicator'][data-part='root'][data-mark='icon'] {
195
+ [data-ui-status-indicator][data-part-root][data-mark='icon'] {
196
196
  --_mark-size: var(--_glyph-size);
197
197
  }
198
198
 
199
199
  /* ── Size ─────────────────────────────────────────────────────────────── */
200
200
 
201
- [data-ui='status-indicator'][data-part='root'][data-size='sm'] {
201
+ [data-ui-status-indicator][data-part-root][data-size='sm'] {
202
202
  --_dot-size: var(--slotted-space-3, 0.375rem);
203
203
  --_font-size: var(--slotted-control-font-size-sm, 12px);
204
204
  --_glyph-size: var(--slotted-control-icon-size-sm, 14px);
@@ -206,7 +206,7 @@
206
206
  --_halo-width: var(--slotted-space-1, 0.125rem);
207
207
  }
208
208
 
209
- [data-ui='status-indicator'][data-part='root'][data-size='lg'] {
209
+ [data-ui-status-indicator][data-part-root][data-size='lg'] {
210
210
  --_font-size: var(--slotted-control-font-size-lg, 14px);
211
211
  --_glyph-size: var(--slotted-control-icon-size-lg, 18px);
212
212
  }
@@ -219,7 +219,7 @@
219
219
  * number saying how. It is the rule `skeleton` uses to sit an inline bar on
220
220
  * a line of type, applied to a box rather than to a baseline.
221
221
  */
222
- [data-ui='status-indicator'] [data-part='mark'] {
222
+ [data-ui-status-indicator] [data-part-mark] {
223
223
  block-size: var(--_mark-size);
224
224
  box-sizing: border-box;
225
225
  flex: none;
@@ -227,7 +227,7 @@
227
227
  margin-block-start: var(--_pulse-inset);
228
228
  }
229
229
 
230
- [data-ui='status-indicator'][data-mark='dot'] [data-part='mark'] {
230
+ [data-ui-status-indicator][data-mark='dot'] [data-part-mark] {
231
231
  background-color: var(--_solid, ButtonFace);
232
232
  border: var(--_rim-width) solid var(--_rim, CanvasText);
233
233
  border-radius: var(--slotted-radius-full, 9999px);
@@ -239,7 +239,7 @@
239
239
  * to `neutral` and `unknown` sharing a tone, and it is the only mark in the
240
240
  * family that says something by what it is missing.
241
241
  */
242
- [data-ui='status-indicator'][data-mark='dot'][data-status='unknown'] [data-part='mark'] {
242
+ [data-ui-status-indicator][data-mark='dot'][data-status='unknown'] [data-part-mark] {
243
243
  border: 0;
244
244
  position: relative;
245
245
  }
@@ -253,7 +253,7 @@
253
253
  * neighbours, and read as a speck rather than as a status. `outline` is
254
254
  * reserved for the focus ring (`focus-ring.test.mjs`).
255
255
  */
256
- [data-ui='status-indicator'][data-mark='dot'][data-status='unknown'] [data-part='mark']::before {
256
+ [data-ui-status-indicator][data-mark='dot'][data-status='unknown'] [data-part-mark]::before {
257
257
  border: var(--slotted-border-width-thick, 2px) dashed var(--_rim);
258
258
  border-radius: var(--slotted-radius-full, 9999px);
259
259
  box-sizing: border-box;
@@ -278,7 +278,7 @@
278
278
  * binding puts the status's glyph inside. `flex` rather than a line box, so
279
279
  * no strut of the root's line-height pushes the glyph off the box.
280
280
  */
281
- [data-ui='status-indicator'][data-mark='icon'] [data-part='mark'] {
281
+ [data-ui-status-indicator][data-mark='icon'] [data-part-mark] {
282
282
  --slotted-icon-size: var(--_mark-size);
283
283
 
284
284
  color: var(--_text, CanvasText);
@@ -302,7 +302,7 @@
302
302
  * first column was auto-sized. `break-word` keeps the longest word as the
303
303
  * minimum and breaks only what still does not fit.
304
304
  */
305
- [data-ui='status-indicator'] [data-part='label'] {
305
+ [data-ui-status-indicator] [data-part-label] {
306
306
  margin-inline-start: var(--_gap);
307
307
  min-inline-size: 0;
308
308
  overflow-wrap: break-word;
@@ -315,7 +315,7 @@
315
315
  * empty, and a gap in front of an empty box puts a bare dot off the centre
316
316
  * of the cell it was meant to sit in.
317
317
  */
318
- [data-ui='status-indicator'] [data-part='label']:has(> [data-part='announcement']) {
318
+ [data-ui-status-indicator] [data-part-label]:has(> [data-part-announcement]) {
319
319
  margin-inline-start: 0;
320
320
  }
321
321
 
@@ -326,7 +326,7 @@
326
326
  * root an `<a>` or a `<button>`, and a ring that appears only where a family
327
327
  * expects focus is a ring that goes missing.
328
328
  */
329
- [data-ui='status-indicator'][data-part='root']:focus-visible {
329
+ [data-ui-status-indicator][data-part-root]:focus-visible {
330
330
  outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);
331
331
  outline-offset: var(--slotted-focus-ring-offset, 2px);
332
332
  }
@@ -340,7 +340,7 @@
340
340
  * text role, a step hover does not take. The offset is `link`'s own 0.15em
341
341
  * (dossier § 4).
342
342
  */
343
- [data-ui='status-indicator'][data-part='root']:any-link {
343
+ [data-ui-status-indicator][data-part-root]:any-link {
344
344
  text-decoration-color: transparent;
345
345
  text-decoration-line: underline;
346
346
  text-decoration-thickness: from-font;
@@ -350,11 +350,11 @@
350
350
  text-decoration-color var(--slotted-duration-short) var(--slotted-easing-standard);
351
351
  }
352
352
 
353
- [data-ui='status-indicator'][data-part='root']:any-link:not([data-disabled]):hover {
353
+ [data-ui-status-indicator][data-part-root]:any-link:not([data-disabled]):hover {
354
354
  text-decoration-color: currentColor;
355
355
  }
356
356
 
357
- [data-ui='status-indicator'][data-part='root']:any-link:not([data-disabled]):active {
357
+ [data-ui-status-indicator][data-part-root]:any-link:not([data-disabled]):active {
358
358
  color: var(--slotted-text-muted, GrayText);
359
359
  text-decoration-color: currentColor;
360
360
  }
@@ -402,11 +402,11 @@
402
402
  * stacking context so the wave can sit under the mark (`z-index: -1`)
403
403
  * without falling behind the surface the indicator is drawn on.
404
404
  */
405
- [data-ui='status-indicator'][data-pulse] {
405
+ [data-ui-status-indicator][data-pulse] {
406
406
  isolation: isolate;
407
407
  }
408
408
 
409
- [data-ui='status-indicator'][data-pulse]::after {
409
+ [data-ui-status-indicator][data-pulse]::after {
410
410
  animation: slotted-status-indicator-pulse var(--slotted-duration-loop-slow)
411
411
  var(--slotted-easing-enter) infinite;
412
412
  background-color: var(--_rim);
@@ -429,7 +429,7 @@
429
429
  * carried by the tone, the glyph and the word, as it is under reduced
430
430
  * motion.
431
431
  */
432
- [data-ui='status-indicator'][data-mark='icon'][data-pulse]::after {
432
+ [data-ui-status-indicator][data-mark='icon'][data-pulse]::after {
433
433
  content: none;
434
434
  }
435
435
 
@@ -440,7 +440,7 @@
440
440
  * and the status is left to the parts that were always carrying it.
441
441
  */
442
442
  @media (prefers-reduced-motion: reduce) {
443
- [data-ui='status-indicator'][data-pulse]::after {
443
+ [data-ui-status-indicator][data-pulse]::after {
444
444
  animation: none;
445
445
  content: none;
446
446
  }
@@ -465,16 +465,16 @@
465
465
  * rule: the system sets `box-shadow` to `none`.
466
466
  */
467
467
  @media (forced-colors: active) {
468
- [data-ui='status-indicator'][data-mark='dot'] [data-part='mark'] {
468
+ [data-ui-status-indicator][data-mark='dot'] [data-part-mark] {
469
469
  background-color: CanvasText;
470
470
  border-color: CanvasText;
471
471
  }
472
472
 
473
- [data-ui='status-indicator'][data-mark='dot'][data-status='unknown'] [data-part='mark'] {
473
+ [data-ui-status-indicator][data-mark='dot'][data-status='unknown'] [data-part-mark] {
474
474
  background-color: Canvas;
475
475
  }
476
476
 
477
- [data-ui='status-indicator'][data-pulse]::after {
477
+ [data-ui-status-indicator][data-pulse]::after {
478
478
  content: none;
479
479
  }
480
480
  }
@@ -11,7 +11,7 @@
11
11
  * that retunes the control scale moves the whole stepper together instead of
12
12
  * leaving the connector behind.
13
13
  */
14
- [data-ui='stepper'] {
14
+ [data-ui-stepper] {
15
15
  --_marker: var(--slotted-stepper-marker-size, var(--slotted-control-height-md, 34px));
16
16
  --_gap: var(--slotted-stepper-gap, var(--slotted-control-gap-md, 8px));
17
17
  --_rule: var(--slotted-stepper-connector-thickness, var(--slotted-border-width-thick, 2px));
@@ -74,34 +74,34 @@
74
74
  * line rather than beside it.
75
75
  */
76
76
 
77
- [data-ui='stepper'] [data-part='list'] {
77
+ [data-ui-stepper] [data-part-list] {
78
78
  display: flex;
79
79
  list-style: none;
80
80
  margin: 0;
81
81
  padding: 0;
82
82
  }
83
83
 
84
- [data-ui='stepper'][data-orientation='horizontal'] [data-part='list'] {
84
+ [data-ui-stepper][data-orientation='horizontal'] [data-part-list] {
85
85
  align-items: flex-start;
86
86
  flex-direction: row;
87
87
  }
88
88
 
89
- [data-ui='stepper'][data-orientation='vertical'] [data-part='list'] {
89
+ [data-ui-stepper][data-orientation='vertical'] [data-part-list] {
90
90
  flex-direction: column;
91
91
  }
92
92
 
93
- [data-ui='stepper'] [data-part='item'] {
93
+ [data-ui-stepper] [data-part-item] {
94
94
  display: flex;
95
95
  position: relative;
96
96
  }
97
97
 
98
- [data-ui='stepper'][data-orientation='horizontal'] [data-part='item'] {
98
+ [data-ui-stepper][data-orientation='horizontal'] [data-part-item] {
99
99
  flex: 1 1 0;
100
100
  /* A label longer than its column wraps instead of widening the column. */
101
101
  min-inline-size: 0;
102
102
  }
103
103
 
104
- [data-ui='stepper'][data-orientation='vertical'] [data-part='item'] {
104
+ [data-ui-stepper][data-orientation='vertical'] [data-part-item] {
105
105
  flex-direction: column;
106
106
  }
107
107
 
@@ -114,7 +114,7 @@
114
114
  * component.
115
115
  */
116
116
 
117
- [data-ui='stepper'] [data-part='trigger'] {
117
+ [data-ui-stepper] [data-part-trigger] {
118
118
  align-items: center;
119
119
  appearance: none;
120
120
  background: none;
@@ -131,8 +131,8 @@
131
131
  var(--slotted-control-transition-easing);
132
132
  }
133
133
 
134
- [data-ui='stepper'] button[data-part='trigger'],
135
- [data-ui='stepper'] a[data-part='trigger'] {
134
+ [data-ui-stepper] button[data-part-trigger],
135
+ [data-ui-stepper] a[data-part-trigger] {
136
136
  cursor: pointer;
137
137
  }
138
138
 
@@ -142,7 +142,7 @@
142
142
  * The stack is centred so the marker sits over the middle of its own label
143
143
  * rather than over the middle of the column.
144
144
  */
145
- [data-ui='stepper'][data-label-placement='bottom'] [data-part='trigger'] {
145
+ [data-ui-stepper][data-label-placement='bottom'] [data-part-trigger] {
146
146
  align-items: center;
147
147
  flex-direction: column;
148
148
  /**
@@ -156,7 +156,7 @@
156
156
  text-align: center;
157
157
  }
158
158
 
159
- [data-ui='stepper'] [data-part='trigger']:focus-visible {
159
+ [data-ui-stepper] [data-part-trigger]:focus-visible {
160
160
  outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);
161
161
  outline-offset: var(--slotted-focus-ring-offset, 2px);
162
162
  }
@@ -172,7 +172,7 @@
172
172
  * progress that does not depend on colour.
173
173
  */
174
174
 
175
- [data-ui='stepper'] [data-part='marker'] {
175
+ [data-ui-stepper] [data-part-marker] {
176
176
  /**
177
177
  * The colour of the glyph drawn over the number, held on the marker rather
178
178
  * than stated on the glyph's box. Reading it through one custom property
@@ -224,7 +224,7 @@
224
224
  * takes the accent's text colour: it is where they are, not where they have
225
225
  * been, so it stays an outline and does not fill.
226
226
  */
227
- [data-ui='stepper'] [data-current] [data-part='marker'] {
227
+ [data-ui-stepper] [data-current] [data-part-marker] {
228
228
  border-color: var(--slotted-stepper-marker-border-current, var(--_done-line));
229
229
  color: var(--slotted-stepper-marker-color-current, var(--slotted-tone-accent-text, Highlight));
230
230
  }
@@ -234,12 +234,12 @@
234
234
  * check, because a reader scanning the row counts filled discs rather than
235
235
  * reading five numbers.
236
236
  */
237
- [data-ui='stepper'] [data-complete]:not([data-current], [data-invalid]) [data-part='marker'] {
237
+ [data-ui-stepper] [data-complete]:not([data-current], [data-invalid]) [data-part-marker] {
238
238
  background-color: var(--slotted-stepper-marker-surface-complete, var(--_done-line));
239
239
  border-color: var(--slotted-stepper-marker-surface-complete, var(--_done-line));
240
240
  }
241
241
 
242
- [data-ui='stepper'] [data-invalid] [data-part='marker'] {
242
+ [data-ui-stepper] [data-invalid] [data-part-marker] {
243
243
  --_mark: var(
244
244
  --slotted-stepper-marker-color-invalid,
245
245
  var(--slotted-tone-danger-on-solid, MarkText)
@@ -255,7 +255,7 @@
255
255
  );
256
256
  }
257
257
 
258
- [data-ui='stepper'] [data-disabled]:not([data-invalid]) [data-part='marker'] {
258
+ [data-ui-stepper] [data-disabled]:not([data-invalid]) [data-part-marker] {
259
259
  background-color: transparent;
260
260
  border-color: var(--slotted-disabled-border, GrayText);
261
261
  color: var(--slotted-disabled-foreground, GrayText);
@@ -284,11 +284,11 @@
284
284
  * each other. The capture is what said so — the two marks overlap into a
285
285
  * shape that is neither.
286
286
  */
287
- [data-ui='stepper'] :is([data-complete], [data-invalid]) [data-part='marker'] {
287
+ [data-ui-stepper] :is([data-complete], [data-invalid]) [data-part-marker] {
288
288
  color: transparent;
289
289
  }
290
290
 
291
- [data-ui='stepper'] [data-part='marker'] > [data-ui='icon'] {
291
+ [data-ui-stepper] [data-part-marker] > [data-ui-icon] {
292
292
  --slotted-icon-size: var(--_mark-size);
293
293
 
294
294
  color: var(--_mark);
@@ -310,7 +310,7 @@
310
310
  * complete, because the number is what says where the reader is in a
311
311
  * sequence and a check would say they had left it.
312
312
  */
313
- [data-ui='stepper'] [data-current]:not([data-invalid]) [data-part='marker'] {
313
+ [data-ui-stepper] [data-current]:not([data-invalid]) [data-part-marker] {
314
314
  color: var(--slotted-stepper-marker-color-current, var(--slotted-tone-accent-text, Highlight));
315
315
  }
316
316
 
@@ -321,7 +321,7 @@
321
321
  * where it was.
322
322
  */
323
323
 
324
- [data-ui='stepper'] [data-part='label'] {
324
+ [data-ui-stepper] [data-part-label] {
325
325
  color: var(--_muted);
326
326
  font-weight: var(--slotted-stepper-label-weight, var(--slotted-font-weight-medium, 500));
327
327
  line-height: var(--slotted-stepper-line-height, var(--slotted-line-height-sm, 1.45));
@@ -329,19 +329,19 @@
329
329
  overflow-wrap: anywhere;
330
330
  }
331
331
 
332
- [data-ui='stepper'] :is([data-current], [data-complete]) [data-part='label'] {
332
+ [data-ui-stepper] :is([data-current], [data-complete]) [data-part-label] {
333
333
  color: var(--_strong);
334
334
  }
335
335
 
336
- [data-ui='stepper'] [data-invalid] [data-part='label'] {
336
+ [data-ui-stepper] [data-invalid] [data-part-label] {
337
337
  color: var(--slotted-stepper-label-color-invalid, var(--slotted-tone-danger-text, MarkText));
338
338
  }
339
339
 
340
- [data-ui='stepper'] [data-disabled]:not([data-invalid]) [data-part='label'] {
340
+ [data-ui-stepper] [data-disabled]:not([data-invalid]) [data-part-label] {
341
341
  color: var(--slotted-disabled-foreground, GrayText);
342
342
  }
343
343
 
344
- [data-ui='stepper'] [data-part='description'] {
344
+ [data-ui-stepper] [data-part-description] {
345
345
  color: var(--_muted);
346
346
  display: block;
347
347
  font-size: var(--slotted-stepper-description-font-size, var(--slotted-font-size-xs, 0.75rem));
@@ -354,10 +354,10 @@
354
354
  * on the label rather than on the whole column: the column is mostly empty
355
355
  * space, and a fill across it would read as a selected row.
356
356
  */
357
- [data-ui='stepper']
358
- [data-part='item']:not([data-disabled], [data-loading])
359
- :is(button, a)[data-part='trigger']:hover
360
- [data-part='label'] {
357
+ [data-ui-stepper]
358
+ [data-part-item]:not([data-disabled], [data-loading])
359
+ :is(button, a)[data-part-trigger]:hover
360
+ [data-part-label] {
361
361
  color: var(--_strong);
362
362
  text-decoration-color: currentColor;
363
363
  text-decoration-line: underline;
@@ -378,10 +378,10 @@
378
378
  * the danger tone, and a press that replaced either would be a press that
379
379
  * also changed what the step is.
380
380
  */
381
- [data-ui='stepper']
382
- [data-part='item']:not([data-disabled], [data-loading])
383
- :is(button, a)[data-part='trigger']:active
384
- [data-part='marker'] {
381
+ [data-ui-stepper]
382
+ [data-part-item]:not([data-disabled], [data-loading])
383
+ :is(button, a)[data-part-trigger]:active
384
+ [data-part-marker] {
385
385
  box-shadow: inset 0 0 0 var(--_marker) var(--_state-press);
386
386
  }
387
387
 
@@ -399,7 +399,7 @@
399
399
  * centre at every density.
400
400
  */
401
401
 
402
- [data-ui='stepper'] [data-part='separator'] {
402
+ [data-ui-stepper] [data-part-separator] {
403
403
  background-color: var(--_pending-line);
404
404
  display: block;
405
405
  flex: none;
@@ -415,7 +415,7 @@
415
415
  * consumer marked completion would stay grey through every flow that never
416
416
  * claims it.
417
417
  */
418
- [data-ui='stepper'] [data-part='separator'][data-complete] {
418
+ [data-ui-stepper] [data-part-separator][data-complete] {
419
419
  background-color: var(--_done-line);
420
420
  }
421
421
 
@@ -427,8 +427,8 @@
427
427
  * knows how wide a label is, so nothing can position around it — but a flex
428
428
  * item can be told to take the rest.
429
429
  */
430
- [data-ui='stepper'][data-orientation='horizontal'][data-label-placement='end']
431
- [data-part='separator'] {
430
+ [data-ui-stepper][data-orientation='horizontal'][data-label-placement='end']
431
+ [data-part-separator] {
432
432
  align-self: center;
433
433
  block-size: var(--_rule);
434
434
  flex: 1 1 auto;
@@ -437,8 +437,7 @@
437
437
  position: static;
438
438
  }
439
439
 
440
- [data-ui='stepper'][data-orientation='horizontal'][data-label-placement='end']
441
- [data-part='trigger'] {
440
+ [data-ui-stepper][data-orientation='horizontal'][data-label-placement='end'] [data-part-trigger] {
442
441
  flex: 0 1 auto;
443
442
  min-inline-size: 0;
444
443
  }
@@ -448,8 +447,8 @@
448
447
  * centres. The columns are equal, so the next centre is exactly one column
449
448
  * away, and both ends are derived from the marker rather than stated.
450
449
  */
451
- [data-ui='stepper'][data-orientation='horizontal'][data-label-placement='bottom']
452
- [data-part='separator'] {
450
+ [data-ui-stepper][data-orientation='horizontal'][data-label-placement='bottom']
451
+ [data-part-separator] {
453
452
  block-size: var(--_rule);
454
453
  inset-block-start: calc(0.5 * (var(--_marker) - var(--_rule)));
455
454
  inset-inline-end: calc(-50% + 0.5 * var(--_marker) + var(--_gap));
@@ -469,7 +468,7 @@
469
468
  * tall, and `--_gap` at both ends of a step gap of one rem left a rule of
470
469
  * no length at all; a quarter rem leaves half the step gap drawn.
471
470
  */
472
- [data-ui='stepper'][data-orientation='vertical'] [data-part='separator'] {
471
+ [data-ui-stepper][data-orientation='vertical'] [data-part-separator] {
473
472
  --_rule-room: var(--slotted-stepper-connector-gap, var(--slotted-space-2, 0.25rem));
474
473
 
475
474
  inline-size: var(--_rule);
@@ -484,7 +483,7 @@
484
483
  * binding does not render the element at all; this is what a consumer who
485
484
  * renders one anyway gets, and it is nothing.
486
485
  */
487
- [data-ui='stepper'] [data-part='item']:last-child [data-part='separator'] {
486
+ [data-ui-stepper] [data-part-item]:last-child [data-part-separator] {
488
487
  display: none;
489
488
  }
490
489
 
@@ -494,8 +493,8 @@
494
493
  * centres over the column and the connector runs between two centres.
495
494
  */
496
495
 
497
- [data-ui='stepper'][data-orientation='horizontal'][data-label-placement='bottom']
498
- [data-part='trigger'] {
496
+ [data-ui-stepper][data-orientation='horizontal'][data-label-placement='bottom']
497
+ [data-part-trigger] {
499
498
  inline-size: 100%;
500
499
  }
501
500
 
@@ -505,24 +504,24 @@
505
504
  * step lines up with its name rather than with its number.
506
505
  */
507
506
 
508
- [data-ui='stepper'][data-orientation='vertical'] [data-part='item'] {
507
+ [data-ui-stepper][data-orientation='vertical'] [data-part-item] {
509
508
  padding-block-end: var(--slotted-stepper-step-gap, var(--slotted-space-6, 1rem));
510
509
  }
511
510
 
512
- [data-ui='stepper'][data-orientation='vertical'] [data-part='item']:last-child {
511
+ [data-ui-stepper][data-orientation='vertical'] [data-part-item]:last-child {
513
512
  padding-block-end: 0;
514
513
  }
515
514
 
516
- [data-ui='stepper'][data-orientation='vertical'] [data-part='panel'] {
515
+ [data-ui-stepper][data-orientation='vertical'] [data-part-panel] {
517
516
  margin-inline-start: calc(var(--_marker) + var(--_gap));
518
517
  padding-block-start: var(--slotted-stepper-panel-gap, var(--slotted-space-4, 0.5rem));
519
518
  }
520
519
 
521
- [data-ui='stepper'][data-orientation='horizontal'] [data-part='panel'] {
520
+ [data-ui-stepper][data-orientation='horizontal'] [data-part-panel] {
522
521
  padding-block-start: var(--slotted-stepper-panel-gap, var(--slotted-space-6, 1rem));
523
522
  }
524
523
 
525
- [data-ui='stepper'] [data-part='panel']:focus-visible {
524
+ [data-ui-stepper] [data-part-panel]:focus-visible {
526
525
  outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);
527
526
  outline-offset: var(--slotted-focus-ring-offset, 2px);
528
527
  }
@@ -540,23 +539,23 @@
540
539
  */
541
540
 
542
541
  @container slotted-stepper (max-width: 30rem) {
543
- [data-ui='stepper'][data-orientation='horizontal'] [data-part='list'] {
542
+ [data-ui-stepper][data-orientation='horizontal'] [data-part-list] {
544
543
  align-items: stretch;
545
544
  flex-direction: column;
546
545
  }
547
546
 
548
- [data-ui='stepper'][data-orientation='horizontal'] [data-part='item'] {
547
+ [data-ui-stepper][data-orientation='horizontal'] [data-part-item] {
549
548
  flex: none;
550
549
  flex-direction: column;
551
550
  padding-block-end: var(--slotted-stepper-step-gap, var(--slotted-space-6, 1rem));
552
551
  padding-inline-end: 0;
553
552
  }
554
553
 
555
- [data-ui='stepper'][data-orientation='horizontal'] [data-part='item']:last-child {
554
+ [data-ui-stepper][data-orientation='horizontal'] [data-part-item]:last-child {
556
555
  padding-block-end: 0;
557
556
  }
558
557
 
559
- [data-ui='stepper'][data-orientation='horizontal'][data-label-placement] [data-part='trigger'] {
558
+ [data-ui-stepper][data-orientation='horizontal'][data-label-placement] [data-part-trigger] {
560
559
  align-items: center;
561
560
  flex-direction: row;
562
561
  inline-size: auto;
@@ -578,8 +577,7 @@
578
577
  * adds no weight of its own. Without it the row's own connector geometry
579
578
  * survived the reflow and the column drew four-pixel dots down its side.
580
579
  */
581
- [data-ui='stepper'][data-orientation='horizontal'][data-label-placement]
582
- [data-part='separator'] {
580
+ [data-ui-stepper][data-orientation='horizontal'][data-label-placement] [data-part-separator] {
583
581
  block-size: auto;
584
582
  flex: none;
585
583
  inline-size: var(--_rule);
@@ -592,7 +590,7 @@
592
590
  position: absolute;
593
591
  }
594
592
 
595
- [data-ui='stepper'][data-orientation='horizontal'][data-label-placement] [data-part='panel'] {
593
+ [data-ui-stepper][data-orientation='horizontal'][data-label-placement] [data-part-panel] {
596
594
  margin-inline-start: calc(var(--_marker) + var(--_gap));
597
595
  padding-block-start: var(--slotted-stepper-panel-gap, var(--slotted-space-4, 0.5rem));
598
596
  }
@@ -609,17 +607,15 @@
609
607
  */
610
608
 
611
609
  @media (forced-colors: active) {
612
- [data-ui='stepper'] [data-part='separator'] {
610
+ [data-ui-stepper] [data-part-separator] {
613
611
  background-color: GrayText;
614
612
  }
615
613
 
616
- [data-ui='stepper'] [data-part='separator'][data-complete] {
614
+ [data-ui-stepper] [data-part-separator][data-complete] {
617
615
  background-color: Highlight;
618
616
  }
619
617
 
620
- [data-ui='stepper']
621
- :is([data-complete], [data-invalid]):not([data-current])
622
- [data-part='marker'] {
618
+ [data-ui-stepper] :is([data-complete], [data-invalid]):not([data-current]) [data-part-marker] {
623
619
  background-color: Highlight;
624
620
  border-color: Highlight;
625
621
  color: HighlightText;