@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
@@ -35,7 +35,7 @@
35
35
  * a dialog is the ordinary case, and a descendant rule would paint the inner
36
36
  * panel's header with the outer panel's tone.
37
37
  */
38
- [data-ui='dialog'] {
38
+ [data-ui-dialog] {
39
39
  /**
40
40
  * The panel's measure, per size step. Five named steps rather than the
41
41
  * pixel string Material, Carbon and Ant all take: a theme can retune a
@@ -159,7 +159,7 @@
159
159
  * `data-open` either, and a hidden layer in that frame refuses the focus
160
160
  * scope's initial focus.
161
161
  */
162
- [data-ui='dialog'][inert] {
162
+ [data-ui-dialog][inert] {
163
163
  content-visibility: hidden;
164
164
  pointer-events: none;
165
165
  }
@@ -172,19 +172,19 @@
172
172
  * pointer, and a press on the page is the outside press the dismissal policy
173
173
  * answers.
174
174
  */
175
- [data-ui='dialog']:not([data-modal]) {
175
+ [data-ui-dialog]:not([data-modal]) {
176
176
  pointer-events: none;
177
177
  }
178
178
 
179
- [data-ui='dialog']:not([data-modal]) > [data-part='backdrop'] {
179
+ [data-ui-dialog]:not([data-modal]) > [data-part-backdrop] {
180
180
  visibility: hidden;
181
181
  }
182
182
 
183
- [data-ui='dialog']:not([data-modal]) > [data-part='viewport'] > [data-part='content'] {
183
+ [data-ui-dialog]:not([data-modal]) > [data-part-viewport] > [data-part-content] {
184
184
  pointer-events: auto;
185
185
  }
186
186
 
187
- [data-ui='dialog'][data-size='sm'] {
187
+ [data-ui-dialog][data-size='sm'] {
188
188
  --_measure: var(--slotted-dialog-measure, 24rem);
189
189
  --_padding-inline: var(--slotted-dialog-padding-inline-sm, var(--slotted-space-7, 1.25rem));
190
190
  --_padding-block: var(--slotted-dialog-padding-block-sm, var(--slotted-space-6, 1rem));
@@ -193,11 +193,11 @@
193
193
  --_title-font-size: var(--slotted-font-size-lg, 1rem);
194
194
  }
195
195
 
196
- [data-ui='dialog'][data-size='lg'] {
196
+ [data-ui-dialog][data-size='lg'] {
197
197
  --_measure: var(--slotted-dialog-measure, 42rem);
198
198
  }
199
199
 
200
- [data-ui='dialog'][data-size='xl'] {
200
+ [data-ui-dialog][data-size='xl'] {
201
201
  --_measure: var(--slotted-dialog-measure, 56rem);
202
202
  }
203
203
 
@@ -205,7 +205,7 @@
205
205
  * `full` is the step a dialog that is a document takes: the panel spends the
206
206
  * whole layer minus its padding, and the measure stops capping it.
207
207
  */
208
- [data-ui='dialog'][data-size='full'] {
208
+ [data-ui-dialog][data-size='full'] {
209
209
  --_measure: var(--slotted-dialog-measure, none);
210
210
  }
211
211
 
@@ -218,7 +218,7 @@
218
218
  * is `none` in that mode, and a panel separated only by elevation would sit
219
219
  * on an opaque ground with nothing to mark its edge.
220
220
  */
221
- [data-ui='dialog'] > [data-part='backdrop'] {
221
+ [data-ui-dialog] > [data-part-backdrop] {
222
222
  grid-area: 1 / 1;
223
223
  background: var(--slotted-dialog-scrim, var(--slotted-scrim, Canvas));
224
224
  opacity: 0;
@@ -238,7 +238,7 @@
238
238
  * The panel below arrives over the same duration and the same curve, so the
239
239
  * two halves of one layer arrive together.
240
240
  */
241
- [data-ui='dialog'][data-open] > [data-part='backdrop'] {
241
+ [data-ui-dialog][data-open] > [data-part-backdrop] {
242
242
  opacity: 1;
243
243
  transition: opacity var(--slotted-duration-long) var(--slotted-easing-standard);
244
244
  }
@@ -252,7 +252,7 @@
252
252
  * start edge as soon as the item cannot fit, which is the only reading that
253
253
  * keeps the title reachable at 200% zoom and in a short window.
254
254
  */
255
- [data-ui='dialog'] > [data-part='viewport'] {
255
+ [data-ui-dialog] > [data-part-viewport] {
256
256
  grid-area: 1 / 1;
257
257
  display: grid;
258
258
  grid-template-columns: minmax(0, 1fr);
@@ -272,7 +272,7 @@
272
272
  overscroll-behavior: contain;
273
273
  }
274
274
 
275
- [data-ui='dialog'][data-placement='top'] > [data-part='viewport'] {
275
+ [data-ui-dialog][data-placement='top'] > [data-part-viewport] {
276
276
  align-content: safe start;
277
277
  }
278
278
 
@@ -284,7 +284,7 @@
284
284
  */
285
285
  /* ── The panel ────────────────────────────────────────────────────────── */
286
286
 
287
- [data-ui='dialog'] > [data-part='viewport'] > [data-part='content'] {
287
+ [data-ui-dialog] > [data-part-viewport] > [data-part-content] {
288
288
  /**
289
289
  * The inset the rows carry, stated where a layout of the consumer's own can
290
290
  * read it: the panel draws no padding, so content written straight inside
@@ -368,7 +368,7 @@
368
368
  * the edge it sits on, and it is on the same rule now for the same reason:
369
369
  * the type inside it is what the slide was resampling (DG4).
370
370
  */
371
- [data-ui='dialog'][data-open] > [data-part='viewport'] > [data-part='content'] {
371
+ [data-ui-dialog][data-open] > [data-part-viewport] > [data-part-content] {
372
372
  opacity: 1;
373
373
  transition: opacity var(--slotted-duration-long) var(--slotted-easing-standard);
374
374
  }
@@ -382,10 +382,20 @@
382
382
  * travelling, and there is no travel to stop (DG4).
383
383
  */
384
384
 
385
- [data-ui='dialog'][data-scroll='viewport'] > [data-part='viewport'] > [data-part='content'] {
385
+ [data-ui-dialog][data-scroll='viewport'] > [data-part-viewport] > [data-part-content] {
386
386
  max-block-size: none;
387
387
  }
388
388
 
389
+ /**
390
+ * A form written around the header, the body and the footer, so Enter in
391
+ * any field and the footer's submit belong to one form. It draws no box:
392
+ * its children are the panel's rows, and every rule of a part is written a
393
+ * second time through it, so the parts keep the panel's inset and rows.
394
+ */
395
+ [data-ui-dialog] > [data-part-viewport] > [data-part-content] > form {
396
+ display: contents;
397
+ }
398
+
389
399
  /* ── The header ───────────────────────────────────────────────────────── */
390
400
 
391
401
  /**
@@ -409,7 +419,8 @@
409
419
  * `interpolate-size`. The cost is a rule over a footer that sometimes has
410
420
  * nothing above it to separate.
411
421
  */
412
- [data-ui='dialog'] > [data-part='viewport'] > [data-part='content'] > [data-part='header'] {
422
+ [data-ui-dialog] > [data-part-viewport] > [data-part-content] > form > [data-part-header],
423
+ [data-ui-dialog] > [data-part-viewport] > [data-part-content] > [data-part-header] {
413
424
  display: grid;
414
425
  grid-template-columns: auto minmax(0, 1fr) auto auto;
415
426
  align-items: start;
@@ -434,16 +445,28 @@
434
445
  * where the mark would have gone, and moved as soon as a tone was set. Where
435
446
  * it goes is now a rule rather than an accident of the grid.
436
447
  */
437
- [data-ui='dialog']
438
- > [data-part='viewport']
439
- > [data-part='content']
440
- > [data-part='header']
448
+ [data-ui-dialog]
449
+ > [data-part-viewport]
450
+ > [data-part-content]
451
+ > form
452
+ > [data-part-header]
453
+ > *:not(
454
+ [data-part-icon],
455
+ [data-part-title],
456
+ [data-part-description],
457
+ [data-part-fullscreen],
458
+ [data-part-close]
459
+ ),
460
+ [data-ui-dialog]
461
+ > [data-part-viewport]
462
+ > [data-part-content]
463
+ > [data-part-header]
441
464
  > *:not(
442
- [data-part='icon'],
443
- [data-part='title'],
444
- [data-part='description'],
445
- [data-part='fullscreen'],
446
- [data-part='close']
465
+ [data-part-icon],
466
+ [data-part-title],
467
+ [data-part-description],
468
+ [data-part-fullscreen],
469
+ [data-part-close]
447
470
  ) {
448
471
  grid-column: 2;
449
472
  /**
@@ -466,11 +489,17 @@
466
489
  * colours every tone becomes one system colour and the silhouette is all
467
490
  * that is left.
468
491
  */
469
- [data-ui='dialog']
470
- > [data-part='viewport']
471
- > [data-part='content']
472
- > [data-part='header']
473
- > [data-part='icon'] {
492
+ [data-ui-dialog]
493
+ > [data-part-viewport]
494
+ > [data-part-content]
495
+ > form
496
+ > [data-part-header]
497
+ > [data-part-icon],
498
+ [data-ui-dialog]
499
+ > [data-part-viewport]
500
+ > [data-part-content]
501
+ > [data-part-header]
502
+ > [data-part-icon] {
474
503
  --slotted-icon-size: var(--_status-size);
475
504
 
476
505
  grid-column: 1;
@@ -491,23 +520,23 @@
491
520
  margin-inline-end: var(--_mark-gap);
492
521
  }
493
522
 
494
- [data-ui='dialog'][data-tone='accent'] {
523
+ [data-ui-dialog][data-tone='accent'] {
495
524
  --_tone-color: var(--slotted-tone-accent-text, CanvasText);
496
525
  }
497
526
 
498
- [data-ui='dialog'][data-tone='secondary'] {
527
+ [data-ui-dialog][data-tone='secondary'] {
499
528
  --_tone-color: var(--slotted-tone-secondary-text, CanvasText);
500
529
  }
501
530
 
502
- [data-ui='dialog'][data-tone='success'] {
531
+ [data-ui-dialog][data-tone='success'] {
503
532
  --_tone-color: var(--slotted-tone-success-text, CanvasText);
504
533
  }
505
534
 
506
- [data-ui='dialog'][data-tone='warning'] {
535
+ [data-ui-dialog][data-tone='warning'] {
507
536
  --_tone-color: var(--slotted-tone-warning-text, CanvasText);
508
537
  }
509
538
 
510
- [data-ui='dialog'][data-tone='danger'] {
539
+ [data-ui-dialog][data-tone='danger'] {
511
540
  --_tone-color: var(--slotted-tone-danger-text, CanvasText);
512
541
  }
513
542
 
@@ -519,11 +548,17 @@
519
548
  * panel past the layer, and the panel is centred, so both of its edges leave
520
549
  * the screen at once.
521
550
  */
522
- [data-ui='dialog']
523
- > [data-part='viewport']
524
- > [data-part='content']
525
- > [data-part='header']
526
- > [data-part='title'] {
551
+ [data-ui-dialog]
552
+ > [data-part-viewport]
553
+ > [data-part-content]
554
+ > form
555
+ > [data-part-header]
556
+ > [data-part-title],
557
+ [data-ui-dialog]
558
+ > [data-part-viewport]
559
+ > [data-part-content]
560
+ > [data-part-header]
561
+ > [data-part-title] {
527
562
  grid-column: 2;
528
563
  grid-row: 1;
529
564
  margin: 0;
@@ -542,11 +577,17 @@
542
577
  color: var(--slotted-dialog-title-color, var(--slotted-text, CanvasText));
543
578
  }
544
579
 
545
- [data-ui='dialog']
546
- > [data-part='viewport']
547
- > [data-part='content']
548
- > [data-part='header']
549
- > [data-part='description'] {
580
+ [data-ui-dialog]
581
+ > [data-part-viewport]
582
+ > [data-part-content]
583
+ > form
584
+ > [data-part-header]
585
+ > [data-part-description],
586
+ [data-ui-dialog]
587
+ > [data-part-viewport]
588
+ > [data-part-content]
589
+ > [data-part-header]
590
+ > [data-part-description] {
550
591
  grid-column: 2;
551
592
  grid-row: 2;
552
593
  margin: 0;
@@ -565,11 +606,18 @@
565
606
  * weight instead, which is what both product confirmations in the survey do
566
607
  * with a span of their own.
567
608
  */
568
- [data-ui='dialog']
569
- > [data-part='viewport']
570
- > [data-part='content']
571
- > [data-part='header']
572
- > [data-part='description']
609
+ [data-ui-dialog]
610
+ > [data-part-viewport]
611
+ > [data-part-content]
612
+ > form
613
+ > [data-part-header]
614
+ > [data-part-description]
615
+ :is(strong, b),
616
+ [data-ui-dialog]
617
+ > [data-part-viewport]
618
+ > [data-part-content]
619
+ > [data-part-header]
620
+ > [data-part-description]
573
621
  :is(strong, b) {
574
622
  font-weight: var(--slotted-font-weight-semibold, 600);
575
623
  color: var(--slotted-dialog-title-color, var(--slotted-text, CanvasText));
@@ -585,11 +633,17 @@
585
633
  * in an `icon` box, sized here through the icon token so the box and the
586
634
  * formula above read one length.
587
635
  */
588
- [data-ui='dialog']
589
- > [data-part='viewport']
590
- > [data-part='content']
591
- > [data-part='header']
592
- > [data-part='close'] {
636
+ [data-ui-dialog]
637
+ > [data-part-viewport]
638
+ > [data-part-content]
639
+ > form
640
+ > [data-part-header]
641
+ > [data-part-close],
642
+ [data-ui-dialog]
643
+ > [data-part-viewport]
644
+ > [data-part-content]
645
+ > [data-part-header]
646
+ > [data-part-close] {
593
647
  --slotted-icon-size: var(--_icon-size);
594
648
 
595
649
  grid-column: 4;
@@ -617,11 +671,17 @@
617
671
  var(--slotted-control-transition-easing, var(--slotted-easing-standard));
618
672
  }
619
673
 
620
- [data-ui='dialog']
621
- > [data-part='viewport']
622
- > [data-part='content']
623
- > [data-part='header']
624
- > [data-part='close']:not(:disabled):hover {
674
+ [data-ui-dialog]
675
+ > [data-part-viewport]
676
+ > [data-part-content]
677
+ > form
678
+ > [data-part-header]
679
+ > [data-part-close]:not(:disabled):hover,
680
+ [data-ui-dialog]
681
+ > [data-part-viewport]
682
+ > [data-part-content]
683
+ > [data-part-header]
684
+ > [data-part-close]:not(:disabled):hover {
625
685
  /* The ground moves under the pointer and nothing else does (R2). */
626
686
  background-color: var(
627
687
  --slotted-dialog-close-hover-background,
@@ -629,22 +689,34 @@
629
689
  );
630
690
  }
631
691
 
632
- [data-ui='dialog']
633
- > [data-part='viewport']
634
- > [data-part='content']
635
- > [data-part='header']
636
- > [data-part='close']:not(:disabled):active {
692
+ [data-ui-dialog]
693
+ > [data-part-viewport]
694
+ > [data-part-content]
695
+ > form
696
+ > [data-part-header]
697
+ > [data-part-close]:not(:disabled):active,
698
+ [data-ui-dialog]
699
+ > [data-part-viewport]
700
+ > [data-part-content]
701
+ > [data-part-header]
702
+ > [data-part-close]:not(:disabled):active {
637
703
  background-color: var(
638
704
  --slotted-dialog-close-active-background,
639
705
  var(--slotted-tone-secondary-subtle-active)
640
706
  );
641
707
  }
642
708
 
643
- [data-ui='dialog']
644
- > [data-part='viewport']
645
- > [data-part='content']
646
- > [data-part='header']
647
- > [data-part='close']:focus-visible {
709
+ [data-ui-dialog]
710
+ > [data-part-viewport]
711
+ > [data-part-content]
712
+ > form
713
+ > [data-part-header]
714
+ > [data-part-close]:focus-visible,
715
+ [data-ui-dialog]
716
+ > [data-part-viewport]
717
+ > [data-part-content]
718
+ > [data-part-header]
719
+ > [data-part-close]:focus-visible {
648
720
  outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);
649
721
  outline-offset: calc(-1 * var(--slotted-focus-ring-offset, 2px));
650
722
  }
@@ -665,11 +737,17 @@
665
737
  * glyph is the binding's, chosen from the state: the mark says what the
666
738
  * press does next, so it is the opposite of the state the panel is in.
667
739
  */
668
- [data-ui='dialog']
669
- > [data-part='viewport']
670
- > [data-part='content']
671
- > [data-part='header']
672
- > [data-part='fullscreen'] {
740
+ [data-ui-dialog]
741
+ > [data-part-viewport]
742
+ > [data-part-content]
743
+ > form
744
+ > [data-part-header]
745
+ > [data-part-fullscreen],
746
+ [data-ui-dialog]
747
+ > [data-part-viewport]
748
+ > [data-part-content]
749
+ > [data-part-header]
750
+ > [data-part-fullscreen] {
673
751
  --slotted-icon-size: var(--_icon-size);
674
752
 
675
753
  grid-column: 3;
@@ -700,20 +778,33 @@
700
778
  * glyph on every side, and a second gap between them would set them further
701
779
  * apart than either is from the words.
702
780
  */
703
- [data-ui='dialog']
704
- > [data-part='viewport']
705
- > [data-part='content']
706
- > [data-part='header']
707
- > [data-part='fullscreen']
708
- + [data-part='close'] {
781
+ [data-ui-dialog]
782
+ > [data-part-viewport]
783
+ > [data-part-content]
784
+ > form
785
+ > [data-part-header]
786
+ > [data-part-fullscreen]
787
+ + [data-part-close],
788
+ [data-ui-dialog]
789
+ > [data-part-viewport]
790
+ > [data-part-content]
791
+ > [data-part-header]
792
+ > [data-part-fullscreen]
793
+ + [data-part-close] {
709
794
  margin-inline-start: 0;
710
795
  }
711
796
 
712
- [data-ui='dialog']
713
- > [data-part='viewport']
714
- > [data-part='content']
715
- > [data-part='header']
716
- > [data-part='fullscreen']:not(:disabled):hover {
797
+ [data-ui-dialog]
798
+ > [data-part-viewport]
799
+ > [data-part-content]
800
+ > form
801
+ > [data-part-header]
802
+ > [data-part-fullscreen]:not(:disabled):hover,
803
+ [data-ui-dialog]
804
+ > [data-part-viewport]
805
+ > [data-part-content]
806
+ > [data-part-header]
807
+ > [data-part-fullscreen]:not(:disabled):hover {
717
808
  /* The ground moves under the pointer and nothing else does (R2). */
718
809
  background-color: var(
719
810
  --slotted-dialog-close-hover-background,
@@ -721,22 +812,34 @@
721
812
  );
722
813
  }
723
814
 
724
- [data-ui='dialog']
725
- > [data-part='viewport']
726
- > [data-part='content']
727
- > [data-part='header']
728
- > [data-part='fullscreen']:not(:disabled):active {
815
+ [data-ui-dialog]
816
+ > [data-part-viewport]
817
+ > [data-part-content]
818
+ > form
819
+ > [data-part-header]
820
+ > [data-part-fullscreen]:not(:disabled):active,
821
+ [data-ui-dialog]
822
+ > [data-part-viewport]
823
+ > [data-part-content]
824
+ > [data-part-header]
825
+ > [data-part-fullscreen]:not(:disabled):active {
729
826
  background-color: var(
730
827
  --slotted-dialog-close-active-background,
731
828
  var(--slotted-tone-secondary-subtle-active)
732
829
  );
733
830
  }
734
831
 
735
- [data-ui='dialog']
736
- > [data-part='viewport']
737
- > [data-part='content']
738
- > [data-part='header']
739
- > [data-part='fullscreen']:focus-visible {
832
+ [data-ui-dialog]
833
+ > [data-part-viewport]
834
+ > [data-part-content]
835
+ > form
836
+ > [data-part-header]
837
+ > [data-part-fullscreen]:focus-visible,
838
+ [data-ui-dialog]
839
+ > [data-part-viewport]
840
+ > [data-part-content]
841
+ > [data-part-header]
842
+ > [data-part-fullscreen]:focus-visible {
740
843
  outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);
741
844
  outline-offset: calc(-1 * var(--slotted-focus-ring-offset, 2px));
742
845
  }
@@ -748,38 +851,63 @@
748
851
  * controls touch, so neither reaches across the edge they share.
749
852
  */
750
853
  @media (pointer: coarse) {
751
- [data-ui='dialog']
752
- > [data-part='viewport']
753
- > [data-part='content']
754
- > [data-part='header']
755
- > :is([data-part='close'], [data-part='fullscreen']) {
854
+ [data-ui-dialog]
855
+ > [data-part-viewport]
856
+ > [data-part-content]
857
+ > form
858
+ > [data-part-header]
859
+ > :is([data-part-close], [data-part-fullscreen]),
860
+ [data-ui-dialog]
861
+ > [data-part-viewport]
862
+ > [data-part-content]
863
+ > [data-part-header]
864
+ > :is([data-part-close], [data-part-fullscreen]) {
756
865
  position: relative;
757
866
  }
758
867
 
759
- [data-ui='dialog']
760
- > [data-part='viewport']
761
- > [data-part='content']
762
- > [data-part='header']
763
- > :is([data-part='close'], [data-part='fullscreen'])::before {
868
+ [data-ui-dialog]
869
+ > [data-part-viewport]
870
+ > [data-part-content]
871
+ > form
872
+ > [data-part-header]
873
+ > :is([data-part-close], [data-part-fullscreen])::before,
874
+ [data-ui-dialog]
875
+ > [data-part-viewport]
876
+ > [data-part-content]
877
+ > [data-part-header]
878
+ > :is([data-part-close], [data-part-fullscreen])::before {
764
879
  content: '';
765
880
  inset: min(0px, calc((100% - var(--slotted-target-comfortable, 44px)) / 2));
766
881
  position: absolute;
767
882
  }
768
883
 
769
- [data-ui='dialog']
770
- > [data-part='viewport']
771
- > [data-part='content']
772
- > [data-part='header']
773
- > [data-part='fullscreen']:has(+ [data-part='close'])::before {
884
+ [data-ui-dialog]
885
+ > [data-part-viewport]
886
+ > [data-part-content]
887
+ > form
888
+ > [data-part-header]
889
+ > [data-part-fullscreen]:has(+ [data-part-close])::before,
890
+ [data-ui-dialog]
891
+ > [data-part-viewport]
892
+ > [data-part-content]
893
+ > [data-part-header]
894
+ > [data-part-fullscreen]:has(+ [data-part-close])::before {
774
895
  inset-inline-end: 0;
775
896
  }
776
897
 
777
- [data-ui='dialog']
778
- > [data-part='viewport']
779
- > [data-part='content']
780
- > [data-part='header']
781
- > [data-part='fullscreen']
782
- + [data-part='close']::before {
898
+ [data-ui-dialog]
899
+ > [data-part-viewport]
900
+ > [data-part-content]
901
+ > form
902
+ > [data-part-header]
903
+ > [data-part-fullscreen]
904
+ + [data-part-close]::before,
905
+ [data-ui-dialog]
906
+ > [data-part-viewport]
907
+ > [data-part-content]
908
+ > [data-part-header]
909
+ > [data-part-fullscreen]
910
+ + [data-part-close]::before {
783
911
  inset-inline-start: 0;
784
912
  }
785
913
  }
@@ -792,15 +920,21 @@
792
920
  * `dismissable-layer` covers the modal case; this covers the non-modal one,
793
921
  * where the page behind is not locked at all.
794
922
  */
795
- [data-ui='dialog']
796
- > [data-part='viewport']
797
- > [data-part='content']
798
- > [data-part='body']:not(:first-child) {
923
+ [data-ui-dialog]
924
+ > [data-part-viewport]
925
+ > [data-part-content]
926
+ > form
927
+ > [data-part-body]:not(:first-child),
928
+ [data-ui-dialog]
929
+ > [data-part-viewport]
930
+ > [data-part-content]
931
+ > [data-part-body]:not(:first-child) {
799
932
  border-block-start: var(--_rule-size) solid
800
933
  var(--slotted-dialog-rule-color, var(--slotted-border-subtle, ButtonBorder));
801
934
  }
802
935
 
803
- [data-ui='dialog'] > [data-part='viewport'] > [data-part='content'] > [data-part='body'] {
936
+ [data-ui-dialog] > [data-part-viewport] > [data-part-content] > form > [data-part-body],
937
+ [data-ui-dialog] > [data-part-viewport] > [data-part-content] > [data-part-body] {
804
938
  min-block-size: 0;
805
939
  overflow-x: hidden;
806
940
  overflow-y: auto;
@@ -814,10 +948,15 @@
814
948
  color: var(--slotted-dialog-body-color, var(--slotted-text, CanvasText));
815
949
  }
816
950
 
817
- [data-ui='dialog'][data-scroll='viewport']
818
- > [data-part='viewport']
819
- > [data-part='content']
820
- > [data-part='body'] {
951
+ [data-ui-dialog][data-scroll='viewport']
952
+ > [data-part-viewport]
953
+ > [data-part-content]
954
+ > form
955
+ > [data-part-body],
956
+ [data-ui-dialog][data-scroll='viewport']
957
+ > [data-part-viewport]
958
+ > [data-part-content]
959
+ > [data-part-body] {
821
960
  overflow: visible;
822
961
  }
823
962
 
@@ -828,10 +967,12 @@
828
967
  * header, the close button and Escape all stay operable: a loading dialog a
829
968
  * reader cannot leave is the worse failure of the two.
830
969
  */
831
- [data-ui='dialog'][data-loading]
832
- > [data-part='viewport']
833
- > [data-part='content']
834
- > [data-part='body'] {
970
+ [data-ui-dialog][data-loading]
971
+ > [data-part-viewport]
972
+ > [data-part-content]
973
+ > form
974
+ > [data-part-body],
975
+ [data-ui-dialog][data-loading] > [data-part-viewport] > [data-part-content] > [data-part-body] {
835
976
  min-block-size: var(--slotted-space-12, 4rem);
836
977
  }
837
978
 
@@ -843,7 +984,8 @@
843
984
  * reason `content` is bounded — an unbounded panel pushes it past the fold,
844
985
  * which is the whole failure the three-row grid exists to prevent.
845
986
  */
846
- [data-ui='dialog'] > [data-part='viewport'] > [data-part='content'] > [data-part='footer'] {
987
+ [data-ui-dialog] > [data-part-viewport] > [data-part-content] > form > [data-part-footer],
988
+ [data-ui-dialog] > [data-part-viewport] > [data-part-content] > [data-part-footer] {
847
989
  display: flex;
848
990
  flex-wrap: wrap;
849
991
  align-items: center;
@@ -854,10 +996,15 @@
854
996
  background: var(--slotted-dialog-footer-surface, var(--slotted-surface-sunken, Canvas));
855
997
  }
856
998
 
857
- [data-ui='dialog']
858
- > [data-part='viewport']
859
- > [data-part='content']
860
- > [data-part='footer']:not(:first-child) {
999
+ [data-ui-dialog]
1000
+ > [data-part-viewport]
1001
+ > [data-part-content]
1002
+ > form
1003
+ > [data-part-footer]:not(:first-child),
1004
+ [data-ui-dialog]
1005
+ > [data-part-viewport]
1006
+ > [data-part-content]
1007
+ > [data-part-footer]:not(:first-child) {
861
1008
  border-block-start: var(--_rule-size) solid
862
1009
  var(--slotted-dialog-rule-color, var(--slotted-border-subtle, ButtonBorder));
863
1010
  }
@@ -885,7 +1032,7 @@
885
1032
  * writes their own three-row grid, which is the whole of what they are taking
886
1033
  * over.
887
1034
  */
888
- [data-ui='dialog'][data-surface='plain'] > [data-part='viewport'] > [data-part='content'] {
1035
+ [data-ui-dialog][data-surface='plain'] > [data-part-viewport] > [data-part-content] {
889
1036
  display: block;
890
1037
  background: none;
891
1038
  border: 0;
@@ -894,10 +1041,15 @@
894
1041
  overflow: visible;
895
1042
  }
896
1043
 
897
- [data-ui='dialog'][data-surface='plain']
898
- > [data-part='viewport']
899
- > [data-part='content']
900
- > :is([data-part='header'], [data-part='body'], [data-part='footer']) {
1044
+ [data-ui-dialog][data-surface='plain']
1045
+ > [data-part-viewport]
1046
+ > [data-part-content]
1047
+ > form
1048
+ > :is([data-part-header], [data-part-body], [data-part-footer]),
1049
+ [data-ui-dialog][data-surface='plain']
1050
+ > [data-part-viewport]
1051
+ > [data-part-content]
1052
+ > :is([data-part-header], [data-part-body], [data-part-footer]) {
901
1053
  background: none;
902
1054
  border: 0;
903
1055
  padding: 0;
@@ -922,12 +1074,12 @@
922
1074
  * a literal because `@container (max-inline-size: var(--x))` is invalid CSS.
923
1075
  */
924
1076
  @container slotted-dialog (max-inline-size: 30rem) {
925
- [data-ui='dialog'][data-full-screen='narrow'] > [data-part='viewport'] {
1077
+ [data-ui-dialog][data-full-screen='narrow'] > [data-part-viewport] {
926
1078
  align-content: stretch;
927
1079
  padding: 0;
928
1080
  }
929
1081
 
930
- [data-ui='dialog'][data-full-screen='narrow'] > [data-part='viewport'] > [data-part='content'] {
1082
+ [data-ui-dialog][data-full-screen='narrow'] > [data-part-viewport] > [data-part-content] {
931
1083
  max-inline-size: none;
932
1084
  block-size: 100%;
933
1085
  border-radius: 0;
@@ -945,14 +1097,14 @@
945
1097
  * owns both — a panel that animated its own box would animate `inset`,
946
1098
  * `inline-size` and `block-size`, which is the rule R7 exists to state.
947
1099
  */
948
- [data-ui='dialog'][data-full-screen='always'] > [data-part='viewport'],
949
- [data-ui='dialog'][data-fullscreen] > [data-part='viewport'] {
1100
+ [data-ui-dialog][data-full-screen='always'] > [data-part-viewport],
1101
+ [data-ui-dialog][data-fullscreen] > [data-part-viewport] {
950
1102
  align-content: stretch;
951
1103
  padding: 0;
952
1104
  }
953
1105
 
954
- [data-ui='dialog'][data-full-screen='always'] > [data-part='viewport'] > [data-part='content'],
955
- [data-ui='dialog'][data-fullscreen] > [data-part='viewport'] > [data-part='content'] {
1106
+ [data-ui-dialog][data-full-screen='always'] > [data-part-viewport] > [data-part-content],
1107
+ [data-ui-dialog][data-fullscreen] > [data-part-viewport] > [data-part-content] {
956
1108
  max-inline-size: none;
957
1109
  block-size: 100%;
958
1110
  border-radius: 0;
@@ -985,7 +1137,7 @@
985
1137
  * a system border is read at.
986
1138
  */
987
1139
  @media (forced-colors: active) {
988
- [data-ui='dialog'] > [data-part='viewport'] > [data-part='content'] {
1140
+ [data-ui-dialog] > [data-part-viewport] > [data-part-content] {
989
1141
  border-color: CanvasText;
990
1142
  border-width: var(--slotted-border-width-thick, 2px);
991
1143
  }