@uptime.link/statuspage 1.0.73 → 1.1.0

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 (96) hide show
  1. package/dist_bundle/bundle.js +4096 -504
  2. package/dist_bundle/bundle.js.map +4 -4
  3. package/dist_ts_web/00_commitinfo_data.js +2 -2
  4. package/dist_ts_web/elements/index.d.ts +3 -0
  5. package/dist_ts_web/elements/index.js +6 -1
  6. package/dist_ts_web/elements/internal/uplinternal-miniheading.d.ts +1 -0
  7. package/dist_ts_web/elements/internal/uplinternal-miniheading.js +78 -28
  8. package/dist_ts_web/elements/upl-statuspage-assetsselector.d.ts +14 -0
  9. package/dist_ts_web/elements/upl-statuspage-assetsselector.demo.d.ts +1 -0
  10. package/dist_ts_web/elements/upl-statuspage-assetsselector.demo.js +575 -0
  11. package/dist_ts_web/elements/upl-statuspage-assetsselector.js +605 -43
  12. package/dist_ts_web/elements/upl-statuspage-footer.d.ts +46 -2
  13. package/dist_ts_web/elements/upl-statuspage-footer.demo.d.ts +1 -0
  14. package/dist_ts_web/elements/upl-statuspage-footer.demo.js +679 -0
  15. package/dist_ts_web/elements/upl-statuspage-footer.js +792 -61
  16. package/dist_ts_web/elements/upl-statuspage-header.d.ts +5 -1
  17. package/dist_ts_web/elements/upl-statuspage-header.demo.d.ts +1 -0
  18. package/dist_ts_web/elements/upl-statuspage-header.demo.js +220 -0
  19. package/dist_ts_web/elements/upl-statuspage-header.js +313 -86
  20. package/dist_ts_web/elements/upl-statuspage-incidents.d.ts +22 -4
  21. package/dist_ts_web/elements/upl-statuspage-incidents.demo.d.ts +1 -0
  22. package/dist_ts_web/elements/upl-statuspage-incidents.demo.js +1147 -0
  23. package/dist_ts_web/elements/upl-statuspage-incidents.js +750 -74
  24. package/dist_ts_web/elements/upl-statuspage-pagetitle.d.ts +15 -0
  25. package/dist_ts_web/elements/upl-statuspage-pagetitle.demo.d.ts +1 -0
  26. package/dist_ts_web/elements/upl-statuspage-pagetitle.demo.js +25 -0
  27. package/dist_ts_web/elements/upl-statuspage-pagetitle.js +148 -0
  28. package/dist_ts_web/elements/upl-statuspage-statsgrid.d.ts +23 -0
  29. package/dist_ts_web/elements/upl-statuspage-statsgrid.demo.d.ts +1 -0
  30. package/dist_ts_web/elements/upl-statuspage-statsgrid.demo.js +295 -0
  31. package/dist_ts_web/elements/upl-statuspage-statsgrid.js +374 -0
  32. package/dist_ts_web/elements/upl-statuspage-statusbar.d.ts +4 -0
  33. package/dist_ts_web/elements/upl-statuspage-statusbar.demo.d.ts +1 -0
  34. package/dist_ts_web/elements/upl-statuspage-statusbar.demo.js +365 -0
  35. package/dist_ts_web/elements/upl-statuspage-statusbar.js +357 -44
  36. package/dist_ts_web/elements/upl-statuspage-statusdetails.d.ts +14 -0
  37. package/dist_ts_web/elements/upl-statuspage-statusdetails.demo.d.ts +1 -0
  38. package/dist_ts_web/elements/upl-statuspage-statusdetails.demo.js +706 -0
  39. package/dist_ts_web/elements/upl-statuspage-statusdetails.js +373 -63
  40. package/dist_ts_web/elements/upl-statuspage-statusmonth.d.ts +15 -0
  41. package/dist_ts_web/elements/upl-statuspage-statusmonth.demo.d.ts +1 -0
  42. package/dist_ts_web/elements/upl-statuspage-statusmonth.demo.js +798 -0
  43. package/dist_ts_web/elements/upl-statuspage-statusmonth.js +474 -100
  44. package/dist_ts_web/interfaces/index.d.ts +84 -0
  45. package/dist_ts_web/interfaces/index.js +4 -0
  46. package/dist_ts_web/pages/index.d.ts +4 -1
  47. package/dist_ts_web/pages/index.js +5 -2
  48. package/dist_ts_web/pages/statuspage-allgreen.d.ts +1 -0
  49. package/dist_ts_web/pages/statuspage-allgreen.js +386 -0
  50. package/dist_ts_web/pages/statuspage-demo.d.ts +1 -0
  51. package/dist_ts_web/pages/statuspage-demo.js +616 -0
  52. package/dist_ts_web/pages/statuspage-maintenance.d.ts +1 -0
  53. package/dist_ts_web/pages/statuspage-maintenance.js +544 -0
  54. package/dist_ts_web/pages/statuspage-outage.d.ts +1 -0
  55. package/dist_ts_web/pages/statuspage-outage.js +543 -0
  56. package/dist_ts_web/styles/shared.styles.d.ts +80 -0
  57. package/dist_ts_web/styles/shared.styles.js +351 -0
  58. package/dist_watch/bundle.js +54534 -26433
  59. package/dist_watch/bundle.js.map +4 -4
  60. package/dist_watch/index.html +3 -10
  61. package/npmextra.json +9 -3
  62. package/package.json +19 -19
  63. package/readme.hints.md +292 -0
  64. package/readme.md +326 -149
  65. package/readme.plan.md +261 -0
  66. package/ts_web/00_commitinfo_data.ts +1 -1
  67. package/ts_web/elements/index.ts +6 -0
  68. package/ts_web/elements/internal/uplinternal-miniheading.ts +24 -17
  69. package/ts_web/elements/upl-statuspage-assetsselector.demo.ts +607 -0
  70. package/ts_web/elements/upl-statuspage-assetsselector.ts +526 -18
  71. package/ts_web/elements/upl-statuspage-footer.demo.ts +744 -0
  72. package/ts_web/elements/upl-statuspage-footer.ts +608 -30
  73. package/ts_web/elements/upl-statuspage-header.demo.ts +241 -0
  74. package/ts_web/elements/upl-statuspage-header.ts +220 -52
  75. package/ts_web/elements/upl-statuspage-incidents.demo.ts +1216 -0
  76. package/ts_web/elements/upl-statuspage-incidents.ts +649 -26
  77. package/ts_web/elements/upl-statuspage-pagetitle.demo.ts +25 -0
  78. package/ts_web/elements/upl-statuspage-pagetitle.ts +89 -0
  79. package/ts_web/elements/upl-statuspage-statsgrid.demo.ts +315 -0
  80. package/ts_web/elements/upl-statuspage-statsgrid.ts +306 -0
  81. package/ts_web/elements/upl-statuspage-statusbar.demo.ts +393 -0
  82. package/ts_web/elements/upl-statuspage-statusbar.ts +281 -20
  83. package/ts_web/elements/upl-statuspage-statusdetails.demo.ts +754 -0
  84. package/ts_web/elements/upl-statuspage-statusdetails.ts +297 -38
  85. package/ts_web/elements/upl-statuspage-statusmonth.demo.ts +876 -0
  86. package/ts_web/elements/upl-statuspage-statusmonth.ts +397 -76
  87. package/ts_web/interfaces/index.ts +95 -0
  88. package/ts_web/pages/index.ts +4 -1
  89. package/ts_web/pages/statuspage-allgreen.ts +412 -0
  90. package/ts_web/pages/statuspage-demo.ts +653 -0
  91. package/ts_web/pages/statuspage-maintenance.ts +570 -0
  92. package/ts_web/pages/statuspage-outage.ts +568 -0
  93. package/ts_web/styles/shared.styles.ts +367 -0
  94. package/dist_ts_web/pages/page1.d.ts +0 -1
  95. package/dist_ts_web/pages/page1.js +0 -11
  96. package/ts_web/pages/page1.ts +0 -11
