@ibgib/space-gib 0.0.8 → 0.0.12

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 (83) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/README.md +1 -0
  3. package/dist/client/bootstrap.mjs +33 -33
  4. package/dist/client/bootstrap.mjs.map +3 -3
  5. package/dist/client/chunk-GCWH3SH4.mjs +21 -0
  6. package/dist/client/chunk-GCWH3SH4.mjs.map +7 -0
  7. package/dist/client/chunk-I7KNBFG3.mjs +2329 -0
  8. package/dist/client/chunk-I7KNBFG3.mjs.map +7 -0
  9. package/dist/client/index.mjs +22 -1
  10. package/dist/client/index.mjs.map +4 -4
  11. package/dist/client/script.mjs +1 -1
  12. package/dist/server/server.mjs +18815 -17778
  13. package/dist/server/server.mjs.map +4 -4
  14. package/package.json +4 -4
  15. package/space-gib.localhost-1785337158142.log +75 -0
  16. package/src/client/AUTO-GENERATED-version.mts +1 -1
  17. package/src/client/README.md +1 -1
  18. package/src/client/api/space-gib-api-bridge.mts +8 -195
  19. package/src/client/dev-tools/common.mts +4 -4
  20. package/src/client/ui/shell/space-gib-shell-service.mts +68 -18
  21. package/src/common/keystone-policies.mts +1 -1
  22. package/src/server/README.md +3 -2
  23. package/src/server/server.mts +13 -32
  24. package/src/server/test.json +0 -0
  25. package/dist/client/chunk-DBHMHCGD.mjs +0 -2341
  26. package/dist/client/chunk-DBHMHCGD.mjs.map +0 -7
  27. package/dist/client/chunk-SUQ5QJH4.mjs +0 -42
  28. package/dist/client/chunk-SUQ5QJH4.mjs.map +0 -7
  29. package/space-gib.localhost-1783713259760.log +0 -45
  30. package/src/client/components/identity-header/IMPLEMENTATION.md +0 -45
  31. package/src/client/components/identity-header/identity-header.css +0 -112
  32. package/src/client/components/identity-header/identity-header.html +0 -11
  33. package/src/client/components/identity-header/identity-header.mts +0 -439
  34. package/src/client/components/identity-manager/IMPLEMENTATION.md +0 -100
  35. package/src/client/components/identity-manager/identity-manager.css +0 -171
  36. package/src/client/components/identity-manager/identity-manager.html +0 -19
  37. package/src/client/components/identity-manager/identity-manager.mts +0 -639
  38. package/src/client/components/keystone-creator/keystone-creator.css +0 -65
  39. package/src/client/components/keystone-creator/keystone-creator.html +0 -41
  40. package/src/client/components/keystone-creator/keystone-creator.mts +0 -443
  41. package/src/client/components/keystone-details/keystone-details.css +0 -569
  42. package/src/client/components/keystone-details/keystone-details.html +0 -127
  43. package/src/client/components/keystone-details/keystone-details.mts +0 -1013
  44. package/src/client/components/keystone-scrubber/SCRUBBER_IMPLEMENTATION.md +0 -33
  45. package/src/client/components/keystone-scrubber/keystone-scrubber.css +0 -46
  46. package/src/client/components/keystone-scrubber/keystone-scrubber.html +0 -15
  47. package/src/client/components/keystone-scrubber/keystone-scrubber.mts +0 -356
  48. package/src/server/bootstrap-helper.mts +0 -141
  49. package/src/server/bootstrap-helper.respec.mts +0 -100
  50. package/src/server/metaspace-nodeindexedspace/metaspace-nodeindexedspace.mts +0 -85
  51. package/src/server/path-constants.mts +0 -101
  52. package/src/server/path-helper.mts +0 -101
  53. package/src/server/path-helper.respec.mts +0 -99
  54. package/src/server/serve-gib/CHANGELOG.md +0 -29
  55. package/src/server/serve-gib/README.md +0 -43
  56. package/src/server/serve-gib/constants.mts +0 -1
  57. package/src/server/serve-gib/handlers/api/debug/ws-echo.handler.mts +0 -105
  58. package/src/server/serve-gib/handlers/api/health.handler.mts +0 -23
  59. package/src/server/serve-gib/handlers/api/health.respec.mts +0 -51
  60. package/src/server/serve-gib/handlers/api/ibgib/ibgib-handler-types.mts +0 -49
  61. package/src/server/serve-gib/handlers/api/ibgib/ibgib.handler.mts +0 -176
  62. package/src/server/serve-gib/handlers/api/keystone/keystone-evolve.handler.mts +0 -141
  63. package/src/server/serve-gib/handlers/api/keystone/keystone-genesis.handler.mts +0 -146
  64. package/src/server/serve-gib/handlers/api/keystone/keystone-get.handler.mts +0 -198
  65. package/src/server/serve-gib/handlers/api/keystone/keystone-get.respec.mts +0 -107
  66. package/src/server/serve-gib/handlers/api/keystone/keystone-handler-types.mts +0 -29
  67. package/src/server/serve-gib/handlers/api/keystone/keystone-post.handler.mts +0 -55
  68. package/src/server/serve-gib/handlers/api/keystone/keystone-post.respec.mts +0 -130
  69. package/src/server/serve-gib/handlers/api/keystone/sso-config.handler.mts +0 -66
  70. package/src/server/serve-gib/handlers/api/keystone/sso-link.handler.mts +0 -140
  71. package/src/server/serve-gib/handlers/api/keystone/sso-login.handler.mts +0 -190
  72. package/src/server/serve-gib/handlers/error-handler.mts +0 -36
  73. package/src/server/serve-gib/handlers/handler-base.mts +0 -383
  74. package/src/server/serve-gib/handlers/static-handler.mts +0 -82
  75. package/src/server/serve-gib/handlers/ws/sync-upgrade-handler-base.mts +0 -233
  76. package/src/server/serve-gib/handlers/ws/sync-upgrade.handler.mts +0 -24
  77. package/src/server/serve-gib/handlers/ws/ws-helper.mts +0 -216
  78. package/src/server/serve-gib/handlers/ws/ws-types.mts +0 -53
  79. package/src/server/serve-gib/serve-gib-helpers.mts +0 -32
  80. package/src/server/serve-gib/serve-gib-v1.mts +0 -172
  81. package/src/server/serve-gib/serve-gib.respec.mts +0 -90
  82. package/src/server/serve-gib/types.mts +0 -102
  83. package/src/server/server-constants.mts +0 -2
