bosun 0.28.0 → 0.28.2

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.
@@ -1,693 +0,0 @@
1
- /* ── Workspace Switcher (dropdown) ──────────────────────────── */
2
- .ws-switcher {
3
- position: relative;
4
- display: inline-flex;
5
- z-index: 100;
6
- }
7
-
8
- .ws-switcher-btn {
9
- display: flex;
10
- align-items: center;
11
- gap: 6px;
12
- padding: 4px 10px;
13
- border-radius: 8px;
14
- border: 1px solid var(--color-border, rgba(255,255,255,0.1));
15
- background: var(--color-surface, rgba(255,255,255,0.05));
16
- color: var(--color-text, #e4e4e7);
17
- font-size: 13px;
18
- font-weight: 500;
19
- cursor: pointer;
20
- transition: background 0.15s, border-color 0.15s;
21
- white-space: nowrap;
22
- max-width: 200px;
23
- }
24
-
25
- .ws-switcher-btn:hover {
26
- background: var(--color-surface-hover, rgba(255,255,255,0.08));
27
- border-color: var(--color-primary, #10b981);
28
- }
29
-
30
- .ws-switcher-icon {
31
- font-size: 14px;
32
- opacity: 0.7;
33
- }
34
-
35
- .ws-switcher-name {
36
- overflow: hidden;
37
- text-overflow: ellipsis;
38
- max-width: 140px;
39
- }
40
-
41
- .ws-switcher-chevron {
42
- font-size: 10px;
43
- opacity: 0.6;
44
- transition: transform 0.15s;
45
- }
46
-
47
- .ws-switcher-chevron.open {
48
- transform: rotate(180deg);
49
- }
50
-
51
- .ws-switcher-dropdown {
52
- position: absolute;
53
- top: calc(100% + 4px);
54
- left: 0;
55
- min-width: 260px;
56
- max-width: 340px;
57
- max-height: 400px;
58
- overflow-y: auto;
59
- background: var(--color-bg, #1a1a2e);
60
- border: 1px solid var(--color-border, rgba(255,255,255,0.1));
61
- border-radius: 12px;
62
- box-shadow: 0 8px 32px rgba(0,0,0,0.4);
63
- padding: 6px;
64
- animation: wsDropIn 0.15s ease-out;
65
- }
66
-
67
- @keyframes wsDropIn {
68
- from { opacity: 0; transform: translateY(-4px); }
69
- to { opacity: 1; transform: translateY(0); }
70
- }
71
-
72
- .ws-switcher-header {
73
- font-size: 11px;
74
- font-weight: 600;
75
- text-transform: uppercase;
76
- letter-spacing: 0.5px;
77
- color: var(--color-text-muted, #a1a1aa);
78
- padding: 6px 10px 4px;
79
- }
80
-
81
- .ws-switcher-item {
82
- display: block;
83
- width: 100%;
84
- text-align: left;
85
- padding: 8px 10px;
86
- border: none;
87
- border-radius: 8px;
88
- background: transparent;
89
- color: var(--color-text, #e4e4e7);
90
- cursor: pointer;
91
- transition: background 0.12s;
92
- }
93
-
94
- .ws-switcher-item:hover {
95
- background: var(--color-surface-hover, rgba(255,255,255,0.06));
96
- }
97
-
98
- .ws-switcher-item.active {
99
- background: rgba(16,185,129,0.1);
100
- border-left: 2px solid var(--color-primary, #10b981);
101
- }
102
-
103
- .ws-switcher-item-main {
104
- display: flex;
105
- align-items: center;
106
- justify-content: space-between;
107
- gap: 8px;
108
- }
109
-
110
- .ws-switcher-item-name {
111
- font-size: 13px;
112
- font-weight: 500;
113
- }
114
-
115
- .ws-switcher-badge {
116
- font-size: 10px;
117
- padding: 1px 6px;
118
- border-radius: 4px;
119
- background: rgba(16,185,129,0.15);
120
- color: var(--color-primary, #10b981);
121
- font-weight: 600;
122
- }
123
-
124
- .ws-switcher-item-repos {
125
- display: flex;
126
- flex-wrap: wrap;
127
- gap: 4px;
128
- margin-top: 4px;
129
- }
130
-
131
- .ws-switcher-repo {
132
- font-size: 11px;
133
- padding: 1px 6px;
134
- border-radius: 4px;
135
- background: var(--color-surface, rgba(255,255,255,0.05));
136
- color: var(--color-text-muted, #a1a1aa);
137
- }
138
-
139
- .ws-switcher-repo.missing {
140
- opacity: 0.5;
141
- text-decoration: line-through;
142
- }
143
-
144
- /* ── Dropdown divider & manage button ────────────────────── */
145
- .ws-switcher-divider {
146
- height: 1px;
147
- margin: 4px 8px;
148
- background: var(--color-border, rgba(255,255,255,0.08));
149
- }
150
-
151
- .ws-switcher-manage-btn {
152
- display: flex !important;
153
- align-items: center;
154
- gap: 8px;
155
- color: var(--color-text-muted, #a1a1aa) !important;
156
- font-size: 12px;
157
- }
158
-
159
- .ws-switcher-manage-btn:hover {
160
- color: var(--color-primary, #10b981) !important;
161
- }
162
-
163
- .ws-switcher-manage-icon {
164
- font-size: 14px;
165
- }
166
-
167
- @media (max-width: 640px) {
168
- .ws-switcher-btn {
169
- padding: 4px 8px;
170
- max-width: 150px;
171
- }
172
-
173
- .ws-switcher-name {
174
- max-width: 90px;
175
- }
176
- }
177
-
178
- @media (max-width: 420px) {
179
- .ws-switcher-name {
180
- display: none;
181
- }
182
- }
183
-
184
-
185
- /* ══════════════════════════════════════════════════════════════
186
- Workspace Manager — full-screen overlay panel
187
- ══════════════════════════════════════════════════════════════ */
188
-
189
- /* ── Overlay backdrop ────────────────────────────────────── */
190
- .ws-manager-overlay {
191
- position: fixed;
192
- inset: 0;
193
- z-index: 9000;
194
- display: flex;
195
- align-items: center;
196
- justify-content: center;
197
- background: rgba(0, 0, 0, 0.65);
198
- backdrop-filter: blur(4px);
199
- -webkit-backdrop-filter: blur(4px);
200
- animation: wsOverlayIn 0.2s ease-out;
201
- }
202
-
203
- @keyframes wsOverlayIn {
204
- from { opacity: 0; }
205
- to { opacity: 1; }
206
- }
207
-
208
- /* ── Panel ───────────────────────────────────────────────── */
209
- .ws-manager-panel {
210
- width: 94vw;
211
- max-width: 520px;
212
- max-height: 88vh;
213
- display: flex;
214
- flex-direction: column;
215
- background: #1a1a2e;
216
- border: 1px solid rgba(255, 255, 255, 0.1);
217
- border-radius: 16px;
218
- box-shadow: 0 24px 64px rgba(0, 0, 0, 0.5);
219
- overflow: hidden;
220
- animation: wsPanelIn 0.25s ease-out;
221
- }
222
-
223
- @keyframes wsPanelIn {
224
- from { opacity: 0; transform: translateY(12px) scale(0.97); }
225
- to { opacity: 1; transform: translateY(0) scale(1); }
226
- }
227
-
228
- /* ── Header ──────────────────────────────────────────────── */
229
- .ws-manager-header {
230
- display: flex;
231
- align-items: center;
232
- justify-content: space-between;
233
- padding: 16px 20px;
234
- border-bottom: 1px solid rgba(255, 255, 255, 0.08);
235
- flex-shrink: 0;
236
- }
237
-
238
- .ws-manager-title {
239
- margin: 0;
240
- font-size: 17px;
241
- font-weight: 700;
242
- color: #f4f4f5;
243
- letter-spacing: -0.01em;
244
- }
245
-
246
- .ws-manager-header-actions {
247
- display: flex;
248
- align-items: center;
249
- gap: 8px;
250
- }
251
-
252
- .ws-manager-close-btn {
253
- display: flex;
254
- align-items: center;
255
- justify-content: center;
256
- width: 32px;
257
- height: 32px;
258
- border: none;
259
- border-radius: 8px;
260
- background: rgba(255, 255, 255, 0.06);
261
- color: #a1a1aa;
262
- font-size: 16px;
263
- cursor: pointer;
264
- transition: background 0.15s, color 0.15s;
265
- }
266
-
267
- .ws-manager-close-btn:hover {
268
- background: rgba(255, 255, 255, 0.12);
269
- color: #f4f4f5;
270
- }
271
-
272
- /* ── Body (scrollable) ───────────────────────────────────── */
273
- .ws-manager-body {
274
- flex: 1 1 auto;
275
- overflow-y: auto;
276
- padding: 12px 16px 20px;
277
- scrollbar-width: thin;
278
- scrollbar-color: rgba(255,255,255,0.1) transparent;
279
- }
280
-
281
- .ws-manager-body::-webkit-scrollbar {
282
- width: 6px;
283
- }
284
-
285
- .ws-manager-body::-webkit-scrollbar-thumb {
286
- background: rgba(255,255,255,0.12);
287
- border-radius: 3px;
288
- }
289
-
290
- /* ── Workspace list ──────────────────────────────────────── */
291
- .ws-manager-list {
292
- display: flex;
293
- flex-direction: column;
294
- gap: 10px;
295
- }
296
-
297
- /* ── Workspace card ──────────────────────────────────────── */
298
- .ws-manager-item {
299
- background: rgba(255, 255, 255, 0.03);
300
- border: 1px solid rgba(255, 255, 255, 0.07);
301
- border-radius: 12px;
302
- padding: 14px 16px;
303
- transition: border-color 0.15s, background 0.15s;
304
- }
305
-
306
- .ws-manager-item:hover {
307
- border-color: rgba(255, 255, 255, 0.12);
308
- background: rgba(255, 255, 255, 0.04);
309
- }
310
-
311
- .ws-manager-item.active {
312
- border-color: rgba(16, 185, 129, 0.3);
313
- background: rgba(16, 185, 129, 0.05);
314
- }
315
-
316
- .ws-manager-item-header {
317
- display: flex;
318
- align-items: center;
319
- justify-content: space-between;
320
- gap: 8px;
321
- margin-bottom: 8px;
322
- }
323
-
324
- .ws-manager-item-title {
325
- display: flex;
326
- align-items: center;
327
- gap: 8px;
328
- min-width: 0;
329
- }
330
-
331
- .ws-manager-item-name {
332
- font-size: 14px;
333
- font-weight: 600;
334
- color: #f4f4f5;
335
- white-space: nowrap;
336
- overflow: hidden;
337
- text-overflow: ellipsis;
338
- }
339
-
340
- .ws-manager-active-badge {
341
- font-size: 10px;
342
- font-weight: 600;
343
- padding: 2px 8px;
344
- border-radius: 6px;
345
- background: rgba(16, 185, 129, 0.15);
346
- color: #10b981;
347
- white-space: nowrap;
348
- }
349
-
350
- /* ── Action buttons row ──────────────────────────────────── */
351
- .ws-manager-actions {
352
- display: flex;
353
- align-items: center;
354
- gap: 4px;
355
- flex-shrink: 0;
356
- }
357
-
358
- /* ── Repos section inside card ───────────────────────────── */
359
- .ws-manager-repos {
360
- display: flex;
361
- flex-direction: column;
362
- gap: 4px;
363
- padding-top: 4px;
364
- border-top: 1px solid rgba(255, 255, 255, 0.05);
365
- }
366
-
367
- .ws-manager-repo-row {
368
- display: flex;
369
- align-items: center;
370
- gap: 8px;
371
- padding: 5px 8px;
372
- border-radius: 6px;
373
- transition: background 0.12s;
374
- }
375
-
376
- .ws-manager-repo-row:hover {
377
- background: rgba(255, 255, 255, 0.04);
378
- }
379
-
380
- .ws-manager-repo-name {
381
- flex: 1 1 auto;
382
- font-size: 12px;
383
- font-weight: 500;
384
- color: #d4d4d8;
385
- overflow: hidden;
386
- text-overflow: ellipsis;
387
- white-space: nowrap;
388
- display: flex;
389
- align-items: center;
390
- gap: 4px;
391
- }
392
-
393
- .ws-manager-repo-name.missing {
394
- opacity: 0.5;
395
- text-decoration: line-through;
396
- }
397
-
398
- .ws-manager-repo-star {
399
- color: #f59e0b;
400
- font-size: 11px;
401
- }
402
-
403
- .ws-manager-repo-status {
404
- font-size: 11px;
405
- font-weight: 500;
406
- white-space: nowrap;
407
- }
408
-
409
- .ws-manager-repo-status.ok {
410
- color: #10b981;
411
- }
412
-
413
- .ws-manager-repo-status.err {
414
- color: #ef4444;
415
- }
416
-
417
- /* ── Empty states ────────────────────────────────────────── */
418
- .ws-manager-empty {
419
- font-size: 12px;
420
- color: #71717a;
421
- padding: 6px 8px;
422
- font-style: italic;
423
- }
424
-
425
- .ws-manager-empty-state {
426
- text-align: center;
427
- padding: 32px 16px;
428
- font-size: 13px;
429
- color: #71717a;
430
- }
431
-
432
- .ws-manager-loading {
433
- display: flex;
434
- align-items: center;
435
- justify-content: center;
436
- gap: 8px;
437
- padding: 32px 16px;
438
- font-size: 13px;
439
- color: #a1a1aa;
440
- }
441
-
442
- /* ── Confirm bar ─────────────────────────────────────────── */
443
- .ws-manager-confirm {
444
- display: flex;
445
- align-items: center;
446
- justify-content: space-between;
447
- gap: 8px;
448
- padding: 8px 10px;
449
- background: rgba(239, 68, 68, 0.08);
450
- border: 1px solid rgba(239, 68, 68, 0.2);
451
- border-radius: 8px;
452
- margin: 4px 0;
453
- animation: wsConfirmIn 0.15s ease-out;
454
- }
455
-
456
- @keyframes wsConfirmIn {
457
- from { opacity: 0; transform: scaleY(0.9); }
458
- to { opacity: 1; transform: scaleY(1); }
459
- }
460
-
461
- .ws-manager-confirm-msg {
462
- font-size: 12px;
463
- color: #fca5a5;
464
- font-weight: 500;
465
- }
466
-
467
- .ws-manager-confirm-actions {
468
- display: flex;
469
- gap: 4px;
470
- flex-shrink: 0;
471
- }
472
-
473
- /* ── Forms ────────────────────────────────────────────────── */
474
- .ws-manager-form {
475
- display: flex;
476
- flex-direction: column;
477
- gap: 8px;
478
- }
479
-
480
- .ws-manager-form.repo-form {
481
- padding: 8px;
482
- background: rgba(255, 255, 255, 0.02);
483
- border: 1px solid rgba(255, 255, 255, 0.06);
484
- border-radius: 8px;
485
- margin-top: 4px;
486
- animation: wsFormIn 0.15s ease-out;
487
- }
488
-
489
- @keyframes wsFormIn {
490
- from { opacity: 0; max-height: 0; }
491
- to { opacity: 1; max-height: 200px; }
492
- }
493
-
494
- .ws-manager-form.add-ws-form {
495
- margin-top: 16px;
496
- padding: 14px 16px;
497
- background: rgba(255, 255, 255, 0.03);
498
- border: 1px dashed rgba(255, 255, 255, 0.1);
499
- border-radius: 12px;
500
- }
501
-
502
- .ws-manager-form-title {
503
- font-size: 12px;
504
- font-weight: 600;
505
- color: #a1a1aa;
506
- text-transform: uppercase;
507
- letter-spacing: 0.5px;
508
- margin-bottom: 4px;
509
- }
510
-
511
- .ws-manager-form-row {
512
- display: flex;
513
- gap: 8px;
514
- align-items: center;
515
- }
516
-
517
- .ws-manager-form-actions {
518
- display: flex;
519
- gap: 6px;
520
- }
521
-
522
- /* ── Input fields ────────────────────────────────────────── */
523
- .ws-manager-input {
524
- flex: 1 1 auto;
525
- padding: 8px 12px;
526
- font-size: 13px;
527
- font-family: inherit;
528
- color: #f4f4f5;
529
- background: rgba(255, 255, 255, 0.06);
530
- border: 1px solid rgba(255, 255, 255, 0.1);
531
- border-radius: 8px;
532
- outline: none;
533
- transition: border-color 0.15s, box-shadow 0.15s;
534
- }
535
-
536
- .ws-manager-input::placeholder {
537
- color: #52525b;
538
- }
539
-
540
- .ws-manager-input:focus {
541
- border-color: #10b981;
542
- box-shadow: 0 0 0 2px rgba(16, 185, 129, 0.15);
543
- }
544
-
545
- .ws-manager-input:disabled {
546
- opacity: 0.5;
547
- cursor: not-allowed;
548
- }
549
-
550
- .ws-manager-input.sm {
551
- padding: 6px 10px;
552
- font-size: 12px;
553
- }
554
-
555
- /* ── Buttons ─────────────────────────────────────────────── */
556
- .ws-manager-btn {
557
- display: inline-flex;
558
- align-items: center;
559
- justify-content: center;
560
- gap: 5px;
561
- padding: 7px 14px;
562
- font-size: 13px;
563
- font-weight: 500;
564
- font-family: inherit;
565
- border: 1px solid transparent;
566
- border-radius: 8px;
567
- cursor: pointer;
568
- transition: background 0.15s, border-color 0.15s, color 0.15s, opacity 0.15s;
569
- white-space: nowrap;
570
- }
571
-
572
- .ws-manager-btn:disabled {
573
- opacity: 0.5;
574
- cursor: not-allowed;
575
- }
576
-
577
- .ws-manager-btn.sm {
578
- padding: 4px 10px;
579
- font-size: 12px;
580
- border-radius: 6px;
581
- }
582
-
583
- .ws-manager-btn.icon-btn {
584
- padding: 4px 6px;
585
- min-width: 24px;
586
- }
587
-
588
- /* Primary (green) */
589
- .ws-manager-btn.primary {
590
- background: #10b981;
591
- color: #fff;
592
- border-color: #10b981;
593
- }
594
-
595
- .ws-manager-btn.primary:hover:not(:disabled) {
596
- background: #059669;
597
- border-color: #059669;
598
- }
599
-
600
- /* Danger (red) */
601
- .ws-manager-btn.danger {
602
- background: #ef4444;
603
- color: #fff;
604
- border-color: #ef4444;
605
- }
606
-
607
- .ws-manager-btn.danger:hover:not(:disabled) {
608
- background: #dc2626;
609
- border-color: #dc2626;
610
- }
611
-
612
- /* Ghost (transparent) */
613
- .ws-manager-btn.ghost {
614
- background: rgba(255, 255, 255, 0.05);
615
- color: #a1a1aa;
616
- border-color: rgba(255, 255, 255, 0.08);
617
- }
618
-
619
- .ws-manager-btn.ghost:hover:not(:disabled) {
620
- background: rgba(255, 255, 255, 0.1);
621
- color: #f4f4f5;
622
- border-color: rgba(255, 255, 255, 0.15);
623
- }
624
-
625
- /* Danger text (ghost but red on hover) */
626
- .ws-manager-btn.danger-text {
627
- color: #a1a1aa;
628
- }
629
-
630
- .ws-manager-btn.danger-text:hover:not(:disabled) {
631
- color: #ef4444;
632
- background: rgba(239, 68, 68, 0.1);
633
- }
634
-
635
- /* Add-repo toggle */
636
- .ws-manager-btn.add-repo-toggle {
637
- align-self: flex-start;
638
- margin-top: 4px;
639
- color: #71717a;
640
- border: 1px dashed rgba(255, 255, 255, 0.08);
641
- }
642
-
643
- .ws-manager-btn.add-repo-toggle:hover:not(:disabled) {
644
- color: #10b981;
645
- border-color: rgba(16, 185, 129, 0.3);
646
- background: rgba(16, 185, 129, 0.05);
647
- }
648
-
649
- /* ── Spinner ─────────────────────────────────────────────── */
650
- .ws-manager-spinner {
651
- display: inline-block;
652
- width: 14px;
653
- height: 14px;
654
- border: 2px solid rgba(255, 255, 255, 0.15);
655
- border-top-color: #10b981;
656
- border-radius: 50%;
657
- animation: wsSpinnerSpin 0.6s linear infinite;
658
- flex-shrink: 0;
659
- }
660
-
661
- @keyframes wsSpinnerSpin {
662
- to { transform: rotate(360deg); }
663
- }
664
-
665
- /* ── Responsive ──────────────────────────────────────────── */
666
- @media (max-width: 540px) {
667
- .ws-manager-panel {
668
- width: 100vw;
669
- max-width: 100vw;
670
- height: 100vh;
671
- max-height: 100vh;
672
- border-radius: 0;
673
- }
674
-
675
- .ws-manager-item-header {
676
- flex-direction: column;
677
- align-items: flex-start;
678
- gap: 6px;
679
- }
680
-
681
- .ws-manager-actions {
682
- width: 100%;
683
- flex-wrap: wrap;
684
- }
685
-
686
- .ws-manager-form-row {
687
- flex-direction: column;
688
- }
689
-
690
- .ws-manager-form-row .ws-manager-btn {
691
- width: 100%;
692
- }
693
- }