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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (180) hide show
  1. package/package.json +1 -1
  2. package/src/accordion/accordion.css +10 -10
  3. package/src/action-bar/action-bar.css +35 -42
  4. package/src/action-sheet/action-sheet.css +36 -36
  5. package/src/alert/alert.css +43 -35
  6. package/src/alert/alert.tokens.json +5 -0
  7. package/src/app-shell/app-shell.css +356 -301
  8. package/src/aspect-ratio/aspect-ratio.css +9 -9
  9. package/src/attachment/attachment.css +91 -99
  10. package/src/avatar/avatar.css +71 -41
  11. package/src/avatar/avatar.tokens.json +7 -0
  12. package/src/avatar-group/avatar-group.css +21 -22
  13. package/src/badge/badge.css +45 -37
  14. package/src/badge/badge.tokens.json +5 -0
  15. package/src/breadcrumb/breadcrumb.css +37 -37
  16. package/src/button/button.css +149 -68
  17. package/src/button/button.tokens.json +10 -0
  18. package/src/button-group/button-group.css +79 -74
  19. package/src/button-group/button-group.tokens.json +2 -0
  20. package/src/calendar/calendar.css +93 -103
  21. package/src/card/card.css +54 -61
  22. package/src/carousel/carousel.css +150 -161
  23. package/src/cascader/cascader.css +152 -153
  24. package/src/cascader/cascader.tokens.json +1 -0
  25. package/src/chart/chart.css +242 -239
  26. package/src/chart/chart.tokens.json +1 -0
  27. package/src/checkbox/checkbox.css +119 -124
  28. package/src/checkbox-group/checkbox-group.css +7 -7
  29. package/src/code-block/code-block.css +81 -85
  30. package/src/collapsible/collapsible.css +69 -76
  31. package/src/color-picker/color-picker.css +83 -91
  32. package/src/column-manager/column-manager.css +106 -114
  33. package/src/combobox/combobox.css +132 -107
  34. package/src/combobox/combobox.tokens.json +1 -0
  35. package/src/command-palette/command-palette.css +103 -90
  36. package/src/command-palette/command-palette.tokens.json +1 -0
  37. package/src/container/container.css +24 -24
  38. package/src/context-menu/context-menu.css +8 -8
  39. package/src/currency-field/currency-field.css +210 -88
  40. package/src/currency-field/currency-field.tokens.json +13 -0
  41. package/src/dashboard-grid/dashboard-grid.css +148 -116
  42. package/src/data-grid/data-grid.css +535 -470
  43. package/src/data-grid/data-grid.tokens.json +4 -0
  44. package/src/data-list/data-list.css +81 -70
  45. package/src/data-list/data-list.tokens.json +2 -1
  46. package/src/date-field/date-field.css +55 -52
  47. package/src/date-field/date-field.tokens.json +1 -0
  48. package/src/date-picker/date-picker.css +40 -42
  49. package/src/date-range-picker/date-range-picker.css +114 -118
  50. package/src/datetime-field/datetime-field.css +78 -80
  51. package/src/datetime-field/datetime-field.tokens.json +1 -0
  52. package/src/datetime-picker/datetime-picker.css +61 -63
  53. package/src/datetime-range-picker/datetime-range-picker.css +149 -156
  54. package/src/description-list/description-list.css +61 -64
  55. package/src/detail-panel/detail-panel.css +86 -71
  56. package/src/detail-panel/detail-panel.tokens.json +2 -0
  57. package/src/dialog/dialog.css +372 -153
  58. package/src/dialog/dialog.tokens.json +6 -0
  59. package/src/divider/divider.css +18 -18
  60. package/src/drawer/drawer.css +205 -210
  61. package/src/drawer/drawer.tokens.json +1 -0
  62. package/src/entity-picker/entity-picker.css +238 -241
  63. package/src/entity-picker/entity-picker.tokens.json +1 -0
  64. package/src/event-calendar/event-calendar.css +343 -385
  65. package/src/field/field.css +74 -78
  66. package/src/field-group/field-group.css +22 -25
  67. package/src/filter-bar/filter-bar.css +193 -209
  68. package/src/form/form.css +34 -24
  69. package/src/form/form.tokens.json +1 -0
  70. package/src/fullscreen/fullscreen.css +24 -25
  71. package/src/grid/grid.css +28 -28
  72. package/src/highlight/highlight.css +6 -6
  73. package/src/hover-card/hover-card.css +6 -6
  74. package/src/icon/icon.css +19 -15
  75. package/src/icon/icon.tokens.json +1 -0
  76. package/src/image/image.css +39 -39
  77. package/src/import-export-center/import-export-center.css +135 -156
  78. package/src/inline/inline.css +27 -27
  79. package/src/inline-message/inline-message.css +52 -28
  80. package/src/inline-message/inline-message.tokens.json +4 -0
  81. package/src/kbd/kbd.css +30 -26
  82. package/src/link/link.css +15 -15
  83. package/src/list/list.css +44 -17
  84. package/src/list/list.tokens.json +4 -0
  85. package/src/list-item/list-item.css +80 -66
  86. package/src/list-item/list-item.tokens.json +7 -0
  87. package/src/listbox/listbox.css +56 -59
  88. package/src/loading-overlay/loading-overlay.css +75 -92
  89. package/src/markdown/markdown.css +17 -17
  90. package/src/menu/menu.css +83 -63
  91. package/src/menubar/menubar.css +13 -13
  92. package/src/message/message.css +182 -202
  93. package/src/message/message.tokens.json +5 -0
  94. package/src/message-scroller/message-scroller.css +41 -42
  95. package/src/multi-select/multi-select.css +152 -145
  96. package/src/multi-select/multi-select.tokens.json +1 -0
  97. package/src/navigation-menu/navigation-menu.css +167 -188
  98. package/src/notification-center/notification-center.css +140 -148
  99. package/src/notification-center/notification-center.tokens.json +3 -0
  100. package/src/number-field/number-field.css +84 -83
  101. package/src/number-field/number-field.tokens.json +1 -0
  102. package/src/otp-input/otp-input.css +67 -57
  103. package/src/otp-input/otp-input.tokens.json +1 -0
  104. package/src/page/page.css +39 -23
  105. package/src/page/page.tokens.json +1 -0
  106. package/src/page-header/page-header.css +323 -283
  107. package/src/page-header/page-header.tokens.json +5 -0
  108. package/src/pagination/pagination.css +68 -72
  109. package/src/popover/popover.css +40 -49
  110. package/src/progress-indicator/progress-indicator.css +177 -120
  111. package/src/progress-indicator/progress-indicator.tokens.json +1 -1
  112. package/src/prompt-composer/prompt-composer.css +221 -102
  113. package/src/prompt-composer/prompt-composer.tokens.json +15 -0
  114. package/src/prose/prose.css +71 -75
  115. package/src/radio-group/radio-group.css +98 -103
  116. package/src/rating/rating.css +136 -132
  117. package/src/rating/rating.tokens.json +1 -0
  118. package/src/result-state/result-state.css +74 -77
  119. package/src/runtime-properties.mjs +2 -0
  120. package/src/saved-views/saved-views.css +41 -47
  121. package/src/scroll-area/scroll-area.css +39 -32
  122. package/src/section/section.css +161 -41
  123. package/src/section/section.tokens.json +7 -2
  124. package/src/segmented-control/segmented-control.css +254 -97
  125. package/src/segmented-control/segmented-control.tokens.json +15 -11
  126. package/src/select/select.css +118 -117
  127. package/src/select/select.tokens.json +1 -0
  128. package/src/side-navigation/side-navigation.css +179 -182
  129. package/src/side-navigation/side-navigation.tokens.json +1 -0
  130. package/src/skeleton/skeleton.css +47 -48
  131. package/src/slider/slider.css +86 -88
  132. package/src/sparkline/sparkline.css +62 -40
  133. package/src/sparkline/sparkline.tokens.json +2 -0
  134. package/src/spinner/spinner.css +83 -180
  135. package/src/spinner/spinner.tokens.json +0 -1
  136. package/src/split-button/split-button.css +30 -31
  137. package/src/split-button/split-button.tokens.json +1 -0
  138. package/src/splitter/splitter.css +35 -35
  139. package/src/stack/stack.css +24 -24
  140. package/src/stat-card/stat-card.css +341 -224
  141. package/src/stat-card/stat-card.tokens.json +3 -0
  142. package/src/status-indicator/status-indicator.css +28 -28
  143. package/src/stepper/stepper.css +58 -62
  144. package/src/switch/switch.css +86 -92
  145. package/src/table/table.css +310 -165
  146. package/src/table/table.tokens.json +6 -0
  147. package/src/table-of-contents/table-of-contents.css +51 -54
  148. package/src/tabs/tabs.css +337 -302
  149. package/src/tabs/tabs.tokens.json +8 -5
  150. package/src/tag/tag.css +79 -71
  151. package/src/tag/tag.tokens.json +9 -0
  152. package/src/tags-input/tags-input.css +145 -82
  153. package/src/tags-input/tags-input.tokens.json +7 -1
  154. package/src/text-field/text-field.css +132 -136
  155. package/src/text-field/text-field.tokens.json +1 -0
  156. package/src/textarea/textarea.css +31 -28
  157. package/src/textarea/textarea.tokens.json +1 -0
  158. package/src/time-field/time-field.css +72 -69
  159. package/src/time-field/time-field.tokens.json +1 -0
  160. package/src/time-picker/time-picker.css +56 -58
  161. package/src/time-range-picker/time-range-picker.css +126 -133
  162. package/src/timeline/timeline.css +254 -266
  163. package/src/timeline/timeline.tokens.json +5 -0
  164. package/src/toast/toast.css +108 -90
  165. package/src/toast/toast.tokens.json +6 -0
  166. package/src/toggle/toggle.css +62 -25
  167. package/src/toggle/toggle.tokens.json +8 -0
  168. package/src/toggle-group/toggle-group.css +106 -60
  169. package/src/toggle-group/toggle-group.tokens.json +10 -0
  170. package/src/toolbar/toolbar.css +30 -35
  171. package/src/tooltip/tooltip.css +26 -26
  172. package/src/top-navigation/top-navigation.css +243 -259
  173. package/src/tour/tour.css +51 -60
  174. package/src/transfer/transfer.css +160 -164
  175. package/src/tree/tree.css +103 -111
  176. package/src/typography/typography.css +40 -36
  177. package/src/typography/typography.tokens.json +1 -0
  178. package/src/upload/upload.css +224 -224
  179. package/src/visually-hidden/visually-hidden.css +1 -1
  180. package/src/wizard/wizard.css +185 -197
