Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/src/vs/sessions/contrib/welcome/browser/media/sessionsWalkthrough.css
13405 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
/* ---- Multi-step Walkthrough Overlay ---- */
7
8
.sessions-walkthrough-overlay {
9
position: absolute;
10
inset: 0;
11
z-index: 200;
12
display: flex;
13
align-items: center;
14
justify-content: center;
15
background: var(--vscode-editor-background);
16
opacity: 1;
17
transition: opacity 200ms ease-out, background-color 200ms ease-out;
18
}
19
20
.sessions-walkthrough-overlay .hidden {
21
display: none;
22
}
23
24
/* Hide titlebar right actions during sign-in */
25
.monaco-workbench:has(.sessions-walkthrough-overlay) .part.titlebar .titlebar-right {
26
visibility: hidden;
27
}
28
29
.sessions-walkthrough-overlay.sessions-walkthrough-dismissed {
30
opacity: 0;
31
pointer-events: none;
32
}
33
34
/* ---- Card ---- */
35
36
.sessions-walkthrough-card {
37
display: flex;
38
flex-direction: column;
39
width: 1000px;
40
max-width: calc(100vw - 64px);
41
max-height: calc(100vh - 80px);
42
text-align: left;
43
gap: 24px;
44
}
45
46
/* ---- Content area (scrollable middle) ---- */
47
48
.sessions-walkthrough-content {
49
display: flex;
50
flex-direction: column;
51
align-items: center;
52
gap: 24px;
53
width: 100%;
54
flex: 1;
55
overflow-y: auto;
56
overflow-x: hidden;
57
min-height: 0;
58
padding: 4px 4px 8px;
59
box-sizing: border-box;
60
opacity: 1;
61
transition: opacity 200ms ease-out;
62
}
63
64
.sessions-walkthrough-content.sessions-walkthrough-fade-out {
65
opacity: 0;
66
}
67
68
.sessions-walkthrough-content.sessions-walkthrough-fade-in {
69
opacity: 1;
70
}
71
72
/* Progress bar (replaces provider buttons during setup) */
73
.sessions-walkthrough-progress-bar {
74
width: 100%;
75
height: 3px;
76
background: color-mix(in srgb, var(--vscode-foreground) 10%, transparent);
77
border-radius: 2px;
78
overflow: hidden;
79
margin-top: 16px;
80
}
81
82
.sessions-walkthrough-progress-bar-fill {
83
width: 30%;
84
height: 100%;
85
background: var(--vscode-progressBar-background, #0078d4);
86
border-radius: 2px;
87
animation: sessions-walkthrough-progress 2s ease-in-out infinite;
88
}
89
90
@keyframes sessions-walkthrough-progress {
91
0% {
92
transform: translateX(0%);
93
}
94
95
50% {
96
transform: translateX(233%);
97
}
98
99
100% {
100
transform: translateX(0%);
101
}
102
}
103
104
/* ---- Fixed footer (always at bottom) ---- */
105
106
.sessions-walkthrough-footer {
107
display: flex;
108
flex-direction: column;
109
align-items: center;
110
gap: 12px;
111
width: 100%;
112
flex-shrink: 0;
113
}
114
115
.sessions-walkthrough-success-actions {
116
display: flex;
117
flex-direction: row;
118
gap: 8px;
119
margin-top: 8px;
120
}
121
122
/* ---- Sign-in provider buttons ---- */
123
124
.sessions-walkthrough-provider-btn {
125
display: flex;
126
align-items: center;
127
justify-content: center;
128
gap: 10px;
129
padding: 10px 16px;
130
border-radius: 6px;
131
border: 1px solid color-mix(in srgb, var(--vscode-foreground) 15%, transparent);
132
background: transparent;
133
color: var(--vscode-foreground);
134
font-size: 13px;
135
font-weight: 500;
136
cursor: pointer;
137
transition: background 100ms, border-color 100ms;
138
white-space: nowrap;
139
}
140
141
.sessions-walkthrough-provider-label {
142
line-height: 1;
143
}
144
145
.sessions-walkthrough-provider-btn:hover {
146
background: color-mix(in srgb, var(--vscode-foreground) 8%, transparent);
147
border-color: color-mix(in srgb, var(--vscode-foreground) 25%, transparent);
148
}
149
150
.sessions-walkthrough-provider-btn:disabled {
151
opacity: 0.5;
152
cursor: default;
153
}
154
155
.sessions-walkthrough-provider-btn::before {
156
content: '';
157
width: 18px;
158
height: 18px;
159
background-size: contain;
160
background-repeat: no-repeat;
161
background-position: center;
162
flex-shrink: 0;
163
}
164
165
.sessions-walkthrough-provider-btn.provider-github::before {
166
-webkit-mask-image: url('./github-mark.svg');
167
mask-image: url('./github-mark.svg');
168
-webkit-mask-repeat: no-repeat;
169
mask-repeat: no-repeat;
170
-webkit-mask-position: center;
171
mask-position: center;
172
-webkit-mask-size: contain;
173
mask-size: contain;
174
background-color: currentColor;
175
}
176
177
.sessions-walkthrough-provider-btn.provider-google::before {
178
background-image: url('./google.svg');
179
}
180
181
.sessions-walkthrough-provider-btn.provider-apple::before {
182
background-image: url('./apple-dark.svg');
183
}
184
185
.monaco-workbench.hc-light .sessions-walkthrough-provider-btn.provider-apple::before,
186
.monaco-workbench.vs .sessions-walkthrough-provider-btn.provider-apple::before {
187
background-image: url('./apple-light.svg');
188
}
189
190
/* ---- Provider button row ---- */
191
192
.sessions-walkthrough-sign-in-actions {
193
display: flex;
194
flex-direction: column;
195
align-items: stretch;
196
gap: 0;
197
width: min(100%, 400px);
198
margin-top: 16px;
199
}
200
201
.sessions-walkthrough-providers-row {
202
display: flex;
203
gap: 8px;
204
align-items: center;
205
justify-content: flex-start;
206
width: 100%;
207
flex-wrap: nowrap;
208
}
209
210
.sessions-walkthrough-providers-row > .sessions-walkthrough-provider-btn {
211
flex: 0 0 auto;
212
}
213
214
.sessions-walkthrough-provider-btn.sessions-walkthrough-provider-primary {
215
flex: 1 1 auto;
216
min-width: 0;
217
padding: 10px 12px;
218
gap: 8px;
219
}
220
221
.sessions-walkthrough-provider-btn.sessions-walkthrough-provider-icon-only {
222
width: 40px;
223
height: 40px;
224
padding: 0;
225
border-radius: 8px;
226
justify-content: center;
227
flex: 0 0 40px;
228
}
229
230
.sessions-walkthrough-provider-btn.sessions-walkthrough-provider-icon-only::before {
231
width: 18px;
232
height: 18px;
233
}
234
235
.sessions-walkthrough-provider-btn.sessions-walkthrough-provider-compact {
236
min-height: 40px;
237
padding: 0 6px;
238
border-radius: 8px;
239
font-size: 11px;
240
gap: 0;
241
justify-content: center;
242
flex: 0 0 auto;
243
}
244
245
.sessions-walkthrough-provider-btn.sessions-walkthrough-provider-compact::before {
246
display: none;
247
}
248
249
/* ---- Hero layout (icon left, text right) ---- */
250
251
.sessions-walkthrough-hero {
252
display: flex;
253
align-items: stretch;
254
gap: 24px;
255
}
256
257
.sessions-walkthrough-hero .sessions-walkthrough-icon {
258
display: flex;
259
align-items: center;
260
}
261
262
.sessions-walkthrough-hero-text {
263
display: flex;
264
flex-direction: column;
265
justify-content: center;
266
gap: 6px;
267
}
268
269
.sessions-walkthrough-hero-text h2 {
270
margin: 0;
271
font-size: 22px;
272
font-weight: 600;
273
color: var(--vscode-foreground);
274
}
275
276
.sessions-walkthrough-hero-text p {
277
margin: 0;
278
font-size: 13px;
279
color: var(--vscode-descriptionForeground);
280
line-height: 1.5;
281
}
282
283
.sessions-walkthrough-icon .codicon {
284
font-size: 48px;
285
color: var(--vscode-descriptionForeground);
286
}
287
288
.sessions-walkthrough-icon.sessions-walkthrough-icon-large .codicon {
289
font-size: 112px;
290
}
291
292
/* Sessions logo for sign-in screen */
293
.sessions-walkthrough-logo {
294
width: 112px;
295
height: 112px;
296
background-image: url('../../../../browser/media/sessions-icon.svg');
297
background-size: contain;
298
background-repeat: no-repeat;
299
background-position: center;
300
flex-shrink: 0;
301
align-self: center;
302
}
303
304
/* ---- Action area (used inside content for sign-in step spinner) ---- */
305
306
.sessions-walkthrough-spinner {
307
display: flex;
308
align-items: center;
309
justify-content: center;
310
gap: 8px;
311
font-size: 13px;
312
color: var(--vscode-descriptionForeground);
313
}
314
315
.sessions-walkthrough-spinner .codicon-loading {
316
animation: sessions-walkthrough-spin 1.5s linear infinite;
317
}
318
319
@keyframes sessions-walkthrough-spin {
320
to {
321
transform: rotate(360deg);
322
}
323
}
324
325
.sessions-walkthrough-error {
326
margin: 0;
327
font-size: 12px;
328
color: var(--vscode-errorForeground);
329
}
330
331
.sessions-walkthrough-disclaimer {
332
position: absolute;
333
left: 50%;
334
bottom: 24px;
335
transform: translateX(-50%);
336
width: min(720px, calc(100vw - 64px));
337
margin: 0;
338
color: var(--vscode-descriptionForeground);
339
font-size: 11px;
340
line-height: 1.4;
341
text-align: center;
342
}
343
344
.sessions-walkthrough-disclaimer > a,
345
.sessions-walkthrough-disclaimer > a:link,
346
.sessions-walkthrough-disclaimer > a:visited {
347
color: var(--vscode-textLink-foreground) !important;
348
-webkit-text-fill-color: var(--vscode-textLink-foreground) !important;
349
text-decoration: none !important;
350
outline: none !important;
351
}
352
353
.sessions-walkthrough-disclaimer > a:hover,
354
.sessions-walkthrough-disclaimer > a:active {
355
color: var(--vscode-textLink-activeForeground) !important;
356
-webkit-text-fill-color: var(--vscode-textLink-activeForeground) !important;
357
text-decoration: underline !important;
358
}
359
360
.sessions-walkthrough-disclaimer > a:focus-visible {
361
outline: none !important;
362
box-shadow: 0 0 0 1px var(--vscode-focusBorder) !important;
363
border-radius: 2px !important;
364
}
365
366
/* ---- Welcome screen (first launch + signed in) ---- */
367
368
.sessions-walkthrough-welcome-actions {
369
display: flex;
370
flex-direction: column;
371
align-items: flex-start;
372
gap: 12px;
373
margin-top: 16px;
374
}
375
376
.sessions-walkthrough-get-started-btn {
377
padding: 8px 24px;
378
border-radius: 6px;
379
border: 1px solid var(--vscode-button-border, transparent);
380
background: var(--vscode-button-background);
381
color: var(--vscode-button-foreground);
382
font-size: 13px;
383
font-weight: 500;
384
cursor: pointer;
385
transition: background 100ms;
386
}
387
388
.sessions-walkthrough-get-started-btn:hover {
389
background: var(--vscode-button-hoverBackground);
390
}
391
392
.sessions-walkthrough-get-started-btn:focus-visible {
393
outline: 2px solid var(--vscode-focusBorder);
394
outline-offset: 2px;
395
}
396
397
.sessions-walkthrough-loading-indicator {
398
display: flex;
399
align-items: center;
400
justify-content: center;
401
width: 100%;
402
min-height: 200px;
403
}
404
405
.sessions-walkthrough-loading-icon {
406
animation: sessions-walkthrough-pulse 1.4s ease-in-out infinite;
407
}
408
409
@keyframes sessions-walkthrough-pulse {
410
0%, 100% { opacity: 0.4; transform: scale(0.95); }
411
50% { opacity: 1; transform: scale(1.05); }
412
}
413
414
.monaco-reduce-motion .sessions-walkthrough-loading-icon,
415
.agent-sessions-workbench.monaco-reduce-motion .sessions-walkthrough-loading-icon {
416
animation: none;
417
opacity: 0.7;
418
}
419
420
.sessions-walkthrough-tagline {
421
font-style: italic;
422
opacity: 0.85;
423
margin-top: 4px;
424
}
425
426
/* ---- Theme step ---- */
427
428
.sessions-walkthrough-theme-header {
429
text-align: center;
430
margin-bottom: 8px;
431
}
432
433
.sessions-walkthrough-theme-header h2 {
434
margin: 0;
435
font-size: 22px;
436
font-weight: 600;
437
color: var(--vscode-foreground);
438
}
439
440
.sessions-walkthrough-theme-header p {
441
margin: 6px 0 0;
442
font-size: 13px;
443
color: var(--vscode-descriptionForeground);
444
line-height: 1.5;
445
}
446
447
.sessions-walkthrough-theme-grid {
448
display: flex;
449
flex-wrap: wrap;
450
justify-content: center;
451
gap: 10px;
452
width: 100%;
453
}
454
455
.sessions-walkthrough-theme-card {
456
border-radius: 8px;
457
border: 2px solid var(--vscode-widget-border, rgba(255, 255, 255, 0.1));
458
cursor: pointer;
459
touch-action: manipulation;
460
overflow: hidden;
461
transition: border-color 100ms, transform 100ms;
462
width: calc(33.333% - 7px);
463
max-width: 240px;
464
min-width: 180px;
465
box-sizing: border-box;
466
}
467
468
.sessions-walkthrough-theme-card:hover {
469
border-color: var(--vscode-focusBorder, #007acc);
470
transform: translateY(-1px);
471
}
472
473
.sessions-walkthrough-theme-card:focus-visible {
474
outline: 2px solid var(--vscode-focusBorder);
475
outline-offset: 2px;
476
}
477
478
.sessions-walkthrough-theme-card.selected {
479
border-color: var(--vscode-focusBorder, #007acc);
480
box-shadow: 0 0 0 1px var(--vscode-focusBorder, #007acc);
481
}
482
483
.monaco-workbench.hc-black .sessions-walkthrough-theme-card,
484
.monaco-workbench.hc-light .sessions-walkthrough-theme-card {
485
border-width: 2px;
486
border-style: solid;
487
border-color: var(--vscode-contrastBorder);
488
}
489
490
.monaco-workbench.hc-black .sessions-walkthrough-theme-card:hover,
491
.monaco-workbench.hc-light .sessions-walkthrough-theme-card:hover {
492
border-color: var(--vscode-contrastActiveBorder, var(--vscode-focusBorder));
493
}
494
495
.monaco-workbench.hc-black .sessions-walkthrough-theme-card:focus-visible,
496
.monaco-workbench.hc-light .sessions-walkthrough-theme-card:focus-visible {
497
outline: 2px solid var(--vscode-contrastActiveBorder, var(--vscode-focusBorder));
498
outline-offset: 2px;
499
}
500
501
.monaco-workbench.hc-black .sessions-walkthrough-theme-card.selected,
502
.monaco-workbench.hc-light .sessions-walkthrough-theme-card.selected {
503
outline: 2px dashed var(--vscode-contrastActiveBorder, var(--vscode-focusBorder));
504
outline-offset: 2px;
505
}
506
507
.monaco-workbench.hc-black .sessions-walkthrough-theme-card.selected:focus-visible,
508
.monaco-workbench.hc-light .sessions-walkthrough-theme-card.selected:focus-visible {
509
outline: 2px solid var(--vscode-contrastActiveBorder, var(--vscode-focusBorder));
510
outline-offset: 2px;
511
}
512
513
.sessions-walkthrough-theme-preview {
514
overflow: hidden;
515
}
516
517
.sessions-walkthrough-theme-preview-img {
518
display: block;
519
width: 100%;
520
height: auto;
521
}
522
523
.sessions-walkthrough-vscode-theme-option {
524
display: flex;
525
justify-content: center;
526
width: 100%;
527
margin-top: 24px;
528
}
529
530
.sessions-walkthrough-vscode-theme-radio {
531
min-width: 400px;
532
padding: 8px 20px;
533
border-radius: 8px;
534
border: 2px solid var(--vscode-radio-inactiveBorder, var(--vscode-widget-border, rgba(255, 255, 255, 0.1)));
535
background: var(--vscode-radio-inactiveBackground, transparent);
536
color: var(--vscode-radio-inactiveForeground, var(--vscode-foreground));
537
font-size: 13px;
538
font-weight: 500;
539
cursor: pointer;
540
touch-action: manipulation;
541
transition: border-color 100ms, background 100ms;
542
text-align: center;
543
}
544
545
.sessions-walkthrough-vscode-theme-radio:hover {
546
background: var(--vscode-radio-inactiveHoverBackground, color-mix(in srgb, var(--vscode-foreground) 8%, transparent));
547
}
548
549
.sessions-walkthrough-vscode-theme-radio.selected {
550
border-color: var(--vscode-focusBorder, #007acc);
551
box-shadow: 0 0 0 1px var(--vscode-focusBorder, #007acc);
552
background: var(--vscode-radio-activeBackground, transparent);
553
color: var(--vscode-radio-activeForeground, var(--vscode-foreground));
554
}
555
556
.sessions-walkthrough-vscode-theme-radio:focus-visible {
557
outline: 2px solid var(--vscode-focusBorder);
558
outline-offset: 2px;
559
}
560
561
.sessions-walkthrough-theme-label {
562
padding: 4px 6px;
563
font-size: 12px;
564
font-weight: 500;
565
text-align: center;
566
color: var(--vscode-foreground);
567
}
568
569
.sessions-walkthrough-theme-footer {
570
display: flex;
571
justify-content: center;
572
margin-top: 16px;
573
}
574
575
@media (max-width: 720px) {
576
.sessions-walkthrough-theme-card {
577
width: calc(50% - 5px);
578
}
579
}
580
581
@media (max-width: 480px) {
582
.sessions-walkthrough-theme-card {
583
width: 100%;
584
}
585
}
586
587
/* Reduced motion */
588
589
.monaco-reduce-motion .sessions-walkthrough-overlay,
590
.monaco-reduce-motion .sessions-walkthrough-content,
591
.monaco-reduce-motion .sessions-walkthrough-provider-btn,
592
.monaco-reduce-motion .sessions-walkthrough-provider-secondary,
593
.agent-sessions-workbench.monaco-reduce-motion .sessions-walkthrough-overlay,
594
.agent-sessions-workbench.monaco-reduce-motion .sessions-walkthrough-content,
595
.agent-sessions-workbench.monaco-reduce-motion .sessions-walkthrough-provider-btn,
596
.agent-sessions-workbench.monaco-reduce-motion .sessions-walkthrough-provider-secondary {
597
transition-duration: 0ms !important;
598
}
599
600
.monaco-reduce-motion .sessions-walkthrough-progress-bar-fill,
601
.agent-sessions-workbench.monaco-reduce-motion .sessions-walkthrough-progress-bar-fill {
602
animation: none !important;
603
}
604
605