@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.
- package/package.json +1 -1
- package/src/accordion/accordion.css +10 -10
- package/src/action-bar/action-bar.css +31 -32
- package/src/action-sheet/action-sheet.css +36 -36
- package/src/alert/alert.css +35 -35
- package/src/app-shell/app-shell.css +280 -299
- package/src/aspect-ratio/aspect-ratio.css +9 -9
- package/src/attachment/attachment.css +91 -99
- package/src/avatar/avatar.css +41 -41
- package/src/avatar-group/avatar-group.css +21 -22
- package/src/badge/badge.css +37 -37
- package/src/breadcrumb/breadcrumb.css +37 -37
- package/src/button/button.css +88 -69
- package/src/button-group/button-group.css +69 -73
- package/src/calendar/calendar.css +93 -103
- package/src/card/card.css +54 -61
- package/src/carousel/carousel.css +150 -161
- package/src/cascader/cascader.css +147 -151
- package/src/chart/chart.css +225 -240
- package/src/checkbox/checkbox.css +119 -124
- package/src/checkbox-group/checkbox-group.css +7 -7
- package/src/code-block/code-block.css +81 -85
- package/src/collapsible/collapsible.css +69 -76
- package/src/color-picker/color-picker.css +83 -91
- package/src/column-manager/column-manager.css +106 -114
- package/src/combobox/combobox.css +99 -101
- package/src/command-palette/command-palette.css +84 -90
- package/src/container/container.css +24 -24
- package/src/context-menu/context-menu.css +8 -8
- package/src/currency-field/currency-field.css +99 -104
- package/src/dashboard-grid/dashboard-grid.css +104 -107
- package/src/data-grid/data-grid.css +458 -456
- package/src/data-grid/data-grid.tokens.json +2 -0
- package/src/data-list/data-list.css +67 -69
- package/src/date-field/date-field.css +50 -50
- package/src/date-picker/date-picker.css +40 -42
- package/src/date-range-picker/date-range-picker.css +114 -118
- package/src/datetime-field/datetime-field.css +73 -78
- package/src/datetime-picker/datetime-picker.css +61 -63
- package/src/datetime-range-picker/datetime-range-picker.css +149 -156
- package/src/description-list/description-list.css +61 -64
- package/src/detail-panel/detail-panel.css +70 -70
- package/src/dialog/dialog.css +312 -148
- package/src/divider/divider.css +18 -18
- package/src/drawer/drawer.css +186 -209
- package/src/entity-picker/entity-picker.css +220 -239
- package/src/event-calendar/event-calendar.css +343 -385
- package/src/field/field.css +74 -78
- package/src/field-group/field-group.css +22 -25
- package/src/filter-bar/filter-bar.css +193 -209
- package/src/form/form.css +21 -24
- package/src/fullscreen/fullscreen.css +24 -25
- package/src/grid/grid.css +28 -28
- package/src/highlight/highlight.css +6 -6
- package/src/hover-card/hover-card.css +6 -6
- package/src/icon/icon.css +15 -15
- package/src/image/image.css +39 -39
- package/src/import-export-center/import-export-center.css +135 -156
- package/src/inline/inline.css +27 -27
- package/src/inline-message/inline-message.css +28 -28
- package/src/kbd/kbd.css +26 -26
- package/src/link/link.css +15 -15
- package/src/list/list.css +20 -20
- package/src/list-item/list-item.css +66 -66
- package/src/listbox/listbox.css +56 -59
- package/src/loading-overlay/loading-overlay.css +75 -92
- package/src/markdown/markdown.css +17 -17
- package/src/menu/menu.css +63 -65
- package/src/menubar/menubar.css +13 -13
- package/src/message/message.css +174 -202
- package/src/message-scroller/message-scroller.css +41 -42
- package/src/multi-select/multi-select.css +131 -137
- package/src/navigation-menu/navigation-menu.css +167 -188
- package/src/notification-center/notification-center.css +134 -148
- package/src/number-field/number-field.css +76 -81
- package/src/otp-input/otp-input.css +48 -48
- package/src/page/page.css +23 -23
- package/src/page-header/page-header.css +219 -280
- package/src/pagination/pagination.css +68 -72
- package/src/popover/popover.css +40 -49
- package/src/progress-indicator/progress-indicator.css +85 -90
- package/src/prompt-composer/prompt-composer.css +94 -99
- package/src/prose/prose.css +71 -75
- package/src/radio-group/radio-group.css +98 -103
- package/src/rating/rating.css +132 -132
- package/src/result-state/result-state.css +74 -77
- package/src/saved-views/saved-views.css +41 -47
- package/src/scroll-area/scroll-area.css +32 -35
- package/src/section/section.css +16 -16
- package/src/segmented-control/segmented-control.css +77 -79
- package/src/select/select.css +113 -115
- package/src/side-navigation/side-navigation.css +170 -180
- package/src/skeleton/skeleton.css +47 -48
- package/src/slider/slider.css +86 -88
- package/src/sparkline/sparkline.css +32 -32
- package/src/spinner/spinner.css +4 -4
- package/src/split-button/split-button.css +26 -31
- package/src/splitter/splitter.css +35 -35
- package/src/stack/stack.css +24 -24
- package/src/stat-card/stat-card.css +102 -103
- package/src/status-indicator/status-indicator.css +28 -28
- package/src/stepper/stepper.css +58 -62
- package/src/switch/switch.css +86 -92
- package/src/table/table.css +189 -198
- package/src/table-of-contents/table-of-contents.css +51 -54
- package/src/tabs/tabs.css +157 -172
- package/src/tag/tag.css +67 -71
- package/src/tags-input/tags-input.css +124 -74
- package/src/tags-input/tags-input.tokens.json +6 -1
- package/src/text-field/text-field.css +108 -126
- package/src/textarea/textarea.css +26 -26
- package/src/time-field/time-field.css +67 -67
- package/src/time-picker/time-picker.css +56 -58
- package/src/time-range-picker/time-range-picker.css +126 -133
- package/src/timeline/timeline.css +244 -266
- package/src/toast/toast.css +81 -90
- package/src/toggle/toggle.css +29 -33
- package/src/toggle-group/toggle-group.css +67 -71
- package/src/toolbar/toolbar.css +30 -35
- package/src/tooltip/tooltip.css +26 -26
- package/src/top-navigation/top-navigation.css +243 -259
- package/src/tour/tour.css +51 -60
- package/src/transfer/transfer.css +160 -164
- package/src/tree/tree.css +103 -111
- package/src/typography/typography.css +36 -36
- package/src/upload/upload.css +224 -224
- package/src/visually-hidden/visually-hidden.css +1 -1
- package/src/wizard/wizard.css +185 -197
package/src/select/select.css
CHANGED
|
@@ -74,7 +74,7 @@
|
|
|
74
74
|
|
|
75
75
|
/* ── The control ──────────────────────────────────────────────────────── */
|
|
76
76
|
|
|
77
|
-
[data-ui
|
|
77
|
+
[data-ui-select][data-part-root] {
|
|
78
78
|
/**
|
|
79
79
|
* Type, height, inline padding, gap and glyph size come from the control
|
|
80
80
|
* scales — the only ones the theme restates per density — so a select in a
|
|
@@ -144,7 +144,7 @@
|
|
|
144
144
|
}
|
|
145
145
|
|
|
146
146
|
/* And the clear button's own lane, before the chevron's, when there is one. */
|
|
147
|
-
[data-ui
|
|
147
|
+
[data-ui-select][data-part-root]:has(> [data-part-clear]) {
|
|
148
148
|
grid-template-columns: minmax(0, 1fr) auto auto;
|
|
149
149
|
}
|
|
150
150
|
|
|
@@ -153,7 +153,7 @@
|
|
|
153
153
|
* value, which is what a filter beside a table needs and what a field never
|
|
154
154
|
* does — hence the default the contract states, `fullWidth: true`.
|
|
155
155
|
*/
|
|
156
|
-
[data-ui
|
|
156
|
+
[data-ui-select][data-part-root]:not([data-full-width]) {
|
|
157
157
|
inline-size: auto;
|
|
158
158
|
}
|
|
159
159
|
|
|
@@ -177,7 +177,7 @@
|
|
|
177
177
|
* the chevron still lands on the button that opens the popup — which is why
|
|
178
178
|
* the chevron can be inert and the arrangement costs nothing.
|
|
179
179
|
*/
|
|
180
|
-
[data-ui
|
|
180
|
+
[data-ui-select] > [data-part-trigger] {
|
|
181
181
|
align-items: center;
|
|
182
182
|
appearance: none;
|
|
183
183
|
background-color: transparent;
|
|
@@ -218,7 +218,7 @@
|
|
|
218
218
|
}
|
|
219
219
|
|
|
220
220
|
/* And the clear button's own box, plus a second gap, when there is one. */
|
|
221
|
-
[data-ui
|
|
221
|
+
[data-ui-select][data-part-root]:has(> [data-part-clear]) > [data-part-trigger] {
|
|
222
222
|
padding-inline-end: calc(
|
|
223
223
|
var(--_padding-inline) + var(--_icon-size) + var(--_gap) + var(--_action-size) + var(--_gap)
|
|
224
224
|
);
|
|
@@ -229,7 +229,7 @@
|
|
|
229
229
|
* control's height as the reader chose, and a form that reflows on selection
|
|
230
230
|
* is a form that moves under the pointer.
|
|
231
231
|
*/
|
|
232
|
-
[data-ui
|
|
232
|
+
[data-ui-select] [data-part-value] {
|
|
233
233
|
flex: 1 1 auto;
|
|
234
234
|
min-inline-size: 0;
|
|
235
235
|
overflow: hidden;
|
|
@@ -241,7 +241,7 @@
|
|
|
241
241
|
* Nothing chosen yet. The same weight the reader will see once they choose,
|
|
242
242
|
* one step quieter, so the control does not change shape when it fills.
|
|
243
243
|
*/
|
|
244
|
-
[data-ui
|
|
244
|
+
[data-ui-select] [data-part-value][data-placeholder] {
|
|
245
245
|
color: var(--slotted-select-placeholder-color, var(--slotted-text-muted, GrayText));
|
|
246
246
|
}
|
|
247
247
|
|
|
@@ -252,7 +252,7 @@
|
|
|
252
252
|
* the same face and marked as unresolved for a stylesheet that wants to say
|
|
253
253
|
* more.
|
|
254
254
|
*/
|
|
255
|
-
[data-ui
|
|
255
|
+
[data-ui-select] [data-part-value][data-unmatched] {
|
|
256
256
|
font-variant-numeric: tabular-nums;
|
|
257
257
|
}
|
|
258
258
|
|
|
@@ -280,7 +280,7 @@
|
|
|
280
280
|
* trigger spanning underneath, so the frame still opens the popup everywhere
|
|
281
281
|
* a chip is not.
|
|
282
282
|
*/
|
|
283
|
-
[data-ui
|
|
283
|
+
[data-ui-select][data-part-root] > [data-part-tags] {
|
|
284
284
|
align-items: center;
|
|
285
285
|
display: flex;
|
|
286
286
|
gap: var(--slotted-space-2, 0.25rem);
|
|
@@ -308,7 +308,7 @@
|
|
|
308
308
|
pointer-events: none;
|
|
309
309
|
}
|
|
310
310
|
|
|
311
|
-
[data-ui
|
|
311
|
+
[data-ui-select] > [data-part-tags] > * {
|
|
312
312
|
/* Each chip takes its own presses back, and stands above the trigger that
|
|
313
313
|
spans the lane underneath it. */
|
|
314
314
|
pointer-events: auto;
|
|
@@ -321,7 +321,7 @@
|
|
|
321
321
|
* to be a count, and `createCollapse` can measure it the way it measures
|
|
322
322
|
* every other unit.
|
|
323
323
|
*/
|
|
324
|
-
[data-ui
|
|
324
|
+
[data-ui-select] > [data-part-tags] > [data-overflow] {
|
|
325
325
|
flex: none;
|
|
326
326
|
}
|
|
327
327
|
|
|
@@ -332,7 +332,7 @@
|
|
|
332
332
|
* shown: a button whose accessible name disappeared when the frame grew is a
|
|
333
333
|
* button that changes what it is called when the window is resized.
|
|
334
334
|
*/
|
|
335
|
-
[data-ui
|
|
335
|
+
[data-ui-select] [data-part-summary] {
|
|
336
336
|
display: block;
|
|
337
337
|
overflow: hidden;
|
|
338
338
|
text-overflow: ellipsis;
|
|
@@ -343,7 +343,7 @@
|
|
|
343
343
|
white-space: nowrap;
|
|
344
344
|
}
|
|
345
345
|
|
|
346
|
-
[data-ui
|
|
346
|
+
[data-ui-select][data-part-root]:not([data-narrow]) [data-part-summary] {
|
|
347
347
|
block-size: 1px;
|
|
348
348
|
clip-path: inset(50%);
|
|
349
349
|
inline-size: 1px;
|
|
@@ -351,7 +351,7 @@
|
|
|
351
351
|
white-space: nowrap;
|
|
352
352
|
}
|
|
353
353
|
|
|
354
|
-
[data-ui
|
|
354
|
+
[data-ui-select][data-part-root][data-narrow] > [data-part-tags] {
|
|
355
355
|
display: none;
|
|
356
356
|
}
|
|
357
357
|
|
|
@@ -361,7 +361,7 @@
|
|
|
361
361
|
* the popup opens: the one movement in the control, and the only thing on the
|
|
362
362
|
* closed control that says it opens at all.
|
|
363
363
|
*/
|
|
364
|
-
[data-ui
|
|
364
|
+
[data-ui-select] > [data-part-arrow] {
|
|
365
365
|
--slotted-icon-size: var(--_icon-size);
|
|
366
366
|
|
|
367
367
|
align-items: center;
|
|
@@ -378,12 +378,12 @@
|
|
|
378
378
|
pointer-events: none;
|
|
379
379
|
}
|
|
380
380
|
|
|
381
|
-
[data-ui
|
|
381
|
+
[data-ui-select] > [data-part-arrow] > [data-ui-icon] {
|
|
382
382
|
transition: rotate var(--slotted-control-transition-duration)
|
|
383
383
|
var(--slotted-control-transition-easing);
|
|
384
384
|
}
|
|
385
385
|
|
|
386
|
-
[data-ui
|
|
386
|
+
[data-ui-select][data-open] > [data-part-arrow] > [data-ui-icon] {
|
|
387
387
|
rotate: 180deg;
|
|
388
388
|
}
|
|
389
389
|
|
|
@@ -398,7 +398,7 @@
|
|
|
398
398
|
* All this rule does is stand it where the chevron stood and give it the
|
|
399
399
|
* chevron's size and ink, through the size token the shared sheet reads.
|
|
400
400
|
*/
|
|
401
|
-
[data-ui
|
|
401
|
+
[data-ui-select] > [data-part-busy] {
|
|
402
402
|
--slotted-spinner-size: var(--_icon-size);
|
|
403
403
|
|
|
404
404
|
color: var(--slotted-select-arrow-color, var(--slotted-text-muted, GrayText));
|
|
@@ -417,7 +417,7 @@
|
|
|
417
417
|
* *glyph* keeps the rhythm the value begins with. `text-field`'s arithmetic,
|
|
418
418
|
* stated in the terms a track states it.
|
|
419
419
|
*/
|
|
420
|
-
[data-ui
|
|
420
|
+
[data-ui-select] > [data-part-clear] {
|
|
421
421
|
align-items: center;
|
|
422
422
|
appearance: none;
|
|
423
423
|
background-color: transparent;
|
|
@@ -451,7 +451,7 @@
|
|
|
451
451
|
* it can also be 24. This grows the target back in both axes and leaves a
|
|
452
452
|
* larger one alone.
|
|
453
453
|
*/
|
|
454
|
-
[data-ui
|
|
454
|
+
[data-ui-select] > [data-part-clear]::after {
|
|
455
455
|
content: '';
|
|
456
456
|
inset: min(0px, calc((100% - var(--slotted-target-min, 24px)) / 2));
|
|
457
457
|
position: absolute;
|
|
@@ -462,14 +462,14 @@
|
|
|
462
462
|
the hit area above grows to 44 pixels around them. It does not reach into
|
|
463
463
|
the chevron's lane after it, which is the trigger's to answer. */
|
|
464
464
|
@media (pointer: coarse) {
|
|
465
|
-
[data-ui
|
|
465
|
+
[data-ui-select] > [data-part-clear]::after {
|
|
466
466
|
inset: min(0px, calc((100% - var(--slotted-target-comfortable, 44px)) / 2));
|
|
467
467
|
inset-inline-end: 0;
|
|
468
468
|
}
|
|
469
469
|
}
|
|
470
470
|
|
|
471
471
|
/* The cross is a `Glyph` the binding draws, at the chevron's size. */
|
|
472
|
-
[data-ui
|
|
472
|
+
[data-ui-select] > [data-part-clear] {
|
|
473
473
|
--slotted-icon-size: var(--_icon-size);
|
|
474
474
|
}
|
|
475
475
|
|
|
@@ -481,7 +481,7 @@
|
|
|
481
481
|
* and a control disagreeing about one row.
|
|
482
482
|
*/
|
|
483
483
|
|
|
484
|
-
[data-ui
|
|
484
|
+
[data-ui-select][data-part-root][data-size='sm'] {
|
|
485
485
|
--_font-size: var(--slotted-control-font-size-sm, 12px);
|
|
486
486
|
--_height: var(--slotted-control-height-sm, 30px);
|
|
487
487
|
--_padding-inline: var(--slotted-control-padding-inline-sm, 10px);
|
|
@@ -490,7 +490,7 @@
|
|
|
490
490
|
--_inner-size: var(--slotted-control-inner-size-sm, 22px);
|
|
491
491
|
}
|
|
492
492
|
|
|
493
|
-
[data-ui
|
|
493
|
+
[data-ui-select][data-part-root][data-size='md'] {
|
|
494
494
|
--_font-size: var(--slotted-control-font-size-md, 13px);
|
|
495
495
|
--_height: var(--slotted-control-height-md, 34px);
|
|
496
496
|
--_padding-inline: var(--slotted-control-padding-inline-md, 13px);
|
|
@@ -499,7 +499,7 @@
|
|
|
499
499
|
--_inner-size: var(--slotted-control-inner-size-md, 24px);
|
|
500
500
|
}
|
|
501
501
|
|
|
502
|
-
[data-ui
|
|
502
|
+
[data-ui-select][data-part-root][data-size='lg'] {
|
|
503
503
|
--_font-size: var(--slotted-control-font-size-lg, 14px);
|
|
504
504
|
--_height: var(--slotted-control-height-lg, 38px);
|
|
505
505
|
--_padding-inline: var(--slotted-control-padding-inline-lg, 16px);
|
|
@@ -517,7 +517,7 @@
|
|
|
517
517
|
* does not reflow when the pointer crosses it.
|
|
518
518
|
*/
|
|
519
519
|
|
|
520
|
-
[data-ui
|
|
520
|
+
[data-ui-select][data-part-root][data-variant='subtle'] {
|
|
521
521
|
background-color: var(
|
|
522
522
|
--slotted-select-subtle-background,
|
|
523
523
|
var(--slotted-surface-sunken, Canvas)
|
|
@@ -531,7 +531,7 @@
|
|
|
531
531
|
/* No edge, no lift, no ground and no corner of its own: the cell it sits in
|
|
532
532
|
is the box, the row is the ground, a cell has no corner, and the resting
|
|
533
533
|
shadow would draw the cell where there is none. */
|
|
534
|
-
[data-ui
|
|
534
|
+
[data-ui-select][data-part-root][data-variant='plain'] {
|
|
535
535
|
background-color: transparent;
|
|
536
536
|
border-color: transparent;
|
|
537
537
|
border-radius: var(--slotted-radius-none, 0px);
|
|
@@ -544,7 +544,7 @@
|
|
|
544
544
|
* its only edge exactly where an edge matters most.
|
|
545
545
|
*/
|
|
546
546
|
@media (forced-colors: active) {
|
|
547
|
-
[data-ui
|
|
547
|
+
[data-ui-select][data-part-root][data-variant='plain'] {
|
|
548
548
|
border-color: ButtonBorder;
|
|
549
549
|
}
|
|
550
550
|
}
|
|
@@ -555,13 +555,13 @@
|
|
|
555
555
|
* it can meet, which is the order `STATE_PRECEDENCE` sets.
|
|
556
556
|
*/
|
|
557
557
|
|
|
558
|
-
[data-ui
|
|
558
|
+
[data-ui-select][data-part-root]:hover:not([data-disabled]):not([data-readonly]):not(
|
|
559
559
|
[data-invalid]
|
|
560
560
|
) {
|
|
561
561
|
border-color: var(--slotted-select-hover-border-color, var(--slotted-tone-accent-border));
|
|
562
562
|
}
|
|
563
563
|
|
|
564
|
-
[data-ui
|
|
564
|
+
[data-ui-select][data-part-root][data-variant='subtle']:hover:not([data-disabled]):not(
|
|
565
565
|
[data-readonly]
|
|
566
566
|
):not([data-invalid]) {
|
|
567
567
|
background-color: var(
|
|
@@ -570,7 +570,7 @@
|
|
|
570
570
|
);
|
|
571
571
|
}
|
|
572
572
|
|
|
573
|
-
[data-ui
|
|
573
|
+
[data-ui-select][data-part-root][data-variant='plain']:hover:not([data-disabled]):not(
|
|
574
574
|
[data-readonly]
|
|
575
575
|
):not([data-invalid]) {
|
|
576
576
|
background-color: var(
|
|
@@ -587,7 +587,7 @@
|
|
|
587
587
|
* press, which is exactly right here: a reader who pressed the control can
|
|
588
588
|
* see where they pressed, and the popup is already open under it.
|
|
589
589
|
*/
|
|
590
|
-
[data-ui
|
|
590
|
+
[data-ui-select][data-part-root]:has(> [data-part-trigger]:focus-visible) {
|
|
591
591
|
/* The resting shadow, recoloured: the geometry is the foundation's and the
|
|
592
592
|
ink is the ring's, so the lift and the outline are one colour. */
|
|
593
593
|
box-shadow: var(--slotted-control-shadow-focus-geometry, 0 1px 4px -1px)
|
|
@@ -603,9 +603,7 @@
|
|
|
603
603
|
* shadow that appears only under focus is a cell that changes size when it
|
|
604
604
|
* is used.
|
|
605
605
|
*/
|
|
606
|
-
[data-ui
|
|
607
|
-
> [data-part='trigger']:focus-visible
|
|
608
|
-
) {
|
|
606
|
+
[data-ui-select][data-part-root][data-variant='plain']:has(> [data-part-trigger]:focus-visible) {
|
|
609
607
|
box-shadow: none;
|
|
610
608
|
outline-offset: calc(var(--slotted-focus-ring-offset, 2px) * -1);
|
|
611
609
|
}
|
|
@@ -615,7 +613,7 @@
|
|
|
615
613
|
* it. A popup hanging off a control with a resting border reads as two
|
|
616
614
|
* elements that happen to be adjacent.
|
|
617
615
|
*/
|
|
618
|
-
[data-ui
|
|
616
|
+
[data-ui-select][data-part-root][data-open]:not([data-disabled]) {
|
|
619
617
|
border-color: var(--slotted-select-open-border-color, var(--slotted-tone-accent-border));
|
|
620
618
|
}
|
|
621
619
|
|
|
@@ -626,7 +624,7 @@
|
|
|
626
624
|
* reads `--slotted-focus-ring-color`, so pointing that one name at the
|
|
627
625
|
* invalid colour moves the outline and the shadow together.
|
|
628
626
|
*/
|
|
629
|
-
[data-ui
|
|
627
|
+
[data-ui-select][data-part-root][data-invalid] {
|
|
630
628
|
--slotted-focus-ring-color: var(
|
|
631
629
|
--slotted-select-invalid-focus-ring-color,
|
|
632
630
|
var(--slotted-focus-ring-color-invalid, Highlight)
|
|
@@ -651,15 +649,15 @@
|
|
|
651
649
|
box-shadow: var(--_invalid-edge);
|
|
652
650
|
}
|
|
653
651
|
|
|
654
|
-
[data-ui
|
|
652
|
+
[data-ui-select][data-part-root][data-invalid]:has(> [data-part-trigger]:focus-visible) {
|
|
655
653
|
box-shadow:
|
|
656
654
|
var(--_invalid-edge),
|
|
657
655
|
var(--slotted-control-shadow-focus-geometry, 0 1px 4px -1px)
|
|
658
656
|
var(--slotted-focus-ring-color, Highlight);
|
|
659
657
|
}
|
|
660
658
|
|
|
661
|
-
[data-ui
|
|
662
|
-
> [data-part
|
|
659
|
+
[data-ui-select][data-part-root][data-variant='plain'][data-invalid]:has(
|
|
660
|
+
> [data-part-trigger]:focus-visible
|
|
663
661
|
) {
|
|
664
662
|
/* The ring lies inside the box here, over the border and an edge as wide as
|
|
665
663
|
it; the edge reaches past the ring. */
|
|
@@ -677,21 +675,21 @@
|
|
|
677
675
|
* control draws its ring double, which a valid ring is not.
|
|
678
676
|
*/
|
|
679
677
|
@media (forced-colors: active) {
|
|
680
|
-
[data-ui
|
|
678
|
+
[data-ui-select][data-part-root][data-invalid] {
|
|
681
679
|
outline: var(--_invalid-edge-width) solid CanvasText;
|
|
682
680
|
outline-offset: calc(
|
|
683
681
|
-1 * (var(--slotted-control-border-width, 1px) + var(--_invalid-edge-width))
|
|
684
682
|
);
|
|
685
683
|
}
|
|
686
684
|
|
|
687
|
-
[data-ui
|
|
685
|
+
[data-ui-select][data-part-root][data-invalid]:has(> [data-part-trigger]:focus-visible) {
|
|
688
686
|
outline: calc(var(--slotted-focus-ring-width, 2px) + var(--_invalid-edge-width)) double
|
|
689
687
|
var(--slotted-focus-ring-color, Highlight);
|
|
690
688
|
outline-offset: var(--slotted-focus-ring-offset, 2px);
|
|
691
689
|
}
|
|
692
690
|
|
|
693
|
-
[data-ui
|
|
694
|
-
> [data-part
|
|
691
|
+
[data-ui-select][data-part-root][data-variant='plain'][data-invalid]:has(
|
|
692
|
+
> [data-part-trigger]:focus-visible
|
|
695
693
|
) {
|
|
696
694
|
outline: calc(var(--slotted-focus-ring-width, 2px) + var(--_invalid-edge-width)) double
|
|
697
695
|
var(--slotted-focus-ring-color, Highlight);
|
|
@@ -708,14 +706,14 @@
|
|
|
708
706
|
* `role="combobox"` has a readonly the platform enforces, so the family
|
|
709
707
|
* refuses the change itself and this is what the refusal looks like.
|
|
710
708
|
*/
|
|
711
|
-
[data-ui
|
|
709
|
+
[data-ui-select][data-part-root][data-readonly] {
|
|
712
710
|
background-color: var(
|
|
713
711
|
--slotted-select-readonly-background,
|
|
714
712
|
var(--slotted-tone-secondary-subtle-hover)
|
|
715
713
|
);
|
|
716
714
|
}
|
|
717
715
|
|
|
718
|
-
[data-ui
|
|
716
|
+
[data-ui-select][data-part-root][data-readonly] [data-part-arrow] {
|
|
719
717
|
opacity: 0.5;
|
|
720
718
|
}
|
|
721
719
|
|
|
@@ -726,8 +724,8 @@
|
|
|
726
724
|
* way to say. The attribute alone left such a control looking operable and
|
|
727
725
|
* answering nothing.
|
|
728
726
|
*/
|
|
729
|
-
[data-ui
|
|
730
|
-
[data-ui
|
|
727
|
+
[data-ui-select][data-part-root][data-disabled],
|
|
728
|
+
[data-ui-select][data-part-root]:has(> [data-part-trigger]:disabled) {
|
|
731
729
|
background-color: var(--slotted-select-disabled-background, var(--slotted-disabled-background));
|
|
732
730
|
border-color: var(--slotted-select-disabled-border-color, var(--slotted-disabled-border));
|
|
733
731
|
/* Nothing a person cannot reach is lifted off the page. */
|
|
@@ -737,19 +735,19 @@
|
|
|
737
735
|
color: var(--slotted-select-disabled-color, var(--slotted-disabled-foreground));
|
|
738
736
|
}
|
|
739
737
|
|
|
740
|
-
[data-ui
|
|
741
|
-
[data-ui
|
|
738
|
+
[data-ui-select][data-part-root][data-disabled] > [data-part-trigger],
|
|
739
|
+
[data-ui-select][data-part-root] > [data-part-trigger]:disabled {
|
|
742
740
|
cursor: not-allowed;
|
|
743
741
|
}
|
|
744
742
|
|
|
745
|
-
[data-ui
|
|
743
|
+
[data-ui-select] > [data-part-clear]:hover:not(:disabled):not([data-disabled]) {
|
|
746
744
|
background-color: var(
|
|
747
745
|
--slotted-select-action-hover-background,
|
|
748
746
|
var(--slotted-tone-secondary-subtle-hover)
|
|
749
747
|
);
|
|
750
748
|
}
|
|
751
749
|
|
|
752
|
-
[data-ui
|
|
750
|
+
[data-ui-select] > [data-part-clear]:active:not(:disabled):not([data-disabled]) {
|
|
753
751
|
background-color: var(
|
|
754
752
|
--slotted-select-action-active-background,
|
|
755
753
|
var(--slotted-tone-secondary-subtle-active)
|
|
@@ -761,7 +759,7 @@
|
|
|
761
759
|
* Tabbing from the trigger to it has to move something visible, and a ring
|
|
762
760
|
* around the whole frame would sit still while focus moved inside it.
|
|
763
761
|
*/
|
|
764
|
-
[data-ui
|
|
762
|
+
[data-ui-select] > [data-part-clear]:focus-visible {
|
|
765
763
|
outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);
|
|
766
764
|
outline-offset: calc(var(--slotted-focus-ring-offset, 2px) * -1);
|
|
767
765
|
}
|
|
@@ -774,7 +772,7 @@
|
|
|
774
772
|
* purpose. The painted surface is one element in, as `tooltip`, `popover` and
|
|
775
773
|
* `menu` are built.
|
|
776
774
|
*/
|
|
777
|
-
[data-ui
|
|
775
|
+
[data-ui-select][data-part-positioner] {
|
|
778
776
|
--_surface: var(--slotted-select-surface, var(--slotted-surface-raised, #ffffff));
|
|
779
777
|
--_text: var(--slotted-select-content-text, var(--slotted-text, #0f172a));
|
|
780
778
|
--_muted: var(--slotted-select-content-text-muted, var(--slotted-text-muted, #5b6b7f));
|
|
@@ -848,12 +846,12 @@
|
|
|
848
846
|
translate var(--slotted-duration-short) var(--slotted-easing-exit);
|
|
849
847
|
}
|
|
850
848
|
|
|
851
|
-
[data-ui
|
|
849
|
+
[data-ui-select][data-part-positioner][data-side='top'] {
|
|
852
850
|
translate: 0 var(--_enter-distance);
|
|
853
851
|
}
|
|
854
852
|
|
|
855
853
|
/* A lateral side has no block direction to arrive from, so it only fades. */
|
|
856
|
-
[data-ui
|
|
854
|
+
[data-ui-select][data-part-positioner]:is([data-side='left'], [data-side='right']) {
|
|
857
855
|
translate: 0 0;
|
|
858
856
|
}
|
|
859
857
|
|
|
@@ -866,7 +864,7 @@
|
|
|
866
864
|
* A keyframe states where it starts. The exit stays a transition: it
|
|
867
865
|
* leaves from wherever the layer is, on the closed rule's durations.
|
|
868
866
|
*/
|
|
869
|
-
[data-ui
|
|
867
|
+
[data-ui-select][data-part-positioner][data-open] {
|
|
870
868
|
opacity: 1;
|
|
871
869
|
translate: 0 0;
|
|
872
870
|
transition: none;
|
|
@@ -877,15 +875,15 @@
|
|
|
877
875
|
* with the side, and a layer written open in static markup — the harness,
|
|
878
876
|
* a docs snippet — is simply there, and is photographed where it stands.
|
|
879
877
|
*/
|
|
880
|
-
[data-ui
|
|
878
|
+
[data-ui-select][data-part-positioner][data-open][data-positioned] {
|
|
881
879
|
animation: slotted-select-enter-down var(--slotted-duration-medium) var(--slotted-easing-enter);
|
|
882
880
|
}
|
|
883
881
|
|
|
884
|
-
[data-ui
|
|
882
|
+
[data-ui-select][data-part-positioner][data-open][data-positioned][data-side='top'] {
|
|
885
883
|
animation-name: slotted-select-enter-up;
|
|
886
884
|
}
|
|
887
885
|
|
|
888
|
-
[data-ui
|
|
886
|
+
[data-ui-select][data-part-positioner][data-open][data-positioned]:is(
|
|
889
887
|
[data-side='left'],
|
|
890
888
|
[data-side='right']
|
|
891
889
|
) {
|
|
@@ -914,25 +912,25 @@
|
|
|
914
912
|
|
|
915
913
|
/* Stillness keeps the fade and drops the movement (R7). */
|
|
916
914
|
@media (prefers-reduced-motion: reduce) {
|
|
917
|
-
[data-ui
|
|
918
|
-
[data-ui
|
|
919
|
-
[data-ui
|
|
920
|
-
[data-ui
|
|
915
|
+
[data-ui-select][data-part-positioner],
|
|
916
|
+
[data-ui-select][data-part-positioner][data-side='top'],
|
|
917
|
+
[data-ui-select][data-part-positioner][data-side='left'],
|
|
918
|
+
[data-ui-select][data-part-positioner][data-side='right'] {
|
|
921
919
|
translate: 0 0;
|
|
922
920
|
transition: opacity var(--slotted-duration-short) var(--slotted-easing-exit);
|
|
923
921
|
}
|
|
924
922
|
|
|
925
|
-
[data-ui
|
|
926
|
-
[data-ui
|
|
927
|
-
[data-ui
|
|
928
|
-
[data-ui
|
|
923
|
+
[data-ui-select][data-part-positioner][data-open][data-positioned],
|
|
924
|
+
[data-ui-select][data-part-positioner][data-open][data-positioned][data-side='top'],
|
|
925
|
+
[data-ui-select][data-part-positioner][data-open][data-positioned][data-side='left'],
|
|
926
|
+
[data-ui-select][data-part-positioner][data-open][data-positioned][data-side='right'] {
|
|
929
927
|
animation-name: slotted-select-fade;
|
|
930
928
|
}
|
|
931
929
|
}
|
|
932
930
|
|
|
933
931
|
/* The anchor scrolled out of its own clipper. The popup is still open and
|
|
934
932
|
its options still belong to a control the reader can no longer see. */
|
|
935
|
-
[data-ui
|
|
933
|
+
[data-ui-select][data-part-positioner][data-detached] {
|
|
936
934
|
visibility: hidden;
|
|
937
935
|
}
|
|
938
936
|
|
|
@@ -942,11 +940,11 @@
|
|
|
942
940
|
* narrow control does not wrap its option labels. `anchor` pins the popup to
|
|
943
941
|
* the control's width exactly.
|
|
944
942
|
*/
|
|
945
|
-
[data-ui
|
|
943
|
+
[data-ui-select][data-part-positioner][data-width='anchor'] {
|
|
946
944
|
inline-size: var(--slotted-positioner-anchor-width, auto);
|
|
947
945
|
}
|
|
948
946
|
|
|
949
|
-
[data-ui
|
|
947
|
+
[data-ui-select][data-part-positioner][data-width='content'] {
|
|
950
948
|
inline-size: max-content;
|
|
951
949
|
max-inline-size: min(var(--_measure), var(--slotted-positioner-available-width, 100vw));
|
|
952
950
|
/* Never narrower than the control it belongs to: a popup that shrank under
|
|
@@ -954,7 +952,7 @@
|
|
|
954
952
|
min-inline-size: var(--slotted-positioner-anchor-width, auto);
|
|
955
953
|
}
|
|
956
954
|
|
|
957
|
-
[data-ui
|
|
955
|
+
[data-ui-select][data-part-positioner][data-size='sm'] {
|
|
958
956
|
--_item-inset: var(--slotted-control-padding-inline-sm, 0.625rem);
|
|
959
957
|
--_item-height: var(--slotted-control-height-sm, 30px);
|
|
960
958
|
--_content-font-size: var(--slotted-control-font-size-sm, 12px);
|
|
@@ -963,7 +961,7 @@
|
|
|
963
961
|
--_column-gap: var(--slotted-control-gap-sm, 0.375rem);
|
|
964
962
|
}
|
|
965
963
|
|
|
966
|
-
[data-ui
|
|
964
|
+
[data-ui-select][data-part-positioner][data-size='lg'] {
|
|
967
965
|
--_item-inset: var(--slotted-control-padding-inline-lg, 1rem);
|
|
968
966
|
--_item-height: var(--slotted-control-height-lg, 38px);
|
|
969
967
|
--_content-font-size: var(--slotted-control-font-size-lg, 14px);
|
|
@@ -981,7 +979,7 @@
|
|
|
981
979
|
* the screen. `overscroll-behavior` keeps the page still once the surface has
|
|
982
980
|
* scrolled to its end.
|
|
983
981
|
*/
|
|
984
|
-
[data-ui
|
|
982
|
+
[data-ui-select] > [data-part-content] {
|
|
985
983
|
background: var(--_surface);
|
|
986
984
|
border: var(--_border-width) solid var(--_border-color);
|
|
987
985
|
border-radius: var(--_radius);
|
|
@@ -1010,8 +1008,8 @@
|
|
|
1010
1008
|
* `overscroll-behavior` keeps the page still once the scroller has reached
|
|
1011
1009
|
* its end.
|
|
1012
1010
|
*/
|
|
1013
|
-
[data-ui
|
|
1014
|
-
[data-ui
|
|
1011
|
+
[data-ui-select] > [data-part-content]:not([data-search]),
|
|
1012
|
+
[data-ui-select] [data-part-list] {
|
|
1015
1013
|
display: grid;
|
|
1016
1014
|
grid-template-columns: auto minmax(0, 1fr) auto;
|
|
1017
1015
|
overflow-y: auto;
|
|
@@ -1020,7 +1018,7 @@
|
|
|
1020
1018
|
padding-inline: var(--_inset-inline);
|
|
1021
1019
|
}
|
|
1022
1020
|
|
|
1023
|
-
[data-ui
|
|
1021
|
+
[data-ui-select] > [data-part-content][data-search] {
|
|
1024
1022
|
display: flex;
|
|
1025
1023
|
flex-direction: column;
|
|
1026
1024
|
/* The field draws to the surface's own edges and the list keeps the inset,
|
|
@@ -1030,7 +1028,7 @@
|
|
|
1030
1028
|
|
|
1031
1029
|
/* `auto` as the flex basis measures the whole list and refuses to shrink;
|
|
1032
1030
|
the surface is what holds the height, and the list is what gives. */
|
|
1033
|
-
[data-ui
|
|
1031
|
+
[data-ui-select] [data-part-list] {
|
|
1034
1032
|
flex: 1 1 auto;
|
|
1035
1033
|
min-block-size: 0;
|
|
1036
1034
|
}
|
|
@@ -1052,7 +1050,7 @@
|
|
|
1052
1050
|
* rhythm, with the rule under it drawn from the border scale rather than
|
|
1053
1051
|
* from a shadow — the same rule the `chosen` band draws above the list.
|
|
1054
1052
|
*/
|
|
1055
|
-
[data-ui
|
|
1053
|
+
[data-ui-select] [data-part-search] {
|
|
1056
1054
|
align-items: center;
|
|
1057
1055
|
border-block-end: var(--_border-width) solid var(--_border-color);
|
|
1058
1056
|
box-sizing: border-box;
|
|
@@ -1073,7 +1071,7 @@
|
|
|
1073
1071
|
* bare line of placeholder text at the top of a panel reads as a title, and
|
|
1074
1072
|
* a reader does not type into a title.
|
|
1075
1073
|
*/
|
|
1076
|
-
[data-ui
|
|
1074
|
+
[data-ui-select] [data-part-search-icon] {
|
|
1077
1075
|
--slotted-icon-size: var(--_content-icon-size);
|
|
1078
1076
|
|
|
1079
1077
|
align-items: center;
|
|
@@ -1097,7 +1095,7 @@
|
|
|
1097
1095
|
* rather than a state, and the one thing on the surface that never changes
|
|
1098
1096
|
* would be the loudest. What says where focus is, is the caret.
|
|
1099
1097
|
*/
|
|
1100
|
-
[data-ui
|
|
1098
|
+
[data-ui-select] [data-part-search-input] {
|
|
1101
1099
|
background-color: transparent;
|
|
1102
1100
|
border: 0;
|
|
1103
1101
|
color: inherit;
|
|
@@ -1111,7 +1109,7 @@
|
|
|
1111
1109
|
text-overflow: ellipsis;
|
|
1112
1110
|
}
|
|
1113
1111
|
|
|
1114
|
-
[data-ui
|
|
1112
|
+
[data-ui-select] [data-part-search-input]::placeholder {
|
|
1115
1113
|
color: var(--slotted-select-placeholder-color, var(--_muted));
|
|
1116
1114
|
text-overflow: ellipsis;
|
|
1117
1115
|
}
|
|
@@ -1131,7 +1129,7 @@
|
|
|
1131
1129
|
* to the surface's own edges, which is where the rule between it and the list
|
|
1132
1130
|
* has to end — a rule from the border scale, not a shadow.
|
|
1133
1131
|
*/
|
|
1134
|
-
[data-ui
|
|
1132
|
+
[data-ui-select] [data-part-chosen] {
|
|
1135
1133
|
background: var(--_surface);
|
|
1136
1134
|
border-block-end: var(--_border-width) solid var(--_border-color);
|
|
1137
1135
|
box-sizing: border-box;
|
|
@@ -1169,7 +1167,7 @@
|
|
|
1169
1167
|
* interaction — the highlight is `aria-activedescendant`, not focus — so a
|
|
1170
1168
|
* ring here would draw a box around something nobody is operating.
|
|
1171
1169
|
*/
|
|
1172
|
-
[data-ui
|
|
1170
|
+
[data-ui-select] > [data-part-content]:focus-visible {
|
|
1173
1171
|
outline: none;
|
|
1174
1172
|
}
|
|
1175
1173
|
|
|
@@ -1180,7 +1178,7 @@
|
|
|
1180
1178
|
* surface's columns instead of starting a second set. Without the subgrid a
|
|
1181
1179
|
* group would align its own labels and disagree with the options outside it.
|
|
1182
1180
|
*/
|
|
1183
|
-
[data-ui
|
|
1181
|
+
[data-ui-select] [data-part-group] {
|
|
1184
1182
|
display: grid;
|
|
1185
1183
|
grid-column: 1 / -1;
|
|
1186
1184
|
grid-template-columns: subgrid;
|
|
@@ -1194,12 +1192,12 @@
|
|
|
1194
1192
|
* author rule wins over the user agent sheet. Without this the search
|
|
1195
1193
|
* filtered nothing the reader could see.
|
|
1196
1194
|
*/
|
|
1197
|
-
[data-ui
|
|
1198
|
-
[data-ui
|
|
1195
|
+
[data-ui-select] [data-part-item][hidden],
|
|
1196
|
+
[data-ui-select] [data-part-group][hidden] {
|
|
1199
1197
|
display: none;
|
|
1200
1198
|
}
|
|
1201
1199
|
|
|
1202
|
-
[data-ui
|
|
1200
|
+
[data-ui-select] [data-part-group-label] {
|
|
1203
1201
|
color: var(--_muted);
|
|
1204
1202
|
font-size: var(--_secondary-font-size);
|
|
1205
1203
|
font-weight: var(--slotted-font-weight-semibold, 600);
|
|
@@ -1221,7 +1219,7 @@
|
|
|
1221
1219
|
* `min-block-size` rather than a height, because an option with a
|
|
1222
1220
|
* description is two lines tall and still has to clear the target minimum.
|
|
1223
1221
|
*/
|
|
1224
|
-
[data-ui
|
|
1222
|
+
[data-ui-select] [data-part-item] {
|
|
1225
1223
|
align-content: center;
|
|
1226
1224
|
border-radius: var(--_item-radius);
|
|
1227
1225
|
box-sizing: border-box;
|
|
@@ -1268,7 +1266,7 @@
|
|
|
1268
1266
|
* whichever device is driving, and the state a screen reader announces and
|
|
1269
1267
|
* the state the eye sees are the same state.
|
|
1270
1268
|
*/
|
|
1271
|
-
[data-ui
|
|
1269
|
+
[data-ui-select] [data-part-item][data-current] {
|
|
1272
1270
|
background-color: var(--_highlight);
|
|
1273
1271
|
/**
|
|
1274
1272
|
* A ring as well as a ground, because the ground alone carries the whole
|
|
@@ -1285,7 +1283,7 @@
|
|
|
1285
1283
|
var(--slotted-select-highlight-ring, var(--slotted-tone-accent-border));
|
|
1286
1284
|
}
|
|
1287
1285
|
|
|
1288
|
-
[data-ui
|
|
1286
|
+
[data-ui-select] [data-part-item]:not([data-disabled]):active {
|
|
1289
1287
|
background-color: var(--_highlight-active);
|
|
1290
1288
|
}
|
|
1291
1289
|
|
|
@@ -1295,7 +1293,7 @@
|
|
|
1295
1293
|
* becomes `Canvas` — and the accent ink is the secondary one, so the row a
|
|
1296
1294
|
* reader is looking for is findable at a glance in a list of forty.
|
|
1297
1295
|
*/
|
|
1298
|
-
[data-ui
|
|
1296
|
+
[data-ui-select] [data-part-item][data-selected] {
|
|
1299
1297
|
color: var(--_selected-color);
|
|
1300
1298
|
}
|
|
1301
1299
|
|
|
@@ -1308,17 +1306,17 @@
|
|
|
1308
1306
|
* selection begins and ends. `select` and `combobox` draw the same ground
|
|
1309
1307
|
* and answer the same way; `selection-block.test.mjs` holds the three to it.
|
|
1310
1308
|
*/
|
|
1311
|
-
[data-ui
|
|
1309
|
+
[data-ui-select] [data-part-item][data-selected] + [data-part-item][data-selected] {
|
|
1312
1310
|
border-start-end-radius: 0;
|
|
1313
1311
|
border-start-start-radius: 0;
|
|
1314
1312
|
}
|
|
1315
1313
|
|
|
1316
|
-
[data-ui
|
|
1314
|
+
[data-ui-select] [data-part-item][data-selected]:has(+ [data-part-item][data-selected]) {
|
|
1317
1315
|
border-end-end-radius: 0;
|
|
1318
1316
|
border-end-start-radius: 0;
|
|
1319
1317
|
}
|
|
1320
1318
|
|
|
1321
|
-
[data-ui
|
|
1319
|
+
[data-ui-select] [data-part-item][data-selected] > [data-part-label] {
|
|
1322
1320
|
font-weight: var(--slotted-font-weight-medium, 500);
|
|
1323
1321
|
}
|
|
1324
1322
|
|
|
@@ -1329,7 +1327,7 @@
|
|
|
1329
1327
|
* disabled surface rather than the highlight, and the text stays legible
|
|
1330
1328
|
* instead of being faded toward it.
|
|
1331
1329
|
*/
|
|
1332
|
-
[data-ui
|
|
1330
|
+
[data-ui-select] [data-part-item][data-disabled] {
|
|
1333
1331
|
color: var(--slotted-disabled-foreground, #64748b);
|
|
1334
1332
|
cursor: not-allowed;
|
|
1335
1333
|
}
|
|
@@ -1355,7 +1353,7 @@
|
|
|
1355
1353
|
* would watch it disappear. A cursor lifts, always. What the row cannot do is
|
|
1356
1354
|
* said by the ink and by the ring, which both step down to the disabled pair.
|
|
1357
1355
|
*/
|
|
1358
|
-
[data-ui
|
|
1356
|
+
[data-ui-select] [data-part-item][data-disabled][data-current] {
|
|
1359
1357
|
box-shadow: inset 0 0 0 var(--slotted-border-width-thin, 1px)
|
|
1360
1358
|
var(--slotted-disabled-border, #cbd5e1);
|
|
1361
1359
|
color: var(--slotted-disabled-foreground, #64748b);
|
|
@@ -1369,7 +1367,7 @@
|
|
|
1369
1367
|
* states the line box every cell inherits, exactly as tall as the line it
|
|
1370
1368
|
* sits beside.
|
|
1371
1369
|
*/
|
|
1372
|
-
[data-ui
|
|
1370
|
+
[data-ui-select] :is([data-part-indicator], [data-part-icon]) {
|
|
1373
1371
|
block-size: 1lh;
|
|
1374
1372
|
}
|
|
1375
1373
|
|
|
@@ -1382,7 +1380,7 @@
|
|
|
1382
1380
|
* artwork of the consumer's own, centred and sized from the column through
|
|
1383
1381
|
* `--slotted-icon-size`. No stylesheet fills it.
|
|
1384
1382
|
*/
|
|
1385
|
-
[data-ui
|
|
1383
|
+
[data-ui-select] [data-part-icon] {
|
|
1386
1384
|
--slotted-icon-size: var(--_content-icon-size);
|
|
1387
1385
|
|
|
1388
1386
|
align-items: center;
|
|
@@ -1398,7 +1396,7 @@
|
|
|
1398
1396
|
/* Column two, and the only column that gives way. It is scoped to the option
|
|
1399
1397
|
rather than to the family: a chip in the control carries a `label` of its
|
|
1400
1398
|
own, and this rule would have put it in the popup's second column (SL4). */
|
|
1401
|
-
[data-ui
|
|
1399
|
+
[data-ui-select] [data-part-item] > [data-part-label] {
|
|
1402
1400
|
grid-column: 2;
|
|
1403
1401
|
grid-row: 1;
|
|
1404
1402
|
min-inline-size: 0;
|
|
@@ -1419,7 +1417,7 @@
|
|
|
1419
1417
|
overflow-wrap: anywhere;
|
|
1420
1418
|
}
|
|
1421
1419
|
|
|
1422
|
-
[data-ui
|
|
1420
|
+
[data-ui-select] [data-part-description] {
|
|
1423
1421
|
color: var(--_muted);
|
|
1424
1422
|
font-size: var(--_secondary-font-size);
|
|
1425
1423
|
grid-column: 2;
|
|
@@ -1429,7 +1427,7 @@
|
|
|
1429
1427
|
overflow-wrap: anywhere;
|
|
1430
1428
|
}
|
|
1431
1429
|
|
|
1432
|
-
[data-ui
|
|
1430
|
+
[data-ui-select] [data-part-item][data-disabled] > [data-part-description] {
|
|
1433
1431
|
color: inherit;
|
|
1434
1432
|
}
|
|
1435
1433
|
|
|
@@ -1438,7 +1436,7 @@
|
|
|
1438
1436
|
* reserved whether or not the check is drawn, so a list does not shift by
|
|
1439
1437
|
* sixteen pixels as the reader moves through it.
|
|
1440
1438
|
*/
|
|
1441
|
-
[data-ui
|
|
1439
|
+
[data-ui-select] [data-part-indicator] {
|
|
1442
1440
|
--slotted-icon-size: var(--_content-icon-size);
|
|
1443
1441
|
|
|
1444
1442
|
align-items: center;
|
|
@@ -1455,13 +1453,13 @@
|
|
|
1455
1453
|
transition: opacity var(--slotted-duration-short) var(--slotted-easing-standard);
|
|
1456
1454
|
}
|
|
1457
1455
|
|
|
1458
|
-
[data-ui
|
|
1456
|
+
[data-ui-select] [data-part-item][data-selected] > [data-part-indicator] {
|
|
1459
1457
|
opacity: 1;
|
|
1460
1458
|
}
|
|
1461
1459
|
|
|
1462
1460
|
/* ── Separator, empty, status ─────────────────────────────────────────── */
|
|
1463
1461
|
|
|
1464
|
-
[data-ui
|
|
1462
|
+
[data-ui-select] [data-part-separator] {
|
|
1465
1463
|
background-color: var(--slotted-select-separator-color, var(--_border-color));
|
|
1466
1464
|
block-size: var(--_border-width);
|
|
1467
1465
|
border: 0;
|
|
@@ -1477,7 +1475,7 @@
|
|
|
1477
1475
|
* refuses to open on an empty collection and Radix paints nothing; the popup
|
|
1478
1476
|
* here opens onto a sentence.
|
|
1479
1477
|
*/
|
|
1480
|
-
[data-ui
|
|
1478
|
+
[data-ui-select] :is([data-part-empty], [data-part-status]) {
|
|
1481
1479
|
color: var(--_muted);
|
|
1482
1480
|
/**
|
|
1483
1481
|
* Its own bidi run, ordered by its own content. "3 results" is a European
|
|
@@ -1512,7 +1510,7 @@
|
|
|
1512
1510
|
* takes the same space as the empty message beside it. `combobox` draws the
|
|
1513
1511
|
* count the same way, in the same place, for the same reason.
|
|
1514
1512
|
*/
|
|
1515
|
-
[data-ui
|
|
1513
|
+
[data-ui-select] [data-part-status]:empty {
|
|
1516
1514
|
display: none;
|
|
1517
1515
|
}
|
|
1518
1516
|
|
|
@@ -1528,7 +1526,7 @@
|
|
|
1528
1526
|
* hidden from assistive technology: the `status` row beside them is the live
|
|
1529
1527
|
* region and it already says what is happening.
|
|
1530
1528
|
*/
|
|
1531
|
-
[data-ui
|
|
1529
|
+
[data-ui-select] [data-part-placeholder] {
|
|
1532
1530
|
display: grid;
|
|
1533
1531
|
/* The surface is a grid of option columns; the rows span all of them, as
|
|
1534
1532
|
the status and empty rows do. */
|
|
@@ -1537,7 +1535,7 @@
|
|
|
1537
1535
|
padding-inline: var(--_item-inset);
|
|
1538
1536
|
}
|
|
1539
1537
|
|
|
1540
|
-
[data-ui
|
|
1538
|
+
[data-ui-select] [data-part-placeholder] > [data-ui-skeleton] {
|
|
1541
1539
|
align-self: center;
|
|
1542
1540
|
}
|
|
1543
1541
|
|
|
@@ -1545,17 +1543,17 @@
|
|
|
1545
1543
|
* Each row is an option: the same minimum height, so three of them measure
|
|
1546
1544
|
* what three options measure and the popup does not resize when they land.
|
|
1547
1545
|
*/
|
|
1548
|
-
[data-ui
|
|
1546
|
+
[data-ui-select] [data-part-placeholder] > * {
|
|
1549
1547
|
align-items: center;
|
|
1550
1548
|
display: flex;
|
|
1551
1549
|
min-block-size: var(--_item-height);
|
|
1552
1550
|
}
|
|
1553
1551
|
|
|
1554
|
-
[data-ui
|
|
1552
|
+
[data-ui-select] [data-part-placeholder] > :nth-child(2) [data-ui-skeleton] {
|
|
1555
1553
|
inline-size: 78%;
|
|
1556
1554
|
}
|
|
1557
1555
|
|
|
1558
|
-
[data-ui
|
|
1556
|
+
[data-ui-select] [data-part-placeholder] > :nth-child(3) [data-ui-skeleton] {
|
|
1559
1557
|
inline-size: 56%;
|
|
1560
1558
|
}
|
|
1561
1559
|
|
|
@@ -1566,7 +1564,7 @@
|
|
|
1566
1564
|
* many for one wait (SL6).
|
|
1567
1565
|
*/
|
|
1568
1566
|
|
|
1569
|
-
[data-ui
|
|
1567
|
+
[data-ui-select] > [data-part-content][data-loading] {
|
|
1570
1568
|
cursor: progress;
|
|
1571
1569
|
}
|
|
1572
1570
|
|
|
@@ -1579,13 +1577,13 @@
|
|
|
1579
1577
|
* with no way to tell.
|
|
1580
1578
|
*/
|
|
1581
1579
|
@media (forced-colors: active) {
|
|
1582
|
-
[data-ui
|
|
1580
|
+
[data-ui-select] [data-part-item][data-current] {
|
|
1583
1581
|
background-color: Highlight;
|
|
1584
1582
|
color: HighlightText;
|
|
1585
1583
|
forced-color-adjust: none;
|
|
1586
1584
|
}
|
|
1587
1585
|
|
|
1588
|
-
[data-ui
|
|
1586
|
+
[data-ui-select] [data-part-item][data-disabled][data-current] {
|
|
1589
1587
|
background-color: Highlight;
|
|
1590
1588
|
color: GrayText;
|
|
1591
1589
|
}
|