vg-coder-cli 2.0.30 → 2.0.32

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 (40) hide show
  1. package/ARCHITECTURE.md +255 -0
  2. package/README.md +0 -11
  3. package/change.sh +0 -0
  4. package/dist/vg-coder-bundle.js +42 -0
  5. package/gulpfile.js +111 -0
  6. package/package.json +19 -11
  7. package/scripts/postinstall.js +13 -3
  8. package/src/index.js +28 -220
  9. package/src/server/api-server.js +120 -428
  10. package/src/server/views/css/bubble.css +81 -0
  11. package/src/server/views/css/code-viewer.css +58 -0
  12. package/src/server/views/css/terminal.css +59 -155
  13. package/src/server/views/dashboard.css +78 -678
  14. package/src/server/views/dashboard.html +39 -278
  15. package/src/server/views/js/api.js +2 -22
  16. package/src/server/views/js/config.js +27 -15
  17. package/src/server/views/js/event-protocol.js +263 -0
  18. package/src/server/views/js/features/bubble-features/index.js +125 -0
  19. package/src/server/views/js/features/bubble-features/paste-run-feature.js +16 -0
  20. package/src/server/views/js/features/bubble-features/terminal-feature.js +16 -0
  21. package/src/server/views/js/features/bubble.js +175 -0
  22. package/src/server/views/js/features/code-viewer.js +90 -0
  23. package/src/server/views/js/features/commands.js +34 -81
  24. package/src/server/views/js/features/editor-tabs.js +19 -46
  25. package/src/server/views/js/features/git-view.js +63 -81
  26. package/src/server/views/js/features/iframe-manager.js +3 -97
  27. package/src/server/views/js/features/monaco-manager.js +19 -39
  28. package/src/server/views/js/features/project-switcher.js +7 -63
  29. package/src/server/views/js/features/resize.js +5 -16
  30. package/src/server/views/js/features/structure.js +38 -106
  31. package/src/server/views/js/features/terminal.js +102 -418
  32. package/src/server/views/js/handlers.js +60 -43
  33. package/src/server/views/js/main.js +75 -179
  34. package/src/server/views/js/shadow-entry.js +21 -0
  35. package/src/server/views/js/utils.js +48 -28
  36. package/src/server/views/vg-coder/_metadata/generated_indexed_rulesets/_ruleset1 +0 -0
  37. package/src/server/views/vg-coder/controller.js +33 -258
  38. package/vetgo-auto/chrome/src/utils/injector-script.ts +33 -258
  39. package/vetgo-auto/vg-coder.zip +0 -0
  40. package/src/server/views/dashboard.js +0 -457
