@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/message/message.css
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* both `Message` and `Bubble`, and two answers to one question can disagree
|
|
14
14
|
* (`docs/history/designs/2026-09-30-message-design.md` §2.2).
|
|
15
15
|
*/
|
|
16
|
-
[data-ui
|
|
16
|
+
[data-ui-message][data-part-root] {
|
|
17
17
|
/**
|
|
18
18
|
* The avatar column is the small avatar step, which the theme restates per
|
|
19
19
|
* density; ReUI's 32 has no step there (dossier §3), and a row that follows
|
|
@@ -62,16 +62,15 @@
|
|
|
62
62
|
* `MessageAvatar` in each of them (`c-message-6`); the column is read here
|
|
63
63
|
* from the DOM instead.
|
|
64
64
|
*/
|
|
65
|
-
[data-ui
|
|
66
|
-
[data-ui
|
|
67
|
-
> [data-ui='message'][data-part='root'] {
|
|
65
|
+
[data-ui-message][data-part-root]:has(> [data-part-avatar]),
|
|
66
|
+
[data-ui-message][data-part-group]:has([data-part-avatar]) > [data-ui-message][data-part-root] {
|
|
68
67
|
grid-template-areas: 'avatar body';
|
|
69
68
|
grid-template-columns: var(--_avatar-size) minmax(0, 1fr);
|
|
70
69
|
}
|
|
71
70
|
|
|
72
|
-
[data-ui
|
|
73
|
-
[data-ui
|
|
74
|
-
> [data-ui
|
|
71
|
+
[data-ui-message][data-part-root][data-align='end']:has(> [data-part-avatar]),
|
|
72
|
+
[data-ui-message][data-part-group]:has([data-part-avatar])
|
|
73
|
+
> [data-ui-message][data-part-root][data-align='end'] {
|
|
75
74
|
grid-template-areas: 'body avatar';
|
|
76
75
|
grid-template-columns: minmax(0, 1fr) var(--_avatar-size);
|
|
77
76
|
}
|
|
@@ -81,7 +80,7 @@
|
|
|
81
80
|
* rather than of the footer under it: in a run it marks where the run ends,
|
|
82
81
|
* which is where the reader's eye arrives.
|
|
83
82
|
*/
|
|
84
|
-
[data-ui
|
|
83
|
+
[data-ui-message][data-part-root] > [data-part-avatar] {
|
|
85
84
|
grid-area: avatar;
|
|
86
85
|
display: flex;
|
|
87
86
|
align-self: end;
|
|
@@ -90,12 +89,12 @@
|
|
|
90
89
|
min-block-size: var(--_avatar-size);
|
|
91
90
|
}
|
|
92
91
|
|
|
93
|
-
[data-ui
|
|
94
|
-
> [data-part
|
|
92
|
+
[data-ui-message][data-part-root]:has(> [data-part-body] > [data-part-footer])
|
|
93
|
+
> [data-part-avatar] {
|
|
95
94
|
margin-block-end: calc(var(--_meta-leading) + var(--_stack-gap));
|
|
96
95
|
}
|
|
97
96
|
|
|
98
|
-
[data-ui
|
|
97
|
+
[data-ui-message][data-part-root] > [data-part-body] {
|
|
99
98
|
grid-area: body;
|
|
100
99
|
display: flex;
|
|
101
100
|
flex-direction: column;
|
|
@@ -104,7 +103,7 @@
|
|
|
104
103
|
min-inline-size: 0;
|
|
105
104
|
}
|
|
106
105
|
|
|
107
|
-
[data-ui
|
|
106
|
+
[data-ui-message][data-part-root][data-align='end'] > [data-part-body] {
|
|
108
107
|
align-items: flex-end;
|
|
109
108
|
}
|
|
110
109
|
|
|
@@ -116,7 +115,7 @@
|
|
|
116
115
|
* sender's side drawn in, it reads as one speaker holding the floor. The
|
|
117
116
|
* gap between runs belongs to whatever stacks them — the scroller gives it.
|
|
118
117
|
*/
|
|
119
|
-
[data-ui
|
|
118
|
+
[data-ui-message][data-part-group] {
|
|
120
119
|
display: flex;
|
|
121
120
|
flex-direction: column;
|
|
122
121
|
gap: var(--slotted-message-run-gap, var(--slotted-space-1, 0.125rem));
|
|
@@ -125,7 +124,7 @@
|
|
|
125
124
|
|
|
126
125
|
/* ── Header and footer ──────────────────────────────────────────────── */
|
|
127
126
|
|
|
128
|
-
[data-ui
|
|
127
|
+
[data-ui-message][data-part-root] :is([data-part-header], [data-part-footer]) {
|
|
129
128
|
display: flex;
|
|
130
129
|
flex-wrap: wrap;
|
|
131
130
|
align-items: center;
|
|
@@ -139,8 +138,7 @@
|
|
|
139
138
|
line-height: var(--_meta-leading);
|
|
140
139
|
}
|
|
141
140
|
|
|
142
|
-
[data-ui
|
|
143
|
-
:is([data-part='header'], [data-part='footer']) {
|
|
141
|
+
[data-ui-message][data-part-root][data-align='end'] :is([data-part-header], [data-part-footer]) {
|
|
144
142
|
justify-content: flex-end;
|
|
145
143
|
}
|
|
146
144
|
|
|
@@ -150,7 +148,7 @@
|
|
|
150
148
|
* read aloud, copied with the name and wrapped onto a line of its own.
|
|
151
149
|
* ReUI asks the consumer to write the dot (`c-message-3`).
|
|
152
150
|
*/
|
|
153
|
-
[data-ui
|
|
151
|
+
[data-ui-message][data-part-root] [data-part-header] > * + [data-part-time]::before {
|
|
154
152
|
content: '';
|
|
155
153
|
display: inline-block;
|
|
156
154
|
inline-size: var(--slotted-space-2, 0.25rem);
|
|
@@ -162,14 +160,14 @@
|
|
|
162
160
|
vertical-align: middle;
|
|
163
161
|
}
|
|
164
162
|
|
|
165
|
-
[data-ui
|
|
163
|
+
[data-ui-message][data-part-root] [data-part-author] {
|
|
166
164
|
min-inline-size: 0;
|
|
167
165
|
overflow: hidden;
|
|
168
166
|
text-overflow: ellipsis;
|
|
169
167
|
white-space: nowrap;
|
|
170
168
|
}
|
|
171
169
|
|
|
172
|
-
[data-ui
|
|
170
|
+
[data-ui-message][data-part-root] [data-part-time] {
|
|
173
171
|
font-variant-numeric: tabular-nums;
|
|
174
172
|
white-space: nowrap;
|
|
175
173
|
}
|
|
@@ -183,14 +181,11 @@
|
|
|
183
181
|
* word of twelve pixels is two voices saying one thing, and the two never
|
|
184
182
|
* shared a centre line.
|
|
185
183
|
*/
|
|
186
|
-
[data-ui
|
|
184
|
+
[data-ui-message][data-part-root] [data-part-footer] > [data-part-receipt] {
|
|
187
185
|
white-space: nowrap;
|
|
188
186
|
}
|
|
189
187
|
|
|
190
|
-
[data-ui
|
|
191
|
-
[data-part='footer']
|
|
192
|
-
> [data-part='receipt']
|
|
193
|
-
> [data-ui='icon'] {
|
|
188
|
+
[data-ui-message][data-part-root] [data-part-footer] > [data-part-receipt] > [data-ui-icon] {
|
|
194
189
|
display: none;
|
|
195
190
|
}
|
|
196
191
|
|
|
@@ -200,7 +195,7 @@
|
|
|
200
195
|
* not with the words inside it — so the note reads as the bubble's caption.
|
|
201
196
|
* The control that sends it again stands beside the surface (`retry`).
|
|
202
197
|
*/
|
|
203
|
-
[data-ui
|
|
198
|
+
[data-ui-message][data-part-root][data-invalid] > [data-part-body] > [data-part-footer] {
|
|
204
199
|
padding-inline: var(--slotted-space-2, 0.25rem);
|
|
205
200
|
color: var(--slotted-tone-danger-text);
|
|
206
201
|
}
|
|
@@ -212,7 +207,7 @@
|
|
|
212
207
|
* always on a screen that cannot hover: a reveal by hover alone would hide
|
|
213
208
|
* them from the keyboard and from a finger.
|
|
214
209
|
*/
|
|
215
|
-
[data-ui
|
|
210
|
+
[data-ui-message][data-part-root] [data-part-actions] {
|
|
216
211
|
display: inline-flex;
|
|
217
212
|
align-items: center;
|
|
218
213
|
gap: var(--slotted-space-1, 0.125rem);
|
|
@@ -220,15 +215,15 @@
|
|
|
220
215
|
}
|
|
221
216
|
|
|
222
217
|
@media (hover: hover) {
|
|
223
|
-
[data-ui
|
|
218
|
+
[data-ui-message][data-part-root][data-actions='hover'] [data-part-actions] {
|
|
224
219
|
opacity: 0;
|
|
225
220
|
}
|
|
226
221
|
|
|
227
|
-
[data-ui
|
|
222
|
+
[data-ui-message][data-part-root][data-actions='hover']:is(
|
|
228
223
|
:hover:not([data-disabled]),
|
|
229
224
|
:focus-within
|
|
230
225
|
)
|
|
231
|
-
[data-part
|
|
226
|
+
[data-part-actions] {
|
|
232
227
|
opacity: 1;
|
|
233
228
|
transition-timing-function: var(--slotted-easing-enter, ease-out);
|
|
234
229
|
}
|
|
@@ -248,7 +243,7 @@
|
|
|
248
243
|
* moves only while the step is current, and under reduced motion the words
|
|
249
244
|
* stand in the plain ink.
|
|
250
245
|
*/
|
|
251
|
-
[data-ui
|
|
246
|
+
[data-ui-message][data-part-root] [data-part-activity] {
|
|
252
247
|
display: inline-flex;
|
|
253
248
|
flex-direction: column;
|
|
254
249
|
gap: var(--slotted-space-3, 0.375rem);
|
|
@@ -265,7 +260,7 @@
|
|
|
265
260
|
line-height: round(up, calc(1em * var(--slotted-line-height-md, 1.5)), 1px);
|
|
266
261
|
}
|
|
267
262
|
|
|
268
|
-
[data-ui
|
|
263
|
+
[data-ui-message][data-part-root] [data-part-activity-step] {
|
|
269
264
|
display: flex;
|
|
270
265
|
align-items: center;
|
|
271
266
|
gap: var(--slotted-space-4, 0.5rem);
|
|
@@ -282,7 +277,7 @@
|
|
|
282
277
|
}
|
|
283
278
|
|
|
284
279
|
/** The mark column: a tick, or the ring, in one box so the words line up. */
|
|
285
|
-
[data-ui
|
|
280
|
+
[data-ui-message][data-part-root] [data-part-activity-step] > :first-child {
|
|
286
281
|
--slotted-icon-size: var(--_glyph-size);
|
|
287
282
|
--slotted-spinner-size: var(--_glyph-size);
|
|
288
283
|
|
|
@@ -293,19 +288,19 @@
|
|
|
293
288
|
block-size: var(--_glyph-size);
|
|
294
289
|
}
|
|
295
290
|
|
|
296
|
-
[data-ui
|
|
291
|
+
[data-ui-message][data-part-root] [data-part-activity-step][data-complete] > :first-child {
|
|
297
292
|
color: var(--slotted-tone-success-text);
|
|
298
293
|
}
|
|
299
294
|
|
|
300
|
-
[data-ui
|
|
295
|
+
[data-ui-message][data-part-root] [data-part-activity-step][data-current] {
|
|
301
296
|
color: var(--slotted-text);
|
|
302
297
|
}
|
|
303
298
|
|
|
304
|
-
[data-ui
|
|
299
|
+
[data-ui-message][data-part-root] [data-part-activity-step][data-current] > :first-child {
|
|
305
300
|
color: var(--slotted-tone-accent-text);
|
|
306
301
|
}
|
|
307
302
|
|
|
308
|
-
[data-ui
|
|
303
|
+
[data-ui-message][data-part-root] [data-part-activity-step][data-current] > :last-child {
|
|
309
304
|
--_base: color-mix(in oklab, var(--slotted-text) 72%, var(--slotted-text-muted));
|
|
310
305
|
|
|
311
306
|
background-image: linear-gradient(
|
|
@@ -337,20 +332,19 @@
|
|
|
337
332
|
* `2 de 3` between two inner controls. The chevron is one glyph turned for
|
|
338
333
|
* the previous control, and a right-to-left document turns both.
|
|
339
334
|
*/
|
|
340
|
-
[data-ui
|
|
335
|
+
[data-ui-message][data-part-root] [data-part-versions] {
|
|
341
336
|
display: inline-flex;
|
|
342
337
|
align-items: center;
|
|
343
338
|
color: var(--slotted-text-muted);
|
|
344
339
|
}
|
|
345
340
|
|
|
346
|
-
[data-ui
|
|
341
|
+
[data-ui-message][data-part-root] [data-part-version-label] {
|
|
347
342
|
padding-inline: var(--slotted-space-2, 0.25rem);
|
|
348
343
|
font-variant-numeric: tabular-nums;
|
|
349
344
|
white-space: nowrap;
|
|
350
345
|
}
|
|
351
346
|
|
|
352
|
-
[data-ui
|
|
353
|
-
:is([data-part='version-previous'], [data-part='version-next']) {
|
|
347
|
+
[data-ui-message][data-part-root] :is([data-part-version-previous], [data-part-version-next]) {
|
|
354
348
|
display: inline-grid;
|
|
355
349
|
place-items: center;
|
|
356
350
|
inline-size: var(--_inner-size);
|
|
@@ -367,45 +361,45 @@
|
|
|
367
361
|
color var(--slotted-duration-short) var(--slotted-easing-standard, ease);
|
|
368
362
|
}
|
|
369
363
|
|
|
370
|
-
[data-ui
|
|
371
|
-
:is([data-part
|
|
372
|
-
> [data-ui
|
|
364
|
+
[data-ui-message][data-part-root]
|
|
365
|
+
:is([data-part-version-previous], [data-part-version-next])
|
|
366
|
+
> [data-ui-icon] {
|
|
373
367
|
--slotted-icon-size: var(--_glyph-size);
|
|
374
368
|
}
|
|
375
369
|
|
|
376
|
-
[data-ui
|
|
370
|
+
[data-ui-message][data-part-root] [data-part-version-previous] > [data-ui-icon] {
|
|
377
371
|
scale: -1 1;
|
|
378
372
|
}
|
|
379
373
|
|
|
380
|
-
[data-ui
|
|
381
|
-
:is([data-part
|
|
382
|
-
> [data-ui
|
|
374
|
+
[data-ui-message][data-part-root]:dir(rtl)
|
|
375
|
+
:is([data-part-version-previous], [data-part-version-next])
|
|
376
|
+
> [data-ui-icon] {
|
|
383
377
|
scale: -1 1;
|
|
384
378
|
}
|
|
385
379
|
|
|
386
|
-
[data-ui
|
|
380
|
+
[data-ui-message][data-part-root]:dir(rtl) [data-part-version-previous] > [data-ui-icon] {
|
|
387
381
|
scale: 1 1;
|
|
388
382
|
}
|
|
389
383
|
|
|
390
|
-
[data-ui
|
|
391
|
-
:is([data-part
|
|
384
|
+
[data-ui-message][data-part-root]
|
|
385
|
+
:is([data-part-version-previous], [data-part-version-next]):hover:not(:disabled) {
|
|
392
386
|
background-color: var(--slotted-tone-secondary-subtle-hover);
|
|
393
387
|
color: var(--slotted-text);
|
|
394
388
|
}
|
|
395
389
|
|
|
396
|
-
[data-ui
|
|
397
|
-
:is([data-part
|
|
390
|
+
[data-ui-message][data-part-root]
|
|
391
|
+
:is([data-part-version-previous], [data-part-version-next]):active:not(:disabled) {
|
|
398
392
|
background-color: var(--slotted-tone-secondary-subtle-active);
|
|
399
393
|
color: var(--slotted-text);
|
|
400
394
|
}
|
|
401
395
|
|
|
402
|
-
[data-ui
|
|
403
|
-
:is([data-part
|
|
396
|
+
[data-ui-message][data-part-root]
|
|
397
|
+
:is([data-part-version-previous], [data-part-version-next]):disabled {
|
|
404
398
|
color: var(--slotted-disabled-foreground);
|
|
405
399
|
}
|
|
406
400
|
|
|
407
|
-
[data-ui
|
|
408
|
-
:is([data-part
|
|
401
|
+
[data-ui-message][data-part-root]
|
|
402
|
+
:is([data-part-version-previous], [data-part-version-next]):focus-visible {
|
|
409
403
|
outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color);
|
|
410
404
|
outline-offset: calc(var(--slotted-focus-ring-offset, 2px) * -1);
|
|
411
405
|
}
|
|
@@ -426,7 +420,7 @@
|
|
|
426
420
|
* avatar at the top beside the name, the words unframed under it, and a
|
|
427
421
|
* band under the pointer that says which message the actions belong to.
|
|
428
422
|
*/
|
|
429
|
-
[data-ui
|
|
423
|
+
[data-ui-message][data-part-root][data-layout='thread'] {
|
|
430
424
|
--_avatar-size: var(--slotted-message-thread-avatar-size, var(--slotted-avatar-size-md, 36px));
|
|
431
425
|
--_pad-inline: 0px;
|
|
432
426
|
|
|
@@ -436,18 +430,18 @@
|
|
|
436
430
|
transition: background-color var(--slotted-duration-short) var(--slotted-easing-standard, ease);
|
|
437
431
|
}
|
|
438
432
|
|
|
439
|
-
[data-ui
|
|
433
|
+
[data-ui-message][data-part-root][data-layout='thread'] > [data-part-avatar] {
|
|
440
434
|
align-self: start;
|
|
441
435
|
margin-block-end: 0;
|
|
442
436
|
}
|
|
443
437
|
|
|
444
|
-
[data-ui
|
|
438
|
+
[data-ui-message][data-part-root][data-layout='thread'] [data-part-author] {
|
|
445
439
|
color: var(--slotted-text);
|
|
446
440
|
font-size: var(--slotted-control-font-size-md, 13px);
|
|
447
441
|
font-weight: var(--slotted-font-weight-semibold, 600);
|
|
448
442
|
}
|
|
449
443
|
|
|
450
|
-
[data-ui
|
|
444
|
+
[data-ui-message][data-part-root][data-layout='thread']:hover:not([data-disabled]) {
|
|
451
445
|
background-color: var(--slotted-tone-secondary-subtle-hover);
|
|
452
446
|
}
|
|
453
447
|
|
|
@@ -459,14 +453,14 @@
|
|
|
459
453
|
* A plate that is always painted, on a touch screen or with `always`, floated
|
|
460
454
|
* over the words and covered them at 360 pixels.
|
|
461
455
|
*/
|
|
462
|
-
[data-ui
|
|
456
|
+
[data-ui-message][data-part-root][data-layout='thread'] > [data-part-actions] {
|
|
463
457
|
grid-column: body;
|
|
464
458
|
justify-self: start;
|
|
465
459
|
}
|
|
466
460
|
|
|
467
461
|
@media (hover: hover) {
|
|
468
|
-
[data-ui
|
|
469
|
-
> [data-part
|
|
462
|
+
[data-ui-message][data-part-root][data-layout='thread'][data-actions='hover']
|
|
463
|
+
> [data-part-actions] {
|
|
470
464
|
position: absolute;
|
|
471
465
|
inset-block-start: calc(var(--slotted-space-2, 0.25rem) * -1);
|
|
472
466
|
inset-inline-end: var(--slotted-space-4, 0.5rem);
|
|
@@ -480,7 +474,7 @@
|
|
|
480
474
|
|
|
481
475
|
/* ══ The bubble ════════════════════════════════════════════════════════ */
|
|
482
476
|
|
|
483
|
-
[data-ui
|
|
477
|
+
[data-ui-message][data-part-bubble] {
|
|
484
478
|
/**
|
|
485
479
|
* The five tones, read into the roles a painting needs. `soft` writes in
|
|
486
480
|
* the page's ink on the accent and secondary grounds — a paragraph set in
|
|
@@ -538,14 +532,14 @@
|
|
|
538
532
|
max-inline-size: var(--slotted-message-bubble-share, 80%);
|
|
539
533
|
}
|
|
540
534
|
|
|
541
|
-
[data-ui
|
|
535
|
+
[data-ui-message][data-part-bubble][data-tone='accent'] {
|
|
542
536
|
--_solid: var(--slotted-tone-accent-solid);
|
|
543
537
|
--_on-solid: var(--slotted-tone-accent-on-solid);
|
|
544
538
|
--_surface: var(--slotted-tone-accent-surface);
|
|
545
539
|
--_border: var(--slotted-tone-accent-border);
|
|
546
540
|
}
|
|
547
541
|
|
|
548
|
-
[data-ui
|
|
542
|
+
[data-ui-message][data-part-bubble][data-tone='success'] {
|
|
549
543
|
--_solid: var(--slotted-tone-success-solid);
|
|
550
544
|
--_on-solid: var(--slotted-tone-success-on-solid);
|
|
551
545
|
--_surface: var(--slotted-tone-success-surface);
|
|
@@ -553,7 +547,7 @@
|
|
|
553
547
|
--_soft-ink: var(--slotted-tone-success-text);
|
|
554
548
|
}
|
|
555
549
|
|
|
556
|
-
[data-ui
|
|
550
|
+
[data-ui-message][data-part-bubble][data-tone='warning'] {
|
|
557
551
|
--_solid: var(--slotted-tone-warning-solid);
|
|
558
552
|
--_on-solid: var(--slotted-tone-warning-on-solid);
|
|
559
553
|
--_surface: var(--slotted-tone-warning-surface);
|
|
@@ -561,7 +555,7 @@
|
|
|
561
555
|
--_soft-ink: var(--slotted-tone-warning-text);
|
|
562
556
|
}
|
|
563
557
|
|
|
564
|
-
[data-ui
|
|
558
|
+
[data-ui-message][data-part-bubble][data-tone='danger'] {
|
|
565
559
|
--_solid: var(--slotted-tone-danger-solid);
|
|
566
560
|
--_on-solid: var(--slotted-tone-danger-on-solid);
|
|
567
561
|
--_surface: var(--slotted-tone-danger-surface);
|
|
@@ -580,7 +574,7 @@
|
|
|
580
574
|
* page's ground, `plain` no box at all — the unframed assistant answer that
|
|
581
575
|
* takes the whole row.
|
|
582
576
|
*/
|
|
583
|
-
[data-ui
|
|
577
|
+
[data-ui-message][data-part-bubble] > [data-part-content] {
|
|
584
578
|
--_ground: var(--_surface);
|
|
585
579
|
--_ink: var(--_soft-ink);
|
|
586
580
|
--_edge: color-mix(in oklab, var(--_surface), var(--slotted-border-subtle));
|
|
@@ -615,25 +609,25 @@
|
|
|
615
609
|
unicode-bidi: plaintext;
|
|
616
610
|
}
|
|
617
611
|
|
|
618
|
-
[data-ui
|
|
612
|
+
[data-ui-message][data-part-bubble][data-variant='solid'] > [data-part-content] {
|
|
619
613
|
--_ground: var(--_solid);
|
|
620
614
|
--_ink: var(--_on-solid);
|
|
621
615
|
--_edge: var(--_solid);
|
|
622
616
|
}
|
|
623
617
|
|
|
624
|
-
[data-ui
|
|
618
|
+
[data-ui-message][data-part-bubble][data-variant='outline'] > [data-part-content] {
|
|
625
619
|
--_ground: var(--slotted-surface);
|
|
626
620
|
--_ink: var(--slotted-text);
|
|
627
621
|
--_edge: var(--_border);
|
|
628
622
|
}
|
|
629
623
|
|
|
630
|
-
[data-ui
|
|
624
|
+
[data-ui-message][data-part-bubble][data-variant='plain'] {
|
|
631
625
|
--_pad-inline: 0px;
|
|
632
626
|
|
|
633
627
|
max-inline-size: 100%;
|
|
634
628
|
}
|
|
635
629
|
|
|
636
|
-
[data-ui
|
|
630
|
+
[data-ui-message][data-part-bubble][data-variant='plain'] > [data-part-content] {
|
|
637
631
|
--_ground: transparent;
|
|
638
632
|
--_ink: var(--slotted-text);
|
|
639
633
|
--_edge: transparent;
|
|
@@ -647,13 +641,11 @@
|
|
|
647
641
|
* The bubble sits on the sender's side, and so does everything it carries:
|
|
648
642
|
* the corners that join a run are the ones that face the avatar.
|
|
649
643
|
*/
|
|
650
|
-
[data-ui
|
|
644
|
+
[data-ui-message][data-part-root][data-align='end'] [data-part-bubble] {
|
|
651
645
|
align-items: flex-end;
|
|
652
646
|
}
|
|
653
647
|
|
|
654
|
-
[data-ui
|
|
655
|
-
[data-part='bubble']
|
|
656
|
-
> [data-part='content'] {
|
|
648
|
+
[data-ui-message][data-part-root][data-align='end'] [data-part-bubble] > [data-part-content] {
|
|
657
649
|
border-start-start-radius: var(--_radius);
|
|
658
650
|
border-start-end-radius: var(--_top-side);
|
|
659
651
|
border-end-start-radius: var(--_radius);
|
|
@@ -668,19 +660,19 @@
|
|
|
668
660
|
* of a group. A run reads as one speaker by its shape, with no position
|
|
669
661
|
* prop on each message (Chatscope asks for `first`, `normal`, `last`).
|
|
670
662
|
*/
|
|
671
|
-
[data-ui
|
|
672
|
-
[data-ui
|
|
673
|
-
> [data-ui
|
|
674
|
-
> [data-part
|
|
675
|
-
> [data-part
|
|
663
|
+
[data-ui-message][data-part-bubble]:has(~ [data-part-bubble]),
|
|
664
|
+
[data-ui-message][data-part-group]
|
|
665
|
+
> [data-ui-message][data-part-root]:not(:last-child)
|
|
666
|
+
> [data-part-body]
|
|
667
|
+
> [data-part-bubble]:not(:has(~ [data-part-bubble])) {
|
|
676
668
|
--_bottom-side: var(--_radius-joined);
|
|
677
669
|
}
|
|
678
670
|
|
|
679
|
-
[data-ui
|
|
680
|
-
[data-ui
|
|
681
|
-
> [data-ui
|
|
682
|
-
> [data-part
|
|
683
|
-
> [data-part
|
|
671
|
+
[data-ui-message][data-part-bubble] ~ [data-part-bubble],
|
|
672
|
+
[data-ui-message][data-part-group]
|
|
673
|
+
> [data-ui-message][data-part-root]:not(:first-child)
|
|
674
|
+
> [data-part-body]
|
|
675
|
+
> [data-part-bubble]:not([data-part-bubble] ~ [data-part-bubble]) {
|
|
684
676
|
--_top-side: var(--_radius-joined);
|
|
685
677
|
}
|
|
686
678
|
|
|
@@ -694,7 +686,7 @@
|
|
|
694
686
|
* `light`, 0.044 under the secondary ground, over the 0.02 step
|
|
695
687
|
* `theme-conformance` asks of a hover, and the press twice that.
|
|
696
688
|
*/
|
|
697
|
-
[data-ui
|
|
689
|
+
[data-ui-message][data-part-bubble] > [data-part-content]:is(button, a) {
|
|
698
690
|
--_ground-hover: color-mix(
|
|
699
691
|
in oklab,
|
|
700
692
|
var(--_ink) var(--slotted-message-state-layer-hover, 6%),
|
|
@@ -713,25 +705,24 @@
|
|
|
713
705
|
border-color var(--slotted-duration-short) var(--slotted-easing-standard, ease);
|
|
714
706
|
}
|
|
715
707
|
|
|
716
|
-
[data-ui
|
|
717
|
-
> [data-part='content']:is(button, a) {
|
|
708
|
+
[data-ui-message][data-part-bubble][data-variant='plain'] > [data-part-content]:is(button, a) {
|
|
718
709
|
padding-block: var(--slotted-space-1, 0.125rem);
|
|
719
710
|
padding-inline: var(--slotted-space-2, 0.25rem);
|
|
720
711
|
margin-inline: calc(var(--slotted-space-2, 0.25rem) * -1);
|
|
721
712
|
border-radius: var(--slotted-radius-sm, 4px);
|
|
722
713
|
}
|
|
723
714
|
|
|
724
|
-
[data-ui
|
|
725
|
-
> [data-part
|
|
715
|
+
[data-ui-message][data-part-bubble]
|
|
716
|
+
> [data-part-content]:is(button, a):hover:not(:disabled):not([data-disabled]) {
|
|
726
717
|
background-color: var(--_ground-hover);
|
|
727
718
|
}
|
|
728
719
|
|
|
729
|
-
[data-ui
|
|
730
|
-
> [data-part
|
|
720
|
+
[data-ui-message][data-part-bubble]
|
|
721
|
+
> [data-part-content]:is(button, a):active:not(:disabled):not([data-disabled]) {
|
|
731
722
|
background-color: var(--_ground-active);
|
|
732
723
|
}
|
|
733
724
|
|
|
734
|
-
[data-ui
|
|
725
|
+
[data-ui-message][data-part-bubble] > [data-part-content]:is(button, a):focus-visible {
|
|
735
726
|
outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color);
|
|
736
727
|
outline-offset: var(--slotted-focus-ring-offset, 2px);
|
|
737
728
|
}
|
|
@@ -752,7 +743,7 @@
|
|
|
752
743
|
* beside a line of text, the hanging meta read as misaligned. Read is the one state that changes the ink: full strength on a
|
|
753
744
|
* solid fill, the accent on a tinted one; the other marks differ by shape.
|
|
754
745
|
*/
|
|
755
|
-
[data-ui
|
|
746
|
+
[data-ui-message][data-part-bubble] [data-part-meta] {
|
|
756
747
|
/*
|
|
757
748
|
* Ninety per cent of the bubble's ink: the lowest share at which the hour
|
|
758
749
|
* keeps 4.5:1 on every fill — 4.50 on the accent in `dark`, 5.74 in
|
|
@@ -778,11 +769,11 @@
|
|
|
778
769
|
translate: 0 1px;
|
|
779
770
|
}
|
|
780
771
|
|
|
781
|
-
[data-ui
|
|
772
|
+
[data-ui-message][data-part-bubble][data-variant='solid'] [data-part-meta] {
|
|
782
773
|
--_read-ink: var(--_on-solid);
|
|
783
774
|
}
|
|
784
775
|
|
|
785
|
-
[data-ui
|
|
776
|
+
[data-ui-message][data-part-bubble] [data-part-meta] [data-part-receipt] {
|
|
786
777
|
display: inline-grid;
|
|
787
778
|
place-items: center;
|
|
788
779
|
}
|
|
@@ -792,17 +783,11 @@
|
|
|
792
783
|
* the two share one box and one centre; two ticks at twelve pixels were two
|
|
793
784
|
* scratches.
|
|
794
785
|
*/
|
|
795
|
-
[data-ui
|
|
796
|
-
[data-part='meta']
|
|
797
|
-
[data-part='receipt']
|
|
798
|
-
> [data-ui='icon'] {
|
|
786
|
+
[data-ui-message][data-part-bubble] [data-part-meta] [data-part-receipt] > [data-ui-icon] {
|
|
799
787
|
--slotted-icon-size: var(--slotted-control-icon-size-sm, 14px);
|
|
800
788
|
}
|
|
801
789
|
|
|
802
|
-
[data-ui
|
|
803
|
-
[data-part='meta']
|
|
804
|
-
[data-part='receipt']
|
|
805
|
-
> span:not([data-ui]) {
|
|
790
|
+
[data-ui-message][data-part-bubble] [data-part-meta] [data-part-receipt] > span:not([data-ui]) {
|
|
806
791
|
position: absolute;
|
|
807
792
|
inline-size: 1px;
|
|
808
793
|
block-size: 1px;
|
|
@@ -811,17 +796,15 @@
|
|
|
811
796
|
white-space: nowrap;
|
|
812
797
|
}
|
|
813
798
|
|
|
814
|
-
[data-ui
|
|
815
|
-
[data-part='meta']
|
|
816
|
-
[data-part='receipt'][data-status='read'] {
|
|
799
|
+
[data-ui-message][data-part-bubble] [data-part-meta] [data-part-receipt][data-status='read'] {
|
|
817
800
|
color: var(--_read-ink);
|
|
818
801
|
}
|
|
819
802
|
|
|
820
803
|
/** A clock that breathes while the message is on its way. */
|
|
821
|
-
[data-ui
|
|
822
|
-
[data-part
|
|
823
|
-
[data-part
|
|
824
|
-
> [data-ui
|
|
804
|
+
[data-ui-message][data-part-bubble]
|
|
805
|
+
[data-part-meta]
|
|
806
|
+
[data-part-receipt][data-status='sending']
|
|
807
|
+
> [data-ui-icon] {
|
|
825
808
|
animation: slotted-message-pending var(--slotted-duration-loop-slow)
|
|
826
809
|
var(--slotted-easing-standard, ease) infinite alternate;
|
|
827
810
|
}
|
|
@@ -837,7 +820,7 @@
|
|
|
837
820
|
}
|
|
838
821
|
|
|
839
822
|
/** The meta of an unframed reply has no surface to ride in; it is the footer's. */
|
|
840
|
-
[data-ui
|
|
823
|
+
[data-ui-message][data-part-bubble][data-variant='plain'] [data-part-meta] {
|
|
841
824
|
display: none;
|
|
842
825
|
}
|
|
843
826
|
|
|
@@ -853,8 +836,7 @@
|
|
|
853
836
|
* text jump twice when a reply streaming above it reflows the column. The
|
|
854
837
|
* chevron turning is the motion that answers the press.
|
|
855
838
|
*/
|
|
856
|
-
[data-ui
|
|
857
|
-
> [data-part='content'] {
|
|
839
|
+
[data-ui-message][data-part-bubble][data-clamped]:not([data-revealed]) > [data-part-content] {
|
|
858
840
|
display: -webkit-box;
|
|
859
841
|
-webkit-box-orient: vertical;
|
|
860
842
|
-webkit-line-clamp: var(--slotted-message-max-lines, 6);
|
|
@@ -868,7 +850,7 @@
|
|
|
868
850
|
overflow-clip-margin: content-box;
|
|
869
851
|
}
|
|
870
852
|
|
|
871
|
-
[data-ui
|
|
853
|
+
[data-ui-message][data-part-bubble] > [data-part-more] {
|
|
872
854
|
display: inline-flex;
|
|
873
855
|
align-items: center;
|
|
874
856
|
gap: var(--slotted-space-1, 0.125rem);
|
|
@@ -886,25 +868,25 @@
|
|
|
886
868
|
transition: color var(--slotted-duration-short) var(--slotted-easing-standard, ease);
|
|
887
869
|
}
|
|
888
870
|
|
|
889
|
-
[data-ui
|
|
871
|
+
[data-ui-message][data-part-bubble] > [data-part-more] > [data-ui-icon] {
|
|
890
872
|
--slotted-icon-size: var(--slotted-control-icon-size-sm, 14px);
|
|
891
873
|
|
|
892
874
|
transition: rotate var(--slotted-duration-medium) var(--slotted-easing-standard, ease);
|
|
893
875
|
}
|
|
894
876
|
|
|
895
|
-
[data-ui
|
|
877
|
+
[data-ui-message][data-part-bubble][data-revealed] > [data-part-more] > [data-ui-icon] {
|
|
896
878
|
rotate: 180deg;
|
|
897
879
|
}
|
|
898
880
|
|
|
899
|
-
[data-ui
|
|
881
|
+
[data-ui-message][data-part-bubble] > [data-part-more]:hover:not(:disabled) {
|
|
900
882
|
color: var(--slotted-text);
|
|
901
883
|
}
|
|
902
884
|
|
|
903
|
-
[data-ui
|
|
885
|
+
[data-ui-message][data-part-bubble] > [data-part-more]:active:not(:disabled) {
|
|
904
886
|
color: var(--slotted-tone-accent-text);
|
|
905
887
|
}
|
|
906
888
|
|
|
907
|
-
[data-ui
|
|
889
|
+
[data-ui-message][data-part-bubble] > [data-part-more]:focus-visible {
|
|
908
890
|
outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color);
|
|
909
891
|
outline-offset: calc(var(--slotted-focus-ring-offset, 2px) * -1);
|
|
910
892
|
}
|
|
@@ -917,7 +899,7 @@
|
|
|
917
899
|
* the accent fill included, where a rail in the ink would be the only
|
|
918
900
|
* saturated stroke in the thread.
|
|
919
901
|
*/
|
|
920
|
-
[data-ui
|
|
902
|
+
[data-ui-message][data-part-bubble] [data-part-quote] {
|
|
921
903
|
display: block;
|
|
922
904
|
box-sizing: border-box;
|
|
923
905
|
inline-size: 100%;
|
|
@@ -940,25 +922,25 @@
|
|
|
940
922
|
-webkit-line-clamp: 3;
|
|
941
923
|
}
|
|
942
924
|
|
|
943
|
-
[data-ui
|
|
925
|
+
[data-ui-message][data-part-bubble] [data-part-quote-author] {
|
|
944
926
|
display: block;
|
|
945
927
|
font-weight: var(--slotted-font-weight-semibold, 600);
|
|
946
928
|
}
|
|
947
929
|
|
|
948
|
-
[data-ui
|
|
930
|
+
[data-ui-message][data-part-bubble] button[data-part-quote] {
|
|
949
931
|
cursor: pointer;
|
|
950
932
|
transition: background-color var(--slotted-duration-short) var(--slotted-easing-standard, ease);
|
|
951
933
|
}
|
|
952
934
|
|
|
953
|
-
[data-ui
|
|
935
|
+
[data-ui-message][data-part-bubble] button[data-part-quote]:hover:not(:disabled) {
|
|
954
936
|
background-color: color-mix(in oklab, currentColor 13%, transparent);
|
|
955
937
|
}
|
|
956
938
|
|
|
957
|
-
[data-ui
|
|
939
|
+
[data-ui-message][data-part-bubble] button[data-part-quote]:active:not(:disabled) {
|
|
958
940
|
background-color: color-mix(in oklab, currentColor 18%, transparent);
|
|
959
941
|
}
|
|
960
942
|
|
|
961
|
-
[data-ui
|
|
943
|
+
[data-ui-message][data-part-bubble] button[data-part-quote]:focus-visible {
|
|
962
944
|
outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color);
|
|
963
945
|
outline-offset: var(--slotted-focus-ring-offset, 2px);
|
|
964
946
|
}
|
|
@@ -986,11 +968,11 @@
|
|
|
986
968
|
* stands lit and the typing dots stand at three strengths, so the state is
|
|
987
969
|
* still drawn.
|
|
988
970
|
*/
|
|
989
|
-
[data-ui
|
|
971
|
+
[data-ui-message][data-part-bubble] [data-part-stream] {
|
|
990
972
|
white-space: pre-wrap;
|
|
991
973
|
}
|
|
992
974
|
|
|
993
|
-
[data-ui
|
|
975
|
+
[data-ui-message][data-part-bubble] [data-part-stream-chunk] {
|
|
994
976
|
animation: slotted-message-word var(--slotted-duration-long) var(--slotted-easing-standard) both;
|
|
995
977
|
}
|
|
996
978
|
|
|
@@ -1006,7 +988,7 @@
|
|
|
1006
988
|
}
|
|
1007
989
|
}
|
|
1008
990
|
|
|
1009
|
-
[data-ui
|
|
991
|
+
[data-ui-message][data-part-bubble] [data-part-caret] {
|
|
1010
992
|
--_dot: round(nearest, 0.6em, 2px);
|
|
1011
993
|
|
|
1012
994
|
display: inline-block;
|
|
@@ -1026,9 +1008,9 @@
|
|
|
1026
1008
|
}
|
|
1027
1009
|
|
|
1028
1010
|
/* `filter`, not `opacity`: the breath animates opacity, and an animation outranks the rule. */
|
|
1029
|
-
[data-ui
|
|
1030
|
-
[data-part
|
|
1031
|
-
+ [data-part
|
|
1011
|
+
[data-ui-message][data-part-bubble]
|
|
1012
|
+
[data-part-stream]:has(> [data-part-stream-chunk])
|
|
1013
|
+
+ [data-part-caret] {
|
|
1032
1014
|
filter: opacity(0);
|
|
1033
1015
|
transition: filter var(--slotted-duration-short) var(--slotted-easing-exit);
|
|
1034
1016
|
}
|
|
@@ -1059,7 +1041,7 @@
|
|
|
1059
1041
|
* before, in the bubble of the person writing. The wave travels half a dot:
|
|
1060
1042
|
* enough to read as a voice, not so much that the bubble seems to bounce.
|
|
1061
1043
|
*/
|
|
1062
|
-
[data-ui
|
|
1044
|
+
[data-ui-message][data-part-bubble] [data-part-typing] {
|
|
1063
1045
|
--_dot: round(calc(var(--_leading) / 3), 1px);
|
|
1064
1046
|
|
|
1065
1047
|
display: inline-flex;
|
|
@@ -1077,7 +1059,7 @@
|
|
|
1077
1059
|
* behind. The circles are the surface's own fill and edge, so they answer
|
|
1078
1060
|
* every painting and every scheme with the bubble.
|
|
1079
1061
|
*/
|
|
1080
|
-
[data-ui
|
|
1062
|
+
[data-ui-message][data-part-bubble] > [data-part-content]:has(> [data-part-typing]) {
|
|
1081
1063
|
position: relative;
|
|
1082
1064
|
padding-inline: calc(var(--_pad-inline) + var(--slotted-space-1, 0.125rem));
|
|
1083
1065
|
transition:
|
|
@@ -1090,10 +1072,8 @@
|
|
|
1090
1072
|
}
|
|
1091
1073
|
}
|
|
1092
1074
|
|
|
1093
|
-
[data-ui
|
|
1094
|
-
|
|
1095
|
-
[data-ui='message'][data-part='bubble']
|
|
1096
|
-
> [data-part='content']:has(> [data-part='typing'])::after {
|
|
1075
|
+
[data-ui-message][data-part-bubble] > [data-part-content]:has(> [data-part-typing])::before,
|
|
1076
|
+
[data-ui-message][data-part-bubble] > [data-part-content]:has(> [data-part-typing])::after {
|
|
1097
1077
|
content: '';
|
|
1098
1078
|
position: absolute;
|
|
1099
1079
|
box-sizing: border-box;
|
|
@@ -1104,16 +1084,14 @@
|
|
|
1104
1084
|
var(--slotted-easing-standard, ease) infinite alternate;
|
|
1105
1085
|
}
|
|
1106
1086
|
|
|
1107
|
-
[data-ui
|
|
1108
|
-
> [data-part='content']:has(> [data-part='typing'])::before {
|
|
1087
|
+
[data-ui-message][data-part-bubble] > [data-part-content]:has(> [data-part-typing])::before {
|
|
1109
1088
|
inset-block-end: calc(var(--slotted-space-1, 0.125rem) * -1);
|
|
1110
1089
|
inset-inline-start: calc(var(--slotted-space-1, 0.125rem) * -1);
|
|
1111
1090
|
inline-size: var(--slotted-space-4, 0.5rem);
|
|
1112
1091
|
block-size: var(--slotted-space-4, 0.5rem);
|
|
1113
1092
|
}
|
|
1114
1093
|
|
|
1115
|
-
[data-ui
|
|
1116
|
-
> [data-part='content']:has(> [data-part='typing'])::after {
|
|
1094
|
+
[data-ui-message][data-part-bubble] > [data-part-content]:has(> [data-part-typing])::after {
|
|
1117
1095
|
inset-block-end: calc(var(--slotted-space-3, 0.375rem) * -1);
|
|
1118
1096
|
inset-inline-start: calc(var(--slotted-space-3, 0.375rem) * -1);
|
|
1119
1097
|
inline-size: var(--slotted-space-2, 0.25rem);
|
|
@@ -1122,9 +1100,9 @@
|
|
|
1122
1100
|
}
|
|
1123
1101
|
|
|
1124
1102
|
/** The line under a writing bubble clears the trail. */
|
|
1125
|
-
[data-ui
|
|
1126
|
-
> [data-part
|
|
1127
|
-
> [data-part
|
|
1103
|
+
[data-ui-message][data-part-root]
|
|
1104
|
+
> [data-part-body]:has(> [data-part-bubble] [data-part-typing])
|
|
1105
|
+
> [data-part-footer] {
|
|
1128
1106
|
margin-block-start: var(--slotted-space-2, 0.25rem);
|
|
1129
1107
|
}
|
|
1130
1108
|
|
|
@@ -1138,7 +1116,7 @@
|
|
|
1138
1116
|
}
|
|
1139
1117
|
}
|
|
1140
1118
|
|
|
1141
|
-
[data-ui
|
|
1119
|
+
[data-ui-message][data-part-bubble] [data-part-typing] > span {
|
|
1142
1120
|
inline-size: var(--_dot);
|
|
1143
1121
|
block-size: var(--_dot);
|
|
1144
1122
|
border-radius: var(--slotted-radius-full, 9999px);
|
|
@@ -1148,11 +1126,11 @@
|
|
|
1148
1126
|
var(--slotted-easing-standard, ease) infinite;
|
|
1149
1127
|
}
|
|
1150
1128
|
|
|
1151
|
-
[data-ui
|
|
1129
|
+
[data-ui-message][data-part-bubble] [data-part-typing] > span:nth-child(2) {
|
|
1152
1130
|
animation-delay: calc(var(--slotted-duration-loop) / 6);
|
|
1153
1131
|
}
|
|
1154
1132
|
|
|
1155
|
-
[data-ui
|
|
1133
|
+
[data-ui-message][data-part-bubble] [data-part-typing] > span:nth-child(3) {
|
|
1156
1134
|
animation-delay: calc(var(--slotted-duration-loop) / 3);
|
|
1157
1135
|
}
|
|
1158
1136
|
|
|
@@ -1178,7 +1156,7 @@
|
|
|
1178
1156
|
* line. It is the way to send it again, and its arrow turns a little under
|
|
1179
1157
|
* the pointer toward the way it will go.
|
|
1180
1158
|
*/
|
|
1181
|
-
[data-ui
|
|
1159
|
+
[data-ui-message][data-part-bubble] > [data-part-retry] {
|
|
1182
1160
|
--_size: max(var(--slotted-target-min, 24px), var(--slotted-control-inner-size-md, 24px));
|
|
1183
1161
|
--_ground: var(--slotted-tone-danger-solid);
|
|
1184
1162
|
|
|
@@ -1206,13 +1184,11 @@
|
|
|
1206
1184
|
transition: background-color var(--slotted-duration-short) var(--slotted-easing-standard, ease);
|
|
1207
1185
|
}
|
|
1208
1186
|
|
|
1209
|
-
[data-ui
|
|
1210
|
-
[data-part='bubble']
|
|
1211
|
-
> [data-part='retry'] {
|
|
1187
|
+
[data-ui-message][data-part-root][data-align='end'] [data-part-bubble] > [data-part-retry] {
|
|
1212
1188
|
inset-inline: auto calc(100% + var(--slotted-space-4, 0.5rem));
|
|
1213
1189
|
}
|
|
1214
1190
|
|
|
1215
|
-
[data-ui
|
|
1191
|
+
[data-ui-message][data-part-bubble] > [data-part-retry] > [data-ui-icon] {
|
|
1216
1192
|
--slotted-icon-size: var(--slotted-control-icon-size-sm, 14px);
|
|
1217
1193
|
|
|
1218
1194
|
transition: rotate var(--slotted-duration-medium) var(--slotted-easing-emphasized, ease);
|
|
@@ -1223,8 +1199,8 @@
|
|
|
1223
1199
|
* the 0.02 `theme-conformance` asks; the control's ink laid over the fill at
|
|
1224
1200
|
* fourteen per cent answers visibly in every scheme.
|
|
1225
1201
|
*/
|
|
1226
|
-
[data-ui
|
|
1227
|
-
> [data-part
|
|
1202
|
+
[data-ui-message][data-part-bubble]
|
|
1203
|
+
> [data-part-retry]:hover:not(:disabled):not([data-disabled]) {
|
|
1228
1204
|
background-color: color-mix(
|
|
1229
1205
|
in oklab,
|
|
1230
1206
|
var(--slotted-tone-danger-on-solid) var(--slotted-message-retry-state-layer, 14%),
|
|
@@ -1232,48 +1208,46 @@
|
|
|
1232
1208
|
);
|
|
1233
1209
|
}
|
|
1234
1210
|
|
|
1235
|
-
[data-ui
|
|
1236
|
-
> [data-part
|
|
1237
|
-
> [data-ui
|
|
1211
|
+
[data-ui-message][data-part-bubble]
|
|
1212
|
+
> [data-part-retry]:hover:not(:disabled):not([data-disabled])
|
|
1213
|
+
> [data-ui-icon] {
|
|
1238
1214
|
rotate: -45deg;
|
|
1239
1215
|
}
|
|
1240
1216
|
|
|
1241
|
-
[data-ui
|
|
1242
|
-
> [data-part
|
|
1217
|
+
[data-ui-message][data-part-bubble]
|
|
1218
|
+
> [data-part-retry]:active:not(:disabled):not([data-disabled]) {
|
|
1243
1219
|
background-color: var(--slotted-tone-danger-solid-active);
|
|
1244
1220
|
}
|
|
1245
1221
|
|
|
1246
|
-
[data-ui
|
|
1222
|
+
[data-ui-message][data-part-bubble] > [data-part-retry]:focus-visible {
|
|
1247
1223
|
outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color);
|
|
1248
1224
|
outline-offset: var(--slotted-focus-ring-offset, 2px);
|
|
1249
1225
|
}
|
|
1250
1226
|
|
|
1251
1227
|
@media (prefers-reduced-motion: reduce) {
|
|
1252
|
-
[data-ui
|
|
1253
|
-
[data-ui
|
|
1254
|
-
[data-ui
|
|
1255
|
-
[data-ui
|
|
1256
|
-
|
|
1257
|
-
[data-ui
|
|
1258
|
-
|
|
1259
|
-
|
|
1260
|
-
[data-
|
|
1261
|
-
[data-part='receipt'][data-status='sending']
|
|
1262
|
-
> [data-ui='icon'] {
|
|
1228
|
+
[data-ui-message][data-part-bubble] [data-part-caret],
|
|
1229
|
+
[data-ui-message][data-part-bubble] [data-part-stream-chunk],
|
|
1230
|
+
[data-ui-message][data-part-bubble] [data-part-typing] > span,
|
|
1231
|
+
[data-ui-message][data-part-bubble] > [data-part-content]:has(> [data-part-typing])::before,
|
|
1232
|
+
[data-ui-message][data-part-bubble] > [data-part-content]:has(> [data-part-typing])::after,
|
|
1233
|
+
[data-ui-message][data-part-bubble]
|
|
1234
|
+
[data-part-meta]
|
|
1235
|
+
[data-part-receipt][data-status='sending']
|
|
1236
|
+
> [data-ui-icon] {
|
|
1263
1237
|
animation: none;
|
|
1264
1238
|
}
|
|
1265
1239
|
|
|
1266
|
-
[data-ui
|
|
1240
|
+
[data-ui-message][data-part-root] [data-part-activity-step][data-current] > :last-child {
|
|
1267
1241
|
animation: none;
|
|
1268
1242
|
background-image: none;
|
|
1269
1243
|
color: inherit;
|
|
1270
1244
|
}
|
|
1271
1245
|
|
|
1272
|
-
[data-ui
|
|
1246
|
+
[data-ui-message][data-part-bubble] [data-part-typing] > span:nth-child(2) {
|
|
1273
1247
|
opacity: 0.55;
|
|
1274
1248
|
}
|
|
1275
1249
|
|
|
1276
|
-
[data-ui
|
|
1250
|
+
[data-ui-message][data-part-bubble] [data-part-typing] > span:nth-child(3) {
|
|
1277
1251
|
opacity: 0.8;
|
|
1278
1252
|
}
|
|
1279
1253
|
}
|
|
@@ -1288,11 +1262,11 @@
|
|
|
1288
1262
|
* it (`c-bubble-4`). The pill draws its own edge and lift rather than a
|
|
1289
1263
|
* ring in the colour of a card it assumes it is on.
|
|
1290
1264
|
*/
|
|
1291
|
-
[data-ui
|
|
1265
|
+
[data-ui-message][data-part-bubble]:has(> [data-part-reactions]) {
|
|
1292
1266
|
padding-block-end: calc(var(--_reactions-size) - var(--_pad-block, 8px) / 2);
|
|
1293
1267
|
}
|
|
1294
1268
|
|
|
1295
|
-
[data-ui
|
|
1269
|
+
[data-ui-message][data-part-bubble] > [data-part-reactions] {
|
|
1296
1270
|
display: inline-flex;
|
|
1297
1271
|
align-items: center;
|
|
1298
1272
|
gap: var(--slotted-space-1, 0.125rem);
|
|
@@ -1306,9 +1280,7 @@
|
|
|
1306
1280
|
box-shadow: var(--slotted-shadow-xs);
|
|
1307
1281
|
}
|
|
1308
1282
|
|
|
1309
|
-
[data-ui
|
|
1310
|
-
[data-part='bubble']
|
|
1311
|
-
> [data-part='reactions'] {
|
|
1283
|
+
[data-ui-message][data-part-root][data-align='end'] [data-part-bubble] > [data-part-reactions] {
|
|
1312
1284
|
inset-inline: var(--_pad-inline, 12px) auto;
|
|
1313
1285
|
}
|
|
1314
1286
|
|
|
@@ -1316,11 +1288,11 @@
|
|
|
1316
1288
|
* In a thread there is no surface to straddle: the reactions are a row in
|
|
1317
1289
|
* the flow under the words, the way Slack and GitHub set them.
|
|
1318
1290
|
*/
|
|
1319
|
-
[data-ui
|
|
1291
|
+
[data-ui-message][data-part-bubble][data-variant='plain']:has(> [data-part-reactions]) {
|
|
1320
1292
|
padding-block-end: 0;
|
|
1321
1293
|
}
|
|
1322
1294
|
|
|
1323
|
-
[data-ui
|
|
1295
|
+
[data-ui-message][data-part-bubble][data-variant='plain'] > [data-part-reactions] {
|
|
1324
1296
|
position: static;
|
|
1325
1297
|
padding: 0;
|
|
1326
1298
|
border: 0;
|
|
@@ -1329,7 +1301,7 @@
|
|
|
1329
1301
|
translate: none;
|
|
1330
1302
|
}
|
|
1331
1303
|
|
|
1332
|
-
[data-ui
|
|
1304
|
+
[data-ui-message][data-part-bubble] [data-part-reaction] {
|
|
1333
1305
|
display: inline-flex;
|
|
1334
1306
|
align-items: center;
|
|
1335
1307
|
gap: var(--slotted-space-1, 0.125rem);
|
|
@@ -1354,13 +1326,13 @@
|
|
|
1354
1326
|
color var(--slotted-duration-short) var(--slotted-easing-standard, ease);
|
|
1355
1327
|
}
|
|
1356
1328
|
|
|
1357
|
-
[data-ui
|
|
1329
|
+
[data-ui-message][data-part-bubble][data-variant='plain'] [data-part-reaction] {
|
|
1358
1330
|
--_reaction-ground: var(--slotted-surface);
|
|
1359
1331
|
|
|
1360
1332
|
border-color: var(--slotted-border-subtle);
|
|
1361
1333
|
}
|
|
1362
1334
|
|
|
1363
|
-
[data-ui
|
|
1335
|
+
[data-ui-message][data-part-bubble] [data-part-reaction-count] {
|
|
1364
1336
|
color: var(--slotted-text-muted);
|
|
1365
1337
|
font-weight: var(--slotted-font-weight-medium, 500);
|
|
1366
1338
|
font-variant-numeric: tabular-nums;
|
|
@@ -1372,8 +1344,8 @@
|
|
|
1372
1344
|
* ink laid over it at six and twelve per cent, so a pressed reaction answers
|
|
1373
1345
|
* a hover and a press as clearly as a bare one and the two never match.
|
|
1374
1346
|
*/
|
|
1375
|
-
[data-ui
|
|
1376
|
-
[data-part
|
|
1347
|
+
[data-ui-message][data-part-bubble]
|
|
1348
|
+
[data-part-reaction]:hover:not(:disabled):not([data-disabled]) {
|
|
1377
1349
|
background-color: color-mix(
|
|
1378
1350
|
in oklab,
|
|
1379
1351
|
var(--slotted-text) var(--slotted-message-state-layer-hover, 6%),
|
|
@@ -1381,8 +1353,8 @@
|
|
|
1381
1353
|
);
|
|
1382
1354
|
}
|
|
1383
1355
|
|
|
1384
|
-
[data-ui
|
|
1385
|
-
[data-part
|
|
1356
|
+
[data-ui-message][data-part-bubble]
|
|
1357
|
+
[data-part-reaction]:active:not(:disabled):not([data-disabled]) {
|
|
1386
1358
|
background-color: color-mix(
|
|
1387
1359
|
in oklab,
|
|
1388
1360
|
var(--slotted-text) var(--slotted-message-state-layer-active, 12%),
|
|
@@ -1395,24 +1367,24 @@
|
|
|
1395
1367
|
* edge, and the count in the accent's ink. The pair carries the ratio the
|
|
1396
1368
|
* ground alone cannot (`docs/token-foundation.md` › Semantic colour).
|
|
1397
1369
|
*/
|
|
1398
|
-
[data-ui
|
|
1370
|
+
[data-ui-message][data-part-bubble] [data-part-reaction][data-pressed] {
|
|
1399
1371
|
--_reaction-ground: var(--slotted-tone-accent-surface);
|
|
1400
1372
|
|
|
1401
1373
|
border-color: var(--slotted-tone-accent-border);
|
|
1402
1374
|
}
|
|
1403
1375
|
|
|
1404
|
-
[data-ui
|
|
1405
|
-
[data-part
|
|
1406
|
-
> [data-part
|
|
1376
|
+
[data-ui-message][data-part-bubble]
|
|
1377
|
+
[data-part-reaction][data-pressed]
|
|
1378
|
+
> [data-part-reaction-count] {
|
|
1407
1379
|
color: var(--slotted-tone-accent-text);
|
|
1408
1380
|
}
|
|
1409
1381
|
|
|
1410
|
-
[data-ui
|
|
1382
|
+
[data-ui-message][data-part-bubble] [data-part-reaction]:is(:disabled, [data-disabled]) {
|
|
1411
1383
|
color: var(--slotted-disabled-foreground);
|
|
1412
1384
|
cursor: default;
|
|
1413
1385
|
}
|
|
1414
1386
|
|
|
1415
|
-
[data-ui
|
|
1387
|
+
[data-ui-message][data-part-bubble] [data-part-reaction]:focus-visible {
|
|
1416
1388
|
outline: var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color);
|
|
1417
1389
|
outline-offset: var(--slotted-focus-ring-offset, 2px);
|
|
1418
1390
|
}
|
|
@@ -1425,28 +1397,28 @@
|
|
|
1425
1397
|
* reader chose.
|
|
1426
1398
|
*/
|
|
1427
1399
|
@media (forced-colors: active) {
|
|
1428
|
-
[data-ui
|
|
1400
|
+
[data-ui-message][data-part-bubble] > [data-part-content] {
|
|
1429
1401
|
border-color: CanvasText;
|
|
1430
1402
|
}
|
|
1431
1403
|
|
|
1432
1404
|
/* A background is the system's to repaint; the dot is ink, so it keeps the text's colour. */
|
|
1433
|
-
[data-ui
|
|
1405
|
+
[data-ui-message][data-part-bubble] [data-part-caret] {
|
|
1434
1406
|
forced-color-adjust: none;
|
|
1435
1407
|
background-color: CanvasText;
|
|
1436
1408
|
}
|
|
1437
1409
|
|
|
1438
|
-
[data-ui
|
|
1410
|
+
[data-ui-message][data-part-bubble][data-variant='plain'] > [data-part-content] {
|
|
1439
1411
|
border-color: transparent;
|
|
1440
1412
|
}
|
|
1441
1413
|
|
|
1442
|
-
[data-ui
|
|
1414
|
+
[data-ui-message][data-part-bubble] [data-part-reaction][data-pressed] {
|
|
1443
1415
|
border-color: Highlight;
|
|
1444
1416
|
forced-color-adjust: none;
|
|
1445
1417
|
background-color: Highlight;
|
|
1446
1418
|
color: HighlightText;
|
|
1447
1419
|
}
|
|
1448
1420
|
|
|
1449
|
-
[data-ui
|
|
1421
|
+
[data-ui-message][data-part-bubble] [data-part-quote] {
|
|
1450
1422
|
border: var(--slotted-border-width-thin, 1px) solid CanvasText;
|
|
1451
1423
|
}
|
|
1452
1424
|
}
|