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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (128) hide show
  1. package/package.json +1 -1
  2. package/src/accordion/accordion.css +10 -10
  3. package/src/action-bar/action-bar.css +31 -32
  4. package/src/action-sheet/action-sheet.css +36 -36
  5. package/src/alert/alert.css +35 -35
  6. package/src/app-shell/app-shell.css +280 -299
  7. package/src/aspect-ratio/aspect-ratio.css +9 -9
  8. package/src/attachment/attachment.css +91 -99
  9. package/src/avatar/avatar.css +41 -41
  10. package/src/avatar-group/avatar-group.css +21 -22
  11. package/src/badge/badge.css +37 -37
  12. package/src/breadcrumb/breadcrumb.css +37 -37
  13. package/src/button/button.css +88 -69
  14. package/src/button-group/button-group.css +69 -73
  15. package/src/calendar/calendar.css +93 -103
  16. package/src/card/card.css +54 -61
  17. package/src/carousel/carousel.css +150 -161
  18. package/src/cascader/cascader.css +147 -151
  19. package/src/chart/chart.css +225 -240
  20. package/src/checkbox/checkbox.css +119 -124
  21. package/src/checkbox-group/checkbox-group.css +7 -7
  22. package/src/code-block/code-block.css +81 -85
  23. package/src/collapsible/collapsible.css +69 -76
  24. package/src/color-picker/color-picker.css +83 -91
  25. package/src/column-manager/column-manager.css +106 -114
  26. package/src/combobox/combobox.css +99 -101
  27. package/src/command-palette/command-palette.css +84 -90
  28. package/src/container/container.css +24 -24
  29. package/src/context-menu/context-menu.css +8 -8
  30. package/src/currency-field/currency-field.css +99 -104
  31. package/src/dashboard-grid/dashboard-grid.css +104 -107
  32. package/src/data-grid/data-grid.css +458 -456
  33. package/src/data-grid/data-grid.tokens.json +2 -0
  34. package/src/data-list/data-list.css +67 -69
  35. package/src/date-field/date-field.css +50 -50
  36. package/src/date-picker/date-picker.css +40 -42
  37. package/src/date-range-picker/date-range-picker.css +114 -118
  38. package/src/datetime-field/datetime-field.css +73 -78
  39. package/src/datetime-picker/datetime-picker.css +61 -63
  40. package/src/datetime-range-picker/datetime-range-picker.css +149 -156
  41. package/src/description-list/description-list.css +61 -64
  42. package/src/detail-panel/detail-panel.css +70 -70
  43. package/src/dialog/dialog.css +312 -148
  44. package/src/divider/divider.css +18 -18
  45. package/src/drawer/drawer.css +186 -209
  46. package/src/entity-picker/entity-picker.css +220 -239
  47. package/src/event-calendar/event-calendar.css +343 -385
  48. package/src/field/field.css +74 -78
  49. package/src/field-group/field-group.css +22 -25
  50. package/src/filter-bar/filter-bar.css +193 -209
  51. package/src/form/form.css +21 -24
  52. package/src/fullscreen/fullscreen.css +24 -25
  53. package/src/grid/grid.css +28 -28
  54. package/src/highlight/highlight.css +6 -6
  55. package/src/hover-card/hover-card.css +6 -6
  56. package/src/icon/icon.css +15 -15
  57. package/src/image/image.css +39 -39
  58. package/src/import-export-center/import-export-center.css +135 -156
  59. package/src/inline/inline.css +27 -27
  60. package/src/inline-message/inline-message.css +28 -28
  61. package/src/kbd/kbd.css +26 -26
  62. package/src/link/link.css +15 -15
  63. package/src/list/list.css +20 -20
  64. package/src/list-item/list-item.css +66 -66
  65. package/src/listbox/listbox.css +56 -59
  66. package/src/loading-overlay/loading-overlay.css +75 -92
  67. package/src/markdown/markdown.css +17 -17
  68. package/src/menu/menu.css +63 -65
  69. package/src/menubar/menubar.css +13 -13
  70. package/src/message/message.css +174 -202
  71. package/src/message-scroller/message-scroller.css +41 -42
  72. package/src/multi-select/multi-select.css +131 -137
  73. package/src/navigation-menu/navigation-menu.css +167 -188
  74. package/src/notification-center/notification-center.css +134 -148
  75. package/src/number-field/number-field.css +76 -81
  76. package/src/otp-input/otp-input.css +48 -48
  77. package/src/page/page.css +23 -23
  78. package/src/page-header/page-header.css +219 -280
  79. package/src/pagination/pagination.css +68 -72
  80. package/src/popover/popover.css +40 -49
  81. package/src/progress-indicator/progress-indicator.css +85 -90
  82. package/src/prompt-composer/prompt-composer.css +94 -99
  83. package/src/prose/prose.css +71 -75
  84. package/src/radio-group/radio-group.css +98 -103
  85. package/src/rating/rating.css +132 -132
  86. package/src/result-state/result-state.css +74 -77
  87. package/src/saved-views/saved-views.css +41 -47
  88. package/src/scroll-area/scroll-area.css +32 -35
  89. package/src/section/section.css +16 -16
  90. package/src/segmented-control/segmented-control.css +77 -79
  91. package/src/select/select.css +113 -115
  92. package/src/side-navigation/side-navigation.css +170 -180
  93. package/src/skeleton/skeleton.css +47 -48
  94. package/src/slider/slider.css +86 -88
  95. package/src/sparkline/sparkline.css +32 -32
  96. package/src/spinner/spinner.css +4 -4
  97. package/src/split-button/split-button.css +26 -31
  98. package/src/splitter/splitter.css +35 -35
  99. package/src/stack/stack.css +24 -24
  100. package/src/stat-card/stat-card.css +102 -103
  101. package/src/status-indicator/status-indicator.css +28 -28
  102. package/src/stepper/stepper.css +58 -62
  103. package/src/switch/switch.css +86 -92
  104. package/src/table/table.css +189 -198
  105. package/src/table-of-contents/table-of-contents.css +51 -54
  106. package/src/tabs/tabs.css +157 -172
  107. package/src/tag/tag.css +67 -71
  108. package/src/tags-input/tags-input.css +124 -74
  109. package/src/tags-input/tags-input.tokens.json +6 -1
  110. package/src/text-field/text-field.css +108 -126
  111. package/src/textarea/textarea.css +26 -26
  112. package/src/time-field/time-field.css +67 -67
  113. package/src/time-picker/time-picker.css +56 -58
  114. package/src/time-range-picker/time-range-picker.css +126 -133
  115. package/src/timeline/timeline.css +244 -266
  116. package/src/toast/toast.css +81 -90
  117. package/src/toggle/toggle.css +29 -33
  118. package/src/toggle-group/toggle-group.css +67 -71
  119. package/src/toolbar/toolbar.css +30 -35
  120. package/src/tooltip/tooltip.css +26 -26
  121. package/src/top-navigation/top-navigation.css +243 -259
  122. package/src/tour/tour.css +51 -60
  123. package/src/transfer/transfer.css +160 -164
  124. package/src/tree/tree.css +103 -111
  125. package/src/typography/typography.css +36 -36
  126. package/src/upload/upload.css +224 -224
  127. package/src/visually-hidden/visually-hidden.css +1 -1
  128. package/src/wizard/wizard.css +185 -197
@@ -23,7 +23,7 @@
23
23
  * ground of two chosen rows are `combobox`'s decisions, and the chips row is
24
24
  * `multi-select`'s. They are repeated rather than shared for the reason
25
25
  * `combobox.css` gives about `select`: a stylesheet that painted
26
- * `[data-ui='combobox']` from here would make one family's selector match
26
+ * `[data-ui-combobox]` from here would make one family's selector match
27
27
  * the other's DOM.
28
28
  *
29
29
  * What is this family's own is the record: a row two lines tall with the
@@ -35,7 +35,7 @@
35
35
 
36
36
  /* ── The root ─────────────────────────────────────────────────────────── */
37
37
 
