Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/src/vs/sessions/browser/parts/mobile/mobileChatShell.css
13399 views
1
/*---------------------------------------------------------------------------------------------
2
* Copyright (c) Microsoft Corporation. All rights reserved.
3
* Licensed under the MIT License. See License.txt in the project root for license information.
4
*--------------------------------------------------------------------------------------------*/
5
6
/*
7
* `!important` policy for this file:
8
*
9
* Only use `!important` when fighting one of:
10
* 1. SplitView.View.layoutContainer — sets inline position/top/left/width/height
11
* on every `.split-view-view` (src/vs/base/browser/ui/splitview/splitview.ts).
12
* 2. Part.layoutContents — inlines width/height on `.part > .content` via size().
13
* 3. An equal-specificity desktop rule in the main workbench stylesheet.
14
*
15
* Rules that only face lower-specificity desktop CSS (e.g. a single `.part.X`
16
* selector) do NOT need `!important` — the `.phone-layout` class on the
17
* workbench root already wins. When adding a new rule, omit `!important`
18
* first and only add it if DevTools shows an actual override.
19
*/
20
21
/* ---- Mobile Top Bar ---- */
22
23
.mobile-top-bar {
24
display: flex;
25
align-items: center;
26
height: 48px;
27
min-height: 48px;
28
padding: 0 4px;
29
padding-top: env(safe-area-inset-top);
30
background: var(--vscode-editor-background);
31
flex-shrink: 0;
32
-webkit-touch-callout: none;
33
user-select: none;
34
-webkit-user-select: none;
35
touch-action: manipulation;
36
z-index: 10;
37
}
38
39
.mobile-top-bar .mobile-top-bar-button {
40
display: flex;
41
align-items: center;
42
justify-content: center;
43
width: 44px;
44
height: 44px;
45
border: none;
46
background: none;
47
color: var(--vscode-foreground);
48
cursor: pointer;
49
border-radius: 50%;
50
flex-shrink: 0;
51
touch-action: manipulation;
52
font-size: 18px;
53
padding: 0;
54
}
55
56
.monaco-workbench .mobile-top-bar .mobile-top-bar-button:focus {
57
outline: none !important;
58
}
59
60
.mobile-top-bar .mobile-top-bar-button:focus-visible {
61
outline: 1px solid var(--vscode-focusBorder);
62
outline-offset: -1px;
63
}
64
65
.mobile-top-bar .mobile-top-bar-button:active {
66
background: var(--vscode-toolbar-hoverBackground);
67
}
68
69
/* -- Mobile titlebar: Changes pill ------------------------------------- */
70
/* Pill-shaped button showing total insertions/deletions for the active session. Tapping opens a quick pick of changed files; selecting one opens the mobile diff view. Hidden when the session has no changes or when on the welcome / new-chat screen. */
71
72
.mobile-top-bar .mobile-top-bar-button.mobile-changes-pill {
73
width: auto;
74
height: 28px;
75
padding: 0 10px;
76
border-radius: 14px;
77
gap: 4px;
78
font-size: 12px;
79
line-height: 18px;
80
font-variant-numeric: tabular-nums;
81
border: 1px solid var(--vscode-widget-border, color-mix(in srgb, var(--vscode-foreground) 15%, transparent));
82
background: transparent;
83
color: var(--vscode-foreground);
84
}
85
86
.mobile-top-bar .mobile-changes-pill .mobile-changes-pill-icon {
87
font-size: 14px;
88
color: var(--vscode-descriptionForeground);
89
display: flex;
90
align-items: center;
91
}
92
93
.mobile-top-bar .mobile-changes-pill .mobile-changes-pill-added {
94
color: var(--vscode-gitDecoration-addedResourceForeground, var(--vscode-charts-green));
95
}
96
97
.mobile-top-bar .mobile-changes-pill .mobile-changes-pill-removed {
98
color: var(--vscode-gitDecoration-deletedResourceForeground, var(--vscode-charts-red));
99
}
100
101
.mobile-top-bar .mobile-changes-pill:active {
102
background: var(--vscode-toolbar-hoverBackground);
103
}
104
105
.mobile-top-bar .mobile-top-bar-center {
106
flex: 1;
107
min-width: 0;
108
display: flex;
109
align-items: center;
110
height: 100%;
111
}
112
113
.mobile-top-bar .mobile-session-title {
114
flex: 1;
115
min-width: 0;
116
text-align: center;
117
font-size: 16px;
118
font-weight: 500;
119
color: var(--vscode-foreground);
120
overflow: hidden;
121
text-overflow: ellipsis;
122
white-space: nowrap;
123
padding: 0 4px;
124
cursor: pointer;
125
border: none;
126
background: none;
127
touch-action: manipulation;
128
font-family: inherit;
129
}
130
131
.monaco-workbench .mobile-top-bar .mobile-session-title:focus {
132
outline: none !important;
133
}
134
135
.mobile-top-bar .mobile-session-title:focus-visible {
136
outline: 1px solid var(--vscode-focusBorder);
137
outline-offset: -1px;
138
}
139
140
.mobile-top-bar .mobile-session-title:active {
141
opacity: 0.7;
142
}
143
144
.mobile-top-bar .mobile-top-bar-actions {
145
display: none;
146
flex: 1;
147
min-width: 0;
148
align-items: center;
149
height: 100%;
150
}
151
152
/* When the welcome screen is visible and the center menu has contributed
153
items (e.g., the web host filter on the home screen) the title is
154
hidden and the toolbar takes its place. */
155
.mobile-top-bar.show-actions .mobile-session-title {
156
display: none;
157
}
158
159
.mobile-top-bar.show-actions .mobile-top-bar-actions {
160
display: flex;
161
flex-direction: column;
162
}
163
164
/* ---- Phone Layout: Full-screen chat ---- */
165
166
/* On phone, stack the mobile top bar and grid vertically */
167
.agent-sessions-workbench.phone-layout {
168
display: flex;
169
flex-direction: column;
170
overflow: hidden;
171
}
172
173
/* On phone, all split-view-view wrappers inside the grid — both those
174
wrapping parts AND those wrapping nested grid branch nodes — fill the
175
full grid area. This collapses the multi-axis grid into a single
176
full-screen viewport so parts overlap rather than share horizontal
177
space. The sidebar uses its own z-index + transform to slide over
178
the chat (see sidebarPart.css). The :has() conditions scope strictly
179
to grid wrappers so splitviews used inside individual parts' content
180
(e.g. a sidebar's view list) are not affected. */
181
.agent-sessions-workbench.phone-layout .split-view-view:has(> .part),
182
.agent-sessions-workbench.phone-layout .split-view-view:has(> .monaco-grid-branch-node) {
183
position: absolute !important;
184
top: 0 !important;
185
left: 0 !important;
186
width: 100% !important;
187
height: 100% !important;
188
}
189
190
/* All grid branch nodes fill their parent. `.monaco-grid-branch-node` is
191
specific to the grid widget, so this descendant selector won't hit
192
splitviews used inside individual parts' content. The grid widget
193
does not write inline geometry to branch nodes (only to the wrapping
194
`.split-view-view`), so plain CSS suffices here. */
195
.agent-sessions-workbench.phone-layout .monaco-grid-branch-node {
196
position: absolute;
197
top: 0;
198
left: 0;
199
width: 100%;
200
height: 100%;
201
}
202
203
/* Remove card appearance from ALL parts on phone.
204
Specificity wins over the desktop card rule in style.css without !important;
205
width/height match what the mobile Part.layout() already inlines. */
206
.agent-sessions-workbench.phone-layout .part.chatbar,
207
.agent-sessions-workbench.phone-layout .part.sidebar,
208
.agent-sessions-workbench.phone-layout .part.auxiliarybar,
209
.agent-sessions-workbench.phone-layout .part.panel {
210
margin: 0;
211
border: none;
212
border-radius: 0;
213
box-shadow: none;
214
--part-border-color: transparent;
215
width: 100%;
216
height: 100%;
217
}
218
219
/* Pin Part content to the wrapper's full width on phone.
220
`!important` is required because `Part.layoutContents()` inlines the
221
width on `.part > .content` based on the splitview size (rule #2 in the
222
policy above). Without this, opening the sidebar — which makes the
223
splitview share space between sidebar and chatbar — would shrink the
224
chatbar's content during the drawer slide animation. */
225
.agent-sessions-workbench.phone-layout .part.chatbar > .content,
226
.agent-sessions-workbench.phone-layout .part.sidebar > .content,
227
.agent-sessions-workbench.phone-layout .part.auxiliarybar > .content,
228
.agent-sessions-workbench.phone-layout .part.panel > .content {
229
width: 100% !important;
230
height: 100% !important;
231
}
232
233
/* Hide the session composite bar (Copilot CLI / Approvals / Branch) on phone */
234
.agent-sessions-workbench.phone-layout .session-composite-bar {
235
display: none;
236
}
237
238
/* Ensure the grid view element doesn't overflow — flex child must shrink */
239
.agent-sessions-workbench.phone-layout > .monaco-grid-view {
240
flex: 1 1 0% !important;
241
min-height: 0 !important;
242
overflow: hidden !important;
243
height: auto !important;
244
background-color: var(--vscode-editor-background);
245
}
246
247
/* Remove max-width constraint on chat content */
248
.agent-sessions-workbench.phone-layout .interactive-session .interactive-item-container {
249
max-width: none !important;
250
}
251
252
.agent-sessions-workbench.phone-layout .interactive-session > .chat-suggest-next-widget {
253
max-width: none !important;
254
}
255
256
.agent-sessions-workbench.phone-layout .interactive-session .interactive-input-part {
257
max-width: none !important; /* fights equal-specificity rule in style.css */
258
padding-bottom: calc(10px + env(safe-area-inset-bottom));
259
}
260
261
/* Chat input minimum font size to prevent iOS auto-zoom */
262
.agent-sessions-workbench.phone-layout .interactive-session .chat-input-container textarea,
263
.agent-sessions-workbench.phone-layout .interactive-session .chat-input-container input {
264
font-size: 16px !important;
265
}
266
267
/* Hide the desktop titlebar on phone — replaced by mobile top bar */
268
.agent-sessions-workbench.phone-layout .part.titlebar {
269
display: none !important;
270
}
271
272
/* Sidebar content and customization toolbar should stack and scroll */
273
.agent-sessions-workbench.phone-layout .part.sidebar {
274
display: flex !important;
275
flex-direction: column !important;
276
overflow: hidden !important;
277
}
278
279
.agent-sessions-workbench.phone-layout .part.sidebar > .composite.title {
280
display: none;
281
}
282
283
.agent-sessions-workbench.phone-layout .part.sidebar > .content {
284
top: 0 !important;
285
flex: 1 !important;
286
min-height: 0 !important;
287
overflow-y: auto !important;
288
-webkit-overflow-scrolling: touch;
289
}
290
291
/* Customization toolbar: hidden on phone (opens editors, not mobile-compatible) */
292
.agent-sessions-workbench.phone-layout .part.sidebar .ai-customization-toolbar {
293
display: none;
294
}
295
296
/* Make sidebar footer touch-friendly */
297
.agent-sessions-workbench.phone-layout .part.sidebar > .sidebar-footer .sidebar-action-button {
298
min-height: 44px;
299
padding: 8px 12px;
300
}
301
302
/* Hide the "+ Session" button in the sidebar on phone — replaced by top bar + button */
303
.agent-sessions-workbench.phone-layout .agent-sessions-new-button-container {
304
display: none;
305
}
306
307
/* Hide sashes on phone */
308
.agent-sessions-workbench.phone-layout .monaco-sash {
309
display: none !important;
310
pointer-events: none !important;
311
}
312
313
/* Overscroll containment */
314
.agent-sessions-workbench.phone-layout .interactive-session {
315
overscroll-behavior: contain;
316
}
317
318
.agent-sessions-workbench.phone-layout .monaco-list {
319
overscroll-behavior: contain;
320
}
321
322
/* On phone, push the chat input to the bottom of the chat area */
323
.agent-sessions-workbench.phone-layout .interactive-session .interactive-input-and-execute-toolbar {
324
margin-top: auto;
325
}
326
327
/* ---- Phone Layout: Chat Welcome Page ---- */
328
329
/* Make the welcome page a flex column that fills the chat area */
330
.agent-sessions-workbench.phone-layout .new-chat-widget-container {
331
display: flex !important;
332
flex-direction: column !important;
333
height: 100% !important;
334
padding: 8px 8px 0 8px !important;
335
}
336
337
.agent-sessions-workbench.phone-layout .new-chat-widget-content {
338
display: flex !important;
339
flex-direction: column !important;
340
flex: 1 !important;
341
min-height: 0 !important;
342
max-width: 100% !important;
343
padding-bottom: 20px !important;
344
}
345
346
/* Workspace picker centered vertically with icon above */
347
.agent-sessions-workbench.phone-layout .new-session-workspace-picker-container {
348
flex: 1 !important;
349
display: flex !important;
350
flex-direction: column !important;
351
align-items: center !important;
352
justify-content: center !important;
353
max-width: 100% !important;
354
}
355
356
/* Show the sessions logo above the workspace picker — same asset as the auth page */
357
.agent-sessions-workbench.phone-layout .new-session-workspace-picker-container::before {
358
content: '';
359
display: block;
360
width: 64px;
361
height: 64px;
362
margin-bottom: 16px;
363
background-image: url('../../media/sessions-logo-light.svg');
364
background-size: contain;
365
background-repeat: no-repeat;
366
background-position: center;
367
}
368
369
.vs .agent-sessions-workbench.phone-layout .new-session-workspace-picker-container::before,
370
.hc-light .agent-sessions-workbench.phone-layout .new-session-workspace-picker-container::before {
371
background-image: url('../../media/sessions-logo-dark.svg');
372
}
373
374
/* Center the picker text */
375
.agent-sessions-workbench.phone-layout .session-workspace-picker {
376
display: flex !important;
377
flex-direction: column !important;
378
align-items: center !important;
379
gap: 8px !important;
380
font-size: 16px !important;
381
}
382
383
.agent-sessions-workbench.phone-layout .session-workspace-picker-label {
384
font-size: 18px;
385
opacity: 0.6;
386
}
387
388
/* Input slot pinned to the bottom */
389
.agent-sessions-workbench.phone-layout .new-chat-input-container {
390
flex-shrink: 0 !important;
391
padding: 0 0 8px 0 !important;
392
max-width: 100% !important;
393
}
394
395
/* Make the chat input full-width and edge-to-edge styled */
396
.agent-sessions-workbench.phone-layout .sessions-chat-input-area {
397
border-radius: 16px !important;
398
max-width: 100% !important;
399
}
400
401
/* Hide the local mode bar (Copilot CLI / Default Approvals / Branch) on phone */
402
.agent-sessions-workbench.phone-layout .new-chat-bottom-container {
403
display: none;
404
}
405
406
/* Also hide the sessions-chat-widget's DnD overlay on phone */
407
.agent-sessions-workbench.phone-layout .sessions-chat-dnd-overlay {
408
display: none;
409
}
410
411
/* Chat widget fills full width on phone */
412
.agent-sessions-workbench.phone-layout .sessions-chat-widget {
413
width: 100% !important;
414
}
415
416
/* allow-any-unicode-next-line */
417
/* Compact chat toolbar on phone */
418
.agent-sessions-workbench.phone-layout .sessions-chat-toolbar {
419
padding: 0 6px 0 6px !important;
420
max-height: 32px !important;
421
gap: 4px !important;
422
}
423
424
/* Prevent card transitions from flashing on phone */
425
.agent-sessions-workbench.phone-layout .part.chatbar,
426
.agent-sessions-workbench.phone-layout .part.sidebar,
427
.agent-sessions-workbench.phone-layout .part.auxiliarybar,
428
.agent-sessions-workbench.phone-layout .part.panel {
429
transition: none !important;
430
}
431
432
/* ---- Mobile Account Indicator ---- */
433
434
.mobile-top-bar .mobile-account-indicator {
435
position: relative;
436
}
437
438
.mobile-top-bar .mobile-account-avatar {
439
display: none;
440
width: 28px;
441
height: 28px;
442
border-radius: 50%;
443
object-fit: cover;
444
border: 1px solid var(--vscode-commandCenter-border, transparent);
445
box-sizing: border-box;
446
}
447
448
.mobile-top-bar .mobile-account-avatar.visible {
449
display: block;
450
}
451
452
/* Hide the codicon when the avatar is loaded */
453
.mobile-top-bar .mobile-account-indicator .codicon.hidden {
454
display: none;
455
}
456
457
.mobile-top-bar .mobile-account-badge {
458
position: absolute;
459
top: 8px;
460
right: 8px;
461
width: 8px;
462
height: 8px;
463
border-radius: 50%;
464
border: 1.5px solid var(--vscode-editor-background);
465
background: var(--vscode-editorWarning-foreground);
466
pointer-events: none;
467
}
468
469
.mobile-top-bar .mobile-account-badge.dot-badge-warning {
470
background: var(--vscode-editorWarning-foreground);
471
}
472
473
.mobile-top-bar .mobile-account-badge.dot-badge-error {
474
background: var(--vscode-editorError-foreground);
475
}
476
477
/* ---- Mobile Account Sheet (full-screen bottom sheet) ---- */
478
479
.mobile-account-sheet {
480
position: fixed;
481
inset: 0;
482
z-index: 1000;
483
display: flex;
484
flex-direction: column;
485
background: var(--vscode-editor-background);
486
color: var(--vscode-foreground);
487
touch-action: manipulation;
488
-webkit-touch-callout: none;
489
user-select: none;
490
-webkit-user-select: none;
491
}
492
493
.mobile-account-sheet-header {
494
display: flex;
495
align-items: center;
496
justify-content: space-between;
497
height: 56px;
498
min-height: 56px;
499
padding: 0 16px;
500
padding-top: env(safe-area-inset-top);
501
border-bottom: 1px solid var(--vscode-panel-border, var(--vscode-editorWidget-border, transparent));
502
flex-shrink: 0;
503
}
504
505
.mobile-account-sheet-title {
506
font-size: 18px;
507
font-weight: 600;
508
margin: 0;
509
color: var(--vscode-foreground);
510
}
511
512
.mobile-account-sheet-close {
513
display: flex;
514
align-items: center;
515
justify-content: center;
516
width: 44px;
517
height: 44px;
518
border: none;
519
background: none;
520
color: var(--vscode-foreground);
521
cursor: pointer;
522
border-radius: 50%;
523
font-size: 18px;
524
padding: 0;
525
touch-action: manipulation;
526
}
527
528
.mobile-account-sheet-close:active {
529
background: var(--vscode-toolbar-hoverBackground);
530
}
531
532
.mobile-account-sheet-content {
533
flex: 1;
534
overflow-y: auto;
535
-webkit-overflow-scrolling: touch;
536
overscroll-behavior: contain;
537
padding: 0 16px;
538
padding-bottom: calc(16px + env(safe-area-inset-bottom));
539
}
540
541
/* Profile card */
542
543
.mobile-account-sheet-profile {
544
display: flex;
545
align-items: center;
546
gap: 16px;
547
padding: 24px 0 20px;
548
}
549
550
.mobile-account-sheet-avatar {
551
width: 56px;
552
height: 56px;
553
border-radius: 50%;
554
object-fit: cover;
555
flex-shrink: 0;
556
}
557
558
.mobile-account-sheet-avatar-placeholder {
559
display: flex;
560
align-items: center;
561
justify-content: center;
562
width: 56px;
563
height: 56px;
564
border-radius: 50%;
565
background: var(--vscode-badge-background);
566
color: var(--vscode-badge-foreground);
567
font-size: 28px;
568
flex-shrink: 0;
569
}
570
571
.mobile-account-sheet-profile-info {
572
min-width: 0;
573
flex: 1;
574
}
575
576
.mobile-account-sheet-name {
577
font-size: 18px;
578
font-weight: 600;
579
overflow: hidden;
580
text-overflow: ellipsis;
581
white-space: nowrap;
582
}
583
584
.mobile-account-sheet-provider {
585
font-size: 14px;
586
color: var(--vscode-descriptionForeground);
587
margin-top: 2px;
588
overflow: hidden;
589
text-overflow: ellipsis;
590
white-space: nowrap;
591
}
592
593
/* Dashboard section */
594
595
.mobile-account-sheet-section {
596
padding: 8px 0 16px;
597
border-top: 1px solid var(--vscode-panel-border, var(--vscode-editorWidget-border, transparent));
598
}
599
600
/* Action rows */
601
602
.mobile-account-sheet-actions {
603
display: flex;
604
flex-direction: column;
605
border-top: 1px solid var(--vscode-panel-border, var(--vscode-editorWidget-border, transparent));
606
padding: 8px 0;
607
}
608
609
.mobile-account-sheet-action {
610
display: flex;
611
align-items: center;
612
gap: 16px;
613
height: 52px;
614
min-height: 52px;
615
padding: 0 4px;
616
border: none;
617
border-radius: 12px;
618
background: none;
619
color: var(--vscode-foreground);
620
font-size: 16px;
621
text-align: left;
622
cursor: pointer;
623
touch-action: manipulation;
624
font-family: inherit;
625
}
626
627
.mobile-account-sheet-action:active {
628
background: var(--vscode-list-hoverBackground);
629
}
630
631
.mobile-account-sheet-action:disabled {
632
opacity: 0.5;
633
cursor: default;
634
}
635
636
.mobile-account-sheet-action-icon {
637
font-size: 20px;
638
width: 24px;
639
text-align: center;
640
flex-shrink: 0;
641
color: var(--vscode-descriptionForeground);
642
}
643
644
.mobile-account-sheet-action-label {
645
flex: 1;
646
min-width: 0;
647
overflow: hidden;
648
text-overflow: ellipsis;
649
white-space: nowrap;
650
}
651
652
.mobile-account-sheet-separator {
653
height: 1px;
654
margin: 4px 0;
655
background: var(--vscode-panel-border, var(--vscode-editorWidget-border, transparent));
656
}
657
658
.agent-sessions-workbench.phone-layout .sessions-account-titlebar-panel-action {
659
min-height: 44px;
660
touch-action: manipulation;
661
}
662
663
.agent-sessions-workbench.phone-layout .sessions-account-titlebar-panel-header-action {
664
min-width: 44px;
665
min-height: 44px;
666
touch-action: manipulation;
667
}
668
669
/* -- Phone: Sessions list header --------------------------------------- */
670
/* The desktop header row (Sessions label + New + Filter + Find toolbar) is hidden on phone in favor of the filter-chips row and the (+) button in MobileTitlebarPart. The row container itself is still rendered because the tree's find widget mounts inside it; the `phone-layout-empty` class is removed when the find widget is open so the row reappears for searching. */
671
672
.agent-sessions-workbench.phone-layout .agent-sessions-header-row.phone-layout-empty {
673
display: none;
674
}
675
676
/* On phone the label / actions slots are intentionally left empty (the
677
* desktop header content is replaced by the mobile filter chips and the
678
* (+) button in MobileTitlebarPart). When the find widget opens the row
679
* becomes visible, but these two empty flex children would still occupy
680
* leading space because of `gap` between siblings. Collapse them so the
681
* find input sits flush with the row's leading edge. */
682
.agent-sessions-workbench.phone-layout .agent-sessions-header-row > .agent-sessions-header-label,
683
.agent-sessions-workbench.phone-layout .agent-sessions-header-row > .agent-sessions-header-actions {
684
display: none;
685
}
686
687
/* -- Phone: Find widget mobile-friendly UX ----------------------------- */
688
/* When the user opens find on phone, the desktop type-filter widget is normally a tiny floating input with a 24px tall input box and a 22x22 close button — designed for a mouse cursor. On phone, expand it to a full-width row with thumb-sized targets and a single visible search input. */
689
690
.agent-sessions-workbench.phone-layout .agent-sessions-header-row {
691
/* The find widget commandeers the row when open. Use minimal horizontal padding so the input stretches as close to the screen edges as possible — feels right for a phone search field. */
692
padding: 6px 4px 6px 8px;
693
min-height: 52px;
694
gap: 4px;
695
}
696
697
.agent-sessions-workbench.phone-layout .agent-sessions-find-widget-container {
698
/* Take the full width on phone — there's no label/toolbar competing for space because they're hidden in this mode. */
699
flex: 1 1 auto;
700
min-width: 0;
701
}
702
703
.agent-sessions-workbench.phone-layout
704
.agent-sessions-find-widget-container > .monaco-tree-type-filter {
705
/* Reset desktop offsets — the desktop widget tries to align with the tree-element rows above it; on phone it lives in its own row. */
706
width: 100%;
707
gap: 4px;
708
}
709
710
.agent-sessions-workbench.phone-layout
711
.agent-sessions-find-widget-container > .monaco-tree-type-filter
712
.monaco-tree-type-filter-input {
713
flex: 1 1 auto;
714
min-width: 0;
715
}
716
717
.agent-sessions-workbench.phone-layout
718
.agent-sessions-find-widget-container > .monaco-tree-type-filter
719
.monaco-tree-type-filter-input > .monaco-findInput {
720
display: block;
721
width: 100%;
722
}
723
724
.agent-sessions-workbench.phone-layout
725
.agent-sessions-find-widget-container > .monaco-tree-type-filter
726
.monaco-tree-type-filter-input > .monaco-findInput > .monaco-inputbox {
727
min-height: 36px;
728
border-radius: 18px;
729
padding: 0 12px;
730
font-size: 14px;
731
width: 100%;
732
}
733
734
.agent-sessions-workbench.phone-layout
735
.agent-sessions-find-widget-container > .monaco-tree-type-filter
736
.monaco-tree-type-filter-input > .monaco-findInput > .monaco-inputbox input {
737
font-size: 14px;
738
line-height: 22px;
739
}
740
741
/* Hide the per-input "filter mode" toggle (matches whole word, etc.) on phone — it's tiny and rarely useful for a sessions list lookup; the primary action is "type to filter". */
742
.agent-sessions-workbench.phone-layout
743
.agent-sessions-find-widget-container > .monaco-tree-type-filter
744
.monaco-tree-type-filter-input > .monaco-findInput > .controls {
745
display: none;
746
}
747
748
/* Close button: thumb-sized, hugs the right edge. Override the desktop actionbar's natural left-margin so there is no extra empty gap between the input and the X. */
749
.agent-sessions-workbench.phone-layout
750
.agent-sessions-find-widget-container > .monaco-tree-type-filter
751
> .monaco-tree-type-filter-actionbar {
752
margin: 0;
753
flex-shrink: 0;
754
}
755
756
.agent-sessions-workbench.phone-layout
757
.agent-sessions-find-widget-container > .monaco-tree-type-filter
758
> .monaco-tree-type-filter-actionbar .monaco-action-bar .action-label {
759
width: 36px;
760
height: 36px;
761
padding: 0;
762
}
763
764