@idp.global/catalog 1.1.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 (88) hide show
  1. package/assets/v2/draw-41d55381-b162-433d-956c-fe4cd400212e.png +0 -0
  2. package/assets/v2/draw-bd386bf3-ce94-4452-88da-05ae372fae35.png +0 -0
  3. package/assets/v2/draw-be69231a-f491-4bd3-9a47-71561ce14c15.png +0 -0
  4. package/assets/v2/draw-d58859a8-0615-44ec-80fe-626033c888f7.png +0 -0
  5. package/assets/v2/draw-db67b502-d987-4226-a5f8-d57e3f8d7ba9.png +0 -0
  6. package/assets/v2/draw-e6ac3ef5-5a93-464d-9d3f-5ae7b7278bdd.png +0 -0
  7. package/changelog.md +26 -0
  8. package/dist_bundle/bundle.js +6385 -0
  9. package/dist_ts_web/00_commitinfo_data.d.ts +8 -0
  10. package/dist_ts_web/00_commitinfo_data.js +9 -0
  11. package/dist_ts_web/elements/idp-admin-shell.d.ts +292 -0
  12. package/dist_ts_web/elements/idp-admin-shell.js +2615 -0
  13. package/dist_ts_web/elements/idp-approval-card.d.ts +25 -0
  14. package/dist_ts_web/elements/idp-approval-card.js +274 -0
  15. package/dist_ts_web/elements/idp-badge.d.ts +14 -0
  16. package/dist_ts_web/elements/idp-badge.js +135 -0
  17. package/dist_ts_web/elements/idp-button.d.ts +21 -0
  18. package/dist_ts_web/elements/idp-button.js +234 -0
  19. package/dist_ts_web/elements/idp-card.d.ts +15 -0
  20. package/dist_ts_web/elements/idp-card.js +139 -0
  21. package/dist_ts_web/elements/idp-checkbox.d.ts +23 -0
  22. package/dist_ts_web/elements/idp-checkbox.js +233 -0
  23. package/dist_ts_web/elements/idp-dashboard-window.d.ts +23 -0
  24. package/dist_ts_web/elements/idp-dashboard-window.js +587 -0
  25. package/dist_ts_web/elements/idp-data-table.d.ts +45 -0
  26. package/dist_ts_web/elements/idp-data-table.js +472 -0
  27. package/dist_ts_web/elements/idp-form-submit.d.ts +20 -0
  28. package/dist_ts_web/elements/idp-form-submit.js +136 -0
  29. package/dist_ts_web/elements/idp-form.d.ts +31 -0
  30. package/dist_ts_web/elements/idp-form.js +197 -0
  31. package/dist_ts_web/elements/idp-icon.d.ts +18 -0
  32. package/dist_ts_web/elements/idp-icon.js +204 -0
  33. package/dist_ts_web/elements/idp-inbox-preview.d.ts +18 -0
  34. package/dist_ts_web/elements/idp-inbox-preview.js +245 -0
  35. package/dist_ts_web/elements/idp-input.d.ts +26 -0
  36. package/dist_ts_web/elements/idp-input.js +249 -0
  37. package/dist_ts_web/elements/idp-landing-hero.d.ts +15 -0
  38. package/dist_ts_web/elements/idp-landing-hero.js +209 -0
  39. package/dist_ts_web/elements/idp-landing-page.d.ts +21 -0
  40. package/dist_ts_web/elements/idp-landing-page.js +694 -0
  41. package/dist_ts_web/elements/idp-mobile-frame.d.ts +14 -0
  42. package/dist_ts_web/elements/idp-mobile-frame.js +195 -0
  43. package/dist_ts_web/elements/idp-mobile-showcase.d.ts +16 -0
  44. package/dist_ts_web/elements/idp-mobile-showcase.js +339 -0
  45. package/dist_ts_web/elements/idp-select.d.ts +28 -0
  46. package/dist_ts_web/elements/idp-select.js +179 -0
  47. package/dist_ts_web/elements/idp-toggle.d.ts +15 -0
  48. package/dist_ts_web/elements/idp-toggle.js +134 -0
  49. package/dist_ts_web/elements/index.d.ts +20 -0
  50. package/dist_ts_web/elements/index.js +21 -0
  51. package/dist_ts_web/elements/tokens.d.ts +21 -0
  52. package/dist_ts_web/elements/tokens.js +190 -0
  53. package/dist_ts_web/index.d.ts +1 -0
  54. package/dist_ts_web/index.js +2 -0
  55. package/dist_ts_web/pages/index.d.ts +5 -0
  56. package/dist_ts_web/pages/index.js +23 -0
  57. package/dist_watch/bundle.js +120699 -0
  58. package/dist_watch/bundle.js.map +7 -0
  59. package/dist_watch/index.html +29 -0
  60. package/html/index.html +29 -0
  61. package/html/index.ts +39 -0
  62. package/license +21 -0
  63. package/package.json +64 -0
  64. package/readme.md +103 -0
  65. package/ts_web/00_commitinfo_data.ts +8 -0
  66. package/ts_web/elements/idp-admin-shell.ts +2664 -0
  67. package/ts_web/elements/idp-approval-card.ts +182 -0
  68. package/ts_web/elements/idp-badge.ts +84 -0
  69. package/ts_web/elements/idp-button.ts +166 -0
  70. package/ts_web/elements/idp-card.ts +76 -0
  71. package/ts_web/elements/idp-checkbox.ts +143 -0
  72. package/ts_web/elements/idp-dashboard-window.ts +564 -0
  73. package/ts_web/elements/idp-data-table.ts +407 -0
  74. package/ts_web/elements/idp-form-submit.ts +65 -0
  75. package/ts_web/elements/idp-form.ts +159 -0
  76. package/ts_web/elements/idp-icon.ts +263 -0
  77. package/ts_web/elements/idp-inbox-preview.ts +192 -0
  78. package/ts_web/elements/idp-input.ts +151 -0
  79. package/ts_web/elements/idp-landing-hero.ts +165 -0
  80. package/ts_web/elements/idp-landing-page.ts +655 -0
  81. package/ts_web/elements/idp-mobile-frame.ts +137 -0
  82. package/ts_web/elements/idp-mobile-showcase.ts +295 -0
  83. package/ts_web/elements/idp-select.ts +119 -0
  84. package/ts_web/elements/idp-toggle.ts +77 -0
  85. package/ts_web/elements/index.ts +20 -0
  86. package/ts_web/elements/tokens.ts +193 -0
  87. package/ts_web/index.ts +1 -0
  88. package/ts_web/pages/index.ts +26 -0
