@fias/plugin-dev-harness 1.5.0 → 1.5.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.
@@ -0,0 +1,642 @@
1
+ * {
2
+ margin: 0;
3
+ padding: 0;
4
+ box-sizing: border-box;
5
+ }
6
+
7
+ body {
8
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
9
+ background: #0a0a0f;
10
+ color: #e4e4e7;
11
+ display: flex;
12
+ flex-direction: column;
13
+ height: 100vh;
14
+ }
15
+
16
+ /* Toolbar */
17
+ .toolbar {
18
+ display: flex;
19
+ justify-content: space-between;
20
+ align-items: center;
21
+ padding: 8px 16px;
22
+ background: #18181b;
23
+ border-bottom: 1px solid #3f3f46;
24
+ flex-shrink: 0;
25
+ }
26
+
27
+ .toolbar-left,
28
+ .toolbar-right {
29
+ display: flex;
30
+ align-items: center;
31
+ gap: 12px;
32
+ }
33
+
34
+ .logo {
35
+ font-weight: 600;
36
+ font-size: 14px;
37
+ color: #e4e4e7;
38
+ }
39
+
40
+ /* Environment selector */
41
+ .env-selector {
42
+ background: #27272a;
43
+ color: #a1a1aa;
44
+ border: 1px solid #3f3f46;
45
+ border-radius: 4px;
46
+ padding: 3px 8px;
47
+ font-size: 11px;
48
+ font-weight: 600;
49
+ cursor: pointer;
50
+ outline: none;
51
+ text-transform: uppercase;
52
+ }
53
+
54
+ .env-selector:hover {
55
+ border-color: #52525b;
56
+ }
57
+
58
+ .env-selector:focus {
59
+ border-color: #a78bfa;
60
+ }
61
+
62
+ .mode-badge {
63
+ padding: 3px 10px;
64
+ border-radius: 4px;
65
+ font-size: 11px;
66
+ font-weight: 600;
67
+ text-transform: uppercase;
68
+ cursor: pointer;
69
+ transition: background 0.15s, border-color 0.15s;
70
+ user-select: none;
71
+ }
72
+
73
+ .mode-badge:hover {
74
+ filter: brightness(1.3);
75
+ }
76
+
77
+ .mode-badge:active {
78
+ filter: brightness(0.9);
79
+ }
80
+
81
+ .mode-mock {
82
+ background: #166534;
83
+ color: #86efac;
84
+ border: 1px solid #22c55e;
85
+ }
86
+
87
+ .mode-live {
88
+ background: #854d0e;
89
+ color: #fde047;
90
+ border: 1px solid #eab308;
91
+ }
92
+
93
+ .theme-badge {
94
+ padding: 2px 8px;
95
+ border-radius: 4px;
96
+ font-size: 11px;
97
+ font-weight: 600;
98
+ text-transform: uppercase;
99
+ }
100
+
101
+ .theme-dark {
102
+ background: #171717;
103
+ color: #a6a6a6;
104
+ }
105
+
106
+ .theme-light {
107
+ background: #e5e5e5;
108
+ color: #171717;
109
+ }
110
+
111
+ .credit-balance {
112
+ font-size: 12px;
113
+ color: #fde047;
114
+ }
115
+
116
+ .btn-icon {
117
+ background: #27272a;
118
+ border: 1px solid #3f3f46;
119
+ color: #e4e4e7;
120
+ padding: 4px 8px;
121
+ border-radius: 4px;
122
+ cursor: pointer;
123
+ font-size: 14px;
124
+ }
125
+
126
+ .btn-icon:hover {
127
+ background: #3f3f46;
128
+ }
129
+
130
+ /* Login Modal */
131
+ .modal-overlay {
132
+ position: fixed;
133
+ inset: 0;
134
+ background: rgba(0, 0, 0, 0.7);
135
+ display: flex;
136
+ align-items: center;
137
+ justify-content: center;
138
+ z-index: 1000;
139
+ }
140
+
141
+ .modal {
142
+ background: #27272a;
143
+ border: 1px solid #3f3f46;
144
+ border-radius: 8px;
145
+ padding: 24px;
146
+ width: 420px;
147
+ max-width: 90vw;
148
+ }
149
+
150
+ .modal h3 {
151
+ font-size: 16px;
152
+ color: #e4e4e7;
153
+ margin-bottom: 8px;
154
+ }
155
+
156
+ .modal p {
157
+ font-size: 13px;
158
+ color: #a1a1aa;
159
+ line-height: 1.5;
160
+ margin-bottom: 4px;
161
+ }
162
+
163
+ .modal-hint {
164
+ font-size: 12px !important;
165
+ color: #6b7280 !important;
166
+ margin-bottom: 16px !important;
167
+ }
168
+
169
+ .modal-input {
170
+ width: 100%;
171
+ padding: 8px 12px;
172
+ background: #18181b;
173
+ border: 1px solid #3f3f46;
174
+ border-radius: 4px;
175
+ color: #e4e4e7;
176
+ font-family: 'SF Mono', 'Fira Code', monospace;
177
+ font-size: 13px;
178
+ margin-bottom: 12px;
179
+ outline: none;
180
+ }
181
+
182
+ .modal-input:focus {
183
+ border-color: #a78bfa;
184
+ }
185
+
186
+ .modal-error {
187
+ font-size: 12px;
188
+ color: #fca5a5;
189
+ margin-bottom: 12px;
190
+ }
191
+
192
+ .modal-actions {
193
+ display: flex;
194
+ justify-content: flex-end;
195
+ gap: 8px;
196
+ }
197
+
198
+ .btn-primary {
199
+ background: #ffffff;
200
+ color: #0a0a0a;
201
+ border: none;
202
+ padding: 6px 16px;
203
+ border-radius: 4px;
204
+ cursor: pointer;
205
+ font-size: 13px;
206
+ font-weight: 500;
207
+ }
208
+
209
+ .btn-primary:hover {
210
+ background: #e5e5e5;
211
+ }
212
+
213
+ .btn-primary:disabled {
214
+ opacity: 0.5;
215
+ cursor: not-allowed;
216
+ }
217
+
218
+ .btn-full {
219
+ width: 100%;
220
+ padding: 10px 16px;
221
+ margin-bottom: 12px;
222
+ }
223
+
224
+ .btn-secondary {
225
+ background: transparent;
226
+ color: #a1a1aa;
227
+ border: 1px solid #3f3f46;
228
+ padding: 6px 16px;
229
+ border-radius: 4px;
230
+ cursor: pointer;
231
+ font-size: 13px;
232
+ }
233
+
234
+ .btn-secondary:hover {
235
+ background: #3f3f46;
236
+ }
237
+
238
+ .btn-link {
239
+ background: none;
240
+ border: none;
241
+ color: #a78bfa;
242
+ cursor: pointer;
243
+ font-size: 12px;
244
+ padding: 0;
245
+ }
246
+
247
+ .btn-link:hover {
248
+ text-decoration: underline;
249
+ }
250
+
251
+ .modal-divider {
252
+ display: flex;
253
+ align-items: center;
254
+ gap: 12px;
255
+ margin: 12px 0;
256
+ color: #6b7280;
257
+ font-size: 12px;
258
+ }
259
+
260
+ .modal-divider::before,
261
+ .modal-divider::after {
262
+ content: '';
263
+ flex: 1;
264
+ height: 1px;
265
+ background: #3f3f46;
266
+ }
267
+
268
+ /* Plugin status overlay */
269
+ .plugin-status {
270
+ flex: 1;
271
+ display: flex;
272
+ flex-direction: column;
273
+ align-items: center;
274
+ justify-content: center;
275
+ gap: 16px;
276
+ color: #a1a1aa;
277
+ font-size: 14px;
278
+ }
279
+
280
+ .plugin-status.hidden {
281
+ display: none;
282
+ }
283
+
284
+ .plugin-status.error {
285
+ color: #fca5a5;
286
+ }
287
+
288
+ .plugin-status p {
289
+ max-width: 500px;
290
+ text-align: center;
291
+ line-height: 1.6;
292
+ }
293
+
294
+ .plugin-status code {
295
+ background: #27272a;
296
+ padding: 2px 8px;
297
+ border-radius: 4px;
298
+ font-family: 'SF Mono', 'Fira Code', monospace;
299
+ font-size: 13px;
300
+ color: #e4e4e7;
301
+ }
302
+
303
+ .status-spinner {
304
+ width: 24px;
305
+ height: 24px;
306
+ border: 3px solid #3f3f46;
307
+ border-top-color: #a78bfa;
308
+ border-radius: 50%;
309
+ animation: spin 0.8s linear infinite;
310
+ }
311
+
312
+ @keyframes spin {
313
+ to { transform: rotate(360deg); }
314
+ }
315
+
316
+ /* Plugin iframe */
317
+ #plugin-iframe {
318
+ flex: 1;
319
+ border: none;
320
+ width: 100%;
321
+ }
322
+
323
+ #plugin-iframe.hidden {
324
+ display: none;
325
+ }
326
+
327
+ /* Dev Console */
328
+ .console-panel {
329
+ flex-shrink: 0;
330
+ border-top: 1px solid #3f3f46;
331
+ background: #18181b;
332
+ max-height: 250px;
333
+ display: flex;
334
+ flex-direction: column;
335
+ }
336
+
337
+ .console-header {
338
+ display: flex;
339
+ justify-content: space-between;
340
+ padding: 6px 16px;
341
+ cursor: pointer;
342
+ font-size: 12px;
343
+ color: #a1a1aa;
344
+ border-bottom: 1px solid #27272a;
345
+ user-select: none;
346
+ }
347
+
348
+ .console-header:hover {
349
+ background: #1e1e22;
350
+ }
351
+
352
+ .console-body {
353
+ overflow-y: auto;
354
+ padding: 8px 16px;
355
+ font-family: 'SF Mono', 'Fira Code', monospace;
356
+ font-size: 11px;
357
+ flex: 1;
358
+ display: none;
359
+ }
360
+
361
+ .console-body.open {
362
+ display: block;
363
+ }
364
+
365
+ .log-entry {
366
+ padding: 2px 0;
367
+ border-bottom: 1px solid #1e1e22;
368
+ }
369
+
370
+ .log-info {
371
+ color: #93c5fd;
372
+ }
373
+
374
+ .log-warn {
375
+ color: #fde047;
376
+ }
377
+
378
+ .log-error {
379
+ color: #fca5a5;
380
+ }
381
+
382
+ .log-time {
383
+ color: #6b7280;
384
+ margin-right: 8px;
385
+ }
386
+
387
+ .log-cost {
388
+ color: #fbbf24;
389
+ margin-left: 8px;
390
+ }
391
+
392
+ /* Publish Wizard */
393
+ .publish-modal {
394
+ width: 600px;
395
+ max-height: 85vh;
396
+ display: flex;
397
+ flex-direction: column;
398
+ }
399
+
400
+ .publish-steps {
401
+ display: flex;
402
+ gap: 4px;
403
+ margin-bottom: 16px;
404
+ }
405
+
406
+ .publish-step {
407
+ flex: 1;
408
+ padding: 6px 8px;
409
+ font-size: 11px;
410
+ font-weight: 600;
411
+ color: #6b7280;
412
+ background: #18181b;
413
+ border-radius: 4px;
414
+ text-align: center;
415
+ }
416
+
417
+ .publish-step.active {
418
+ color: #a78bfa;
419
+ background: #1e1b2e;
420
+ }
421
+
422
+ .publish-step.completed {
423
+ color: #86efac;
424
+ background: #0f291e;
425
+ }
426
+
427
+ .publish-content {
428
+ flex: 1;
429
+ overflow-y: auto;
430
+ max-height: 55vh;
431
+ padding: 4px 0;
432
+ }
433
+
434
+ .publish-form label {
435
+ display: block;
436
+ font-size: 12px;
437
+ color: #a1a1aa;
438
+ margin: 8px 0 4px;
439
+ }
440
+
441
+ .pub-textarea {
442
+ resize: vertical;
443
+ font-family: inherit;
444
+ min-height: 40px;
445
+ }
446
+
447
+ .pub-tags-container {
448
+ margin-bottom: 8px;
449
+ }
450
+
451
+ .pub-tags-list {
452
+ display: flex;
453
+ flex-wrap: wrap;
454
+ gap: 4px;
455
+ margin-bottom: 4px;
456
+ }
457
+
458
+ .pub-tag {
459
+ display: inline-flex;
460
+ align-items: center;
461
+ gap: 4px;
462
+ background: #3f3f46;
463
+ color: #e4e4e7;
464
+ padding: 2px 8px;
465
+ border-radius: 4px;
466
+ font-size: 11px;
467
+ }
468
+
469
+ .pub-tag-remove {
470
+ cursor: pointer;
471
+ color: #a1a1aa;
472
+ border: none;
473
+ background: none;
474
+ font-size: 14px;
475
+ padding: 0 2px;
476
+ }
477
+
478
+ .pub-permissions {
479
+ display: flex;
480
+ flex-direction: column;
481
+ gap: 6px;
482
+ margin-bottom: 12px;
483
+ }
484
+
485
+ .pub-checkbox {
486
+ display: flex;
487
+ align-items: center;
488
+ gap: 6px;
489
+ font-size: 12px;
490
+ color: #e4e4e7;
491
+ cursor: pointer;
492
+ }
493
+
494
+ .pub-checkbox input {
495
+ accent-color: #a78bfa;
496
+ }
497
+
498
+ .pub-loading {
499
+ display: flex;
500
+ flex-direction: column;
501
+ align-items: center;
502
+ gap: 12px;
503
+ padding: 32px 0;
504
+ color: #a1a1aa;
505
+ }
506
+
507
+ .pub-error-item {
508
+ color: #fca5a5;
509
+ font-size: 12px;
510
+ padding: 4px 0;
511
+ }
512
+
513
+ .pub-error-item::before {
514
+ content: '\2715 ';
515
+ }
516
+
517
+ .pub-warn-item {
518
+ color: #fde047;
519
+ font-size: 12px;
520
+ padding: 4px 0;
521
+ }
522
+
523
+ .pub-warn-item::before {
524
+ content: '\26A0 ';
525
+ }
526
+
527
+ .pub-valid {
528
+ color: #86efac;
529
+ font-size: 13px;
530
+ font-weight: 500;
531
+ margin-bottom: 12px;
532
+ }
533
+
534
+ .pub-listing-preview {
535
+ background: #18181b;
536
+ border: 1px solid #3f3f46;
537
+ border-radius: 8px;
538
+ padding: 16px;
539
+ margin-top: 12px;
540
+ }
541
+
542
+ .pub-listing-name {
543
+ font-size: 15px;
544
+ font-weight: 600;
545
+ color: #e4e4e7;
546
+ }
547
+
548
+ .pub-listing-desc {
549
+ font-size: 12px;
550
+ color: #a1a1aa;
551
+ margin-top: 4px;
552
+ }
553
+
554
+ .pub-listing-meta {
555
+ font-size: 11px;
556
+ color: #6b7280;
557
+ margin-top: 8px;
558
+ display: flex;
559
+ gap: 12px;
560
+ }
561
+
562
+ .pub-cost-info {
563
+ background: #1e1b2e;
564
+ border: 1px solid #3b3370;
565
+ border-radius: 8px;
566
+ padding: 12px;
567
+ margin-bottom: 12px;
568
+ font-size: 13px;
569
+ color: #e4e4e7;
570
+ }
571
+
572
+ .pub-cost-info strong {
573
+ color: #fde047;
574
+ }
575
+
576
+ .pub-build-output {
577
+ background: #0a0a0f;
578
+ border: 1px solid #3f3f46;
579
+ border-radius: 4px;
580
+ padding: 8px 12px;
581
+ font-family: 'SF Mono', 'Fira Code', monospace;
582
+ font-size: 11px;
583
+ max-height: 200px;
584
+ overflow-y: auto;
585
+ color: #a1a1aa;
586
+ white-space: pre-wrap;
587
+ display: none;
588
+ }
589
+
590
+ .pub-phase {
591
+ padding: 4px 0;
592
+ font-size: 12px;
593
+ color: #a1a1aa;
594
+ }
595
+
596
+ .pub-phase.active {
597
+ color: #e4e4e7;
598
+ }
599
+
600
+ .pub-phase.done {
601
+ color: #86efac;
602
+ }
603
+
604
+ .pub-phase.error {
605
+ color: #fca5a5;
606
+ }
607
+
608
+ .pub-phase::before {
609
+ content: '\25CB ';
610
+ }
611
+
612
+ .pub-phase.active::before {
613
+ content: '\25C9 ';
614
+ }
615
+
616
+ .pub-phase.done::before {
617
+ content: '\2713 ';
618
+ }
619
+
620
+ .pub-phase.error::before {
621
+ content: '\2715 ';
622
+ }
623
+
624
+ .pub-review-status {
625
+ text-align: center;
626
+ padding: 24px 0;
627
+ }
628
+
629
+ .pub-congrats {
630
+ color: #86efac;
631
+ font-size: 16px;
632
+ font-weight: 600;
633
+ text-align: center;
634
+ margin-bottom: 12px;
635
+ }
636
+
637
+ .pub-rejected {
638
+ color: #fca5a5;
639
+ font-size: 14px;
640
+ font-weight: 500;
641
+ margin-bottom: 8px;
642
+ }