@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
@@ -39,7 +39,7 @@
39
39
  * that end, and choosing one end moves to the other — the end list
40
40
  * appears already striking what the chosen start refuses.
41
41
  */
42
- [data-ui='datetime-range-picker'][data-part='root'] {
42
+ [data-ui-datetime-range-picker][data-part-root] {
43
43
  display: block;
44
44
  /* The anchor the positioner measures is the control, and a block root
45
45
  lets the frame take the width the form gave it. */
@@ -55,7 +55,7 @@
55
55
  * and two of them broke the frame into two lines in any form column
56
56
  * narrower than they are, against the height every control shares.
57
57
  */
58
- [data-ui='datetime-range-picker'] [data-part='control'] {
58
+ [data-ui-datetime-range-picker] [data-part-control] {
59
59
  --_font-size: var(--slotted-control-font-size-md, 13px);
60
60
  --_height: var(--slotted-control-height-md, 34px);
61
61
  --_padding-inline: var(--slotted-control-padding-inline-md, 13px);
@@ -105,7 +105,7 @@
105
105
  box-shadow var(--slotted-control-transition-duration) var(--slotted-control-transition-easing);
106
106
  }
107
107
 
108
- [data-ui='datetime-range-picker'][data-part='root'][data-size='sm'] [data-part='control'] {
108
+ [data-ui-datetime-range-picker][data-part-root][data-size='sm'] [data-part-control] {
109
109
  --_font-size: var(--slotted-control-font-size-sm, 12px);
110
110
  --_height: var(--slotted-control-height-sm, 30px);
111
111
  --_padding-inline: var(--slotted-control-padding-inline-sm, 11px);
@@ -113,7 +113,7 @@
113
113
  --_icon-size: var(--slotted-control-icon-size-sm, 14px);
114
114
  }
115
115
 
116
- [data-ui='datetime-range-picker'][data-part='root'][data-size='lg'] [data-part='control'] {
116
+ [data-ui-datetime-range-picker][data-part-root][data-size='lg'] [data-part-control] {
117
117
  --_font-size: var(--slotted-control-font-size-lg, 14px);
118
118
  --_height: var(--slotted-control-height-lg, 38px);
119
119
  --_padding-inline: var(--slotted-control-padding-inline-lg, 15px);
@@ -125,7 +125,7 @@
125
125
  *
126
126
  * The three steps `text-field` set, through the field's own variant tokens.
127
127
  */
128
- [data-ui='datetime-range-picker'][data-part='root'][data-variant='subtle'] [data-part='control'] {
128
+ [data-ui-datetime-range-picker][data-part-root][data-variant='subtle'] [data-part-control] {
129
129
  background-color: var(
130
130
  --slotted-datetime-range-picker-subtle-background,
131
131
  var(--slotted-surface-sunken, Canvas)
@@ -136,7 +136,7 @@
136
136
  );
137
137
  }
138
138
 
139
- [data-ui='datetime-range-picker'][data-part='root'][data-variant='plain'] [data-part='control'] {
139
+ [data-ui-datetime-range-picker][data-part-root][data-variant='plain'] [data-part-control] {
140
140
  background-color: transparent;
141
141
  border-color: transparent;
142
142
  border-radius: var(--slotted-radius-none, 0px);
@@ -151,7 +151,7 @@
151
151
  * into `PageDown` before the browser sees it, so a chord cannot be the only
152
152
  * way in.
153
153
  */
154
- [data-ui='datetime-range-picker'] [data-part='trigger'] {
154
+ [data-ui-datetime-range-picker] [data-part-trigger] {
155
155
  align-items: center;
156
156
  appearance: none;
157
157
  background-color: transparent;
@@ -177,14 +177,14 @@
177
177
  -webkit-tap-highlight-color: transparent;
178
178
  }
179
179
 
180
- [data-ui='datetime-range-picker'] [data-part='control']:has(> [data-part='clear']) {
180
+ [data-ui-datetime-range-picker] [data-part-control]:has(> [data-part-clear]) {
181
181
  --_actions: 2;
182
182
  }
183
183
 
184
184
  /* The value in words, one line, cut where it does not fit: the trigger's
185
185
  name carries it whole, so the ellipsis removes nothing a reader cannot
186
186
  hear. Tabular figures, so two ranges in a form line up. */
187
- [data-ui='datetime-range-picker'] [data-part='summary'] {
187
+ [data-ui-datetime-range-picker] [data-part-summary] {
188
188
  flex: 1 1 auto;
189
189
  font-variant-numeric: tabular-nums;
190
190
  min-inline-size: 0;
@@ -194,7 +194,7 @@
194
194
  white-space: nowrap;
195
195
  }
196
196
 
197
- [data-ui='datetime-range-picker'] [data-part='summary'][data-placeholder] {
197
+ [data-ui-datetime-range-picker] [data-part-summary][data-placeholder] {
198
198
  color: var(
199
199
  --slotted-datetime-range-picker-placeholder-color,
200
200
  var(--slotted-text-muted, GrayText)
@@ -207,11 +207,11 @@
207
207
  open. */
208
208
  /* The frame draws the ring for the trigger; the browser's own ring on the
209
209
  trigger would be a second one, inside the frame and over its edge. */
210
- [data-ui='datetime-range-picker'] [data-part='trigger']:focus-visible {
210
+ [data-ui-datetime-range-picker] [data-part-trigger]:focus-visible {
211
211
  outline: none;
212
212
  }
213
213
 
214
- [data-ui='datetime-range-picker'] [data-part='trigger'] > [data-ui='icon'] {
214
+ [data-ui-datetime-range-picker] [data-part-trigger] > [data-ui-icon] {
215
215
  --slotted-icon-size: var(--_icon-size);
216
216
 
217
217
  /* No system-colour fallback on a decoration: unthemed, it takes the
@@ -223,7 +223,7 @@
223
223
  translate: 0 -50%;
224
224
  }
225
225
 
226
- [data-ui='datetime-range-picker'] [data-part='trigger']:disabled {
226
+ [data-ui-datetime-range-picker] [data-part-trigger]:disabled {
227
227
  cursor: not-allowed;
228
228
  }
229
229
 
@@ -233,7 +233,7 @@
233
233
  * stands. Its own ring: tabbing from the trigger to it has to move
234
234
  * something visible, and the frame's ring would sit still.
235
235
  */
236
- [data-ui='datetime-range-picker'] [data-part='clear'] {
236
+ [data-ui-datetime-range-picker] [data-part-clear] {
237
237
  --slotted-icon-size: var(--_icon-size);
238
238
 
239
239
  align-items: center;
@@ -263,7 +263,7 @@
263
263
  }
264
264
 
265
265
  /* The hit area, recovered outside the paint, as every inner control does. */
266
- [data-ui='datetime-range-picker'] [data-part='clear']::after {
266
+ [data-ui-datetime-range-picker] [data-part-clear]::after {
267
267
  content: '';
268
268
  inset: min(0px, calc((100% - var(--slotted-target-min, 24px)) / 2));
269
269
  position: absolute;
@@ -274,32 +274,32 @@
274
274
  the hit area above grows to 44 pixels around them. It does not reach into
275
275
  the calendar's lane after it, which is the trigger's to answer. */
276
276
  @media (pointer: coarse) {
277
- [data-ui='datetime-range-picker'] [data-part='clear']::after {
277
+ [data-ui-datetime-range-picker] [data-part-clear]::after {
278
278
  inset: min(0px, calc((100% - var(--slotted-target-comfortable, 44px)) / 2));
279
279
  inset-inline-end: 0;
280
280
  }
281
281
  }
282
282
 
283
- [data-ui='datetime-range-picker'] [data-part='clear']:hover:not(:disabled):not([data-disabled]) {
283
+ [data-ui-datetime-range-picker] [data-part-clear]:hover:not(:disabled):not([data-disabled]) {
284
284
  background-color: var(
285
285
  --slotted-datetime-range-picker-action-hover-background,
286
286
  var(--slotted-tone-secondary-subtle-hover)
287
287
  );
288
288
  }
289
289
 
290
- [data-ui='datetime-range-picker'] [data-part='clear']:active:not(:disabled):not([data-disabled]) {
290
+ [data-ui-datetime-range-picker] [data-part-clear]:active:not(:disabled):not([data-disabled]) {
291
291
  background-color: var(
292
292
  --slotted-datetime-range-picker-action-active-background,
293
293
  var(--slotted-tone-secondary-subtle-active)
294
294
  );
295
295
  }
296
296
 
297
- [data-ui='datetime-range-picker'] [data-part='clear']:focus-visible {
297
+ [data-ui-datetime-range-picker] [data-part-clear]:focus-visible {
298
298
  outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);
299
299
  outline-offset: calc(var(--slotted-focus-ring-offset, 2px) * -1);
300
300
  }
301
301
 
302
- [data-ui='datetime-range-picker'] [data-part='clear']:disabled {
302
+ [data-ui-datetime-range-picker] [data-part-clear]:disabled {
303
303
  color: var(--slotted-disabled-foreground);
304
304
  cursor: not-allowed;
305
305
  }
@@ -310,30 +310,30 @@
310
310
  * one it can meet, which is the order `STATE_PRECEDENCE` sets.
311
311
  */
312
312
 
313
- [data-ui='datetime-range-picker'][data-part='root']:not([data-disabled]):not([data-readonly]):not(
313
+ [data-ui-datetime-range-picker][data-part-root]:not([data-disabled]):not([data-readonly]):not(
314
314
  [data-invalid]
315
315
  )
316
- [data-part='control']:hover {
316
+ [data-part-control]:hover {
317
317
  border-color: var(
318
318
  --slotted-datetime-range-picker-hover-border-color,
319
319
  var(--slotted-tone-accent-border)
320
320
  );
321
321
  }
322
322
 
323
- [data-ui='datetime-range-picker'][data-part='root'][data-variant='subtle']:not(
324
- [data-disabled]
325
- ):not([data-readonly]):not([data-invalid])
326
- [data-part='control']:hover {
323
+ [data-ui-datetime-range-picker][data-part-root][data-variant='subtle']:not([data-disabled]):not(
324
+ [data-readonly]
325
+ ):not([data-invalid])
326
+ [data-part-control]:hover {
327
327
  background-color: var(
328
328
  --slotted-datetime-range-picker-subtle-hover-background,
329
329
  var(--slotted-tone-secondary-subtle-hover)
330
330
  );
331
331
  }
332
332
 
333
- [data-ui='datetime-range-picker'][data-part='root'][data-variant='plain']:not(
334
- [data-disabled]
335
- ):not([data-readonly]):not([data-invalid])
336
- [data-part='control']:hover {
333
+ [data-ui-datetime-range-picker][data-part-root][data-variant='plain']:not([data-disabled]):not(
334
+ [data-readonly]
335
+ ):not([data-invalid])
336
+ [data-part-control]:hover {
337
337
  background-color: var(
338
338
  --slotted-datetime-range-picker-plain-hover-background,
339
339
  var(--slotted-tone-secondary-subtle-hover)
@@ -343,8 +343,7 @@
343
343
 
344
344
  /* The trigger is the only thing in the frame that takes focus, apart from
345
345
  the clear, which draws its own ring; the frame's ring is drawn for it. */
346
- [data-ui='datetime-range-picker']
347
- [data-part='control']:has(> [data-part='trigger']:focus-visible) {
346
+ [data-ui-datetime-range-picker] [data-part-control]:has(> [data-part-trigger]:focus-visible) {
348
347
  box-shadow: var(--slotted-control-shadow-focus-geometry, 0 1px 4px -1px)
349
348
  var(--slotted-focus-ring-color, Highlight);
350
349
  outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);
@@ -353,15 +352,15 @@
353
352
 
354
353
  /* The ring of a control whose box is not its own is drawn inside that box,
355
354
  and there is no lift — the `plain` rule of `plain-variant.test.mjs`. */
356
- [data-ui='datetime-range-picker'][data-part='root'][data-variant='plain']
357
- [data-part='control']:has(> [data-part='trigger']:focus-visible) {
355
+ [data-ui-datetime-range-picker][data-part-root][data-variant='plain']
356
+ [data-part-control]:has(> [data-part-trigger]:focus-visible) {
358
357
  box-shadow: none;
359
358
  outline-offset: calc(var(--slotted-focus-ring-offset, 2px) * -1);
360
359
  }
361
360
 
362
361
  /* Invalid outranks hover and is written after it. The ring is retargeted
363
362
  rather than repainted, so every ring in the frame moves at once. */
364
- [data-ui='datetime-range-picker'][data-part='root'][data-invalid] [data-part='control'] {
363
+ [data-ui-datetime-range-picker][data-part-root][data-invalid] [data-part-control] {
365
364
  --slotted-focus-ring-color: var(
366
365
  --slotted-datetime-range-picker-invalid-focus-ring-color,
367
366
  var(--slotted-focus-ring-color-invalid, Highlight)
@@ -389,16 +388,16 @@
389
388
  box-shadow: var(--_invalid-edge);
390
389
  }
391
390
 
392
- [data-ui='datetime-range-picker'][data-invalid]
393
- [data-part='control']:has(> [data-part='trigger']:focus-visible) {
391
+ [data-ui-datetime-range-picker][data-invalid]
392
+ [data-part-control]:has(> [data-part-trigger]:focus-visible) {
394
393
  box-shadow:
395
394
  var(--_invalid-edge),
396
395
  var(--slotted-control-shadow-focus-geometry, 0 1px 4px -1px)
397
396
  var(--slotted-focus-ring-color, Highlight);
398
397
  }
399
398
 
400
- [data-ui='datetime-range-picker'][data-part='root'][data-variant='plain'][data-invalid]
401
- [data-part='control']:has(> [data-part='trigger']:focus-visible) {
399
+ [data-ui-datetime-range-picker][data-part-root][data-variant='plain'][data-invalid]
400
+ [data-part-control]:has(> [data-part-trigger]:focus-visible) {
402
401
  /* The ring lies inside the box here, over the border and an edge as wide as
403
402
  it; the edge reaches past the ring. */
404
403
  box-shadow: inset 0 0 0
@@ -414,20 +413,20 @@
414
413
  * control draws its ring double, which a valid ring is not.
415
414
  */
416
415
  @media (forced-colors: active) {
417
- [data-ui='datetime-range-picker'][data-part='root'][data-invalid] [data-part='control'] {
416
+ [data-ui-datetime-range-picker][data-part-root][data-invalid] [data-part-control] {
418
417
  outline: var(--_invalid-edge-width) solid CanvasText;
419
418
  outline-offset: calc(-1 * (var(--_border-width) + var(--_invalid-edge-width)));
420
419
  }
421
420
 
422
- [data-ui='datetime-range-picker'][data-invalid]
423
- [data-part='control']:has(> [data-part='trigger']:focus-visible) {
421
+ [data-ui-datetime-range-picker][data-invalid]
422
+ [data-part-control]:has(> [data-part-trigger]:focus-visible) {
424
423
  outline: calc(var(--slotted-focus-ring-width, 2px) + var(--_invalid-edge-width)) double
425
424
  var(--slotted-focus-ring-color, Highlight);
426
425
  outline-offset: var(--slotted-focus-ring-offset, 2px);
427
426
  }
428
427
 
429
- [data-ui='datetime-range-picker'][data-part='root'][data-variant='plain'][data-invalid]
430
- [data-part='control']:has(> [data-part='trigger']:focus-visible) {
428
+ [data-ui-datetime-range-picker][data-part-root][data-variant='plain'][data-invalid]
429
+ [data-part-control]:has(> [data-part-trigger]:focus-visible) {
431
430
  outline: calc(var(--slotted-focus-ring-width, 2px) + var(--_invalid-edge-width)) double
432
431
  var(--slotted-focus-ring-color, Highlight);
433
432
  outline-offset: calc(
@@ -438,7 +437,7 @@
438
437
 
439
438
  /* Read-only stays focusable, readable and copyable, and must not be
440
439
  mistakable for disabled: the ground says "not yours to change". */
441
- [data-ui='datetime-range-picker'][data-part='root'][data-readonly] [data-part='control'] {
440
+ [data-ui-datetime-range-picker][data-part-root][data-readonly] [data-part-control] {
442
441
  background-color: var(
443
442
  --slotted-datetime-range-picker-readonly-background,
444
443
  var(--slotted-tone-secondary-subtle-hover)
@@ -447,7 +446,7 @@
447
446
  }
448
447
 
449
448
  /* Muted to the colour the theme measures rather than faded by opacity. */
450
- [data-ui='datetime-range-picker'][data-part='root'][data-disabled] [data-part='control'] {
449
+ [data-ui-datetime-range-picker][data-part-root][data-disabled] [data-part-control] {
451
450
  background-color: var(
452
451
  --slotted-datetime-range-picker-disabled-background,
453
452
  var(--slotted-disabled-background)
@@ -461,9 +460,9 @@
461
460
  cursor: not-allowed;
462
461
  }
463
462
 
464
- [data-ui='datetime-range-picker'][data-part='root'][data-disabled]
465
- [data-part='trigger']
466
- > [data-ui='icon'] {
463
+ [data-ui-datetime-range-picker][data-part-root][data-disabled]
464
+ [data-part-trigger]
465
+ > [data-ui-icon] {
467
466
  color: var(--slotted-disabled-foreground);
468
467
  }
469
468
 
@@ -472,7 +471,7 @@
472
471
  * What `packages/core/src/positioner` writes `position`, `left` and `top`
473
472
  * onto. The painted surface is one element in, as every overlay is built.
474
473
  */
475
- [data-ui='datetime-range-picker'][data-part='positioner'] {
474
+ [data-ui-datetime-range-picker][data-part-positioner] {
476
475
  /* Only the block inset: the positioner writes `left` and never `right`,
477
476
  and `inset-inline-start` would resolve to `right` in a right-to-left
478
477
  document and win over the measured value. */
@@ -494,18 +493,18 @@
494
493
  translate var(--slotted-duration-short) var(--slotted-easing-exit);
495
494
  }
496
495
 
497
- [data-ui='datetime-range-picker'][data-part='positioner'][data-side='top'] {
496
+ [data-ui-datetime-range-picker][data-part-positioner][data-side='top'] {
498
497
  translate: 0 var(--_enter-distance);
499
498
  }
500
499
 
501
- [data-ui='datetime-range-picker'][data-part='positioner']:is(
500
+ [data-ui-datetime-range-picker][data-part-positioner]:is(
502
501
  [data-side='left'],
503
502
  [data-side='right']
504
503
  ) {
505
504
  translate: 0 0;
506
505
  }
507
506
 
508
- [data-ui='datetime-range-picker'][data-part='positioner'][data-open] {
507
+ [data-ui-datetime-range-picker][data-part-positioner][data-open] {
509
508
  opacity: 1;
510
509
  translate: 0 0;
511
510
  transition: none;
@@ -513,16 +512,16 @@
513
512
 
514
513
  /* The entrance is a keyframe animation and not a transition, for the reason
515
514
  `select` records: only a layer the positioner placed arrives. */
516
- [data-ui='datetime-range-picker'][data-part='positioner'][data-open][data-positioned] {
515
+ [data-ui-datetime-range-picker][data-part-positioner][data-open][data-positioned] {
517
516
  animation: slotted-datetime-range-picker-enter-down var(--slotted-duration-medium)
518
517
  var(--slotted-easing-enter);
519
518
  }
520
519
 
521
- [data-ui='datetime-range-picker'][data-part='positioner'][data-open][data-positioned][data-side='top'] {
520
+ [data-ui-datetime-range-picker][data-part-positioner][data-open][data-positioned][data-side='top'] {
522
521
  animation-name: slotted-datetime-range-picker-enter-up;
523
522
  }
524
523
 
525
- [data-ui='datetime-range-picker'][data-part='positioner'][data-open][data-positioned]:is(
524
+ [data-ui-datetime-range-picker][data-part-positioner][data-open][data-positioned]:is(
526
525
  [data-side='left'],
527
526
  [data-side='right']
528
527
  ) {
@@ -551,24 +550,24 @@
551
550
 
552
551
  /* Stillness keeps the fade and drops the movement. */
553
552
  @media (prefers-reduced-motion: reduce) {
554
- [data-ui='datetime-range-picker'][data-part='positioner'],
555
- [data-ui='datetime-range-picker'][data-part='positioner'][data-side='top'],
556
- [data-ui='datetime-range-picker'][data-part='positioner'][data-side='left'],
557
- [data-ui='datetime-range-picker'][data-part='positioner'][data-side='right'] {
553
+ [data-ui-datetime-range-picker][data-part-positioner],
554
+ [data-ui-datetime-range-picker][data-part-positioner][data-side='top'],
555
+ [data-ui-datetime-range-picker][data-part-positioner][data-side='left'],
556
+ [data-ui-datetime-range-picker][data-part-positioner][data-side='right'] {
558
557
  translate: 0 0;
559
558
  transition: opacity var(--slotted-duration-short) var(--slotted-easing-exit);
560
559
  }
561
560
 
562
- [data-ui='datetime-range-picker'][data-part='positioner'][data-open][data-positioned],
563
- [data-ui='datetime-range-picker'][data-part='positioner'][data-open][data-positioned][data-side='top'],
564
- [data-ui='datetime-range-picker'][data-part='positioner'][data-open][data-positioned][data-side='left'],
565
- [data-ui='datetime-range-picker'][data-part='positioner'][data-open][data-positioned][data-side='right'] {
561
+ [data-ui-datetime-range-picker][data-part-positioner][data-open][data-positioned],
562
+ [data-ui-datetime-range-picker][data-part-positioner][data-open][data-positioned][data-side='top'],
563
+ [data-ui-datetime-range-picker][data-part-positioner][data-open][data-positioned][data-side='left'],
564
+ [data-ui-datetime-range-picker][data-part-positioner][data-open][data-positioned][data-side='right'] {
566
565
  animation-name: slotted-datetime-range-picker-fade;
567
566
  }
568
567
  }
569
568
 
570
569
  /* The anchor scrolled out of its own clipper. */
571
- [data-ui='datetime-range-picker'][data-part='positioner'][data-detached] {
570
+ [data-ui-datetime-range-picker][data-part-positioner][data-detached] {
572
571
  visibility: hidden;
573
572
  }
574
573
 
@@ -579,7 +578,7 @@
579
578
  * `auto` track takes the calendar's own width as its floor, and the cap
580
579
  * below would then cap a box the track had already overflowed.
581
580
  */
582
- [data-ui='datetime-range-picker'] [data-part='content'] {
581
+ [data-ui-datetime-range-picker] [data-part-content] {
583
582
  background-color: var(
584
583
  --slotted-datetime-range-picker-surface,
585
584
  var(--slotted-surface-raised, Canvas)
@@ -635,7 +634,7 @@
635
634
  * what to do next. It renders at the panel's width and contributes nothing
636
635
  * to it, by the pair `datetime-picker` records.
637
636
  */
638
- [data-ui='datetime-range-picker'] [data-part='head'] {
637
+ [data-ui-datetime-range-picker] [data-part-head] {
639
638
  box-sizing: border-box;
640
639
  inline-size: 0;
641
640
  min-inline-size: 100%;
@@ -650,30 +649,30 @@
650
649
  row-gap: var(--slotted-space-2, 0.25rem);
651
650
  }
652
651
 
653
- [data-ui='datetime-range-picker'] [data-part='tabs'] {
652
+ [data-ui-datetime-range-picker] [data-part-tabs] {
654
653
  grid-area: tabs;
655
654
  }
656
655
 
657
- [data-ui='datetime-range-picker'] [data-part='field'] {
656
+ [data-ui-datetime-range-picker] [data-part-field] {
658
657
  grid-area: field;
659
658
  }
660
659
 
661
- [data-ui='datetime-range-picker'] [data-part='head'] > [data-part='now'] {
660
+ [data-ui-datetime-range-picker] [data-part-head] > [data-part-now] {
662
661
  align-self: center;
663
662
  grid-area: now;
664
663
  }
665
664
 
666
- [data-ui='datetime-range-picker'] [data-part='hint'] {
665
+ [data-ui-datetime-range-picker] [data-part-hint] {
667
666
  align-self: center;
668
667
  grid-area: hint;
669
668
  }
670
669
 
671
- [data-ui='datetime-range-picker'] [data-part='length'] {
670
+ [data-ui-datetime-range-picker] [data-part-length] {
672
671
  align-self: center;
673
672
  grid-area: length;
674
673
  }
675
674
 
676
- [data-ui='datetime-range-picker'] [data-part='limit'] {
675
+ [data-ui-datetime-range-picker] [data-part-limit] {
677
676
  grid-area: limit;
678
677
  }
679
678
 
@@ -685,7 +684,7 @@
685
684
  * The row is the whole width so the two are the same size whatever their
686
685
  * values, and a thumb finds them without aiming.
687
686
  */
688
- [data-ui='datetime-range-picker'] [data-part='tabs'] {
687
+ [data-ui-datetime-range-picker] [data-part-tabs] {
689
688
  border-block-end: var(--slotted-border-width-thin, 1px) solid
690
689
  var(
691
690
  --slotted-datetime-range-picker-content-border-color,
@@ -696,7 +695,7 @@
696
695
  grid-template-columns: repeat(2, minmax(0, 1fr));
697
696
  }
698
697
 
699
- [data-ui='datetime-range-picker'] [data-part='tab'] {
698
+ [data-ui-datetime-range-picker] [data-part-tab] {
700
699
  appearance: none;
701
700
  background-color: transparent;
702
701
  border: 0;
@@ -726,7 +725,7 @@
726
725
  -webkit-tap-highlight-color: transparent;
727
726
  }
728
727
 
729
- [data-ui='datetime-range-picker'] [data-part='tab']::after {
728
+ [data-ui-datetime-range-picker] [data-part-tab]::after {
730
729
  background-color: var(
731
730
  --slotted-datetime-range-picker-current-color,
732
731
  var(--slotted-tone-accent-solid)
@@ -745,30 +744,30 @@
745
744
  var(--slotted-control-transition-easing);
746
745
  }
747
746
 
748
- [data-ui='datetime-range-picker'] [data-part='tab'][data-current]::after {
747
+ [data-ui-datetime-range-picker] [data-part-tab][data-current]::after {
749
748
  opacity: 1;
750
749
  }
751
750
 
752
- [data-ui='datetime-range-picker'] [data-part='tab']:hover:not(:disabled):not([data-current]) {
751
+ [data-ui-datetime-range-picker] [data-part-tab]:hover:not(:disabled):not([data-current]) {
753
752
  background-color: var(
754
753
  --slotted-datetime-range-picker-option-hover-background,
755
754
  var(--slotted-tone-secondary-subtle-hover)
756
755
  );
757
756
  }
758
757
 
759
- [data-ui='datetime-range-picker'] [data-part='tab']:focus-visible {
758
+ [data-ui-datetime-range-picker] [data-part-tab]:focus-visible {
760
759
  outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);
761
760
  outline-offset: calc(var(--slotted-focus-ring-offset, 2px) * -1);
762
761
  }
763
762
 
764
- [data-ui='datetime-range-picker'] [data-part='tab']:disabled {
763
+ [data-ui-datetime-range-picker] [data-part-tab]:disabled {
765
764
  color: var(--slotted-disabled-foreground);
766
765
  cursor: not-allowed;
767
766
  }
768
767
 
769
768
  /* The label, in the muted ink for both ends alike: which end is current
770
769
  is said once, by the underline. */
771
- [data-ui='datetime-range-picker'] [data-part='tab-label'] {
770
+ [data-ui-datetime-range-picker] [data-part-tab-label] {
772
771
  color: var(--slotted-datetime-range-picker-label-color, var(--slotted-text-muted, GrayText));
773
772
  font-size: var(--slotted-font-size-xs, 11px);
774
773
  font-weight: var(--slotted-font-weight-medium, 500);
@@ -777,7 +776,7 @@
777
776
  white-space: nowrap;
778
777
  }
779
778
 
780
- [data-ui='datetime-range-picker'] [data-part='tab-value'] {
779
+ [data-ui-datetime-range-picker] [data-part-tab-value] {
781
780
  font-size: var(--slotted-font-size-sm, 13px);
782
781
  font-variant-numeric: tabular-nums;
783
782
  font-weight: var(--slotted-font-weight-medium, 500);
@@ -787,7 +786,7 @@
787
786
  white-space: nowrap;
788
787
  }
789
788
 
790
- [data-ui='datetime-range-picker'] [data-part='tab'][data-placeholder] [data-part='tab-value'] {
789
+ [data-ui-datetime-range-picker] [data-part-tab][data-placeholder] [data-part-tab-value] {
791
790
  color: var(--slotted-datetime-range-picker-label-color, var(--slotted-text-muted, GrayText));
792
791
  font-weight: var(--slotted-font-weight-regular, 400);
793
792
  }
@@ -801,7 +800,7 @@
801
800
  * `now` sits at the reading end of the same row. On a coarse pointer the
802
801
  * row is `now` alone: a segment is a spinbutton and raises no keyboard.
803
802
  */
804
- [data-ui='datetime-range-picker'] [data-part='field'] {
803
+ [data-ui-datetime-range-picker] [data-part-field] {
805
804
  --slotted-control-border-width: 0px;
806
805
  --slotted-control-padding-inline-sm: var(--slotted-space-2, 0.25rem);
807
806
  --slotted-control-padding-inline-md: var(--slotted-space-2, 0.25rem);
@@ -822,7 +821,7 @@
822
821
  * line of its own under them. The hint is the difference between a panel
823
822
  * that refuses and a panel that explains.
824
823
  */
825
- [data-ui='datetime-range-picker'] [data-part='hint'] {
824
+ [data-ui-datetime-range-picker] [data-part-hint] {
826
825
  color: var(--slotted-datetime-range-picker-hint-color, var(--slotted-text-muted, GrayText));
827
826
  font-size: var(--slotted-font-size-sm, 13px);
828
827
  min-inline-size: 0;
@@ -831,13 +830,13 @@
831
830
  unicode-bidi: plaintext;
832
831
  }
833
832
 
834
- [data-ui='datetime-range-picker'] [data-part='hint'][data-invalid] {
833
+ [data-ui-datetime-range-picker] [data-part-hint][data-invalid] {
835
834
  color: var(--slotted-datetime-range-picker-invalid-color, var(--slotted-tone-danger-text));
836
835
  }
837
836
 
838
837
  /* The duration, at the reading end, in the accent's text tone: it is the
839
838
  number the band exists to say. Pending, it drops a step of weight. */
840
- [data-ui='datetime-range-picker'] [data-part='length'] {
839
+ [data-ui-datetime-range-picker] [data-part-length] {
841
840
  color: var(--slotted-datetime-range-picker-length-color, var(--slotted-tone-accent-text));
842
841
  font-size: var(--slotted-font-size-sm, 13px);
843
842
  font-variant-numeric: tabular-nums;
@@ -847,17 +846,17 @@
847
846
  white-space: nowrap;
848
847
  }
849
848
 
850
- [data-ui='datetime-range-picker'] [data-part='length'][data-pending] {
849
+ [data-ui-datetime-range-picker] [data-part-length][data-pending] {
851
850
  font-weight: var(--slotted-font-weight-medium, 500);
852
851
  }
853
852
 
854
853
  /* An empty length still holds its line, so the band does not grow a row
855
854
  when the first end is chosen. */
856
- [data-ui='datetime-range-picker'] [data-part='length']:empty::before {
855
+ [data-ui-datetime-range-picker] [data-part-length]:empty::before {
857
856
  content: '\200B';
858
857
  }
859
858
 
860
- [data-ui='datetime-range-picker'] [data-part='limit'] {
859
+ [data-ui-datetime-range-picker] [data-part-limit] {
861
860
  color: var(--slotted-datetime-range-picker-limit-color, var(--slotted-text-muted, GrayText));
862
861
  font-size: var(--slotted-font-size-xs, 11px);
863
862
  padding-inline-start: var(--slotted-space-2, 0.25rem);
@@ -876,7 +875,7 @@
876
875
  * item and the same half taken back on the row, in place of `gap`, the
877
876
  * habit of the date chain.
878
877
  */
879
- [data-ui='datetime-range-picker'] [data-part='panel'] {
878
+ [data-ui-datetime-range-picker] [data-part-panel] {
880
879
  --_panel-gap: calc(var(--slotted-space-4, 0.5rem) / 2);
881
880
 
882
881
  align-items: stretch;
@@ -887,26 +886,26 @@
887
886
  min-inline-size: 0;
888
887
  }
889
888
 
890
- [data-ui='datetime-range-picker'] [data-part='panel'] > * {
889
+ [data-ui-datetime-range-picker] [data-part-panel] > * {
891
890
  margin: var(--_panel-gap);
892
891
  }
893
892
 
894
893
  /* The calendar keeps its own width and wraps its second month under the
895
894
  first when the surface is narrow, which is its own container rule. */
896
- [data-ui='datetime-range-picker'] [data-part='date-panel'] {
895
+ [data-ui-datetime-range-picker] [data-part-date-panel] {
897
896
  flex: 0 1 auto;
898
897
  min-inline-size: 0;
899
898
  }
900
899
 
901
- [data-ui='datetime-range-picker'] [data-part='panel'] > [data-part='list'],
902
- [data-ui='datetime-range-picker'] [data-part='panel'] > [data-part='empty'] {
900
+ [data-ui-datetime-range-picker] [data-part-panel] > [data-part-list],
901
+ [data-ui-datetime-range-picker] [data-part-panel] > [data-part-empty] {
903
902
  flex: 1 1 var(--slotted-datetime-range-picker-list-min-inline-size, 9rem);
904
903
  min-inline-size: var(--slotted-datetime-range-picker-list-min-inline-size, 9rem);
905
904
  }
906
905
 
907
906
  /* A hairline between the grid and the list while they share a row. */
908
- [data-ui='datetime-range-picker'] [data-part='date-panel'] + [data-part='list'],
909
- [data-ui='datetime-range-picker'] [data-part='date-panel'] + [data-part='empty'] {
907
+ [data-ui-datetime-range-picker] [data-part-date-panel] + [data-part-list],
908
+ [data-ui-datetime-range-picker] [data-part-date-panel] + [data-part-empty] {
910
909
  border-inline-start: var(--slotted-border-width-thin, 1px) solid
911
910
  var(
912
911
  --slotted-datetime-range-picker-content-border-color,
@@ -915,7 +914,7 @@
915
914
  padding-inline-start: var(--slotted-space-4, 0.5rem);
916
915
  }
917
916
 
918
- [data-ui='datetime-range-picker'] [data-part='now'] {
917
+ [data-ui-datetime-range-picker] [data-part-now] {
919
918
  appearance: none;
920
919
  background-color: transparent;
921
920
  border: 0;
@@ -936,19 +935,19 @@
936
935
  var(--slotted-control-transition-easing);
937
936
  }
938
937
 
939
- [data-ui='datetime-range-picker'] [data-part='now']:hover:not(:disabled):not([data-disabled]) {
938
+ [data-ui-datetime-range-picker] [data-part-now]:hover:not(:disabled):not([data-disabled]) {
940
939
  background-color: var(
941
940
  --slotted-datetime-range-picker-option-hover-background,
942
941
  var(--slotted-tone-secondary-subtle-hover)
943
942
  );
944
943
  }
945
944
 
946
- [data-ui='datetime-range-picker'] [data-part='now']:focus-visible {
945
+ [data-ui-datetime-range-picker] [data-part-now]:focus-visible {
947
946
  outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);
948
947
  outline-offset: calc(var(--slotted-focus-ring-offset, 2px) * -1);
949
948
  }
950
949
 
951
- [data-ui='datetime-range-picker'] [data-part='now']:disabled {
950
+ [data-ui-datetime-range-picker] [data-part-now]:disabled {
952
951
  color: var(--slotted-disabled-foreground);
953
952
  cursor: not-allowed;
954
953
  }
@@ -959,7 +958,7 @@
959
958
  * clock. It ships the row they stand in and the chip each one is, between
960
959
  * the band and the panel, wrapping when they do not fit.
961
960
  */
962
- [data-ui='datetime-range-picker'] [data-part='presets'] {
961
+ [data-ui-datetime-range-picker] [data-part-presets] {
963
962
  display: flex;
964
963
  flex-wrap: wrap;
965
964
  gap: var(--slotted-space-2, 0.25rem);
@@ -967,7 +966,7 @@
967
966
  min-inline-size: 0;
968
967
  }
969
968
 
970
- [data-ui='datetime-range-picker'] [data-part='preset'] {
969
+ [data-ui-datetime-range-picker] [data-part-preset] {
971
970
  appearance: none;
972
971
  background-color: var(
973
972
  --slotted-datetime-range-picker-preset-background,
@@ -996,22 +995,21 @@
996
995
  -webkit-tap-highlight-color: transparent;
997
996
  }
998
997
 
999
- [data-ui='datetime-range-picker'] [data-part='preset']:hover:not(:disabled):not([data-selected]) {
998
+ [data-ui-datetime-range-picker] [data-part-preset]:hover:not(:disabled):not([data-selected]) {
1000
999
  background-color: var(
1001
1000
  --slotted-datetime-range-picker-preset-hover-background,
1002
1001
  var(--slotted-tone-secondary-subtle-hover)
1003
1002
  );
1004
1003
  }
1005
1004
 
1006
- [data-ui='datetime-range-picker']
1007
- [data-part='preset']:active:not(:disabled):not([data-selected]) {
1005
+ [data-ui-datetime-range-picker] [data-part-preset]:active:not(:disabled):not([data-selected]) {
1008
1006
  background-color: var(
1009
1007
  --slotted-datetime-range-picker-preset-active-background,
1010
1008
  var(--slotted-tone-secondary-subtle-active)
1011
1009
  );
1012
1010
  }
1013
1011
 
1014
- [data-ui='datetime-range-picker'] [data-part='preset'][data-selected] {
1012
+ [data-ui-datetime-range-picker] [data-part-preset][data-selected] {
1015
1013
  background-color: var(
1016
1014
  --slotted-datetime-range-picker-preset-selected-background,
1017
1015
  var(--slotted-tone-accent-subtle-hover)
@@ -1023,12 +1021,12 @@
1023
1021
  font-weight: var(--slotted-font-weight-medium, 500);
1024
1022
  }
1025
1023
 
1026
- [data-ui='datetime-range-picker'] [data-part='preset']:focus-visible {
1024
+ [data-ui-datetime-range-picker] [data-part-preset]:focus-visible {
1027
1025
  outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);
1028
1026
  outline-offset: var(--slotted-focus-ring-offset, 2px);
1029
1027
  }
1030
1028
 
1031
- [data-ui='datetime-range-picker'] [data-part='preset']:disabled {
1029
+ [data-ui-datetime-range-picker] [data-part-preset]:disabled {
1032
1030
  color: var(--slotted-disabled-foreground);
1033
1031
  cursor: not-allowed;
1034
1032
  }
@@ -1039,7 +1037,7 @@
1039
1037
  * cap holds at every density, and scrolled rather than truncated —
1040
1038
  * `time-picker`'s list.
1041
1039
  */
1042
- [data-ui='datetime-range-picker'] [data-part='list'] {
1040
+ [data-ui-datetime-range-picker] [data-part-list] {
1043
1041
  display: flex;
1044
1042
  flex-direction: column;
1045
1043
  /* One step of air between rows, so the chosen row's painted ground and
@@ -1057,7 +1055,7 @@
1057
1055
  scroll-padding-block: var(--slotted-space-2, 0.25rem);
1058
1056
  }
1059
1057
 
1060
- [data-ui='datetime-range-picker'] [data-part='option'] {
1058
+ [data-ui-datetime-range-picker] [data-part-option] {
1061
1059
  /* The time and its duration share a baseline, and the line box is the
1062
1060
  row: baseline alignment alone would seat both at the top of a row
1063
1061
  taller than one line, and a length line-height centres them in it. */
@@ -1095,7 +1093,7 @@
1095
1093
  * the other end it is the duration to the end already chosen. Muted, so the
1096
1094
  * time stays what the row is; on the chosen row it takes the row's own ink.
1097
1095
  */
1098
- [data-ui='datetime-range-picker'] [data-part='option-duration'] {
1096
+ [data-ui-datetime-range-picker] [data-part-option-duration] {
1099
1097
  color: var(--slotted-datetime-range-picker-label-color, var(--slotted-text-muted, GrayText));
1100
1098
  flex: 0 1 auto;
1101
1099
  font-size: var(--slotted-font-size-xs, 11px);
@@ -1106,12 +1104,8 @@
1106
1104
  white-space: nowrap;
1107
1105
  }
1108
1106
 
1109
- [data-ui='datetime-range-picker']
1110
- [data-part='option'][data-selected]
1111
- [data-part='option-duration'],
1112
- [data-ui='datetime-range-picker']
1113
- [data-part='option'][data-disabled]
1114
- [data-part='option-duration'] {
1107
+ [data-ui-datetime-range-picker] [data-part-option][data-selected] [data-part-option-duration],
1108
+ [data-ui-datetime-range-picker] [data-part-option][data-disabled] [data-part-option-duration] {
1115
1109
  color: inherit;
1116
1110
  }
1117
1111
 
@@ -1122,27 +1116,27 @@
1122
1116
  * outranks the pointer. Specificity is what makes this a rule rather than an
1123
1117
  * ordering — the defect `time-picker` records from its visual gate.
1124
1118
  */
1125
- [data-ui='datetime-range-picker']
1126
- [data-part='option']:hover:not([data-disabled]):not([data-selected]):not([data-current]) {
1119
+ [data-ui-datetime-range-picker]
1120
+ [data-part-option]:hover:not([data-disabled]):not([data-selected]):not([data-current]) {
1127
1121
  background-color: var(
1128
1122
  --slotted-datetime-range-picker-option-hover-background,
1129
1123
  var(--slotted-tone-secondary-subtle-hover)
1130
1124
  );
1131
1125
  }
1132
1126
 
1133
- [data-ui='datetime-range-picker'] [data-part='option'][data-current]:not([data-selected]) {
1127
+ [data-ui-datetime-range-picker] [data-part-option][data-current]:not([data-selected]) {
1134
1128
  background-color: var(
1135
1129
  --slotted-datetime-range-picker-option-current-background,
1136
1130
  var(--slotted-tone-secondary-subtle-active)
1137
1131
  );
1138
1132
  }
1139
1133
 
1140
- [data-ui='datetime-range-picker'] [data-part='option']:focus-visible {
1134
+ [data-ui-datetime-range-picker] [data-part-option]:focus-visible {
1141
1135
  outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);
1142
1136
  outline-offset: calc(var(--slotted-focus-ring-offset, 2px) * -1);
1143
1137
  }
1144
1138
 
1145
- [data-ui='datetime-range-picker'] [data-part='option'][data-selected] {
1139
+ [data-ui-datetime-range-picker] [data-part-option][data-selected] {
1146
1140
  background-color: var(
1147
1141
  --slotted-datetime-range-picker-option-selected-background,
1148
1142
  var(--slotted-tone-accent-solid)
@@ -1154,7 +1148,7 @@
1154
1148
  }
1155
1149
 
1156
1150
  /* The chosen row still answers the pointer, one step along its own tone. */
1157
- [data-ui='datetime-range-picker'] [data-part='option'][data-selected]:hover:not([data-disabled]) {
1151
+ [data-ui-datetime-range-picker] [data-part-option][data-selected]:hover:not([data-disabled]) {
1158
1152
  background-color: var(
1159
1153
  --slotted-datetime-range-picker-option-selected-hover-background,
1160
1154
  var(--slotted-tone-accent-solid-hover)
@@ -1167,7 +1161,7 @@
1167
1161
  * step the reader cannot infer — and it is muted to the colour the theme
1168
1162
  * measures rather than faded by opacity, so it stays readable.
1169
1163
  */
1170
- [data-ui='datetime-range-picker'] [data-part='option'][data-disabled] {
1164
+ [data-ui-datetime-range-picker] [data-part-option][data-disabled] {
1171
1165
  background-color: transparent;
1172
1166
  color: var(--slotted-disabled-foreground);
1173
1167
  cursor: not-allowed;
@@ -1175,7 +1169,7 @@
1175
1169
 
1176
1170
  /* Nothing available for this end at all. A sentence rather than an empty
1177
1171
  box, the reason `time-picker` records. */
1178
- [data-ui='datetime-range-picker'] [data-part='empty'] {
1172
+ [data-ui-datetime-range-picker] [data-part-empty] {
1179
1173
  align-items: center;
1180
1174
  color: var(--slotted-datetime-range-picker-label-color, var(--slotted-text-muted, GrayText));
1181
1175
  display: flex;
@@ -1192,7 +1186,7 @@
1192
1186
 
1193
1187
  /* The consumer's own actions and, at the reading end, `done`: the way out
1194
1188
  of a sheet that fills the screen and of an edit left half way. */
1195
- [data-ui='datetime-range-picker'] [data-part='footer'] {
1189
+ [data-ui-datetime-range-picker] [data-part-footer] {
1196
1190
  box-sizing: border-box;
1197
1191
  inline-size: 0;
1198
1192
  min-inline-size: 100%;
@@ -1210,7 +1204,7 @@
1210
1204
  padding-block-start: var(--slotted-space-3, 0.375rem);
1211
1205
  }
1212
1206
 
1213
- [data-ui='datetime-range-picker'] [data-part='done'] {
1207
+ [data-ui-datetime-range-picker] [data-part-done] {
1214
1208
  appearance: none;
1215
1209
  background-color: var(
1216
1210
  --slotted-datetime-range-picker-done-background,
@@ -1237,21 +1231,21 @@
1237
1231
  -webkit-tap-highlight-color: transparent;
1238
1232
  }
1239
1233
 
1240
- [data-ui='datetime-range-picker'] [data-part='done']:hover:not(:disabled) {
1234
+ [data-ui-datetime-range-picker] [data-part-done]:hover:not(:disabled) {
1241
1235
  background-color: var(
1242
1236
  --slotted-datetime-range-picker-done-hover-background,
1243
1237
  var(--slotted-tone-accent-solid-hover)
1244
1238
  );
1245
1239
  }
1246
1240
 
1247
- [data-ui='datetime-range-picker'] [data-part='done']:active:not(:disabled) {
1241
+ [data-ui-datetime-range-picker] [data-part-done]:active:not(:disabled) {
1248
1242
  background-color: var(
1249
1243
  --slotted-datetime-range-picker-done-active-background,
1250
1244
  var(--slotted-tone-accent-solid-active)
1251
1245
  );
1252
1246
  }
1253
1247
 
1254
- [data-ui='datetime-range-picker'] [data-part='done']:focus-visible {
1248
+ [data-ui-datetime-range-picker] [data-part-done]:focus-visible {
1255
1249
  outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);
1256
1250
  outline-offset: var(--slotted-focus-ring-offset, 2px);
1257
1251
  }
@@ -1264,7 +1258,7 @@
1264
1258
  * raises no keyboard — and the list is the way to a time.
1265
1259
  */
1266
1260
  @media (pointer: coarse) {
1267
- [data-ui='datetime-range-picker'] [data-part='field'] {
1261
+ [data-ui-datetime-range-picker] [data-part-field] {
1268
1262
  display: none;
1269
1263
  }
1270
1264
  }
@@ -1275,18 +1269,18 @@
1275
1269
  * desktop and a sheet in a narrow viewport. The DOM does not change.
1276
1270
  */
1277
1271
  @media (max-width: 480px) and (pointer: coarse) {
1278
- [data-ui='datetime-range-picker'][data-part='positioner'][data-presentation='sheet'] {
1272
+ [data-ui-datetime-range-picker][data-part-positioner][data-presentation='sheet'] {
1279
1273
  inset: auto 0 0;
1280
1274
  position: fixed;
1281
1275
  translate: 0 var(--slotted-space-9, 2rem);
1282
1276
  }
1283
1277
 
1284
- [data-ui='datetime-range-picker'][data-part='positioner'][data-presentation='sheet'][data-open] {
1278
+ [data-ui-datetime-range-picker][data-part-positioner][data-presentation='sheet'][data-open] {
1285
1279
  translate: 0 0;
1286
1280
  }
1287
1281
 
1288
- [data-ui='datetime-range-picker'][data-part='positioner'][data-presentation='sheet']
1289
- [data-part='content'] {
1282
+ [data-ui-datetime-range-picker][data-part-positioner][data-presentation='sheet']
1283
+ [data-part-content] {
1290
1284
  border-end-end-radius: 0;
1291
1285
  border-end-start-radius: 0;
1292
1286
  border-inline: 0;
@@ -1312,31 +1306,31 @@
1312
1306
 
1313
1307
  /* Four rows and a half under the grid on a phone, at the touch height:
1314
1308
  the grid, the list and done fit a short screen together. */
1315
- [data-ui='datetime-range-picker'][data-part='positioner'][data-presentation='sheet']
1316
- [data-part='list'] {
1309
+ [data-ui-datetime-range-picker][data-part-positioner][data-presentation='sheet']
1310
+ [data-part-list] {
1317
1311
  max-block-size: calc(var(--_row-pitch) * 4.5);
1318
1312
  }
1319
1313
 
1320
1314
  /* The list under the grid on a phone, whatever the row's width: a grid
1321
1315
  and a column side by side leave neither room enough. */
1322
- [data-ui='datetime-range-picker'][data-part='positioner'][data-presentation='sheet']
1323
- [data-part='panel']
1324
- > [data-part='list'],
1325
- [data-ui='datetime-range-picker'][data-part='positioner'][data-presentation='sheet']
1326
- [data-part='panel']
1327
- > [data-part='empty'] {
1316
+ [data-ui-datetime-range-picker][data-part-positioner][data-presentation='sheet']
1317
+ [data-part-panel]
1318
+ > [data-part-list],
1319
+ [data-ui-datetime-range-picker][data-part-positioner][data-presentation='sheet']
1320
+ [data-part-panel]
1321
+ > [data-part-empty] {
1328
1322
  flex-basis: 100%;
1329
1323
  }
1330
1324
 
1331
- [data-ui='datetime-range-picker'][data-part='positioner'][data-presentation='sheet']
1332
- [data-part='date-panel']
1333
- + [data-part='list'] {
1325
+ [data-ui-datetime-range-picker][data-part-positioner][data-presentation='sheet']
1326
+ [data-part-date-panel]
1327
+ + [data-part-list] {
1334
1328
  border-inline-start: 0;
1335
1329
  padding-inline-start: 0;
1336
1330
  }
1337
1331
 
1338
- [data-ui='datetime-range-picker'][data-part='positioner'][data-presentation='sheet']
1339
- [data-part='tab'] {
1332
+ [data-ui-datetime-range-picker][data-part-positioner][data-presentation='sheet']
1333
+ [data-part-tab] {
1340
1334
  min-block-size: var(
1341
1335
  --slotted-datetime-range-picker-tab-block-size,
1342
1336
  var(--slotted-target-comfortable, 44px)
@@ -1345,29 +1339,28 @@
1345
1339
  }
1346
1340
 
1347
1341
  @media (forced-colors: active) {
1348
- [data-ui='datetime-range-picker'][data-part='root'][data-variant='plain']
1349
- [data-part='control'] {
1342
+ [data-ui-datetime-range-picker][data-part-root][data-variant='plain'] [data-part-control] {
1350
1343
  border-color: ButtonBorder;
1351
1344
  }
1352
1345
 
1353
1346
  /* The tab's underline is painted with a background, and forced colours
1354
1347
  replace a background that is not one of the system's own. */
1355
- [data-ui='datetime-range-picker'] [data-part='tab']::after {
1348
+ [data-ui-datetime-range-picker] [data-part-tab]::after {
1356
1349
  forced-color-adjust: none;
1357
1350
  }
1358
1351
 
1359
- [data-ui='datetime-range-picker'] [data-part='tab']::after {
1352
+ [data-ui-datetime-range-picker] [data-part-tab]::after {
1360
1353
  background-color: currentcolor;
1361
1354
  }
1362
1355
 
1363
- [data-ui='datetime-range-picker'] [data-part='preset'][data-selected],
1364
- [data-ui='datetime-range-picker'] [data-part='option'][data-selected] {
1356
+ [data-ui-datetime-range-picker] [data-part-preset][data-selected],
1357
+ [data-ui-datetime-range-picker] [data-part-option][data-selected] {
1365
1358
  background-color: Highlight;
1366
1359
  color: HighlightText;
1367
1360
  forced-color-adjust: none;
1368
1361
  }
1369
1362
 
1370
- [data-ui='datetime-range-picker'] [data-part='option'][data-current]:not([data-selected]) {
1363
+ [data-ui-datetime-range-picker] [data-part-option][data-current]:not([data-selected]) {
1371
1364
  outline: var(--slotted-focus-ring-width, 2px) solid Highlight;
1372
1365
  outline-offset: calc(var(--slotted-focus-ring-offset, 2px) * -1);
1373
1366
  }