@workbench-kit/react 0.0.1-prototype.0 → 0.0.2-prototype.0.1.1

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 (155) hide show
  1. package/package.json +33 -9
  2. package/src/index.ts +545 -43
  3. package/src/jdw/JdwPreview.tsx +38 -0
  4. package/src/jdw/JsonCodeEditorPane.tsx +274 -0
  5. package/src/jdw/builtins/renderBuiltinWidgetLeaf.tsx +29 -0
  6. package/src/jdw/builtins/renderBuiltinWidgetNode.tsx +126 -0
  7. package/src/jdw/createBuiltinJdwRegistry.ts +111 -0
  8. package/src/jdw/cssRenderBackend.tsx +134 -0
  9. package/src/jdw/document.ts +38 -0
  10. package/src/jdw/fixtures/jdw-fixtures.ts +52 -0
  11. package/src/jdw/fixtures/jdw-sample-screens.ts +522 -0
  12. package/src/jdw/index.ts +45 -0
  13. package/src/jdw/parse.ts +1 -0
  14. package/src/jdw/renderJdw.tsx +32 -0
  15. package/src/json-config/JsonConfigWorkbench.tsx +316 -0
  16. package/src/json-config/index.ts +6 -0
  17. package/src/json-config/json-config-editor-state.ts +42 -0
  18. package/src/layout/Panel.tsx +146 -1
  19. package/src/layout/SideBarViewFrame.tsx +367 -328
  20. package/src/layout/WorkbenchCanvas.tsx +849 -0
  21. package/src/layout/WorkbenchFullscreen.tsx +368 -0
  22. package/src/layout/WorkbenchLayout.tsx +5 -0
  23. package/src/layout/WorkbenchLayoutBase.tsx +294 -0
  24. package/src/layout/WorkbenchPropertyPanel.tsx +497 -0
  25. package/src/layout/WorkbenchSidebarActions.tsx +274 -0
  26. package/src/layout/WorkbenchTree.tsx +351 -0
  27. package/src/layout/layoutHelpers.ts +25 -0
  28. package/src/modal/ConfirmDialog.tsx +61 -53
  29. package/src/modal/Modal.tsx +295 -35
  30. package/src/overlay/ContextMenu.tsx +146 -145
  31. package/src/primitives/AbsoluteBox.tsx +46 -0
  32. package/src/primitives/Badge.tsx +12 -12
  33. package/src/primitives/Button.tsx +44 -14
  34. package/src/primitives/Checkbox.tsx +11 -5
  35. package/src/primitives/EmptyState.tsx +27 -26
  36. package/src/primitives/Field.tsx +38 -38
  37. package/src/primitives/IconButton.tsx +5 -2
  38. package/src/primitives/List.tsx +111 -0
  39. package/src/primitives/NumberInput.tsx +38 -0
  40. package/src/primitives/ScrollArea.tsx +42 -0
  41. package/src/primitives/Select.tsx +1 -12
  42. package/src/primitives/StatusBar.tsx +46 -0
  43. package/src/primitives/TextArea.tsx +36 -0
  44. package/src/primitives/TextInput.tsx +11 -2
  45. package/src/primitives/WorkbenchChrome.tsx +424 -0
  46. package/src/primitives/WorkbenchEditor.tsx +394 -0
  47. package/src/primitives/index.ts +105 -0
  48. package/src/primitives/select/Select.tsx +266 -0
  49. package/src/primitives/select/index.ts +2 -0
  50. package/src/primitives/select/options.ts +38 -0
  51. package/src/primitives/select/overlay.ts +63 -0
  52. package/src/primitives/select/select.app.css +9 -0
  53. package/src/primitives/select/select.css +140 -0
  54. package/src/primitives/select/types.ts +18 -0
  55. package/src/primitives/styles.css +955 -0
  56. package/src/scrollbars.css +69 -0
  57. package/src/styles.css +7738 -1762
  58. package/src/utils/codicon.ts +17 -0
  59. package/src/widget-asset/WidgetAssetEditor.tsx +140 -0
  60. package/src/widget-asset/WidgetAssetMetadataForm.tsx +82 -0
  61. package/src/widget-asset/WidgetAssetModeControls.tsx +42 -0
  62. package/src/widget-asset/WidgetAssetSourceEditor.tsx +50 -0
  63. package/src/widget-asset/WidgetAssetWorkbench.tsx +112 -0
  64. package/src/widget-asset/index.ts +17 -0
  65. package/src/widget-asset/widget-asset-document.ts +37 -0
  66. package/src/widget-asset/widget-asset-mode.ts +3 -0
  67. package/src/widget-studio/builtin-widget-asset-catalog.ts +12 -0
  68. package/src/widget-studio/create-widget-studio-workspace-editor.tsx +79 -0
  69. package/src/widget-studio/index.ts +7 -0
  70. package/src/widget-studio/resolve-widget-studio-asset-catalog.ts +26 -0
  71. package/src/widget-tree/WidgetAssetPalette.tsx +77 -0
  72. package/src/widget-tree/WidgetInspectorPanel.tsx +266 -0
  73. package/src/widget-tree/WidgetSourceEditor.tsx +56 -0
  74. package/src/widget-tree/WidgetTreeLab.tsx +272 -0
  75. package/src/widget-tree/WidgetTreeModeControls.tsx +44 -0
  76. package/src/widget-tree/WidgetTreeSidePanel.tsx +49 -0
  77. package/src/widget-tree/WidgetTreeView.tsx +97 -0
  78. package/src/widget-tree/WidgetTreeWorkbench.tsx +111 -0
  79. package/src/widget-tree/WidgetTreeWorkspaceShell.tsx +154 -0
  80. package/src/widget-tree/demo-registry.ts +32 -0
  81. package/src/widget-tree/demo-widget-assets.ts +4 -0
  82. package/src/widget-tree/index.ts +27 -0
  83. package/src/widget-tree/widget-tree-document.ts +20 -0
  84. package/src/widget-tree/widget-tree-layout.ts +31 -0
  85. package/src/widget-tree/widget-tree-mode.ts +7 -0
  86. package/src/widget-tree/widget-tree-play-helpers.ts +74 -0
  87. package/src/workbench/ActivityBar.tsx +52 -52
  88. package/src/workbench/ArtifactShell.tsx +397 -0
  89. package/src/workbench/CommandPalette.tsx +819 -0
  90. package/src/workbench/ConfirmationFlow.tsx +245 -0
  91. package/src/workbench/MarkdownPreview.tsx +151 -0
  92. package/src/workbench/ShortcutCommandBridge.tsx +368 -0
  93. package/src/workbench/SplitView.tsx +136 -136
  94. package/src/workbench/StatusBar.tsx +178 -123
  95. package/src/workbench/StructuredArtifactEditor.tsx +205 -0
  96. package/src/workbench/Timeline.tsx +302 -0
  97. package/src/workbench/WorkbenchCanvasShell.tsx +941 -0
  98. package/src/workbench/WorkbenchShell.tsx +74 -70
  99. package/src/workbench/WorkbenchStandaloneShell.tsx +318 -291
  100. package/src/workbench/auth/WorkbenchAuthGate.tsx +61 -0
  101. package/src/workbench/auth/WorkbenchLoginView.tsx +635 -0
  102. package/src/workbench/auth/index.ts +19 -0
  103. package/src/workbench/chat/ChatComposer.tsx +165 -148
  104. package/src/workbench/chat/ChatMessageItem.tsx +10 -1
  105. package/src/workbench/chat/index.ts +9 -0
  106. package/src/workbench/chat/slashCommand.ts +28 -0
  107. package/src/workbench/chat/useChatRuntimeState.ts +76 -0
  108. package/src/workbench/chat/useSlashCommandSuggest.ts +101 -0
  109. package/src/workbench/commands.ts +520 -490
  110. package/src/workbench/index.ts +443 -98
  111. package/src/workbench/keyboard.ts +53 -0
  112. package/src/workbench/schema/index.ts +48 -0
  113. package/src/workbench/schema/workbenchDocument.ts +31 -0
  114. package/src/workbench/schema/workbenchDocumentActions.ts +6 -0
  115. package/src/workbench/schema/workbenchDocumentAdapter.ts +9 -0
  116. package/src/workbench/schema/workbenchDocumentPatch.ts +13 -0
  117. package/src/workbench/schema/workbenchDocumentRenderer.tsx +702 -0
  118. package/src/workbench/settings/NavigationPanel.tsx +47 -0
  119. package/src/workbench/settings/SchemaForm.tsx +420 -0
  120. package/src/workbench/settings/SectionedPanel.tsx +415 -0
  121. package/src/workbench/settings/StructuredDataForm.tsx +539 -0
  122. package/src/workbench/settings/StructuredDataSchemaPanel.tsx +559 -0
  123. package/src/workbench/settings/StructuredDataSchemaPanelEmbed.tsx +21 -0
  124. package/src/workbench/settings/StructuredDataSchemaPanelFrame.tsx +76 -0
  125. package/src/workbench/settings/StructuredDataTableView.tsx +127 -0
  126. package/src/workbench/settings/WorkbenchPanelRegion.tsx +46 -0
  127. package/src/workbench/settings/WorkbenchSettingsModal.tsx +21 -12
  128. package/src/workbench/settings/WorkbenchSettingsNav.tsx +38 -22
  129. package/src/workbench/settings/index.ts +135 -0
  130. package/src/workbench/settings/panel-region.css +21 -0
  131. package/src/workbench/settings/sectionedPanelScrollSpy.ts +143 -0
  132. package/src/workbench/settings/structured-data-schema-panel.css +330 -0
  133. package/src/workbench/settings/structured-data-table-view.css +85 -0
  134. package/src/workbench/settings/structuredDataSchema.ts +886 -0
  135. package/src/workbench/shell.ts +15 -0
  136. package/src/workbench/shellState.ts +203 -203
  137. package/src/workbench/standalone.ts +101 -94
  138. package/src/workbench/status.ts +129 -0
  139. package/src/workbench/theme.ts +44 -0
  140. package/src/workbench/workspace/MultiProviderExplorer.tsx +625 -0
  141. package/src/workbench/workspace/WorkspaceDraftsContext.tsx +111 -0
  142. package/src/workbench/workspace/WorkspaceEditor.tsx +47 -12
  143. package/src/workbench/workspace/WorkspaceEditorPanel.tsx +334 -353
  144. package/src/workbench/workspace/WorkspaceExplorer.tsx +532 -524
  145. package/src/workbench/workspace/WorkspaceFileIcon.tsx +32 -2
  146. package/src/workbench/workspace/WorkspaceSearchPanel.tsx +113 -113
  147. package/src/workbench/workspace/WorkspaceSearchResults.tsx +47 -47
  148. package/src/workbench/workspace/index.ts +156 -98
  149. package/src/workbench/workspace/mimeType.ts +45 -0
  150. package/src/workbench/workspace/path.ts +10 -10
  151. package/src/workbench/workspace/search.ts +6 -6
  152. package/src/workbench/workspace/tree.ts +1 -1
  153. package/src/workbench/workspace/types.ts +10 -10
  154. package/src/workbench/workspace/useVirtualWorkspace.ts +111 -98
  155. package/src/workbench/workspace/workspaceJsonDiagnostics.ts +83 -0
