@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
package/src/tabs/tabs.css
CHANGED
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
* │ panel │
|
|
17
17
|
* └──────────────────────────────────────────────────┘
|
|
18
18
|
*/
|
|
19
|
-
[data-ui
|
|
19
|
+
[data-ui-tabs] {
|
|
20
20
|
/**
|
|
21
21
|
* The control scales, read once at the root, so `size` and the three
|
|
22
22
|
* densities are one decision each rather than one per rule.
|
|
@@ -95,7 +95,7 @@
|
|
|
95
95
|
row-gap: var(--slotted-tabs-gap, var(--slotted-space-6, 1rem));
|
|
96
96
|
}
|
|
97
97
|
|
|
98
|
-
[data-ui
|
|
98
|
+
[data-ui-tabs][data-size='sm'] {
|
|
99
99
|
--_height: var(--slotted-control-height-sm, 30px);
|
|
100
100
|
--_font-size: var(--slotted-control-font-size-sm, 0.8125rem);
|
|
101
101
|
--_padding-inline: var(--slotted-control-padding-inline-sm, 0.625rem);
|
|
@@ -104,7 +104,7 @@
|
|
|
104
104
|
--_inner-size: var(--slotted-control-inner-size-sm, 22px);
|
|
105
105
|
}
|
|
106
106
|
|
|
107
|
-
[data-ui
|
|
107
|
+
[data-ui-tabs][data-size='lg'] {
|
|
108
108
|
--_height: var(--slotted-control-height-lg, 40px);
|
|
109
109
|
--_font-size: var(--slotted-control-font-size-lg, 1rem);
|
|
110
110
|
--_padding-inline: var(--slotted-control-padding-inline-lg, 1rem);
|
|
@@ -123,7 +123,7 @@
|
|
|
123
123
|
* the panel: the distance the row gap keeps in a horizontal family. Without
|
|
124
124
|
* it the panel's first letter touched the track on the list's end edge.
|
|
125
125
|
*/
|
|
126
|
-
[data-ui
|
|
126
|
+
[data-ui-tabs][data-orientation='vertical'] {
|
|
127
127
|
/* The inset runs along the block axis, where a tab has no padding. */
|
|
128
128
|
--_marker-inset: var(--slotted-tabs-marker-inset, 0px);
|
|
129
129
|
|
|
@@ -139,7 +139,7 @@
|
|
|
139
139
|
* which is on the border box and therefore does not scroll with the tabs —
|
|
140
140
|
* a track drawn on the content would slide away with the first tab.
|
|
141
141
|
*/
|
|
142
|
-
[data-ui
|
|
142
|
+
[data-ui-tabs] > [data-part-list] {
|
|
143
143
|
align-items: stretch;
|
|
144
144
|
display: flex;
|
|
145
145
|
gap: var(--slotted-tabs-list-gap, var(--_list-gap));
|
|
@@ -166,7 +166,7 @@
|
|
|
166
166
|
scrollbar-width: thin;
|
|
167
167
|
}
|
|
168
168
|
|
|
169
|
-
[data-ui
|
|
169
|
+
[data-ui-tabs][data-overflowing] > [data-part-list] {
|
|
170
170
|
scrollbar-width: none;
|
|
171
171
|
}
|
|
172
172
|
|
|
@@ -177,7 +177,7 @@
|
|
|
177
177
|
* the padding the marker lies over the line, flush with the list's edge. The
|
|
178
178
|
* shadow is the box's, so the line does not scroll with the tabs.
|
|
179
179
|
*/
|
|
180
|
-
[data-ui
|
|
180
|
+
[data-ui-tabs][data-variant='line'][data-track='line'] > [data-part-list] {
|
|
181
181
|
/* How far the hover bar reaches past an item to stand on the track. */
|
|
182
182
|
--_track-reach: var(--_track-size);
|
|
183
183
|
|
|
@@ -206,15 +206,15 @@
|
|
|
206
206
|
* horizontal rule wants — a row of equal shares has a middle — and in a
|
|
207
207
|
* column it produces a ragged left edge nobody can scan.
|
|
208
208
|
*/
|
|
209
|
-
[data-ui
|
|
210
|
-
> :where([data-part
|
|
211
|
-
> :where([data-part
|
|
212
|
-
> [data-part
|
|
209
|
+
[data-ui-tabs][data-orientation='vertical']
|
|
210
|
+
> :where([data-part-list])
|
|
211
|
+
> :where([data-part-item])
|
|
212
|
+
> [data-part-tab] {
|
|
213
213
|
justify-content: start;
|
|
214
214
|
text-align: start;
|
|
215
215
|
}
|
|
216
216
|
|
|
217
|
-
[data-ui
|
|
217
|
+
[data-ui-tabs][data-orientation='vertical'] > [data-part-list] {
|
|
218
218
|
flex-direction: column;
|
|
219
219
|
grid-column: 1;
|
|
220
220
|
grid-row: 1;
|
|
@@ -223,15 +223,15 @@
|
|
|
223
223
|
}
|
|
224
224
|
|
|
225
225
|
/* A shadow takes no logical offset, so the line's side is mirrored by hand. */
|
|
226
|
-
[data-ui
|
|
227
|
-
> [data-part
|
|
226
|
+
[data-ui-tabs][data-orientation='vertical'][data-variant='line'][data-track='line']
|
|
227
|
+
> [data-part-list] {
|
|
228
228
|
box-shadow: inset calc(-1 * var(--_track-size)) 0 0 var(--_track-color);
|
|
229
229
|
padding-block-end: 0;
|
|
230
230
|
padding-inline-end: var(--_track-size);
|
|
231
231
|
}
|
|
232
232
|
|
|
233
|
-
[data-ui
|
|
234
|
-
> [data-part
|
|
233
|
+
[data-ui-tabs][data-orientation='vertical'][data-variant='line'][data-track='line']:dir(rtl)
|
|
234
|
+
> [data-part-list] {
|
|
235
235
|
box-shadow: inset var(--_track-size) 0 0 var(--_track-color);
|
|
236
236
|
}
|
|
237
237
|
|
|
@@ -244,7 +244,7 @@
|
|
|
244
244
|
* label is what gives way, and it is the only place a horizontal label ever
|
|
245
245
|
* truncates.
|
|
246
246
|
*/
|
|
247
|
-
[data-ui
|
|
247
|
+
[data-ui-tabs][data-fit='equal'] > [data-part-list] {
|
|
248
248
|
display: grid;
|
|
249
249
|
grid-auto-columns: minmax(0, 1fr);
|
|
250
250
|
grid-auto-flow: column;
|
|
@@ -253,15 +253,15 @@
|
|
|
253
253
|
}
|
|
254
254
|
|
|
255
255
|
/** Equal shares are shares of the line, so each item takes the one it is given. */
|
|
256
|
-
[data-ui
|
|
256
|
+
[data-ui-tabs][data-fit='equal'] > :where([data-part-list]) > [data-part-item] {
|
|
257
257
|
min-inline-size: 0;
|
|
258
258
|
}
|
|
259
259
|
|
|
260
|
-
[data-ui
|
|
261
|
-
> :where([data-part
|
|
262
|
-
> :where([data-part
|
|
263
|
-
> :where([data-part
|
|
264
|
-
> [data-part
|
|
260
|
+
[data-ui-tabs][data-fit='equal']
|
|
261
|
+
> :where([data-part-list])
|
|
262
|
+
> :where([data-part-item])
|
|
263
|
+
> :where([data-part-tab])
|
|
264
|
+
> [data-part-label] {
|
|
265
265
|
overflow: hidden;
|
|
266
266
|
text-overflow: ellipsis;
|
|
267
267
|
white-space: nowrap;
|
|
@@ -274,7 +274,7 @@
|
|
|
274
274
|
* contain a `button`: a dismissible tab needs a box for its second control.
|
|
275
275
|
* It also carries the hover bar, under the tab and not the control.
|
|
276
276
|
*/
|
|
277
|
-
[data-ui
|
|
277
|
+
[data-ui-tabs] > :where([data-part-list]) > [data-part-item] {
|
|
278
278
|
align-items: stretch;
|
|
279
279
|
display: grid;
|
|
280
280
|
grid-auto-flow: column;
|
|
@@ -288,7 +288,7 @@
|
|
|
288
288
|
position: relative;
|
|
289
289
|
}
|
|
290
290
|
|
|
291
|
-
[data-ui
|
|
291
|
+
[data-ui-tabs] > :where([data-part-list]) > :where([data-part-item]) > [data-part-tab] {
|
|
292
292
|
align-items: center;
|
|
293
293
|
appearance: none;
|
|
294
294
|
background-color: transparent;
|
|
@@ -320,10 +320,10 @@
|
|
|
320
320
|
* inset there: the control carries it instead, measured from the mark rather
|
|
321
321
|
* than from the box.
|
|
322
322
|
*/
|
|
323
|
-
[data-ui
|
|
324
|
-
> :where([data-part
|
|
325
|
-
> [data-part
|
|
326
|
-
> [data-part
|
|
323
|
+
[data-ui-tabs]
|
|
324
|
+
> :where([data-part-list])
|
|
325
|
+
> [data-part-item]:has(> [data-part-dismiss])
|
|
326
|
+
> [data-part-tab] {
|
|
327
327
|
padding-inline-end: 0;
|
|
328
328
|
}
|
|
329
329
|
|
|
@@ -333,11 +333,11 @@
|
|
|
333
333
|
* needs something to be aligned against, and a label in another script needs
|
|
334
334
|
* to read its own way inside a page that reads the other.
|
|
335
335
|
*/
|
|
336
|
-
[data-ui
|
|
337
|
-
> :where([data-part
|
|
338
|
-
> :where([data-part
|
|
339
|
-
> :where([data-part
|
|
340
|
-
> [data-part
|
|
336
|
+
[data-ui-tabs]
|
|
337
|
+
> :where([data-part-list])
|
|
338
|
+
> :where([data-part-item])
|
|
339
|
+
> :where([data-part-tab])
|
|
340
|
+
> [data-part-label] {
|
|
341
341
|
min-inline-size: 0;
|
|
342
342
|
unicode-bidi: plaintext;
|
|
343
343
|
}
|
|
@@ -349,11 +349,11 @@
|
|
|
349
349
|
* gives way. An icon box reads `--slotted-icon-size` from the slot, so it
|
|
350
350
|
* takes the tab's icon step.
|
|
351
351
|
*/
|
|
352
|
-
[data-ui
|
|
353
|
-
> :where([data-part
|
|
354
|
-
> :where([data-part
|
|
355
|
-
> :where([data-part
|
|
356
|
-
> :is([data-part
|
|
352
|
+
[data-ui-tabs]
|
|
353
|
+
> :where([data-part-list])
|
|
354
|
+
> :where([data-part-item])
|
|
355
|
+
> :where([data-part-tab])
|
|
356
|
+
> :is([data-part-start], [data-part-end]) {
|
|
357
357
|
--slotted-icon-size: var(--_icon-size);
|
|
358
358
|
|
|
359
359
|
align-items: center;
|
|
@@ -372,10 +372,10 @@
|
|
|
372
372
|
* meeting a line that runs under all of them. What that variant says on
|
|
373
373
|
* hover is where the mark would go, and it says it on the item, below.
|
|
374
374
|
*/
|
|
375
|
-
[data-ui
|
|
376
|
-
> :where([data-part
|
|
377
|
-
> :where([data-part
|
|
378
|
-
> [data-part
|
|
375
|
+
[data-ui-tabs]
|
|
376
|
+
> :where([data-part-list])
|
|
377
|
+
> :where([data-part-item])
|
|
378
|
+
> [data-part-tab]:not(:disabled):not([aria-selected='true']):hover {
|
|
379
379
|
color: var(--slotted-tabs-hover-color, var(--slotted-text, CanvasText));
|
|
380
380
|
}
|
|
381
381
|
|
|
@@ -385,20 +385,20 @@
|
|
|
385
385
|
* and goes one step further on press is what a segmented control does —
|
|
386
386
|
* the fill has a box to belong to and no line to meet.
|
|
387
387
|
*/
|
|
388
|
-
[data-ui
|
|
389
|
-
> :where([data-part
|
|
390
|
-
> :where([data-part
|
|
391
|
-
> [data-part
|
|
388
|
+
[data-ui-tabs][data-variant='contained']
|
|
389
|
+
> :where([data-part-list])
|
|
390
|
+
> :where([data-part-item])
|
|
391
|
+
> [data-part-tab]:not(:disabled):not([aria-selected='true']):hover {
|
|
392
392
|
background-color: var(
|
|
393
393
|
--slotted-tabs-hover-background,
|
|
394
394
|
var(--slotted-tone-secondary-subtle-hover)
|
|
395
395
|
);
|
|
396
396
|
}
|
|
397
397
|
|
|
398
|
-
[data-ui
|
|
399
|
-
> :where([data-part
|
|
400
|
-
> :where([data-part
|
|
401
|
-
> [data-part
|
|
398
|
+
[data-ui-tabs][data-variant='contained']
|
|
399
|
+
> :where([data-part-list])
|
|
400
|
+
> :where([data-part-item])
|
|
401
|
+
> [data-part-tab]:not(:disabled):active {
|
|
402
402
|
background-color: var(
|
|
403
403
|
--slotted-tabs-active-background,
|
|
404
404
|
var(--slotted-tone-secondary-subtle-active)
|
|
@@ -416,10 +416,10 @@
|
|
|
416
416
|
* focus became one blue shape that said neither of the two things — the
|
|
417
417
|
* capture is what showed it.
|
|
418
418
|
*/
|
|
419
|
-
[data-ui
|
|
420
|
-
> :where([data-part
|
|
421
|
-
> :where([data-part
|
|
422
|
-
> [data-part
|
|
419
|
+
[data-ui-tabs]
|
|
420
|
+
> :where([data-part-list])
|
|
421
|
+
> :where([data-part-item])
|
|
422
|
+
> [data-part-tab]:focus-visible {
|
|
423
423
|
outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);
|
|
424
424
|
outline-offset: calc(-1 * (var(--slotted-focus-ring-offset, 2px) + var(--_marker-size)));
|
|
425
425
|
}
|
|
@@ -430,25 +430,19 @@
|
|
|
430
430
|
* and nothing about it reaches the edge the scroller clips at — and an inset
|
|
431
431
|
* ring on a twenty-four pixel box would be drawn through the mark.
|
|
432
432
|
*/
|
|
433
|
-
[data-ui
|
|
434
|
-
> :where([data-part
|
|
435
|
-
> :where([data-part
|
|
436
|
-
> [data-part
|
|
433
|
+
[data-ui-tabs]
|
|
434
|
+
> :where([data-part-list])
|
|
435
|
+
> :where([data-part-item])
|
|
436
|
+
> [data-part-dismiss]:focus-visible {
|
|
437
437
|
outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);
|
|
438
438
|
outline-offset: var(--slotted-focus-ring-offset, 2px);
|
|
439
439
|
}
|
|
440
440
|
|
|
441
|
-
[data-ui
|
|
442
|
-
> :where([data-part='list'])
|
|
443
|
-
> [data-part='item'][data-selected]
|
|
444
|
-
> [data-part='tab'] {
|
|
441
|
+
[data-ui-tabs] > :where([data-part-list]) > [data-part-item][data-selected] > [data-part-tab] {
|
|
445
442
|
color: var(--slotted-tabs-selected-color, var(--slotted-tone-accent-text));
|
|
446
443
|
}
|
|
447
444
|
|
|
448
|
-
[data-ui
|
|
449
|
-
> :where([data-part='list'])
|
|
450
|
-
> :where([data-part='item'])
|
|
451
|
-
> [data-part='tab']:disabled {
|
|
445
|
+
[data-ui-tabs] > :where([data-part-list]) > :where([data-part-item]) > [data-part-tab]:disabled {
|
|
452
446
|
color: var(--slotted-disabled-foreground, GrayText);
|
|
453
447
|
cursor: not-allowed;
|
|
454
448
|
}
|
|
@@ -475,7 +469,7 @@
|
|
|
475
469
|
* main-thread `inline-size` drifted apart while the panel rendered, and the
|
|
476
470
|
* bar grew and shrank on its way between tabs of unequal widths.
|
|
477
471
|
*/
|
|
478
|
-
[data-ui
|
|
472
|
+
[data-ui-tabs] > :where([data-part-list]) > [data-part-marker] {
|
|
479
473
|
--_start-inset: var(--_marker-inset);
|
|
480
474
|
--_end-inset: var(--_marker-inset);
|
|
481
475
|
--_left-inset: var(--_start-inset);
|
|
@@ -494,17 +488,17 @@
|
|
|
494
488
|
position: absolute;
|
|
495
489
|
}
|
|
496
490
|
|
|
497
|
-
[data-ui
|
|
491
|
+
[data-ui-tabs]:dir(rtl) > :where([data-part-list]) > [data-part-marker] {
|
|
498
492
|
--_left-inset: var(--_end-inset);
|
|
499
493
|
}
|
|
500
494
|
|
|
501
|
-
[data-ui
|
|
502
|
-
> [data-part
|
|
503
|
-
> [data-part
|
|
495
|
+
[data-ui-tabs]:not([data-orientation='vertical'])
|
|
496
|
+
> [data-part-list]:has(> [data-part-item][data-selected] > [data-part-dismiss])
|
|
497
|
+
> [data-part-marker] {
|
|
504
498
|
--_end-inset: 0px;
|
|
505
499
|
}
|
|
506
500
|
|
|
507
|
-
[data-ui
|
|
501
|
+
[data-ui-tabs] > :where([data-part-list]) > [data-part-marker][hidden] {
|
|
508
502
|
display: none;
|
|
509
503
|
}
|
|
510
504
|
|
|
@@ -518,7 +512,7 @@
|
|
|
518
512
|
* distance in its first frame and read as a jump. Under reduced motion it
|
|
519
513
|
* jumps.
|
|
520
514
|
*/
|
|
521
|
-
[data-ui
|
|
515
|
+
[data-ui-tabs] > :where([data-part-list]) > [data-part-marker][data-moving] {
|
|
522
516
|
--_marker-easing: var(--slotted-tabs-marker-easing, cubic-bezier(0.4, 0, 0.2, 1));
|
|
523
517
|
|
|
524
518
|
transition:
|
|
@@ -529,7 +523,7 @@
|
|
|
529
523
|
}
|
|
530
524
|
|
|
531
525
|
@media (prefers-reduced-motion: reduce) {
|
|
532
|
-
[data-ui
|
|
526
|
+
[data-ui-tabs] > :where([data-part-list]) > [data-part-marker][data-moving] {
|
|
533
527
|
transition: none;
|
|
534
528
|
}
|
|
535
529
|
}
|
|
@@ -543,7 +537,7 @@
|
|
|
543
537
|
* stops at the tab where a closing control follows: that control is the
|
|
544
538
|
* tab's inline padding on either side of the glyph.
|
|
545
539
|
*/
|
|
546
|
-
[data-ui
|
|
540
|
+
[data-ui-tabs] > :where([data-part-list]) > [data-part-item]::before {
|
|
547
541
|
background-color: var(--slotted-tabs-hover-marker-color, var(--slotted-border-strong));
|
|
548
542
|
block-size: var(--_marker-size);
|
|
549
543
|
border-radius: var(--_marker-radius);
|
|
@@ -560,26 +554,22 @@
|
|
|
560
554
|
opacity var(--slotted-control-transition-duration) var(--slotted-control-transition-easing);
|
|
561
555
|
}
|
|
562
556
|
|
|
563
|
-
[data-ui
|
|
564
|
-
> :where([data-part
|
|
565
|
-
> [data-part
|
|
557
|
+
[data-ui-tabs]:not([data-orientation='vertical'])
|
|
558
|
+
> :where([data-part-list])
|
|
559
|
+
> [data-part-item]:has(> [data-part-dismiss])::before {
|
|
566
560
|
inset-inline-end: calc(2 * var(--_padding-inline) + var(--_icon-size));
|
|
567
561
|
}
|
|
568
562
|
|
|
569
|
-
[data-ui
|
|
570
|
-
> :where([data-part
|
|
571
|
-
> [data-part
|
|
572
|
-
> [data-part='tab']:not(:disabled):hover
|
|
573
|
-
)::before {
|
|
563
|
+
[data-ui-tabs][data-variant='line']
|
|
564
|
+
> :where([data-part-list])
|
|
565
|
+
> [data-part-item]:not([data-selected]):has(> [data-part-tab]:not(:disabled):hover)::before {
|
|
574
566
|
opacity: var(--slotted-tabs-hover-marker-opacity, 0.5);
|
|
575
567
|
}
|
|
576
568
|
|
|
577
569
|
/** Press takes the bar to the label's own ink: the two say one thing. */
|
|
578
|
-
[data-ui
|
|
579
|
-
> :where([data-part
|
|
580
|
-
> [data-part
|
|
581
|
-
> [data-part='tab']:not(:disabled):active
|
|
582
|
-
)::before {
|
|
570
|
+
[data-ui-tabs][data-variant='line']
|
|
571
|
+
> :where([data-part-list])
|
|
572
|
+
> [data-part-item]:not([data-selected]):has(> [data-part-tab]:not(:disabled):active)::before {
|
|
583
573
|
background-color: var(--slotted-tabs-active-marker-color, var(--slotted-text));
|
|
584
574
|
}
|
|
585
575
|
|
|
@@ -588,9 +578,7 @@
|
|
|
588
578
|
* the block axis, where the inset defaults to nought because a tab has no
|
|
589
579
|
* block padding.
|
|
590
580
|
*/
|
|
591
|
-
[data-ui
|
|
592
|
-
> :where([data-part='list'])
|
|
593
|
-
> [data-part='marker'] {
|
|
581
|
+
[data-ui-tabs][data-orientation='vertical'] > :where([data-part-list]) > [data-part-marker] {
|
|
594
582
|
block-size: var(--_length);
|
|
595
583
|
inline-size: var(--_marker-size);
|
|
596
584
|
inset-block: calc(
|
|
@@ -600,9 +588,9 @@
|
|
|
600
588
|
inset-inline: auto calc(var(--_marker-lift, 0px) + var(--_marker-offset));
|
|
601
589
|
}
|
|
602
590
|
|
|
603
|
-
[data-ui
|
|
604
|
-
> :where([data-part
|
|
605
|
-
> [data-part
|
|
591
|
+
[data-ui-tabs][data-orientation='vertical']
|
|
592
|
+
> :where([data-part-list])
|
|
593
|
+
> [data-part-item]::before {
|
|
606
594
|
block-size: auto;
|
|
607
595
|
inline-size: var(--_marker-size);
|
|
608
596
|
inset-block: var(--_marker-inset);
|
|
@@ -626,7 +614,7 @@
|
|
|
626
614
|
* the first capture showed; the `line` variant keeps the full width, because
|
|
627
615
|
* there the track is the edge of the panel below it.
|
|
628
616
|
*/
|
|
629
|
-
[data-ui
|
|
617
|
+
[data-ui-tabs][data-variant='contained'] > [data-part-list] {
|
|
630
618
|
/* The marker underlines the label inside the selected surface, a step above its edge. */
|
|
631
619
|
--_marker-lift: calc(2 * var(--slotted-space-1, 0.125rem));
|
|
632
620
|
|
|
@@ -637,15 +625,15 @@
|
|
|
637
625
|
padding: var(--slotted-space-1, 0.125rem);
|
|
638
626
|
}
|
|
639
627
|
|
|
640
|
-
[data-ui
|
|
628
|
+
[data-ui-tabs][data-variant='contained'] > :where([data-part-list]) > [data-part-item] {
|
|
641
629
|
border-radius: var(--slotted-radius-sm, 4px);
|
|
642
630
|
transition: background-color var(--slotted-control-transition-duration)
|
|
643
631
|
var(--slotted-control-transition-easing);
|
|
644
632
|
}
|
|
645
633
|
|
|
646
|
-
[data-ui
|
|
647
|
-
> :where([data-part
|
|
648
|
-
> [data-part
|
|
634
|
+
[data-ui-tabs][data-variant='contained']
|
|
635
|
+
> :where([data-part-list])
|
|
636
|
+
> [data-part-item][data-selected] {
|
|
649
637
|
background-color: var(--slotted-tabs-contained-selected-background, var(--slotted-surface));
|
|
650
638
|
box-shadow: var(--slotted-shadow-xs);
|
|
651
639
|
}
|
|
@@ -668,10 +656,7 @@
|
|
|
668
656
|
* Neutral, as the dialog's close and the paging controls: removing a tab
|
|
669
657
|
* closes a view and destroys nothing, so the danger tone overstated it.
|
|
670
658
|
*/
|
|
671
|
-
[data-ui
|
|
672
|
-
> :where([data-part='list'])
|
|
673
|
-
> :where([data-part='item'])
|
|
674
|
-
> [data-part='dismiss'] {
|
|
659
|
+
[data-ui-tabs] > :where([data-part-list]) > :where([data-part-item]) > [data-part-dismiss] {
|
|
675
660
|
--slotted-icon-size: var(--_icon-size);
|
|
676
661
|
|
|
677
662
|
align-items: center;
|
|
@@ -700,27 +685,24 @@
|
|
|
700
685
|
is the one a mouse sees: a transparent box centred on the control reaches
|
|
701
686
|
44 pixels, and the ground and the ring stay square. */
|
|
702
687
|
@media (pointer: coarse) {
|
|
703
|
-
[data-ui
|
|
704
|
-
> :where([data-part='list'])
|
|
705
|
-
> :where([data-part='item'])
|
|
706
|
-
> [data-part='dismiss'] {
|
|
688
|
+
[data-ui-tabs] > :where([data-part-list]) > :where([data-part-item]) > [data-part-dismiss] {
|
|
707
689
|
position: relative;
|
|
708
690
|
}
|
|
709
691
|
|
|
710
|
-
[data-ui
|
|
711
|
-
> :where([data-part
|
|
712
|
-
> :where([data-part
|
|
713
|
-
> [data-part
|
|
692
|
+
[data-ui-tabs]
|
|
693
|
+
> :where([data-part-list])
|
|
694
|
+
> :where([data-part-item])
|
|
695
|
+
> [data-part-dismiss]::after {
|
|
714
696
|
content: '';
|
|
715
697
|
inset: min(0px, calc((100% - var(--slotted-target-comfortable, 44px)) / 2));
|
|
716
698
|
position: absolute;
|
|
717
699
|
}
|
|
718
700
|
}
|
|
719
701
|
|
|
720
|
-
[data-ui
|
|
721
|
-
> :where([data-part
|
|
722
|
-
> :where([data-part
|
|
723
|
-
> [data-part
|
|
702
|
+
[data-ui-tabs]
|
|
703
|
+
> :where([data-part-list])
|
|
704
|
+
> :where([data-part-item])
|
|
705
|
+
> [data-part-dismiss]:not(:disabled):hover {
|
|
724
706
|
background-color: var(
|
|
725
707
|
--slotted-tabs-dismiss-hover-background,
|
|
726
708
|
var(--slotted-tone-secondary-subtle-hover)
|
|
@@ -728,10 +710,10 @@
|
|
|
728
710
|
color: var(--slotted-tabs-dismiss-hover-color, var(--slotted-text, CanvasText));
|
|
729
711
|
}
|
|
730
712
|
|
|
731
|
-
[data-ui
|
|
732
|
-
> :where([data-part
|
|
733
|
-
> :where([data-part
|
|
734
|
-
> [data-part
|
|
713
|
+
[data-ui-tabs]
|
|
714
|
+
> :where([data-part-list])
|
|
715
|
+
> :where([data-part-item])
|
|
716
|
+
> [data-part-dismiss]:not(:disabled):active {
|
|
735
717
|
background-color: var(
|
|
736
718
|
--slotted-tabs-dismiss-active-background,
|
|
737
719
|
var(--slotted-tone-secondary-subtle-active)
|
|
@@ -739,10 +721,10 @@
|
|
|
739
721
|
color: var(--slotted-tabs-dismiss-active-color, var(--slotted-text, CanvasText));
|
|
740
722
|
}
|
|
741
723
|
|
|
742
|
-
[data-ui
|
|
743
|
-
> :where([data-part
|
|
744
|
-
> :where([data-part
|
|
745
|
-
> [data-part
|
|
724
|
+
[data-ui-tabs]
|
|
725
|
+
> :where([data-part-list])
|
|
726
|
+
> :where([data-part-item])
|
|
727
|
+
> [data-part-dismiss]:disabled {
|
|
746
728
|
color: var(--slotted-disabled-foreground, GrayText);
|
|
747
729
|
cursor: not-allowed;
|
|
748
730
|
}
|
|
@@ -765,7 +747,7 @@
|
|
|
765
747
|
* list as they move, and Cloudscape's own guidance warns against extra
|
|
766
748
|
* stops before a tab list.
|
|
767
749
|
*/
|
|
768
|
-
[data-ui
|
|
750
|
+
[data-ui-tabs] > [data-part-scroll] {
|
|
769
751
|
--slotted-icon-size: var(--_icon-size);
|
|
770
752
|
|
|
771
753
|
align-items: center;
|
|
@@ -797,31 +779,30 @@
|
|
|
797
779
|
* is read from the control itself — a paging control at its end is
|
|
798
780
|
* disabled — so the family needs no second signal for it.
|
|
799
781
|
*/
|
|
800
|
-
[data-ui
|
|
801
|
-
> [data-part
|
|
782
|
+
[data-ui-tabs]:has(> [data-part-scroll][data-direction='start']:not(:disabled))
|
|
783
|
+
> [data-part-list] {
|
|
802
784
|
mask-image: linear-gradient(to right, transparent, black var(--_fade));
|
|
803
785
|
}
|
|
804
786
|
|
|
805
|
-
[data-ui
|
|
806
|
-
> [data-part='list'] {
|
|
787
|
+
[data-ui-tabs]:has(> [data-part-scroll][data-direction='end']:not(:disabled)) > [data-part-list] {
|
|
807
788
|
mask-image: linear-gradient(to left, transparent, black var(--_fade));
|
|
808
789
|
}
|
|
809
790
|
|
|
810
791
|
/* The start edge is the right one in a right-to-left document. */
|
|
811
|
-
[data-ui
|
|
812
|
-
> [data-part
|
|
792
|
+
[data-ui-tabs]:dir(rtl):has(> [data-part-scroll][data-direction='start']:not(:disabled))
|
|
793
|
+
> [data-part-list] {
|
|
813
794
|
mask-image: linear-gradient(to left, transparent, black var(--_fade));
|
|
814
795
|
}
|
|
815
796
|
|
|
816
|
-
[data-ui
|
|
817
|
-
> [data-part
|
|
797
|
+
[data-ui-tabs]:dir(rtl):has(> [data-part-scroll][data-direction='end']:not(:disabled))
|
|
798
|
+
> [data-part-list] {
|
|
818
799
|
mask-image: linear-gradient(to right, transparent, black var(--_fade));
|
|
819
800
|
}
|
|
820
801
|
|
|
821
|
-
[data-ui
|
|
822
|
-
> [data-part
|
|
802
|
+
[data-ui-tabs]:has(> [data-part-scroll][data-direction='start']:not(:disabled)):has(
|
|
803
|
+
> [data-part-scroll][data-direction='end']:not(:disabled)
|
|
823
804
|
)
|
|
824
|
-
> [data-part
|
|
805
|
+
> [data-part-list] {
|
|
825
806
|
mask-image: linear-gradient(
|
|
826
807
|
to right,
|
|
827
808
|
transparent,
|
|
@@ -835,19 +816,19 @@
|
|
|
835
816
|
for both axes. As wide as its glyph and as tall as the row, it stood 24
|
|
836
817
|
wide and 44 tall beside tabs grown to the comfortable height. */
|
|
837
818
|
@media (pointer: coarse) {
|
|
838
|
-
[data-ui
|
|
819
|
+
[data-ui-tabs] > [data-part-scroll] {
|
|
839
820
|
min-block-size: max(var(--slotted-target-comfortable, 44px), var(--_height));
|
|
840
821
|
min-inline-size: max(var(--slotted-target-comfortable, 44px), var(--_height));
|
|
841
822
|
}
|
|
842
823
|
}
|
|
843
824
|
|
|
844
|
-
[data-ui
|
|
825
|
+
[data-ui-tabs] > [data-part-scroll][data-direction='start'] {
|
|
845
826
|
grid-column: 1;
|
|
846
827
|
grid-row: 1;
|
|
847
828
|
margin-inline-end: var(--slotted-tabs-actions-gap, var(--slotted-space-4, 0.5rem));
|
|
848
829
|
}
|
|
849
830
|
|
|
850
|
-
[data-ui
|
|
831
|
+
[data-ui-tabs] > [data-part-scroll][data-direction='end'] {
|
|
851
832
|
grid-column: 3;
|
|
852
833
|
margin-inline-start: var(--slotted-tabs-actions-gap, var(--slotted-space-4, 0.5rem));
|
|
853
834
|
grid-row: 1;
|
|
@@ -862,26 +843,26 @@
|
|
|
862
843
|
* own mirror holds: the two compose, so the start control points back in
|
|
863
844
|
* both directions.
|
|
864
845
|
*/
|
|
865
|
-
[data-ui
|
|
846
|
+
[data-ui-tabs] > [data-part-scroll][data-direction='start'] > [data-ui-icon] {
|
|
866
847
|
rotate: 0.5turn;
|
|
867
848
|
}
|
|
868
849
|
|
|
869
850
|
/* The ground moves under the pointer and nothing else does (R2). */
|
|
870
|
-
[data-ui
|
|
851
|
+
[data-ui-tabs] > [data-part-scroll]:not(:disabled):hover {
|
|
871
852
|
background-color: var(
|
|
872
853
|
--slotted-tabs-hover-background,
|
|
873
854
|
var(--slotted-tone-secondary-subtle-hover)
|
|
874
855
|
);
|
|
875
856
|
}
|
|
876
857
|
|
|
877
|
-
[data-ui
|
|
858
|
+
[data-ui-tabs] > [data-part-scroll]:not(:disabled):active {
|
|
878
859
|
background-color: var(
|
|
879
860
|
--slotted-tabs-active-background,
|
|
880
861
|
var(--slotted-tone-secondary-subtle-active)
|
|
881
862
|
);
|
|
882
863
|
}
|
|
883
864
|
|
|
884
|
-
[data-ui
|
|
865
|
+
[data-ui-tabs] > [data-part-scroll]:focus-visible {
|
|
885
866
|
outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);
|
|
886
867
|
outline-offset: calc(-1 * var(--slotted-focus-ring-width, 2px));
|
|
887
868
|
}
|
|
@@ -892,18 +873,18 @@
|
|
|
892
873
|
* not removed — so the list never moves under the pointer that is using
|
|
893
874
|
* the other one.
|
|
894
875
|
*/
|
|
895
|
-
[data-ui
|
|
876
|
+
[data-ui-tabs] > [data-part-scroll]:disabled {
|
|
896
877
|
cursor: default;
|
|
897
878
|
visibility: hidden;
|
|
898
879
|
}
|
|
899
880
|
|
|
900
|
-
[data-ui
|
|
881
|
+
[data-ui-tabs][data-orientation='vertical'] > [data-part-scroll] {
|
|
901
882
|
display: none;
|
|
902
883
|
}
|
|
903
884
|
|
|
904
885
|
/* ── Actions, and the panels ──────────────────────────────────────────── */
|
|
905
886
|
|
|
906
|
-
[data-ui
|
|
887
|
+
[data-ui-tabs] > [data-part-actions] {
|
|
907
888
|
align-items: center;
|
|
908
889
|
align-self: center;
|
|
909
890
|
display: flex;
|
|
@@ -913,7 +894,7 @@
|
|
|
913
894
|
min-inline-size: 0;
|
|
914
895
|
}
|
|
915
896
|
|
|
916
|
-
[data-ui
|
|
897
|
+
[data-ui-tabs][data-orientation='vertical'] > [data-part-actions] {
|
|
917
898
|
grid-column: 1;
|
|
918
899
|
grid-row: 2;
|
|
919
900
|
}
|
|
@@ -932,14 +913,14 @@
|
|
|
932
913
|
* their own element, which is one declaration against a layout that
|
|
933
914
|
* otherwise breaks for every reader on a narrow screen.
|
|
934
915
|
*/
|
|
935
|
-
[data-ui
|
|
916
|
+
[data-ui-tabs] > [data-part-panel] {
|
|
936
917
|
grid-column: 1 / -1;
|
|
937
918
|
grid-row: 2;
|
|
938
919
|
min-inline-size: 0;
|
|
939
920
|
overflow-wrap: anywhere;
|
|
940
921
|
}
|
|
941
922
|
|
|
942
|
-
[data-ui
|
|
923
|
+
[data-ui-tabs][data-orientation='vertical'] > [data-part-panel] {
|
|
943
924
|
grid-column: 2;
|
|
944
925
|
grid-row: 1 / -1;
|
|
945
926
|
}
|
|
@@ -950,7 +931,7 @@
|
|
|
950
931
|
* than relied on. It is the attribute and not a class because a screen
|
|
951
932
|
* reader, find-in-page and `:target` all already understand it.
|
|
952
933
|
*/
|
|
953
|
-
[data-ui
|
|
934
|
+
[data-ui-tabs] > [data-part-panel][hidden] {
|
|
954
935
|
display: none;
|
|
955
936
|
}
|
|
956
937
|
|
|
@@ -960,7 +941,7 @@
|
|
|
960
941
|
* own content and has no padding of its own, so an inset ring is drawn
|
|
961
942
|
* through the first line of it.
|
|
962
943
|
*/
|
|
963
|
-
[data-ui
|
|
944
|
+
[data-ui-tabs] > [data-part-panel]:focus-visible {
|
|
964
945
|
outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);
|
|
965
946
|
outline-offset: var(--slotted-focus-ring-offset, 2px);
|
|
966
947
|
}
|
|
@@ -973,7 +954,7 @@
|
|
|
973
954
|
* panel instead, which needs a clipping viewport that traps horizontal
|
|
974
955
|
* scrolling and fights the list's own scroll.
|
|
975
956
|
*/
|
|
976
|
-
[data-ui
|
|
957
|
+
[data-ui-tabs] > [data-part-panel]:not([hidden]) {
|
|
977
958
|
animation: slotted-tabs-panel-in var(--slotted-duration-short) var(--slotted-easing-enter);
|
|
978
959
|
}
|
|
979
960
|
|
|
@@ -991,11 +972,11 @@
|
|
|
991
972
|
* adds is the track: a disabled family should not read as a live one with
|
|
992
973
|
* grey labels.
|
|
993
974
|
*/
|
|
994
|
-
[data-ui
|
|
975
|
+
[data-ui-tabs][data-disabled] {
|
|
995
976
|
--_track-color: var(--slotted-disabled-border, GrayText);
|
|
996
977
|
}
|
|
997
978
|
|
|
998
|
-
[data-ui
|
|
979
|
+
[data-ui-tabs][data-disabled][data-variant='contained'] > [data-part-list] {
|
|
999
980
|
background-color: var(--slotted-disabled-background, Canvas);
|
|
1000
981
|
}
|
|
1001
982
|
|
|
@@ -1004,7 +985,7 @@
|
|
|
1004
985
|
* decoration in an unthemed page should disappear rather than shout, and a
|
|
1005
986
|
* marker painted `GrayText` with no theme would be the loudest thing on it.
|
|
1006
987
|
*/
|
|
1007
|
-
[data-ui
|
|
988
|
+
[data-ui-tabs][data-disabled] > :where([data-part-list]) > [data-part-marker] {
|
|
1008
989
|
background-color: var(--slotted-disabled-border);
|
|
1009
990
|
}
|
|
1010
991
|
|
|
@@ -1018,27 +999,27 @@
|
|
|
1018
999
|
*/
|
|
1019
1000
|
@media (forced-colors: active) {
|
|
1020
1001
|
/* A shadow is not drawn under forced colours: the track is a border again. */
|
|
1021
|
-
[data-ui
|
|
1002
|
+
[data-ui-tabs][data-variant='line'][data-track='line'] > [data-part-list] {
|
|
1022
1003
|
border-block-end: var(--_track-size) solid CanvasText;
|
|
1023
1004
|
padding-block-end: 0;
|
|
1024
1005
|
}
|
|
1025
1006
|
|
|
1026
|
-
[data-ui
|
|
1027
|
-
> [data-part
|
|
1007
|
+
[data-ui-tabs][data-orientation='vertical'][data-variant='line'][data-track='line']
|
|
1008
|
+
> [data-part-list] {
|
|
1028
1009
|
border-block-end: 0;
|
|
1029
1010
|
border-inline-end: var(--_track-size) solid CanvasText;
|
|
1030
1011
|
padding-inline-end: 0;
|
|
1031
1012
|
}
|
|
1032
1013
|
|
|
1033
1014
|
/* The marker's ground would flatten to Canvas with every other ground. */
|
|
1034
|
-
[data-ui
|
|
1015
|
+
[data-ui-tabs] > :where([data-part-list]) > [data-part-marker] {
|
|
1035
1016
|
background-color: Highlight;
|
|
1036
1017
|
forced-color-adjust: none;
|
|
1037
1018
|
}
|
|
1038
1019
|
|
|
1039
|
-
[data-ui
|
|
1040
|
-
> :where([data-part
|
|
1041
|
-
> [data-part
|
|
1020
|
+
[data-ui-tabs][data-variant='contained']
|
|
1021
|
+
> :where([data-part-list])
|
|
1022
|
+
> [data-part-item][data-selected] {
|
|
1042
1023
|
border: var(--slotted-border-width-thin, 1px) solid Highlight;
|
|
1043
1024
|
}
|
|
1044
1025
|
}
|