@slotted/styles 0.1.0-beta.1 → 0.1.0-beta.11

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 (180) hide show
  1. package/package.json +1 -1
  2. package/src/accordion/accordion.css +10 -10
  3. package/src/action-bar/action-bar.css +35 -42
  4. package/src/action-sheet/action-sheet.css +36 -36
  5. package/src/alert/alert.css +43 -35
  6. package/src/alert/alert.tokens.json +5 -0
  7. package/src/app-shell/app-shell.css +356 -301
  8. package/src/aspect-ratio/aspect-ratio.css +9 -9
  9. package/src/attachment/attachment.css +91 -99
  10. package/src/avatar/avatar.css +71 -41
  11. package/src/avatar/avatar.tokens.json +7 -0
  12. package/src/avatar-group/avatar-group.css +21 -22
  13. package/src/badge/badge.css +45 -37
  14. package/src/badge/badge.tokens.json +5 -0
  15. package/src/breadcrumb/breadcrumb.css +37 -37
  16. package/src/button/button.css +149 -68
  17. package/src/button/button.tokens.json +10 -0
  18. package/src/button-group/button-group.css +79 -74
  19. package/src/button-group/button-group.tokens.json +2 -0
  20. package/src/calendar/calendar.css +93 -103
  21. package/src/card/card.css +54 -61
  22. package/src/carousel/carousel.css +150 -161
  23. package/src/cascader/cascader.css +152 -153
  24. package/src/cascader/cascader.tokens.json +1 -0
  25. package/src/chart/chart.css +242 -239
  26. package/src/chart/chart.tokens.json +1 -0
  27. package/src/checkbox/checkbox.css +119 -124
  28. package/src/checkbox-group/checkbox-group.css +7 -7
  29. package/src/code-block/code-block.css +81 -85
  30. package/src/collapsible/collapsible.css +69 -76
  31. package/src/color-picker/color-picker.css +83 -91
  32. package/src/column-manager/column-manager.css +106 -114
  33. package/src/combobox/combobox.css +132 -107
  34. package/src/combobox/combobox.tokens.json +1 -0
  35. package/src/command-palette/command-palette.css +103 -90
  36. package/src/command-palette/command-palette.tokens.json +1 -0
  37. package/src/container/container.css +24 -24
  38. package/src/context-menu/context-menu.css +8 -8
  39. package/src/currency-field/currency-field.css +210 -88
  40. package/src/currency-field/currency-field.tokens.json +13 -0
  41. package/src/dashboard-grid/dashboard-grid.css +148 -116
  42. package/src/data-grid/data-grid.css +535 -470
  43. package/src/data-grid/data-grid.tokens.json +4 -0
  44. package/src/data-list/data-list.css +81 -70
  45. package/src/data-list/data-list.tokens.json +2 -1
  46. package/src/date-field/date-field.css +55 -52
  47. package/src/date-field/date-field.tokens.json +1 -0
  48. package/src/date-picker/date-picker.css +40 -42
  49. package/src/date-range-picker/date-range-picker.css +114 -118
  50. package/src/datetime-field/datetime-field.css +78 -80
  51. package/src/datetime-field/datetime-field.tokens.json +1 -0
  52. package/src/datetime-picker/datetime-picker.css +61 -63
  53. package/src/datetime-range-picker/datetime-range-picker.css +149 -156
  54. package/src/description-list/description-list.css +61 -64
  55. package/src/detail-panel/detail-panel.css +86 -71
  56. package/src/detail-panel/detail-panel.tokens.json +2 -0
  57. package/src/dialog/dialog.css +372 -153
  58. package/src/dialog/dialog.tokens.json +6 -0
  59. package/src/divider/divider.css +18 -18
  60. package/src/drawer/drawer.css +205 -210
  61. package/src/drawer/drawer.tokens.json +1 -0
  62. package/src/entity-picker/entity-picker.css +238 -241
  63. package/src/entity-picker/entity-picker.tokens.json +1 -0
  64. package/src/event-calendar/event-calendar.css +343 -385
  65. package/src/field/field.css +74 -78
  66. package/src/field-group/field-group.css +22 -25
  67. package/src/filter-bar/filter-bar.css +193 -209
  68. package/src/form/form.css +34 -24
  69. package/src/form/form.tokens.json +1 -0
  70. package/src/fullscreen/fullscreen.css +24 -25
  71. package/src/grid/grid.css +28 -28
  72. package/src/highlight/highlight.css +6 -6
  73. package/src/hover-card/hover-card.css +6 -6
  74. package/src/icon/icon.css +19 -15
  75. package/src/icon/icon.tokens.json +1 -0
  76. package/src/image/image.css +39 -39
  77. package/src/import-export-center/import-export-center.css +135 -156
  78. package/src/inline/inline.css +27 -27
  79. package/src/inline-message/inline-message.css +52 -28
  80. package/src/inline-message/inline-message.tokens.json +4 -0
  81. package/src/kbd/kbd.css +30 -26
  82. package/src/link/link.css +15 -15
  83. package/src/list/list.css +44 -17
  84. package/src/list/list.tokens.json +4 -0
  85. package/src/list-item/list-item.css +80 -66
  86. package/src/list-item/list-item.tokens.json +7 -0
  87. package/src/listbox/listbox.css +56 -59
  88. package/src/loading-overlay/loading-overlay.css +75 -92
  89. package/src/markdown/markdown.css +17 -17
  90. package/src/menu/menu.css +83 -63
  91. package/src/menubar/menubar.css +13 -13
  92. package/src/message/message.css +182 -202
  93. package/src/message/message.tokens.json +5 -0
  94. package/src/message-scroller/message-scroller.css +41 -42
  95. package/src/multi-select/multi-select.css +152 -145
  96. package/src/multi-select/multi-select.tokens.json +1 -0
  97. package/src/navigation-menu/navigation-menu.css +167 -188
  98. package/src/notification-center/notification-center.css +140 -148
  99. package/src/notification-center/notification-center.tokens.json +3 -0
  100. package/src/number-field/number-field.css +84 -83
  101. package/src/number-field/number-field.tokens.json +1 -0
  102. package/src/otp-input/otp-input.css +67 -57
  103. package/src/otp-input/otp-input.tokens.json +1 -0
  104. package/src/page/page.css +39 -23
  105. package/src/page/page.tokens.json +1 -0
  106. package/src/page-header/page-header.css +323 -283
  107. package/src/page-header/page-header.tokens.json +5 -0
  108. package/src/pagination/pagination.css +68 -72
  109. package/src/popover/popover.css +40 -49
  110. package/src/progress-indicator/progress-indicator.css +177 -120
  111. package/src/progress-indicator/progress-indicator.tokens.json +1 -1
  112. package/src/prompt-composer/prompt-composer.css +221 -102
  113. package/src/prompt-composer/prompt-composer.tokens.json +15 -0
  114. package/src/prose/prose.css +71 -75
  115. package/src/radio-group/radio-group.css +98 -103
  116. package/src/rating/rating.css +136 -132
  117. package/src/rating/rating.tokens.json +1 -0
  118. package/src/result-state/result-state.css +74 -77
  119. package/src/runtime-properties.mjs +2 -0
  120. package/src/saved-views/saved-views.css +41 -47
  121. package/src/scroll-area/scroll-area.css +39 -32
  122. package/src/section/section.css +161 -41
  123. package/src/section/section.tokens.json +7 -2
  124. package/src/segmented-control/segmented-control.css +254 -97
  125. package/src/segmented-control/segmented-control.tokens.json +15 -11
  126. package/src/select/select.css +118 -117
  127. package/src/select/select.tokens.json +1 -0
  128. package/src/side-navigation/side-navigation.css +179 -182
  129. package/src/side-navigation/side-navigation.tokens.json +1 -0
  130. package/src/skeleton/skeleton.css +47 -48
  131. package/src/slider/slider.css +86 -88
  132. package/src/sparkline/sparkline.css +62 -40
  133. package/src/sparkline/sparkline.tokens.json +2 -0
  134. package/src/spinner/spinner.css +83 -180
  135. package/src/spinner/spinner.tokens.json +0 -1
  136. package/src/split-button/split-button.css +30 -31
  137. package/src/split-button/split-button.tokens.json +1 -0
  138. package/src/splitter/splitter.css +35 -35
  139. package/src/stack/stack.css +24 -24
  140. package/src/stat-card/stat-card.css +341 -224
  141. package/src/stat-card/stat-card.tokens.json +3 -0
  142. package/src/status-indicator/status-indicator.css +28 -28
  143. package/src/stepper/stepper.css +58 -62
  144. package/src/switch/switch.css +86 -92
  145. package/src/table/table.css +310 -165
  146. package/src/table/table.tokens.json +6 -0
  147. package/src/table-of-contents/table-of-contents.css +51 -54
  148. package/src/tabs/tabs.css +337 -302
  149. package/src/tabs/tabs.tokens.json +8 -5
  150. package/src/tag/tag.css +79 -71
  151. package/src/tag/tag.tokens.json +9 -0
  152. package/src/tags-input/tags-input.css +145 -82
  153. package/src/tags-input/tags-input.tokens.json +7 -1
  154. package/src/text-field/text-field.css +132 -136
  155. package/src/text-field/text-field.tokens.json +1 -0
  156. package/src/textarea/textarea.css +31 -28
  157. package/src/textarea/textarea.tokens.json +1 -0
  158. package/src/time-field/time-field.css +72 -69
  159. package/src/time-field/time-field.tokens.json +1 -0
  160. package/src/time-picker/time-picker.css +56 -58
  161. package/src/time-range-picker/time-range-picker.css +126 -133
  162. package/src/timeline/timeline.css +254 -266
  163. package/src/timeline/timeline.tokens.json +5 -0
  164. package/src/toast/toast.css +108 -90
  165. package/src/toast/toast.tokens.json +6 -0
  166. package/src/toggle/toggle.css +62 -25
  167. package/src/toggle/toggle.tokens.json +8 -0
  168. package/src/toggle-group/toggle-group.css +106 -60
  169. package/src/toggle-group/toggle-group.tokens.json +10 -0
  170. package/src/toolbar/toolbar.css +30 -35
  171. package/src/tooltip/tooltip.css +26 -26
  172. package/src/top-navigation/top-navigation.css +243 -259
  173. package/src/tour/tour.css +51 -60
  174. package/src/transfer/transfer.css +160 -164
  175. package/src/tree/tree.css +103 -111
  176. package/src/typography/typography.css +40 -36
  177. package/src/typography/typography.tokens.json +1 -0
  178. package/src/upload/upload.css +224 -224
  179. package/src/visually-hidden/visually-hidden.css +1 -1
  180. package/src/wizard/wizard.css +185 -197