@@ -1,5 +1,4 @@
1
- :root {
2
- /* Light Mode Variables (Default) */
1
+ :root, :host, [data-theme="light"] {
3
2
  --ios-bg: #F2F2F7;
4
3
  --ios-card: #FFFFFF;
5
4
  --ios-blue: #007AFF;
@@ -14,11 +13,8 @@
14
13
  --text-inverse: #FFFFFF;
15
14
  --shadow-color: rgba(0, 0, 0, 0.04);
16
15
  --code-bg: #1C1C1E;
17
- --safe-area-top: env(safe-area-inset-top);
18
- --safe-area-bottom: env(safe-area-inset-bottom);
19
16
  }
20
17
 
21
- /* Dark Mode Variables */
22
18
  [data-theme="dark"] {
23
19
  --ios-bg: #000000;
24
20
  --ios-card: #1C1C1E;
@@ -32,694 +28,98 @@
32
28
  --code-bg: #000000;
33
29
  }
34
30
 
35
- * {
36
- margin: 0;
37
- padding: 0;
38
- box-sizing: border-box;
39
- }
31
+ * { margin: 0; padding: 0; box-sizing: border-box; }
40
32
 
41
- body {
42
- font-family: -apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI", Roboto, sans-serif;
33
+ /* APP ROOT STYLES (Toggleable) */
34
+ /* Default state is defined in inline style via gulpfile (hidden) */
35
+ #vg-app-root {
43
36
  background-color: var(--ios-bg);
44
37
  color: var(--text-primary);
45
- height: 100vh;
46
- overflow: hidden;
47
- font-size: 13px;
48
- }
49
-
50
- /* --- SPLIT LAYOUT STYLES --- */
51
- .split-layout {
52
- display: flex;
53
- height: 100vh;
54
- width: 100vw;
55
- }
56
-
57
- /* Left Panel: VG Coder Tool */
58
- .left-panel {
59
- flex: 0 0 450px;
60
- max-width: 50vw;
61
- height: 100%;
62
- overflow-y: auto;
63
- background: var(--ios-bg);
64
- position: relative;
65
- z-index: 10;
66
- /* allow resize override */
67
- flex: 0 0 450px;
68
- }
69
-
70
- /* Resize Handler */
71
- .resize-handler {
72
- width: 16px;
73
- cursor: col-resize;
74
- background: transparent;
75
- z-index: 100;
76
- margin-left: -3px; /* Overlap border */
77
- position: relative;
78
- }
79
-
80
- .resize-handler:hover,
81
- body.resizing .resize-handler {
82
- background: var(--ios-blue);
83
- opacity: 0.5;
38
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
84
39
  }
85
40
 
86
- body.resizing {
87
- cursor: col-resize;
88
- user-select: none;
41
+ /* Visible State (Expanded from Bubble) */
42
+ #vg-app-root.visible {
43
+ width: 100% !important;
44
+ height: 100% !important;
45
+ opacity: 1 !important;
89
46
  }
90
47
 
91
- .container {
92
- padding: 15px;
93
- padding-top: 15px;
94
- padding-right: 0px;
95
- }
48
+ /* Main Layout */
49
+ .split-layout { display: flex; height: 100%; width: 100%; flex-direction: row; }
50
+ .left-panel { flex: 0 0 520px; height: 100%; overflow-y: auto; background: var(--ios-bg); border-right: 1px solid var(--ios-separator); padding: 15px; }
51
+ .right-panel { flex: 1; height: 100%; background: var(--ios-bg); display: flex; flex-direction: column; overflow: hidden; }
96
52
 
97
- /* --- HEADER REDESIGN --- */
98
- .header {
99
- display: flex;
100
- flex-direction: column;
101
- gap: 6px; /* Space between rows */
102
- margin-bottom: 15px;
103
- }
104
-
105
- .header-top-row {
106
- display: flex;
107
- justify-content: space-between;
108
- align-items: center;
109
- width: 100%;
110
- }
111
-
112
- .header-left-group {
113
- display: flex;
114
- align-items: center;
115
- gap: 12px;
116
- flex: 1; /* Take available space */
117
- min-width: 0; /* Enable truncation */
118
- }
119
-
120
- .status {
121
- font-size: 14px;
122
- color: var(--ios-green);
123
- line-height: 1;
124
- flex-shrink: 0;
125
- }
126
-
127
- /* Project Switcher replaces Project Title */
128
- .project-switcher {
129
- display: flex;
130
- align-items: center;
131
- gap: 8px;
132
- flex: 1;
133
- min-width: 0;
134
- }
53
+ /* Header & Meta */
54
+ .header { display: flex; flex-direction: column; gap: 6px; margin-bottom: 15px; }
55
+ .header-top-row { display: flex; justify-content: space-between; align-items: center; width: 100%; }
56
+ .header-left-group { display: flex; align-items: center; gap: 12px; flex: 1; min-width: 0; }
57
+ .status { font-size: 14px; color: var(--ios-green); line-height: 1; flex-shrink: 0; }
135
58
 
59
+ .project-switcher { display: flex; align-items: center; gap: 8px; flex: 1; min-width: 0; }
136
60
  .project-selector {
137
- padding: 5px 10px;
138
- background: var(--ios-input-bg);
139
- border: 1px solid var(--ios-separator);
140
- border-radius: 6px;
141
- font-size: 14px; /* Slightly bigger font like a title */
142
- font-weight: 700; /* Bold like a title */
143
- color: var(--text-primary);
144
- cursor: pointer;
145
- outline: none;
146
- transition: all 0.2s;
147
- max-width: 100%;
148
- text-overflow: ellipsis;
149
- }
150
-
151
- .project-selector:hover {
152
- border-color: var(--ios-blue);
61
+ padding: 5px 10px; background: var(--ios-input-bg); border: 1px solid var(--ios-separator);
62
+ border-radius: 6px; font-size: 14px; font-weight: 700; color: var(--text-primary);
63
+ cursor: pointer; outline: none; transition: all 0.2s; max-width: 100%; text-overflow: ellipsis;
153
64
  }
65
+ .project-count { font-size: 10px; color: var(--text-secondary); background: var(--ios-gray-light); padding: 3px 7px; border-radius: 10px; font-weight: 600; white-space: nowrap; }
154
66
 
155
- .project-selector:focus {
156
- border-color: var(--ios-blue);
157
- box-shadow: 0 0 0 2px rgba(0, 122, 255, 0.1);
158
- }
159
-
160
- .project-count {
161
- font-size: 10px;
162
- color: var(--text-secondary);
163
- background: var(--ios-gray-light);
164
- padding: 3px 7px;
165
- border-radius: 10px;
166
- font-weight: 600;
167
- white-space: nowrap;
168
- }
169
-
170
- .header-actions {
171
- display: flex;
172
- align-items: center;
173
- gap: 8px;
174
- flex-shrink: 0;
175
- }
176
-
177
- .theme-toggle {
178
- width: 28px;
179
- height: 28px;
180
- border-radius: 50%;
181
- border: none;
182
- background: var(--ios-card);
183
- cursor: pointer;
184
- box-shadow: 0 2px 5px var(--shadow-color);
185
- }
67
+ .header-actions { display: flex; align-items: center; gap: 8px; flex-shrink: 0; }
186
68
 
187
- .stop-server-btn {
188
- width: 28px;
189
- height: 28px;
190
- border-radius: 50%;
191
- border: none;
192
- background: var(--ios-red);
193
- color: white;
194
- cursor: pointer;
69
+ .theme-toggle, .stop-server-btn, .expand-btn {
70
+ width: 28px; height: 28px; border-radius: 50%; border: none;
71
+ background: var(--ios-card); cursor: pointer;
195
72
  box-shadow: 0 2px 5px var(--shadow-color);
196
- display: flex;
197
- align-items: center;
198
- justify-content: center;
199
- font-size: 14px;
200
- transition: all 0.2s;
201
- }
202
-
203
- .stop-server-btn:hover {
204
- opacity: 0.8;
205
- transform: scale(1.05);
206
- }
207
-
208
- /* Bottom Row - Full Width Metadata */
209
- .header-bottom-row {
210
- width: 100%;
211
- padding-left: 2px;
212
- }
213
-
214
- .project-meta {
215
- font-size: 11px;
216
- color: var(--text-secondary);
217
- font-family: monospace;
218
- white-space: nowrap;
219
- overflow: hidden;
220
- text-overflow: ellipsis;
221
- display: block;
222
- width: 100%;
223
- line-height: 1.4;
224
- }
225
-
226
- .system-prompt-card,
227
- .endpoint-card {
228
- background: var(--ios-card);
229
- border-radius: 10px;
230
- padding: 12px;
231
- margin-bottom: 12px;
232
- box-shadow: 0 1px 3px var(--shadow-color);
233
- }
234
-
235
- .system-prompt-header {
236
- display: flex;
237
- justify-content: space-between;
238
- cursor: pointer;
239
- }
240
-
241
- .header-title-group {
242
- display: flex;
243
- align-items: center;
244
- gap: 8px;
245
- }
246
-
247
- .system-prompt-header h2 {
248
- font-size: 14px;
249
- margin: 0;
250
- }
251
-
252
- .btn-icon-head {
253
- width: 24px;
254
- height: 24px;
255
- background: rgba(0, 0, 0, 0.05);
256
- border: none;
257
- border-radius: 6px;
258
- cursor: pointer;
259
- display: flex;
260
- align-items: center;
261
- justify-content: center;
262
- text-decoration: none;
263
- color: var(--text-primary);
264
- }
265
-
266
- .system-prompt-content {
267
- max-height: 0;
268
- overflow: hidden;
269
- transition: max-height 0.3s;
270
- }
271
-
272
- .system-prompt-content.open {
273
- max-height: 500px;
274
- margin-top: 10px;
275
- }
276
-
277
- .prompt-text {
278
- background: var(--ios-input-bg);
279
- padding: 8px;
280
- border-radius: 6px;
281
- font-size: 11px;
282
- font-family: monospace;
283
- max-height: 150px;
284
- overflow-y: auto;
285
- }
286
-
287
- /* Extension Steps */
288
- .extension-steps {
289
- padding: 10px;
290
- font-size: 12px;
291
- color: var(--text-primary);
292
- }
293
-
294
- .extension-steps ol {
295
- padding-left: 20px;
296
- margin-bottom: 10px;
297
- }
298
-
299
- .extension-steps li {
300
- margin-bottom: 5px;
301
- }
302
-
303
- .endpoint-header {
304
- display: flex;
305
- justify-content: space-between;
306
- margin-bottom: 8px;
307
- padding-bottom: 5px;
308
- border-bottom: 1px solid var(--ios-separator);
309
- }
310
-
311
- .endpoint-path {
312
- font-family: monospace;
313
- font-weight: 600;
314
- font-size: 12px;
315
- }
316
-
317
- .method {
318
- font-size: 10px;
319
- padding: 2px 5px;
320
- border-radius: 4px;
321
- color: white;
322
- margin-right: 5px;
323
- }
324
-
325
- .method.post {
326
- background: var(--ios-green);
327
- }
328
-
329
- .method.get {
330
- background: var(--ios-blue);
331
- }
332
-
333
- .form-group {
334
- margin-bottom: 10px;
335
- }
336
-
337
- .form-group input,
338
- .form-group textarea {
339
- width: 100%;
340
- padding: 6px 10px;
341
- background: var(--ios-input-bg);
342
- border: none;
343
- border-radius: 6px;
344
- font-family: monospace;
345
- font-size: 12px;
346
- }
347
-
348
- .form-group textarea {
349
- min-height: 60px;
350
- resize: vertical;
351
- }
352
-
353
- .btn-group {
354
- display: flex;
355
- gap: 8px;
356
- margin-top: 10px;
357
- }
358
-
359
- .btn {
360
- flex: 1;
361
- padding: 6px 12px;
362
- border: none;
363
- border-radius: 6px;
364
- background: var(--ios-blue);
365
- color: white;
366
- font-size: 12px;
367
- cursor: pointer;
368
- display: flex;
369
- align-items: center;
370
- justify-content: center;
371
- gap: 5px;
372
- }
373
-
374
- .btn-copy {
375
- background: rgba(0, 122, 255, 0.1);
376
- color: var(--ios-blue);
377
- }
378
-
379
- .response {
380
- margin-top: 10px;
381
- padding: 8px;
382
- background: var(--code-bg);
383
- color: white;
384
- border-radius: 6px;
385
- font-size: 11px;
386
- display: none;
387
- max-height: 200px;
388
- overflow-y: auto;
389
- }
390
-
391
- .response.show {
392
- display: block;
393
- }
394
-
395
- /* Tree specific compact override */
396
- .tree-container {
397
- margin-top: 10px;
398
- }
399
-
400
- .tree-content {
401
- max-height: 300px;
402
- }
73
+ display: flex; align-items: center; justify-content: center;
74
+ color: var(--text-primary); transition: transform 0.2s;
75
+ }
76
+ .theme-toggle:hover, .stop-server-btn:hover, .expand-btn:hover { transform: scale(1.1); }
77
+ .stop-server-btn { background: var(--ios-red); color: white; }
78
+
79
+ .header-bottom-row { width: 100%; padding-left: 2px; }
80
+ .project-meta { font-size: 11px; color: var(--text-secondary); font-family: monospace; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; display: block; width: 100%; line-height: 1.4; }
81
+
82
+ /* Cards & Components */
83
+ .system-prompt-card, .endpoint-card { background: var(--ios-card); border-radius: 10px; padding: 12px; margin-bottom: 12px; box-shadow: 0 1px 3px var(--shadow-color); }
84
+ .system-prompt-header, .endpoint-header { display: flex; justify-content: space-between; cursor: pointer; }
85
+ .system-prompt-content { max-height: 0; overflow: hidden; transition: max-height 0.3s; }
86
+ .system-prompt-content.open { max-height: 500px; margin-top: 10px; }
87
+ .prompt-text { background: var(--ios-input-bg); padding: 8px; border-radius: 6px; font-size: 11px; font-family: monospace; max-height: 150px; overflow-y: auto; color: var(--text-primary); }
88
+
89
+ .form-group { margin-bottom: 10px; }
90
+ .form-group input, .form-group textarea { width: 100%; padding: 6px 10px; background: var(--ios-input-bg); border: none; border-radius: 6px; font-family: monospace; font-size: 12px; color: var(--text-primary); }
91
+ .btn-group { display: flex; gap: 8px; margin-top: 10px; }
92
+ .btn { flex: 1; padding: 6px 12px; border: none; border-radius: 6px; background: var(--ios-blue); color: white; font-size: 12px; cursor: pointer; }
93
+ .btn-icon-head { width: 24px; height: 24px; background: rgba(0, 0, 0, 0.05); border: none; border-radius: 6px; cursor: pointer; color: var(--text-primary); }
94
+ .response { margin-top: 10px; padding: 8px; background: var(--code-bg); color: white; border-radius: 6px; font-size: 11px; display: none; max-height: 200px; overflow-y: auto; }
95
+ .response.show { display: block; }
403
96
 
404
97
  /* Toast */
405
- .toast {
406
- position: fixed;
407
- bottom: 20px;
408
- left: 20px;
409
- transform: translateY(100px);
410
- }
411
-
412
- .toast.show {
413
- transform: translateY(0);
414
- }
415
-
416
- @media (max-width: 768px) {
417
- .split-layout {
418
- flex-direction: column;
419
- }
420
-
421
- .left-panel {
422
- flex: none;
423
- width: 100%;
424
- max-width: 100%;
425
- height: 100vh;
426
- border-right: none;
427
- border-bottom: 1px solid var(--ios-separator);
428
- }
429
- }
430
-
431
- /* --- SAVED COMMANDS STYLES --- */
432
- .saved-commands-panel {
433
- margin-bottom: 12px;
434
- background: var(--ios-card);
435
- }
436
-
437
- .saved-commands-header {
438
- display: flex;
439
- justify-content: space-between;
440
- align-items: center;
441
- margin-bottom: 10px;
442
- }
443
-
444
- .saved-commands-title {
445
- display: flex;
446
- align-items: center;
447
- gap: 8px;
448
- font-weight: 600;
449
- font-size: 13px;
450
- color: var(--text-primary);
451
- }
452
-
453
- .command-icon-header {
454
- font-size: 16px;
455
- }
456
-
457
- .saved-commands-actions {
458
- display: flex;
459
- gap: 6px;
460
- }
461
-
462
- .btn-new-terminal {
463
- width: 28px;
464
- height: 28px;
465
- border-radius: 6px;
466
- background: var(--ios-gray-light);
467
- border: 1px solid var(--ios-separator);
468
- color: var(--text-primary);
469
- cursor: pointer;
470
- display: flex;
471
- align-items: center;
472
- justify-content: center;
473
- font-size: 14px;
474
- transition: all 0.2s;
475
- }
476
-
477
- .btn-new-terminal:hover {
478
- background: var(--ios-separator);
479
- transform: scale(1.05);
480
- }
481
-
482
- .btn-add-command {
483
- width: 28px;
484
- height: 28px;
485
- border-radius: 6px;
486
- background: var(--ios-blue);
487
- border: none;
488
- color: white;
489
- cursor: pointer;
490
- display: flex;
491
- align-items: center;
492
- justify-content: center;
493
- font-size: 14px;
494
- transition: all 0.2s;
495
- }
496
-
497
- .btn-add-command:hover {
498
- opacity: 0.8;
499
- transform: scale(1.05);
500
- }
501
-
502
- .saved-commands-content {
503
- margin-top: 0;
504
- }
505
-
506
- /* NEW: Grid Layout for Commands */
507
- .commands-list {
508
- display: grid;
509
- grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
510
- gap: 8px;
511
- max-height: 300px;
512
- overflow-y: auto;
513
- padding-right: 2px; /* For scrollbar */
514
- }
515
-
516
- /* Custom Scrollbar for list */
517
- .commands-list::-webkit-scrollbar {
518
- width: 4px;
519
- }
520
- .commands-list::-webkit-scrollbar-thumb {
521
- background: var(--ios-separator);
522
- border-radius: 2px;
523
- }
524
-
525
- .command-card {
526
- display: flex;
527
- justify-content: space-between;
528
- align-items: center;
529
- padding: 6px 8px; /* Tighter padding */
530
- background: var(--ios-input-bg);
531
- border-radius: 6px;
532
- cursor: pointer;
533
- transition: all 0.2s;
534
- border: 1px solid transparent;
535
- height: 42px; /* Fixed height for consistency */
536
- overflow: hidden;
537
- }
538
-
539
- .command-card:hover {
540
- background: var(--ios-gray-light);
541
- border-color: var(--ios-blue);
542
- transform: translateY(-1px);
543
- }
544
-
545
- .command-card-main {
546
- display: flex;
547
- align-items: center;
548
- gap: 8px;
549
- flex: 1;
550
- min-width: 0; /* Critical for truncation */
551
- }
552
-
553
- .command-icon {
554
- font-size: 16px;
555
- flex-shrink: 0;
556
- width: 20px;
557
- text-align: center;
558
- }
559
-
560
- .command-info {
561
- display: flex;
562
- flex-direction: column;
563
- gap: 1px; /* Tighter gap */
564
- min-width: 0;
565
- flex: 1;
566
- }
567
-
568
- .command-name {
569
- font-weight: 600;
570
- font-size: 12px;
571
- color: var(--text-primary);
572
- white-space: nowrap;
573
- overflow: hidden;
574
- text-overflow: ellipsis;
575
- line-height: 1.2;
576
- }
577
-
578
- .command-text {
579
- font-family: monospace;
580
- font-size: 10px;
581
- color: var(--text-secondary);
582
- white-space: nowrap;
583
- overflow: hidden;
584
- text-overflow: ellipsis;
585
- line-height: 1.2;
586
- }
587
-
588
- .command-card-actions {
589
- display: flex;
590
- gap: 2px;
591
- opacity: 0;
592
- transition: opacity 0.2s;
593
- margin-left: 4px;
594
- flex-shrink: 0;
595
- background: var(--ios-gray-light); /* Ensure visibility over background */
596
- border-radius: 4px;
597
- }
598
-
599
- .command-card:hover .command-card-actions {
600
- opacity: 1;
601
- }
602
-
603
- .command-action-btn {
604
- width: 22px;
605
- height: 22px;
606
- border: none;
98
+ .toast { position: fixed; bottom: 20px; left: 20px; transform: translateY(100px); transition: transform 0.3s; background: var(--ios-green); color: white; padding: 8px 16px; border-radius: 8px; font-size: 13px; z-index: 99999; }
99
+ .toast.show { transform: translateY(0); }
100
+ .toast.error { background: var(--ios-red); }
101
+
102
+ /* Saved Commands */
103
+ .saved-commands-panel { background: var(--ios-card); margin-bottom: 12px; }
104
+ .saved-commands-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 10px; }
105
+ .saved-commands-title { font-weight: 600; font-size: 13px; color: var(--text-primary); display: flex; gap: 8px; align-items: center; }
106
+ .commands-list { display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); gap: 8px; max-height: 300px; overflow-y: auto; }
107
+ .command-card { display: flex; justify-content: space-between; align-items: center; padding: 6px 8px; background: var(--ios-input-bg); border-radius: 6px; cursor: pointer; transition: all 0.2s; height: 42px; }
108
+ .command-card:hover { background: var(--ios-gray-light); }
109
+ .command-name { font-weight: 600; font-size: 12px; color: var(--text-primary); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
110
+ .command-text { font-family: monospace; font-size: 10px; color: var(--text-secondary); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
111
+ .command-action-btn { background: transparent; border: none; cursor: pointer; color: var(--text-secondary); }
112
+
113
+ /* Modal */
114
+ .modal { display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0, 0, 0, 0.5); z-index: 10000; align-items: center; justify-content: center; }
115
+ .modal-content { background: var(--ios-card); border-radius: 12px; padding: 20px; width: 90%; max-width: 400px; color: var(--text-primary); }
116
+
117
+ #resize-handler {
118
+ width: 8px;
119
+ cursor: ew-resize;
607
120
  background: transparent;
608
- border-radius: 4px;
609
- cursor: pointer;
610
- display: flex;
611
- align-items: center;
612
- justify-content: center;
613
- font-size: 12px;
614
- color: var(--text-secondary);
615
- transition: all 0.2s;
616
- }
617
-
618
- .command-action-btn:hover {
619
- background: rgba(0, 0, 0, 0.1);
620
- color: var(--text-primary);
621
- transform: scale(1.1);
622
- }
623
-
624
- /* Modal Styles */
625
- .modal {
626
- display: none;
627
- position: fixed;
628
- top: 0;
629
- left: 0;
630
- width: 100%;
631
- height: 100%;
632
- background: rgba(0, 0, 0, 0.5);
633
- z-index: 10000;
634
- align-items: center;
635
- justify-content: center;
636
- }
637
-
638
- .modal-content {
639
- background: var(--ios-card);
640
- border-radius: 12px;
641
- padding: 20px;
642
- width: 90%;
643
- max-width: 400px;
644
- box-shadow: 0 10px 40px rgba(0, 0, 0, 0.3);
645
- }
646
-
647
- .modal-content h3 {
648
- margin: 0 0 15px 0;
649
- font-size: 16px;
650
- color: var(--text-primary);
651
- }
652
-
653
- .modal-content .form-group {
654
- margin-bottom: 15px;
655
- }
656
-
657
- .modal-content .form-group label {
658
- display: block;
659
- margin-bottom: 5px;
660
- font-size: 12px;
661
- font-weight: 600;
662
- color: var(--text-secondary);
663
- }
664
-
665
- .modal-content .form-group input {
666
- width: 100%;
667
- padding: 8px 12px;
668
- background: var(--ios-input-bg);
669
- border: 1px solid var(--ios-separator);
670
- border-radius: 8px;
671
- font-size: 13px;
672
- color: var(--text-primary);
673
- }
674
-
675
- .modal-content .form-group input:focus {
676
- outline: none;
677
- border-color: var(--ios-blue);
678
- }
679
-
680
- .modal-actions {
681
- display: flex;
682
- gap: 10px;
683
- margin-top: 20px;
684
- }
685
-
686
- .modal-actions .btn {
687
- flex: 1;
688
- padding: 10px;
689
- border: none;
690
- border-radius: 8px;
691
- font-size: 13px;
692
- font-weight: 600;
693
- cursor: pointer;
694
- transition: all 0.2s;
695
- }
696
-
697
- .modal-actions .btn:first-child {
698
- background: var(--ios-gray-light);
699
- color: var(--text-primary);
700
- }
701
-
702
- .modal-actions .btn:first-child:hover {
703
- background: var(--ios-separator);
704
- }
705
-
706
- .modal-actions .btn-primary {
707
- background: var(--ios-blue);
708
- color: white;
709
- }
710
-
711
- .modal-actions .btn-primary:hover {
712
- opacity: 0.9;
713
- }
714
-
715
- .endpoint-title-group {
716
- display: flex;
717
- align-items: center;
718
- gap: 8px;
719
- }
720
-
721
- .toggle-icon {
722
- font-size: 12px;
723
- color: var(--text-secondary);
724
- transition: transform 0.2s;
121
+ transition: background 0.2s ease;
725
122
  }
123
+ #resize-handler:hover {
124
+ background: rgba(102, 126, 234, 0.5);
125
+ }