chrome-devtools-frontend 1.0.1559913 → 1.0.1561528

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.
Files changed (130) hide show
  1. package/front_end/core/host/InspectorFrontendHostStub.ts +0 -3
  2. package/front_end/core/platform/ArrayUtilities.ts +13 -0
  3. package/front_end/core/root/Runtime.ts +0 -5
  4. package/front_end/core/sdk/DOMModel.ts +8 -0
  5. package/front_end/core/sdk/NetworkManager.ts +4 -0
  6. package/front_end/core/sdk/NetworkRequest.ts +9 -0
  7. package/front_end/core/sdk/OverlayModel.ts +20 -9
  8. package/front_end/entrypoints/main/MainImpl.ts +2 -1
  9. package/front_end/generated/InspectorBackendCommands.ts +4 -2
  10. package/front_end/generated/protocol-mapping.d.ts +7 -0
  11. package/front_end/generated/protocol-proxy-api.d.ts +5 -0
  12. package/front_end/generated/protocol.ts +24 -0
  13. package/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.snapshot.txt +23 -22
  14. package/front_end/models/badges/UserBadges.ts +48 -16
  15. package/front_end/models/greendev/Prototypes.ts +6 -1
  16. package/front_end/models/trace/extras/TraceTree.ts +1 -1
  17. package/front_end/models/trace/handlers/PageLoadMetricsHandler.ts +8 -3
  18. package/front_end/panels/ai_assistance/AiAssistancePanel.ts +11 -142
  19. package/front_end/panels/ai_assistance/PatchWidget.ts +90 -72
  20. package/front_end/panels/ai_assistance/ai_assistance.ts +1 -0
  21. package/front_end/panels/ai_assistance/components/ChatInput.ts +701 -0
  22. package/front_end/panels/ai_assistance/components/ChatView.ts +71 -1268
  23. package/front_end/panels/ai_assistance/components/UserActionRow.ts +514 -31
  24. package/front_end/panels/ai_assistance/components/chatInput.css +387 -0
  25. package/front_end/panels/ai_assistance/components/chatView.css +38 -599
  26. package/front_end/panels/ai_assistance/components/userActionRow.css +230 -0
  27. package/front_end/panels/autofill/AutofillView.ts +2 -2
  28. package/front_end/panels/changes/ChangesView.ts +15 -1
  29. package/front_end/panels/changes/changesView.css +6 -0
  30. package/front_end/panels/common/BadgeNotification.ts +44 -58
  31. package/front_end/panels/common/CopyChangesToPrompt.ts +233 -0
  32. package/front_end/panels/common/common.ts +1 -0
  33. package/front_end/panels/elements/ElementsTreeElement.ts +183 -359
  34. package/front_end/panels/elements/ElementsTreeOutline.ts +0 -6
  35. package/front_end/panels/elements/ShortcutTreeElement.ts +57 -50
  36. package/front_end/panels/elements/StylePropertiesSection.ts +1 -3
  37. package/front_end/panels/elements/components/AdornerManager.ts +5 -149
  38. package/front_end/panels/issues/HiddenIssuesRow.ts +1 -2
  39. package/front_end/panels/issues/IssueKindView.ts +2 -4
  40. package/front_end/panels/issues/IssueView.ts +2 -4
  41. package/front_end/panels/network/NetworkDataGridNode.ts +65 -1
  42. package/front_end/panels/network/NetworkLogView.ts +2 -4
  43. package/front_end/panels/network/NetworkLogViewColumns.ts +9 -0
  44. package/front_end/panels/screencast/ScreencastApp.ts +1 -0
  45. package/front_end/panels/settings/SettingsScreen.ts +3 -2
  46. package/front_end/panels/timeline/CompatibilityTracksAppender.ts +14 -1
  47. package/front_end/panels/timeline/ThirdPartyTreeView.ts +1 -4
  48. package/front_end/panels/timeline/TimelineController.ts +185 -3
  49. package/front_end/panels/timeline/TimelineFlameChartDataProvider.ts +52 -25
  50. package/front_end/panels/timeline/TimelineFlameChartView.ts +1 -0
  51. package/front_end/panels/timeline/TimelinePanel.ts +17 -104
  52. package/front_end/panels/timeline/TimelineTreeView.ts +1 -0
  53. package/front_end/panels/timeline/components/insights/BaseInsightComponent.ts +2 -2
  54. package/front_end/panels/timeline/components/insights/Table.ts +3 -3
  55. package/front_end/panels/whats_new/ReleaseNoteText.ts +15 -9
  56. package/front_end/panels/whats_new/resources/WNDT.md +6 -6
  57. package/front_end/third_party/chromium/README.chromium +1 -1
  58. package/front_end/third_party/codemirror.next/rebuild.sh +1 -1
  59. package/front_end/third_party/lit/rebuild.sh +1 -1
  60. package/front_end/third_party/puppeteer/README.chromium +2 -2
  61. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Page.d.ts +2 -3
  62. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Page.d.ts.map +1 -1
  63. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Page.js.map +1 -1
  64. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/HTTPRequest.d.ts.map +1 -1
  65. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/HTTPRequest.js +9 -0
  66. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/HTTPRequest.js.map +1 -1
  67. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/HTTPResponse.d.ts +3 -0
  68. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/HTTPResponse.d.ts.map +1 -1
  69. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/HTTPResponse.js +9 -0
  70. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/HTTPResponse.js.map +1 -1
  71. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/Request.d.ts +3 -0
  72. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/Request.d.ts.map +1 -1
  73. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/Request.js +10 -0
  74. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/Request.js.map +1 -1
  75. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Browser.d.ts.map +1 -1
  76. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Browser.js +8 -4
  77. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Browser.js.map +1 -1
  78. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/generated/injected.d.ts +1 -1
  79. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/generated/injected.d.ts.map +1 -1
  80. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/generated/injected.js +1 -1
  81. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/generated/injected.js.map +1 -1
  82. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/injected/injected.d.ts +1 -1
  83. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.d.ts +3 -3
  84. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.js +3 -3
  85. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.js.map +1 -1
  86. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/Mutex.d.ts +2 -2
  87. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/version.d.ts +1 -1
  88. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/version.js +1 -1
  89. package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.d.ts +10 -1
  90. package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.js +13 -7
  91. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Page.d.ts +2 -3
  92. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Page.d.ts.map +1 -1
  93. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Page.js.map +1 -1
  94. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/HTTPRequest.d.ts.map +1 -1
  95. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/HTTPRequest.js +9 -0
  96. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/HTTPRequest.js.map +1 -1
  97. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/HTTPResponse.d.ts +3 -0
  98. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/HTTPResponse.d.ts.map +1 -1
  99. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/HTTPResponse.js +9 -0
  100. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/HTTPResponse.js.map +1 -1
  101. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/Request.d.ts +3 -0
  102. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/Request.d.ts.map +1 -1
  103. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/Request.js +10 -0
  104. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/Request.js.map +1 -1
  105. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Browser.d.ts.map +1 -1
  106. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Browser.js +8 -4
  107. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Browser.js.map +1 -1
  108. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/generated/injected.d.ts +1 -1
  109. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/generated/injected.d.ts.map +1 -1
  110. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/generated/injected.js +1 -1
  111. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/generated/injected.js.map +1 -1
  112. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.d.ts +3 -3
  113. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.js +3 -3
  114. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.js.map +1 -1
  115. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/version.d.ts +1 -1
  116. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/version.js +1 -1
  117. package/front_end/third_party/puppeteer/package/lib/types.d.ts +10 -1
  118. package/front_end/third_party/puppeteer/package/package.json +3 -3
  119. package/front_end/third_party/puppeteer/package/src/api/Page.ts +2 -3
  120. package/front_end/third_party/puppeteer/package/src/bidi/HTTPRequest.ts +13 -0
  121. package/front_end/third_party/puppeteer/package/src/bidi/HTTPResponse.ts +10 -0
  122. package/front_end/third_party/puppeteer/package/src/bidi/core/Request.ts +15 -0
  123. package/front_end/third_party/puppeteer/package/src/cdp/Browser.ts +9 -4
  124. package/front_end/third_party/puppeteer/package/src/generated/injected.ts +1 -1
  125. package/front_end/third_party/puppeteer/package/src/revisions.ts +3 -3
  126. package/front_end/third_party/puppeteer/package/src/util/version.ts +1 -1
  127. package/front_end/ui/components/adorners/Adorner.ts +8 -68
  128. package/front_end/ui/legacy/TabbedPane.ts +1 -1
  129. package/front_end/ui/visual_logging/KnownContextValues.ts +3 -0
  130. package/package.json +2 -1
