@workbench-kit/react 0.0.1-prototype.0

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 (51) hide show
  1. package/package.json +62 -0
  2. package/src/index.ts +43 -0
  3. package/src/layout/Panel.tsx +27 -0
  4. package/src/layout/SideBarViewFrame.tsx +328 -0
  5. package/src/modal/ConfirmDialog.tsx +53 -0
  6. package/src/modal/Modal.tsx +110 -0
  7. package/src/overlay/ContextMenu.tsx +145 -0
  8. package/src/primitives/Badge.tsx +12 -0
  9. package/src/primitives/Button.tsx +14 -0
  10. package/src/primitives/Checkbox.tsx +15 -0
  11. package/src/primitives/EmptyState.tsx +26 -0
  12. package/src/primitives/Field.tsx +38 -0
  13. package/src/primitives/IconButton.tsx +32 -0
  14. package/src/primitives/Select.tsx +12 -0
  15. package/src/primitives/TextInput.tsx +24 -0
  16. package/src/primitives/Toolbar.tsx +8 -0
  17. package/src/styles.css +1762 -0
  18. package/src/utils/cx.ts +3 -0
  19. package/src/workbench/ActivityBar.tsx +52 -0
  20. package/src/workbench/SplitView.tsx +136 -0
  21. package/src/workbench/StatusBar.tsx +123 -0
  22. package/src/workbench/WorkbenchShell.tsx +70 -0
  23. package/src/workbench/WorkbenchStandaloneShell.tsx +291 -0
  24. package/src/workbench/chat/ChatComposer.tsx +148 -0
  25. package/src/workbench/chat/ChatMessageItem.tsx +35 -0
  26. package/src/workbench/chat/ChatMessageList.tsx +49 -0
  27. package/src/workbench/chat/ChatPanel.tsx +55 -0
  28. package/src/workbench/chat/index.ts +9 -0
  29. package/src/workbench/chat/types.ts +10 -0
  30. package/src/workbench/commands.ts +490 -0
  31. package/src/workbench/index.ts +98 -0
  32. package/src/workbench/settings/WorkbenchSettingsModal.tsx +188 -0
  33. package/src/workbench/settings/WorkbenchSettingsNav.tsx +41 -0
  34. package/src/workbench/settings/WorkbenchSettingsSection.tsx +30 -0
  35. package/src/workbench/settings/index.ts +7 -0
  36. package/src/workbench/settings/types.ts +16 -0
  37. package/src/workbench/shellState.ts +203 -0
  38. package/src/workbench/standalone.ts +94 -0
  39. package/src/workbench/workspace/WorkspaceEditor.tsx +226 -0
  40. package/src/workbench/workspace/WorkspaceEditorPanel.tsx +353 -0
  41. package/src/workbench/workspace/WorkspaceExplorer.tsx +524 -0
  42. package/src/workbench/workspace/WorkspaceFileIcon.tsx +149 -0
  43. package/src/workbench/workspace/WorkspaceHighlightedText.tsx +22 -0
  44. package/src/workbench/workspace/WorkspaceSearchPanel.tsx +113 -0
  45. package/src/workbench/workspace/WorkspaceSearchResults.tsx +47 -0
  46. package/src/workbench/workspace/index.ts +98 -0
  47. package/src/workbench/workspace/path.ts +10 -0
  48. package/src/workbench/workspace/search.ts +6 -0
  49. package/src/workbench/workspace/tree.ts +1 -0
  50. package/src/workbench/workspace/types.ts +10 -0
  51. package/src/workbench/workspace/useVirtualWorkspace.ts +98 -0
