@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
@@ -23,7 +23,7 @@
23
23
  * The layer, the scrim, the motion of arriving and leaving, the focus
24
24
  * containment and the Escape that closes are `dialog`'s: the panel stands
25
25
  * inside a dialog whose surface is `plain`, and `identity.test.mjs` keeps
26
- * this sheet off `[data-ui='dialog']`. The keys in an item's shortcut and in
26
+ * this sheet off `[data-ui-dialog]`. The keys in an item's shortcut and in
27
27
  * the footer's hints are `kbd`'s, worn as `data-ui='kbd'` under this family's
28
28
  * own `shortcut` and `hint` parts, so every selector on those two parts is a
29
29
  * child selector and never reaches the caps inside them. The mark on the
@@ -57,7 +57,7 @@
57
57
  * down. Only the panel's own radius and the list's inset come off the space
58
58
  * and radius scales.
59
59
  */
60
- [data-ui='command-palette'] {
60
+ [data-ui-command-palette] {
61
61
  --_surface: var(--slotted-command-palette-surface, var(--slotted-surface-raised, #ffffff));
62
62
  --_text: var(--slotted-command-palette-text, var(--slotted-text, #0f172a));
63
63
  --_muted: var(--slotted-command-palette-text-muted, var(--slotted-text-muted, #5b6b7f));
@@ -137,7 +137,7 @@
137
137
 
138
138
  /* ── Size ─────────────────────────────────────────────────────────────── */
139
139
 
140
- [data-ui='command-palette'][data-size='sm'] {
140
+ [data-ui-command-palette][data-size='sm'] {
141
141
  --_item-height: var(--slotted-control-height-sm, 30px);
142
142
  --_item-inset: var(--slotted-control-padding-inline-sm, 10px);
143
143
  --_font-size: var(--slotted-control-font-size-sm, 12px);
@@ -150,7 +150,7 @@
150
150
  --_chip-size: var(--slotted-control-inner-size-sm, 22px);
151
151
  }
152
152
 
153
- [data-ui='command-palette'][data-size='lg'] {
153
+ [data-ui-command-palette][data-size='lg'] {
154
154
  --_item-height: var(--slotted-control-height-lg, 38px);
155
155
  --_item-inset: var(--slotted-control-padding-inline-lg, 16px);
156
156
  --_font-size: var(--slotted-control-font-size-lg, 14px);
@@ -172,7 +172,7 @@
172
172
  * something else — so it draws no edge and no ground of its own, and the
173
173
  * rule under the header is the one line between the field and the list.
174
174
  */
175
- [data-ui='command-palette'] > [data-part='header'] {
175
+ [data-ui-command-palette] > [data-part-header] {
176
176
  align-items: center;
177
177
  border-block-end: var(--_border-width) solid var(--_border-color);
178
178
  box-sizing: border-box;
@@ -194,8 +194,7 @@
194
194
  * a bottom edge: `state-rail.test.mjs` (R1) refuses a state rail on the
195
195
  * start or the top edge, and this is neither.
196
196
  */
197
- [data-ui='command-palette']
198
- > [data-part='header']:has(> [data-part='input']:focus-visible)::after {
197
+ [data-ui-command-palette] > [data-part-header]:has(> [data-part-input]:focus-visible)::after {
199
198
  background-color: var(--slotted-focus-ring-color, currentColor);
200
199
  block-size: var(--slotted-focus-ring-width, 2px);
201
200
  content: '';
@@ -205,7 +204,7 @@
205
204
  position: absolute;
206
205
  }
207
206
 
208
- [data-ui='command-palette'] :is([data-part='search'], [data-part='busy']) {
207
+ [data-ui-command-palette] :is([data-part-search], [data-part-busy]) {
209
208
  color: var(--_muted);
210
209
  flex: none;
211
210
  }
@@ -215,7 +214,7 @@
215
214
  * icon box at the header's icon size so it sits on the field's line; a
216
215
  * character is never an icon.
217
216
  */
218
- [data-ui='command-palette'] [data-part='search'] {
217
+ [data-ui-command-palette] [data-part-search] {
219
218
  --slotted-icon-size: var(--_header-icon-size);
220
219
 
221
220
  display: flex;
@@ -226,7 +225,7 @@
226
225
  * `spinner/spinner.css`'s, worn as `data-ui='spinner'` beside this family's
227
226
  * part, and this family only says where it stands and how big it is.
228
227
  */
229
- [data-ui='command-palette'] [data-part='busy'] {
228
+ [data-ui-command-palette] [data-part-busy] {
230
229
  --slotted-spinner-size: var(--_header-icon-size);
231
230
  }
232
231
 
@@ -237,7 +236,7 @@
237
236
  * Each is a control that returns to its page; the last one is where the
238
237
  * reader is and reads as the field's own prefix.
239
238
  */
240
- [data-ui='command-palette'] [data-part='pages'] {
239
+ [data-ui-command-palette] [data-part-pages] {
241
240
  align-items: center;
242
241
  display: flex;
243
242
  flex: none;
@@ -249,11 +248,11 @@
249
248
  padding: 0;
250
249
  }
251
250
 
252
- [data-ui='command-palette'] [data-part='pages'] > li {
251
+ [data-ui-command-palette] [data-part-pages] > li {
253
252
  display: contents;
254
253
  }
255
254
 
256
- [data-ui='command-palette'] [data-part='page'] {
255
+ [data-ui-command-palette] [data-part-page] {
257
256
  align-items: center;
258
257
  appearance: none;
259
258
  background-color: var(--slotted-command-palette-page-surface, var(--_hover));
@@ -284,32 +283,32 @@
284
283
  white-space: nowrap;
285
284
  }
286
285
 
287
- [data-ui='command-palette'] [data-part='page'] > span {
286
+ [data-ui-command-palette] [data-part-page] > span {
288
287
  overflow: hidden;
289
288
  text-overflow: ellipsis;
290
289
  }
291
290
 
292
291
  /* A chip inside the header is shorter than the target minimum at every
293
292
  density; the hit area is recovered outside its paint. */
294
- [data-ui='command-palette'] [data-part='page']::after {
293
+ [data-ui-command-palette] [data-part-page]::after {
295
294
  content: '';
296
295
  inset: min(0px, calc((100% - var(--slotted-target-min, 24px)) / 2));
297
296
  position: absolute;
298
297
  }
299
298
 
300
- [data-ui='command-palette'] [data-part='page']:not(:disabled):hover {
299
+ [data-ui-command-palette] [data-part-page]:not(:disabled):hover {
301
300
  background-color: var(--_active);
302
301
  color: var(--_text);
303
302
  }
304
303
 
305
- [data-ui='command-palette'] [data-part='page']:not(:disabled):active {
304
+ [data-ui-command-palette] [data-part-page]:not(:disabled):active {
306
305
  background-color: var(--_active);
307
306
  }
308
307
 
309
308
  /* Drawn one width inside the chip, as a chip in a scrolling row draws it:
310
309
  the header clips at its padding edge and a ring at the theme's offset
311
310
  would lose its outer half. */
312
- [data-ui='command-palette'] [data-part='page']:focus-visible {
311
+ [data-ui-command-palette] [data-part-page]:focus-visible {
313
312
  outline: var(--slotted-focus-ring-width, 2px) solid
314
313
  var(--slotted-focus-ring-color, currentColor);
315
314
  outline-offset: calc(-1 * var(--slotted-focus-ring-width, 2px));
@@ -321,7 +320,7 @@
321
320
  * right-to-left document so the trail reads in the direction the reader
322
321
  * reads.
323
322
  */
324
- [data-ui='command-palette'] [data-part='pages'] > li > [data-ui='icon'] {
323
+ [data-ui-command-palette] [data-part-pages] > li > [data-ui-icon] {
325
324
  --slotted-icon-size: var(--_icon-size);
326
325
 
327
326
  color: var(--_muted);
@@ -330,7 +329,7 @@
330
329
 
331
330
  /* ── The field ────────────────────────────────────────────────────────── */
332
331
 
333
- [data-ui='command-palette'] [data-part='input'] {
332
+ [data-ui-command-palette] [data-part-input] {
334
333
  appearance: none;
335
334
  background: transparent;
336
335
  block-size: 100%;
@@ -349,7 +348,7 @@
349
348
  padding: 0;
350
349
  }
351
350
 
352
- [data-ui='command-palette'] [data-part='input']::placeholder {
351
+ [data-ui-command-palette] [data-part-input]::placeholder {
353
352
  color: var(--_muted);
354
353
  opacity: 1;
355
354
  }
@@ -362,7 +361,7 @@
362
361
  * or not — measured on the Nexora palette at 390 pixels. Only while the
363
362
  * placeholder shows: what the reader types is never faded under the caret.
364
363
  */
365
- [data-ui='command-palette'] [data-part='input']:placeholder-shown {
364
+ [data-ui-command-palette] [data-part-input]:placeholder-shown {
366
365
  mask-image: linear-gradient(
367
366
  to right,
368
367
  #000 calc(100% - var(--slotted-command-palette-placeholder-fade, 2em)),
@@ -372,8 +371,8 @@
372
371
 
373
372
  /* The browser's own clear and its search decoration, which the family
374
373
  draws itself so the two schemes and the three densities agree. */
375
- [data-ui='command-palette'] [data-part='input']::-webkit-search-cancel-button,
376
- [data-ui='command-palette'] [data-part='input']::-webkit-search-decoration {
374
+ [data-ui-command-palette] [data-part-input]::-webkit-search-cancel-button,
375
+ [data-ui-command-palette] [data-part-input]::-webkit-search-decoration {
377
376
  appearance: none;
378
377
  }
379
378
 
@@ -384,7 +383,7 @@
384
383
  * because Escape already clears and a second stop before the list is a
385
384
  * stop nobody asked for.
386
385
  */
387
- [data-ui='command-palette'] > [data-part='header'] > [data-part='clear'] {
386
+ [data-ui-command-palette] > [data-part-header] > [data-part-clear] {
388
387
  --_clear-size: min(
389
388
  calc(var(--_icon-size) + 2 * var(--slotted-space-2, 0.25rem)),
390
389
  var(--slotted-control-inner-size-md, 24px)
@@ -412,7 +411,7 @@
412
411
  var(--slotted-control-transition-easing, var(--slotted-easing-standard));
413
412
  }
414
413
 
415
- [data-ui='command-palette'] > [data-part='header'] > [data-part='clear']::after {
414
+ [data-ui-command-palette] > [data-part-header] > [data-part-clear]::after {
416
415
  content: '';
417
416
  inset: min(0px, calc((100% - var(--slotted-target-min, 24px)) / 2));
418
417
  position: absolute;
@@ -423,27 +422,27 @@
423
422
  the hit area above grows to 44 pixels around them. It does not reach
424
423
  across the close control after it. */
425
424
  @media (pointer: coarse) {
426
- [data-ui='command-palette'] > [data-part='header'] > [data-part='clear']::after {
425
+ [data-ui-command-palette] > [data-part-header] > [data-part-clear]::after {
427
426
  inset: min(0px, calc((100% - var(--slotted-target-comfortable, 44px)) / 2));
428
427
  }
429
428
 
430
- [data-ui='command-palette']
431
- > [data-part='header']
432
- > [data-part='clear']:has(+ [data-part='close'])::after {
429
+ [data-ui-command-palette]
430
+ > [data-part-header]
431
+ > [data-part-clear]:has(+ [data-part-close])::after {
433
432
  inset-inline-end: 0;
434
433
  }
435
434
  }
436
435
 
437
- [data-ui='command-palette'] > [data-part='header'] > [data-part='clear']:not(:disabled):hover {
436
+ [data-ui-command-palette] > [data-part-header] > [data-part-clear]:not(:disabled):hover {
438
437
  background-color: var(--_hover);
439
438
  color: var(--_text);
440
439
  }
441
440
 
442
- [data-ui='command-palette'] > [data-part='header'] > [data-part='clear']:not(:disabled):active {
441
+ [data-ui-command-palette] > [data-part-header] > [data-part-clear]:not(:disabled):active {
443
442
  background-color: var(--_active);
444
443
  }
445
444
 
446
- [data-ui='command-palette'] > [data-part='header'] > [data-part='clear']:focus-visible {
445
+ [data-ui-command-palette] > [data-part-header] > [data-part-clear]:focus-visible {
447
446
  outline: var(--slotted-focus-ring-width, 2px) solid
448
447
  var(--slotted-focus-ring-color, currentColor);
449
448
  outline-offset: calc(-1 * var(--slotted-focus-ring-width, 2px));
@@ -451,7 +450,7 @@
451
450
 
452
451
  /* Present in the DOM whenever the family renders it, drawn only with a
453
452
  query: a clear beside an empty field is a control with nothing to do. */
454
- [data-ui='command-palette']:not([data-query]) > [data-part='header'] > [data-part='clear'] {
453
+ [data-ui-command-palette]:not([data-query]) > [data-part-header] > [data-part-clear] {
455
454
  display: none;
456
455
  }
457
456
 
@@ -463,7 +462,7 @@
463
462
  * beside a search field reads as clear, which is what `clear` already is.
464
463
  * Drawn only under the dialog's own full-screen query, below.
465
464
  */
466
- [data-ui='command-palette'] > [data-part='header'] > [data-part='close'] {
465
+ [data-ui-command-palette] > [data-part-header] > [data-part-close] {
467
466
  align-items: center;
468
467
  appearance: none;
469
468
  background-color: transparent;
@@ -483,15 +482,15 @@
483
482
  white-space: nowrap;
484
483
  }
485
484
 
486
- [data-ui='command-palette'] > [data-part='header'] > [data-part='close']:not(:disabled):hover {
485
+ [data-ui-command-palette] > [data-part-header] > [data-part-close]:not(:disabled):hover {
487
486
  background-color: var(--_hover);
488
487
  }
489
488
 
490
- [data-ui='command-palette'] > [data-part='header'] > [data-part='close']:not(:disabled):active {
489
+ [data-ui-command-palette] > [data-part-header] > [data-part-close]:not(:disabled):active {
491
490
  background-color: var(--_active);
492
491
  }
493
492
 
494
- [data-ui='command-palette'] > [data-part='header'] > [data-part='close']:focus-visible {
493
+ [data-ui-command-palette] > [data-part-header] > [data-part-close]:focus-visible {
495
494
  outline: var(--slotted-focus-ring-width, 2px) solid
496
495
  var(--slotted-focus-ring-color, currentColor);
497
496
  outline-offset: calc(-1 * var(--slotted-focus-ring-width, 2px));
@@ -503,7 +502,7 @@
503
502
  * Five columns, bounded, scrolling. `overscroll-behavior` keeps the page —
504
503
  * or the popover — still once the list has scrolled to its end.
505
504
  */
506
- [data-ui='command-palette'] > [data-part='list'] {
505
+ [data-ui-command-palette] > [data-part-list] {
507
506
  box-sizing: border-box;
508
507
  display: grid;
509
508
  grid-template-columns: auto minmax(0, 1fr) auto auto auto;
@@ -517,19 +516,19 @@
517
516
  scroll-padding-block: var(--_list-inset);
518
517
  }
519
518
 
520
- [data-ui='command-palette'] > [data-part='list'][data-loading] {
519
+ [data-ui-command-palette] > [data-part-list][data-loading] {
521
520
  cursor: progress;
522
521
  }
523
522
 
524
523
  /* ── Groups ───────────────────────────────────────────────────────────── */
525
524
 
526
- [data-ui='command-palette'] [data-part='group'] {
525
+ [data-ui-command-palette] [data-part-group] {
527
526
  display: grid;
528
527
  grid-column: 1 / -1;
529
528
  grid-template-columns: subgrid;
530
529
  }
531
530
 
532
- [data-ui='command-palette'] [data-part='group-label'] {
531
+ [data-ui-command-palette] [data-part-group-label] {
533
532
  color: var(--_muted);
534
533
  font-size: var(--_secondary-font-size);
535
534
  font-weight: var(--slotted-font-weight-semibold, 600);
@@ -548,7 +547,7 @@
548
547
  * `min-block-size` rather than a height, because an item with a description
549
548
  * is two lines tall and still has to clear the target minimum.
550
549
  */
551
- [data-ui='command-palette'] [data-part='item'] {
550
+ [data-ui-command-palette] [data-part-item] {
552
551
  align-content: center;
553
552
  border-radius: var(--_item-radius);
554
553
  box-sizing: border-box;
@@ -582,11 +581,11 @@
582
581
  * moves; the two are told apart so a reader who arrowed to one row while the
583
582
  * pointer rests on another reads exactly one cursor.
584
583
  */
585
- [data-ui='command-palette'] [data-part='item']:not([data-disabled]):not([data-current]):hover {
584
+ [data-ui-command-palette] [data-part-item]:not([data-disabled]):not([data-current]):hover {
586
585
  background-color: var(--_hover);
587
586
  }
588
587
 
589
- [data-ui='command-palette'] [data-part='item']:not([data-disabled]):not([data-current]):active {
588
+ [data-ui-command-palette] [data-part-item]:not([data-disabled]):not([data-current]):active {
590
589
  background-color: var(--_active);
591
590
  }
592
591
 
@@ -597,13 +596,13 @@
597
596
  * of row is a reading, not a movement, and a transition lags behind a reader
598
597
  * holding ArrowDown.
599
598
  */
600
- [data-ui='command-palette'] [data-part='item'][data-current] {
599
+ [data-ui-command-palette] [data-part-item][data-current] {
601
600
  background-color: var(--_highlight);
602
601
  box-shadow: inset 0 0 0 var(--slotted-border-width-thin, 1px) var(--_highlight-ring);
603
602
  transition: none;
604
603
  }
605
604
 
606
- [data-ui='command-palette'] [data-part='item'][data-current]:not([data-disabled]):active {
605
+ [data-ui-command-palette] [data-part-item][data-current]:not([data-disabled]):active {
607
606
  background-color: var(--_active);
608
607
  }
609
608
 
@@ -612,7 +611,7 @@
612
611
  * current — `moveIndex` skips it and the pointer does not highlight it. The
613
612
  * hand goes, because there is nothing to press.
614
613
  */
615
- [data-ui='command-palette'] [data-part='item'][data-disabled] {
614
+ [data-ui-command-palette] [data-part-item][data-disabled] {
616
615
  color: var(--slotted-disabled-foreground, #64748b);
617
616
  cursor: not-allowed;
618
617
  }
@@ -620,11 +619,11 @@
620
619
  /* A handler that has not answered yet: the cursor says so, and the ring
621
620
  `spinner` draws stands in the last column, where the arrow of a page
622
621
  item stands, sized to the row's own glyph. */
623
- [data-ui='command-palette'] [data-part='item'][data-loading] {
622
+ [data-ui-command-palette] [data-part-item][data-loading] {
624
623
  cursor: progress;
625
624
  }
626
625
 
627
- [data-ui='command-palette'] [data-part='item'] > [data-part='busy'] {
626
+ [data-ui-command-palette] [data-part-item] > [data-part-busy] {
628
627
  --slotted-spinner-size: var(--_icon-size);
629
628
 
630
629
  color: var(--_muted);
@@ -648,7 +647,7 @@
648
647
  * the child and not on the box, because the box's `1lh` reads the item's
649
648
  * line box.
650
649
  */
651
- [data-ui='command-palette'] [data-part='icon'] {
650
+ [data-ui-command-palette] [data-part-icon] {
652
651
  --slotted-icon-size: var(--_icon-size);
653
652
 
654
653
  align-items: center;
@@ -665,7 +664,7 @@
665
664
  margin-inline-end: calc(var(--_column-gap) + var(--slotted-space-2, 0.25rem));
666
665
  }
667
666
 
668
- [data-ui='command-palette'] [data-part='icon']:not(:empty) > * {
667
+ [data-ui-command-palette] [data-part-icon]:not(:empty) > * {
669
668
  block-size: var(--_icon-size);
670
669
  font-size: var(--_icon-size);
671
670
  inline-size: var(--_icon-size);
@@ -677,7 +676,7 @@
677
676
  * is three rows pretending to be one. The whole text is on the item's
678
677
  * `title` and reachable by the reader, so nothing leaves the DOM.
679
678
  */
680
- [data-ui='command-palette'] [data-part='label'] {
679
+ [data-ui-command-palette] [data-part-label] {
681
680
  grid-column: 2;
682
681
  grid-row: 1;
683
682
  min-inline-size: 0;
@@ -686,7 +685,7 @@
686
685
  white-space: nowrap;
687
686
  }
688
687
 
689
- [data-ui='command-palette'] [data-part='description'] {
688
+ [data-ui-command-palette] [data-part-description] {
690
689
  color: var(--_muted);
691
690
  font-size: var(--_secondary-font-size);
692
691
  grid-column: 2;
@@ -698,7 +697,7 @@
698
697
  white-space: nowrap;
699
698
  }
700
699
 
701
- [data-ui='command-palette'] [data-part='item'][data-disabled] > [data-part='description'] {
700
+ [data-ui-command-palette] [data-part-item][data-disabled] > [data-part-description] {
702
701
  color: inherit;
703
702
  }
704
703
 
@@ -709,14 +708,14 @@
709
708
  * label's line box stretched that row, and the description under it dropped
710
709
  * by the difference — a gap that opened only on rows with a binding.
711
710
  */
712
- [data-ui='command-palette']
713
- [data-part='item']
714
- > :is([data-part='meta'], [data-part='shortcut'], [data-part='arrow'], [data-part='busy']) {
711
+ [data-ui-command-palette]
712
+ [data-part-item]
713
+ > :is([data-part-meta], [data-part-shortcut], [data-part-arrow], [data-part-busy]) {
715
714
  align-self: center;
716
715
  grid-row: 1 / -1;
717
716
  }
718
717
 
719
- [data-ui='command-palette'] [data-part='meta'] {
718
+ [data-ui-command-palette] [data-part-meta] {
720
719
  color: var(--_muted);
721
720
  font-size: var(--_secondary-font-size);
722
721
  grid-column: 3;
@@ -728,9 +727,7 @@
728
727
  /* A word on a row with no binding takes the binding's column too, so it
729
728
  ends where the bindings on the rows around it end rather than a column
730
729
  short of them. */
731
- [data-ui='command-palette']
732
- [data-part='item']:not(:has(> [data-part='shortcut']))
733
- > [data-part='meta'] {
730
+ [data-ui-command-palette] [data-part-item]:not(:has(> [data-part-shortcut])) > [data-part-meta] {
734
731
  grid-column: 3 / 5;
735
732
  }
736
733
 
@@ -739,7 +736,7 @@
739
736
  * rule places the column and states its ink; every selector stops at the
740
737
  * part and never reaches the caps.
741
738
  */
742
- [data-ui='command-palette'] [data-part='item'] > [data-part='shortcut'] {
739
+ [data-ui-command-palette] [data-part-item] > [data-part-shortcut] {
743
740
  align-items: center;
744
741
  color: var(--_muted);
745
742
  display: inline-flex;
@@ -757,9 +754,9 @@
757
754
  white-space: nowrap;
758
755
  }
759
756
 
760
- [data-ui='command-palette']
761
- [data-part='item'][data-disabled]
762
- > :is([data-part='meta'], [data-part='shortcut']) {
757
+ [data-ui-command-palette]
758
+ [data-part-item][data-disabled]
759
+ > :is([data-part-meta], [data-part-shortcut]) {
763
760
  color: inherit;
764
761
  }
765
762
 
@@ -769,7 +766,7 @@
769
766
  * glyph in a `directional` icon box, which mirrors in a right-to-left
770
767
  * document; the column is one line box tall and centres it.
771
768
  */
772
- [data-ui='command-palette'] [data-part='arrow'] {
769
+ [data-ui-command-palette] [data-part-arrow] {
773
770
  --slotted-icon-size: var(--_icon-size);
774
771
 
775
772
  align-items: center;
@@ -790,7 +787,7 @@
790
787
  * painted them as one-pixel rules — the bar over the word, and the word
791
788
  * itself pushed out of a box one pixel tall.
792
789
  */
793
- [data-ui='command-palette'] > [data-part='list'] [data-part='separator']:not([data-separator]) {
790
+ [data-ui-command-palette] > [data-part-list] [data-part-separator]:not([data-separator]) {
794
791
  background-color: var(--slotted-command-palette-separator-color, var(--_border-color));
795
792
  block-size: var(--_border-width);
796
793
  border: 0;
@@ -799,7 +796,7 @@
799
796
  margin-inline: 0;
800
797
  }
801
798
 
802
- [data-ui='command-palette'] [data-part='empty'] {
799
+ [data-ui-command-palette] [data-part-empty] {
803
800
  color: var(--_muted);
804
801
  grid-column: 1 / -1;
805
802
  padding-block: var(--slotted-space-8, 1.5rem);
@@ -814,7 +811,7 @@
814
811
  * what the reader is looking at. The clip is the visually-hidden idiom, kept
815
812
  * in the DOM so `role="status"` has something to announce from.
816
813
  */
817
- [data-ui='command-palette'] > [data-part='status'] {
814
+ [data-ui-command-palette] > [data-part-status] {
818
815
  block-size: 1px;
819
816
  clip-path: inset(50%);
820
817
  inline-size: 1px;
@@ -829,24 +826,24 @@
829
826
  * of an item, `combobox`'s decision for `combobox`'s reasons. The bars are
830
827
  * `skeleton/skeleton.css`'s; this family places them.
831
828
  */
832
- [data-ui='command-palette'] [data-part='placeholder'] {
829
+ [data-ui-command-palette] [data-part-placeholder] {
833
830
  display: grid;
834
831
  grid-column: 1 / -1;
835
832
  padding-block: var(--slotted-space-2, 0.25rem);
836
833
  padding-inline: var(--_item-inset);
837
834
  }
838
835
 
839
- [data-ui='command-palette'] [data-part='placeholder'] > * {
836
+ [data-ui-command-palette] [data-part-placeholder] > * {
840
837
  align-items: center;
841
838
  display: flex;
842
839
  min-block-size: var(--_item-height);
843
840
  }
844
841
 
845
- [data-ui='command-palette'] [data-part='placeholder'] > :nth-child(2) [data-ui='skeleton'] {
842
+ [data-ui-command-palette] [data-part-placeholder] > :nth-child(2) [data-ui-skeleton] {
846
843
  inline-size: 78%;
847
844
  }
848
845
 
849
- [data-ui='command-palette'] [data-part='placeholder'] > :nth-child(3) [data-ui='skeleton'] {
846
+ [data-ui-command-palette] [data-part-placeholder] > :nth-child(3) [data-ui-skeleton] {
850
847
  inline-size: 56%;
851
848
  }
852
849
 
@@ -857,7 +854,7 @@
857
854
  * `kbd`'s in its `plain` variant at the small step; the words beside them
858
855
  * are this family's, one step quieter than the list.
859
856
  */
860
- [data-ui='command-palette'] > [data-part='footer'] {
857
+ [data-ui-command-palette] > [data-part-footer] {
861
858
  align-items: center;
862
859
  background: var(
863
860
  --slotted-command-palette-footer-surface,
@@ -876,7 +873,7 @@
876
873
  padding-inline: var(--_header-inset);
877
874
  }
878
875
 
879
- [data-ui='command-palette'] > [data-part='footer'] > [data-part='hint'] {
876
+ [data-ui-command-palette] > [data-part-footer] > [data-part-hint] {
880
877
  align-items: center;
881
878
  display: inline-flex;
882
879
  /* The caps read the footer's own size through `kbd` at `inherit`, a tenth
@@ -892,7 +889,7 @@
892
889
  * because a line box of 1.4 is centred on its leading and not on its
893
890
  * letters. `line-height: 1` centres the em box, which is where the word is.
894
891
  */
895
- [data-ui='command-palette'] > [data-part='footer'] > [data-part='hint'] > span:not([data-ui]) {
892
+ [data-ui-command-palette] > [data-part-footer] > [data-part-hint] > span:not([data-ui]) {
896
893
  font-size: var(--slotted-font-size-xs, 0.75rem);
897
894
  line-height: 1;
898
895
  }
@@ -905,15 +902,15 @@
905
902
  * third of the header so the field is never squeezed to nothing.
906
903
  */
907
904
  @container command-palette (max-width: 360px) {
908
- [data-ui='command-palette'] :is([data-part='description'], [data-part='meta']) {
905
+ [data-ui-command-palette] :is([data-part-description], [data-part-meta]) {
909
906
  display: none;
910
907
  }
911
908
 
912
- [data-ui='command-palette'] [data-part='pages'] {
909
+ [data-ui-command-palette] [data-part-pages] {
913
910
  max-inline-size: 33%;
914
911
  }
915
912
 
916
- [data-ui='command-palette'] > [data-part='footer'] {
913
+ [data-ui-command-palette] > [data-part-footer] {
917
914
  gap: var(--slotted-space-4, 0.5rem);
918
915
  }
919
916
  }
@@ -925,13 +922,13 @@
925
922
  * edge is this panel's. The panel is asked the same question the dialog
926
923
  * asked, of the dialog's own named container, so the two answer together:
927
924
  * the corner, the side edges and the lift go, and the list takes the rest
928
- * of the screen. Written here rather than on `[data-ui='dialog']` because
925
+ * of the screen. Written here rather than on `[data-ui-dialog]` because
929
926
  * `identity.test.mjs` keeps this sheet off another family's identifier;
930
927
  * the container name and the breakpoint are the dialog's, recorded in
931
928
  * `dialog.css` beside its own query.
932
929
  */
933
930
  @container slotted-dialog (max-inline-size: 30rem) {
934
- [data-ui='command-palette'][data-presentation='dialog'] {
931
+ [data-ui-command-palette][data-presentation='dialog'] {
935
932
  --_list-max: none;
936
933
 
937
934
  border-inline: 0;
@@ -948,9 +945,7 @@
948
945
  }
949
946
 
950
947
  /* No scrim to press: the word that closes stands at the end of the field. */
951
- [data-ui='command-palette'][data-presentation='dialog']
952
- > [data-part='header']
953
- > [data-part='close'] {
948
+ [data-ui-command-palette][data-presentation='dialog'] > [data-part-header] > [data-part-close] {
954
949
  display: inline-flex;
955
950
  }
956
951
  }
@@ -961,7 +956,7 @@
961
956
  * the reader can press; the list is scrolled and the rows are tapped.
962
957
  */
963
958
  @media (hover: none) and (pointer: coarse) {
964
- [data-ui='command-palette'] > [data-part='footer'] {
959
+ [data-ui-command-palette] > [data-part-footer] {
965
960
  display: none;
966
961
  }
967
962
  }
@@ -974,13 +969,13 @@
974
969
  * not decoration — would disappear.
975
970
  */
976
971
  @media (forced-colors: active) {
977
- [data-ui='command-palette'] [data-part='item'][data-current] {
972
+ [data-ui-command-palette] [data-part-item][data-current] {
978
973
  background-color: Highlight;
979
974
  color: HighlightText;
980
975
  forced-color-adjust: none;
981
976
  }
982
977
 
983
- [data-ui='command-palette'] [data-part='item'][data-disabled][data-current] {
978
+ [data-ui-command-palette] [data-part-item][data-disabled][data-current] {
984
979
  background-color: Highlight;
985
980
  color: GrayText;
986
981
  }
@@ -992,8 +987,7 @@
992
987
  * the host's ink the system has already forced. The glyphs are `Glyph`
993
988
  * elements drawn in `currentColor` and need nothing here.
994
989
  */
995
- [data-ui='command-palette']
996
- > [data-part='header']:has(> [data-part='input']:focus-visible)::after {
990
+ [data-ui-command-palette] > [data-part-header]:has(> [data-part-input]:focus-visible)::after {
997
991
  forced-color-adjust: none;
998
992
  }
999
993
  }