@@ -0,0 +1,23 @@
1
+ import { DeesElement, type TemplateResult } from '@design.estate/dees-element';
2
+ import './idp-badge.js';
3
+ import './idp-button.js';
4
+ import './idp-icon.js';
5
+ import './idp-data-table.js';
6
+ declare global {
7
+ interface HTMLElementTagNameMap {
8
+ 'idp-dashboard-window': IdpDashboardWindow;
9
+ }
10
+ }
11
+ export declare class IdpDashboardWindow extends DeesElement {
12
+ static demo: () => TemplateResult<1>;
13
+ static demoGroups: string[];
14
+ static styles: import("@design.estate/dees-element").CSSResult[];
15
+ private stats;
16
+ private approvals;
17
+ private feed;
18
+ private workspaceNav;
19
+ private chainNav;
20
+ private renderSparkline;
21
+ private renderStat;
22
+ render(): TemplateResult;
23
+ }
@@ -0,0 +1,587 @@
1
+ var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
2
+ function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
3
+ var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
4
+ var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
5
+ var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
6
+ var _, done = false;
7
+ for (var i = decorators.length - 1; i >= 0; i--) {
8
+ var context = {};
9
+ for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
10
+ for (var p in contextIn.access) context.access[p] = contextIn.access[p];
11
+ context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
12
+ var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
13
+ if (kind === "accessor") {
14
+ if (result === void 0) continue;
15
+ if (result === null || typeof result !== "object") throw new TypeError("Object expected");
16
+ if (_ = accept(result.get)) descriptor.get = _;
17
+ if (_ = accept(result.set)) descriptor.set = _;
18
+ if (_ = accept(result.init)) initializers.unshift(_);
19
+ }
20
+ else if (_ = accept(result)) {
21
+ if (kind === "field") initializers.unshift(_);
22
+ else descriptor[key] = _;
23
+ }
24
+ }
25
+ if (target) Object.defineProperty(target, contextIn.name, descriptor);
26
+ done = true;
27
+ };
28
+ var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
29
+ var useValue = arguments.length > 2;
30
+ for (var i = 0; i < initializers.length; i++) {
31
+ value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
32
+ }
33
+ return useValue ? value : void 0;
34
+ };
35
+ import { DeesElement, html, customElement, css } from '@design.estate/dees-element';
36
+ import { idpElementStyles } from './tokens.js';
37
+ import './idp-badge.js';
38
+ import './idp-button.js';
39
+ import './idp-icon.js';
40
+ import './idp-data-table.js';
41
+ let IdpDashboardWindow = (() => {
42
+ let _classDecorators = [customElement('idp-dashboard-window')];
43
+ let _classDescriptor;
44
+ let _classExtraInitializers = [];
45
+ let _classThis;
46
+ let _classSuper = DeesElement;
47
+ var IdpDashboardWindow = class extends _classSuper {
48
+ static { _classThis = this; }
49
+ static {
50
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
51
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
52
+ IdpDashboardWindow = _classThis = _classDescriptor.value;
53
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
54
+ }
55
+ static demo = () => html `<idp-dashboard-window></idp-dashboard-window>`;
56
+ static demoGroups = ['idp.global v3 composed surfaces'];
57
+ static styles = [
58
+ ...idpElementStyles,
59
+ css `
60
+ :host {
61
+ display: block;
62
+ }
63
+ .dash {
64
+ position: relative;
65
+ overflow: hidden;
66
+ border: 1px solid var(--idp-border);
67
+ border-radius: 14px;
68
+ background: var(--idp-bg-2);
69
+ color: var(--idp-fg);
70
+ box-shadow: 0 1px 0 rgba(255,255,255,0.04) inset, 0 40px 80px -20px rgba(0,0,0,0.70), 0 8px 24px rgba(0,0,0,0.35);
71
+ }
72
+ .chrome, .appbar, .bottom {
73
+ display: flex;
74
+ align-items: center;
75
+ gap: 8px;
76
+ border-bottom: 1px solid var(--idp-border-soft);
77
+ background: rgba(255,255,255,0.02);
78
+ color: var(--idp-muted-fg);
79
+ font-family: var(--idp-mono);
80
+ font-size: 11px;
81
+ }
82
+ .chrome {
83
+ padding: 11px 14px;
84
+ }
85
+ .tdot {
86
+ width: 11px;
87
+ height: 11px;
88
+ border-radius: 50%;
89
+ }
90
+ .red { background: #ff5f57; }
91
+ .yellow { background: #ffbd2e; }
92
+ .green { background: #28c840; }
93
+ .url, .org, .search {
94
+ display: inline-flex;
95
+ align-items: center;
96
+ gap: 8px;
97
+ border: 1px solid var(--idp-border-soft);
98
+ border-radius: 5px;
99
+ background: var(--idp-bg);
100
+ color: var(--idp-fg-3, var(--idp-muted-fg));
101
+ }
102
+ .url {
103
+ margin-left: 12px;
104
+ padding: 4px 10px;
105
+ }
106
+ .status {
107
+ margin-left: auto;
108
+ display: inline-flex;
109
+ align-items: center;
110
+ gap: 6px;
111
+ }
112
+ .live-dot {
113
+ width: 6px;
114
+ height: 6px;
115
+ border-radius: 50%;
116
+ background: var(--idp-ok);
117
+ box-shadow: 0 0 8px var(--idp-ok);
118
+ animation: pulse 1.6s ease-in-out infinite;
119
+ }
120
+ @keyframes pulse {
121
+ 0%, 100% { opacity: 1; }
122
+ 50% { opacity: 0.35; }
123
+ }
124
+ .appbar {
125
+ justify-content: space-between;
126
+ height: 44px;
127
+ padding: 0 14px;
128
+ background: var(--idp-bg);
129
+ }
130
+ .appbar-left, .appbar-right {
131
+ display: flex;
132
+ align-items: center;
133
+ gap: 12px;
134
+ }
135
+ .logo {
136
+ display: inline-flex;
137
+ align-items: center;
138
+ gap: 7px;
139
+ color: var(--idp-fg);
140
+ font-family: var(--idp-display);
141
+ font-size: 13px;
142
+ font-weight: 700;
143
+ letter-spacing: -0.015em;
144
+ }
145
+ .logo-dot {
146
+ width: 6px;
147
+ height: 6px;
148
+ border-radius: 999px;
149
+ background: var(--idp-accent);
150
+ box-shadow: 0 0 12px var(--idp-accent);
151
+ }
152
+ .divider {
153
+ width: 1px;
154
+ height: 18px;
155
+ background: var(--idp-border);
156
+ }
157
+ .org {
158
+ padding: 4px 10px 4px 4px;
159
+ background: var(--idp-bg-2);
160
+ font-size: 12px;
161
+ }
162
+ .avatar-sm {
163
+ width: 20px;
164
+ height: 20px;
165
+ display: inline-grid;
166
+ place-items: center;
167
+ border-radius: 4px;
168
+ background: var(--idp-accent);
169
+ color: var(--idp-accent-fg);
170
+ font-family: var(--idp-mono);
171
+ font-size: 10px;
172
+ font-weight: 700;
173
+ }
174
+ .search {
175
+ min-width: 240px;
176
+ height: 28px;
177
+ padding: 0 10px;
178
+ background: var(--idp-bg-2);
179
+ }
180
+ .kbd {
181
+ margin-left: auto;
182
+ padding: 0 5px;
183
+ border: 1px solid var(--idp-border);
184
+ border-radius: 3px;
185
+ background: var(--idp-bg);
186
+ font-size: 10px;
187
+ }
188
+ .user-avatar {
189
+ width: 28px;
190
+ height: 28px;
191
+ display: inline-grid;
192
+ place-items: center;
193
+ border: 1px solid rgba(59,130,246,0.4);
194
+ border-radius: 50%;
195
+ background: rgba(0,80,185,0.25);
196
+ color: var(--idp-accent-hover);
197
+ font-family: var(--idp-mono);
198
+ font-size: 10px;
199
+ font-weight: 700;
200
+ }
201
+ .shell {
202
+ display: grid;
203
+ grid-template-columns: 200px 1fr;
204
+ min-height: 580px;
205
+ }
206
+ aside {
207
+ display: flex;
208
+ flex-direction: column;
209
+ gap: 1px;
210
+ padding: 12px 8px;
211
+ border-right: 1px solid var(--idp-border-soft);
212
+ background: var(--idp-bg);
213
+ }
214
+ .side-label {
215
+ padding: 12px 10px 6px;
216
+ color: color-mix(in srgb, var(--idp-muted-fg), transparent 35%);
217
+ font-family: var(--idp-mono);
218
+ font-size: 10px;
219
+ font-weight: 600;
220
+ letter-spacing: 0.1em;
221
+ text-transform: uppercase;
222
+ }
223
+ .side-nav {
224
+ display: flex;
225
+ align-items: center;
226
+ gap: 10px;
227
+ padding: 7px 10px;
228
+ border-radius: 5px;
229
+ color: var(--idp-muted-fg);
230
+ font-size: 12.5px;
231
+ }
232
+ .side-nav.active {
233
+ background: rgba(0,80,185,0.18);
234
+ color: var(--idp-fg);
235
+ }
236
+ .nav-icon {
237
+ width: 18px;
238
+ display: inline-flex;
239
+ justify-content: center;
240
+ color: currentColor;
241
+ }
242
+ .side-nav.active .nav-icon {
243
+ color: var(--idp-accent-hover);
244
+ }
245
+ main {
246
+ min-width: 0;
247
+ padding: 22px 24px;
248
+ background: var(--idp-bg);
249
+ }
250
+ .head {
251
+ display: flex;
252
+ align-items: flex-end;
253
+ justify-content: space-between;
254
+ gap: 16px;
255
+ margin-bottom: 18px;
256
+ }
257
+ h3 {
258
+ margin: 0;
259
+ font-family: var(--idp-display);
260
+ font-size: 22px;
261
+ font-weight: 650;
262
+ letter-spacing: -0.02em;
263
+ }
264
+ .sub {
265
+ margin-top: 2px;
266
+ color: var(--idp-muted-fg);
267
+ font-size: 12.5px;
268
+ }
269
+ .actions {
270
+ display: flex;
271
+ gap: 8px;
272
+ }
273
+ .stats {
274
+ display: grid;
275
+ grid-template-columns: repeat(4, 1fr);
276
+ gap: 12px;
277
+ margin-bottom: 16px;
278
+ }
279
+ .stat, .card {
280
+ border: 1px solid var(--idp-border-soft);
281
+ background: var(--idp-bg-2);
282
+ }
283
+ .stat {
284
+ position: relative;
285
+ min-height: 132px;
286
+ display: flex;
287
+ flex-direction: column;
288
+ gap: 4px;
289
+ overflow: hidden;
290
+ padding: 18px 20px 14px;
291
+ border-radius: 10px;
292
+ }
293
+ .stat::before {
294
+ content: '';
295
+ position: absolute;
296
+ inset: 0 0 auto;
297
+ height: 2px;
298
+ background: var(--stat-accent);
299
+ }
300
+ .stat-label {
301
+ color: var(--idp-muted-fg);
302
+ font-size: 11.5px;
303
+ font-weight: 500;
304
+ letter-spacing: 0.02em;
305
+ }
306
+ .stat-val {
307
+ color: var(--idp-fg);
308
+ font-family: var(--idp-display);
309
+ font-size: 30px;
310
+ font-weight: 700;
311
+ font-variant-numeric: tabular-nums;
312
+ letter-spacing: -0.025em;
313
+ line-height: 1.1;
314
+ }
315
+ .stat-val span {
316
+ margin-left: 2px;
317
+ color: var(--idp-muted-fg);
318
+ font-size: 14px;
319
+ font-weight: 500;
320
+ }
321
+ .stat-sub {
322
+ color: var(--idp-fg-3);
323
+ font-family: var(--idp-mono);
324
+ font-size: 11px;
325
+ }
326
+ .stat-foot {
327
+ display: flex;
328
+ align-items: flex-end;
329
+ justify-content: space-between;
330
+ gap: 8px;
331
+ margin-top: auto;
332
+ }
333
+ .delta {
334
+ display: inline-flex;
335
+ align-items: center;
336
+ gap: 4px;
337
+ color: var(--idp-ok);
338
+ font-family: var(--idp-mono);
339
+ font-size: 11px;
340
+ font-weight: 600;
341
+ }
342
+ .sparkline {
343
+ width: 84px;
344
+ opacity: 0.85;
345
+ }
346
+ .sparkline svg {
347
+ width: 100%;
348
+ height: 22px;
349
+ display: block;
350
+ }
351
+ .grid {
352
+ display: grid;
353
+ grid-template-columns: 1.6fr 1fr;
354
+ gap: 16px;
355
+ }
356
+ .card {
357
+ overflow: hidden;
358
+ }
359
+ .card-head {
360
+ display: flex;
361
+ align-items: center;
362
+ gap: 10px;
363
+ padding: 12px 16px;
364
+ border-bottom: 1px solid var(--idp-border-soft);
365
+ }
366
+ .card-title {
367
+ font-size: 13px;
368
+ font-weight: 600;
369
+ }
370
+ .feed-item {
371
+ display: grid;
372
+ grid-template-columns: 14px 1fr auto;
373
+ gap: 12px;
374
+ align-items: center;
375
+ padding: 12px 16px;
376
+ border-bottom: 1px solid var(--idp-border-soft);
377
+ }
378
+ .feed-dot {
379
+ width: 8px;
380
+ height: 8px;
381
+ border-radius: 50%;
382
+ background: var(--idp-accent-hover);
383
+ }
384
+ .feed-dot.ok {
385
+ background: var(--idp-ok);
386
+ }
387
+ .feed-text {
388
+ color: var(--idp-fg-3, var(--idp-muted-fg));
389
+ font-size: 12.5px;
390
+ }
391
+ .feed-text strong {
392
+ color: var(--idp-fg);
393
+ font-weight: 500;
394
+ }
395
+ .feed-meta {
396
+ color: color-mix(in srgb, var(--idp-muted-fg), transparent 35%);
397
+ font-family: var(--idp-mono);
398
+ font-size: 10.5px;
399
+ }
400
+ .bottom {
401
+ height: 28px;
402
+ padding: 0 14px;
403
+ border-top: 1px solid var(--idp-border-soft);
404
+ border-bottom: 0;
405
+ background: var(--idp-bg);
406
+ }
407
+ .bottom .divider {
408
+ height: 12px;
409
+ }
410
+ .grow {
411
+ flex: 1;
412
+ }
413
+ @media (max-width: 900px) {
414
+ .shell {
415
+ grid-template-columns: 1fr;
416
+ }
417
+ aside, .search {
418
+ display: none;
419
+ }
420
+ .stats {
421
+ grid-template-columns: repeat(2, 1fr);
422
+ }
423
+ .grid {
424
+ grid-template-columns: 1fr;
425
+ }
426
+ }
427
+ @media (max-width: 560px) {
428
+ .stats {
429
+ grid-template-columns: 1fr;
430
+ }
431
+ .head {
432
+ align-items: flex-start;
433
+ flex-direction: column;
434
+ }
435
+ }
436
+ `,
437
+ ];
438
+ stats = [
439
+ { label: 'Identities', value: '2,847', delta: '↑ 12% wk', sub: '142 added this week', accent: 'var(--idp-chart-1)', sparkColor: 'var(--idp-spark-up)', spark: [10, 12, 11, 14, 13, 16, 15, 18, 19] },
440
+ { label: 'Active devices', value: '9,140', delta: '↑ 4.2%', sub: '3.2 avg / identity', accent: 'var(--idp-chart-2)', sparkColor: 'var(--idp-spark-up)', spark: [12, 13, 11, 14, 13, 15, 14, 16, 17] },
441
+ { label: 'Avg approval', value: '0.8', unit: 's', delta: '↓ 60ms faster', sub: 'p95 - all regions', accent: 'var(--idp-chart-5)', sparkColor: 'var(--idp-spark-info)', spark: [16, 14, 17, 12, 15, 13, 11, 9, 7] },
442
+ { label: 'Cardano anchors', value: '12,408', delta: 'synced 4s ago', sub: 'block #9 841 222', accent: 'var(--idp-info)', sparkColor: 'var(--idp-spark-up)', spark: [8, 9, 11, 10, 13, 12, 15, 16, 18], live: true },
443
+ ];
444
+ approvals = [
445
+ ['Jane Doe', 'jane@lossless.com', 'OAuth - GitHub', 'iPhone 15 Pro', 'approved', 'ok'],
446
+ ['Alex Brown', 'alex@lossless.com', 'CLI login', 'MacBook Pro', 'pending', 'warn'],
447
+ ['Sam Chen', 'sam@lossless.com', 'NFC tap - door 4F', 'iPhone 14', 'approved', 'ok'],
448
+ ['Unknown device', 'Lagos - NG', 'Web login', 'Chrome 132', 'denied', 'error'],
449
+ ['Maria K.', 'maria@lossless.com', 'Key rotation', 'Apple Watch S9', 'on-chain', 'accent'],
450
+ ];
451
+ feed = [
452
+ ['Identity created', 'did:idp:0x9b12...f034', 'block #9 841 222', ''],
453
+ ['Anchor confirmed', '12 blocks deep', '2m', 'ok'],
454
+ ['Key rotation', 'did:idp:0x4a3f...c819', 'block #9 841 221', ''],
455
+ ['OAuth scope updated', 'github repo:read', '5m', 'ok'],
456
+ ['Device registered', 'MacBook Pro pending', '7m', ''],
457
+ ];
458
+ workspaceNav = [
459
+ ['Overview', 'grid'],
460
+ ['Identities', 'user'],
461
+ ['Approvals', 'bell'],
462
+ ['OAuth clients', 'key'],
463
+ ['Devices', 'monitor'],
464
+ ['Audit log', 'clock'],
465
+ ];
466
+ chainNav = [
467
+ ['Cardano sync', 'wallet'],
468
+ ['Anchors', 'shield'],
469
+ ];
470
+ renderSparkline(data, color) {
471
+ const max = Math.max(...data);
472
+ const min = Math.min(...data);
473
+ const range = max - min || 1;
474
+ const width = 100;
475
+ const height = 22;
476
+ const points = data.map((valueArg, indexArg) => {
477
+ const x = (indexArg / (data.length - 1)) * width;
478
+ const y = height - ((valueArg - min) / range) * (height - 4) - 2;
479
+ return `${x},${y}`;
480
+ }).join(' ');
481
+ const area = `0,${height} ${points} ${width},${height}`;
482
+ return html `<svg viewBox="0 0 ${width} ${height}" preserveAspectRatio="none"><polygon points=${area} fill=${color} opacity="0.12"></polygon><polyline points=${points} fill="none" stroke=${color} stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></polyline></svg>`;
483
+ }
484
+ renderStat(statArg) {
485
+ return html `
486
+ <div class="stat" style="--stat-accent:${statArg.accent}">
487
+ <div class="stat-label">${statArg.label}</div>
488
+ <div class="stat-val">${statArg.value}${statArg.unit ? html `<span>${statArg.unit}</span>` : html ``}</div>
489
+ <div class="stat-sub">${statArg.sub}</div>
490
+ <div class="stat-foot"><span class="delta">${statArg.live ? html `<span class="live-dot"></span>` : html ``}${statArg.delta}</span><div class="sparkline">${this.renderSparkline(statArg.spark, statArg.sparkColor)}</div></div>
491
+ </div>
492
+ `;
493
+ }
494
+ render() {
495
+ const approvalRows = this.approvals.map((rowArg) => ({
496
+ cells: [
497
+ html `
498
+ <div class="identity-cell">
499
+ <span class="identity-avatar">${rowArg[0].slice(0, 2).toUpperCase()}</span>
500
+ <div>
501
+ <div class="identity-primary">${rowArg[0]}</div>
502
+ <div class="identity-secondary">${rowArg[1]}</div>
503
+ </div>
504
+ </div>
505
+ `,
506
+ rowArg[2],
507
+ rowArg[3],
508
+ html `<idp-badge variant=${rowArg[5]}>${rowArg[4]}</idp-badge>`,
509
+ ],
510
+ }));
511
+ return html `
512
+ <div class="dash">
513
+ <div class="chrome">
514
+ <span class="tdot red"></span><span class="tdot yellow"></span><span class="tdot green"></span>
515
+ <span class="url"><idp-icon name="lock" size="11" style="color: var(--idp-ok)"></idp-icon> console.idp.global / dashboard</span>
516
+ <span class="status"><span class="live-dot"></span>eu-west-1 - 38ms</span>
517
+ </div>
518
+ <div class="appbar">
519
+ <div class="appbar-left">
520
+ <span class="logo">idp<span class="logo-dot"></span>global</span>
521
+ <span class="divider"></span>
522
+ <span class="org"><span class="avatar-sm">L</span>Lossless GmbH</span>
523
+ </div>
524
+ <div class="appbar-right">
525
+ <span class="search">Search identities, devices <span class="kbd">Cmd+K</span></span>
526
+ <span class="user-avatar">AM</span>
527
+ </div>
528
+ </div>
529
+ <div class="shell">
530
+ <aside>
531
+ <div class="side-label">Workspace</div>
532
+ ${this.workspaceNav.map((itemArg, indexArg) => html `
533
+ <span class="side-nav ${indexArg === 0 ? 'active' : ''}"><span class="nav-icon"><idp-icon name=${itemArg[1]} size="13"></idp-icon></span>${itemArg[0]}</span>
534
+ `)}
535
+ <div class="side-label">On-chain</div>
536
+ ${this.chainNav.map((itemArg) => html `<span class="side-nav"><span class="nav-icon"><idp-icon name=${itemArg[1]} size="13"></idp-icon></span>${itemArg[0]}</span>`)}
537
+ </aside>
538
+ <main>
539
+ <div class="head">
540
+ <div>
541
+ <h3>Overview</h3>
542
+ <div class="sub">Identity activity across <span style="color: var(--idp-accent-hover); font-family: var(--idp-mono)">@lossless</span> - last 7 days</div>
543
+ </div>
544
+ <div class="actions"><idp-button variant="ghost" size="sm">Export</idp-button><idp-button variant="accent" size="sm">New identity</idp-button></div>
545
+ </div>
546
+ <div class="stats">
547
+ ${this.stats.map((statArg) => this.renderStat(statArg))}
548
+ </div>
549
+ <div class="grid">
550
+ <idp-data-table
551
+ title="Recent approvals"
552
+ badge="142 total"
553
+ selected-tab="all"
554
+ .tabs=${[
555
+ { id: 'all', label: 'All' },
556
+ { id: 'pending', label: 'Pending' },
557
+ { id: 'denied', label: 'Denied' },
558
+ ]}
559
+ .columns=${[
560
+ { label: 'User' },
561
+ { label: 'Action' },
562
+ { label: 'Device', mono: true, hideBelow: 'mobile' },
563
+ { label: 'Status' },
564
+ ]}
565
+ .rows=${approvalRows}
566
+ ></idp-data-table>
567
+ <section class="card">
568
+ <div class="card-head"><span class="card-title">Cardano feed</span><idp-badge variant="accent"><span class="live-dot"></span>live</idp-badge></div>
569
+ ${this.feed.map((itemArg) => html `
570
+ <div class="feed-item"><span class="feed-dot ${itemArg[3]}"></span><div class="feed-text"><strong>${itemArg[0]}</strong> - ${itemArg[1]}</div><span class="feed-meta">${itemArg[2]}</span></div>
571
+ `)}
572
+ </section>
573
+ </div>
574
+ </main>
575
+ </div>
576
+ <div class="bottom"><span><span class="live-dot"></span>API - 38ms</span><span class="divider"></span><span>v3.81.0</span><span class="grow"></span><span>block #9 841 222 - confirmed</span></div>
577
+ </div>
578
+ `;
579
+ }
580
+ static {
581
+ __runInitializers(_classThis, _classExtraInitializers);
582
+ }
583
+ };
584
+ return IdpDashboardWindow = _classThis;
585
+ })();
586
+ export { IdpDashboardWindow };
587
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRwLWRhc2hib2FyZC13aW5kb3cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90c193ZWIvZWxlbWVudHMvaWRwLWRhc2hib2FyZC13aW5kb3cudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQXVCLE1BQU0sNkJBQTZCLENBQUM7QUFDekcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQy9DLE9BQU8sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLGVBQWUsQ0FBQztBQUN2QixPQUFPLHFCQUFxQixDQUFDO0lBcUJoQixrQkFBa0I7NEJBRDlCLGFBQWEsQ0FBQyxzQkFBc0IsQ0FBQzs7OztzQkFDRSxXQUFXO2tDQUFuQixTQUFRLFdBQVc7Ozs7WUFBbkQsNktBeWhCQzs7OztRQXhoQlEsTUFBTSxDQUFDLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUEsK0NBQStDLENBQUM7UUFDeEUsTUFBTSxDQUFDLFVBQVUsR0FBRyxDQUFDLGlDQUFpQyxDQUFDLENBQUM7UUFFeEQsTUFBTSxDQUFDLE1BQU0sR0FBRztZQUNyQixHQUFHLGdCQUFnQjtZQUNuQixHQUFHLENBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
@@ -0,0 +1,45 @@
1
+ import { DeesElement, type TemplateResult } from '@design.estate/dees-element';
2
+ import './idp-badge.js';
3
+ export type TIdpDataTableCell = TemplateResult | string | number | null | undefined;
4
+ export interface IIdpDataTableColumn {
5
+ label: string;
6
+ width?: string;
7
+ align?: 'left' | 'center' | 'right';
8
+ mono?: boolean;
9
+ hideBelow?: 'mobile' | 'tablet';
10
+ }
11
+ export interface IIdpDataTableRow {
12
+ id?: string;
13
+ cells: TIdpDataTableCell[];
14
+ }
15
+ export interface IIdpDataTableTab {
16
+ id: string;
17
+ label: string;
18
+ count?: string | number;
19
+ }
20
+ export interface IIdpDataTableTabSelectEventDetail {
21
+ tabId: string;
22
+ }
23
+ declare global {
24
+ interface HTMLElementTagNameMap {
25
+ 'idp-data-table': IdpDataTable;
26
+ }
27
+ }
28
+ export declare class IdpDataTable extends DeesElement {
29
+ static demo: () => TemplateResult<1>;
30
+ static demoGroups: string[];
31
+ accessor title: string;
32
+ accessor subtitle: string;
33
+ accessor badge: string;
34
+ accessor selectedTab: string;
35
+ accessor emptyTitle: string;
36
+ accessor emptyDescription: string;
37
+ accessor columns: IIdpDataTableColumn[];
38
+ accessor rows: IIdpDataTableRow[];
39
+ accessor tabs: IIdpDataTableTab[];
40
+ static styles: import("@design.estate/dees-element").CSSResult[];
41
+ private selectTab;
42
+ private columnClass;
43
+ private renderCell;
44
+ render(): TemplateResult;
45
+ }