@slotted/styles 0.1.0-beta.8 → 0.1.0-beta.9

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 (128) 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 +35 -35
  6. package/src/app-shell/app-shell.css +280 -299
  7. package/src/aspect-ratio/aspect-ratio.css +9 -9
  8. package/src/attachment/attachment.css +91 -99
  9. package/src/avatar/avatar.css +41 -41
  10. package/src/avatar-group/avatar-group.css +21 -22
  11. package/src/badge/badge.css +37 -37
  12. package/src/breadcrumb/breadcrumb.css +37 -37
  13. package/src/button/button.css +88 -69
  14. package/src/button-group/button-group.css +69 -73
  15. package/src/calendar/calendar.css +93 -103
  16. package/src/card/card.css +54 -61
  17. package/src/carousel/carousel.css +150 -161
  18. package/src/cascader/cascader.css +147 -151
  19. package/src/chart/chart.css +225 -240
  20. package/src/checkbox/checkbox.css +119 -124
  21. package/src/checkbox-group/checkbox-group.css +7 -7
  22. package/src/code-block/code-block.css +81 -85
  23. package/src/collapsible/collapsible.css +69 -76
  24. package/src/color-picker/color-picker.css +83 -91
  25. package/src/column-manager/column-manager.css +106 -114
  26. package/src/combobox/combobox.css +99 -101
  27. package/src/command-palette/command-palette.css +84 -90
  28. package/src/container/container.css +24 -24
  29. package/src/context-menu/context-menu.css +8 -8
  30. package/src/currency-field/currency-field.css +99 -104
  31. package/src/dashboard-grid/dashboard-grid.css +104 -107
  32. package/src/data-grid/data-grid.css +458 -456
  33. package/src/data-grid/data-grid.tokens.json +2 -0
  34. package/src/data-list/data-list.css +67 -69
  35. package/src/date-field/date-field.css +50 -50
  36. package/src/date-picker/date-picker.css +40 -42
  37. package/src/date-range-picker/date-range-picker.css +114 -118
  38. package/src/datetime-field/datetime-field.css +73 -78
  39. package/src/datetime-picker/datetime-picker.css +61 -63
  40. package/src/datetime-range-picker/datetime-range-picker.css +149 -156
  41. package/src/description-list/description-list.css +61 -64
  42. package/src/detail-panel/detail-panel.css +70 -70
  43. package/src/dialog/dialog.css +300 -148
  44. package/src/divider/divider.css +18 -18
  45. package/src/drawer/drawer.css +186 -209
  46. package/src/entity-picker/entity-picker.css +220 -239
  47. package/src/event-calendar/event-calendar.css +343 -385
  48. package/src/field/field.css +74 -78
  49. package/src/field-group/field-group.css +22 -25
  50. package/src/filter-bar/filter-bar.css +193 -209
  51. package/src/form/form.css +21 -24
  52. package/src/fullscreen/fullscreen.css +24 -25
  53. package/src/grid/grid.css +28 -28
  54. package/src/highlight/highlight.css +6 -6
  55. package/src/hover-card/hover-card.css +6 -6
  56. package/src/icon/icon.css +15 -15
  57. package/src/image/image.css +39 -39
  58. package/src/import-export-center/import-export-center.css +135 -156
  59. package/src/inline/inline.css +27 -27
  60. package/src/inline-message/inline-message.css +28 -28
  61. package/src/kbd/kbd.css +26 -26
  62. package/src/link/link.css +15 -15
  63. package/src/list/list.css +20 -20
  64. package/src/list-item/list-item.css +66 -66
  65. package/src/listbox/listbox.css +56 -59
  66. package/src/loading-overlay/loading-overlay.css +75 -92
  67. package/src/markdown/markdown.css +17 -17
  68. package/src/menu/menu.css +63 -65
  69. package/src/menubar/menubar.css +13 -13
  70. package/src/message/message.css +174 -202
  71. package/src/message-scroller/message-scroller.css +41 -42
  72. package/src/multi-select/multi-select.css +131 -137
  73. package/src/navigation-menu/navigation-menu.css +167 -188
  74. package/src/notification-center/notification-center.css +134 -148
  75. package/src/number-field/number-field.css +76 -81
  76. package/src/otp-input/otp-input.css +48 -48
  77. package/src/page/page.css +23 -23
  78. package/src/page-header/page-header.css +219 -280
  79. package/src/pagination/pagination.css +68 -72
  80. package/src/popover/popover.css +40 -49
  81. package/src/progress-indicator/progress-indicator.css +85 -90
  82. package/src/prompt-composer/prompt-composer.css +94 -99
  83. package/src/prose/prose.css +71 -75
  84. package/src/radio-group/radio-group.css +98 -103
  85. package/src/rating/rating.css +132 -132
  86. package/src/result-state/result-state.css +74 -77
  87. package/src/saved-views/saved-views.css +41 -47
  88. package/src/scroll-area/scroll-area.css +32 -35
  89. package/src/section/section.css +16 -16
  90. package/src/segmented-control/segmented-control.css +77 -79
  91. package/src/select/select.css +113 -115
  92. package/src/side-navigation/side-navigation.css +170 -180
  93. package/src/skeleton/skeleton.css +47 -48
  94. package/src/slider/slider.css +86 -88
  95. package/src/sparkline/sparkline.css +32 -32
  96. package/src/spinner/spinner.css +4 -4
  97. package/src/split-button/split-button.css +26 -31
  98. package/src/splitter/splitter.css +35 -35
  99. package/src/stack/stack.css +24 -24
  100. package/src/stat-card/stat-card.css +102 -103
  101. package/src/status-indicator/status-indicator.css +28 -28
  102. package/src/stepper/stepper.css +58 -62
  103. package/src/switch/switch.css +86 -92
  104. package/src/table/table.css +189 -198
  105. package/src/table-of-contents/table-of-contents.css +51 -54
  106. package/src/tabs/tabs.css +143 -162
  107. package/src/tag/tag.css +67 -71
  108. package/src/tags-input/tags-input.css +124 -74
  109. package/src/tags-input/tags-input.tokens.json +6 -1
  110. package/src/text-field/text-field.css +108 -126
  111. package/src/textarea/textarea.css +26 -26
  112. package/src/time-field/time-field.css +67 -67
  113. package/src/time-picker/time-picker.css +56 -58
  114. package/src/time-range-picker/time-range-picker.css +126 -133
  115. package/src/timeline/timeline.css +244 -266
  116. package/src/toast/toast.css +81 -90
  117. package/src/toggle/toggle.css +29 -33
  118. package/src/toggle-group/toggle-group.css +67 -71
  119. package/src/toolbar/toolbar.css +30 -35
  120. package/src/tooltip/tooltip.css +26 -26
  121. package/src/top-navigation/top-navigation.css +243 -259
  122. package/src/tour/tour.css +51 -60
  123. package/src/transfer/transfer.css +160 -164
  124. package/src/tree/tree.css +103 -111
  125. package/src/typography/typography.css +36 -36
  126. package/src/upload/upload.css +224 -224
  127. package/src/visually-hidden/visually-hidden.css +1 -1
  128. package/src/wizard/wizard.css +185 -197
@@ -47,7 +47,7 @@
47
47
 
48
48
  /* ── The control ──────────────────────────────────────────────────────── */
49
49
 
