@slotted/styles 0.1.0-beta.0 → 0.1.0-beta.10

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 (176) 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 +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 +139 -64
  17. package/src/button/button.tokens.json +10 -0
  18. package/src/button-group/button-group.css +76 -72
  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 +84 -90
  36. package/src/container/container.css +24 -24
  37. package/src/context-menu/context-menu.css +8 -8
  38. package/src/currency-field/currency-field.css +210 -88
  39. package/src/currency-field/currency-field.tokens.json +13 -0
  40. package/src/dashboard-grid/dashboard-grid.css +148 -116
  41. package/src/data-grid/data-grid.css +504 -469
  42. package/src/data-grid/data-grid.tokens.json +2 -0
  43. package/src/data-list/data-list.css +81 -70
  44. package/src/data-list/data-list.tokens.json +2 -1
  45. package/src/date-field/date-field.css +55 -52
  46. package/src/date-field/date-field.tokens.json +1 -0
  47. package/src/date-picker/date-picker.css +40 -42
  48. package/src/date-range-picker/date-range-picker.css +114 -118
  49. package/src/datetime-field/datetime-field.css +78 -80
  50. package/src/datetime-field/datetime-field.tokens.json +1 -0
  51. package/src/datetime-picker/datetime-picker.css +61 -63
  52. package/src/datetime-range-picker/datetime-range-picker.css +149 -156
  53. package/src/description-list/description-list.css +61 -64
  54. package/src/detail-panel/detail-panel.css +70 -70
  55. package/src/dialog/dialog.css +334 -153
  56. package/src/dialog/dialog.tokens.json +5 -0
  57. package/src/divider/divider.css +18 -18
  58. package/src/drawer/drawer.css +186 -209
  59. package/src/entity-picker/entity-picker.css +238 -241
  60. package/src/entity-picker/entity-picker.tokens.json +1 -0
  61. package/src/event-calendar/event-calendar.css +343 -385
  62. package/src/field/field.css +74 -78
  63. package/src/field-group/field-group.css +22 -25
  64. package/src/filter-bar/filter-bar.css +193 -209
  65. package/src/form/form.css +34 -24
  66. package/src/form/form.tokens.json +1 -0
  67. package/src/fullscreen/fullscreen.css +24 -25
  68. package/src/grid/grid.css +28 -28
  69. package/src/highlight/highlight.css +6 -6
  70. package/src/hover-card/hover-card.css +6 -6
  71. package/src/icon/icon.css +19 -15
  72. package/src/icon/icon.tokens.json +1 -0
  73. package/src/image/image.css +39 -39
  74. package/src/import-export-center/import-export-center.css +135 -156
  75. package/src/inline/inline.css +27 -27
  76. package/src/inline-message/inline-message.css +52 -28
  77. package/src/inline-message/inline-message.tokens.json +4 -0
  78. package/src/kbd/kbd.css +30 -26
  79. package/src/link/link.css +15 -15
  80. package/src/list/list.css +44 -17
  81. package/src/list/list.tokens.json +4 -0
  82. package/src/list-item/list-item.css +80 -66
  83. package/src/list-item/list-item.tokens.json +7 -0
  84. package/src/listbox/listbox.css +56 -59
  85. package/src/loading-overlay/loading-overlay.css +75 -92
  86. package/src/markdown/markdown.css +17 -17
  87. package/src/menu/menu.css +83 -63
  88. package/src/menubar/menubar.css +13 -13
  89. package/src/message/message.css +182 -202
  90. package/src/message/message.tokens.json +5 -0
  91. package/src/message-scroller/message-scroller.css +41 -42
  92. package/src/multi-select/multi-select.css +152 -145
  93. package/src/multi-select/multi-select.tokens.json +1 -0
  94. package/src/navigation-menu/navigation-menu.css +167 -188
  95. package/src/notification-center/notification-center.css +140 -148
  96. package/src/notification-center/notification-center.tokens.json +3 -0
  97. package/src/number-field/number-field.css +84 -83
  98. package/src/number-field/number-field.tokens.json +1 -0
  99. package/src/otp-input/otp-input.css +67 -57
  100. package/src/otp-input/otp-input.tokens.json +1 -0
  101. package/src/page/page.css +23 -23
  102. package/src/page-header/page-header.css +268 -281
  103. package/src/page-header/page-header.tokens.json +1 -0
  104. package/src/pagination/pagination.css +68 -72
  105. package/src/popover/popover.css +40 -49
  106. package/src/progress-indicator/progress-indicator.css +177 -120
  107. package/src/progress-indicator/progress-indicator.tokens.json +1 -1
  108. package/src/prompt-composer/prompt-composer.css +221 -102
  109. package/src/prompt-composer/prompt-composer.tokens.json +15 -0
  110. package/src/prose/prose.css +71 -75
  111. package/src/radio-group/radio-group.css +98 -103
  112. package/src/rating/rating.css +136 -132
  113. package/src/rating/rating.tokens.json +1 -0
  114. package/src/result-state/result-state.css +74 -77
  115. package/src/runtime-properties.mjs +2 -0
  116. package/src/saved-views/saved-views.css +41 -47
  117. package/src/scroll-area/scroll-area.css +39 -32
  118. package/src/section/section.css +161 -41
  119. package/src/section/section.tokens.json +7 -2
  120. package/src/segmented-control/segmented-control.css +254 -97
  121. package/src/segmented-control/segmented-control.tokens.json +15 -11
  122. package/src/select/select.css +118 -117
  123. package/src/select/select.tokens.json +1 -0
  124. package/src/side-navigation/side-navigation.css +179 -182
  125. package/src/side-navigation/side-navigation.tokens.json +1 -0
  126. package/src/skeleton/skeleton.css +47 -48
  127. package/src/slider/slider.css +86 -88
  128. package/src/sparkline/sparkline.css +62 -40
  129. package/src/sparkline/sparkline.tokens.json +2 -0
  130. package/src/spinner/spinner.css +39 -182
  131. package/src/spinner/spinner.tokens.json +0 -2
  132. package/src/split-button/split-button.css +30 -31
  133. package/src/split-button/split-button.tokens.json +1 -0
  134. package/src/splitter/splitter.css +35 -35
  135. package/src/stack/stack.css +24 -24
  136. package/src/stat-card/stat-card.css +341 -224
  137. package/src/stat-card/stat-card.tokens.json +3 -0
  138. package/src/status-indicator/status-indicator.css +28 -28
  139. package/src/stepper/stepper.css +58 -62
  140. package/src/switch/switch.css +86 -92
  141. package/src/table/table.css +310 -165
  142. package/src/table/table.tokens.json +6 -0
  143. package/src/table-of-contents/table-of-contents.css +51 -54
  144. package/src/tabs/tabs.css +330 -302
  145. package/src/tabs/tabs.tokens.json +8 -5
  146. package/src/tag/tag.css +79 -71
  147. package/src/tag/tag.tokens.json +9 -0
  148. package/src/tags-input/tags-input.css +145 -82
  149. package/src/tags-input/tags-input.tokens.json +7 -1
  150. package/src/text-field/text-field.css +132 -136
  151. package/src/text-field/text-field.tokens.json +1 -0
  152. package/src/textarea/textarea.css +31 -28
  153. package/src/textarea/textarea.tokens.json +1 -0
  154. package/src/time-field/time-field.css +72 -69
  155. package/src/time-field/time-field.tokens.json +1 -0
  156. package/src/time-picker/time-picker.css +56 -58
  157. package/src/time-range-picker/time-range-picker.css +126 -133
  158. package/src/timeline/timeline.css +254 -266
  159. package/src/timeline/timeline.tokens.json +5 -0
  160. package/src/toast/toast.css +89 -90
  161. package/src/toast/toast.tokens.json +5 -0
  162. package/src/toggle/toggle.css +62 -25
  163. package/src/toggle/toggle.tokens.json +8 -0
  164. package/src/toggle-group/toggle-group.css +106 -60
  165. package/src/toggle-group/toggle-group.tokens.json +10 -0
  166. package/src/toolbar/toolbar.css +30 -35
  167. package/src/tooltip/tooltip.css +26 -26
  168. package/src/top-navigation/top-navigation.css +243 -259
  169. package/src/tour/tour.css +51 -60
  170. package/src/transfer/transfer.css +160 -164
  171. package/src/tree/tree.css +103 -111
  172. package/src/typography/typography.css +40 -36
  173. package/src/typography/typography.tokens.json +1 -0
  174. package/src/upload/upload.css +224 -224
  175. package/src/visually-hidden/visually-hidden.css +1 -1
  176. package/src/wizard/wizard.css +185 -197
