@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
@@ -36,7 +36,7 @@
36
36
  * a drawer is the ordinary case, and a descendant rule would paint the inner
37
37
  * panel with the outer panel's geometry.
38
38
  */
39
- [data-ui='drawer'] {
39
+ [data-ui-drawer] {
40
40
  /**
41
41
  * The panel's resting measure, per size step. Five named steps rather than
42
42
  * the pixel string Ant and MUI both take: a theme retunes a step and cannot
@@ -47,7 +47,7 @@
47
47
  /**
48
48
  * What the panel actually measures. `--slotted-drawer-extent` is the one
49
49
  * name for it, and it is read from two places: an application setting one
50
- * measure for every drawer writes it on `[data-ui='drawer']`, and the
50
+ * measure for every drawer writes it on `[data-ui-drawer]`, and the
51
51
  * binding writes the length the reader dragged to as an inline custom
52
52
  * property on this element. Both are lengths, so the cascade decides
53
53
  * between them the way it decides everything else.
@@ -176,7 +176,7 @@
176
176
  }
177
177
 
178
178
  /** Leaving is shorter than arriving: a reader who has decided is waiting. */
179
- [data-ui='drawer']:not([data-open]) {
179
+ [data-ui-drawer]:not([data-open]) {
180
180
  --_slide: var(--slotted-duration-medium) var(--slotted-easing-exit);
181
181
  --_move: var(--slotted-duration-medium) var(--slotted-easing-exit);
182
182
  }
@@ -186,27 +186,27 @@
186
186
  * every pointer position would lag the hand by the whole duration, and a
187
187
  * bottom sheet the reader is pulling has to follow it.
188
188
  */
189
- [data-ui='drawer'][data-dragging] {
189
+ [data-ui-drawer][data-dragging] {
190
190
  --_move: var(--slotted-duration-instant) var(--slotted-easing-standard);
191
191
  }
192
192
 
193
- [data-ui='drawer'][data-size='sm'] {
193
+ [data-ui-drawer][data-size='sm'] {
194
194
  --_step: var(--slotted-drawer-extent-sm, 18rem);
195
195
  --_padding-inline: var(--slotted-space-6, 1rem);
196
196
  }
197
197
 
198
- [data-ui='drawer'][data-size='lg'] {
198
+ [data-ui-drawer][data-size='lg'] {
199
199
  --_step: var(--slotted-drawer-extent-lg, 30rem);
200
200
  }
201
201
 
202
- [data-ui='drawer'][data-size='xl'] {
202
+ [data-ui-drawer][data-size='xl'] {
203
203
  --_step: var(--slotted-drawer-extent-xl, 40rem);
204
204
  --_padding-inline: var(--slotted-space-8, 1.5rem);
205
205
  --_title-font-size: var(--slotted-font-size-xl, 1.125rem);
206
206
  }
207
207
 
208
208
  /** The step a drawer that is a page takes: the whole layer, and no measure. */
209
- [data-ui='drawer'][data-size='full'] {
209
+ [data-ui-drawer][data-size='full'] {
210
210
  --_step: 100%;
211
211
  }
212
212
 
@@ -218,7 +218,7 @@
218
218
  * over a dialog is one step above it on the single stack the library keeps
219
219
  * rather than a number this stylesheet guessed.
220
220
  */
221
- [data-ui='drawer'][data-mode='overlay'] {
221
+ [data-ui-drawer][data-mode='overlay'] {
222
222
  position: fixed;
223
223
  inset: 0;
224
224
  z-index: calc(var(--slotted-z-index-overlay, 1000) + var(--slotted-layer-depth, 0));
@@ -235,20 +235,20 @@
235
235
  * a mode here, because a family writing a margin on an element it does not
236
236
  * own is a family deciding someone else's layout.
237
237
  */
238
- [data-ui='drawer'][data-mode='inline'] {
238
+ [data-ui-drawer][data-mode='inline'] {
239
239
  overflow: clip;
240
240
  }
241
241
 
242
- [data-ui='drawer'][data-mode='inline'][data-side='start'],
243
- [data-ui='drawer'][data-mode='inline'][data-side='end'] {
242
+ [data-ui-drawer][data-mode='inline'][data-side='start'],
243
+ [data-ui-drawer][data-mode='inline'][data-side='end'] {
244
244
  inline-size: 0;
245
245
  transition:
246
246
  inline-size var(--_move),
247
247
  var(--_reveal);
248
248
  }
249
249
 
250
- [data-ui='drawer'][data-mode='inline'][data-side='top'],
251
- [data-ui='drawer'][data-mode='inline'][data-side='bottom'] {
250
+ [data-ui-drawer][data-mode='inline'][data-side='top'],
251
+ [data-ui-drawer][data-mode='inline'][data-side='bottom'] {
252
252
  block-size: 0;
253
253
  transition:
254
254
  block-size var(--_move),
@@ -269,14 +269,14 @@
269
269
  * to nought, and a cap against a box on its way to nought is what would
270
270
  * rewrap the panel on the way out.
271
271
  */
272
- [data-ui='drawer'][data-mode='inline'][data-open][data-side='start'],
273
- [data-ui='drawer'][data-mode='inline'][data-open][data-side='end'] {
272
+ [data-ui-drawer][data-mode='inline'][data-open][data-side='start'],
273
+ [data-ui-drawer][data-mode='inline'][data-open][data-side='end'] {
274
274
  inline-size: var(--_extent);
275
275
  max-inline-size: 100%;
276
276
  }
277
277
 
278
- [data-ui='drawer'][data-mode='inline'][data-open][data-side='top'],
279
- [data-ui='drawer'][data-mode='inline'][data-open][data-side='bottom'] {
278
+ [data-ui-drawer][data-mode='inline'][data-open][data-side='top'],
279
+ [data-ui-drawer][data-mode='inline'][data-open][data-side='bottom'] {
280
280
  block-size: var(--_extent);
281
281
  max-block-size: 100%;
282
282
  }
@@ -290,7 +290,7 @@
290
290
  * `data-open`: the entering frame has no `data-open` either, and a hidden
291
291
  * panel in that frame refuses the focus scope's initial focus.
292
292
  */
293
- [data-ui='drawer'][inert] {
293
+ [data-ui-drawer][inert] {
294
294
  content-visibility: hidden;
295
295
  pointer-events: none;
296
296
  }
@@ -304,7 +304,7 @@
304
304
  * is `none` in that mode, and a panel separated only by elevation would sit on
305
305
  * an opaque ground with nothing marking where it starts.
306
306
  */
307
- [data-ui='drawer'] > [data-part='backdrop'] {
307
+ [data-ui-drawer] > [data-part-backdrop] {
308
308
  grid-area: 1 / 1;
309
309
  background: var(--slotted-drawer-scrim, var(--slotted-scrim, Canvas));
310
310
  opacity: 0;
@@ -321,7 +321,7 @@
321
321
  * close is waiting, and the page behind is back before the panel has finished
322
322
  * going.
323
323
  */
324
- [data-ui='drawer'][data-open] > [data-part='backdrop'] {
324
+ [data-ui-drawer][data-open] > [data-part-backdrop] {
325
325
  opacity: 1;
326
326
  transition: opacity var(--slotted-duration-long) var(--slotted-easing-standard);
327
327
  }
@@ -334,7 +334,7 @@
334
334
  * body is long — the failure Vaul, MUI and Angular Material all leave to each
335
335
  * consumer's own CSS, because none of the three ships a layout.
336
336
  */
337
- [data-ui='drawer'] > [data-part='panel'] {
337
+ [data-ui-drawer] > [data-part-panel] {
338
338
  grid-area: 1 / 1;
339
339
  box-sizing: border-box;
340
340
  /**
@@ -403,7 +403,7 @@
403
403
  * physical axis, and a start-side panel leaves toward the left of a
404
404
  * left-to-right document and toward the right of a mirrored one.
405
405
  */
406
- [data-ui='drawer'][data-mode='overlay'] > [data-part='panel'] {
406
+ [data-ui-drawer][data-mode='overlay'] > [data-part-panel] {
407
407
  box-shadow: var(--slotted-shadow-lg);
408
408
  translate: 0 0;
409
409
  /* The measure is restated here, or this rule would replace the base one:
@@ -415,7 +415,7 @@
415
415
  block-size var(--_move);
416
416
  }
417
417
 
418
- [data-ui='drawer'][data-mode='overlay']:not([data-open]) > [data-part='panel'] {
418
+ [data-ui-drawer][data-mode='overlay']:not([data-open]) > [data-part-panel] {
419
419
  translate: var(--_shift-x, 0) var(--_shift-y, 0);
420
420
  }
421
421
 
@@ -435,18 +435,18 @@
435
435
  * transition here would put the panel behind the hand by the whole duration.
436
436
  * The slide stays, because a panel released mid-gesture still has an exit.
437
437
  */
438
- [data-ui='drawer'][data-dragging] > [data-part='panel'] {
438
+ [data-ui-drawer][data-dragging] > [data-part-panel] {
439
439
  transition: none;
440
440
  }
441
441
 
442
- [data-ui='drawer'][data-dragging][data-mode='overlay'] > [data-part='panel'] {
442
+ [data-ui-drawer][data-dragging][data-mode='overlay'] > [data-part-panel] {
443
443
  transition: translate var(--_slide);
444
444
  }
445
445
 
446
- [data-ui='drawer'][data-dragging][data-mode='inline'][data-side='start'],
447
- [data-ui='drawer'][data-dragging][data-mode='inline'][data-side='end'],
448
- [data-ui='drawer'][data-dragging][data-mode='inline'][data-side='top'],
449
- [data-ui='drawer'][data-dragging][data-mode='inline'][data-side='bottom'] {
446
+ [data-ui-drawer][data-dragging][data-mode='inline'][data-side='start'],
447
+ [data-ui-drawer][data-dragging][data-mode='inline'][data-side='end'],
448
+ [data-ui-drawer][data-dragging][data-mode='inline'][data-side='top'],
449
+ [data-ui-drawer][data-dragging][data-mode='inline'][data-side='bottom'] {
450
450
  transition: var(--_reveal);
451
451
  }
452
452
 
@@ -456,7 +456,7 @@
456
456
  * closed panel sits at rest because the layer hides it whole, above.
457
457
  */
458
458
  @media (prefers-reduced-motion: reduce) {
459
- [data-ui='drawer'][data-mode='overlay'] > [data-part='panel'] {
459
+ [data-ui-drawer][data-mode='overlay'] > [data-part-panel] {
460
460
  translate: 0 0;
461
461
  transition:
462
462
  inline-size var(--_move),
@@ -466,20 +466,20 @@
466
466
 
467
467
  /* ── Where the panel sits, and where it goes when it leaves ───────────── */
468
468
 
469
- [data-ui='drawer'][data-side='start'] > [data-part='panel'],
470
- [data-ui='drawer'][data-side='end'] > [data-part='panel'] {
469
+ [data-ui-drawer][data-side='start'] > [data-part-panel],
470
+ [data-ui-drawer][data-side='end'] > [data-part-panel] {
471
471
  align-self: stretch;
472
472
  inline-size: min(var(--_extent), 100%);
473
473
  grid-template-rows: auto minmax(0, 1fr) auto;
474
474
  }
475
475
 
476
- [data-ui='drawer'][data-side='top'] > [data-part='panel'],
477
- [data-ui='drawer'][data-side='bottom'] > [data-part='panel'] {
476
+ [data-ui-drawer][data-side='top'] > [data-part-panel],
477
+ [data-ui-drawer][data-side='bottom'] > [data-part-panel] {
478
478
  justify-self: stretch;
479
479
  block-size: min(var(--_extent), 100%);
480
480
  }
481
481
 
482
- [data-ui='drawer'][data-side='start'] > [data-part='panel'] {
482
+ [data-ui-drawer][data-side='start'] > [data-part-panel] {
483
483
  justify-self: start;
484
484
  --_shift-x: -100%;
485
485
  /* The resizer lies over this edge, so the rows keep clear of it. */
@@ -487,7 +487,7 @@
487
487
  border-inline-end-width: var(--_rule-size);
488
488
  }
489
489
 
490
- [data-ui='drawer'][data-side='end'] > [data-part='panel'] {
490
+ [data-ui-drawer][data-side='end'] > [data-part-panel] {
491
491
  justify-self: end;
492
492
  --_shift-x: 100%;
493
493
  --_row-padding-inline-start: max(var(--_padding-inline), var(--_resizer-thickness));
@@ -507,7 +507,7 @@
507
507
  * resizer would otherwise put its body in an `auto` track and lose the one
508
508
  * declaration that keeps the footer on screen.
509
509
  */
510
- [data-ui='drawer'][data-side='top'] > [data-part='panel'] {
510
+ [data-ui-drawer][data-side='top'] > [data-part-panel] {
511
511
  align-self: start;
512
512
  grid-template-rows: auto minmax(0, 1fr) auto auto;
513
513
  --_shift-y: -100%;
@@ -516,7 +516,7 @@
516
516
  border-end-end-radius: var(--slotted-drawer-radius, var(--_radius));
517
517
  }
518
518
 
519
- [data-ui='drawer'][data-side='bottom'] > [data-part='panel'] {
519
+ [data-ui-drawer][data-side='bottom'] > [data-part-panel] {
520
520
  align-self: end;
521
521
  grid-template-rows: auto auto minmax(0, 1fr) auto;
522
522
  --_shift-y: 100%;
@@ -530,15 +530,15 @@
530
530
  * one. `top` needs no such rule: its separator is the fourth row and the
531
531
  * three above it are already where the base puts them.
532
532
  */
533
- [data-ui='drawer'][data-side='bottom'] > [data-part='panel'] > [data-part='header'] {
533
+ [data-ui-drawer][data-side='bottom'] > [data-part-panel] > [data-part-header] {
534
534
  grid-row: 2;
535
535
  }
536
536
 
537
- [data-ui='drawer'][data-side='bottom'] > [data-part='panel'] > [data-part='body'] {
537
+ [data-ui-drawer][data-side='bottom'] > [data-part-panel] > [data-part-body] {
538
538
  grid-row: 3;
539
539
  }
540
540
 
541
- [data-ui='drawer'][data-side='bottom'] > [data-part='panel'] > [data-part='footer'] {
541
+ [data-ui-drawer][data-side='bottom'] > [data-part-panel] > [data-part-footer] {
542
542
  grid-row: 4;
543
543
  }
544
544
 
@@ -550,8 +550,8 @@
550
550
  * edge then shows on three sides, so the panel draws it on three; on a phone
551
551
  * the two side edges sit on the screen's own and read as nothing.
552
552
  */
553
- [data-ui='drawer'][data-mode='overlay'][data-side='top'] > [data-part='panel'],
554
- [data-ui='drawer'][data-mode='overlay'][data-side='bottom'] > [data-part='panel'] {
553
+ [data-ui-drawer][data-mode='overlay'][data-side='top'] > [data-part-panel],
554
+ [data-ui-drawer][data-mode='overlay'][data-side='bottom'] > [data-part-panel] {
555
555
  justify-self: center;
556
556
  inline-size: min(
557
557
  100%,
@@ -574,7 +574,7 @@
574
574
  * arrives while the sheet is open, and a release back onto the content stop. A
575
575
  * browser without it jumps, and nothing else changes.
576
576
  */
577
- [data-ui='drawer'][data-size='content'] {
577
+ [data-ui-drawer][data-size='content'] {
578
578
  --_step: auto;
579
579
  --_content-cap: min(
580
580
  var(--slotted-drawer-extent, calc(100% - var(--slotted-space-12, 4rem))),
@@ -583,19 +583,19 @@
583
583
  interpolate-size: allow-keywords;
584
584
  }
585
585
 
586
- [data-ui='drawer'][data-size='content'][data-side='start'],
587
- [data-ui='drawer'][data-size='content'][data-side='end'] {
586
+ [data-ui-drawer][data-size='content'][data-side='start'],
587
+ [data-ui-drawer][data-size='content'][data-side='end'] {
588
588
  --_step: max-content;
589
589
  }
590
590
 
591
- [data-ui='drawer'][data-size='content'][data-side='start'] > [data-part='panel'],
592
- [data-ui='drawer'][data-size='content'][data-side='end'] > [data-part='panel'] {
591
+ [data-ui-drawer][data-size='content'][data-side='start'] > [data-part-panel],
592
+ [data-ui-drawer][data-size='content'][data-side='end'] > [data-part-panel] {
593
593
  inline-size: var(--_extent);
594
594
  max-inline-size: var(--_content-cap);
595
595
  }
596
596
 
597
- [data-ui='drawer'][data-size='content'][data-side='top'] > [data-part='panel'],
598
- [data-ui='drawer'][data-size='content'][data-side='bottom'] > [data-part='panel'] {
597
+ [data-ui-drawer][data-size='content'][data-side='top'] > [data-part-panel],
598
+ [data-ui-drawer][data-size='content'][data-side='bottom'] > [data-part-panel] {
599
599
  block-size: var(--_extent);
600
600
  max-block-size: var(--_content-cap);
601
601
  }
@@ -606,7 +606,7 @@
606
606
  * cell the panel sits in shrinks by it, so a sheet lands above the keys and a
607
607
  * side panel's footer does too, and every `100%` cap shrinks with the cell.
608
608
  */
609
- [data-ui='drawer'][data-mode='overlay'] {
609
+ [data-ui-drawer][data-mode='overlay'] {
610
610
  padding-block-end: var(--slotted-keyboard-inset, 0px);
611
611
  }
612
612
 
@@ -616,18 +616,18 @@
616
616
  * press on it reaches it. The opacity keeps the transition the scrim already
617
617
  * has, so crossing the stop fades rather than blinks.
618
618
  */
619
- [data-ui='drawer'][data-undimmed] > [data-part='backdrop'] {
619
+ [data-ui-drawer][data-undimmed] > [data-part-backdrop] {
620
620
  opacity: 0;
621
621
  pointer-events: none;
622
622
  }
623
623
 
624
624
  /* The layer is fixed over the whole viewport, so the scrim alone letting the
625
625
  press through leaves the root to catch it; the panel takes it back. */
626
- [data-ui='drawer'][data-undimmed] {
626
+ [data-ui-drawer][data-undimmed] {
627
627
  pointer-events: none;
628
628
  }
629
629
 
630
- [data-ui='drawer'][data-undimmed] > [data-part='panel'] {
630
+ [data-ui-drawer][data-undimmed] > [data-part-panel] {
631
631
  pointer-events: auto;
632
632
  }
633
633
 
@@ -636,16 +636,16 @@
636
636
  * sits over its end. The inset is padding inside the scrollport, so the last
637
637
  * line scrolls clear of the indicator rather than stopping under it.
638
638
  */
639
- [data-ui='drawer'][data-side='bottom'] > [data-part='panel'] > [data-part='body']:last-child {
639
+ [data-ui-drawer][data-side='bottom'] > [data-part-panel] > [data-part-body]:last-child {
640
640
  padding-block-end: calc(var(--_padding-block) + env(safe-area-inset-bottom, 0px));
641
641
  }
642
642
 
643
643
  /** `start` is the left edge in one direction and the right edge in the other. */
644
- [data-ui='drawer'][data-side='start']:dir(rtl) > [data-part='panel'] {
644
+ [data-ui-drawer][data-side='start']:dir(rtl) > [data-part-panel] {
645
645
  --_shift-x: 100%;
646
646
  }
647
647
 
648
- [data-ui='drawer'][data-side='end']:dir(rtl) > [data-part='panel'] {
648
+ [data-ui-drawer][data-side='end']:dir(rtl) > [data-part-panel] {
649
649
  --_shift-x: -100%;
650
650
  }
651
651
 
@@ -661,7 +661,7 @@
661
661
  * step, because a container condition cannot hold a custom property — buy one
662
662
  * hairline at the extreme edge of the viewport.
663
663
  */
664
- [data-ui='drawer'][data-size='full'] > [data-part='panel'] {
664
+ [data-ui-drawer][data-size='full'] > [data-part-panel] {
665
665
  border-width: 0;
666
666
  border-radius: 0;
667
667
  }
@@ -671,13 +671,13 @@
671
671
  * from, which is what `overflow: clip` on the root is for. `min(…, 100%)`
672
672
  * would resolve against a box that is on its way to nought.
673
673
  */
674
- [data-ui='drawer'][data-mode='inline'][data-side='start'] > [data-part='panel'],
675
- [data-ui='drawer'][data-mode='inline'][data-side='end'] > [data-part='panel'] {
674
+ [data-ui-drawer][data-mode='inline'][data-side='start'] > [data-part-panel],
675
+ [data-ui-drawer][data-mode='inline'][data-side='end'] > [data-part-panel] {
676
676
  inline-size: var(--_extent);
677
677
  }
678
678
 
679
- [data-ui='drawer'][data-mode='inline'][data-side='top'] > [data-part='panel'],
680
- [data-ui='drawer'][data-mode='inline'][data-side='bottom'] > [data-part='panel'] {
679
+ [data-ui-drawer][data-mode='inline'][data-side='top'] > [data-part-panel],
680
+ [data-ui-drawer][data-mode='inline'][data-side='bottom'] > [data-part-panel] {
681
681
  block-size: var(--_extent);
682
682
  }
683
683
 
@@ -688,13 +688,13 @@
688
688
  * a worse picture than one that wrapped. The cap is on `[data-open]` for the
689
689
  * reason the root's is.
690
690
  */
691
- [data-ui='drawer'][data-mode='inline'][data-open][data-side='start'] > [data-part='panel'],
692
- [data-ui='drawer'][data-mode='inline'][data-open][data-side='end'] > [data-part='panel'] {
691
+ [data-ui-drawer][data-mode='inline'][data-open][data-side='start'] > [data-part-panel],
692
+ [data-ui-drawer][data-mode='inline'][data-open][data-side='end'] > [data-part-panel] {
693
693
  max-inline-size: 100%;
694
694
  }
695
695
 
696
- [data-ui='drawer'][data-mode='inline'][data-open][data-side='top'] > [data-part='panel'],
697
- [data-ui='drawer'][data-mode='inline'][data-open][data-side='bottom'] > [data-part='panel'] {
696
+ [data-ui-drawer][data-mode='inline'][data-open][data-side='top'] > [data-part-panel],
697
+ [data-ui-drawer][data-mode='inline'][data-open][data-side='bottom'] > [data-part-panel] {
698
698
  max-block-size: 100%;
699
699
  }
700
700
 
@@ -753,7 +753,7 @@
753
753
  *
754
754
  * `touch-action: none` so a drag is not read as a scroll on the way past.
755
755
  */
756
- [data-ui='drawer'] > [data-part='panel'] > [data-part='resizer'] {
756
+ [data-ui-drawer] > [data-part-panel] > [data-part-resizer] {
757
757
  display: flex;
758
758
  align-items: center;
759
759
  justify-content: center;
@@ -781,16 +781,14 @@
781
781
  }
782
782
 
783
783
  /* Under the hand the gap closes and the marks read as one. */
784
- [data-ui='drawer'] > [data-part='panel'] > [data-part='resizer']:not([data-disabled]):hover,
785
- [data-ui='drawer']
786
- > [data-part='panel']
787
- > [data-part='resizer']:not([data-disabled]):focus-visible,
788
- [data-ui='drawer'][data-dragging] > [data-part='panel'] > [data-part='resizer'] {
784
+ [data-ui-drawer] > [data-part-panel] > [data-part-resizer]:not([data-disabled]):hover,
785
+ [data-ui-drawer] > [data-part-panel] > [data-part-resizer]:not([data-disabled]):focus-visible,
786
+ [data-ui-drawer][data-dragging] > [data-part-panel] > [data-part-resizer] {
789
787
  gap: var(--slotted-space-4, 0.5rem);
790
788
  }
791
789
 
792
- [data-ui='drawer'][data-side='start'] > [data-part='panel'] > [data-part='resizer'],
793
- [data-ui='drawer'][data-side='end'] > [data-part='panel'] > [data-part='resizer'] {
790
+ [data-ui-drawer][data-side='start'] > [data-part-panel] > [data-part-resizer],
791
+ [data-ui-drawer][data-side='end'] > [data-part-panel] > [data-part-resizer] {
794
792
  flex-direction: column;
795
793
  }
796
794
 
@@ -798,52 +796,52 @@
798
796
  * The reach. Transparent, centred on the gutter and above the panel's own
799
797
  * rows, which is what makes a four-pixel picture a twenty-four-pixel target.
800
798
  */
801
- [data-ui='drawer'] > [data-part='panel'] > [data-part='resizer']::before {
799
+ [data-ui-drawer] > [data-part-panel] > [data-part-resizer]::before {
802
800
  content: '';
803
801
  position: absolute;
804
802
  --_reach-overhang: calc((var(--_resizer-reach) - var(--_resizer-thickness)) / -2);
805
803
  }
806
804
 
807
- [data-ui='drawer'][data-side='start'] > [data-part='panel'] > [data-part='resizer']::before,
808
- [data-ui='drawer'][data-side='end'] > [data-part='panel'] > [data-part='resizer']::before {
805
+ [data-ui-drawer][data-side='start'] > [data-part-panel] > [data-part-resizer]::before,
806
+ [data-ui-drawer][data-side='end'] > [data-part-panel] > [data-part-resizer]::before {
809
807
  inset-block: 0;
810
808
  inset-inline: var(--_reach-overhang);
811
809
  }
812
810
 
813
- [data-ui='drawer'][data-side='top'] > [data-part='panel'] > [data-part='resizer']::before,
814
- [data-ui='drawer'][data-side='bottom'] > [data-part='panel'] > [data-part='resizer']::before {
811
+ [data-ui-drawer][data-side='top'] > [data-part-panel] > [data-part-resizer]::before,
812
+ [data-ui-drawer][data-side='bottom'] > [data-part-panel] > [data-part-resizer]::before {
815
813
  inset-inline: 0;
816
814
  inset-block: var(--_reach-overhang);
817
815
  }
818
816
 
819
- [data-ui='drawer'][data-side='start'] > [data-part='panel'] > [data-part='resizer'],
820
- [data-ui='drawer'][data-side='end'] > [data-part='panel'] > [data-part='resizer'] {
817
+ [data-ui-drawer][data-side='start'] > [data-part-panel] > [data-part-resizer],
818
+ [data-ui-drawer][data-side='end'] > [data-part-panel] > [data-part-resizer] {
821
819
  position: absolute;
822
820
  inset-block: 0;
823
821
  inline-size: var(--_resizer-thickness);
824
822
  cursor: col-resize;
825
823
  }
826
824
 
827
- [data-ui='drawer'][data-side='start'] > [data-part='panel'] > [data-part='resizer'] {
825
+ [data-ui-drawer][data-side='start'] > [data-part-panel] > [data-part-resizer] {
828
826
  inset-inline-end: 0;
829
827
  }
830
828
 
831
- [data-ui='drawer'][data-side='end'] > [data-part='panel'] > [data-part='resizer'] {
829
+ [data-ui-drawer][data-side='end'] > [data-part-panel] > [data-part-resizer] {
832
830
  inset-inline-start: 0;
833
831
  }
834
832
 
835
- [data-ui='drawer'][data-side='top'] > [data-part='panel'] > [data-part='resizer'],
836
- [data-ui='drawer'][data-side='bottom'] > [data-part='panel'] > [data-part='resizer'] {
833
+ [data-ui-drawer][data-side='top'] > [data-part-panel] > [data-part-resizer],
834
+ [data-ui-drawer][data-side='bottom'] > [data-part-panel] > [data-part-resizer] {
837
835
  position: relative;
838
836
  block-size: var(--_resizer-thickness);
839
837
  cursor: row-resize;
840
838
  }
841
839
 
842
- [data-ui='drawer'][data-side='bottom'] > [data-part='panel'] > [data-part='resizer'] {
840
+ [data-ui-drawer][data-side='bottom'] > [data-part-panel] > [data-part-resizer] {
843
841
  grid-row: 1;
844
842
  }
845
843
 
846
- [data-ui='drawer'][data-side='top'] > [data-part='panel'] > [data-part='resizer'] {
844
+ [data-ui-drawer][data-side='top'] > [data-part-panel] > [data-part-resizer] {
847
845
  grid-row: 4;
848
846
  }
849
847
 
@@ -856,7 +854,7 @@
856
854
  *
857
855
  * A sheet paints none of them — see the grabber below.
858
856
  */
859
- [data-ui='drawer'] > [data-part='panel'] > [data-part='resizer'] > [data-part='line'] {
857
+ [data-ui-drawer] > [data-part-panel] > [data-part-resizer] > [data-part-line] {
860
858
  flex: 0 1 min(var(--slotted-space-12, 4rem), 20%);
861
859
  min-block-size: 0;
862
860
  min-inline-size: 0;
@@ -869,40 +867,37 @@
869
867
  var(--slotted-control-transition-easing, var(--slotted-easing-standard));
870
868
  }
871
869
 
872
- [data-ui='drawer'][data-side='start']
873
- > [data-part='panel']
874
- > [data-part='resizer']
875
- > [data-part='line']:first-child,
876
- [data-ui='drawer'][data-side='end']
877
- > [data-part='panel']
878
- > [data-part='resizer']
879
- > [data-part='line']:first-child {
870
+ [data-ui-drawer][data-side='start']
871
+ > [data-part-panel]
872
+ > [data-part-resizer]
873
+ > [data-part-line]:first-child,
874
+ [data-ui-drawer][data-side='end']
875
+ > [data-part-panel]
876
+ > [data-part-resizer]
877
+ > [data-part-line]:first-child {
880
878
  background: linear-gradient(to bottom, transparent, var(--_rest));
881
879
  }
882
880
 
883
- [data-ui='drawer'][data-side='start']
884
- > [data-part='panel']
885
- > [data-part='resizer']
886
- > [data-part='line']:last-child,
887
- [data-ui='drawer'][data-side='end']
888
- > [data-part='panel']
889
- > [data-part='resizer']
890
- > [data-part='line']:last-child {
881
+ [data-ui-drawer][data-side='start']
882
+ > [data-part-panel]
883
+ > [data-part-resizer]
884
+ > [data-part-line]:last-child,
885
+ [data-ui-drawer][data-side='end']
886
+ > [data-part-panel]
887
+ > [data-part-resizer]
888
+ > [data-part-line]:last-child {
891
889
  background: linear-gradient(to top, transparent, var(--_rest));
892
890
  }
893
891
 
894
- [data-ui='drawer']
895
- > [data-part='panel']
896
- > [data-part='resizer']:not([data-disabled]):hover
897
- > [data-part='line'],
898
- [data-ui='drawer']
899
- > [data-part='panel']
900
- > [data-part='resizer']:not([data-disabled]):focus-visible
901
- > [data-part='line'],
902
- [data-ui='drawer'][data-dragging]
903
- > [data-part='panel']
904
- > [data-part='resizer']
905
- > [data-part='line'] {
892
+ [data-ui-drawer]
893
+ > [data-part-panel]
894
+ > [data-part-resizer]:not([data-disabled]):hover
895
+ > [data-part-line],
896
+ [data-ui-drawer]
897
+ > [data-part-panel]
898
+ > [data-part-resizer]:not([data-disabled]):focus-visible
899
+ > [data-part-line],
900
+ [data-ui-drawer][data-dragging] > [data-part-panel] > [data-part-resizer] > [data-part-line] {
906
901
  flex-basis: 100%;
907
902
  background: var(--_active);
908
903
  }
@@ -918,7 +913,7 @@
918
913
  * there because a sheet is not held at its corners; it is held in the middle,
919
914
  * which is where every mobile sheet in the field puts its mark.
920
915
  */
921
- [data-ui='drawer'] > [data-part='panel'] > [data-part='resizer'] > [data-part='grip'] {
916
+ [data-ui-drawer] > [data-part-panel] > [data-part-resizer] > [data-part-grip] {
922
917
  flex: none;
923
918
  transition:
924
919
  background-color var(--slotted-control-transition-duration, var(--slotted-duration-short))
@@ -927,14 +922,8 @@
927
922
  var(--slotted-control-transition-easing, var(--slotted-easing-standard));
928
923
  }
929
924
 
930
- [data-ui='drawer'][data-side='start']
931
- > [data-part='panel']
932
- > [data-part='resizer']
933
- > [data-part='grip'],
934
- [data-ui='drawer'][data-side='end']
935
- > [data-part='panel']
936
- > [data-part='resizer']
937
- > [data-part='grip'] {
925
+ [data-ui-drawer][data-side='start'] > [data-part-panel] > [data-part-resizer] > [data-part-grip],
926
+ [data-ui-drawer][data-side='end'] > [data-part-panel] > [data-part-resizer] > [data-part-grip] {
938
927
  color: var(--_rest);
939
928
  background-image: radial-gradient(circle at center, currentColor 40%, transparent 42%);
940
929
  background-size: var(--slotted-space-2, 0.25rem) var(--slotted-space-2, 0.25rem);
@@ -943,14 +932,11 @@
943
932
  }
944
933
 
945
934
  /* The grabber. Four by thirty-six, full radius, centred above the header. */
946
- [data-ui='drawer'][data-side='top']
947
- > [data-part='panel']
948
- > [data-part='resizer']
949
- > [data-part='grip'],
950
- [data-ui='drawer'][data-side='bottom']
951
- > [data-part='panel']
952
- > [data-part='resizer']
953
- > [data-part='grip'] {
935
+ [data-ui-drawer][data-side='top'] > [data-part-panel] > [data-part-resizer] > [data-part-grip],
936
+ [data-ui-drawer][data-side='bottom']
937
+ > [data-part-panel]
938
+ > [data-part-resizer]
939
+ > [data-part-grip] {
954
940
  background-color: var(--_rest);
955
941
  border-radius: var(--slotted-radius-full, 9999px);
956
942
  block-size: var(--slotted-space-2, 0.25rem);
@@ -958,14 +944,11 @@
958
944
  }
959
945
 
960
946
  /* A sheet's lines are not painted: the pill is the whole picture. */
961
- [data-ui='drawer'][data-side='top']
962
- > [data-part='panel']
963
- > [data-part='resizer']
964
- > [data-part='line'],
965
- [data-ui='drawer'][data-side='bottom']
966
- > [data-part='panel']
967
- > [data-part='resizer']
968
- > [data-part='line'] {
947
+ [data-ui-drawer][data-side='top'] > [data-part-panel] > [data-part-resizer] > [data-part-line],
948
+ [data-ui-drawer][data-side='bottom']
949
+ > [data-part-panel]
950
+ > [data-part-resizer]
951
+ > [data-part-line] {
969
952
  display: none;
970
953
  }
971
954
 
@@ -976,45 +959,42 @@
976
959
  * under focus. `splitter`, which draws the same picture, only ever changed
977
960
  * `color`. The pill on a block side is a filled box, so it recolours its fill.
978
961
  */
979
- [data-ui='drawer']
980
- > [data-part='panel']
981
- > [data-part='resizer']:not([data-disabled]):hover
982
- > [data-part='grip'],
983
- [data-ui='drawer']
984
- > [data-part='panel']
985
- > [data-part='resizer']:not([data-disabled]):focus-visible
986
- > [data-part='grip'],
987
- [data-ui='drawer'][data-dragging]
988
- > [data-part='panel']
989
- > [data-part='resizer']
990
- > [data-part='grip'] {
962
+ [data-ui-drawer]
963
+ > [data-part-panel]
964
+ > [data-part-resizer]:not([data-disabled]):hover
965
+ > [data-part-grip],
966
+ [data-ui-drawer]
967
+ > [data-part-panel]
968
+ > [data-part-resizer]:not([data-disabled]):focus-visible
969
+ > [data-part-grip],
970
+ [data-ui-drawer][data-dragging] > [data-part-panel] > [data-part-resizer] > [data-part-grip] {
991
971
  color: var(--_active);
992
972
  }
993
973
 
994
- [data-ui='drawer'][data-side='top']
995
- > [data-part='panel']
996
- > [data-part='resizer']:not([data-disabled]):hover
997
- > [data-part='grip'],
998
- [data-ui='drawer'][data-side='bottom']
999
- > [data-part='panel']
1000
- > [data-part='resizer']:not([data-disabled]):hover
1001
- > [data-part='grip'],
1002
- [data-ui='drawer'][data-side='top']
1003
- > [data-part='panel']
1004
- > [data-part='resizer']:not([data-disabled]):focus-visible
1005
- > [data-part='grip'],
1006
- [data-ui='drawer'][data-side='bottom']
1007
- > [data-part='panel']
1008
- > [data-part='resizer']:not([data-disabled]):focus-visible
1009
- > [data-part='grip'],
1010
- [data-ui='drawer'][data-dragging][data-side='top']
1011
- > [data-part='panel']
1012
- > [data-part='resizer']
1013
- > [data-part='grip'],
1014
- [data-ui='drawer'][data-dragging][data-side='bottom']
1015
- > [data-part='panel']
1016
- > [data-part='resizer']
1017
- > [data-part='grip'] {
974
+ [data-ui-drawer][data-side='top']
975
+ > [data-part-panel]
976
+ > [data-part-resizer]:not([data-disabled]):hover
977
+ > [data-part-grip],
978
+ [data-ui-drawer][data-side='bottom']
979
+ > [data-part-panel]
980
+ > [data-part-resizer]:not([data-disabled]):hover
981
+ > [data-part-grip],
982
+ [data-ui-drawer][data-side='top']
983
+ > [data-part-panel]
984
+ > [data-part-resizer]:not([data-disabled]):focus-visible
985
+ > [data-part-grip],
986
+ [data-ui-drawer][data-side='bottom']
987
+ > [data-part-panel]
988
+ > [data-part-resizer]:not([data-disabled]):focus-visible
989
+ > [data-part-grip],
990
+ [data-ui-drawer][data-dragging][data-side='top']
991
+ > [data-part-panel]
992
+ > [data-part-resizer]
993
+ > [data-part-grip],
994
+ [data-ui-drawer][data-dragging][data-side='bottom']
995
+ > [data-part-panel]
996
+ > [data-part-resizer]
997
+ > [data-part-grip] {
1018
998
  background-color: var(--_active);
1019
999
  }
1020
1000
 
@@ -1034,7 +1014,7 @@
1034
1014
  * forbids a system colour inside `::before` or `::after`, and the ring's own
1035
1015
  * last resort is `Highlight`.
1036
1016
  */
1037
- [data-ui='drawer'] > [data-part='panel'] > [data-part='resizer']:focus-visible {
1017
+ [data-ui-drawer] > [data-part-panel] > [data-part-resizer]:focus-visible {
1038
1018
  outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);
1039
1019
  outline-offset: calc(-1 * var(--slotted-focus-ring-offset, 2px));
1040
1020
  }
@@ -1046,13 +1026,13 @@
1046
1026
  * between a resize the engine prepares for and one it discovers each frame.
1047
1027
  * It is written on the panel because the panel is what changes size.
1048
1028
  */
1049
- [data-ui='drawer'][data-dragging][data-side='start'] > [data-part='panel'],
1050
- [data-ui='drawer'][data-dragging][data-side='end'] > [data-part='panel'] {
1029
+ [data-ui-drawer][data-dragging][data-side='start'] > [data-part-panel],
1030
+ [data-ui-drawer][data-dragging][data-side='end'] > [data-part-panel] {
1051
1031
  will-change: inline-size;
1052
1032
  }
1053
1033
 
1054
- [data-ui='drawer'][data-dragging][data-side='top'] > [data-part='panel'],
1055
- [data-ui='drawer'][data-dragging][data-side='bottom'] > [data-part='panel'] {
1034
+ [data-ui-drawer][data-dragging][data-side='top'] > [data-part-panel],
1035
+ [data-ui-drawer][data-dragging][data-side='bottom'] > [data-part-panel] {
1056
1036
  will-change: block-size;
1057
1037
  }
1058
1038
 
@@ -1068,7 +1048,7 @@
1068
1048
  * consumer can write: a header, a body and a footer draw two rules; a header
1069
1049
  * and a footer alone draw one; and a panel that is only a body draws none.
1070
1050
  */
1071
- [data-ui='drawer'] > [data-part='panel'] > [data-part='header'] {
1051
+ [data-ui-drawer] > [data-part-panel] > [data-part-header] {
1072
1052
  grid-row: 1;
1073
1053
  display: grid;
1074
1054
  grid-template-columns: minmax(0, 1fr) auto;
@@ -1085,7 +1065,7 @@
1085
1065
  * panel past its own measure, and a panel pinned to an edge then pushes its
1086
1066
  * inner edge across the layer.
1087
1067
  */
1088
- [data-ui='drawer'] > [data-part='panel'] > [data-part='header'] > [data-part='title'] {
1068
+ [data-ui-drawer] > [data-part-panel] > [data-part-header] > [data-part-title] {
1089
1069
  grid-column: 1;
1090
1070
  grid-row: 1;
1091
1071
  margin: 0;
@@ -1104,7 +1084,7 @@
1104
1084
  color: var(--slotted-drawer-title-color, var(--slotted-text, CanvasText));
1105
1085
  }
1106
1086
 
1107
- [data-ui='drawer'] > [data-part='panel'] > [data-part='header'] > [data-part='description'] {
1087
+ [data-ui-drawer] > [data-part-panel] > [data-part-header] > [data-part-description] {
1108
1088
  grid-column: 1;
1109
1089
  grid-row: 2;
1110
1090
  margin: 0;
@@ -1125,7 +1105,7 @@
1125
1105
  * an `icon` box, sized here through the icon token so the box and the
1126
1106
  * formula above read one length.
1127
1107
  */
1128
- [data-ui='drawer'] > [data-part='panel'] > [data-part='header'] > [data-part='close'] {
1108
+ [data-ui-drawer] > [data-part-panel] > [data-part-header] > [data-part-close] {
1129
1109
  --slotted-icon-size: var(--_icon-size);
1130
1110
 
1131
1111
  grid-column: 2;
@@ -1156,21 +1136,21 @@
1156
1136
  is the one a mouse sees: a transparent `::before` centred on the control
1157
1137
  reaches 44 pixels, and the ground and the ring stay square. */
1158
1138
  @media (pointer: coarse) {
1159
- [data-ui='drawer'] > [data-part='panel'] > [data-part='header'] > [data-part='close'] {
1139
+ [data-ui-drawer] > [data-part-panel] > [data-part-header] > [data-part-close] {
1160
1140
  position: relative;
1161
1141
  }
1162
1142
 
1163
- [data-ui='drawer'] > [data-part='panel'] > [data-part='header'] > [data-part='close']::before {
1143
+ [data-ui-drawer] > [data-part-panel] > [data-part-header] > [data-part-close]::before {
1164
1144
  content: '';
1165
1145
  inset: min(0px, calc((100% - var(--slotted-target-comfortable, 44px)) / 2));
1166
1146
  position: absolute;
1167
1147
  }
1168
1148
  }
1169
1149
 
1170
- [data-ui='drawer']
1171
- > [data-part='panel']
1172
- > [data-part='header']
1173
- > [data-part='close']:not(:disabled):hover {
1150
+ [data-ui-drawer]
1151
+ > [data-part-panel]
1152
+ > [data-part-header]
1153
+ > [data-part-close]:not(:disabled):hover {
1174
1154
  /* The ground moves under the pointer and nothing else does (R2). */
1175
1155
  background-color: var(
1176
1156
  --slotted-drawer-close-hover-background,
@@ -1178,20 +1158,17 @@
1178
1158
  );
1179
1159
  }
1180
1160
 
1181
- [data-ui='drawer']
1182
- > [data-part='panel']
1183
- > [data-part='header']
1184
- > [data-part='close']:not(:disabled):active {
1161
+ [data-ui-drawer]
1162
+ > [data-part-panel]
1163
+ > [data-part-header]
1164
+ > [data-part-close]:not(:disabled):active {
1185
1165
  background-color: var(
1186
1166
  --slotted-drawer-close-active-background,
1187
1167
  var(--slotted-tone-secondary-subtle-active)
1188
1168
  );
1189
1169
  }
1190
1170
 
1191
- [data-ui='drawer']
1192
- > [data-part='panel']
1193
- > [data-part='header']
1194
- > [data-part='close']:focus-visible {
1171
+ [data-ui-drawer] > [data-part-panel] > [data-part-header] > [data-part-close]:focus-visible {
1195
1172
  outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);
1196
1173
  outline-offset: calc(-1 * var(--slotted-focus-ring-offset, 2px));
1197
1174
  }
@@ -1204,7 +1181,7 @@
1204
1181
  * `dismissable-layer` covers the modal case; this covers the other two, where
1205
1182
  * the page behind is not locked at all.
1206
1183
  */
1207
- [data-ui='drawer'] > [data-part='panel'] > [data-part='body'] {
1184
+ [data-ui-drawer] > [data-part-panel] > [data-part-body] {
1208
1185
  grid-row: 2;
1209
1186
  min-block-size: 0;
1210
1187
  min-inline-size: 0;
@@ -1221,11 +1198,11 @@
1221
1198
  }
1222
1199
 
1223
1200
  /* Content that brings its own inset — a page, a list on the panel's edges. */
1224
- [data-ui='drawer'] > [data-part='panel'] > [data-part='body'][data-inset='none'] {
1201
+ [data-ui-drawer] > [data-part-panel] > [data-part-body][data-inset='none'] {
1225
1202
  padding: 0;
1226
1203
  }
1227
1204
 
1228
- [data-ui='drawer'] > [data-part='panel'] > [data-part='body']:not(:first-child) {
1205
+ [data-ui-drawer] > [data-part-panel] > [data-part-body]:not(:first-child) {
1229
1206
  border-block-start: var(--_rule-size) solid
1230
1207
  var(--slotted-drawer-rule-color, var(--slotted-border-subtle, ButtonBorder));
1231
1208
  }
@@ -1237,7 +1214,7 @@
1237
1214
  * instead, and the header, the close button, Escape and the resizer all stay
1238
1215
  * operable: a loading drawer a reader cannot leave is the worse failure.
1239
1216
  */
1240
- [data-ui='drawer'][data-loading] > [data-part='panel'] > [data-part='body'] {
1217
+ [data-ui-drawer][data-loading] > [data-part-panel] > [data-part-body] {
1241
1218
  min-block-size: var(--slotted-space-12, 4rem);
1242
1219
  }
1243
1220
 
@@ -1249,7 +1226,7 @@
1249
1226
  * reason the middle one is bounded — an unbounded panel pushes it past the
1250
1227
  * fold, which is the whole failure the three-row grid exists to prevent.
1251
1228
  */
1252
- [data-ui='drawer'] > [data-part='panel'] > [data-part='footer'] {
1229
+ [data-ui-drawer] > [data-part-panel] > [data-part-footer] {
1253
1230
  grid-row: 3;
1254
1231
  display: flex;
1255
1232
  flex-wrap: wrap;
@@ -1274,13 +1251,13 @@
1274
1251
  * above it and the header already clears it; the body scrolls, so an inset on
1275
1252
  * it would be padding inside a scrollport rather than under it.
1276
1253
  */
1277
- [data-ui='drawer'][data-side='bottom'] > [data-part='panel'] > [data-part='footer'] {
1254
+ [data-ui-drawer][data-side='bottom'] > [data-part-panel] > [data-part-footer] {
1278
1255
  padding-block-end: calc(
1279
1256
  var(--_footer-padding-block, var(--_padding-block)) + env(safe-area-inset-bottom, 0px)
1280
1257
  );
1281
1258
  }
1282
1259
 
1283
- [data-ui='drawer'] > [data-part='panel'] > [data-part='footer']:not(:first-child) {
1260
+ [data-ui-drawer] > [data-part-panel] > [data-part-footer]:not(:first-child) {
1284
1261
  border-block-start: var(--_rule-size) solid
1285
1262
  var(--slotted-drawer-rule-color, var(--slotted-border-subtle, ButtonBorder));
1286
1263
  }
@@ -1295,7 +1272,7 @@
1295
1272
  * border is read at, and gives the panel the three edges its side does not.
1296
1273
  */
1297
1274
  @media (forced-colors: active) {
1298
- [data-ui='drawer'] > [data-part='panel'] {
1275
+ [data-ui-drawer] > [data-part-panel] {
1299
1276
  border-width: var(--slotted-border-width-thick, 2px);
1300
1277
  border-color: CanvasText;
1301
1278
  }