50
- [data-ui='cascader'][data-part='root'] {
50
+ [data-ui-cascader][data-part-root] {
51
51
  --_font-size: var(--slotted-control-font-size-md, 13px);
52
52
  --_height: var(--slotted-control-height-md, 34px);
53
53
  --_padding-inline: var(--slotted-control-padding-inline-md, 13px);
@@ -85,18 +85,18 @@
85
85
  box-shadow var(--slotted-control-transition-duration) var(--slotted-control-transition-easing);
86
86
  }
87
87
 
88
- [data-ui='cascader'][data-part='root']:has(> [data-part='clear']) {
88
+ [data-ui-cascader][data-part-root]:has(> [data-part-clear]) {
89
89
  grid-template-columns: minmax(0, 1fr) auto auto;
90
90
  }
91
91
 
92
- [data-ui='cascader'][data-part='root']:not([data-full-width]) {
92
+ [data-ui-cascader][data-part-root]:not([data-full-width]) {
93
93
  inline-size: auto;
94
94
  }
95
95
 
96
96
  /* The trigger fills the frame and the two marks sit over it, for the reason
97
97
  `select` writes above its own trigger: the chevron ends the control, and
98
98
  the clear button is a sibling of the button rather than a widget in it. */
99
- [data-ui='cascader'] > [data-part='trigger'] {
99
+ [data-ui-cascader] > [data-part-trigger] {
100
100
  align-items: center;
101
101
  appearance: none;
102
102
  background-color: transparent;
@@ -120,7 +120,7 @@
120
120
  -webkit-tap-highlight-color: transparent;
121
121
  }
122
122
 
123
- [data-ui='cascader'][data-part='root']:has(> [data-part='clear']) > [data-part='trigger'] {
123
+ [data-ui-cascader][data-part-root]:has(> [data-part-clear]) > [data-part-trigger] {
124
124
  padding-inline-end: calc(
125
125
  var(--_padding-inline) + var(--_icon-size) + var(--_gap) + var(--_action-size) + var(--_gap)
126
126
  );
@@ -133,7 +133,7 @@
133
133
  * and eliding the middle of the road to it. The whole path stays in the DOM,
134
134
  * so the trigger's name is never the ellipsis.
135
135
  */
136
- [data-ui='cascader'] [data-part='value'] {
136
+ [data-ui-cascader] [data-part-value] {
137
137
  align-items: baseline;
138
138
  display: flex;
139
139
  flex: 1 1 auto;
@@ -142,7 +142,7 @@
142
142
  white-space: nowrap;
143
143
  }
144
144
 
145
- [data-ui='cascader'] [data-part='value-segment'] {
145
+ [data-ui-cascader] [data-part-value-segment] {
146
146
  flex: 0 1 auto;
147
147
  /* Two characters and the ellipsis, the least a segment can say. */
148
148
  min-inline-size: 2.5ch;
@@ -160,26 +160,26 @@
160
160
  * shortfall, and the last segment overflowed the value unclipped by its own
161
161
  * ellipsis at a weight of 0.001.
162
162
  */
163
- [data-ui='cascader'] [data-part='value-segment'] {
163
+ [data-ui-cascader] [data-part-value-segment] {
164
164
  flex-shrink: 100;
165
165
  }
166
166
 
167
- [data-ui='cascader'] [data-part='value-segment']:first-child {
167
+ [data-ui-cascader] [data-part-value-segment]:first-child {
168
168
  flex-shrink: 50;
169
169
  }
170
170
 
171
- [data-ui='cascader'] [data-part='value-segment']:last-child {
171
+ [data-ui-cascader] [data-part-value-segment]:last-child {
172
172
  flex-shrink: 1;
173
173
  }
174
174
 
175
- [data-ui='cascader'] [data-part='value-separator'] {
175
+ [data-ui-cascader] [data-part-value-separator] {
176
176
  color: var(--slotted-cascader-separator-color, var(--slotted-text-muted, GrayText));
177
177
  flex: none;
178
178
  padding-inline: var(--slotted-space-2, 0.25rem);
179
179
  }
180
180
 
181
181
  /* Nothing chosen yet: the same weight, one step quieter. */
182
- [data-ui='cascader'] [data-part='placeholder'] {
182
+ [data-ui-cascader] [data-part-placeholder] {
183
183
  color: var(--slotted-cascader-placeholder-color, var(--slotted-text-muted, GrayText));
184
184
  flex: 1 1 auto;
185
185
  min-inline-size: 0;
@@ -189,7 +189,7 @@
189
189
  }
190
190
 
191
191
  /* A multiple selection shows its chips in the content lane, as `select`'s. */
192
- [data-ui='cascader'][data-part='root'] > [data-part='tags'] {
192
+ [data-ui-cascader][data-part-root] > [data-part-tags] {
193
193
  align-items: center;
194
194
  display: flex;
195
195
  gap: var(--slotted-space-2, 0.25rem);
@@ -201,12 +201,12 @@
201
201
  pointer-events: none;
202
202
  }
203
203
 
204
- [data-ui='cascader'] > [data-part='tags'] > * {
204
+ [data-ui-cascader] > [data-part-tags] > * {
205
205
  pointer-events: auto;
206
206
  position: relative;
207
207
  }
208
208
 
209
- [data-ui='cascader'] [data-part='summary'] {
209
+ [data-ui-cascader] [data-part-summary] {
210
210
  display: block;
211
211
  overflow: hidden;
212
212
  text-overflow: ellipsis;
@@ -214,7 +214,7 @@
214
214
  white-space: nowrap;
215
215
  }
216
216
 
217
- [data-ui='cascader'][data-part='root']:not([data-narrow]) [data-part='summary'] {
217
+ [data-ui-cascader][data-part-root]:not([data-narrow]) [data-part-summary] {
218
218
  block-size: 1px;
219
219
  clip-path: inset(50%);
220
220
  inline-size: 1px;
@@ -222,11 +222,11 @@
222
222
  white-space: nowrap;
223
223
  }
224
224
 
225
- [data-ui='cascader'][data-part='root'][data-narrow] > [data-part='tags'] {
225
+ [data-ui-cascader][data-part-root][data-narrow] > [data-part-tags] {
226
226
  display: none;
227
227
  }
228
228
 
229
- [data-ui='cascader'] > [data-part='arrow'] {
229
+ [data-ui-cascader] > [data-part-arrow] {
230
230
  --slotted-icon-size: var(--_icon-size);
231
231
 
232
232
  align-items: center;
@@ -240,17 +240,17 @@
240
240
  pointer-events: none;
241
241
  }
242
242
 
243
- [data-ui='cascader'] > [data-part='arrow'] > [data-ui='icon'] {
243
+ [data-ui-cascader] > [data-part-arrow] > [data-ui-icon] {
244
244
  transition: rotate var(--slotted-control-transition-duration)
245
245
  var(--slotted-control-transition-easing);
246
246
  }
247
247
 
248
- [data-ui='cascader'][data-open] > [data-part='arrow'] > [data-ui='icon'] {
248
+ [data-ui-cascader][data-open] > [data-part-arrow] > [data-ui-icon] {
249
249
  rotate: 180deg;
250
250
  }
251
251
 
252
252
  /* The ring where the chevron stands, while the value's path is resolving. */
253
- [data-ui='cascader'] > [data-part='busy'] {
253
+ [data-ui-cascader] > [data-part-busy] {
254
254
  --slotted-spinner-size: var(--_icon-size);
255
255
 
256
256
  color: var(--slotted-cascader-arrow-color, var(--slotted-text-muted, GrayText));
@@ -259,7 +259,7 @@
259
259
  pointer-events: none;
260
260
  }
261
261
 
262
- [data-ui='cascader'] > [data-part='clear'] {
262
+ [data-ui-cascader] > [data-part-clear] {
263
263
  --slotted-icon-size: var(--_icon-size);
264
264
 
265
265
  align-items: center;
@@ -286,14 +286,14 @@
286
286
  }
287
287
 
288
288
  /* The hit area recovered outside the paint, as `select`'s. */
289
- [data-ui='cascader'] > [data-part='clear']::after {
289
+ [data-ui-cascader] > [data-part-clear]::after {
290
290
  content: '';
291
291
  inset: min(0px, calc((100% - var(--slotted-target-min, 24px)) / 2));
292
292
  position: absolute;
293
293
  }
294
294
 
295
295
  @media (pointer: coarse) {
296
- [data-ui='cascader'] > [data-part='clear']::after {
296
+ [data-ui-cascader] > [data-part-clear]::after {
297
297
  inset: min(0px, calc((100% - var(--slotted-target-comfortable, 44px)) / 2));
298
298
  inset-inline-end: 0;
299
299
  }
@@ -301,7 +301,7 @@
301
301
 
302
302
  /* ── Size ─────────────────────────────────────────────────────────────── */
303
303
 
304
- [data-ui='cascader'][data-part='root'][data-size='sm'] {
304
+ [data-ui-cascader][data-part-root][data-size='sm'] {
305
305
  --_font-size: var(--slotted-control-font-size-sm, 12px);
306
306
  --_height: var(--slotted-control-height-sm, 30px);
307
307
  --_padding-inline: var(--slotted-control-padding-inline-sm, 10px);
@@ -310,7 +310,7 @@
310
310
  --_inner-size: var(--slotted-control-inner-size-sm, 22px);
311
311
  }
312
312
 
313
- [data-ui='cascader'][data-part='root'][data-size='lg'] {
313
+ [data-ui-cascader][data-part-root][data-size='lg'] {
314
314
  --_font-size: var(--slotted-control-font-size-lg, 14px);
315
315
  --_height: var(--slotted-control-height-lg, 38px);
316
316
  --_padding-inline: var(--slotted-control-padding-inline-lg, 16px);
@@ -321,12 +321,12 @@
321
321
 
322
322
  /* ── Variant ──────────────────────────────────────────────────────────── */
323
323
 
324
- [data-ui='cascader'][data-part='root'][data-variant='subtle'] {
324
+ [data-ui-cascader][data-part-root][data-variant='subtle'] {
325
325
  background-color: var(--slotted-surface-sunken, Canvas);
326
326
  border-color: var(--slotted-border-subtle, ButtonBorder);
327
327
  }
328
328
 
329
- [data-ui='cascader'][data-part='root'][data-variant='plain'] {
329
+ [data-ui-cascader][data-part-root][data-variant='plain'] {
330
330
  background-color: transparent;
331
331
  border-color: transparent;
332
332
  border-radius: var(--slotted-radius-none, 0px);
@@ -334,51 +334,51 @@
334
334
  }
335
335
 
336
336
  @media (forced-colors: active) {
337
- [data-ui='cascader'][data-part='root'][data-variant='plain'] {
337
+ [data-ui-cascader][data-part-root][data-variant='plain'] {
338
338
  border-color: ButtonBorder;
339
339
  }
340
340
  }
341
341
 
342
342
  /* ── States on the control ────────────────────────────────────────────── */
343
343
 
344
- [data-ui='cascader'][data-part='root']:hover:not([data-disabled]):not([data-readonly]):not(
344
+ [data-ui-cascader][data-part-root]:hover:not([data-disabled]):not([data-readonly]):not(
345
345
  [data-invalid]
346
346
  ) {
347
347
  border-color: var(--slotted-cascader-hover-border-color, var(--slotted-tone-accent-border));
348
348
  }
349
349
 
350
- [data-ui='cascader'][data-part='root'][data-variant='subtle']:hover:not([data-disabled]):not(
350
+ [data-ui-cascader][data-part-root][data-variant='subtle']:hover:not([data-disabled]):not(
351
351
  [data-readonly]
352
352
  ):not([data-invalid]) {
353
353
  background-color: var(--slotted-tone-secondary-subtle-hover);
354
354
  }
355
355
 
356
- [data-ui='cascader'][data-part='root'][data-variant='plain']:hover:not([data-disabled]):not(
356
+ [data-ui-cascader][data-part-root][data-variant='plain']:hover:not([data-disabled]):not(
357
357
  [data-readonly]
358
358
  ):not([data-invalid]) {
359
359
  background-color: var(--slotted-tone-secondary-subtle-hover);
360
360
  border-color: transparent;
361
361
  }
362
362
 
363
- [data-ui='cascader'][data-part='root']:has(> [data-part='trigger']:focus-visible) {
363
+ [data-ui-cascader][data-part-root]:has(> [data-part-trigger]:focus-visible) {
364
364
  box-shadow: var(--slotted-control-shadow-focus-geometry, 0 1px 4px -1px)
365
365
  var(--slotted-focus-ring-color, Highlight);
366
366
  outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);
367
367
  outline-offset: var(--slotted-focus-ring-offset, 2px);
368
368
  }
369
369
 
370
- [data-ui='cascader'][data-part='root'][data-variant='plain']:has(
371
- > [data-part='trigger']:focus-visible
370
+ [data-ui-cascader][data-part-root][data-variant='plain']:has(
371
+ > [data-part-trigger]:focus-visible
372
372
  ) {
373
373
  box-shadow: none;
374
374
  outline-offset: calc(var(--slotted-focus-ring-offset, 2px) * -1);
375
375
  }
376
376
 
377
- [data-ui='cascader'][data-part='root'][data-open]:not([data-disabled]) {
377
+ [data-ui-cascader][data-part-root][data-open]:not([data-disabled]) {
378
378
  border-color: var(--slotted-cascader-open-border-color, var(--slotted-tone-accent-border));
379
379
  }
380
380
 
381
- [data-ui='cascader'][data-part='root'][data-invalid] {
381
+ [data-ui-cascader][data-part-root][data-invalid] {
382
382
  --slotted-focus-ring-color: var(--slotted-focus-ring-color-invalid, Highlight);
383
383
  --_invalid-edge-width: var(
384
384
  --slotted-cascader-invalid-edge-width,
@@ -400,15 +400,15 @@
400
400
  box-shadow: var(--_invalid-edge);
401
401
  }
402
402
 
403
- [data-ui='cascader'][data-part='root'][data-invalid]:has(> [data-part='trigger']:focus-visible) {
403
+ [data-ui-cascader][data-part-root][data-invalid]:has(> [data-part-trigger]:focus-visible) {
404
404
  box-shadow:
405
405
  var(--_invalid-edge),
406
406
  var(--slotted-control-shadow-focus-geometry, 0 1px 4px -1px)
407
407
  var(--slotted-focus-ring-color, Highlight);
408
408
  }
409
409
 
410
- [data-ui='cascader'][data-part='root'][data-variant='plain'][data-invalid]:has(
411
- > [data-part='trigger']:focus-visible
410
+ [data-ui-cascader][data-part-root][data-variant='plain'][data-invalid]:has(
411
+ > [data-part-trigger]:focus-visible
412
412
  ) {
413
413
  /* The ring lies inside the box here, over the border and an edge as wide as
414
414
  it; the edge reaches past the ring. */
@@ -426,23 +426,21 @@
426
426
  * control draws its ring double, which a valid ring is not.
427
427
  */
428
428
  @media (forced-colors: active) {
429
- [data-ui='cascader'][data-part='root'][data-invalid] {
429
+ [data-ui-cascader][data-part-root][data-invalid] {
430
430
  outline: var(--_invalid-edge-width) solid CanvasText;
431
431
  outline-offset: calc(
432
432
  -1 * (var(--slotted-control-border-width, 1px) + var(--_invalid-edge-width))
433
433
  );
434
434
  }
435
435
 
436
- [data-ui='cascader'][data-part='root'][data-invalid]:has(
437
- > [data-part='trigger']:focus-visible
438
- ) {
436
+ [data-ui-cascader][data-part-root][data-invalid]:has(> [data-part-trigger]:focus-visible) {
439
437
  outline: calc(var(--slotted-focus-ring-width, 2px) + var(--_invalid-edge-width)) double
440
438
  var(--slotted-focus-ring-color, Highlight);
441
439
  outline-offset: var(--slotted-focus-ring-offset, 2px);
442
440
  }
443
441
 
444
- [data-ui='cascader'][data-part='root'][data-variant='plain'][data-invalid]:has(
445
- > [data-part='trigger']:focus-visible
442
+ [data-ui-cascader][data-part-root][data-variant='plain'][data-invalid]:has(
443
+ > [data-part-trigger]:focus-visible
446
444
  ) {
447
445
  outline: calc(var(--slotted-focus-ring-width, 2px) + var(--_invalid-edge-width)) double
448
446
  var(--slotted-focus-ring-color, Highlight);
@@ -452,46 +450,46 @@
452
450
  }
453
451
  }
454
452
 
455
- [data-ui='cascader'][data-part='root'][data-readonly] {
453
+ [data-ui-cascader][data-part-root][data-readonly] {
456
454
  background-color: var(--slotted-tone-secondary-subtle-hover);
457
455
  }
458
456
 
459
457
  /* The chevron of a control nobody may open steps down to the muted ink it
460
458
  already has plus the disabled one, rather than fading by opacity. */
461
- [data-ui='cascader'][data-part='root'][data-readonly] > [data-part='arrow'] {
459
+ [data-ui-cascader][data-part-root][data-readonly] > [data-part-arrow] {
462
460
  color: var(--slotted-disabled-foreground);
463
461
  }
464
462
 
465
- [data-ui='cascader'][data-part='root'][data-disabled],
466
- [data-ui='cascader'][data-part='root']:has(> [data-part='trigger']:disabled) {
463
+ [data-ui-cascader][data-part-root][data-disabled],
464
+ [data-ui-cascader][data-part-root]:has(> [data-part-trigger]:disabled) {
467
465
  background-color: var(--slotted-disabled-background);
468
466
  border-color: var(--slotted-disabled-border);
469
467
  box-shadow: none;
470
468
  color: var(--slotted-disabled-foreground);
471
469
  }
472
470
 
473
- [data-ui='cascader'][data-part='root'][data-disabled] > [data-part='trigger'],
474
- [data-ui='cascader'][data-part='root'] > [data-part='trigger']:disabled {
471
+ [data-ui-cascader][data-part-root][data-disabled] > [data-part-trigger],
472
+ [data-ui-cascader][data-part-root] > [data-part-trigger]:disabled {
475
473
  cursor: not-allowed;
476
474
  }
477
475
 
478
- [data-ui='cascader'] > [data-part='clear']:hover:not(:disabled):not([data-disabled]) {
476
+ [data-ui-cascader] > [data-part-clear]:hover:not(:disabled):not([data-disabled]) {
479
477
  background-color: var(--slotted-tone-secondary-subtle-hover);
480
478
  color: var(--slotted-text, CanvasText);
481
479
  }
482
480
 
483
- [data-ui='cascader'] > [data-part='clear']:active:not(:disabled):not([data-disabled]) {
481
+ [data-ui-cascader] > [data-part-clear]:active:not(:disabled):not([data-disabled]) {
484
482
  background-color: var(--slotted-tone-secondary-subtle-active);
485
483
  }
486
484
 
487
- [data-ui='cascader'] > [data-part='clear']:focus-visible {
485
+ [data-ui-cascader] > [data-part-clear]:focus-visible {
488
486
  outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);
489
487
  outline-offset: calc(var(--slotted-focus-ring-offset, 2px) * -1);
490
488
  }
491
489
 
492
490
  /* ── The layer ────────────────────────────────────────────────────────── */
493
491
 
494
- [data-ui='cascader']:is([data-part='positioner'], [data-part='content']) {
492
+ [data-ui-cascader]:is([data-part-positioner], [data-part-content]) {
495
493
  --_surface: var(--slotted-cascader-surface, var(--slotted-surface-raised, #ffffff));
496
494
  --_text: var(--slotted-text, #0f172a);
497
495
  --_muted: var(--slotted-text-muted, #5b6b7f);
@@ -546,7 +544,7 @@
546
544
  );
547
545
  }
548
546
 
549
- [data-ui='cascader'][data-part='positioner'] {
547
+ [data-ui-cascader][data-part-positioner] {
550
548
  position: absolute;
551
549
  inset-block-start: 0;
552
550
  z-index: calc(var(--slotted-z-index-popover, 1100) + var(--slotted-layer-depth, 0));
@@ -562,27 +560,27 @@
562
560
  translate var(--slotted-duration-short) var(--slotted-easing-exit);
563
561
  }
564
562
 
565
- [data-ui='cascader'][data-part='positioner'][data-side='top'] {
563
+ [data-ui-cascader][data-part-positioner][data-side='top'] {
566
564
  translate: 0 var(--_enter-distance);
567
565
  }
568
566
 
569
- [data-ui='cascader'][data-part='positioner']:is([data-side='left'], [data-side='right']) {
567
+ [data-ui-cascader][data-part-positioner]:is([data-side='left'], [data-side='right']) {
570
568
  translate: 0 0;
571
569
  }
572
570
 
573
571
  /* The entrance is a keyframe, the exit a transition: `select`'s reasoning. */
574
- [data-ui='cascader'][data-part='positioner'][data-open] {
572
+ [data-ui-cascader][data-part-positioner][data-open] {
575
573
  opacity: 1;
576
574
  translate: 0 0;
577
575
  transition: none;
578
576
  }
579
577
 
580
- [data-ui='cascader'][data-part='positioner'][data-open][data-positioned] {
578
+ [data-ui-cascader][data-part-positioner][data-open][data-positioned] {
581
579
  animation: slotted-cascader-enter-down var(--slotted-duration-medium)
582
580
  var(--slotted-easing-enter);
583
581
  }
584
582
 
585
- [data-ui='cascader'][data-part='positioner'][data-open][data-positioned][data-side='top'] {
583
+ [data-ui-cascader][data-part-positioner][data-open][data-positioned][data-side='top'] {
586
584
  animation-name: slotted-cascader-enter-up;
587
585
  }
588
586
 
@@ -607,19 +605,19 @@
607
605
  }
608
606
 
609
607
  @media (prefers-reduced-motion: reduce) {
610
- [data-ui='cascader'][data-part='positioner'],
611
- [data-ui='cascader'][data-part='positioner'][data-side='top'] {
608
+ [data-ui-cascader][data-part-positioner],
609
+ [data-ui-cascader][data-part-positioner][data-side='top'] {
612
610
  translate: 0 0;
613
611
  transition: opacity var(--slotted-duration-short) var(--slotted-easing-exit);
614
612
  }
615
613
 
616
- [data-ui='cascader'][data-part='positioner'][data-open][data-positioned],
617
- [data-ui='cascader'][data-part='positioner'][data-open][data-positioned][data-side='top'] {
614
+ [data-ui-cascader][data-part-positioner][data-open][data-positioned],
615
+ [data-ui-cascader][data-part-positioner][data-open][data-positioned][data-side='top'] {
618
616
  animation-name: slotted-cascader-fade;
619
617
  }
620
618
  }
621
619
 
622
- [data-ui='cascader'][data-part='positioner'][data-detached] {
620
+ [data-ui-cascader][data-part-positioner][data-detached] {
623
621
  visibility: hidden;
624
622
  }
625
623
 
@@ -628,7 +626,7 @@
628
626
  * path is deep, up to the room the positioner reports; one level at a time
629
627
  * takes the control's width, and never less than one column.
630
628
  */
631
- [data-ui='cascader'][data-part='positioner'][data-layout='columns'] {
629
+ [data-ui-cascader][data-part-positioner][data-layout='columns'] {
632
630
  inline-size: max-content;
633
631
  max-inline-size: var(--slotted-positioner-available-width, 100vw);
634
632
  min-inline-size: var(--slotted-positioner-anchor-width, auto);
@@ -640,18 +638,18 @@
640
638
  * control it hangs from. The reserved strip beside it is the layer's, which
641
639
  * takes no pointer.
642
640
  */
643
- [data-ui='cascader'][data-part='positioner'][data-layout='columns'] > [data-part='content'] {
641
+ [data-ui-cascader][data-part-positioner][data-layout='columns'] > [data-part-content] {
644
642
  inline-size: max-content;
645
643
  max-inline-size: 100%;
646
644
  min-inline-size: min(var(--slotted-positioner-anchor-width, 0px), 100%);
647
645
  }
648
646
 
649
- [data-ui='cascader'][data-part='positioner']:is([data-layout='drill'], [data-layout='tree']) {
647
+ [data-ui-cascader][data-part-positioner]:is([data-layout='drill'], [data-layout='tree']) {
650
648
  inline-size: max(var(--slotted-positioner-anchor-width, 0px), var(--_column-measure));
651
649
  max-inline-size: var(--slotted-positioner-available-width, 100vw);
652
650
  }
653
651
 
654
- [data-ui='cascader']:is([data-part='positioner'], [data-part='content'])[data-size='sm'] {
652
+ [data-ui-cascader]:is([data-part-positioner], [data-part-content])[data-size='sm'] {
655
653
  --_item-inset: calc(var(--slotted-control-padding-inline-sm, 0.625rem) - var(--_inset-inline));
656
654
  --_item-height: var(--slotted-control-height-sm, 30px);
657
655
  --_content-font-size: var(--slotted-control-font-size-sm, 12px);
@@ -661,7 +659,7 @@
661
659
  --_column-gap: var(--slotted-control-gap-sm, 0.375rem);
662
660
  }
663
661
 
664
- [data-ui='cascader']:is([data-part='positioner'], [data-part='content'])[data-size='lg'] {
662
+ [data-ui-cascader]:is([data-part-positioner], [data-part-content])[data-size='lg'] {
665
663
  --_item-inset: calc(var(--slotted-control-padding-inline-lg, 1rem) - var(--_inset-inline));
666
664
  --_item-height: var(--slotted-control-height-lg, 38px);
667
665
  --_content-font-size: var(--slotted-control-font-size-lg, 14px);
@@ -678,7 +676,7 @@
678
676
  * panel — bounded by the height the positioner reports. The panel is the one
679
677
  * that gives, and inside it each column scrolls on its own.
680
678
  */
681
- [data-ui='cascader'] > [data-part='content'] {
679
+ [data-ui-cascader] > [data-part-content] {
682
680
  background: var(--_surface);
683
681
  border: var(--_border-width) solid var(--_border-color);
684
682
  border-radius: var(--_radius);
@@ -699,7 +697,7 @@
699
697
  pointer-events: auto;
700
698
  }
701
699
 
702
- [data-ui='cascader'] > [data-part='content']:focus-visible {
700
+ [data-ui-cascader] > [data-part-content]:focus-visible {
703
701
  outline: none;
704
702
  }
705
703
 
@@ -710,7 +708,7 @@
710
708
  * and is as wide as its columns up to its container. The tree inside it
711
709
  * takes focus here, and the surface draws the ring for it.
712
710
  */
713
- [data-ui='cascader'][data-part='content'] {
711
+ [data-ui-cascader][data-part-content] {
714
712
  background: var(--_surface);
715
713
  border: var(--_border-width) solid var(--_border-color);
716
714
  border-radius: var(--_radius);
@@ -726,14 +724,14 @@
726
724
  overflow: hidden;
727
725
  }
728
726
 
729
- [data-ui='cascader'][data-part='content']:has(> [data-part='panel']:focus-visible) {
727
+ [data-ui-cascader][data-part-content]:has(> [data-part-panel]:focus-visible) {
730
728
  outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);
731
729
  outline-offset: var(--slotted-focus-ring-offset, 2px);
732
730
  }
733
731
 
734
732
  /* ── The search field ─────────────────────────────────────────────────── */
735
733
 
736
- [data-ui='cascader'] [data-part='search'] {
734
+ [data-ui-cascader] [data-part-search] {
737
735
  align-items: center;
738
736
  border-block-end: var(--_border-width) solid var(--_border-color);
739
737
  box-sizing: border-box;
@@ -745,7 +743,7 @@
745
743
  padding-inline: calc(var(--_inset-inline) + var(--_item-inset));
746
744
  }
747
745
 
748
- [data-ui='cascader'] [data-part='search'] > [data-ui='icon'] {
746
+ [data-ui-cascader] [data-part-search] > [data-ui-icon] {
749
747
  --slotted-icon-size: var(--_content-icon-size);
750
748
 
751
749
  color: var(--_muted);
@@ -754,7 +752,7 @@
754
752
 
755
753
  /* No ring: the field holds focus for as long as the popup is open, so a
756
754
  ring would be a border, not a state. The caret says where focus is. */
757
- [data-ui='cascader'] [data-part='search-input'] {
755
+ [data-ui-cascader] [data-part-search-input] {
758
756
  background-color: transparent;
759
757
  border: 0;
760
758
  color: inherit;
@@ -766,7 +764,7 @@
766
764
  text-overflow: ellipsis;
767
765
  }
768
766
 
769
- [data-ui='cascader'] [data-part='search-input']::placeholder {
767
+ [data-ui-cascader] [data-part-search-input]::placeholder {
770
768
  color: var(--_muted);
771
769
  text-overflow: ellipsis;
772
770
  }
@@ -784,7 +782,7 @@
784
782
  * (`cascaderCrumbs`), so the row is as tall at the tenth level as at the
785
783
  * second and the list under it does not move down as the reader drills.
786
784
  */
787
- [data-ui='cascader'] [data-part='breadcrumb'] {
785
+ [data-ui-cascader] [data-part-breadcrumb] {
788
786
  align-items: center;
789
787
  border-block-end: var(--_border-width) solid var(--_border-color);
790
788
  color: var(--_muted);
@@ -802,13 +800,13 @@
802
800
  white-space: nowrap;
803
801
  }
804
802
 
805
- [data-ui='cascader'] [data-part='breadcrumb'] > [data-ui='icon'] {
803
+ [data-ui-cascader] [data-part-breadcrumb] > [data-ui-icon] {
806
804
  --slotted-icon-size: var(--_secondary-font-size);
807
805
 
808
806
  flex: none;
809
807
  }
810
808
 
811
- [data-ui='cascader'] [data-part='crumb'] {
809
+ [data-ui-cascader] [data-part-crumb] {
812
810
  appearance: none;
813
811
  background-color: transparent;
814
812
  border: 0;
@@ -833,24 +831,24 @@
833
831
  color var(--slotted-control-transition-duration) var(--slotted-control-transition-easing);
834
832
  }
835
833
 
836
- [data-ui='cascader'] [data-part='crumb']:hover:not([aria-current]):not(:disabled) {
834
+ [data-ui-cascader] [data-part-crumb]:hover:not([aria-current]):not(:disabled) {
837
835
  background-color: var(--_highlight);
838
836
  color: var(--_text);
839
837
  }
840
838
 
841
- [data-ui='cascader'] [data-part='crumb']:active:not([aria-current]):not(:disabled) {
839
+ [data-ui-cascader] [data-part-crumb]:active:not([aria-current]):not(:disabled) {
842
840
  background-color: var(--_highlight-active);
843
841
  }
844
842
 
845
843
  /* Outside the crumb: an inset ring sat on the first letter of a label the
846
844
  crumb's own padding barely clears. The row's block padding holds it. */
847
- [data-ui='cascader'] [data-part='crumb']:focus-visible {
845
+ [data-ui-cascader] [data-part-crumb]:focus-visible {
848
846
  outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);
849
847
  outline-offset: 0;
850
848
  }
851
849
 
852
850
  /* The level on show: where the reader is, and not a place to go. */
853
- [data-ui='cascader'] [data-part='crumb'][aria-current] {
851
+ [data-ui-cascader] [data-part-crumb][aria-current] {
854
852
  color: var(--_text);
855
853
  cursor: default;
856
854
  flex-shrink: 1;
@@ -859,7 +857,7 @@
859
857
  }
860
858
 
861
859
  /* The fold: the middle of a deep trail as one crumb, its ellipsis whole. */
862
- [data-ui='cascader'] [data-part='crumb'][data-collapsed] {
860
+ [data-ui-cascader] [data-part-crumb][data-collapsed] {
863
861
  flex: none;
864
862
  min-inline-size: var(--slotted-target-min, 24px);
865
863
  }
@@ -873,7 +871,7 @@
873
871
  * scrolled them instead, and at 420 pixels the third column sat under the
874
872
  * rounded edge with nothing on a touch screen saying there was more.
875
873
  */
876
- [data-ui='cascader'] [data-part='panel'] {
874
+ [data-ui-cascader] [data-part-panel] {
877
875
  display: flex;
878
876
  flex: 1 1 auto;
879
877
  min-block-size: 0;
@@ -887,7 +885,7 @@
887
885
  * one before by a hairline from the border scale — the edge a reader follows
888
886
  * from a branch to its children.
889
887
  */
890
- [data-ui='cascader'] [data-part='column'] {
888
+ [data-ui-cascader] [data-part-column] {
891
889
  align-content: start;
892
890
  box-sizing: border-box;
893
891
  display: grid;
@@ -911,18 +909,18 @@
911
909
  padding-inline: var(--_inset-inline);
912
910
  }
913
911
 
914
- [data-ui='cascader'] [data-part='column'] + [data-part='column'] {
912
+ [data-ui-cascader] [data-part-column] + [data-part-column] {
915
913
  border-inline-start: var(--_border-width) solid var(--_border-color);
916
914
  }
917
915
 
918
916
  /* One level at a time, or every level in one run: the column is the panel. */
919
- [data-ui='cascader']:is([data-layout='drill'], [data-layout='tree']) [data-part='column'] {
917
+ [data-ui-cascader]:is([data-layout='drill'], [data-layout='tree']) [data-part-column] {
920
918
  flex: 1 1 auto;
921
919
  inline-size: auto;
922
920
  }
923
921
 
924
922
  /* A level still loading says so to a reader while its rows wait. */
925
- [data-ui='cascader'] [data-part='column'][aria-busy='true'] {
923
+ [data-ui-cascader] [data-part-column][aria-busy='true'] {
926
924
  cursor: progress;
927
925
  }
928
926
 
@@ -933,7 +931,7 @@
933
931
  * cursor is `aria-activedescendant`, so a node is neither focusable nor a
934
932
  * button, as `select`'s option is not.
935
933
  */
936
- [data-ui='cascader'] [data-part='node'] {
934
+ [data-ui-cascader] [data-part-node] {
937
935
  align-content: center;
938
936
  border-radius: var(--_item-radius);
939
937
  box-sizing: border-box;
@@ -962,7 +960,7 @@
962
960
  * carrying `aria-level`, because a node that held its children would paint
963
961
  * its highlight over them.
964
962
  */
965
- [data-ui='cascader'][data-layout='tree'] [data-part='node'] {
963
+ [data-ui-cascader][data-layout='tree'] [data-part-node] {
966
964
  /* Its own tracks rather than the column's: a subgrid gives every row the
967
965
  widest padding among them, so the first capture drew every level at the
968
966
  deepest indent. The end tracks still line up, because every node ends in
@@ -980,55 +978,55 @@
980
978
  * dark scheme, where no neutral ground below the cursor lifts, the ink
981
979
  * carries it alone.
982
980
  */
983
- [data-ui='cascader'] [data-part='node'][data-expanded] {
981
+ [data-ui-cascader] [data-part-node][data-expanded] {
984
982
  background-color: var(--_path);
985
983
  }
986
984
 
987
985
  /* And a weight, which is what carries the road where no ground does: the
988
986
  high-contrast scheme draws the path ground as its own surface. */
989
- [data-ui='cascader'] [data-part='node'][data-expanded] > [data-part='label'] {
987
+ [data-ui-cascader] [data-part-node][data-expanded] > [data-part-label] {
990
988
  font-weight: var(--slotted-font-weight-semibold, 600);
991
989
  }
992
990
 
993
- [data-ui='cascader'][data-layout='tree'] [data-part='node'][data-expanded] {
991
+ [data-ui-cascader][data-layout='tree'] [data-part-node][data-expanded] {
994
992
  background-color: transparent;
995
993
  }
996
994
 
997
995
  /* The cursor, a ground and a one-pixel ring, for the reason `select` gives. */
998
- [data-ui='cascader'] [data-part='node'][data-current] {
996
+ [data-ui-cascader] [data-part-node][data-current] {
999
997
  background-color: var(--_highlight);
1000
998
  box-shadow: inset 0 0 0 var(--slotted-border-width-thin, 1px)
1001
999
  var(--slotted-cascader-highlight-ring, var(--slotted-tone-accent-border));
1002
1000
  }
1003
1001
 
1004
- [data-ui='cascader'] [data-part='node']:not([data-disabled]):active {
1002
+ [data-ui-cascader] [data-part-node]:not([data-disabled]):active {
1005
1003
  background-color: var(--_highlight-active);
1006
1004
  }
1007
1005
 
1008
- [data-ui='cascader'] [data-part='node'][data-selected] {
1006
+ [data-ui-cascader] [data-part-node][data-selected] {
1009
1007
  color: var(--_selected-color);
1010
1008
  }
1011
1009
 
1012
- [data-ui='cascader'] [data-part='node'][data-selected] > [data-part='label'] {
1010
+ [data-ui-cascader] [data-part-node][data-selected] > [data-part-label] {
1013
1011
  font-weight: var(--slotted-font-weight-medium, 500);
1014
1012
  }
1015
1013
 
1016
- [data-ui='cascader'] [data-part='node'][data-disabled] {
1014
+ [data-ui-cascader] [data-part-node][data-disabled] {
1017
1015
  color: var(--slotted-disabled-foreground, #64748b);
1018
1016
  cursor: not-allowed;
1019
1017
  }
1020
1018
 
1021
1019
  /* The cursor lifts on a disabled node too; the ink and the ring step down. */
1022
- [data-ui='cascader'] [data-part='node'][data-disabled][data-current] {
1020
+ [data-ui-cascader] [data-part-node][data-disabled][data-current] {
1023
1021
  box-shadow: inset 0 0 0 var(--slotted-border-width-thin, 1px)
1024
1022
  var(--slotted-disabled-border, #cbd5e1);
1025
1023
  }
1026
1024
 
1027
1025
  /* ── The cells ────────────────────────────────────────────────────────── */
1028
1026
 
1029
- [data-ui='cascader']
1030
- [data-part='node']
1031
- > :is([data-part='indicator'], [data-part='icon'], [data-part='expander']) {
1027
+ [data-ui-cascader]
1028
+ [data-part-node]
1029
+ > :is([data-part-indicator], [data-part-icon], [data-part-expander]) {
1032
1030
  block-size: 1lh;
1033
1031
  }
1034
1032
 
@@ -1036,7 +1034,7 @@
1036
1034
  * Track two: the node's own picture, content the consumer supplies and the
1037
1035
  * column sizes. No stylesheet fills it.
1038
1036
  */
1039
- [data-ui='cascader'] [data-part='node'] > [data-part='icon'] {
1037
+ [data-ui-cascader] [data-part-node] > [data-part-icon] {
1040
1038
  --slotted-icon-size: var(--_content-icon-size);
1041
1039
 
1042
1040
  align-items: center;
@@ -1048,12 +1046,12 @@
1048
1046
  margin-inline-end: var(--_column-gap);
1049
1047
  }
1050
1048
 
1051
- [data-ui='cascader'] [data-part='node'] > [data-part='icon'] > * {
1049
+ [data-ui-cascader] [data-part-node] > [data-part-icon] > * {
1052
1050
  font-size: var(--_content-icon-size);
1053
1051
  }
1054
1052
 
1055
1053
  /* Track three, the only one that gives way: two lines, then an ellipsis. */
1056
- [data-ui='cascader'] [data-part='node'] > [data-part='label'] {
1054
+ [data-ui-cascader] [data-part-node] > [data-part-label] {
1057
1055
  display: -webkit-box;
1058
1056
  grid-column: 3;
1059
1057
  grid-row: 1;
@@ -1068,7 +1066,7 @@
1068
1066
  * The path of a search hit, or the line under a label. Quieter by the
1069
1067
  * secondary step and never in the way of the label above it.
1070
1068
  */
1071
- [data-ui='cascader'] [data-part='node'] > [data-part='description'] {
1069
+ [data-ui-cascader] [data-part-node] > [data-part-description] {
1072
1070
  color: var(--_muted);
1073
1071
  font-size: var(--_secondary-font-size);
1074
1072
  grid-column: 3;
@@ -1080,12 +1078,12 @@
1080
1078
  white-space: nowrap;
1081
1079
  }
1082
1080
 
1083
- [data-ui='cascader'] [data-part='node'][data-disabled] > [data-part='description'] {
1081
+ [data-ui-cascader] [data-part-node][data-disabled] > [data-part-description] {
1084
1082
  color: inherit;
1085
1083
  }
1086
1084
 
1087
1085
  /* Track four: the count of a branch, or how many inside it are chosen. */
1088
- [data-ui='cascader'] [data-part='node'] > [data-part='meta'] {
1086
+ [data-ui-cascader] [data-part-node] > [data-part-meta] {
1089
1087
  color: var(--_muted);
1090
1088
  font-size: var(--_secondary-font-size);
1091
1089
  font-variant-numeric: tabular-nums;
@@ -1096,8 +1094,8 @@
1096
1094
  white-space: nowrap;
1097
1095
  }
1098
1096
 
1099
- [data-ui='cascader'] [data-part='node'][data-selected] > [data-part='meta'],
1100
- [data-ui='cascader'] [data-part='node'][data-indeterminate] > [data-part='meta'] {
1097
+ [data-ui-cascader] [data-part-node][data-selected] > [data-part-meta],
1098
+ [data-ui-cascader] [data-part-node][data-indeterminate] > [data-part-meta] {
1101
1099
  color: var(--_selected-color);
1102
1100
  }
1103
1101
 
@@ -1106,7 +1104,7 @@
1106
1104
  * direction, from the `directional` icon box the binding draws, and takes
1107
1105
  * the label's ink on the path.
1108
1106
  */
1109
- [data-ui='cascader'] [data-part='node'] > [data-part='expander'] {
1107
+ [data-ui-cascader] [data-part-node] > [data-part-expander] {
1110
1108
  --slotted-icon-size: var(--_content-icon-size);
1111
1109
 
1112
1110
  align-items: center;
@@ -1122,27 +1120,25 @@
1122
1120
  var(--slotted-control-transition-easing);
1123
1121
  }
1124
1122
 
1125
- [data-ui='cascader']
1126
- [data-part='node']:is([data-expanded], [data-current])
1127
- > [data-part='expander'] {
1123
+ [data-ui-cascader] [data-part-node]:is([data-expanded], [data-current]) > [data-part-expander] {
1128
1124
  color: inherit;
1129
1125
  }
1130
1126
 
1131
- [data-ui='cascader'] [data-part='node'] > [data-part='expander'] > [data-ui='icon'] {
1127
+ [data-ui-cascader] [data-part-node] > [data-part-expander] > [data-ui-icon] {
1132
1128
  transition: rotate var(--slotted-control-transition-duration)
1133
1129
  var(--slotted-control-transition-easing);
1134
1130
  }
1135
1131
 
1136
1132
  /* In the tree the level opens under the node, so the chevron turns down. */
1137
- [data-ui='cascader'][data-layout='tree']
1138
- [data-part='node'][data-expanded]
1139
- > [data-part='expander']
1140
- > [data-ui='icon'] {
1133
+ [data-ui-cascader][data-layout='tree']
1134
+ [data-part-node][data-expanded]
1135
+ > [data-part-expander]
1136
+ > [data-ui-icon] {
1141
1137
  rotate: 90deg;
1142
1138
  }
1143
1139
 
1144
1140
  /* A branch whose level is on its way: the ring stands where the chevron stood. */
1145
- [data-ui='cascader'] [data-part='expander'] > [data-ui='spinner'] {
1141
+ [data-ui-cascader] [data-part-expander] > [data-ui-spinner] {
1146
1142
  --slotted-spinner-size: var(--_content-icon-size);
1147
1143
  }
1148
1144
 
@@ -1151,7 +1147,7 @@
1151
1147
  * track, because only a node that is not a branch — or a branch the consumer
1152
1148
  * made selectable — carries it.
1153
1149
  */
1154
- [data-ui='cascader'] [data-part='node'] > [data-part='indicator'] {
1150
+ [data-ui-cascader] [data-part-node] > [data-part-indicator] {
1155
1151
  --slotted-icon-size: var(--_content-icon-size);
1156
1152
 
1157
1153
  align-items: center;
@@ -1169,7 +1165,7 @@
1169
1165
  scale var(--slotted-duration-short) var(--slotted-easing-exit);
1170
1166
  }
1171
1167
 
1172
- [data-ui='cascader'] [data-part='node'][data-selected] > [data-part='indicator'] {
1168
+ [data-ui-cascader] [data-part-node][data-selected] > [data-part-indicator] {
1173
1169
  opacity: 1;
1174
1170
  scale: 1;
1175
1171
  transition:
@@ -1183,7 +1179,7 @@
1183
1179
  * same solid ground when chosen, and the mark — a check, or the dash while
1184
1180
  * part of the branch is chosen — revealed along its stroke.
1185
1181
  */
1186
- [data-ui='cascader'][data-selection='multiple'] [data-part='node'] > [data-part='indicator'] {
1182
+ [data-ui-cascader][data-selection='multiple'] [data-part-node] > [data-part-indicator] {
1187
1183
  --_mark-inset: var(--slotted-cascader-mark-inset, 2px);
1188
1184
  --_check-border: var(--slotted-border-width-medium, 1.5px);
1189
1185
  --slotted-icon-size: calc(var(--_check-size) - 2 * var(--_mark-inset));
@@ -1209,10 +1205,10 @@
1209
1205
  var(--slotted-control-transition-easing);
1210
1206
  }
1211
1207
 
1212
- [data-ui='cascader'][data-selection='multiple']
1213
- [data-part='node']
1214
- > [data-part='indicator']
1215
- > [data-ui='icon'] {
1208
+ [data-ui-cascader][data-selection='multiple']
1209
+ [data-part-node]
1210
+ > [data-part-indicator]
1211
+ > [data-ui-icon] {
1216
1212
  clip-path: inset(0% 100% 0% 0%);
1217
1213
  color: var(--slotted-tone-accent-on-solid);
1218
1214
  inset-block-start: calc(var(--_mark-inset) - var(--_check-border));
@@ -1225,24 +1221,24 @@
1225
1221
  opacity var(--slotted-duration-medium) var(--slotted-control-transition-easing);
1226
1222
  }
1227
1223
 
1228
- [data-ui='cascader'][data-selection='multiple']
1229
- [data-part='node']:is([data-selected], [data-indeterminate])
1230
- > [data-part='indicator'] {
1224
+ [data-ui-cascader][data-selection='multiple']
1225
+ [data-part-node]:is([data-selected], [data-indeterminate])
1226
+ > [data-part-indicator] {
1231
1227
  background-color: var(--slotted-tone-accent-solid);
1232
1228
  border-color: var(--slotted-tone-accent-solid);
1233
1229
  }
1234
1230
 
1235
- [data-ui='cascader'][data-selection='multiple']
1236
- [data-part='node']:is([data-selected], [data-indeterminate])
1237
- > [data-part='indicator']
1238
- > [data-ui='icon'] {
1231
+ [data-ui-cascader][data-selection='multiple']
1232
+ [data-part-node]:is([data-selected], [data-indeterminate])
1233
+ > [data-part-indicator]
1234
+ > [data-ui-icon] {
1239
1235
  clip-path: inset(0% 0% 0% 0%);
1240
1236
  opacity: 1;
1241
1237
  }
1242
1238
 
1243
- [data-ui='cascader'][data-selection='multiple']
1244
- [data-part='node'][data-disabled]
1245
- > [data-part='indicator'] {
1239
+ [data-ui-cascader][data-selection='multiple']
1240
+ [data-part-node][data-disabled]
1241
+ > [data-part-indicator] {
1246
1242
  background-color: var(--slotted-disabled-background, Canvas);
1247
1243
  border-color: var(--slotted-disabled-border, GrayText);
1248
1244
  }
@@ -1254,7 +1250,7 @@
1254
1250
  * the height of a node, descending in width, from `skeleton`'s sheet. The
1255
1251
  * column's `aria-busy` is what a reader hears.
1256
1252
  */
1257
- [data-ui='cascader'] [data-part='loader'] {
1253
+ [data-ui-cascader] [data-part-loader] {
1258
1254
  align-items: center;
1259
1255
  display: flex;
1260
1256
  grid-column: 1 / -1;
@@ -1262,15 +1258,15 @@
1262
1258
  padding-inline: var(--_item-inset);
1263
1259
  }
1264
1260
 
1265
- [data-ui='cascader'] [data-part='loader'] > [data-ui='skeleton'] {
1261
+ [data-ui-cascader] [data-part-loader] > [data-ui-skeleton] {
1266
1262
  flex: 1 1 auto;
1267
1263
  }
1268
1264
 
1269
- [data-ui='cascader'] [data-part='loader']:nth-child(3n + 2) > [data-ui='skeleton'] {
1265
+ [data-ui-cascader] [data-part-loader]:nth-child(3n + 2) > [data-ui-skeleton] {
1270
1266
  flex: 0 1 78%;
1271
1267
  }
1272
1268
 
1273
- [data-ui='cascader'] [data-part='loader']:nth-child(3n) > [data-ui='skeleton'] {
1269
+ [data-ui-cascader] [data-part-loader]:nth-child(3n) > [data-ui-skeleton] {
1274
1270
  flex: 0 1 56%;
1275
1271
  }
1276
1272
 
@@ -1279,7 +1275,7 @@
1279
1275
  * with its retry. Centred sentences in their own bidi run, as `select`'s are,
1280
1276
  * and never narrower than a word.
1281
1277
  */
1282
- [data-ui='cascader'] :is([data-part='empty'], [data-part='status']) {
1278
+ [data-ui-cascader] :is([data-part-empty], [data-part-status]) {
1283
1279
  align-items: center;
1284
1280
  color: var(--_muted);
1285
1281
  display: flex;
@@ -1293,26 +1289,26 @@
1293
1289
  unicode-bidi: plaintext;
1294
1290
  }
1295
1291
 
1296
- [data-ui='cascader'] [data-part='status']:empty {
1292
+ [data-ui-cascader] [data-part-status]:empty {
1297
1293
  display: none;
1298
1294
  }
1299
1295
 
1300
1296
  /* ── Forced colours ───────────────────────────────────────────────────── */
1301
1297
 
1302
1298
  @media (forced-colors: active) {
1303
- [data-ui='cascader'] [data-part='node'][data-current] {
1299
+ [data-ui-cascader] [data-part-node][data-current] {
1304
1300
  background-color: Highlight;
1305
1301
  color: HighlightText;
1306
1302
  forced-color-adjust: none;
1307
1303
  }
1308
1304
 
1309
- [data-ui='cascader'] [data-part='node'][data-disabled][data-current] {
1305
+ [data-ui-cascader] [data-part-node][data-disabled][data-current] {
1310
1306
  background-color: Highlight;
1311
1307
  color: GrayText;
1312
1308
  }
1313
1309
 
1314
1310
  /* The path would lose its ground to Canvas: an outline keeps the road. */
1315
- [data-ui='cascader'] [data-part='node'][data-expanded]:not([data-current]) {
1311
+ [data-ui-cascader] [data-part-node][data-expanded]:not([data-current]) {
1316
1312
  outline: 1px solid CanvasText;
1317
1313
  outline-offset: -1px;
1318
1314
  }