socketspec 0.1.0__py3-none-any.whl

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,699 @@
1
+ /* ─────────────────────────────────────────────────────────────────────────
2
+ SocketSpec Docs UI — style.css
3
+ Swagger UI-inspired design with zero emojis.
4
+ ───────────────────────────────────────────────────────────────────────── */
5
+
6
+ /* ─── Design Tokens ────────────────────────────────────────────────────── */
7
+ :root {
8
+ --bg: #fafafa;
9
+ --panel: #ffffff;
10
+ --topbar: #1b1b1b;
11
+ --topbar-text: #ffffff;
12
+ --border: #e0e0e0;
13
+ --muted: #6b6b6b;
14
+ --text: #3b4151;
15
+ --emit: #49cc90;
16
+ --listen: #61affe;
17
+ --broadcast: #9012fe;
18
+ --deprecated: #ebebeb;
19
+ --execute-btn: #4990e2;
20
+
21
+ /* Colors for light-tints used as card backgrounds */
22
+ --emit-bg: rgba(73, 204, 144, 0.1);
23
+ --listen-bg: rgba(97, 175, 254, 0.1);
24
+ --broadcast-bg: rgba(144, 18, 254, 0.08);
25
+ --deprecated-bg:#f7f7f7;
26
+
27
+ --radius: 4px;
28
+ --radius-lg: 8px;
29
+ --transition: 120ms ease;
30
+ --topbar-h: 52px;
31
+ --statusbar-h: 32px;
32
+ }
33
+
34
+ @media (prefers-color-scheme: dark) {
35
+ :root {
36
+ --bg: #0f1117;
37
+ --panel: #161b22;
38
+ --topbar: #0d1117;
39
+ --border: #30363d;
40
+ --muted: #8b949e;
41
+ --text: #c9d1d9;
42
+ --emit-bg: rgba(73, 204, 144, 0.15);
43
+ --listen-bg: rgba(97, 175, 254, 0.15);
44
+ --broadcast-bg: rgba(144, 18, 254, 0.12);
45
+ --deprecated-bg:#21262d;
46
+ }
47
+ }
48
+
49
+ /* ─── Reset & Base ──────────────────────────────────────────────────────── */
50
+ *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
51
+
52
+ body {
53
+ font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
54
+ background: var(--bg);
55
+ color: var(--text);
56
+ font-size: 14px;
57
+ line-height: 1.5;
58
+ }
59
+
60
+ /* ─── Topbar ────────────────────────────────────────────────────────────── */
61
+ .topbar {
62
+ display: flex;
63
+ align-items: center;
64
+ justify-content: space-between;
65
+ gap: 1rem;
66
+ padding: 0 1.5rem;
67
+ background: var(--topbar);
68
+ color: var(--topbar-text);
69
+ height: var(--topbar-h);
70
+ position: sticky;
71
+ top: 0;
72
+ z-index: 200;
73
+ }
74
+
75
+ .brand {
76
+ display: flex;
77
+ align-items: center;
78
+ gap: 0.5rem;
79
+ }
80
+
81
+ .brand h1 {
82
+ font-size: 1.25rem;
83
+ font-weight: 700;
84
+ letter-spacing: -0.01em;
85
+ }
86
+
87
+ .version {
88
+ font-size: 0.75rem;
89
+ color: var(--muted);
90
+ font-family: monospace;
91
+ }
92
+
93
+ .controls {
94
+ display: flex;
95
+ align-items: center;
96
+ gap: 0.75rem;
97
+ }
98
+
99
+ .ws-url-label {
100
+ display: flex;
101
+ flex-direction: column;
102
+ font-size: 0.65rem;
103
+ color: rgba(255, 255, 255, 0.6);
104
+ text-transform: uppercase;
105
+ letter-spacing: 0.05em;
106
+ }
107
+
108
+ #ws-url {
109
+ width: 260px;
110
+ padding: 0.35rem 0.6rem;
111
+ border: 1px solid rgba(255, 255, 255, 0.2);
112
+ border-radius: var(--radius);
113
+ background: rgba(255, 255, 255, 0.08);
114
+ color: #fff;
115
+ font-size: 0.85rem;
116
+ font-family: monospace;
117
+ outline: none;
118
+ }
119
+ #ws-url:focus {
120
+ border-color: var(--execute-btn);
121
+ }
122
+
123
+ /* ─── Buttons ───────────────────────────────────────────────────────────── */
124
+ button {
125
+ cursor: pointer;
126
+ font-family: inherit;
127
+ font-size: 0.85rem;
128
+ font-weight: 600;
129
+ padding: 0.35rem 1rem;
130
+ border-radius: var(--radius);
131
+ border: 1px solid transparent;
132
+ transition: all var(--transition);
133
+ }
134
+
135
+ #connect-btn {
136
+ background: transparent;
137
+ border-color: rgba(255, 255, 255, 0.4);
138
+ color: rgba(255, 255, 255, 0.9);
139
+ }
140
+ #connect-btn:hover {
141
+ background: rgba(255, 255, 255, 0.1);
142
+ }
143
+ #connect-btn.connected {
144
+ background: var(--emit);
145
+ border-color: var(--emit);
146
+ color: #fff;
147
+ }
148
+
149
+ #auth-btn {
150
+ background: transparent;
151
+ border-color: rgba(255, 255, 255, 0.4);
152
+ color: #fff;
153
+ }
154
+ #auth-btn:hover {
155
+ background: rgba(255, 255, 255, 0.1);
156
+ border-color: #fff;
157
+ }
158
+
159
+ /* Try-it-out & Cancel Flow */
160
+ .try-it-container {
161
+ display: inline-flex;
162
+ flex-direction: column;
163
+ align-items: flex-end;
164
+ margin-left: auto;
165
+ }
166
+
167
+ .try-it-btn {
168
+ font-size: 0.75rem;
169
+ padding: 0.25rem 0.6rem;
170
+ border: 1px solid var(--execute-btn);
171
+ background: transparent;
172
+ color: var(--execute-btn);
173
+ text-transform: uppercase;
174
+ }
175
+ .try-it-btn:hover {
176
+ background: var(--execute-btn);
177
+ color: #fff;
178
+ }
179
+ .try-it-btn.cancel-mode {
180
+ border-color: var(--muted);
181
+ color: var(--muted);
182
+ }
183
+ .try-it-btn.cancel-mode:hover {
184
+ background: var(--muted);
185
+ color: #fff;
186
+ }
187
+
188
+ .try-it-area {
189
+ display: none;
190
+ width: 100%;
191
+ margin-top: 0.5rem;
192
+ text-align: left;
193
+ }
194
+
195
+ .execute-btn {
196
+ background: var(--execute-btn);
197
+ border-color: var(--execute-btn);
198
+ color: #fff;
199
+ width: 100%;
200
+ margin: 0.5rem 0;
201
+ text-transform: uppercase;
202
+ }
203
+ .execute-btn:hover {
204
+ background: #357ebd;
205
+ }
206
+
207
+ /* Auth modal buttons */
208
+ .send-btn {
209
+ background: var(--execute-btn);
210
+ border-color: var(--execute-btn);
211
+ color: #fff;
212
+ }
213
+ .send-btn:hover {
214
+ background: #357ebd;
215
+ }
216
+
217
+ .cancel-btn {
218
+ background: transparent;
219
+ border-color: var(--border);
220
+ color: var(--muted);
221
+ }
222
+ .cancel-btn:hover {
223
+ background: var(--bg);
224
+ }
225
+
226
+ /* ─── Status Bar ────────────────────────────────────────────────────────── */
227
+ .status-bar {
228
+ background: var(--panel);
229
+ border-bottom: 1px solid var(--border);
230
+ height: var(--statusbar-h);
231
+ display: flex;
232
+ align-items: center;
233
+ gap: 0.75rem;
234
+ padding: 0 1.5rem;
235
+ font-size: 0.75rem;
236
+ }
237
+
238
+ .status-indicator {
239
+ display: flex;
240
+ align-items: center;
241
+ gap: 0.4rem;
242
+ font-weight: 600;
243
+ }
244
+
245
+ .status-dot {
246
+ width: 8px;
247
+ height: 8px;
248
+ border-radius: 50%;
249
+ background: var(--muted);
250
+ }
251
+ .status-dot.connected {
252
+ background: var(--emit);
253
+ }
254
+ .status-dot.disconnected {
255
+ background: #ff3b30;
256
+ }
257
+
258
+ .conn-id {
259
+ font-family: monospace;
260
+ color: var(--muted);
261
+ }
262
+
263
+ .conn-hint {
264
+ margin-left: auto;
265
+ color: var(--muted);
266
+ font-style: italic;
267
+ }
268
+
269
+ /* ─── Layout ────────────────────────────────────────────────────────────── */
270
+ .layout {
271
+ display: grid;
272
+ grid-template-columns: 240px 1fr;
273
+ min-height: calc(100vh - var(--topbar-h) - var(--statusbar-h) - 170px);
274
+ }
275
+
276
+ /* ─── Sidebar ───────────────────────────────────────────────────────────── */
277
+ .sidebar {
278
+ background: var(--panel);
279
+ border-right: 1px solid var(--border);
280
+ padding: 1rem 0;
281
+ overflow-y: auto;
282
+ position: sticky;
283
+ top: calc(var(--topbar-h) + var(--statusbar-h));
284
+ max-height: calc(100vh - var(--topbar-h) - var(--statusbar-h) - 170px);
285
+ }
286
+
287
+ .sidebar-tag {
288
+ font-size: 0.7rem;
289
+ font-weight: 700;
290
+ color: var(--muted);
291
+ text-transform: uppercase;
292
+ padding: 0.75rem 1rem 0.25rem;
293
+ letter-spacing: 0.05em;
294
+ }
295
+
296
+ .sidebar-nav-btn {
297
+ display: flex;
298
+ align-items: center;
299
+ gap: 0.5rem;
300
+ width: 100%;
301
+ padding: 0.35rem 1rem;
302
+ border: none;
303
+ background: transparent;
304
+ color: var(--text);
305
+ font-size: 0.8rem;
306
+ text-align: left;
307
+ border-radius: 0;
308
+ }
309
+ .sidebar-nav-btn:hover {
310
+ background: var(--bg);
311
+ color: var(--execute-btn);
312
+ }
313
+
314
+ .nav-badge {
315
+ font-size: 0.55rem;
316
+ font-weight: 800;
317
+ padding: 0.1rem 0.3rem;
318
+ border-radius: var(--radius);
319
+ color: #fff;
320
+ width: 14px;
321
+ text-align: center;
322
+ }
323
+ .nav-badge.emit { background: var(--emit); }
324
+ .nav-badge.listen { background: var(--listen); }
325
+ .nav-badge.broadcast { background: var(--broadcast); }
326
+
327
+ /* ─── Content ───────────────────────────────────────────────────────────── */
328
+ .content {
329
+ padding: 1.5rem;
330
+ overflow-y: auto;
331
+ }
332
+
333
+ /* ─── Tag Groups ────────────────────────────────────────────────────────── */
334
+ .tag-group {
335
+ margin-bottom: 2rem;
336
+ }
337
+
338
+ .tag-group-header {
339
+ display: flex;
340
+ align-items: center;
341
+ justify-content: space-between;
342
+ width: 100%;
343
+ padding: 0.5rem 0;
344
+ margin-bottom: 1rem;
345
+ border: none;
346
+ border-bottom: 1px solid var(--border);
347
+ background: transparent;
348
+ font-size: 1.1rem;
349
+ font-weight: 700;
350
+ color: var(--text);
351
+ text-align: left;
352
+ border-radius: 0;
353
+ }
354
+ .tag-group-header:hover {
355
+ border-bottom-color: var(--text);
356
+ }
357
+
358
+ .tag-chevron {
359
+ font-size: 0.75rem;
360
+ color: var(--muted);
361
+ transition: transform var(--transition);
362
+ }
363
+ .tag-group.collapsed .tag-chevron {
364
+ transform: rotate(-90deg);
365
+ }
366
+ .tag-group.collapsed .tag-cards {
367
+ display: none;
368
+ }
369
+
370
+ /* ─── Event Cards ────────────────────────────────────────────────────────── */
371
+ .card {
372
+ background: var(--panel);
373
+ border: 1px solid var(--border);
374
+ border-radius: var(--radius);
375
+ margin-bottom: 0.75rem;
376
+ overflow: hidden;
377
+ }
378
+
379
+ /* Left borders by method */
380
+ .card.dir-emit { border-left: 4px solid var(--emit); }
381
+ .card.dir-listen { border-left: 4px solid var(--listen); }
382
+ .card.dir-broadcast { border-left: 4px solid var(--broadcast); }
383
+ .card.dir-deprecated{ border-left: 4px solid var(--muted); }
384
+
385
+ .card-header {
386
+ display: flex;
387
+ align-items: center;
388
+ gap: 0.75rem;
389
+ padding: 0.65rem 1rem;
390
+ cursor: pointer;
391
+ user-select: none;
392
+ transition: background var(--transition);
393
+ }
394
+
395
+ .card.dir-emit .card-header { background: var(--emit-bg); }
396
+ .card.dir-listen .card-header { background: var(--listen-bg); }
397
+ .card.dir-broadcast .card-header { background: var(--broadcast-bg); }
398
+ .card.dir-deprecated .card-header { background: var(--deprecated-bg); }
399
+
400
+ .card-header:hover {
401
+ filter: brightness(0.96);
402
+ }
403
+
404
+ .event-name {
405
+ font-family: monospace;
406
+ font-size: 0.9rem;
407
+ font-weight: 700;
408
+ }
409
+
410
+ .event-desc {
411
+ font-size: 0.8rem;
412
+ color: var(--muted);
413
+ white-space: nowrap;
414
+ overflow: hidden;
415
+ text-overflow: ellipsis;
416
+ flex: 1;
417
+ }
418
+
419
+ .chevron-card {
420
+ font-size: 0.7rem;
421
+ color: var(--muted);
422
+ transition: transform var(--transition);
423
+ }
424
+ .card.open .chevron-card {
425
+ transform: rotate(180deg);
426
+ }
427
+
428
+ /* Card Body */
429
+ .card-body {
430
+ display: none;
431
+ background: var(--panel);
432
+ border-top: 1px solid var(--border);
433
+ }
434
+ .card.open .card-body {
435
+ display: block;
436
+ }
437
+
438
+ /* Badges */
439
+ .badge {
440
+ font-size: 0.65rem;
441
+ font-weight: 800;
442
+ padding: 0.15rem 0.5rem;
443
+ border-radius: var(--radius);
444
+ color: #fff;
445
+ text-transform: uppercase;
446
+ }
447
+ .badge.emit { background: var(--emit); }
448
+ .badge.listen { background: var(--listen); }
449
+ .badge.broadcast { background: var(--broadcast); }
450
+ .badge.deprecated { background: var(--deprecated); color: var(--muted); }
451
+ .badge.error-code { background: var(--bg); color: #ff3b30; border: 1px solid var(--border); }
452
+
453
+ /* Section Blocks */
454
+ .section-block {
455
+ padding: 1.25rem 1.5rem;
456
+ border-bottom: 1px solid var(--border);
457
+ position: relative;
458
+ }
459
+ .section-block:last-child {
460
+ border-bottom: none;
461
+ }
462
+
463
+ .section-label {
464
+ display: flex;
465
+ align-items: center;
466
+ font-size: 0.9rem;
467
+ font-weight: 700;
468
+ color: var(--text);
469
+ margin-bottom: 0.75rem;
470
+ gap: 0.5rem;
471
+ }
472
+
473
+ .section-sub {
474
+ font-family: monospace;
475
+ font-size: 0.75rem;
476
+ color: var(--muted);
477
+ background: var(--bg);
478
+ padding: 0.4rem 0.6rem;
479
+ border-radius: var(--radius);
480
+ margin-bottom: 0.5rem;
481
+ border-left: 3px solid var(--border);
482
+ }
483
+
484
+ /* ─── Schema Table ──────────────────────────────────────────────────────── */
485
+ .schema-table {
486
+ width: 100%;
487
+ border-collapse: collapse;
488
+ margin-top: 0.5rem;
489
+ font-size: 0.8rem;
490
+ }
491
+
492
+ .schema-table th {
493
+ text-align: left;
494
+ padding: 0.5rem;
495
+ border-bottom: 1px solid var(--border);
496
+ color: var(--muted);
497
+ font-size: 0.75rem;
498
+ font-weight: 700;
499
+ text-transform: uppercase;
500
+ }
501
+
502
+ .schema-table td {
503
+ padding: 0.6rem 0.5rem;
504
+ border-bottom: 1px solid var(--border);
505
+ vertical-align: top;
506
+ }
507
+ .schema-table tbody tr:nth-child(even) {
508
+ background: var(--bg);
509
+ }
510
+
511
+ .col-name {
512
+ font-family: monospace;
513
+ font-weight: 700;
514
+ }
515
+
516
+ .col-type {
517
+ font-family: monospace;
518
+ color: var(--muted);
519
+ }
520
+
521
+ .col-req {
522
+ text-align: center;
523
+ }
524
+
525
+ .required-asterisk {
526
+ color: #ff3b30;
527
+ font-weight: 700;
528
+ }
529
+
530
+ .col-desc {
531
+ color: var(--text);
532
+ }
533
+
534
+ .schema-empty {
535
+ color: var(--muted);
536
+ font-style: italic;
537
+ font-size: 0.8rem;
538
+ }
539
+
540
+ /* Textarea payload editor */
541
+ .payload-editor {
542
+ width: 100%;
543
+ font-family: monospace;
544
+ font-size: 0.8rem;
545
+ padding: 0.75rem;
546
+ border: 1px solid var(--border);
547
+ border-radius: var(--radius);
548
+ background: var(--bg);
549
+ color: var(--text);
550
+ resize: vertical;
551
+ outline: none;
552
+ }
553
+ .payload-editor:focus {
554
+ border-color: var(--execute-btn);
555
+ }
556
+
557
+ /* Response Block */
558
+ .response-block {
559
+ margin-top: 0.75rem;
560
+ border: 1px solid var(--border);
561
+ border-radius: var(--radius);
562
+ overflow: hidden;
563
+ }
564
+
565
+ .response-label {
566
+ background: var(--bg);
567
+ padding: 0.4rem 0.75rem;
568
+ font-size: 0.7rem;
569
+ font-weight: 700;
570
+ color: var(--muted);
571
+ text-transform: uppercase;
572
+ border-bottom: 1px solid var(--border);
573
+ }
574
+
575
+ .response-body {
576
+ background: #1e1e1e;
577
+ color: #d4d4d4;
578
+ padding: 0.75rem;
579
+ font-family: monospace;
580
+ font-size: 0.78rem;
581
+ overflow-x: auto;
582
+ white-space: pre;
583
+ }
584
+
585
+ .response-block.success .response-label {
586
+ color: var(--emit);
587
+ }
588
+ .response-block.error .response-label {
589
+ color: #ff3b30;
590
+ }
591
+
592
+ /* ─── Log Drawer (Bottom panel) ─────────────────────────────────────────── */
593
+ .log-drawer {
594
+ background: #1b1b1b;
595
+ border-top: 1px solid var(--border);
596
+ color: #fff;
597
+ position: sticky;
598
+ bottom: 0;
599
+ z-index: 100;
600
+ }
601
+
602
+ .log-header {
603
+ display: flex;
604
+ align-items: center;
605
+ justify-content: space-between;
606
+ padding: 0.5rem 1rem;
607
+ border-bottom: 1px solid #333;
608
+ }
609
+
610
+ #log-filter {
611
+ padding: 0.25rem 0.5rem;
612
+ border: 1px solid #444;
613
+ background: #252525;
614
+ color: #fff;
615
+ font-family: inherit;
616
+ font-size: 0.75rem;
617
+ border-radius: var(--radius);
618
+ width: 200px;
619
+ }
620
+
621
+ #clear-log {
622
+ background: transparent;
623
+ border-color: #444;
624
+ color: #aaa;
625
+ padding: 0.2rem 0.6rem;
626
+ font-size: 0.75rem;
627
+ }
628
+ #clear-log:hover {
629
+ background: #252525;
630
+ color: #fff;
631
+ }
632
+
633
+ #log-output {
634
+ max-height: 120px;
635
+ overflow-y: auto;
636
+ font-family: monospace;
637
+ font-size: 0.75rem;
638
+ padding: 0.5rem 1rem;
639
+ background: #111;
640
+ }
641
+
642
+ .log-line {
643
+ padding: 0.1rem 0;
644
+ }
645
+ .log-line.out { color: var(--emit); }
646
+ .log-line.in { color: var(--listen); }
647
+ .log-line.sys { color: var(--muted); }
648
+ .log-line.err { color: #ff3b30; }
649
+
650
+ /* ─── Dialogs ───────────────────────────────────────────────────────────── */
651
+ dialog {
652
+ border: 1px solid var(--border);
653
+ border-radius: var(--radius-lg);
654
+ padding: 1.5rem;
655
+ background: var(--panel);
656
+ color: var(--text);
657
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
658
+ margin: auto;
659
+ }
660
+
661
+ dialog h2 {
662
+ font-size: 1.1rem;
663
+ margin-bottom: 1rem;
664
+ }
665
+
666
+ dialog label {
667
+ display: block;
668
+ margin-bottom: 0.75rem;
669
+ font-size: 0.8rem;
670
+ }
671
+
672
+ dialog label span {
673
+ display: block;
674
+ font-weight: 700;
675
+ margin-bottom: 0.25rem;
676
+ }
677
+
678
+ dialog input {
679
+ width: 100%;
680
+ padding: 0.4rem 0.5rem;
681
+ border: 1px solid var(--border);
682
+ border-radius: var(--radius);
683
+ background: var(--bg);
684
+ color: var(--text);
685
+ font-size: 0.85rem;
686
+ font-family: inherit;
687
+ outline: none;
688
+ }
689
+ dialog input:focus {
690
+ border-color: var(--execute-btn);
691
+ }
692
+
693
+ dialog menu {
694
+ display: flex;
695
+ justify-content: flex-end;
696
+ gap: 0.5rem;
697
+ margin-top: 1.25rem;
698
+ list-style: none;
699
+ }