@ibgib/space-gib 0.0.6 → 0.0.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.
- package/README.md +20 -0
- package/dist/client/bootstrap.mjs +31 -31
- package/dist/client/bootstrap.mjs.map +3 -3
- package/dist/client/chunk-RXFIBFRK.mjs +42 -0
- package/dist/client/chunk-RXFIBFRK.mjs.map +7 -0
- package/dist/client/chunk-ULFNE26Y.mjs +2216 -0
- package/dist/client/chunk-ULFNE26Y.mjs.map +7 -0
- package/dist/client/index.mjs +1 -1
- package/dist/client/script.mjs +1 -1
- package/dist/server/server.mjs +1346 -245
- package/dist/server/server.mjs.map +4 -4
- package/package.json +5 -5
- package/space-gib.localhost-1783713259760.log +45 -0
- package/src/client/AUTO-GENERATED-version.mts +1 -1
- package/src/client/bootstrap.mts +9 -0
- package/src/client/components/identity-header/identity-header.mts +43 -26
- package/src/client/components/identity-manager/identity-manager.css +57 -392
- package/src/client/components/identity-manager/identity-manager.html +0 -114
- package/src/client/components/identity-manager/identity-manager.mts +356 -543
- package/src/client/components/keystone-creator/keystone-creator.mts +4 -3
- package/src/client/components/keystone-details/keystone-details.css +472 -0
- package/src/client/components/keystone-details/keystone-details.html +99 -0
- package/src/client/components/keystone-details/keystone-details.mts +821 -0
- package/src/client/components/keystone-scrubber/SCRUBBER_IMPLEMENTATION.md +33 -0
- package/src/client/components/keystone-scrubber/keystone-scrubber.css +46 -0
- package/src/client/components/keystone-scrubber/keystone-scrubber.html +15 -0
- package/src/client/components/keystone-scrubber/keystone-scrubber.mts +356 -0
- package/src/client/ui/shell/space-gib-shell-service.mts +4 -0
- package/src/server/path-constants.mts +12 -0
- package/src/server/serve-gib/handlers/api/keystone/sso-config.handler.mts +66 -0
- package/src/server/serve-gib/handlers/api/keystone/sso-link.handler.mts +119 -0
- package/src/server/serve-gib/handlers/api/keystone/sso-login.handler.mts +189 -0
- package/src/server/server.mts +6 -0
- package/dist/client/chunk-734MMI4C.mjs +0 -42
- package/dist/client/chunk-734MMI4C.mjs.map +0 -7
- package/dist/client/chunk-SMOZ2D5E.mjs +0 -2049
- package/dist/client/chunk-SMOZ2D5E.mjs.map +0 -7
|
@@ -34,7 +34,6 @@ h2 {
|
|
|
34
34
|
color: var(--clr-accent, #50fa7b);
|
|
35
35
|
}
|
|
36
36
|
|
|
37
|
-
|
|
38
37
|
.icon-btn {
|
|
39
38
|
width: 2.2rem;
|
|
40
39
|
height: 2.2rem;
|
|
@@ -75,432 +74,98 @@ h2 {
|
|
|
75
74
|
margin-bottom: 1.5rem;
|
|
76
75
|
}
|
|
77
76
|
|
|
78
|
-
.
|
|
79
|
-
padding: 1.
|
|
80
|
-
background:
|
|
81
|
-
border:
|
|
82
|
-
border-radius: var(--radius-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
gap: 1rem;
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
.card h3 {
|
|
89
|
-
margin: 0;
|
|
90
|
-
font-size: var(--h3-font-size, 1.15rem);
|
|
91
|
-
font-weight: var(--h3-font-weight, 500);
|
|
92
|
-
color: var(--clr-accent, #50fa7b);
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
.info-group {
|
|
96
|
-
display: flex;
|
|
97
|
-
flex-direction: column;
|
|
98
|
-
gap: 0.5rem;
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
.info-group label {
|
|
102
|
-
font-size: 0.8rem;
|
|
103
|
-
color: var(--clr-text-secondary, #b3b3b3);
|
|
104
|
-
text-transform: uppercase;
|
|
105
|
-
letter-spacing: 0.05em;
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
.replicas-list {
|
|
110
|
-
display: flex;
|
|
111
|
-
flex-direction: column;
|
|
112
|
-
gap: 0.5rem;
|
|
113
|
-
max-height: 150px;
|
|
114
|
-
overflow-y: auto;
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
.input-row {
|
|
118
|
-
display: flex;
|
|
119
|
-
gap: 0.5rem;
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
/* Accordion raw styles */
|
|
123
|
-
.accordion {
|
|
124
|
-
padding: 0;
|
|
125
|
-
overflow: hidden;
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
.accordion-header {
|
|
129
|
-
padding: 1.25rem 1.5rem;
|
|
130
|
-
display: flex;
|
|
131
|
-
justify-content: space-between;
|
|
132
|
-
align-items: center;
|
|
77
|
+
.action-btn {
|
|
78
|
+
padding: 0.6rem 1.2rem;
|
|
79
|
+
background: var(--clr-accent, #50fa7b);
|
|
80
|
+
border: none;
|
|
81
|
+
border-radius: var(--radius-sm, 4px);
|
|
82
|
+
color: #1a1a24;
|
|
83
|
+
font-weight: 600;
|
|
133
84
|
cursor: pointer;
|
|
134
|
-
|
|
135
|
-
transition: background 0.2s ease-in-out;
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
.accordion-header:hover {
|
|
139
|
-
background: rgba(255, 255, 255, 0.03);
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
.accordion-header .chevron {
|
|
143
|
-
transition: transform 0.2s ease-in-out;
|
|
144
|
-
font-size: 0.8rem;
|
|
145
|
-
color: var(--clr-text-secondary, #b3b3b3);
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
.accordion-header.expanded .chevron {
|
|
149
|
-
transform: rotate(180deg);
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
.accordion-content {
|
|
153
|
-
max-height: 0;
|
|
154
|
-
transition: max-height 0.3s cubic-bezier(0, 1, 0, 1);
|
|
155
|
-
background: rgba(0, 0, 0, 0.15);
|
|
156
|
-
border-top: 1px solid var(--border-color-base, rgba(255, 255, 255, 0.03));
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
.accordion-content.expanded {
|
|
160
|
-
max-height: 5000px;
|
|
161
|
-
overflow-y: visible;
|
|
162
|
-
transition: max-height 0.3s cubic-bezier(1, 0, 1, 0);
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
.json-code {
|
|
166
|
-
margin: 0;
|
|
167
|
-
padding: 1.25rem;
|
|
168
|
-
font-family: var(--font-mono, monospace);
|
|
169
|
-
font-size: 0.8rem;
|
|
170
|
-
color: var(--clr-accent, #50fa7b);
|
|
171
|
-
background: transparent;
|
|
172
|
-
overflow: auto;
|
|
173
|
-
max-height: 70dvh;
|
|
174
|
-
white-space: pre-wrap;
|
|
175
|
-
word-break: break-all;
|
|
85
|
+
transition: all 0.2s ease-in-out;
|
|
176
86
|
}
|
|
177
87
|
|
|
178
|
-
.
|
|
179
|
-
|
|
180
|
-
color: var(--clr-text-secondary, #b3b3b3);
|
|
181
|
-
margin: 0;
|
|
88
|
+
.action-btn:hover {
|
|
89
|
+
background: #40c767;
|
|
182
90
|
}
|
|
183
91
|
|
|
184
|
-
|
|
185
92
|
.hidden {
|
|
186
93
|
display: none !important;
|
|
187
94
|
}
|
|
188
95
|
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
|
|
192
|
-
gap: 1rem;
|
|
193
|
-
margin-top: 0.5rem;
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
.value-text {
|
|
197
|
-
font-family: var(--font-family-base, inherit);
|
|
198
|
-
font-size: 0.9rem;
|
|
199
|
-
color: var(--text-color-base, #ffffff);
|
|
200
|
-
font-weight: 500;
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
.pools-container {
|
|
204
|
-
display: flex;
|
|
205
|
-
flex-direction: column;
|
|
206
|
-
gap: 1rem;
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
.pool-card {
|
|
210
|
-
padding: 1rem;
|
|
211
|
-
background: rgba(0, 0, 0, 0.25);
|
|
212
|
-
border: 1px solid var(--border-color-base, rgba(255, 255, 255, 0.05));
|
|
213
|
-
border-radius: 6px;
|
|
214
|
-
display: flex;
|
|
215
|
-
flex-direction: column;
|
|
216
|
-
gap: 0.75rem;
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
.pool-header {
|
|
96
|
+
/* Tab Buttons row */
|
|
97
|
+
.tabs-row {
|
|
220
98
|
display: flex;
|
|
221
99
|
justify-content: space-between;
|
|
222
100
|
align-items: center;
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
.pool-title {
|
|
228
|
-
font-size: 0.95rem;
|
|
229
|
-
font-weight: 600;
|
|
230
|
-
color: var(--clr-accent, #50fa7b);
|
|
231
|
-
}
|
|
232
|
-
|
|
233
|
-
.pool-tag {
|
|
234
|
-
font-size: 0.7rem;
|
|
235
|
-
padding: 0.15rem 0.4rem;
|
|
236
|
-
border-radius: 4px;
|
|
237
|
-
font-weight: bold;
|
|
238
|
-
text-transform: uppercase;
|
|
239
|
-
}
|
|
240
|
-
|
|
241
|
-
.pool-tag.foreign {
|
|
242
|
-
background: rgba(255, 184, 108, 0.15);
|
|
243
|
-
border: 1px solid rgba(255, 184, 108, 0.3);
|
|
244
|
-
color: #ffb86c;
|
|
245
|
-
}
|
|
246
|
-
|
|
247
|
-
.pool-tag.native {
|
|
248
|
-
background: rgba(80, 250, 123, 0.1);
|
|
249
|
-
border: 1px solid rgba(80, 250, 123, 0.2);
|
|
250
|
-
color: #50fa7b;
|
|
251
|
-
}
|
|
252
|
-
|
|
253
|
-
.pool-grid {
|
|
254
|
-
display: grid;
|
|
255
|
-
grid-template-columns: repeat(auto-fit, minmax(130px, 1fr));
|
|
256
|
-
gap: 0.75rem;
|
|
257
|
-
font-size: 0.85rem;
|
|
258
|
-
}
|
|
259
|
-
|
|
260
|
-
.pool-field {
|
|
261
|
-
display: flex;
|
|
262
|
-
flex-direction: column;
|
|
263
|
-
gap: 0.2rem;
|
|
264
|
-
}
|
|
265
|
-
|
|
266
|
-
.pool-field label {
|
|
267
|
-
font-size: 0.7rem;
|
|
268
|
-
color: var(--clr-text-secondary, #b3b3b3);
|
|
269
|
-
text-transform: uppercase;
|
|
270
|
-
letter-spacing: 0.03em;
|
|
271
|
-
}
|
|
272
|
-
|
|
273
|
-
.pool-field span {
|
|
274
|
-
color: #ffffff;
|
|
275
|
-
font-weight: 500;
|
|
276
|
-
word-break: break-all;
|
|
277
|
-
}
|
|
278
|
-
|
|
279
|
-
/* Key-Value Details Grid Layout */
|
|
280
|
-
.kv-grid {
|
|
281
|
-
display: grid;
|
|
282
|
-
grid-template-columns: minmax(140px, 180px) 1fr;
|
|
283
|
-
gap: 0.75rem 1.5rem;
|
|
284
|
-
align-items: baseline;
|
|
285
|
-
margin-top: 1rem;
|
|
286
|
-
margin-bottom: 1.5rem;
|
|
287
|
-
}
|
|
288
|
-
|
|
289
|
-
.kv-label {
|
|
290
|
-
font-family: var(--font-sans);
|
|
291
|
-
font-size: 0.75rem;
|
|
292
|
-
font-weight: 600;
|
|
293
|
-
text-transform: uppercase;
|
|
294
|
-
letter-spacing: 0.05em;
|
|
295
|
-
color: var(--clr-text-secondary, #8fa08f);
|
|
296
|
-
user-select: none;
|
|
297
|
-
}
|
|
298
|
-
|
|
299
|
-
.kv-value {
|
|
300
|
-
font-size: 0.9375rem;
|
|
301
|
-
color: var(--clr-text-primary, #ffffff);
|
|
302
|
-
word-break: break-all;
|
|
303
|
-
}
|
|
304
|
-
|
|
305
|
-
.kv-pre {
|
|
306
|
-
margin: 0;
|
|
307
|
-
padding: 0.6rem 0.8rem;
|
|
308
|
-
background: rgba(0, 0, 0, 0.3);
|
|
309
|
-
border: 1px solid var(--border-color-base, rgba(255, 255, 255, 0.05));
|
|
310
|
-
border-radius: var(--radius-sm, 6px);
|
|
311
|
-
font-family: var(--font-mono, monospace);
|
|
312
|
-
font-size: 0.8rem;
|
|
313
|
-
color: var(--clr-accent, #50fa7b);
|
|
314
|
-
max-height: 150px;
|
|
315
|
-
overflow: auto;
|
|
316
|
-
white-space: pre;
|
|
317
|
-
word-break: normal;
|
|
101
|
+
gap: 1rem;
|
|
102
|
+
margin-top: 0.5rem;
|
|
318
103
|
}
|
|
319
104
|
|
|
320
|
-
|
|
321
|
-
.scrubber-nav {
|
|
105
|
+
.tabs-list {
|
|
322
106
|
display: flex;
|
|
323
|
-
align-items: center;
|
|
324
|
-
justify-content: center;
|
|
325
107
|
gap: 0.5rem;
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
margin-bottom: 1.5rem;
|
|
108
|
+
overflow-x: auto;
|
|
109
|
+
scrollbar-width: none;
|
|
110
|
+
-ms-overflow-style: none;
|
|
111
|
+
padding-bottom: 0.25rem;
|
|
112
|
+
flex-grow: 1;
|
|
332
113
|
}
|
|
333
114
|
|
|
334
|
-
.
|
|
335
|
-
|
|
336
|
-
font-size: 0.85rem;
|
|
337
|
-
color: var(--clr-accent, #50fa7b);
|
|
338
|
-
min-width: 120px;
|
|
339
|
-
text-align: center;
|
|
340
|
-
font-weight: 500;
|
|
341
|
-
}
|
|
342
|
-
|
|
343
|
-
.scrubber-btn {
|
|
344
|
-
padding: 0.4rem 0.8rem;
|
|
345
|
-
font-size: 0.8rem;
|
|
346
|
-
min-width: 2.2rem;
|
|
347
|
-
}
|
|
348
|
-
|
|
349
|
-
/* Pool Details & Challenges/Binding Map styling */
|
|
350
|
-
.pool-details {
|
|
351
|
-
margin-top: 0.75rem;
|
|
352
|
-
border-top: 1px solid rgba(255, 255, 255, 0.05);
|
|
353
|
-
padding-top: 0.5rem;
|
|
354
|
-
}
|
|
355
|
-
|
|
356
|
-
.pool-details-summary {
|
|
357
|
-
font-size: 0.8rem;
|
|
358
|
-
font-weight: 600;
|
|
359
|
-
color: var(--clr-text-secondary, #8fa08f);
|
|
360
|
-
cursor: pointer;
|
|
361
|
-
user-select: none;
|
|
362
|
-
outline: none;
|
|
363
|
-
padding: 0.25rem 0;
|
|
364
|
-
display: flex;
|
|
365
|
-
align-items: center;
|
|
366
|
-
gap: 0.25rem;
|
|
367
|
-
transition: color var(--t-fast, 120ms ease);
|
|
115
|
+
.tabs-list::-webkit-scrollbar {
|
|
116
|
+
display: none;
|
|
368
117
|
}
|
|
369
118
|
|
|
370
|
-
.
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
.pool-challenges-list {
|
|
375
|
-
margin-top: 0.5rem;
|
|
376
|
-
display: flex;
|
|
377
|
-
flex-direction: column;
|
|
378
|
-
gap: 0.4rem;
|
|
379
|
-
max-height: 180px;
|
|
380
|
-
overflow-y: auto;
|
|
381
|
-
padding-right: 0.25rem;
|
|
119
|
+
.tab-btn {
|
|
120
|
+
padding: 0.55rem 1.25rem;
|
|
121
|
+
background: rgba(255, 255, 255, 0.03);
|
|
382
122
|
border: 1px solid rgba(255, 255, 255, 0.05);
|
|
383
|
-
|
|
384
|
-
border-radius: 4px;
|
|
385
|
-
padding: 0.5rem;
|
|
386
|
-
}
|
|
387
|
-
|
|
388
|
-
.pool-challenge-item {
|
|
389
|
-
display: flex;
|
|
390
|
-
justify-content: space-between;
|
|
391
|
-
align-items: center;
|
|
392
|
-
background: rgba(255, 255, 255, 0.02);
|
|
393
|
-
border: 1px solid rgba(255, 255, 255, 0.03);
|
|
394
|
-
border-radius: 4px;
|
|
395
|
-
padding: 0.35rem 0.5rem;
|
|
396
|
-
font-size: 0.75rem;
|
|
397
|
-
font-family: var(--font-mono, monospace);
|
|
398
|
-
}
|
|
399
|
-
|
|
400
|
-
.challenge-id {
|
|
123
|
+
border-radius: var(--radius-sm, 6px);
|
|
401
124
|
color: var(--clr-text-secondary, #8fa08f);
|
|
125
|
+
font-family: var(--font-sans, inherit);
|
|
126
|
+
font-size: 0.9rem;
|
|
402
127
|
font-weight: 500;
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
word-break: break-all;
|
|
408
|
-
margin-left: 1rem;
|
|
409
|
-
text-align: right;
|
|
410
|
-
}
|
|
411
|
-
|
|
412
|
-
.pool-binding-map {
|
|
413
|
-
margin-top: 0.5rem;
|
|
414
|
-
display: grid;
|
|
415
|
-
grid-template-columns: repeat(auto-fill, minmax(80px, 1fr));
|
|
416
|
-
gap: 0.4rem;
|
|
417
|
-
max-height: 200px;
|
|
418
|
-
overflow-y: auto;
|
|
419
|
-
padding-right: 0.25rem;
|
|
420
|
-
border: 1px solid rgba(255, 255, 255, 0.05);
|
|
421
|
-
background: rgba(0, 0, 0, 0.15);
|
|
422
|
-
border-radius: 4px;
|
|
423
|
-
padding: 0.5rem;
|
|
424
|
-
}
|
|
425
|
-
|
|
426
|
-
.binding-bucket {
|
|
427
|
-
display: flex;
|
|
428
|
-
flex-direction: column;
|
|
429
|
-
align-items: center;
|
|
430
|
-
background: rgba(255, 255, 255, 0.02);
|
|
431
|
-
border: 1px solid rgba(255, 255, 255, 0.03);
|
|
432
|
-
border-radius: 4px;
|
|
433
|
-
padding: 0.35rem;
|
|
434
|
-
font-family: var(--font-mono, monospace);
|
|
435
|
-
font-size: 0.75rem;
|
|
436
|
-
}
|
|
437
|
-
|
|
438
|
-
.binding-key {
|
|
439
|
-
color: var(--clr-text-secondary, #8fa08f);
|
|
440
|
-
font-weight: bold;
|
|
441
|
-
border-bottom: 1px solid rgba(255, 255, 255, 0.05);
|
|
442
|
-
width: 100%;
|
|
443
|
-
text-align: center;
|
|
444
|
-
padding-bottom: 0.15rem;
|
|
445
|
-
margin-bottom: 0.15rem;
|
|
446
|
-
}
|
|
447
|
-
|
|
448
|
-
.binding-ids {
|
|
449
|
-
display: flex;
|
|
450
|
-
flex-direction: column;
|
|
451
|
-
gap: 0.15rem;
|
|
452
|
-
width: 100%;
|
|
128
|
+
cursor: pointer;
|
|
129
|
+
transition: all 0.2s ease-in-out;
|
|
130
|
+
white-space: nowrap;
|
|
131
|
+
display: inline-flex;
|
|
453
132
|
align-items: center;
|
|
454
133
|
}
|
|
455
134
|
|
|
456
|
-
.
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
color:
|
|
460
|
-
padding: 0.05rem 0.25rem;
|
|
461
|
-
border-radius: 3px;
|
|
462
|
-
width: 100%;
|
|
463
|
-
text-align: center;
|
|
464
|
-
white-space: nowrap;
|
|
465
|
-
overflow: hidden;
|
|
466
|
-
text-overflow: ellipsis;
|
|
135
|
+
.tab-btn:hover {
|
|
136
|
+
background: rgba(255, 255, 255, 0.08);
|
|
137
|
+
color: var(--clr-accent, #50fa7b);
|
|
138
|
+
border-color: rgba(120, 248, 126, 0.2);
|
|
467
139
|
}
|
|
468
140
|
|
|
469
|
-
|
|
470
|
-
.
|
|
471
|
-
|
|
472
|
-
border-
|
|
473
|
-
|
|
474
|
-
font-size: 0.9rem;
|
|
475
|
-
background: rgba(0, 0, 0, 0.2);
|
|
476
|
-
border-radius: var(--radius-sm, 6px);
|
|
477
|
-
overflow: hidden;
|
|
141
|
+
.tab-btn.active {
|
|
142
|
+
background: rgba(80, 250, 123, 0.1);
|
|
143
|
+
color: var(--clr-accent, #50fa7b);
|
|
144
|
+
border-color: var(--clr-accent-dim, rgba(120, 248, 126, 0.35));
|
|
145
|
+
box-shadow: 0 0 10px rgba(120, 248, 126, 0.05);
|
|
478
146
|
}
|
|
479
147
|
|
|
480
|
-
.
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
text-align: left;
|
|
484
|
-
border-bottom: 1px solid rgba(255, 255, 255, 0.05);
|
|
148
|
+
.tab-btn.global-active {
|
|
149
|
+
border-style: double;
|
|
150
|
+
border-width: 3px;
|
|
485
151
|
}
|
|
486
152
|
|
|
487
|
-
.
|
|
488
|
-
|
|
153
|
+
.tab-btn.global-active::after {
|
|
154
|
+
content: " (active)";
|
|
489
155
|
font-size: 0.75rem;
|
|
490
|
-
font-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
color: var(--clr-text-secondary, #8fa08f);
|
|
494
|
-
background: rgba(255, 255, 255, 0.02);
|
|
156
|
+
font-style: italic;
|
|
157
|
+
opacity: 0.8;
|
|
158
|
+
margin-left: 0.25rem;
|
|
495
159
|
}
|
|
496
160
|
|
|
497
|
-
.
|
|
498
|
-
font-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
161
|
+
.close-tab-button {
|
|
162
|
+
font-size: 0.85rem;
|
|
163
|
+
color: var(--clr-text-secondary, #8fa08f);
|
|
164
|
+
transition: color 0.2s ease-in-out;
|
|
165
|
+
margin-left: 0.5rem;
|
|
166
|
+
line-height: 1;
|
|
502
167
|
}
|
|
503
168
|
|
|
504
|
-
.
|
|
505
|
-
|
|
169
|
+
.close-tab-button:hover {
|
|
170
|
+
color: var(--clr-danger, #ff5555) !important;
|
|
506
171
|
}
|
|
@@ -15,119 +15,5 @@
|
|
|
15
15
|
<p>No Domain Identities loaded. Create or load one to begin.</p>
|
|
16
16
|
<button id="btn-create-placeholder" class="action-btn">Create/Load Identity</button>
|
|
17
17
|
</div>
|
|
18
|
-
|
|
19
|
-
<div id="identity-details-view" class="details-view hidden">
|
|
20
|
-
<!-- Details for the active Domain Identity -->
|
|
21
|
-
<div class="card">
|
|
22
|
-
<h3>Domain Identity Details</h3>
|
|
23
|
-
|
|
24
|
-
<!-- History Scrubber Navigation -->
|
|
25
|
-
<div id="history-scrubber" class="scrubber-nav">
|
|
26
|
-
<button id="btn-scrub-first" class="action-btn secondary scrubber-btn"
|
|
27
|
-
title="First Frame (Genesis)">|<</button>
|
|
28
|
-
<button id="btn-scrub-prev10" class="action-btn secondary scrubber-btn"
|
|
29
|
-
title="Back 10 Frames"><< 10</button>
|
|
30
|
-
<button id="btn-scrub-prev" class="action-btn secondary scrubber-btn"
|
|
31
|
-
title="Previous Frame"><</button>
|
|
32
|
-
<span id="scrubber-status" class="scrubber-info">Frame - / -</span>
|
|
33
|
-
<button id="btn-scrub-next" class="action-btn secondary scrubber-btn"
|
|
34
|
-
title="Next Frame">></button>
|
|
35
|
-
<button id="btn-scrub-next10" class="action-btn secondary scrubber-btn" title="Forward 10 Frames">10
|
|
36
|
-
>></button>
|
|
37
|
-
<button id="btn-scrub-latest" class="action-btn secondary scrubber-btn"
|
|
38
|
-
title="Latest Frame (Tip)">>|</button>
|
|
39
|
-
</div>
|
|
40
|
-
|
|
41
|
-
<!-- Key-Value Grid -->
|
|
42
|
-
<div class="kv-grid">
|
|
43
|
-
<div class="kv-label">Username</div>
|
|
44
|
-
<div id="identity-name" class="kv-value">-</div>
|
|
45
|
-
|
|
46
|
-
<div class="kv-label">Description</div>
|
|
47
|
-
<div id="identity-description" class="kv-value">-</div>
|
|
48
|
-
|
|
49
|
-
<div class="kv-label">Verifiable Address</div>
|
|
50
|
-
<code id="identity-addr" class="address-code"></code>
|
|
51
|
-
|
|
52
|
-
<div class="kv-label">Generation (n)</div>
|
|
53
|
-
<div id="identity-gen" class="kv-value">-</div>
|
|
54
|
-
|
|
55
|
-
<div class="kv-label">Timestamp</div>
|
|
56
|
-
<div id="identity-timestamp" class="kv-value">-</div>
|
|
57
|
-
|
|
58
|
-
<div class="kv-label">UUID</div>
|
|
59
|
-
<div id="identity-uuid" class="kv-value">-</div>
|
|
60
|
-
|
|
61
|
-
<div class="kv-label">Frame Details</div>
|
|
62
|
-
<div class="kv-value">
|
|
63
|
-
<pre id="identity-frame-details" class="kv-pre">-</pre>
|
|
64
|
-
</div>
|
|
65
|
-
|
|
66
|
-
<div class="kv-label">Aggr. Details</div>
|
|
67
|
-
<div class="kv-value">
|
|
68
|
-
<pre id="identity-aggr-details" class="kv-pre">-</pre>
|
|
69
|
-
</div>
|
|
70
|
-
</div>
|
|
71
|
-
|
|
72
|
-
<div class="action-row">
|
|
73
|
-
<button id="btn-set-active" class="action-btn">Set as Active Identity</button>
|
|
74
|
-
<button id="btn-verify-chain" class="action-btn secondary">Verify Identity Chain</button>
|
|
75
|
-
<!-- <button id="btn-sync-identity" class="action-btn" disabled>Sync Identity & Data</button> -->
|
|
76
|
-
</div>
|
|
77
|
-
<div id="verification-status" class="status-msg hidden"></div>
|
|
78
|
-
</div>
|
|
79
|
-
|
|
80
|
-
<!-- Challenge Pools Card -->
|
|
81
|
-
<div class="card">
|
|
82
|
-
<h3>Challenge Pools</h3>
|
|
83
|
-
<div id="pools-container" class="pools-container">
|
|
84
|
-
<!-- Dynamic pools list gets injected here -->
|
|
85
|
-
</div>
|
|
86
|
-
</div>
|
|
87
|
-
|
|
88
|
-
<!-- Delegates Card -->
|
|
89
|
-
<div class="card">
|
|
90
|
-
<h3>Registered Delegates</h3>
|
|
91
|
-
<div id="delegates-container" class="delegates-container">
|
|
92
|
-
<p class="description">Active sub-keystones authorized to perform sync and operations on behalf of this Domain Identity.</p>
|
|
93
|
-
<table class="delegates-table">
|
|
94
|
-
<thead>
|
|
95
|
-
<tr>
|
|
96
|
-
<th>Name / Description</th>
|
|
97
|
-
<th>TJP Address</th>
|
|
98
|
-
<th>Allowed Verbs</th>
|
|
99
|
-
</tr>
|
|
100
|
-
</thead>
|
|
101
|
-
<tbody id="delegates-list">
|
|
102
|
-
<!-- Dynamic list of delegates gets injected here -->
|
|
103
|
-
</tbody>
|
|
104
|
-
</table>
|
|
105
|
-
</div>
|
|
106
|
-
</div>
|
|
107
|
-
|
|
108
|
-
<!-- Replicas / Sync Peers Repository Manager -->
|
|
109
|
-
<!-- <div class="card">
|
|
110
|
-
<h3>Replication & Spaces</h3>
|
|
111
|
-
<p class="description">Manage remote space providers where this identity's data is replicated.</p>
|
|
112
|
-
<div id="replicas-list" class="replicas-list"> -->
|
|
113
|
-
<!-- Configured space URLs listed here -->
|
|
114
|
-
<!-- </div>
|
|
115
|
-
<div class="input-row">
|
|
116
|
-
<input type="url" id="input-replica-url" placeholder="https://space.example.com/api" class="text-input" disabled>
|
|
117
|
-
<button id="btn-add-replica" class="action-btn secondary" disabled>Add Space</button>
|
|
118
|
-
</div>
|
|
119
|
-
</div> -->
|
|
120
|
-
|
|
121
|
-
<!-- Raw Keystone Timeline Explorer -->
|
|
122
|
-
<div class="card accordion">
|
|
123
|
-
<div id="raw-accordion-header" class="accordion-header">
|
|
124
|
-
<span>Raw Keystone Timeline (JSON)</span>
|
|
125
|
-
<span class="chevron">▼</span>
|
|
126
|
-
</div>
|
|
127
|
-
<div id="raw-accordion-content" class="accordion-content">
|
|
128
|
-
<pre id="raw-keystone-json" class="json-code"></pre>
|
|
129
|
-
</div>
|
|
130
|
-
</div>
|
|
131
|
-
</div>
|
|
132
18
|
</div>
|
|
133
19
|
</div>
|