@slotted/styles 0.1.0-beta.7 → 0.1.0-beta.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (128) hide show
  1. package/package.json +1 -1
  2. package/src/accordion/accordion.css +10 -10
  3. package/src/action-bar/action-bar.css +31 -32
  4. package/src/action-sheet/action-sheet.css +36 -36
  5. package/src/alert/alert.css +35 -35
  6. package/src/app-shell/app-shell.css +280 -299
  7. package/src/aspect-ratio/aspect-ratio.css +9 -9
  8. package/src/attachment/attachment.css +91 -99
  9. package/src/avatar/avatar.css +41 -41
  10. package/src/avatar-group/avatar-group.css +21 -22
  11. package/src/badge/badge.css +37 -37
  12. package/src/breadcrumb/breadcrumb.css +37 -37
  13. package/src/button/button.css +88 -69
  14. package/src/button-group/button-group.css +69 -73
  15. package/src/calendar/calendar.css +93 -103
  16. package/src/card/card.css +54 -61
  17. package/src/carousel/carousel.css +150 -161
  18. package/src/cascader/cascader.css +147 -151
  19. package/src/chart/chart.css +225 -240
  20. package/src/checkbox/checkbox.css +119 -124
  21. package/src/checkbox-group/checkbox-group.css +7 -7
  22. package/src/code-block/code-block.css +81 -85
  23. package/src/collapsible/collapsible.css +69 -76
  24. package/src/color-picker/color-picker.css +83 -91
  25. package/src/column-manager/column-manager.css +106 -114
  26. package/src/combobox/combobox.css +99 -101
  27. package/src/command-palette/command-palette.css +84 -90
  28. package/src/container/container.css +24 -24
  29. package/src/context-menu/context-menu.css +8 -8
  30. package/src/currency-field/currency-field.css +99 -104
  31. package/src/dashboard-grid/dashboard-grid.css +104 -107
  32. package/src/data-grid/data-grid.css +458 -456
  33. package/src/data-grid/data-grid.tokens.json +2 -0
  34. package/src/data-list/data-list.css +67 -69
  35. package/src/date-field/date-field.css +50 -50
  36. package/src/date-picker/date-picker.css +40 -42
  37. package/src/date-range-picker/date-range-picker.css +114 -118
  38. package/src/datetime-field/datetime-field.css +73 -78
  39. package/src/datetime-picker/datetime-picker.css +61 -63
  40. package/src/datetime-range-picker/datetime-range-picker.css +149 -156
  41. package/src/description-list/description-list.css +61 -64
  42. package/src/detail-panel/detail-panel.css +70 -70
  43. package/src/dialog/dialog.css +312 -148
  44. package/src/divider/divider.css +18 -18
  45. package/src/drawer/drawer.css +186 -209
  46. package/src/entity-picker/entity-picker.css +220 -239
  47. package/src/event-calendar/event-calendar.css +343 -385
  48. package/src/field/field.css +74 -78
  49. package/src/field-group/field-group.css +22 -25
  50. package/src/filter-bar/filter-bar.css +193 -209
  51. package/src/form/form.css +21 -24
  52. package/src/fullscreen/fullscreen.css +24 -25
  53. package/src/grid/grid.css +28 -28
  54. package/src/highlight/highlight.css +6 -6
  55. package/src/hover-card/hover-card.css +6 -6
  56. package/src/icon/icon.css +15 -15
  57. package/src/image/image.css +39 -39
  58. package/src/import-export-center/import-export-center.css +135 -156
  59. package/src/inline/inline.css +27 -27
  60. package/src/inline-message/inline-message.css +28 -28
  61. package/src/kbd/kbd.css +26 -26
  62. package/src/link/link.css +15 -15
  63. package/src/list/list.css +20 -20
  64. package/src/list-item/list-item.css +66 -66
  65. package/src/listbox/listbox.css +56 -59
  66. package/src/loading-overlay/loading-overlay.css +75 -92
  67. package/src/markdown/markdown.css +17 -17
  68. package/src/menu/menu.css +63 -65
  69. package/src/menubar/menubar.css +13 -13
  70. package/src/message/message.css +174 -202
  71. package/src/message-scroller/message-scroller.css +41 -42
  72. package/src/multi-select/multi-select.css +131 -137
  73. package/src/navigation-menu/navigation-menu.css +167 -188
  74. package/src/notification-center/notification-center.css +134 -148
  75. package/src/number-field/number-field.css +76 -81
  76. package/src/otp-input/otp-input.css +48 -48
  77. package/src/page/page.css +23 -23
  78. package/src/page-header/page-header.css +219 -280
  79. package/src/pagination/pagination.css +68 -72
  80. package/src/popover/popover.css +40 -49
  81. package/src/progress-indicator/progress-indicator.css +85 -90
  82. package/src/prompt-composer/prompt-composer.css +94 -99
  83. package/src/prose/prose.css +71 -75
  84. package/src/radio-group/radio-group.css +98 -103
  85. package/src/rating/rating.css +132 -132
  86. package/src/result-state/result-state.css +74 -77
  87. package/src/saved-views/saved-views.css +41 -47
  88. package/src/scroll-area/scroll-area.css +32 -35
  89. package/src/section/section.css +16 -16
  90. package/src/segmented-control/segmented-control.css +77 -79
  91. package/src/select/select.css +113 -115
  92. package/src/side-navigation/side-navigation.css +170 -180
  93. package/src/skeleton/skeleton.css +47 -48
  94. package/src/slider/slider.css +86 -88
  95. package/src/sparkline/sparkline.css +32 -32
  96. package/src/spinner/spinner.css +4 -4
  97. package/src/split-button/split-button.css +26 -31
  98. package/src/splitter/splitter.css +35 -35
  99. package/src/stack/stack.css +24 -24
  100. package/src/stat-card/stat-card.css +102 -103
  101. package/src/status-indicator/status-indicator.css +28 -28
  102. package/src/stepper/stepper.css +58 -62
  103. package/src/switch/switch.css +86 -92
  104. package/src/table/table.css +189 -198
  105. package/src/table-of-contents/table-of-contents.css +51 -54
  106. package/src/tabs/tabs.css +157 -172
  107. package/src/tag/tag.css +67 -71
  108. package/src/tags-input/tags-input.css +124 -74
  109. package/src/tags-input/tags-input.tokens.json +6 -1
  110. package/src/text-field/text-field.css +108 -126
  111. package/src/textarea/textarea.css +26 -26
  112. package/src/time-field/time-field.css +67 -67
  113. package/src/time-picker/time-picker.css +56 -58
  114. package/src/time-range-picker/time-range-picker.css +126 -133
  115. package/src/timeline/timeline.css +244 -266
  116. package/src/toast/toast.css +81 -90
  117. package/src/toggle/toggle.css +29 -33
  118. package/src/toggle-group/toggle-group.css +67 -71
  119. package/src/toolbar/toolbar.css +30 -35
  120. package/src/tooltip/tooltip.css +26 -26
  121. package/src/top-navigation/top-navigation.css +243 -259
  122. package/src/tour/tour.css +51 -60
  123. package/src/transfer/transfer.css +160 -164
  124. package/src/tree/tree.css +103 -111
  125. package/src/typography/typography.css +36 -36
  126. package/src/upload/upload.css +224 -224
  127. package/src/visually-hidden/visually-hidden.css +1 -1
  128. package/src/wizard/wizard.css +185 -197
