swaggerizer 0.0.0-stage → 1.0.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 (64) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +359 -2
  3. package/dist/admin.d.ts +35 -0
  4. package/dist/admin.d.ts.map +1 -0
  5. package/dist/catalogue.d.ts +22 -0
  6. package/dist/catalogue.d.ts.map +1 -0
  7. package/dist/chunks/scenario-DXI-TbMN.mjs +371 -0
  8. package/dist/chunks/scenario-DXI-TbMN.mjs.map +1 -0
  9. package/dist/chunks/scenario-_ZBu5fJX.js +391 -0
  10. package/dist/chunks/scenario-_ZBu5fJX.js.map +1 -0
  11. package/dist/cli.d.ts +2 -0
  12. package/dist/cli.d.ts.map +1 -0
  13. package/dist/cli.js +2977 -0
  14. package/dist/cli.js.map +1 -0
  15. package/dist/config.d.ts +100 -0
  16. package/dist/config.d.ts.map +1 -0
  17. package/dist/config.js +129 -0
  18. package/dist/config.js.map +1 -0
  19. package/dist/config.mjs +120 -0
  20. package/dist/config.mjs.map +1 -0
  21. package/dist/contract.d.ts +60 -0
  22. package/dist/contract.d.ts.map +1 -0
  23. package/dist/debug-menu.d.ts +20 -0
  24. package/dist/debug-menu.d.ts.map +1 -0
  25. package/dist/debug-menu.js +238 -0
  26. package/dist/debug-menu.js.map +1 -0
  27. package/dist/debug-menu.mjs +236 -0
  28. package/dist/debug-menu.mjs.map +1 -0
  29. package/dist/generate.d.ts +74 -0
  30. package/dist/generate.d.ts.map +1 -0
  31. package/dist/index.d.ts +14 -0
  32. package/dist/index.d.ts.map +1 -0
  33. package/dist/index.js +2397 -0
  34. package/dist/index.js.map +1 -0
  35. package/dist/index.mjs +2343 -0
  36. package/dist/index.mjs.map +1 -0
  37. package/dist/load-config.d.ts +15 -0
  38. package/dist/load-config.d.ts.map +1 -0
  39. package/dist/msw.d.ts +48 -0
  40. package/dist/msw.d.ts.map +1 -0
  41. package/dist/msw.js +324 -0
  42. package/dist/msw.js.map +1 -0
  43. package/dist/msw.mjs +317 -0
  44. package/dist/msw.mjs.map +1 -0
  45. package/dist/paths.d.ts +14 -0
  46. package/dist/paths.d.ts.map +1 -0
  47. package/dist/pull.d.ts +31 -0
  48. package/dist/pull.d.ts.map +1 -0
  49. package/dist/scenario.d.ts +86 -0
  50. package/dist/scenario.d.ts.map +1 -0
  51. package/dist/schema.d.ts +13 -0
  52. package/dist/schema.d.ts.map +1 -0
  53. package/dist/server.d.ts +83 -0
  54. package/dist/server.d.ts.map +1 -0
  55. package/dist/spec.d.ts +36 -0
  56. package/dist/spec.d.ts.map +1 -0
  57. package/dist/types.d.ts +175 -0
  58. package/dist/types.d.ts.map +1 -0
  59. package/dist/ui/app.css +1119 -0
  60. package/dist/ui/app.js +806 -0
  61. package/dist/ui/index.html +77 -0
  62. package/dist/ui-assets.d.ts +9 -0
  63. package/dist/ui-assets.d.ts.map +1 -0
  64. package/package.json +99 -4