@@ -0,0 +1,955 @@
1
+ @import '@workbench-kit/tokens/styles.css';
2
+ @import '../scrollbars.css';
3
+ @import '@vscode/codicons/dist/codicon.css';
4
+ @import './select/select.css';
5
+
6
+ .ide-panel {
7
+ position: relative;
8
+ flex: 1;
9
+ min-height: 0;
10
+ display: flex;
11
+ flex-direction: column;
12
+ overflow: hidden;
13
+ background: var(--panel-bg, var(--color-bg));
14
+ }
15
+
16
+ .panel-header {
17
+ box-sizing: border-box;
18
+ display: flex;
19
+ flex: 0 0 auto;
20
+ align-items: center;
21
+ gap: 8px;
22
+ height: var(--panel-header-height, 35px);
23
+ min-width: 0;
24
+ padding: 0 8px;
25
+ color: var(--vscode-sideBarTitle-foreground, var(--color-text));
26
+ background: var(--vscode-sideBar-background, var(--color-bg));
27
+ border-bottom: 1px solid var(--vscode-panel-border, var(--color-border));
28
+ font-size: var(--font-size-xs);
29
+ font-weight: 700;
30
+ text-transform: uppercase;
31
+ }
32
+
33
+ .ui-panel-header__title {
34
+ flex: 1;
35
+ min-width: 0;
36
+ overflow: hidden;
37
+ text-overflow: ellipsis;
38
+ white-space: nowrap;
39
+ }
40
+
41
+ .ui-panel-header__actions {
42
+ display: inline-flex;
43
+ flex: 0 0 auto;
44
+ align-items: center;
45
+ gap: 4px;
46
+ }
47
+
48
+ .panel-body,
49
+ .ui-panel-body {
50
+ flex: 1;
51
+ min-width: 0;
52
+ min-height: 0;
53
+ }
54
+
55
+ .ui-panel-footer,
56
+ .ui-workbench-panel-footer {
57
+ flex: 0 0 auto;
58
+ padding: 8px;
59
+ border-top: 1px solid var(--vscode-panel-border, var(--color-border));
60
+ }
61
+
62
+ .ui-filter-bar,
63
+ .ui-workbench-filter-bar {
64
+ display: grid;
65
+ gap: 8px;
66
+ padding: 8px;
67
+ border-bottom: 1px solid var(--vscode-panel-border, var(--color-border));
68
+ }
69
+
70
+ .ui-help-text,
71
+ .ui-workbench-help-text {
72
+ min-width: 0;
73
+ overflow: hidden;
74
+ color: var(--vscode-descriptionForeground, var(--color-text-muted));
75
+ font-size: var(--font-size-xs);
76
+ text-overflow: ellipsis;
77
+ white-space: nowrap;
78
+ }
79
+
80
+ .ui-help-text--error,
81
+ .ui-workbench-help-text--error {
82
+ color: var(--vscode-errorForeground, var(--color-error));
83
+ }
84
+
85
+ .ui-button {
86
+ box-sizing: border-box;
87
+ height: 28px;
88
+ display: inline-flex;
89
+ align-items: center;
90
+ justify-content: center;
91
+ gap: 6px;
92
+ padding: 0 12px;
93
+ border: 1px solid var(--color-border);
94
+ border-radius: var(--radius-sm);
95
+ color: var(--color-text);
96
+ background: var(--color-surface);
97
+ font-family: inherit;
98
+ font-size: var(--font-size-sm);
99
+ cursor: pointer;
100
+ }
101
+
102
+ .ui-button:hover {
103
+ background: var(--color-surface-hover);
104
+ }
105
+
106
+ .ui-button--block {
107
+ width: 100%;
108
+ }
109
+
110
+ .ui-button[data-variant='primary'] {
111
+ border-color: var(--color-accent);
112
+ color: #fff;
113
+ background: var(--color-accent);
114
+ }
115
+
116
+ .ui-button[data-variant='primary']:hover {
117
+ background: var(--color-accent-hover);
118
+ }
119
+
120
+ .ui-button[data-variant='danger'] {
121
+ color: var(--color-danger);
122
+ }
123
+
124
+ .ui-button[data-variant='danger']:hover {
125
+ border-color: var(--color-danger);
126
+ color: #fff;
127
+ background: var(--color-danger);
128
+ }
129
+
130
+ .ui-icon-button {
131
+ box-sizing: border-box;
132
+ width: 26px;
133
+ height: 26px;
134
+ display: inline-flex;
135
+ align-items: center;
136
+ justify-content: center;
137
+ border: 1px solid transparent;
138
+ border-radius: var(--radius-sm);
139
+ color: var(--color-text-muted);
140
+ background: transparent;
141
+ font-family: inherit;
142
+ cursor: pointer;
143
+ }
144
+
145
+ .ui-icon-button:hover {
146
+ color: var(--color-text);
147
+ background: var(--color-surface-hover);
148
+ }
149
+
150
+ .ui-icon-button:disabled {
151
+ color: var(--color-text-subtle);
152
+ background: transparent;
153
+ cursor: default;
154
+ }
155
+
156
+ .ui-icon-button--compact {
157
+ width: 22px;
158
+ height: 22px;
159
+ min-width: 22px;
160
+ min-height: 22px;
161
+ }
162
+
163
+ .ui-icon-button[data-variant='danger']:hover {
164
+ border-color: var(--color-danger);
165
+ color: #fff;
166
+ background: var(--color-danger);
167
+ }
168
+
169
+ .ui-icon-button .codicon {
170
+ font-size: 16px;
171
+ }
172
+
173
+ .ui-list {
174
+ flex: 1;
175
+ min-width: 0;
176
+ min-height: 0;
177
+ overflow-y: auto;
178
+ }
179
+
180
+ .ui-list-item {
181
+ display: grid;
182
+ grid-template-columns: auto minmax(0, 1fr) auto auto;
183
+ align-items: center;
184
+ gap: 8px;
185
+ min-width: 0;
186
+ min-height: 30px;
187
+ padding: 4px 8px 4px 12px;
188
+ color: var(--color-text);
189
+ border-bottom: 1px solid var(--color-border);
190
+ outline: none;
191
+ }
192
+
193
+ .ui-list-item[role='option'] {
194
+ cursor: pointer;
195
+ }
196
+
197
+ .ui-list-item--selected {
198
+ color: var(--color-accent-foreground);
199
+ background: var(--color-accent);
200
+ }
201
+
202
+ .ui-list-item:focus-visible {
203
+ outline: 1px solid var(--color-focus-border);
204
+ outline-offset: -1px;
205
+ }
206
+
207
+ .ui-list-item__icon {
208
+ display: inline-flex;
209
+ align-items: center;
210
+ justify-content: center;
211
+ color: var(--color-icon);
212
+ }
213
+
214
+ .ui-list-item__content {
215
+ min-width: 0;
216
+ }
217
+
218
+ .ui-list-item__label,
219
+ .ui-list-item__description,
220
+ .ui-list-item__meta {
221
+ display: block;
222
+ overflow: hidden;
223
+ text-overflow: ellipsis;
224
+ white-space: nowrap;
225
+ }
226
+
227
+ .ui-list-item__label {
228
+ font-size: var(--font-size-sm);
229
+ }
230
+
231
+ .ui-list-item__description,
232
+ .ui-list-item__meta {
233
+ color: var(--color-text-muted);
234
+ font-size: var(--font-size-xs);
235
+ }
236
+
237
+ .ui-list-item--selected .ui-list-item__description,
238
+ .ui-list-item--selected .ui-list-item__meta {
239
+ color: inherit;
240
+ opacity: 0.78;
241
+ }
242
+
243
+ .ui-list-item__meta {
244
+ max-width: 88px;
245
+ }
246
+
247
+ .ui-list-item--media {
248
+ min-height: 44px;
249
+ padding: 5px 8px 5px 12px;
250
+ }
251
+
252
+ .ui-list-item__actions {
253
+ display: inline-flex;
254
+ align-items: center;
255
+ gap: 2px;
256
+ min-width: 0;
257
+ }
258
+
259
+ .ui-list-empty-state {
260
+ padding: 8px 12px;
261
+ color: var(--color-text-muted);
262
+ font-size: var(--font-size-sm);
263
+ word-break: break-word;
264
+ }
265
+
266
+ .ui-list-empty-state--error {
267
+ color: var(--color-error);
268
+ }
269
+
270
+ .ui-status-bar {
271
+ box-sizing: border-box;
272
+ display: flex;
273
+ flex: 0 0 auto;
274
+ align-items: center;
275
+ gap: 8px;
276
+ min-width: 0;
277
+ min-height: 22px;
278
+ padding: 0 10px;
279
+ color: var(--vscode-statusBar-foreground, #fff);
280
+ background: var(--vscode-statusBar-background, var(--color-accent));
281
+ font-size: var(--font-size-xs);
282
+ }
283
+
284
+ .ui-status-bar--warning {
285
+ color: var(--vscode-statusBarItem-warningForeground, #fff);
286
+ background: var(--vscode-statusBarItem-warningBackground, #7a6400);
287
+ }
288
+
289
+ .ui-status-bar--error {
290
+ color: var(--vscode-statusBarItem-errorForeground, #fff);
291
+ background: var(--vscode-statusBarItem-errorBackground, var(--color-danger));
292
+ }
293
+
294
+ .ui-status-bar__section {
295
+ display: inline-flex;
296
+ align-items: center;
297
+ gap: 8px;
298
+ min-width: 0;
299
+ overflow: hidden;
300
+ }
301
+
302
+ .ui-status-bar__label {
303
+ min-width: 0;
304
+ overflow: hidden;
305
+ text-overflow: ellipsis;
306
+ white-space: nowrap;
307
+ }
308
+
309
+ .ui-status-bar__section--end {
310
+ flex: 0 0 auto;
311
+ margin-left: auto;
312
+ overflow: visible;
313
+ white-space: nowrap;
314
+ }
315
+
316
+ .ui-sidebar {
317
+ box-sizing: border-box;
318
+ display: flex;
319
+ flex-direction: column;
320
+ min-width: 0;
321
+ height: 100%;
322
+ min-height: 0;
323
+ overflow: hidden;
324
+ color: var(--vscode-sideBar-foreground, var(--color-text));
325
+ background: var(--vscode-sideBar-background, var(--color-bg));
326
+ border-right: 1px solid var(--vscode-sideBar-border, var(--color-border));
327
+ }
328
+
329
+ .ui-sidebar--right {
330
+ border-right: 0;
331
+ border-left: 1px solid var(--vscode-panel-border, var(--color-border));
332
+ }
333
+
334
+ .ui-collapsible {
335
+ display: flex;
336
+ flex-direction: column;
337
+ min-width: 0;
338
+ min-height: 0;
339
+ overflow: hidden;
340
+ border-bottom: 1px solid var(--vscode-panel-border, var(--color-border));
341
+ }
342
+
343
+ .ui-collapsible--fill {
344
+ flex: 1 1 var(--ui-collapsible-basis, 50%);
345
+ }
346
+
347
+ .ui-collapsible--section {
348
+ flex: 0 1 var(--ui-collapsible-basis, 50%);
349
+ }
350
+
351
+ .ui-collapsible--closed {
352
+ flex: 0 0 auto;
353
+ }
354
+
355
+ .ui-collapsible__trigger {
356
+ box-sizing: border-box;
357
+ display: flex;
358
+ flex: 0 0 22px;
359
+ align-items: center;
360
+ gap: 2px;
361
+ min-width: 0;
362
+ padding: 0 8px 0 2px;
363
+ color: var(--vscode-sideBar-foreground, var(--color-text));
364
+ background: transparent;
365
+ border: 0;
366
+ font: inherit;
367
+ font-size: var(--font-size-xs);
368
+ font-weight: 700;
369
+ text-align: left;
370
+ text-transform: uppercase;
371
+ cursor: pointer;
372
+ }
373
+
374
+ .ui-collapsible__icon {
375
+ flex: 0 0 auto;
376
+ font-size: 14px;
377
+ }
378
+
379
+ .ui-collapsible__title {
380
+ min-width: 0;
381
+ overflow: hidden;
382
+ text-overflow: ellipsis;
383
+ white-space: nowrap;
384
+ }
385
+
386
+ .ui-collapsible__body {
387
+ display: flex;
388
+ flex: 1 1 auto;
389
+ flex-direction: column;
390
+ min-width: 0;
391
+ min-height: 0;
392
+ overflow: hidden;
393
+ }
394
+
395
+ .ui-tabbed-panels {
396
+ display: flex;
397
+ flex-direction: column;
398
+ min-width: 0;
399
+ height: 100%;
400
+ min-height: 0;
401
+ }
402
+
403
+ .ui-tabbed-panels__tabs {
404
+ display: flex;
405
+ flex: 0 0 35px;
406
+ align-items: end;
407
+ min-width: 0;
408
+ overflow-x: auto;
409
+ overflow-y: hidden;
410
+ background: var(--vscode-editorGroupHeader-tabsBackground, var(--color-bg));
411
+ border-bottom: 1px solid var(--vscode-panel-border, var(--color-border));
412
+ }
413
+
414
+ .ui-tabbed-panels__tab {
415
+ box-sizing: border-box;
416
+ display: inline-flex;
417
+ flex: 0 0 auto;
418
+ align-items: center;
419
+ max-width: 180px;
420
+ min-width: 0;
421
+ height: 34px;
422
+ padding: 0 10px;
423
+ color: var(--vscode-tab-inactiveForeground, var(--color-text-muted));
424
+ background: var(--vscode-tab-inactiveBackground, var(--color-surface));
425
+ border: 0;
426
+ border-right: 1px solid var(--vscode-tab-border, var(--color-border));
427
+ font: inherit;
428
+ cursor: pointer;
429
+ }
430
+
431
+ .ui-tabbed-panels__tab--active {
432
+ color: var(--vscode-tab-activeForeground, var(--color-text));
433
+ background: var(--vscode-tab-activeBackground, var(--color-bg));
434
+ }
435
+
436
+ .ui-tabbed-panels__tab-label {
437
+ min-width: 0;
438
+ overflow: hidden;
439
+ text-overflow: ellipsis;
440
+ white-space: nowrap;
441
+ }
442
+
443
+ .ui-tabbed-panels__panel {
444
+ flex: 1;
445
+ min-width: 0;
446
+ min-height: 0;
447
+ overflow: hidden;
448
+ }
449
+
450
+ .ui-button-group {
451
+ display: inline-flex;
452
+ align-items: center;
453
+ min-width: 0;
454
+ }
455
+
456
+ .ui-segmented-control__item {
457
+ box-sizing: border-box;
458
+ min-height: 24px;
459
+ padding: 0 8px;
460
+ color: var(--color-text);
461
+ background: var(--color-surface);
462
+ border: 1px solid var(--color-border);
463
+ border-radius: 0;
464
+ font: inherit;
465
+ font-size: var(--font-size-sm);
466
+ cursor: pointer;
467
+ }
468
+
469
+ .ui-segmented-control__item + .ui-segmented-control__item {
470
+ border-left: 0;
471
+ }
472
+
473
+ .ui-segmented-control__item--selected {
474
+ color: var(--color-accent-foreground);
475
+ background: var(--color-accent);
476
+ border-color: var(--color-accent);
477
+ }
478
+
479
+ .ui-editor-tabs {
480
+ box-sizing: border-box;
481
+ display: flex;
482
+ align-items: stretch;
483
+ min-width: 0;
484
+ min-height: 35px;
485
+ overflow: hidden;
486
+ background: var(--vscode-editorGroupHeader-tabsBackground, var(--color-bg));
487
+ border-bottom: 1px solid var(--vscode-editorGroupHeader-border, var(--color-border));
488
+ }
489
+
490
+ .ui-editor-tabs__scroller {
491
+ display: flex;
492
+ flex: 1 1 auto;
493
+ min-width: 0;
494
+ overflow: auto;
495
+ }
496
+
497
+ .ui-editor-tabs__tab {
498
+ --ui-editor-tabs-active-border: var(
499
+ --vscode-tab-activeBorderTop,
500
+ var(--vscode-focusBorder, var(--color-focus-border, var(--color-accent)))
501
+ );
502
+ position: relative;
503
+ box-sizing: border-box;
504
+ display: inline-flex;
505
+ flex: 0 1 auto;
506
+ align-items: center;
507
+ gap: 6px;
508
+ min-width: 96px;
509
+ max-width: 240px;
510
+ min-height: 34px;
511
+ padding: 0 6px 0 10px;
512
+ color: var(--vscode-tab-inactiveForeground, var(--color-text-muted));
513
+ background: var(--vscode-tab-inactiveBackground, var(--color-surface));
514
+ border-right: 1px solid var(--vscode-tab-border, var(--color-border));
515
+ font: inherit;
516
+ cursor: pointer;
517
+ }
518
+
519
+ .ui-editor-tabs__tab::before {
520
+ position: absolute;
521
+ inset: 0 0 auto;
522
+ height: 2px;
523
+ content: '';
524
+ background: transparent;
525
+ }
526
+
527
+ .ui-editor-tabs__tab:hover {
528
+ color: var(--vscode-tab-hoverForeground, var(--vscode-tab-activeForeground, var(--color-text)));
529
+ background: var(--vscode-tab-hoverBackground, var(--color-surface-hover));
530
+ }
531
+
532
+ .ui-editor-tabs__tab:focus-visible {
533
+ outline: 1px solid var(--vscode-focusBorder, var(--color-focus-border));
534
+ outline-offset: -1px;
535
+ }
536
+
537
+ .ui-editor-tabs__tab--active {
538
+ color: var(--vscode-tab-activeForeground, var(--color-text));
539
+ background: var(--vscode-tab-activeBackground, var(--color-bg));
540
+ box-shadow:
541
+ inset 0 1px 0 color-mix(in srgb, var(--ui-editor-tabs-active-border) 45%, transparent),
542
+ inset 0 -1px 0 var(--vscode-editor-background, var(--color-bg));
543
+ }
544
+
545
+ .ui-editor-tabs__tab--active::before {
546
+ background: var(--ui-editor-tabs-active-border);
547
+ }
548
+
549
+ .ui-editor-tabs__tab[data-drop-position]::after {
550
+ position: absolute;
551
+ inset-block: 4px;
552
+ z-index: 1;
553
+ width: 2px;
554
+ content: '';
555
+ background: var(--vscode-focusBorder, var(--color-focus-border));
556
+ border-radius: 1px;
557
+ }
558
+
559
+ .ui-editor-tabs__tab[data-drop-position='before']::after {
560
+ left: 0;
561
+ }
562
+
563
+ .ui-editor-tabs__tab[data-drop-position='after']::after {
564
+ right: 0;
565
+ }
566
+
567
+ .ui-editor-tabs__label {
568
+ min-width: 0;
569
+ overflow: hidden;
570
+ text-overflow: ellipsis;
571
+ white-space: nowrap;
572
+ }
573
+
574
+ .ui-editor-tabs__file-icon {
575
+ flex: 0 0 auto;
576
+ color: var(--vscode-icon-foreground, var(--color-icon));
577
+ font-size: 15px;
578
+ }
579
+
580
+ .ui-editor-tabs__status-icon {
581
+ flex: 0 0 auto;
582
+ color: var(--vscode-descriptionForeground, var(--color-text-muted));
583
+ font-size: 14px;
584
+ opacity: 0.82;
585
+ }
586
+
587
+ .ui-editor-tabs__tab--active .ui-editor-tabs__status-icon {
588
+ color: var(--vscode-tab-activeForeground, var(--color-text));
589
+ opacity: 0.9;
590
+ }
591
+
592
+ .ui-editor-tabs__dirty {
593
+ flex: 0 0 auto;
594
+ width: 14px;
595
+ color: var(--ui-editor-tabs-active-border);
596
+ font-size: 16px;
597
+ line-height: 1;
598
+ text-align: center;
599
+ }
600
+
601
+ .ui-editor-tabs__close {
602
+ flex: 0 0 auto;
603
+ margin-left: 0;
604
+ color: var(--vscode-tab-inactiveForeground, var(--color-text-muted));
605
+ background: transparent;
606
+ opacity: 0.74;
607
+ }
608
+
609
+ .ui-editor-tabs__tab:not(:hover):not(:focus-within):not(.ui-editor-tabs__tab--active)
610
+ .ui-editor-tabs__close {
611
+ opacity: 0;
612
+ }
613
+
614
+ .ui-editor-tabs__tab--active .ui-editor-tabs__close,
615
+ .ui-editor-tabs__close:hover,
616
+ .ui-editor-tabs__close:focus-visible {
617
+ color: var(--vscode-tab-activeForeground, var(--color-text));
618
+ opacity: 1;
619
+ }
620
+
621
+ .ui-editor-tabs__new {
622
+ align-self: center;
623
+ flex: 0 0 auto;
624
+ margin: 0 5px;
625
+ color: var(--vscode-icon-foreground, var(--color-icon));
626
+ }
627
+
628
+ .ui-editor-tabs__addons {
629
+ display: flex;
630
+ align-items: center;
631
+ gap: 6px;
632
+ min-width: 0;
633
+ margin-left: auto;
634
+ padding: 0 8px;
635
+ }
636
+
637
+ .ui-resizable-panels {
638
+ display: grid;
639
+ grid-template-columns: var(--ui-resizable-panels-size) 1px minmax(0, 1fr);
640
+ width: 100%;
641
+ height: 100%;
642
+ min-width: 0;
643
+ min-height: 0;
644
+ }
645
+
646
+ .ui-resizable-panels--vertical {
647
+ grid-template-columns: none;
648
+ grid-template-rows: var(--ui-resizable-panels-size) 1px minmax(0, 1fr);
649
+ }
650
+
651
+ .ui-resizable-panels__pane {
652
+ min-width: 0;
653
+ min-height: 0;
654
+ overflow: hidden;
655
+ }
656
+
657
+ .ui-resizable-panels__separator {
658
+ position: relative;
659
+ min-width: 0;
660
+ min-height: 0;
661
+ background: var(--vscode-panel-border, var(--color-border));
662
+ outline: none;
663
+ cursor: col-resize;
664
+ touch-action: none;
665
+ user-select: none;
666
+ }
667
+
668
+ .ui-resizable-panels__separator::after {
669
+ content: '';
670
+ position: absolute;
671
+ inset: 0 -8px;
672
+ }
673
+
674
+ .ui-resizable-panels--vertical .ui-resizable-panels__separator {
675
+ cursor: row-resize;
676
+ }
677
+
678
+ .ui-resizable-panels--vertical .ui-resizable-panels__separator::after {
679
+ inset: -8px 0;
680
+ }
681
+
682
+ .ui-activity-bar {
683
+ display: flex;
684
+ flex-direction: column;
685
+ align-items: stretch;
686
+ height: 100%;
687
+ min-height: 0;
688
+ overflow: hidden;
689
+ background: var(--vscode-activityBar-background, #181818);
690
+ border-right: 1px solid
691
+ var(--vscode-activityBar-border, var(--vscode-panel-border, var(--color-border)));
692
+ }
693
+
694
+ .ui-activity-bar__item {
695
+ position: relative;
696
+ display: grid;
697
+ align-items: center;
698
+ justify-items: center;
699
+ height: 48px;
700
+ padding: 0;
701
+ color: var(--vscode-activityBar-foreground, #858585);
702
+ background: transparent;
703
+ border: 0;
704
+ border-left: 2px solid transparent;
705
+ cursor: pointer;
706
+ }
707
+
708
+ .ui-activity-bar__item--active {
709
+ color: var(--vscode-activityBar-activeForeground, #fff);
710
+ border-left-color: var(--vscode-activityBar-activeBorder, #fff);
711
+ }
712
+
713
+ .ui-activity-bar__item .codicon {
714
+ font-size: 24px;
715
+ }
716
+
717
+ .ui-activity-bar__badge {
718
+ position: absolute;
719
+ top: 6px;
720
+ right: 6px;
721
+ min-width: 14px;
722
+ padding: 0 4px;
723
+ color: var(--vscode-activityBarBadge-foreground, #fff);
724
+ background: var(--vscode-activityBarBadge-background, var(--color-accent));
725
+ border-radius: 8px;
726
+ font-size: 10px;
727
+ line-height: 14px;
728
+ }
729
+
730
+ .ui-workbench-shell {
731
+ display: flex;
732
+ flex-direction: column;
733
+ width: 100vw;
734
+ height: 100vh;
735
+ min-width: 0;
736
+ color: var(--vscode-foreground, var(--color-text));
737
+ background: var(--vscode-editor-background, var(--color-bg));
738
+ font-family: var(--vscode-font-family, var(--font-sans));
739
+ font-size: var(--vscode-font-size, var(--font-size-sm));
740
+ }
741
+
742
+ .ui-workbench-shell__content {
743
+ display: flex;
744
+ flex: 1;
745
+ min-width: 0;
746
+ min-height: 0;
747
+ }
748
+
749
+ .ui-workbench-shell__activity,
750
+ .ui-workbench-shell__side,
751
+ .ui-workbench-shell__center {
752
+ height: 100%;
753
+ min-width: 0;
754
+ min-height: 0;
755
+ overflow: hidden;
756
+ }
757
+
758
+ .ui-workbench-shell__activity,
759
+ .ui-workbench-shell__side {
760
+ flex: 0 0 auto;
761
+ }
762
+
763
+ .ui-workbench-shell__center {
764
+ flex: 1 1 auto;
765
+ }
766
+
767
+ .ui-workbench-shell .ui-sidebar {
768
+ border-right: 0;
769
+ border-left: 0;
770
+ }
771
+
772
+ .ui-workbench-shell__separator {
773
+ position: relative;
774
+ flex: 0 0 1px;
775
+ min-height: 0;
776
+ background: var(--vscode-panel-border, var(--color-border));
777
+ outline: none;
778
+ cursor: col-resize;
779
+ touch-action: none;
780
+ user-select: none;
781
+ }
782
+
783
+ .ui-workbench-shell__separator::after {
784
+ content: '';
785
+ position: absolute;
786
+ inset: 0 -8px;
787
+ }
788
+
789
+ .ui-workbench-center {
790
+ display: flex;
791
+ flex-direction: column;
792
+ height: 100%;
793
+ min-width: 0;
794
+ min-height: 0;
795
+ }
796
+
797
+ .ui-workbench-fill {
798
+ display: flex;
799
+ flex: 1;
800
+ min-width: 0;
801
+ min-height: 0;
802
+ }
803
+
804
+ .ui-workbench-empty {
805
+ display: flex;
806
+ flex: 1;
807
+ align-items: center;
808
+ justify-content: center;
809
+ min-width: 0;
810
+ min-height: 0;
811
+ padding: 16px;
812
+ color: var(--vscode-descriptionForeground, var(--color-text-muted));
813
+ font-size: var(--font-size-sm);
814
+ text-align: center;
815
+ }
816
+
817
+ .ui-workbench-banner {
818
+ box-sizing: border-box;
819
+ display: flex;
820
+ flex: 0 0 auto;
821
+ align-items: center;
822
+ gap: 8px;
823
+ min-width: 0;
824
+ min-height: 32px;
825
+ padding: 4px 8px 4px 10px;
826
+ color: var(--vscode-notifications-foreground, var(--color-text));
827
+ background: var(--vscode-notifications-background, var(--color-surface));
828
+ border-bottom: 1px solid var(--vscode-panel-border, var(--color-border));
829
+ }
830
+
831
+ .ui-workbench-banner--warning {
832
+ color: var(--vscode-inputValidation-warningForeground, var(--vscode-foreground));
833
+ background: var(--vscode-inputValidation-warningBackground, #352a05);
834
+ border-bottom-color: var(--vscode-inputValidation-warningBorder, #b89500);
835
+ }
836
+
837
+ .ui-workbench-banner__icon {
838
+ flex: 0 0 auto;
839
+ color: var(--vscode-editorWarning-foreground, #cca700);
840
+ }
841
+
842
+ .ui-workbench-banner__message {
843
+ flex: 1;
844
+ min-width: 0;
845
+ overflow: hidden;
846
+ text-overflow: ellipsis;
847
+ white-space: nowrap;
848
+ }
849
+
850
+ .ui-workbench-panel-scroll {
851
+ flex: 1;
852
+ min-width: 0;
853
+ min-height: 0;
854
+ }
855
+
856
+ .ui-input,
857
+ .ui-workbench-field,
858
+ .ui-workbench-select {
859
+ box-sizing: border-box;
860
+ width: 100%;
861
+ height: 26px;
862
+ min-width: 0;
863
+ padding: 0 8px;
864
+ color: var(--vscode-input-foreground, var(--color-text));
865
+ background: var(--vscode-input-background, var(--color-surface));
866
+ border: 1px solid var(--vscode-input-border, var(--color-border));
867
+ border-radius: 0;
868
+ outline: none;
869
+ font: inherit;
870
+ font-size: var(--font-size-sm);
871
+ }
872
+
873
+ .ui-input[data-width='default'] {
874
+ width: 180px;
875
+ }
876
+
877
+ .ui-input[data-width='wide'] {
878
+ width: 260px;
879
+ }
880
+
881
+ .ui-input[data-width='full'] {
882
+ width: 100%;
883
+ }
884
+
885
+ .ui-input[type='range'] {
886
+ padding: 0;
887
+ background: transparent;
888
+ border-color: transparent;
889
+ accent-color: var(--vscode-focusBorder, var(--color-focus-border));
890
+ }
891
+
892
+ .ui-input[type='range']:focus {
893
+ border-color: transparent;
894
+ outline: 1px solid var(--vscode-focusBorder, var(--color-focus-border));
895
+ outline-offset: 2px;
896
+ }
897
+
898
+ .ui-workbench-field:focus,
899
+ .ui-workbench-select:focus,
900
+ .ui-input:focus,
901
+ .ui-textarea:focus {
902
+ border-color: var(--vscode-focusBorder, var(--color-focus-border));
903
+ }
904
+
905
+ .ui-textarea {
906
+ box-sizing: border-box;
907
+ width: 100%;
908
+ min-width: 0;
909
+ min-height: 80px;
910
+ padding: 8px;
911
+ color: var(--vscode-input-foreground, var(--color-text));
912
+ background: var(--vscode-input-background, var(--color-surface));
913
+ border: 1px solid var(--vscode-input-border, var(--color-border));
914
+ border-radius: 0;
915
+ outline: none;
916
+ font: inherit;
917
+ font-size: var(--font-size-sm);
918
+ line-height: 1.5;
919
+ resize: vertical;
920
+ }
921
+
922
+ .ui-textarea[data-width='default'] {
923
+ width: 180px;
924
+ }
925
+
926
+ .ui-textarea[data-width='wide'] {
927
+ width: 260px;
928
+ }
929
+
930
+ .ui-textarea[data-width='full'] {
931
+ width: 100%;
932
+ }
933
+
934
+ .ui-workbench-thumbnail {
935
+ display: inline-flex;
936
+ align-items: center;
937
+ justify-content: center;
938
+ width: 46px;
939
+ height: 28px;
940
+ overflow: hidden;
941
+ background: var(--vscode-editor-background, var(--color-bg));
942
+ border: 1px solid var(--vscode-panel-border, var(--color-border));
943
+ }
944
+
945
+ .ui-workbench-thumbnail__image {
946
+ display: block;
947
+ width: 100%;
948
+ height: 100%;
949
+ object-fit: cover;
950
+ }
951
+
952
+ .ui-workbench-thumbnail__icon {
953
+ color: var(--vscode-icon-foreground, var(--color-icon));
954
+ font-size: 14px;
955
+ }