@@ -1,569 +0,0 @@
1
- :host {
2
- display: block;
3
- width: 100%;
4
- max-width: 100%;
5
- font-family: var(--font-family-base, inherit);
6
- font-size: var(--font-size-base, 1rem);
7
- color: var(--text-color-base, var(--clr-text-primary, #ffffff));
8
- box-sizing: border-box;
9
- }
10
-
11
- .details-view {
12
- display: flex;
13
- flex-direction: column;
14
- gap: 1.5rem;
15
- }
16
-
17
- .card {
18
- padding: 1.5rem;
19
- background: rgba(255, 255, 255, 0.02);
20
- border: 1px solid var(--border-color-base, rgba(255, 255, 255, 0.05));
21
- border-radius: var(--radius-md, 8px);
22
- display: flex;
23
- flex-direction: column;
24
- gap: 1rem;
25
- }
26
-
27
- .card h3 {
28
- margin: 0;
29
- font-size: var(--h3-font-size, 1.15rem);
30
- font-weight: var(--h3-font-weight, 500);
31
- color: var(--clr-accent, #50fa7b);
32
- }
33
-
34
- /* Key-Value Details Grid Layout */
35
- .kv-grid {
36
- display: grid;
37
- grid-template-columns: minmax(140px, 180px) 1fr;
38
- gap: 0.75rem 1.5rem;
39
- align-items: baseline;
40
- margin-top: 1rem;
41
- margin-bottom: 1.5rem;
42
- }
43
-
44
- .kv-label {
45
- font-family: var(--font-sans);
46
- font-size: 0.75rem;
47
- font-weight: 600;
48
- text-transform: uppercase;
49
- letter-spacing: 0.05em;
50
- color: var(--clr-text-secondary, #8fa08f);
51
- user-select: none;
52
- }
53
-
54
- .kv-value {
55
- font-size: 0.9375rem;
56
- color: var(--clr-text-primary, #ffffff);
57
- word-break: break-all;
58
- }
59
-
60
- .kv-pre {
61
- margin: 0;
62
- padding: 0.6rem 0.8rem;
63
- background: rgba(0, 0, 0, 0.3);
64
- border: 1px solid var(--border-color-base, rgba(255, 255, 255, 0.05));
65
- border-radius: var(--radius-sm, 6px);
66
- font-family: var(--font-mono, monospace);
67
- font-size: 0.8rem;
68
- color: var(--clr-accent, #50fa7b);
69
- max-height: 150px;
70
- overflow: auto;
71
- white-space: pre;
72
- word-break: normal;
73
- }
74
-
75
- /* Accordion raw styles */
76
- .accordion {
77
- padding: 0;
78
- overflow: hidden;
79
- }
80
-
81
- .accordion-header {
82
- padding: 1.25rem 1.5rem;
83
- display: flex;
84
- justify-content: space-between;
85
- align-items: center;
86
- cursor: pointer;
87
- background: rgba(255, 255, 255, 0.01);
88
- transition: background 0.2s ease-in-out;
89
- }
90
-
91
- .accordion-header:hover {
92
- background: rgba(255, 255, 255, 0.03);
93
- }
94
-
95
- .accordion-header .chevron {
96
- transition: transform 0.2s ease-in-out;
97
- font-size: 0.8rem;
98
- color: var(--clr-text-secondary, #b3b3b3);
99
- }
100
-
101
- .accordion-header.expanded .chevron {
102
- transform: rotate(180deg);
103
- }
104
-
105
- .accordion-content {
106
- max-height: 0;
107
- transition: max-height 0.3s cubic-bezier(0, 1, 0, 1);
108
- background: rgba(0, 0, 0, 0.15);
109
- border-top: 1px solid var(--border-color-base, rgba(255, 255, 255, 0.03));
110
- }
111
-
112
- .accordion-content.expanded {
113
- max-height: 5000px;
114
- overflow-y: visible;
115
- transition: max-height 0.3s cubic-bezier(1, 0, 1, 0);
116
- }
117
-
118
- .json-code {
119
- margin: 0;
120
- padding: 1.25rem;
121
- font-family: var(--font-mono, monospace);
122
- font-size: 0.8rem;
123
- color: var(--clr-accent, #50fa7b);
124
- background: transparent;
125
- overflow: auto;
126
- max-height: 70dvh;
127
- white-space: pre-wrap;
128
- word-break: break-all;
129
- }
130
-
131
- .description {
132
- font-size: 0.85rem;
133
- color: var(--clr-text-secondary, #b3b3b3);
134
- margin: 0;
135
- }
136
-
137
- .hidden {
138
- display: none !important;
139
- }
140
-
141
- .pools-container {
142
- display: flex;
143
- flex-direction: column;
144
- gap: 1rem;
145
- }
146
-
147
- .pool-card {
148
- padding: 1rem;
149
- background: rgba(0, 0, 0, 0.25);
150
- border: 1px solid var(--border-color-base, rgba(255, 255, 255, 0.05));
151
- border-radius: 6px;
152
- display: flex;
153
- flex-direction: column;
154
- gap: 0.75rem;
155
- }
156
-
157
- .pool-header {
158
- display: flex;
159
- justify-content: space-between;
160
- align-items: center;
161
- border-bottom: 1px solid rgba(255, 255, 255, 0.05);
162
- padding-bottom: 0.5rem;
163
- }
164
-
165
- .pool-title {
166
- font-size: 0.95rem;
167
- font-weight: 600;
168
- color: var(--clr-accent, #50fa7b);
169
- }
170
-
171
- .pool-tag {
172
- font-size: 0.7rem;
173
- padding: 0.15rem 0.4rem;
174
- border-radius: 4px;
175
- font-weight: bold;
176
- text-transform: uppercase;
177
- }
178
-
179
- .pool-tag.foreign {
180
- background: rgba(255, 184, 108, 0.15);
181
- border: 1px solid rgba(255, 184, 108, 0.3);
182
- color: #ffb86c;
183
- }
184
-
185
- .pool-tag.native {
186
- background: rgba(80, 250, 123, 0.1);
187
- border: 1px solid rgba(80, 250, 123, 0.2);
188
- color: #50fa7b;
189
- }
190
-
191
- .pool-grid {
192
- display: grid;
193
- grid-template-columns: repeat(auto-fit, minmax(130px, 1fr));
194
- gap: 0.75rem;
195
- font-size: 0.85rem;
196
- }
197
-
198
- .pool-field {
199
- display: flex;
200
- flex-direction: column;
201
- gap: 0.2rem;
202
- }
203
-
204
- .pool-field label {
205
- font-size: 0.7rem;
206
- color: var(--clr-text-secondary, #b3b3b3);
207
- text-transform: uppercase;
208
- letter-spacing: 0.03em;
209
- }
210
-
211
- .pool-field span {
212
- color: #ffffff;
213
- font-weight: 500;
214
- word-break: break-all;
215
- }
216
-
217
- /* Pool Details & Challenges/Binding Map styling */
218
- .pool-details {
219
- margin-top: 0.75rem;
220
- border-top: 1px solid rgba(255, 255, 255, 0.05);
221
- padding-top: 0.5rem;
222
- }
223
-
224
- .pool-details-summary {
225
- font-size: 0.8rem;
226
- font-weight: 600;
227
- color: var(--clr-text-secondary, #8fa08f);
228
- cursor: pointer;
229
- user-select: none;
230
- outline: none;
231
- padding: 0.25rem 0;
232
- display: flex;
233
- align-items: center;
234
- gap: 0.25rem;
235
- transition: color var(--t-fast, 120ms ease);
236
- }
237
-
238
- .pool-details-summary:hover {
239
- color: var(--clr-accent, #78f87e);
240
- }
241
-
242
- .pool-challenges-list {
243
- margin-top: 0.5rem;
244
- display: flex;
245
- flex-direction: column;
246
- gap: 0.4rem;
247
- max-height: 180px;
248
- overflow-y: auto;
249
- padding-right: 0.25rem;
250
- border: 1px solid rgba(255, 255, 255, 0.05);
251
- background: rgba(0, 0, 0, 0.15);
252
- border-radius: 4px;
253
- padding: 0.5rem;
254
- }
255
-
256
- .pool-challenge-item {
257
- display: flex;
258
- justify-content: space-between;
259
- align-items: center;
260
- background: rgba(255, 255, 255, 0.02);
261
- border: 1px solid rgba(255, 255, 255, 0.03);
262
- border-radius: 4px;
263
- padding: 0.35rem 0.5rem;
264
- font-size: 0.75rem;
265
- font-family: var(--font-mono, monospace);
266
- }
267
-
268
- .challenge-id {
269
- color: var(--clr-text-secondary, #8fa08f);
270
- font-weight: 500;
271
- }
272
-
273
- .challenge-hash {
274
- color: var(--clr-accent, #78f87e);
275
- word-break: break-all;
276
- margin-left: 1rem;
277
- text-align: right;
278
- }
279
-
280
- /* Delegates Table styling */
281
- .delegates-table {
282
- width: 100%;
283
- border-collapse: collapse;
284
- margin-top: 1rem;
285
- font-size: 0.9rem;
286
- background: rgba(0, 0, 0, 0.2);
287
- border-radius: var(--radius-sm, 6px);
288
- overflow: hidden;
289
- }
290
-
291
- .delegates-table th,
292
- .delegates-table td {
293
- padding: 0.75rem 1rem;
294
- text-align: left;
295
- border-bottom: 1px solid rgba(255, 255, 255, 0.05);
296
- }
297
-
298
- .delegates-table th {
299
- font-family: var(--font-sans);
300
- font-size: 0.75rem;
301
- font-weight: 600;
302
- text-transform: uppercase;
303
- letter-spacing: 0.05em;
304
- color: var(--clr-text-secondary, #8fa08f);
305
- background: rgba(255, 255, 255, 0.02);
306
- }
307
-
308
- .delegates-table td {
309
- font-family: var(--font-mono, monospace);
310
- font-size: 0.8rem;
311
- color: var(--clr-text-primary, #ffffff);
312
- word-break: break-all;
313
- }
314
-
315
- .delegates-table tbody tr:hover {
316
- background: rgba(255, 255, 255, 0.02);
317
- }
318
-
319
- .action-row {
320
- display: flex;
321
- gap: 1rem;
322
- margin-top: 1rem;
323
- }
324
-
325
- .action-btn {
326
- padding: 0.6rem 1.2rem;
327
- background: var(--clr-accent, #50fa7b);
328
- border: none;
329
- border-radius: var(--radius-sm, 4px);
330
- color: #1a1a24;
331
- font-weight: 600;
332
- cursor: pointer;
333
- transition: all 0.2s ease-in-out;
334
- }
335
-
336
- .action-btn:hover {
337
- background: #40c767;
338
- }
339
-
340
- .action-btn.secondary {
341
- background: transparent;
342
- border: 1px solid var(--border-color-base, rgba(255, 255, 255, 0.1));
343
- color: #ffffff;
344
- }
345
-
346
- .action-btn.secondary:hover {
347
- background: rgba(255, 255, 255, 0.05);
348
- }
349
-
350
- .action-btn.small {
351
- padding: 0.2rem 0.5rem;
352
- font-size: var(--font-size-xs, 0.75rem);
353
- border-radius: 3px;
354
- }
355
-
356
- .action-btn.active-primary {
357
- background: rgba(80, 250, 123, 0.2);
358
- border: 1px solid rgba(80, 250, 123, 0.4);
359
- color: var(--clr-accent, #50fa7b);
360
- cursor: default;
361
- }
362
-
363
- .address-code {
364
- display: inline-block;
365
- padding: 0.2rem 0.4rem;
366
- background: rgba(0, 0, 0, 0.3);
367
- border: 1px solid var(--border-color-base, rgba(255, 255, 255, 0.05));
368
- border-radius: var(--radius-sm, 4px);
369
- font-family: var(--font-mono, monospace);
370
- font-size: 0.8rem;
371
- color: var(--clr-accent, #50fa7b);
372
- word-break: break-all;
373
- }
374
-
375
- .status-msg {
376
- margin-top: 1rem;
377
- padding: 0.75rem 1rem;
378
- border-radius: var(--radius-sm, 4px);
379
- font-size: 0.9rem;
380
- }
381
-
382
- .status-msg.info {
383
- background: rgba(139, 233, 253, 0.1);
384
- border: 1px solid rgba(139, 233, 253, 0.3);
385
- color: #8be9fd;
386
- }
387
-
388
- .status-msg.success {
389
- background: rgba(80, 250, 123, 0.1);
390
- border: 1px solid rgba(80, 250, 123, 0.3);
391
- color: #50fa7b;
392
- }
393
-
394
- .status-msg.error {
395
- background: rgba(255, 85, 85, 0.1);
396
- border: 1px solid rgba(255, 85, 85, 0.3);
397
- color: #ff5555;
398
- }
399
-
400
- /* Warning styles for viewing historical frames */
401
- #container.is-historical {
402
- border: 3px dashed var(--clr-warning, #ffb86c);
403
- border-radius: var(--radius-md, 8px);
404
- padding: 1.5rem;
405
- position: relative;
406
- background: rgba(255, 184, 108, 0.01);
407
- }
408
-
409
- .warning-banner {
410
- background: rgba(255, 184, 108, 0.1);
411
- border: 1.5px solid rgba(255, 184, 108, 0.35);
412
- color: var(--clr-warning, #ffb86c);
413
- padding: 0.8rem 1.2rem;
414
- border-radius: var(--radius-md, 8px);
415
- font-weight: 600;
416
- font-size: 1rem;
417
- margin-bottom: 1.5rem;
418
- display: flex;
419
- align-items: center;
420
- gap: 0.5rem;
421
- box-shadow: 0 4px 12px rgba(255, 184, 108, 0.05);
422
- animation: pulse-border 2s infinite alternate;
423
- }
424
-
425
- @keyframes pulse-border {
426
- 0% {
427
- border-color: rgba(255, 184, 108, 0.2);
428
- box-shadow: 0 4px 12px rgba(255, 184, 108, 0.02);
429
- }
430
- 100% {
431
- border-color: rgba(255, 184, 108, 0.5);
432
- box-shadow: 0 4px 16px rgba(255, 184, 108, 0.08);
433
- }
434
- }
435
-
436
- /* Grouped Toggle Switch for Identity Providers */
437
- .sso-toggle-group {
438
- display: flex;
439
- gap: 1.5rem;
440
- margin-top: 1rem;
441
- flex-wrap: wrap;
442
- }
443
-
444
- .sso-toggle-card {
445
- flex: 1;
446
- min-width: 180px;
447
- max-width: 240px;
448
- height: 180px;
449
- background: rgba(255, 255, 255, 0.02);
450
- border: 1px solid rgba(255, 255, 255, 0.06);
451
- border-radius: var(--radius-md, 8px);
452
- display: flex;
453
- flex-direction: column;
454
- justify-content: space-between;
455
- align-items: center;
456
- cursor: pointer;
457
- overflow: hidden;
458
- position: relative;
459
- user-select: none;
460
- transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);
461
- }
462
-
463
- .sso-toggle-card:hover {
464
- background: rgba(255, 255, 255, 0.04);
465
- border-color: rgba(255, 255, 255, 0.12);
466
- transform: translateY(-2px);
467
- box-shadow: 0 8px 24px rgba(0, 0, 0, 0.2);
468
- }
469
-
470
- .sso-toggle-card:focus-visible {
471
- outline: 2px solid var(--clr-accent, #50fa7b);
472
- outline-offset: 2px;
473
- }
474
-
475
- /* Status Indicator bars: Top (Green/Active) and Bottom (Red/Faded) */
476
- .toggle-status-indicator {
477
- width: 100%;
478
- height: 6px;
479
- transition: all 0.25s ease-in-out;
480
- }
481
-
482
- .toggle-status-indicator.top {
483
- background: transparent;
484
- }
485
-
486
- .toggle-status-indicator.bottom {
487
- background: transparent;
488
- }
489
-
490
- /* Middle Content Wrapper */
491
- .toggle-content {
492
- display: flex;
493
- flex-direction: column;
494
- align-items: center;
495
- justify-content: center;
496
- gap: 0.6rem;
497
- padding: 1rem;
498
- text-align: center;
499
- }
500
-
501
- .sso-icon {
502
- width: 2.25rem;
503
- height: 2.25rem;
504
- transition: transform 0.25s cubic-bezier(0.4, 0, 0.2, 1);
505
- }
506
-
507
- .sso-toggle-card:hover .sso-icon {
508
- transform: scale(1.1);
509
- }
510
-
511
- .provider-label {
512
- font-size: 0.95rem;
513
- font-weight: 600;
514
- color: var(--clr-text-primary, #ffffff);
515
- }
516
-
517
- .toggle-state-text {
518
- font-size: 0.75rem;
519
- font-weight: 500;
520
- text-transform: uppercase;
521
- letter-spacing: 0.05em;
522
- color: var(--clr-text-secondary, #8fa08f);
523
- transition: color 0.25s ease-in-out;
524
- }
525
-
526
- /* Linked (Active State) styles */
527
- .sso-toggle-card.linked {
528
- background: rgba(80, 250, 123, 0.02);
529
- border-color: rgba(80, 250, 123, 0.2);
530
- box-shadow: 0 4px 16px rgba(80, 250, 123, 0.04);
531
- }
532
-
533
- .sso-toggle-card.linked:hover {
534
- background: rgba(80, 250, 123, 0.04);
535
- border-color: rgba(80, 250, 123, 0.35);
536
- }
537
-
538
- .sso-toggle-card.linked .toggle-status-indicator.top {
539
- background: var(--clr-accent, #50fa7b);
540
- box-shadow: 0 2px 10px rgba(80, 250, 123, 0.5);
541
- }
542
-
543
- .sso-toggle-card.linked .toggle-state-text {
544
- color: var(--clr-accent, #50fa7b);
545
- font-weight: bold;
546
- }
547
-
548
- /* Unlinked (Inactive/Faded State) styles */
549
- .sso-toggle-card.unlinked {
550
- opacity: 0.75;
551
- }
552
-
553
- .sso-toggle-card.unlinked:hover {
554
- opacity: 1.0;
555
- }
556
-
557
- .sso-toggle-card.unlinked .toggle-status-indicator.bottom {
558
- background: rgba(255, 85, 85, 0.4);
559
- }
560
-
561
- .sso-toggle-card.unlinked .toggle-state-text {
562
- color: var(--clr-text-secondary, #8fa08f);
563
- }
564
-
565
- /* Historical/Disabled state */
566
- .sso-toggle-card.disabled {
567
- pointer-events: none;
568
- opacity: 0.4;
569
- }
@@ -1,127 +0,0 @@
1
- <div id="container" class="component-container">
2
- <div id="historical-warning-banner" class="warning-banner hidden">
3
- <span>⚠️ Viewing Historical Frame (Past State)</span>
4
- </div>
5
- <div id="identity-details-view" class="details-view">
6
- <!-- Details for the active Domain Identity -->
7
- <div class="card">
8
- <h3>Domain Identity Details</h3>
9
-
10
- <!-- Key-Value Grid -->
11
- <div class="kv-grid">
12
- <div class="kv-label">Username</div>
13
- <div id="identity-name" class="kv-value">-</div>
14
-
15
- <div class="kv-label">Description</div>
16
- <div id="identity-description" class="kv-value">-</div>
17
-
18
- <div class="kv-label">Verifiable Address</div>
19
- <code id="identity-addr" class="address-code"></code>
20
-
21
- <div class="kv-label">Generation (n)</div>
22
- <div id="identity-gen" class="kv-value">-</div>
23
-
24
- <div class="kv-label">Timestamp</div>
25
- <div id="identity-timestamp" class="kv-value">-</div>
26
-
27
- <div class="kv-label">UUID</div>
28
- <div id="identity-uuid" class="kv-value">-</div>
29
-
30
- <div class="kv-label">Frame Details</div>
31
- <div class="kv-value">
32
- <pre id="identity-frame-details" class="kv-pre">-</pre>
33
- </div>
34
-
35
- <div class="kv-label">Aggr. Details</div>
36
- <div class="kv-value">
37
- <pre id="identity-aggr-details" class="kv-pre">-</pre>
38
- </div>
39
- </div>
40
-
41
- <div class="action-row">
42
- <button id="btn-set-active" class="action-btn">Set as Active Identity</button>
43
- <button id="btn-verify-chain" class="action-btn secondary">Verify Identity Chain</button>
44
- </div>
45
- <div id="verification-status" class="status-msg hidden"></div>
46
- </div>
47
-
48
- <!-- Challenge Pools Card -->
49
- <div class="card">
50
- <h3>Challenge Pools</h3>
51
- <div id="pools-container" class="pools-container">
52
- <!-- Dynamic pools list gets injected here -->
53
- </div>
54
- </div>
55
-
56
- <!-- Delegates Card -->
57
- <div id="delegates-card" class="card">
58
- <h3>Registered Delegates</h3>
59
- <div id="delegates-container" class="delegates-container">
60
- <p class="description">Active sub-keystones authorized to perform sync and operations on behalf of this Domain Identity.</p>
61
- <table class="delegates-table">
62
- <thead>
63
- <tr>
64
- <th>Name / Description</th>
65
- <th>TJP Address</th>
66
- <th>Allowed Verbs</th>
67
- <th>Actions</th>
68
- </tr>
69
- </thead>
70
- <tbody id="delegates-list">
71
- <!-- Dynamic list of delegates gets injected here -->
72
- </tbody>
73
- </table>
74
- </div>
75
- </div>
76
-
77
- <!-- SSO Identity Linking Card -->
78
- <div id="sso-link-card" class="card hidden">
79
- <h3>Identity Providers</h3>
80
- <p class="description">Securely link or unlink external OAuth2 providers to delegate sync access to this identity.</p>
81
- <div class="sso-toggle-group">
82
- <!-- Google Card Toggle -->
83
- <div id="btn-link-google" class="sso-toggle-card google" role="button" tabindex="0">
84
- <div class="toggle-status-indicator top"></div>
85
- <div class="toggle-content">
86
- <!-- Custom Google SVG Icon -->
87
- <svg class="sso-icon" viewBox="0 0 24 24">
88
- <path fill="#4285F4" d="M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92c-.26 1.37-1.04 2.53-2.21 3.31v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.09z"/>
89
- <path fill="#34A853" d="M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z"/>
90
- <path fill="#FBBC05" d="M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.06H2.18C1.43 8.55 1 10.22 1 12s.43 3.45 1.18 4.94l2.85-2.22.81-.63z"/>
91
- <path fill="#EA4335" d="M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.06l3.66 2.84c.87-2.6 3.3-4.52 6.16-4.52z"/>
92
- </svg>
93
- <span class="provider-label">Google</span>
94
- <span class="toggle-state-text">Unlinked</span>
95
- </div>
96
- <div class="toggle-status-indicator bottom"></div>
97
- </div>
98
-
99
- <!-- GitHub Card Toggle -->
100
- <div id="btn-link-github" class="sso-toggle-card github" role="button" tabindex="0">
101
- <div class="toggle-status-indicator top"></div>
102
- <div class="toggle-content">
103
- <!-- Custom GitHub SVG Icon -->
104
- <svg class="sso-icon" viewBox="0 0 24 24" fill="currentColor">
105
- <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"/>
106
- </svg>
107
- <span class="provider-label">GitHub</span>
108
- <span class="toggle-state-text">Unlinked</span>
109
- </div>
110
- <div class="toggle-status-indicator bottom"></div>
111
- </div>
112
- </div>
113
- <div id="sso-status-msg" class="status-msg hidden"></div>
114
- </div>
115
-
116
- <!-- Raw Keystone Timeline Explorer -->
117
- <div class="card accordion">
118
- <div id="raw-accordion-header" class="accordion-header">
119
- <span>Raw Keystone Timeline (JSON)</span>
120
- <span class="chevron">▼</span>
121
- </div>
122
- <div id="raw-accordion-content" class="accordion-content">
123
- <pre id="raw-keystone-json" class="json-code"></pre>
124
- </div>
125
- </div>
126
- </div>
127
- </div>