@@ -29,7 +29,7 @@
29
29
  * shell's toggle and its account control. Outside the shell the fallbacks
30
30
  * are the same numbers the shell composes its own from.
31
31
  */
32
- [data-ui='side-navigation'] {
32
+ [data-ui-side-navigation] {
33
33
  --_row-height: var(--slotted-app-shell-row-height, var(--slotted-control-height-md, 34px));
34
34
  /** The mark's box is the row's height: a square the mark is centred in. */
35
35
  --_mark: var(--slotted-app-shell-row-mark, var(--_row-height));
@@ -48,6 +48,13 @@
48
48
  * there is to give.
49
49
  */
50
50
  --_standoff: min(var(--slotted-space-2, 0.25rem), var(--_inset));
51
+ /**
52
+ * The inline padding `app-shell`'s navigation parts add for an outward
53
+ * focus ring, read so a row's box keeps the edge it had there: the row
54
+ * reaches back into that padding, and its own ring is drawn inside. Nought
55
+ * outside those parts.
56
+ */
57
+ --_ring-inset: var(--slotted-app-shell-row-ring-inset, 0px);
51
58
  --_gap: var(--slotted-app-shell-row-gap, var(--slotted-control-gap-md, 8px));
52
59
  --_font-size: var(--slotted-app-shell-row-font-size, var(--slotted-font-size-sm, 0.8125rem));
53
60
  --_line-height: var(--slotted-app-shell-row-line-height, var(--slotted-line-height-sm, 1.45));
@@ -142,7 +149,7 @@
142
149
  min-inline-size: 0;
143
150
  }
144
151
 
145
- [data-ui='side-navigation'][data-size='sm'] {
152
+ [data-ui-side-navigation][data-size='sm'] {
146
153
  --_row-height: var(--slotted-control-height-sm, 30px);
147
154
  --_mark: var(--_row-height);
148
155
  --_gap: var(--slotted-control-gap-sm, 6px);
@@ -151,7 +158,7 @@
151
158
  --_icon-size: var(--slotted-control-icon-size-sm, 14px);
152
159
  }
153
160
 
154
- [data-ui='side-navigation'][data-size='lg'] {
161
+ [data-ui-side-navigation][data-size='lg'] {
155
162
  --_row-height: var(--slotted-control-height-lg, 38px);
156
163
  --_mark: var(--_row-height);
157
164
  --_gap: var(--slotted-control-gap-lg, 8px);
@@ -163,7 +170,7 @@
163
170
 
164
171
  /* ── The root ─────────────────────────────────────────────────────────── */
165
172
 
166
- [data-ui='side-navigation'][data-part='root'] {
173
+ [data-ui-side-navigation][data-part-root] {
167
174
  container-name: slotted-side-navigation;
168
175
  container-type: inline-size;
169
176
  display: flex;
@@ -177,7 +184,7 @@
177
184
  inline-size: 100%;
178
185
  }
179
186
 
180
- [data-ui='side-navigation'] [data-part='section'] {
187
+ [data-ui-side-navigation] [data-part-section] {
181
188
  display: flex;
182
189
  flex-direction: column;
183
190
  min-inline-size: 0;
@@ -189,7 +196,7 @@
189
196
  * column: a navigation whose rows carry no marks keeps its titles near its
190
197
  * words, and one whose rows do keeps them on the glyphs' own edge.
191
198
  */
192
- [data-ui='side-navigation'] [data-part='section-label'] {
199
+ [data-ui-side-navigation] [data-part-section-label] {
193
200
  color: var(--_section-color);
194
201
  font-size: var(--_section-font-size);
195
202
  font-weight: var(--slotted-font-weight-semibold, 600);
@@ -206,8 +213,8 @@
206
213
  padding-inline: calc(var(--_inset) + (var(--_mark) - var(--_icon-size)) / 2);
207
214
  }
208
215
 
209
- [data-ui='side-navigation'] [data-part='list'],
210
- [data-ui='side-navigation'] [data-part='group'] {
216
+ [data-ui-side-navigation] [data-part-list],
217
+ [data-ui-side-navigation] [data-part-group] {
211
218
  display: flex;
212
219
  flex-direction: column;
213
220
  gap: var(--_row-gap);
@@ -224,7 +231,7 @@
224
231
  * and a second row for the group. A trigger that is the whole row spans the
225
232
  * three columns; the group always does.
226
233
  */
227
- [data-ui='side-navigation'] [data-part='item'] {
234
+ [data-ui-side-navigation] [data-part-item] {
228
235
  /**
229
236
  * `start`, not the default stretch. While the second track is between
230
237
  * `0fr` and `1fr` the grid holds free space, and a stretched `auto` first
@@ -264,11 +271,11 @@
264
271
  transition: grid-template-rows var(--slotted-duration-medium) var(--_easing);
265
272
  }
266
273
 
267
- [data-ui='side-navigation'] [data-part='item'][data-expanded] {
274
+ [data-ui-side-navigation] [data-part-item][data-expanded] {
268
275
  grid-template-rows: auto 1fr;
269
276
  }
270
277
 
271
- [data-ui='side-navigation'] [data-part='item'] > [data-part='group'] {
278
+ [data-ui-side-navigation] [data-part-item] > [data-part-group] {
272
279
  grid-column: 1 / -1;
273
280
  grid-row: 2;
274
281
  min-block-size: 0;
@@ -290,7 +297,7 @@
290
297
  visibility: hidden;
291
298
  }
292
299
 
293
- [data-ui='side-navigation'] [data-part='item'][data-expanded] > [data-part='group'] {
300
+ [data-ui-side-navigation] [data-part-item][data-expanded] > [data-part-group] {
294
301
  opacity: 1;
295
302
  padding-block-start: var(--_row-gap);
296
303
  transition:
@@ -306,19 +313,19 @@
306
313
  * guide runs down the mark's centre: shadcn and Primer both draw it, and it
307
314
  * is what tells a third level from a second.
308
315
  */
309
- [data-ui='side-navigation'] [data-part='item'] > [data-part='group'] {
316
+ [data-ui-side-navigation] [data-part-item] > [data-part-group] {
310
317
  padding-inline-start: var(--_indent-step);
311
318
  position: relative;
312
319
  }
313
320
 
314
321
  /* Under a row with a mark, the children stand under the parent's words. */
315
- [data-ui='side-navigation']
316
- [data-part='item']:has(> :is([data-part='link'], [data-part='trigger']) > [data-part='icon'])
317
- > [data-part='group'] {
322
+ [data-ui-side-navigation]
323
+ [data-part-item]:has(> :is([data-part-link], [data-part-trigger]) > [data-part-icon])
324
+ > [data-part-group] {
318
325
  padding-inline-start: var(--_indent);
319
326
  }
320
327
 
321
- [data-ui='side-navigation'][data-guides] [data-part='item'] > [data-part='group']::before {
328
+ [data-ui-side-navigation][data-guides] [data-part-item] > [data-part-group]::before {
322
329
  background-color: var(--_guide-color);
323
330
  content: '';
324
331
  inline-size: var(--_guide-width);
@@ -329,15 +336,15 @@
329
336
  }
330
337
 
331
338
  /* … and down the centre of the mark for one that has it. */
332
- [data-ui='side-navigation'][data-guides]
333
- [data-part='item']:has(> :is([data-part='link'], [data-part='trigger']) > [data-part='icon'])
334
- > [data-part='group']::before {
339
+ [data-ui-side-navigation][data-guides]
340
+ [data-part-item]:has(> :is([data-part-link], [data-part-trigger]) > [data-part-icon])
341
+ > [data-part-group]::before {
335
342
  inset-inline-start: calc(var(--_inset) + var(--_mark) / 2 - var(--_guide-width) / 2);
336
343
  }
337
344
 
338
345
  /* ── The row: a link, or a trigger ────────────────────────────────────── */
339
346
 
340
- [data-ui='side-navigation'] :is([data-part='link'], [data-part='trigger']) {
347
+ [data-ui-side-navigation] :is([data-part-link], [data-part-trigger]) {
341
348
  align-content: center;
342
349
  align-items: center;
343
350
  appearance: none;
@@ -354,11 +361,11 @@
354
361
  grid-template-columns: auto minmax(0, 1fr) auto auto;
355
362
  grid-template-rows: auto auto;
356
363
  margin-block: 0;
357
- margin-inline: var(--_standoff);
364
+ margin-inline: calc(var(--_standoff) - var(--_ring-inset));
358
365
  min-block-size: var(--_row-height);
359
366
  min-inline-size: 0;
360
367
  padding-block: 0;
361
- padding-inline: calc(var(--_inset) - var(--_standoff));
368
+ padding-inline: calc(var(--_inset) - var(--_standoff) + var(--_ring-inset));
362
369
  position: relative;
363
370
  text-align: start;
364
371
  text-decoration: none;
@@ -367,13 +374,13 @@
367
374
  color var(--_duration) var(--_easing);
368
375
  }
369
376
 
370
- [data-ui='side-navigation']
371
- [data-part='item']:not([data-disabled])
372
- > :is([data-part='link'], [data-part='trigger']):active {
377
+ [data-ui-side-navigation]
378
+ [data-part-item]:not([data-disabled])
379
+ > :is([data-part-link], [data-part-trigger]):active {
373
380
  transition-duration: var(--slotted-duration-instant);
374
381
  }
375
382
 
376
- [data-ui='side-navigation'] [data-part='item'] > [data-part='trigger'] {
383
+ [data-ui-side-navigation] [data-part-item] > [data-part-trigger] {
377
384
  grid-column: 1 / -1;
378
385
  }
379
386
 
@@ -382,7 +389,7 @@
382
389
  * the APG hybrid example's second control — the height of the row and the
383
390
  * width of a mark, so the pair reads as one row with a chevron on it.
384
391
  */
385
- [data-ui='side-navigation'] [data-part='item']:has(> [data-part='link']) > [data-part='trigger'] {
392
+ [data-ui-side-navigation] [data-part-item]:has(> [data-part-link]) > [data-part-trigger] {
386
393
  grid-column: 2;
387
394
  grid-template-columns: auto;
388
395
  inline-size: var(--_mark);
@@ -390,7 +397,7 @@
390
397
  place-items: center;
391
398
  }
392
399
 
393
- [data-ui='side-navigation'] [data-part='actions'] {
400
+ [data-ui-side-navigation] [data-part-actions] {
394
401
  align-items: center;
395
402
  align-self: center;
396
403
  column-gap: var(--slotted-space-2, 0.25rem);
@@ -402,7 +409,7 @@
402
409
  padding-inline-end: var(--slotted-space-2, 0.25rem);
403
410
  }
404
411
 
405
- [data-ui='side-navigation'] :is([data-part='link'], [data-part='trigger']):focus-visible {
412
+ [data-ui-side-navigation] :is([data-part-link], [data-part-trigger]):focus-visible {
406
413
  outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);
407
414
  outline-offset: calc(-1 * var(--slotted-focus-ring-offset, 2px));
408
415
  }
@@ -415,7 +422,7 @@
415
422
  * `ng-icon` — which sizes itself at `1em` — through the font-size. Nothing
416
423
  * placed here is drawn at the row's type size.
417
424
  */
418
- [data-ui='side-navigation'] [data-part='icon'] {
425
+ [data-ui-side-navigation] [data-part-icon] {
419
426
  --slotted-icon-size: var(--_icon-size);
420
427
 
421
428
  block-size: var(--_mark);
@@ -436,7 +443,7 @@
436
443
  position: relative;
437
444
  }
438
445
 
439
- [data-ui='side-navigation'] [data-part='icon'] > svg {
446
+ [data-ui-side-navigation] [data-part-icon] > svg {
440
447
  block-size: var(--_icon-size);
441
448
  inline-size: var(--_icon-size);
442
449
  }
@@ -462,7 +469,7 @@
462
469
  * row around it. The text is in the DOM in every mode, which is what
463
470
  * `docs/build-briefing.md` requires.
464
471
  */
465
- [data-ui='side-navigation'] [data-part='label'] {
472
+ [data-ui-side-navigation] [data-part-label] {
466
473
  grid-column: 2;
467
474
  grid-row: 1;
468
475
  min-inline-size: 0;
@@ -470,7 +477,7 @@
470
477
  unicode-bidi: isolate;
471
478
  }
472
479
 
473
- [data-ui='side-navigation']:not([data-truncate='none']) [data-part='label'] {
480
+ [data-ui-side-navigation]:not([data-truncate='none']) [data-part-label] {
474
481
  overflow: hidden;
475
482
  overflow-wrap: normal;
476
483
  text-overflow: ellipsis;
@@ -478,11 +485,11 @@
478
485
  }
479
486
 
480
487
  /* The binding has already placed the ellipsis; a second one at the edge would be a lie. */
481
- [data-ui='side-navigation'][data-truncate='middle'] [data-part='label'] {
488
+ [data-ui-side-navigation][data-truncate='middle'] [data-part-label] {
482
489
  text-overflow: clip;
483
490
  }
484
491
 
485
- [data-ui='side-navigation'] [data-part='description'] {
492
+ [data-ui-side-navigation] [data-part-description] {
486
493
  color: var(--_description-color);
487
494
  font-size: var(--_description-font-size);
488
495
  font-weight: var(--slotted-font-weight-regular, 400);
@@ -495,7 +502,7 @@
495
502
  unicode-bidi: isolate;
496
503
  }
497
504
 
498
- [data-ui='side-navigation']:not([data-truncate='none']) [data-part='description'] {
505
+ [data-ui-side-navigation]:not([data-truncate='none']) [data-part-description] {
499
506
  overflow: hidden;
500
507
  overflow-wrap: normal;
501
508
  text-overflow: ellipsis;
@@ -512,31 +519,31 @@
512
519
  * nothing between — the first version put the title on the mark's own
513
520
  * thirty-four pixels and the description under that, which read as a gap.
514
521
  */
515
- [data-ui='side-navigation']
516
- :is([data-part='link'], [data-part='trigger']):has(> [data-part='description']) {
522
+ [data-ui-side-navigation]
523
+ :is([data-part-link], [data-part-trigger]):has(> [data-part-description]) {
517
524
  padding-block: var(--slotted-space-2, 0.25rem);
518
525
  }
519
526
 
520
- [data-ui='side-navigation']
521
- :is([data-part='link'], [data-part='trigger']):has(> [data-part='description'])
522
- > :is([data-part='icon'], [data-part='end'], [data-part='count'], [data-part='indicator']) {
527
+ [data-ui-side-navigation]
528
+ :is([data-part-link], [data-part-trigger]):has(> [data-part-description])
529
+ > :is([data-part-icon], [data-part-end], [data-part-count], [data-part-indicator]) {
523
530
  grid-row: 1 / -1;
524
531
  }
525
532
 
526
- [data-ui='side-navigation']
527
- :is([data-part='link'], [data-part='trigger']):has(> [data-part='description'])
528
- > [data-part='label'] {
533
+ [data-ui-side-navigation]
534
+ :is([data-part-link], [data-part-trigger]):has(> [data-part-description])
535
+ > [data-part-label] {
529
536
  align-self: end;
530
537
  line-height: var(--slotted-line-height-xs, 1.4);
531
538
  }
532
539
 
533
- [data-ui='side-navigation']
534
- :is([data-part='link'], [data-part='trigger']):has(> [data-part='description'])
535
- > [data-part='description'] {
540
+ [data-ui-side-navigation]
541
+ :is([data-part-link], [data-part-trigger]):has(> [data-part-description])
542
+ > [data-part-description] {
536
543
  align-self: start;
537
544
  }
538
545
 
539
- [data-ui='side-navigation'] [data-part='end'] {
546
+ [data-ui-side-navigation] [data-part-end] {
540
547
  align-items: center;
541
548
  display: flex;
542
549
  grid-column: 3;
@@ -553,7 +560,7 @@
553
560
  * `badge`, composed into `end`, and the two are told apart on purpose:
554
561
  * every row with a number would otherwise be a row with a pill.
555
562
  */
556
- [data-ui='side-navigation'] [data-part='count'] {
563
+ [data-ui-side-navigation] [data-part-count] {
557
564
  color: var(--_description-color);
558
565
  font-size: var(--_description-font-size);
559
566
  font-variant-numeric: tabular-nums;
@@ -566,19 +573,19 @@
566
573
  text-align: end;
567
574
  }
568
575
 
569
- [data-ui='side-navigation'] [data-part='link'][data-current] > [data-part='description'] {
576
+ [data-ui-side-navigation] [data-part-link][data-current] > [data-part-description] {
570
577
  color: var(--_current-description-color);
571
578
  }
572
579
 
573
- [data-ui='side-navigation'] [data-part='link'][data-current] > [data-part='count'],
574
- [data-ui='side-navigation']
575
- [data-part='item'][data-current]
576
- > [data-part='trigger']
577
- > [data-part='count'] {
580
+ [data-ui-side-navigation] [data-part-link][data-current] > [data-part-count],
581
+ [data-ui-side-navigation]
582
+ [data-part-item][data-current]
583
+ > [data-part-trigger]
584
+ > [data-part-count] {
578
585
  color: inherit;
579
586
  }
580
587
 
581
- [data-ui='side-navigation'] [data-part='indicator'] {
588
+ [data-ui-side-navigation] [data-part-indicator] {
582
589
  --slotted-icon-size: var(--_icon-size);
583
590
 
584
591
  display: flex;
@@ -595,33 +602,33 @@
595
602
  * direction is the other way; the open mark points down in both, turning the
596
603
  * other way where it is mirrored.
597
604
  */
598
- [data-ui='side-navigation'] [data-part='indicator'] > [data-ui='icon'] {
605
+ [data-ui-side-navigation] [data-part-indicator] > [data-ui-icon] {
599
606
  /* The same duration as the track it announces, so the turn and the opening end together. */
600
607
  transition: rotate var(--slotted-duration-medium) var(--_easing);
601
608
  }
602
609
 
603
- [data-ui='side-navigation']
604
- [data-part='item']:has(> [data-part='link'])
605
- > [data-part='trigger']
606
- > [data-part='indicator'] {
610
+ [data-ui-side-navigation]
611
+ [data-part-item]:has(> [data-part-link])
612
+ > [data-part-trigger]
613
+ > [data-part-indicator] {
607
614
  grid-column: 1;
608
615
  margin-inline-start: 0;
609
616
  }
610
617
 
611
- [data-ui='side-navigation']
612
- [data-part='item'][data-expanded]
613
- > [data-part='trigger']
614
- > [data-part='indicator']
615
- > [data-ui='icon'] {
618
+ [data-ui-side-navigation]
619
+ [data-part-item][data-expanded]
620
+ > [data-part-trigger]
621
+ > [data-part-indicator]
622
+ > [data-ui-icon] {
616
623
  rotate: 90deg;
617
624
  }
618
625
 
619
626
  /* The mirror is applied before the turn, so the mirrored mark turns the other way to land on down. */
620
- [data-ui='side-navigation']
621
- [data-part='item'][data-expanded]
622
- > [data-part='trigger']
623
- > [data-part='indicator']
624
- > [data-ui='icon']:dir(rtl) {
627
+ [data-ui-side-navigation]
628
+ [data-part-item][data-expanded]
629
+ > [data-part-trigger]
630
+ > [data-part-indicator]
631
+ > [data-ui-icon]:dir(rtl) {
625
632
  rotate: -90deg;
626
633
  }
627
634
 
@@ -643,18 +650,18 @@
643
650
  * `button`: a proportion of the type, which is what the trim removes.
644
651
  */
645
652
  @supports (text-box: trim-both cap alphabetic) {
646
- [data-ui='side-navigation'] [data-part='label'] {
653
+ [data-ui-side-navigation] [data-part-label] {
647
654
  padding-block: calc((var(--_line-height) * 1em - 0.75em) / 2);
648
655
  text-box: trim-both cap alphabetic;
649
656
  }
650
657
 
651
- [data-ui='side-navigation'] [data-part='description'],
652
- [data-ui='side-navigation'] [data-part='section-label'] {
658
+ [data-ui-side-navigation] [data-part-description],
659
+ [data-ui-side-navigation] [data-part-section-label] {
653
660
  padding-block: calc((var(--slotted-line-height-xs, 1.4) * 1em - 0.75em) / 2);
654
661
  text-box: trim-both cap alphabetic;
655
662
  }
656
663
 
657
- [data-ui='side-navigation'] [data-part='count'] {
664
+ [data-ui-side-navigation] [data-part-count] {
658
665
  line-height: var(--slotted-line-height-xs, 1.4);
659
666
  padding-block: calc((var(--slotted-line-height-xs, 1.4) * 1em - 0.75em) / 2);
660
667
  text-box: trim-both cap alphabetic;
@@ -663,26 +670,24 @@
663
670
 
664
671
  /* ── States ───────────────────────────────────────────────────────────── */
665
672
 
666
- [data-ui='side-navigation']
667
- [data-part='item']:not([data-disabled])
668
- > [data-part='link']:not([data-current]):hover,
669
- [data-ui='side-navigation']
670
- [data-part='item']:not([data-disabled]):not([data-current])
671
- > [data-part='trigger']:enabled:hover {
673
+ [data-ui-side-navigation]
674
+ [data-part-item]:not([data-disabled])
675
+ > [data-part-link]:not([data-current]):hover,
676
+ [data-ui-side-navigation]
677
+ [data-part-item]:not([data-disabled]):not([data-current])
678
+ > [data-part-trigger]:enabled:hover {
672
679
  background-color: var(--_hover-background);
673
680
  color: var(--_hover-color);
674
681
  }
675
682
 
676
683
  /* A trigger whose group is in the flyout holds the pressed ground while the layer is open. */
677
- [data-ui='side-navigation']
678
- [data-part='item'][data-open]:not([data-current])
679
- > [data-part='trigger'],
680
- [data-ui='side-navigation']
681
- [data-part='item']:not([data-disabled])
682
- > [data-part='link']:not([data-current]):active,
683
- [data-ui='side-navigation']
684
- [data-part='item']:not([data-disabled]):not([data-current])
685
- > [data-part='trigger']:enabled:active {
684
+ [data-ui-side-navigation] [data-part-item][data-open]:not([data-current]) > [data-part-trigger],
685
+ [data-ui-side-navigation]
686
+ [data-part-item]:not([data-disabled])
687
+ > [data-part-link]:not([data-current]):active,
688
+ [data-ui-side-navigation]
689
+ [data-part-item]:not([data-disabled]):not([data-current])
690
+ > [data-part-trigger]:enabled:active {
686
691
  background-color: var(--_active-background);
687
692
  }
688
693
 
@@ -692,39 +697,39 @@
692
697
  * Carbon and PatternFly draw a bar on the row's start edge instead, and
693
698
  * `state-rail.test.mjs` refuses one (R1): the state is said by the ground.
694
699
  */
695
- [data-ui='side-navigation'] [data-part='link'][data-current],
696
- [data-ui='side-navigation'] [data-part='item'][data-current] > [data-part='trigger'] {
700
+ [data-ui-side-navigation] [data-part-link][data-current],
701
+ [data-ui-side-navigation] [data-part-item][data-current] > [data-part-trigger] {
697
702
  background-color: var(--_current-background);
698
703
  box-shadow: inset 0 0 0 var(--_guide-width) var(--_current-edge);
699
704
  color: var(--_current-color);
700
705
  font-weight: var(--slotted-font-weight-medium, 500);
701
706
  }
702
707
 
703
- [data-ui='side-navigation']
704
- [data-part='item'][data-disabled]
705
- > :is([data-part='link'], [data-part='trigger']),
706
- [data-ui='side-navigation'] [data-part='trigger']:disabled {
708
+ [data-ui-side-navigation]
709
+ [data-part-item][data-disabled]
710
+ > :is([data-part-link], [data-part-trigger]),
711
+ [data-ui-side-navigation] [data-part-trigger]:disabled {
707
712
  color: var(--_disabled-color);
708
713
  cursor: not-allowed;
709
714
  }
710
715
 
711
- [data-ui='side-navigation']
712
- [data-part='item'][data-disabled]
713
- > [data-part='link']
714
- > [data-part='description'] {
716
+ [data-ui-side-navigation]
717
+ [data-part-item][data-disabled]
718
+ > [data-part-link]
719
+ > [data-part-description] {
715
720
  color: var(--_disabled-color);
716
721
  }
717
722
 
718
723
  /* ── The divider and the skeleton row ─────────────────────────────────── */
719
724
 
720
- [data-ui='side-navigation'] [data-part='divider'] {
725
+ [data-ui-side-navigation] [data-part-divider] {
721
726
  border: 0;
722
727
  border-block-start: var(--_guide-width) solid var(--_guide-color);
723
728
  margin-block: var(--slotted-space-2, 0.25rem);
724
729
  margin-inline: var(--_inset);
725
730
  }
726
731
 
727
- [data-ui='side-navigation'] [data-part='skeleton'] {
732
+ [data-ui-side-navigation] [data-part-skeleton] {
728
733
  align-items: center;
729
734
  display: grid;
730
735
  gap: var(--_gap);
@@ -733,17 +738,17 @@
733
738
  padding-inline: var(--_inset);
734
739
  }
735
740
 
736
- [data-ui='side-navigation'] [data-part='skeleton'] > [data-part='icon'] {
741
+ [data-ui-side-navigation] [data-part-skeleton] > [data-part-icon] {
737
742
  margin-inline: 0;
738
743
  }
739
744
 
740
745
  /* The boxes are `skeleton`'s; this family only says how big a mark is. */
741
- [data-ui='side-navigation'] [data-part='skeleton'] > [data-part='icon'] > [data-ui='skeleton'] {
746
+ [data-ui-side-navigation] [data-part-skeleton] > [data-part-icon] > [data-ui-skeleton] {
742
747
  --slotted-skeleton-block-size: var(--_icon-size);
743
748
  --slotted-skeleton-inline-size: var(--_icon-size);
744
749
  }
745
750
 
746
- [data-ui='side-navigation'] [data-part='skeleton'] > [data-part='label'] {
751
+ [data-ui-side-navigation] [data-part-skeleton] > [data-part-label] {
747
752
  display: block;
748
753
  min-inline-size: 0;
749
754
  overflow: visible;
@@ -760,10 +765,10 @@
760
765
  * cannot select it and there is no third selector that says "either".
761
766
  */
762
767
  @container slotted-side-navigation (inline-size < 96px) {
763
- [data-ui='side-navigation'][data-mode='auto'] [data-part='label'],
764
- [data-ui='side-navigation'][data-mode='auto'] [data-part='description'],
765
- [data-ui='side-navigation'][data-mode='auto'] [data-part='end'],
766
- [data-ui='side-navigation'][data-mode='auto'] [data-part='count'] {
768
+ [data-ui-side-navigation][data-mode='auto'] [data-part-label],
769
+ [data-ui-side-navigation][data-mode='auto'] [data-part-description],
770
+ [data-ui-side-navigation][data-mode='auto'] [data-part-end],
771
+ [data-ui-side-navigation][data-mode='auto'] [data-part-count] {
767
772
  block-size: 1px;
768
773
  clip-path: inset(50%);
769
774
  inline-size: 1px;
@@ -773,15 +778,15 @@
773
778
  white-space: nowrap;
774
779
  }
775
780
 
776
- [data-ui='side-navigation'][data-mode='auto'] [data-part='indicator'],
777
- [data-ui='side-navigation'][data-mode='auto'] [data-part='actions'],
778
- [data-ui='side-navigation'][data-mode='auto']
779
- [data-part='item']:has(> [data-part='link'])
780
- > [data-part='trigger'] {
781
+ [data-ui-side-navigation][data-mode='auto'] [data-part-indicator],
782
+ [data-ui-side-navigation][data-mode='auto'] [data-part-actions],
783
+ [data-ui-side-navigation][data-mode='auto']
784
+ [data-part-item]:has(> [data-part-link])
785
+ > [data-part-trigger] {
781
786
  display: none;
782
787
  }
783
788
 
784
- [data-ui='side-navigation'][data-mode='auto'] :is([data-part='link'], [data-part='trigger']) {
789
+ [data-ui-side-navigation][data-mode='auto'] :is([data-part-link], [data-part-trigger]) {
785
790
  grid-template-columns: auto;
786
791
  inline-size: var(--_mark);
787
792
  justify-content: center;
@@ -789,19 +794,19 @@
789
794
  padding: 0;
790
795
  }
791
796
 
792
- [data-ui='side-navigation'][data-mode='auto'] [data-part='icon'] {
797
+ [data-ui-side-navigation][data-mode='auto'] [data-part-icon] {
793
798
  margin: 0;
794
799
  }
795
800
 
796
- [data-ui='side-navigation'][data-mode='auto'] [data-part='item'] {
801
+ [data-ui-side-navigation][data-mode='auto'] [data-part-item] {
797
802
  grid-template-rows: auto 0fr;
798
803
  }
799
804
 
800
- [data-ui='side-navigation'][data-mode='auto'] [data-part='item'] > [data-part='group'] {
805
+ [data-ui-side-navigation][data-mode='auto'] [data-part-item] > [data-part-group] {
801
806
  visibility: hidden;
802
807
  }
803
808
 
804
- [data-ui='side-navigation'][data-mode='auto'] [data-part='section-label'] {
809
+ [data-ui-side-navigation][data-mode='auto'] [data-part-section-label] {
805
810
  block-size: 0;
806
811
  border-block-start: var(--_guide-width) solid var(--_guide-color);
807
812
  color: transparent;
@@ -811,23 +816,19 @@
811
816
  padding: 0;
812
817
  }
813
818
 
814
- [data-ui='side-navigation'][data-mode='auto'] [data-part='skeleton'] {
819
+ [data-ui-side-navigation][data-mode='auto'] [data-part-skeleton] {
815
820
  grid-template-columns: var(--_mark);
816
821
  justify-content: center;
817
822
  padding-inline: 0;
818
823
  }
819
824
 
820
- [data-ui='side-navigation'][data-mode='auto']
821
- [data-part='skeleton']
822
- > :not([data-part='icon']) {
825
+ [data-ui-side-navigation][data-mode='auto'] [data-part-skeleton] > :not([data-part-icon]) {
823
826
  display: none;
824
827
  }
825
828
 
826
- [data-ui='side-navigation'][data-mode='auto']
827
- :is([data-part='link'], [data-part='trigger']):has(
828
- > :is([data-part='end'], [data-part='count'])
829
- )
830
- > [data-part='icon']::after {
829
+ [data-ui-side-navigation][data-mode='auto']
830
+ :is([data-part-link], [data-part-trigger]):has(> :is([data-part-end], [data-part-count]))
831
+ > [data-part-icon]::after {
831
832
  background-color: var(--_dot-color);
832
833
  block-size: var(--_dot-size);
833
834
  border-radius: var(--slotted-radius-full, 9999px);
@@ -839,10 +840,10 @@
839
840
  }
840
841
  }
841
842
 
842
- [data-ui='side-navigation'][data-mode='compact'] [data-part='label'],
843
- [data-ui='side-navigation'][data-mode='compact'] [data-part='description'],
844
- [data-ui='side-navigation'][data-mode='compact'] [data-part='end'],
845
- [data-ui='side-navigation'][data-mode='compact'] [data-part='count'] {
843
+ [data-ui-side-navigation][data-mode='compact'] [data-part-label],
844
+ [data-ui-side-navigation][data-mode='compact'] [data-part-description],
845
+ [data-ui-side-navigation][data-mode='compact'] [data-part-end],
846
+ [data-ui-side-navigation][data-mode='compact'] [data-part-count] {
846
847
  block-size: 1px;
847
848
  clip-path: inset(50%);
848
849
  inline-size: 1px;
@@ -852,15 +853,15 @@
852
853
  white-space: nowrap;
853
854
  }
854
855
 
855
- [data-ui='side-navigation'][data-mode='compact'] [data-part='indicator'],
856
- [data-ui='side-navigation'][data-mode='compact'] [data-part='actions'],
857
- [data-ui='side-navigation'][data-mode='compact']
858
- [data-part='item']:has(> [data-part='link'])
859
- > [data-part='trigger'] {
856
+ [data-ui-side-navigation][data-mode='compact'] [data-part-indicator],
857
+ [data-ui-side-navigation][data-mode='compact'] [data-part-actions],
858
+ [data-ui-side-navigation][data-mode='compact']
859
+ [data-part-item]:has(> [data-part-link])
860
+ > [data-part-trigger] {
860
861
  display: none;
861
862
  }
862
863
 
863
- [data-ui='side-navigation'][data-mode='compact'] :is([data-part='link'], [data-part='trigger']) {
864
+ [data-ui-side-navigation][data-mode='compact'] :is([data-part-link], [data-part-trigger]) {
864
865
  grid-template-columns: auto;
865
866
  inline-size: var(--_mark);
866
867
  justify-content: center;
@@ -868,19 +869,19 @@
868
869
  padding: 0;
869
870
  }
870
871
 
871
- [data-ui='side-navigation'][data-mode='compact'] [data-part='icon'] {
872
+ [data-ui-side-navigation][data-mode='compact'] [data-part-icon] {
872
873
  margin: 0;
873
874
  }
874
875
 
875
- [data-ui='side-navigation'][data-mode='compact'] [data-part='item'] {
876
+ [data-ui-side-navigation][data-mode='compact'] [data-part-item] {
876
877
  grid-template-rows: auto 0fr;
877
878
  }
878
879
 
879
- [data-ui='side-navigation'][data-mode='compact'] [data-part='item'] > [data-part='group'] {
880
+ [data-ui-side-navigation][data-mode='compact'] [data-part-item] > [data-part-group] {
880
881
  visibility: hidden;
881
882
  }
882
883
 
883
- [data-ui='side-navigation'][data-mode='compact'] [data-part='section-label'] {
884
+ [data-ui-side-navigation][data-mode='compact'] [data-part-section-label] {
884
885
  block-size: 0;
885
886
  border-block-start: var(--_guide-width) solid var(--_guide-color);
886
887
  color: transparent;
@@ -890,23 +891,19 @@
890
891
  padding: 0;
891
892
  }
892
893
 
893
- [data-ui='side-navigation'][data-mode='compact'] [data-part='skeleton'] {
894
+ [data-ui-side-navigation][data-mode='compact'] [data-part-skeleton] {
894
895
  grid-template-columns: var(--_mark);
895
896
  justify-content: center;
896
897
  padding-inline: 0;
897
898
  }
898
899
 
899
- [data-ui='side-navigation'][data-mode='compact']
900
- [data-part='skeleton']
901
- > :not([data-part='icon']) {
900
+ [data-ui-side-navigation][data-mode='compact'] [data-part-skeleton] > :not([data-part-icon]) {
902
901
  display: none;
903
902
  }
904
903
 
905
- [data-ui='side-navigation'][data-mode='compact']
906
- :is([data-part='link'], [data-part='trigger']):has(
907
- > :is([data-part='end'], [data-part='count'])
908
- )
909
- > [data-part='icon']::after {
904
+ [data-ui-side-navigation][data-mode='compact']
905
+ :is([data-part-link], [data-part-trigger]):has(> :is([data-part-end], [data-part-count]))
906
+ > [data-part-icon]::after {
910
907
  background-color: var(--_dot-color);
911
908
  block-size: var(--_dot-size);
912
909
  border-radius: var(--slotted-radius-full, 9999px);
@@ -926,7 +923,7 @@
926
923
  * rather than on the root part. The group inside it is a plain list again:
927
924
  * no indent, no guide, the raised surface under it.
928
925
  */
929
- [data-ui='side-navigation'][data-part='flyout'] {
926
+ [data-ui-side-navigation][data-part-flyout] {
930
927
  --_surface: var(
931
928
  --slotted-side-navigation-flyout-surface,
932
929
  var(--slotted-surface-raised, Canvas)
@@ -961,40 +958,40 @@
961
958
  translate var(--slotted-duration-short) var(--slotted-easing-exit);
962
959
  }
963
960
 
964
- [data-ui='side-navigation'][data-part='flyout'][data-side='top'] {
961
+ [data-ui-side-navigation][data-part-flyout][data-side='top'] {
965
962
  translate: 0 var(--_enter-distance);
966
963
  }
967
964
 
968
965
  /* The layer arrives along the inline axis it opens on: from one step inside
969
966
  the rail's edge, the way a submenu does. */
970
- [data-ui='side-navigation'][data-part='flyout'][data-side='right'] {
967
+ [data-ui-side-navigation][data-part-flyout][data-side='right'] {
971
968
  translate: calc(-1 * var(--_enter-distance)) 0;
972
969
  }
973
970
 
974
- [data-ui='side-navigation'][data-part='flyout'][data-side='left'] {
971
+ [data-ui-side-navigation][data-part-flyout][data-side='left'] {
975
972
  translate: var(--_enter-distance) 0;
976
973
  }
977
974
 
978
- [data-ui='side-navigation'][data-part='flyout'][data-open] {
975
+ [data-ui-side-navigation][data-part-flyout][data-open] {
979
976
  opacity: 1;
980
977
  translate: 0 0;
981
978
  transition: none;
982
979
  }
983
980
 
984
- [data-ui='side-navigation'][data-part='flyout'][data-open][data-positioned] {
981
+ [data-ui-side-navigation][data-part-flyout][data-open][data-positioned] {
985
982
  animation: slotted-side-navigation-enter-down var(--slotted-duration-medium)
986
983
  var(--slotted-easing-enter);
987
984
  }
988
985
 
989
- [data-ui='side-navigation'][data-part='flyout'][data-open][data-positioned][data-side='top'] {
986
+ [data-ui-side-navigation][data-part-flyout][data-open][data-positioned][data-side='top'] {
990
987
  animation-name: slotted-side-navigation-enter-up;
991
988
  }
992
989
 
993
- [data-ui='side-navigation'][data-part='flyout'][data-open][data-positioned][data-side='right'] {
990
+ [data-ui-side-navigation][data-part-flyout][data-open][data-positioned][data-side='right'] {
994
991
  animation-name: slotted-side-navigation-enter-from-start;
995
992
  }
996
993
 
997
- [data-ui='side-navigation'][data-part='flyout'][data-open][data-positioned][data-side='left'] {
994
+ [data-ui-side-navigation][data-part-flyout][data-open][data-positioned][data-side='left'] {
998
995
  animation-name: slotted-side-navigation-enter-from-end;
999
996
  }
1000
997
 
@@ -1034,28 +1031,28 @@
1034
1031
 
1035
1032
  /* Stillness keeps the fade and drops the movement (R7). */
1036
1033
  @media (prefers-reduced-motion: reduce) {
1037
- [data-ui='side-navigation'][data-part='flyout'],
1038
- [data-ui='side-navigation'][data-part='flyout'][data-side='top'],
1039
- [data-ui='side-navigation'][data-part='flyout'][data-side='left'],
1040
- [data-ui='side-navigation'][data-part='flyout'][data-side='right'] {
1034
+ [data-ui-side-navigation][data-part-flyout],
1035
+ [data-ui-side-navigation][data-part-flyout][data-side='top'],
1036
+ [data-ui-side-navigation][data-part-flyout][data-side='left'],
1037
+ [data-ui-side-navigation][data-part-flyout][data-side='right'] {
1041
1038
  translate: 0 0;
1042
1039
  transition: opacity var(--slotted-duration-short) var(--slotted-easing-exit);
1043
1040
  }
1044
1041
 
1045
- [data-ui='side-navigation'][data-part='flyout'][data-open][data-positioned],
1046
- [data-ui='side-navigation'][data-part='flyout'][data-open][data-positioned][data-side='top'],
1047
- [data-ui='side-navigation'][data-part='flyout'][data-open][data-positioned][data-side='left'],
1048
- [data-ui='side-navigation'][data-part='flyout'][data-open][data-positioned][data-side='right'] {
1042
+ [data-ui-side-navigation][data-part-flyout][data-open][data-positioned],
1043
+ [data-ui-side-navigation][data-part-flyout][data-open][data-positioned][data-side='top'],
1044
+ [data-ui-side-navigation][data-part-flyout][data-open][data-positioned][data-side='left'],
1045
+ [data-ui-side-navigation][data-part-flyout][data-open][data-positioned][data-side='right'] {
1049
1046
  animation-name: slotted-side-navigation-fade;
1050
1047
  }
1051
1048
  }
1052
1049
 
1053
1050
  /* The anchor scrolled out of its own clipper: the layer waits, hidden. */
1054
- [data-ui='side-navigation'][data-part='flyout'][data-detached] {
1051
+ [data-ui-side-navigation][data-part-flyout][data-detached] {
1055
1052
  visibility: hidden;
1056
1053
  }
1057
1054
 
1058
- [data-ui='side-navigation'][data-part='flyout'] > [data-part='group'] {
1055
+ [data-ui-side-navigation][data-part-flyout] > [data-part-group] {
1059
1056
  background-color: var(--_surface);
1060
1057
  border: var(--_guide-width) solid var(--_border-color);
1061
1058
  border-radius: var(--_flyout-radius);
@@ -1065,31 +1062,31 @@
1065
1062
  pointer-events: auto;
1066
1063
  }
1067
1064
 
1068
- [data-ui='side-navigation'][data-part='flyout']
1069
- > [data-part='group']
1070
- > [data-part='item']
1071
- > [data-part='group'] {
1065
+ [data-ui-side-navigation][data-part-flyout]
1066
+ > [data-part-group]
1067
+ > [data-part-item]
1068
+ > [data-part-group] {
1072
1069
  padding-inline-start: var(--_indent);
1073
1070
  }
1074
1071
 
1075
1072
  /* ── Forced colours ───────────────────────────────────────────────────── */
1076
1073
 
1077
1074
  @media (forced-colors: active) {
1078
- [data-ui='side-navigation'] [data-part='link'][data-current],
1079
- [data-ui='side-navigation'] [data-part='item'][data-current] > [data-part='trigger'] {
1075
+ [data-ui-side-navigation] [data-part-link][data-current],
1076
+ [data-ui-side-navigation] [data-part-item][data-current] > [data-part-trigger] {
1080
1077
  background-color: Highlight;
1081
1078
  color: HighlightText;
1082
1079
  forced-color-adjust: none;
1083
1080
  }
1084
1081
 
1085
- [data-ui='side-navigation']
1086
- [data-part='item'][data-disabled]
1087
- > :is([data-part='link'], [data-part='trigger']),
1088
- [data-ui='side-navigation'] [data-part='trigger']:disabled {
1082
+ [data-ui-side-navigation]
1083
+ [data-part-item][data-disabled]
1084
+ > :is([data-part-link], [data-part-trigger]),
1085
+ [data-ui-side-navigation] [data-part-trigger]:disabled {
1089
1086
  color: GrayText;
1090
1087
  }
1091
1088
 
1092
- [data-ui='side-navigation'][data-part='flyout'] > [data-part='group'] {
1089
+ [data-ui-side-navigation][data-part-flyout] > [data-part-group] {
1093
1090
  border-color: CanvasText;
1094
1091
  }
1095
1092
  }