@@ -0,0 +1,1119 @@
1
+ :root {
2
+ --bg: #f5f6f8;
3
+ --surface: #ffffff;
4
+ --surface-2: #f0f2f5;
5
+ --border: #dfe3e8;
6
+ --border-strong: #c7cdd5;
7
+ --text: #17202b;
8
+ --text-2: #4a5563;
9
+ --text-3: #6b7685;
10
+ --accent: #0f766e;
11
+ --accent-soft: #e6f4f2;
12
+ --accent-text: #115e59;
13
+ --focus: #14b8a6;
14
+ --ok: #15803d;
15
+ --ok-soft: #e7f6ec;
16
+ --info: #1d4ed8;
17
+ --info-soft: #e6eefd;
18
+ --warn: #a15c00;
19
+ --warn-soft: #fdf2df;
20
+ --err: #b42318;
21
+ --err-soft: #fdeceb;
22
+ --purple: #7e22ce;
23
+ --purple-soft: #f4e9fd;
24
+ --code-bg: #0f172a;
25
+ --code-text: #e2e8f0;
26
+ --shadow: 0 1px 2px rgba(16, 24, 40, 0.06), 0 1px 3px rgba(16, 24, 40, 0.08);
27
+ --radius: 10px;
28
+ --mono: ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;
29
+ color-scheme: light;
30
+ }
31
+
32
+ @media (prefers-color-scheme: dark) {
33
+ :root {
34
+ --bg: #0d1117;
35
+ --surface: #151b23;
36
+ --surface-2: #1c232d;
37
+ --border: #2a323d;
38
+ --border-strong: #3a4350;
39
+ --text: #e6edf3;
40
+ --text-2: #b1bac4;
41
+ --text-3: #8b949e;
42
+ --accent: #2dd4bf;
43
+ --accent-soft: #0f2a28;
44
+ --accent-text: #99f6e4;
45
+ --focus: #5eead4;
46
+ --ok: #4ade80;
47
+ --ok-soft: #12291b;
48
+ --info: #7aa2ff;
49
+ --info-soft: #14213d;
50
+ --warn: #f5b049;
51
+ --warn-soft: #2e2210;
52
+ --err: #ff8a80;
53
+ --err-soft: #341615;
54
+ --purple: #d8b4fe;
55
+ --purple-soft: #2a1a3d;
56
+ --code-bg: #0a0e14;
57
+ --code-text: #d6deeb;
58
+ --shadow: 0 1px 2px rgba(0, 0, 0, 0.4);
59
+ color-scheme: dark;
60
+ }
61
+ }
62
+
63
+ * {
64
+ box-sizing: border-box;
65
+ }
66
+
67
+ html,
68
+ body {
69
+ margin: 0;
70
+ background: var(--bg);
71
+ color: var(--text);
72
+ font: 14px/1.45 system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
73
+ }
74
+
75
+ h1,
76
+ h2,
77
+ h3,
78
+ p {
79
+ margin: 0;
80
+ }
81
+
82
+ button,
83
+ input {
84
+ font: inherit;
85
+ color: inherit;
86
+ }
87
+
88
+ :focus-visible {
89
+ outline: 2px solid var(--focus);
90
+ outline-offset: 2px;
91
+ }
92
+
93
+ .sr-only {
94
+ position: absolute;
95
+ width: 1px;
96
+ height: 1px;
97
+ overflow: hidden;
98
+ clip: rect(0 0 0 0);
99
+ white-space: nowrap;
100
+ }
101
+
102
+ /* ---------------------------------------------------------------- top bar */
103
+
104
+ .topbar {
105
+ position: sticky;
106
+ top: 0;
107
+ z-index: 10;
108
+ display: flex;
109
+ align-items: center;
110
+ gap: 16px;
111
+ flex-wrap: wrap;
112
+ padding: 12px 20px;
113
+ background: var(--surface);
114
+ border-bottom: 1px solid var(--border);
115
+ }
116
+
117
+ .brand {
118
+ display: flex;
119
+ align-items: center;
120
+ gap: 10px;
121
+ }
122
+
123
+ .brand-mark {
124
+ display: grid;
125
+ place-items: center;
126
+ width: 32px;
127
+ height: 32px;
128
+ border-radius: 8px;
129
+ background: var(--accent);
130
+ color: #fff;
131
+ font-weight: 700;
132
+ font-size: 18px;
133
+ }
134
+
135
+ .brand h1 {
136
+ font-size: 16px;
137
+ letter-spacing: -0.01em;
138
+ }
139
+
140
+ .brand-sub {
141
+ font-size: 12px;
142
+ color: var(--text-3);
143
+ }
144
+
145
+ .stats {
146
+ display: flex;
147
+ gap: 18px;
148
+ margin-left: 12px;
149
+ color: var(--text-2);
150
+ font-size: 13px;
151
+ }
152
+
153
+ .stats strong {
154
+ color: var(--text);
155
+ font-variant-numeric: tabular-nums;
156
+ }
157
+
158
+ .actions {
159
+ margin-left: auto;
160
+ display: flex;
161
+ align-items: center;
162
+ gap: 8px;
163
+ }
164
+
165
+ .conn {
166
+ display: inline-flex;
167
+ align-items: center;
168
+ gap: 6px;
169
+ margin-right: 6px;
170
+ font-size: 12px;
171
+ color: var(--text-3);
172
+ }
173
+
174
+ .conn-dot {
175
+ width: 8px;
176
+ height: 8px;
177
+ border-radius: 50%;
178
+ background: var(--warn);
179
+ }
180
+
181
+ .conn.is-online .conn-dot {
182
+ background: var(--ok);
183
+ }
184
+
185
+ .conn.is-offline .conn-dot {
186
+ background: var(--err);
187
+ }
188
+
189
+ /* ---------------------------------------------------------------- buttons */
190
+
191
+ .btn {
192
+ display: inline-flex;
193
+ align-items: center;
194
+ gap: 6px;
195
+ padding: 7px 12px;
196
+ border: 1px solid var(--accent);
197
+ border-radius: 8px;
198
+ background: var(--accent);
199
+ color: #fff;
200
+ font-weight: 550;
201
+ cursor: pointer;
202
+ white-space: nowrap;
203
+ }
204
+
205
+ .btn:hover {
206
+ filter: brightness(1.08);
207
+ }
208
+
209
+ .btn:disabled {
210
+ opacity: 0.6;
211
+ cursor: progress;
212
+ }
213
+
214
+ .btn-ghost {
215
+ background: transparent;
216
+ color: var(--text);
217
+ border-color: var(--border-strong);
218
+ }
219
+
220
+ .btn-ghost:hover {
221
+ background: var(--surface-2);
222
+ filter: none;
223
+ }
224
+
225
+ .btn-small {
226
+ padding: 4px 9px;
227
+ font-size: 12px;
228
+ border-radius: 6px;
229
+ }
230
+
231
+ .link-btn {
232
+ padding: 0;
233
+ border: 0;
234
+ background: none;
235
+ color: var(--accent-text);
236
+ cursor: pointer;
237
+ font-size: 12px;
238
+ font-weight: 550;
239
+ }
240
+
241
+ .link-btn:hover {
242
+ text-decoration: underline;
243
+ }
244
+
245
+ /* ---------------------------------------------------------------- layout */
246
+
247
+ .layout {
248
+ display: grid;
249
+ grid-template-columns: 290px minmax(0, 1fr) 340px;
250
+ gap: 20px;
251
+ padding: 20px;
252
+ align-items: start;
253
+ }
254
+
255
+ .sidebar,
256
+ .activity {
257
+ position: sticky;
258
+ top: 78px;
259
+ max-height: calc(100vh - 98px);
260
+ overflow: auto;
261
+ }
262
+
263
+ .sidebar {
264
+ display: flex;
265
+ flex-direction: column;
266
+ gap: 16px;
267
+ }
268
+
269
+ .panel,
270
+ .activity {
271
+ background: var(--surface);
272
+ border: 1px solid var(--border);
273
+ border-radius: var(--radius);
274
+ padding: 14px;
275
+ box-shadow: var(--shadow);
276
+ }
277
+
278
+ .panel-title {
279
+ font-size: 12px;
280
+ text-transform: uppercase;
281
+ letter-spacing: 0.06em;
282
+ color: var(--text-3);
283
+ font-weight: 650;
284
+ }
285
+
286
+ .panel-hint {
287
+ margin-top: 6px;
288
+ font-size: 12px;
289
+ color: var(--text-3);
290
+ }
291
+
292
+ @media (max-width: 1240px) {
293
+ .layout {
294
+ grid-template-columns: 270px minmax(0, 1fr);
295
+ }
296
+ .activity {
297
+ grid-column: 1 / -1;
298
+ position: static;
299
+ max-height: 360px;
300
+ }
301
+ }
302
+
303
+ @media (max-width: 760px) {
304
+ .layout {
305
+ grid-template-columns: minmax(0, 1fr);
306
+ padding: 16px;
307
+ gap: 16px;
308
+ }
309
+ .sidebar {
310
+ position: static;
311
+ max-height: none;
312
+ }
313
+ .stats {
314
+ order: 3;
315
+ width: 100%;
316
+ margin-left: 0;
317
+ }
318
+ .topbar {
319
+ padding: 12px 16px;
320
+ }
321
+ }
322
+
323
+ /* ---------------------------------------------------------------- spec list */
324
+
325
+ .spec-list {
326
+ list-style: none;
327
+ margin: 12px 0 0;
328
+ padding: 0;
329
+ display: flex;
330
+ flex-direction: column;
331
+ gap: 8px;
332
+ }
333
+
334
+ .spec {
335
+ display: flex;
336
+ gap: 10px;
337
+ align-items: flex-start;
338
+ padding: 10px;
339
+ border: 1px solid var(--border);
340
+ border-radius: 8px;
341
+ background: var(--surface);
342
+ }
343
+
344
+ .spec.is-off {
345
+ background: var(--surface-2);
346
+ }
347
+
348
+ .spec.is-off .spec-title {
349
+ color: var(--text-3);
350
+ }
351
+
352
+ .spec-body {
353
+ flex: 1;
354
+ min-width: 0;
355
+ }
356
+
357
+ .spec-title {
358
+ font-weight: 600;
359
+ overflow-wrap: anywhere;
360
+ }
361
+
362
+ .spec-file {
363
+ font-family: var(--mono);
364
+ font-size: 11px;
365
+ color: var(--text-3);
366
+ overflow-wrap: anywhere;
367
+ }
368
+
369
+ .spec-meta {
370
+ display: flex;
371
+ flex-wrap: wrap;
372
+ gap: 6px;
373
+ margin-top: 6px;
374
+ }
375
+
376
+ .spec-error {
377
+ margin-top: 6px;
378
+ font-size: 12px;
379
+ color: var(--err);
380
+ overflow-wrap: anywhere;
381
+ }
382
+
383
+ .spec-jump {
384
+ margin-top: 6px;
385
+ }
386
+
387
+ .switch {
388
+ position: relative;
389
+ flex: none;
390
+ width: 36px;
391
+ height: 20px;
392
+ margin-top: 2px;
393
+ }
394
+
395
+ .switch input {
396
+ position: absolute;
397
+ inset: 0;
398
+ opacity: 0;
399
+ margin: 0;
400
+ cursor: pointer;
401
+ }
402
+
403
+ .switch-track {
404
+ position: absolute;
405
+ inset: 0;
406
+ border-radius: 999px;
407
+ background: var(--border-strong);
408
+ transition: background 0.15s;
409
+ pointer-events: none;
410
+ }
411
+
412
+ .switch-track::after {
413
+ content: "";
414
+ position: absolute;
415
+ top: 2px;
416
+ left: 2px;
417
+ width: 16px;
418
+ height: 16px;
419
+ border-radius: 50%;
420
+ background: #fff;
421
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);
422
+ transition: transform 0.15s;
423
+ }
424
+
425
+ .switch input:checked + .switch-track {
426
+ background: var(--accent);
427
+ }
428
+
429
+ .switch input:checked + .switch-track::after {
430
+ transform: translateX(16px);
431
+ }
432
+
433
+ .switch input:focus-visible + .switch-track {
434
+ outline: 2px solid var(--focus);
435
+ outline-offset: 2px;
436
+ }
437
+
438
+ /* ---------------------------------------------------------------- badges */
439
+
440
+ .badge {
441
+ display: inline-flex;
442
+ align-items: center;
443
+ padding: 1px 7px;
444
+ border-radius: 999px;
445
+ font-size: 11px;
446
+ font-weight: 600;
447
+ background: var(--surface-2);
448
+ color: var(--text-2);
449
+ border: 1px solid var(--border);
450
+ white-space: nowrap;
451
+ }
452
+
453
+ .badge-accent {
454
+ background: var(--accent-soft);
455
+ color: var(--accent-text);
456
+ border-color: transparent;
457
+ }
458
+
459
+ .badge-warn {
460
+ background: var(--warn-soft);
461
+ color: var(--warn);
462
+ border-color: transparent;
463
+ }
464
+
465
+ .badge-err {
466
+ background: var(--err-soft);
467
+ color: var(--err);
468
+ border-color: transparent;
469
+ }
470
+
471
+ .method {
472
+ display: inline-block;
473
+ min-width: 58px;
474
+ padding: 3px 0;
475
+ border-radius: 6px;
476
+ text-align: center;
477
+ font: 700 11px/1.2 var(--mono);
478
+ letter-spacing: 0.03em;
479
+ text-transform: uppercase;
480
+ background: var(--surface-2);
481
+ color: var(--text-2);
482
+ }
483
+
484
+ .method-get { background: var(--info-soft); color: var(--info); }
485
+ .method-post { background: var(--ok-soft); color: var(--ok); }
486
+ .method-put { background: var(--warn-soft); color: var(--warn); }
487
+ .method-patch { background: var(--purple-soft); color: var(--purple); }
488
+ .method-delete { background: var(--err-soft); color: var(--err); }
489
+
490
+ .status {
491
+ font: 700 12px/1 var(--mono);
492
+ font-variant-numeric: tabular-nums;
493
+ }
494
+
495
+ .status-2 { color: var(--ok); }
496
+ .status-3 { color: var(--info); }
497
+ .status-4 { color: var(--warn); }
498
+ .status-5 { color: var(--err); }
499
+
500
+ /* ---------------------------------------------------------------- filters */
501
+
502
+ .field input {
503
+ width: 100%;
504
+ margin-top: 10px;
505
+ padding: 8px 10px;
506
+ border: 1px solid var(--border-strong);
507
+ border-radius: 8px;
508
+ background: var(--surface);
509
+ }
510
+
511
+ .method-filters {
512
+ display: flex;
513
+ flex-wrap: wrap;
514
+ gap: 6px;
515
+ margin-top: 10px;
516
+ }
517
+
518
+ .chip {
519
+ padding: 3px 9px;
520
+ border: 1px solid var(--border-strong);
521
+ border-radius: 999px;
522
+ background: var(--surface);
523
+ font: 600 11px/1.4 var(--mono);
524
+ text-transform: uppercase;
525
+ cursor: pointer;
526
+ color: var(--text-2);
527
+ }
528
+
529
+ .chip[aria-pressed="true"] {
530
+ background: var(--accent);
531
+ border-color: var(--accent);
532
+ color: #fff;
533
+ }
534
+
535
+ .check {
536
+ display: flex;
537
+ align-items: center;
538
+ gap: 8px;
539
+ margin-top: 12px;
540
+ font-size: 13px;
541
+ color: var(--text-2);
542
+ cursor: pointer;
543
+ }
544
+
545
+ /* ---------------------------------------------------------------- endpoint list */
546
+
547
+ .content {
548
+ display: flex;
549
+ flex-direction: column;
550
+ gap: 22px;
551
+ min-width: 0;
552
+ }
553
+
554
+ .empty {
555
+ padding: 40px 20px;
556
+ text-align: center;
557
+ color: var(--text-3);
558
+ border: 1px dashed var(--border-strong);
559
+ border-radius: var(--radius);
560
+ }
561
+
562
+ .group-head {
563
+ display: flex;
564
+ align-items: baseline;
565
+ gap: 10px;
566
+ flex-wrap: wrap;
567
+ margin-bottom: 10px;
568
+ }
569
+
570
+ .group-head h2 {
571
+ font-size: 15px;
572
+ }
573
+
574
+ .group-file {
575
+ font-family: var(--mono);
576
+ font-size: 12px;
577
+ color: var(--text-3);
578
+ }
579
+
580
+ .group-body {
581
+ display: flex;
582
+ flex-direction: column;
583
+ gap: 10px;
584
+ }
585
+
586
+ .group-note {
587
+ padding: 12px 14px;
588
+ border-radius: 8px;
589
+ background: var(--surface-2);
590
+ color: var(--text-3);
591
+ font-size: 13px;
592
+ }
593
+
594
+ .op {
595
+ background: var(--surface);
596
+ border: 1px solid var(--border);
597
+ border-radius: var(--radius);
598
+ box-shadow: var(--shadow);
599
+ overflow: hidden;
600
+ }
601
+
602
+ .op.is-modified {
603
+ border-left: 3px solid var(--accent);
604
+ }
605
+
606
+ .op.is-inactive {
607
+ opacity: 0.62;
608
+ }
609
+
610
+ .op-head {
611
+ display: flex;
612
+ align-items: center;
613
+ gap: 10px;
614
+ padding: 12px 14px 0;
615
+ flex-wrap: wrap;
616
+ }
617
+
618
+ .op-route {
619
+ font: 600 14px/1.3 var(--mono);
620
+ overflow-wrap: anywhere;
621
+ }
622
+
623
+ .op-tags {
624
+ display: flex;
625
+ gap: 6px;
626
+ margin-left: auto;
627
+ align-items: center;
628
+ }
629
+
630
+ .op-desc {
631
+ padding: 4px 14px 0;
632
+ color: var(--text-2);
633
+ font-size: 13px;
634
+ }
635
+
636
+ .variants {
637
+ display: flex;
638
+ flex-wrap: wrap;
639
+ gap: 8px;
640
+ padding: 12px 14px;
641
+ margin: 0;
642
+ border: 0;
643
+ }
644
+
645
+ .variants legend {
646
+ float: left;
647
+ width: 100%;
648
+ margin-bottom: 2px;
649
+ font-size: 11px;
650
+ font-weight: 600;
651
+ text-transform: uppercase;
652
+ letter-spacing: 0.06em;
653
+ color: var(--text-3);
654
+ }
655
+
656
+ .variant {
657
+ position: relative;
658
+ display: inline-flex;
659
+ align-items: center;
660
+ gap: 8px;
661
+ padding: 6px 11px;
662
+ border: 1px solid var(--border-strong);
663
+ border-radius: 8px;
664
+ background: var(--surface);
665
+ cursor: pointer;
666
+ user-select: none;
667
+ transition: border-color 0.1s, background 0.1s;
668
+ }
669
+
670
+ .variant:hover {
671
+ border-color: var(--accent);
672
+ }
673
+
674
+ .variant input {
675
+ position: absolute;
676
+ opacity: 0;
677
+ pointer-events: none;
678
+ }
679
+
680
+ .variant:has(input:focus-visible) {
681
+ outline: 2px solid var(--focus);
682
+ outline-offset: 2px;
683
+ }
684
+
685
+ .variant:has(input:checked) {
686
+ border-color: var(--accent);
687
+ background: var(--accent-soft);
688
+ box-shadow: inset 0 0 0 1px var(--accent);
689
+ }
690
+
691
+ .variant-name {
692
+ font-weight: 550;
693
+ }
694
+
695
+ .variant-kind {
696
+ font-size: 11px;
697
+ color: var(--text-3);
698
+ }
699
+
700
+ .variant-default {
701
+ font-size: 10px;
702
+ font-weight: 700;
703
+ text-transform: uppercase;
704
+ letter-spacing: 0.05em;
705
+ color: var(--text-3);
706
+ }
707
+
708
+ .op-foot {
709
+ display: flex;
710
+ align-items: center;
711
+ gap: 8px;
712
+ flex-wrap: wrap;
713
+ padding: 10px 14px;
714
+ border-top: 1px solid var(--border);
715
+ background: var(--surface-2);
716
+ }
717
+
718
+ .op-foot .spacer {
719
+ flex: 1;
720
+ }
721
+
722
+ .serving {
723
+ font-size: 12px;
724
+ color: var(--text-2);
725
+ }
726
+
727
+ .serving strong {
728
+ color: var(--text);
729
+ }
730
+
731
+ .drawer {
732
+ border-top: 1px solid var(--border);
733
+ padding: 12px 14px 14px;
734
+ display: grid;
735
+ gap: 12px;
736
+ }
737
+
738
+ .drawer[hidden] {
739
+ display: none;
740
+ }
741
+
742
+ .drawer-label {
743
+ font-size: 11px;
744
+ font-weight: 600;
745
+ text-transform: uppercase;
746
+ letter-spacing: 0.06em;
747
+ color: var(--text-3);
748
+ margin-bottom: 6px;
749
+ display: flex;
750
+ gap: 8px;
751
+ align-items: center;
752
+ }
753
+
754
+ pre.code {
755
+ margin: 0;
756
+ padding: 12px;
757
+ max-height: 320px;
758
+ overflow: auto;
759
+ border-radius: 8px;
760
+ background: var(--code-bg);
761
+ color: var(--code-text);
762
+ font: 12px/1.5 var(--mono);
763
+ white-space: pre;
764
+ }
765
+
766
+ .try-row {
767
+ display: flex;
768
+ gap: 8px;
769
+ }
770
+
771
+ .try-row input {
772
+ flex: 1;
773
+ min-width: 0;
774
+ padding: 6px 10px;
775
+ border: 1px solid var(--border-strong);
776
+ border-radius: 8px;
777
+ background: var(--surface);
778
+ font-family: var(--mono);
779
+ font-size: 12px;
780
+ }
781
+
782
+ .try-result {
783
+ display: grid;
784
+ gap: 6px;
785
+ }
786
+
787
+ .try-meta {
788
+ display: flex;
789
+ gap: 12px;
790
+ font-size: 12px;
791
+ color: var(--text-2);
792
+ }
793
+
794
+ /* ---------------------------------------------------------------- activity log */
795
+
796
+ .activity-head {
797
+ display: flex;
798
+ align-items: center;
799
+ justify-content: space-between;
800
+ }
801
+
802
+ .log {
803
+ list-style: none;
804
+ margin: 10px 0 0;
805
+ padding: 0;
806
+ display: flex;
807
+ flex-direction: column;
808
+ }
809
+
810
+ .log li {
811
+ display: grid;
812
+ grid-template-columns: auto auto 1fr;
813
+ gap: 4px 8px;
814
+ align-items: center;
815
+ padding: 8px 0;
816
+ border-top: 1px solid var(--border);
817
+ font-size: 12px;
818
+ }
819
+
820
+ .log li:first-child {
821
+ border-top: 0;
822
+ }
823
+
824
+ .log li.is-new {
825
+ animation: flash 1.2s ease-out;
826
+ }
827
+
828
+ @keyframes flash {
829
+ from {
830
+ background: var(--accent-soft);
831
+ }
832
+ to {
833
+ background: transparent;
834
+ }
835
+ }
836
+
837
+ .log .method {
838
+ min-width: 48px;
839
+ font-size: 10px;
840
+ }
841
+
842
+ .log-path {
843
+ font-family: var(--mono);
844
+ overflow-wrap: anywhere;
845
+ }
846
+
847
+ .log-meta {
848
+ grid-column: 1 / -1;
849
+ display: flex;
850
+ gap: 10px;
851
+ color: var(--text-3);
852
+ font-size: 11px;
853
+ }
854
+
855
+ .log-empty {
856
+ margin-top: 10px;
857
+ font-size: 12px;
858
+ color: var(--text-3);
859
+ }
860
+
861
+ .log-empty[hidden] {
862
+ display: none;
863
+ }
864
+
865
+ /* ---------------------------------------------------------------- toasts */
866
+
867
+ .toasts {
868
+ position: fixed;
869
+ right: 16px;
870
+ bottom: 16px;
871
+ z-index: 50;
872
+ display: flex;
873
+ flex-direction: column;
874
+ gap: 8px;
875
+ max-width: min(420px, calc(100vw - 32px));
876
+ }
877
+
878
+ .toast {
879
+ padding: 10px 14px;
880
+ border-radius: 8px;
881
+ background: var(--text);
882
+ color: var(--bg);
883
+ box-shadow: 0 6px 20px rgba(0, 0, 0, 0.2);
884
+ font-size: 13px;
885
+ animation: toast-in 0.15s ease-out;
886
+ }
887
+
888
+ .toast.is-error {
889
+ background: var(--err);
890
+ color: #fff;
891
+ }
892
+
893
+ @keyframes toast-in {
894
+ from {
895
+ transform: translateY(6px);
896
+ opacity: 0;
897
+ }
898
+ }
899
+
900
+ @media (prefers-reduced-motion: reduce) {
901
+ * {
902
+ animation: none !important;
903
+ transition: none !important;
904
+ }
905
+ }
906
+
907
+ /* ---------------------------------------------------------------- swaggerizer additions */
908
+
909
+ .op-meta {
910
+ display: flex;
911
+ flex-wrap: wrap;
912
+ gap: 6px;
913
+ padding: 6px 14px 0;
914
+ }
915
+
916
+ .modes {
917
+ display: inline-flex;
918
+ border: 1px solid var(--border-strong);
919
+ border-radius: 8px;
920
+ overflow: hidden;
921
+ margin: 10px 14px 0;
922
+ }
923
+
924
+ .modes button {
925
+ border: 0;
926
+ background: var(--surface);
927
+ padding: 5px 12px;
928
+ font-size: 12px;
929
+ cursor: pointer;
930
+ border-right: 1px solid var(--border-strong);
931
+ }
932
+
933
+ .modes button:last-child {
934
+ border-right: 0;
935
+ }
936
+
937
+ .modes button[aria-pressed="true"] {
938
+ background: var(--accent);
939
+ color: #fff;
940
+ }
941
+
942
+ @media (prefers-color-scheme: dark) {
943
+ .modes button[aria-pressed="true"] {
944
+ color: #0d1117;
945
+ }
946
+ }
947
+
948
+ .custom-editor {
949
+ display: grid;
950
+ gap: 8px;
951
+ padding: 12px 14px;
952
+ }
953
+
954
+ .custom-row {
955
+ display: flex;
956
+ flex-wrap: wrap;
957
+ align-items: center;
958
+ gap: 8px;
959
+ }
960
+
961
+ .custom-row label {
962
+ display: inline-flex;
963
+ align-items: center;
964
+ gap: 6px;
965
+ font-size: 12px;
966
+ color: var(--text-2);
967
+ }
968
+
969
+ .custom-row input,
970
+ .delay-field input {
971
+ padding: 4px 8px;
972
+ border: 1px solid var(--border-strong);
973
+ border-radius: 6px;
974
+ background: var(--surface);
975
+ font-size: 12px;
976
+ }
977
+
978
+ .custom-row input[type="number"],
979
+ .delay-field input {
980
+ width: 84px;
981
+ }
982
+
983
+ .custom-row input[type="text"] {
984
+ width: 180px;
985
+ }
986
+
987
+ .custom-editor textarea {
988
+ width: 100%;
989
+ min-height: 140px;
990
+ padding: 8px 10px;
991
+ border: 1px solid var(--border-strong);
992
+ border-radius: 8px;
993
+ background: var(--code-bg);
994
+ color: var(--code-text);
995
+ font: 12px/1.5 var(--mono);
996
+ resize: vertical;
997
+ }
998
+
999
+ .proxy-note {
1000
+ margin: 12px 14px;
1001
+ padding: 8px 10px;
1002
+ border-radius: 8px;
1003
+ background: var(--info-soft);
1004
+ color: var(--text-2);
1005
+ font-size: 13px;
1006
+ }
1007
+
1008
+ .proxy-note code {
1009
+ font-family: var(--mono);
1010
+ font-size: 12px;
1011
+ }
1012
+
1013
+ .delay-field {
1014
+ display: inline-flex;
1015
+ align-items: center;
1016
+ gap: 6px;
1017
+ font-size: 12px;
1018
+ color: var(--text-2);
1019
+ }
1020
+
1021
+ .changes {
1022
+ margin-bottom: 18px;
1023
+ border: 1px solid var(--warn);
1024
+ border-radius: var(--radius);
1025
+ background: var(--warn-soft);
1026
+ padding: 12px 14px;
1027
+ }
1028
+
1029
+ .changes.is-breaking {
1030
+ border-color: var(--err);
1031
+ background: var(--err-soft);
1032
+ }
1033
+
1034
+ .changes h2 {
1035
+ font-size: 14px;
1036
+ margin-bottom: 4px;
1037
+ }
1038
+
1039
+ .changes-sub {
1040
+ color: var(--text-2);
1041
+ font-size: 13px;
1042
+ margin-bottom: 8px;
1043
+ }
1044
+
1045
+ .change-report {
1046
+ margin-top: 8px;
1047
+ }
1048
+
1049
+ .change-report summary {
1050
+ cursor: pointer;
1051
+ font-weight: 600;
1052
+ }
1053
+
1054
+ .change-list {
1055
+ list-style: none;
1056
+ margin: 6px 0 0;
1057
+ padding: 0;
1058
+ display: grid;
1059
+ gap: 4px;
1060
+ }
1061
+
1062
+ .change-list li {
1063
+ display: flex;
1064
+ flex-wrap: wrap;
1065
+ gap: 6px;
1066
+ align-items: baseline;
1067
+ font-size: 13px;
1068
+ }
1069
+
1070
+ .sev {
1071
+ font: 700 10px/1 var(--mono);
1072
+ padding: 3px 6px;
1073
+ border-radius: 4px;
1074
+ text-transform: uppercase;
1075
+ flex: none;
1076
+ }
1077
+
1078
+ .sev-breaking { background: var(--err); color: #fff; }
1079
+ .sev-warning { background: var(--warn); color: #fff; }
1080
+ .sev-info { background: var(--surface-2); color: var(--text-2); }
1081
+
1082
+ @media (prefers-color-scheme: dark) {
1083
+ .sev-breaking,
1084
+ .sev-warning {
1085
+ color: #0d1117;
1086
+ }
1087
+ }
1088
+
1089
+ .change-op {
1090
+ font-family: var(--mono);
1091
+ font-size: 12px;
1092
+ }
1093
+
1094
+ .change-loc {
1095
+ color: var(--text-3);
1096
+ font-family: var(--mono);
1097
+ font-size: 11px;
1098
+ }
1099
+
1100
+ .log-source {
1101
+ font: 700 9px/1 var(--mono);
1102
+ padding: 2px 4px;
1103
+ border-radius: 3px;
1104
+ background: var(--purple-soft);
1105
+ color: var(--purple);
1106
+ text-transform: uppercase;
1107
+ }
1108
+
1109
+ .badge-deprecated {
1110
+ text-decoration: line-through;
1111
+ }
1112
+
1113
+ @media (prefers-color-scheme: dark) {
1114
+ .brand-mark,
1115
+ .btn:not(.btn-ghost),
1116
+ .chip[aria-pressed="true"] {
1117
+ color: #0d1117;
1118
+ }
1119
+ }