@@ -0,0 +1,387 @@
1
+ /*
2
+ * Copyright 2025 The Chromium Authors
3
+ * Use of this source code is governed by a BSD-style license that can be
4
+ * found in the LICENSE file.
5
+ */
6
+
7
+ * {
8
+ box-sizing: border-box;
9
+ margin: 0;
10
+ padding: 0;
11
+ }
12
+
13
+ :host {
14
+ display: flex;
15
+ flex-direction: column;
16
+ }
17
+
18
+ .input-form {
19
+ display: flex;
20
+ flex-direction: column;
21
+ padding: 0 var(--sys-size-5) var(--sys-size-5) var(--sys-size-5);
22
+ max-width: var(--sys-size-36);
23
+ background-color: var(--sys-color-cdt-base-container);
24
+ width: 100%;
25
+
26
+ }
27
+
28
+ .chat-readonly-container {
29
+ display: flex;
30
+ width: 100%;
31
+ max-width: var(--sys-size-36);
32
+ justify-content: center;
33
+ align-items: center;
34
+ background-color: var(--sys-color-surface3);
35
+ font: var(--sys-typescale-body4-regular);
36
+ padding: var(--sys-size-5) 0;
37
+ border-radius: var(--sys-shape-corner-medium-small);
38
+ margin-bottom: var(--sys-size-5);
39
+ color: var(--sys-color-on-surface-subtle);
40
+ }
41
+
42
+ .chat-input-container {
43
+ width: 100%;
44
+ display: flex;
45
+ position: relative;
46
+ flex-direction: column;
47
+ border: 1px solid var(--sys-color-neutral-outline);
48
+ border-radius: var(--sys-shape-corner-small);
49
+
50
+ &:focus-within {
51
+ outline: 1px solid var(--sys-color-primary);
52
+ border-color: var(--sys-color-primary);
53
+ }
54
+
55
+ &.disabled {
56
+ background-color: var(--sys-color-state-disabled-container);
57
+ border-color: transparent;
58
+
59
+ & .chat-input-disclaimer {
60
+ border-color: var(--sys-color-state-disabled);
61
+ }
62
+ }
63
+
64
+ &.single-line-layout {
65
+ flex-direction: row;
66
+ justify-content: space-between;
67
+
68
+ .chat-input {
69
+ flex-shrink: 1;
70
+ padding: var(--sys-size-4);
71
+ }
72
+
73
+ .chat-input-actions {
74
+ flex-shrink: 0;
75
+ padding-block: 0;
76
+ align-items: flex-end;
77
+ padding-bottom: var(--sys-size-1);
78
+ }
79
+ }
80
+
81
+ & .image-input-container {
82
+ margin: var(--sys-size-3) var(--sys-size-4) 0;
83
+ max-width: 100%;
84
+ width: fit-content;
85
+ position: relative;
86
+
87
+ devtools-button {
88
+ position: absolute;
89
+ top: calc(-1 * var(--sys-size-2));
90
+ right: calc(-1 * var(--sys-size-3));
91
+ border-radius: var(--sys-shape-corner-full);
92
+ border: 1px solid var(--sys-color-neutral-outline);
93
+ background-color: var(--sys-color-cdt-base-container);
94
+ }
95
+
96
+ img {
97
+ max-height: var(--sys-size-18);
98
+ max-width: 100%;
99
+ border: 1px solid var(--sys-color-neutral-outline);
100
+ border-radius: var(--sys-shape-corner-small);
101
+ }
102
+
103
+ .loading {
104
+ margin: var(--sys-size-4) 0;
105
+ display: inline-flex;
106
+ justify-content: center;
107
+ align-items: center;
108
+ height: var(--sys-size-18);
109
+ width: var(--sys-size-19);
110
+ background-color: var(--sys-color-surface3);
111
+ border-radius: var(--sys-shape-corner-small);
112
+ border: 1px solid var(--sys-color-neutral-outline);
113
+
114
+ devtools-spinner {
115
+ color: var(--sys-color-state-disabled);
116
+ }
117
+ }
118
+ }
119
+
120
+ & .chat-input-disclaimer-container {
121
+ display: flex;
122
+ align-items: center;
123
+ padding-right: var(--sys-size-3);
124
+ flex-shrink: 0;
125
+ }
126
+
127
+ & .chat-input-disclaimer {
128
+ display: flex;
129
+ justify-content: center;
130
+ align-items: center;
131
+ font: var(--sys-typescale-body5-regular);
132
+ border-right: 1px solid var(--sys-color-divider);
133
+ padding-right: 8px;
134
+
135
+ &.hide-divider {
136
+ border-right: none;
137
+ }
138
+ }
139
+
140
+ /*
141
+ Hide the inline disclaimer on narrow widths (< 400px) because space is limited
142
+ and the disclaimer is shown in the footer instead for this case.
143
+ */
144
+ @container --chat-ui-container (width < 400px) {
145
+ & .chat-input-disclaimer-container {
146
+ display: none;
147
+ }
148
+ }
149
+ }
150
+
151
+ .chat-input {
152
+ scrollbar-width: none;
153
+ field-sizing: content;
154
+ resize: none;
155
+ width: 100%;
156
+ max-height: 84px; /* 4 rows */
157
+ border: 0;
158
+ border-radius: var(--sys-shape-corner-small);
159
+ font: var(--sys-typescale-body4-regular);
160
+ line-height: 18px;
161
+ min-height: var(--sys-size-11);
162
+ color: var(--sys-color-on-surface);
163
+ background-color: var(--sys-color-cdt-base-container);
164
+ padding: var(--sys-size-4) var(--sys-size-4) var(--sys-size-3)
165
+ var(--sys-size-4);
166
+
167
+ &::placeholder {
168
+ opacity: 60%;
169
+ }
170
+
171
+ &:focus-visible {
172
+ outline: 0;
173
+ }
174
+
175
+ &:disabled {
176
+ color: var(--sys-color-state-disabled);
177
+ background-color: transparent;
178
+ border-color: transparent;
179
+
180
+ &::placeholder {
181
+ color: var(--sys-color-on-surface-subtle);
182
+ opacity: 100%;
183
+ }
184
+ }
185
+ }
186
+
187
+ .chat-input-actions {
188
+ display: flex;
189
+ flex-direction: row;
190
+ align-items: center;
191
+ justify-content: space-between;
192
+ padding-left: var(--sys-size-4);
193
+ padding-right: var(--sys-size-2);
194
+ gap: var(--sys-size-6);
195
+ padding-bottom: var(--sys-size-2);
196
+
197
+ & .chat-input-actions-left {
198
+ flex: 1 1 0;
199
+ min-width: 0;
200
+ }
201
+
202
+ & .chat-input-actions-right {
203
+ flex-shrink: 0;
204
+ display: flex;
205
+
206
+ & .start-new-chat-button {
207
+ padding-bottom: var(--sys-size-2);
208
+ padding-right: var(--sys-size-3);
209
+ }
210
+ }
211
+ }
212
+
213
+ .chat-inline-button {
214
+ padding-left: 3px;
215
+ }
216
+
217
+ .select-element {
218
+ display: flex;
219
+ gap: var(--sys-size-3);
220
+ align-items: center;
221
+
222
+ .resource-link,
223
+ .resource-task {
224
+ cursor: pointer;
225
+ padding: var(--sys-size-2) var(--sys-size-3);
226
+ font: var(--sys-typescale-body5-regular);
227
+ border: var(--sys-size-1) solid var(--sys-color-divider);
228
+ border-radius: var(--sys-shape-corner-extra-small);
229
+ overflow: hidden;
230
+ text-overflow: ellipsis;
231
+ white-space: nowrap;
232
+ /*
233
+ Allow the link/task item to shrink below its intrinsic minimum width in the flex container,
234
+ enabling text-overflow ellipsis to work correctly.
235
+ */
236
+ min-width: 0;
237
+ line-height: 1;
238
+
239
+ & .title {
240
+ vertical-align: middle;
241
+ font: var(--sys-typescale-body5-regular);
242
+ }
243
+
244
+ &.has-picker-behavior {
245
+ overflow: visible;
246
+ }
247
+
248
+ &:focus-visible {
249
+ outline: 2px solid var(--sys-color-state-focus-ring);
250
+ }
251
+
252
+ devtools-icon,
253
+ devtools-file-source-icon {
254
+ display: inline-flex;
255
+ vertical-align: middle;
256
+ width: var(--sys-size-7);
257
+ height: var(--sys-size-7);
258
+ }
259
+
260
+ /*
261
+ CSS styling for `network-override-marker` is similar to
262
+ https://source.chromium.org/chromium/chromium/src/+/main:third_party/devtools-frontend/src/front_end/panels/network/networkLogView.css;l=379.
263
+ There is a difference in `left` and `top` values to make sure
264
+ it is placed correctly for the network icon in assistance panel.
265
+ */
266
+ .network-override-marker {
267
+ position: relative;
268
+ float: left;
269
+ }
270
+
271
+ .network-override-marker::before {
272
+ content: var(--image-file-empty);
273
+ width: var(--sys-size-4);
274
+ height: var(--sys-size-4);
275
+ border-radius: 50%;
276
+ outline: var(--sys-size-1) solid var(--icon-gap-focus-selected);
277
+ left: 11px;
278
+ position: absolute;
279
+ top: 13px;
280
+ z-index: 1;
281
+ background-color: var(--sys-color-purple-bright);
282
+ }
283
+
284
+ .image.icon {
285
+ display: inline-flex;
286
+ justify-content: center;
287
+ align-items: center;
288
+ vertical-align: middle;
289
+ margin-right: var(--sys-size-3);
290
+
291
+ img {
292
+ max-width: var(--sys-size-7);
293
+ max-height: var(--sys-size-7);
294
+ }
295
+ }
296
+ }
297
+
298
+ .resource-link.disabled,
299
+ .resource-task.disabled {
300
+ color: var(--sys-color-state-disabled);
301
+ border-color: var(--sys-color-neutral-outline);
302
+ pointer-events: none;
303
+ }
304
+ }
305
+
306
+ .link {
307
+ color: var(--text-link);
308
+ text-decoration: underline;
309
+ cursor: pointer;
310
+ }
311
+
312
+ button.link {
313
+ border: none;
314
+ background: none;
315
+ font: inherit;
316
+
317
+ &:focus-visible {
318
+ outline: var(--sys-size-2) solid var(--sys-color-state-focus-ring);
319
+ outline-offset: 0;
320
+ border-radius: var(--sys-shape-corner-extra-small);
321
+ }
322
+ }
323
+
324
+ .floaty {
325
+ font: var(--sys-typescale-body4);
326
+ color: var(--sys-color-on-surface);
327
+ user-select: none;
328
+ padding: 0;
329
+ margin: 0;
330
+ list-style-type: none;
331
+ display: flex;
332
+ flex-flow: row wrap;
333
+ align-items: flex-end;
334
+ gap: var(--sys-size-2);
335
+ margin-bottom: var(--sys-size-2);
336
+
337
+ li {
338
+ background: var(--sys-color-surface3);
339
+ border-radius: var(--sys-shape-corner-small);
340
+ border: 1px solid var(--sys-color-neutral-outline);
341
+ padding: var(--sys-size-2) var(--sys-size-3);
342
+ display: flex;
343
+ flex-direction: row;
344
+ align-items: center;
345
+ gap: var(--sys-size-2);
346
+ min-height: var(--sys-size-8);
347
+ }
348
+
349
+ .context-item {
350
+ display: flex;
351
+ flex-direction: row;
352
+ align-items: center;
353
+ gap: var(--sys-size-2);
354
+ }
355
+
356
+ .open-floaty {
357
+ padding: 0;
358
+ border: none;
359
+
360
+ /* To align with other chips */
361
+ margin-bottom: 1px;
362
+ }
363
+ }
364
+
365
+ .chat-input-footer {
366
+ display: flex;
367
+ justify-content: center;
368
+ padding-block: var(--sys-size-3);
369
+ font: var(--sys-typescale-body5-regular);
370
+ border-top: 1px solid var(--sys-color-divider);
371
+ text-wrap: balance;
372
+ text-align: center;
373
+ width: 100%;
374
+
375
+ /*
376
+ The footer (for active conversations) is hidden by default on wider screens
377
+ because the disclaimer is shown inline within the chat input actions. Show it only on narrow widths (< 400px).
378
+ */
379
+ &:not(.is-read-only) {
380
+ display: none;
381
+ border: none;
382
+
383
+ @container --chat-ui-container (width < 400px) {
384
+ display: flex;
385
+ }
386
+ }
387
+ }