@serve.zone/catalog 1.0.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 (122) hide show
  1. package/dist_ts_web/00_commitinfo_data.d.ts +8 -0
  2. package/dist_ts_web/00_commitinfo_data.js +9 -0
  3. package/dist_ts_web/elements/index.d.ts +33 -0
  4. package/dist_ts_web/elements/index.js +45 -0
  5. package/dist_ts_web/elements/sz-certificates-card.d.ts +14 -0
  6. package/dist_ts_web/elements/sz-certificates-card.js +210 -0
  7. package/dist_ts_web/elements/sz-dashboard-view.d.ts +33 -0
  8. package/dist_ts_web/elements/sz-dashboard-view.js +242 -0
  9. package/dist_ts_web/elements/sz-demo-view-dashboard.d.ts +18 -0
  10. package/dist_ts_web/elements/sz-demo-view-dashboard.js +184 -0
  11. package/dist_ts_web/elements/sz-demo-view-network.d.ts +32 -0
  12. package/dist_ts_web/elements/sz-demo-view-network.js +384 -0
  13. package/dist_ts_web/elements/sz-demo-view-registries.d.ts +22 -0
  14. package/dist_ts_web/elements/sz-demo-view-registries.js +240 -0
  15. package/dist_ts_web/elements/sz-demo-view-services.d.ts +32 -0
  16. package/dist_ts_web/elements/sz-demo-view-services.js +468 -0
  17. package/dist_ts_web/elements/sz-demo-view-settings.d.ts +19 -0
  18. package/dist_ts_web/elements/sz-demo-view-settings.js +151 -0
  19. package/dist_ts_web/elements/sz-demo-view-tokens.d.ts +20 -0
  20. package/dist_ts_web/elements/sz-demo-view-tokens.js +141 -0
  21. package/dist_ts_web/elements/sz-dns-ssl-card.d.ts +13 -0
  22. package/dist_ts_web/elements/sz-dns-ssl-card.js +180 -0
  23. package/dist_ts_web/elements/sz-domain-detail-view.d.ts +48 -0
  24. package/dist_ts_web/elements/sz-domain-detail-view.js +789 -0
  25. package/dist_ts_web/elements/sz-login-view.d.ts +18 -0
  26. package/dist_ts_web/elements/sz-login-view.js +384 -0
  27. package/dist_ts_web/elements/sz-network-dns-view.d.ts +20 -0
  28. package/dist_ts_web/elements/sz-network-dns-view.js +244 -0
  29. package/dist_ts_web/elements/sz-network-domains-view.d.ts +28 -0
  30. package/dist_ts_web/elements/sz-network-domains-view.js +312 -0
  31. package/dist_ts_web/elements/sz-network-proxy-view.d.ts +39 -0
  32. package/dist_ts_web/elements/sz-network-proxy-view.js +510 -0
  33. package/dist_ts_web/elements/sz-platform-service-detail-view.d.ts +49 -0
  34. package/dist_ts_web/elements/sz-platform-service-detail-view.js +733 -0
  35. package/dist_ts_web/elements/sz-platform-services-card.d.ts +19 -0
  36. package/dist_ts_web/elements/sz-platform-services-card.js +196 -0
  37. package/dist_ts_web/elements/sz-quick-actions-card.d.ts +19 -0
  38. package/dist_ts_web/elements/sz-quick-actions-card.js +194 -0
  39. package/dist_ts_web/elements/sz-registry-external-view.d.ts +22 -0
  40. package/dist_ts_web/elements/sz-registry-external-view.js +313 -0
  41. package/dist_ts_web/elements/sz-registry-onebox-view.d.ts +14 -0
  42. package/dist_ts_web/elements/sz-registry-onebox-view.js +307 -0
  43. package/dist_ts_web/elements/sz-resource-usage-card.d.ts +25 -0
  44. package/dist_ts_web/elements/sz-resource-usage-card.js +323 -0
  45. package/dist_ts_web/elements/sz-reverse-proxy-card.d.ts +16 -0
  46. package/dist_ts_web/elements/sz-reverse-proxy-card.js +216 -0
  47. package/dist_ts_web/elements/sz-service-create-view.d.ts +67 -0
  48. package/dist_ts_web/elements/sz-service-create-view.js +828 -0
  49. package/dist_ts_web/elements/sz-service-detail-view.d.ts +57 -0
  50. package/dist_ts_web/elements/sz-service-detail-view.js +728 -0
  51. package/dist_ts_web/elements/sz-services-backups-view.d.ts +37 -0
  52. package/dist_ts_web/elements/sz-services-backups-view.js +413 -0
  53. package/dist_ts_web/elements/sz-services-list-view.d.ts +20 -0
  54. package/dist_ts_web/elements/sz-services-list-view.js +272 -0
  55. package/dist_ts_web/elements/sz-settings-view.d.ts +30 -0
  56. package/dist_ts_web/elements/sz-settings-view.js +448 -0
  57. package/dist_ts_web/elements/sz-stat-card.d.ts +17 -0
  58. package/dist_ts_web/elements/sz-stat-card.js +249 -0
  59. package/dist_ts_web/elements/sz-status-grid-cluster.d.ts +19 -0
  60. package/dist_ts_web/elements/sz-status-grid-cluster.js +142 -0
  61. package/dist_ts_web/elements/sz-status-grid-infra.d.ts +17 -0
  62. package/dist_ts_web/elements/sz-status-grid-infra.js +140 -0
  63. package/dist_ts_web/elements/sz-status-grid-network.d.ts +30 -0
  64. package/dist_ts_web/elements/sz-status-grid-network.js +190 -0
  65. package/dist_ts_web/elements/sz-status-grid-services.d.ts +17 -0
  66. package/dist_ts_web/elements/sz-status-grid-services.js +145 -0
  67. package/dist_ts_web/elements/sz-tokens-view.d.ts +26 -0
  68. package/dist_ts_web/elements/sz-tokens-view.js +344 -0
  69. package/dist_ts_web/elements/sz-traffic-card.d.ts +24 -0
  70. package/dist_ts_web/elements/sz-traffic-card.js +255 -0
  71. package/dist_ts_web/index.d.ts +2 -0
  72. package/dist_ts_web/index.js +3 -0
  73. package/dist_ts_web/pages/index.d.ts +3 -0
  74. package/dist_ts_web/pages/index.js +4 -0
  75. package/dist_ts_web/pages/mainpage.d.ts +1 -0
  76. package/dist_ts_web/pages/mainpage.js +46 -0
  77. package/dist_ts_web/pages/sz-demo-app-shell.d.ts +13 -0
  78. package/dist_ts_web/pages/sz-demo-app-shell.js +212 -0
  79. package/dist_ts_web/pages/sz-demo-app.d.ts +2 -0
  80. package/dist_ts_web/pages/sz-demo-app.js +20 -0
  81. package/npmextra.json +24 -0
  82. package/package.json +45 -0
  83. package/ts_web/00_commitinfo_data.ts +8 -0
  84. package/ts_web/elements/index.ts +54 -0
  85. package/ts_web/elements/sz-certificates-card.ts +155 -0
  86. package/ts_web/elements/sz-dashboard-view.ts +217 -0
  87. package/ts_web/elements/sz-demo-view-dashboard.ts +150 -0
  88. package/ts_web/elements/sz-demo-view-network.ts +354 -0
  89. package/ts_web/elements/sz-demo-view-registries.ts +206 -0
  90. package/ts_web/elements/sz-demo-view-services.ts +434 -0
  91. package/ts_web/elements/sz-demo-view-settings.ts +118 -0
  92. package/ts_web/elements/sz-demo-view-tokens.ts +109 -0
  93. package/ts_web/elements/sz-dns-ssl-card.ts +130 -0
  94. package/ts_web/elements/sz-domain-detail-view.ts +766 -0
  95. package/ts_web/elements/sz-login-view.ts +329 -0
  96. package/ts_web/elements/sz-network-dns-view.ts +208 -0
  97. package/ts_web/elements/sz-network-domains-view.ts +273 -0
  98. package/ts_web/elements/sz-network-proxy-view.ts +456 -0
  99. package/ts_web/elements/sz-platform-service-detail-view.ts +714 -0
  100. package/ts_web/elements/sz-platform-services-card.ts +163 -0
  101. package/ts_web/elements/sz-quick-actions-card.ts +161 -0
  102. package/ts_web/elements/sz-registry-external-view.ts +279 -0
  103. package/ts_web/elements/sz-registry-onebox-view.ts +258 -0
  104. package/ts_web/elements/sz-resource-usage-card.ts +284 -0
  105. package/ts_web/elements/sz-reverse-proxy-card.ts +151 -0
  106. package/ts_web/elements/sz-service-create-view.ts +773 -0
  107. package/ts_web/elements/sz-service-detail-view.ts +710 -0
  108. package/ts_web/elements/sz-services-backups-view.ts +390 -0
  109. package/ts_web/elements/sz-services-list-view.ts +237 -0
  110. package/ts_web/elements/sz-settings-view.ts +417 -0
  111. package/ts_web/elements/sz-stat-card.ts +187 -0
  112. package/ts_web/elements/sz-status-grid-cluster.ts +105 -0
  113. package/ts_web/elements/sz-status-grid-infra.ts +88 -0
  114. package/ts_web/elements/sz-status-grid-network.ts +152 -0
  115. package/ts_web/elements/sz-status-grid-services.ts +99 -0
  116. package/ts_web/elements/sz-tokens-view.ts +308 -0
  117. package/ts_web/elements/sz-traffic-card.ts +222 -0
  118. package/ts_web/index.ts +2 -0
  119. package/ts_web/pages/index.ts +3 -0
  120. package/ts_web/pages/mainpage.ts +46 -0
  121. package/ts_web/pages/sz-demo-app-shell.ts +179 -0
  122. package/ts_web/pages/sz-demo-app.ts +20 -0
