@slotted/styles 0.1.0-beta.7 → 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 +312 -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 +157 -172
  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
package/src/tree/tree.css CHANGED
@@ -51,7 +51,7 @@
51
51
  * only the frame's own inset, radius and shadow come off the space, radius
52
52
  * and shadow scales.
53
53
  */
54
- [data-ui='tree'] {
54
+ [data-ui-tree] {
55
55
  --_surface: var(--slotted-tree-surface, var(--slotted-surface, #ffffff));
56
56
  --_text: var(--slotted-tree-text, var(--slotted-text, #0f172a));
57
57
  --_muted: var(--slotted-tree-text-muted, var(--slotted-text-muted, #5b6b7f));
@@ -177,7 +177,7 @@
177
177
  text-align: start;
178
178
  }
179
179
 
180
- [data-ui='tree'][data-size='sm'] {
180
+ [data-ui-tree][data-size='sm'] {
181
181
  --_row-inset: var(--slotted-control-padding-inline-sm, 0.625rem);
182
182
  --_row-height: var(--slotted-control-height-sm, 30px);
183
183
  --_font-size: var(--slotted-control-font-size-sm, 12px);
@@ -187,7 +187,7 @@
187
187
  --_check-size: var(--slotted-selection-size-sm, 14px);
188
188
  }
189
189
 
190
- [data-ui='tree'][data-size='lg'] {
190
+ [data-ui-tree][data-size='lg'] {
191
191
  --_row-inset: var(--slotted-control-padding-inline-lg, 1rem);
192
192
  --_row-height: var(--slotted-control-height-lg, 38px);
193
193
  --_font-size: var(--slotted-control-font-size-lg, 14px);
@@ -201,14 +201,14 @@
201
201
  * `framed` is the standalone control; `plain` is what a tree renders as
202
202
  * inside a panel, a drawer or a page region that already has an edge.
203
203
  */
204
- [data-ui='tree'][data-variant='framed'] {
204
+ [data-ui-tree][data-variant='framed'] {
205
205
  background-color: var(--_surface);
206
206
  border: var(--_border-width) solid var(--_border-color);
207
207
  border-radius: var(--_radius);
208
208
  box-shadow: var(--_shadow);
209
209
  }
210
210
 
211
- [data-ui='tree'] [data-part='canvas'] {
211
+ [data-ui-tree] [data-part-canvas] {
212
212
  /**
213
213
  * The block cap is stated rather than the height: a tree of four branches
214
214
  * is four rows tall, and one of four hundred stops at `rows` and scrolls.
@@ -222,7 +222,7 @@
222
222
  padding-inline: 0;
223
223
  }
224
224
 
225
- [data-ui='tree'] :is([data-part='canvas'], [data-part='group']) {
225
+ [data-ui-tree] :is([data-part-canvas], [data-part-group]) {
226
226
  list-style: none;
227
227
  margin-block: 0;
228
228
  margin-inline: 0;
@@ -233,7 +233,7 @@
233
233
  * The group carries no inset: the row states the whole indent, so the band
234
234
  * can span the tree's full width at every level.
235
235
  */
236
- [data-ui='tree'] [data-part='group'] {
236
+ [data-ui-tree] [data-part-group] {
237
237
  padding-block: 0;
238
238
  padding-inline: 0;
239
239
  }
@@ -248,7 +248,7 @@
248
248
  * family that only works under one reset is a family waiting for the next
249
249
  * one.
250
250
  */
251
- [data-ui='tree'] [data-part='node'] {
251
+ [data-ui-tree] [data-part-node] {
252
252
  display: block;
253
253
  margin-block: 0;
254
254
  margin-inline: 0;
@@ -265,7 +265,7 @@
265
265
  outline: none;
266
266
  }
267
267
 
268
- [data-ui='tree'] [data-part='row'] {
268
+ [data-ui-tree] [data-part-row] {
269
269
  align-items: center;
270
270
  background-color: transparent;
271
271
  color: inherit;
@@ -339,7 +339,7 @@
339
339
  * row is what `VS Code`, Primer and Carbon all draw, and what the reviewer
340
340
  * asked for at the visual gate.
341
341
  */
342
- [data-ui='tree'] [data-part='guide'] {
342
+ [data-ui-tree] [data-part-guide] {
343
343
  background-image: repeating-linear-gradient(
344
344
  to right,
345
345
  var(--_guide-color) 0 var(--_border-width),
@@ -352,7 +352,7 @@
352
352
  position: absolute;
353
353
  }
354
354
 
355
- [data-ui='tree'] [data-part='guide']:dir(rtl) {
355
+ [data-ui-tree] [data-part-guide]:dir(rtl) {
356
356
  background-image: repeating-linear-gradient(
357
357
  to left,
358
358
  var(--_guide-color) 0 var(--_border-width),
@@ -360,7 +360,7 @@
360
360
  );
361
361
  }
362
362
 
363
- [data-ui='tree'][data-guides='false'] [data-part='guide'] {
363
+ [data-ui-tree][data-guides='false'] [data-part-guide] {
364
364
  background-image: none;
365
365
  }
366
366
 
@@ -370,7 +370,7 @@
370
370
  * as one control moving. A leaf keeps the box and the binding draws nothing
371
371
  * in it, which is what holds every label in one column whatever its node is.
372
372
  */
373
- [data-ui='tree'] [data-part='expander'] {
373
+ [data-ui-tree] [data-part-expander] {
374
374
  /**
375
375
  * The glyph is the icon size and never the box: under `expandOn="expander"`
376
376
  * the box grows by padding to the target minimum, and the `icon` box stays
@@ -391,20 +391,20 @@
391
391
  margin-inline-end: var(--_gap);
392
392
  }
393
393
 
394
- [data-ui='tree'] [data-part='expander'] > [data-ui='icon'] {
394
+ [data-ui-tree] [data-part-expander] > [data-ui-icon] {
395
395
  transition: rotate var(--slotted-control-transition-duration, var(--slotted-duration-short))
396
396
  var(--slotted-control-transition-easing, var(--slotted-easing-standard));
397
397
  }
398
398
 
399
- [data-ui='tree'] [data-part='expander']:dir(rtl) > [data-ui='icon'] {
399
+ [data-ui-tree] [data-part-expander]:dir(rtl) > [data-ui-icon] {
400
400
  rotate: 180deg;
401
401
  }
402
402
 
403
- [data-ui='tree']
404
- [data-part='node'][data-expanded]
405
- > [data-part='row']
406
- [data-part='expander']
407
- > [data-ui='icon'] {
403
+ [data-ui-tree]
404
+ [data-part-node][data-expanded]
405
+ > [data-part-row]
406
+ [data-part-expander]
407
+ > [data-ui-icon] {
408
408
  rotate: 90deg;
409
409
  }
410
410
 
@@ -413,10 +413,10 @@
413
413
  * the target otherwise. Under the first the box is grown to the WCAG minimum
414
414
  * without the artwork growing, and the growth is taken back so no label moves.
415
415
  */
416
- [data-ui='tree'][data-expand-on='expander']
417
- [data-part='node'][data-branch]
418
- > [data-part='row']
419
- [data-part='expander'] {
416
+ [data-ui-tree][data-expand-on='expander']
417
+ [data-part-node][data-branch]
418
+ > [data-part-row]
419
+ [data-part-expander] {
420
420
  box-sizing: content-box;
421
421
  cursor: pointer;
422
422
  margin-block: calc((var(--slotted-target-min, 24px) - var(--_icon-size)) / -2);
@@ -439,10 +439,8 @@
439
439
  * leaf is text; and with the chevron as the only target, no row is pressed at
440
440
  * all.
441
441
  */
442
- [data-ui='tree'][data-selection='none'][data-expand-on='expander'] [data-part='row'],
443
- [data-ui='tree'][data-selection='none']
444
- [data-part='node']:not([data-branch])
445
- > [data-part='row'] {
442
+ [data-ui-tree][data-selection='none'][data-expand-on='expander'] [data-part-row],
443
+ [data-ui-tree][data-selection='none'] [data-part-node]:not([data-branch]) > [data-part-row] {
446
444
  cursor: default;
447
445
  }
448
446
 
@@ -450,7 +448,7 @@
450
448
  * A tree the reader may read and not move keeps the arrow throughout, as
451
449
  * `listbox` does with the same word.
452
450
  */
453
- [data-ui='tree'][data-readonly] [data-part='row'] {
451
+ [data-ui-tree][data-readonly] [data-part-row] {
454
452
  cursor: default;
455
453
  }
456
454
 
@@ -483,7 +481,7 @@
483
481
  * subpixels — and the two families are held together by
484
482
  * `tree.styles.test.mjs`, which reads `checkbox.css` and compares them.
485
483
  */
486
- [data-ui='tree'] [data-part='indicator'] {
484
+ [data-ui-tree] [data-part-indicator] {
487
485
  --_mark-inset: var(--slotted-tree-mark-inset, 2px);
488
486
  --_check-border: var(--slotted-border-width-medium, 1.5px);
489
487
  --_mark-size: calc(var(--_check-size) - 2 * var(--_mark-inset));
@@ -514,7 +512,7 @@
514
512
  * two whole pixels from the outside of the square, which is where `checkbox`
515
513
  * puts its own.
516
514
  */
517
- [data-ui='tree'] [data-part='indicator'] > [data-ui='icon'] {
515
+ [data-ui-tree] [data-part-indicator] > [data-ui-icon] {
518
516
  /* Physical on purpose: a check is not mirrored in a right-to-left row, so
519
517
  neither is the hand that draws it. `checkbox` states the same. */
520
518
  clip-path: inset(0% 100% 0% 0%);
@@ -531,24 +529,24 @@
531
529
  var(--slotted-control-transition-easing, var(--slotted-easing-standard));
532
530
  }
533
531
 
534
- [data-ui='tree']
535
- [data-part='node']:is([data-selected], [data-indeterminate])
536
- > [data-part='row']
537
- [data-part='indicator'] {
532
+ [data-ui-tree]
533
+ [data-part-node]:is([data-selected], [data-indeterminate])
534
+ > [data-part-row]
535
+ [data-part-indicator] {
538
536
  background-color: var(--slotted-tone-accent-solid);
539
537
  border-color: var(--slotted-tone-accent-solid);
540
538
  }
541
539
 
542
- [data-ui='tree']
543
- [data-part='node']:is([data-selected], [data-indeterminate])
544
- > [data-part='row']
545
- [data-part='indicator']
546
- > [data-ui='icon'] {
540
+ [data-ui-tree]
541
+ [data-part-node]:is([data-selected], [data-indeterminate])
542
+ > [data-part-row]
543
+ [data-part-indicator]
544
+ > [data-ui-icon] {
547
545
  clip-path: inset(0% 0% 0% 0%);
548
546
  opacity: 1;
549
547
  }
550
548
 
551
- [data-ui='tree'] [data-part='node'][data-disabled] > [data-part='row'] [data-part='indicator'] {
549
+ [data-ui-tree] [data-part-node][data-disabled] > [data-part-row] [data-part-indicator] {
552
550
  background-color: var(--slotted-disabled-background, Canvas);
553
551
  border-color: var(--slotted-disabled-border, GrayText);
554
552
  cursor: not-allowed;
@@ -559,8 +557,7 @@
559
557
  * at all, and the rule is written so a consumer who leaves the element in the
560
558
  * markup still gets the tree the axis promises.
561
559
  */
562
- [data-ui='tree']:is([data-indicator='highlight'], [data-indicator='none'])
563
- [data-part='indicator'] {
560
+ [data-ui-tree]:is([data-indicator='highlight'], [data-indicator='none']) [data-part-indicator] {
564
561
  display: none;
565
562
  }
566
563
 
@@ -568,7 +565,7 @@
568
565
  * The node's own picture, which the consumer supplies. The family owns no
569
566
  * folder glyph: a folder is content, and the glyph scale holds none.
570
567
  */
571
- [data-ui='tree'] [data-part='icon'] {
568
+ [data-ui-tree] [data-part-icon] {
572
569
  block-size: var(--_icon-size);
573
570
  color: var(--_muted);
574
571
  flex: none;
@@ -582,9 +579,9 @@
582
579
  * taken. Primer asks the consumer to pass a visual on every item or to accept
583
580
  * two columns of names; the fact is one the tree can read for itself.
584
581
  */
585
- [data-ui='tree'][data-part='root']:has([data-part='icon'])
586
- [data-part='row']:not(:has([data-part='icon']))
587
- [data-part='label'] {
582
+ [data-ui-tree][data-part-root]:has([data-part-icon])
583
+ [data-part-row]:not(:has([data-part-icon]))
584
+ [data-part-label] {
588
585
  margin-inline-start: calc(var(--_icon-size) + var(--_gap));
589
586
  }
590
587
 
@@ -601,8 +598,8 @@
601
598
  * and its count are data of unknown direction, and each one is now its own
602
599
  * paragraph.
603
600
  */
604
- [data-ui='tree']
605
- :is([data-part='label'], [data-part='description'], [data-part='meta'], [data-part='empty']) {
601
+ [data-ui-tree]
602
+ :is([data-part-label], [data-part-description], [data-part-meta], [data-part-empty]) {
606
603
  unicode-bidi: plaintext;
607
604
  }
608
605
 
@@ -617,7 +614,7 @@
617
614
  * reader's own start edge in both directions, and leaves the truncation
618
615
  * where it was.
619
616
  */
620
- [data-ui='tree'] [data-part='label'] {
617
+ [data-ui-tree] [data-part-label] {
621
618
  flex: 0 1 auto;
622
619
  line-height: var(--slotted-line-height-sm, 1.45);
623
620
  /**
@@ -647,22 +644,22 @@
647
644
  * they are is a placeholder the eye refuses. They are literals because they
648
645
  * are a proportion of a row rather than a step on any scale.
649
646
  */
650
- [data-ui='tree'] [data-part='label']:has([data-ui='skeleton']) {
647
+ [data-ui-tree] [data-part-label]:has([data-ui-skeleton]) {
651
648
  flex: 1 1 auto;
652
649
  max-inline-size: 62%;
653
650
  }
654
651
 
655
- [data-ui='tree']
656
- [data-part='node']:nth-child(2n)
657
- > [data-part='row']
658
- [data-part='label']:has([data-ui='skeleton']) {
652
+ [data-ui-tree]
653
+ [data-part-node]:nth-child(2n)
654
+ > [data-part-row]
655
+ [data-part-label]:has([data-ui-skeleton]) {
659
656
  max-inline-size: 44%;
660
657
  }
661
658
 
662
- [data-ui='tree']
663
- [data-part='node']:nth-child(3n)
664
- > [data-part='row']
665
- [data-part='label']:has([data-ui='skeleton']) {
659
+ [data-ui-tree]
660
+ [data-part-node]:nth-child(3n)
661
+ > [data-part-row]
662
+ [data-part-label]:has([data-ui-skeleton]) {
666
663
  max-inline-size: 73%;
667
664
  }
668
665
 
@@ -671,7 +668,7 @@
671
668
  * from its ground, which is the rule `--slotted-highlight-tint-opacity`
672
669
  * states and what `select` and `combobox` already draw.
673
670
  */
674
- [data-ui='tree'] [data-part='label'] mark {
671
+ [data-ui-tree] [data-part-label] mark {
675
672
  background-color: color-mix(
676
673
  in oklab,
677
674
  var(--slotted-tone-accent-text) calc(var(--slotted-highlight-tint-opacity, 0.075) * 100%),
@@ -687,11 +684,11 @@
687
684
  * and over the tone's own ground it is neither visible nor clean — two washes
688
685
  * of one colour, one of them too faint to read as deliberate.
689
686
  */
690
- [data-ui='tree'] [data-part='node'][data-selected] > [data-part='row'] [data-part='label'] mark {
687
+ [data-ui-tree] [data-part-node][data-selected] > [data-part-row] [data-part-label] mark {
691
688
  background-color: transparent;
692
689
  }
693
690
 
694
- [data-ui='tree'] [data-part='description'] {
691
+ [data-ui-tree] [data-part-description] {
695
692
  color: var(--_muted);
696
693
  margin-inline-start: var(--_gap);
697
694
  flex: 0 1 auto;
@@ -706,7 +703,7 @@
706
703
  * The trailing count. It keeps its intrinsic width so a label twice as long
707
704
  * in translation pushes on itself rather than on the number beside it.
708
705
  */
709
- [data-ui='tree'] [data-part='meta'] {
706
+ [data-ui-tree] [data-part-meta] {
710
707
  color: var(--_muted);
711
708
  flex: none;
712
709
  font-size: var(--_secondary-font-size);
@@ -733,7 +730,7 @@
733
730
  * that drew an arc of its own would be a second answer to the same wait,
734
731
  * drifting from the first the moment one of them is retuned.
735
732
  */
736
- [data-ui='tree'] [data-part='loader'] {
733
+ [data-ui-tree] [data-part-loader] {
737
734
  --slotted-spinner-size: var(--_icon-size);
738
735
 
739
736
  block-size: var(--_icon-size);
@@ -748,7 +745,7 @@
748
745
  * reachable: revealing them on hover alone puts a control behind a gesture a
749
746
  * touch reader does not have.
750
747
  */
751
- [data-ui='tree'] [data-part='actions'] {
748
+ [data-ui-tree] [data-part-actions] {
752
749
  align-items: center;
753
750
  display: flex;
754
751
  flex: none;
@@ -759,11 +756,11 @@
759
756
 
760
757
  /* The free space is taken once. With a count before them, the controls sit a
761
758
  gap after it rather than splitting the row between the two. */
762
- [data-ui='tree'] [data-part='meta'] ~ [data-part='actions'] {
759
+ [data-ui-tree] [data-part-meta] ~ [data-part-actions] {
763
760
  margin-inline-start: 0;
764
761
  }
765
762
 
766
- [data-ui='tree'] [data-part='empty'] {
763
+ [data-ui-tree] [data-part-empty] {
767
764
  color: var(--_muted);
768
765
  padding-block: var(--slotted-space-5, 0.75rem);
769
766
  padding-inline: var(--_row-inset);
@@ -776,15 +773,13 @@
776
773
  * A weaker state holds itself back for every stronger one, in the order
777
774
  * `STATE_PRECEDENCE` names.
778
775
  */
779
- [data-ui='tree']
780
- [data-part='node']:not([data-disabled]):not([data-loading])
781
- > [data-part='row']:hover {
776
+ [data-ui-tree] [data-part-node]:not([data-disabled]):not([data-loading]) > [data-part-row]:hover {
782
777
  background-color: var(--_highlight);
783
778
  }
784
779
 
785
- [data-ui='tree']
786
- [data-part='node']:not([data-disabled]):not([data-loading])
787
- > [data-part='row']:active {
780
+ [data-ui-tree]
781
+ [data-part-node]:not([data-disabled]):not([data-loading])
782
+ > [data-part-row]:active {
788
783
  background-color: var(--_highlight-active);
789
784
  }
790
785
 
@@ -792,19 +787,19 @@
792
787
  * The row the keyboard is on paints the same quiet ground as hover, and the
793
788
  * ring is what tells the two apart.
794
789
  */
795
- [data-ui='tree'] [data-part='node'][data-current]:not([data-disabled]) > [data-part='row'] {
790
+ [data-ui-tree] [data-part-node][data-current]:not([data-disabled]) > [data-part-row] {
796
791
  background-color: var(--_highlight);
797
792
  }
798
793
 
799
- [data-ui='tree'] [data-part='node'][data-selected]:not([data-disabled]) > [data-part='row'] {
794
+ [data-ui-tree] [data-part-node][data-selected]:not([data-disabled]) > [data-part-row] {
800
795
  background-color: var(--_selected-surface);
801
796
  color: var(--_selected-text);
802
797
  }
803
798
 
804
- [data-ui='tree']
805
- [data-part='node'][data-selected]:not([data-disabled])
806
- > [data-part='row']
807
- :is([data-part='icon'], [data-part='meta'], [data-part='expander']) {
799
+ [data-ui-tree]
800
+ [data-part-node][data-selected]:not([data-disabled])
801
+ > [data-part-row]
802
+ :is([data-part-icon], [data-part-meta], [data-part-expander]) {
808
803
  color: inherit;
809
804
  }
810
805
 
@@ -821,32 +816,32 @@
821
816
  * one of the three devices R1 names, and it is quieter than a ground, which
822
817
  * is right: the reader chose the descendant and not this.
823
818
  */
824
- [data-ui='tree']
825
- [data-part='node'][data-selected-within]:not([data-selected]):not([data-disabled])
826
- > [data-part='row'] {
819
+ [data-ui-tree]
820
+ [data-part-node][data-selected-within]:not([data-selected]):not([data-disabled])
821
+ > [data-part-row] {
827
822
  color: var(--_selected-text);
828
823
  }
829
824
 
830
- [data-ui='tree']
831
- [data-part='node'][data-selected-within]:not([data-selected]):not([data-disabled])
832
- > [data-part='row']
833
- [data-part='expander'] {
825
+ [data-ui-tree]
826
+ [data-part-node][data-selected-within]:not([data-selected]):not([data-disabled])
827
+ > [data-part-row]
828
+ [data-part-expander] {
834
829
  color: inherit;
835
830
  }
836
831
 
837
- [data-ui='tree'] [data-part='node'][data-disabled] > [data-part='row'] {
832
+ [data-ui-tree] [data-part-node][data-disabled] > [data-part-row] {
838
833
  color: var(--slotted-disabled-foreground, GrayText);
839
834
  cursor: not-allowed;
840
835
  }
841
836
 
842
- [data-ui='tree']
843
- [data-part='node'][data-disabled]
844
- > [data-part='row']
845
- :is([data-part='icon'], [data-part='meta'], [data-part='expander'], [data-part='description']) {
837
+ [data-ui-tree]
838
+ [data-part-node][data-disabled]
839
+ > [data-part-row]
840
+ :is([data-part-icon], [data-part-meta], [data-part-expander], [data-part-description]) {
846
841
  color: inherit;
847
842
  }
848
843
 
849
- [data-ui='tree'] [data-part='node'][data-loading] > [data-part='row'] {
844
+ [data-ui-tree] [data-part-node][data-loading] > [data-part-row] {
850
845
  cursor: progress;
851
846
  }
852
847
 
@@ -855,16 +850,13 @@
855
850
  * the top or the bottom of a scrolling canvas is not clipped by its own
856
851
  * viewport.
857
852
  */
858
- [data-ui='tree'] [data-part='node']:focus-visible > [data-part='row'],
859
- [data-ui='tree']
860
- [data-part='canvas']:focus-visible
861
- [data-part='node'][data-current]
862
- > [data-part='row'] {
853
+ [data-ui-tree] [data-part-node]:focus-visible > [data-part-row],
854
+ [data-ui-tree] [data-part-canvas]:focus-visible [data-part-node][data-current] > [data-part-row] {
863
855
  outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color);
864
856
  outline-offset: calc(-1 * var(--slotted-focus-ring-width, 2px));
865
857
  }
866
858
 
867
- [data-ui='tree'][data-invalid] {
859
+ [data-ui-tree][data-invalid] {
868
860
  --slotted-focus-ring-color: var(--slotted-focus-ring-color-invalid);
869
861
  --_border-color: var(--slotted-tone-danger-border);
870
862
  /* Width as well as colour (WCAG 1.4.1): in `high-contrast` the danger
@@ -875,11 +867,11 @@
875
867
  --_shadow: inset 0 0 0 var(--_invalid-edge-width) var(--slotted-tone-danger-border);
876
868
  }
877
869
 
878
- [data-ui='tree'][data-disabled] {
870
+ [data-ui-tree][data-disabled] {
879
871
  color: var(--slotted-disabled-foreground, GrayText);
880
872
  }
881
873
 
882
- [data-ui='tree'][data-disabled][data-variant='framed'] {
874
+ [data-ui-tree][data-disabled][data-variant='framed'] {
883
875
  background-color: var(--slotted-disabled-background, Canvas);
884
876
  border-color: var(--slotted-disabled-border, GrayText);
885
877
  box-shadow: none;
@@ -894,12 +886,12 @@
894
886
  * holds a slice of. The canvas falls back to `auto`, so a flat tree with no
895
887
  * window is laid out exactly as a nested one.
896
888
  */
897
- [data-ui='tree'][data-structure='flat'] {
889
+ [data-ui-tree][data-structure='flat'] {
898
890
  max-block-size: calc(var(--_rows) * var(--_row-height) + 2 * var(--_inset-block));
899
891
  overflow: auto;
900
892
  }
901
893
 
902
- [data-ui='tree'][data-structure='flat'] [data-part='canvas'] {
894
+ [data-ui-tree][data-structure='flat'] [data-part-canvas] {
903
895
  block-size: var(--_canvas-size, auto);
904
896
  max-block-size: none;
905
897
  overflow: visible;
@@ -917,7 +909,7 @@
917
909
  * because the reader scrolled it out and moving it back would take the
918
910
  * scrollbar away from them.
919
911
  */
920
- [data-ui='tree'] [data-part='node'][data-pinned] {
912
+ [data-ui-tree] [data-part-node][data-pinned] {
921
913
  inset-block-start: var(--slotted-tree-row-offset, 0px);
922
914
  inset-inline: 0;
923
915
  position: absolute;
@@ -933,26 +925,26 @@
933
925
  *
934
926
  * The retuned value lands on the canvas rather than on the root. A container
935
927
  * query styles the container's descendants and never the container itself, so
936
- * a rule for `[data-ui='tree']` inside this block matches nothing — the tree
928
+ * a rule for `[data-ui-tree]` inside this block matches nothing — the tree
937
929
  * is not its own descendant. Written on the root it looked correct and did
938
930
  * nothing, and the harness at 240 pixels is what showed the indent had not
939
931
  * moved. It is the second half of the two-element decision the briefing
940
932
  * records, and the half that is easy to write and hard to see.
941
933
  */
942
934
  @container slotted-tree (max-width: 320px) {
943
- [data-ui='tree'] [data-part='canvas'] {
935
+ [data-ui-tree] [data-part-canvas] {
944
936
  --_indent: calc(var(--_icon-size) / 2 + var(--slotted-space-3, 0.375rem));
945
937
  }
946
938
  }
947
939
 
948
940
  @container slotted-tree (max-width: 240px) {
949
- [data-ui='tree'] [data-part='canvas'] {
941
+ [data-ui-tree] [data-part-canvas] {
950
942
  --_indent: calc(var(--_icon-size) / 2 + var(--slotted-space-2, 0.25rem));
951
943
  --_row-inset: var(--slotted-control-padding-inline-sm, 0.625rem);
952
944
  }
953
945
 
954
946
  /* The second line has no room to sit beside the first at this width. */
955
- [data-ui='tree'] [data-part='description'] {
947
+ [data-ui-tree] [data-part-description] {
956
948
  display: none;
957
949
  }
958
950
  }
@@ -965,13 +957,13 @@
965
957
  * and the theme maps it to `Highlight`, which is what is restated here.
966
958
  */
967
959
  @media (forced-colors: active) {
968
- [data-ui='tree'] [data-part='node'][data-selected] > [data-part='row'] {
960
+ [data-ui-tree] [data-part-node][data-selected] > [data-part-row] {
969
961
  background-color: Highlight;
970
962
  color: HighlightText;
971
963
  forced-color-adjust: none;
972
964
  }
973
965
 
974
- [data-ui='tree'] [data-part='node'][data-disabled] > [data-part='row'] {
966
+ [data-ui-tree] [data-part-node][data-disabled] > [data-part-row] {
975
967
  color: GrayText;
976
968
  }
977
969
 
@@ -981,7 +973,7 @@
981
973
  * both; the mark opts out as well, or the system forces its ink to the
982
974
  * text colour and the tick loses its contrast with the box it stands on.
983
975
  */
984
- [data-ui='tree'] [data-part='indicator'] > [data-ui='icon'] {
976
+ [data-ui-tree] [data-part-indicator] > [data-ui-icon] {
985
977
  forced-color-adjust: none;
986
978
  }
987
979
  }
@@ -992,7 +984,7 @@
992
984
  * ring belongs to a row and leaves it alone.
993
985
  */
994
986
  @media (forced-colors: active) {
995
- [data-ui='tree'][data-variant='framed'][data-invalid] {
987
+ [data-ui-tree][data-variant='framed'][data-invalid] {
996
988
  outline: var(--_invalid-edge-width) solid CanvasText;
997
989
  outline-offset: calc(-1 * (var(--_border-width) + var(--_invalid-edge-width)));
998
990
  }