38
- [data-ui='entity-picker'][data-part='root'] {
38
+ [data-ui-entity-picker][data-part-root] {
39
39
  --_font-size: var(--slotted-control-font-size-md, 13px);
40
40
  --_height: var(--slotted-control-height-md, 34px);
41
41
  --_padding-inline: var(--slotted-control-padding-inline-md, 13px);
@@ -65,12 +65,12 @@
65
65
  min-inline-size: 0;
66
66
  }
67
67
 
68
- [data-ui='entity-picker'][data-part='root']:not([data-full-width]) {
68
+ [data-ui-entity-picker][data-part-root]:not([data-full-width]) {
69
69
  display: inline-flex;
70
70
  inline-size: auto;
71
71
  }
72
72
 
73
- [data-ui='entity-picker'][data-part='root'][data-size='sm'] {
73
+ [data-ui-entity-picker][data-part-root][data-size='sm'] {
74
74
  --_font-size: var(--slotted-control-font-size-sm, 12px);
75
75
  --_height: var(--slotted-control-height-sm, 30px);
76
76
  --_padding-inline: var(--slotted-control-padding-inline-sm, 10px);
@@ -78,7 +78,7 @@
78
78
  --_inner-size: var(--slotted-control-inner-size-sm, 22px);
79
79
  }
80
80
 
81
- [data-ui='entity-picker'][data-part='root'][data-size='lg'] {
81
+ [data-ui-entity-picker][data-part-root][data-size='lg'] {
82
82
  --_font-size: var(--slotted-control-font-size-lg, 14px);
83
83
  --_height: var(--slotted-control-height-lg, 38px);
84
84
  --_padding-inline: var(--slotted-control-padding-inline-lg, 16px);
@@ -105,22 +105,22 @@
105
105
  * width is its chevron. 11rem holds "Opportunities" at `lg`; 45% leaves the
106
106
  * field the larger share at 240 pixels.
107
107
  */
108
- [data-ui='entity-picker'] > [data-part='scope'] {
108
+ [data-ui-entity-picker] > [data-part-scope] {
109
109
  display: flex;
110
110
  flex: 0 0 var(--slotted-entity-picker-scope-inline-size, min(11rem, 45%));
111
111
  min-inline-size: 0;
112
112
  }
113
113
 
114
- [data-ui='entity-picker'] > [data-part='scope'] > [data-ui='select'][data-part='root'] {
114
+ [data-ui-entity-picker] > [data-part-scope] > [data-ui-select][data-part-root] {
115
115
  inline-size: 100%;
116
116
  }
117
117
 
118
- [data-ui='entity-picker'] > [data-part='scope'] > [data-ui='select'][data-part='root'] {
118
+ [data-ui-entity-picker] > [data-part-scope] > [data-ui-select][data-part-root] {
119
119
  border-end-end-radius: 0;
120
120
  border-start-end-radius: 0;
121
121
  }
122
122
 
123
- [data-ui='entity-picker'] > [data-part='scope'] + [data-part='control'] {
123
+ [data-ui-entity-picker] > [data-part-scope] + [data-part-control] {
124
124
  border-end-start-radius: 0;
125
125
  border-start-start-radius: 0;
126
126
  margin-inline-start: calc(-1 * var(--slotted-control-border-width, 1px));
@@ -133,16 +133,16 @@
133
133
  * only. The box being pointed at, focused, open or invalid stands over the
134
134
  * seam, so its edge is whole on all four sides.
135
135
  */
136
- [data-ui='entity-picker']:not([data-disabled]) > [data-part='scope']:is(:hover, :focus-within),
137
- [data-ui='entity-picker']:not([data-disabled]) > [data-part='control']:is(:hover, :focus-within),
138
- [data-ui='entity-picker']:is([data-open], [data-invalid]) > [data-part='control'] {
136
+ [data-ui-entity-picker]:not([data-disabled]) > [data-part-scope]:is(:hover, :focus-within),
137
+ [data-ui-entity-picker]:not([data-disabled]) > [data-part-control]:is(:hover, :focus-within),
138
+ [data-ui-entity-picker]:is([data-open], [data-invalid]) > [data-part-control] {
139
139
  position: relative;
140
140
  z-index: 1;
141
141
  }
142
142
 
143
143
  /* ── The frame ────────────────────────────────────────────────────────── */
144
144
 
145
- [data-ui='entity-picker'] > [data-part='control'] {
145
+ [data-ui-entity-picker] > [data-part-control] {
146
146
  align-items: center;
147
147
  background-color: var(
148
148
  --slotted-entity-picker-background,
@@ -181,7 +181,7 @@
181
181
  * that a text field cannot. Hidden from assistive technology: the input
182
182
  * already carries the name.
183
183
  */
184
- [data-ui='entity-picker'] > [data-part='control'] > [data-part='selection'] {
184
+ [data-ui-entity-picker] > [data-part-control] > [data-part-selection] {
185
185
  --slotted-avatar-size-xs: var(--_chip-media);
186
186
 
187
187
  display: inline-flex;
@@ -191,7 +191,7 @@
191
191
 
192
192
  /* ── The input ────────────────────────────────────────────────────────── */
193
193
 
194
- [data-ui='entity-picker'] > [data-part='control'] [data-part='input'] {
194
+ [data-ui-entity-picker] > [data-part-control] [data-part-input] {
195
195
  background-color: transparent;
196
196
  border: 0;
197
197
  color: inherit;
@@ -206,17 +206,17 @@
206
206
 
207
207
  /* In single the input is the frame's own row, stretched to its border box
208
208
  as `combobox`'s is, so on a coarse pointer the control is the target. */
209
- [data-ui='entity-picker'] > [data-part='control'] > [data-part='input'] {
209
+ [data-ui-entity-picker] > [data-part-control] > [data-part-input] {
210
210
  align-self: stretch;
211
211
  margin-block: calc(var(--slotted-control-border-width, 1px) * -1);
212
212
  }
213
213
 
214
- [data-ui='entity-picker'] > [data-part='control'] [data-part='input']::placeholder {
214
+ [data-ui-entity-picker] > [data-part-control] [data-part-input]::placeholder {
215
215
  color: var(--slotted-entity-picker-placeholder-color, var(--slotted-text-muted, GrayText));
216
216
  text-overflow: ellipsis;
217
217
  }
218
218
 
219
- [data-ui='entity-picker'] > [data-part='control'] [data-part='input']:autofill {
219
+ [data-ui-entity-picker] > [data-part-control] [data-part-input]:autofill {
220
220
  box-shadow: inset 0 0 0 100px
221
221
  var(--slotted-entity-picker-autofill-background, var(--slotted-tone-accent-surface));
222
222
  -webkit-text-fill-color: var(--slotted-entity-picker-color, var(--slotted-text, CanvasText));
@@ -224,7 +224,7 @@
224
224
 
225
225
  /* ── The chips (multiple) ─────────────────────────────────────────────── */
226
226
 
227
- [data-ui='entity-picker'] > [data-part='control'] > [data-part='values'] {
227
+ [data-ui-entity-picker] > [data-part-control] > [data-part-values] {
228
228
  align-self: stretch;
229
229
  display: flex;
230
230
  flex: 1 1 auto;
@@ -233,11 +233,11 @@
233
233
 
234
234
  /* The boundary between what is chosen and what acts on it is the row's own
235
235
  gap, not the frame's tight one (`multi-select`). */
236
- [data-ui='entity-picker'] > [data-part='control'] > [data-part='values'] + * {
236
+ [data-ui-entity-picker] > [data-part-control] > [data-part-values] + * {
237
237
  margin-inline-start: var(--_row-gap);
238
238
  }
239
239
 
240
- [data-ui='entity-picker'] > [data-part='control'] [data-part='chips'] {
240
+ [data-ui-entity-picker] > [data-part-control] [data-part-chips] {
241
241
  --slotted-control-inner-size: var(--_inner-size);
242
242
 
243
243
  align-content: safe center;
@@ -258,7 +258,7 @@
258
258
  scrollbar-width: none;
259
259
  }
260
260
 
261
- [data-ui='entity-picker'] > [data-part='control'] [data-part='chips']::-webkit-scrollbar {
261
+ [data-ui-entity-picker] > [data-part-control] [data-part-chips]::-webkit-scrollbar {
262
262
  display: none;
263
263
  }
264
264
 
@@ -275,9 +275,9 @@
275
275
  * chip only has to not fight it; the row clips rather than scrolls, and the
276
276
  * chips' own focus ring is drawn inside them for that reason.
277
277
  */
278
- [data-ui='entity-picker'][data-part='root']:not([data-overflow='wrap'])
279
- > [data-part='control']
280
- [data-part='chips'] {
278
+ [data-ui-entity-picker][data-part-root]:not([data-overflow='wrap'])
279
+ > [data-part-control]
280
+ [data-part-chips] {
281
281
  flex-wrap: nowrap;
282
282
  max-block-size: none;
283
283
  overflow: hidden;
@@ -292,18 +292,18 @@
292
292
  * chip that had already shrunk measured as fitting (the reference page
293
293
  * showed "Ana S…" beside room to spare).
294
294
  */
295
- [data-ui='entity-picker'][data-part='root']:not([data-overflow='wrap'])
296
- > [data-part='control']
297
- [data-part='chips']
298
- > [data-part='field'] {
295
+ [data-ui-entity-picker][data-part-root]:not([data-overflow='wrap'])
296
+ > [data-part-control]
297
+ [data-part-chips]
298
+ > [data-part-field] {
299
299
  flex: 1 0 var(--slotted-entity-picker-field-min, 2.5rem);
300
300
  }
301
301
 
302
- [data-ui='entity-picker'][data-part='root']:not([data-overflow='wrap'])
303
- > [data-part='control']
304
- [data-part='chips']
305
- > :not([data-part='field'], [hidden]):first-child:not(
306
- :has(~ [data-ui='tag']:not([hidden], [data-count]))
302
+ [data-ui-entity-picker][data-part-root]:not([data-overflow='wrap'])
303
+ > [data-part-control]
304
+ [data-part-chips]
305
+ > :not([data-part-field], [hidden]):first-child:not(
306
+ :has(~ [data-ui-tag]:not([hidden], [data-count]))
307
307
  ) {
308
308
  flex-shrink: 1;
309
309
  /* Never a sliver: its face, three letters and its remove button. Below
@@ -312,7 +312,7 @@
312
312
  }
313
313
 
314
314
  /* The count is a chip that never gives way and never shrinks. */
315
- [data-ui='entity-picker'] > [data-part='control'] [data-part='chips'] > [data-count] {
315
+ [data-ui-entity-picker] > [data-part-control] [data-part-chips] > [data-count] {
316
316
  cursor: pointer;
317
317
  flex: none;
318
318
  }
@@ -322,7 +322,7 @@
322
322
  * settles for a couple of characters, as in `multi-select`; in one line it
323
323
  * is what the collapse leaves room for.
324
324
  */
325
- [data-ui='entity-picker'] > [data-part='control'] [data-part='field'] {
325
+ [data-ui-entity-picker] > [data-part-control] [data-part-field] {
326
326
  align-items: center;
327
327
  display: flex;
328
328
  flex: 1 1 var(--slotted-entity-picker-field-basis, 4rem);
@@ -330,10 +330,7 @@
330
330
  min-inline-size: var(--slotted-entity-picker-field-min, 2.5rem);
331
331
  }
332
332
 
333
- [data-ui='entity-picker']
334
- > [data-part='control']
335
- [data-part='chips']
336
- > :not([data-part='field']) {
333
+ [data-ui-entity-picker] > [data-part-control] [data-part-chips] > :not([data-part-field]) {
337
334
  flex: 0 0 auto;
338
335
  max-inline-size: 100%;
339
336
  min-block-size: var(--_row-size);
@@ -347,30 +344,30 @@
347
344
  * the body the same air at its start, so the circle sits in the pill's end
348
345
  * the way the pill's end is round. The rest of the chip is `tag`'s.
349
346
  */
350
- [data-ui='entity-picker']
351
- > [data-part='control']
352
- [data-part='chips']
347
+ [data-ui-entity-picker]
348
+ > [data-part-control]
349
+ [data-part-chips]
353
350
  > [data-ui]
354
- > [data-part='body']
355
- > [data-part='start'] {
351
+ > [data-part-body]
352
+ > [data-part-start] {
356
353
  --slotted-avatar-size-xs: var(--_chip-media);
357
354
 
358
355
  block-size: var(--_chip-media);
359
356
  inline-size: var(--_chip-media);
360
357
  }
361
358
 
362
- [data-ui='entity-picker']
363
- > [data-part='control']
364
- [data-part='chips']
359
+ [data-ui-entity-picker]
360
+ > [data-part-control]
361
+ [data-part-chips]
365
362
  > [data-ui]
366
- > [data-part='body']:has(> [data-part='start']) {
363
+ > [data-part-body]:has(> [data-part-start]) {
367
364
  padding-inline-start: var(--slotted-space-1, 0.125rem);
368
365
  }
369
366
 
370
- [data-ui='entity-picker']
371
- > [data-part='control']
372
- [data-part='chips']
373
- > :not([data-part='field']):focus-visible {
367
+ [data-ui-entity-picker]
368
+ > [data-part-control]
369
+ [data-part-chips]
370
+ > :not([data-part-field]):focus-visible {
374
371
  outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);
375
372
  outline-offset: calc(-1 * var(--slotted-focus-ring-width, 2px));
376
373
  }
@@ -383,12 +380,12 @@
383
380
  * and a chip that is not yet a value is drawn as an outline, like the one
384
381
  * that never will be.
385
382
  */
386
- [data-ui='entity-picker']
387
- > [data-part='control']
388
- [data-part='chips']
383
+ [data-ui-entity-picker]
384
+ > [data-part-control]
385
+ [data-part-chips]
389
386
  > [data-ui][data-loading]
390
- > [data-part='body']
391
- [data-ui='skeleton'] {
387
+ > [data-part-body]
388
+ [data-ui-skeleton] {
392
389
  --slotted-skeleton-inline-size: 5em;
393
390
  }
394
391
 
@@ -398,20 +395,17 @@
398
395
  * and the alert mark where a value has a face. The word is muted, never
399
396
  * struck through — the record may exist and be out of this reader's reach.
400
397
  */
401
- [data-ui='entity-picker']
402
- > [data-part='control']
403
- [data-part='chips']
404
- > [data-ui][data-unresolved] {
398
+ [data-ui-entity-picker] > [data-part-control] [data-part-chips] > [data-ui][data-unresolved] {
405
399
  color: var(--slotted-text-muted, GrayText);
406
400
  }
407
401
 
408
- [data-ui='entity-picker']
409
- > [data-part='control']
410
- [data-part='chips']
402
+ [data-ui-entity-picker]
403
+ > [data-part-control]
404
+ [data-part-chips]
411
405
  > [data-ui][data-unresolved]
412
- > [data-part='body']
413
- > [data-part='start']
414
- > [data-ui='icon'] {
406
+ > [data-part-body]
407
+ > [data-part-start]
408
+ > [data-ui-icon] {
415
409
  /* The alert mark is a `Glyph` the binding draws in the face's place, at the
416
410
  chip's icon step rather than stretched to the face's box. */
417
411
  block-size: var(--_icon-size);
@@ -420,9 +414,7 @@
420
414
 
421
415
  /* ── The two buttons inside the frame ─────────────────────────────────── */
422
416
 
423
- [data-ui='entity-picker']
424
- > [data-part='control']
425
- > :is([data-part='clear'], [data-part='trigger']) {
417
+ [data-ui-entity-picker] > [data-part-control] > :is([data-part-clear], [data-part-trigger]) {
426
418
  align-items: center;
427
419
  appearance: none;
428
420
  background-color: transparent;
@@ -446,9 +438,9 @@
446
438
  }
447
439
 
448
440
  /* The hit area, recovered outside the paint (R2). */
449
- [data-ui='entity-picker']
450
- > [data-part='control']
451
- > :is([data-part='clear'], [data-part='trigger'])::after {
441
+ [data-ui-entity-picker]
442
+ > [data-part-control]
443
+ > :is([data-part-clear], [data-part-trigger])::after {
452
444
  content: '';
453
445
  inset: min(0px, calc((100% - var(--slotted-target-min, 24px)) / 2));
454
446
  position: absolute;
@@ -459,35 +451,33 @@
459
451
  the hit area above grows to 44 pixels around them. Side by side, neither
460
452
  button reaches across the edge the two share. */
461
453
  @media (pointer: coarse) {
462
- [data-ui='entity-picker']
463
- > [data-part='control']
464
- > :is([data-part='clear'], [data-part='trigger'])::after {
454
+ [data-ui-entity-picker]
455
+ > [data-part-control]
456
+ > :is([data-part-clear], [data-part-trigger])::after {
465
457
  inset: min(0px, calc((100% - var(--slotted-target-comfortable, 44px)) / 2));
466
458
  }
467
459
 
468
- [data-ui='entity-picker']
469
- > [data-part='control']
470
- > [data-part='clear']:has(+ [data-part='trigger']:not([hidden]))::after {
460
+ [data-ui-entity-picker]
461
+ > [data-part-control]
462
+ > [data-part-clear]:has(+ [data-part-trigger]:not([hidden]))::after {
471
463
  inset-inline-end: 0;
472
464
  }
473
465
 
474
- [data-ui='entity-picker']
475
- > [data-part='control']
476
- > [data-part='clear']:not([hidden])
477
- + [data-part='trigger']::after {
466
+ [data-ui-entity-picker]
467
+ > [data-part-control]
468
+ > [data-part-clear]:not([hidden])
469
+ + [data-part-trigger]::after {
478
470
  inset-inline-start: 0;
479
471
  }
480
472
  }
481
473
 
482
474
  /* The cross and the chevron are `Glyph` elements the binding draws, sized
483
475
  here to the control's icon step. */
484
- [data-ui='entity-picker']
485
- > [data-part='control']
486
- > :is([data-part='clear'], [data-part='trigger']) {
476
+ [data-ui-entity-picker] > [data-part-control] > :is([data-part-clear], [data-part-trigger]) {
487
477
  --slotted-icon-size: var(--_icon-size);
488
478
  }
489
479
 
490
- [data-ui='entity-picker'] > [data-part='control'] > [data-part='trigger'] > [data-part='arrow'] {
480
+ [data-ui-entity-picker] > [data-part-control] > [data-part-trigger] > [data-part-arrow] {
491
481
  align-items: center;
492
482
  block-size: var(--_icon-size);
493
483
  display: flex;
@@ -495,59 +485,59 @@
495
485
  justify-content: center;
496
486
  }
497
487
 
498
- [data-ui='entity-picker']
499
- > [data-part='control']
500
- > [data-part='trigger']
501
- > [data-part='arrow']
502
- > [data-ui='icon'] {
488
+ [data-ui-entity-picker]
489
+ > [data-part-control]
490
+ > [data-part-trigger]
491
+ > [data-part-arrow]
492
+ > [data-ui-icon] {
503
493
  transition: rotate var(--slotted-control-transition-duration)
504
494
  var(--slotted-control-transition-easing);
505
495
  }
506
496
 
507
- [data-ui='entity-picker'][data-open]
508
- > [data-part='control']
509
- > [data-part='trigger']
510
- > [data-part='arrow']
511
- > [data-ui='icon'] {
497
+ [data-ui-entity-picker][data-open]
498
+ > [data-part-control]
499
+ > [data-part-trigger]
500
+ > [data-part-arrow]
501
+ > [data-ui-icon] {
512
502
  rotate: 180deg;
513
503
  }
514
504
 
515
505
  /* The ring where the chevron stands, drawn by `spinner/spinner.css`. */
516
- [data-ui='entity-picker'] > [data-part='control'] > [data-part='trigger'] > [data-part='busy'] {
506
+ [data-ui-entity-picker] > [data-part-control] > [data-part-trigger] > [data-part-busy] {
517
507
  --slotted-spinner-size: var(--_icon-size);
518
508
 
519
509
  color: var(--slotted-entity-picker-action-color, var(--slotted-text-muted, GrayText));
520
510
  flex: none;
521
511
  }
522
512
 
523
- [data-ui='entity-picker']
524
- > [data-part='control']
525
- > :is([data-part='clear'], [data-part='trigger']):hover:not(:disabled):not([data-disabled]) {
513
+ [data-ui-entity-picker]
514
+ > [data-part-control]
515
+ > :is([data-part-clear], [data-part-trigger]):hover:not(:disabled):not([data-disabled]) {
526
516
  background-color: var(
527
517
  --slotted-entity-picker-action-hover-background,
528
518
  var(--slotted-tone-secondary-subtle-hover)
529
519
  );
530
520
  }
531
521
 
532
- [data-ui='entity-picker']
533
- > [data-part='control']
534
- > :is([data-part='clear'], [data-part='trigger']):active:not(:disabled):not([data-disabled]) {
522
+ [data-ui-entity-picker]
523
+ > [data-part-control]
524
+ > :is([data-part-clear], [data-part-trigger]):active:not(:disabled):not([data-disabled]) {
535
525
  background-color: var(
536
526
  --slotted-entity-picker-action-active-background,
537
527
  var(--slotted-tone-secondary-subtle-active)
538
528
  );
539
529
  }
540
530
 
541
- [data-ui='entity-picker']
542
- > [data-part='control']
543
- > :is([data-part='clear'], [data-part='trigger']):focus-visible {
531
+ [data-ui-entity-picker]
532
+ > [data-part-control]
533
+ > :is([data-part-clear], [data-part-trigger]):focus-visible {
544
534
  outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);
545
535
  outline-offset: calc(var(--slotted-focus-ring-offset, 2px) * -1);
546
536
  }
547
537
 
548
538
  /* ── Variant ──────────────────────────────────────────────────────────── */
549
539
 
550
- [data-ui='entity-picker'][data-part='root'][data-variant='subtle'] > [data-part='control'] {
540
+ [data-ui-entity-picker][data-part-root][data-variant='subtle'] > [data-part-control] {
551
541
  background-color: var(
552
542
  --slotted-entity-picker-subtle-background,
553
543
  var(--slotted-surface-sunken, Canvas)
@@ -559,7 +549,7 @@
559
549
  }
560
550
 
561
551
  /* The cell it sits in is the box (the plain-variant rule). */
562
- [data-ui='entity-picker'][data-part='root'][data-variant='plain'] > [data-part='control'] {
552
+ [data-ui-entity-picker][data-part-root][data-variant='plain'] > [data-part-control] {
563
553
  background-color: transparent;
564
554
  border-color: transparent;
565
555
  border-radius: var(--slotted-radius-none, 0px);
@@ -567,37 +557,37 @@
567
557
  }
568
558
 
569
559
  @media (forced-colors: active) {
570
- [data-ui='entity-picker'][data-part='root'][data-variant='plain'] > [data-part='control'] {
560
+ [data-ui-entity-picker][data-part-root][data-variant='plain'] > [data-part-control] {
571
561
  border-color: ButtonBorder;
572
562
  }
573
563
  }
574
564
 
575
565
  /* ── States on the frame ──────────────────────────────────────────────── */
576
566
 
577
- [data-ui='entity-picker'][data-part='root']:not([data-disabled]):not([data-readonly]):not(
567
+ [data-ui-entity-picker][data-part-root]:not([data-disabled]):not([data-readonly]):not(
578
568
  [data-invalid]
579
569
  )
580
- > [data-part='control']:hover {
570
+ > [data-part-control]:hover {
581
571
  border-color: var(
582
572
  --slotted-entity-picker-hover-border-color,
583
573
  var(--slotted-tone-accent-border)
584
574
  );
585
575
  }
586
576
 
587
- [data-ui='entity-picker'][data-part='root'][data-variant='subtle']:not([data-disabled]):not(
577
+ [data-ui-entity-picker][data-part-root][data-variant='subtle']:not([data-disabled]):not(
588
578
  [data-readonly]
589
579
  ):not([data-invalid])
590
- > [data-part='control']:hover {
580
+ > [data-part-control]:hover {
591
581
  background-color: var(
592
582
  --slotted-entity-picker-subtle-hover-background,
593
583
  var(--slotted-tone-secondary-subtle-hover)
594
584
  );
595
585
  }
596
586
 
597
- [data-ui='entity-picker'][data-part='root'][data-variant='plain']:not([data-disabled]):not(
587
+ [data-ui-entity-picker][data-part-root][data-variant='plain']:not([data-disabled]):not(
598
588
  [data-readonly]
599
589
  ):not([data-invalid])
600
- > [data-part='control']:hover {
590
+ > [data-part-control]:hover {
601
591
  background-color: var(
602
592
  --slotted-entity-picker-plain-hover-background,
603
593
  var(--slotted-tone-secondary-subtle-hover)
@@ -605,32 +595,31 @@
605
595
  border-color: transparent;
606
596
  }
607
597
 
608
- [data-ui='entity-picker'] > [data-part='control']:has([data-part='input']:focus-visible) {
598
+ [data-ui-entity-picker] > [data-part-control]:has([data-part-input]:focus-visible) {
609
599
  box-shadow: var(--slotted-control-shadow-focus-geometry, 0 1px 4px -1px)
610
600
  var(--slotted-focus-ring-color, Highlight);
611
601
  outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);
612
602
  outline-offset: var(--slotted-focus-ring-offset, 2px);
613
603
  }
614
604
 
615
- [data-ui='entity-picker'][data-part='root'][data-variant='plain']
616
- > [data-part='control']:has([data-part='input']:focus-visible) {
605
+ [data-ui-entity-picker][data-part-root][data-variant='plain']
606
+ > [data-part-control]:has([data-part-input]:focus-visible) {
617
607
  box-shadow: none;
618
608
  outline-offset: calc(var(--slotted-focus-ring-offset, 2px) * -1);
619
609
  }
620
610
 
621
- [data-ui='entity-picker'][data-part='root'][data-open]:not([data-disabled])
622
- > [data-part='control'] {
611
+ [data-ui-entity-picker][data-part-root][data-open]:not([data-disabled]) > [data-part-control] {
623
612
  border-color: var(--slotted-entity-picker-open-border-color, var(--slotted-tone-accent-border));
624
613
  }
625
614
 
626
- [data-ui='entity-picker'][data-part='root'][data-invalid] {
615
+ [data-ui-entity-picker][data-part-root][data-invalid] {
627
616
  --slotted-focus-ring-color: var(
628
617
  --slotted-entity-picker-invalid-focus-ring-color,
629
618
  var(--slotted-focus-ring-color-invalid, Highlight)
630
619
  );
631
620
  }
632
621
 
633
- [data-ui='entity-picker'][data-part='root'][data-invalid] > [data-part='control'] {
622
+ [data-ui-entity-picker][data-part-root][data-invalid] > [data-part-control] {
634
623
  --_invalid-edge-width: var(
635
624
  --slotted-entity-picker-invalid-edge-width,
636
625
  var(--slotted-control-invalid-edge-width, 1px)
@@ -654,16 +643,15 @@
654
643
  box-shadow: var(--_invalid-edge);
655
644
  }
656
645
 
657
- [data-ui='entity-picker'][data-invalid]
658
- > [data-part='control']:has([data-part='input']:focus-visible) {
646
+ [data-ui-entity-picker][data-invalid] > [data-part-control]:has([data-part-input]:focus-visible) {
659
647
  box-shadow:
660
648
  var(--_invalid-edge),
661
649
  var(--slotted-control-shadow-focus-geometry, 0 1px 4px -1px)
662
650
  var(--slotted-focus-ring-color, Highlight);
663
651
  }
664
652
 
665
- [data-ui='entity-picker'][data-part='root'][data-variant='plain'][data-invalid]
666
- > [data-part='control']:has([data-part='input']:focus-visible) {
653
+ [data-ui-entity-picker][data-part-root][data-variant='plain'][data-invalid]
654
+ > [data-part-control]:has([data-part-input]:focus-visible) {
667
655
  /* The ring lies inside the box here, over the border and an edge as wide as
668
656
  it; the edge reaches past the ring. */
669
657
  box-shadow: inset 0 0 0
@@ -680,22 +668,22 @@
680
668
  * control draws its ring double, which a valid ring is not.
681
669
  */
682
670
  @media (forced-colors: active) {
683
- [data-ui='entity-picker'][data-part='root'][data-invalid] > [data-part='control'] {
671
+ [data-ui-entity-picker][data-part-root][data-invalid] > [data-part-control] {
684
672
  outline: var(--_invalid-edge-width) solid CanvasText;
685
673
  outline-offset: calc(
686
674
  -1 * (var(--slotted-control-border-width, 1px) + var(--_invalid-edge-width))
687
675
  );
688
676
  }
689
677
 
690
- [data-ui='entity-picker'][data-invalid]
691
- > [data-part='control']:has([data-part='input']:focus-visible) {
678
+ [data-ui-entity-picker][data-invalid]
679
+ > [data-part-control]:has([data-part-input]:focus-visible) {
692
680
  outline: calc(var(--slotted-focus-ring-width, 2px) + var(--_invalid-edge-width)) double
693
681
  var(--slotted-focus-ring-color, Highlight);
694
682
  outline-offset: var(--slotted-focus-ring-offset, 2px);
695
683
  }
696
684
 
697
- [data-ui='entity-picker'][data-part='root'][data-variant='plain'][data-invalid]
698
- > [data-part='control']:has([data-part='input']:focus-visible) {
685
+ [data-ui-entity-picker][data-part-root][data-variant='plain'][data-invalid]
686
+ > [data-part-control]:has([data-part-input]:focus-visible) {
699
687
  outline: calc(var(--slotted-focus-ring-width, 2px) + var(--_invalid-edge-width)) double
700
688
  var(--slotted-focus-ring-color, Highlight);
701
689
  outline-offset: calc(
@@ -704,22 +692,22 @@
704
692
  }
705
693
  }
706
694
 
707
- [data-ui='entity-picker'][data-part='root'][data-readonly] > [data-part='control'] {
695
+ [data-ui-entity-picker][data-part-root][data-readonly] > [data-part-control] {
708
696
  background-color: var(
709
697
  --slotted-entity-picker-readonly-background,
710
698
  var(--slotted-tone-secondary-subtle-hover)
711
699
  );
712
700
  }
713
701
 
714
- [data-ui='entity-picker'][data-part='root'][data-readonly]
715
- > [data-part='control']
716
- > [data-part='trigger']
717
- > [data-part='arrow'] {
702
+ [data-ui-entity-picker][data-part-root][data-readonly]
703
+ > [data-part-control]
704
+ > [data-part-trigger]
705
+ > [data-part-arrow] {
718
706
  opacity: 0.5;
719
707
  }
720
708
 
721
- [data-ui='entity-picker'][data-part='root'][data-disabled] > [data-part='control'],
722
- [data-ui='entity-picker'] > [data-part='control']:has([data-part='input']:disabled) {
709
+ [data-ui-entity-picker][data-part-root][data-disabled] > [data-part-control],
710
+ [data-ui-entity-picker] > [data-part-control]:has([data-part-input]:disabled) {
723
711
  background-color: var(
724
712
  --slotted-entity-picker-disabled-background,
725
713
  var(--slotted-disabled-background)
@@ -734,18 +722,18 @@
734
722
  }
735
723
 
736
724
  /* A disabled face is a quieter face: the ink recedes, the photograph with it. */
737
- [data-ui='entity-picker'][data-part='root'][data-disabled]
738
- > [data-part='control']
725
+ [data-ui-entity-picker][data-part-root][data-disabled]
726
+ > [data-part-control]
739
727
  :is(
740
- [data-part='selection'],
741
- [data-part='chips'] > [data-ui] > [data-part='body'] > [data-part='start']
728
+ [data-part-selection],
729
+ [data-part-chips] > [data-ui] > [data-part-body] > [data-part-start]
742
730
  ) {
743
731
  opacity: 0.6;
744
732
  }
745
733
 
746
734
  /* ── The layer ────────────────────────────────────────────────────────── */
747
735
 
748
- [data-ui='entity-picker'][data-part='positioner'] {
736
+ [data-ui-entity-picker][data-part-positioner] {
749
737
  --_surface: var(--slotted-entity-picker-surface, var(--slotted-surface-raised, #ffffff));
750
738
  --_text: var(--slotted-entity-picker-content-text, var(--slotted-text, #0f172a));
751
739
  --_muted: var(--slotted-entity-picker-content-text-muted, var(--slotted-text-muted, #5b6b7f));
@@ -798,30 +786,30 @@
798
786
  z-index: calc(var(--slotted-z-index-popover, 1100) + var(--slotted-layer-depth, 0));
799
787
  }
800
788
 
801
- [data-ui='entity-picker'][data-part='positioner'][data-side='top'] {
789
+ [data-ui-entity-picker][data-part-positioner][data-side='top'] {
802
790
  translate: 0 var(--_enter-distance);
803
791
  }
804
792
 
805
- [data-ui='entity-picker'][data-part='positioner']:is([data-side='left'], [data-side='right']) {
793
+ [data-ui-entity-picker][data-part-positioner]:is([data-side='left'], [data-side='right']) {
806
794
  translate: 0 0;
807
795
  }
808
796
 
809
- [data-ui='entity-picker'][data-part='positioner'][data-open] {
797
+ [data-ui-entity-picker][data-part-positioner][data-open] {
810
798
  opacity: 1;
811
799
  transition: none;
812
800
  translate: 0 0;
813
801
  }
814
802
 
815
- [data-ui='entity-picker'][data-part='positioner'][data-open][data-positioned] {
803
+ [data-ui-entity-picker][data-part-positioner][data-open][data-positioned] {
816
804
  animation: slotted-entity-picker-enter-down var(--slotted-duration-medium)
817
805
  var(--slotted-easing-enter);
818
806
  }
819
807
 
820
- [data-ui='entity-picker'][data-part='positioner'][data-open][data-positioned][data-side='top'] {
808
+ [data-ui-entity-picker][data-part-positioner][data-open][data-positioned][data-side='top'] {
821
809
  animation-name: slotted-entity-picker-enter-up;
822
810
  }
823
811
 
824
- [data-ui='entity-picker'][data-part='positioner'][data-open][data-positioned]:is(
812
+ [data-ui-entity-picker][data-part-positioner][data-open][data-positioned]:is(
825
813
  [data-side='left'],
826
814
  [data-side='right']
827
815
  ) {
@@ -849,37 +837,37 @@
849
837
  }
850
838
 
851
839
  @media (prefers-reduced-motion: reduce) {
852
- [data-ui='entity-picker'][data-part='positioner'],
853
- [data-ui='entity-picker'][data-part='positioner'][data-side='top'],
854
- [data-ui='entity-picker'][data-part='positioner'][data-side='left'],
855
- [data-ui='entity-picker'][data-part='positioner'][data-side='right'] {
840
+ [data-ui-entity-picker][data-part-positioner],
841
+ [data-ui-entity-picker][data-part-positioner][data-side='top'],
842
+ [data-ui-entity-picker][data-part-positioner][data-side='left'],
843
+ [data-ui-entity-picker][data-part-positioner][data-side='right'] {
856
844
  transition: opacity var(--slotted-duration-short) var(--slotted-easing-exit);
857
845
  translate: 0 0;
858
846
  }
859
847
 
860
- [data-ui='entity-picker'][data-part='positioner'][data-open][data-positioned],
861
- [data-ui='entity-picker'][data-part='positioner'][data-open][data-positioned][data-side='top'],
862
- [data-ui='entity-picker'][data-part='positioner'][data-open][data-positioned][data-side='left'],
863
- [data-ui='entity-picker'][data-part='positioner'][data-open][data-positioned][data-side='right'] {
848
+ [data-ui-entity-picker][data-part-positioner][data-open][data-positioned],
849
+ [data-ui-entity-picker][data-part-positioner][data-open][data-positioned][data-side='top'],
850
+ [data-ui-entity-picker][data-part-positioner][data-open][data-positioned][data-side='left'],
851
+ [data-ui-entity-picker][data-part-positioner][data-open][data-positioned][data-side='right'] {
864
852
  animation-name: slotted-entity-picker-fade;
865
853
  }
866
854
  }
867
855
 
868
- [data-ui='entity-picker'][data-part='positioner'][data-detached] {
856
+ [data-ui-entity-picker][data-part-positioner][data-detached] {
869
857
  visibility: hidden;
870
858
  }
871
859
 
872
- [data-ui='entity-picker'][data-part='positioner'][data-width='anchor'] {
860
+ [data-ui-entity-picker][data-part-positioner][data-width='anchor'] {
873
861
  inline-size: var(--slotted-positioner-anchor-width, auto);
874
862
  }
875
863
 
876
- [data-ui='entity-picker'][data-part='positioner'][data-width='content'] {
864
+ [data-ui-entity-picker][data-part-positioner][data-width='content'] {
877
865
  inline-size: max-content;
878
866
  max-inline-size: min(var(--_measure), var(--slotted-positioner-available-width, 100vw));
879
867
  min-inline-size: var(--slotted-positioner-anchor-width, auto);
880
868
  }
881
869
 
882
- [data-ui='entity-picker'][data-part='positioner'][data-size='sm'] {
870
+ [data-ui-entity-picker][data-part-positioner][data-size='sm'] {
883
871
  --_item-inset: var(--slotted-control-padding-inline-sm, 0.625rem);
884
872
  --_item-height: var(--slotted-control-height-sm, 30px);
885
873
  --_content-font-size: var(--slotted-control-font-size-sm, 12px);
@@ -889,7 +877,7 @@
889
877
  --_media-size: var(--slotted-avatar-size-xs, 24px);
890
878
  }
891
879
 
892
- [data-ui='entity-picker'][data-part='positioner'][data-size='lg'] {
880
+ [data-ui-entity-picker][data-part-positioner][data-size='lg'] {
893
881
  --_item-inset: var(--slotted-control-padding-inline-lg, 1rem);
894
882
  --_item-height: var(--slotted-control-height-lg, 38px);
895
883
  --_content-font-size: var(--slotted-control-font-size-lg, 14px);
@@ -906,7 +894,7 @@
906
894
  * short fact, the check. A column no row fills is `auto` and takes nothing,
907
895
  * so a list with `media="none"` starts its words at the row's inset.
908
896
  */
909
- [data-ui='entity-picker'] > [data-part='content'] {
897
+ [data-ui-entity-picker] > [data-part-content] {
910
898
  background: var(--_surface);
911
899
  border: var(--_border-width) solid var(--_border-color);
912
900
  border-radius: var(--_content-radius);
@@ -938,19 +926,19 @@
938
926
  * same wait. They stay pressable — each is still a record the reader can
939
927
  * choose.
940
928
  */
941
- [data-ui='entity-picker']
942
- > [data-part='content'][data-loading]
943
- > :is([data-part='group'], [data-part='item']) {
929
+ [data-ui-entity-picker]
930
+ > [data-part-content][data-loading]
931
+ > :is([data-part-group], [data-part-item]) {
944
932
  opacity: 0.55;
945
933
  transition: opacity var(--slotted-control-transition-duration)
946
934
  var(--slotted-control-transition-easing);
947
935
  }
948
936
 
949
- [data-ui='entity-picker'] > [data-part='content'][data-loading] {
937
+ [data-ui-entity-picker] > [data-part-content][data-loading] {
950
938
  cursor: progress;
951
939
  }
952
940
 
953
- [data-ui='entity-picker'][data-part='positioner'] [data-part='group'] {
941
+ [data-ui-entity-picker][data-part-positioner] [data-part-group] {
954
942
  display: grid;
955
943
  grid-column: 1 / -1;
956
944
  grid-template-columns: subgrid;
@@ -958,11 +946,11 @@
958
946
 
959
947
  /* Two sections are separated by a step of air, not by a rule: the heading
960
948
  already says where one ends. */
961
- [data-ui='entity-picker'][data-part='positioner'] [data-part='group'] + [data-part='group'] {
949
+ [data-ui-entity-picker][data-part-positioner] [data-part-group] + [data-part-group] {
962
950
  margin-block-start: var(--slotted-space-2, 0.25rem);
963
951
  }
964
952
 
965
- [data-ui='entity-picker'][data-part='positioner'] [data-part='group-label'] {
953
+ [data-ui-entity-picker][data-part-positioner] [data-part-group-label] {
966
954
  color: var(--_muted);
967
955
  font-size: var(--_secondary-font-size);
968
956
  font-weight: var(--slotted-font-weight-semibold, 600);
@@ -974,7 +962,7 @@
974
962
 
975
963
  /* ── The record ───────────────────────────────────────────────────────── */
976
964
 
977
- [data-ui='entity-picker'][data-part='positioner'] [data-part='item'] {
965
+ [data-ui-entity-picker][data-part-positioner] [data-part-item] {
978
966
  /* The tracks keep their content's height and the pair is centred in the
979
967
  row's minimum, so a mark placed at the start of a track is on the
980
968
  words' line: stretched tracks put the words 3px under their glyph. */
@@ -1000,53 +988,51 @@
1000
988
  user-select: none;
1001
989
  }
1002
990
 
1003
- [data-ui='entity-picker'][data-part='positioner']
1004
- [data-part='item']:has(> [data-part='description']) {
991
+ [data-ui-entity-picker][data-part-positioner] [data-part-item]:has(> [data-part-description]) {
1005
992
  grid-template-rows: auto auto;
1006
993
  }
1007
994
 
1008
- [data-ui='entity-picker'][data-part='positioner'] [data-part='item'][data-current] {
995
+ [data-ui-entity-picker][data-part-positioner] [data-part-item][data-current] {
1009
996
  background-color: var(--_highlight);
1010
997
  /* A ring as well as a ground: nothing on this surface holds focus. */
1011
998
  box-shadow: inset 0 0 0 var(--slotted-border-width-thin, 1px)
1012
999
  var(--slotted-entity-picker-highlight-ring, var(--slotted-tone-accent-border));
1013
1000
  }
1014
1001
 
1015
- [data-ui='entity-picker'][data-part='positioner'] [data-part='item']:not([data-disabled]):active {
1002
+ [data-ui-entity-picker][data-part-positioner] [data-part-item]:not([data-disabled]):active {
1016
1003
  background-color: var(--_highlight-active);
1017
1004
  }
1018
1005
 
1019
- [data-ui='entity-picker'][data-part='positioner'] [data-part='item'][data-selected] {
1006
+ [data-ui-entity-picker][data-part-positioner] [data-part-item][data-selected] {
1020
1007
  color: var(--_selected-color);
1021
1008
  }
1022
1009
 
1023
1010
  /* Two chosen neighbours are one block (LB2, `selection-block.test.mjs`). */
1024
- [data-ui='entity-picker'][data-part='positioner']
1025
- [data-part='item'][data-selected]
1026
- + [data-part='item'][data-selected] {
1011
+ [data-ui-entity-picker][data-part-positioner]
1012
+ [data-part-item][data-selected]
1013
+ + [data-part-item][data-selected] {
1027
1014
  border-start-end-radius: 0;
1028
1015
  border-start-start-radius: 0;
1029
1016
  }
1030
1017
 
1031
- [data-ui='entity-picker'][data-part='positioner']
1032
- [data-part='item'][data-selected]:has(+ [data-part='item'][data-selected]) {
1018
+ [data-ui-entity-picker][data-part-positioner]
1019
+ [data-part-item][data-selected]:has(+ [data-part-item][data-selected]) {
1033
1020
  border-end-end-radius: 0;
1034
1021
  border-end-start-radius: 0;
1035
1022
  }
1036
1023
 
1037
- [data-ui='entity-picker'][data-part='positioner']
1038
- [data-part='item'][data-selected]
1039
- > [data-part='label'] {
1024
+ [data-ui-entity-picker][data-part-positioner]
1025
+ [data-part-item][data-selected]
1026
+ > [data-part-label] {
1040
1027
  font-weight: var(--slotted-font-weight-medium, 500);
1041
1028
  }
1042
1029
 
1043
- [data-ui='entity-picker'][data-part='positioner'] [data-part='item'][data-disabled] {
1030
+ [data-ui-entity-picker][data-part-positioner] [data-part-item][data-disabled] {
1044
1031
  color: var(--slotted-disabled-foreground, #64748b);
1045
1032
  cursor: not-allowed;
1046
1033
  }
1047
1034
 
1048
- [data-ui='entity-picker'][data-part='positioner']
1049
- [data-part='item'][data-disabled][data-current] {
1035
+ [data-ui-entity-picker][data-part-positioner] [data-part-item][data-disabled][data-current] {
1050
1036
  box-shadow: inset 0 0 0 var(--slotted-border-width-thin, 1px)
1051
1037
  var(--slotted-disabled-border, #cbd5e1);
1052
1038
  color: var(--slotted-disabled-foreground, #64748b);
@@ -1057,7 +1043,7 @@
1057
1043
  * one block — who, then which one — and a one-line record's face is centred
1058
1044
  * on its one line. The column's width is the face's, plus the gap.
1059
1045
  */
1060
- [data-ui='entity-picker'][data-part='positioner'] [data-part='media'] {
1046
+ [data-ui-entity-picker][data-part-positioner] [data-part-media] {
1061
1047
  --slotted-avatar-size-xs: var(--_media-size);
1062
1048
 
1063
1049
  align-self: center;
@@ -1068,12 +1054,12 @@
1068
1054
  margin-inline-end: var(--_column-gap);
1069
1055
  }
1070
1056
 
1071
- [data-ui='entity-picker'][data-part='positioner'] [data-part='media']:empty {
1057
+ [data-ui-entity-picker][data-part-positioner] [data-part-media]:empty {
1072
1058
  block-size: var(--_content-icon-size);
1073
1059
  inline-size: var(--_media-size);
1074
1060
  }
1075
1061
 
1076
- [data-ui='entity-picker'][data-part='positioner'] [data-part='label'] {
1062
+ [data-ui-entity-picker][data-part-positioner] [data-part-label] {
1077
1063
  -webkit-box-orient: vertical;
1078
1064
  display: -webkit-box;
1079
1065
  grid-column: 2;
@@ -1099,7 +1085,7 @@
1099
1085
  * text aligns to its own direction, and a Latin name stood at the left of
1100
1086
  * a right-to-left row, a column away from its face.
1101
1087
  */
1102
- [data-ui='entity-picker'][data-part='positioner'] [data-part='description'] {
1088
+ [data-ui-entity-picker][data-part-positioner] [data-part-description] {
1103
1089
  color: var(--_muted);
1104
1090
  font-size: var(--_secondary-font-size);
1105
1091
  /* Under the short fact too: that column holds nothing on this line. */
@@ -1115,9 +1101,9 @@
1115
1101
  white-space: nowrap;
1116
1102
  }
1117
1103
 
1118
- [data-ui='entity-picker'][data-part='positioner']
1119
- [data-part='item'][data-disabled]
1120
- > [data-part='description'] {
1104
+ [data-ui-entity-picker][data-part-positioner]
1105
+ [data-part-item][data-disabled]
1106
+ > [data-part-description] {
1121
1107
  color: inherit;
1122
1108
  }
1123
1109
 
@@ -1126,7 +1112,7 @@
1126
1112
  * the name's line and not centred on the record, because it is read with
1127
1113
  * the name ("Ana Silva · Admin"), and it never wraps.
1128
1114
  */
1129
- [data-ui='entity-picker'][data-part='positioner'] [data-part='meta'] {
1115
+ [data-ui-entity-picker][data-part-positioner] [data-part-meta] {
1130
1116
  align-self: start;
1131
1117
  color: var(--_muted);
1132
1118
  font-size: var(--_secondary-font-size);
@@ -1148,7 +1134,7 @@
1148
1134
  * tall with the glyph centred in it, as `combobox` draws it. Centred on a
1149
1135
  * two-line record it stood nine pixels above the name (`audit.mjs`).
1150
1136
  */
1151
- [data-ui='entity-picker'][data-part='positioner'] [data-part='indicator'] {
1137
+ [data-ui-entity-picker][data-part-positioner] [data-part-indicator] {
1152
1138
  --slotted-icon-size: var(--_content-icon-size);
1153
1139
 
1154
1140
  align-items: center;
@@ -1164,16 +1150,16 @@
1164
1150
  transition: opacity var(--slotted-duration-short) var(--slotted-easing-standard);
1165
1151
  }
1166
1152
 
1167
- [data-ui='entity-picker'][data-part='positioner']
1168
- [data-part='item'][data-selected]
1169
- > [data-part='indicator'] {
1153
+ [data-ui-entity-picker][data-part-positioner]
1154
+ [data-part-item][data-selected]
1155
+ > [data-part-indicator] {
1170
1156
  opacity: 1;
1171
1157
  }
1172
1158
 
1173
1159
  /* A record with no short fact gives its column to the name. */
1174
- [data-ui='entity-picker'][data-part='positioner']
1175
- [data-part='item']:not(:has(> [data-part='meta']))
1176
- > [data-part='label'] {
1160
+ [data-ui-entity-picker][data-part-positioner]
1161
+ [data-part-item]:not(:has(> [data-part-meta]))
1162
+ > [data-part-label] {
1177
1163
  grid-column: 2 / 4;
1178
1164
  }
1179
1165
 
@@ -1182,9 +1168,9 @@
1182
1168
  * it; the check and the short fact are centred with the name there, where
1183
1169
  * on a two-line record they stand on the name's line.
1184
1170
  */
1185
- [data-ui='entity-picker'][data-part='positioner']
1186
- [data-part='item']:not(:has(> [data-part='description']))
1187
- > :is([data-part='indicator'], [data-part='meta']) {
1171
+ [data-ui-entity-picker][data-part-positioner]
1172
+ [data-part-item]:not(:has(> [data-part-description]))
1173
+ > :is([data-part-indicator], [data-part-meta]) {
1188
1174
  align-self: center;
1189
1175
  }
1190
1176
 
@@ -1195,14 +1181,13 @@
1195
1181
  * column so its words start where every name starts: the plus to create,
1196
1182
  * the turning arrow to search again, each a `Glyph` the binding draws.
1197
1183
  */
1198
- [data-ui='entity-picker'][data-part='positioner']
1199
- [data-part='item']:is([data-create], [data-retry]) {
1184
+ [data-ui-entity-picker][data-part-positioner] [data-part-item]:is([data-create], [data-retry]) {
1200
1185
  color: var(--slotted-entity-picker-offer-color, var(--slotted-tone-accent-text));
1201
1186
  }
1202
1187
 
1203
- [data-ui='entity-picker'][data-part='positioner']
1204
- [data-part='item']:is([data-create], [data-retry])
1205
- > [data-part='media'] {
1188
+ [data-ui-entity-picker][data-part-positioner]
1189
+ [data-part-item]:is([data-create], [data-retry])
1190
+ > [data-part-media] {
1206
1191
  --slotted-icon-size: var(--_content-icon-size);
1207
1192
 
1208
1193
  align-items: center;
@@ -1216,8 +1201,8 @@
1216
1201
 
1217
1202
  /* ── Error, empty, status ─────────────────────────────────────────────── */
1218
1203
 
1219
- [data-ui='entity-picker'][data-part='positioner']
1220
- :is([data-part='empty'], [data-part='status'], [data-part='error']) {
1204
+ [data-ui-entity-picker][data-part-positioner]
1205
+ :is([data-part-empty], [data-part-status], [data-part-error]) {
1221
1206
  color: var(--_muted);
1222
1207
  grid-column: 1 / -1;
1223
1208
  min-inline-size: min(12rem, 100%);
@@ -1228,7 +1213,7 @@
1228
1213
  unicode-bidi: plaintext;
1229
1214
  }
1230
1215
 
1231
- [data-ui='entity-picker'][data-part='positioner'] [data-part='status']:empty {
1216
+ [data-ui-entity-picker][data-part-positioner] [data-part-status]:empty {
1232
1217
  display: none;
1233
1218
  }
1234
1219
 
@@ -1239,7 +1224,7 @@
1239
1224
  * option. It stands on the row's inset like every row, not centred like
1240
1225
  * the empty sentence: it is the first of two rows that belong together.
1241
1226
  */
1242
- [data-ui='entity-picker'][data-part='positioner'] [data-part='error'] {
1227
+ [data-ui-entity-picker][data-part-positioner] [data-part-error] {
1243
1228
  align-items: center;
1244
1229
  color: var(--_text);
1245
1230
  display: flex;
@@ -1248,7 +1233,7 @@
1248
1233
  text-align: start;
1249
1234
  }
1250
1235
 
1251
- [data-ui='entity-picker'][data-part='positioner'] [data-part='error'] > [data-ui='icon'] {
1236
+ [data-ui-entity-picker][data-part-positioner] [data-part-error] > [data-ui-icon] {
1252
1237
  --slotted-icon-size: var(--_content-icon-size);
1253
1238
 
1254
1239
  color: var(--slotted-entity-picker-error-color, var(--slotted-tone-danger-text));
@@ -1264,16 +1249,13 @@
1264
1249
  * same inset, column gap and height, so the answer lands in the boxes that
1265
1250
  * waited for it. The lengths differ the way names do.
1266
1251
  */
1267
- [data-ui='entity-picker'][data-part='positioner']
1268
- :is([data-part='placeholder'], [data-part='more']) {
1252
+ [data-ui-entity-picker][data-part-positioner] :is([data-part-placeholder], [data-part-more]) {
1269
1253
  display: grid;
1270
1254
  grid-column: 1 / -1;
1271
1255
  grid-template-columns: subgrid;
1272
1256
  }
1273
1257
 
1274
- [data-ui='entity-picker'][data-part='positioner']
1275
- :is([data-part='placeholder'], [data-part='more'])
1276
- > * {
1258
+ [data-ui-entity-picker][data-part-positioner] :is([data-part-placeholder], [data-part-more]) > * {
1277
1259
  align-items: center;
1278
1260
  display: grid;
1279
1261
  grid-column: 1 / -1;
@@ -1285,8 +1267,8 @@
1285
1267
  padding-inline: var(--_item-inset);
1286
1268
  }
1287
1269
 
1288
- [data-ui='entity-picker'][data-part='positioner']
1289
- :is([data-part='placeholder'], [data-part='more'])
1270
+ [data-ui-entity-picker][data-part-positioner]
1271
+ :is([data-part-placeholder], [data-part-more])
1290
1272
  > *
1291
1273
  > :first-child {
1292
1274
  --slotted-skeleton-size: var(--_media-size);
@@ -1297,8 +1279,8 @@
1297
1279
  }
1298
1280
 
1299
1281
  /* Each line stands in the line box of the text it holds the place of. */
1300
- [data-ui='entity-picker'][data-part='positioner']
1301
- :is([data-part='placeholder'], [data-part='more'])
1282
+ [data-ui-entity-picker][data-part-positioner]
1283
+ :is([data-part-placeholder], [data-part-more])
1302
1284
  > *
1303
1285
  > :nth-child(2) {
1304
1286
  --slotted-skeleton-inline-size: 62%;
@@ -1308,8 +1290,8 @@
1308
1290
  margin-block: calc((1lh - 1cap) / 2);
1309
1291
  }
1310
1292
 
1311
- [data-ui='entity-picker'][data-part='positioner']
1312
- :is([data-part='placeholder'], [data-part='more'])
1293
+ [data-ui-entity-picker][data-part-positioner]
1294
+ :is([data-part-placeholder], [data-part-more])
1313
1295
  > *
1314
1296
  > :nth-child(3) {
1315
1297
  --slotted-skeleton-inline-size: 44%;
@@ -1321,29 +1303,29 @@
1321
1303
  margin-block: calc((1lh - 1cap) / 2);
1322
1304
  }
1323
1305
 
1324
- [data-ui='entity-picker'][data-part='positioner']
1325
- [data-part='placeholder']
1306
+ [data-ui-entity-picker][data-part-positioner]
1307
+ [data-part-placeholder]
1326
1308
  > :nth-child(2)
1327
1309
  > :nth-child(2) {
1328
1310
  --slotted-skeleton-inline-size: 48%;
1329
1311
  }
1330
1312
 
1331
- [data-ui='entity-picker'][data-part='positioner']
1332
- [data-part='placeholder']
1313
+ [data-ui-entity-picker][data-part-positioner]
1314
+ [data-part-placeholder]
1333
1315
  > :nth-child(2)
1334
1316
  > :nth-child(3) {
1335
1317
  --slotted-skeleton-inline-size: 58%;
1336
1318
  }
1337
1319
 
1338
- [data-ui='entity-picker'][data-part='positioner']
1339
- [data-part='placeholder']
1320
+ [data-ui-entity-picker][data-part-positioner]
1321
+ [data-part-placeholder]
1340
1322
  > :nth-child(3)
1341
1323
  > :nth-child(2) {
1342
1324
  --slotted-skeleton-inline-size: 70%;
1343
1325
  }
1344
1326
 
1345
- [data-ui='entity-picker'][data-part='positioner']
1346
- [data-part='placeholder']
1327
+ [data-ui-entity-picker][data-part-positioner]
1328
+ [data-part-placeholder]
1347
1329
  > :nth-child(3)
1348
1330
  > :nth-child(3) {
1349
1331
  --slotted-skeleton-inline-size: 36%;
@@ -1352,14 +1334,13 @@
1352
1334
  /* ── Forced colours ───────────────────────────────────────────────────── */
1353
1335
 
1354
1336
  @media (forced-colors: active) {
1355
- [data-ui='entity-picker'][data-part='positioner'] [data-part='item'][data-current] {
1337
+ [data-ui-entity-picker][data-part-positioner] [data-part-item][data-current] {
1356
1338
  background-color: Highlight;
1357
1339
  color: HighlightText;
1358
1340
  forced-color-adjust: none;
1359
1341
  }
1360
1342
 
1361
- [data-ui='entity-picker'][data-part='positioner']
1362
- [data-part='item'][data-disabled][data-current] {
1343
+ [data-ui-entity-picker][data-part-positioner] [data-part-item][data-disabled][data-current] {
1363
1344
  background-color: Highlight;
1364
1345
  color: GrayText;
1365
1346
  }