@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
package/src/drawer/drawer.css
CHANGED
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
* a drawer is the ordinary case, and a descendant rule would paint the inner
|
|
37
37
|
* panel with the outer panel's geometry.
|
|
38
38
|
*/
|
|
39
|
-
[data-ui
|
|
39
|
+
[data-ui-drawer] {
|
|
40
40
|
/**
|
|
41
41
|
* The panel's resting measure, per size step. Five named steps rather than
|
|
42
42
|
* the pixel string Ant and MUI both take: a theme retunes a step and cannot
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
/**
|
|
48
48
|
* What the panel actually measures. `--slotted-drawer-extent` is the one
|
|
49
49
|
* name for it, and it is read from two places: an application setting one
|
|
50
|
-
* measure for every drawer writes it on `[data-ui
|
|
50
|
+
* measure for every drawer writes it on `[data-ui-drawer]`, and the
|
|
51
51
|
* binding writes the length the reader dragged to as an inline custom
|
|
52
52
|
* property on this element. Both are lengths, so the cascade decides
|
|
53
53
|
* between them the way it decides everything else.
|
|
@@ -176,7 +176,7 @@
|
|
|
176
176
|
}
|
|
177
177
|
|
|
178
178
|
/** Leaving is shorter than arriving: a reader who has decided is waiting. */
|
|
179
|
-
[data-ui
|
|
179
|
+
[data-ui-drawer]:not([data-open]) {
|
|
180
180
|
--_slide: var(--slotted-duration-medium) var(--slotted-easing-exit);
|
|
181
181
|
--_move: var(--slotted-duration-medium) var(--slotted-easing-exit);
|
|
182
182
|
}
|
|
@@ -186,27 +186,27 @@
|
|
|
186
186
|
* every pointer position would lag the hand by the whole duration, and a
|
|
187
187
|
* bottom sheet the reader is pulling has to follow it.
|
|
188
188
|
*/
|
|
189
|
-
[data-ui
|
|
189
|
+
[data-ui-drawer][data-dragging] {
|
|
190
190
|
--_move: var(--slotted-duration-instant) var(--slotted-easing-standard);
|
|
191
191
|
}
|
|
192
192
|
|
|
193
|
-
[data-ui
|
|
193
|
+
[data-ui-drawer][data-size='sm'] {
|
|
194
194
|
--_step: var(--slotted-drawer-extent-sm, 18rem);
|
|
195
195
|
--_padding-inline: var(--slotted-space-6, 1rem);
|
|
196
196
|
}
|
|
197
197
|
|
|
198
|
-
[data-ui
|
|
198
|
+
[data-ui-drawer][data-size='lg'] {
|
|
199
199
|
--_step: var(--slotted-drawer-extent-lg, 30rem);
|
|
200
200
|
}
|
|
201
201
|
|
|
202
|
-
[data-ui
|
|
202
|
+
[data-ui-drawer][data-size='xl'] {
|
|
203
203
|
--_step: var(--slotted-drawer-extent-xl, 40rem);
|
|
204
204
|
--_padding-inline: var(--slotted-space-8, 1.5rem);
|
|
205
205
|
--_title-font-size: var(--slotted-font-size-xl, 1.125rem);
|
|
206
206
|
}
|
|
207
207
|
|
|
208
208
|
/** The step a drawer that is a page takes: the whole layer, and no measure. */
|
|
209
|
-
[data-ui
|
|
209
|
+
[data-ui-drawer][data-size='full'] {
|
|
210
210
|
--_step: 100%;
|
|
211
211
|
}
|
|
212
212
|
|
|
@@ -218,7 +218,7 @@
|
|
|
218
218
|
* over a dialog is one step above it on the single stack the library keeps
|
|
219
219
|
* rather than a number this stylesheet guessed.
|
|
220
220
|
*/
|
|
221
|
-
[data-ui
|
|
221
|
+
[data-ui-drawer][data-mode='overlay'] {
|
|
222
222
|
position: fixed;
|
|
223
223
|
inset: 0;
|
|
224
224
|
z-index: calc(var(--slotted-z-index-overlay, 1000) + var(--slotted-layer-depth, 0));
|
|
@@ -235,20 +235,20 @@
|
|
|
235
235
|
* a mode here, because a family writing a margin on an element it does not
|
|
236
236
|
* own is a family deciding someone else's layout.
|
|
237
237
|
*/
|
|
238
|
-
[data-ui
|
|
238
|
+
[data-ui-drawer][data-mode='inline'] {
|
|
239
239
|
overflow: clip;
|
|
240
240
|
}
|
|
241
241
|
|
|
242
|
-
[data-ui
|
|
243
|
-
[data-ui
|
|
242
|
+
[data-ui-drawer][data-mode='inline'][data-side='start'],
|
|
243
|
+
[data-ui-drawer][data-mode='inline'][data-side='end'] {
|
|
244
244
|
inline-size: 0;
|
|
245
245
|
transition:
|
|
246
246
|
inline-size var(--_move),
|
|
247
247
|
var(--_reveal);
|
|
248
248
|
}
|
|
249
249
|
|
|
250
|
-
[data-ui
|
|
251
|
-
[data-ui
|
|
250
|
+
[data-ui-drawer][data-mode='inline'][data-side='top'],
|
|
251
|
+
[data-ui-drawer][data-mode='inline'][data-side='bottom'] {
|
|
252
252
|
block-size: 0;
|
|
253
253
|
transition:
|
|
254
254
|
block-size var(--_move),
|
|
@@ -269,14 +269,14 @@
|
|
|
269
269
|
* to nought, and a cap against a box on its way to nought is what would
|
|
270
270
|
* rewrap the panel on the way out.
|
|
271
271
|
*/
|
|
272
|
-
[data-ui
|
|
273
|
-
[data-ui
|
|
272
|
+
[data-ui-drawer][data-mode='inline'][data-open][data-side='start'],
|
|
273
|
+
[data-ui-drawer][data-mode='inline'][data-open][data-side='end'] {
|
|
274
274
|
inline-size: var(--_extent);
|
|
275
275
|
max-inline-size: 100%;
|
|
276
276
|
}
|
|
277
277
|
|
|
278
|
-
[data-ui
|
|
279
|
-
[data-ui
|
|
278
|
+
[data-ui-drawer][data-mode='inline'][data-open][data-side='top'],
|
|
279
|
+
[data-ui-drawer][data-mode='inline'][data-open][data-side='bottom'] {
|
|
280
280
|
block-size: var(--_extent);
|
|
281
281
|
max-block-size: 100%;
|
|
282
282
|
}
|
|
@@ -290,7 +290,7 @@
|
|
|
290
290
|
* `data-open`: the entering frame has no `data-open` either, and a hidden
|
|
291
291
|
* panel in that frame refuses the focus scope's initial focus.
|
|
292
292
|
*/
|
|
293
|
-
[data-ui
|
|
293
|
+
[data-ui-drawer][inert] {
|
|
294
294
|
content-visibility: hidden;
|
|
295
295
|
pointer-events: none;
|
|
296
296
|
}
|
|
@@ -304,7 +304,7 @@
|
|
|
304
304
|
* is `none` in that mode, and a panel separated only by elevation would sit on
|
|
305
305
|
* an opaque ground with nothing marking where it starts.
|
|
306
306
|
*/
|
|
307
|
-
[data-ui
|
|
307
|
+
[data-ui-drawer] > [data-part-backdrop] {
|
|
308
308
|
grid-area: 1 / 1;
|
|
309
309
|
background: var(--slotted-drawer-scrim, var(--slotted-scrim, Canvas));
|
|
310
310
|
opacity: 0;
|
|
@@ -321,7 +321,7 @@
|
|
|
321
321
|
* close is waiting, and the page behind is back before the panel has finished
|
|
322
322
|
* going.
|
|
323
323
|
*/
|
|
324
|
-
[data-ui
|
|
324
|
+
[data-ui-drawer][data-open] > [data-part-backdrop] {
|
|
325
325
|
opacity: 1;
|
|
326
326
|
transition: opacity var(--slotted-duration-long) var(--slotted-easing-standard);
|
|
327
327
|
}
|
|
@@ -334,7 +334,7 @@
|
|
|
334
334
|
* body is long — the failure Vaul, MUI and Angular Material all leave to each
|
|
335
335
|
* consumer's own CSS, because none of the three ships a layout.
|
|
336
336
|
*/
|
|
337
|
-
[data-ui
|
|
337
|
+
[data-ui-drawer] > [data-part-panel] {
|
|
338
338
|
grid-area: 1 / 1;
|
|
339
339
|
box-sizing: border-box;
|
|
340
340
|
/**
|
|
@@ -403,7 +403,7 @@
|
|
|
403
403
|
* physical axis, and a start-side panel leaves toward the left of a
|
|
404
404
|
* left-to-right document and toward the right of a mirrored one.
|
|
405
405
|
*/
|
|
406
|
-
[data-ui
|
|
406
|
+
[data-ui-drawer][data-mode='overlay'] > [data-part-panel] {
|
|
407
407
|
box-shadow: var(--slotted-shadow-lg);
|
|
408
408
|
translate: 0 0;
|
|
409
409
|
/* The measure is restated here, or this rule would replace the base one:
|
|
@@ -412,10 +412,12 @@
|
|
|
412
412
|
transition:
|
|
413
413
|
translate var(--_slide),
|
|
414
414
|
inline-size var(--_move),
|
|
415
|
-
block-size var(--_move)
|
|
415
|
+
block-size var(--_move),
|
|
416
|
+
border-start-start-radius var(--_move),
|
|
417
|
+
border-start-end-radius var(--_move);
|
|
416
418
|
}
|
|
417
419
|
|
|
418
|
-
[data-ui
|
|
420
|
+
[data-ui-drawer][data-mode='overlay']:not([data-open]) > [data-part-panel] {
|
|
419
421
|
translate: var(--_shift-x, 0) var(--_shift-y, 0);
|
|
420
422
|
}
|
|
421
423
|
|
|
@@ -435,18 +437,18 @@
|
|
|
435
437
|
* transition here would put the panel behind the hand by the whole duration.
|
|
436
438
|
* The slide stays, because a panel released mid-gesture still has an exit.
|
|
437
439
|
*/
|
|
438
|
-
[data-ui
|
|
440
|
+
[data-ui-drawer][data-dragging] > [data-part-panel] {
|
|
439
441
|
transition: none;
|
|
440
442
|
}
|
|
441
443
|
|
|
442
|
-
[data-ui
|
|
444
|
+
[data-ui-drawer][data-dragging][data-mode='overlay'] > [data-part-panel] {
|
|
443
445
|
transition: translate var(--_slide);
|
|
444
446
|
}
|
|
445
447
|
|
|
446
|
-
[data-ui
|
|
447
|
-
[data-ui
|
|
448
|
-
[data-ui
|
|
449
|
-
[data-ui
|
|
448
|
+
[data-ui-drawer][data-dragging][data-mode='inline'][data-side='start'],
|
|
449
|
+
[data-ui-drawer][data-dragging][data-mode='inline'][data-side='end'],
|
|
450
|
+
[data-ui-drawer][data-dragging][data-mode='inline'][data-side='top'],
|
|
451
|
+
[data-ui-drawer][data-dragging][data-mode='inline'][data-side='bottom'] {
|
|
450
452
|
transition: var(--_reveal);
|
|
451
453
|
}
|
|
452
454
|
|
|
@@ -456,7 +458,7 @@
|
|
|
456
458
|
* closed panel sits at rest because the layer hides it whole, above.
|
|
457
459
|
*/
|
|
458
460
|
@media (prefers-reduced-motion: reduce) {
|
|
459
|
-
[data-ui
|
|
461
|
+
[data-ui-drawer][data-mode='overlay'] > [data-part-panel] {
|
|
460
462
|
translate: 0 0;
|
|
461
463
|
transition:
|
|
462
464
|
inline-size var(--_move),
|
|
@@ -466,20 +468,20 @@
|
|
|
466
468
|
|
|
467
469
|
/* ── Where the panel sits, and where it goes when it leaves ───────────── */
|
|
468
470
|
|
|
469
|
-
[data-ui
|
|
470
|
-
[data-ui
|
|
471
|
+
[data-ui-drawer][data-side='start'] > [data-part-panel],
|
|
472
|
+
[data-ui-drawer][data-side='end'] > [data-part-panel] {
|
|
471
473
|
align-self: stretch;
|
|
472
474
|
inline-size: min(var(--_extent), 100%);
|
|
473
475
|
grid-template-rows: auto minmax(0, 1fr) auto;
|
|
474
476
|
}
|
|
475
477
|
|
|
476
|
-
[data-ui
|
|
477
|
-
[data-ui
|
|
478
|
+
[data-ui-drawer][data-side='top'] > [data-part-panel],
|
|
479
|
+
[data-ui-drawer][data-side='bottom'] > [data-part-panel] {
|
|
478
480
|
justify-self: stretch;
|
|
479
481
|
block-size: min(var(--_extent), 100%);
|
|
480
482
|
}
|
|
481
483
|
|
|
482
|
-
[data-ui
|
|
484
|
+
[data-ui-drawer][data-side='start'] > [data-part-panel] {
|
|
483
485
|
justify-self: start;
|
|
484
486
|
--_shift-x: -100%;
|
|
485
487
|
/* The resizer lies over this edge, so the rows keep clear of it. */
|
|
@@ -487,7 +489,7 @@
|
|
|
487
489
|
border-inline-end-width: var(--_rule-size);
|
|
488
490
|
}
|
|
489
491
|
|
|
490
|
-
[data-ui
|
|
492
|
+
[data-ui-drawer][data-side='end'] > [data-part-panel] {
|
|
491
493
|
justify-self: end;
|
|
492
494
|
--_shift-x: 100%;
|
|
493
495
|
--_row-padding-inline-start: max(var(--_padding-inline), var(--_resizer-thickness));
|
|
@@ -507,7 +509,7 @@
|
|
|
507
509
|
* resizer would otherwise put its body in an `auto` track and lose the one
|
|
508
510
|
* declaration that keeps the footer on screen.
|
|
509
511
|
*/
|
|
510
|
-
[data-ui
|
|
512
|
+
[data-ui-drawer][data-side='top'] > [data-part-panel] {
|
|
511
513
|
align-self: start;
|
|
512
514
|
grid-template-rows: auto minmax(0, 1fr) auto auto;
|
|
513
515
|
--_shift-y: -100%;
|
|
@@ -516,7 +518,7 @@
|
|
|
516
518
|
border-end-end-radius: var(--slotted-drawer-radius, var(--_radius));
|
|
517
519
|
}
|
|
518
520
|
|
|
519
|
-
[data-ui
|
|
521
|
+
[data-ui-drawer][data-side='bottom'] > [data-part-panel] {
|
|
520
522
|
align-self: end;
|
|
521
523
|
grid-template-rows: auto auto minmax(0, 1fr) auto;
|
|
522
524
|
--_shift-y: 100%;
|
|
@@ -525,20 +527,36 @@
|
|
|
525
527
|
border-start-end-radius: var(--slotted-drawer-radius, var(--_radius));
|
|
526
528
|
}
|
|
527
529
|
|
|
530
|
+
/**
|
|
531
|
+
* A sheet that reaches the top of the layer is the screen, Material 3's
|
|
532
|
+
* expanded bottom sheet: its top corners square — a theme keeps a radius
|
|
533
|
+
* with `--slotted-drawer-radius-expanded` — and its header clears the safe
|
|
534
|
+
* area the status bar takes. The binding writes `data-expanded` while the
|
|
535
|
+
* extent is the whole layer, and under `size="full"`.
|
|
536
|
+
*/
|
|
537
|
+
[data-ui-drawer][data-side='bottom'][data-expanded] > [data-part-panel] {
|
|
538
|
+
border-start-start-radius: var(--slotted-drawer-radius-expanded, 0px);
|
|
539
|
+
border-start-end-radius: var(--slotted-drawer-radius-expanded, 0px);
|
|
540
|
+
}
|
|
541
|
+
|
|
542
|
+
[data-ui-drawer][data-side='bottom'][data-expanded] > [data-part-panel] > [data-part-header] {
|
|
543
|
+
padding-block-start: calc(var(--_padding-block) + env(safe-area-inset-top, 0px));
|
|
544
|
+
}
|
|
545
|
+
|
|
528
546
|
/**
|
|
529
547
|
* A sheet's separator takes the first row, so the three that follow move down
|
|
530
548
|
* one. `top` needs no such rule: its separator is the fourth row and the
|
|
531
549
|
* three above it are already where the base puts them.
|
|
532
550
|
*/
|
|
533
|
-
[data-ui
|
|
551
|
+
[data-ui-drawer][data-side='bottom'] > [data-part-panel] > [data-part-header] {
|
|
534
552
|
grid-row: 2;
|
|
535
553
|
}
|
|
536
554
|
|
|
537
|
-
[data-ui
|
|
555
|
+
[data-ui-drawer][data-side='bottom'] > [data-part-panel] > [data-part-body] {
|
|
538
556
|
grid-row: 3;
|
|
539
557
|
}
|
|
540
558
|
|
|
541
|
-
[data-ui
|
|
559
|
+
[data-ui-drawer][data-side='bottom'] > [data-part-panel] > [data-part-footer] {
|
|
542
560
|
grid-row: 4;
|
|
543
561
|
}
|
|
544
562
|
|
|
@@ -550,8 +568,8 @@
|
|
|
550
568
|
* edge then shows on three sides, so the panel draws it on three; on a phone
|
|
551
569
|
* the two side edges sit on the screen's own and read as nothing.
|
|
552
570
|
*/
|
|
553
|
-
[data-ui
|
|
554
|
-
[data-ui
|
|
571
|
+
[data-ui-drawer][data-mode='overlay'][data-side='top'] > [data-part-panel],
|
|
572
|
+
[data-ui-drawer][data-mode='overlay'][data-side='bottom'] > [data-part-panel] {
|
|
555
573
|
justify-self: center;
|
|
556
574
|
inline-size: min(
|
|
557
575
|
100%,
|
|
@@ -574,7 +592,7 @@
|
|
|
574
592
|
* arrives while the sheet is open, and a release back onto the content stop. A
|
|
575
593
|
* browser without it jumps, and nothing else changes.
|
|
576
594
|
*/
|
|
577
|
-
[data-ui
|
|
595
|
+
[data-ui-drawer][data-size='content'] {
|
|
578
596
|
--_step: auto;
|
|
579
597
|
--_content-cap: min(
|
|
580
598
|
var(--slotted-drawer-extent, calc(100% - var(--slotted-space-12, 4rem))),
|
|
@@ -583,19 +601,19 @@
|
|
|
583
601
|
interpolate-size: allow-keywords;
|
|
584
602
|
}
|
|
585
603
|
|
|
586
|
-
[data-ui
|
|
587
|
-
[data-ui
|
|
604
|
+
[data-ui-drawer][data-size='content'][data-side='start'],
|
|
605
|
+
[data-ui-drawer][data-size='content'][data-side='end'] {
|
|
588
606
|
--_step: max-content;
|
|
589
607
|
}
|
|
590
608
|
|
|
591
|
-
[data-ui
|
|
592
|
-
[data-ui
|
|
609
|
+
[data-ui-drawer][data-size='content'][data-side='start'] > [data-part-panel],
|
|
610
|
+
[data-ui-drawer][data-size='content'][data-side='end'] > [data-part-panel] {
|
|
593
611
|
inline-size: var(--_extent);
|
|
594
612
|
max-inline-size: var(--_content-cap);
|
|
595
613
|
}
|
|
596
614
|
|
|
597
|
-
[data-ui
|
|
598
|
-
[data-ui
|
|
615
|
+
[data-ui-drawer][data-size='content'][data-side='top'] > [data-part-panel],
|
|
616
|
+
[data-ui-drawer][data-size='content'][data-side='bottom'] > [data-part-panel] {
|
|
599
617
|
block-size: var(--_extent);
|
|
600
618
|
max-block-size: var(--_content-cap);
|
|
601
619
|
}
|
|
@@ -606,7 +624,7 @@
|
|
|
606
624
|
* cell the panel sits in shrinks by it, so a sheet lands above the keys and a
|
|
607
625
|
* side panel's footer does too, and every `100%` cap shrinks with the cell.
|
|
608
626
|
*/
|
|
609
|
-
[data-ui
|
|
627
|
+
[data-ui-drawer][data-mode='overlay'] {
|
|
610
628
|
padding-block-end: var(--slotted-keyboard-inset, 0px);
|
|
611
629
|
}
|
|
612
630
|
|
|
@@ -616,18 +634,18 @@
|
|
|
616
634
|
* press on it reaches it. The opacity keeps the transition the scrim already
|
|
617
635
|
* has, so crossing the stop fades rather than blinks.
|
|
618
636
|
*/
|
|
619
|
-
[data-ui
|
|
637
|
+
[data-ui-drawer][data-undimmed] > [data-part-backdrop] {
|
|
620
638
|
opacity: 0;
|
|
621
639
|
pointer-events: none;
|
|
622
640
|
}
|
|
623
641
|
|
|
624
642
|
/* The layer is fixed over the whole viewport, so the scrim alone letting the
|
|
625
643
|
press through leaves the root to catch it; the panel takes it back. */
|
|
626
|
-
[data-ui
|
|
644
|
+
[data-ui-drawer][data-undimmed] {
|
|
627
645
|
pointer-events: none;
|
|
628
646
|
}
|
|
629
647
|
|
|
630
|
-
[data-ui
|
|
648
|
+
[data-ui-drawer][data-undimmed] > [data-part-panel] {
|
|
631
649
|
pointer-events: auto;
|
|
632
650
|
}
|
|
633
651
|
|
|
@@ -636,16 +654,16 @@
|
|
|
636
654
|
* sits over its end. The inset is padding inside the scrollport, so the last
|
|
637
655
|
* line scrolls clear of the indicator rather than stopping under it.
|
|
638
656
|
*/
|
|
639
|
-
[data-ui
|
|
657
|
+
[data-ui-drawer][data-side='bottom'] > [data-part-panel] > [data-part-body]:last-child {
|
|
640
658
|
padding-block-end: calc(var(--_padding-block) + env(safe-area-inset-bottom, 0px));
|
|
641
659
|
}
|
|
642
660
|
|
|
643
661
|
/** `start` is the left edge in one direction and the right edge in the other. */
|
|
644
|
-
[data-ui
|
|
662
|
+
[data-ui-drawer][data-side='start']:dir(rtl) > [data-part-panel] {
|
|
645
663
|
--_shift-x: 100%;
|
|
646
664
|
}
|
|
647
665
|
|
|
648
|
-
[data-ui
|
|
666
|
+
[data-ui-drawer][data-side='end']:dir(rtl) > [data-part-panel] {
|
|
649
667
|
--_shift-x: -100%;
|
|
650
668
|
}
|
|
651
669
|
|
|
@@ -661,7 +679,7 @@
|
|
|
661
679
|
* step, because a container condition cannot hold a custom property — buy one
|
|
662
680
|
* hairline at the extreme edge of the viewport.
|
|
663
681
|
*/
|
|
664
|
-
[data-ui
|
|
682
|
+
[data-ui-drawer][data-size='full'] > [data-part-panel] {
|
|
665
683
|
border-width: 0;
|
|
666
684
|
border-radius: 0;
|
|
667
685
|
}
|
|
@@ -671,13 +689,13 @@
|
|
|
671
689
|
* from, which is what `overflow: clip` on the root is for. `min(…, 100%)`
|
|
672
690
|
* would resolve against a box that is on its way to nought.
|
|
673
691
|
*/
|
|
674
|
-
[data-ui
|
|
675
|
-
[data-ui
|
|
692
|
+
[data-ui-drawer][data-mode='inline'][data-side='start'] > [data-part-panel],
|
|
693
|
+
[data-ui-drawer][data-mode='inline'][data-side='end'] > [data-part-panel] {
|
|
676
694
|
inline-size: var(--_extent);
|
|
677
695
|
}
|
|
678
696
|
|
|
679
|
-
[data-ui
|
|
680
|
-
[data-ui
|
|
697
|
+
[data-ui-drawer][data-mode='inline'][data-side='top'] > [data-part-panel],
|
|
698
|
+
[data-ui-drawer][data-mode='inline'][data-side='bottom'] > [data-part-panel] {
|
|
681
699
|
block-size: var(--_extent);
|
|
682
700
|
}
|
|
683
701
|
|
|
@@ -688,13 +706,13 @@
|
|
|
688
706
|
* a worse picture than one that wrapped. The cap is on `[data-open]` for the
|
|
689
707
|
* reason the root's is.
|
|
690
708
|
*/
|
|
691
|
-
[data-ui
|
|
692
|
-
[data-ui
|
|
709
|
+
[data-ui-drawer][data-mode='inline'][data-open][data-side='start'] > [data-part-panel],
|
|
710
|
+
[data-ui-drawer][data-mode='inline'][data-open][data-side='end'] > [data-part-panel] {
|
|
693
711
|
max-inline-size: 100%;
|
|
694
712
|
}
|
|
695
713
|
|
|
696
|
-
[data-ui
|
|
697
|
-
[data-ui
|
|
714
|
+
[data-ui-drawer][data-mode='inline'][data-open][data-side='top'] > [data-part-panel],
|
|
715
|
+
[data-ui-drawer][data-mode='inline'][data-open][data-side='bottom'] > [data-part-panel] {
|
|
698
716
|
max-block-size: 100%;
|
|
699
717
|
}
|
|
700
718
|
|
|
@@ -753,7 +771,7 @@
|
|
|
753
771
|
*
|
|
754
772
|
* `touch-action: none` so a drag is not read as a scroll on the way past.
|
|
755
773
|
*/
|
|
756
|
-
[data-ui
|
|
774
|
+
[data-ui-drawer] > [data-part-panel] > [data-part-resizer] {
|
|
757
775
|
display: flex;
|
|
758
776
|
align-items: center;
|
|
759
777
|
justify-content: center;
|
|
@@ -781,16 +799,14 @@
|
|
|
781
799
|
}
|
|
782
800
|
|
|
783
801
|
/* Under the hand the gap closes and the marks read as one. */
|
|
784
|
-
[data-ui
|
|
785
|
-
[data-ui
|
|
786
|
-
|
|
787
|
-
> [data-part='resizer']:not([data-disabled]):focus-visible,
|
|
788
|
-
[data-ui='drawer'][data-dragging] > [data-part='panel'] > [data-part='resizer'] {
|
|
802
|
+
[data-ui-drawer] > [data-part-panel] > [data-part-resizer]:not([data-disabled]):hover,
|
|
803
|
+
[data-ui-drawer] > [data-part-panel] > [data-part-resizer]:not([data-disabled]):focus-visible,
|
|
804
|
+
[data-ui-drawer][data-dragging] > [data-part-panel] > [data-part-resizer] {
|
|
789
805
|
gap: var(--slotted-space-4, 0.5rem);
|
|
790
806
|
}
|
|
791
807
|
|
|
792
|
-
[data-ui
|
|
793
|
-
[data-ui
|
|
808
|
+
[data-ui-drawer][data-side='start'] > [data-part-panel] > [data-part-resizer],
|
|
809
|
+
[data-ui-drawer][data-side='end'] > [data-part-panel] > [data-part-resizer] {
|
|
794
810
|
flex-direction: column;
|
|
795
811
|
}
|
|
796
812
|
|
|
@@ -798,52 +814,52 @@
|
|
|
798
814
|
* The reach. Transparent, centred on the gutter and above the panel's own
|
|
799
815
|
* rows, which is what makes a four-pixel picture a twenty-four-pixel target.
|
|
800
816
|
*/
|
|
801
|
-
[data-ui
|
|
817
|
+
[data-ui-drawer] > [data-part-panel] > [data-part-resizer]::before {
|
|
802
818
|
content: '';
|
|
803
819
|
position: absolute;
|
|
804
820
|
--_reach-overhang: calc((var(--_resizer-reach) - var(--_resizer-thickness)) / -2);
|
|
805
821
|
}
|
|
806
822
|
|
|
807
|
-
[data-ui
|
|
808
|
-
[data-ui
|
|
823
|
+
[data-ui-drawer][data-side='start'] > [data-part-panel] > [data-part-resizer]::before,
|
|
824
|
+
[data-ui-drawer][data-side='end'] > [data-part-panel] > [data-part-resizer]::before {
|
|
809
825
|
inset-block: 0;
|
|
810
826
|
inset-inline: var(--_reach-overhang);
|
|
811
827
|
}
|
|
812
828
|
|
|
813
|
-
[data-ui
|
|
814
|
-
[data-ui
|
|
829
|
+
[data-ui-drawer][data-side='top'] > [data-part-panel] > [data-part-resizer]::before,
|
|
830
|
+
[data-ui-drawer][data-side='bottom'] > [data-part-panel] > [data-part-resizer]::before {
|
|
815
831
|
inset-inline: 0;
|
|
816
832
|
inset-block: var(--_reach-overhang);
|
|
817
833
|
}
|
|
818
834
|
|
|
819
|
-
[data-ui
|
|
820
|
-
[data-ui
|
|
835
|
+
[data-ui-drawer][data-side='start'] > [data-part-panel] > [data-part-resizer],
|
|
836
|
+
[data-ui-drawer][data-side='end'] > [data-part-panel] > [data-part-resizer] {
|
|
821
837
|
position: absolute;
|
|
822
838
|
inset-block: 0;
|
|
823
839
|
inline-size: var(--_resizer-thickness);
|
|
824
840
|
cursor: col-resize;
|
|
825
841
|
}
|
|
826
842
|
|
|
827
|
-
[data-ui
|
|
843
|
+
[data-ui-drawer][data-side='start'] > [data-part-panel] > [data-part-resizer] {
|
|
828
844
|
inset-inline-end: 0;
|
|
829
845
|
}
|
|
830
846
|
|
|
831
|
-
[data-ui
|
|
847
|
+
[data-ui-drawer][data-side='end'] > [data-part-panel] > [data-part-resizer] {
|
|
832
848
|
inset-inline-start: 0;
|
|
833
849
|
}
|
|
834
850
|
|
|
835
|
-
[data-ui
|
|
836
|
-
[data-ui
|
|
851
|
+
[data-ui-drawer][data-side='top'] > [data-part-panel] > [data-part-resizer],
|
|
852
|
+
[data-ui-drawer][data-side='bottom'] > [data-part-panel] > [data-part-resizer] {
|
|
837
853
|
position: relative;
|
|
838
854
|
block-size: var(--_resizer-thickness);
|
|
839
855
|
cursor: row-resize;
|
|
840
856
|
}
|
|
841
857
|
|
|
842
|
-
[data-ui
|
|
858
|
+
[data-ui-drawer][data-side='bottom'] > [data-part-panel] > [data-part-resizer] {
|
|
843
859
|
grid-row: 1;
|
|
844
860
|
}
|
|
845
861
|
|
|
846
|
-
[data-ui
|
|
862
|
+
[data-ui-drawer][data-side='top'] > [data-part-panel] > [data-part-resizer] {
|
|
847
863
|
grid-row: 4;
|
|
848
864
|
}
|
|
849
865
|
|
|
@@ -856,7 +872,7 @@
|
|
|
856
872
|
*
|
|
857
873
|
* A sheet paints none of them — see the grabber below.
|
|
858
874
|
*/
|
|
859
|
-
[data-ui
|
|
875
|
+
[data-ui-drawer] > [data-part-panel] > [data-part-resizer] > [data-part-line] {
|
|
860
876
|
flex: 0 1 min(var(--slotted-space-12, 4rem), 20%);
|
|
861
877
|
min-block-size: 0;
|
|
862
878
|
min-inline-size: 0;
|
|
@@ -869,40 +885,37 @@
|
|
|
869
885
|
var(--slotted-control-transition-easing, var(--slotted-easing-standard));
|
|
870
886
|
}
|
|
871
887
|
|
|
872
|
-
[data-ui
|
|
873
|
-
> [data-part
|
|
874
|
-
> [data-part
|
|
875
|
-
> [data-part
|
|
876
|
-
[data-ui
|
|
877
|
-
> [data-part
|
|
878
|
-
> [data-part
|
|
879
|
-
> [data-part
|
|
888
|
+
[data-ui-drawer][data-side='start']
|
|
889
|
+
> [data-part-panel]
|
|
890
|
+
> [data-part-resizer]
|
|
891
|
+
> [data-part-line]:first-child,
|
|
892
|
+
[data-ui-drawer][data-side='end']
|
|
893
|
+
> [data-part-panel]
|
|
894
|
+
> [data-part-resizer]
|
|
895
|
+
> [data-part-line]:first-child {
|
|
880
896
|
background: linear-gradient(to bottom, transparent, var(--_rest));
|
|
881
897
|
}
|
|
882
898
|
|
|
883
|
-
[data-ui
|
|
884
|
-
> [data-part
|
|
885
|
-
> [data-part
|
|
886
|
-
> [data-part
|
|
887
|
-
[data-ui
|
|
888
|
-
> [data-part
|
|
889
|
-
> [data-part
|
|
890
|
-
> [data-part
|
|
899
|
+
[data-ui-drawer][data-side='start']
|
|
900
|
+
> [data-part-panel]
|
|
901
|
+
> [data-part-resizer]
|
|
902
|
+
> [data-part-line]:last-child,
|
|
903
|
+
[data-ui-drawer][data-side='end']
|
|
904
|
+
> [data-part-panel]
|
|
905
|
+
> [data-part-resizer]
|
|
906
|
+
> [data-part-line]:last-child {
|
|
891
907
|
background: linear-gradient(to top, transparent, var(--_rest));
|
|
892
908
|
}
|
|
893
909
|
|
|
894
|
-
[data-ui
|
|
895
|
-
> [data-part
|
|
896
|
-
> [data-part
|
|
897
|
-
> [data-part
|
|
898
|
-
[data-ui
|
|
899
|
-
> [data-part
|
|
900
|
-
> [data-part
|
|
901
|
-
> [data-part
|
|
902
|
-
[data-ui
|
|
903
|
-
> [data-part='panel']
|
|
904
|
-
> [data-part='resizer']
|
|
905
|
-
> [data-part='line'] {
|
|
910
|
+
[data-ui-drawer]
|
|
911
|
+
> [data-part-panel]
|
|
912
|
+
> [data-part-resizer]:not([data-disabled]):hover
|
|
913
|
+
> [data-part-line],
|
|
914
|
+
[data-ui-drawer]
|
|
915
|
+
> [data-part-panel]
|
|
916
|
+
> [data-part-resizer]:not([data-disabled]):focus-visible
|
|
917
|
+
> [data-part-line],
|
|
918
|
+
[data-ui-drawer][data-dragging] > [data-part-panel] > [data-part-resizer] > [data-part-line] {
|
|
906
919
|
flex-basis: 100%;
|
|
907
920
|
background: var(--_active);
|
|
908
921
|
}
|
|
@@ -918,7 +931,7 @@
|
|
|
918
931
|
* there because a sheet is not held at its corners; it is held in the middle,
|
|
919
932
|
* which is where every mobile sheet in the field puts its mark.
|
|
920
933
|
*/
|
|
921
|
-
[data-ui
|
|
934
|
+
[data-ui-drawer] > [data-part-panel] > [data-part-resizer] > [data-part-grip] {
|
|
922
935
|
flex: none;
|
|
923
936
|
transition:
|
|
924
937
|
background-color var(--slotted-control-transition-duration, var(--slotted-duration-short))
|
|
@@ -927,14 +940,8 @@
|
|
|
927
940
|
var(--slotted-control-transition-easing, var(--slotted-easing-standard));
|
|
928
941
|
}
|
|
929
942
|
|
|
930
|
-
[data-ui
|
|
931
|
-
|
|
932
|
-
> [data-part='resizer']
|
|
933
|
-
> [data-part='grip'],
|
|
934
|
-
[data-ui='drawer'][data-side='end']
|
|
935
|
-
> [data-part='panel']
|
|
936
|
-
> [data-part='resizer']
|
|
937
|
-
> [data-part='grip'] {
|
|
943
|
+
[data-ui-drawer][data-side='start'] > [data-part-panel] > [data-part-resizer] > [data-part-grip],
|
|
944
|
+
[data-ui-drawer][data-side='end'] > [data-part-panel] > [data-part-resizer] > [data-part-grip] {
|
|
938
945
|
color: var(--_rest);
|
|
939
946
|
background-image: radial-gradient(circle at center, currentColor 40%, transparent 42%);
|
|
940
947
|
background-size: var(--slotted-space-2, 0.25rem) var(--slotted-space-2, 0.25rem);
|
|
@@ -943,14 +950,11 @@
|
|
|
943
950
|
}
|
|
944
951
|
|
|
945
952
|
/* The grabber. Four by thirty-six, full radius, centred above the header. */
|
|
946
|
-
[data-ui
|
|
947
|
-
|
|
948
|
-
> [data-part
|
|
949
|
-
> [data-part
|
|
950
|
-
|
|
951
|
-
> [data-part='panel']
|
|
952
|
-
> [data-part='resizer']
|
|
953
|
-
> [data-part='grip'] {
|
|
953
|
+
[data-ui-drawer][data-side='top'] > [data-part-panel] > [data-part-resizer] > [data-part-grip],
|
|
954
|
+
[data-ui-drawer][data-side='bottom']
|
|
955
|
+
> [data-part-panel]
|
|
956
|
+
> [data-part-resizer]
|
|
957
|
+
> [data-part-grip] {
|
|
954
958
|
background-color: var(--_rest);
|
|
955
959
|
border-radius: var(--slotted-radius-full, 9999px);
|
|
956
960
|
block-size: var(--slotted-space-2, 0.25rem);
|
|
@@ -958,14 +962,11 @@
|
|
|
958
962
|
}
|
|
959
963
|
|
|
960
964
|
/* A sheet's lines are not painted: the pill is the whole picture. */
|
|
961
|
-
[data-ui
|
|
962
|
-
|
|
963
|
-
> [data-part
|
|
964
|
-
> [data-part
|
|
965
|
-
|
|
966
|
-
> [data-part='panel']
|
|
967
|
-
> [data-part='resizer']
|
|
968
|
-
> [data-part='line'] {
|
|
965
|
+
[data-ui-drawer][data-side='top'] > [data-part-panel] > [data-part-resizer] > [data-part-line],
|
|
966
|
+
[data-ui-drawer][data-side='bottom']
|
|
967
|
+
> [data-part-panel]
|
|
968
|
+
> [data-part-resizer]
|
|
969
|
+
> [data-part-line] {
|
|
969
970
|
display: none;
|
|
970
971
|
}
|
|
971
972
|
|
|
@@ -976,45 +977,42 @@
|
|
|
976
977
|
* under focus. `splitter`, which draws the same picture, only ever changed
|
|
977
978
|
* `color`. The pill on a block side is a filled box, so it recolours its fill.
|
|
978
979
|
*/
|
|
979
|
-
[data-ui
|
|
980
|
-
> [data-part
|
|
981
|
-
> [data-part
|
|
982
|
-
> [data-part
|
|
983
|
-
[data-ui
|
|
984
|
-
> [data-part
|
|
985
|
-
> [data-part
|
|
986
|
-
> [data-part
|
|
987
|
-
[data-ui
|
|
988
|
-
> [data-part='panel']
|
|
989
|
-
> [data-part='resizer']
|
|
990
|
-
> [data-part='grip'] {
|
|
980
|
+
[data-ui-drawer]
|
|
981
|
+
> [data-part-panel]
|
|
982
|
+
> [data-part-resizer]:not([data-disabled]):hover
|
|
983
|
+
> [data-part-grip],
|
|
984
|
+
[data-ui-drawer]
|
|
985
|
+
> [data-part-panel]
|
|
986
|
+
> [data-part-resizer]:not([data-disabled]):focus-visible
|
|
987
|
+
> [data-part-grip],
|
|
988
|
+
[data-ui-drawer][data-dragging] > [data-part-panel] > [data-part-resizer] > [data-part-grip] {
|
|
991
989
|
color: var(--_active);
|
|
992
990
|
}
|
|
993
991
|
|
|
994
|
-
[data-ui
|
|
995
|
-
> [data-part
|
|
996
|
-
> [data-part
|
|
997
|
-
> [data-part
|
|
998
|
-
[data-ui
|
|
999
|
-
> [data-part
|
|
1000
|
-
> [data-part
|
|
1001
|
-
> [data-part
|
|
1002
|
-
[data-ui
|
|
1003
|
-
> [data-part
|
|
1004
|
-
> [data-part
|
|
1005
|
-
> [data-part
|
|
1006
|
-
[data-ui
|
|
1007
|
-
> [data-part
|
|
1008
|
-
> [data-part
|
|
1009
|
-
> [data-part
|
|
1010
|
-
[data-ui
|
|
1011
|
-
> [data-part
|
|
1012
|
-
> [data-part
|
|
1013
|
-
> [data-part
|
|
1014
|
-
[data-ui
|
|
1015
|
-
> [data-part
|
|
1016
|
-
> [data-part
|
|
1017
|
-
> [data-part
|
|
992
|
+
[data-ui-drawer][data-side='top']
|
|
993
|
+
> [data-part-panel]
|
|
994
|
+
> [data-part-resizer]:not([data-disabled]):hover
|
|
995
|
+
> [data-part-grip],
|
|
996
|
+
[data-ui-drawer][data-side='bottom']
|
|
997
|
+
> [data-part-panel]
|
|
998
|
+
> [data-part-resizer]:not([data-disabled]):hover
|
|
999
|
+
> [data-part-grip],
|
|
1000
|
+
[data-ui-drawer][data-side='top']
|
|
1001
|
+
> [data-part-panel]
|
|
1002
|
+
> [data-part-resizer]:not([data-disabled]):focus-visible
|
|
1003
|
+
> [data-part-grip],
|
|
1004
|
+
[data-ui-drawer][data-side='bottom']
|
|
1005
|
+
> [data-part-panel]
|
|
1006
|
+
> [data-part-resizer]:not([data-disabled]):focus-visible
|
|
1007
|
+
> [data-part-grip],
|
|
1008
|
+
[data-ui-drawer][data-dragging][data-side='top']
|
|
1009
|
+
> [data-part-panel]
|
|
1010
|
+
> [data-part-resizer]
|
|
1011
|
+
> [data-part-grip],
|
|
1012
|
+
[data-ui-drawer][data-dragging][data-side='bottom']
|
|
1013
|
+
> [data-part-panel]
|
|
1014
|
+
> [data-part-resizer]
|
|
1015
|
+
> [data-part-grip] {
|
|
1018
1016
|
background-color: var(--_active);
|
|
1019
1017
|
}
|
|
1020
1018
|
|
|
@@ -1034,7 +1032,7 @@
|
|
|
1034
1032
|
* forbids a system colour inside `::before` or `::after`, and the ring's own
|
|
1035
1033
|
* last resort is `Highlight`.
|
|
1036
1034
|
*/
|
|
1037
|
-
[data-ui
|
|
1035
|
+
[data-ui-drawer] > [data-part-panel] > [data-part-resizer]:focus-visible {
|
|
1038
1036
|
outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);
|
|
1039
1037
|
outline-offset: calc(-1 * var(--slotted-focus-ring-offset, 2px));
|
|
1040
1038
|
}
|
|
@@ -1046,13 +1044,13 @@
|
|
|
1046
1044
|
* between a resize the engine prepares for and one it discovers each frame.
|
|
1047
1045
|
* It is written on the panel because the panel is what changes size.
|
|
1048
1046
|
*/
|
|
1049
|
-
[data-ui
|
|
1050
|
-
[data-ui
|
|
1047
|
+
[data-ui-drawer][data-dragging][data-side='start'] > [data-part-panel],
|
|
1048
|
+
[data-ui-drawer][data-dragging][data-side='end'] > [data-part-panel] {
|
|
1051
1049
|
will-change: inline-size;
|
|
1052
1050
|
}
|
|
1053
1051
|
|
|
1054
|
-
[data-ui
|
|
1055
|
-
[data-ui
|
|
1052
|
+
[data-ui-drawer][data-dragging][data-side='top'] > [data-part-panel],
|
|
1053
|
+
[data-ui-drawer][data-dragging][data-side='bottom'] > [data-part-panel] {
|
|
1056
1054
|
will-change: block-size;
|
|
1057
1055
|
}
|
|
1058
1056
|
|
|
@@ -1068,7 +1066,7 @@
|
|
|
1068
1066
|
* consumer can write: a header, a body and a footer draw two rules; a header
|
|
1069
1067
|
* and a footer alone draw one; and a panel that is only a body draws none.
|
|
1070
1068
|
*/
|
|
1071
|
-
[data-ui
|
|
1069
|
+
[data-ui-drawer] > [data-part-panel] > [data-part-header] {
|
|
1072
1070
|
grid-row: 1;
|
|
1073
1071
|
display: grid;
|
|
1074
1072
|
grid-template-columns: minmax(0, 1fr) auto;
|
|
@@ -1085,7 +1083,7 @@
|
|
|
1085
1083
|
* panel past its own measure, and a panel pinned to an edge then pushes its
|
|
1086
1084
|
* inner edge across the layer.
|
|
1087
1085
|
*/
|
|
1088
|
-
[data-ui
|
|
1086
|
+
[data-ui-drawer] > [data-part-panel] > [data-part-header] > [data-part-title] {
|
|
1089
1087
|
grid-column: 1;
|
|
1090
1088
|
grid-row: 1;
|
|
1091
1089
|
margin: 0;
|
|
@@ -1104,7 +1102,7 @@
|
|
|
1104
1102
|
color: var(--slotted-drawer-title-color, var(--slotted-text, CanvasText));
|
|
1105
1103
|
}
|
|
1106
1104
|
|
|
1107
|
-
[data-ui
|
|
1105
|
+
[data-ui-drawer] > [data-part-panel] > [data-part-header] > [data-part-description] {
|
|
1108
1106
|
grid-column: 1;
|
|
1109
1107
|
grid-row: 2;
|
|
1110
1108
|
margin: 0;
|
|
@@ -1125,7 +1123,7 @@
|
|
|
1125
1123
|
* an `icon` box, sized here through the icon token so the box and the
|
|
1126
1124
|
* formula above read one length.
|
|
1127
1125
|
*/
|
|
1128
|
-
[data-ui
|
|
1126
|
+
[data-ui-drawer] > [data-part-panel] > [data-part-header] > [data-part-close] {
|
|
1129
1127
|
--slotted-icon-size: var(--_icon-size);
|
|
1130
1128
|
|
|
1131
1129
|
grid-column: 2;
|
|
@@ -1156,21 +1154,21 @@
|
|
|
1156
1154
|
is the one a mouse sees: a transparent `::before` centred on the control
|
|
1157
1155
|
reaches 44 pixels, and the ground and the ring stay square. */
|
|
1158
1156
|
@media (pointer: coarse) {
|
|
1159
|
-
[data-ui
|
|
1157
|
+
[data-ui-drawer] > [data-part-panel] > [data-part-header] > [data-part-close] {
|
|
1160
1158
|
position: relative;
|
|
1161
1159
|
}
|
|
1162
1160
|
|
|
1163
|
-
[data-ui
|
|
1161
|
+
[data-ui-drawer] > [data-part-panel] > [data-part-header] > [data-part-close]::before {
|
|
1164
1162
|
content: '';
|
|
1165
1163
|
inset: min(0px, calc((100% - var(--slotted-target-comfortable, 44px)) / 2));
|
|
1166
1164
|
position: absolute;
|
|
1167
1165
|
}
|
|
1168
1166
|
}
|
|
1169
1167
|
|
|
1170
|
-
[data-ui
|
|
1171
|
-
> [data-part
|
|
1172
|
-
> [data-part
|
|
1173
|
-
> [data-part
|
|
1168
|
+
[data-ui-drawer]
|
|
1169
|
+
> [data-part-panel]
|
|
1170
|
+
> [data-part-header]
|
|
1171
|
+
> [data-part-close]:not(:disabled):hover {
|
|
1174
1172
|
/* The ground moves under the pointer and nothing else does (R2). */
|
|
1175
1173
|
background-color: var(
|
|
1176
1174
|
--slotted-drawer-close-hover-background,
|
|
@@ -1178,20 +1176,17 @@
|
|
|
1178
1176
|
);
|
|
1179
1177
|
}
|
|
1180
1178
|
|
|
1181
|
-
[data-ui
|
|
1182
|
-
> [data-part
|
|
1183
|
-
> [data-part
|
|
1184
|
-
> [data-part
|
|
1179
|
+
[data-ui-drawer]
|
|
1180
|
+
> [data-part-panel]
|
|
1181
|
+
> [data-part-header]
|
|
1182
|
+
> [data-part-close]:not(:disabled):active {
|
|
1185
1183
|
background-color: var(
|
|
1186
1184
|
--slotted-drawer-close-active-background,
|
|
1187
1185
|
var(--slotted-tone-secondary-subtle-active)
|
|
1188
1186
|
);
|
|
1189
1187
|
}
|
|
1190
1188
|
|
|
1191
|
-
[data-ui
|
|
1192
|
-
> [data-part='panel']
|
|
1193
|
-
> [data-part='header']
|
|
1194
|
-
> [data-part='close']:focus-visible {
|
|
1189
|
+
[data-ui-drawer] > [data-part-panel] > [data-part-header] > [data-part-close]:focus-visible {
|
|
1195
1190
|
outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);
|
|
1196
1191
|
outline-offset: calc(-1 * var(--slotted-focus-ring-offset, 2px));
|
|
1197
1192
|
}
|
|
@@ -1204,7 +1199,7 @@
|
|
|
1204
1199
|
* `dismissable-layer` covers the modal case; this covers the other two, where
|
|
1205
1200
|
* the page behind is not locked at all.
|
|
1206
1201
|
*/
|
|
1207
|
-
[data-ui
|
|
1202
|
+
[data-ui-drawer] > [data-part-panel] > [data-part-body] {
|
|
1208
1203
|
grid-row: 2;
|
|
1209
1204
|
min-block-size: 0;
|
|
1210
1205
|
min-inline-size: 0;
|
|
@@ -1221,11 +1216,11 @@
|
|
|
1221
1216
|
}
|
|
1222
1217
|
|
|
1223
1218
|
/* Content that brings its own inset — a page, a list on the panel's edges. */
|
|
1224
|
-
[data-ui
|
|
1219
|
+
[data-ui-drawer] > [data-part-panel] > [data-part-body][data-inset='none'] {
|
|
1225
1220
|
padding: 0;
|
|
1226
1221
|
}
|
|
1227
1222
|
|
|
1228
|
-
[data-ui
|
|
1223
|
+
[data-ui-drawer] > [data-part-panel] > [data-part-body]:not(:first-child) {
|
|
1229
1224
|
border-block-start: var(--_rule-size) solid
|
|
1230
1225
|
var(--slotted-drawer-rule-color, var(--slotted-border-subtle, ButtonBorder));
|
|
1231
1226
|
}
|
|
@@ -1237,7 +1232,7 @@
|
|
|
1237
1232
|
* instead, and the header, the close button, Escape and the resizer all stay
|
|
1238
1233
|
* operable: a loading drawer a reader cannot leave is the worse failure.
|
|
1239
1234
|
*/
|
|
1240
|
-
[data-ui
|
|
1235
|
+
[data-ui-drawer][data-loading] > [data-part-panel] > [data-part-body] {
|
|
1241
1236
|
min-block-size: var(--slotted-space-12, 4rem);
|
|
1242
1237
|
}
|
|
1243
1238
|
|
|
@@ -1249,7 +1244,7 @@
|
|
|
1249
1244
|
* reason the middle one is bounded — an unbounded panel pushes it past the
|
|
1250
1245
|
* fold, which is the whole failure the three-row grid exists to prevent.
|
|
1251
1246
|
*/
|
|
1252
|
-
[data-ui
|
|
1247
|
+
[data-ui-drawer] > [data-part-panel] > [data-part-footer] {
|
|
1253
1248
|
grid-row: 3;
|
|
1254
1249
|
display: flex;
|
|
1255
1250
|
flex-wrap: wrap;
|
|
@@ -1274,13 +1269,13 @@
|
|
|
1274
1269
|
* above it and the header already clears it; the body scrolls, so an inset on
|
|
1275
1270
|
* it would be padding inside a scrollport rather than under it.
|
|
1276
1271
|
*/
|
|
1277
|
-
[data-ui
|
|
1272
|
+
[data-ui-drawer][data-side='bottom'] > [data-part-panel] > [data-part-footer] {
|
|
1278
1273
|
padding-block-end: calc(
|
|
1279
1274
|
var(--_footer-padding-block, var(--_padding-block)) + env(safe-area-inset-bottom, 0px)
|
|
1280
1275
|
);
|
|
1281
1276
|
}
|
|
1282
1277
|
|
|
1283
|
-
[data-ui
|
|
1278
|
+
[data-ui-drawer] > [data-part-panel] > [data-part-footer]:not(:first-child) {
|
|
1284
1279
|
border-block-start: var(--_rule-size) solid
|
|
1285
1280
|
var(--slotted-drawer-rule-color, var(--slotted-border-subtle, ButtonBorder));
|
|
1286
1281
|
}
|
|
@@ -1295,7 +1290,7 @@
|
|
|
1295
1290
|
* border is read at, and gives the panel the three edges its side does not.
|
|
1296
1291
|
*/
|
|
1297
1292
|
@media (forced-colors: active) {
|
|
1298
|
-
[data-ui
|
|
1293
|
+
[data-ui-drawer] > [data-part-panel] {
|
|
1299
1294
|
border-width: var(--slotted-border-width-thick, 2px);
|
|
1300
1295
|
border-color: CanvasText;
|
|
1301
1296
|
}
|