@@ -0,0 +1,789 @@
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, customElement, html, css, cssManager, property, } from '@design.estate/dees-element';
36
+ let SzDomainDetailView = (() => {
37
+ let _classDecorators = [customElement('sz-domain-detail-view')];
38
+ let _classDescriptor;
39
+ let _classExtraInitializers = [];
40
+ let _classThis;
41
+ let _classSuper = DeesElement;
42
+ let _domain_decorators;
43
+ let _domain_initializers = [];
44
+ let _domain_extraInitializers = [];
45
+ let _certificate_decorators;
46
+ let _certificate_initializers = [];
47
+ let _certificate_extraInitializers = [];
48
+ let _dnsRecords_decorators;
49
+ let _dnsRecords_initializers = [];
50
+ let _dnsRecords_extraInitializers = [];
51
+ let _actionLoading_decorators;
52
+ let _actionLoading_initializers = [];
53
+ let _actionLoading_extraInitializers = [];
54
+ var SzDomainDetailView = class extends _classSuper {
55
+ static { _classThis = this; }
56
+ static {
57
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
58
+ _domain_decorators = [property({ type: Object })];
59
+ _certificate_decorators = [property({ type: Object })];
60
+ _dnsRecords_decorators = [property({ type: Array })];
61
+ _actionLoading_decorators = [property({ type: Boolean })];
62
+ __esDecorate(this, null, _domain_decorators, { kind: "accessor", name: "domain", static: false, private: false, access: { has: obj => "domain" in obj, get: obj => obj.domain, set: (obj, value) => { obj.domain = value; } }, metadata: _metadata }, _domain_initializers, _domain_extraInitializers);
63
+ __esDecorate(this, null, _certificate_decorators, { kind: "accessor", name: "certificate", static: false, private: false, access: { has: obj => "certificate" in obj, get: obj => obj.certificate, set: (obj, value) => { obj.certificate = value; } }, metadata: _metadata }, _certificate_initializers, _certificate_extraInitializers);
64
+ __esDecorate(this, null, _dnsRecords_decorators, { kind: "accessor", name: "dnsRecords", static: false, private: false, access: { has: obj => "dnsRecords" in obj, get: obj => obj.dnsRecords, set: (obj, value) => { obj.dnsRecords = value; } }, metadata: _metadata }, _dnsRecords_initializers, _dnsRecords_extraInitializers);
65
+ __esDecorate(this, null, _actionLoading_decorators, { kind: "accessor", name: "actionLoading", static: false, private: false, access: { has: obj => "actionLoading" in obj, get: obj => obj.actionLoading, set: (obj, value) => { obj.actionLoading = value; } }, metadata: _metadata }, _actionLoading_initializers, _actionLoading_extraInitializers);
66
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
67
+ SzDomainDetailView = _classThis = _classDescriptor.value;
68
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
69
+ }
70
+ static demo = () => html `
71
+ <div style="padding: 24px; max-width: 1000px;">
72
+ <sz-domain-detail-view
73
+ .domain=${{
74
+ id: '1',
75
+ name: 'example.com',
76
+ status: 'active',
77
+ verified: true,
78
+ createdAt: '2024-01-10',
79
+ proxyRoutes: ['/api/*', '/app/*'],
80
+ }}
81
+ .certificate=${{
82
+ id: '1',
83
+ domain: 'example.com',
84
+ issuer: "Let's Encrypt",
85
+ validFrom: '2024-01-10',
86
+ validUntil: '2024-04-10',
87
+ daysRemaining: 45,
88
+ status: 'valid',
89
+ autoRenew: true,
90
+ chain: ['R3', 'ISRG Root X1'],
91
+ }}
92
+ .dnsRecords=${[
93
+ { id: '1', type: 'A', name: '@', value: '192.168.1.100', ttl: 3600 },
94
+ { id: '2', type: 'CNAME', name: 'www', value: 'example.com', ttl: 3600 },
95
+ { id: '3', type: 'MX', name: '@', value: 'mail.example.com', ttl: 3600, priority: 10 },
96
+ { id: '4', type: 'TXT', name: '@', value: 'v=spf1 include:_spf.example.com ~all', ttl: 3600 },
97
+ ]}
98
+ ></sz-domain-detail-view>
99
+ </div>
100
+ `;
101
+ #domain_accessor_storage = __runInitializers(this, _domain_initializers, null);
102
+ get domain() { return this.#domain_accessor_storage; }
103
+ set domain(value) { this.#domain_accessor_storage = value; }
104
+ #certificate_accessor_storage = (__runInitializers(this, _domain_extraInitializers), __runInitializers(this, _certificate_initializers, null));
105
+ get certificate() { return this.#certificate_accessor_storage; }
106
+ set certificate(value) { this.#certificate_accessor_storage = value; }
107
+ #dnsRecords_accessor_storage = (__runInitializers(this, _certificate_extraInitializers), __runInitializers(this, _dnsRecords_initializers, []));
108
+ get dnsRecords() { return this.#dnsRecords_accessor_storage; }
109
+ set dnsRecords(value) { this.#dnsRecords_accessor_storage = value; }
110
+ #actionLoading_accessor_storage = (__runInitializers(this, _dnsRecords_extraInitializers), __runInitializers(this, _actionLoading_initializers, false));
111
+ get actionLoading() { return this.#actionLoading_accessor_storage; }
112
+ set actionLoading(value) { this.#actionLoading_accessor_storage = value; }
113
+ static styles = [
114
+ cssManager.defaultStyles,
115
+ css `
116
+ :host {
117
+ display: block;
118
+ }
119
+
120
+ .header {
121
+ display: flex;
122
+ justify-content: space-between;
123
+ align-items: flex-start;
124
+ margin-bottom: 24px;
125
+ }
126
+
127
+ .header-info {
128
+ display: flex;
129
+ flex-direction: column;
130
+ gap: 8px;
131
+ }
132
+
133
+ .domain-name {
134
+ font-size: 24px;
135
+ font-weight: 700;
136
+ color: ${cssManager.bdTheme('#18181b', '#fafafa')};
137
+ display: flex;
138
+ align-items: center;
139
+ gap: 12px;
140
+ }
141
+
142
+ .status-badge {
143
+ display: inline-flex;
144
+ align-items: center;
145
+ gap: 6px;
146
+ padding: 4px 10px;
147
+ border-radius: 9999px;
148
+ font-size: 12px;
149
+ font-weight: 500;
150
+ }
151
+
152
+ .status-badge.active {
153
+ background: ${cssManager.bdTheme('#dcfce7', 'rgba(34, 197, 94, 0.2)')};
154
+ color: ${cssManager.bdTheme('#16a34a', '#22c55e')};
155
+ }
156
+
157
+ .status-badge.pending {
158
+ background: ${cssManager.bdTheme('#fef3c7', 'rgba(245, 158, 11, 0.2)')};
159
+ color: ${cssManager.bdTheme('#d97706', '#f59e0b')};
160
+ }
161
+
162
+ .status-badge.error {
163
+ background: ${cssManager.bdTheme('#fee2e2', 'rgba(239, 68, 68, 0.2)')};
164
+ color: ${cssManager.bdTheme('#dc2626', '#ef4444')};
165
+ }
166
+
167
+ .status-dot {
168
+ width: 6px;
169
+ height: 6px;
170
+ border-radius: 50%;
171
+ background: currentColor;
172
+ }
173
+
174
+ .domain-meta {
175
+ display: flex;
176
+ align-items: center;
177
+ gap: 16px;
178
+ font-size: 14px;
179
+ color: ${cssManager.bdTheme('#71717a', '#a1a1aa')};
180
+ }
181
+
182
+ .verified-badge {
183
+ display: inline-flex;
184
+ align-items: center;
185
+ gap: 4px;
186
+ color: ${cssManager.bdTheme('#16a34a', '#22c55e')};
187
+ }
188
+
189
+ .verified-badge svg {
190
+ width: 16px;
191
+ height: 16px;
192
+ }
193
+
194
+ .header-actions {
195
+ display: flex;
196
+ gap: 8px;
197
+ }
198
+
199
+ .action-button {
200
+ display: inline-flex;
201
+ align-items: center;
202
+ gap: 6px;
203
+ padding: 8px 14px;
204
+ background: ${cssManager.bdTheme('#ffffff', '#09090b')};
205
+ border: 1px solid ${cssManager.bdTheme('#e4e4e7', '#27272a')};
206
+ border-radius: 6px;
207
+ font-size: 13px;
208
+ font-weight: 500;
209
+ color: ${cssManager.bdTheme('#18181b', '#fafafa')};
210
+ cursor: pointer;
211
+ transition: all 200ms ease;
212
+ }
213
+
214
+ .action-button:hover:not(:disabled) {
215
+ background: ${cssManager.bdTheme('#f4f4f5', '#18181b')};
216
+ }
217
+
218
+ .action-button:disabled {
219
+ opacity: 0.6;
220
+ cursor: not-allowed;
221
+ }
222
+
223
+ .action-button svg {
224
+ width: 14px;
225
+ height: 14px;
226
+ }
227
+
228
+ .action-button.danger {
229
+ color: ${cssManager.bdTheme('#dc2626', '#ef4444')};
230
+ border-color: ${cssManager.bdTheme('#fee2e2', 'rgba(239, 68, 68, 0.3)')};
231
+ }
232
+
233
+ .action-button.danger:hover:not(:disabled) {
234
+ background: ${cssManager.bdTheme('#fee2e2', 'rgba(239, 68, 68, 0.2)')};
235
+ }
236
+
237
+ .grid {
238
+ display: grid;
239
+ grid-template-columns: 1fr 1fr;
240
+ gap: 16px;
241
+ margin-bottom: 16px;
242
+ }
243
+
244
+ @media (max-width: 768px) {
245
+ .grid {
246
+ grid-template-columns: 1fr;
247
+ }
248
+ }
249
+
250
+ .section {
251
+ background: ${cssManager.bdTheme('#ffffff', '#09090b')};
252
+ border: 1px solid ${cssManager.bdTheme('#e4e4e7', '#27272a')};
253
+ border-radius: 8px;
254
+ overflow: hidden;
255
+ }
256
+
257
+ .section.full-width {
258
+ grid-column: 1 / -1;
259
+ }
260
+
261
+ .section-header {
262
+ display: flex;
263
+ justify-content: space-between;
264
+ align-items: center;
265
+ padding: 14px 16px;
266
+ border-bottom: 1px solid ${cssManager.bdTheme('#e4e4e7', '#27272a')};
267
+ background: ${cssManager.bdTheme('#f4f4f5', '#18181b')};
268
+ }
269
+
270
+ .section-title {
271
+ font-size: 14px;
272
+ font-weight: 600;
273
+ color: ${cssManager.bdTheme('#18181b', '#fafafa')};
274
+ display: flex;
275
+ align-items: center;
276
+ gap: 8px;
277
+ }
278
+
279
+ .section-title svg {
280
+ width: 16px;
281
+ height: 16px;
282
+ color: ${cssManager.bdTheme('#71717a', '#a1a1aa')};
283
+ }
284
+
285
+ .section-action {
286
+ padding: 6px 10px;
287
+ background: transparent;
288
+ border: 1px solid ${cssManager.bdTheme('#e4e4e7', '#27272a')};
289
+ border-radius: 4px;
290
+ font-size: 12px;
291
+ color: ${cssManager.bdTheme('#71717a', '#a1a1aa')};
292
+ cursor: pointer;
293
+ transition: all 200ms ease;
294
+ }
295
+
296
+ .section-action:hover {
297
+ background: ${cssManager.bdTheme('#ffffff', '#09090b')};
298
+ color: ${cssManager.bdTheme('#18181b', '#fafafa')};
299
+ }
300
+
301
+ .section-content {
302
+ padding: 16px;
303
+ }
304
+
305
+ .cert-status {
306
+ display: flex;
307
+ align-items: center;
308
+ gap: 12px;
309
+ padding: 16px;
310
+ background: ${cssManager.bdTheme('#f0fdf4', 'rgba(34, 197, 94, 0.1)')};
311
+ border-radius: 8px;
312
+ margin-bottom: 16px;
313
+ }
314
+
315
+ .cert-status.expiring {
316
+ background: ${cssManager.bdTheme('#fffbeb', 'rgba(245, 158, 11, 0.1)')};
317
+ }
318
+
319
+ .cert-status.expired {
320
+ background: ${cssManager.bdTheme('#fef2f2', 'rgba(239, 68, 68, 0.1)')};
321
+ }
322
+
323
+ .cert-icon {
324
+ width: 40px;
325
+ height: 40px;
326
+ border-radius: 8px;
327
+ display: flex;
328
+ align-items: center;
329
+ justify-content: center;
330
+ flex-shrink: 0;
331
+ }
332
+
333
+ .cert-icon.valid {
334
+ background: ${cssManager.bdTheme('#dcfce7', 'rgba(34, 197, 94, 0.2)')};
335
+ color: ${cssManager.bdTheme('#16a34a', '#22c55e')};
336
+ }
337
+
338
+ .cert-icon.expiring {
339
+ background: ${cssManager.bdTheme('#fef3c7', 'rgba(245, 158, 11, 0.2)')};
340
+ color: ${cssManager.bdTheme('#d97706', '#f59e0b')};
341
+ }
342
+
343
+ .cert-icon.expired {
344
+ background: ${cssManager.bdTheme('#fee2e2', 'rgba(239, 68, 68, 0.2)')};
345
+ color: ${cssManager.bdTheme('#dc2626', '#ef4444')};
346
+ }
347
+
348
+ .cert-icon svg {
349
+ width: 20px;
350
+ height: 20px;
351
+ }
352
+
353
+ .cert-info {
354
+ flex: 1;
355
+ }
356
+
357
+ .cert-title {
358
+ font-size: 14px;
359
+ font-weight: 600;
360
+ color: ${cssManager.bdTheme('#18181b', '#fafafa')};
361
+ }
362
+
363
+ .cert-subtitle {
364
+ font-size: 13px;
365
+ color: ${cssManager.bdTheme('#71717a', '#a1a1aa')};
366
+ margin-top: 2px;
367
+ }
368
+
369
+ .cert-days {
370
+ font-size: 24px;
371
+ font-weight: 700;
372
+ text-align: center;
373
+ }
374
+
375
+ .cert-days.valid {
376
+ color: ${cssManager.bdTheme('#16a34a', '#22c55e')};
377
+ }
378
+
379
+ .cert-days.expiring {
380
+ color: ${cssManager.bdTheme('#d97706', '#f59e0b')};
381
+ }
382
+
383
+ .cert-days.expired {
384
+ color: ${cssManager.bdTheme('#dc2626', '#ef4444')};
385
+ }
386
+
387
+ .cert-days-label {
388
+ font-size: 11px;
389
+ color: ${cssManager.bdTheme('#71717a', '#a1a1aa')};
390
+ text-align: center;
391
+ margin-top: 2px;
392
+ }
393
+
394
+ .info-row {
395
+ display: flex;
396
+ justify-content: space-between;
397
+ align-items: center;
398
+ padding: 10px 0;
399
+ border-bottom: 1px solid ${cssManager.bdTheme('#f4f4f5', '#27272a')};
400
+ }
401
+
402
+ .info-row:last-child {
403
+ border-bottom: none;
404
+ }
405
+
406
+ .info-label {
407
+ font-size: 13px;
408
+ color: ${cssManager.bdTheme('#71717a', '#a1a1aa')};
409
+ }
410
+
411
+ .info-value {
412
+ font-size: 13px;
413
+ font-weight: 500;
414
+ color: ${cssManager.bdTheme('#18181b', '#fafafa')};
415
+ }
416
+
417
+ .info-value.enabled {
418
+ color: ${cssManager.bdTheme('#16a34a', '#22c55e')};
419
+ }
420
+
421
+ .chain-list {
422
+ display: flex;
423
+ flex-wrap: wrap;
424
+ gap: 8px;
425
+ }
426
+
427
+ .chain-badge {
428
+ padding: 4px 8px;
429
+ background: ${cssManager.bdTheme('#f4f4f5', '#27272a')};
430
+ border-radius: 4px;
431
+ font-size: 12px;
432
+ color: ${cssManager.bdTheme('#71717a', '#a1a1aa')};
433
+ }
434
+
435
+ .dns-table {
436
+ width: 100%;
437
+ }
438
+
439
+ .dns-header {
440
+ display: grid;
441
+ grid-template-columns: 80px 1fr 2fr 80px 60px;
442
+ gap: 12px;
443
+ padding: 10px 0;
444
+ font-size: 12px;
445
+ font-weight: 600;
446
+ text-transform: uppercase;
447
+ letter-spacing: 0.05em;
448
+ color: ${cssManager.bdTheme('#71717a', '#a1a1aa')};
449
+ border-bottom: 1px solid ${cssManager.bdTheme('#e4e4e7', '#27272a')};
450
+ }
451
+
452
+ .dns-row {
453
+ display: grid;
454
+ grid-template-columns: 80px 1fr 2fr 80px 60px;
455
+ gap: 12px;
456
+ padding: 12px 0;
457
+ font-size: 13px;
458
+ color: ${cssManager.bdTheme('#18181b', '#fafafa')};
459
+ border-bottom: 1px solid ${cssManager.bdTheme('#f4f4f5', '#27272a')};
460
+ align-items: center;
461
+ }
462
+
463
+ .dns-row:last-child {
464
+ border-bottom: none;
465
+ }
466
+
467
+ .dns-row:hover {
468
+ background: ${cssManager.bdTheme('#f4f4f5', '#18181b')};
469
+ margin: 0 -16px;
470
+ padding-left: 16px;
471
+ padding-right: 16px;
472
+ }
473
+
474
+ .dns-type {
475
+ padding: 2px 8px;
476
+ background: ${cssManager.bdTheme('#dbeafe', 'rgba(59, 130, 246, 0.2)')};
477
+ color: ${cssManager.bdTheme('#2563eb', '#60a5fa')};
478
+ border-radius: 4px;
479
+ font-size: 11px;
480
+ font-weight: 600;
481
+ text-align: center;
482
+ }
483
+
484
+ .dns-name {
485
+ font-family: monospace;
486
+ }
487
+
488
+ .dns-value {
489
+ font-family: monospace;
490
+ color: ${cssManager.bdTheme('#71717a', '#a1a1aa')};
491
+ overflow: hidden;
492
+ text-overflow: ellipsis;
493
+ white-space: nowrap;
494
+ }
495
+
496
+ .dns-ttl {
497
+ color: ${cssManager.bdTheme('#71717a', '#a1a1aa')};
498
+ }
499
+
500
+ .dns-actions {
501
+ display: flex;
502
+ gap: 4px;
503
+ }
504
+
505
+ .icon-button {
506
+ padding: 4px;
507
+ background: transparent;
508
+ border: none;
509
+ color: ${cssManager.bdTheme('#71717a', '#a1a1aa')};
510
+ cursor: pointer;
511
+ border-radius: 4px;
512
+ transition: all 200ms ease;
513
+ }
514
+
515
+ .icon-button:hover {
516
+ background: ${cssManager.bdTheme('#e4e4e7', '#27272a')};
517
+ color: ${cssManager.bdTheme('#18181b', '#fafafa')};
518
+ }
519
+
520
+ .icon-button.danger:hover {
521
+ background: ${cssManager.bdTheme('#fee2e2', 'rgba(239, 68, 68, 0.2)')};
522
+ color: ${cssManager.bdTheme('#dc2626', '#ef4444')};
523
+ }
524
+
525
+ .icon-button svg {
526
+ width: 14px;
527
+ height: 14px;
528
+ }
529
+
530
+ .routes-list {
531
+ display: flex;
532
+ flex-wrap: wrap;
533
+ gap: 8px;
534
+ }
535
+
536
+ .route-badge {
537
+ padding: 6px 10px;
538
+ background: ${cssManager.bdTheme('#f4f4f5', '#27272a')};
539
+ border-radius: 4px;
540
+ font-size: 13px;
541
+ font-family: monospace;
542
+ color: ${cssManager.bdTheme('#18181b', '#fafafa')};
543
+ }
544
+
545
+ .empty-state {
546
+ text-align: center;
547
+ padding: 24px;
548
+ color: ${cssManager.bdTheme('#71717a', '#a1a1aa')};
549
+ font-size: 14px;
550
+ }
551
+ `,
552
+ ];
553
+ render() {
554
+ if (!this.domain) {
555
+ return html `<div class="empty-state">No domain selected</div>`;
556
+ }
557
+ return html `
558
+ <div class="header">
559
+ <div class="header-info">
560
+ <div class="domain-name">
561
+ ${this.domain.name}
562
+ <span class="status-badge ${this.domain.status}">
563
+ <span class="status-dot"></span>
564
+ ${this.domain.status.charAt(0).toUpperCase() + this.domain.status.slice(1)}
565
+ </span>
566
+ </div>
567
+ <div class="domain-meta">
568
+ ${this.domain.verified ? html `
569
+ <span class="verified-badge">
570
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
571
+ <path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path>
572
+ <polyline points="22 4 12 14.01 9 11.01"></polyline>
573
+ </svg>
574
+ Verified
575
+ </span>
576
+ ` : html `<span>Not verified</span>`}
577
+ <span>Added ${this.domain.createdAt}</span>
578
+ </div>
579
+ </div>
580
+ <div class="header-actions">
581
+ ${!this.domain.verified ? html `
582
+ <button class="action-button" ?disabled=${this.actionLoading} @click=${() => this.handleVerify()}>
583
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
584
+ <polyline points="20 6 9 17 4 12"></polyline>
585
+ </svg>
586
+ Verify Domain
587
+ </button>
588
+ ` : ''}
589
+ <button class="action-button danger" ?disabled=${this.actionLoading} @click=${() => this.handleDelete()}>
590
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
591
+ <polyline points="3 6 5 6 21 6"></polyline>
592
+ <path d="M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"></path>
593
+ </svg>
594
+ Delete
595
+ </button>
596
+ </div>
597
+ </div>
598
+
599
+ <div class="grid">
600
+ <!-- Certificate Section -->
601
+ <div class="section">
602
+ <div class="section-header">
603
+ <div class="section-title">
604
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
605
+ <rect x="3" y="11" width="18" height="11" rx="2" ry="2"></rect>
606
+ <path d="M7 11V7a5 5 0 0 1 10 0v4"></path>
607
+ </svg>
608
+ SSL Certificate
609
+ </div>
610
+ ${this.certificate ? html `
611
+ <button class="section-action" @click=${() => this.handleRenewCertificate()}>Renew</button>
612
+ ` : ''}
613
+ </div>
614
+ <div class="section-content">
615
+ ${this.certificate ? html `
616
+ <div class="cert-status ${this.certificate.status}">
617
+ <div class="cert-icon ${this.certificate.status}">
618
+ ${this.certificate.status === 'valid' ? html `
619
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
620
+ <path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path>
621
+ <polyline points="22 4 12 14.01 9 11.01"></polyline>
622
+ </svg>
623
+ ` : this.certificate.status === 'expiring' ? html `
624
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
625
+ <circle cx="12" cy="12" r="10"></circle>
626
+ <line x1="12" y1="8" x2="12" y2="12"></line>
627
+ <line x1="12" y1="16" x2="12.01" y2="16"></line>
628
+ </svg>
629
+ ` : html `
630
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
631
+ <circle cx="12" cy="12" r="10"></circle>
632
+ <line x1="15" y1="9" x2="9" y2="15"></line>
633
+ <line x1="9" y1="9" x2="15" y2="15"></line>
634
+ </svg>
635
+ `}
636
+ </div>
637
+ <div class="cert-info">
638
+ <div class="cert-title">${this.certificate.status === 'valid' ? 'Certificate Valid' : this.certificate.status === 'expiring' ? 'Certificate Expiring Soon' : 'Certificate Expired'}</div>
639
+ <div class="cert-subtitle">Issued by ${this.certificate.issuer}</div>
640
+ </div>
641
+ <div>
642
+ <div class="cert-days ${this.certificate.status}">${Math.abs(this.certificate.daysRemaining)}</div>
643
+ <div class="cert-days-label">${this.certificate.daysRemaining >= 0 ? 'days left' : 'days ago'}</div>
644
+ </div>
645
+ </div>
646
+
647
+ <div class="info-row">
648
+ <span class="info-label">Valid From</span>
649
+ <span class="info-value">${this.certificate.validFrom}</span>
650
+ </div>
651
+ <div class="info-row">
652
+ <span class="info-label">Valid Until</span>
653
+ <span class="info-value">${this.certificate.validUntil}</span>
654
+ </div>
655
+ <div class="info-row">
656
+ <span class="info-label">Auto-Renew</span>
657
+ <span class="info-value ${this.certificate.autoRenew ? 'enabled' : ''}">${this.certificate.autoRenew ? 'Enabled' : 'Disabled'}</span>
658
+ </div>
659
+ ${this.certificate.chain && this.certificate.chain.length > 0 ? html `
660
+ <div class="info-row">
661
+ <span class="info-label">Certificate Chain</span>
662
+ <div class="chain-list">
663
+ ${this.certificate.chain.map(cert => html `<span class="chain-badge">${cert}</span>`)}
664
+ </div>
665
+ </div>
666
+ ` : ''}
667
+ ` : html `
668
+ <div class="empty-state">No certificate configured</div>
669
+ `}
670
+ </div>
671
+ </div>
672
+
673
+ <!-- Proxy Routes Section -->
674
+ <div class="section">
675
+ <div class="section-header">
676
+ <div class="section-title">
677
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
678
+ <polyline points="16 3 21 3 21 8"></polyline>
679
+ <line x1="4" y1="20" x2="21" y2="3"></line>
680
+ <polyline points="21 16 21 21 16 21"></polyline>
681
+ <line x1="15" y1="15" x2="21" y2="21"></line>
682
+ <line x1="4" y1="4" x2="9" y2="9"></line>
683
+ </svg>
684
+ Proxy Routes
685
+ </div>
686
+ </div>
687
+ <div class="section-content">
688
+ ${this.domain.proxyRoutes && this.domain.proxyRoutes.length > 0 ? html `
689
+ <div class="routes-list">
690
+ ${this.domain.proxyRoutes.map(route => html `
691
+ <span class="route-badge">${route}</span>
692
+ `)}
693
+ </div>
694
+ ` : html `
695
+ <div class="empty-state">No proxy routes configured</div>
696
+ `}
697
+ </div>
698
+ </div>
699
+
700
+ <!-- DNS Records Section -->
701
+ <div class="section full-width">
702
+ <div class="section-header">
703
+ <div class="section-title">
704
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
705
+ <circle cx="12" cy="12" r="10"></circle>
706
+ <line x1="2" y1="12" x2="22" y2="12"></line>
707
+ <path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"></path>
708
+ </svg>
709
+ DNS Records
710
+ </div>
711
+ <button class="section-action" @click=${() => this.handleAddDnsRecord()}>
712
+ <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" style="margin-right: 4px;">
713
+ <line x1="12" y1="5" x2="12" y2="19"></line>
714
+ <line x1="5" y1="12" x2="19" y2="12"></line>
715
+ </svg>
716
+ Add Record
717
+ </button>
718
+ </div>
719
+ <div class="section-content">
720
+ ${this.dnsRecords.length > 0 ? html `
721
+ <div class="dns-table">
722
+ <div class="dns-header">
723
+ <span>Type</span>
724
+ <span>Name</span>
725
+ <span>Value</span>
726
+ <span>TTL</span>
727
+ <span></span>
728
+ </div>
729
+ ${this.dnsRecords.map(record => html `
730
+ <div class="dns-row">
731
+ <span class="dns-type">${record.type}</span>
732
+ <span class="dns-name">${record.name}</span>
733
+ <span class="dns-value" title="${record.value}">${record.priority ? `${record.priority} ` : ''}${record.value}</span>
734
+ <span class="dns-ttl">${record.ttl}s</span>
735
+ <span class="dns-actions">
736
+ <button class="icon-button" title="Edit" @click=${() => this.handleEditDnsRecord(record)}>
737
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
738
+ <path d="M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"></path>
739
+ <path d="M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z"></path>
740
+ </svg>
741
+ </button>
742
+ <button class="icon-button danger" title="Delete" @click=${() => this.handleDeleteDnsRecord(record)}>
743
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
744
+ <polyline points="3 6 5 6 21 6"></polyline>
745
+ <path d="M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"></path>
746
+ </svg>
747
+ </button>
748
+ </span>
749
+ </div>
750
+ `)}
751
+ </div>
752
+ ` : html `
753
+ <div class="empty-state">No DNS records configured</div>
754
+ `}
755
+ </div>
756
+ </div>
757
+ </div>
758
+ `;
759
+ }
760
+ handleVerify() {
761
+ this.dispatchEvent(new CustomEvent('verify-domain', { detail: this.domain, bubbles: true, composed: true }));
762
+ }
763
+ handleDelete() {
764
+ this.dispatchEvent(new CustomEvent('delete-domain', { detail: this.domain, bubbles: true, composed: true }));
765
+ }
766
+ handleRenewCertificate() {
767
+ this.dispatchEvent(new CustomEvent('renew-certificate', { detail: this.certificate, bubbles: true, composed: true }));
768
+ }
769
+ handleAddDnsRecord() {
770
+ this.dispatchEvent(new CustomEvent('add-dns-record', { detail: this.domain, bubbles: true, composed: true }));
771
+ }
772
+ handleEditDnsRecord(record) {
773
+ this.dispatchEvent(new CustomEvent('edit-dns-record', { detail: record, bubbles: true, composed: true }));
774
+ }
775
+ handleDeleteDnsRecord(record) {
776
+ this.dispatchEvent(new CustomEvent('delete-dns-record', { detail: record, bubbles: true, composed: true }));
777
+ }
778
+ constructor() {
779
+ super(...arguments);
780
+ __runInitializers(this, _actionLoading_extraInitializers);
781
+ }
782
+ static {
783
+ __runInitializers(_classThis, _classExtraInitializers);
784
+ }
785
+ };
786
+ return SzDomainDetailView = _classThis;
787
+ })();
788
+ export { SzDomainDetailView };
789
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3otZG9tYWluLWRldGFpbC12aWV3LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHNfd2ViL2VsZW1lbnRzL3N6LWRvbWFpbi1kZXRhaWwtdmlldy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUNMLFdBQVcsRUFDWCxhQUFhLEVBQ2IsSUFBSSxFQUNKLEdBQUcsRUFDSCxVQUFVLEVBQ1YsUUFBUSxHQUVULE1BQU0sNkJBQTZCLENBQUM7SUF1Q3hCLGtCQUFrQjs0QkFEOUIsYUFBYSxDQUFDLHVCQUF1QixDQUFDOzs7O3NCQUNDLFdBQVc7Ozs7Ozs7Ozs7Ozs7a0NBQW5CLFNBQVEsV0FBVzs7OztrQ0FpQ2hELFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQzt1Q0FHMUIsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO3NDQUcxQixRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUM7eUNBR3pCLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQztZQVI1Qix1S0FBZ0IsTUFBTSw2QkFBTixNQUFNLHVGQUE4QjtZQUdwRCxzTEFBZ0IsV0FBVyw2QkFBWCxXQUFXLGlHQUFtQztZQUc5RCxtTEFBZ0IsVUFBVSw2QkFBVixVQUFVLCtGQUEwQjtZQUdwRCw0TEFBZ0IsYUFBYSw2QkFBYixhQUFhLHFHQUFrQjtZQTNDakQsNktBOHNCQzs7OztRQTdzQlEsTUFBTSxDQUFDLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUE7OztrQkFHZjtZQUNSLEVBQUUsRUFBRSxHQUFHO1lBQ1AsSUFBSSxFQUFFLGFBQWE7WUFDbkIsTUFBTSxFQUFFLFFBQVE7WUFDaEIsUUFBUSxFQUFFLElBQUk7WUFDZCxTQUFTLEVBQUUsWUFBWTtZQUN2QixXQUFXLEVBQUUsQ0FBQyxRQUFR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