@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
@@ -11,7 +11,7 @@
11
11
  * its own `container-name`, so a paginator nested inside another family's
12
12
  * container answers its own inline size and not that one's.
13
13
  */
14
- [data-ui='pagination'] {
14
+ [data-ui-pagination] {
15
15
  --_target: var(--slotted-pagination-target, var(--slotted-control-height-md, 34px));
16
16
  --_radius: var(--slotted-pagination-radius, var(--slotted-control-radius, 4px));
17
17
  --_muted: var(--slotted-pagination-color-muted, var(--slotted-text-muted, GrayText));
@@ -54,7 +54,7 @@
54
54
  * figures are tabular.
55
55
  */
56
56
 
57
- [data-ui='pagination'] [data-part='list'] {
57
+ [data-ui-pagination] [data-part-list] {
58
58
  align-items: center;
59
59
  column-gap: var(--slotted-pagination-item-gap, var(--slotted-space-1, 0.125rem));
60
60
  display: flex;
@@ -63,42 +63,41 @@
63
63
  padding: 0;
64
64
  }
65
65
 
66
- [data-ui='pagination'] [data-part='item'] {
66
+ [data-ui-pagination] [data-part-item] {
67
67
  display: flex;
68
68
  }
69
69
 
70
- [data-ui='pagination']
71
- :is([data-part='status'], [data-part='summary'], [data-part='page-size-label']) {
70
+ [data-ui-pagination] :is([data-part-status], [data-part-summary], [data-part-page-size-label]) {
72
71
  margin-inline: var(--slotted-pagination-text-gap, var(--slotted-space-4, 0.5rem));
73
72
  }
74
73
 
75
74
  /* The air belongs between things, never against the family's own edge. */
76
- [data-ui='pagination']
77
- :is([data-part='status'], [data-part='summary'], [data-part='page-size-label']):first-child {
75
+ [data-ui-pagination]
76
+ :is([data-part-status], [data-part-summary], [data-part-page-size-label]):first-child {
78
77
  margin-inline-start: 0;
79
78
  }
80
79
 
81
- [data-ui='pagination']
82
- :is([data-part='status'], [data-part='summary'], [data-part='page-size-label']):last-child {
80
+ [data-ui-pagination]
81
+ :is([data-part-status], [data-part-summary], [data-part-page-size-label]):last-child {
83
82
  margin-inline-end: 0;
84
83
  }
85
84
 
86
85
  /* Two sentences side by side share one step of air, not two: the page
87
86
  size's label and the range read eighteen pixels apart while the range
88
87
  and the trigger read ten. */
89
- [data-ui='pagination']
90
- :is([data-part='status'], [data-part='summary'], [data-part='page-size-label'])
91
- + :is([data-part='status'], [data-part='summary'], [data-part='page-size-label']) {
88
+ [data-ui-pagination]
89
+ :is([data-part-status], [data-part-summary], [data-part-page-size-label])
90
+ + :is([data-part-status], [data-part-summary], [data-part-page-size-label]) {
92
91
  margin-inline-start: 0;
93
92
  }
94
93
 
95
- [data-ui='pagination']
94
+ [data-ui-pagination]
96
95
  :is(
97
- [data-part='page'],
98
- [data-part='first'],
99
- [data-part='previous'],
100
- [data-part='next'],
101
- [data-part='last']
96
+ [data-part-page],
97
+ [data-part-first],
98
+ [data-part-previous],
99
+ [data-part-next],
100
+ [data-part-last]
102
101
  ) {
103
102
  align-items: center;
104
103
  appearance: none;
@@ -137,7 +136,7 @@
137
136
  * as unavailable, which is the difference this family needs to keep for the
138
137
  * trigger that actually is.
139
138
  */
140
- [data-ui='pagination'] [data-part='page']:not([aria-current]:not([aria-current='false'])) {
139
+ [data-ui-pagination] [data-part-page]:not([aria-current]:not([aria-current='false'])) {
141
140
  color: var(--_muted);
142
141
  }
143
142
 
@@ -150,7 +149,7 @@
150
149
  * of pagination links — so what a screen reader announces and what the eye
151
150
  * sees are one fact rather than two.
152
151
  */
153
- [data-ui='pagination'] [data-part='page'][aria-current]:not([aria-current='false']) {
152
+ [data-ui-pagination] [data-part-page][aria-current]:not([aria-current='false']) {
154
153
  background-color: var(
155
154
  --slotted-pagination-current-surface,
156
155
  var(--slotted-tone-accent-solid, Highlight)
@@ -171,38 +170,38 @@
171
170
  * different page.
172
171
  */
173
172
 
174
- [data-ui='pagination']
173
+ [data-ui-pagination]
175
174
  :is(
176
- [data-part='page'],
177
- [data-part='first'],
178
- [data-part='previous'],
179
- [data-part='next'],
180
- [data-part='last']
175
+ [data-part-page],
176
+ [data-part-first],
177
+ [data-part-previous],
178
+ [data-part-next],
179
+ [data-part-last]
181
180
  ):not([data-disabled], [data-loading], [aria-current]:not([aria-current='false'])):hover {
182
181
  background-color: var(--_hover-surface);
183
182
  color: var(--_strong);
184
183
  }
185
184
 
186
- [data-ui='pagination']
185
+ [data-ui-pagination]
187
186
  :is(
188
- [data-part='page'],
189
- [data-part='first'],
190
- [data-part='previous'],
191
- [data-part='next'],
192
- [data-part='last']
187
+ [data-part-page],
188
+ [data-part-first],
189
+ [data-part-previous],
190
+ [data-part-next],
191
+ [data-part-last]
193
192
  ):not([data-disabled], [data-loading], [aria-current]:not([aria-current='false'])):active {
194
193
  background-color: var(--_active-surface);
195
194
  color: var(--_strong);
196
195
  }
197
196
 
198
- [data-ui='pagination']
197
+ [data-ui-pagination]
199
198
  :is(
200
- [data-part='page'],
201
- [data-part='first'],
202
- [data-part='previous'],
203
- [data-part='next'],
204
- [data-part='last'],
205
- [data-part='page-size']
199
+ [data-part-page],
200
+ [data-part-first],
201
+ [data-part-previous],
202
+ [data-part-next],
203
+ [data-part-last],
204
+ [data-part-page-size]
206
205
  ):focus-visible {
207
206
  outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);
208
207
  outline-offset: var(--slotted-focus-ring-offset, 2px);
@@ -215,11 +214,11 @@
215
214
  * destination the binding did not render, which is the shape `link` already
216
215
  * ships and the only one that stops a middle click as well as a left one.
217
216
  */
218
- [data-ui='pagination'] :is([data-disabled], [data-loading]) {
217
+ [data-ui-pagination] :is([data-disabled], [data-loading]) {
219
218
  color: var(--slotted-pagination-color-disabled, var(--slotted-disabled-foreground, GrayText));
220
219
  }
221
220
 
222
- [data-ui='pagination'] [data-disabled] {
221
+ [data-ui-pagination] [data-disabled] {
223
222
  cursor: not-allowed;
224
223
  }
225
224
 
@@ -230,11 +229,8 @@
230
229
  * `STATE_PRECEDENCE` — a saturated chip inside a grey row reads as the one
231
230
  * thing still operable, which is exactly backwards.
232
231
  */
233
- [data-ui='pagination']
234
- [data-part='page'][aria-current]:not([aria-current='false']):is(
235
- [data-disabled],
236
- [data-loading]
237
- ) {
232
+ [data-ui-pagination]
233
+ [data-part-page][aria-current]:not([aria-current='false']):is([data-disabled], [data-loading]) {
238
234
  background-color: var(--slotted-disabled-background, Canvas);
239
235
  color: var(--slotted-disabled-foreground, GrayText);
240
236
  }
@@ -244,7 +240,7 @@
244
240
  * paginator that emptied itself while loading would move the control the
245
241
  * reader is about to press again.
246
242
  */
247
- [data-ui='pagination'] [data-loading] {
243
+ [data-ui-pagination] [data-loading] {
248
244
  cursor: progress;
249
245
  }
250
246
 
@@ -256,7 +252,7 @@
256
252
  * content, and omitted content is exactly what it holds. It is announced to
257
253
  * nobody, which is what Zag, MUI and Primer all ship.
258
254
  */
259
- [data-ui='pagination'] [data-part='ellipsis'] {
255
+ [data-ui-pagination] [data-part-ellipsis] {
260
256
  align-items: center;
261
257
  block-size: var(--_target);
262
258
  color: var(--_muted);
@@ -289,12 +285,12 @@
289
285
  * compose, and a chevron turned half a turn is the chevron flipped.
290
286
  */
291
287
 
292
- [data-ui='pagination']
293
- :is([data-part='first'], [data-part='previous'], [data-part='next'], [data-part='last']) {
288
+ [data-ui-pagination]
289
+ :is([data-part-first], [data-part-previous], [data-part-next], [data-part-last]) {
294
290
  --slotted-icon-size: var(--_glyph);
295
291
  }
296
292
 
297
- [data-ui='pagination'] :is([data-part='first'], [data-part='previous']) > [data-ui='icon'] {
293
+ [data-ui-pagination] :is([data-part-first], [data-part-previous]) > [data-ui-icon] {
298
294
  rotate: 0.5turn;
299
295
  }
300
296
 
@@ -307,7 +303,7 @@
307
303
  * the breakpoint.
308
304
  */
309
305
 
310
- [data-ui='pagination'] :is([data-part='status'], [data-part='summary']) {
306
+ [data-ui-pagination] :is([data-part-status], [data-part-summary]) {
311
307
  color: var(--_muted);
312
308
  font-variant-numeric: tabular-nums;
313
309
  /* Only the paragraph's own block margin: the inline air between the
@@ -322,11 +318,11 @@
322
318
  * consumer wrote, and forbidding it to wrap pushed the trigger after it onto
323
319
  * a line of its own at 240 pixels.
324
320
  */
325
- [data-ui='pagination'] [data-part='summary'] {
321
+ [data-ui-pagination] [data-part-summary] {
326
322
  white-space: nowrap;
327
323
  }
328
324
 
329
- [data-ui='pagination'] [data-part='summary'] {
325
+ [data-ui-pagination] [data-part-summary] {
330
326
  align-items: center;
331
327
  block-size: var(--_target);
332
328
  display: none;
@@ -349,7 +345,7 @@
349
345
  * family that has three schemes.
350
346
  */
351
347
 
352
- [data-ui='pagination'] [data-part='page-size-label'] {
348
+ [data-ui-pagination] [data-part-page-size-label] {
353
349
  align-items: center;
354
350
  color: var(--_muted);
355
351
  column-gap: var(--slotted-pagination-page-size-gap, var(--slotted-space-3, 0.375rem));
@@ -358,7 +354,7 @@
358
354
  white-space: nowrap;
359
355
  }
360
356
 
361
- [data-ui='pagination'] [data-part='page-size-label'] > [data-ui='icon'] {
357
+ [data-ui-pagination] [data-part-page-size-label] > [data-ui-icon] {
362
358
  --slotted-icon-size: var(--_glyph);
363
359
 
364
360
  inset-block-start: 50%;
@@ -369,7 +365,7 @@
369
365
  translate: 0 -50%;
370
366
  }
371
367
 
372
- [data-ui='pagination'] [data-part='page-size'] {
368
+ [data-ui-pagination] [data-part-page-size] {
373
369
  appearance: none;
374
370
  background-color: var(
375
371
  --slotted-pagination-page-size-surface,
@@ -390,11 +386,11 @@
390
386
  var(--slotted-control-transition-easing);
391
387
  }
392
388
 
393
- [data-ui='pagination'] [data-part='page-size']:not(:disabled):hover {
389
+ [data-ui-pagination] [data-part-page-size]:not(:disabled):hover {
394
390
  border-color: var(--slotted-border-strong, ButtonBorder);
395
391
  }
396
392
 
397
- [data-ui='pagination'] [data-part='page-size']:disabled {
393
+ [data-ui-pagination] [data-part-page-size]:disabled {
398
394
  background-color: var(--slotted-disabled-background, Canvas);
399
395
  border-color: var(--slotted-disabled-border, GrayText);
400
396
  color: var(--slotted-disabled-foreground, GrayText);
@@ -415,11 +411,11 @@
415
411
  */
416
412
 
417
413
  @container slotted-pagination (max-width: 22rem) {
418
- [data-ui='pagination'] [data-part='list'] {
414
+ [data-ui-pagination] [data-part-list] {
419
415
  display: none;
420
416
  }
421
417
 
422
- [data-ui='pagination'] [data-part='summary'] {
418
+ [data-ui-pagination] [data-part-summary] {
423
419
  display: flex;
424
420
  }
425
421
 
@@ -433,7 +429,7 @@
433
429
  * no summary, and hiding its range left two chevrons and no sentence at
434
430
  * all — which the 240-pixel capture showed and no test could have.
435
431
  */
436
- [data-ui='pagination']:has([data-part='summary']) [data-part='status'] {
432
+ [data-ui-pagination]:has([data-part-summary]) [data-part-status] {
437
433
  display: none;
438
434
  }
439
435
 
@@ -442,7 +438,7 @@
442
438
  * split across two. At this width the label and its select are most of the
443
439
  * row, and the trigger that did not fit landed alone underneath.
444
440
  */
445
- [data-ui='pagination'] [data-part='page-size-label'] {
441
+ [data-ui-pagination] [data-part-page-size-label] {
446
442
  flex-basis: 100%;
447
443
  margin-inline: 0;
448
444
  }
@@ -453,7 +449,7 @@
453
449
  * select still sized to its content left the mark floating in the gap
454
450
  * between the two.
455
451
  */
456
- [data-ui='pagination'] [data-part='page-size'] {
452
+ [data-ui-pagination] [data-part-page-size] {
457
453
  flex: 1;
458
454
  }
459
455
 
@@ -463,7 +459,7 @@
463
459
  * of its own. Basing it at nought lets the row keep every control on one
464
460
  * line and gives the sentence whatever is left.
465
461
  */
466
- [data-ui='pagination'] [data-part='status'] {
462
+ [data-ui-pagination] [data-part-status] {
467
463
  flex: 1 1 0;
468
464
  }
469
465
  }
@@ -480,19 +476,19 @@
480
476
  */
481
477
 
482
478
  @media (forced-colors: active) {
483
- [data-ui='pagination'] [data-part='page'][aria-current]:not([aria-current='false']) {
479
+ [data-ui-pagination] [data-part-page][aria-current]:not([aria-current='false']) {
484
480
  background-color: Highlight;
485
481
  color: HighlightText;
486
482
  forced-color-adjust: none;
487
483
  }
488
484
 
489
- [data-ui='pagination']
485
+ [data-ui-pagination]
490
486
  :is(
491
- [data-part='page'],
492
- [data-part='first'],
493
- [data-part='previous'],
494
- [data-part='next'],
495
- [data-part='last']
487
+ [data-part-page],
488
+ [data-part-first],
489
+ [data-part-previous],
490
+ [data-part-next],
491
+ [data-part-last]
496
492
  ):not([data-disabled], [data-loading], [aria-current]:not([aria-current='false'])):hover {
497
493
  border-color: ButtonBorder;
498
494
  }
@@ -39,7 +39,7 @@
39
39
  * gaps inside the header and the footer read it too, so a dense popover is a
40
40
  * tighter popover rather than a smaller one.
41
41
  */
42
- [data-ui='popover'] {
42
+ [data-ui-popover] {
43
43
  --_gap: var(--slotted-popover-gap, var(--slotted-space-4, 0.5rem));
44
44
 
45
45
  --_surface: var(--slotted-popover-surface, var(--slotted-surface-raised, #ffffff));
@@ -99,12 +99,12 @@
99
99
  translate var(--slotted-duration-short) var(--slotted-easing-exit);
100
100
  }
101
101
 
102
- [data-ui='popover'][data-side='top'] {
102
+ [data-ui-popover][data-side='top'] {
103
103
  translate: 0 var(--_enter-distance);
104
104
  }
105
105
 
106
106
  /* A lateral side has no block direction to arrive from, so it only fades. */
107
- [data-ui='popover']:is([data-side='left'], [data-side='right']) {
107
+ [data-ui-popover]:is([data-side='left'], [data-side='right']) {
108
108
  translate: 0 0;
109
109
  }
110
110
 
@@ -117,7 +117,7 @@
117
117
  * A keyframe states where it starts. The exit stays a transition: it
118
118
  * leaves from wherever the layer is, on the closed rule's durations.
119
119
  */
120
- [data-ui='popover'][data-open] {
120
+ [data-ui-popover][data-open] {
121
121
  opacity: 1;
122
122
  translate: 0 0;
123
123
  transition: none;
@@ -128,15 +128,15 @@
128
128
  * with the side, and a layer written open in static markup — the harness,
129
129
  * a docs snippet — is simply there, and is photographed where it stands.
130
130
  */
131
- [data-ui='popover'][data-open][data-positioned] {
131
+ [data-ui-popover][data-open][data-positioned] {
132
132
  animation: slotted-popover-enter-down var(--slotted-duration-medium) var(--slotted-easing-enter);
133
133
  }
134
134
 
135
- [data-ui='popover'][data-open][data-positioned][data-side='top'] {
135
+ [data-ui-popover][data-open][data-positioned][data-side='top'] {
136
136
  animation-name: slotted-popover-enter-up;
137
137
  }
138
138
 
139
- [data-ui='popover'][data-open][data-positioned]:is([data-side='left'], [data-side='right']) {
139
+ [data-ui-popover][data-open][data-positioned]:is([data-side='left'], [data-side='right']) {
140
140
  animation-name: slotted-popover-fade;
141
141
  }
142
142
 
@@ -162,27 +162,27 @@
162
162
 
163
163
  /* Stillness keeps the fade and drops the movement (R7). */
164
164
  @media (prefers-reduced-motion: reduce) {
165
- [data-ui='popover'],
166
- [data-ui='popover'][data-side='top'],
167
- [data-ui='popover'][data-side='left'],
168
- [data-ui='popover'][data-side='right'] {
165
+ [data-ui-popover],
166
+ [data-ui-popover][data-side='top'],
167
+ [data-ui-popover][data-side='left'],
168
+ [data-ui-popover][data-side='right'] {
169
169
  translate: 0 0;
170
170
  transition: opacity var(--slotted-duration-short) var(--slotted-easing-exit);
171
171
  }
172
172
 
173
- [data-ui='popover'][data-open][data-positioned],
174
- [data-ui='popover'][data-open][data-positioned][data-side='top'],
175
- [data-ui='popover'][data-open][data-positioned][data-side='left'],
176
- [data-ui='popover'][data-open][data-positioned][data-side='right'] {
173
+ [data-ui-popover][data-open][data-positioned],
174
+ [data-ui-popover][data-open][data-positioned][data-side='top'],
175
+ [data-ui-popover][data-open][data-positioned][data-side='left'],
176
+ [data-ui-popover][data-open][data-positioned][data-side='right'] {
177
177
  animation-name: slotted-popover-fade;
178
178
  }
179
179
  }
180
180
 
181
- [data-ui='popover'][data-detached] {
181
+ [data-ui-popover][data-detached] {
182
182
  visibility: hidden;
183
183
  }
184
184
 
185
- [data-ui='popover'][data-size='sm'] {
185
+ [data-ui-popover][data-size='sm'] {
186
186
  --_inset-block: var(--slotted-popover-padding-block-sm, var(--slotted-space-4, 0.5rem));
187
187
  --_inset-inline: var(--slotted-popover-padding-inline-sm, var(--slotted-space-5, 0.75rem));
188
188
  --_title-font-size: var(--slotted-font-size-md, 0.875rem);
@@ -190,7 +190,7 @@
190
190
  --_measure: var(--slotted-popover-measure-sm, 16rem);
191
191
  }
192
192
 
193
- [data-ui='popover'][data-size='lg'] {
193
+ [data-ui-popover][data-size='lg'] {
194
194
  --_inset-block: var(--slotted-popover-padding-block-lg, var(--slotted-space-6, 1rem));
195
195
  --_inset-inline: var(--slotted-popover-padding-inline-lg, var(--slotted-space-7, 1.25rem));
196
196
  --_title-font-size: var(--slotted-font-size-xl, 1.125rem);
@@ -203,7 +203,7 @@
203
203
  * property for. The layer's own padding is added back, so the panel and the
204
204
  * anchor share an edge rather than being inset from one another.
205
205
  */
206
- [data-ui='popover'][data-width='anchor'] {
206
+ [data-ui-popover][data-width='anchor'] {
207
207
  inline-size: calc(var(--slotted-positioner-anchor-width, 0px) + 2 * var(--_gap));
208
208
  max-inline-size: var(--slotted-positioner-available-width, 100vw);
209
209
  }
@@ -214,7 +214,7 @@
214
214
  * of the document, so the family closes the popover and puts focus back on
215
215
  * the trigger, from which the next `Tab` continues down the page.
216
216
  */
217
- [data-ui='popover'] > [data-part='focus-guard'] {
217
+ [data-ui-popover] > [data-part-focus-guard] {
218
218
  position: absolute;
219
219
  inline-size: 1px;
220
220
  block-size: 1px;
@@ -225,7 +225,7 @@
225
225
  pointer-events: none;
226
226
  }
227
227
 
228
- [data-ui='popover'] > [data-part='content'] {
228
+ [data-ui-popover] > [data-part-content] {
229
229
  box-sizing: border-box;
230
230
  display: grid;
231
231
  grid-template-rows: auto minmax(0, 1fr) auto;
@@ -271,14 +271,14 @@
271
271
  * what it owns. Two children or more are the consumer's own layout and keep
272
272
  * their auto rows.
273
273
  */
274
- [data-ui='popover']
275
- > [data-part='content']
276
- > :only-child:not([data-part='header'], [data-part='body'], [data-part='footer']) {
274
+ [data-ui-popover]
275
+ > [data-part-content]
276
+ > :only-child:not([data-part-header], [data-part-body], [data-part-footer]) {
277
277
  grid-row: 2;
278
278
  min-block-size: 0;
279
279
  }
280
280
 
281
- [data-ui='popover'] > [data-part='content']:focus-visible {
281
+ [data-ui-popover] > [data-part-content]:focus-visible {
282
282
  outline: var(--slotted-focus-ring-width, 2px) solid
283
283
  var(--slotted-focus-ring-color, currentColor);
284
284
  outline-offset: calc(-1 * var(--slotted-focus-ring-width, 2px));
@@ -289,7 +289,7 @@
289
289
  * on the first row so it stays level with the title rather than centring
290
290
  * itself against a description the title may not have.
291
291
  */
292
- [data-ui='popover'] > [data-part='content'] > [data-part='header'] {
292
+ [data-ui-popover] > [data-part-content] > [data-part-header] {
293
293
  display: grid;
294
294
  grid-template-columns: minmax(0, 1fr) auto;
295
295
  column-gap: var(--_row-gap);
@@ -299,7 +299,7 @@
299
299
  padding-inline: var(--_inset-inline);
300
300
  }
301
301
 
302
- [data-ui='popover'] > [data-part='content'] > [data-part='header'] > [data-part='title'] {
302
+ [data-ui-popover] > [data-part-content] > [data-part-header] > [data-part-title] {
303
303
  grid-column: 1;
304
304
  margin: 0;
305
305
  font-family: var(
@@ -314,7 +314,7 @@
314
314
  unicode-bidi: plaintext;
315
315
  }
316
316
 
317
- [data-ui='popover'] > [data-part='content'] > [data-part='header'] > [data-part='description'] {
317
+ [data-ui-popover] > [data-part-content] > [data-part-header] > [data-part-description] {
318
318
  grid-column: 1;
319
319
  margin: 0;
320
320
  font-size: var(--slotted-font-size-sm, 0.8125rem);
@@ -331,7 +331,7 @@
331
331
  * is pulled level with the title's cap height by the negative
332
332
  * block margin rather than by stretching the row.
333
333
  */
334
- [data-ui='popover'] > [data-part='content'] > [data-part='header'] > [data-part='close'] {
334
+ [data-ui-popover] > [data-part-content] > [data-part-header] > [data-part-close] {
335
335
  grid-column: 2;
336
336
  grid-row: 1;
337
337
  display: inline-flex;
@@ -357,25 +357,16 @@
357
357
  var(--slotted-control-transition-easing, var(--slotted-easing-standard));
358
358
  }
359
359
 
360
- [data-ui='popover']
361
- > [data-part='content']
362
- > [data-part='header']
363
- > [data-part='close']:enabled:hover {
360
+ [data-ui-popover] > [data-part-content] > [data-part-header] > [data-part-close]:enabled:hover {
364
361
  background: var(--slotted-tone-secondary-subtle-hover, rgb(15 23 42 / 0.06));
365
362
  color: var(--_text);
366
363
  }
367
364
 
368
- [data-ui='popover']
369
- > [data-part='content']
370
- > [data-part='header']
371
- > [data-part='close']:enabled:active {
365
+ [data-ui-popover] > [data-part-content] > [data-part-header] > [data-part-close]:enabled:active {
372
366
  background: var(--slotted-tone-secondary-subtle-active, rgb(15 23 42 / 0.1));
373
367
  }
374
368
 
375
- [data-ui='popover']
376
- > [data-part='content']
377
- > [data-part='header']
378
- > [data-part='close']:focus-visible {
369
+ [data-ui-popover] > [data-part-content] > [data-part-header] > [data-part-close]:focus-visible {
379
370
  outline: var(--slotted-focus-ring-width, 2px) solid
380
371
  var(--slotted-focus-ring-color, currentColor);
381
372
  outline-offset: var(--slotted-focus-ring-offset, 2px);
@@ -386,7 +377,7 @@
386
377
  * there is no header, so a popover holding one sentence is not inset twice at
387
378
  * the top and once at the bottom.
388
379
  */
389
- [data-ui='popover'] > [data-part='content'] > [data-part='body'] {
380
+ [data-ui-popover] > [data-part-content] > [data-part-body] {
390
381
  grid-row: 2;
391
382
  min-block-size: 0;
392
383
  overflow-x: hidden;
@@ -437,11 +428,11 @@
437
428
  center bottom / 100% var(--slotted-space-3, 0.375rem) no-repeat scroll;
438
429
  }
439
430
 
440
- [data-ui='popover'] > [data-part='content'] > [data-part='body']:first-child {
431
+ [data-ui-popover] > [data-part-content] > [data-part-body]:first-child {
441
432
  padding-block-start: var(--_inset-block);
442
433
  }
443
434
 
444
- [data-ui='popover'] > [data-part='content'] > [data-part='footer'] {
435
+ [data-ui-popover] > [data-part-content] > [data-part-footer] {
445
436
  grid-row: 3;
446
437
  display: flex;
447
438
  flex-wrap: wrap;
@@ -468,7 +459,7 @@
468
459
  * of a diamond. Clamped here, the arrow meets a straight edge whatever
469
460
  * padding, gap or radius a theme sets.
470
461
  */
471
- [data-ui='popover'] > [data-part='arrow'] {
462
+ [data-ui-popover] > [data-part-arrow] {
472
463
  --_arrow-x: clamp(
473
464
  calc(var(--_gap) + var(--_radius)),
474
465
  var(--slotted-positioner-arrow-x, 0px),
@@ -488,7 +479,7 @@
488
479
  border: 0 solid var(--_border-color);
489
480
  }
490
481
 
491
- [data-ui='popover'][data-side='top'] > [data-part='arrow'] {
482
+ [data-ui-popover][data-side='top'] > [data-part-arrow] {
492
483
  left: var(--_arrow-x);
493
484
  top: auto;
494
485
  bottom: calc(var(--_gap) - var(--_arrow-size) / 2);
@@ -497,7 +488,7 @@
497
488
  border-bottom-right-radius: var(--_arrow-tip-radius);
498
489
  }
499
490
 
500
- [data-ui='popover'][data-side='bottom'] > [data-part='arrow'] {
491
+ [data-ui-popover][data-side='bottom'] > [data-part-arrow] {
501
492
  left: var(--_arrow-x);
502
493
  top: calc(var(--_gap) - var(--_arrow-size) / 2);
503
494
  bottom: auto;
@@ -506,7 +497,7 @@
506
497
  border-top-left-radius: var(--_arrow-tip-radius);
507
498
  }
508
499
 
509
- [data-ui='popover'][data-side='left'] > [data-part='arrow'] {
500
+ [data-ui-popover][data-side='left'] > [data-part-arrow] {
510
501
  top: var(--_arrow-y);
511
502
  left: auto;
512
503
  right: calc(var(--_gap) - var(--_arrow-size) / 2);
@@ -515,7 +506,7 @@
515
506
  border-top-right-radius: var(--_arrow-tip-radius);
516
507
  }
517
508
 
518
- [data-ui='popover'][data-side='right'] > [data-part='arrow'] {
509
+ [data-ui-popover][data-side='right'] > [data-part-arrow] {
519
510
  top: var(--_arrow-y);
520
511
  left: calc(var(--_gap) - var(--_arrow-size) / 2);
521
512
  right: auto;