@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
|
@@ -35,7 +35,6 @@
|
|
|
35
35
|
"--slotted-progress-indicator-wave-phase",
|
|
36
36
|
"--slotted-radius-full",
|
|
37
37
|
"--slotted-radius-none",
|
|
38
|
-
"--slotted-space-1",
|
|
39
38
|
"--slotted-space-2",
|
|
40
39
|
"--slotted-space-3",
|
|
41
40
|
"--slotted-space-4",
|
|
@@ -44,6 +43,7 @@
|
|
|
44
43
|
"--slotted-text-muted",
|
|
45
44
|
"--slotted-tone-accent-text",
|
|
46
45
|
"--slotted-tone-danger-text",
|
|
46
|
+
"--slotted-tone-info-text",
|
|
47
47
|
"--slotted-tone-success-text",
|
|
48
48
|
"--slotted-tone-warning-text",
|
|
49
49
|
"--slotted-z-index-sticky"
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* are the composer inside a form — a comment, a reply — and keep the
|
|
15
15
|
* geometry of a one-line control.
|
|
16
16
|
*/
|
|
17
|
-
[data-ui
|
|
17
|
+
[data-ui-prompt-composer][data-part-root] {
|
|
18
18
|
--_font-size: var(--slotted-control-font-size-md, 13px);
|
|
19
19
|
--_height: var(--slotted-control-height-md, 34px);
|
|
20
20
|
--_icon-size: var(--slotted-control-icon-size-md, 16px);
|
|
@@ -78,18 +78,17 @@
|
|
|
78
78
|
transition:
|
|
79
79
|
background-color var(--slotted-duration-medium) var(--slotted-easing-standard),
|
|
80
80
|
border-color var(--slotted-duration-medium) var(--slotted-easing-standard),
|
|
81
|
-
box-shadow var(--slotted-duration-medium) var(--slotted-easing-standard)
|
|
82
|
-
outline-color var(--slotted-duration-medium) var(--slotted-easing-standard);
|
|
81
|
+
box-shadow var(--slotted-duration-medium) var(--slotted-easing-standard);
|
|
83
82
|
}
|
|
84
83
|
|
|
85
|
-
[data-ui
|
|
84
|
+
[data-ui-prompt-composer][data-part-root][data-size='sm'] {
|
|
86
85
|
--_font-size: var(--slotted-control-font-size-sm, 12px);
|
|
87
86
|
--_height: var(--slotted-control-height-sm, 30px);
|
|
88
87
|
--_icon-size: var(--slotted-control-icon-size-sm, 14px);
|
|
89
88
|
--_inner-size: var(--slotted-control-inner-size-sm, 22px);
|
|
90
89
|
}
|
|
91
90
|
|
|
92
|
-
[data-ui
|
|
91
|
+
[data-ui-prompt-composer][data-part-root][data-size='lg'] {
|
|
93
92
|
--_font-size: var(--slotted-control-font-size-lg, 14px);
|
|
94
93
|
--_height: var(--slotted-control-height-lg, 38px);
|
|
95
94
|
--_icon-size: var(--slotted-control-icon-size-lg, 18px);
|
|
@@ -110,7 +109,7 @@
|
|
|
110
109
|
* card's corner, and a card's corner around a round send draws two curves
|
|
111
110
|
* that do not agree.
|
|
112
111
|
*/
|
|
113
|
-
[data-ui
|
|
112
|
+
[data-ui-prompt-composer][data-part-root][data-variant='raised'] {
|
|
114
113
|
--_button: calc(var(--_inner-size) + var(--slotted-space-2, 0.25rem));
|
|
115
114
|
--_inset: var(--slotted-space-4, 0.5rem);
|
|
116
115
|
--_padding-block: calc(var(--_inset) + var(--slotted-space-2, 0.25rem));
|
|
@@ -123,7 +122,7 @@
|
|
|
123
122
|
);
|
|
124
123
|
}
|
|
125
124
|
|
|
126
|
-
[data-ui
|
|
125
|
+
[data-ui-prompt-composer][data-part-root][data-variant='subtle'] {
|
|
127
126
|
background-color: var(
|
|
128
127
|
--slotted-prompt-composer-subtle-background,
|
|
129
128
|
var(--slotted-surface-sunken, Canvas)
|
|
@@ -141,7 +140,7 @@
|
|
|
141
140
|
* script measures a line. The band below stays where the reader's thumb
|
|
142
141
|
* expects it.
|
|
143
142
|
*/
|
|
144
|
-
[data-ui
|
|
143
|
+
[data-ui-prompt-composer] > [data-part-input] {
|
|
145
144
|
appearance: none;
|
|
146
145
|
background: transparent;
|
|
147
146
|
border: 0;
|
|
@@ -171,11 +170,11 @@
|
|
|
171
170
|
unicode-bidi: plaintext;
|
|
172
171
|
}
|
|
173
172
|
|
|
174
|
-
[data-ui
|
|
173
|
+
[data-ui-prompt-composer] > [data-part-input]::placeholder {
|
|
175
174
|
color: var(--slotted-prompt-composer-placeholder-color, var(--slotted-text-muted, GrayText));
|
|
176
175
|
}
|
|
177
176
|
|
|
178
|
-
[data-ui
|
|
177
|
+
[data-ui-prompt-composer] > [data-part-input]::selection {
|
|
179
178
|
background-color: var(
|
|
180
179
|
--slotted-prompt-composer-selection-background,
|
|
181
180
|
var(--slotted-tone-accent-surface, Highlight)
|
|
@@ -183,14 +182,13 @@
|
|
|
183
182
|
}
|
|
184
183
|
|
|
185
184
|
/* A band above the value gives it back the block padding it already has. */
|
|
186
|
-
[data-ui
|
|
185
|
+
[data-ui-prompt-composer] > [data-part-header] + [data-part-input] {
|
|
187
186
|
padding-block-start: var(--_inset);
|
|
188
187
|
}
|
|
189
188
|
|
|
190
189
|
/* The band below sits on the last line: the value keeps its own air above
|
|
191
190
|
the text and hands the air below it to the band's inset. */
|
|
192
|
-
[data-ui
|
|
193
|
-
> [data-part='input']:has(+ [data-part='footer']) {
|
|
191
|
+
[data-ui-prompt-composer][data-variant='raised'] > [data-part-input]:has(+ [data-part-footer]) {
|
|
194
192
|
padding-block-end: var(--slotted-space-2, 0.25rem);
|
|
195
193
|
}
|
|
196
194
|
|
|
@@ -201,7 +199,7 @@
|
|
|
201
199
|
* does not: the send stays on the line, and a narrow composer gives up the
|
|
202
200
|
* space between the tools first.
|
|
203
201
|
*/
|
|
204
|
-
[data-ui
|
|
202
|
+
[data-ui-prompt-composer] > :is([data-part-header], [data-part-footer]) {
|
|
205
203
|
--slotted-icon-size: var(--_icon-size);
|
|
206
204
|
--slotted-control-inner-size: var(--_button);
|
|
207
205
|
|
|
@@ -212,19 +210,19 @@
|
|
|
212
210
|
padding: var(--_inset);
|
|
213
211
|
}
|
|
214
212
|
|
|
215
|
-
[data-ui
|
|
213
|
+
[data-ui-prompt-composer] > [data-part-header] {
|
|
216
214
|
flex-wrap: wrap;
|
|
217
215
|
padding-block-end: 0;
|
|
218
216
|
}
|
|
219
217
|
|
|
220
218
|
/* A strip of attachments is the width the band has and scrolls inside it;
|
|
221
219
|
a flex item otherwise keeps its content's width and crosses the frame. */
|
|
222
|
-
[data-ui
|
|
220
|
+
[data-ui-prompt-composer] > [data-part-header] > * {
|
|
223
221
|
max-inline-size: 100%;
|
|
224
222
|
min-inline-size: 0;
|
|
225
223
|
}
|
|
226
224
|
|
|
227
|
-
[data-ui
|
|
225
|
+
[data-ui-prompt-composer] > [data-part-footer] {
|
|
228
226
|
flex-wrap: nowrap;
|
|
229
227
|
padding-block-start: 0;
|
|
230
228
|
}
|
|
@@ -237,9 +235,9 @@
|
|
|
237
235
|
* padded when named by their own words, the rule `text-field` set; round
|
|
238
236
|
* in the chat composer, a pill when they carry words.
|
|
239
237
|
*/
|
|
240
|
-
[data-ui
|
|
241
|
-
> :is([data-part
|
|
242
|
-
> :is([data-part
|
|
238
|
+
[data-ui-prompt-composer]
|
|
239
|
+
> :is([data-part-header], [data-part-footer])
|
|
240
|
+
> :is([data-part-action], [data-part-attach]) {
|
|
243
241
|
align-items: center;
|
|
244
242
|
appearance: none;
|
|
245
243
|
background-color: transparent;
|
|
@@ -266,9 +264,9 @@
|
|
|
266
264
|
-webkit-tap-highlight-color: transparent;
|
|
267
265
|
}
|
|
268
266
|
|
|
269
|
-
[data-ui
|
|
270
|
-
> :is([data-part
|
|
271
|
-
> [data-part
|
|
267
|
+
[data-ui-prompt-composer]
|
|
268
|
+
> :is([data-part-header], [data-part-footer])
|
|
269
|
+
> [data-part-action]:not([aria-label], [aria-labelledby]) {
|
|
272
270
|
color: var(--slotted-prompt-composer-action-label-color, var(--slotted-text, CanvasText));
|
|
273
271
|
font-weight: var(--slotted-font-weight-medium, 500);
|
|
274
272
|
padding-inline: var(--slotted-space-3, 0.375rem);
|
|
@@ -286,9 +284,9 @@
|
|
|
286
284
|
* translate puts its centre at `(1cap + 1ex) / 4` above the baseline — the
|
|
287
285
|
* midpoint of the capitals' and the lowercase letters' own centres.
|
|
288
286
|
*/
|
|
289
|
-
[data-ui
|
|
290
|
-
> :is([data-part
|
|
291
|
-
> [data-part
|
|
287
|
+
[data-ui-prompt-composer]
|
|
288
|
+
> :is([data-part-header], [data-part-footer])
|
|
289
|
+
> [data-part-action]:not([aria-label], [aria-labelledby]) {
|
|
292
290
|
align-content: center;
|
|
293
291
|
align-items: baseline;
|
|
294
292
|
display: inline-grid;
|
|
@@ -296,64 +294,64 @@
|
|
|
296
294
|
justify-content: center;
|
|
297
295
|
}
|
|
298
296
|
|
|
299
|
-
[data-ui
|
|
300
|
-
> :is([data-part
|
|
301
|
-
> [data-part
|
|
302
|
-
> [data-ui
|
|
297
|
+
[data-ui-prompt-composer]
|
|
298
|
+
> :is([data-part-header], [data-part-footer])
|
|
299
|
+
> [data-part-action]:not([aria-label], [aria-labelledby])
|
|
300
|
+
> [data-ui-icon] {
|
|
303
301
|
margin-block-start: calc((1cap + 1ex) / 4 - var(--_icon-size) / 2);
|
|
304
302
|
translate: 0 calc(var(--_icon-size) / 2 - (1cap + 1ex) / 4);
|
|
305
303
|
}
|
|
306
304
|
|
|
307
305
|
/* A pill carries its words a step further from its round ends. */
|
|
308
|
-
[data-ui
|
|
309
|
-
> :is([data-part
|
|
310
|
-
> [data-part
|
|
306
|
+
[data-ui-prompt-composer][data-variant='raised']
|
|
307
|
+
> :is([data-part-header], [data-part-footer])
|
|
308
|
+
> [data-part-action]:not([aria-label], [aria-labelledby]) {
|
|
311
309
|
padding-inline: var(--slotted-space-4, 0.5rem);
|
|
312
310
|
}
|
|
313
311
|
|
|
314
312
|
/* The target, recovered outside the paint: 24 pixels on a mouse, 44 on a
|
|
315
313
|
finger, and never across the edge two buttons share. */
|
|
316
|
-
[data-ui
|
|
317
|
-
> :is([data-part
|
|
318
|
-
> :is([data-part
|
|
314
|
+
[data-ui-prompt-composer]
|
|
315
|
+
> :is([data-part-header], [data-part-footer])
|
|
316
|
+
> :is([data-part-action], [data-part-attach], [data-part-submit])::after {
|
|
319
317
|
content: '';
|
|
320
318
|
inset: min(0px, calc((100% - var(--slotted-target-min, 24px)) / 2));
|
|
321
319
|
position: absolute;
|
|
322
320
|
}
|
|
323
321
|
|
|
324
322
|
@media (pointer: coarse) {
|
|
325
|
-
[data-ui
|
|
326
|
-
> :is([data-part
|
|
327
|
-
> :is([data-part
|
|
323
|
+
[data-ui-prompt-composer]
|
|
324
|
+
> :is([data-part-header], [data-part-footer])
|
|
325
|
+
> :is([data-part-action], [data-part-attach], [data-part-submit])::after {
|
|
328
326
|
inset: min(0px, calc((100% - var(--slotted-target-comfortable, 44px)) / 2));
|
|
329
327
|
}
|
|
330
328
|
|
|
331
|
-
[data-ui
|
|
332
|
-
> :is([data-part
|
|
333
|
-
> :is([data-part
|
|
329
|
+
[data-ui-prompt-composer]
|
|
330
|
+
> :is([data-part-header], [data-part-footer])
|
|
331
|
+
> :is([data-part-action], [data-part-attach]):has(+ *)::after {
|
|
334
332
|
inset-inline-end: 0;
|
|
335
333
|
}
|
|
336
334
|
|
|
337
|
-
[data-ui
|
|
338
|
-
> :is([data-part
|
|
335
|
+
[data-ui-prompt-composer]
|
|
336
|
+
> :is([data-part-header], [data-part-footer])
|
|
339
337
|
> *
|
|
340
|
-
+ :is([data-part
|
|
338
|
+
+ :is([data-part-action], [data-part-attach], [data-part-submit])::after {
|
|
341
339
|
inset-inline-start: 0;
|
|
342
340
|
}
|
|
343
341
|
}
|
|
344
342
|
|
|
345
|
-
[data-ui
|
|
346
|
-
> :is([data-part
|
|
347
|
-
> :is([data-part
|
|
343
|
+
[data-ui-prompt-composer]
|
|
344
|
+
> :is([data-part-header], [data-part-footer])
|
|
345
|
+
> :is([data-part-action], [data-part-attach]):hover:not(:disabled, [aria-expanded='true']) {
|
|
348
346
|
background-color: var(
|
|
349
347
|
--slotted-prompt-composer-action-hover-background,
|
|
350
348
|
var(--slotted-tone-secondary-subtle-hover)
|
|
351
349
|
);
|
|
352
350
|
}
|
|
353
351
|
|
|
354
|
-
[data-ui
|
|
355
|
-
> :is([data-part
|
|
356
|
-
> :is([data-part
|
|
352
|
+
[data-ui-prompt-composer]
|
|
353
|
+
> :is([data-part-header], [data-part-footer])
|
|
354
|
+
> :is([data-part-action], [data-part-attach]):is(:active, [aria-expanded='true']):not(
|
|
357
355
|
:disabled
|
|
358
356
|
) {
|
|
359
357
|
background-color: var(
|
|
@@ -362,9 +360,9 @@
|
|
|
362
360
|
);
|
|
363
361
|
}
|
|
364
362
|
|
|
365
|
-
[data-ui
|
|
366
|
-
> :is([data-part
|
|
367
|
-
> :is([data-part
|
|
363
|
+
[data-ui-prompt-composer]
|
|
364
|
+
> :is([data-part-header], [data-part-footer])
|
|
365
|
+
> :is([data-part-action], [data-part-attach]):disabled {
|
|
368
366
|
color: var(--slotted-disabled-foreground);
|
|
369
367
|
cursor: not-allowed;
|
|
370
368
|
}
|
|
@@ -377,7 +375,7 @@
|
|
|
377
375
|
* The mark and the ring share one grid cell, so the stop square stands in
|
|
378
376
|
* the middle of the ring that says an answer is still arriving.
|
|
379
377
|
*/
|
|
380
|
-
[data-ui
|
|
378
|
+
[data-ui-prompt-composer] > [data-part-footer] > [data-part-submit] {
|
|
381
379
|
/* Alone, the ring is the glyph's size and stands where the arrow stood;
|
|
382
380
|
around the stop square it grows to the disc (below). */
|
|
383
381
|
--slotted-spinner-size: var(--_icon-size);
|
|
@@ -412,15 +410,15 @@
|
|
|
412
410
|
-webkit-tap-highlight-color: transparent;
|
|
413
411
|
}
|
|
414
412
|
|
|
415
|
-
[data-ui
|
|
413
|
+
[data-ui-prompt-composer] > [data-part-footer] > [data-part-submit] > * {
|
|
416
414
|
grid-area: 1 / 1;
|
|
417
415
|
}
|
|
418
416
|
|
|
419
417
|
/* Named by its own word — Comentar, Publicar — the send is a padded pill at
|
|
420
418
|
the same height; named by aria-label it is the round mark. */
|
|
421
|
-
[data-ui
|
|
422
|
-
> [data-part
|
|
423
|
-
> [data-part
|
|
419
|
+
[data-ui-prompt-composer]
|
|
420
|
+
> [data-part-footer]
|
|
421
|
+
> [data-part-submit]:not([aria-label], [aria-labelledby]) {
|
|
424
422
|
border-radius: var(--_action-radius);
|
|
425
423
|
font: inherit;
|
|
426
424
|
font-weight: var(--slotted-font-weight-medium, 500);
|
|
@@ -429,7 +427,7 @@
|
|
|
429
427
|
padding-inline: var(--slotted-space-5, 0.75rem);
|
|
430
428
|
}
|
|
431
429
|
|
|
432
|
-
[data-ui
|
|
430
|
+
[data-ui-prompt-composer] > [data-part-footer] > [data-part-submit]:hover:not(:disabled) {
|
|
433
431
|
background-color: var(
|
|
434
432
|
--slotted-prompt-composer-submit-hover-background,
|
|
435
433
|
var(--slotted-tone-accent-solid-hover, Highlight)
|
|
@@ -441,16 +439,16 @@
|
|
|
441
439
|
* the button going in; the ground darkens a further step. A padded send
|
|
442
440
|
* holds its words, so it takes the ground alone (R7).
|
|
443
441
|
*/
|
|
444
|
-
[data-ui
|
|
442
|
+
[data-ui-prompt-composer] > [data-part-footer] > [data-part-submit]:active:not(:disabled) {
|
|
445
443
|
background-color: var(
|
|
446
444
|
--slotted-prompt-composer-submit-active-background,
|
|
447
445
|
var(--slotted-tone-accent-solid-active, Highlight)
|
|
448
446
|
);
|
|
449
447
|
}
|
|
450
448
|
|
|
451
|
-
[data-ui
|
|
452
|
-
> [data-part
|
|
453
|
-
> [data-part
|
|
449
|
+
[data-ui-prompt-composer]
|
|
450
|
+
> [data-part-footer]
|
|
451
|
+
> [data-part-submit]:is([aria-label], [aria-labelledby]):active:not(:disabled) {
|
|
454
452
|
scale: 0.9;
|
|
455
453
|
}
|
|
456
454
|
|
|
@@ -459,23 +457,23 @@
|
|
|
459
457
|
* over it: a hint of the movement the press will start, and nothing else
|
|
460
458
|
* in the frame moves.
|
|
461
459
|
*/
|
|
462
|
-
[data-ui
|
|
463
|
-
> [data-part
|
|
464
|
-
> [data-part
|
|
465
|
-
> [data-ui
|
|
460
|
+
[data-ui-prompt-composer]
|
|
461
|
+
> [data-part-footer]
|
|
462
|
+
> [data-part-submit]
|
|
463
|
+
> [data-ui-icon]:has([data-glyph='arrow-up']) {
|
|
466
464
|
transition: translate var(--slotted-duration-short) var(--slotted-easing-standard);
|
|
467
465
|
}
|
|
468
466
|
|
|
469
|
-
[data-ui
|
|
470
|
-
> [data-part
|
|
471
|
-
> [data-part
|
|
472
|
-
> [data-ui
|
|
467
|
+
[data-ui-prompt-composer]
|
|
468
|
+
> [data-part-footer]
|
|
469
|
+
> [data-part-submit]:hover:not(:disabled)
|
|
470
|
+
> [data-ui-icon]:has([data-glyph='arrow-up']) {
|
|
473
471
|
translate: 0 calc(var(--slotted-border-width-thin, 1px) * -1);
|
|
474
472
|
}
|
|
475
473
|
|
|
476
474
|
/* Nothing to send: a quiet disc in the disabled ground, the arrow still
|
|
477
475
|
legible, so the reader sees where the send will be before it wakes. */
|
|
478
|
-
[data-ui
|
|
476
|
+
[data-ui-prompt-composer] > [data-part-footer] > [data-part-submit]:disabled {
|
|
479
477
|
background-color: var(
|
|
480
478
|
--slotted-prompt-composer-submit-disabled-background,
|
|
481
479
|
var(--slotted-disabled-background)
|
|
@@ -486,9 +484,7 @@
|
|
|
486
484
|
|
|
487
485
|
/* While the request travels the button is busy, not unavailable: the ring
|
|
488
486
|
stands where the arrow stood and the ground keeps the accent. */
|
|
489
|
-
[data-ui
|
|
490
|
-
> [data-part='footer']
|
|
491
|
-
> [data-part='submit'] {
|
|
487
|
+
[data-ui-prompt-composer][data-status='submitted'] > [data-part-footer] > [data-part-submit] {
|
|
492
488
|
background-color: var(
|
|
493
489
|
--slotted-prompt-composer-submit-background,
|
|
494
490
|
var(--slotted-tone-accent-solid, Highlight)
|
|
@@ -502,9 +498,7 @@
|
|
|
502
498
|
|
|
503
499
|
/* The ring around the stop square is drawn inside the disc, a stroke in
|
|
504
500
|
from its edge, so the disc keeps its outline. */
|
|
505
|
-
[data-ui
|
|
506
|
-
> [data-part='footer']
|
|
507
|
-
> [data-part='submit'] {
|
|
501
|
+
[data-ui-prompt-composer][data-status='streaming'] > [data-part-footer] > [data-part-submit] {
|
|
508
502
|
--slotted-spinner-size: calc(var(--_button) - 2 * var(--slotted-space-1, 2px));
|
|
509
503
|
--slotted-icon-size: calc(var(--_icon-size) * 3 / 4);
|
|
510
504
|
}
|
|
@@ -515,10 +509,10 @@
|
|
|
515
509
|
* transparent, on the entering curve. The old mark is gone in the same
|
|
516
510
|
* frame.
|
|
517
511
|
*/
|
|
518
|
-
[data-ui
|
|
519
|
-
> [data-part
|
|
520
|
-
> [data-part
|
|
521
|
-
> :is([data-ui
|
|
512
|
+
[data-ui-prompt-composer]
|
|
513
|
+
> [data-part-footer]
|
|
514
|
+
> [data-part-submit]
|
|
515
|
+
> :is([data-ui-icon], [data-ui-spinner]) {
|
|
522
516
|
transition:
|
|
523
517
|
opacity var(--slotted-duration-short) var(--slotted-easing-enter),
|
|
524
518
|
scale var(--slotted-duration-short) var(--slotted-easing-enter),
|
|
@@ -526,10 +520,10 @@
|
|
|
526
520
|
}
|
|
527
521
|
|
|
528
522
|
@starting-style {
|
|
529
|
-
[data-ui
|
|
530
|
-
> [data-part
|
|
531
|
-
> [data-part
|
|
532
|
-
> :is([data-ui
|
|
523
|
+
[data-ui-prompt-composer]
|
|
524
|
+
> [data-part-footer]
|
|
525
|
+
> [data-part-submit]
|
|
526
|
+
> :is([data-ui-icon], [data-ui-spinner]) {
|
|
533
527
|
opacity: 0;
|
|
534
528
|
scale: 0.8;
|
|
535
529
|
}
|
|
@@ -539,21 +533,21 @@
|
|
|
539
533
|
inner control does: four pixels from the frame, an outward ring would
|
|
540
534
|
land on the frame's edge. The solid send keeps it outside, where the
|
|
541
535
|
ring stands against the frame's ground rather than against the accent. */
|
|
542
|
-
[data-ui
|
|
543
|
-
> :is([data-part
|
|
544
|
-
> :is([data-part
|
|
536
|
+
[data-ui-prompt-composer]
|
|
537
|
+
> :is([data-part-header], [data-part-footer])
|
|
538
|
+
> :is([data-part-action], [data-part-attach]):focus-visible {
|
|
545
539
|
outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);
|
|
546
540
|
outline-offset: calc(var(--slotted-focus-ring-offset, 2px) * -1);
|
|
547
541
|
}
|
|
548
542
|
|
|
549
|
-
[data-ui
|
|
543
|
+
[data-ui-prompt-composer] > [data-part-footer] > [data-part-submit]:focus-visible {
|
|
550
544
|
outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);
|
|
551
545
|
outline-offset: var(--slotted-focus-ring-offset, 2px);
|
|
552
546
|
}
|
|
553
547
|
|
|
554
548
|
/* ── States of the frame ─────────────────────────────────────────────── */
|
|
555
549
|
|
|
556
|
-
[data-ui
|
|
550
|
+
[data-ui-prompt-composer][data-part-root]:hover:not([data-disabled]):not([data-readonly]):not(
|
|
557
551
|
[data-invalid]
|
|
558
552
|
):not([data-drop-target]) {
|
|
559
553
|
border-color: var(
|
|
@@ -569,10 +563,135 @@
|
|
|
569
563
|
* the theme's large shadow, because a surface that is being written on
|
|
570
564
|
* comes forward.
|
|
571
565
|
*/
|
|
572
|
-
[data-ui
|
|
566
|
+
[data-ui-prompt-composer][data-part-root]:has(> [data-part-input]:focus-visible) {
|
|
573
567
|
box-shadow: var(--_lift-focus);
|
|
574
568
|
outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);
|
|
575
|
-
outline-offset: var(--slotted-focus-ring-offset, 2px);
|
|
569
|
+
outline-offset: var(--slotted-control-focus-ring-offset, var(--slotted-focus-ring-offset, 2px));
|
|
570
|
+
}
|
|
571
|
+
|
|
572
|
+
/* ── Emphasis: the ring ──────────────────────────────────────────────
|
|
573
|
+
*
|
|
574
|
+
* An AI input marked by a ring of turning hues and a soft glow, as Gemini
|
|
575
|
+
* and AI Studio mark theirs. The ring replaces the frame's border, its focus
|
|
576
|
+
* outline and its raised shadow; the controls inside keep their own focus
|
|
577
|
+
* rings. Two marks the binding draws, both `aria-hidden`: the ring, a band
|
|
578
|
+
* the width of `--slotted-prompt-composer-ring-width` cut out of a turning
|
|
579
|
+
* conic gradient, and the glow, the same gradient blurred and cut to what
|
|
580
|
+
* lies outside the frame. Each turns a square larger than its box by a
|
|
581
|
+
* `transform`, which the compositor runs at a constant speed.
|
|
582
|
+
*/
|
|
583
|
+
[data-ui-prompt-composer][data-part-root][data-emphasis='ring'] {
|
|
584
|
+
--_ring-width: var(
|
|
585
|
+
--slotted-prompt-composer-ring-width,
|
|
586
|
+
var(--slotted-border-width-thick, 2px)
|
|
587
|
+
);
|
|
588
|
+
--_ring-reach: var(--slotted-prompt-composer-ring-glow-reach, var(--slotted-space-8, 1.5rem));
|
|
589
|
+
--_glow: var(--slotted-prompt-composer-ring-glow-opacity, 0.3);
|
|
590
|
+
|
|
591
|
+
border-color: transparent;
|
|
592
|
+
box-shadow: none;
|
|
593
|
+
isolation: isolate;
|
|
594
|
+
}
|
|
595
|
+
|
|
596
|
+
[data-ui-prompt-composer][data-part-root][data-emphasis='ring']:has(
|
|
597
|
+
> [data-part-input]:focus-visible
|
|
598
|
+
) {
|
|
599
|
+
--_glow: var(--slotted-prompt-composer-ring-glow-opacity-focus, 0.55);
|
|
600
|
+
|
|
601
|
+
box-shadow: none;
|
|
602
|
+
outline: none;
|
|
603
|
+
}
|
|
604
|
+
|
|
605
|
+
[data-ui-prompt-composer][data-part-root][data-emphasis='ring']:is(
|
|
606
|
+
[data-loading],
|
|
607
|
+
[data-status='submitted'],
|
|
608
|
+
[data-status='streaming']
|
|
609
|
+
) {
|
|
610
|
+
--_glow: var(--slotted-prompt-composer-ring-glow-opacity-busy, 0.75);
|
|
611
|
+
}
|
|
612
|
+
|
|
613
|
+
[data-ui-prompt-composer] > :is([data-part-ring], [data-part-glow]) {
|
|
614
|
+
border-radius: var(--_radius);
|
|
615
|
+
container-type: size;
|
|
616
|
+
overflow: hidden;
|
|
617
|
+
pointer-events: none;
|
|
618
|
+
position: absolute;
|
|
619
|
+
}
|
|
620
|
+
|
|
621
|
+
[data-ui-prompt-composer] > [data-part-ring] {
|
|
622
|
+
inset: calc(-1 * var(--slotted-control-border-width, 1px));
|
|
623
|
+
mask:
|
|
624
|
+
linear-gradient(#000 0 0) content-box exclude,
|
|
625
|
+
linear-gradient(#000 0 0);
|
|
626
|
+
padding: var(--_ring-width);
|
|
627
|
+
z-index: 1;
|
|
628
|
+
}
|
|
629
|
+
|
|
630
|
+
[data-ui-prompt-composer] > [data-part-glow] {
|
|
631
|
+
border-radius: calc(var(--_radius) + var(--_ring-reach));
|
|
632
|
+
filter: blur(calc(var(--_ring-reach) / 2));
|
|
633
|
+
inset: calc(-1 * var(--_ring-reach));
|
|
634
|
+
mask:
|
|
635
|
+
linear-gradient(#000 0 0) content-box exclude,
|
|
636
|
+
linear-gradient(#000 0 0);
|
|
637
|
+
opacity: var(--_glow);
|
|
638
|
+
padding: var(--_ring-reach);
|
|
639
|
+
transition: opacity var(--slotted-duration-medium) var(--slotted-easing-standard);
|
|
640
|
+
z-index: -1;
|
|
641
|
+
}
|
|
642
|
+
|
|
643
|
+
[data-ui-prompt-composer] > :is([data-part-ring], [data-part-glow])::before {
|
|
644
|
+
animation: slotted-prompt-composer-turn
|
|
645
|
+
var(--slotted-prompt-composer-ring-duration, var(--slotted-duration-loop-slow)) linear
|
|
646
|
+
infinite;
|
|
647
|
+
aspect-ratio: 1;
|
|
648
|
+
background: conic-gradient(
|
|
649
|
+
var(
|
|
650
|
+
--slotted-prompt-composer-ring-colors,
|
|
651
|
+
var(--slotted-data-1),
|
|
652
|
+
var(--slotted-data-3),
|
|
653
|
+
var(--slotted-data-5),
|
|
654
|
+
var(--slotted-data-2),
|
|
655
|
+
var(--slotted-data-1)
|
|
656
|
+
)
|
|
657
|
+
);
|
|
658
|
+
content: '';
|
|
659
|
+
inline-size: 150cqmax;
|
|
660
|
+
inset-block-start: 50%;
|
|
661
|
+
inset-inline-start: 50%;
|
|
662
|
+
position: absolute;
|
|
663
|
+
transform: translate(-50%, -50%) rotate(0turn);
|
|
664
|
+
}
|
|
665
|
+
|
|
666
|
+
@keyframes slotted-prompt-composer-turn {
|
|
667
|
+
to {
|
|
668
|
+
transform: translate(-50%, -50%) rotate(1turn);
|
|
669
|
+
}
|
|
670
|
+
}
|
|
671
|
+
|
|
672
|
+
@media (prefers-reduced-motion: reduce) {
|
|
673
|
+
[data-ui-prompt-composer] > :is([data-part-ring], [data-part-glow])::before {
|
|
674
|
+
animation: none;
|
|
675
|
+
}
|
|
676
|
+
}
|
|
677
|
+
|
|
678
|
+
/* The system's colours draw no gradient: the marks go, and the frame's own
|
|
679
|
+
border and focus outline return. */
|
|
680
|
+
@media (forced-colors: active) {
|
|
681
|
+
[data-ui-prompt-composer] > :is([data-part-ring], [data-part-glow]) {
|
|
682
|
+
display: none;
|
|
683
|
+
}
|
|
684
|
+
|
|
685
|
+
[data-ui-prompt-composer][data-part-root][data-emphasis='ring'] {
|
|
686
|
+
border-color: ButtonBorder;
|
|
687
|
+
}
|
|
688
|
+
|
|
689
|
+
[data-ui-prompt-composer][data-part-root][data-emphasis='ring']:has(
|
|
690
|
+
> [data-part-input]:focus-visible
|
|
691
|
+
) {
|
|
692
|
+
outline: var(--slotted-focus-ring-width, 2px) solid Highlight;
|
|
693
|
+
outline-offset: var(--slotted-focus-ring-offset, 2px);
|
|
694
|
+
}
|
|
576
695
|
}
|
|
577
696
|
|
|
578
697
|
/**
|
|
@@ -583,11 +702,11 @@
|
|
|
583
702
|
* moment. The dashed edge is a pseudo-element rather than an outline: the
|
|
584
703
|
* outline is the focus ring's, and the two can be on at once.
|
|
585
704
|
*/
|
|
586
|
-
[data-ui
|
|
705
|
+
[data-ui-prompt-composer][data-part-root] {
|
|
587
706
|
position: relative;
|
|
588
707
|
}
|
|
589
708
|
|
|
590
|
-
[data-ui
|
|
709
|
+
[data-ui-prompt-composer][data-part-root]::before {
|
|
591
710
|
/* Unthemed, the dashed edge disappears rather than shouting in a system
|
|
592
711
|
colour; the wash and the frame's edge still say where the drop lands. */
|
|
593
712
|
border: var(--slotted-border-width-medium, 1.5px) dashed
|
|
@@ -606,12 +725,12 @@
|
|
|
606
725
|
transition: opacity var(--slotted-duration-short) var(--slotted-easing-exit);
|
|
607
726
|
}
|
|
608
727
|
|
|
609
|
-
[data-ui
|
|
728
|
+
[data-ui-prompt-composer][data-part-root][data-drop-target]::before {
|
|
610
729
|
opacity: 1;
|
|
611
730
|
transition-timing-function: var(--slotted-easing-enter);
|
|
612
731
|
}
|
|
613
732
|
|
|
614
|
-
[data-ui
|
|
733
|
+
[data-ui-prompt-composer][data-part-root][data-drop-target] {
|
|
615
734
|
background-color: var(
|
|
616
735
|
--slotted-prompt-composer-drop-background,
|
|
617
736
|
var(--slotted-tone-accent-surface, Canvas)
|
|
@@ -622,7 +741,7 @@
|
|
|
622
741
|
);
|
|
623
742
|
}
|
|
624
743
|
|
|
625
|
-
[data-ui
|
|
744
|
+
[data-ui-prompt-composer][data-part-root][data-invalid] {
|
|
626
745
|
--slotted-focus-ring-color: var(
|
|
627
746
|
--slotted-prompt-composer-invalid-focus-ring-color,
|
|
628
747
|
var(--slotted-focus-ring-color-invalid, Highlight)
|
|
@@ -646,7 +765,7 @@
|
|
|
646
765
|
* the large one in `raised` — and forced colours, which remove shadows, keep
|
|
647
766
|
* a border. Nothing moves: the box is out of flow.
|
|
648
767
|
*/
|
|
649
|
-
[data-ui
|
|
768
|
+
[data-ui-prompt-composer][data-part-root][data-invalid]::after {
|
|
650
769
|
border: var(--_invalid-edge-width) solid
|
|
651
770
|
var(--slotted-prompt-composer-invalid-border-color, var(--slotted-tone-danger-border));
|
|
652
771
|
border-radius: max(0px, calc(var(--_radius) - var(--slotted-control-border-width, 1px)));
|
|
@@ -656,7 +775,7 @@
|
|
|
656
775
|
position: absolute;
|
|
657
776
|
}
|
|
658
777
|
|
|
659
|
-
[data-ui
|
|
778
|
+
[data-ui-prompt-composer][data-part-root][data-readonly] {
|
|
660
779
|
background-color: var(
|
|
661
780
|
--slotted-prompt-composer-readonly-background,
|
|
662
781
|
var(--slotted-tone-secondary-subtle-hover)
|
|
@@ -664,7 +783,7 @@
|
|
|
664
783
|
cursor: default;
|
|
665
784
|
}
|
|
666
785
|
|
|
667
|
-
[data-ui
|
|
786
|
+
[data-ui-prompt-composer][data-part-root][data-disabled] {
|
|
668
787
|
background-color: var(
|
|
669
788
|
--slotted-prompt-composer-disabled-background,
|
|
670
789
|
var(--slotted-disabled-background)
|