@slotted/styles 0.1.0-beta.0 → 0.1.0-beta.10
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 +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 +139 -64
- package/src/button/button.tokens.json +10 -0
- package/src/button-group/button-group.css +76 -72
- 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 +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 +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 +504 -469
- package/src/data-grid/data-grid.tokens.json +2 -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 +70 -70
- package/src/dialog/dialog.css +334 -153
- package/src/dialog/dialog.tokens.json +5 -0
- package/src/divider/divider.css +18 -18
- package/src/drawer/drawer.css +186 -209
- 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 +23 -23
- package/src/page-header/page-header.css +268 -281
- package/src/page-header/page-header.tokens.json +1 -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 +39 -182
- package/src/spinner/spinner.tokens.json +0 -2
- 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 +330 -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 +89 -90
- package/src/toast/toast.tokens.json +5 -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/toggle/toggle.css
CHANGED
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
* some, so the ring is held off the edge at the foundation's offset, where
|
|
25
25
|
* the joined bar draws it inward.
|
|
26
26
|
*/
|
|
27
|
-
[data-ui
|
|
27
|
+
[data-ui-toggle][data-part-root] {
|
|
28
28
|
--_height: var(--slotted-control-height-md, 34px);
|
|
29
29
|
--_padding-inline: var(--slotted-control-padding-inline-md, 13px);
|
|
30
30
|
--_font-size: var(--slotted-control-font-size-md, 13px);
|
|
@@ -93,7 +93,7 @@
|
|
|
93
93
|
|
|
94
94
|
/* ── Size ─────────────────────────────────────────────────────────────── */
|
|
95
95
|
|
|
96
|
-
[data-ui
|
|
96
|
+
[data-ui-toggle][data-part-root][data-size='sm'] {
|
|
97
97
|
--_height: var(--slotted-control-height-sm, 30px);
|
|
98
98
|
--_padding-inline: var(--slotted-control-padding-inline-sm, 10px);
|
|
99
99
|
--_font-size: var(--slotted-control-font-size-sm, 12px);
|
|
@@ -101,7 +101,7 @@
|
|
|
101
101
|
--_gap: var(--slotted-control-gap-sm, 6px);
|
|
102
102
|
}
|
|
103
103
|
|
|
104
|
-
[data-ui
|
|
104
|
+
[data-ui-toggle][data-part-root][data-size='lg'] {
|
|
105
105
|
--_height: var(--slotted-control-height-lg, 38px);
|
|
106
106
|
--_padding-inline: var(--slotted-control-padding-inline-lg, 16px);
|
|
107
107
|
--_font-size: var(--slotted-control-font-size-lg, 14px);
|
|
@@ -118,12 +118,12 @@
|
|
|
118
118
|
* words: the Angular binding projects the words into a box it always
|
|
119
119
|
* renders, and a box with nothing in it must not hold the gap open either.
|
|
120
120
|
*/
|
|
121
|
-
[data-ui
|
|
121
|
+
[data-ui-toggle][data-part-root]:not(:has([data-part-label]:not(:empty))) {
|
|
122
122
|
inline-size: var(--_height);
|
|
123
123
|
padding-inline: 0;
|
|
124
124
|
}
|
|
125
125
|
|
|
126
|
-
[data-ui
|
|
126
|
+
[data-ui-toggle] [data-part-label]:empty {
|
|
127
127
|
display: none;
|
|
128
128
|
}
|
|
129
129
|
|
|
@@ -132,7 +132,7 @@
|
|
|
132
132
|
* from its container, and a bare glyph host such as `ng-icon` reads the
|
|
133
133
|
* slot's font-size, so both are the glyph scale.
|
|
134
134
|
*/
|
|
135
|
-
[data-ui
|
|
135
|
+
[data-ui-toggle] [data-part-icon] {
|
|
136
136
|
--slotted-icon-size: var(--_icon-size);
|
|
137
137
|
|
|
138
138
|
block-size: var(--_icon-size);
|
|
@@ -142,7 +142,7 @@
|
|
|
142
142
|
inline-size: var(--_icon-size);
|
|
143
143
|
}
|
|
144
144
|
|
|
145
|
-
[data-ui
|
|
145
|
+
[data-ui-toggle] [data-part-icon] > * {
|
|
146
146
|
block-size: 100%;
|
|
147
147
|
display: block;
|
|
148
148
|
inline-size: 100%;
|
|
@@ -155,7 +155,7 @@
|
|
|
155
155
|
* whole in the DOM — the library's rule is that truncation never removes
|
|
156
156
|
* content.
|
|
157
157
|
*/
|
|
158
|
-
[data-ui
|
|
158
|
+
[data-ui-toggle] [data-part-label] {
|
|
159
159
|
overflow: hidden;
|
|
160
160
|
text-overflow: ellipsis;
|
|
161
161
|
white-space: nowrap;
|
|
@@ -163,7 +163,7 @@
|
|
|
163
163
|
|
|
164
164
|
/* ── The edge ─────────────────────────────────────────────────────────── */
|
|
165
165
|
|
|
166
|
-
[data-ui
|
|
166
|
+
[data-ui-toggle][data-part-root][data-variant='outline'] {
|
|
167
167
|
border-color: var(--_border-color);
|
|
168
168
|
/* A framed control lifts off its ground at rest, as button's outline does. */
|
|
169
169
|
box-shadow: var(--slotted-toggle-shadow, var(--slotted-control-shadow, none));
|
|
@@ -177,7 +177,7 @@
|
|
|
177
177
|
* `STATE_PRECEDENCE` sets. Both variants take the edge: a ghost toggle that
|
|
178
178
|
* is on has become a framed thing, and the edge is half of what says so.
|
|
179
179
|
*/
|
|
180
|
-
[data-ui
|
|
180
|
+
[data-ui-toggle][data-part-root][data-pressed]:not(:disabled):not([data-disabled]) {
|
|
181
181
|
background: var(
|
|
182
182
|
--slotted-toggle-pressed-background,
|
|
183
183
|
var(--slotted-tone-accent-subtle-active, Highlight)
|
|
@@ -198,18 +198,14 @@
|
|
|
198
198
|
* is on answers the pointer on the accent ground's own steps, so the two
|
|
199
199
|
* states share no surface in any of theirs.
|
|
200
200
|
*/
|
|
201
|
-
[data-ui
|
|
202
|
-
[data-pressed]
|
|
203
|
-
) {
|
|
201
|
+
[data-ui-toggle][data-part-root]:hover:not(:disabled):not([data-disabled]):not([data-pressed]) {
|
|
204
202
|
background: var(
|
|
205
203
|
--slotted-toggle-hover-background,
|
|
206
204
|
var(--slotted-tone-secondary-subtle-hover, ButtonFace)
|
|
207
205
|
);
|
|
208
206
|
}
|
|
209
207
|
|
|
210
|
-
[data-ui
|
|
211
|
-
[data-pressed]
|
|
212
|
-
) {
|
|
208
|
+
[data-ui-toggle][data-part-root]:active:not(:disabled):not([data-disabled]):not([data-pressed]) {
|
|
213
209
|
background: var(
|
|
214
210
|
--slotted-toggle-active-background,
|
|
215
211
|
var(--slotted-tone-secondary-subtle-active, ButtonFace)
|
|
@@ -220,14 +216,14 @@
|
|
|
220
216
|
transition-duration: var(--slotted-duration-instant);
|
|
221
217
|
}
|
|
222
218
|
|
|
223
|
-
[data-ui
|
|
219
|
+
[data-ui-toggle][data-part-root][data-pressed]:hover:not(:disabled):not([data-disabled]) {
|
|
224
220
|
background: var(
|
|
225
221
|
--slotted-toggle-pressed-hover-background,
|
|
226
222
|
var(--slotted-tone-accent-subtle-hover, Highlight)
|
|
227
223
|
);
|
|
228
224
|
}
|
|
229
225
|
|
|
230
|
-
[data-ui
|
|
226
|
+
[data-ui-toggle][data-part-root][data-pressed]:active:not(:disabled):not([data-disabled]) {
|
|
231
227
|
background: var(
|
|
232
228
|
--slotted-toggle-pressed-background,
|
|
233
229
|
var(--slotted-tone-accent-subtle-active, Highlight)
|
|
@@ -235,13 +231,54 @@
|
|
|
235
231
|
transition-duration: var(--slotted-duration-instant);
|
|
236
232
|
}
|
|
237
233
|
|
|
234
|
+
/**
|
|
235
|
+
* ── Chips ──────────────────────────────────────────────────────────────
|
|
236
|
+
*
|
|
237
|
+
* The same chip `toggle-group` draws: a rounded item with the control edge,
|
|
238
|
+
* pressed in the neutral tone's ink.
|
|
239
|
+
*/
|
|
240
|
+
[data-ui-toggle][data-part-root][data-variant='chips'] {
|
|
241
|
+
border-color: var(--_border-color);
|
|
242
|
+
border-radius: var(--slotted-toggle-chips-radius, var(--slotted-radius-full, 9999px));
|
|
243
|
+
font-weight: var(--slotted-font-weight-medium, 500);
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
[data-ui-toggle][data-part-root][data-variant='chips'][data-pressed]:not(:disabled):not(
|
|
247
|
+
[data-disabled]
|
|
248
|
+
),
|
|
249
|
+
[data-ui-toggle][data-part-root][data-variant='chips'][data-pressed]:active:not(:disabled):not(
|
|
250
|
+
[data-disabled]
|
|
251
|
+
) {
|
|
252
|
+
background: var(
|
|
253
|
+
--slotted-toggle-chips-pressed-background,
|
|
254
|
+
var(--slotted-tone-neutral-solid, CanvasText)
|
|
255
|
+
);
|
|
256
|
+
border-color: var(
|
|
257
|
+
--slotted-toggle-chips-pressed-background,
|
|
258
|
+
var(--slotted-tone-neutral-solid, CanvasText)
|
|
259
|
+
);
|
|
260
|
+
color: var(--slotted-toggle-chips-pressed-color, var(--slotted-tone-neutral-on-solid, Canvas));
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
[data-ui-toggle][data-part-root][data-variant='chips'][data-pressed]:hover:not(:disabled):not(
|
|
264
|
+
[data-disabled]
|
|
265
|
+
) {
|
|
266
|
+
background: var(--slotted-tone-neutral-solid-hover, CanvasText);
|
|
267
|
+
border-color: var(--slotted-tone-neutral-solid-hover, CanvasText);
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
[data-ui-toggle][data-part-root][data-variant='chips']:disabled,
|
|
271
|
+
[data-ui-toggle][data-part-root][data-variant='chips'][data-disabled] {
|
|
272
|
+
border-color: var(--slotted-disabled-border, GrayText);
|
|
273
|
+
}
|
|
274
|
+
|
|
238
275
|
/* ── Focus ────────────────────────────────────────────────────────────── */
|
|
239
276
|
|
|
240
277
|
/**
|
|
241
278
|
* A standalone control has room around it, so the ring is held off the
|
|
242
279
|
* edge the way every other control in the library holds it.
|
|
243
280
|
*/
|
|
244
|
-
[data-ui
|
|
281
|
+
[data-ui-toggle][data-part-root]:focus-visible {
|
|
245
282
|
outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);
|
|
246
283
|
outline-offset: var(--slotted-focus-ring-offset, 2px);
|
|
247
284
|
}
|
|
@@ -252,15 +289,15 @@
|
|
|
252
289
|
* `[data-disabled]` as well as `:disabled`, because a control taken out of
|
|
253
290
|
* action with a `fieldset` carries no attribute of its own.
|
|
254
291
|
*/
|
|
255
|
-
[data-ui
|
|
256
|
-
[data-ui
|
|
292
|
+
[data-ui-toggle][data-part-root]:disabled,
|
|
293
|
+
[data-ui-toggle][data-part-root][data-disabled] {
|
|
257
294
|
background: transparent;
|
|
258
295
|
color: var(--slotted-toggle-disabled-color, var(--slotted-disabled-foreground, GrayText));
|
|
259
296
|
cursor: not-allowed;
|
|
260
297
|
}
|
|
261
298
|
|
|
262
|
-
[data-ui
|
|
263
|
-
[data-ui
|
|
299
|
+
[data-ui-toggle][data-part-root][data-variant='outline']:disabled,
|
|
300
|
+
[data-ui-toggle][data-part-root][data-variant='outline'][data-disabled] {
|
|
264
301
|
border-color: var(
|
|
265
302
|
--slotted-toggle-disabled-border-color,
|
|
266
303
|
var(--slotted-disabled-border, GrayText)
|
|
@@ -276,8 +313,8 @@
|
|
|
276
313
|
* cannot change. In `high-contrast` the ground is the page's own white, and
|
|
277
314
|
* the edge is then the only thing carrying it.
|
|
278
315
|
*/
|
|
279
|
-
[data-ui
|
|
280
|
-
[data-ui
|
|
316
|
+
[data-ui-toggle][data-part-root][data-pressed]:disabled,
|
|
317
|
+
[data-ui-toggle][data-part-root][data-pressed][data-disabled] {
|
|
281
318
|
background: var(
|
|
282
319
|
--slotted-toggle-disabled-pressed-background,
|
|
283
320
|
var(--slotted-disabled-background, ButtonFace)
|
|
@@ -31,9 +31,14 @@
|
|
|
31
31
|
"--slotted-focus-ring-color",
|
|
32
32
|
"--slotted-focus-ring-offset",
|
|
33
33
|
"--slotted-focus-ring-width",
|
|
34
|
+
"--slotted-font-weight-medium",
|
|
35
|
+
"--slotted-radius-full",
|
|
34
36
|
"--slotted-text",
|
|
35
37
|
"--slotted-toggle-active-background",
|
|
36
38
|
"--slotted-toggle-border-color",
|
|
39
|
+
"--slotted-toggle-chips-pressed-background",
|
|
40
|
+
"--slotted-toggle-chips-pressed-color",
|
|
41
|
+
"--slotted-toggle-chips-radius",
|
|
37
42
|
"--slotted-toggle-color",
|
|
38
43
|
"--slotted-toggle-disabled-border-color",
|
|
39
44
|
"--slotted-toggle-disabled-color",
|
|
@@ -49,6 +54,9 @@
|
|
|
49
54
|
"--slotted-tone-accent-subtle-active",
|
|
50
55
|
"--slotted-tone-accent-subtle-hover",
|
|
51
56
|
"--slotted-tone-accent-text",
|
|
57
|
+
"--slotted-tone-neutral-on-solid",
|
|
58
|
+
"--slotted-tone-neutral-solid",
|
|
59
|
+
"--slotted-tone-neutral-solid-hover",
|
|
52
60
|
"--slotted-tone-secondary-subtle-active",
|
|
53
61
|
"--slotted-tone-secondary-subtle-hover"
|
|
54
62
|
]
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
* correctly: a coloured border inside a grey one, and an edge that was one
|
|
33
33
|
* pixel in places and two in others.
|
|
34
34
|
*/
|
|
35
|
-
[data-ui
|
|
35
|
+
[data-ui-toggle-group][data-part-root] {
|
|
36
36
|
--_height: var(--slotted-control-height-md, 34px);
|
|
37
37
|
--_padding-inline: var(--slotted-control-padding-inline-md, 13px);
|
|
38
38
|
--_font-size: var(--slotted-control-font-size-md, 13px);
|
|
@@ -76,13 +76,13 @@
|
|
|
76
76
|
* from a permission filter renders one often, and an empty box still eats a
|
|
77
77
|
* gap in the row that holds it — `button-group` records the same defect.
|
|
78
78
|
*/
|
|
79
|
-
[data-ui
|
|
79
|
+
[data-ui-toggle-group][data-part-root]:empty {
|
|
80
80
|
display: none;
|
|
81
81
|
}
|
|
82
82
|
|
|
83
83
|
/* ── Size ─────────────────────────────────────────────────────────────── */
|
|
84
84
|
|
|
85
|
-
[data-ui
|
|
85
|
+
[data-ui-toggle-group][data-part-root][data-size='sm'] {
|
|
86
86
|
--_height: var(--slotted-control-height-sm, 30px);
|
|
87
87
|
--_padding-inline: var(--slotted-control-padding-inline-sm, 10px);
|
|
88
88
|
--_font-size: var(--slotted-control-font-size-sm, 12px);
|
|
@@ -90,7 +90,7 @@
|
|
|
90
90
|
--_gap: var(--slotted-control-gap-sm, 6px);
|
|
91
91
|
}
|
|
92
92
|
|
|
93
|
-
[data-ui
|
|
93
|
+
[data-ui-toggle-group][data-part-root][data-size='lg'] {
|
|
94
94
|
--_height: var(--slotted-control-height-lg, 38px);
|
|
95
95
|
--_padding-inline: var(--slotted-control-padding-inline-lg, 16px);
|
|
96
96
|
--_font-size: var(--slotted-control-font-size-lg, 14px);
|
|
@@ -100,7 +100,7 @@
|
|
|
100
100
|
|
|
101
101
|
/* ── Orientation ──────────────────────────────────────────────────────── */
|
|
102
102
|
|
|
103
|
-
[data-ui
|
|
103
|
+
[data-ui-toggle-group][data-part-root][data-orientation='vertical'] {
|
|
104
104
|
flex-direction: column;
|
|
105
105
|
}
|
|
106
106
|
|
|
@@ -111,18 +111,18 @@
|
|
|
111
111
|
* shrinks to its content, which is what a set of formatting toggles beside a
|
|
112
112
|
* paragraph needs and what every surveyed implementation defaults to.
|
|
113
113
|
*/
|
|
114
|
-
[data-ui
|
|
114
|
+
[data-ui-toggle-group][data-part-root][data-full-width] {
|
|
115
115
|
display: flex;
|
|
116
116
|
inline-size: 100%;
|
|
117
117
|
}
|
|
118
118
|
|
|
119
|
-
[data-ui
|
|
119
|
+
[data-ui-toggle-group][data-part-root][data-full-width] [data-part-item] {
|
|
120
120
|
flex: 1 1 0;
|
|
121
121
|
}
|
|
122
122
|
|
|
123
123
|
/* ── The item ─────────────────────────────────────────────────────────── */
|
|
124
124
|
|
|
125
|
-
[data-ui
|
|
125
|
+
[data-ui-toggle-group] [data-part-item] {
|
|
126
126
|
align-items: center;
|
|
127
127
|
appearance: none;
|
|
128
128
|
background: transparent;
|
|
@@ -176,11 +176,11 @@
|
|
|
176
176
|
* An item with no words is a square holding one mark, so its inline padding
|
|
177
177
|
* is whatever centres that mark rather than the padding a label needs.
|
|
178
178
|
*/
|
|
179
|
-
[data-ui
|
|
179
|
+
[data-ui-toggle-group] [data-part-item]:not(:has([data-part-label])) {
|
|
180
180
|
padding-inline: 0;
|
|
181
181
|
}
|
|
182
182
|
|
|
183
|
-
[data-ui
|
|
183
|
+
[data-ui-toggle-group] [data-part-icon] {
|
|
184
184
|
block-size: var(--_icon-size);
|
|
185
185
|
display: inline-flex;
|
|
186
186
|
flex: none;
|
|
@@ -193,7 +193,7 @@
|
|
|
193
193
|
* and what an icon beside it is aligned against. The string stays whole in
|
|
194
194
|
* the DOM — the library's rule is that truncation never removes content.
|
|
195
195
|
*/
|
|
196
|
-
[data-ui
|
|
196
|
+
[data-ui-toggle-group] [data-part-label] {
|
|
197
197
|
overflow: hidden;
|
|
198
198
|
text-overflow: ellipsis;
|
|
199
199
|
white-space: nowrap;
|
|
@@ -201,12 +201,12 @@
|
|
|
201
201
|
|
|
202
202
|
/* ── The edge ─────────────────────────────────────────────────────────── */
|
|
203
203
|
|
|
204
|
-
[data-ui
|
|
204
|
+
[data-ui-toggle-group][data-part-root][data-variant='outline'] [data-part-item] {
|
|
205
205
|
border-color: var(--_border-color);
|
|
206
206
|
/* A framed item lifts off its ground at rest, as button's outline does. */
|
|
207
207
|
box-shadow: var(--slotted-toggle-group-shadow, var(--slotted-control-shadow, none));
|
|
208
208
|
}
|
|
209
|
-
[data-ui
|
|
209
|
+
[data-ui-toggle-group][data-part-root]:not([data-attached]) {
|
|
210
210
|
gap: var(--_separation);
|
|
211
211
|
}
|
|
212
212
|
|
|
@@ -231,54 +231,54 @@
|
|
|
231
231
|
* anything: an item that is on replaces the grey line in its column with its
|
|
232
232
|
* own, and the bar's outline stays one pixel everywhere.
|
|
233
233
|
*/
|
|
234
|
-
[data-ui
|
|
235
|
-
[data-part
|
|
236
|
-
+ [data-part
|
|
234
|
+
[data-ui-toggle-group][data-part-root][data-attached]:not([data-orientation='vertical'])
|
|
235
|
+
[data-part-item]
|
|
236
|
+
+ [data-part-item] {
|
|
237
237
|
margin-inline-start: var(--_overlap);
|
|
238
238
|
}
|
|
239
239
|
|
|
240
|
-
[data-ui
|
|
241
|
-
[data-part
|
|
242
|
-
+ [data-part
|
|
240
|
+
[data-ui-toggle-group][data-part-root][data-attached][data-orientation='vertical']
|
|
241
|
+
[data-part-item]
|
|
242
|
+
+ [data-part-item] {
|
|
243
243
|
margin-block-start: var(--_overlap);
|
|
244
244
|
}
|
|
245
245
|
|
|
246
|
-
[data-ui
|
|
247
|
-
[data-part
|
|
246
|
+
[data-ui-toggle-group][data-part-root][data-attached]:not([data-orientation='vertical'])
|
|
247
|
+
[data-part-item] {
|
|
248
248
|
border-end-start-radius: 0;
|
|
249
249
|
border-end-end-radius: 0;
|
|
250
250
|
border-start-start-radius: 0;
|
|
251
251
|
border-start-end-radius: 0;
|
|
252
252
|
}
|
|
253
253
|
|
|
254
|
-
[data-ui
|
|
255
|
-
[data-part
|
|
254
|
+
[data-ui-toggle-group][data-part-root][data-attached]:not([data-orientation='vertical'])
|
|
255
|
+
[data-part-item]:first-child {
|
|
256
256
|
border-end-start-radius: var(--_radius);
|
|
257
257
|
border-start-start-radius: var(--_radius);
|
|
258
258
|
}
|
|
259
259
|
|
|
260
|
-
[data-ui
|
|
261
|
-
[data-part
|
|
260
|
+
[data-ui-toggle-group][data-part-root][data-attached]:not([data-orientation='vertical'])
|
|
261
|
+
[data-part-item]:last-child {
|
|
262
262
|
border-end-end-radius: var(--_radius);
|
|
263
263
|
border-start-end-radius: var(--_radius);
|
|
264
264
|
}
|
|
265
265
|
|
|
266
|
-
[data-ui
|
|
267
|
-
[data-part
|
|
266
|
+
[data-ui-toggle-group][data-part-root][data-attached][data-orientation='vertical']
|
|
267
|
+
[data-part-item] {
|
|
268
268
|
border-end-start-radius: 0;
|
|
269
269
|
border-end-end-radius: 0;
|
|
270
270
|
border-start-start-radius: 0;
|
|
271
271
|
border-start-end-radius: 0;
|
|
272
272
|
}
|
|
273
273
|
|
|
274
|
-
[data-ui
|
|
275
|
-
[data-part
|
|
274
|
+
[data-ui-toggle-group][data-part-root][data-attached][data-orientation='vertical']
|
|
275
|
+
[data-part-item]:first-child {
|
|
276
276
|
border-start-end-radius: var(--_radius);
|
|
277
277
|
border-start-start-radius: var(--_radius);
|
|
278
278
|
}
|
|
279
279
|
|
|
280
|
-
[data-ui
|
|
281
|
-
[data-part
|
|
280
|
+
[data-ui-toggle-group][data-part-root][data-attached][data-orientation='vertical']
|
|
281
|
+
[data-part-item]:last-child {
|
|
282
282
|
border-end-end-radius: var(--_radius);
|
|
283
283
|
border-end-start-radius: var(--_radius);
|
|
284
284
|
}
|
|
@@ -290,29 +290,29 @@
|
|
|
290
290
|
* four edges, and the neighbour after it gives up the leading edge that would
|
|
291
291
|
* otherwise be painted over the accent one.
|
|
292
292
|
*/
|
|
293
|
-
[data-ui
|
|
293
|
+
[data-ui-toggle-group][data-part-root][data-variant='outline'][data-attached]:not(
|
|
294
294
|
[data-orientation='vertical']
|
|
295
295
|
)
|
|
296
|
-
[data-part
|
|
296
|
+
[data-part-item]:not(:last-child):not([data-pressed]) {
|
|
297
297
|
border-inline-end-color: transparent;
|
|
298
298
|
}
|
|
299
299
|
|
|
300
|
-
[data-ui
|
|
301
|
-
[data-part
|
|
300
|
+
[data-ui-toggle-group][data-part-root][data-variant='outline'][data-attached][data-orientation='vertical']
|
|
301
|
+
[data-part-item]:not(:last-child):not([data-pressed]) {
|
|
302
302
|
border-block-end-color: transparent;
|
|
303
303
|
}
|
|
304
304
|
|
|
305
|
-
[data-ui
|
|
305
|
+
[data-ui-toggle-group][data-part-root][data-variant='outline'][data-attached]:not(
|
|
306
306
|
[data-orientation='vertical']
|
|
307
307
|
)
|
|
308
|
-
[data-part
|
|
309
|
-
+ [data-part
|
|
308
|
+
[data-part-item][data-pressed]
|
|
309
|
+
+ [data-part-item] {
|
|
310
310
|
border-inline-start-color: transparent;
|
|
311
311
|
}
|
|
312
312
|
|
|
313
|
-
[data-ui
|
|
314
|
-
[data-part
|
|
315
|
-
+ [data-part
|
|
313
|
+
[data-ui-toggle-group][data-part-root][data-variant='outline'][data-attached][data-orientation='vertical']
|
|
314
|
+
[data-part-item][data-pressed]
|
|
315
|
+
+ [data-part-item] {
|
|
316
316
|
border-block-start-color: transparent;
|
|
317
317
|
}
|
|
318
318
|
|
|
@@ -327,7 +327,7 @@
|
|
|
327
327
|
* It sits above hover and below disabled, which is the order
|
|
328
328
|
* `STATE_PRECEDENCE` sets.
|
|
329
329
|
*/
|
|
330
|
-
[data-ui
|
|
330
|
+
[data-ui-toggle-group] [data-part-item][data-pressed]:not(:disabled):not([data-disabled]) {
|
|
331
331
|
background: var(
|
|
332
332
|
--slotted-toggle-group-pressed-background,
|
|
333
333
|
var(--slotted-tone-accent-subtle-active, Highlight)
|
|
@@ -342,7 +342,7 @@
|
|
|
342
342
|
);
|
|
343
343
|
}
|
|
344
344
|
|
|
345
|
-
[data-ui
|
|
345
|
+
[data-ui-toggle-group] [data-part-item][data-pressed] {
|
|
346
346
|
z-index: 1;
|
|
347
347
|
}
|
|
348
348
|
|
|
@@ -355,16 +355,16 @@
|
|
|
355
355
|
* that is on answers the pointer on the accent ground's own steps, so the
|
|
356
356
|
* two states share no surface in any of theirs.
|
|
357
357
|
*/
|
|
358
|
-
[data-ui
|
|
359
|
-
[data-part
|
|
358
|
+
[data-ui-toggle-group]
|
|
359
|
+
[data-part-item]:hover:not(:disabled):not([data-disabled]):not([data-pressed]) {
|
|
360
360
|
background: var(
|
|
361
361
|
--slotted-toggle-group-hover-background,
|
|
362
362
|
var(--slotted-tone-secondary-subtle-hover, ButtonFace)
|
|
363
363
|
);
|
|
364
364
|
}
|
|
365
365
|
|
|
366
|
-
[data-ui
|
|
367
|
-
[data-part
|
|
366
|
+
[data-ui-toggle-group]
|
|
367
|
+
[data-part-item]:active:not(:disabled):not([data-disabled]):not([data-pressed]) {
|
|
368
368
|
background: var(
|
|
369
369
|
--slotted-toggle-group-active-background,
|
|
370
370
|
var(--slotted-tone-secondary-subtle-active, ButtonFace)
|
|
@@ -375,16 +375,14 @@
|
|
|
375
375
|
transition-duration: var(--slotted-duration-instant);
|
|
376
376
|
}
|
|
377
377
|
|
|
378
|
-
[data-ui
|
|
379
|
-
[data-part='item'][data-pressed]:hover:not(:disabled):not([data-disabled]) {
|
|
378
|
+
[data-ui-toggle-group] [data-part-item][data-pressed]:hover:not(:disabled):not([data-disabled]) {
|
|
380
379
|
background: var(
|
|
381
380
|
--slotted-toggle-group-pressed-hover-background,
|
|
382
381
|
var(--slotted-tone-accent-subtle-hover, Highlight)
|
|
383
382
|
);
|
|
384
383
|
}
|
|
385
384
|
|
|
386
|
-
[data-ui
|
|
387
|
-
[data-part='item'][data-pressed]:active:not(:disabled):not([data-disabled]) {
|
|
385
|
+
[data-ui-toggle-group] [data-part-item][data-pressed]:active:not(:disabled):not([data-disabled]) {
|
|
388
386
|
background: var(
|
|
389
387
|
--slotted-toggle-group-pressed-background,
|
|
390
388
|
var(--slotted-tone-accent-subtle-active, Highlight)
|
|
@@ -392,6 +390,55 @@
|
|
|
392
390
|
transition-duration: var(--slotted-duration-instant);
|
|
393
391
|
}
|
|
394
392
|
|
|
393
|
+
/**
|
|
394
|
+
* ── Chips ──────────────────────────────────────────────────────────────
|
|
395
|
+
*
|
|
396
|
+
* A short list of choices as separate rounded items that wrap onto a second
|
|
397
|
+
* line rather than overflow, never joined into a bar. A chip at rest has the
|
|
398
|
+
* control edge; the pressed one is the neutral tone's ink — its solid ground
|
|
399
|
+
* under its own label — which is the one state a chip has to say at a
|
|
400
|
+
* glance. Hover and press move the ground of a chip at rest only.
|
|
401
|
+
*/
|
|
402
|
+
[data-ui-toggle-group][data-part-root][data-variant='chips'] {
|
|
403
|
+
flex-wrap: wrap;
|
|
404
|
+
gap: var(--slotted-toggle-group-chips-gap, var(--slotted-space-3, 0.375rem));
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
[data-ui-toggle-group][data-part-root][data-variant='chips'] [data-part-item] {
|
|
408
|
+
border-color: var(--_border-color);
|
|
409
|
+
border-radius: var(--slotted-toggle-group-chips-radius, var(--slotted-radius-full, 9999px));
|
|
410
|
+
font-weight: var(--slotted-font-weight-medium, 500);
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
[data-ui-toggle-group][data-part-root][data-variant='chips']
|
|
414
|
+
[data-part-item][data-pressed]:not(:disabled):not([data-disabled]),
|
|
415
|
+
[data-ui-toggle-group][data-part-root][data-variant='chips']
|
|
416
|
+
[data-part-item][data-pressed]:active:not(:disabled):not([data-disabled]) {
|
|
417
|
+
background: var(
|
|
418
|
+
--slotted-toggle-group-chips-pressed-background,
|
|
419
|
+
var(--slotted-tone-neutral-solid, CanvasText)
|
|
420
|
+
);
|
|
421
|
+
border-color: var(
|
|
422
|
+
--slotted-toggle-group-chips-pressed-background,
|
|
423
|
+
var(--slotted-tone-neutral-solid, CanvasText)
|
|
424
|
+
);
|
|
425
|
+
color: var(
|
|
426
|
+
--slotted-toggle-group-chips-pressed-color,
|
|
427
|
+
var(--slotted-tone-neutral-on-solid, Canvas)
|
|
428
|
+
);
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
[data-ui-toggle-group][data-part-root][data-variant='chips']
|
|
432
|
+
[data-part-item][data-pressed]:hover:not(:disabled):not([data-disabled]) {
|
|
433
|
+
background: var(--slotted-tone-neutral-solid-hover, CanvasText);
|
|
434
|
+
border-color: var(--slotted-tone-neutral-solid-hover, CanvasText);
|
|
435
|
+
}
|
|
436
|
+
|
|
437
|
+
[data-ui-toggle-group][data-part-root][data-variant='chips'] [data-part-item]:disabled,
|
|
438
|
+
[data-ui-toggle-group][data-part-root][data-variant='chips'] [data-part-item][data-disabled] {
|
|
439
|
+
border-color: var(--slotted-disabled-border, GrayText);
|
|
440
|
+
}
|
|
441
|
+
|
|
395
442
|
/* ── Focus ────────────────────────────────────────────────────────────── */
|
|
396
443
|
|
|
397
444
|
/**
|
|
@@ -399,7 +446,7 @@
|
|
|
399
446
|
* edge the way every other control in the library holds it. The focused item
|
|
400
447
|
* is raised above every other, including one that is on.
|
|
401
448
|
*/
|
|
402
|
-
[data-ui
|
|
449
|
+
[data-ui-toggle-group] [data-part-item]:focus-visible {
|
|
403
450
|
outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);
|
|
404
451
|
outline-offset: var(--slotted-focus-ring-offset, 2px);
|
|
405
452
|
z-index: 2;
|
|
@@ -417,7 +464,7 @@
|
|
|
417
464
|
* gives. It then replaces that item's own border rather than standing beside
|
|
418
465
|
* it, and every seam in the bar stays one line wide.
|
|
419
466
|
*/
|
|
420
|
-
[data-ui
|
|
467
|
+
[data-ui-toggle-group][data-part-root][data-attached] [data-part-item]:focus-visible {
|
|
421
468
|
outline-offset: calc(-1 * var(--slotted-focus-ring-width, 2px));
|
|
422
469
|
}
|
|
423
470
|
|
|
@@ -428,16 +475,15 @@
|
|
|
428
475
|
* out of action with a `fieldset` and its items then carry no attribute of
|
|
429
476
|
* their own.
|
|
430
477
|
*/
|
|
431
|
-
[data-ui
|
|
432
|
-
[data-ui
|
|
478
|
+
[data-ui-toggle-group] [data-part-item]:disabled,
|
|
479
|
+
[data-ui-toggle-group] [data-part-item][data-disabled] {
|
|
433
480
|
background: transparent;
|
|
434
481
|
color: var(--slotted-toggle-group-disabled-color, var(--slotted-disabled-foreground, GrayText));
|
|
435
482
|
cursor: default;
|
|
436
483
|
}
|
|
437
484
|
|
|
438
|
-
[data-ui
|
|
439
|
-
[data-ui
|
|
440
|
-
[data-part='item'][data-disabled] {
|
|
485
|
+
[data-ui-toggle-group][data-part-root][data-variant='outline'] [data-part-item]:disabled,
|
|
486
|
+
[data-ui-toggle-group][data-part-root][data-variant='outline'] [data-part-item][data-disabled] {
|
|
441
487
|
border-color: var(
|
|
442
488
|
--slotted-toggle-group-disabled-border-color,
|
|
443
489
|
var(--slotted-disabled-border, GrayText)
|
|
@@ -453,8 +499,8 @@
|
|
|
453
499
|
* a control they cannot change. In `high-contrast` the ground is the page's
|
|
454
500
|
* own white, and the edge is then the only thing carrying it.
|
|
455
501
|
*/
|
|
456
|
-
[data-ui
|
|
457
|
-
[data-ui
|
|
502
|
+
[data-ui-toggle-group] [data-part-item][data-pressed]:disabled,
|
|
503
|
+
[data-ui-toggle-group] [data-part-item][data-pressed][data-disabled] {
|
|
458
504
|
background: var(
|
|
459
505
|
--slotted-toggle-group-disabled-pressed-background,
|
|
460
506
|
var(--slotted-disabled-background, ButtonFace)
|
|
@@ -31,9 +31,16 @@
|
|
|
31
31
|
"--slotted-focus-ring-color",
|
|
32
32
|
"--slotted-focus-ring-offset",
|
|
33
33
|
"--slotted-focus-ring-width",
|
|
34
|
+
"--slotted-font-weight-medium",
|
|
35
|
+
"--slotted-radius-full",
|
|
36
|
+
"--slotted-space-3",
|
|
34
37
|
"--slotted-text",
|
|
35
38
|
"--slotted-toggle-group-active-background",
|
|
36
39
|
"--slotted-toggle-group-border-color",
|
|
40
|
+
"--slotted-toggle-group-chips-gap",
|
|
41
|
+
"--slotted-toggle-group-chips-pressed-background",
|
|
42
|
+
"--slotted-toggle-group-chips-pressed-color",
|
|
43
|
+
"--slotted-toggle-group-chips-radius",
|
|
37
44
|
"--slotted-toggle-group-color",
|
|
38
45
|
"--slotted-toggle-group-disabled-border-color",
|
|
39
46
|
"--slotted-toggle-group-disabled-color",
|
|
@@ -49,6 +56,9 @@
|
|
|
49
56
|
"--slotted-tone-accent-subtle-active",
|
|
50
57
|
"--slotted-tone-accent-subtle-hover",
|
|
51
58
|
"--slotted-tone-accent-text",
|
|
59
|
+
"--slotted-tone-neutral-on-solid",
|
|
60
|
+
"--slotted-tone-neutral-solid",
|
|
61
|
+
"--slotted-tone-neutral-solid-hover",
|
|
52
62
|
"--slotted-tone-secondary-subtle-active",
|
|
53
63
|
"--slotted-tone-secondary-subtle-hover"
|
|
54
64
|
]
|