@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
@@ -38,7 +38,7 @@
38
38
  * reads as the row it would be in `side-navigation`. Outside the shell the
39
39
  * fallbacks are the control scale.
40
40
  */
41
- [data-ui='top-navigation'] {
41
+ [data-ui-top-navigation] {
42
42
  --_control-height: var(--slotted-control-height-md, 34px);
43
43
  --_control-padding: var(--slotted-control-padding-inline-md, 13px);
44
44
  --_control-font-size: var(--slotted-control-font-size-md, 13px);
@@ -152,7 +152,7 @@
152
152
  * content box is its border box, and the first and last clusters carry the
153
153
  * edge — `--_edge`, nought inside the shell — beside the shell's row inset.
154
154
  */
155
- [data-ui='top-navigation'][data-frame] {
155
+ [data-ui-top-navigation][data-frame] {
156
156
  --_edge: var(--_inset);
157
157
 
158
158
  background-color: var(--_surface);
@@ -160,7 +160,7 @@
160
160
  min-block-size: var(--_block-size);
161
161
  }
162
162
 
163
- [data-ui='top-navigation'][data-size='sm'] {
163
+ [data-ui-top-navigation][data-size='sm'] {
164
164
  --_control-height: var(--slotted-control-height-sm, 30px);
165
165
  --_control-padding: var(--slotted-control-padding-inline-sm, 10px);
166
166
  --_control-font-size: var(--slotted-control-font-size-sm, 12px);
@@ -180,7 +180,7 @@
180
180
  );
181
181
  }
182
182
 
183
- [data-ui='top-navigation'][data-size='lg'] {
183
+ [data-ui-top-navigation][data-size='lg'] {
184
184
  --_control-height: var(--slotted-control-height-lg, 38px);
185
185
  --_control-padding: var(--slotted-control-padding-inline-lg, 16px);
186
186
  --_control-font-size: var(--slotted-control-font-size-lg, 14px);
@@ -207,7 +207,7 @@
207
207
  * bar, on the bar's own ground: a reader tabbing into the page sees where
208
208
  * they are before they see anything else.
209
209
  */
210
- [data-ui='top-navigation'] > [data-part='skip'] {
210
+ [data-ui-top-navigation] > [data-part-skip] {
211
211
  background-color: var(--_surface);
212
212
  block-size: var(--_control-height);
213
213
  border-radius: var(--_radius);
@@ -227,7 +227,7 @@
227
227
  z-index: 1;
228
228
  }
229
229
 
230
- [data-ui='top-navigation'] > [data-part='skip']:focus-visible {
230
+ [data-ui-top-navigation] > [data-part-skip]:focus-visible {
231
231
  clip-path: none;
232
232
  outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);
233
233
  outline-offset: var(--slotted-focus-ring-offset, 2px);
@@ -238,7 +238,7 @@
238
238
  /**
239
239
  * The root part is named in the selector for one reason: `app-shell` styles
240
240
  * its own brand cluster with a descendant selector,
241
- * `[data-ui='app-shell'] [data-part='brand']`, which reaches this part when
241
+ * `[data-ui-app-shell] [data-part-brand]`, which reaches this part when
242
242
  * the bar stands in the shell's banner and clips `home` to a sliver at 240
243
243
  * pixels. Naming the root outranks it. The shell's own reopening narrows
244
244
  * that selector to its banner; until then the two declarations it leaks —
@@ -250,7 +250,7 @@
250
250
  * nought it shrank under its own marks on a phone whose actions held seven
251
251
  * touch-sized controls, and the marks spilled over the cluster beside it.
252
252
  */
253
- [data-ui='top-navigation'][data-part='root'] > [data-part='brand'] {
253
+ [data-ui-top-navigation][data-part-root] > [data-part-brand] {
254
254
  align-items: center;
255
255
  display: flex;
256
256
  flex: 0 1 auto;
@@ -259,13 +259,13 @@
259
259
  padding-inline-start: calc(var(--_edge) + var(--_row-inset));
260
260
  }
261
261
 
262
- [data-ui='top-navigation'][data-part='root'] > [data-part='brand'] > [data-part='home'] {
262
+ [data-ui-top-navigation][data-part-root] > [data-part-brand] > [data-part-home] {
263
263
  min-inline-size: var(--_control-height);
264
264
  overflow: visible;
265
265
  white-space: normal;
266
266
  }
267
267
 
268
- [data-ui='top-navigation'] [data-part='home'] {
268
+ [data-ui-top-navigation] [data-part-home] {
269
269
  align-items: center;
270
270
  border-radius: var(--_radius);
271
271
  color: var(--_color);
@@ -293,13 +293,13 @@
293
293
  text-decoration: none;
294
294
  }
295
295
 
296
- [data-ui='top-navigation'] [data-part='home']:focus-visible {
296
+ [data-ui-top-navigation] [data-part-home]:focus-visible {
297
297
  outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);
298
298
  outline-offset: var(--slotted-focus-ring-offset, 2px);
299
299
  }
300
300
 
301
301
  /** A square the mark is centred in, the height of the bar's controls. */
302
- [data-ui='top-navigation'] [data-part='mark'] {
302
+ [data-ui-top-navigation] [data-part-mark] {
303
303
  align-items: center;
304
304
  block-size: var(--_control-height);
305
305
  display: inline-flex;
@@ -308,7 +308,7 @@
308
308
  justify-content: center;
309
309
  }
310
310
 
311
- [data-ui='top-navigation'] [data-part='mark'] > :is(svg, img) {
311
+ [data-ui-top-navigation] [data-part-mark] > :is(svg, img) {
312
312
  block-size: var(--_mark-size);
313
313
  inline-size: var(--_mark-size);
314
314
  }
@@ -317,7 +317,7 @@
317
317
  * One line. It ends in an ellipsis rather than pushing the bar wider than
318
318
  * the space there is — the rule `app-shell` states for its own brand.
319
319
  */
320
- [data-ui='top-navigation'] [data-part='name'] {
320
+ [data-ui-top-navigation] [data-part-name] {
321
321
  font-size: var(--_name-font-size);
322
322
  font-weight: var(--slotted-font-weight-semibold, 600);
323
323
  max-inline-size: var(--_name-max);
@@ -337,7 +337,7 @@
337
337
  * what a shrinking cluster does to a button — and the steps below are what
338
338
  * takes their room back.
339
339
  */
340
- [data-ui='top-navigation'] [data-part='context'] {
340
+ [data-ui-top-navigation] [data-part-context] {
341
341
  align-items: center;
342
342
  display: flex;
343
343
  flex: 0 0 auto;
@@ -352,7 +352,7 @@
352
352
  * inherited back, so the bar's rows and the sections' panels read the bar's
353
353
  * tokens — one bar, one set of decisions.
354
354
  */
355
- [data-ui='top-navigation'] [data-part='nav'] {
355
+ [data-ui-top-navigation] [data-part-nav] {
356
356
  --_control-height: inherit;
357
357
  --_control-padding: inherit;
358
358
  --_control-font-size: inherit;
@@ -374,7 +374,7 @@
374
374
  flex: 0 0 auto;
375
375
  }
376
376
 
377
- [data-ui='top-navigation'] [data-part='list'] {
377
+ [data-ui-top-navigation] [data-part-list] {
378
378
  align-items: center;
379
379
  display: flex;
380
380
  gap: var(--slotted-space-1, 0.125rem);
@@ -384,7 +384,7 @@
384
384
  padding: 0;
385
385
  }
386
386
 
387
- [data-ui='top-navigation'] [data-part='item'] {
387
+ [data-ui-top-navigation] [data-part-item] {
388
388
  display: flex;
389
389
  flex: 0 0 auto;
390
390
  min-inline-size: 0;
@@ -398,10 +398,10 @@
398
398
  * muted ink in `light`; the icon-only controls stay muted, the way Carbon's
399
399
  * global actions do, because a mark carries less weight than a word.
400
400
  */
401
- [data-ui='top-navigation']
402
- :is([data-part='nav'] > [data-part='list'], [data-part='panel-list'])
403
- > [data-part='item']
404
- > :is([data-part='link'], [data-part='trigger']) {
401
+ [data-ui-top-navigation]
402
+ :is([data-part-nav] > [data-part-list], [data-part-panel-list])
403
+ > [data-part-item]
404
+ > :is([data-part-link], [data-part-trigger]) {
405
405
  align-items: center;
406
406
  appearance: none;
407
407
  background-color: transparent;
@@ -425,22 +425,22 @@
425
425
  white-space: nowrap;
426
426
  }
427
427
 
428
- [data-ui='top-navigation']
429
- [data-part='item']:not([data-disabled])
430
- > [data-part='link']:not([data-current], [aria-current='page']):hover,
431
- [data-ui='top-navigation']
432
- [data-part='item']:not([data-disabled])
433
- > [data-part='trigger']:enabled:hover {
428
+ [data-ui-top-navigation]
429
+ [data-part-item]:not([data-disabled])
430
+ > [data-part-link]:not([data-current], [aria-current='page']):hover,
431
+ [data-ui-top-navigation]
432
+ [data-part-item]:not([data-disabled])
433
+ > [data-part-trigger]:enabled:hover {
434
434
  background-color: var(--_hover-background);
435
435
  color: var(--_color);
436
436
  }
437
437
 
438
- [data-ui='top-navigation']
439
- [data-part='item']:not([data-disabled])
440
- > [data-part='link']:not([data-current], [aria-current='page']):active,
441
- [data-ui='top-navigation']
442
- [data-part='item']:not([data-disabled])
443
- > [data-part='trigger']:enabled:active {
438
+ [data-ui-top-navigation]
439
+ [data-part-item]:not([data-disabled])
440
+ > [data-part-link]:not([data-current], [aria-current='page']):active,
441
+ [data-ui-top-navigation]
442
+ [data-part-item]:not([data-disabled])
443
+ > [data-part-trigger]:enabled:active {
444
444
  background-color: var(--_active-background);
445
445
  color: var(--_color);
446
446
  transition-duration: var(--slotted-duration-instant);
@@ -451,9 +451,9 @@
451
451
  * is written on the trigger by the consumer's `menu`, whose trigger the
452
452
  * family's part is rendered as, so the family wires nothing for it.
453
453
  */
454
- [data-ui='top-navigation']
455
- [data-part='item']:not([data-disabled])
456
- > [data-part='trigger'][data-open]:enabled {
454
+ [data-ui-top-navigation]
455
+ [data-part-item]:not([data-disabled])
456
+ > [data-part-trigger][data-open]:enabled {
457
457
  background-color: var(--_hover-background);
458
458
  color: var(--_color);
459
459
  }
@@ -464,32 +464,32 @@
464
464
  * router link rendered through `render` says where the reader is in the one
465
465
  * attribute it owns, and the stylesheet reads it as the same state.
466
466
  */
467
- [data-ui='top-navigation']
468
- :is([data-part='nav'] > [data-part='list'], [data-part='panel-list'])
469
- > [data-part='item']
470
- > [data-part='link']:is([data-current], [aria-current='page']) {
467
+ [data-ui-top-navigation]
468
+ :is([data-part-nav] > [data-part-list], [data-part-panel-list])
469
+ > [data-part-item]
470
+ > [data-part-link]:is([data-current], [aria-current='page']) {
471
471
  background-color: var(--_current-background);
472
472
  box-shadow: inset 0 0 0 var(--_rule-width) var(--_current-edge);
473
473
  color: var(--_current-color);
474
474
  font-weight: var(--slotted-font-weight-semibold, 600);
475
475
  }
476
476
 
477
- [data-ui='top-navigation']
478
- :is([data-part='nav'] > [data-part='list'], [data-part='panel-list'])
479
- > [data-part='item'][data-disabled]
480
- > [data-part='link'],
481
- [data-ui='top-navigation']
482
- :is([data-part='nav'] > [data-part='list'], [data-part='panel-list'])
483
- > [data-part='item']
484
- > [data-part='trigger']:disabled {
477
+ [data-ui-top-navigation]
478
+ :is([data-part-nav] > [data-part-list], [data-part-panel-list])
479
+ > [data-part-item][data-disabled]
480
+ > [data-part-link],
481
+ [data-ui-top-navigation]
482
+ :is([data-part-nav] > [data-part-list], [data-part-panel-list])
483
+ > [data-part-item]
484
+ > [data-part-trigger]:disabled {
485
485
  color: var(--_disabled-color);
486
486
  cursor: not-allowed;
487
487
  }
488
488
 
489
- [data-ui='top-navigation']
490
- :is([data-part='nav'] > [data-part='list'], [data-part='panel-list'])
491
- > [data-part='item']
492
- > :is([data-part='link'], [data-part='trigger']):focus-visible {
489
+ [data-ui-top-navigation]
490
+ :is([data-part-nav] > [data-part-list], [data-part-panel-list])
491
+ > [data-part-item]
492
+ > :is([data-part-link], [data-part-trigger]):focus-visible {
493
493
  outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);
494
494
  outline-offset: var(--slotted-focus-ring-offset, 2px);
495
495
  }
@@ -500,11 +500,11 @@
500
500
  * the `chevron-down` Glyph element the binding renders in the part. Down is
501
501
  * down in both directions, so its box is not `directional`.
502
502
  */
503
- [data-ui='top-navigation']
504
- :is([data-part='nav'] > [data-part='list'], [data-part='panel-list'])
505
- > [data-part='item']
506
- > [data-part='trigger']
507
- > [data-part='indicator'] {
503
+ [data-ui-top-navigation]
504
+ :is([data-part-nav] > [data-part-list], [data-part-panel-list])
505
+ > [data-part-item]
506
+ > [data-part-trigger]
507
+ > [data-part-indicator] {
508
508
  --slotted-icon-size: var(--_icon-size);
509
509
 
510
510
  display: flex;
@@ -512,19 +512,16 @@
512
512
  margin-inline-end: calc(-1 * var(--slotted-space-2, 0.25rem));
513
513
  }
514
514
 
515
- [data-ui='top-navigation']
516
- :is([data-part='nav'] > [data-part='list'], [data-part='panel-list'])
517
- > [data-part='item']
518
- > [data-part='trigger']
519
- > [data-part='indicator']
520
- > [data-ui='icon'] {
515
+ [data-ui-top-navigation]
516
+ :is([data-part-nav] > [data-part-list], [data-part-panel-list])
517
+ > [data-part-item]
518
+ > [data-part-trigger]
519
+ > [data-part-indicator]
520
+ > [data-ui-icon] {
521
521
  transition: rotate var(--slotted-duration-medium) var(--_easing);
522
522
  }
523
523
 
524
- [data-ui='top-navigation']
525
- [data-part='trigger'][data-open]
526
- > [data-part='indicator']
527
- > [data-ui='icon'] {
524
+ [data-ui-top-navigation] [data-part-trigger][data-open] > [data-part-indicator] > [data-ui-icon] {
528
525
  rotate: 0.5turn;
529
526
  }
530
527
 
@@ -539,15 +536,15 @@
539
536
  * family's would be, so the cluster is one row of equals and not four of
540
537
  * the family's beside three of another.
541
538
  */
542
- [data-ui='top-navigation']
539
+ [data-ui-top-navigation]
543
540
  :is(
544
- [data-part='more'],
545
- [data-part='search-toggle'],
546
- [data-part='search-close'],
547
- [data-part='help'],
548
- [data-part='notifications'],
549
- [data-part='account'],
550
- [data-part='action']
541
+ [data-part-more],
542
+ [data-part-search-toggle],
543
+ [data-part-search-close],
544
+ [data-part-help],
545
+ [data-part-notifications],
546
+ [data-part-account],
547
+ [data-part-action]
551
548
  ) {
552
549
  align-items: center;
553
550
  appearance: none;
@@ -579,13 +576,13 @@
579
576
  * The family's marks — `ellipsis`, `search`, `x`, `circle-question` and
580
577
  * `bell` — are sized by the control they stand in.
581
578
  */
582
- [data-ui='top-navigation']
579
+ [data-ui-top-navigation]
583
580
  :is(
584
- [data-part='more'],
585
- [data-part='search-toggle'],
586
- [data-part='search-close'],
587
- [data-part='help'],
588
- [data-part='notifications']
581
+ [data-part-more],
582
+ [data-part-search-toggle],
583
+ [data-part-search-close],
584
+ [data-part-help],
585
+ [data-part-notifications]
589
586
  ) {
590
587
  --slotted-icon-size: var(--_icon-size);
591
588
  }
@@ -596,90 +593,88 @@
596
593
  * host such as `ng-icon` reads the font-size the child rule gives it. The
597
594
  * count stands out of the flow and is not the glyph.
598
595
  */
599
- [data-ui='top-navigation'] [data-part='action'] {
596
+ [data-ui-top-navigation] [data-part-action] {
600
597
  --slotted-icon-size: var(--_icon-size);
601
598
  }
602
599
 
603
- [data-ui='top-navigation'] [data-part='action'] > :not([data-part='count']) {
600
+ [data-ui-top-navigation] [data-part-action] > :not([data-part-count]) {
604
601
  block-size: var(--_icon-size);
605
602
  flex: 0 0 auto;
606
603
  font-size: var(--_icon-size);
607
604
  inline-size: var(--_icon-size);
608
605
  }
609
606
 
610
- [data-ui='top-navigation']
607
+ [data-ui-top-navigation]
611
608
  :is(
612
- [data-part='more'],
613
- [data-part='search-toggle'],
614
- [data-part='search-close'],
615
- [data-part='notifications'],
616
- [data-part='account']
609
+ [data-part-more],
610
+ [data-part-search-toggle],
611
+ [data-part-search-close],
612
+ [data-part-notifications],
613
+ [data-part-account]
617
614
  ):enabled:hover,
618
- [data-ui='top-navigation']
619
- a:is([data-part='help'], [data-part='action']):not([data-disabled]):hover,
620
- [data-ui='top-navigation'] button:is([data-part='help'], [data-part='action']):enabled:hover {
615
+ [data-ui-top-navigation] a:is([data-part-help], [data-part-action]):not([data-disabled]):hover,
616
+ [data-ui-top-navigation] button:is([data-part-help], [data-part-action]):enabled:hover {
621
617
  background-color: var(--_hover-background);
622
618
  color: var(--_color);
623
619
  }
624
620
 
625
- [data-ui='top-navigation']
621
+ [data-ui-top-navigation]
626
622
  :is(
627
- [data-part='more'],
628
- [data-part='search-toggle'],
629
- [data-part='search-close'],
630
- [data-part='notifications'],
631
- [data-part='account']
623
+ [data-part-more],
624
+ [data-part-search-toggle],
625
+ [data-part-search-close],
626
+ [data-part-notifications],
627
+ [data-part-account]
632
628
  ):enabled:active,
633
- [data-ui='top-navigation']
634
- a:is([data-part='help'], [data-part='action']):not([data-disabled]):active,
635
- [data-ui='top-navigation'] button:is([data-part='help'], [data-part='action']):enabled:active {
629
+ [data-ui-top-navigation] a:is([data-part-help], [data-part-action]):not([data-disabled]):active,
630
+ [data-ui-top-navigation] button:is([data-part-help], [data-part-action]):enabled:active {
636
631
  background-color: var(--_active-background);
637
632
  color: var(--_color);
638
633
  transition-duration: var(--slotted-duration-instant);
639
634
  }
640
635
 
641
636
  /** A control whose layer is open holds the ground the pointer gave it. */
642
- [data-ui='top-navigation']
637
+ [data-ui-top-navigation]
643
638
  :is(
644
- [data-part='more'],
645
- [data-part='notifications'],
646
- [data-part='account'],
647
- [data-part='help'],
648
- [data-part='action']
639
+ [data-part-more],
640
+ [data-part-notifications],
641
+ [data-part-account],
642
+ [data-part-help],
643
+ [data-part-action]
649
644
  )[data-open] {
650
645
  background-color: var(--_hover-background);
651
646
  color: var(--_color);
652
647
  }
653
648
 
654
- [data-ui='top-navigation']
649
+ [data-ui-top-navigation]
655
650
  :is(
656
- [data-part='more'],
657
- [data-part='search-toggle'],
658
- [data-part='search-close'],
659
- [data-part='help'],
660
- [data-part='notifications'],
661
- [data-part='account'],
662
- [data-part='action']
651
+ [data-part-more],
652
+ [data-part-search-toggle],
653
+ [data-part-search-close],
654
+ [data-part-help],
655
+ [data-part-notifications],
656
+ [data-part-account],
657
+ [data-part-action]
663
658
  ):focus-visible {
664
659
  outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);
665
660
  outline-offset: var(--slotted-focus-ring-offset, 2px);
666
661
  }
667
662
 
668
- [data-ui='top-navigation']
663
+ [data-ui-top-navigation]
669
664
  :is(
670
- [data-part='more'],
671
- [data-part='search-toggle'],
672
- [data-part='search-close'],
673
- [data-part='notifications'],
674
- [data-part='account']
665
+ [data-part-more],
666
+ [data-part-search-toggle],
667
+ [data-part-search-close],
668
+ [data-part-notifications],
669
+ [data-part-account]
675
670
  ):disabled,
676
- [data-ui='top-navigation'] button:is([data-part='help'], [data-part='action']):disabled {
671
+ [data-ui-top-navigation] button:is([data-part-help], [data-part-action]):disabled {
677
672
  color: var(--_disabled-color);
678
673
  cursor: not-allowed;
679
674
  }
680
675
 
681
676
  /** The folded destination is where the reader is: `more` says so the way a closed parent does. */
682
- [data-ui='top-navigation'] [data-part='more'][data-current] {
677
+ [data-ui-top-navigation] [data-part-more][data-current] {
683
678
  color: var(--_current-color);
684
679
  }
685
680
 
@@ -690,13 +685,13 @@
690
685
  * and the avatar the bar expects is one step under the control — `xs` at
691
686
  * `md` — which is what leaves the halo whole inside the control's height.
692
687
  */
693
- [data-ui='top-navigation'] [data-part='account'] {
688
+ [data-ui-top-navigation] [data-part-account] {
694
689
  border-radius: var(--slotted-radius-full, 9999px);
695
690
  gap: var(--slotted-space-3, 0.375rem);
696
691
  padding: var(--slotted-space-2, 0.25rem);
697
692
  }
698
693
 
699
- [data-ui='top-navigation'] [data-part='account'] > :not([data-ui='avatar']) {
694
+ [data-ui-top-navigation] [data-part-account] > :not([data-ui-avatar]) {
700
695
  padding-inline-end: var(--slotted-space-3, 0.375rem);
701
696
  }
702
697
 
@@ -721,7 +716,7 @@
721
716
  * figures sat high. `align-content` centres the one line, and the trim
722
717
  * below makes that line the ink.
723
718
  */
724
- [data-ui='top-navigation'] [data-part='count'] {
719
+ [data-ui-top-navigation] [data-part-count] {
725
720
  --_count-font: var(--slotted-control-font-size-sm, 12px);
726
721
  --_count-size: calc(var(--_count-font) * var(--slotted-line-height-xs, 1.4));
727
722
  --_count-inset: calc((var(--_control-height) - var(--_icon-size)) / 2);
@@ -751,7 +746,7 @@
751
746
 
752
747
  /** What is centred is the ink rather than the font's metrics, as `badge` and `avatar` do it. */
753
748
  @supports (text-box: trim-both cap alphabetic) {
754
- [data-ui='top-navigation'] [data-part='count'] {
749
+ [data-ui-top-navigation] [data-part-count] {
755
750
  text-box: trim-both cap alphabetic;
756
751
  }
757
752
  }
@@ -771,7 +766,7 @@
771
766
  * one grid track each, which is not this family's tree; what a field at the
772
767
  * start of the middle aligns with is the brand it follows.
773
768
  */
774
- [data-ui='top-navigation'] [data-part='search'] {
769
+ [data-ui-top-navigation] [data-part-search] {
775
770
  align-items: center;
776
771
  display: flex;
777
772
  /* A shrink weight far above the brand's, so the field gives way to its
@@ -787,20 +782,20 @@
787
782
  min-inline-size: var(--_search-min);
788
783
  }
789
784
 
790
- [data-ui='top-navigation'] [data-part='search'] > :not([data-part='search-close']) {
785
+ [data-ui-top-navigation] [data-part-search] > :not([data-part-search-close]) {
791
786
  flex: 1 1 auto;
792
787
  min-inline-size: 0;
793
788
  }
794
789
 
795
790
  /** The toggle and the close exist for the narrow bar alone. */
796
- [data-ui='top-navigation'] [data-part='search-toggle'],
797
- [data-ui='top-navigation'] [data-part='search-close'] {
791
+ [data-ui-top-navigation] [data-part-search-toggle],
792
+ [data-ui-top-navigation] [data-part-search-close] {
798
793
  display: none;
799
794
  }
800
795
 
801
796
  /* ── Actions ────────────────────────────────────────────────────────────── */
802
797
 
803
- [data-ui='top-navigation'] [data-part='actions'] {
798
+ [data-ui-top-navigation] [data-part-actions] {
804
799
  align-items: center;
805
800
  display: flex;
806
801
  flex: 0 0 auto;
@@ -817,11 +812,11 @@
817
812
  * shows it by the count it writes, which is what a list whose folded items
818
813
  * have all moved into the panel is left with.
819
814
  */
820
- [data-ui='top-navigation'] [data-part='item']:has(> [data-part='more']) {
815
+ [data-ui-top-navigation] [data-part-item]:has(> [data-part-more]) {
821
816
  display: none;
822
817
  }
823
818
 
824
- [data-ui='top-navigation'] [data-part='item']:has(> [data-part='more'][data-overflow]) {
819
+ [data-ui-top-navigation] [data-part-item]:has(> [data-part-more][data-overflow]) {
825
820
  display: flex;
826
821
  }
827
822
 
@@ -832,7 +827,7 @@
832
827
  * style the browser has already computed, and closing leaves from wherever
833
828
  * the panel is. It arrives from one step above its place (R7).
834
829
  */
835
- [data-ui='top-navigation'] [data-part='panel'] {
830
+ [data-ui-top-navigation] [data-part-panel] {
836
831
  --_enter-distance: var(--slotted-space-2, 0.25rem);
837
832
 
838
833
  background-color: var(--_panel-surface);
@@ -860,7 +855,7 @@
860
855
  z-index: calc(var(--slotted-z-index-popover, 1100) + var(--slotted-layer-depth, 0));
861
856
  }
862
857
 
863
- [data-ui='top-navigation'] [data-part='panel'][data-open] {
858
+ [data-ui-top-navigation] [data-part-panel][data-open] {
864
859
  opacity: 1;
865
860
  transition:
866
861
  opacity var(--slotted-duration-medium) var(--slotted-easing-enter),
@@ -870,7 +865,7 @@
870
865
  visibility: visible;
871
866
  }
872
867
 
873
- [data-ui='top-navigation'] [data-part='panel-list'] {
868
+ [data-ui-top-navigation] [data-part-panel-list] {
874
869
  display: flex;
875
870
  flex-direction: column;
876
871
  gap: var(--slotted-space-1, 0.125rem);
@@ -879,7 +874,7 @@
879
874
  padding: 0;
880
875
  }
881
876
 
882
- [data-ui='top-navigation'] [data-part='panel-list']:empty {
877
+ [data-ui-top-navigation] [data-part-panel-list]:empty {
883
878
  display: none;
884
879
  }
885
880
 
@@ -888,16 +883,16 @@
888
883
  * type, the whole width, the label at the start. A section trigger in the
889
884
  * panel keeps its chevron at the end of the row.
890
885
  */
891
- [data-ui='top-navigation'] [data-part='panel'] [data-part='item'] {
886
+ [data-ui-top-navigation] [data-part-panel] [data-part-item] {
892
887
  display: flex;
893
888
  flex: 0 0 auto;
894
889
  }
895
890
 
896
- [data-ui='top-navigation']
897
- [data-part='panel-list']
898
- > [data-part='item']
899
- > :is([data-part='link'], [data-part='trigger']),
900
- [data-ui='top-navigation'] [data-part='panel'] > [data-part='help'] {
891
+ [data-ui-top-navigation]
892
+ [data-part-panel-list]
893
+ > [data-part-item]
894
+ > :is([data-part-link], [data-part-trigger]),
895
+ [data-ui-top-navigation] [data-part-panel] > [data-part-help] {
901
896
  flex: 1 1 auto;
902
897
  font-size: var(--_row-font-size);
903
898
  justify-content: flex-start;
@@ -907,11 +902,11 @@
907
902
  white-space: normal;
908
903
  }
909
904
 
910
- [data-ui='top-navigation']
911
- [data-part='panel-list']
912
- > [data-part='item']
913
- > [data-part='trigger']
914
- > [data-part='indicator'] {
905
+ [data-ui-top-navigation]
906
+ [data-part-panel-list]
907
+ > [data-part-item]
908
+ > [data-part-trigger]
909
+ > [data-part-indicator] {
915
910
  margin-inline-end: 0;
916
911
  margin-inline-start: auto;
917
912
  }
@@ -923,28 +918,23 @@
923
918
  * reader did not ask for. The rows read the row geometry the folded links
924
919
  * already read.
925
920
  */
926
- [data-ui='top-navigation']
927
- [data-part='panel-list']
928
- > [data-part='item']:has(> [data-part='content']) {
921
+ [data-ui-top-navigation] [data-part-panel-list] > [data-part-item]:has(> [data-part-content]) {
929
922
  align-items: stretch;
930
923
  flex-direction: column;
931
924
  }
932
925
 
933
- [data-ui='top-navigation'] [data-part='panel-list'] > [data-part='item'] > [data-part='content'] {
926
+ [data-ui-top-navigation] [data-part-panel-list] > [data-part-item] > [data-part-content] {
934
927
  display: grid;
935
928
  gap: var(--slotted-space-1, 0.125rem);
936
929
  padding-block-end: var(--slotted-space-2, 0.25rem);
937
930
  padding-inline-start: var(--_control-padding);
938
931
  }
939
932
 
940
- [data-ui='top-navigation']
941
- [data-part='panel-list']
942
- > [data-part='item']
943
- > [data-part='content'][hidden] {
933
+ [data-ui-top-navigation] [data-part-panel-list] > [data-part-item] > [data-part-content][hidden] {
944
934
  display: none;
945
935
  }
946
936
 
947
- [data-ui='top-navigation'] [data-part='panel-list'] [data-part='content'] [data-part='links'] {
937
+ [data-ui-top-navigation] [data-part-panel-list] [data-part-content] [data-part-links] {
948
938
  display: grid;
949
939
  gap: var(--slotted-space-1, 0.125rem);
950
940
  list-style: none;
@@ -952,7 +942,7 @@
952
942
  padding: 0;
953
943
  }
954
944
 
955
- [data-ui='top-navigation'] [data-part='panel-list'] [data-part='content'] [data-part='link'] {
945
+ [data-ui-top-navigation] [data-part-panel-list] [data-part-content] [data-part-link] {
956
946
  align-content: center;
957
947
  border-radius: var(--_radius);
958
948
  color: var(--_color);
@@ -967,56 +957,56 @@
967
957
  transition: background-color var(--_duration) var(--_easing);
968
958
  }
969
959
 
970
- [data-ui='top-navigation']
971
- [data-part='panel-list']
972
- [data-part='content']
973
- [data-part='link']:not([data-disabled], [data-current], [aria-current='page']):hover {
960
+ [data-ui-top-navigation]
961
+ [data-part-panel-list]
962
+ [data-part-content]
963
+ [data-part-link]:not([data-disabled], [data-current], [aria-current='page']):hover {
974
964
  background-color: var(--_hover-background);
975
965
  }
976
966
 
977
- [data-ui='top-navigation']
978
- [data-part='panel-list']
979
- [data-part='content']
980
- [data-part='link']:not([data-disabled], [data-current], [aria-current='page']):active {
967
+ [data-ui-top-navigation]
968
+ [data-part-panel-list]
969
+ [data-part-content]
970
+ [data-part-link]:not([data-disabled], [data-current], [aria-current='page']):active {
981
971
  background-color: var(--_active-background);
982
972
  transition-duration: var(--slotted-duration-instant);
983
973
  }
984
974
 
985
- [data-ui='top-navigation']
986
- [data-part='panel-list']
987
- [data-part='content']
988
- [data-part='link']:is([data-current], [aria-current='page']) {
975
+ [data-ui-top-navigation]
976
+ [data-part-panel-list]
977
+ [data-part-content]
978
+ [data-part-link]:is([data-current], [aria-current='page']) {
989
979
  background-color: var(--_current-background);
990
980
  box-shadow: inset 0 0 0 var(--_rule-width) var(--_current-edge);
991
981
  color: var(--_current-color);
992
982
  }
993
983
 
994
- [data-ui='top-navigation']
995
- [data-part='panel-list']
996
- [data-part='content']
997
- [data-part='link'][data-disabled] {
984
+ [data-ui-top-navigation]
985
+ [data-part-panel-list]
986
+ [data-part-content]
987
+ [data-part-link][data-disabled] {
998
988
  color: var(--_disabled-color);
999
989
  cursor: not-allowed;
1000
990
  }
1001
991
 
1002
- [data-ui='top-navigation']
1003
- [data-part='panel-list']
1004
- [data-part='content']
1005
- [data-part='link']:focus-visible {
992
+ [data-ui-top-navigation]
993
+ [data-part-panel-list]
994
+ [data-part-content]
995
+ [data-part-link]:focus-visible {
1006
996
  outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);
1007
997
  outline-offset: calc(var(--slotted-focus-ring-width, 2px) * -1);
1008
998
  }
1009
999
 
1010
1000
  /** A link of plain words, or a rich one with no mark, starts its text at the inset. */
1011
- [data-ui='top-navigation']
1012
- [data-part='panel-list']
1013
- [data-part='content']
1014
- [data-part='link']:not(:has(> [data-part='icon']))
1001
+ [data-ui-top-navigation]
1002
+ [data-part-panel-list]
1003
+ [data-part-content]
1004
+ [data-part-link]:not(:has(> [data-part-icon]))
1015
1005
  > * {
1016
1006
  grid-column: 1 / -1;
1017
1007
  }
1018
1008
 
1019
- [data-ui='top-navigation'] [data-part='panel-list'] [data-part='content'] [data-part='icon'] {
1009
+ [data-ui-top-navigation] [data-part-panel-list] [data-part-content] [data-part-icon] {
1020
1010
  --slotted-icon-size: var(--_icon-size);
1021
1011
 
1022
1012
  color: var(--_muted-color);
@@ -1024,19 +1014,13 @@
1024
1014
  grid-row: 1 / span 2;
1025
1015
  }
1026
1016
 
1027
- [data-ui='top-navigation']
1028
- [data-part='panel-list']
1029
- [data-part='content']
1030
- [data-part='description'] {
1017
+ [data-ui-top-navigation] [data-part-panel-list] [data-part-content] [data-part-description] {
1031
1018
  color: var(--_muted-color);
1032
1019
  font-size: var(--slotted-font-size-xs, 0.75rem);
1033
1020
  grid-column: 2;
1034
1021
  }
1035
1022
 
1036
- [data-ui='top-navigation']
1037
- [data-part='panel-list']
1038
- [data-part='content']
1039
- [data-part='group-label'] {
1023
+ [data-ui-top-navigation] [data-part-panel-list] [data-part-content] [data-part-group-label] {
1040
1024
  color: var(--_muted-color);
1041
1025
  font-size: var(--slotted-font-size-xs, 0.75rem);
1042
1026
  font-weight: var(--slotted-font-weight-semibold, 600);
@@ -1044,7 +1028,7 @@
1044
1028
  padding-inline: var(--_control-padding);
1045
1029
  }
1046
1030
 
1047
- [data-ui='top-navigation'] [data-part='panel-list'] [data-part='content'] [data-part='footer'] {
1031
+ [data-ui-top-navigation] [data-part-panel-list] [data-part-content] [data-part-footer] {
1048
1032
  align-items: center;
1049
1033
  border-block-start: var(--_rule-width) solid var(--_border-color);
1050
1034
  display: flex;
@@ -1061,7 +1045,7 @@
1061
1045
  * in both places, from the same text. The words are a text node, which no
1062
1046
  * child selector reaches, so the box itself does the hiding.
1063
1047
  */
1064
- [data-ui='top-navigation'] [data-part='actions'] > [data-part='help'] {
1048
+ [data-ui-top-navigation] [data-part-actions] > [data-part-help] {
1065
1049
  gap: var(--_control-height);
1066
1050
  inline-size: var(--_control-height);
1067
1051
  justify-content: flex-start;
@@ -1069,11 +1053,11 @@
1069
1053
  padding-inline-start: calc((var(--_control-height) - var(--_icon-size)) / 2);
1070
1054
  }
1071
1055
 
1072
- [data-ui='top-navigation'] [data-part='panel'] > [data-part='help'] {
1056
+ [data-ui-top-navigation] [data-part-panel] > [data-part-help] {
1073
1057
  gap: var(--_gap);
1074
1058
  }
1075
1059
 
1076
- [data-ui='top-navigation'] [data-part='panel'] > [data-part='context'] {
1060
+ [data-ui-top-navigation] [data-part-panel] > [data-part-context] {
1077
1061
  padding: var(--slotted-space-2, 0.25rem) var(--slotted-space-3, 0.375rem);
1078
1062
  }
1079
1063
 
@@ -1084,20 +1068,20 @@
1084
1068
  * the list and on help, from what the panel holds rather than from what
1085
1069
  * stands before them, for the same reason.
1086
1070
  */
1087
- [data-ui='top-navigation'] [data-part='panel'] > [data-part='context'] {
1071
+ [data-ui-top-navigation] [data-part-panel] > [data-part-context] {
1088
1072
  order: -1;
1089
1073
  }
1090
1074
 
1091
- [data-ui='top-navigation'] [data-part='panel'] > [data-part='help'] {
1075
+ [data-ui-top-navigation] [data-part-panel] > [data-part-help] {
1092
1076
  order: 1;
1093
1077
  }
1094
1078
 
1095
- [data-ui='top-navigation']
1096
- [data-part='panel']:has(> [data-part='context'])
1097
- > [data-part='panel-list']:not(:empty),
1098
- [data-ui='top-navigation']
1099
- [data-part='panel']:has(> [data-part='panel-list']:not(:empty), > [data-part='context'])
1100
- > [data-part='help'] {
1079
+ [data-ui-top-navigation]
1080
+ [data-part-panel]:has(> [data-part-context])
1081
+ > [data-part-panel-list]:not(:empty),
1082
+ [data-ui-top-navigation]
1083
+ [data-part-panel]:has(> [data-part-panel-list]:not(:empty), > [data-part-context])
1084
+ > [data-part-help] {
1101
1085
  border-block-start: var(--_rule-width) solid var(--_border-color);
1102
1086
  padding-block-start: var(--slotted-space-2, 0.25rem);
1103
1087
  }
@@ -1111,90 +1095,90 @@
1111
1095
  * width already has the button.
1112
1096
  */
1113
1097
  @container slotted-top-navigation (inline-size < 1024px) {
1114
- [data-ui='top-navigation'] [data-part='list'] > [data-part='item'][data-priority='low'] {
1098
+ [data-ui-top-navigation] [data-part-list] > [data-part-item][data-priority='low'] {
1115
1099
  display: none;
1116
1100
  }
1117
1101
 
1118
- [data-ui='top-navigation']
1119
- [data-part='list']:has(> [data-part='item'][data-priority='low'])
1120
- > [data-part='item']:has(> [data-part='more']) {
1102
+ [data-ui-top-navigation]
1103
+ [data-part-list]:has(> [data-part-item][data-priority='low'])
1104
+ > [data-part-item]:has(> [data-part-more]) {
1121
1105
  display: flex;
1122
1106
  }
1123
1107
  }
1124
1108
 
1125
1109
  @container slotted-top-navigation (inline-size < 600px) {
1126
- [data-ui='top-navigation']
1127
- [data-part='list']
1128
- > [data-part='item']:not([data-priority='low']):not([data-priority='high']):not(
1129
- :has(> [data-part='more'])
1110
+ [data-ui-top-navigation]
1111
+ [data-part-list]
1112
+ > [data-part-item]:not([data-priority='low']):not([data-priority='high']):not(
1113
+ :has(> [data-part-more])
1130
1114
  ) {
1131
1115
  display: none;
1132
1116
  }
1133
1117
 
1134
- [data-ui='top-navigation']
1135
- [data-part='list']:has(
1136
- > [data-part='item']:not([data-priority='low']):not([data-priority='high']):not(
1137
- :has(> [data-part='more'])
1118
+ [data-ui-top-navigation]
1119
+ [data-part-list]:has(
1120
+ > [data-part-item]:not([data-priority='low']):not([data-priority='high']):not(
1121
+ :has(> [data-part-more])
1138
1122
  )
1139
1123
  )
1140
- > [data-part='item']:has(> [data-part='more']) {
1124
+ > [data-part-item]:has(> [data-part-more]) {
1141
1125
  display: flex;
1142
1126
  }
1143
1127
 
1144
1128
  /* The field gives way to its toggle; open, it takes the whole bar. */
1145
- [data-ui='top-navigation']:not([data-search-open]) [data-part='search'] {
1129
+ [data-ui-top-navigation]:not([data-search-open]) [data-part-search] {
1146
1130
  display: none;
1147
1131
  }
1148
1132
 
1149
- [data-ui='top-navigation']:not([data-search-open]) [data-part='search-toggle'] {
1133
+ [data-ui-top-navigation]:not([data-search-open]) [data-part-search-toggle] {
1150
1134
  display: inline-flex;
1151
1135
  }
1152
1136
 
1153
- [data-ui='top-navigation'][data-search-open] [data-part='search'] {
1137
+ [data-ui-top-navigation][data-search-open] [data-part-search] {
1154
1138
  max-inline-size: none;
1155
1139
  padding-inline: var(--_edge);
1156
1140
  }
1157
1141
 
1158
- [data-ui='top-navigation'][data-search-open] [data-part='search-close'] {
1142
+ [data-ui-top-navigation][data-search-open] [data-part-search-close] {
1159
1143
  display: inline-flex;
1160
1144
  }
1161
1145
 
1162
- [data-ui='top-navigation'][data-search-open]
1163
- > :is([data-part='brand'], [data-part='context'], [data-part='nav'], [data-part='actions']) {
1146
+ [data-ui-top-navigation][data-search-open]
1147
+ > :is([data-part-brand], [data-part-context], [data-part-nav], [data-part-actions]) {
1164
1148
  display: none;
1165
1149
  }
1166
1150
 
1167
1151
  /* The account keeps its avatar and gives up the name beside it. */
1168
- [data-ui='top-navigation'] [data-part='account'] > :not([data-ui='avatar']) {
1152
+ [data-ui-top-navigation] [data-part-account] > :not([data-ui-avatar]) {
1169
1153
  display: none;
1170
1154
  }
1171
1155
 
1172
1156
  /* The context moves to the panel; in the bar it leaves, and `more` shows for it. */
1173
- [data-ui='top-navigation'] > [data-part='context'] {
1157
+ [data-ui-top-navigation] > [data-part-context] {
1174
1158
  display: none;
1175
1159
  }
1176
1160
 
1177
- [data-ui='top-navigation']:has(> [data-part='context'])
1178
- [data-part='list']
1179
- > [data-part='item']:has(> [data-part='more']) {
1161
+ [data-ui-top-navigation]:has(> [data-part-context])
1162
+ [data-part-list]
1163
+ > [data-part-item]:has(> [data-part-more]) {
1180
1164
  display: flex;
1181
1165
  }
1182
1166
  }
1183
1167
 
1184
1168
  @container slotted-top-navigation (inline-size < 480px) {
1185
1169
  /* Six controls in a row: the air between them is what gives way. */
1186
- [data-ui='top-navigation'] {
1170
+ [data-ui-top-navigation] {
1187
1171
  --_gap: var(--slotted-space-2, 0.25rem);
1188
1172
  --_action-gap: var(--slotted-space-2, 0.25rem);
1189
1173
  }
1190
1174
 
1191
- [data-ui='top-navigation'] [data-part='list'] > [data-part='item'][data-priority='high'] {
1175
+ [data-ui-top-navigation] [data-part-list] > [data-part-item][data-priority='high'] {
1192
1176
  display: none;
1193
1177
  }
1194
1178
 
1195
- [data-ui='top-navigation']
1196
- [data-part='list']:has(> [data-part='item'][data-priority='high'])
1197
- > [data-part='item']:has(> [data-part='more']) {
1179
+ [data-ui-top-navigation]
1180
+ [data-part-list]:has(> [data-part-item][data-priority='high'])
1181
+ > [data-part-item]:has(> [data-part-more]) {
1198
1182
  display: flex;
1199
1183
  }
1200
1184
 
@@ -1204,13 +1188,13 @@
1204
1188
  * gap's far edge instead and grows toward the bell: the disc still sits on
1205
1189
  * the corner, and a pill covers the bell's top before it covers a control.
1206
1190
  */
1207
- [data-ui='top-navigation'] [data-part='count'] {
1191
+ [data-ui-top-navigation] [data-part-count] {
1208
1192
  inset-inline-end: calc(var(--slotted-border-width-thick, 2px) - var(--_action-gap));
1209
1193
  inset-inline-start: auto;
1210
1194
  }
1211
1195
 
1212
1196
  /* The name leaves the eye and not the DOM: `home` keeps its accessible name. */
1213
- [data-ui='top-navigation'] [data-part='name'] {
1197
+ [data-ui-top-navigation] [data-part-name] {
1214
1198
  clip-path: inset(50%);
1215
1199
  inline-size: 1px;
1216
1200
  margin: 0;
@@ -1220,22 +1204,22 @@
1220
1204
  }
1221
1205
 
1222
1206
  /* Out of flow, the name leaves its track empty; one track, or the gap stays. */
1223
- [data-ui='top-navigation'] [data-part='home'] {
1207
+ [data-ui-top-navigation] [data-part-home] {
1224
1208
  grid-template-columns: auto;
1225
1209
  }
1226
1210
 
1227
1211
  /* Help moves to the panel; in the bar it leaves, and `more` shows for it. */
1228
- [data-ui='top-navigation'] [data-part='actions'] > [data-part='help'] {
1212
+ [data-ui-top-navigation] [data-part-actions] > [data-part-help] {
1229
1213
  display: none;
1230
1214
  }
1231
1215
 
1232
- [data-ui='top-navigation']:has([data-part='actions'] > [data-part='help'])
1233
- [data-part='list']
1234
- > [data-part='item']:has(> [data-part='more']) {
1216
+ [data-ui-top-navigation]:has([data-part-actions] > [data-part-help])
1217
+ [data-part-list]
1218
+ > [data-part-item]:has(> [data-part-more]) {
1235
1219
  display: flex;
1236
1220
  }
1237
1221
 
1238
- [data-ui='top-navigation'] [data-part='panel'] {
1222
+ [data-ui-top-navigation] [data-part-panel] {
1239
1223
  inline-size: auto;
1240
1224
  inset-inline: var(--_edge);
1241
1225
  }
@@ -1244,8 +1228,8 @@
1244
1228
  /* ── Stillness ──────────────────────────────────────────────────────────── */
1245
1229
 
1246
1230
  @media (prefers-reduced-motion: reduce) {
1247
- [data-ui='top-navigation'] [data-part='panel'],
1248
- [data-ui='top-navigation'] [data-part='panel'][data-open] {
1231
+ [data-ui-top-navigation] [data-part-panel],
1232
+ [data-ui-top-navigation] [data-part-panel][data-open] {
1249
1233
  translate: 0 0;
1250
1234
  }
1251
1235
  }
@@ -1253,34 +1237,34 @@
1253
1237
  /* ── Forced colours ─────────────────────────────────────────────────────── */
1254
1238
 
1255
1239
  @media (forced-colors: active) {
1256
- [data-ui='top-navigation']
1257
- :is([data-part='nav'] > [data-part='list'], [data-part='panel-list'])
1258
- > [data-part='item']
1259
- > [data-part='link']:is([data-current], [aria-current='page']) {
1240
+ [data-ui-top-navigation]
1241
+ :is([data-part-nav] > [data-part-list], [data-part-panel-list])
1242
+ > [data-part-item]
1243
+ > [data-part-link]:is([data-current], [aria-current='page']) {
1260
1244
  background-color: Highlight;
1261
1245
  color: HighlightText;
1262
1246
  forced-color-adjust: none;
1263
1247
  }
1264
1248
 
1265
- [data-ui='top-navigation'] [data-part='count'] {
1249
+ [data-ui-top-navigation] [data-part-count] {
1266
1250
  background-color: Highlight;
1267
1251
  color: HighlightText;
1268
1252
  forced-color-adjust: none;
1269
1253
  }
1270
1254
 
1271
- [data-ui='top-navigation']
1272
- :is([data-part='nav'] > [data-part='list'], [data-part='panel-list'])
1273
- > [data-part='item'][data-disabled]
1274
- > [data-part='link'],
1275
- [data-ui='top-navigation']
1276
- :is([data-part='nav'] > [data-part='list'], [data-part='panel-list'])
1277
- > [data-part='item']
1278
- > [data-part='trigger']:disabled {
1255
+ [data-ui-top-navigation]
1256
+ :is([data-part-nav] > [data-part-list], [data-part-panel-list])
1257
+ > [data-part-item][data-disabled]
1258
+ > [data-part-link],
1259
+ [data-ui-top-navigation]
1260
+ :is([data-part-nav] > [data-part-list], [data-part-panel-list])
1261
+ > [data-part-item]
1262
+ > [data-part-trigger]:disabled {
1279
1263
  color: GrayText;
1280
1264
  }
1281
1265
 
1282
- [data-ui='top-navigation'][data-frame],
1283
- [data-ui='top-navigation'] [data-part='panel'] {
1266
+ [data-ui-top-navigation][data-frame],
1267
+ [data-ui-top-navigation] [data-part-panel] {
1284
1268
  border-color: CanvasText;
1285
1269
  }
1286
1270
  }