@@ -16,7 +16,7 @@
16
16
  * `checkbox` itself, so a theme can move one without the other and neither
17
17
  * stylesheet depends on the other's selectors.
18
18
  */
19
- [data-ui='radio-group'][data-part='root'] {
19
+ [data-ui-radio-group][data-part-root] {
20
20
  /**
21
21
  * The circle is the selection scale's, the same square `checkbox` draws
22
22
  * in: 16px at `md`, stated once by the theme and not moved by density.
@@ -61,7 +61,7 @@
61
61
  * it reads well at, and it is the same doubling the horizontal rule below
62
62
  * already applies.
63
63
  */
64
- [data-ui='radio-group'][data-part='root']:has([data-part='description']) {
64
+ [data-ui-radio-group][data-part-root]:has([data-part-description]) {
65
65
  row-gap: var(--slotted-radio-group-gap, calc(var(--_gap) * 2));
66
66
  }
67
67
 
@@ -70,7 +70,7 @@
70
70
  * past the container is a row whose last option nobody can see, and a set of
71
71
  * options is not a scroll region.
72
72
  */
73
- [data-ui='radio-group'][data-part='root'][data-orientation='horizontal'] {
73
+ [data-ui-radio-group][data-part-root][data-orientation='horizontal'] {
74
74
  flex-direction: row;
75
75
  flex-wrap: wrap;
76
76
  /** Twice the control gap: the distance between two choices has to read as
@@ -80,7 +80,7 @@
80
80
 
81
81
  /* ── Size ─────────────────────────────────────────────────────────────── */
82
82
 
83
- [data-ui='radio-group'][data-part='root'][data-size='sm'] {
83
+ [data-ui-radio-group][data-part-root][data-size='sm'] {
84
84
  --_size: var(--slotted-radio-group-size, var(--slotted-selection-size-sm, 14px));
85
85
  --_font-size: var(--slotted-control-font-size-sm, 12px);
86
86
  --_gap: var(--slotted-control-gap-sm, 6px);
@@ -91,7 +91,7 @@
91
91
  );
92
92
  }
93
93
 
94
- [data-ui='radio-group'][data-part='root'][data-size='md'] {
94
+ [data-ui-radio-group][data-part-root][data-size='md'] {
95
95
  --_size: var(--slotted-radio-group-size, var(--slotted-selection-size-md, 16px));
96
96
  --_font-size: var(--slotted-control-font-size-md, 13px);
97
97
  --_gap: var(--slotted-control-gap-md, 8px);
@@ -102,7 +102,7 @@
102
102
  );
103
103
  }
104
104
 
105
- [data-ui='radio-group'][data-part='root'][data-size='lg'] {
105
+ [data-ui-radio-group][data-part-root][data-size='lg'] {
106
106
  --_size: var(--slotted-radio-group-size, var(--slotted-selection-size-lg, 18px));
107
107
  --_font-size: var(--slotted-control-font-size-lg, 14px);
108
108
  --_gap: var(--slotted-control-gap-lg, 8px);
@@ -115,7 +115,7 @@
115
115
 
116
116
  /* ── One item ─────────────────────────────────────────────────────────── */
117
117
 
118
- [data-ui='radio-group'] [data-part='item'] {
118
+ [data-ui-radio-group] [data-part-item] {
119
119
  /* The rows are as tall as they read. Stretched, the description drifted
120
120
  away from the label it belongs to; the surplus is the container's. */
121
121
  align-content: start;
@@ -130,15 +130,15 @@
130
130
 
131
131
  /* The direction the halo and the target are placed in — the root's, not the
132
132
  label's, for the reason `checkbox` records. */
133
- [data-ui='radio-group'][data-part='root'] {
133
+ [data-ui-radio-group][data-part-root] {
134
134
  --_direction: ltr;
135
135
  }
136
136
 
137
- [data-ui='radio-group'][data-part='root']:dir(rtl) {
137
+ [data-ui-radio-group][data-part-root]:dir(rtl) {
138
138
  --_direction: rtl;
139
139
  }
140
140
 
141
- [data-ui='radio-group'] [data-part='control'] {
141
+ [data-ui-radio-group] [data-part-control] {
142
142
  appearance: none;
143
143
  background-color: var(--slotted-radio-group-background, var(--slotted-surface, Canvas));
144
144
  /* The medium step in the strong border colour, as `checkbox` edges its
@@ -175,7 +175,7 @@
175
175
  * names the dot glyph as this part's mark, and the mark then enters with the
176
176
  * same growth `checkbox`'s does.
177
177
  */
178
- [data-ui='radio-group'] [data-part='indicator'] {
178
+ [data-ui-radio-group] [data-part-indicator] {
179
179
  --slotted-icon-size: var(--_size);
180
180
 
181
181
  block-size: var(--_size);
@@ -195,12 +195,12 @@
195
195
  scale var(--slotted-duration-medium) var(--slotted-control-transition-easing);
196
196
  }
197
197
 
198
- [data-ui='radio-group'] [data-part='control']:checked + [data-part='indicator'] {
198
+ [data-ui-radio-group] [data-part-control]:checked + [data-part-indicator] {
199
199
  opacity: 1;
200
200
  scale: 1;
201
201
  }
202
202
 
203
- [data-ui='radio-group'] [data-part='label'] {
203
+ [data-ui-radio-group] [data-part-label] {
204
204
  cursor: pointer;
205
205
  grid-column: 2;
206
206
  grid-row: 1;
@@ -213,11 +213,11 @@
213
213
  * in Arabic inside a row in Portuguese put it on the far side, against
214
214
  * nothing, with the text against the control.
215
215
  */
216
- [data-ui='radio-group'] [data-part='item']:has(> [data-part='label']) {
216
+ [data-ui-radio-group] [data-part-item]:has(> [data-part-label]) {
217
217
  column-gap: var(--_label-gap);
218
218
  }
219
219
 
220
- [data-ui='radio-group'][data-part='root']:not([data-variant='tile']) [data-part='label'] {
220
+ [data-ui-radio-group][data-part-root]:not([data-variant='tile']) [data-part-label] {
221
221
  justify-self: start;
222
222
  position: relative;
223
223
  }
@@ -232,7 +232,7 @@
232
232
  * `high-contrast` (CK7). The tile has neither; its surface answers the
233
233
  * pointer.
234
234
  */
235
- [data-ui='radio-group'][data-part='root']:not([data-variant='tile']) [data-part='label']::before {
235
+ [data-ui-radio-group][data-part-root]:not([data-variant='tile']) [data-part-label]::before {
236
236
  block-size: var(--_target);
237
237
  content: '';
238
238
  direction: var(--_direction);
@@ -245,7 +245,7 @@
245
245
  z-index: -1;
246
246
  }
247
247
 
248
- [data-ui='radio-group'][data-part='root']:not([data-variant='tile']) [data-part='label']::after {
248
+ [data-ui-radio-group][data-part-root]:not([data-variant='tile']) [data-part-label]::after {
249
249
  background-color: var(--slotted-radio-group-halo-color, var(--slotted-tone-accent-text));
250
250
  border-radius: calc(var(--_size) / 2 + var(--_halo-spread));
251
251
  content: '';
@@ -263,12 +263,11 @@
263
263
  /* A label with nothing in it — the Angular binding renders one whether or
264
264
  not content is projected — has no text to wash, so the wash closes around
265
265
  the circle at the same distance on all four sides. */
266
- [data-ui='radio-group'][data-part='root']:not([data-variant='tile'])
267
- [data-part='label']:empty::after {
266
+ [data-ui-radio-group][data-part-root]:not([data-variant='tile']) [data-part-label]:empty::after {
268
267
  inset-inline-end: calc(var(--_label-gap) - var(--_halo-spread));
269
268
  }
270
269
 
271
- [data-ui='radio-group'] [data-part='description'] {
270
+ [data-ui-radio-group] [data-part-description] {
272
271
  color: var(--slotted-radio-group-description-color, var(--slotted-text-muted, GrayText));
273
272
  font-size: var(
274
273
  --slotted-radio-group-description-font-size,
@@ -284,7 +283,7 @@
284
283
 
285
284
  /* ── Placement ────────────────────────────────────────────────────────── */
286
285
 
287
- [data-ui='radio-group'][data-part='root'][data-label-placement='start'] [data-part='item'] {
286
+ [data-ui-radio-group][data-part-root][data-label-placement='start'] [data-part-item] {
288
287
  /**
289
288
  * `1fr` and not `max-content`, which was tried first and looked better in
290
289
  * one row than in five: `max-content` sizes each item's first column from
@@ -297,29 +296,26 @@
297
296
  grid-template-columns: minmax(0, 1fr) auto;
298
297
  }
299
298
 
300
- [data-ui='radio-group'][data-part='root'][data-label-placement='start'] [data-part='control'],
301
- [data-ui='radio-group'][data-part='root'][data-label-placement='start'] [data-part='indicator'] {
299
+ [data-ui-radio-group][data-part-root][data-label-placement='start'] [data-part-control],
300
+ [data-ui-radio-group][data-part-root][data-label-placement='start'] [data-part-indicator] {
302
301
  grid-area: 1 / 2;
303
302
  }
304
303
 
305
- [data-ui='radio-group'][data-part='root'][data-label-placement='start'] [data-part='label'],
306
- [data-ui='radio-group'][data-part='root'][data-label-placement='start']
307
- [data-part='description'] {
304
+ [data-ui-radio-group][data-part-root][data-label-placement='start'] [data-part-label],
305
+ [data-ui-radio-group][data-part-root][data-label-placement='start'] [data-part-description] {
308
306
  grid-column: 1;
309
307
  }
310
308
 
311
- [data-ui='radio-group'][data-part='root'][data-label-placement='start'] [data-part='label'] {
309
+ [data-ui-radio-group][data-part-root][data-label-placement='start'] [data-part-label] {
312
310
  justify-self: stretch;
313
311
  }
314
312
 
315
- [data-ui='radio-group'][data-part='root'][data-label-placement='start']
316
- [data-part='label']::before {
313
+ [data-ui-radio-group][data-part-root][data-label-placement='start'] [data-part-label]::before {
317
314
  inset-inline-end: calc(-1 * (var(--_size) + var(--_label-gap)));
318
315
  inset-inline-start: auto;
319
316
  }
320
317
 
321
- [data-ui='radio-group'][data-part='root'][data-label-placement='start']
322
- [data-part='label']::after {
318
+ [data-ui-radio-group][data-part-root][data-label-placement='start'] [data-part-label]::after {
323
319
  inset-inline-end: calc(-1 * (var(--_size) + var(--_label-gap) + var(--_halo-spread)));
324
320
  inset-inline-start: calc(-1.5 * var(--_halo-spread));
325
321
  }
@@ -331,22 +327,22 @@
331
327
  * `checkbox` gives, lit from the circle and from the label alike because
332
328
  * both are the one target.
333
329
  */
334
- [data-ui='radio-group'][data-part='root']:not([data-readonly])
335
- [data-part='control']:hover:not(:disabled) {
330
+ [data-ui-radio-group][data-part-root]:not([data-readonly])
331
+ [data-part-control]:hover:not(:disabled) {
336
332
  border-color: var(--slotted-radio-group-hover-border-color, var(--slotted-tone-accent-border));
337
333
  }
338
334
 
339
- [data-ui='radio-group'][data-part='root']:not([data-readonly])
340
- [data-part='control']:hover:not(:disabled)
341
- ~ [data-part='label']::after,
342
- [data-ui='radio-group'][data-part='root']:not([data-readonly])
343
- [data-part='control']:not(:disabled)
344
- ~ [data-part='label']:hover::after {
335
+ [data-ui-radio-group][data-part-root]:not([data-readonly])
336
+ [data-part-control]:hover:not(:disabled)
337
+ ~ [data-part-label]::after,
338
+ [data-ui-radio-group][data-part-root]:not([data-readonly])
339
+ [data-part-control]:not(:disabled)
340
+ ~ [data-part-label]:hover::after {
345
341
  opacity: var(--slotted-selection-halo-opacity, 0.12);
346
342
  }
347
343
 
348
- [data-ui='radio-group'][data-part='root']:not([data-readonly])
349
- [data-part='control']:active:not(:disabled) {
344
+ [data-ui-radio-group][data-part-root]:not([data-readonly])
345
+ [data-part-control]:active:not(:disabled) {
350
346
  background-color: var(
351
347
  --slotted-radio-group-active-background,
352
348
  var(--slotted-tone-accent-subtle-active)
@@ -359,32 +355,32 @@
359
355
  * what says chosen and a filled circle with a white dot is a checkbox with a
360
356
  * different corner.
361
357
  */
362
- [data-ui='radio-group'] [data-part='control']:checked {
358
+ [data-ui-radio-group] [data-part-control]:checked {
363
359
  border-color: var(--slotted-radio-group-checked-border-color, var(--slotted-tone-accent-solid));
364
360
  }
365
361
 
366
- [data-ui='radio-group'][data-part='root']:not([data-readonly])
367
- [data-part='control']:checked:hover:not(:disabled) {
362
+ [data-ui-radio-group][data-part-root]:not([data-readonly])
363
+ [data-part-control]:checked:hover:not(:disabled) {
368
364
  border-color: var(
369
365
  --slotted-radio-group-checked-hover-border-color,
370
366
  var(--slotted-tone-accent-solid-hover)
371
367
  );
372
368
  }
373
369
 
374
- [data-ui='radio-group'][data-part='root']:not([data-readonly])
375
- [data-part='control']:checked:active:not(:disabled) {
370
+ [data-ui-radio-group][data-part-root]:not([data-readonly])
371
+ [data-part-control]:checked:active:not(:disabled) {
376
372
  border-color: var(
377
373
  --slotted-radio-group-checked-active-border-color,
378
374
  var(--slotted-tone-accent-solid-active)
379
375
  );
380
376
  }
381
377
 
382
- [data-ui='radio-group'] [data-part='control']:focus-visible {
378
+ [data-ui-radio-group] [data-part-control]:focus-visible {
383
379
  outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);
384
380
  outline-offset: var(--slotted-focus-ring-offset, 2px);
385
381
  }
386
382
 
387
- [data-ui='radio-group'][data-part='root'][data-invalid] {
383
+ [data-ui-radio-group][data-part-root][data-invalid] {
388
384
  --slotted-focus-ring-color: var(
389
385
  --slotted-radio-group-invalid-focus-ring-color,
390
386
  var(--slotted-focus-ring-color-invalid, Highlight)
@@ -402,7 +398,7 @@
402
398
  * shadow does not. The box keeps its size, because the border box is what is
403
399
  * measured.
404
400
  */
405
- [data-ui='radio-group'][data-part='root'][data-invalid] [data-part='control'] {
401
+ [data-ui-radio-group][data-part-root][data-invalid] [data-part-control] {
406
402
  border-width: calc(
407
403
  var(--slotted-radio-group-border-width, var(--slotted-border-width-medium, 1.5px)) +
408
404
  var(
@@ -416,16 +412,16 @@
416
412
  );
417
413
  }
418
414
 
419
- [data-ui='radio-group'][data-part='root'][data-invalid] [data-part='control']:checked {
415
+ [data-ui-radio-group][data-part-root][data-invalid] [data-part-control]:checked {
420
416
  border-color: var(
421
417
  --slotted-radio-group-invalid-checked-border-color,
422
418
  var(--slotted-tone-danger-solid)
423
419
  );
424
420
  }
425
421
 
426
- [data-ui='radio-group'][data-part='root'][data-invalid]
427
- [data-part='control']:checked
428
- + [data-part='indicator'] {
422
+ [data-ui-radio-group][data-part-root][data-invalid]
423
+ [data-part-control]:checked
424
+ + [data-part-indicator] {
429
425
  color: var(--slotted-radio-group-invalid-mark-color, var(--slotted-tone-danger-solid));
430
426
  }
431
427
 
@@ -434,12 +430,12 @@
434
430
  * unchosen options and the pointer say the value is not the reader's to move,
435
431
  * and the chosen one keeps its accent because the value is real.
436
432
  */
437
- [data-ui='radio-group'][data-part='root'][data-readonly] [data-part='control'],
438
- [data-ui='radio-group'][data-part='root'][data-readonly] [data-part='label'] {
433
+ [data-ui-radio-group][data-part-root][data-readonly] [data-part-control],
434
+ [data-ui-radio-group][data-part-root][data-readonly] [data-part-label] {
439
435
  cursor: default;
440
436
  }
441
437
 
442
- [data-ui='radio-group'][data-part='root'][data-readonly] [data-part='control']:not(:checked) {
438
+ [data-ui-radio-group][data-part-root][data-readonly] [data-part-control]:not(:checked) {
443
439
  background-color: var(
444
440
  --slotted-radio-group-readonly-background,
445
441
  /**
@@ -452,8 +448,8 @@
452
448
  );
453
449
  }
454
450
 
455
- [data-ui='radio-group'][data-part='root'][data-disabled] [data-part='control'],
456
- [data-ui='radio-group'] [data-part='control']:disabled {
451
+ [data-ui-radio-group][data-part-root][data-disabled] [data-part-control],
452
+ [data-ui-radio-group] [data-part-control]:disabled {
457
453
  background-color: var(
458
454
  --slotted-radio-group-disabled-background,
459
455
  var(--slotted-disabled-background)
@@ -462,14 +458,14 @@
462
458
  cursor: not-allowed;
463
459
  }
464
460
 
465
- [data-ui='radio-group'] [data-part='control']:disabled + [data-part='indicator'] {
461
+ [data-ui-radio-group] [data-part-control]:disabled + [data-part-indicator] {
466
462
  color: var(--slotted-radio-group-disabled-mark-color, var(--slotted-disabled-foreground));
467
463
  }
468
464
 
469
- [data-ui='radio-group'][data-part='root'][data-disabled] [data-part='label'],
470
- [data-ui='radio-group'][data-part='root'][data-disabled] [data-part='description'],
471
- [data-ui='radio-group'] [data-part='control']:disabled ~ [data-part='label'],
472
- [data-ui='radio-group'] [data-part='control']:disabled ~ [data-part='description'] {
465
+ [data-ui-radio-group][data-part-root][data-disabled] [data-part-label],
466
+ [data-ui-radio-group][data-part-root][data-disabled] [data-part-description],
467
+ [data-ui-radio-group] [data-part-control]:disabled ~ [data-part-label],
468
+ [data-ui-radio-group] [data-part-control]:disabled ~ [data-part-description] {
473
469
  color: var(--slotted-radio-group-disabled-color, var(--slotted-disabled-foreground));
474
470
  cursor: not-allowed;
475
471
  }
@@ -491,7 +487,7 @@
491
487
  * equal height is a `grid` around the items and nothing this family adds.
492
488
  */
493
489
 
494
- [data-ui='radio-group'][data-part='root'][data-variant='tile'] [data-part='item'] {
490
+ [data-ui-radio-group][data-part-root][data-variant='tile'] [data-part-item] {
495
491
  /* The description sits one step nearer its label inside a frame, as
496
492
  `checkbox` keeps it (CK2). */
497
493
  --_description-gap: var(
@@ -528,7 +524,7 @@
528
524
  * a shadow is removed outright and a width is not. `card` draws its own edge
529
525
  * the same way and for the same two reasons.
530
526
  */
531
- [data-ui='radio-group'][data-part='root'][data-variant='tile'] [data-part='item']::before {
527
+ [data-ui-radio-group][data-part-root][data-variant='tile'] [data-part-item]::before {
532
528
  border: calc(var(--_tile-edge-width) + var(--_tile-invalid-edge, 0px)) solid var(--_tile-edge);
533
529
  border-radius: inherit;
534
530
  content: '';
@@ -549,9 +545,9 @@
549
545
  * Anything a consumer raises above the surface sets `position: relative` on
550
546
  * itself, for the same reason a card's footer does.
551
547
  */
552
- [data-ui='radio-group'][data-part='root'][data-variant='tile']
553
- [data-part='item']
554
- [data-part='label']::after {
548
+ [data-ui-radio-group][data-part-root][data-variant='tile']
549
+ [data-part-item]
550
+ [data-part-label]::after {
555
551
  content: '';
556
552
  inset: 0;
557
553
  position: absolute;
@@ -568,11 +564,11 @@
568
564
  * pointer made a tile look less chosen than it was.
569
565
  */
570
566
 
571
- [data-ui='radio-group'][data-part='root'][data-variant='tile']:not([data-readonly]):not(
567
+ [data-ui-radio-group][data-part-root][data-variant='tile']:not([data-readonly]):not(
572
568
  [data-disabled]
573
569
  )
574
- [data-part='item']:has([data-part='control']:not(:disabled)):not(
575
- :has([data-part='control']:checked)
570
+ [data-part-item]:has([data-part-control]:not(:disabled)):not(
571
+ :has([data-part-control]:checked)
576
572
  ):hover {
577
573
  --_tile-surface: var(
578
574
  --slotted-radio-group-tile-hover-background,
@@ -584,11 +580,11 @@
584
580
  );
585
581
  }
586
582
 
587
- [data-ui='radio-group'][data-part='root'][data-variant='tile']:not([data-readonly]):not(
583
+ [data-ui-radio-group][data-part-root][data-variant='tile']:not([data-readonly]):not(
588
584
  [data-disabled]
589
585
  )
590
- [data-part='item']:has([data-part='control']:not(:disabled)):not(
591
- :has([data-part='control']:checked)
586
+ [data-part-item]:has([data-part-control]:not(:disabled)):not(
587
+ :has([data-part-control]:checked)
592
588
  ):active {
593
589
  --_tile-surface: var(
594
590
  --slotted-radio-group-tile-active-background,
@@ -602,8 +598,8 @@
602
598
  * difference a reader has to look for across a row of five, and the tint
603
599
  * alone is a difference the `high-contrast` scheme flattens to nothing.
604
600
  */
605
- [data-ui='radio-group'][data-part='root'][data-variant='tile']:not([data-readonly])
606
- [data-part='item']:has([data-part='control']:checked) {
601
+ [data-ui-radio-group][data-part-root][data-variant='tile']:not([data-readonly])
602
+ [data-part-item]:has([data-part-control]:checked) {
607
603
  --_tile-edge: var(
608
604
  --slotted-radio-group-tile-checked-border-color,
609
605
  var(--slotted-tone-accent-solid)
@@ -617,8 +613,8 @@
617
613
  * value is real and stays visible, and a read-only set then reads as a set of
618
614
  * secondary grounds with one accent edge on the choice that was made.
619
615
  */
620
- [data-ui='radio-group'][data-part='root'][data-variant='tile']:not([data-readonly])
621
- [data-part='item']:has([data-part='control']:checked) {
616
+ [data-ui-radio-group][data-part-root][data-variant='tile']:not([data-readonly])
617
+ [data-part-item]:has([data-part-control]:checked) {
622
618
  --_tile-surface: var(
623
619
  --slotted-radio-group-tile-checked-background,
624
620
  var(--slotted-tone-accent-surface)
@@ -631,17 +627,17 @@
631
627
  * accent tone has below its solid, so a ground that moved would either not
632
628
  * move at all in `light` or land on the tint an unchosen hovered tile shows.
633
629
  */
634
- [data-ui='radio-group'][data-part='root'][data-variant='tile']:not([data-readonly]):not(
630
+ [data-ui-radio-group][data-part-root][data-variant='tile']:not([data-readonly]):not(
635
631
  [data-disabled]
636
632
  )
637
- [data-part='item']:has([data-part='control']:checked:not(:disabled)):hover {
633
+ [data-part-item]:has([data-part-control]:checked:not(:disabled)):hover {
638
634
  --_tile-edge: var(
639
635
  --slotted-radio-group-tile-checked-hover-border-color,
640
636
  var(--slotted-tone-accent-solid-hover)
641
637
  );
642
638
  }
643
639
 
644
- [data-ui='radio-group'][data-part='root'][data-variant='tile'][data-invalid] [data-part='item'] {
640
+ [data-ui-radio-group][data-part-root][data-variant='tile'][data-invalid] [data-part-item] {
645
641
  --_tile-edge: var(
646
642
  --slotted-radio-group-tile-invalid-border-color,
647
643
  var(--slotted-tone-danger-border)
@@ -654,8 +650,8 @@
654
650
  );
655
651
  }
656
652
 
657
- [data-ui='radio-group'][data-part='root'][data-variant='tile'][data-invalid]
658
- [data-part='item']:has([data-part='control']:checked) {
653
+ [data-ui-radio-group][data-part-root][data-variant='tile'][data-invalid]
654
+ [data-part-item]:has([data-part-control]:checked) {
659
655
  --_tile-surface: var(
660
656
  --slotted-radio-group-tile-invalid-checked-background,
661
657
  var(--slotted-tone-danger-surface)
@@ -668,7 +664,7 @@
668
664
 
669
665
  /* Read-only keeps the ink and the tab stop; only the ground and the pointer
670
666
  say the value is not the reader's to move. */
671
- [data-ui='radio-group'][data-part='root'][data-variant='tile'][data-readonly] [data-part='item'] {
667
+ [data-ui-radio-group][data-part-root][data-variant='tile'][data-readonly] [data-part-item] {
672
668
  --_tile-surface: var(
673
669
  --slotted-radio-group-tile-readonly-background,
674
670
  var(--slotted-tone-secondary-subtle-hover)
@@ -689,9 +685,9 @@
689
685
  cursor: default;
690
686
  }
691
687
 
692
- [data-ui='radio-group'][data-part='root'][data-variant='tile'][data-disabled] [data-part='item'],
693
- [data-ui='radio-group'][data-part='root'][data-variant='tile']
694
- [data-part='item']:has([data-part='control']:disabled) {
688
+ [data-ui-radio-group][data-part-root][data-variant='tile'][data-disabled] [data-part-item],
689
+ [data-ui-radio-group][data-part-root][data-variant='tile']
690
+ [data-part-item]:has([data-part-control]:disabled) {
695
691
  --_tile-surface: var(
696
692
  --slotted-radio-group-tile-disabled-background,
697
693
  var(--slotted-disabled-background)
@@ -711,14 +707,13 @@
711
707
  * left a ring around a sixteen-pixel circle inside a ring around the whole
712
708
  * surface, which reads as two controls.
713
709
  */
714
- [data-ui='radio-group'][data-part='root'][data-variant='tile']
715
- [data-part='item']:has([data-part='control']:focus-visible) {
710
+ [data-ui-radio-group][data-part-root][data-variant='tile']
711
+ [data-part-item]:has([data-part-control]:focus-visible) {
716
712
  outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);
717
713
  outline-offset: var(--slotted-focus-ring-offset, 2px);
718
714
  }
719
715
 
720
- [data-ui='radio-group'][data-part='root'][data-variant='tile']
721
- [data-part='control']:focus-visible {
716
+ [data-ui-radio-group][data-part-root][data-variant='tile'] [data-part-control]:focus-visible {
722
717
  outline: none;
723
718
  }
724
719
 
@@ -728,17 +723,17 @@
728
723
  * `color`, so the dot would vanish into the circle it is drawn in. Restated in system colours, as `checkbox` restates the same pair.
729
724
  */
730
725
  @media (forced-colors: active) {
731
- [data-ui='radio-group'] [data-part='control'] {
726
+ [data-ui-radio-group] [data-part-control] {
732
727
  background-color: Field;
733
728
  border-color: FieldText;
734
729
  }
735
730
 
736
- [data-ui='radio-group'] [data-part='control']:checked {
731
+ [data-ui-radio-group] [data-part-control]:checked {
737
732
  background-color: Field;
738
733
  border-color: Highlight;
739
734
  }
740
735
 
741
- [data-ui='radio-group'] [data-part='control']:checked + [data-part='indicator'] {
736
+ [data-ui-radio-group] [data-part-control]:checked + [data-part-indicator] {
742
737
  color: Highlight;
743
738
  }
744
739
 
@@ -749,29 +744,29 @@
749
744
  * `Highlight` as for a valid option, and the wider invalid edge takes
750
745
  * `CanvasText`, as does a tile's invalid edge.
751
746
  */
752
- [data-ui='radio-group'][data-part='root'][data-invalid] [data-part='control']:checked {
747
+ [data-ui-radio-group][data-part-root][data-invalid] [data-part-control]:checked {
753
748
  background-color: Field;
754
749
  border-color: CanvasText;
755
750
  }
756
751
 
757
- [data-ui='radio-group'][data-part='root'][data-invalid]
758
- [data-part='control']:checked
759
- + [data-part='indicator'] {
752
+ [data-ui-radio-group][data-part-root][data-invalid]
753
+ [data-part-control]:checked
754
+ + [data-part-indicator] {
760
755
  color: Highlight;
761
756
  }
762
757
 
763
- [data-ui='radio-group'][data-part='root'][data-variant='tile'][data-invalid] [data-part='item'],
764
- [data-ui='radio-group'][data-part='root'][data-variant='tile'][data-invalid]
765
- [data-part='item']:has([data-part='control']:checked) {
758
+ [data-ui-radio-group][data-part-root][data-variant='tile'][data-invalid] [data-part-item],
759
+ [data-ui-radio-group][data-part-root][data-variant='tile'][data-invalid]
760
+ [data-part-item]:has([data-part-control]:checked) {
766
761
  --_tile-edge: CanvasText;
767
762
  }
768
763
 
769
- [data-ui='radio-group'] [data-part='control']:disabled {
764
+ [data-ui-radio-group] [data-part-control]:disabled {
770
765
  background-color: Field;
771
766
  border-color: GrayText;
772
767
  }
773
768
 
774
- [data-ui='radio-group'] [data-part='control']:disabled + [data-part='indicator'] {
769
+ [data-ui-radio-group] [data-part-control]:disabled + [data-part-indicator] {
775
770
  color: GrayText;
776
771
  }
777
772
  }