@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,448 @@
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 SzSettingsView = (() => {
37
+ let _classDecorators = [customElement('sz-settings-view')];
38
+ let _classDescriptor;
39
+ let _classExtraInitializers = [];
40
+ let _classThis;
41
+ let _classSuper = DeesElement;
42
+ let _settings_decorators;
43
+ let _settings_initializers = [];
44
+ let _settings_extraInitializers = [];
45
+ let _currentUser_decorators;
46
+ let _currentUser_initializers = [];
47
+ let _currentUser_extraInitializers = [];
48
+ var SzSettingsView = class extends _classSuper {
49
+ static { _classThis = this; }
50
+ static {
51
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
52
+ _settings_decorators = [property({ type: Object })];
53
+ _currentUser_decorators = [property({ type: String })];
54
+ __esDecorate(this, null, _settings_decorators, { kind: "accessor", name: "settings", static: false, private: false, access: { has: obj => "settings" in obj, get: obj => obj.settings, set: (obj, value) => { obj.settings = value; } }, metadata: _metadata }, _settings_initializers, _settings_extraInitializers);
55
+ __esDecorate(this, null, _currentUser_decorators, { kind: "accessor", name: "currentUser", static: false, private: false, access: { has: obj => "currentUser" in obj, get: obj => obj.currentUser, set: (obj, value) => { obj.currentUser = value; } }, metadata: _metadata }, _currentUser_initializers, _currentUser_extraInitializers);
56
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
57
+ SzSettingsView = _classThis = _classDescriptor.value;
58
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
59
+ }
60
+ static demo = () => html `
61
+ <div style="padding: 24px; max-width: 800px;">
62
+ <sz-settings-view
63
+ .settings=${{
64
+ darkMode: true,
65
+ cloudflareToken: '',
66
+ cloudflareZoneId: '',
67
+ autoRenewCerts: true,
68
+ renewalThreshold: 30,
69
+ acmeEmail: 'certs@example.com',
70
+ httpPort: 80,
71
+ httpsPort: 443,
72
+ forceHttps: true,
73
+ }}
74
+ currentUser="admin"
75
+ ></sz-settings-view>
76
+ </div>
77
+ `;
78
+ #settings_accessor_storage = __runInitializers(this, _settings_initializers, {
79
+ darkMode: false,
80
+ cloudflareToken: '',
81
+ cloudflareZoneId: '',
82
+ autoRenewCerts: true,
83
+ renewalThreshold: 30,
84
+ acmeEmail: '',
85
+ httpPort: 80,
86
+ httpsPort: 443,
87
+ forceHttps: true,
88
+ });
89
+ get settings() { return this.#settings_accessor_storage; }
90
+ set settings(value) { this.#settings_accessor_storage = value; }
91
+ #currentUser_accessor_storage = (__runInitializers(this, _settings_extraInitializers), __runInitializers(this, _currentUser_initializers, ''));
92
+ get currentUser() { return this.#currentUser_accessor_storage; }
93
+ set currentUser(value) { this.#currentUser_accessor_storage = value; }
94
+ static styles = [
95
+ cssManager.defaultStyles,
96
+ css `
97
+ :host {
98
+ display: block;
99
+ }
100
+
101
+ .section {
102
+ background: ${cssManager.bdTheme('#ffffff', '#09090b')};
103
+ border: 1px solid ${cssManager.bdTheme('#e4e4e7', '#27272a')};
104
+ border-radius: 8px;
105
+ padding: 20px;
106
+ margin-bottom: 24px;
107
+ }
108
+
109
+ .section-header {
110
+ margin-bottom: 16px;
111
+ }
112
+
113
+ .section-title {
114
+ font-size: 16px;
115
+ font-weight: 600;
116
+ color: ${cssManager.bdTheme('#18181b', '#fafafa')};
117
+ }
118
+
119
+ .section-subtitle {
120
+ font-size: 13px;
121
+ color: ${cssManager.bdTheme('#71717a', '#a1a1aa')};
122
+ margin-top: 2px;
123
+ }
124
+
125
+ .form-group {
126
+ margin-bottom: 16px;
127
+ }
128
+
129
+ .form-group:last-child {
130
+ margin-bottom: 0;
131
+ }
132
+
133
+ .form-row {
134
+ display: flex;
135
+ justify-content: space-between;
136
+ align-items: center;
137
+ padding: 12px 0;
138
+ border-bottom: 1px solid ${cssManager.bdTheme('#f4f4f5', '#27272a')};
139
+ }
140
+
141
+ .form-row:last-child {
142
+ border-bottom: none;
143
+ }
144
+
145
+ .form-label-group {
146
+ display: flex;
147
+ flex-direction: column;
148
+ gap: 2px;
149
+ }
150
+
151
+ .form-label {
152
+ font-size: 14px;
153
+ font-weight: 500;
154
+ color: ${cssManager.bdTheme('#18181b', '#fafafa')};
155
+ }
156
+
157
+ .form-hint {
158
+ font-size: 12px;
159
+ color: ${cssManager.bdTheme('#71717a', '#a1a1aa')};
160
+ }
161
+
162
+ .input-group {
163
+ display: flex;
164
+ flex-direction: column;
165
+ gap: 8px;
166
+ }
167
+
168
+ .input-row {
169
+ display: grid;
170
+ grid-template-columns: 1fr 1fr;
171
+ gap: 16px;
172
+ }
173
+
174
+ input[type="text"],
175
+ input[type="password"],
176
+ input[type="email"],
177
+ input[type="number"] {
178
+ width: 100%;
179
+ padding: 8px 12px;
180
+ background: ${cssManager.bdTheme('#ffffff', '#09090b')};
181
+ border: 1px solid ${cssManager.bdTheme('#e4e4e7', '#27272a')};
182
+ border-radius: 6px;
183
+ font-size: 14px;
184
+ color: ${cssManager.bdTheme('#18181b', '#fafafa')};
185
+ outline: none;
186
+ transition: border-color 200ms ease;
187
+ box-sizing: border-box;
188
+ }
189
+
190
+ input:focus {
191
+ border-color: ${cssManager.bdTheme('#3b82f6', '#60a5fa')};
192
+ }
193
+
194
+ input::placeholder {
195
+ color: ${cssManager.bdTheme('#a1a1aa', '#52525b')};
196
+ }
197
+
198
+ .toggle-switch {
199
+ position: relative;
200
+ width: 44px;
201
+ height: 24px;
202
+ background: ${cssManager.bdTheme('#e4e4e7', '#27272a')};
203
+ border-radius: 9999px;
204
+ cursor: pointer;
205
+ transition: background 200ms ease;
206
+ }
207
+
208
+ .toggle-switch.active {
209
+ background: ${cssManager.bdTheme('#2563eb', '#3b82f6')};
210
+ }
211
+
212
+ .toggle-switch::after {
213
+ content: '';
214
+ position: absolute;
215
+ top: 2px;
216
+ left: 2px;
217
+ width: 20px;
218
+ height: 20px;
219
+ background: white;
220
+ border-radius: 50%;
221
+ transition: transform 200ms ease;
222
+ }
223
+
224
+ .toggle-switch.active::after {
225
+ transform: translateX(20px);
226
+ }
227
+
228
+ .password-section {
229
+ margin-top: 16px;
230
+ padding-top: 16px;
231
+ border-top: 1px solid ${cssManager.bdTheme('#f4f4f5', '#27272a')};
232
+ }
233
+
234
+ .password-title {
235
+ font-size: 14px;
236
+ font-weight: 600;
237
+ color: ${cssManager.bdTheme('#18181b', '#fafafa')};
238
+ margin-bottom: 12px;
239
+ }
240
+
241
+ .password-fields {
242
+ display: flex;
243
+ flex-direction: column;
244
+ gap: 12px;
245
+ }
246
+
247
+ .field-label {
248
+ font-size: 13px;
249
+ color: ${cssManager.bdTheme('#71717a', '#a1a1aa')};
250
+ margin-bottom: 4px;
251
+ }
252
+
253
+ .actions {
254
+ display: flex;
255
+ justify-content: flex-end;
256
+ gap: 12px;
257
+ padding-top: 16px;
258
+ border-top: 1px solid ${cssManager.bdTheme('#e4e4e7', '#27272a')};
259
+ margin-top: 24px;
260
+ }
261
+
262
+ .button {
263
+ padding: 10px 20px;
264
+ border-radius: 6px;
265
+ font-size: 14px;
266
+ font-weight: 500;
267
+ cursor: pointer;
268
+ transition: all 200ms ease;
269
+ }
270
+
271
+ .button.secondary {
272
+ background: ${cssManager.bdTheme('#ffffff', '#09090b')};
273
+ border: 1px solid ${cssManager.bdTheme('#e4e4e7', '#27272a')};
274
+ color: ${cssManager.bdTheme('#18181b', '#fafafa')};
275
+ }
276
+
277
+ .button.secondary:hover {
278
+ background: ${cssManager.bdTheme('#f4f4f5', '#18181b')};
279
+ }
280
+
281
+ .button.primary {
282
+ background: ${cssManager.bdTheme('#18181b', '#fafafa')};
283
+ border: none;
284
+ color: ${cssManager.bdTheme('#fafafa', '#18181b')};
285
+ }
286
+
287
+ .button.primary:hover {
288
+ opacity: 0.9;
289
+ }
290
+ `,
291
+ ];
292
+ render() {
293
+ return html `
294
+ <div class="section">
295
+ <div class="section-header">
296
+ <div class="section-title">Appearance</div>
297
+ <div class="section-subtitle">Customize the look and feel</div>
298
+ </div>
299
+ <div class="form-row">
300
+ <div class="form-label-group">
301
+ <span class="form-label">Dark Mode</span>
302
+ <span class="form-hint">Toggle dark mode on or off</span>
303
+ </div>
304
+ <div class="toggle-switch ${this.settings.darkMode ? 'active' : ''}" @click=${() => this.toggleDarkMode()}></div>
305
+ </div>
306
+ </div>
307
+
308
+ <div class="section">
309
+ <div class="section-header">
310
+ <div class="section-title">Cloudflare Integration</div>
311
+ <div class="section-subtitle">Configure Cloudflare API for DNS management</div>
312
+ </div>
313
+ <div class="input-group">
314
+ <div class="form-group">
315
+ <div class="field-label">API Token</div>
316
+ <input type="password" placeholder="Enter Cloudflare API token" .value=${this.settings.cloudflareToken} @input=${(e) => this.updateSetting('cloudflareToken', e.target.value)}>
317
+ </div>
318
+ <div class="form-group">
319
+ <div class="field-label">Zone ID (Optional)</div>
320
+ <input type="text" placeholder="Default zone ID" .value=${this.settings.cloudflareZoneId} @input=${(e) => this.updateSetting('cloudflareZoneId', e.target.value)}>
321
+ </div>
322
+ <div class="form-hint">Get your API token from the Cloudflare dashboard with DNS edit permissions.</div>
323
+ </div>
324
+ </div>
325
+
326
+ <div class="section">
327
+ <div class="section-header">
328
+ <div class="section-title">SSL/TLS Settings</div>
329
+ <div class="section-subtitle">Configure certificate management</div>
330
+ </div>
331
+ <div class="form-row">
332
+ <div class="form-label-group">
333
+ <span class="form-label">Auto-Renew Certificates</span>
334
+ <span class="form-hint">Automatically renew certificates before expiry</span>
335
+ </div>
336
+ <div class="toggle-switch ${this.settings.autoRenewCerts ? 'active' : ''}" @click=${() => this.toggleSetting('autoRenewCerts')}></div>
337
+ </div>
338
+ <div class="form-group" style="margin-top: 16px;">
339
+ <div class="field-label">Renewal Threshold (days)</div>
340
+ <input type="number" .value=${String(this.settings.renewalThreshold)} @input=${(e) => this.updateSetting('renewalThreshold', parseInt(e.target.value))}>
341
+ <div class="form-hint">Renew certificates when they have fewer than this many days remaining.</div>
342
+ </div>
343
+ <div class="form-group">
344
+ <div class="field-label">ACME Email</div>
345
+ <input type="email" placeholder="admin@example.com" .value=${this.settings.acmeEmail} @input=${(e) => this.updateSetting('acmeEmail', e.target.value)}>
346
+ <div class="form-hint">Email address for Let's Encrypt notifications.</div>
347
+ </div>
348
+ </div>
349
+
350
+ <div class="section">
351
+ <div class="section-header">
352
+ <div class="section-title">Network Settings</div>
353
+ <div class="section-subtitle">Configure network and proxy settings</div>
354
+ </div>
355
+ <div class="input-row">
356
+ <div class="form-group">
357
+ <div class="field-label">HTTP Port</div>
358
+ <input type="number" .value=${String(this.settings.httpPort)} @input=${(e) => this.updateSetting('httpPort', parseInt(e.target.value))}>
359
+ </div>
360
+ <div class="form-group">
361
+ <div class="field-label">HTTPS Port</div>
362
+ <input type="number" .value=${String(this.settings.httpsPort)} @input=${(e) => this.updateSetting('httpsPort', parseInt(e.target.value))}>
363
+ </div>
364
+ </div>
365
+ <div class="form-row">
366
+ <div class="form-label-group">
367
+ <span class="form-label">Force HTTPS</span>
368
+ <span class="form-hint">Redirect all HTTP traffic to HTTPS</span>
369
+ </div>
370
+ <div class="toggle-switch ${this.settings.forceHttps ? 'active' : ''}" @click=${() => this.toggleSetting('forceHttps')}></div>
371
+ </div>
372
+ </div>
373
+
374
+ <div class="section">
375
+ <div class="section-header">
376
+ <div class="section-title">Account</div>
377
+ <div class="section-subtitle">Manage your account settings</div>
378
+ </div>
379
+ <div class="form-group">
380
+ <div class="field-label">Current User</div>
381
+ <div style="font-size: 14px; color: ${cssManager.bdTheme('#18181b', '#fafafa')};">${this.currentUser || 'Unknown'}</div>
382
+ </div>
383
+ <div class="password-section">
384
+ <div class="password-title">Change Password</div>
385
+ <div class="password-fields">
386
+ <div>
387
+ <div class="field-label">Current Password</div>
388
+ <input type="password" id="currentPassword">
389
+ </div>
390
+ <div>
391
+ <div class="field-label">New Password</div>
392
+ <input type="password" id="newPassword">
393
+ </div>
394
+ <div>
395
+ <div class="field-label">Confirm Password</div>
396
+ <input type="password" id="confirmPassword">
397
+ </div>
398
+ <button class="button secondary" style="width: fit-content;" @click=${() => this.handleChangePassword()}>Update Password</button>
399
+ </div>
400
+ </div>
401
+ </div>
402
+
403
+ <div class="actions">
404
+ <button class="button secondary" @click=${() => this.handleReset()}>Reset</button>
405
+ <button class="button primary" @click=${() => this.handleSave()}>Save Settings</button>
406
+ </div>
407
+ `;
408
+ }
409
+ toggleDarkMode() {
410
+ this.settings = { ...this.settings, darkMode: !this.settings.darkMode };
411
+ this.dispatchEvent(new CustomEvent('setting-change', { detail: { key: 'darkMode', value: this.settings.darkMode }, bubbles: true, composed: true }));
412
+ }
413
+ toggleSetting(key) {
414
+ this.settings[key] = !this.settings[key];
415
+ this.settings = { ...this.settings };
416
+ }
417
+ updateSetting(key, value) {
418
+ this.settings[key] = value;
419
+ this.settings = { ...this.settings };
420
+ }
421
+ handleChangePassword() {
422
+ const currentPassword = this.shadowRoot?.getElementById('currentPassword')?.value;
423
+ const newPassword = this.shadowRoot?.getElementById('newPassword')?.value;
424
+ const confirmPassword = this.shadowRoot?.getElementById('confirmPassword')?.value;
425
+ this.dispatchEvent(new CustomEvent('change-password', {
426
+ detail: { currentPassword, newPassword, confirmPassword },
427
+ bubbles: true,
428
+ composed: true
429
+ }));
430
+ }
431
+ handleReset() {
432
+ this.dispatchEvent(new CustomEvent('reset', { bubbles: true, composed: true }));
433
+ }
434
+ handleSave() {
435
+ this.dispatchEvent(new CustomEvent('save', { detail: this.settings, bubbles: true, composed: true }));
436
+ }
437
+ constructor() {
438
+ super(...arguments);
439
+ __runInitializers(this, _currentUser_extraInitializers);
440
+ }
441
+ static {
442
+ __runInitializers(_classThis, _classExtraInitializers);
443
+ }
444
+ };
445
+ return SzSettingsView = _classThis;
446
+ })();
447
+ export { SzSettingsView };
448
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3otc2V0dGluZ3Mtdmlldy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzX3dlYi9lbGVtZW50cy9zei1zZXR0aW5ncy12aWV3LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQ0wsV0FBVyxFQUNYLGFBQWEsRUFDYixJQUFJLEVBQ0osR0FBRyxFQUNILFVBQVUsRUFDVixRQUFRLEdBRVQsTUFBTSw2QkFBNkIsQ0FBQztJQXFCeEIsY0FBYzs0QkFEMUIsYUFBYSxDQUFDLGtCQUFrQixDQUFDOzs7O3NCQUNFLFdBQVc7Ozs7Ozs7OEJBQW5CLFNBQVEsV0FBVzs7OztvQ0FvQjVDLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQzt1Q0FhMUIsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO1lBWjNCLDZLQUFnQixRQUFRLDZCQUFSLFFBQVEsMkZBVXRCO1lBR0Ysc0xBQWdCLFdBQVcsNkJBQVgsV0FBVyxpR0FBYztZQWxDM0MsNktBbVlDOzs7O1FBbFlRLE1BQU0sQ0FBQyxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFBOzs7b0JBR2I7WUFDVixRQUFRLEVBQUUsSUFBSTtZQUNkLGVBQWUsRUFBRSxFQUFFO1lBQ25CLGdCQUFnQixFQUFFLEVBQUU7WUFDcEIsY0FBYyxFQUFFLElBQUk7WUFDcEIsZ0JBQWdCLEVBQUUsRUFBRTtZQUNwQixTQUFTLEVBQUUsbUJBQW1CO1lBQzlCLFFBQVEsRUFBRSxFQUFFO1lBQ1osU0FBUyxFQUFFLEdBQUc7WUFDZCxVQUFVLEVBQUUsSUFBSTtTQUNqQjs7OztHQUlOLENBQUM7UUFHRiw2RUFBc0M7WUFDcEMsUUFBUSxFQUFFLEtBQUs7WUFDZixlQUFlLEVBQUUsRUFBRTtZQUNuQixnQkFBZ0IsRUFBRSxFQUFFO1lBQ3BCLGNBQWMsRUFBRSxJQUFJO1lBQ3BCLGdC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
@@ -0,0 +1,17 @@
1
+ import { DeesElement, type TemplateResult } from '@design.estate/dees-element';
2
+ declare global {
3
+ interface HTMLElementTagNameMap {
4
+ 'sz-stat-card': SzStatCard;
5
+ }
6
+ }
7
+ export declare class SzStatCard extends DeesElement {
8
+ static demo: () => TemplateResult<1>;
9
+ accessor label: string;
10
+ accessor value: string;
11
+ accessor icon: string;
12
+ accessor variant: 'default' | 'success' | 'warning' | 'error';
13
+ accessor valueBadge: boolean;
14
+ static styles: import("@design.estate/dees-element").CSSResult[];
15
+ render(): TemplateResult;
16
+ private renderIcon;
17
+ }