package/src/styles.css ADDED
@@ -0,0 +1,1762 @@
1
+ @import '@workbench-kit/tokens/styles.css';
2
+ @import '@vscode/codicons/dist/codicon.css';
3
+
4
+ .ide-root {
5
+ height: 100%;
6
+ display: flex;
7
+ flex-direction: column;
8
+ overflow: hidden;
9
+ color: var(--color-text);
10
+ background: var(--color-bg);
11
+ font-size: var(--font-size-base);
12
+ user-select: none;
13
+ }
14
+
15
+ .ide-root
16
+ :where(
17
+ input,
18
+ textarea,
19
+ select,
20
+ .message__bubble,
21
+ .md-content,
22
+ .workspace-editor__monaco,
23
+ .workspace-editor__monaco *
24
+ ) {
25
+ user-select: text;
26
+ }
27
+
28
+ .ide-body {
29
+ flex: 1;
30
+ min-height: 0;
31
+ display: flex;
32
+ overflow: hidden;
33
+ }
34
+
35
+ .ide-panel {
36
+ position: relative;
37
+ flex: 1;
38
+ min-height: 0;
39
+ display: flex;
40
+ flex-direction: column;
41
+ overflow: hidden;
42
+ background: var(--panel-bg, var(--color-bg));
43
+ }
44
+
45
+ .workbench-editor-area,
46
+ .workbench-primary-side-bar {
47
+ flex: 1;
48
+ min-width: 0;
49
+ min-height: 0;
50
+ display: flex;
51
+ flex-direction: column;
52
+ overflow: hidden;
53
+ }
54
+
55
+ .workbench-editor-area {
56
+ --panel-bg: var(--color-bg);
57
+ --panel-bg-75: var(--color-bg-75);
58
+ background: var(--panel-bg);
59
+ }
60
+
61
+ .workbench-primary-side-bar {
62
+ --panel-bg: var(--color-primary-side-bar-bg);
63
+ --panel-bg-75: var(--color-primary-side-bar-bg-75);
64
+ background: var(--panel-bg);
65
+ }
66
+
67
+ .primary-side-bar-shell {
68
+ flex: 1;
69
+ min-height: 0;
70
+ display: flex;
71
+ flex-direction: column;
72
+ }
73
+
74
+ .panel-header {
75
+ flex-shrink: 0;
76
+ height: var(--panel-header-height, var(--workbench-header-height));
77
+ display: flex;
78
+ align-items: center;
79
+ justify-content: space-between;
80
+ padding: 0 16px;
81
+ color: var(--color-text-muted);
82
+ background: var(--panel-bg, var(--color-bg));
83
+ border-bottom: 1px solid var(--color-border);
84
+ font-size: var(--font-size-sm);
85
+ }
86
+
87
+ .workbench-primary-side-bar .panel-header {
88
+ padding: 0 8px;
89
+ }
90
+
91
+ .panel-body {
92
+ flex: 1;
93
+ min-height: 0;
94
+ overflow-y: auto;
95
+ scrollbar-color: var(--color-border) transparent;
96
+ scrollbar-gutter: stable;
97
+ scrollbar-width: thin;
98
+ }
99
+
100
+ .workbench-primary-side-bar .panel-body {
101
+ scrollbar-gutter: auto;
102
+ scrollbar-width: none;
103
+ }
104
+
105
+ .panel-body::-webkit-scrollbar {
106
+ width: 10px;
107
+ }
108
+
109
+ .panel-body::-webkit-scrollbar-button {
110
+ display: none;
111
+ }
112
+
113
+ .panel-body::-webkit-scrollbar-track {
114
+ background: transparent;
115
+ }
116
+
117
+ .panel-body::-webkit-scrollbar-thumb {
118
+ background: var(--color-border);
119
+ border: 2px solid transparent;
120
+ border-radius: 5px;
121
+ background-clip: content-box;
122
+ }
123
+
124
+ .workbench-primary-side-bar .panel-body::-webkit-scrollbar {
125
+ width: 0;
126
+ height: 0;
127
+ }
128
+
129
+ .panel-footer {
130
+ flex-shrink: 0;
131
+ }
132
+
133
+ .ui-modal-overlay {
134
+ position: fixed;
135
+ inset: 0;
136
+ z-index: var(--ui-modal-z-index, 200);
137
+ display: flex;
138
+ align-items: center;
139
+ justify-content: center;
140
+ background: var(--ui-modal-overlay-bg, rgba(0, 0, 0, 0.48));
141
+ }
142
+
143
+ .ui-modal {
144
+ width: var(--ui-modal-width, 640px);
145
+ height: var(--ui-modal-height, auto);
146
+ max-width: var(--ui-modal-max-width, calc(100vw - 96px));
147
+ max-height: var(--ui-modal-max-height, calc(100vh - 96px));
148
+ display: flex;
149
+ flex-direction: column;
150
+ overflow: hidden;
151
+ color: var(--color-text);
152
+ background: var(--color-bg);
153
+ border: 1px solid var(--color-border);
154
+ border-radius: var(--radius-sm);
155
+ box-shadow: 0 16px 40px rgba(0, 0, 0, 0.45);
156
+ }
157
+
158
+ .ui-modal__titlebar {
159
+ height: 34px;
160
+ flex-shrink: 0;
161
+ display: flex;
162
+ align-items: center;
163
+ justify-content: space-between;
164
+ padding: 0 10px 0 16px;
165
+ background: var(--color-surface);
166
+ border-bottom: 1px solid var(--color-border);
167
+ }
168
+
169
+ .ui-modal__title {
170
+ display: flex;
171
+ align-items: center;
172
+ gap: 8px;
173
+ color: var(--color-text-muted);
174
+ font-size: var(--font-size-sm);
175
+ font-weight: 500;
176
+ }
177
+
178
+ .ui-modal__close {
179
+ width: 24px;
180
+ height: 24px;
181
+ display: inline-flex;
182
+ align-items: center;
183
+ justify-content: center;
184
+ border: 0;
185
+ border-radius: var(--radius-sm);
186
+ color: var(--color-text-muted);
187
+ background: transparent;
188
+ cursor: pointer;
189
+ }
190
+
191
+ .ui-modal__close:hover {
192
+ color: var(--color-text);
193
+ background: var(--color-surface-hover);
194
+ }
195
+
196
+ .ui-modal__body {
197
+ flex: 1;
198
+ min-height: 0;
199
+ overflow: hidden;
200
+ }
201
+
202
+ .ui-modal__footer {
203
+ height: 48px;
204
+ flex-shrink: 0;
205
+ display: flex;
206
+ align-items: center;
207
+ justify-content: flex-end;
208
+ gap: 8px;
209
+ padding: 0 16px;
210
+ border-top: 1px solid var(--color-border);
211
+ background: var(--color-surface);
212
+ }
213
+
214
+ .ui-confirm-dialog {
215
+ --ui-modal-width: 420px;
216
+ }
217
+
218
+ .ui-confirm-dialog__body {
219
+ padding: 20px;
220
+ color: var(--color-text-muted);
221
+ font-size: var(--font-size-sm);
222
+ }
223
+
224
+ .ui-confirm-dialog__message {
225
+ margin: 0 0 12px;
226
+ line-height: 1.5;
227
+ }
228
+
229
+ .ui-confirm-dialog__detail {
230
+ display: block;
231
+ padding: 8px;
232
+ overflow: hidden;
233
+ color: var(--color-text);
234
+ background: var(--color-surface);
235
+ border: 1px solid var(--color-border);
236
+ border-radius: var(--radius-sm);
237
+ text-overflow: ellipsis;
238
+ white-space: nowrap;
239
+ }
240
+
241
+ .ui-confirm-dialog__detail code {
242
+ font-family: ui-monospace, SFMono-Regular, Consolas, 'Liberation Mono', monospace;
243
+ }
244
+
245
+ .workbench-delete-targets {
246
+ display: flex;
247
+ max-height: 160px;
248
+ flex-direction: column;
249
+ gap: 4px;
250
+ overflow: auto;
251
+ white-space: normal;
252
+ }
253
+
254
+ .workbench-delete-targets code {
255
+ display: block;
256
+ overflow: hidden;
257
+ text-overflow: ellipsis;
258
+ white-space: nowrap;
259
+ }
260
+
261
+ .workbench-settings-modal {
262
+ --ui-modal-width: 1120px;
263
+ --ui-modal-height: 760px;
264
+ }
265
+
266
+ .workbench-settings-modal__body {
267
+ display: flex;
268
+ flex-direction: column;
269
+ background: var(--color-bg);
270
+ }
271
+
272
+ .workbench-settings-search {
273
+ flex-shrink: 0;
274
+ padding: 14px 24px 8px;
275
+ background: var(--color-bg);
276
+ }
277
+
278
+ .workbench-settings-tabs {
279
+ height: 34px;
280
+ flex-shrink: 0;
281
+ display: flex;
282
+ align-items: flex-end;
283
+ gap: 14px;
284
+ padding: 0 24px;
285
+ border-bottom: 1px solid var(--color-border);
286
+ background: var(--color-bg);
287
+ }
288
+
289
+ .workbench-settings-tab {
290
+ height: 34px;
291
+ padding: 0;
292
+ border: 0;
293
+ border-bottom: 1px solid transparent;
294
+ color: var(--color-text-muted);
295
+ background: transparent;
296
+ font-family: inherit;
297
+ font-size: var(--font-size-sm);
298
+ cursor: pointer;
299
+ }
300
+
301
+ .workbench-settings-tab:hover {
302
+ color: var(--color-text);
303
+ }
304
+
305
+ .workbench-settings-tab:disabled,
306
+ .workbench-settings-tab:disabled:hover {
307
+ color: var(--color-text-subtle);
308
+ cursor: default;
309
+ }
310
+
311
+ .workbench-settings-tab--active {
312
+ color: var(--color-text);
313
+ border-bottom-color: var(--color-text);
314
+ }
315
+
316
+ .workbench-settings-layout {
317
+ flex: 1;
318
+ min-height: 0;
319
+ display: grid;
320
+ grid-template-columns: 180px minmax(0, 1fr);
321
+ }
322
+
323
+ .workbench-settings-sidebar {
324
+ display: flex;
325
+ flex-direction: column;
326
+ gap: 2px;
327
+ padding: 14px 12px 14px 24px;
328
+ border-right: 1px solid var(--color-border);
329
+ overflow-y: auto;
330
+ }
331
+
332
+ .workbench-settings-nav-item {
333
+ width: 100%;
334
+ min-height: 24px;
335
+ display: flex;
336
+ align-items: center;
337
+ padding: 0 8px;
338
+ border: 0;
339
+ border-radius: var(--radius-sm);
340
+ color: var(--color-text-muted);
341
+ background: transparent;
342
+ font-family: inherit;
343
+ font-size: var(--font-size-sm);
344
+ text-align: left;
345
+ cursor: pointer;
346
+ }
347
+
348
+ .workbench-settings-nav-item:hover {
349
+ color: var(--color-text);
350
+ background: var(--color-surface-hover);
351
+ }
352
+
353
+ .workbench-settings-nav-item:disabled,
354
+ .workbench-settings-nav-item:disabled:hover {
355
+ color: var(--color-text-subtle);
356
+ background: transparent;
357
+ cursor: default;
358
+ }
359
+
360
+ .workbench-settings-nav-item--active,
361
+ .workbench-settings-nav-item--active:hover {
362
+ color: var(--color-text);
363
+ background: var(--color-surface-hover);
364
+ font-weight: 600;
365
+ }
366
+
367
+ .workbench-settings-content {
368
+ min-width: 0;
369
+ padding: 0 24px 32px;
370
+ overflow-y: auto;
371
+ scrollbar-color: var(--color-border) transparent;
372
+ scrollbar-gutter: stable;
373
+ scrollbar-width: thin;
374
+ }
375
+
376
+ .workbench-settings-section {
377
+ max-width: 920px;
378
+ padding-top: 20px;
379
+ }
380
+
381
+ .workbench-settings-section__title {
382
+ margin: 0 0 10px;
383
+ color: var(--color-text);
384
+ font-size: 1.45rem;
385
+ font-weight: 600;
386
+ line-height: 1.2;
387
+ }
388
+
389
+ .workbench-settings-section__description {
390
+ max-width: 760px;
391
+ margin: 0 0 18px;
392
+ color: var(--color-text-muted);
393
+ font-size: var(--font-size-sm);
394
+ line-height: 1.5;
395
+ }
396
+
397
+ .workbench-settings-footer__spacer {
398
+ flex: 1;
399
+ }
400
+
401
+ .workbench-settings-badge-list {
402
+ display: flex;
403
+ flex-wrap: wrap;
404
+ gap: 6px;
405
+ }
406
+
407
+ @media (max-width: 760px) {
408
+ .workbench-settings-modal {
409
+ --ui-modal-max-width: calc(100vw - 24px);
410
+ --ui-modal-max-height: calc(100vh - 24px);
411
+ }
412
+
413
+ .workbench-settings-layout {
414
+ grid-template-columns: minmax(0, 1fr);
415
+ }
416
+
417
+ .workbench-settings-sidebar {
418
+ flex-direction: row;
419
+ padding: 8px 12px;
420
+ border-right: 0;
421
+ border-bottom: 1px solid var(--color-border);
422
+ overflow-x: auto;
423
+ overflow-y: hidden;
424
+ }
425
+
426
+ .workbench-settings-nav-item {
427
+ width: auto;
428
+ flex: 0 0 auto;
429
+ }
430
+
431
+ .workbench-settings-content {
432
+ padding-inline: 16px;
433
+ }
434
+ }
435
+
436
+ .ui-context-menu {
437
+ position: fixed;
438
+ z-index: var(--ui-context-menu-z-index, 260);
439
+ min-width: 190px;
440
+ max-width: 300px;
441
+ padding: 4px;
442
+ color: var(--color-text);
443
+ background: var(--color-surface);
444
+ border: 1px solid var(--color-border);
445
+ border-radius: var(--radius-sm);
446
+ box-shadow: 0 8px 24px rgba(0, 0, 0, 0.35);
447
+ }
448
+
449
+ .ui-context-menu__item {
450
+ width: 100%;
451
+ min-height: 26px;
452
+ display: grid;
453
+ grid-template-columns: 20px minmax(0, 1fr) auto;
454
+ align-items: center;
455
+ gap: 7px;
456
+ padding: 0 8px;
457
+ border: 0;
458
+ border-radius: var(--radius-sm);
459
+ color: var(--color-text-muted);
460
+ background: transparent;
461
+ font-family: inherit;
462
+ font-size: var(--font-size-sm);
463
+ text-align: left;
464
+ cursor: pointer;
465
+ }
466
+
467
+ .ui-context-menu__item:hover,
468
+ .ui-context-menu__item:focus-visible {
469
+ color: var(--color-text);
470
+ background: var(--color-surface-hover);
471
+ outline: none;
472
+ }
473
+
474
+ .ui-context-menu__item:disabled {
475
+ color: var(--color-text-subtle);
476
+ background: transparent;
477
+ cursor: default;
478
+ }
479
+
480
+ .ui-context-menu__item[data-danger='true'] {
481
+ color: var(--color-danger);
482
+ }
483
+
484
+ .ui-context-menu__item[data-danger='true']:hover,
485
+ .ui-context-menu__item[data-danger='true']:focus-visible {
486
+ color: #fff;
487
+ background: var(--color-danger);
488
+ }
489
+
490
+ .ui-context-menu__icon {
491
+ display: inline-flex;
492
+ align-items: center;
493
+ justify-content: center;
494
+ color: inherit;
495
+ }
496
+
497
+ .ui-context-menu__icon .codicon {
498
+ font-size: 14px;
499
+ }
500
+
501
+ .ui-context-menu__label {
502
+ min-width: 0;
503
+ overflow: hidden;
504
+ text-overflow: ellipsis;
505
+ white-space: nowrap;
506
+ }
507
+
508
+ .ui-context-menu__shortcut {
509
+ color: var(--color-text-subtle);
510
+ font-size: 11px;
511
+ }
512
+
513
+ .ui-context-menu__separator {
514
+ height: 1px;
515
+ margin: 4px 6px;
516
+ background: var(--color-border);
517
+ }
518
+
519
+ .ui-workbench-split-view {
520
+ display: grid;
521
+ grid-template-columns: var(--ui-workbench-split-primary-size, 40%) 1px 1fr;
522
+ flex: 1;
523
+ min-width: 0;
524
+ min-height: 0;
525
+ overflow: hidden;
526
+ }
527
+
528
+ .ui-workbench-split-view__primary,
529
+ .ui-workbench-split-view__secondary {
530
+ min-width: 0;
531
+ min-height: 0;
532
+ overflow: hidden;
533
+ display: flex;
534
+ flex-direction: column;
535
+ }
536
+
537
+ .ui-workbench-split-view__separator {
538
+ cursor: col-resize;
539
+ background: var(--color-border);
540
+ position: relative;
541
+ transition: background 0.15s;
542
+ touch-action: none;
543
+ user-select: none;
544
+ }
545
+
546
+ .ui-workbench-split-view__separator::after {
547
+ content: '';
548
+ position: absolute;
549
+ inset: 0 -8px;
550
+ }
551
+
552
+ .ui-workbench-split-view__separator:hover,
553
+ .ui-workbench-split-view__separator.is-dragging {
554
+ background: var(--color-text-subtle);
555
+ }
556
+
557
+ .ui-workbench-split-view__separator:focus-visible {
558
+ outline: 1px solid var(--color-accent);
559
+ outline-offset: -1px;
560
+ }
561
+
562
+ .ui-workbench-split-view__handle {
563
+ position: absolute;
564
+ left: 50%;
565
+ top: 50%;
566
+ transform: translate(-50%, -50%);
567
+ width: 3px;
568
+ height: 24px;
569
+ border-radius: 2px;
570
+ background: var(--color-text-muted);
571
+ opacity: 0;
572
+ transition: opacity 0.15s;
573
+ pointer-events: none;
574
+ }
575
+
576
+ .ui-workbench-split-view__separator:hover .ui-workbench-split-view__handle,
577
+ .ui-workbench-split-view__separator.is-dragging .ui-workbench-split-view__handle {
578
+ opacity: 1;
579
+ }
580
+
581
+ .ui-workbench-activity-bar {
582
+ flex-shrink: 0;
583
+ width: 48px;
584
+ background: var(--color-surface);
585
+ border-right: 1px solid var(--color-border);
586
+ display: flex;
587
+ flex-direction: column;
588
+ align-items: center;
589
+ padding: 4px 0;
590
+ gap: 0;
591
+ user-select: none;
592
+ }
593
+
594
+ .ui-workbench-activity-bar__item {
595
+ position: relative;
596
+ width: 48px;
597
+ height: 48px;
598
+ border: none;
599
+ border-radius: var(--radius-sm);
600
+ color: var(--color-text-subtle);
601
+ background: transparent;
602
+ font-family: inherit;
603
+ font-size: 0;
604
+ cursor: pointer;
605
+ display: flex;
606
+ align-items: center;
607
+ justify-content: center;
608
+ transition: color 0.1s;
609
+ }
610
+
611
+ .ui-workbench-activity-bar__item::before {
612
+ content: '';
613
+ position: absolute;
614
+ inset: 4px;
615
+ border-radius: var(--radius-sm);
616
+ background: transparent;
617
+ transition: background 0.1s;
618
+ }
619
+
620
+ .ui-workbench-activity-bar__icon {
621
+ position: relative;
622
+ z-index: 1;
623
+ display: inline-flex;
624
+ align-items: center;
625
+ justify-content: center;
626
+ }
627
+
628
+ .ui-workbench-activity-bar__icon .codicon[class*='codicon-'] {
629
+ width: 32px;
630
+ height: 32px;
631
+ display: inline-flex;
632
+ align-items: center;
633
+ justify-content: center;
634
+ font-size: 30px;
635
+ line-height: 32px;
636
+ }
637
+
638
+ .ui-workbench-activity-bar__item:hover {
639
+ color: var(--color-text-muted);
640
+ }
641
+
642
+ .ui-workbench-activity-bar__item:hover::before {
643
+ background: var(--color-surface-hover);
644
+ }
645
+
646
+ .ui-workbench-activity-bar__item--active {
647
+ color: var(--color-text);
648
+ }
649
+
650
+ .ui-workbench-activity-bar__item--active::before {
651
+ background: var(--color-surface-hover);
652
+ }
653
+
654
+ .ui-workbench-activity-bar__item:focus-visible {
655
+ outline: 1px solid var(--color-accent);
656
+ outline-offset: -4px;
657
+ }
658
+
659
+ .ui-workbench-activity-bar__spacer {
660
+ flex: 1;
661
+ }
662
+
663
+ .ui-workbench-status-bar {
664
+ flex-shrink: 0;
665
+ min-height: 24px;
666
+ display: flex;
667
+ align-items: stretch;
668
+ gap: 8px;
669
+ padding: 0 8px;
670
+ color: var(--color-text);
671
+ background: var(--color-surface);
672
+ border-top: 1px solid var(--color-border);
673
+ font-size: 12px;
674
+ user-select: none;
675
+ }
676
+
677
+ .ui-workbench-status-bar--compact {
678
+ min-height: 22px;
679
+ }
680
+
681
+ .ui-workbench-status-bar__section {
682
+ min-width: 0;
683
+ display: inline-flex;
684
+ align-items: stretch;
685
+ }
686
+
687
+ .ui-workbench-status-bar__section--end {
688
+ margin-left: auto;
689
+ }
690
+
691
+ .ui-workbench-status-bar__item {
692
+ min-width: 0;
693
+ min-height: inherit;
694
+ display: inline-flex;
695
+ align-items: center;
696
+ gap: 5px;
697
+ padding: 0 8px;
698
+ border: 0;
699
+ border-radius: 0;
700
+ color: var(--color-text-muted);
701
+ background: transparent;
702
+ font-family: inherit;
703
+ font-size: inherit;
704
+ cursor: pointer;
705
+ }
706
+
707
+ .ui-workbench-status-bar__item:hover,
708
+ .ui-workbench-status-bar__item:focus-visible,
709
+ .ui-workbench-status-bar__item--active {
710
+ color: var(--color-text);
711
+ background: var(--color-surface-hover);
712
+ }
713
+
714
+ .ui-workbench-status-bar__item:focus-visible {
715
+ outline: 1px solid var(--color-accent);
716
+ outline-offset: -1px;
717
+ }
718
+
719
+ .ui-workbench-status-bar__item:disabled {
720
+ color: var(--color-text-subtle);
721
+ background: transparent;
722
+ cursor: default;
723
+ }
724
+
725
+ .ui-workbench-status-bar__icon {
726
+ display: inline-flex;
727
+ align-items: center;
728
+ justify-content: center;
729
+ }
730
+
731
+ .ui-workbench-status-bar__icon .codicon {
732
+ font-size: 13px;
733
+ }
734
+
735
+ .ui-workbench-status-bar__label {
736
+ min-width: 0;
737
+ overflow: hidden;
738
+ text-overflow: ellipsis;
739
+ white-space: nowrap;
740
+ }
741
+
742
+ .ui-panel-header__title {
743
+ min-width: 0;
744
+ overflow: hidden;
745
+ text-overflow: ellipsis;
746
+ white-space: nowrap;
747
+ }
748
+
749
+ .ui-panel-header__actions,
750
+ .ui-toolbar {
751
+ display: inline-flex;
752
+ align-items: center;
753
+ gap: 6px;
754
+ }
755
+
756
+ .ui-side-bar-view .panel-header {
757
+ border-bottom: 0;
758
+ padding: 0 var(--ui-side-bar-inline-padding);
759
+ }
760
+
761
+ .ui-side-bar-view {
762
+ --ui-side-bar-footer-gap: 6px;
763
+ --ui-side-bar-footer-height: 0px;
764
+ --ui-side-bar-inline-padding: 8px;
765
+ --ui-side-bar-row-block-padding: 6px;
766
+ --ui-side-bar-tree-indent-step: 14px;
767
+ }
768
+
769
+ .ui-side-bar-view__header-addon {
770
+ flex-shrink: 0;
771
+ background: var(--panel-bg, var(--color-bg));
772
+ }
773
+
774
+ .ui-side-bar-header-control {
775
+ flex-shrink: 0;
776
+ padding: 0 var(--ui-side-bar-inline-padding) var(--ui-side-bar-inline-padding);
777
+ }
778
+
779
+ .ui-side-bar-view__scroll-region {
780
+ position: relative;
781
+ flex: 1;
782
+ min-height: 0;
783
+ display: flex;
784
+ flex-direction: column;
785
+ overflow: hidden;
786
+ }
787
+
788
+ .ui-side-bar-view__body {
789
+ flex: 1;
790
+ min-height: 0;
791
+ display: flex;
792
+ flex-direction: column;
793
+ scrollbar-gutter: auto;
794
+ }
795
+
796
+ .ui-side-bar-view__footer--overlay {
797
+ position: absolute;
798
+ left: 0;
799
+ right: 0;
800
+ bottom: 0;
801
+ z-index: 5;
802
+ background: transparent;
803
+ pointer-events: none;
804
+ }
805
+
806
+ .ui-side-bar-scroll-spacer {
807
+ flex-shrink: 0;
808
+ height: calc(var(--ui-side-bar-footer-height) + var(--ui-side-bar-footer-gap));
809
+ }
810
+
811
+ .ui-side-bar-overlay-scrollbar {
812
+ position: absolute;
813
+ top: 0;
814
+ right: 0;
815
+ bottom: 0;
816
+ z-index: 4;
817
+ width: 10px;
818
+ opacity: 0;
819
+ pointer-events: none;
820
+ transition: opacity 100ms linear;
821
+ }
822
+
823
+ .ui-side-bar-view__scroll-region:hover .ui-side-bar-overlay-scrollbar,
824
+ .ui-side-bar-view__scroll-region:focus-within .ui-side-bar-overlay-scrollbar,
825
+ .ui-side-bar-overlay-scrollbar--dragging {
826
+ opacity: 1;
827
+ pointer-events: auto;
828
+ }
829
+
830
+ .ui-side-bar-overlay-scrollbar__thumb {
831
+ position: absolute;
832
+ top: 0;
833
+ right: 2px;
834
+ width: 6px;
835
+ min-height: 24px;
836
+ border-radius: 999px;
837
+ background: color-mix(in srgb, var(--color-text-muted) 36%, transparent);
838
+ cursor: default;
839
+ }
840
+
841
+ .ui-side-bar-overlay-scrollbar__thumb:hover,
842
+ .ui-side-bar-overlay-scrollbar--dragging .ui-side-bar-overlay-scrollbar__thumb {
843
+ background: color-mix(in srgb, var(--color-text-muted) 56%, transparent);
844
+ }
845
+
846
+ .ui-side-bar-list {
847
+ margin: 0;
848
+ padding: 0;
849
+ list-style: none;
850
+ }
851
+
852
+ .ui-side-bar-list--fill {
853
+ min-height: 100%;
854
+ }
855
+
856
+ .ui-side-bar-list--drop-target {
857
+ background: color-mix(in srgb, var(--color-accent) 12%, transparent);
858
+ outline: 1px solid var(--color-accent);
859
+ outline-offset: -1px;
860
+ }
861
+
862
+ .ui-side-bar-list-entry {
863
+ margin: 0;
864
+ padding: 0;
865
+ }
866
+
867
+ .ui-side-bar-row {
868
+ display: flex;
869
+ align-items: center;
870
+ }
871
+
872
+ .ui-side-bar-list-item {
873
+ --depth: 0;
874
+ width: 100%;
875
+ min-width: 0;
876
+ min-height: 26px;
877
+ display: flex;
878
+ align-items: center;
879
+ gap: 5px;
880
+ padding: 0 var(--ui-side-bar-inline-padding) 0
881
+ calc(var(--ui-side-bar-inline-padding) + (var(--depth) * var(--ui-side-bar-tree-indent-step)));
882
+ border: 0;
883
+ border-radius: 0;
884
+ color: var(--color-text-muted);
885
+ background: transparent;
886
+ font-family: inherit;
887
+ font-size: var(--font-size-sm);
888
+ text-align: left;
889
+ cursor: pointer;
890
+ user-select: none;
891
+ }
892
+
893
+ .ui-side-bar-list-item:hover,
894
+ .ui-side-bar-row:hover {
895
+ background: var(--color-surface-hover);
896
+ }
897
+
898
+ .ui-side-bar-row .ui-side-bar-list-item {
899
+ width: auto;
900
+ flex: 1;
901
+ }
902
+
903
+ .ui-side-bar-row .ui-side-bar-list-item:hover {
904
+ background: transparent;
905
+ }
906
+
907
+ .ui-side-bar-list-item--active {
908
+ color: var(--color-text);
909
+ background: var(--color-surface-hover);
910
+ }
911
+
912
+ .ui-side-bar-list-item--selected {
913
+ color: var(--color-text);
914
+ background: color-mix(in srgb, var(--color-accent) 16%, transparent);
915
+ }
916
+
917
+ .ui-side-bar-list-item--selected:hover {
918
+ background: color-mix(in srgb, var(--color-accent) 22%, transparent);
919
+ }
920
+
921
+ .ui-side-bar-list-item--active.ui-side-bar-list-item--selected {
922
+ background: color-mix(in srgb, var(--color-accent) 28%, var(--color-surface-hover));
923
+ }
924
+
925
+ .ui-side-bar-list-item--drop-target,
926
+ .ui-side-bar-list-item--drop-target:hover {
927
+ color: var(--color-text);
928
+ background: color-mix(in srgb, var(--color-accent) 20%, transparent);
929
+ outline: 1px solid var(--color-accent);
930
+ outline-offset: -1px;
931
+ }
932
+
933
+ .ui-side-bar-inline-edit {
934
+ --depth: 0;
935
+ min-height: 26px;
936
+ display: flex;
937
+ align-items: center;
938
+ gap: 5px;
939
+ padding: 2px var(--ui-side-bar-inline-padding) 2px
940
+ calc(var(--ui-side-bar-inline-padding) + (var(--depth) * var(--ui-side-bar-tree-indent-step)));
941
+ }
942
+
943
+ .ui-side-bar-inline-edit__input {
944
+ width: 100%;
945
+ min-width: 0;
946
+ height: 22px;
947
+ padding: 0 6px;
948
+ border: 1px solid var(--color-accent);
949
+ border-radius: 2px;
950
+ color: var(--color-text);
951
+ background: var(--color-surface);
952
+ font: inherit;
953
+ outline: none;
954
+ }
955
+
956
+ .ui-side-bar-inline-edit__error {
957
+ --depth: 0;
958
+ padding: 1px var(--ui-side-bar-inline-padding) 4px
959
+ calc(
960
+ var(--ui-side-bar-inline-padding) + 19px +
961
+ (var(--depth) * var(--ui-side-bar-tree-indent-step))
962
+ );
963
+ color: var(--color-danger);
964
+ font-size: var(--font-size-xs);
965
+ line-height: 1.35;
966
+ }
967
+
968
+ .ui-side-bar-list-item--stacked {
969
+ min-height: 54px;
970
+ flex-direction: column;
971
+ align-items: stretch;
972
+ justify-content: center;
973
+ gap: 4px;
974
+ }
975
+
976
+ .workbench-tree-prefix,
977
+ .workbench-editor-title,
978
+ .workbench-search-card strong,
979
+ .ui-side-bar-list-item strong {
980
+ min-width: 0;
981
+ display: inline-flex;
982
+ align-items: center;
983
+ gap: 5px;
984
+ }
985
+
986
+ .workbench-tree-prefix {
987
+ flex-shrink: 0;
988
+ }
989
+
990
+ .workbench-tree-chevron,
991
+ .workbench-tree-spacer {
992
+ width: 14px;
993
+ flex-shrink: 0;
994
+ color: var(--color-text-subtle);
995
+ font-size: 12px;
996
+ }
997
+
998
+ .workbench-tree-spacer {
999
+ display: inline-block;
1000
+ }
1001
+
1002
+ .workbench-tree-label,
1003
+ .workbench-editor-title,
1004
+ .workbench-search-card strong,
1005
+ .workbench-search-card span,
1006
+ .ui-side-bar-list-item strong,
1007
+ .ui-side-bar-list-item span {
1008
+ min-width: 0;
1009
+ overflow: hidden;
1010
+ text-overflow: ellipsis;
1011
+ white-space: nowrap;
1012
+ }
1013
+
1014
+ .workspace-file-icon {
1015
+ flex-shrink: 0;
1016
+ color: var(--color-text-muted);
1017
+ }
1018
+
1019
+ .workspace-file-icon[data-file-kind='folder'] {
1020
+ color: #d6aa37;
1021
+ }
1022
+
1023
+ .workspace-file-icon[data-file-kind='typescript'] {
1024
+ color: #4aa8ff;
1025
+ }
1026
+
1027
+ .workspace-file-icon[data-file-kind='javascript'] {
1028
+ color: #e7c349;
1029
+ }
1030
+
1031
+ .workspace-file-icon[data-file-kind='css'] {
1032
+ color: #b07cff;
1033
+ }
1034
+
1035
+ .workspace-file-icon[data-file-kind='html'],
1036
+ .workspace-file-icon[data-file-kind='xml'] {
1037
+ color: #ef7d57;
1038
+ }
1039
+
1040
+ .workspace-file-icon[data-file-kind='json'],
1041
+ .workspace-file-icon[data-file-kind='package'],
1042
+ .workspace-file-icon[data-file-kind='yaml'] {
1043
+ color: #7fc972;
1044
+ }
1045
+
1046
+ .workspace-file-icon[data-file-kind='markdown'],
1047
+ .workspace-file-icon[data-file-kind='text'] {
1048
+ color: #9fb0c3;
1049
+ }
1050
+
1051
+ .workspace-file-icon[data-file-kind='image'] {
1052
+ color: #d678c8;
1053
+ }
1054
+
1055
+ .workspace-file-icon[data-file-kind='env'],
1056
+ .workspace-file-icon[data-file-kind='git'],
1057
+ .workspace-file-icon[data-file-kind='lock'] {
1058
+ color: #d88955;
1059
+ }
1060
+
1061
+ .workspace-file-icon[data-file-kind='archive'],
1062
+ .workspace-file-icon[data-file-kind='pdf'],
1063
+ .workspace-file-icon[data-file-kind='sql'] {
1064
+ color: #55b9ad;
1065
+ }
1066
+
1067
+ .workbench-search-control {
1068
+ display: grid;
1069
+ grid-template-columns: minmax(0, 1fr) auto;
1070
+ gap: 6px;
1071
+ }
1072
+
1073
+ .workbench-search-mark {
1074
+ padding: 0 1px;
1075
+ color: var(--color-text);
1076
+ background: color-mix(in srgb, var(--color-accent) 34%, transparent);
1077
+ border-radius: 2px;
1078
+ }
1079
+
1080
+ .workbench-search-card {
1081
+ width: 100%;
1082
+ display: grid;
1083
+ grid-template-columns: minmax(0, 1fr) auto;
1084
+ align-items: center;
1085
+ gap: 8px;
1086
+ padding: 12px;
1087
+ border: 1px solid var(--color-border);
1088
+ border-radius: var(--radius-sm);
1089
+ color: var(--color-text-muted);
1090
+ background: var(--color-surface);
1091
+ font: inherit;
1092
+ text-align: left;
1093
+ cursor: pointer;
1094
+ }
1095
+
1096
+ .workbench-search-card:hover,
1097
+ .workbench-search-card[data-active='true'] {
1098
+ color: var(--color-text);
1099
+ background: var(--color-surface-hover);
1100
+ }
1101
+
1102
+ .workbench-search-card__meta {
1103
+ display: inline-flex;
1104
+ flex-shrink: 0;
1105
+ gap: 6px;
1106
+ }
1107
+
1108
+ .workbench-monaco-panel {
1109
+ min-height: 0;
1110
+ }
1111
+
1112
+ .workbench-monaco-panel__body {
1113
+ overflow: hidden;
1114
+ background: var(--color-bg);
1115
+ }
1116
+
1117
+ .workspace-editor__monaco {
1118
+ height: 100%;
1119
+ min-height: 0;
1120
+ overflow: hidden;
1121
+ background: var(--color-bg);
1122
+ }
1123
+
1124
+ .workbench-status-dot {
1125
+ width: 7px;
1126
+ height: 7px;
1127
+ display: inline-block;
1128
+ border-radius: 50%;
1129
+ background: #5fbf72;
1130
+ }
1131
+
1132
+ .chat-side-bar-view {
1133
+ --chat-side-bar-vertical-padding: var(--ui-side-bar-footer-gap);
1134
+ }
1135
+
1136
+ .message-list {
1137
+ padding: 8px var(--ui-side-bar-inline-padding) 0;
1138
+ display: flex;
1139
+ flex-direction: column;
1140
+ gap: 0;
1141
+ }
1142
+
1143
+ .message-empty {
1144
+ flex: 1;
1145
+ min-height: 180px;
1146
+ display: flex;
1147
+ flex-direction: column;
1148
+ align-items: center;
1149
+ justify-content: center;
1150
+ gap: 8px;
1151
+ color: var(--color-text-subtle);
1152
+ font-size: var(--font-size-sm);
1153
+ }
1154
+
1155
+ .message-empty .codicon {
1156
+ font-size: 24px;
1157
+ }
1158
+
1159
+ .message {
1160
+ padding: 10px 0;
1161
+ }
1162
+
1163
+ .message--user {
1164
+ display: flex;
1165
+ justify-content: flex-end;
1166
+ }
1167
+
1168
+ .message__bubble {
1169
+ max-width: 78%;
1170
+ padding: 10px 14px;
1171
+ overflow-wrap: break-word;
1172
+ color: var(--color-text);
1173
+ background: var(--color-surface-hover);
1174
+ border-radius: 16px 16px 4px 16px;
1175
+ font-size: var(--font-size-base);
1176
+ line-height: 1.6;
1177
+ white-space: pre-wrap;
1178
+ }
1179
+
1180
+ .message--assistant {
1181
+ padding-bottom: 14px;
1182
+ border-bottom: 1px solid var(--color-border);
1183
+ }
1184
+
1185
+ .message--assistant:last-child {
1186
+ border-bottom: 0;
1187
+ }
1188
+
1189
+ .message__label {
1190
+ display: flex;
1191
+ align-items: center;
1192
+ gap: 6px;
1193
+ margin-bottom: 6px;
1194
+ font-size: 11px;
1195
+ font-weight: 600;
1196
+ }
1197
+
1198
+ .message__label--assistant {
1199
+ color: var(--color-accent);
1200
+ }
1201
+
1202
+ .message__label-icon {
1203
+ font-size: 12px;
1204
+ }
1205
+
1206
+ .md-content {
1207
+ color: var(--color-text);
1208
+ font-size: var(--font-size-base);
1209
+ line-height: 1.65;
1210
+ }
1211
+
1212
+ .md-content p {
1213
+ margin: 0 0 10px;
1214
+ }
1215
+
1216
+ .md-content p:last-child {
1217
+ margin-bottom: 0;
1218
+ }
1219
+
1220
+ .md-content strong {
1221
+ color: var(--color-text);
1222
+ font-weight: 600;
1223
+ }
1224
+
1225
+ .md-content ul,
1226
+ .md-content ol {
1227
+ margin: 0 0 10px;
1228
+ padding-left: 20px;
1229
+ }
1230
+
1231
+ .md-content li {
1232
+ margin-bottom: 4px;
1233
+ }
1234
+
1235
+ .md-content code {
1236
+ padding: 1px 5px;
1237
+ border: 1px solid var(--color-border);
1238
+ border-radius: 3px;
1239
+ background: var(--color-surface-hover);
1240
+ font-family: ui-monospace, 'Cascadia Code', Menlo, monospace;
1241
+ font-size: 0.85em;
1242
+ }
1243
+
1244
+ .md-content pre {
1245
+ margin: 10px 0;
1246
+ overflow: hidden;
1247
+ border: 1px solid var(--color-border);
1248
+ border-radius: var(--radius-sm);
1249
+ }
1250
+
1251
+ .md-content pre code {
1252
+ display: block;
1253
+ padding: 12px 14px;
1254
+ overflow-x: auto;
1255
+ border: 0;
1256
+ border-radius: 0;
1257
+ background: var(--panel-bg, var(--color-bg));
1258
+ font-size: 0.8rem;
1259
+ line-height: 1.6;
1260
+ scrollbar-color: var(--color-border) transparent;
1261
+ scrollbar-width: thin;
1262
+ white-space: pre;
1263
+ }
1264
+
1265
+ .md-content blockquote {
1266
+ margin: 8px 0;
1267
+ padding-left: 12px;
1268
+ color: var(--color-text-muted);
1269
+ border-left: 3px solid var(--color-border);
1270
+ }
1271
+
1272
+ .md-content h1,
1273
+ .md-content h2,
1274
+ .md-content h3 {
1275
+ margin: 12px 0 6px;
1276
+ color: var(--color-text);
1277
+ font-weight: 600;
1278
+ }
1279
+
1280
+ .md-content h1 {
1281
+ font-size: 1rem;
1282
+ }
1283
+
1284
+ .md-content h2 {
1285
+ font-size: 0.95rem;
1286
+ }
1287
+
1288
+ .md-content h3 {
1289
+ font-size: 0.9rem;
1290
+ }
1291
+
1292
+ .message__cursor {
1293
+ width: 2px;
1294
+ height: 14px;
1295
+ display: inline-block;
1296
+ margin-left: 1px;
1297
+ vertical-align: middle;
1298
+ background: var(--color-accent);
1299
+ animation: workbench-cursor-blink 1s step-end infinite;
1300
+ }
1301
+
1302
+ @keyframes workbench-cursor-blink {
1303
+ 50% {
1304
+ opacity: 0;
1305
+ }
1306
+ }
1307
+
1308
+ .composer {
1309
+ flex-shrink: 0;
1310
+ padding: var(--chat-side-bar-vertical-padding) var(--ui-side-bar-inline-padding);
1311
+ background: transparent;
1312
+ pointer-events: none;
1313
+ }
1314
+
1315
+ .composer__box {
1316
+ overflow: hidden;
1317
+ border: 1px solid var(--color-border);
1318
+ border-radius: var(--radius-sm);
1319
+ background: var(--color-surface);
1320
+ pointer-events: auto;
1321
+ transition: border-color 0.15s;
1322
+ }
1323
+
1324
+ .composer__box:focus-within {
1325
+ border-color: var(--color-accent);
1326
+ }
1327
+
1328
+ .composer__textarea {
1329
+ box-sizing: border-box;
1330
+ width: 100%;
1331
+ max-height: 160px;
1332
+ display: block;
1333
+ margin: 0;
1334
+ padding: 10px 12px 6px;
1335
+ overflow-y: auto;
1336
+ border: 0;
1337
+ color: var(--color-text);
1338
+ background: transparent;
1339
+ font-family: inherit;
1340
+ font-size: var(--font-size-base);
1341
+ line-height: 1.5;
1342
+ outline: none;
1343
+ resize: none;
1344
+ scrollbar-color: var(--color-border) transparent;
1345
+ scrollbar-width: thin;
1346
+ }
1347
+
1348
+ .composer__textarea::placeholder {
1349
+ color: var(--color-text-subtle);
1350
+ }
1351
+
1352
+ .composer__toolbar {
1353
+ display: flex;
1354
+ align-items: center;
1355
+ justify-content: space-between;
1356
+ padding: 4px 6px;
1357
+ }
1358
+
1359
+ .composer__toolbar-left,
1360
+ .composer__toolbar-right {
1361
+ display: flex;
1362
+ align-items: center;
1363
+ gap: 2px;
1364
+ }
1365
+
1366
+ .composer__tool-btn,
1367
+ .composer__send-btn {
1368
+ display: flex;
1369
+ align-items: center;
1370
+ justify-content: center;
1371
+ border: 0;
1372
+ border-radius: var(--radius-sm);
1373
+ font-family: inherit;
1374
+ cursor: pointer;
1375
+ }
1376
+
1377
+ .composer__tool-btn {
1378
+ width: 26px;
1379
+ height: 26px;
1380
+ color: var(--color-text-subtle);
1381
+ background: transparent;
1382
+ font-size: 14px;
1383
+ }
1384
+
1385
+ .composer__tool-btn:hover {
1386
+ color: var(--color-text-muted);
1387
+ background: var(--color-surface-hover);
1388
+ }
1389
+
1390
+ .composer__send-btn {
1391
+ width: 28px;
1392
+ height: 28px;
1393
+ color: #fff;
1394
+ background: var(--color-accent);
1395
+ font-size: 14px;
1396
+ }
1397
+
1398
+ .composer__send-btn:hover {
1399
+ background: var(--color-accent-hover);
1400
+ }
1401
+
1402
+ .composer__send-btn:disabled {
1403
+ cursor: not-allowed;
1404
+ opacity: 0.3;
1405
+ }
1406
+
1407
+ .composer__send-btn--cancel {
1408
+ background: var(--color-danger);
1409
+ }
1410
+
1411
+ .composer__send-btn--cancel:hover {
1412
+ background: var(--color-danger-hover, var(--color-danger));
1413
+ }
1414
+
1415
+ .workspace-panel__body {
1416
+ overflow: hidden;
1417
+ }
1418
+
1419
+ .workspace-editor {
1420
+ height: 100%;
1421
+ min-height: 0;
1422
+ display: flex;
1423
+ flex-direction: column;
1424
+ }
1425
+
1426
+ .workspace-editor__tabbar {
1427
+ height: var(--workbench-header-height);
1428
+ flex-shrink: 0;
1429
+ display: flex;
1430
+ align-items: center;
1431
+ background: var(--color-surface);
1432
+ }
1433
+
1434
+ .workspace-editor__tabs {
1435
+ height: 100%;
1436
+ min-width: 0;
1437
+ flex: 1;
1438
+ display: flex;
1439
+ overflow-x: auto;
1440
+ overflow-y: hidden;
1441
+ scrollbar-width: none;
1442
+ }
1443
+
1444
+ .workspace-editor__tabs::-webkit-scrollbar {
1445
+ display: none;
1446
+ }
1447
+
1448
+ .workspace-editor__tab {
1449
+ width: 180px;
1450
+ min-width: 120px;
1451
+ max-width: 240px;
1452
+ height: 100%;
1453
+ display: flex;
1454
+ align-items: center;
1455
+ color: var(--color-text-muted);
1456
+ background: var(--color-surface);
1457
+ border-right: 1px solid var(--color-border);
1458
+ font-size: var(--font-size-sm);
1459
+ }
1460
+
1461
+ .workspace-editor__tab:hover {
1462
+ color: var(--color-text);
1463
+ background: var(--color-surface-hover);
1464
+ }
1465
+
1466
+ .workspace-editor__tab--active,
1467
+ .workspace-editor__tab--active:hover {
1468
+ color: var(--color-text);
1469
+ background: var(--panel-bg, var(--color-bg));
1470
+ }
1471
+
1472
+ .workspace-editor__tab-button {
1473
+ height: 100%;
1474
+ min-width: 0;
1475
+ flex: 1;
1476
+ display: flex;
1477
+ align-items: center;
1478
+ gap: 8px;
1479
+ padding: 0 6px 0 12px;
1480
+ border: 0;
1481
+ color: inherit;
1482
+ background: transparent;
1483
+ font-family: inherit;
1484
+ font-size: inherit;
1485
+ text-align: left;
1486
+ cursor: pointer;
1487
+ }
1488
+
1489
+ .workspace-editor__tab-close.ui-icon-button {
1490
+ width: 24px;
1491
+ height: 24px;
1492
+ flex-shrink: 0;
1493
+ margin-right: 4px;
1494
+ opacity: 0;
1495
+ }
1496
+
1497
+ .workspace-editor__tab:hover .workspace-editor__tab-close,
1498
+ .workspace-editor__tab:focus-within .workspace-editor__tab-close,
1499
+ .workspace-editor__tab--active .workspace-editor__tab-close {
1500
+ opacity: 1;
1501
+ }
1502
+
1503
+ .workspace-editor__tab-close.ui-icon-button .codicon {
1504
+ font-size: 14px;
1505
+ }
1506
+
1507
+ .workspace-editor__path {
1508
+ min-width: 0;
1509
+ overflow: hidden;
1510
+ color: inherit;
1511
+ font-size: var(--font-size-sm);
1512
+ font-weight: 500;
1513
+ text-overflow: ellipsis;
1514
+ white-space: nowrap;
1515
+ }
1516
+
1517
+ .workspace-editor__dirty {
1518
+ width: 7px;
1519
+ height: 7px;
1520
+ flex-shrink: 0;
1521
+ border-radius: 50%;
1522
+ background: var(--color-text-muted);
1523
+ }
1524
+
1525
+ .workspace-editor__actions {
1526
+ margin-left: auto;
1527
+ padding: 0 8px;
1528
+ }
1529
+
1530
+ .workspace-editor__file-bar {
1531
+ min-height: 28px;
1532
+ flex-shrink: 0;
1533
+ display: flex;
1534
+ align-items: center;
1535
+ gap: 7px;
1536
+ padding: 0 12px;
1537
+ color: var(--color-text-muted);
1538
+ background: var(--panel-bg, var(--color-bg));
1539
+ font-size: 12px;
1540
+ }
1541
+
1542
+ .workspace-editor__file-path {
1543
+ min-width: 0;
1544
+ overflow: hidden;
1545
+ color: var(--color-text);
1546
+ text-overflow: ellipsis;
1547
+ white-space: nowrap;
1548
+ }
1549
+
1550
+ .workspace-editor__file-meta {
1551
+ flex-shrink: 0;
1552
+ margin-left: auto;
1553
+ color: var(--color-text-subtle);
1554
+ }
1555
+
1556
+ .workspace-editor__loading {
1557
+ height: 100%;
1558
+ display: flex;
1559
+ align-items: center;
1560
+ justify-content: center;
1561
+ color: var(--color-text-subtle);
1562
+ font-size: var(--font-size-sm);
1563
+ }
1564
+
1565
+ .ui-empty-state {
1566
+ height: 100%;
1567
+ min-height: 180px;
1568
+ display: flex;
1569
+ flex-direction: column;
1570
+ align-items: center;
1571
+ justify-content: center;
1572
+ gap: 8px;
1573
+ color: var(--color-text-subtle);
1574
+ font-size: var(--font-size-sm);
1575
+ }
1576
+
1577
+ .ui-empty-state--compact {
1578
+ height: auto;
1579
+ min-height: 160px;
1580
+ }
1581
+
1582
+ .ui-empty-state .codicon {
1583
+ font-size: 32px;
1584
+ }
1585
+
1586
+ .ui-badge {
1587
+ padding: 1px 6px;
1588
+ border-radius: var(--radius-sm);
1589
+ font-size: 10px;
1590
+ font-weight: 600;
1591
+ line-height: 16px;
1592
+ color: #fff;
1593
+ background: var(--color-accent);
1594
+ }
1595
+
1596
+ .ui-badge[data-variant='muted'] {
1597
+ color: var(--color-text-muted);
1598
+ background: var(--color-surface);
1599
+ border: 1px solid var(--color-border);
1600
+ }
1601
+
1602
+ .ui-badge[data-variant='danger'] {
1603
+ color: #fff;
1604
+ background: var(--color-danger);
1605
+ }
1606
+
1607
+ .ui-button {
1608
+ box-sizing: border-box;
1609
+ height: 28px;
1610
+ display: inline-flex;
1611
+ align-items: center;
1612
+ justify-content: center;
1613
+ padding: 0 12px;
1614
+ border: 1px solid var(--color-border);
1615
+ border-radius: var(--radius-sm);
1616
+ color: var(--color-text);
1617
+ background: var(--color-surface);
1618
+ font-family: inherit;
1619
+ font-size: var(--font-size-sm);
1620
+ cursor: pointer;
1621
+ }
1622
+
1623
+ .ui-button:hover {
1624
+ background: var(--color-surface-hover);
1625
+ }
1626
+
1627
+ .ui-button[data-variant='primary'] {
1628
+ border-color: var(--color-accent);
1629
+ color: #fff;
1630
+ background: var(--color-accent);
1631
+ }
1632
+
1633
+ .ui-button[data-variant='primary']:hover {
1634
+ background: var(--color-accent-hover);
1635
+ }
1636
+
1637
+ .ui-button[data-variant='danger'] {
1638
+ color: var(--color-danger);
1639
+ }
1640
+
1641
+ .ui-button[data-variant='danger']:hover {
1642
+ border-color: var(--color-danger);
1643
+ color: #fff;
1644
+ background: var(--color-danger);
1645
+ }
1646
+
1647
+ .ui-icon-button {
1648
+ box-sizing: border-box;
1649
+ width: 26px;
1650
+ height: 26px;
1651
+ display: inline-flex;
1652
+ align-items: center;
1653
+ justify-content: center;
1654
+ border: 1px solid transparent;
1655
+ border-radius: var(--radius-sm);
1656
+ color: var(--color-text-muted);
1657
+ background: transparent;
1658
+ font-family: inherit;
1659
+ cursor: pointer;
1660
+ }
1661
+
1662
+ .ui-icon-button:hover {
1663
+ color: var(--color-text);
1664
+ background: var(--color-surface-hover);
1665
+ }
1666
+
1667
+ .ui-icon-button:disabled {
1668
+ color: var(--color-text-subtle);
1669
+ background: transparent;
1670
+ cursor: default;
1671
+ }
1672
+
1673
+ .ui-icon-button[data-variant='danger']:hover {
1674
+ border-color: var(--color-danger);
1675
+ color: #fff;
1676
+ background: var(--color-danger);
1677
+ }
1678
+
1679
+ .ui-icon-button .codicon {
1680
+ font-size: 16px;
1681
+ }
1682
+
1683
+ .ui-input,
1684
+ .ui-select {
1685
+ box-sizing: border-box;
1686
+ width: 320px;
1687
+ border: 1px solid var(--color-border);
1688
+ border-radius: var(--radius-sm);
1689
+ color: var(--color-text);
1690
+ background: var(--color-surface);
1691
+ font-family: inherit;
1692
+ font-size: var(--font-size-sm);
1693
+ outline: none;
1694
+ }
1695
+
1696
+ .ui-input,
1697
+ .ui-select {
1698
+ height: 28px;
1699
+ padding: 0 8px;
1700
+ }
1701
+
1702
+ .ui-input[data-width='wide'],
1703
+ .ui-select[data-width='wide'] {
1704
+ width: 420px;
1705
+ }
1706
+
1707
+ .ui-input[data-width='full'],
1708
+ .ui-select[data-width='full'] {
1709
+ width: 100%;
1710
+ }
1711
+
1712
+ .ui-input--monospace {
1713
+ font-family: ui-monospace, SFMono-Regular, Consolas, 'Liberation Mono', monospace;
1714
+ }
1715
+
1716
+ .ui-input:focus,
1717
+ .ui-select:focus {
1718
+ border-color: var(--color-accent);
1719
+ }
1720
+
1721
+ .ui-checkbox {
1722
+ display: inline-flex;
1723
+ align-items: center;
1724
+ gap: 8px;
1725
+ color: var(--color-text);
1726
+ font-size: var(--font-size-sm);
1727
+ font-weight: 600;
1728
+ }
1729
+
1730
+ .ui-checkbox input {
1731
+ width: 18px;
1732
+ height: 18px;
1733
+ margin: 0;
1734
+ accent-color: var(--color-accent);
1735
+ }
1736
+
1737
+ .ui-field {
1738
+ margin: 0 0 24px;
1739
+ }
1740
+
1741
+ .ui-field--inline {
1742
+ display: flex;
1743
+ align-items: center;
1744
+ justify-content: space-between;
1745
+ gap: 24px;
1746
+ }
1747
+
1748
+ .ui-field__label {
1749
+ display: block;
1750
+ margin-bottom: 6px;
1751
+ color: var(--color-text);
1752
+ font-size: var(--font-size-sm);
1753
+ font-weight: 600;
1754
+ }
1755
+
1756
+ .ui-field__description {
1757
+ max-width: 820px;
1758
+ margin-bottom: 8px;
1759
+ color: var(--color-text-muted);
1760
+ font-size: var(--font-size-sm);
1761
+ line-height: 1.45;
1762
+ }