@slotted/styles 0.1.0-beta.1 → 0.1.0-beta.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/accordion/accordion.css +10 -10
- package/src/action-bar/action-bar.css +35 -42
- package/src/action-sheet/action-sheet.css +36 -36
- package/src/alert/alert.css +43 -35
- package/src/alert/alert.tokens.json +5 -0
- package/src/app-shell/app-shell.css +356 -301
- package/src/aspect-ratio/aspect-ratio.css +9 -9
- package/src/attachment/attachment.css +91 -99
- package/src/avatar/avatar.css +71 -41
- package/src/avatar/avatar.tokens.json +7 -0
- package/src/avatar-group/avatar-group.css +21 -22
- package/src/badge/badge.css +45 -37
- package/src/badge/badge.tokens.json +5 -0
- package/src/breadcrumb/breadcrumb.css +37 -37
- package/src/button/button.css +149 -68
- package/src/button/button.tokens.json +10 -0
- package/src/button-group/button-group.css +79 -74
- package/src/button-group/button-group.tokens.json +2 -0
- 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 +152 -153
- package/src/cascader/cascader.tokens.json +1 -0
- package/src/chart/chart.css +242 -239
- package/src/chart/chart.tokens.json +1 -0
- 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 +132 -107
- package/src/combobox/combobox.tokens.json +1 -0
- package/src/command-palette/command-palette.css +103 -90
- package/src/command-palette/command-palette.tokens.json +1 -0
- package/src/container/container.css +24 -24
- package/src/context-menu/context-menu.css +8 -8
- package/src/currency-field/currency-field.css +210 -88
- package/src/currency-field/currency-field.tokens.json +13 -0
- package/src/dashboard-grid/dashboard-grid.css +148 -116
- package/src/data-grid/data-grid.css +535 -470
- package/src/data-grid/data-grid.tokens.json +4 -0
- package/src/data-list/data-list.css +81 -70
- package/src/data-list/data-list.tokens.json +2 -1
- package/src/date-field/date-field.css +55 -52
- package/src/date-field/date-field.tokens.json +1 -0
- 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 +78 -80
- package/src/datetime-field/datetime-field.tokens.json +1 -0
- 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 +86 -71
- package/src/detail-panel/detail-panel.tokens.json +2 -0
- package/src/dialog/dialog.css +372 -153
- package/src/dialog/dialog.tokens.json +6 -0
- package/src/divider/divider.css +18 -18
- package/src/drawer/drawer.css +205 -210
- package/src/drawer/drawer.tokens.json +1 -0
- package/src/entity-picker/entity-picker.css +238 -241
- package/src/entity-picker/entity-picker.tokens.json +1 -0
- 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 +34 -24
- package/src/form/form.tokens.json +1 -0
- 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 +19 -15
- package/src/icon/icon.tokens.json +1 -0
- 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 +52 -28
- package/src/inline-message/inline-message.tokens.json +4 -0
- package/src/kbd/kbd.css +30 -26
- package/src/link/link.css +15 -15
- package/src/list/list.css +44 -17
- package/src/list/list.tokens.json +4 -0
- package/src/list-item/list-item.css +80 -66
- package/src/list-item/list-item.tokens.json +7 -0
- 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 +83 -63
- package/src/menubar/menubar.css +13 -13
- package/src/message/message.css +182 -202
- package/src/message/message.tokens.json +5 -0
- package/src/message-scroller/message-scroller.css +41 -42
- package/src/multi-select/multi-select.css +152 -145
- package/src/multi-select/multi-select.tokens.json +1 -0
- package/src/navigation-menu/navigation-menu.css +167 -188
- package/src/notification-center/notification-center.css +140 -148
- package/src/notification-center/notification-center.tokens.json +3 -0
- package/src/number-field/number-field.css +84 -83
- package/src/number-field/number-field.tokens.json +1 -0
- package/src/otp-input/otp-input.css +67 -57
- package/src/otp-input/otp-input.tokens.json +1 -0
- package/src/page/page.css +39 -23
- package/src/page/page.tokens.json +1 -0
- package/src/page-header/page-header.css +323 -283
- package/src/page-header/page-header.tokens.json +5 -0
- package/src/pagination/pagination.css +68 -72
- package/src/popover/popover.css +40 -49
- package/src/progress-indicator/progress-indicator.css +177 -120
- package/src/progress-indicator/progress-indicator.tokens.json +1 -1
- package/src/prompt-composer/prompt-composer.css +221 -102
- package/src/prompt-composer/prompt-composer.tokens.json +15 -0
- package/src/prose/prose.css +71 -75
- package/src/radio-group/radio-group.css +98 -103
- package/src/rating/rating.css +136 -132
- package/src/rating/rating.tokens.json +1 -0
- package/src/result-state/result-state.css +74 -77
- package/src/runtime-properties.mjs +2 -0
- package/src/saved-views/saved-views.css +41 -47
- package/src/scroll-area/scroll-area.css +39 -32
- package/src/section/section.css +161 -41
- package/src/section/section.tokens.json +7 -2
- package/src/segmented-control/segmented-control.css +254 -97
- package/src/segmented-control/segmented-control.tokens.json +15 -11
- package/src/select/select.css +118 -117
- package/src/select/select.tokens.json +1 -0
- package/src/side-navigation/side-navigation.css +179 -182
- package/src/side-navigation/side-navigation.tokens.json +1 -0
- package/src/skeleton/skeleton.css +47 -48
- package/src/slider/slider.css +86 -88
- package/src/sparkline/sparkline.css +62 -40
- package/src/sparkline/sparkline.tokens.json +2 -0
- package/src/spinner/spinner.css +83 -180
- package/src/spinner/spinner.tokens.json +0 -1
- package/src/split-button/split-button.css +30 -31
- package/src/split-button/split-button.tokens.json +1 -0
- package/src/splitter/splitter.css +35 -35
- package/src/stack/stack.css +24 -24
- package/src/stat-card/stat-card.css +341 -224
- package/src/stat-card/stat-card.tokens.json +3 -0
- 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 +310 -165
- package/src/table/table.tokens.json +6 -0
- package/src/table-of-contents/table-of-contents.css +51 -54
- package/src/tabs/tabs.css +337 -302
- package/src/tabs/tabs.tokens.json +8 -5
- package/src/tag/tag.css +79 -71
- package/src/tag/tag.tokens.json +9 -0
- package/src/tags-input/tags-input.css +145 -82
- package/src/tags-input/tags-input.tokens.json +7 -1
- package/src/text-field/text-field.css +132 -136
- package/src/text-field/text-field.tokens.json +1 -0
- package/src/textarea/textarea.css +31 -28
- package/src/textarea/textarea.tokens.json +1 -0
- package/src/time-field/time-field.css +72 -69
- package/src/time-field/time-field.tokens.json +1 -0
- 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 +254 -266
- package/src/timeline/timeline.tokens.json +5 -0
- package/src/toast/toast.css +108 -90
- package/src/toast/toast.tokens.json +6 -0
- package/src/toggle/toggle.css +62 -25
- package/src/toggle/toggle.tokens.json +8 -0
- package/src/toggle-group/toggle-group.css +106 -60
- package/src/toggle-group/toggle-group.tokens.json +10 -0
- 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 +40 -36
- package/src/typography/typography.tokens.json +1 -0
- package/src/upload/upload.css +224 -224
- package/src/visually-hidden/visually-hidden.css +1 -1
- package/src/wizard/wizard.css +185 -197
|
@@ -76,6 +76,11 @@
|
|
|
76
76
|
"--slotted-tone-danger-solid",
|
|
77
77
|
"--slotted-tone-danger-surface",
|
|
78
78
|
"--slotted-tone-danger-text",
|
|
79
|
+
"--slotted-tone-info-border",
|
|
80
|
+
"--slotted-tone-info-on-solid",
|
|
81
|
+
"--slotted-tone-info-solid",
|
|
82
|
+
"--slotted-tone-info-surface",
|
|
83
|
+
"--slotted-tone-info-text",
|
|
79
84
|
"--slotted-tone-secondary-border",
|
|
80
85
|
"--slotted-tone-secondary-on-solid",
|
|
81
86
|
"--slotted-tone-secondary-solid",
|
package/src/toast/toast.css
CHANGED
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
* The stylesheet's part in it is that no rule assumes a role: the same
|
|
40
40
|
* picture is drawn whether a reader hears the words or reads them.
|
|
41
41
|
*/
|
|
42
|
-
[data-ui
|
|
42
|
+
[data-ui-toast][data-part-root] {
|
|
43
43
|
/**
|
|
44
44
|
* The distance from the edge of the screen, and the greatest width a
|
|
45
45
|
* message is allowed. The width is the smaller of the two, so at 320
|
|
@@ -93,7 +93,7 @@
|
|
|
93
93
|
* demonstrable on a documentation page: everything else about it is the
|
|
94
94
|
* same, including the placement, which now names the edges of the panel.
|
|
95
95
|
*/
|
|
96
|
-
[data-ui
|
|
96
|
+
[data-ui-toast][data-part-root][data-attach='inline'] {
|
|
97
97
|
position: absolute;
|
|
98
98
|
}
|
|
99
99
|
|
|
@@ -104,19 +104,19 @@
|
|
|
104
104
|
* an Arabic one. Sonner's `bottom-right` is `bottom-right` in both.
|
|
105
105
|
*/
|
|
106
106
|
|
|
107
|
-
[data-ui
|
|
107
|
+
[data-ui-toast][data-part-root][data-placement^='top'] {
|
|
108
108
|
inset-block-start: var(--_offset);
|
|
109
109
|
}
|
|
110
110
|
|
|
111
|
-
[data-ui
|
|
111
|
+
[data-ui-toast][data-part-root][data-placement^='bottom'] {
|
|
112
112
|
inset-block-end: var(--_offset);
|
|
113
113
|
}
|
|
114
114
|
|
|
115
|
-
[data-ui
|
|
115
|
+
[data-ui-toast][data-part-root][data-placement$='-start'] {
|
|
116
116
|
inset-inline-start: var(--_offset);
|
|
117
117
|
}
|
|
118
118
|
|
|
119
|
-
[data-ui
|
|
119
|
+
[data-ui-toast][data-part-root][data-placement$='-end'] {
|
|
120
120
|
inset-inline-end: var(--_offset);
|
|
121
121
|
}
|
|
122
122
|
|
|
@@ -125,8 +125,8 @@
|
|
|
125
125
|
* divide what is left. It is the one centring that needs no transform, so
|
|
126
126
|
* the transform stays free for the enter, the exit and the swipe.
|
|
127
127
|
*/
|
|
128
|
-
[data-ui
|
|
129
|
-
[data-ui
|
|
128
|
+
[data-ui-toast][data-part-root][data-placement='top'],
|
|
129
|
+
[data-ui-toast][data-part-root][data-placement='bottom'] {
|
|
130
130
|
inset-inline: var(--_offset);
|
|
131
131
|
margin-inline: auto;
|
|
132
132
|
}
|
|
@@ -139,7 +139,7 @@
|
|
|
139
139
|
* order, which puts the newest nearest the edge of the screen — where the
|
|
140
140
|
* reader's eye already is — without moving it in the accessibility tree.
|
|
141
141
|
*/
|
|
142
|
-
[data-ui
|
|
142
|
+
[data-ui-toast] > [data-part-list] {
|
|
143
143
|
display: flex;
|
|
144
144
|
flex-direction: column;
|
|
145
145
|
gap: var(--_gap);
|
|
@@ -149,7 +149,7 @@
|
|
|
149
149
|
pointer-events: none;
|
|
150
150
|
}
|
|
151
151
|
|
|
152
|
-
[data-ui
|
|
152
|
+
[data-ui-toast][data-placement^='bottom'] > [data-part-list] {
|
|
153
153
|
flex-direction: column-reverse;
|
|
154
154
|
}
|
|
155
155
|
|
|
@@ -162,7 +162,7 @@
|
|
|
162
162
|
* focus already inside a message can cause, so no press meant for the page
|
|
163
163
|
* lands on an empty region.
|
|
164
164
|
*/
|
|
165
|
-
[data-ui
|
|
165
|
+
[data-ui-toast][data-expanded] > [data-part-list] {
|
|
166
166
|
pointer-events: auto;
|
|
167
167
|
}
|
|
168
168
|
|
|
@@ -172,7 +172,7 @@
|
|
|
172
172
|
* the message away, with the actions under the words rather than beside
|
|
173
173
|
* them so a second row exists only when there are actions to put in it.
|
|
174
174
|
*/
|
|
175
|
-
[data-ui
|
|
175
|
+
[data-ui-toast] > [data-part-list] > [data-part-item] {
|
|
176
176
|
/* The tone's five roles, defaulted to `accent`, restated by each tone
|
|
177
177
|
below. Every one of them is a role the theme's contrast test measures. */
|
|
178
178
|
--_solid: var(--slotted-tone-accent-solid);
|
|
@@ -302,11 +302,11 @@
|
|
|
302
302
|
* shift is the same distance in the other direction rather than a second
|
|
303
303
|
* number, so the two placements are one motion seen twice.
|
|
304
304
|
*/
|
|
305
|
-
[data-ui
|
|
305
|
+
[data-ui-toast][data-placement^='top'] > [data-part-list] > [data-part-item] {
|
|
306
306
|
translate: 0 calc(-1 * var(--_enter-shift));
|
|
307
307
|
}
|
|
308
308
|
|
|
309
|
-
[data-ui
|
|
309
|
+
[data-ui-toast] > [data-part-list] > [data-part-item][data-open] {
|
|
310
310
|
opacity: 1;
|
|
311
311
|
translate: 0;
|
|
312
312
|
transition:
|
|
@@ -325,7 +325,7 @@
|
|
|
325
325
|
* is left, which is WCAG 2.2 SC 1.4.1 as well as a preference.
|
|
326
326
|
*/
|
|
327
327
|
|
|
328
|
-
[data-ui
|
|
328
|
+
[data-ui-toast] > [data-part-list] > [data-part-item][data-tone='accent'] {
|
|
329
329
|
--_solid: var(--slotted-tone-accent-solid);
|
|
330
330
|
--_on-solid: var(--slotted-tone-accent-on-solid);
|
|
331
331
|
--_tone-surface: var(--slotted-tone-accent-surface);
|
|
@@ -333,7 +333,7 @@
|
|
|
333
333
|
--_tone-text: var(--slotted-tone-accent-text);
|
|
334
334
|
}
|
|
335
335
|
|
|
336
|
-
[data-ui
|
|
336
|
+
[data-ui-toast] > [data-part-list] > [data-part-item][data-tone='secondary'] {
|
|
337
337
|
--_solid: var(--slotted-tone-secondary-solid);
|
|
338
338
|
--_on-solid: var(--slotted-tone-secondary-on-solid);
|
|
339
339
|
--_tone-surface: var(--slotted-tone-secondary-surface);
|
|
@@ -341,7 +341,7 @@
|
|
|
341
341
|
--_tone-text: var(--slotted-tone-secondary-text);
|
|
342
342
|
}
|
|
343
343
|
|
|
344
|
-
[data-ui
|
|
344
|
+
[data-ui-toast] > [data-part-list] > [data-part-item][data-tone='success'] {
|
|
345
345
|
--_solid: var(--slotted-tone-success-solid);
|
|
346
346
|
--_on-solid: var(--slotted-tone-success-on-solid);
|
|
347
347
|
--_tone-surface: var(--slotted-tone-success-surface);
|
|
@@ -349,7 +349,15 @@
|
|
|
349
349
|
--_tone-text: var(--slotted-tone-success-text);
|
|
350
350
|
}
|
|
351
351
|
|
|
352
|
-
[data-ui
|
|
352
|
+
[data-ui-toast] > [data-part-list] > [data-part-item][data-tone='info'] {
|
|
353
|
+
--_solid: var(--slotted-tone-info-solid);
|
|
354
|
+
--_on-solid: var(--slotted-tone-info-on-solid);
|
|
355
|
+
--_tone-surface: var(--slotted-tone-info-surface);
|
|
356
|
+
--_tone-border: var(--slotted-tone-info-border);
|
|
357
|
+
--_tone-text: var(--slotted-tone-info-text);
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
[data-ui-toast] > [data-part-list] > [data-part-item][data-tone='warning'] {
|
|
353
361
|
--_solid: var(--slotted-tone-warning-solid);
|
|
354
362
|
--_on-solid: var(--slotted-tone-warning-on-solid);
|
|
355
363
|
--_tone-surface: var(--slotted-tone-warning-surface);
|
|
@@ -357,7 +365,7 @@
|
|
|
357
365
|
--_tone-text: var(--slotted-tone-warning-text);
|
|
358
366
|
}
|
|
359
367
|
|
|
360
|
-
[data-ui
|
|
368
|
+
[data-ui-toast] > [data-part-list] > [data-part-item][data-tone='danger'] {
|
|
361
369
|
--_solid: var(--slotted-tone-danger-solid);
|
|
362
370
|
--_on-solid: var(--slotted-tone-danger-on-solid);
|
|
363
371
|
--_tone-surface: var(--slotted-tone-danger-surface);
|
|
@@ -373,7 +381,26 @@
|
|
|
373
381
|
* tone is in the mark and in nothing else, which is enough — it is the
|
|
374
382
|
* silhouette that survives forced colours anyway.
|
|
375
383
|
*/
|
|
376
|
-
|
|
384
|
+
/**
|
|
385
|
+
* A theme that paints the raised message with a surface that has alpha blurs
|
|
386
|
+
* what passes under it: `--slotted-toast-backdrop-filter`, `none` unless set.
|
|
387
|
+
* Only `raised` floats over content it does not own; `soft` and `solid` are
|
|
388
|
+
* tone grounds. A reader who asked for less transparency gets no filter, and
|
|
389
|
+
* under forced colours the ground is the system's.
|
|
390
|
+
*/
|
|
391
|
+
[data-ui-toast] > [data-part-list] > [data-part-item][data-variant='raised'] {
|
|
392
|
+
-webkit-backdrop-filter: var(--slotted-toast-backdrop-filter, none);
|
|
393
|
+
backdrop-filter: var(--slotted-toast-backdrop-filter, none);
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
@media (prefers-reduced-transparency: reduce), (forced-colors: active) {
|
|
397
|
+
[data-ui-toast] > [data-part-list] > [data-part-item][data-variant='raised'] {
|
|
398
|
+
-webkit-backdrop-filter: none;
|
|
399
|
+
backdrop-filter: none;
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
|
|
403
|
+
[data-ui-toast] > [data-part-list] > [data-part-item][data-variant='soft'] {
|
|
377
404
|
--_ground: var(--_tone-surface);
|
|
378
405
|
--_edge: var(--_tone-border);
|
|
379
406
|
/* The tone's own text on the tone's own surface is the pair the theme
|
|
@@ -383,7 +410,7 @@
|
|
|
383
410
|
--_ink-muted: var(--_tone-text);
|
|
384
411
|
}
|
|
385
412
|
|
|
386
|
-
[data-ui
|
|
413
|
+
[data-ui-toast] > [data-part-list] > [data-part-item][data-variant='solid'] {
|
|
387
414
|
--_ground: var(--_solid);
|
|
388
415
|
--_edge: var(--_solid);
|
|
389
416
|
--_ink: var(--_on-solid);
|
|
@@ -426,7 +453,7 @@
|
|
|
426
453
|
* message waiting on a promise with no mark of its own draws none, and the
|
|
427
454
|
* box stays, so the layout does not jump when the spinner becomes a tick.
|
|
428
455
|
*/
|
|
429
|
-
[data-ui
|
|
456
|
+
[data-ui-toast] > [data-part-list] > [data-part-item] > [data-part-icon] {
|
|
430
457
|
--slotted-icon-size: calc(var(--_mark-size) * 12 / 11);
|
|
431
458
|
/**
|
|
432
459
|
* The loading mark is `progress-indicator`'s contained loader, and these
|
|
@@ -466,7 +493,7 @@
|
|
|
466
493
|
* to be clamped too, or an unbreakable word in the title sizes the track to
|
|
467
494
|
* itself and the words run past the box that holds them.
|
|
468
495
|
*/
|
|
469
|
-
[data-ui
|
|
496
|
+
[data-ui-toast] > [data-part-list] > [data-part-item] > [data-part-content] {
|
|
470
497
|
/* The other half of the mark's baseline group: see the mark above. */
|
|
471
498
|
align-self: baseline;
|
|
472
499
|
display: grid;
|
|
@@ -489,11 +516,7 @@
|
|
|
489
516
|
* `Zwischenspeicherung` set the track to 183 pixels inside a box of 155, and
|
|
490
517
|
* the words stood outside the message in every scheme.
|
|
491
518
|
*/
|
|
492
|
-
[data-ui
|
|
493
|
-
> [data-part='list']
|
|
494
|
-
> [data-part='item']
|
|
495
|
-
> [data-part='content']
|
|
496
|
-
> [data-part='title'] {
|
|
519
|
+
[data-ui-toast] > [data-part-list] > [data-part-item] > [data-part-content] > [data-part-title] {
|
|
497
520
|
font-family: var(
|
|
498
521
|
--slotted-toast-title-font-family,
|
|
499
522
|
var(
|
|
@@ -507,11 +530,11 @@
|
|
|
507
530
|
overflow-wrap: anywhere;
|
|
508
531
|
}
|
|
509
532
|
|
|
510
|
-
[data-ui
|
|
511
|
-
> [data-part
|
|
512
|
-
> [data-part
|
|
513
|
-
> [data-part
|
|
514
|
-
> [data-part
|
|
533
|
+
[data-ui-toast]
|
|
534
|
+
> [data-part-list]
|
|
535
|
+
> [data-part-item]
|
|
536
|
+
> [data-part-content]
|
|
537
|
+
> [data-part-description] {
|
|
515
538
|
color: var(--_ink-muted);
|
|
516
539
|
margin: 0;
|
|
517
540
|
min-inline-size: 0;
|
|
@@ -525,7 +548,7 @@
|
|
|
525
548
|
* the consumer's own buttons: `button` already owns what a button is, and
|
|
526
549
|
* naming one of two controls `cancel` would privilege one arrangement.
|
|
527
550
|
*/
|
|
528
|
-
[data-ui
|
|
551
|
+
[data-ui-toast] > [data-part-list] > [data-part-item] > [data-part-actions] {
|
|
529
552
|
align-items: center;
|
|
530
553
|
display: flex;
|
|
531
554
|
flex-wrap: wrap;
|
|
@@ -543,7 +566,7 @@
|
|
|
543
566
|
* margin box is exactly one line and the inset above the message equals the
|
|
544
567
|
* inset below.
|
|
545
568
|
*/
|
|
546
|
-
[data-ui
|
|
569
|
+
[data-ui-toast] > [data-part-list] > [data-part-item] > [data-part-close] {
|
|
547
570
|
/* The cross is the binding's `Glyph` in an `icon` box at the glyph size
|
|
548
571
|
the formula for this box reads. */
|
|
549
572
|
--slotted-icon-size: var(--_glyph-size);
|
|
@@ -579,11 +602,11 @@
|
|
|
579
602
|
|
|
580
603
|
/* `:enabled` is the guard the shared state test requires, and the reason it
|
|
581
604
|
exists: a control the browser has already refused answers no pointer. */
|
|
582
|
-
[data-ui
|
|
605
|
+
[data-ui-toast] > [data-part-list] > [data-part-item] > [data-part-close]:enabled:hover {
|
|
583
606
|
background-color: var(--_state-hover);
|
|
584
607
|
}
|
|
585
608
|
|
|
586
|
-
[data-ui
|
|
609
|
+
[data-ui-toast] > [data-part-list] > [data-part-item] > [data-part-close]:enabled:active {
|
|
587
610
|
background-color: var(--_state-active);
|
|
588
611
|
}
|
|
589
612
|
|
|
@@ -592,11 +615,11 @@
|
|
|
592
615
|
44 pixels, and the ground and the ring stay square. The message clips its
|
|
593
616
|
overflow, so the target ends at the message's padding edge. */
|
|
594
617
|
@media (pointer: coarse) {
|
|
595
|
-
[data-ui
|
|
618
|
+
[data-ui-toast] > [data-part-list] > [data-part-item] > [data-part-close] {
|
|
596
619
|
position: relative;
|
|
597
620
|
}
|
|
598
621
|
|
|
599
|
-
[data-ui
|
|
622
|
+
[data-ui-toast] > [data-part-list] > [data-part-item] > [data-part-close]::after {
|
|
600
623
|
content: '';
|
|
601
624
|
inset: min(0px, calc((100% - var(--slotted-target-comfortable, 44px)) / 2));
|
|
602
625
|
position: absolute;
|
|
@@ -611,8 +634,8 @@
|
|
|
611
634
|
* it exists because `F6` sends the keyboard here — a message the reader
|
|
612
635
|
* cannot see they have arrived at is a message they cannot act on.
|
|
613
636
|
*/
|
|
614
|
-
[data-ui
|
|
615
|
-
[data-ui
|
|
637
|
+
[data-ui-toast] > [data-part-list] > [data-part-item] > [data-part-close]:focus-visible,
|
|
638
|
+
[data-ui-toast] > [data-part-list] > [data-part-item]:focus-visible {
|
|
616
639
|
outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);
|
|
617
640
|
}
|
|
618
641
|
|
|
@@ -621,7 +644,7 @@
|
|
|
621
644
|
* the remaining-time bar has to stop at the rounded corner — and a ring
|
|
622
645
|
* outside a control at that corner would be cut in half by it.
|
|
623
646
|
*/
|
|
624
|
-
[data-ui
|
|
647
|
+
[data-ui-toast] > [data-part-list] > [data-part-item] > [data-part-close]:focus-visible {
|
|
625
648
|
outline-offset: calc(-1 * var(--slotted-focus-ring-width, 2px));
|
|
626
649
|
}
|
|
627
650
|
|
|
@@ -630,7 +653,7 @@
|
|
|
630
653
|
* of the screen, and read on the box itself the ring was a thick blue border
|
|
631
654
|
* rather than a ring around a card.
|
|
632
655
|
*/
|
|
633
|
-
[data-ui
|
|
656
|
+
[data-ui-toast] > [data-part-list] > [data-part-item]:focus-visible {
|
|
634
657
|
outline-offset: var(--slotted-focus-ring-offset, 2px);
|
|
635
658
|
}
|
|
636
659
|
|
|
@@ -643,10 +666,10 @@
|
|
|
643
666
|
* fill, so a solid message adds a halo one ring-width wide just inside it,
|
|
644
667
|
* in the ink its own words are in, for the ring to be read against.
|
|
645
668
|
*/
|
|
646
|
-
[data-ui
|
|
647
|
-
> [data-part
|
|
648
|
-
> [data-part
|
|
649
|
-
> [data-part
|
|
669
|
+
[data-ui-toast]
|
|
670
|
+
> [data-part-list]
|
|
671
|
+
> [data-part-item][data-variant='solid']
|
|
672
|
+
> [data-part-close]:focus-visible {
|
|
650
673
|
box-shadow: inset 0 0 0 calc(2 * var(--slotted-focus-ring-width, 2px)) var(--_on-solid);
|
|
651
674
|
}
|
|
652
675
|
|
|
@@ -664,7 +687,7 @@
|
|
|
664
687
|
* from the inline start in every writing direction with no origin to mirror.
|
|
665
688
|
* The box is positioned, so nothing it does moves a word.
|
|
666
689
|
*/
|
|
667
|
-
[data-ui
|
|
690
|
+
[data-ui-toast] > [data-part-list] > [data-part-item] > [data-part-progress] {
|
|
668
691
|
animation-duration: var(--slotted-toast-duration, var(--slotted-duration-long));
|
|
669
692
|
animation-fill-mode: forwards;
|
|
670
693
|
animation-name: slotted-toast-countdown;
|
|
@@ -688,10 +711,10 @@
|
|
|
688
711
|
* the one ink the contrast test holds against it, held back so it reads as a
|
|
689
712
|
* measure rather than as a second border.
|
|
690
713
|
*/
|
|
691
|
-
[data-ui
|
|
692
|
-
> [data-part
|
|
693
|
-
> [data-part
|
|
694
|
-
> [data-part
|
|
714
|
+
[data-ui-toast]
|
|
715
|
+
> [data-part-list]
|
|
716
|
+
> [data-part-item][data-variant='solid']
|
|
717
|
+
> [data-part-progress] {
|
|
695
718
|
background-color: var(--_on-solid);
|
|
696
719
|
opacity: 0.7;
|
|
697
720
|
}
|
|
@@ -730,12 +753,12 @@
|
|
|
730
753
|
* back in opacity, and the front one, which is the one being read, is at
|
|
731
754
|
* full strength.
|
|
732
755
|
*/
|
|
733
|
-
[data-ui
|
|
756
|
+
[data-ui-toast][data-stacking='stack'] > [data-part-list] {
|
|
734
757
|
display: block;
|
|
735
758
|
position: relative;
|
|
736
759
|
}
|
|
737
760
|
|
|
738
|
-
[data-ui
|
|
761
|
+
[data-ui-toast][data-stacking='stack'] > [data-part-list] > [data-part-item] {
|
|
739
762
|
block-size: var(--slotted-toast-front-height, auto);
|
|
740
763
|
inset-inline: 0;
|
|
741
764
|
position: absolute;
|
|
@@ -756,20 +779,20 @@
|
|
|
756
779
|
* everything behind it share one strength: below that the pile is a stack of
|
|
757
780
|
* ghosts, and only the front two edges are showing anyway.
|
|
758
781
|
*/
|
|
759
|
-
[data-ui
|
|
782
|
+
[data-ui-toast][data-stacking='stack'] > [data-part-list] > [data-part-item][data-open] {
|
|
760
783
|
opacity: calc(1 - min(var(--slotted-toast-index, 0), 2) * var(--_stack-fade));
|
|
761
784
|
}
|
|
762
785
|
|
|
763
|
-
[data-ui
|
|
764
|
-
> [data-part
|
|
765
|
-
> [data-part
|
|
786
|
+
[data-ui-toast][data-stacking='stack'][data-placement^='bottom']
|
|
787
|
+
> [data-part-list]
|
|
788
|
+
> [data-part-item] {
|
|
766
789
|
inset-block-end: 0;
|
|
767
790
|
translate: 0 calc(-1 * var(--slotted-toast-index, 0) * var(--_stack-step));
|
|
768
791
|
}
|
|
769
792
|
|
|
770
|
-
[data-ui
|
|
771
|
-
> [data-part
|
|
772
|
-
> [data-part
|
|
793
|
+
[data-ui-toast][data-stacking='stack'][data-placement^='top']
|
|
794
|
+
> [data-part-list]
|
|
795
|
+
> [data-part-item] {
|
|
773
796
|
inset-block-start: 0;
|
|
774
797
|
translate: 0 calc(var(--slotted-toast-index, 0) * var(--_stack-step));
|
|
775
798
|
}
|
|
@@ -779,9 +802,7 @@
|
|
|
779
802
|
* column, and the gap between two of them is the region's own gap — the
|
|
780
803
|
* offset script writes already carries it.
|
|
781
804
|
*/
|
|
782
|
-
[data-ui
|
|
783
|
-
> [data-part='list']
|
|
784
|
-
> [data-part='item'] {
|
|
805
|
+
[data-ui-toast][data-stacking='stack'][data-expanded] > [data-part-list] > [data-part-item] {
|
|
785
806
|
block-size: var(--slotted-toast-height, auto);
|
|
786
807
|
}
|
|
787
808
|
|
|
@@ -793,25 +814,25 @@
|
|
|
793
814
|
* messages hang from the list's edge at `placement`, so the list grows away
|
|
794
815
|
* from that edge and nothing it holds moves.
|
|
795
816
|
*/
|
|
796
|
-
[data-ui
|
|
817
|
+
[data-ui-toast][data-stacking='stack'][data-expanded] > [data-part-list] {
|
|
797
818
|
block-size: var(--slotted-toast-stack-height, auto);
|
|
798
819
|
}
|
|
799
820
|
|
|
800
|
-
[data-ui
|
|
801
|
-
> [data-part
|
|
802
|
-
> [data-part
|
|
821
|
+
[data-ui-toast][data-stacking='stack'][data-expanded]
|
|
822
|
+
> [data-part-list]
|
|
823
|
+
> [data-part-item][data-open] {
|
|
803
824
|
opacity: 1;
|
|
804
825
|
}
|
|
805
826
|
|
|
806
|
-
[data-ui
|
|
807
|
-
> [data-part
|
|
808
|
-
> [data-part
|
|
827
|
+
[data-ui-toast][data-stacking='stack'][data-expanded][data-placement^='bottom']
|
|
828
|
+
> [data-part-list]
|
|
829
|
+
> [data-part-item] {
|
|
809
830
|
translate: 0 calc(-1 * var(--slotted-toast-stack-offset, 0px));
|
|
810
831
|
}
|
|
811
832
|
|
|
812
|
-
[data-ui
|
|
813
|
-
> [data-part
|
|
814
|
-
> [data-part
|
|
833
|
+
[data-ui-toast][data-stacking='stack'][data-expanded][data-placement^='top']
|
|
834
|
+
> [data-part-list]
|
|
835
|
+
> [data-part-item] {
|
|
815
836
|
translate: 0 var(--slotted-toast-stack-offset, 0px);
|
|
816
837
|
}
|
|
817
838
|
|
|
@@ -821,11 +842,11 @@
|
|
|
821
842
|
* `min()` is what turns an index into that rule without a rule per depth —
|
|
822
843
|
* the front message resolves to one and every other to zero.
|
|
823
844
|
*/
|
|
824
|
-
[data-ui
|
|
845
|
+
[data-ui-toast][data-stacking='stack'] > [data-part-list] > [data-part-item] > * {
|
|
825
846
|
transition: opacity var(--slotted-duration-medium) var(--slotted-easing-standard);
|
|
826
847
|
}
|
|
827
848
|
|
|
828
|
-
[data-ui
|
|
849
|
+
[data-ui-toast][data-stacking='stack']:not([data-expanded]) [data-part-item] > * {
|
|
829
850
|
opacity: calc(1 - min(1, var(--slotted-toast-index, 0)));
|
|
830
851
|
}
|
|
831
852
|
|
|
@@ -837,7 +858,7 @@
|
|
|
837
858
|
* message follows it exactly, with no transition in the way: a drag that
|
|
838
859
|
* lags the finger reads as a stuck interface.
|
|
839
860
|
*/
|
|
840
|
-
[data-ui
|
|
861
|
+
[data-ui-toast] > [data-part-list] > [data-part-item][data-dragging] {
|
|
841
862
|
cursor: grabbing;
|
|
842
863
|
transition: none;
|
|
843
864
|
translate: var(--slotted-toast-swipe-x, 0px) var(--slotted-toast-swipe-y, 0px);
|
|
@@ -846,7 +867,7 @@
|
|
|
846
867
|
user-select: none;
|
|
847
868
|
}
|
|
848
869
|
|
|
849
|
-
[data-ui
|
|
870
|
+
[data-ui-toast][data-swipe='true'] > [data-part-list] > [data-part-item] {
|
|
850
871
|
touch-action: none;
|
|
851
872
|
}
|
|
852
873
|
|
|
@@ -859,7 +880,7 @@
|
|
|
859
880
|
* container condition.
|
|
860
881
|
*/
|
|
861
882
|
@container slotted-toast (max-width: 20rem) {
|
|
862
|
-
[data-ui
|
|
883
|
+
[data-ui-toast] > [data-part-list] > [data-part-item] {
|
|
863
884
|
--_inset-block: var(--slotted-toast-padding-block, var(--slotted-space-4, 0.5rem));
|
|
864
885
|
--_inset-inline: var(--slotted-toast-padding-inline, var(--slotted-space-5, 0.75rem));
|
|
865
886
|
}
|
|
@@ -870,7 +891,7 @@
|
|
|
870
891
|
* the control, and `button` already ships `fullWidth` for a consumer who
|
|
871
892
|
* wants otherwise.
|
|
872
893
|
*/
|
|
873
|
-
[data-ui
|
|
894
|
+
[data-ui-toast] > [data-part-list] > [data-part-item] > [data-part-actions] {
|
|
874
895
|
align-items: flex-start;
|
|
875
896
|
flex-direction: column;
|
|
876
897
|
}
|
|
@@ -885,11 +906,11 @@
|
|
|
885
906
|
* own fill and a transparent border is not a colour the system remaps.
|
|
886
907
|
*/
|
|
887
908
|
@media (forced-colors: active) {
|
|
888
|
-
[data-ui
|
|
909
|
+
[data-ui-toast] > [data-part-list] > [data-part-item] {
|
|
889
910
|
border-color: CanvasText;
|
|
890
911
|
}
|
|
891
912
|
|
|
892
|
-
[data-ui
|
|
913
|
+
[data-ui-toast] > [data-part-list] > [data-part-item] > [data-part-icon] {
|
|
893
914
|
color: CanvasText;
|
|
894
915
|
}
|
|
895
916
|
|
|
@@ -897,15 +918,12 @@
|
|
|
897
918
|
* The control's glyph is stroked in `currentcolor`, so giving the control
|
|
898
919
|
* a system colour repaints it, and the mark's slot the same.
|
|
899
920
|
*/
|
|
900
|
-
[data-ui
|
|
921
|
+
[data-ui-toast] > [data-part-list] > [data-part-item] > [data-part-close] {
|
|
901
922
|
color: CanvasText;
|
|
902
923
|
}
|
|
903
924
|
|
|
904
|
-
[data-ui
|
|
905
|
-
[data-ui
|
|
906
|
-
> [data-part='list']
|
|
907
|
-
> [data-part='item']
|
|
908
|
-
> [data-part='close']:enabled:active {
|
|
925
|
+
[data-ui-toast] > [data-part-list] > [data-part-item] > [data-part-close]:enabled:hover,
|
|
926
|
+
[data-ui-toast] > [data-part-list] > [data-part-item] > [data-part-close]:enabled:active {
|
|
909
927
|
background-color: Highlight;
|
|
910
928
|
color: HighlightText;
|
|
911
929
|
}
|
|
@@ -914,7 +932,7 @@
|
|
|
914
932
|
* A bar of system ink under every message, shortening, is a moving line
|
|
915
933
|
* with no colour to say what it belongs to. The message still expires.
|
|
916
934
|
*/
|
|
917
|
-
[data-ui
|
|
935
|
+
[data-ui-toast] > [data-part-list] > [data-part-item] > [data-part-progress] {
|
|
918
936
|
background-color: CanvasText;
|
|
919
937
|
opacity: 1;
|
|
920
938
|
}
|
|
@@ -935,7 +953,7 @@
|
|
|
935
953
|
* reached over the declared one, and the `timing` scene froze at 80 per cent.
|
|
936
954
|
*/
|
|
937
955
|
@media (prefers-reduced-motion: reduce) {
|
|
938
|
-
[data-ui
|
|
956
|
+
[data-ui-toast] > [data-part-list] > [data-part-item] > [data-part-progress] {
|
|
939
957
|
animation-name: none;
|
|
940
958
|
inline-size: 100%;
|
|
941
959
|
}
|
|
@@ -36,6 +36,7 @@
|
|
|
36
36
|
"--slotted-text",
|
|
37
37
|
"--slotted-text-muted",
|
|
38
38
|
"--slotted-toast-actions-gap",
|
|
39
|
+
"--slotted-toast-backdrop-filter",
|
|
39
40
|
"--slotted-toast-border-color",
|
|
40
41
|
"--slotted-toast-border-width",
|
|
41
42
|
"--slotted-toast-close-radius",
|
|
@@ -71,6 +72,11 @@
|
|
|
71
72
|
"--slotted-tone-danger-solid",
|
|
72
73
|
"--slotted-tone-danger-surface",
|
|
73
74
|
"--slotted-tone-danger-text",
|
|
75
|
+
"--slotted-tone-info-border",
|
|
76
|
+
"--slotted-tone-info-on-solid",
|
|
77
|
+
"--slotted-tone-info-solid",
|
|
78
|
+
"--slotted-tone-info-surface",
|
|
79
|
+
"--slotted-tone-info-text",
|
|
74
80
|
"--slotted-tone-secondary-border",
|
|
75
81
|
"--slotted-tone-secondary-on-solid",
|
|
76
82
|
"--slotted-tone-secondary-solid",
|