@@ -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='time-range-picker'][data-part='root'] {
42
+ [data-ui-time-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='time-range-picker'] [data-part='control'] {
58
+ [data-ui-time-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='time-range-picker'][data-part='root'][data-size='sm'] [data-part='control'] {
108
+ [data-ui-time-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='time-range-picker'][data-part='root'][data-size='lg'] [data-part='control'] {
116
+ [data-ui-time-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='time-range-picker'][data-part='root'][data-variant='subtle'] [data-part='control'] {
128
+ [data-ui-time-range-picker][data-part-root][data-variant='subtle'] [data-part-control] {
129
129
  background-color: var(
130
130
  --slotted-time-range-picker-subtle-background,
131
131
  var(--slotted-surface-sunken, Canvas)
@@ -136,7 +136,7 @@
136
136
  );
137
137
  }
138
138
 
139
- [data-ui='time-range-picker'][data-part='root'][data-variant='plain'] [data-part='control'] {
139
+ [data-ui-time-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='time-range-picker'] [data-part='trigger'] {
154
+ [data-ui-time-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='time-range-picker'] [data-part='control']:has(> [data-part='clear']) {
180
+ [data-ui-time-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='time-range-picker'] [data-part='summary'] {
187
+ [data-ui-time-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='time-range-picker'] [data-part='summary'][data-placeholder] {
197
+ [data-ui-time-range-picker] [data-part-summary][data-placeholder] {
198
198
  color: var(--slotted-time-range-picker-placeholder-color, var(--slotted-text-muted, GrayText));
199
199
  }
200
200
 
@@ -204,11 +204,11 @@
204
204
  sits where `date-range-picker` sits its calendar. */
205
205
  /* The frame draws the ring for the trigger; the browser's own ring on the
206
206
  trigger would be a second one, inside the frame and over its edge. */
207
- [data-ui='time-range-picker'] [data-part='trigger']:focus-visible {
207
+ [data-ui-time-range-picker] [data-part-trigger]:focus-visible {
208
208
  outline: none;
209
209
  }
210
210
 
211
- [data-ui='time-range-picker'] [data-part='trigger'] > [data-ui='icon'] {
211
+ [data-ui-time-range-picker] [data-part-trigger] > [data-ui-icon] {
212
212
  --slotted-icon-size: var(--_icon-size);
213
213
 
214
214
  /* No system-colour fallback on a decoration: unthemed, it takes the
@@ -220,7 +220,7 @@
220
220
  translate: 0 -50%;
221
221
  }
222
222
 
223
- [data-ui='time-range-picker'] [data-part='trigger']:disabled {
223
+ [data-ui-time-range-picker] [data-part-trigger]:disabled {
224
224
  cursor: not-allowed;
225
225
  }
226
226
 
@@ -230,7 +230,7 @@
230
230
  * stands. Its own ring: tabbing from the trigger to it has to move
231
231
  * something visible, and the frame's ring would sit still.
232
232
  */
233
- [data-ui='time-range-picker'] [data-part='clear'] {
233
+ [data-ui-time-range-picker] [data-part-clear] {
234
234
  --slotted-icon-size: var(--_icon-size);
235
235
 
236
236
  align-items: center;
@@ -260,7 +260,7 @@
260
260
  }
261
261
 
262
262
  /* The hit area, recovered outside the paint, as every inner control does. */
263
- [data-ui='time-range-picker'] [data-part='clear']::after {
263
+ [data-ui-time-range-picker] [data-part-clear]::after {
264
264
  content: '';
265
265
  inset: min(0px, calc((100% - var(--slotted-target-min, 24px)) / 2));
266
266
  position: absolute;
@@ -271,32 +271,32 @@
271
271
  the hit area above grows to 44 pixels around them. It does not reach into
272
272
  the clock's lane after it, which is the trigger's to answer. */
273
273
  @media (pointer: coarse) {
274
- [data-ui='time-range-picker'] [data-part='clear']::after {
274
+ [data-ui-time-range-picker] [data-part-clear]::after {
275
275
  inset: min(0px, calc((100% - var(--slotted-target-comfortable, 44px)) / 2));
276
276
  inset-inline-end: 0;
277
277
  }
278
278
  }
279
279
 
280
- [data-ui='time-range-picker'] [data-part='clear']:hover:not(:disabled):not([data-disabled]) {
280
+ [data-ui-time-range-picker] [data-part-clear]:hover:not(:disabled):not([data-disabled]) {
281
281
  background-color: var(
282
282
  --slotted-time-range-picker-action-hover-background,
283
283
  var(--slotted-tone-secondary-subtle-hover)
284
284
  );
285
285
  }
286
286
 
287
- [data-ui='time-range-picker'] [data-part='clear']:active:not(:disabled):not([data-disabled]) {
287
+ [data-ui-time-range-picker] [data-part-clear]:active:not(:disabled):not([data-disabled]) {
288
288
  background-color: var(
289
289
  --slotted-time-range-picker-action-active-background,
290
290
  var(--slotted-tone-secondary-subtle-active)
291
291
  );
292
292
  }
293
293
 
294
- [data-ui='time-range-picker'] [data-part='clear']:focus-visible {
294
+ [data-ui-time-range-picker] [data-part-clear]:focus-visible {
295
295
  outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);
296
296
  outline-offset: calc(var(--slotted-focus-ring-offset, 2px) * -1);
297
297
  }
298
298
 
299
- [data-ui='time-range-picker'] [data-part='clear']:disabled {
299
+ [data-ui-time-range-picker] [data-part-clear]:disabled {
300
300
  color: var(--slotted-disabled-foreground);
301
301
  cursor: not-allowed;
302
302
  }
@@ -307,30 +307,30 @@
307
307
  * one it can meet, which is the order `STATE_PRECEDENCE` sets.
308
308
  */
309
309
 
310
- [data-ui='time-range-picker'][data-part='root']:not([data-disabled]):not([data-readonly]):not(
310
+ [data-ui-time-range-picker][data-part-root]:not([data-disabled]):not([data-readonly]):not(
311
311
  [data-invalid]
312
312
  )
313
- [data-part='control']:hover {
313
+ [data-part-control]:hover {
314
314
  border-color: var(
315
315
  --slotted-time-range-picker-hover-border-color,
316
316
  var(--slotted-tone-accent-border)
317
317
  );
318
318
  }
319
319
 
320
- [data-ui='time-range-picker'][data-part='root'][data-variant='subtle']:not([data-disabled]):not(
320
+ [data-ui-time-range-picker][data-part-root][data-variant='subtle']:not([data-disabled]):not(
321
321
  [data-readonly]
322
322
  ):not([data-invalid])
323
- [data-part='control']:hover {
323
+ [data-part-control]:hover {
324
324
  background-color: var(
325
325
  --slotted-time-range-picker-subtle-hover-background,
326
326
  var(--slotted-tone-secondary-subtle-hover)
327
327
  );
328
328
  }
329
329
 
330
- [data-ui='time-range-picker'][data-part='root'][data-variant='plain']:not([data-disabled]):not(
330
+ [data-ui-time-range-picker][data-part-root][data-variant='plain']:not([data-disabled]):not(
331
331
  [data-readonly]
332
332
  ):not([data-invalid])
333
- [data-part='control']:hover {
333
+ [data-part-control]:hover {
334
334
  background-color: var(
335
335
  --slotted-time-range-picker-plain-hover-background,
336
336
  var(--slotted-tone-secondary-subtle-hover)
@@ -340,7 +340,7 @@
340
340
 
341
341
  /* The trigger is the only thing in the frame that takes focus, apart from
342
342
  the clear, which draws its own ring; the frame's ring is drawn for it. */
343
- [data-ui='time-range-picker'] [data-part='control']:has(> [data-part='trigger']:focus-visible) {
343
+ [data-ui-time-range-picker] [data-part-control]:has(> [data-part-trigger]:focus-visible) {
344
344
  box-shadow: var(--slotted-control-shadow-focus-geometry, 0 1px 4px -1px)
345
345
  var(--slotted-focus-ring-color, Highlight);
346
346
  outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);
@@ -349,15 +349,15 @@
349
349
 
350
350
  /* The ring of a control whose box is not its own is drawn inside that box,
351
351
  and there is no lift — the `plain` rule of `plain-variant.test.mjs`. */
352
- [data-ui='time-range-picker'][data-part='root'][data-variant='plain']
353
- [data-part='control']:has(> [data-part='trigger']:focus-visible) {
352
+ [data-ui-time-range-picker][data-part-root][data-variant='plain']
353
+ [data-part-control]:has(> [data-part-trigger]:focus-visible) {
354
354
  box-shadow: none;
355
355
  outline-offset: calc(var(--slotted-focus-ring-offset, 2px) * -1);
356
356
  }
357
357
 
358
358
  /* Invalid outranks hover and is written after it. The ring is retargeted
359
359
  rather than repainted, so every ring in the frame moves at once. */
360
- [data-ui='time-range-picker'][data-part='root'][data-invalid] [data-part='control'] {
360
+ [data-ui-time-range-picker][data-part-root][data-invalid] [data-part-control] {
361
361
  --slotted-focus-ring-color: var(
362
362
  --slotted-time-range-picker-invalid-focus-ring-color,
363
363
  var(--slotted-focus-ring-color-invalid, Highlight)
@@ -385,16 +385,16 @@
385
385
  box-shadow: var(--_invalid-edge);
386
386
  }
387
387
 
388
- [data-ui='time-range-picker'][data-invalid]
389
- [data-part='control']:has(> [data-part='trigger']:focus-visible) {
388
+ [data-ui-time-range-picker][data-invalid]
389
+ [data-part-control]:has(> [data-part-trigger]:focus-visible) {
390
390
  box-shadow:
391
391
  var(--_invalid-edge),
392
392
  var(--slotted-control-shadow-focus-geometry, 0 1px 4px -1px)
393
393
  var(--slotted-focus-ring-color, Highlight);
394
394
  }
395
395
 
396
- [data-ui='time-range-picker'][data-part='root'][data-variant='plain'][data-invalid]
397
- [data-part='control']:has(> [data-part='trigger']:focus-visible) {
396
+ [data-ui-time-range-picker][data-part-root][data-variant='plain'][data-invalid]
397
+ [data-part-control]:has(> [data-part-trigger]:focus-visible) {
398
398
  /* The ring lies inside the box here, over the border and an edge as wide as
399
399
  it; the edge reaches past the ring. */
400
400
  box-shadow: inset 0 0 0
@@ -410,20 +410,20 @@
410
410
  * control draws its ring double, which a valid ring is not.
411
411
  */
412
412
  @media (forced-colors: active) {
413
- [data-ui='time-range-picker'][data-part='root'][data-invalid] [data-part='control'] {
413
+ [data-ui-time-range-picker][data-part-root][data-invalid] [data-part-control] {
414
414
  outline: var(--_invalid-edge-width) solid CanvasText;
415
415
  outline-offset: calc(-1 * (var(--_border-width) + var(--_invalid-edge-width)));
416
416
  }
417
417
 
418
- [data-ui='time-range-picker'][data-invalid]
419
- [data-part='control']:has(> [data-part='trigger']:focus-visible) {
418
+ [data-ui-time-range-picker][data-invalid]
419
+ [data-part-control]:has(> [data-part-trigger]:focus-visible) {
420
420
  outline: calc(var(--slotted-focus-ring-width, 2px) + var(--_invalid-edge-width)) double
421
421
  var(--slotted-focus-ring-color, Highlight);
422
422
  outline-offset: var(--slotted-focus-ring-offset, 2px);
423
423
  }
424
424
 
425
- [data-ui='time-range-picker'][data-part='root'][data-variant='plain'][data-invalid]
426
- [data-part='control']:has(> [data-part='trigger']:focus-visible) {
425
+ [data-ui-time-range-picker][data-part-root][data-variant='plain'][data-invalid]
426
+ [data-part-control]:has(> [data-part-trigger]:focus-visible) {
427
427
  outline: calc(var(--slotted-focus-ring-width, 2px) + var(--_invalid-edge-width)) double
428
428
  var(--slotted-focus-ring-color, Highlight);
429
429
  outline-offset: calc(
@@ -434,7 +434,7 @@
434
434
 
435
435
  /* Read-only stays focusable, readable and copyable, and must not be
436
436
  mistakable for disabled: the ground says "not yours to change". */
437
- [data-ui='time-range-picker'][data-part='root'][data-readonly] [data-part='control'] {
437
+ [data-ui-time-range-picker][data-part-root][data-readonly] [data-part-control] {
438
438
  background-color: var(
439
439
  --slotted-time-range-picker-readonly-background,
440
440
  var(--slotted-tone-secondary-subtle-hover)
@@ -443,7 +443,7 @@
443
443
  }
444
444
 
445
445
  /* Muted to the colour the theme measures rather than faded by opacity. */
446
- [data-ui='time-range-picker'][data-part='root'][data-disabled] [data-part='control'] {
446
+ [data-ui-time-range-picker][data-part-root][data-disabled] [data-part-control] {
447
447
  background-color: var(
448
448
  --slotted-time-range-picker-disabled-background,
449
449
  var(--slotted-disabled-background)
@@ -457,9 +457,7 @@
457
457
  cursor: not-allowed;
458
458
  }
459
459
 
460
- [data-ui='time-range-picker'][data-part='root'][data-disabled]
461
- [data-part='trigger']
462
- > [data-ui='icon'] {
460
+ [data-ui-time-range-picker][data-part-root][data-disabled] [data-part-trigger] > [data-ui-icon] {
463
461
  color: var(--slotted-disabled-foreground);
464
462
  }
465
463
 
@@ -468,7 +466,7 @@
468
466
  * What `packages/core/src/positioner` writes `position`, `left` and `top`
469
467
  * onto. The painted surface is one element in, as every overlay is built.
470
468
  */
471
- [data-ui='time-range-picker'][data-part='positioner'] {
469
+ [data-ui-time-range-picker][data-part-positioner] {
472
470
  /* Only the block inset: the positioner writes `left` and never `right`,
473
471
  and `inset-inline-start` would resolve to `right` in a right-to-left
474
472
  document and win over the measured value. */
@@ -490,18 +488,15 @@
490
488
  translate var(--slotted-duration-short) var(--slotted-easing-exit);
491
489
  }
492
490
 
493
- [data-ui='time-range-picker'][data-part='positioner'][data-side='top'] {
491
+ [data-ui-time-range-picker][data-part-positioner][data-side='top'] {
494
492
  translate: 0 var(--_enter-distance);
495
493
  }
496
494
 
497
- [data-ui='time-range-picker'][data-part='positioner']:is(
498
- [data-side='left'],
499
- [data-side='right']
500
- ) {
495
+ [data-ui-time-range-picker][data-part-positioner]:is([data-side='left'], [data-side='right']) {
501
496
  translate: 0 0;
502
497
  }
503
498
 
504
- [data-ui='time-range-picker'][data-part='positioner'][data-open] {
499
+ [data-ui-time-range-picker][data-part-positioner][data-open] {
505
500
  opacity: 1;
506
501
  translate: 0 0;
507
502
  transition: none;
@@ -509,16 +504,16 @@
509
504
 
510
505
  /* The entrance is a keyframe animation and not a transition, for the reason
511
506
  `select` records: only a layer the positioner placed arrives. */
512
- [data-ui='time-range-picker'][data-part='positioner'][data-open][data-positioned] {
507
+ [data-ui-time-range-picker][data-part-positioner][data-open][data-positioned] {
513
508
  animation: slotted-time-range-picker-enter-down var(--slotted-duration-medium)
514
509
  var(--slotted-easing-enter);
515
510
  }
516
511
 
517
- [data-ui='time-range-picker'][data-part='positioner'][data-open][data-positioned][data-side='top'] {
512
+ [data-ui-time-range-picker][data-part-positioner][data-open][data-positioned][data-side='top'] {
518
513
  animation-name: slotted-time-range-picker-enter-up;
519
514
  }
520
515
 
521
- [data-ui='time-range-picker'][data-part='positioner'][data-open][data-positioned]:is(
516
+ [data-ui-time-range-picker][data-part-positioner][data-open][data-positioned]:is(
522
517
  [data-side='left'],
523
518
  [data-side='right']
524
519
  ) {
@@ -547,24 +542,24 @@
547
542
 
548
543
  /* Stillness keeps the fade and drops the movement. */
549
544
  @media (prefers-reduced-motion: reduce) {
550
- [data-ui='time-range-picker'][data-part='positioner'],
551
- [data-ui='time-range-picker'][data-part='positioner'][data-side='top'],
552
- [data-ui='time-range-picker'][data-part='positioner'][data-side='left'],
553
- [data-ui='time-range-picker'][data-part='positioner'][data-side='right'] {
545
+ [data-ui-time-range-picker][data-part-positioner],
546
+ [data-ui-time-range-picker][data-part-positioner][data-side='top'],
547
+ [data-ui-time-range-picker][data-part-positioner][data-side='left'],
548
+ [data-ui-time-range-picker][data-part-positioner][data-side='right'] {
554
549
  translate: 0 0;
555
550
  transition: opacity var(--slotted-duration-short) var(--slotted-easing-exit);
556
551
  }
557
552
 
558
- [data-ui='time-range-picker'][data-part='positioner'][data-open][data-positioned],
559
- [data-ui='time-range-picker'][data-part='positioner'][data-open][data-positioned][data-side='top'],
560
- [data-ui='time-range-picker'][data-part='positioner'][data-open][data-positioned][data-side='left'],
561
- [data-ui='time-range-picker'][data-part='positioner'][data-open][data-positioned][data-side='right'] {
553
+ [data-ui-time-range-picker][data-part-positioner][data-open][data-positioned],
554
+ [data-ui-time-range-picker][data-part-positioner][data-open][data-positioned][data-side='top'],
555
+ [data-ui-time-range-picker][data-part-positioner][data-open][data-positioned][data-side='left'],
556
+ [data-ui-time-range-picker][data-part-positioner][data-open][data-positioned][data-side='right'] {
562
557
  animation-name: slotted-time-range-picker-fade;
563
558
  }
564
559
  }
565
560
 
566
561
  /* The anchor scrolled out of its own clipper. */
567
- [data-ui='time-range-picker'][data-part='positioner'][data-detached] {
562
+ [data-ui-time-range-picker][data-part-positioner][data-detached] {
568
563
  visibility: hidden;
569
564
  }
570
565
 
@@ -579,7 +574,7 @@
579
574
  * by the positioner and absent wherever the surface is drawn without one,
580
575
  * and `min(auto, …)` is not a value.
581
576
  */
582
- [data-ui='time-range-picker'] [data-part='content'] {
577
+ [data-ui-time-range-picker] [data-part-content] {
583
578
  background-color: var(
584
579
  --slotted-time-range-picker-surface,
585
580
  var(--slotted-surface-raised, Canvas)
@@ -628,7 +623,7 @@
628
623
  * what to do next. It renders at the panel's width and contributes nothing
629
624
  * to it, by the pair `datetime-picker` records.
630
625
  */
631
- [data-ui='time-range-picker'] [data-part='head'] {
626
+ [data-ui-time-range-picker] [data-part-head] {
632
627
  box-sizing: border-box;
633
628
  inline-size: 0;
634
629
  min-inline-size: 100%;
@@ -643,30 +638,30 @@
643
638
  row-gap: var(--slotted-space-2, 0.25rem);
644
639
  }
645
640
 
646
- [data-ui='time-range-picker'] [data-part='tabs'] {
641
+ [data-ui-time-range-picker] [data-part-tabs] {
647
642
  grid-area: tabs;
648
643
  }
649
644
 
650
- [data-ui='time-range-picker'] [data-part='field'] {
645
+ [data-ui-time-range-picker] [data-part-field] {
651
646
  grid-area: field;
652
647
  }
653
648
 
654
- [data-ui='time-range-picker'] [data-part='head'] > [data-part='now'] {
649
+ [data-ui-time-range-picker] [data-part-head] > [data-part-now] {
655
650
  align-self: center;
656
651
  grid-area: now;
657
652
  }
658
653
 
659
- [data-ui='time-range-picker'] [data-part='hint'] {
654
+ [data-ui-time-range-picker] [data-part-hint] {
660
655
  align-self: center;
661
656
  grid-area: hint;
662
657
  }
663
658
 
664
- [data-ui='time-range-picker'] [data-part='length'] {
659
+ [data-ui-time-range-picker] [data-part-length] {
665
660
  align-self: center;
666
661
  grid-area: length;
667
662
  }
668
663
 
669
- [data-ui='time-range-picker'] [data-part='limit'] {
664
+ [data-ui-time-range-picker] [data-part-limit] {
670
665
  grid-area: limit;
671
666
  }
672
667
 
@@ -678,7 +673,7 @@
678
673
  * The row is the whole width so the two are the same size whatever their
679
674
  * values, and a thumb finds them without aiming.
680
675
  */
681
- [data-ui='time-range-picker'] [data-part='tabs'] {
676
+ [data-ui-time-range-picker] [data-part-tabs] {
682
677
  border-block-end: var(--slotted-border-width-thin, 1px) solid
683
678
  var(
684
679
  --slotted-time-range-picker-content-border-color,
@@ -689,7 +684,7 @@
689
684
  grid-template-columns: repeat(2, minmax(0, 1fr));
690
685
  }
691
686
 
692
- [data-ui='time-range-picker'] [data-part='tab'] {
687
+ [data-ui-time-range-picker] [data-part-tab] {
693
688
  appearance: none;
694
689
  background-color: transparent;
695
690
  border: 0;
@@ -719,7 +714,7 @@
719
714
  -webkit-tap-highlight-color: transparent;
720
715
  }
721
716
 
722
- [data-ui='time-range-picker'] [data-part='tab']::after {
717
+ [data-ui-time-range-picker] [data-part-tab]::after {
723
718
  background-color: var(
724
719
  --slotted-time-range-picker-current-color,
725
720
  var(--slotted-tone-accent-solid)
@@ -738,30 +733,30 @@
738
733
  var(--slotted-control-transition-easing);
739
734
  }
740
735
 
741
- [data-ui='time-range-picker'] [data-part='tab'][data-current]::after {
736
+ [data-ui-time-range-picker] [data-part-tab][data-current]::after {
742
737
  opacity: 1;
743
738
  }
744
739
 
745
- [data-ui='time-range-picker'] [data-part='tab']:hover:not(:disabled):not([data-current]) {
740
+ [data-ui-time-range-picker] [data-part-tab]:hover:not(:disabled):not([data-current]) {
746
741
  background-color: var(
747
742
  --slotted-time-range-picker-option-hover-background,
748
743
  var(--slotted-tone-secondary-subtle-hover)
749
744
  );
750
745
  }
751
746
 
752
- [data-ui='time-range-picker'] [data-part='tab']:focus-visible {
747
+ [data-ui-time-range-picker] [data-part-tab]:focus-visible {
753
748
  outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);
754
749
  outline-offset: calc(var(--slotted-focus-ring-offset, 2px) * -1);
755
750
  }
756
751
 
757
- [data-ui='time-range-picker'] [data-part='tab']:disabled {
752
+ [data-ui-time-range-picker] [data-part-tab]:disabled {
758
753
  color: var(--slotted-disabled-foreground);
759
754
  cursor: not-allowed;
760
755
  }
761
756
 
762
757
  /* The label, in the muted ink for both ends alike: which end is current
763
758
  is said once, by the underline. */
764
- [data-ui='time-range-picker'] [data-part='tab-label'] {
759
+ [data-ui-time-range-picker] [data-part-tab-label] {
765
760
  color: var(--slotted-time-range-picker-label-color, var(--slotted-text-muted, GrayText));
766
761
  font-size: var(--slotted-font-size-xs, 11px);
767
762
  font-weight: var(--slotted-font-weight-medium, 500);
@@ -770,7 +765,7 @@
770
765
  white-space: nowrap;
771
766
  }
772
767
 
773
- [data-ui='time-range-picker'] [data-part='tab-value'] {
768
+ [data-ui-time-range-picker] [data-part-tab-value] {
774
769
  font-size: var(--slotted-font-size-sm, 13px);
775
770
  font-variant-numeric: tabular-nums;
776
771
  font-weight: var(--slotted-font-weight-medium, 500);
@@ -780,7 +775,7 @@
780
775
  white-space: nowrap;
781
776
  }
782
777
 
783
- [data-ui='time-range-picker'] [data-part='tab'][data-placeholder] [data-part='tab-value'] {
778
+ [data-ui-time-range-picker] [data-part-tab][data-placeholder] [data-part-tab-value] {
784
779
  color: var(--slotted-time-range-picker-label-color, var(--slotted-text-muted, GrayText));
785
780
  font-weight: var(--slotted-font-weight-regular, 400);
786
781
  }
@@ -794,7 +789,7 @@
794
789
  * `now` sits at the reading end of the same row. On a coarse pointer the
795
790
  * row is `now` alone: a segment is a spinbutton and raises no keyboard.
796
791
  */
797
- [data-ui='time-range-picker'] [data-part='field'] {
792
+ [data-ui-time-range-picker] [data-part-field] {
798
793
  --slotted-control-border-width: 0px;
799
794
  --slotted-control-padding-inline-sm: var(--slotted-space-2, 0.25rem);
800
795
  --slotted-control-padding-inline-md: var(--slotted-space-2, 0.25rem);
@@ -815,7 +810,7 @@
815
810
  * line of its own under them. The hint is the difference between a panel
816
811
  * that refuses and a panel that explains.
817
812
  */
818
- [data-ui='time-range-picker'] [data-part='hint'] {
813
+ [data-ui-time-range-picker] [data-part-hint] {
819
814
  color: var(--slotted-time-range-picker-hint-color, var(--slotted-text-muted, GrayText));
820
815
  font-size: var(--slotted-font-size-sm, 13px);
821
816
  min-inline-size: 0;
@@ -824,13 +819,13 @@
824
819
  unicode-bidi: plaintext;
825
820
  }
826
821
 
827
- [data-ui='time-range-picker'] [data-part='hint'][data-invalid] {
822
+ [data-ui-time-range-picker] [data-part-hint][data-invalid] {
828
823
  color: var(--slotted-time-range-picker-invalid-color, var(--slotted-tone-danger-text));
829
824
  }
830
825
 
831
826
  /* The duration, at the reading end, in the accent's text tone: it is the
832
827
  number the band exists to say. Pending, it drops a step of weight. */
833
- [data-ui='time-range-picker'] [data-part='length'] {
828
+ [data-ui-time-range-picker] [data-part-length] {
834
829
  color: var(--slotted-time-range-picker-length-color, var(--slotted-tone-accent-text));
835
830
  font-size: var(--slotted-font-size-sm, 13px);
836
831
  font-variant-numeric: tabular-nums;
@@ -840,17 +835,17 @@
840
835
  white-space: nowrap;
841
836
  }
842
837
 
843
- [data-ui='time-range-picker'] [data-part='length'][data-pending] {
838
+ [data-ui-time-range-picker] [data-part-length][data-pending] {
844
839
  font-weight: var(--slotted-font-weight-medium, 500);
845
840
  }
846
841
 
847
842
  /* An empty length still holds its line, so the band does not grow a row
848
843
  when the first end is chosen. */
849
- [data-ui='time-range-picker'] [data-part='length']:empty::before {
844
+ [data-ui-time-range-picker] [data-part-length]:empty::before {
850
845
  content: '\200B';
851
846
  }
852
847
 
853
- [data-ui='time-range-picker'] [data-part='limit'] {
848
+ [data-ui-time-range-picker] [data-part-limit] {
854
849
  color: var(--slotted-time-range-picker-limit-color, var(--slotted-text-muted, GrayText));
855
850
  font-size: var(--slotted-font-size-xs, 11px);
856
851
  padding-inline-start: var(--slotted-space-2, 0.25rem);
@@ -861,7 +856,7 @@
861
856
  *
862
857
  * The current end, one at a time: its list. `data-position` says which.
863
858
  */
864
- [data-ui='time-range-picker'] [data-part='panel'] {
859
+ [data-ui-time-range-picker] [data-part-panel] {
865
860
  display: flex;
866
861
  flex-direction: column;
867
862
  gap: var(--slotted-space-2, 0.25rem);
@@ -869,7 +864,7 @@
869
864
  min-inline-size: 0;
870
865
  }
871
866
 
872
- [data-ui='time-range-picker'] [data-part='now'] {
867
+ [data-ui-time-range-picker] [data-part-now] {
873
868
  appearance: none;
874
869
  background-color: transparent;
875
870
  border: 0;
@@ -887,19 +882,19 @@
887
882
  var(--slotted-control-transition-easing);
888
883
  }
889
884
 
890
- [data-ui='time-range-picker'] [data-part='now']:hover:not(:disabled):not([data-disabled]) {
885
+ [data-ui-time-range-picker] [data-part-now]:hover:not(:disabled):not([data-disabled]) {
891
886
  background-color: var(
892
887
  --slotted-time-range-picker-option-hover-background,
893
888
  var(--slotted-tone-secondary-subtle-hover)
894
889
  );
895
890
  }
896
891
 
897
- [data-ui='time-range-picker'] [data-part='now']:focus-visible {
892
+ [data-ui-time-range-picker] [data-part-now]:focus-visible {
898
893
  outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);
899
894
  outline-offset: calc(var(--slotted-focus-ring-offset, 2px) * -1);
900
895
  }
901
896
 
902
- [data-ui='time-range-picker'] [data-part='now']:disabled {
897
+ [data-ui-time-range-picker] [data-part-now]:disabled {
903
898
  color: var(--slotted-disabled-foreground);
904
899
  cursor: not-allowed;
905
900
  }
@@ -910,7 +905,7 @@
910
905
  * clock. It ships the row they stand in and the chip each one is, between
911
906
  * the band and the panel, wrapping when they do not fit.
912
907
  */
913
- [data-ui='time-range-picker'] [data-part='presets'] {
908
+ [data-ui-time-range-picker] [data-part-presets] {
914
909
  display: flex;
915
910
  flex-wrap: wrap;
916
911
  gap: var(--slotted-space-2, 0.25rem);
@@ -918,7 +913,7 @@
918
913
  min-inline-size: 0;
919
914
  }
920
915
 
921
- [data-ui='time-range-picker'] [data-part='preset'] {
916
+ [data-ui-time-range-picker] [data-part-preset] {
922
917
  appearance: none;
923
918
  background-color: var(
924
919
  --slotted-time-range-picker-preset-background,
@@ -947,21 +942,21 @@
947
942
  -webkit-tap-highlight-color: transparent;
948
943
  }
949
944
 
950
- [data-ui='time-range-picker'] [data-part='preset']:hover:not(:disabled):not([data-selected]) {
945
+ [data-ui-time-range-picker] [data-part-preset]:hover:not(:disabled):not([data-selected]) {
951
946
  background-color: var(
952
947
  --slotted-time-range-picker-preset-hover-background,
953
948
  var(--slotted-tone-secondary-subtle-hover)
954
949
  );
955
950
  }
956
951
 
957
- [data-ui='time-range-picker'] [data-part='preset']:active:not(:disabled):not([data-selected]) {
952
+ [data-ui-time-range-picker] [data-part-preset]:active:not(:disabled):not([data-selected]) {
958
953
  background-color: var(
959
954
  --slotted-time-range-picker-preset-active-background,
960
955
  var(--slotted-tone-secondary-subtle-active)
961
956
  );
962
957
  }
963
958
 
964
- [data-ui='time-range-picker'] [data-part='preset'][data-selected] {
959
+ [data-ui-time-range-picker] [data-part-preset][data-selected] {
965
960
  background-color: var(
966
961
  --slotted-time-range-picker-preset-selected-background,
967
962
  var(--slotted-tone-accent-subtle-hover)
@@ -970,12 +965,12 @@
970
965
  font-weight: var(--slotted-font-weight-medium, 500);
971
966
  }
972
967
 
973
- [data-ui='time-range-picker'] [data-part='preset']:focus-visible {
968
+ [data-ui-time-range-picker] [data-part-preset]:focus-visible {
974
969
  outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);
975
970
  outline-offset: var(--slotted-focus-ring-offset, 2px);
976
971
  }
977
972
 
978
- [data-ui='time-range-picker'] [data-part='preset']:disabled {
973
+ [data-ui-time-range-picker] [data-part-preset]:disabled {
979
974
  color: var(--slotted-disabled-foreground);
980
975
  cursor: not-allowed;
981
976
  }
@@ -986,7 +981,7 @@
986
981
  * cap holds at every density, and scrolled rather than truncated —
987
982
  * `time-picker`'s list.
988
983
  */
989
- [data-ui='time-range-picker'] [data-part='list'] {
984
+ [data-ui-time-range-picker] [data-part-list] {
990
985
  display: flex;
991
986
  flex-direction: column;
992
987
  /* One step of air between rows, so the chosen row's painted ground and
@@ -1001,7 +996,7 @@
1001
996
  scroll-padding-block: var(--slotted-space-2, 0.25rem);
1002
997
  }
1003
998
 
1004
- [data-ui='time-range-picker'] [data-part='option'] {
999
+ [data-ui-time-range-picker] [data-part-option] {
1005
1000
  /* The time and its duration share a baseline, and the line box is the
1006
1001
  row: baseline alignment alone would seat both at the top of a row
1007
1002
  taller than one line, and a length line-height centres them in it. */
@@ -1036,7 +1031,7 @@
1036
1031
  * the other end it is the duration to the end already chosen. Muted, so the
1037
1032
  * time stays what the row is; on the chosen row it takes the row's own ink.
1038
1033
  */
1039
- [data-ui='time-range-picker'] [data-part='option-duration'] {
1034
+ [data-ui-time-range-picker] [data-part-option-duration] {
1040
1035
  color: var(--slotted-time-range-picker-label-color, var(--slotted-text-muted, GrayText));
1041
1036
  flex: 0 1 auto;
1042
1037
  font-size: var(--slotted-font-size-xs, 11px);
@@ -1047,8 +1042,8 @@
1047
1042
  white-space: nowrap;
1048
1043
  }
1049
1044
 
1050
- [data-ui='time-range-picker'] [data-part='option'][data-selected] [data-part='option-duration'],
1051
- [data-ui='time-range-picker'] [data-part='option'][data-disabled] [data-part='option-duration'] {
1045
+ [data-ui-time-range-picker] [data-part-option][data-selected] [data-part-option-duration],
1046
+ [data-ui-time-range-picker] [data-part-option][data-disabled] [data-part-option-duration] {
1052
1047
  color: inherit;
1053
1048
  }
1054
1049
 
@@ -1059,27 +1054,27 @@
1059
1054
  * outranks the pointer. Specificity is what makes this a rule rather than an
1060
1055
  * ordering — the defect `time-picker` records from its visual gate.
1061
1056
  */
1062
- [data-ui='time-range-picker']
1063
- [data-part='option']:hover:not([data-disabled]):not([data-selected]):not([data-current]) {
1057
+ [data-ui-time-range-picker]
1058
+ [data-part-option]:hover:not([data-disabled]):not([data-selected]):not([data-current]) {
1064
1059
  background-color: var(
1065
1060
  --slotted-time-range-picker-option-hover-background,
1066
1061
  var(--slotted-tone-secondary-subtle-hover)
1067
1062
  );
1068
1063
  }
1069
1064
 
1070
- [data-ui='time-range-picker'] [data-part='option'][data-current]:not([data-selected]) {
1065
+ [data-ui-time-range-picker] [data-part-option][data-current]:not([data-selected]) {
1071
1066
  background-color: var(
1072
1067
  --slotted-time-range-picker-option-current-background,
1073
1068
  var(--slotted-tone-secondary-subtle-active)
1074
1069
  );
1075
1070
  }
1076
1071
 
1077
- [data-ui='time-range-picker'] [data-part='option']:focus-visible {
1072
+ [data-ui-time-range-picker] [data-part-option]:focus-visible {
1078
1073
  outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);
1079
1074
  outline-offset: calc(var(--slotted-focus-ring-offset, 2px) * -1);
1080
1075
  }
1081
1076
 
1082
- [data-ui='time-range-picker'] [data-part='option'][data-selected] {
1077
+ [data-ui-time-range-picker] [data-part-option][data-selected] {
1083
1078
  background-color: var(
1084
1079
  --slotted-time-range-picker-option-selected-background,
1085
1080
  var(--slotted-tone-accent-solid)
@@ -1091,7 +1086,7 @@
1091
1086
  }
1092
1087
 
1093
1088
  /* The chosen row still answers the pointer, one step along its own tone. */
1094
- [data-ui='time-range-picker'] [data-part='option'][data-selected]:hover:not([data-disabled]) {
1089
+ [data-ui-time-range-picker] [data-part-option][data-selected]:hover:not([data-disabled]) {
1095
1090
  background-color: var(
1096
1091
  --slotted-time-range-picker-option-selected-hover-background,
1097
1092
  var(--slotted-tone-accent-solid-hover)
@@ -1104,7 +1099,7 @@
1104
1099
  * step the reader cannot infer — and it is muted to the colour the theme
1105
1100
  * measures rather than faded by opacity, so it stays readable.
1106
1101
  */
1107
- [data-ui='time-range-picker'] [data-part='option'][data-disabled] {
1102
+ [data-ui-time-range-picker] [data-part-option][data-disabled] {
1108
1103
  background-color: transparent;
1109
1104
  color: var(--slotted-disabled-foreground);
1110
1105
  cursor: not-allowed;
@@ -1112,7 +1107,7 @@
1112
1107
 
1113
1108
  /* Nothing available for this end at all. A sentence rather than an empty
1114
1109
  box, the reason `time-picker` records. */
1115
- [data-ui='time-range-picker'] [data-part='empty'] {
1110
+ [data-ui-time-range-picker] [data-part-empty] {
1116
1111
  align-items: center;
1117
1112
  color: var(--slotted-time-range-picker-label-color, var(--slotted-text-muted, GrayText));
1118
1113
  display: flex;
@@ -1129,7 +1124,7 @@
1129
1124
 
1130
1125
  /* The consumer's own actions and, at the reading end, `done`: the way out
1131
1126
  of a sheet that fills the screen and of an edit left half way. */
1132
- [data-ui='time-range-picker'] [data-part='footer'] {
1127
+ [data-ui-time-range-picker] [data-part-footer] {
1133
1128
  box-sizing: border-box;
1134
1129
  inline-size: 0;
1135
1130
  min-inline-size: 100%;
@@ -1147,7 +1142,7 @@
1147
1142
  padding-block-start: var(--slotted-space-3, 0.375rem);
1148
1143
  }
1149
1144
 
1150
- [data-ui='time-range-picker'] [data-part='done'] {
1145
+ [data-ui-time-range-picker] [data-part-done] {
1151
1146
  appearance: none;
1152
1147
  background-color: var(
1153
1148
  --slotted-time-range-picker-done-background,
@@ -1171,21 +1166,21 @@
1171
1166
  -webkit-tap-highlight-color: transparent;
1172
1167
  }
1173
1168
 
1174
- [data-ui='time-range-picker'] [data-part='done']:hover:not(:disabled) {
1169
+ [data-ui-time-range-picker] [data-part-done]:hover:not(:disabled) {
1175
1170
  background-color: var(
1176
1171
  --slotted-time-range-picker-done-hover-background,
1177
1172
  var(--slotted-tone-accent-solid-hover)
1178
1173
  );
1179
1174
  }
1180
1175
 
1181
- [data-ui='time-range-picker'] [data-part='done']:active:not(:disabled) {
1176
+ [data-ui-time-range-picker] [data-part-done]:active:not(:disabled) {
1182
1177
  background-color: var(
1183
1178
  --slotted-time-range-picker-done-active-background,
1184
1179
  var(--slotted-tone-accent-solid-active)
1185
1180
  );
1186
1181
  }
1187
1182
 
1188
- [data-ui='time-range-picker'] [data-part='done']:focus-visible {
1183
+ [data-ui-time-range-picker] [data-part-done]:focus-visible {
1189
1184
  outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);
1190
1185
  outline-offset: var(--slotted-focus-ring-offset, 2px);
1191
1186
  }
@@ -1198,7 +1193,7 @@
1198
1193
  * raises no keyboard — and the list is the way to a time.
1199
1194
  */
1200
1195
  @media (pointer: coarse) {
1201
- [data-ui='time-range-picker'] [data-part='field'] {
1196
+ [data-ui-time-range-picker] [data-part-field] {
1202
1197
  display: none;
1203
1198
  }
1204
1199
  }
@@ -1209,18 +1204,18 @@
1209
1204
  * desktop and a sheet in a narrow viewport. The DOM does not change.
1210
1205
  */
1211
1206
  @media (max-width: 480px) and (pointer: coarse) {
1212
- [data-ui='time-range-picker'][data-part='positioner'][data-presentation='sheet'] {
1207
+ [data-ui-time-range-picker][data-part-positioner][data-presentation='sheet'] {
1213
1208
  inset: auto 0 0;
1214
1209
  position: fixed;
1215
1210
  translate: 0 var(--slotted-space-9, 2rem);
1216
1211
  }
1217
1212
 
1218
- [data-ui='time-range-picker'][data-part='positioner'][data-presentation='sheet'][data-open] {
1213
+ [data-ui-time-range-picker][data-part-positioner][data-presentation='sheet'][data-open] {
1219
1214
  translate: 0 0;
1220
1215
  }
1221
1216
 
1222
- [data-ui='time-range-picker'][data-part='positioner'][data-presentation='sheet']
1223
- [data-part='content'] {
1217
+ [data-ui-time-range-picker][data-part-positioner][data-presentation='sheet']
1218
+ [data-part-content] {
1224
1219
  border-end-end-radius: 0;
1225
1220
  border-end-start-radius: 0;
1226
1221
  border-inline: 0;
@@ -1243,13 +1238,11 @@
1243
1238
 
1244
1239
  /* Six rows and a half on a phone, at the touch height: the sheet stays
1245
1240
  under two thirds of the screen and done stays reachable. */
1246
- [data-ui='time-range-picker'][data-part='positioner'][data-presentation='sheet']
1247
- [data-part='list'] {
1241
+ [data-ui-time-range-picker][data-part-positioner][data-presentation='sheet'] [data-part-list] {
1248
1242
  max-block-size: calc(var(--_row-pitch) * 6.5);
1249
1243
  }
1250
1244
 
1251
- [data-ui='time-range-picker'][data-part='positioner'][data-presentation='sheet']
1252
- [data-part='tab'] {
1245
+ [data-ui-time-range-picker][data-part-positioner][data-presentation='sheet'] [data-part-tab] {
1253
1246
  min-block-size: var(
1254
1247
  --slotted-time-range-picker-tab-block-size,
1255
1248
  var(--slotted-target-comfortable, 44px)
@@ -1258,28 +1251,28 @@
1258
1251
  }
1259
1252
 
1260
1253
  @media (forced-colors: active) {
1261
- [data-ui='time-range-picker'][data-part='root'][data-variant='plain'] [data-part='control'] {
1254
+ [data-ui-time-range-picker][data-part-root][data-variant='plain'] [data-part-control] {
1262
1255
  border-color: ButtonBorder;
1263
1256
  }
1264
1257
 
1265
1258
  /* The tab's underline is painted with a background, and forced colours
1266
1259
  replace a background that is not one of the system's own. */
1267
- [data-ui='time-range-picker'] [data-part='tab']::after {
1260
+ [data-ui-time-range-picker] [data-part-tab]::after {
1268
1261
  forced-color-adjust: none;
1269
1262
  }
1270
1263
 
1271
- [data-ui='time-range-picker'] [data-part='tab']::after {
1264
+ [data-ui-time-range-picker] [data-part-tab]::after {
1272
1265
  background-color: currentcolor;
1273
1266
  }
1274
1267
 
1275
- [data-ui='time-range-picker'] [data-part='preset'][data-selected],
1276
- [data-ui='time-range-picker'] [data-part='option'][data-selected] {
1268
+ [data-ui-time-range-picker] [data-part-preset][data-selected],
1269
+ [data-ui-time-range-picker] [data-part-option][data-selected] {
1277
1270
  background-color: Highlight;
1278
1271
  color: HighlightText;
1279
1272
  forced-color-adjust: none;
1280
1273
  }
1281
1274
 
1282
- [data-ui='time-range-picker'] [data-part='option'][data-current]:not([data-selected]) {
1275
+ [data-ui-time-range-picker] [data-part-option][data-current]:not([data-selected]) {
1283
1276
  outline: var(--slotted-focus-ring-width, 2px) solid Highlight;
1284
1277
  outline-offset: calc(var(--slotted-focus-ring-offset, 2px) * -1);
1285
1278
  }