@@ -0,0 +1,374 @@
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, property, html, customElement, css, cssManager, unsafeCSS, } from '@design.estate/dees-element';
36
+ import * as domtools from '@design.estate/dees-domtools';
37
+ import * as sharedStyles from '../styles/shared.styles.js';
38
+ import './internal/uplinternal-miniheading.js';
39
+ import { demoFunc } from './upl-statuspage-statsgrid.demo.js';
40
+ let UplStatuspageStatsgrid = (() => {
41
+ let _classDecorators = [customElement('upl-statuspage-statsgrid')];
42
+ let _classDescriptor;
43
+ let _classExtraInitializers = [];
44
+ let _classThis;
45
+ let _classSuper = DeesElement;
46
+ let _uptime_decorators;
47
+ let _uptime_initializers = [];
48
+ let _uptime_extraInitializers = [];
49
+ let _avgResponseTime_decorators;
50
+ let _avgResponseTime_initializers = [];
51
+ let _avgResponseTime_extraInitializers = [];
52
+ let _totalIncidents_decorators;
53
+ let _totalIncidents_initializers = [];
54
+ let _totalIncidents_extraInitializers = [];
55
+ let _affectedServices_decorators;
56
+ let _affectedServices_initializers = [];
57
+ let _affectedServices_extraInitializers = [];
58
+ let _totalServices_decorators;
59
+ let _totalServices_initializers = [];
60
+ let _totalServices_extraInitializers = [];
61
+ let _currentStatus_decorators;
62
+ let _currentStatus_initializers = [];
63
+ let _currentStatus_extraInitializers = [];
64
+ let _loading_decorators;
65
+ let _loading_initializers = [];
66
+ let _loading_extraInitializers = [];
67
+ let _timePeriod_decorators;
68
+ let _timePeriod_initializers = [];
69
+ let _timePeriod_extraInitializers = [];
70
+ var UplStatuspageStatsgrid = class extends _classSuper {
71
+ static { _classThis = this; }
72
+ static {
73
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
74
+ _uptime_decorators = [property({ type: Number })];
75
+ _avgResponseTime_decorators = [property({ type: Number })];
76
+ _totalIncidents_decorators = [property({ type: Number })];
77
+ _affectedServices_decorators = [property({ type: Number })];
78
+ _totalServices_decorators = [property({ type: Number })];
79
+ _currentStatus_decorators = [property({ type: String })];
80
+ _loading_decorators = [property({ type: Boolean })];
81
+ _timePeriod_decorators = [property({ type: String })];
82
+ __esDecorate(this, null, _uptime_decorators, { kind: "accessor", name: "uptime", static: false, private: false, access: { has: obj => "uptime" in obj, get: obj => obj.uptime, set: (obj, value) => { obj.uptime = value; } }, metadata: _metadata }, _uptime_initializers, _uptime_extraInitializers);
83
+ __esDecorate(this, null, _avgResponseTime_decorators, { kind: "accessor", name: "avgResponseTime", static: false, private: false, access: { has: obj => "avgResponseTime" in obj, get: obj => obj.avgResponseTime, set: (obj, value) => { obj.avgResponseTime = value; } }, metadata: _metadata }, _avgResponseTime_initializers, _avgResponseTime_extraInitializers);
84
+ __esDecorate(this, null, _totalIncidents_decorators, { kind: "accessor", name: "totalIncidents", static: false, private: false, access: { has: obj => "totalIncidents" in obj, get: obj => obj.totalIncidents, set: (obj, value) => { obj.totalIncidents = value; } }, metadata: _metadata }, _totalIncidents_initializers, _totalIncidents_extraInitializers);
85
+ __esDecorate(this, null, _affectedServices_decorators, { kind: "accessor", name: "affectedServices", static: false, private: false, access: { has: obj => "affectedServices" in obj, get: obj => obj.affectedServices, set: (obj, value) => { obj.affectedServices = value; } }, metadata: _metadata }, _affectedServices_initializers, _affectedServices_extraInitializers);
86
+ __esDecorate(this, null, _totalServices_decorators, { kind: "accessor", name: "totalServices", static: false, private: false, access: { has: obj => "totalServices" in obj, get: obj => obj.totalServices, set: (obj, value) => { obj.totalServices = value; } }, metadata: _metadata }, _totalServices_initializers, _totalServices_extraInitializers);
87
+ __esDecorate(this, null, _currentStatus_decorators, { kind: "accessor", name: "currentStatus", static: false, private: false, access: { has: obj => "currentStatus" in obj, get: obj => obj.currentStatus, set: (obj, value) => { obj.currentStatus = value; } }, metadata: _metadata }, _currentStatus_initializers, _currentStatus_extraInitializers);
88
+ __esDecorate(this, null, _loading_decorators, { kind: "accessor", name: "loading", static: false, private: false, access: { has: obj => "loading" in obj, get: obj => obj.loading, set: (obj, value) => { obj.loading = value; } }, metadata: _metadata }, _loading_initializers, _loading_extraInitializers);
89
+ __esDecorate(this, null, _timePeriod_decorators, { kind: "accessor", name: "timePeriod", static: false, private: false, access: { has: obj => "timePeriod" in obj, get: obj => obj.timePeriod, set: (obj, value) => { obj.timePeriod = value; } }, metadata: _metadata }, _timePeriod_initializers, _timePeriod_extraInitializers);
90
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
91
+ UplStatuspageStatsgrid = _classThis = _classDescriptor.value;
92
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
93
+ }
94
+ static demo = demoFunc;
95
+ #uptime_accessor_storage = __runInitializers(this, _uptime_initializers, 99.99);
96
+ get uptime() { return this.#uptime_accessor_storage; }
97
+ set uptime(value) { this.#uptime_accessor_storage = value; }
98
+ #avgResponseTime_accessor_storage = (__runInitializers(this, _uptime_extraInitializers), __runInitializers(this, _avgResponseTime_initializers, 125));
99
+ get avgResponseTime() { return this.#avgResponseTime_accessor_storage; }
100
+ set avgResponseTime(value) { this.#avgResponseTime_accessor_storage = value; }
101
+ #totalIncidents_accessor_storage = (__runInitializers(this, _avgResponseTime_extraInitializers), __runInitializers(this, _totalIncidents_initializers, 0));
102
+ get totalIncidents() { return this.#totalIncidents_accessor_storage; }
103
+ set totalIncidents(value) { this.#totalIncidents_accessor_storage = value; }
104
+ #affectedServices_accessor_storage = (__runInitializers(this, _totalIncidents_extraInitializers), __runInitializers(this, _affectedServices_initializers, 0));
105
+ get affectedServices() { return this.#affectedServices_accessor_storage; }
106
+ set affectedServices(value) { this.#affectedServices_accessor_storage = value; }
107
+ #totalServices_accessor_storage = (__runInitializers(this, _affectedServices_extraInitializers), __runInitializers(this, _totalServices_initializers, 0));
108
+ get totalServices() { return this.#totalServices_accessor_storage; }
109
+ set totalServices(value) { this.#totalServices_accessor_storage = value; }
110
+ #currentStatus_accessor_storage = (__runInitializers(this, _totalServices_extraInitializers), __runInitializers(this, _currentStatus_initializers, 'operational'));
111
+ get currentStatus() { return this.#currentStatus_accessor_storage; }
112
+ set currentStatus(value) { this.#currentStatus_accessor_storage = value; }
113
+ #loading_accessor_storage = (__runInitializers(this, _currentStatus_extraInitializers), __runInitializers(this, _loading_initializers, false));
114
+ get loading() { return this.#loading_accessor_storage; }
115
+ set loading(value) { this.#loading_accessor_storage = value; }
116
+ #timePeriod_accessor_storage = (__runInitializers(this, _loading_extraInitializers), __runInitializers(this, _timePeriod_initializers, '90 days'));
117
+ get timePeriod() { return this.#timePeriod_accessor_storage; }
118
+ set timePeriod(value) { this.#timePeriod_accessor_storage = value; }
119
+ constructor() {
120
+ super();
121
+ __runInitializers(this, _timePeriod_extraInitializers);
122
+ }
123
+ static styles = [
124
+ domtools.elementBasic.staticStyles,
125
+ sharedStyles.commonStyles,
126
+ css `
127
+ :host {
128
+ display: block;
129
+ background: transparent;
130
+ font-family: ${unsafeCSS(sharedStyles.fonts.base)};
131
+ color: ${sharedStyles.colors.text.primary};
132
+ }
133
+
134
+ .container {
135
+ max-width: 1200px;
136
+ margin: 0 auto;
137
+ padding: 0 ${unsafeCSS(sharedStyles.spacing.lg)} ${unsafeCSS(sharedStyles.spacing.lg)} ${unsafeCSS(sharedStyles.spacing.lg)};
138
+ }
139
+
140
+ .stats-grid {
141
+ display: grid;
142
+ grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
143
+ gap: ${unsafeCSS(sharedStyles.spacing.md)};
144
+ }
145
+
146
+ .stat-card {
147
+ background: ${cssManager.bdTheme('#ffffff', '#0a0a0a')};
148
+ border: 1px solid ${cssManager.bdTheme('#e5e7eb', '#27272a')};
149
+ border-radius: ${unsafeCSS(sharedStyles.borderRadius.base)};
150
+ padding: ${unsafeCSS(sharedStyles.spacing.lg)};
151
+ transition: all 0.2s ease;
152
+ }
153
+
154
+ .stat-card:hover {
155
+ border-color: ${cssManager.bdTheme('#d1d5db', '#3f3f46')};
156
+ box-shadow: ${cssManager.bdTheme('0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)', '0 0 0 1px rgba(255, 255, 255, 0.1)')};
157
+ }
158
+
159
+ .stat-label {
160
+ font-size: 12px;
161
+ color: ${cssManager.bdTheme('#6b7280', '#a1a1aa')};
162
+ text-transform: uppercase;
163
+ letter-spacing: 0.05em;
164
+ font-weight: 500;
165
+ margin-bottom: ${unsafeCSS(sharedStyles.spacing.sm)};
166
+ display: flex;
167
+ align-items: center;
168
+ gap: ${unsafeCSS(sharedStyles.spacing.xs)};
169
+ }
170
+
171
+ .stat-value {
172
+ font-size: 24px;
173
+ font-weight: 600;
174
+ color: ${cssManager.bdTheme('#0a0a0a', '#fafafa')};
175
+ font-variant-numeric: tabular-nums;
176
+ line-height: 1.2;
177
+ }
178
+
179
+ .stat-unit {
180
+ font-size: 14px;
181
+ font-weight: 400;
182
+ color: ${cssManager.bdTheme('#6b7280', '#a1a1aa')};
183
+ margin-left: 4px;
184
+ }
185
+
186
+ .stat-change {
187
+ font-size: 12px;
188
+ margin-top: ${unsafeCSS(sharedStyles.spacing.xs)};
189
+ display: flex;
190
+ align-items: center;
191
+ gap: 4px;
192
+ }
193
+
194
+ .stat-change.positive {
195
+ color: ${cssManager.bdTheme('#10b981', '#10b981')};
196
+ }
197
+
198
+ .stat-change.negative {
199
+ color: ${cssManager.bdTheme('#ef4444', '#ef4444')};
200
+ }
201
+
202
+ .stat-change.neutral {
203
+ color: ${cssManager.bdTheme('#6b7280', '#a1a1aa')};
204
+ }
205
+
206
+ .loading-skeleton {
207
+ display: grid;
208
+ grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
209
+ gap: ${unsafeCSS(sharedStyles.spacing.md)};
210
+ }
211
+
212
+ .skeleton-card {
213
+ background: ${cssManager.bdTheme('#ffffff', '#0a0a0a')};
214
+ border: 1px solid ${cssManager.bdTheme('#e5e7eb', '#27272a')};
215
+ border-radius: ${unsafeCSS(sharedStyles.borderRadius.base)};
216
+ padding: ${unsafeCSS(sharedStyles.spacing.lg)};
217
+ height: 100px;
218
+ }
219
+
220
+ .skeleton-label {
221
+ height: 14px;
222
+ width: 80px;
223
+ background: ${cssManager.bdTheme('#f3f4f6', '#27272a')};
224
+ border-radius: 4px;
225
+ margin-bottom: ${unsafeCSS(sharedStyles.spacing.sm)};
226
+ animation: pulse 2s infinite;
227
+ }
228
+
229
+ .skeleton-value {
230
+ height: 28px;
231
+ width: 120px;
232
+ background: ${cssManager.bdTheme('#f3f4f6', '#27272a')};
233
+ border-radius: 4px;
234
+ animation: pulse 2s infinite;
235
+ animation-delay: 0.1s;
236
+ }
237
+
238
+ @keyframes pulse {
239
+ 0%, 100% { opacity: 1; }
240
+ 50% { opacity: 0.5; }
241
+ }
242
+
243
+ .status-indicator {
244
+ display: inline-block;
245
+ width: 6px;
246
+ height: 6px;
247
+ border-radius: 50%;
248
+ }
249
+
250
+ .status-indicator.operational {
251
+ background: ${sharedStyles.colors.status.operational};
252
+ }
253
+
254
+ .status-indicator.degraded {
255
+ background: ${sharedStyles.colors.status.degraded};
256
+ }
257
+
258
+ .status-indicator.partial_outage {
259
+ background: ${sharedStyles.colors.status.partial};
260
+ }
261
+
262
+ .status-indicator.major_outage {
263
+ background: ${sharedStyles.colors.status.major};
264
+ }
265
+
266
+ .status-indicator.maintenance {
267
+ background: ${sharedStyles.colors.status.maintenance};
268
+ }
269
+
270
+ @media (max-width: 640px) {
271
+ .container {
272
+ padding: 0 ${unsafeCSS(sharedStyles.spacing.md)} ${unsafeCSS(sharedStyles.spacing.md)} ${unsafeCSS(sharedStyles.spacing.md)};
273
+ }
274
+
275
+ .stats-grid {
276
+ grid-template-columns: 1fr;
277
+ gap: ${unsafeCSS(sharedStyles.spacing.sm)};
278
+ }
279
+
280
+ .stat-card {
281
+ padding: ${unsafeCSS(sharedStyles.spacing.md)};
282
+ }
283
+
284
+ .stat-value {
285
+ font-size: 20px;
286
+ }
287
+ }
288
+ `,
289
+ ];
290
+ render() {
291
+ return html `
292
+ <div class="container">
293
+ ${this.loading ? html `
294
+ <div class="loading-skeleton">
295
+ ${Array(4).fill(0).map(() => html `
296
+ <div class="skeleton-card">
297
+ <div class="skeleton-label"></div>
298
+ <div class="skeleton-value"></div>
299
+ </div>
300
+ `)}
301
+ </div>
302
+ ` : html `
303
+ <div class="stats-grid">
304
+ <div class="stat-card">
305
+ <div class="stat-label">
306
+ <span class="status-indicator ${this.currentStatus}"></span>
307
+ Current Status
308
+ </div>
309
+ <div class="stat-value">
310
+ ${this.formatStatus(this.currentStatus)}
311
+ </div>
312
+ </div>
313
+
314
+ <div class="stat-card">
315
+ <div class="stat-label">Uptime</div>
316
+ <div class="stat-value">
317
+ ${this.uptime.toFixed(2)}<span class="stat-unit">%</span>
318
+ </div>
319
+ <div class="stat-change neutral">
320
+ Last ${this.timePeriod}
321
+ </div>
322
+ </div>
323
+
324
+ <div class="stat-card">
325
+ <div class="stat-label">Avg Response Time</div>
326
+ <div class="stat-value">
327
+ ${this.avgResponseTime}<span class="stat-unit">ms</span>
328
+ </div>
329
+ ${this.renderResponseChange()}
330
+ </div>
331
+
332
+ <div class="stat-card">
333
+ <div class="stat-label">Incidents</div>
334
+ <div class="stat-value">
335
+ ${this.totalIncidents}
336
+ </div>
337
+ <div class="stat-change neutral">
338
+ ${this.affectedServices} of ${this.totalServices} services
339
+ </div>
340
+ </div>
341
+ </div>
342
+ `}
343
+ </div>
344
+ `;
345
+ }
346
+ formatStatus(status) {
347
+ const statusMap = {
348
+ operational: 'Operational',
349
+ degraded: 'Degraded',
350
+ partial_outage: 'Partial Outage',
351
+ major_outage: 'Major Outage',
352
+ maintenance: 'Maintenance',
353
+ };
354
+ return statusMap[status] || 'Unknown';
355
+ }
356
+ renderResponseChange() {
357
+ // This could be enhanced with actual trend data
358
+ const trend = this.avgResponseTime < 200 ? 'positive' : this.avgResponseTime > 500 ? 'negative' : 'neutral';
359
+ const icon = trend === 'positive' ? '↓' : trend === 'negative' ? '↑' : '→';
360
+ return html `
361
+ <div class="stat-change ${trend}">
362
+ <span>${icon}</span>
363
+ <span>${trend === 'positive' ? 'Fast' : trend === 'negative' ? 'Slow' : 'Normal'}</span>
364
+ </div>
365
+ `;
366
+ }
367
+ static {
368
+ __runInitializers(_classThis, _classExtraInitializers);
369
+ }
370
+ };
371
+ return UplStatuspageStatsgrid = _classThis;
372
+ })();
373
+ export { UplStatuspageStatsgrid };
374
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsLXN0YXR1c3BhZ2Utc3RhdHNncmlkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHNfd2ViL2VsZW1lbnRzL3VwbC1zdGF0dXNwYWdlLXN0YXRzZ3JpZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUNMLFdBQVcsRUFDWCxRQUFRLEVBQ1IsSUFBSSxFQUNKLGFBQWEsRUFFYixHQUFHLEVBQ0gsVUFBVSxFQUNWLFNBQVMsR0FDVixNQUFNLDZCQUE2QixDQUFDO0FBQ3JDLE9BQU8sS0FBSyxRQUFRLE1BQU0sOEJBQThCLENBQUM7QUFDekQsT0FBTyxLQUFLLFlBQVksTUFBTSw0QkFBNEIsQ0FBQztBQUUzRCxPQUFPLHVDQUF1QyxDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztJQVNqRCxzQkFBc0I7NEJBRGxDLGFBQWEsQ0FBQywwQkFBMEIsQ0FBQzs7OztzQkFDRSxXQUFXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3NDQUFuQixTQUFRLFdBQVc7Ozs7a0NBR3BELFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQzsyQ0FHMUIsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDOzBDQUcxQixRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7NENBRzFCLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQzt5Q0FHMUIsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO3lDQUcxQixRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7bUNBRzFCLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQztzQ0FHM0IsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFB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
@@ -1,4 +1,5 @@
1
1
  import { DeesElement, type TemplateResult } from '@design.estate/dees-element';
2
+ import type { IOverallStatus } from '../interfaces/index.js';
2
3
  declare global {
3
4
  interface HTMLElementTagNameMap {
4
5
  'upl-statuspage-statusbar': UplStatuspageStatusbar;
@@ -6,6 +7,9 @@ declare global {
6
7
  }
7
8
  export declare class UplStatuspageStatusbar extends DeesElement {
8
9
  static demo: () => TemplateResult<1>;
10
+ accessor overallStatus: IOverallStatus;
11
+ accessor loading: boolean;
12
+ accessor expandable: boolean;
9
13
  constructor();
10
14
  static styles: import("@design.estate/dees-element").CSSResult[];
11
15
  render(): TemplateResult;
@@ -0,0 +1 @@
1
+ export declare const demoFunc: () => import("@design.estate/dees-element").TemplateResult<1>;