@slotted/styles 0.1.0-beta.8 → 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 +300 -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 +143 -162
- 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
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
* with child combinators so a `label` or a `root` of theirs is never
|
|
20
20
|
* restyled.
|
|
21
21
|
*/
|
|
22
|
-
[data-ui
|
|
22
|
+
[data-ui-saved-views] {
|
|
23
23
|
--_text: var(--slotted-text, CanvasText);
|
|
24
24
|
--_muted: var(--slotted-text-muted, GrayText);
|
|
25
25
|
--_hover: var(--slotted-tone-secondary-subtle-hover, ButtonFace);
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
* The trigger and revert on one row that wraps: at 240 pixels the revert
|
|
49
49
|
* control drops under the trigger rather than pushing it out of the box.
|
|
50
50
|
*/
|
|
51
|
-
[data-ui
|
|
51
|
+
[data-ui-saved-views][data-part-root] {
|
|
52
52
|
display: inline-flex;
|
|
53
53
|
flex-wrap: wrap;
|
|
54
54
|
align-items: center;
|
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
* control shadow and the control surface, so the view in use reads as a
|
|
63
63
|
* value the reader can change rather than as a heading.
|
|
64
64
|
*/
|
|
65
|
-
[data-ui
|
|
65
|
+
[data-ui-saved-views] > [data-part-trigger] {
|
|
66
66
|
display: inline-flex;
|
|
67
67
|
align-items: center;
|
|
68
68
|
gap: var(--_gap);
|
|
@@ -86,7 +86,7 @@
|
|
|
86
86
|
}
|
|
87
87
|
|
|
88
88
|
/** Truncated on one line; the whole name stays in the DOM and in the button's name. */
|
|
89
|
-
[data-ui
|
|
89
|
+
[data-ui-saved-views] > [data-part-trigger] > [data-label] {
|
|
90
90
|
min-inline-size: 0;
|
|
91
91
|
overflow: hidden;
|
|
92
92
|
text-overflow: ellipsis;
|
|
@@ -94,21 +94,21 @@
|
|
|
94
94
|
}
|
|
95
95
|
|
|
96
96
|
/** The chevron, an `icon` after the name, turning over while the layer is open. */
|
|
97
|
-
[data-ui
|
|
97
|
+
[data-ui-saved-views] > [data-part-trigger] > [data-ui-icon] {
|
|
98
98
|
margin-inline-end: calc(var(--slotted-space-2, 0.25rem) * -1);
|
|
99
99
|
color: var(--_muted);
|
|
100
100
|
transition: rotate var(--_duration) var(--_easing);
|
|
101
101
|
}
|
|
102
102
|
|
|
103
|
-
[data-ui
|
|
103
|
+
[data-ui-saved-views][data-open] > [data-part-trigger] > [data-ui-icon] {
|
|
104
104
|
rotate: 180deg;
|
|
105
105
|
}
|
|
106
106
|
|
|
107
|
-
[data-ui
|
|
107
|
+
[data-ui-saved-views] > [data-part-trigger]:hover:not(:disabled) {
|
|
108
108
|
background: var(--_hover);
|
|
109
109
|
}
|
|
110
110
|
|
|
111
|
-
[data-ui
|
|
111
|
+
[data-ui-saved-views] > [data-part-trigger]:active:not(:disabled) {
|
|
112
112
|
background: var(--_active);
|
|
113
113
|
transition-duration: var(--slotted-duration-instant);
|
|
114
114
|
}
|
|
@@ -118,7 +118,7 @@
|
|
|
118
118
|
* the regular weight, so the name stays the loudest thing in the control
|
|
119
119
|
* and the state is never colour alone.
|
|
120
120
|
*/
|
|
121
|
-
[data-ui
|
|
121
|
+
[data-ui-saved-views] > [data-part-trigger] > [data-part-modified] {
|
|
122
122
|
display: inline-flex;
|
|
123
123
|
flex: none;
|
|
124
124
|
align-items: center;
|
|
@@ -130,7 +130,7 @@
|
|
|
130
130
|
font-weight: var(--slotted-font-weight-regular, 400);
|
|
131
131
|
}
|
|
132
132
|
|
|
133
|
-
[data-ui
|
|
133
|
+
[data-ui-saved-views] > [data-part-trigger] > [data-part-modified]::before {
|
|
134
134
|
content: '';
|
|
135
135
|
flex: none;
|
|
136
136
|
inline-size: var(--slotted-space-4, 0.5rem);
|
|
@@ -140,7 +140,7 @@
|
|
|
140
140
|
}
|
|
141
141
|
|
|
142
142
|
/** Revert: a ghost control with the counter-clockwise arrow, at the trigger's height. */
|
|
143
|
-
[data-ui
|
|
143
|
+
[data-ui-saved-views] > [data-part-revert] {
|
|
144
144
|
display: inline-flex;
|
|
145
145
|
align-items: center;
|
|
146
146
|
gap: var(--slotted-space-3, 0.375rem);
|
|
@@ -159,17 +159,17 @@
|
|
|
159
159
|
transition: background-color var(--_duration) var(--_easing);
|
|
160
160
|
}
|
|
161
161
|
|
|
162
|
-
[data-ui
|
|
162
|
+
[data-ui-saved-views] > [data-part-revert]:hover:not(:disabled) {
|
|
163
163
|
background: var(--slotted-tone-accent-subtle-hover, ButtonFace);
|
|
164
164
|
}
|
|
165
165
|
|
|
166
|
-
[data-ui
|
|
166
|
+
[data-ui-saved-views] > [data-part-revert]:active:not(:disabled) {
|
|
167
167
|
background: var(--slotted-tone-accent-subtle-active, ButtonFace);
|
|
168
168
|
transition-duration: var(--slotted-duration-instant);
|
|
169
169
|
}
|
|
170
170
|
|
|
171
|
-
[data-ui
|
|
172
|
-
[data-ui
|
|
171
|
+
[data-ui-saved-views] > [data-part-trigger]:focus-visible,
|
|
172
|
+
[data-ui-saved-views] > [data-part-revert]:focus-visible {
|
|
173
173
|
outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);
|
|
174
174
|
outline-offset: var(--slotted-focus-ring-offset, 2px);
|
|
175
175
|
}
|
|
@@ -182,7 +182,7 @@
|
|
|
182
182
|
* would change width as views are renamed. The padding keeps a row's hover
|
|
183
183
|
* ground off the popover's rounded edge.
|
|
184
184
|
*/
|
|
185
|
-
[data-ui
|
|
185
|
+
[data-ui-saved-views][data-part-panel] {
|
|
186
186
|
display: grid;
|
|
187
187
|
/* One track that grows to the token and gives way to zero: the panel's
|
|
188
188
|
min-content is nothing and its max-content the token, so a popover
|
|
@@ -193,7 +193,7 @@
|
|
|
193
193
|
padding: var(--slotted-space-2, 0.25rem);
|
|
194
194
|
}
|
|
195
195
|
|
|
196
|
-
[data-ui
|
|
196
|
+
[data-ui-saved-views][data-part-panel] > [data-part-list] {
|
|
197
197
|
display: grid;
|
|
198
198
|
gap: var(--slotted-space-1, 0.125rem);
|
|
199
199
|
margin: 0;
|
|
@@ -202,7 +202,7 @@
|
|
|
202
202
|
}
|
|
203
203
|
|
|
204
204
|
/** A row: the view's name across, its actions at the inline end. */
|
|
205
|
-
[data-ui
|
|
205
|
+
[data-ui-saved-views][data-part-panel] > [data-part-list] > [data-part-item] {
|
|
206
206
|
display: grid;
|
|
207
207
|
grid-template-columns: minmax(0, 1fr) auto;
|
|
208
208
|
align-items: start;
|
|
@@ -210,9 +210,7 @@
|
|
|
210
210
|
margin: 0;
|
|
211
211
|
}
|
|
212
212
|
|
|
213
|
-
[data-ui
|
|
214
|
-
> [data-part='list']
|
|
215
|
-
> [data-part='item'][data-editing] {
|
|
213
|
+
[data-ui-saved-views][data-part-panel] > [data-part-list] > [data-part-item][data-editing] {
|
|
216
214
|
grid-template-columns: minmax(0, 1fr);
|
|
217
215
|
}
|
|
218
216
|
|
|
@@ -224,7 +222,7 @@
|
|
|
224
222
|
* binding draws the check on the view in use alone, and the name keeps the
|
|
225
223
|
* second column whether the check stands before it or not.
|
|
226
224
|
*/
|
|
227
|
-
[data-ui
|
|
225
|
+
[data-ui-saved-views][data-part-panel] [data-part-apply] {
|
|
228
226
|
display: grid;
|
|
229
227
|
grid-template-columns: var(--_icon-size-sm) minmax(0, max-content) auto;
|
|
230
228
|
justify-content: start;
|
|
@@ -256,37 +254,35 @@
|
|
|
256
254
|
* half the band, the midpoint of cap height and x-height, so its centre is
|
|
257
255
|
* the band's.
|
|
258
256
|
*/
|
|
259
|
-
[data-ui
|
|
257
|
+
[data-ui-saved-views][data-part-panel] [data-part-apply] > [data-ui-icon] {
|
|
260
258
|
color: var(--slotted-tone-accent-text);
|
|
261
259
|
translate: 0 calc(var(--_icon-size-sm) / 2 - (1cap + 1ex) / 4);
|
|
262
260
|
}
|
|
263
261
|
|
|
264
|
-
[data-ui
|
|
265
|
-
[data-part='item'][data-current]
|
|
266
|
-
> [data-part='apply'] {
|
|
262
|
+
[data-ui-saved-views][data-part-panel] [data-part-item][data-current] > [data-part-apply] {
|
|
267
263
|
font-weight: var(--slotted-font-weight-medium, 500);
|
|
268
264
|
}
|
|
269
265
|
|
|
270
266
|
/** A long name wraps inside the row; nothing is cut. */
|
|
271
|
-
[data-ui
|
|
267
|
+
[data-ui-saved-views][data-part-panel] [data-part-apply] > [data-label] {
|
|
272
268
|
grid-column: 2;
|
|
273
269
|
min-inline-size: 0;
|
|
274
270
|
overflow-wrap: anywhere;
|
|
275
271
|
}
|
|
276
272
|
|
|
277
|
-
[data-ui
|
|
278
|
-
[data-ui
|
|
273
|
+
[data-ui-saved-views][data-part-panel] [data-part-apply]:hover:not(:disabled),
|
|
274
|
+
[data-ui-saved-views][data-part-panel] [data-part-actions]:hover:not(:disabled) {
|
|
279
275
|
background: var(--_hover);
|
|
280
276
|
}
|
|
281
277
|
|
|
282
|
-
[data-ui
|
|
283
|
-
[data-ui
|
|
278
|
+
[data-ui-saved-views][data-part-panel] [data-part-apply]:active:not(:disabled),
|
|
279
|
+
[data-ui-saved-views][data-part-panel] [data-part-actions]:active:not(:disabled) {
|
|
284
280
|
background: var(--_active);
|
|
285
281
|
transition-duration: var(--slotted-duration-instant);
|
|
286
282
|
}
|
|
287
283
|
|
|
288
284
|
/** The pin: the view a visit opens on. The word beside it is for the ear only. */
|
|
289
|
-
[data-ui
|
|
285
|
+
[data-ui-saved-views][data-part-panel] [data-part-apply] > [data-part-default-mark] {
|
|
290
286
|
/* A flex box, so the pin `icon` inside is laid out as an item and not on
|
|
291
287
|
a line of its own that would stand taller than the mark. */
|
|
292
288
|
display: flex;
|
|
@@ -299,9 +295,7 @@
|
|
|
299
295
|
color: var(--_muted);
|
|
300
296
|
}
|
|
301
297
|
|
|
302
|
-
[data-ui
|
|
303
|
-
[data-part='default-mark']
|
|
304
|
-
> span:not([data-ui='icon']) {
|
|
298
|
+
[data-ui-saved-views][data-part-panel] [data-part-default-mark] > span:not([data-ui-icon]) {
|
|
305
299
|
position: absolute;
|
|
306
300
|
inline-size: 1px;
|
|
307
301
|
block-size: 1px;
|
|
@@ -314,7 +308,7 @@
|
|
|
314
308
|
* The row's menu: a square at the small control height with the ellipsis
|
|
315
309
|
* `icon`, muted at rest and on the text ink under the pointer.
|
|
316
310
|
*/
|
|
317
|
-
[data-ui
|
|
311
|
+
[data-ui-saved-views][data-part-panel] [data-part-actions] {
|
|
318
312
|
display: inline-grid;
|
|
319
313
|
place-items: center;
|
|
320
314
|
box-sizing: border-box;
|
|
@@ -332,14 +326,14 @@
|
|
|
332
326
|
color var(--_duration) var(--_easing);
|
|
333
327
|
}
|
|
334
328
|
|
|
335
|
-
[data-ui
|
|
336
|
-
[data-ui
|
|
329
|
+
[data-ui-saved-views][data-part-panel] [data-part-actions][data-open],
|
|
330
|
+
[data-ui-saved-views][data-part-panel] [data-part-actions]:hover:not(:disabled) {
|
|
337
331
|
color: var(--_text);
|
|
338
332
|
}
|
|
339
333
|
|
|
340
334
|
/** Drawn inward: the rows sit one space step apart and an outward ring would cross the next. */
|
|
341
|
-
[data-ui
|
|
342
|
-
[data-ui
|
|
335
|
+
[data-ui-saved-views][data-part-panel] [data-part-apply]:focus-visible,
|
|
336
|
+
[data-ui-saved-views][data-part-panel] [data-part-actions]:focus-visible {
|
|
343
337
|
outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);
|
|
344
338
|
outline-offset: calc(var(--slotted-focus-ring-offset, 2px) * -1);
|
|
345
339
|
}
|
|
@@ -351,8 +345,8 @@
|
|
|
351
345
|
* view; and the confirmation, in the row being deleted. Both stand on the
|
|
352
346
|
* sunken surface so the row reads as one being edited.
|
|
353
347
|
*/
|
|
354
|
-
[data-ui
|
|
355
|
-
[data-ui
|
|
348
|
+
[data-ui-saved-views][data-part-panel] [data-part-form],
|
|
349
|
+
[data-ui-saved-views][data-part-panel] [data-part-confirm] {
|
|
356
350
|
display: grid;
|
|
357
351
|
gap: var(--slotted-space-4, 0.5rem);
|
|
358
352
|
margin: 0;
|
|
@@ -361,13 +355,13 @@
|
|
|
361
355
|
background: var(--slotted-surface-sunken, Canvas);
|
|
362
356
|
}
|
|
363
357
|
|
|
364
|
-
[data-ui
|
|
358
|
+
[data-ui-saved-views][data-part-panel] [data-part-confirm] > p {
|
|
365
359
|
margin: 0;
|
|
366
360
|
overflow-wrap: anywhere;
|
|
367
361
|
}
|
|
368
362
|
|
|
369
|
-
[data-ui
|
|
370
|
-
:is([data-part
|
|
363
|
+
[data-ui-saved-views][data-part-panel]
|
|
364
|
+
:is([data-part-form], [data-part-confirm])
|
|
371
365
|
> [data-buttons] {
|
|
372
366
|
display: flex;
|
|
373
367
|
flex-wrap: wrap;
|
|
@@ -376,7 +370,7 @@
|
|
|
376
370
|
}
|
|
377
371
|
|
|
378
372
|
/** Save as new view… then Save, at the inline end, under a rule. */
|
|
379
|
-
[data-ui
|
|
373
|
+
[data-ui-saved-views][data-part-panel] > [data-part-footer] {
|
|
380
374
|
display: flex;
|
|
381
375
|
flex-wrap: wrap;
|
|
382
376
|
justify-content: flex-end;
|
|
@@ -387,7 +381,7 @@
|
|
|
387
381
|
}
|
|
388
382
|
|
|
389
383
|
@media (forced-colors: active) {
|
|
390
|
-
[data-ui
|
|
384
|
+
[data-ui-saved-views] > [data-part-trigger] > [data-part-modified]::before {
|
|
391
385
|
forced-color-adjust: none;
|
|
392
386
|
}
|
|
393
387
|
}
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
* mask is not on. `root` is that element: it holds the border, the radius and
|
|
35
35
|
* the maximum, and `viewport` inside it holds the scroll and the veil.
|
|
36
36
|
*/
|
|
37
|
-
[data-ui
|
|
37
|
+
[data-ui-scroll-area] {
|
|
38
38
|
/**
|
|
39
39
|
* How far the veil reaches in from an edge that has content behind it.
|
|
40
40
|
*
|
|
@@ -77,7 +77,7 @@
|
|
|
77
77
|
min-inline-size: 0;
|
|
78
78
|
}
|
|
79
79
|
|
|
80
|
-
[data-ui
|
|
80
|
+
[data-ui-scroll-area] > [data-part-viewport] {
|
|
81
81
|
/**
|
|
82
82
|
* One length per logical edge: the veil's reach where that end of the
|
|
83
83
|
* content is out of view, and nothing where it is showing.
|
|
@@ -205,7 +205,7 @@
|
|
|
205
205
|
* attribute form would then paint the veil on the edge the reader can already
|
|
206
206
|
* see.
|
|
207
207
|
*/
|
|
208
|
-
[data-ui
|
|
208
|
+
[data-ui-scroll-area]:dir(rtl) > [data-part-viewport] {
|
|
209
209
|
--_fade-left: var(--_scroll-area-fade-inline-end);
|
|
210
210
|
--_fade-right: var(--_scroll-area-fade-inline-start);
|
|
211
211
|
}
|
|
@@ -220,21 +220,21 @@
|
|
|
220
220
|
* `@supports` is needed for that — an unknown declaration is discarded at
|
|
221
221
|
* parse time and the cascade does the rest.
|
|
222
222
|
*/
|
|
223
|
-
[data-ui
|
|
223
|
+
[data-ui-scroll-area][data-axis='block'] > [data-part-viewport] {
|
|
224
224
|
overflow-x: hidden;
|
|
225
225
|
overflow-y: auto;
|
|
226
226
|
overflow-inline: hidden;
|
|
227
227
|
overflow-block: auto;
|
|
228
228
|
}
|
|
229
229
|
|
|
230
|
-
[data-ui
|
|
230
|
+
[data-ui-scroll-area][data-axis='inline'] > [data-part-viewport] {
|
|
231
231
|
overflow-x: auto;
|
|
232
232
|
overflow-y: hidden;
|
|
233
233
|
overflow-inline: auto;
|
|
234
234
|
overflow-block: hidden;
|
|
235
235
|
}
|
|
236
236
|
|
|
237
|
-
[data-ui
|
|
237
|
+
[data-ui-scroll-area][data-axis='both'] > [data-part-viewport] {
|
|
238
238
|
overflow: auto;
|
|
239
239
|
}
|
|
240
240
|
|
|
@@ -243,17 +243,17 @@
|
|
|
243
243
|
* "reserve the bar whether or not it is needed". It is stated per axis so it
|
|
244
244
|
* does not turn a one-axis area into a two-axis one.
|
|
245
245
|
*/
|
|
246
|
-
[data-ui
|
|
246
|
+
[data-ui-scroll-area][data-scrollbars='always'][data-axis='block'] > [data-part-viewport] {
|
|
247
247
|
overflow-y: scroll;
|
|
248
248
|
overflow-block: scroll;
|
|
249
249
|
}
|
|
250
250
|
|
|
251
|
-
[data-ui
|
|
251
|
+
[data-ui-scroll-area][data-scrollbars='always'][data-axis='inline'] > [data-part-viewport] {
|
|
252
252
|
overflow-x: scroll;
|
|
253
253
|
overflow-inline: scroll;
|
|
254
254
|
}
|
|
255
255
|
|
|
256
|
-
[data-ui
|
|
256
|
+
[data-ui-scroll-area][data-scrollbars='always'][data-axis='both'] > [data-part-viewport] {
|
|
257
257
|
overflow: scroll;
|
|
258
258
|
}
|
|
259
259
|
|
|
@@ -266,7 +266,7 @@
|
|
|
266
266
|
* and why this value is worth having at all: an area with no bar and no veil
|
|
267
267
|
* says nothing.
|
|
268
268
|
*/
|
|
269
|
-
[data-ui
|
|
269
|
+
[data-ui-scroll-area][data-scrollbars='none'] > [data-part-viewport] {
|
|
270
270
|
scrollbar-width: none;
|
|
271
271
|
}
|
|
272
272
|
|
|
@@ -279,7 +279,7 @@
|
|
|
279
279
|
* state — `packages/styles/src/states.test.mjs` — rather than a state this
|
|
280
280
|
* family holds: a scrollport is not a control and has no disabled form.
|
|
281
281
|
*/
|
|
282
|
-
[data-ui
|
|
282
|
+
[data-ui-scroll-area][data-scrollbars='hover'] > [data-part-viewport] {
|
|
283
283
|
scrollbar-color: transparent transparent;
|
|
284
284
|
transition:
|
|
285
285
|
scrollbar-color var(--slotted-duration-short) var(--slotted-easing-standard),
|
|
@@ -289,29 +289,28 @@
|
|
|
289
289
|
--_scroll-area-fade-inline-end var(--slotted-duration-short) var(--slotted-easing-standard);
|
|
290
290
|
}
|
|
291
291
|
|
|
292
|
-
[data-ui
|
|
293
|
-
|
|
294
|
-
[data-ui='scroll-area'][data-scrollbars='hover']:focus-within > [data-part='viewport'] {
|
|
292
|
+
[data-ui-scroll-area][data-scrollbars='hover']:not([data-disabled]):hover > [data-part-viewport],
|
|
293
|
+
[data-ui-scroll-area][data-scrollbars='hover']:focus-within > [data-part-viewport] {
|
|
295
294
|
scrollbar-color: var(--_thumb) var(--_track);
|
|
296
295
|
}
|
|
297
296
|
|
|
298
297
|
/* ── The gutter ────────────────────────────────────────────────────────── */
|
|
299
298
|
|
|
300
|
-
[data-ui
|
|
299
|
+
[data-ui-scroll-area][data-gutter='auto'] > [data-part-viewport] {
|
|
301
300
|
scrollbar-gutter: auto;
|
|
302
301
|
}
|
|
303
302
|
|
|
304
|
-
[data-ui
|
|
303
|
+
[data-ui-scroll-area][data-gutter='both-edges'] > [data-part-viewport] {
|
|
305
304
|
scrollbar-gutter: stable both-edges;
|
|
306
305
|
}
|
|
307
306
|
|
|
308
307
|
/* ── Scroll chaining ───────────────────────────────────────────────────── */
|
|
309
308
|
|
|
310
|
-
[data-ui
|
|
309
|
+
[data-ui-scroll-area][data-overscroll='auto'] > [data-part-viewport] {
|
|
311
310
|
overscroll-behavior: auto;
|
|
312
311
|
}
|
|
313
312
|
|
|
314
|
-
[data-ui
|
|
313
|
+
[data-ui-scroll-area][data-overscroll='none'] > [data-part-viewport] {
|
|
315
314
|
overscroll-behavior: none;
|
|
316
315
|
}
|
|
317
316
|
|
|
@@ -322,31 +321,31 @@
|
|
|
322
321
|
* code block. These come after the two above, so a chosen `none` holds the
|
|
323
322
|
* scrolling axis and lets the other through.
|
|
324
323
|
*/
|
|
325
|
-
[data-ui
|
|
324
|
+
[data-ui-scroll-area][data-axis='inline'] > [data-part-viewport] {
|
|
326
325
|
overscroll-behavior-y: auto;
|
|
327
326
|
overscroll-behavior-block: auto;
|
|
328
327
|
}
|
|
329
328
|
|
|
330
|
-
[data-ui
|
|
329
|
+
[data-ui-scroll-area][data-axis='block'] > [data-part-viewport] {
|
|
331
330
|
overscroll-behavior-x: auto;
|
|
332
331
|
overscroll-behavior-inline: auto;
|
|
333
332
|
}
|
|
334
333
|
|
|
335
334
|
/* ── The veil, edge by edge ────────────────────────────────────────────── */
|
|
336
335
|
|
|
337
|
-
[data-ui
|
|
336
|
+
[data-ui-scroll-area][data-at-block-start] > [data-part-viewport] {
|
|
338
337
|
--_scroll-area-fade-block-start: 0px;
|
|
339
338
|
}
|
|
340
339
|
|
|
341
|
-
[data-ui
|
|
340
|
+
[data-ui-scroll-area][data-at-block-end] > [data-part-viewport] {
|
|
342
341
|
--_scroll-area-fade-block-end: 0px;
|
|
343
342
|
}
|
|
344
343
|
|
|
345
|
-
[data-ui
|
|
344
|
+
[data-ui-scroll-area][data-at-inline-start] > [data-part-viewport] {
|
|
346
345
|
--_scroll-area-fade-inline-start: 0px;
|
|
347
346
|
}
|
|
348
347
|
|
|
349
|
-
[data-ui
|
|
348
|
+
[data-ui-scroll-area][data-at-inline-end] > [data-part-viewport] {
|
|
350
349
|
--_scroll-area-fade-inline-end: 0px;
|
|
351
350
|
}
|
|
352
351
|
|
|
@@ -355,7 +354,7 @@
|
|
|
355
354
|
* scroller holds what the reader has already passed, and a product that
|
|
356
355
|
* would rather not dim it says so here.
|
|
357
356
|
*/
|
|
358
|
-
[data-ui
|
|
357
|
+
[data-ui-scroll-area][data-fade='end'] > [data-part-viewport] {
|
|
359
358
|
--_scroll-area-fade-block-start: 0px;
|
|
360
359
|
--_scroll-area-fade-inline-start: 0px;
|
|
361
360
|
}
|
|
@@ -365,7 +364,7 @@
|
|
|
365
364
|
* the element on its own compositing layer, and a long list pays for that on
|
|
366
365
|
* every frame.
|
|
367
366
|
*/
|
|
368
|
-
[data-ui
|
|
367
|
+
[data-ui-scroll-area][data-fade='none'] > [data-part-viewport],
|
|
369
368
|
/**
|
|
370
369
|
* A vertical writing mode turns the box, and a gradient cannot be given a
|
|
371
370
|
* logical direction. Rather than veil the wrong two edges, the family veils
|
|
@@ -373,7 +372,7 @@
|
|
|
373
372
|
* affordance there draws it from them. The binding writes `data-sideways`
|
|
374
373
|
* because only script can read a writing mode.
|
|
375
374
|
*/
|
|
376
|
-
[data-ui
|
|
375
|
+
[data-ui-scroll-area][data-sideways] > [data-part-viewport] {
|
|
377
376
|
mask-image: none;
|
|
378
377
|
}
|
|
379
378
|
|
|
@@ -391,7 +390,7 @@
|
|
|
391
390
|
* `min-inline-size: fit-content` so a row wider than the scrollport widens
|
|
392
391
|
* this box with it, and the inset survives at the far end.
|
|
393
392
|
*/
|
|
394
|
-
[data-ui
|
|
393
|
+
[data-ui-scroll-area] > [data-part-viewport] > [data-part-content] {
|
|
395
394
|
box-sizing: border-box;
|
|
396
395
|
min-inline-size: fit-content;
|
|
397
396
|
padding: var(--slotted-scroll-area-inset, var(--slotted-space-5, 0.75rem));
|
|
@@ -416,12 +415,10 @@
|
|
|
416
415
|
* `:focus-visible` (`createFocusOrigin`). The browser's own ring on the
|
|
417
416
|
* viewport is suppressed: the frame draws the one ring.
|
|
418
417
|
*/
|
|
419
|
-
[data-ui
|
|
418
|
+
[data-ui-scroll-area] > [data-part-viewport]:focus {
|
|
420
419
|
outline: none;
|
|
421
420
|
}
|
|
422
|
-
[data-ui
|
|
423
|
-
> [data-part='viewport']:focus-visible[data-focus-origin='keyboard']
|
|
424
|
-
) {
|
|
421
|
+
[data-ui-scroll-area]:has(> [data-part-viewport]:focus-visible[data-focus-origin='keyboard']) {
|
|
425
422
|
outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);
|
|
426
423
|
outline-offset: var(--slotted-focus-ring-offset, 2px);
|
|
427
424
|
}
|
|
@@ -435,8 +432,8 @@
|
|
|
435
432
|
* sentence.
|
|
436
433
|
*/
|
|
437
434
|
@media print {
|
|
438
|
-
[data-ui
|
|
439
|
-
[data-ui
|
|
435
|
+
[data-ui-scroll-area],
|
|
436
|
+
[data-ui-scroll-area] > [data-part-viewport] {
|
|
440
437
|
max-block-size: none;
|
|
441
438
|
max-inline-size: none;
|
|
442
439
|
overflow: visible;
|
|
@@ -450,7 +447,7 @@
|
|
|
450
447
|
* the system's own, which is what `scrollbar-color: auto` means.
|
|
451
448
|
*/
|
|
452
449
|
@media (forced-colors: active) {
|
|
453
|
-
[data-ui
|
|
450
|
+
[data-ui-scroll-area] > [data-part-viewport] {
|
|
454
451
|
mask-image: none;
|
|
455
452
|
scrollbar-color: auto;
|
|
456
453
|
}
|
package/src/section/section.css
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
* sections, and the families inside it — a card, a description-list — have
|
|
16
16
|
* a `header`, an `actions` and a `description` of their own.
|
|
17
17
|
*/
|
|
18
|
-
[data-ui
|
|
18
|
+
[data-ui-section] {
|
|
19
19
|
--_gap: var(--slotted-section-gap, var(--slotted-space-5, 0.75rem));
|
|
20
20
|
--_text: var(--slotted-text, CanvasText);
|
|
21
21
|
--_muted: var(--slotted-text-muted, GrayText);
|
|
@@ -42,11 +42,11 @@
|
|
|
42
42
|
scroll-margin-block-start: var(--slotted-page-sticky-top, 0px);
|
|
43
43
|
}
|
|
44
44
|
|
|
45
|
-
[data-ui
|
|
45
|
+
[data-ui-section][data-size='sm'] {
|
|
46
46
|
--_heading-size: var(--slotted-section-heading-size-sm, var(--slotted-font-size-md, 0.875rem));
|
|
47
47
|
--_heading-line-height: var(--slotted-line-height-md, 1.5);
|
|
48
48
|
}
|
|
49
|
-
[data-ui
|
|
49
|
+
[data-ui-section][data-size='lg'] {
|
|
50
50
|
--_heading-size: var(--slotted-section-heading-size-lg, var(--slotted-font-size-xl, 1.125rem));
|
|
51
51
|
--_heading-line-height: var(--slotted-line-height-xl, 1.45);
|
|
52
52
|
}
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
* A surface and not a card: a raised ground, a subtle edge, the large
|
|
56
56
|
* radius, one step of inset, and no shadow, no hover, no action.
|
|
57
57
|
*/
|
|
58
|
-
[data-ui
|
|
58
|
+
[data-ui-section][data-ground='surface'] {
|
|
59
59
|
--_ground: var(--slotted-section-surface, var(--slotted-surface-raised, Canvas));
|
|
60
60
|
/* Published, as a card's is, for the families that state a ground inside it. */
|
|
61
61
|
--slotted-ground: var(--_ground);
|
|
@@ -67,7 +67,7 @@
|
|
|
67
67
|
|
|
68
68
|
/* ── The header ──────────────────────────────────────────────────────── */
|
|
69
69
|
|
|
70
|
-
[data-ui
|
|
70
|
+
[data-ui-section] > [data-part-header] {
|
|
71
71
|
align-items: flex-start;
|
|
72
72
|
display: flex;
|
|
73
73
|
flex-wrap: wrap;
|
|
@@ -75,7 +75,7 @@
|
|
|
75
75
|
min-inline-size: 0;
|
|
76
76
|
}
|
|
77
77
|
|
|
78
|
-
[data-ui
|
|
78
|
+
[data-ui-section][data-divider] > [data-part-header] {
|
|
79
79
|
border-block-end: var(--slotted-border-width-thin, 1px) solid var(--_rule);
|
|
80
80
|
padding-block-end: var(--slotted-space-4, 0.5rem);
|
|
81
81
|
}
|
|
@@ -85,7 +85,7 @@
|
|
|
85
85
|
* The inset a surface section gives its header is kept by sticking the
|
|
86
86
|
* header at the same distance the surface's padding put it at.
|
|
87
87
|
*/
|
|
88
|
-
[data-ui
|
|
88
|
+
[data-ui-section][data-sticky] > [data-part-header] {
|
|
89
89
|
background-color: var(--_ground);
|
|
90
90
|
inset-block-start: var(--slotted-page-sticky-top, 0px);
|
|
91
91
|
/* Stuck, the header's text and buttons met the chrome's edge with no
|
|
@@ -108,15 +108,15 @@
|
|
|
108
108
|
* The alias on the root is what keeps the redefinition from referring to
|
|
109
109
|
* itself.
|
|
110
110
|
*/
|
|
111
|
-
[data-ui
|
|
111
|
+
[data-ui-section][data-sticky] {
|
|
112
112
|
--_above: var(--slotted-page-sticky-top, 0px);
|
|
113
113
|
}
|
|
114
|
-
[data-ui
|
|
114
|
+
[data-ui-section][data-sticky] > [data-part-body] {
|
|
115
115
|
--slotted-page-sticky-top: calc(var(--_above) + var(--slotted-section-header-size, 0px));
|
|
116
116
|
--slotted-table-sticky-offset: var(--slotted-page-sticky-top);
|
|
117
117
|
}
|
|
118
118
|
|
|
119
|
-
[data-ui
|
|
119
|
+
[data-ui-section] > [data-part-header] > [data-part-title] {
|
|
120
120
|
display: flex;
|
|
121
121
|
flex: 1 1 16rem;
|
|
122
122
|
flex-direction: column;
|
|
@@ -124,7 +124,7 @@
|
|
|
124
124
|
min-inline-size: 0;
|
|
125
125
|
}
|
|
126
126
|
|
|
127
|
-
[data-ui
|
|
127
|
+
[data-ui-section] > [data-part-header] > [data-part-title] > [data-part-eyebrow] {
|
|
128
128
|
color: var(--_muted);
|
|
129
129
|
font-size: var(--slotted-font-size-xs, 0.75rem);
|
|
130
130
|
font-weight: var(--slotted-font-weight-semibold, 600);
|
|
@@ -133,7 +133,7 @@
|
|
|
133
133
|
text-transform: uppercase;
|
|
134
134
|
}
|
|
135
135
|
|
|
136
|
-
[data-ui
|
|
136
|
+
[data-ui-section] > [data-part-header] > [data-part-title] > [data-part-heading] {
|
|
137
137
|
color: var(--_text);
|
|
138
138
|
font-family: var(
|
|
139
139
|
--slotted-font-family-heading,
|
|
@@ -149,7 +149,7 @@
|
|
|
149
149
|
text-wrap: pretty;
|
|
150
150
|
}
|
|
151
151
|
|
|
152
|
-
[data-ui
|
|
152
|
+
[data-ui-section] > [data-part-header] > [data-part-title] > [data-part-description] {
|
|
153
153
|
color: var(--_muted);
|
|
154
154
|
font-size: var(--slotted-font-size-sm, 0.8125rem);
|
|
155
155
|
line-height: var(--slotted-line-height-sm, 1.45);
|
|
@@ -158,20 +158,20 @@
|
|
|
158
158
|
text-wrap: pretty;
|
|
159
159
|
}
|
|
160
160
|
|
|
161
|
-
[data-ui
|
|
161
|
+
[data-ui-section] > [data-part-header] > [data-part-actions] {
|
|
162
162
|
align-items: center;
|
|
163
163
|
display: flex;
|
|
164
164
|
flex: none;
|
|
165
165
|
gap: var(--slotted-control-gap-md, 8px);
|
|
166
166
|
margin-inline-start: auto;
|
|
167
167
|
}
|
|
168
|
-
[data-ui
|
|
168
|
+
[data-ui-section] > [data-part-header] > [data-part-actions]:empty {
|
|
169
169
|
display: none;
|
|
170
170
|
}
|
|
171
171
|
|
|
172
172
|
/* ── The body ────────────────────────────────────────────────────────── */
|
|
173
173
|
|
|
174
|
-
[data-ui
|
|
174
|
+
[data-ui-section] > [data-part-body] {
|
|
175
175
|
min-inline-size: 0;
|
|
176
176
|
}
|
|
177
177
|
}
|