viz-js-lib 0.12.5 → 0.12.7

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,600 @@
1
+ *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
2
+
3
+ /* Light theme (default) */
4
+ :root {
5
+ --bg: #f5f6fa;
6
+ --bg2: #ffffff;
7
+ --bg3: #dcdde1;
8
+ --fg: #2f3640;
9
+ --fg2: #718093;
10
+ --accent: #217a47;
11
+ --accent2: #6c5ce7;
12
+ --accent-bg: rgba(33,122,71,.1);
13
+ --btn-fg: #ffffff;
14
+ --green: #27ae60;
15
+ --orange: #e67e22;
16
+ --red: #e74c3c;
17
+ --blue: #2980b9;
18
+ --purple: #6c5ce7;
19
+ --gray: #95a5a6;
20
+ --radius: 6px;
21
+ --font: 'Segoe UI', system-ui, sans-serif;
22
+ --mono: 'Cascadia Code', 'Fira Code', 'Consolas', monospace;
23
+ }
24
+
25
+ /* Dark theme */
26
+ [data-theme="dark"] {
27
+ --bg: #1a1a2e;
28
+ --bg2: #16213e;
29
+ --bg3: #0f3460;
30
+ --fg: #e8e8e8;
31
+ --fg2: #a8a8c0;
32
+ --accent: #d4952a;
33
+ --accent2: #533483;
34
+ --accent-bg: rgba(212,149,42,.1);
35
+ --btn-fg: #ffffff;
36
+ --green: #4caf50;
37
+ --orange: #ff9800;
38
+ --red: #f44336;
39
+ --blue: #2196f3;
40
+ --purple: #9c7cf4;
41
+ --gray: #888;
42
+ }
43
+
44
+ html, body { height: 100%; }
45
+
46
+ body {
47
+ font-family: var(--font);
48
+ background: var(--bg);
49
+ color: var(--fg);
50
+ display: flex;
51
+ flex-direction: column;
52
+ }
53
+
54
+ /* ─── Header ─────────────────────────────────────────────── */
55
+ #menu-toggle,
56
+ #server-toggle { display: none; }
57
+ #header {
58
+ background: var(--bg2);
59
+ border-bottom: 2px solid var(--bg3);
60
+ padding: 10px 20px;
61
+ display: flex;
62
+ align-items: center;
63
+ gap: 20px;
64
+ flex-wrap: wrap;
65
+ }
66
+ #header-brand {
67
+ font-size: 1.25rem;
68
+ font-weight: 700;
69
+ color: var(--accent);
70
+ white-space: nowrap;
71
+ }
72
+ #header-node {
73
+ display: flex;
74
+ align-items: center;
75
+ gap: 8px;
76
+ flex-wrap: wrap;
77
+ }
78
+ #header-node label { color: var(--fg2); font-size: .9rem; }
79
+
80
+ #node-select {
81
+ background: var(--bg3);
82
+ color: var(--fg);
83
+ border: 1px solid var(--accent2);
84
+ border-radius: var(--radius);
85
+ padding: 5px 10px;
86
+ font-size: .9rem;
87
+ cursor: pointer;
88
+ max-width: 280px;
89
+ }
90
+ #node-select option { background: var(--bg2); }
91
+
92
+ #custom-node-input {
93
+ background: var(--bg);
94
+ color: var(--fg);
95
+ border: 1px solid var(--accent2);
96
+ border-radius: var(--radius);
97
+ padding: 5px 10px;
98
+ font-size: .9rem;
99
+ width: 240px;
100
+ }
101
+ #custom-node-input::placeholder { color: var(--gray); }
102
+
103
+ #header-node button {
104
+ background: var(--accent2);
105
+ color: var(--btn-fg);
106
+ border: none;
107
+ border-radius: var(--radius);
108
+ padding: 5px 12px;
109
+ cursor: pointer;
110
+ font-size: .85rem;
111
+ transition: background .2s;
112
+ }
113
+ #header-node button:hover { background: var(--accent); }
114
+ #remove-node-btn:hover { background: var(--red); }
115
+ #check-nodes-btn { background: var(--bg3); border: 1px solid var(--accent2); }
116
+ #check-nodes-btn:hover { background: var(--accent2); }
117
+ #check-nodes-btn:disabled { opacity: .55; cursor: not-allowed; }
118
+
119
+ /* Button row: transparent wrapper on desktop */
120
+ .node-btn-row { display: contents; }
121
+
122
+ /* ─── Theme toggle ──────────────────────────────────────── */
123
+ #theme-toggle {
124
+ margin-left: auto;
125
+ display: flex;
126
+ gap: 4px;
127
+ }
128
+ #theme-toggle a {
129
+ display: flex;
130
+ align-items: center;
131
+ justify-content: center;
132
+ width: 30px;
133
+ height: 30px;
134
+ border-radius: var(--radius);
135
+ text-decoration: none;
136
+ font-size: 1.1rem;
137
+ color: var(--fg2);
138
+ background: transparent;
139
+ border: 1px solid transparent;
140
+ transition: background .2s, color .2s, border-color .2s;
141
+ }
142
+ #theme-toggle a:hover {
143
+ background: var(--bg3);
144
+ color: var(--fg);
145
+ }
146
+ #theme-toggle a.active {
147
+ color: var(--accent);
148
+ border-color: var(--accent);
149
+ background: var(--bg);
150
+ }
151
+
152
+ /* ─── Node status panel ──────────────────────────────────── */
153
+ #node-status-panel {
154
+ background: var(--bg2);
155
+ border-bottom: 2px solid var(--bg3);
156
+ padding: 12px 20px;
157
+ display: flex;
158
+ flex-wrap: wrap;
159
+ gap: 10px;
160
+ }
161
+ #node-status-panel.hidden { display: none; }
162
+ .panel-close-btn {
163
+ position: absolute;
164
+ top: 8px;
165
+ right: 12px;
166
+ background: none;
167
+ border: none;
168
+ color: var(--fg2);
169
+ font-size: 1.5rem;
170
+ cursor: pointer;
171
+ line-height: 1;
172
+ padding: 2px 8px;
173
+ border-radius: var(--radius);
174
+ transition: color .2s, background .2s;
175
+ }
176
+ .panel-close-btn:hover { color: var(--red); background: rgba(244,67,54,.08); }
177
+ #node-status-panel { position: relative; padding-right: 40px; }
178
+
179
+ .node-card {
180
+ background: var(--bg);
181
+ border: 1px solid var(--bg3);
182
+ border-radius: var(--radius);
183
+ padding: 10px 14px;
184
+ min-width: 220px;
185
+ flex: 1 1 220px;
186
+ max-width: 360px;
187
+ cursor: pointer;
188
+ transition: border-color .2s;
189
+ }
190
+ .node-card:hover { border-color: var(--accent2); }
191
+ .node-card.node-ok { border-left: 3px solid var(--green); }
192
+ .node-card.node-err { border-left: 3px solid var(--red); }
193
+ .node-card.node-checking { border-left: 3px solid var(--orange); }
194
+ .node-card.node-best { border-color: var(--green); box-shadow: 0 0 0 1px var(--green); }
195
+
196
+ .node-card-url {
197
+ font-family: var(--mono);
198
+ font-size: .82rem;
199
+ color: var(--fg);
200
+ margin-bottom: 6px;
201
+ word-break: break-all;
202
+ }
203
+ .node-card-info {
204
+ display: flex;
205
+ gap: 12px;
206
+ font-size: .78rem;
207
+ color: var(--fg2);
208
+ }
209
+ .node-card-info span { white-space: nowrap; }
210
+ .node-latency { color: var(--green); font-weight: 600; }
211
+ .node-block { color: var(--blue); }
212
+ .node-error { color: var(--red); }
213
+ .node-checking-text { color: var(--orange); font-style: italic; }
214
+
215
+ /* ─── App layout ─────────────────────────────────────────── */
216
+ #app {
217
+ display: flex;
218
+ flex: 1;
219
+ overflow: hidden;
220
+ }
221
+
222
+ /* ─── Sidebar ────────────────────────────────────────────── */
223
+ #sidebar {
224
+ background: var(--bg2);
225
+ border-right: 2px solid var(--bg3);
226
+ width: 260px;
227
+ min-width: 200px;
228
+ overflow-y: auto;
229
+ padding: 12px 0;
230
+ flex-shrink: 0;
231
+ }
232
+ .sidebar-section-title {
233
+ font-size: .75rem;
234
+ text-transform: uppercase;
235
+ color: var(--gray);
236
+ letter-spacing: .06em;
237
+ padding: 10px 16px 4px;
238
+ }
239
+ .sidebar-item {
240
+ display: block;
241
+ padding: 7px 16px 7px 20px;
242
+ color: var(--fg2);
243
+ text-decoration: none;
244
+ font-size: .9rem;
245
+ cursor: pointer;
246
+ border-left: 3px solid transparent;
247
+ transition: background .15s, border-color .15s, color .15s;
248
+ }
249
+ .sidebar-item:hover {
250
+ background: var(--bg3);
251
+ color: var(--fg);
252
+ }
253
+ .sidebar-item.active {
254
+ border-left-color: var(--accent);
255
+ color: var(--fg);
256
+ background: var(--accent-bg);
257
+ }
258
+ .sidebar-plugin {
259
+ font-weight: 600;
260
+ color: var(--fg);
261
+ padding-left: 16px;
262
+ }
263
+ .sidebar-method {
264
+ padding-left: 32px;
265
+ font-family: var(--mono);
266
+ font-size: .82rem;
267
+ }
268
+
269
+ /* ─── Content ────────────────────────────────────────────── */
270
+ #content {
271
+ flex: 1;
272
+ overflow-y: auto;
273
+ padding: 24px 32px;
274
+ }
275
+ #content-main { min-height: 80px; }
276
+
277
+ .welcome-title { font-size: 1.6rem; margin-bottom: 8px; color: var(--accent); }
278
+ .welcome-sub { color: var(--fg2); font-size: .95rem; }
279
+
280
+ /* Plugin / Method headers */
281
+ .page-title {
282
+ font-size: 1.4rem;
283
+ margin-bottom: 6px;
284
+ color: var(--fg);
285
+ }
286
+ .plugin-badge {
287
+ display: inline-block;
288
+ background: var(--accent2);
289
+ color: var(--btn-fg);
290
+ font-size: .78rem;
291
+ padding: 2px 9px;
292
+ border-radius: 999px;
293
+ margin-bottom: 16px;
294
+ }
295
+ .method-desc {
296
+ color: var(--fg2);
297
+ font-size: .9rem;
298
+ margin-bottom: 14px;
299
+ line-height: 1.5;
300
+ }
301
+ .method-list-desc {
302
+ color: var(--fg2);
303
+ font-size: .78rem;
304
+ margin-top: 3px;
305
+ line-height: 1.4;
306
+ opacity: .85;
307
+ }
308
+ .field-hint {
309
+ color: var(--fg2);
310
+ font-size: .78rem;
311
+ margin-bottom: 5px;
312
+ opacity: .8;
313
+ font-style: italic;
314
+ }
315
+
316
+ /* Method form */
317
+ .method-form { margin-top: 16px; }
318
+ .field-group {
319
+ margin-bottom: 12px;
320
+ }
321
+ .field-label {
322
+ display: block;
323
+ font-size: .85rem;
324
+ color: var(--fg2);
325
+ margin-bottom: 4px;
326
+ font-family: var(--mono);
327
+ }
328
+ .field-input {
329
+ width: 100%;
330
+ max-width: 480px;
331
+ background: var(--bg2);
332
+ color: var(--fg);
333
+ border: 1px solid var(--accent2);
334
+ border-radius: var(--radius);
335
+ padding: 8px 12px;
336
+ font-size: .9rem;
337
+ font-family: var(--mono);
338
+ transition: border-color .2s;
339
+ }
340
+ .field-input:focus {
341
+ outline: none;
342
+ border-color: var(--accent);
343
+ }
344
+ .field-input::placeholder { color: var(--gray); }
345
+
346
+ /* Multi-input (array params) */
347
+ .multi-input-wrap {
348
+ max-width: 480px;
349
+ }
350
+ .multi-input-row {
351
+ display: flex;
352
+ align-items: center;
353
+ gap: 6px;
354
+ margin-bottom: 6px;
355
+ }
356
+ .multi-input-row .field-input {
357
+ flex: 1;
358
+ max-width: none;
359
+ }
360
+ .multi-input-row .mi-remove {
361
+ background: none;
362
+ border: none;
363
+ color: var(--gray);
364
+ font-size: 1.1rem;
365
+ cursor: pointer;
366
+ padding: 2px 6px;
367
+ line-height: 1;
368
+ border-radius: var(--radius);
369
+ transition: color .15s, background .15s;
370
+ }
371
+ .multi-input-row .mi-remove:hover { color: var(--red); background: rgba(244,67,54,.1); }
372
+ .array-badge {
373
+ display: inline-block;
374
+ background: var(--bg3);
375
+ color: var(--fg2);
376
+ font-size: .7rem;
377
+ font-family: var(--mono);
378
+ padding: 1px 5px;
379
+ border-radius: 3px;
380
+ margin-left: 6px;
381
+ vertical-align: middle;
382
+ }
383
+
384
+ #execute-btn {
385
+ margin-top: 16px;
386
+ background: var(--accent);
387
+ color: var(--btn-fg);
388
+ border: none;
389
+ border-radius: var(--radius);
390
+ padding: 9px 28px;
391
+ font-size: 1rem;
392
+ font-weight: 600;
393
+ cursor: pointer;
394
+ transition: background .2s, transform .1s;
395
+ }
396
+ #execute-btn:hover { filter: brightness(.85); }
397
+ #execute-btn:active { transform: scale(.97); }
398
+ #execute-btn:disabled { opacity: .55; cursor: not-allowed; }
399
+
400
+ /* ─── Response area ──────────────────────────────────────── */
401
+ #response-area { margin-top: 28px; }
402
+
403
+ .response-label {
404
+ font-size: .85rem;
405
+ color: var(--fg2);
406
+ text-transform: uppercase;
407
+ letter-spacing: .06em;
408
+ margin-bottom: 6px;
409
+ }
410
+ .response-box {
411
+ background: var(--bg2);
412
+ border: 1px solid var(--bg3);
413
+ border-radius: var(--radius);
414
+ padding: 16px 20px;
415
+ overflow-x: auto;
416
+ font-family: var(--mono);
417
+ font-size: .85rem;
418
+ line-height: 1.55;
419
+ white-space: pre;
420
+ max-height: 600px;
421
+ overflow-y: auto;
422
+ }
423
+ .response-error {
424
+ background: rgba(244,67,54,.1);
425
+ border-color: var(--red);
426
+ color: var(--red);
427
+ }
428
+ .response-loading {
429
+ color: var(--fg2);
430
+ font-style: italic;
431
+ }
432
+
433
+ /* Request block */
434
+ .request-box {
435
+ margin-bottom: 1em;
436
+ }
437
+
438
+ /* JSON syntax */
439
+ .json-key { color: var(--purple); }
440
+ .json-string { color: var(--green); }
441
+ .json-number { color: var(--orange); }
442
+ .json-bool { color: var(--blue); }
443
+ .json-null { color: var(--gray); font-style: italic; }
444
+ .json-brace { color: var(--fg2); }
445
+
446
+ /* Scrollbar */
447
+ ::-webkit-scrollbar { width: 8px; height: 8px; }
448
+ ::-webkit-scrollbar-track { background: var(--bg); }
449
+ ::-webkit-scrollbar-thumb { background: var(--bg3); border-radius: 4px; }
450
+ ::-webkit-scrollbar-thumb:hover { background: var(--accent2); }
451
+
452
+ /* ─── Mobile (≤768px) ────────────────────────────────────────────────────────── */
453
+ @media (max-width: 768px) {
454
+
455
+ /* Header: compact row — [☰] [Brand] ... [⚙] [theme] */
456
+ #header {
457
+ padding: 8px 12px;
458
+ gap: 10px;
459
+ flex-wrap: nowrap;
460
+ position: relative;
461
+ z-index: 201;
462
+ }
463
+ #header-brand { font-size: 1rem; flex: 1; overflow: hidden; text-overflow: ellipsis; }
464
+
465
+ /* Hamburger + server toggle: visible on mobile */
466
+ #menu-toggle,
467
+ #server-toggle {
468
+ display: flex;
469
+ align-items: center;
470
+ justify-content: center;
471
+ background: none;
472
+ border: 1px solid var(--bg3);
473
+ border-radius: var(--radius);
474
+ color: var(--fg);
475
+ font-size: 1.3rem;
476
+ width: 36px;
477
+ height: 36px;
478
+ cursor: pointer;
479
+ flex-shrink: 0;
480
+ transition: border-color .2s, color .2s;
481
+ }
482
+ #menu-toggle:hover,
483
+ #server-toggle:hover { border-color: var(--accent); color: var(--accent); }
484
+ #server-toggle.node-active {
485
+ border-color: var(--accent);
486
+ color: var(--accent);
487
+ }
488
+
489
+ /* Node panel: hidden by default, drops down when .open */
490
+ #header-node {
491
+ display: none;
492
+ position: absolute;
493
+ top: 100%;
494
+ left: 0;
495
+ right: 0;
496
+ background: var(--bg2);
497
+ border-bottom: 2px solid var(--bg3);
498
+ padding: 14px;
499
+ flex-direction: column;
500
+ gap: 10px;
501
+ z-index: 200;
502
+ box-shadow: 0 8px 24px rgba(0,0,0,.15);
503
+ }
504
+ #header-node.open { display: flex; }
505
+ #header-node label { font-size: .78rem; text-transform: uppercase; letter-spacing: .05em; color: var(--fg2); }
506
+ #node-select {
507
+ width: 100%;
508
+ max-width: none;
509
+ padding: 9px 12px;
510
+ font-size: .88rem;
511
+ }
512
+ #custom-node-input {
513
+ width: 100%;
514
+ padding: 9px 12px;
515
+ }
516
+ #header-node button {
517
+ width: 100%;
518
+ padding: 9px 12px;
519
+ font-size: .85rem;
520
+ text-align: center;
521
+ }
522
+ .node-btn-row {
523
+ display: flex;
524
+ gap: 10px;
525
+ width: 100%;
526
+ }
527
+ .node-btn-row button {
528
+ flex: 1;
529
+ width: auto;
530
+ }
531
+
532
+ /* Sidebar: fixed overlay drawer */
533
+ #sidebar {
534
+ position: fixed;
535
+ top: 0;
536
+ left: 0;
537
+ bottom: 0;
538
+ width: min(280px, 82vw);
539
+ z-index: 300;
540
+ transform: translateX(-100%);
541
+ transition: transform .28s cubic-bezier(.4,0,.2,1);
542
+ box-shadow: none;
543
+ padding-top: 60px; /* room for header */
544
+ }
545
+ #sidebar.open {
546
+ transform: translateX(0);
547
+ box-shadow: 4px 0 24px rgba(0,0,0,.25);
548
+ }
549
+
550
+ /* Backdrop */
551
+ #sidebar-backdrop {
552
+ position: fixed;
553
+ inset: 0;
554
+ background: rgba(0,0,0,.45);
555
+ z-index: 299;
556
+ opacity: 0;
557
+ pointer-events: none;
558
+ transition: opacity .28s;
559
+ }
560
+ #sidebar-backdrop.open {
561
+ opacity: 1;
562
+ pointer-events: auto;
563
+ }
564
+
565
+ /* Lock body scroll when sidebar open */
566
+ body.sidebar-open { overflow: hidden; }
567
+
568
+ /* Content: full width, reduced padding */
569
+ #content {
570
+ padding: 16px;
571
+ }
572
+
573
+ /* Node status panel: stack cards */
574
+ #node-status-panel {
575
+ padding: 10px 12px;
576
+ gap: 8px;
577
+ }
578
+ .node-card {
579
+ min-width: 0;
580
+ max-width: none;
581
+ flex: 1 1 100%;
582
+ }
583
+
584
+ /* Inputs: remove max-width on mobile */
585
+ .field-input,
586
+ .multi-input-wrap {
587
+ max-width: none;
588
+ }
589
+
590
+ /* Response boxes: shorter */
591
+ .response-box {
592
+ max-height: 320px;
593
+ font-size: .78rem;
594
+ padding: 12px;
595
+ }
596
+
597
+ /* Welcome + page titles smaller */
598
+ .welcome-title { font-size: 1.3rem; }
599
+ .page-title { font-size: 1.15rem; }
600
+ }
package/config.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "websocket": "",
2
+ "websocket": "https://api.viz.world/",
3
3
  "address_prefix": "VIZ",
4
4
  "chain_id": "2040effda178d4fffff5eab7a915d4019879f5205cc5392e4bcced2b6edda0cd",
5
5
  "broadcast_transaction_with_callback": false,