@@ -16,7 +16,7 @@
16
16
  * that keeps an icon-only badge the same height as a text one, and the
17
17
  * minimum inline size that makes a one-figure pill a circle.
18
18
  */
19
- [data-ui='badge'][data-part='root'] {
19
+ [data-ui-badge][data-part-root] {
20
20
  /**
21
21
  * Tone. The default is the one a badge carrying a value should speak in: a
22
22
  * badge with no tone stated is holding a number, not an opinion.
@@ -123,11 +123,11 @@
123
123
 
124
124
  /* ── Tone: which of the five semantic colours the badge speaks in ─────── */
125
125
 
126
- [data-ui='badge'][data-part='root'][data-tone='secondary'] {
126
+ [data-ui-badge][data-part-root][data-tone='secondary'] {
127
127
  --_edge: var(--_border);
128
128
  }
129
129
 
130
- [data-ui='badge'][data-part='root'][data-tone='accent'] {
130
+ [data-ui-badge][data-part-root][data-tone='accent'] {
131
131
  --_solid: var(--slotted-tone-accent-solid);
132
132
  --_on-solid: var(--slotted-tone-accent-on-solid);
133
133
  --_surface: var(--slotted-tone-accent-surface);
@@ -135,7 +135,7 @@
135
135
  --_text: var(--slotted-tone-accent-text);
136
136
  }
137
137
 
138
- [data-ui='badge'][data-part='root'][data-tone='success'] {
138
+ [data-ui-badge][data-part-root][data-tone='success'] {
139
139
  --_solid: var(--slotted-tone-success-solid);
140
140
  --_on-solid: var(--slotted-tone-success-on-solid);
141
141
  --_surface: var(--slotted-tone-success-surface);
@@ -143,7 +143,15 @@
143
143
  --_text: var(--slotted-tone-success-text);
144
144
  }
145
145
 
146
- [data-ui='badge'][data-part='root'][data-tone='warning'] {
146
+ [data-ui-badge][data-part-root][data-tone='info'] {
147
+ --_solid: var(--slotted-tone-info-solid);
148
+ --_on-solid: var(--slotted-tone-info-on-solid);
149
+ --_surface: var(--slotted-tone-info-surface);
150
+ --_border: var(--slotted-tone-info-border);
151
+ --_text: var(--slotted-tone-info-text);
152
+ }
153
+
154
+ [data-ui-badge][data-part-root][data-tone='warning'] {
147
155
  --_solid: var(--slotted-tone-warning-solid);
148
156
  --_on-solid: var(--slotted-tone-warning-on-solid);
149
157
  --_surface: var(--slotted-tone-warning-surface);
@@ -151,7 +159,7 @@
151
159
  --_text: var(--slotted-tone-warning-text);
152
160
  }
153
161
 
154
- [data-ui='badge'][data-part='root'][data-tone='danger'] {
162
+ [data-ui-badge][data-part-root][data-tone='danger'] {
155
163
  --_solid: var(--slotted-tone-danger-solid);
156
164
  --_on-solid: var(--slotted-tone-danger-on-solid);
157
165
  --_surface: var(--slotted-tone-danger-surface);
@@ -180,19 +188,19 @@
180
188
  * border looks like and disagree about which of them should wear it.
181
189
  */
182
190
 
183
- [data-ui='badge'][data-part='root'][data-variant='solid'] {
191
+ [data-ui-badge][data-part-root][data-variant='solid'] {
184
192
  background-color: var(--_solid, ButtonFace);
185
193
  border-color: var(--_edge, ButtonFace);
186
194
  color: var(--_on-solid, ButtonText);
187
195
  }
188
196
 
189
- [data-ui='badge'][data-part='root'][data-variant='soft'] {
197
+ [data-ui-badge][data-part-root][data-variant='soft'] {
190
198
  background-color: var(--_surface, ButtonFace);
191
199
  border-color: var(--_border, ButtonBorder);
192
200
  color: var(--_text, ButtonText);
193
201
  }
194
202
 
195
- [data-ui='badge'][data-part='root'][data-variant='outline'] {
203
+ [data-ui-badge][data-part-root][data-variant='outline'] {
196
204
  background-color: transparent;
197
205
  border-color: var(--_border, ButtonBorder);
198
206
  color: var(--_text, ButtonText);
@@ -200,7 +208,7 @@
200
208
 
201
209
  /* ── Size ─────────────────────────────────────────────────────────────── */
202
210
 
203
- [data-ui='badge'][data-part='root'][data-size='sm'] {
211
+ [data-ui-badge][data-part-root][data-size='sm'] {
204
212
  --_font-size: var(--slotted-control-font-size-sm, 12px);
205
213
  /* `0px` rather than `0`: a unitless zero inside the `--_block-size` sum
206
214
  makes the whole calculation invalid, and `min-block-size` silently fell
@@ -216,7 +224,7 @@
216
224
  * a rounding error: a 12px badge and a 13px badge should not carry visibly
217
225
  * different glyphs.
218
226
  */
219
- [data-ui='badge'][data-part='root'][data-size='lg'] {
227
+ [data-ui-badge][data-part-root][data-size='lg'] {
220
228
  --_font-size: var(--slotted-control-font-size-lg, 14px);
221
229
  --_icon-size: var(--slotted-control-icon-size-md, 16px);
222
230
  --_inset-block: var(--slotted-space-2, 0.25rem);
@@ -226,7 +234,7 @@
226
234
 
227
235
  /* ── Shape ────────────────────────────────────────────────────────────── */
228
236
 
229
- [data-ui='badge'][data-part='root'][data-shape='square'] {
237
+ [data-ui-badge][data-part-root][data-shape='square'] {
230
238
  border-radius: var(--slotted-badge-radius, var(--slotted-radius-sm, 4px));
231
239
  }
232
240
 
@@ -244,7 +252,7 @@
244
252
  * A dot renders no value, so nothing is clipped. Text a consumer forces into
245
253
  * one overflows rather than disappearing.
246
254
  */
247
- [data-ui='badge'][data-part='root'][data-shape='dot'] {
255
+ [data-ui-badge][data-part-root][data-shape='dot'] {
248
256
  block-size: var(--_dot-size);
249
257
  border-color: var(--slotted-badge-dot-border-color, var(--slotted-border-strong, CanvasText));
250
258
  border-radius: var(--slotted-radius-full, 9999px);
@@ -262,7 +270,7 @@
262
270
  * can make the root an `<a>` and a ring that appears only where a family
263
271
  * expects focus is a ring that goes missing.
264
272
  */
265
- [data-ui='badge'][data-part='root']:focus-visible {
273
+ [data-ui-badge][data-part-root]:focus-visible {
266
274
  outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);
267
275
  outline-offset: var(--slotted-focus-ring-offset, 2px);
268
276
  }
@@ -293,14 +301,14 @@
293
301
  * below its content inside the flex root, which is the condition
294
302
  * `text-overflow` needs to have anything to do.
295
303
  */
296
- [data-ui='badge'] [data-part='label'] {
304
+ [data-ui-badge] [data-part-label] {
297
305
  min-inline-size: 0;
298
306
  overflow: hidden;
299
307
  text-overflow: ellipsis;
300
308
  }
301
309
 
302
310
  @supports (text-box: trim-both cap alphabetic) {
303
- [data-ui='badge'] [data-part='label'] {
311
+ [data-ui-badge] [data-part-label] {
304
312
  /**
305
313
  * A descender and a tall diacritic both live outside a box trimmed to the
306
314
  * cap and the baseline, and `overflow: hidden` cut them off — visible in
@@ -323,8 +331,8 @@
323
331
  * from its container, and a bare glyph host such as `ng-icon` reads the
324
332
  * slot's font-size, so both are the glyph scale.
325
333
  */
326
- [data-ui='badge'] [data-part='start'],
327
- [data-ui='badge'] [data-part='end'] {
334
+ [data-ui-badge] [data-part-start],
335
+ [data-ui-badge] [data-part-end] {
328
336
  --slotted-icon-size: var(--_icon-size);
329
337
 
330
338
  align-items: center;
@@ -338,8 +346,8 @@
338
346
  line-height: 1;
339
347
  }
340
348
 
341
- [data-ui='badge'] [data-part='start'] > *,
342
- [data-ui='badge'] [data-part='end'] > * {
349
+ [data-ui-badge] [data-part-start] > *,
350
+ [data-ui-badge] [data-part-end] > * {
343
351
  block-size: 100%;
344
352
  display: block;
345
353
  inline-size: 100%;
@@ -358,7 +366,7 @@
358
366
  * frame is read in. Everything else — which corner, how far in from it — is
359
367
  * written in logical insets and mirrors on its own.
360
368
  */
361
- [data-ui='badge'][data-part='anchor'] {
369
+ [data-ui-badge][data-part-anchor] {
362
370
  --_dir: 1;
363
371
  /* Half the badge's own size. A proportion of the box rather than a step of
364
372
  any scale, which is why it is geometry here and not a token. */
@@ -389,25 +397,25 @@
389
397
  vertical-align: middle;
390
398
  }
391
399
 
392
- [data-ui='badge'][data-part='anchor']:dir(rtl) {
400
+ [data-ui-badge][data-part-anchor]:dir(rtl) {
393
401
  --_dir: -1;
394
402
  }
395
403
 
396
- [data-ui='badge'][data-part='anchor'][data-overlap='circle'] {
404
+ [data-ui-badge][data-part-anchor][data-overlap='circle'] {
397
405
  --_anchor-inset: 14%;
398
406
  }
399
407
 
400
- [data-ui='badge'][data-part='anchor'][data-placement='top-start'],
401
- [data-ui='badge'][data-part='anchor'][data-placement='bottom-start'] {
408
+ [data-ui-badge][data-part-anchor][data-placement='top-start'],
409
+ [data-ui-badge][data-part-anchor][data-placement='bottom-start'] {
402
410
  --_overhang-inline: -50%;
403
411
  }
404
412
 
405
- [data-ui='badge'][data-part='anchor'][data-placement='bottom-start'],
406
- [data-ui='badge'][data-part='anchor'][data-placement='bottom-end'] {
413
+ [data-ui-badge][data-part-anchor][data-placement='bottom-start'],
414
+ [data-ui-badge][data-part-anchor][data-placement='bottom-end'] {
407
415
  --_overhang-block: 50%;
408
416
  }
409
417
 
410
- [data-ui='badge'][data-part='anchor'] > [data-ui='badge'][data-part='root'] {
418
+ [data-ui-badge][data-part-anchor] > [data-ui-badge][data-part-root] {
411
419
  /**
412
420
  * The ring is what separates the badge from whatever it is sitting on.
413
421
  * It is a token rather than a boolean, because a badge inside a card, a
@@ -424,23 +432,23 @@
424
432
  z-index: 1;
425
433
  }
426
434
 
427
- [data-ui='badge'][data-part='anchor'][data-placement='top-end'] > [data-part='root'],
428
- [data-ui='badge'][data-part='anchor'][data-placement='top-start'] > [data-part='root'] {
435
+ [data-ui-badge][data-part-anchor][data-placement='top-end'] > [data-part-root],
436
+ [data-ui-badge][data-part-anchor][data-placement='top-start'] > [data-part-root] {
429
437
  inset-block-start: var(--_anchor-inset);
430
438
  }
431
439
 
432
- [data-ui='badge'][data-part='anchor'][data-placement='bottom-end'] > [data-part='root'],
433
- [data-ui='badge'][data-part='anchor'][data-placement='bottom-start'] > [data-part='root'] {
440
+ [data-ui-badge][data-part-anchor][data-placement='bottom-end'] > [data-part-root],
441
+ [data-ui-badge][data-part-anchor][data-placement='bottom-start'] > [data-part-root] {
434
442
  inset-block-end: var(--_anchor-inset);
435
443
  }
436
444
 
437
- [data-ui='badge'][data-part='anchor'][data-placement='top-end'] > [data-part='root'],
438
- [data-ui='badge'][data-part='anchor'][data-placement='bottom-end'] > [data-part='root'] {
445
+ [data-ui-badge][data-part-anchor][data-placement='top-end'] > [data-part-root],
446
+ [data-ui-badge][data-part-anchor][data-placement='bottom-end'] > [data-part-root] {
439
447
  inset-inline-end: var(--_anchor-inset);
440
448
  }
441
449
 
442
- [data-ui='badge'][data-part='anchor'][data-placement='top-start'] > [data-part='root'],
443
- [data-ui='badge'][data-part='anchor'][data-placement='bottom-start'] > [data-part='root'] {
450
+ [data-ui-badge][data-part-anchor][data-placement='top-start'] > [data-part-root],
451
+ [data-ui-badge][data-part-anchor][data-placement='bottom-start'] > [data-part-root] {
444
452
  inset-inline-start: var(--_anchor-inset);
445
453
  }
446
454
 
@@ -455,7 +463,7 @@
455
463
  * from the page.
456
464
  */
457
465
  @media (forced-colors: active) {
458
- [data-ui='badge'][data-part='root'] {
466
+ [data-ui-badge][data-part-root] {
459
467
  border-color: currentColor;
460
468
  }
461
469
  }
@@ -40,6 +40,11 @@
40
40
  "--slotted-tone-danger-solid",
41
41
  "--slotted-tone-danger-surface",
42
42
  "--slotted-tone-danger-text",
43
+ "--slotted-tone-info-border",
44
+ "--slotted-tone-info-on-solid",
45
+ "--slotted-tone-info-solid",
46
+ "--slotted-tone-info-surface",
47
+ "--slotted-tone-info-text",
43
48
  "--slotted-tone-secondary-border",
44
49
  "--slotted-tone-secondary-on-solid",
45
50
  "--slotted-tone-secondary-solid-hover",
@@ -12,7 +12,7 @@
12
12
  * rule `link` arrived at after painting hover with a fill role; a trail is
13
13
  * text for the same reason a link is.
14
14
  */
15
- [data-ui='breadcrumb'] {
15
+ [data-ui-breadcrumb] {
16
16
  --_rest: var(--slotted-breadcrumb-color, var(--slotted-text-muted, GrayText));
17
17
  --_strong: var(--slotted-breadcrumb-color-current, var(--slotted-text, CanvasText));
18
18
  --_hover: var(
@@ -59,7 +59,7 @@
59
59
  * inline gap because two wrapped lines of one type size need less air between
60
60
  * them than two words do beside each other.
61
61
  */
62
- [data-ui='breadcrumb'] [data-part='list'] {
62
+ [data-ui-breadcrumb] [data-part-list] {
63
63
  align-items: center;
64
64
  display: flex;
65
65
  flex-wrap: wrap;
@@ -79,7 +79,7 @@
79
79
  );
80
80
  }
81
81
 
82
- [data-ui='breadcrumb'] [data-part='item'] {
82
+ [data-ui-breadcrumb] [data-part-item] {
83
83
  align-items: center;
84
84
  column-gap: var(--_gap);
85
85
  display: flex;
@@ -104,7 +104,7 @@
104
104
  * crumb rendered and the collapse did nothing at all. The capture is what
105
105
  * said so; both bindings write the attribute and neither could have known.
106
106
  */
107
- [data-ui='breadcrumb'] [data-part='item'][hidden] {
107
+ [data-ui-breadcrumb] [data-part-item][hidden] {
108
108
  display: none;
109
109
  }
110
110
 
@@ -120,12 +120,12 @@
120
120
  * frame of a drag, and the ellipsis returns in the same frame to the place
121
121
  * the crumbs leave.
122
122
  */
123
- [data-ui='breadcrumb'][data-expanded] [data-part='item'] {
123
+ [data-ui-breadcrumb][data-expanded] [data-part-item] {
124
124
  transition: opacity var(--slotted-duration-medium) var(--slotted-easing-enter);
125
125
  }
126
126
 
127
127
  @starting-style {
128
- [data-ui='breadcrumb'][data-expanded] [data-part='item'] {
128
+ [data-ui-breadcrumb][data-expanded] [data-part-item] {
129
129
  opacity: 0;
130
130
  }
131
131
  }
@@ -139,7 +139,7 @@
139
139
  * it distinguishes the one crumb being addressed from the seven beside it.
140
140
  */
141
141
 
142
- [data-ui='breadcrumb'] :is([data-part='link'], [data-part='page'], [data-part='trigger']) {
142
+ [data-ui-breadcrumb] :is([data-part-link], [data-part-page], [data-part-trigger]) {
143
143
  border-radius: var(--slotted-breadcrumb-radius, var(--slotted-control-radius, 4px));
144
144
  display: block;
145
145
  /**
@@ -165,7 +165,7 @@
165
165
  white-space: nowrap;
166
166
  }
167
167
 
168
- [data-ui='breadcrumb'] [data-part='link'] {
168
+ [data-ui-breadcrumb] [data-part-link] {
169
169
  color: inherit;
170
170
  }
171
171
 
@@ -175,7 +175,7 @@
175
175
  * the pointer, and a chevron after the label that says a list opens here
176
176
  * rather than a page. It keeps the line's height; the menu is the consumer's.
177
177
  */
178
- [data-ui='breadcrumb'] [data-part='trigger'] {
178
+ [data-ui-breadcrumb] [data-part-trigger] {
179
179
  appearance: none;
180
180
  background-color: transparent;
181
181
  border: 0;
@@ -187,7 +187,7 @@
187
187
  }
188
188
 
189
189
  /* The switcher of the page the reader is on is still the page. */
190
- [data-ui='breadcrumb'] [data-part='trigger'][aria-current='page'] {
190
+ [data-ui-breadcrumb] [data-part-trigger][aria-current='page'] {
191
191
  color: var(--_strong);
192
192
  font-weight: var(--slotted-breadcrumb-page-weight, var(--slotted-font-weight-medium, 500));
193
193
  }
@@ -201,26 +201,26 @@
201
201
  * An atomic inline box takes no underline, so the hover rule marks the words
202
202
  * and not the glyph.
203
203
  */
204
- [data-ui='breadcrumb']
205
- :is([data-part='link'], [data-part='page'], [data-part='trigger'])
206
- > :is([data-ui='icon'], [data-ui='avatar']) {
204
+ [data-ui-breadcrumb]
205
+ :is([data-part-link], [data-part-page], [data-part-trigger])
206
+ > :is([data-ui-icon], [data-ui-avatar]) {
207
207
  margin-inline-end: var(--slotted-breadcrumb-content-gap, var(--slotted-space-3, 6px));
208
208
  }
209
209
 
210
- [data-ui='breadcrumb']
211
- :is([data-part='link'], [data-part='page'], [data-part='trigger'])
212
- > [data-ui='badge'] {
210
+ [data-ui-breadcrumb]
211
+ :is([data-part-link], [data-part-page], [data-part-trigger])
212
+ > [data-ui-badge] {
213
213
  margin-inline-start: var(--slotted-breadcrumb-content-gap, var(--slotted-space-3, 6px));
214
214
  }
215
215
 
216
216
  /* The switcher's chevron is its last element, after the label. */
217
- [data-ui='breadcrumb'] [data-part='trigger'] > [data-ui='icon']:last-child {
217
+ [data-ui-breadcrumb] [data-part-trigger] > [data-ui-icon]:last-child {
218
218
  margin-inline: var(--slotted-space-2, 4px) 0;
219
219
  transition: rotate var(--slotted-duration-short) var(--slotted-easing-standard);
220
220
  }
221
221
 
222
222
  /* The chevron turns while the menu it opened is up, and back when it closes. */
223
- [data-ui='breadcrumb'] [data-part='trigger'][data-open] > [data-ui='icon']:last-child {
223
+ [data-ui-breadcrumb] [data-part-trigger][data-open] > [data-ui-icon]:last-child {
224
224
  rotate: 180deg;
225
225
  }
226
226
 
@@ -230,19 +230,19 @@
230
230
  * weight is on the one crumb that never moves, so nothing beside it shifts
231
231
  * when the pointer arrives.
232
232
  */
233
- [data-ui='breadcrumb'] [data-part='page'] {
233
+ [data-ui-breadcrumb] [data-part-page] {
234
234
  color: var(--_strong);
235
235
  font-weight: var(--slotted-breadcrumb-page-weight, var(--slotted-font-weight-medium, 500));
236
236
  }
237
237
 
238
- [data-ui='breadcrumb'] :is([data-part='link'], [data-part='trigger']):not([data-disabled]):hover {
238
+ [data-ui-breadcrumb] :is([data-part-link], [data-part-trigger]):not([data-disabled]):hover {
239
239
  color: var(--_hover);
240
240
  text-decoration-color: currentColor;
241
241
  }
242
242
 
243
243
  /* An open switcher holds the pressed colour for as long as its menu is up. */
244
- [data-ui='breadcrumb']
245
- :is([data-part='link'], [data-part='trigger']):not([data-disabled]):is(:active, [data-open]) {
244
+ [data-ui-breadcrumb]
245
+ :is([data-part-link], [data-part-trigger]):not([data-disabled]):is(:active, [data-open]) {
246
246
  color: var(--_strong);
247
247
  /* Without the pointer over it an open switcher would read as the page:
248
248
  same colour, no mark. The underline says which crumb the menu is from. */
@@ -254,12 +254,12 @@
254
254
  * brings only the underline, and a press — or the menu it opened — steps the
255
255
  * label back to the hover mix. Hover and press still differ, as on a link.
256
256
  */
257
- [data-ui='breadcrumb'] [data-part='trigger'][aria-current='page']:not([data-disabled]):hover {
257
+ [data-ui-breadcrumb] [data-part-trigger][aria-current='page']:not([data-disabled]):hover {
258
258
  color: var(--_strong);
259
259
  }
260
260
 
261
- [data-ui='breadcrumb']
262
- [data-part='trigger'][aria-current='page']:not([data-disabled]):is(:active, [data-open]) {
261
+ [data-ui-breadcrumb]
262
+ [data-part-trigger][aria-current='page']:not([data-disabled]):is(:active, [data-open]) {
263
263
  color: var(--_hover);
264
264
  }
265
265
 
@@ -273,13 +273,13 @@
273
273
  * box, so a ring drawn outside crossed both separators — at two pixels out,
274
274
  * and on its own edge at dense.
275
275
  */
276
- [data-ui='breadcrumb'] :is([data-part='link'], [data-part='trigger']):focus-visible {
276
+ [data-ui-breadcrumb] :is([data-part-link], [data-part-trigger]):focus-visible {
277
277
  outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);
278
278
  outline-offset: var(--slotted-breadcrumb-focus-ring-offset, 1px);
279
279
  text-decoration-color: currentColor;
280
280
  }
281
281
 
282
- [data-ui='breadcrumb'] [data-part='ellipsis']:focus-visible {
282
+ [data-ui-breadcrumb] [data-part-ellipsis]:focus-visible {
283
283
  outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);
284
284
  outline-offset: var(
285
285
  --slotted-breadcrumb-ellipsis-focus-ring-offset,
@@ -300,7 +300,7 @@
300
300
  * with children shows the children and the empty one shows the rule.
301
301
  */
302
302
 
303
- [data-ui='breadcrumb'] [data-part='separator'] {
303
+ [data-ui-breadcrumb] [data-part-separator] {
304
304
  align-items: center;
305
305
  color: var(--_separator);
306
306
  display: flex;
@@ -308,7 +308,7 @@
308
308
  justify-content: center;
309
309
  }
310
310
 
311
- [data-ui='breadcrumb'] [data-part='separator']:empty {
311
+ [data-ui-breadcrumb] [data-part-separator]:empty {
312
312
  background-color: currentColor;
313
313
  /* Rounded, so a rule of `0.9em` ends on a whole pixel: 12 at 13px, 11 dense. */
314
314
  block-size: round(nearest, var(--slotted-breadcrumb-separator-length, 0.9em), 1px);
@@ -325,7 +325,7 @@
325
325
  * trail itself runs the other way. `:dir()` rather than an ancestor `[dir]`,
326
326
  * so a trail inside a left-to-right island leans the way that island reads.
327
327
  */
328
- [data-ui='breadcrumb'] [data-part='separator']:empty:dir(rtl) {
328
+ [data-ui-breadcrumb] [data-part-separator]:empty:dir(rtl) {
329
329
  rotate: calc(-1 * var(--slotted-breadcrumb-separator-skew, 20deg));
330
330
  }
331
331
 
@@ -359,7 +359,7 @@
359
359
  * reader hears is a count rather than three dots.
360
360
  */
361
361
 
362
- [data-ui='breadcrumb'] [data-part='ellipsis'] {
362
+ [data-ui-breadcrumb] [data-part-ellipsis] {
363
363
  --slotted-icon-size: var(--_icon-size);
364
364
 
365
365
  align-items: center;
@@ -394,7 +394,7 @@
394
394
  }
395
395
 
396
396
  /* The halo that completes the target where the line is shorter than it. */
397
- [data-ui='breadcrumb'] [data-part='ellipsis']::after {
397
+ [data-ui-breadcrumb] [data-part-ellipsis]::after {
398
398
  content: '';
399
399
  inset: min(0px, calc((100% - var(--slotted-target-min, 24px)) / 2));
400
400
  position: absolute;
@@ -403,17 +403,17 @@
403
403
  /* On a finger the halo reaches the comfortable size in both axes; the box
404
404
  keeps the line's height, so the trail does not grow. */
405
405
  @media (pointer: coarse) {
406
- [data-ui='breadcrumb'] [data-part='ellipsis']::after {
406
+ [data-ui-breadcrumb] [data-part-ellipsis]::after {
407
407
  inset: min(0px, calc((100% - var(--slotted-target-comfortable, 44px)) / 2));
408
408
  }
409
409
  }
410
410
 
411
411
  /* The ground moves under the pointer and nothing else does (R2). */
412
- [data-ui='breadcrumb'] [data-part='ellipsis']:not([data-disabled]):hover {
412
+ [data-ui-breadcrumb] [data-part-ellipsis]:not([data-disabled]):hover {
413
413
  background-color: var(--slotted-breadcrumb-ellipsis-background-hover, var(--_ellipsis-hover));
414
414
  }
415
415
 
416
- [data-ui='breadcrumb'] [data-part='ellipsis']:not([data-disabled]):active {
416
+ [data-ui-breadcrumb] [data-part-ellipsis]:not([data-disabled]):active {
417
417
  background-color: var(--slotted-breadcrumb-ellipsis-background-active, var(--_ellipsis-active));
418
418
  }
419
419
 
@@ -430,11 +430,11 @@
430
430
  */
431
431
 
432
432
  @media (forced-colors: active) {
433
- [data-ui='breadcrumb'] [data-part='separator']:empty {
433
+ [data-ui-breadcrumb] [data-part-separator]:empty {
434
434
  background-color: GrayText;
435
435
  }
436
436
 
437
- [data-ui='breadcrumb'] [data-part='ellipsis'] {
437
+ [data-ui-breadcrumb] [data-part-ellipsis] {
438
438
  border: var(--slotted-border-width-thin, 1px) solid ButtonBorder;
439
439
  }
440
440
  }