@uptime.link/statuspage 1.0.74 → 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 (95) 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 +51691 -32432
  59. package/dist_watch/bundle.js.map +4 -4
  60. package/npmextra.json +9 -3
  61. package/package.json +19 -19
  62. package/readme.hints.md +292 -0
  63. package/readme.md +326 -149
  64. package/readme.plan.md +261 -0
  65. package/ts_web/00_commitinfo_data.ts +1 -1
  66. package/ts_web/elements/index.ts +6 -0
  67. package/ts_web/elements/internal/uplinternal-miniheading.ts +24 -17
  68. package/ts_web/elements/upl-statuspage-assetsselector.demo.ts +607 -0
  69. package/ts_web/elements/upl-statuspage-assetsselector.ts +526 -18
  70. package/ts_web/elements/upl-statuspage-footer.demo.ts +744 -0
  71. package/ts_web/elements/upl-statuspage-footer.ts +608 -30
  72. package/ts_web/elements/upl-statuspage-header.demo.ts +241 -0
  73. package/ts_web/elements/upl-statuspage-header.ts +220 -52
  74. package/ts_web/elements/upl-statuspage-incidents.demo.ts +1216 -0
  75. package/ts_web/elements/upl-statuspage-incidents.ts +649 -26
  76. package/ts_web/elements/upl-statuspage-pagetitle.demo.ts +25 -0
  77. package/ts_web/elements/upl-statuspage-pagetitle.ts +89 -0
  78. package/ts_web/elements/upl-statuspage-statsgrid.demo.ts +315 -0
  79. package/ts_web/elements/upl-statuspage-statsgrid.ts +306 -0
  80. package/ts_web/elements/upl-statuspage-statusbar.demo.ts +393 -0
  81. package/ts_web/elements/upl-statuspage-statusbar.ts +281 -20
  82. package/ts_web/elements/upl-statuspage-statusdetails.demo.ts +754 -0
  83. package/ts_web/elements/upl-statuspage-statusdetails.ts +297 -38
  84. package/ts_web/elements/upl-statuspage-statusmonth.demo.ts +876 -0
  85. package/ts_web/elements/upl-statuspage-statusmonth.ts +397 -76
  86. package/ts_web/interfaces/index.ts +95 -0
  87. package/ts_web/pages/index.ts +4 -1
  88. package/ts_web/pages/statuspage-allgreen.ts +412 -0
  89. package/ts_web/pages/statuspage-demo.ts +653 -0
  90. package/ts_web/pages/statuspage-maintenance.ts +570 -0
  91. package/ts_web/pages/statuspage-outage.ts +568 -0
  92. package/ts_web/styles/shared.styles.ts +367 -0
  93. package/dist_ts_web/pages/page1.d.ts +0 -1
  94. package/dist_ts_web/pages/page1.js +0 -11
  95. package/ts_web/pages/page1.ts +0 -11
@@ -1,55 +1,368 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
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;
6
27
  };
7
- var __metadata = (this && this.__metadata) || function (k, v) {
8
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
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;
9
34
  };
10
- import { DeesElement, property, html, customElement, cssManager, css } from '@design.estate/dees-element';
35
+ import { DeesElement, property, html, customElement, cssManager, css, unsafeCSS } from '@design.estate/dees-element';
11
36
  import * as domtools from '@design.estate/dees-domtools';
12
- let UplStatuspageStatusbar = class UplStatuspageStatusbar extends DeesElement {
13
- static { this.demo = () => html `
14
- <upl-statuspage-statusbar></upl-statuspage-statusbar>
15
- `; }
16
- constructor() {
17
- super();
18
- }
19
- static { this.styles = [
20
- cssManager.defaultStyles,
21
- css `
37
+ import * as sharedStyles from '../styles/shared.styles.js';
38
+ import { demoFunc } from './upl-statuspage-statusbar.demo.js';
39
+ let UplStatuspageStatusbar = (() => {
40
+ let _classDecorators = [customElement('upl-statuspage-statusbar')];
41
+ let _classDescriptor;
42
+ let _classExtraInitializers = [];
43
+ let _classThis;
44
+ let _classSuper = DeesElement;
45
+ let _overallStatus_decorators;
46
+ let _overallStatus_initializers = [];
47
+ let _overallStatus_extraInitializers = [];
48
+ let _loading_decorators;
49
+ let _loading_initializers = [];
50
+ let _loading_extraInitializers = [];
51
+ let _expandable_decorators;
52
+ let _expandable_initializers = [];
53
+ let _expandable_extraInitializers = [];
54
+ var UplStatuspageStatusbar = 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
+ _overallStatus_decorators = [property({ type: Object })];
59
+ _loading_decorators = [property({ type: Boolean })];
60
+ _expandable_decorators = [property({ type: Boolean })];
61
+ __esDecorate(this, null, _overallStatus_decorators, { kind: "accessor", name: "overallStatus", static: false, private: false, access: { has: obj => "overallStatus" in obj, get: obj => obj.overallStatus, set: (obj, value) => { obj.overallStatus = value; } }, metadata: _metadata }, _overallStatus_initializers, _overallStatus_extraInitializers);
62
+ __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);
63
+ __esDecorate(this, null, _expandable_decorators, { kind: "accessor", name: "expandable", static: false, private: false, access: { has: obj => "expandable" in obj, get: obj => obj.expandable, set: (obj, value) => { obj.expandable = value; } }, metadata: _metadata }, _expandable_initializers, _expandable_extraInitializers);
64
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
65
+ UplStatuspageStatusbar = _classThis = _classDescriptor.value;
66
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
67
+ }
68
+ static demo = demoFunc;
69
+ #overallStatus_accessor_storage = __runInitializers(this, _overallStatus_initializers, {
70
+ status: 'operational',
71
+ message: 'All Systems Operational',
72
+ lastUpdated: Date.now(),
73
+ affectedServices: 0,
74
+ totalServices: 0
75
+ });
76
+ get overallStatus() { return this.#overallStatus_accessor_storage; }
77
+ set overallStatus(value) { this.#overallStatus_accessor_storage = value; }
78
+ #loading_accessor_storage = (__runInitializers(this, _overallStatus_extraInitializers), __runInitializers(this, _loading_initializers, false));
79
+ get loading() { return this.#loading_accessor_storage; }
80
+ set loading(value) { this.#loading_accessor_storage = value; }
81
+ #expandable_accessor_storage = (__runInitializers(this, _loading_extraInitializers), __runInitializers(this, _expandable_initializers, true));
82
+ get expandable() { return this.#expandable_accessor_storage; }
83
+ set expandable(value) { this.#expandable_accessor_storage = value; }
84
+ constructor() {
85
+ super();
86
+ __runInitializers(this, _expandable_extraInitializers);
87
+ }
88
+ static styles = [
89
+ cssManager.defaultStyles,
90
+ css `
22
91
  :host {
23
- padding: 20px 0px 15px 0px;
24
- display: block;
25
- background: ${cssManager.bdTheme('#eeeeeb', '#222222')};;
26
- font-family: Inter;
27
- color: #fff;
92
+ padding: 0;
93
+ display: block;
94
+ background: transparent;
95
+ font-family: ${unsafeCSS(sharedStyles.fonts.base)};
96
+ }
97
+
98
+ .statusbar-container {
99
+ margin: auto;
100
+ max-width: 1200px;
101
+ padding: ${unsafeCSS(sharedStyles.spacing.lg)};
102
+ position: relative;
103
+ }
104
+
105
+ .statusbar-inner {
106
+ display: flex;
107
+ align-items: center;
108
+ justify-content: space-between;
109
+ min-height: 64px;
110
+ padding: ${unsafeCSS(sharedStyles.spacing.md)} ${unsafeCSS(sharedStyles.spacing.lg)};
111
+ border-radius: ${unsafeCSS(sharedStyles.borderRadius.lg)};
112
+ cursor: default;
113
+ transition: all ${unsafeCSS(sharedStyles.durations.normal)} ${unsafeCSS(sharedStyles.easings.default)};
114
+ position: relative;
115
+ overflow: hidden;
116
+ font-weight: 500;
117
+ font-size: 15px;
118
+ letter-spacing: -0.01em;
119
+ background: ${sharedStyles.colors.background.card};
120
+ border: 1px solid ${sharedStyles.colors.border.default};
121
+ box-shadow: ${unsafeCSS(sharedStyles.shadows.sm)};
122
+ }
123
+
124
+ .statusbar-inner::before {
125
+ content: '';
126
+ position: absolute;
127
+ left: 0;
128
+ top: 0;
129
+ bottom: 0;
130
+ width: 4px;
131
+ transition: background ${unsafeCSS(sharedStyles.durations.normal)} ${unsafeCSS(sharedStyles.easings.default)};
132
+ }
133
+
134
+ .statusbar-inner.operational::before {
135
+ background: ${sharedStyles.colors.status.operational};
136
+ }
137
+
138
+ .statusbar-inner.degraded::before {
139
+ background: ${sharedStyles.colors.status.degraded};
140
+ }
141
+
142
+ .statusbar-inner.partial_outage::before {
143
+ background: ${sharedStyles.colors.status.partial};
144
+ }
145
+
146
+ .statusbar-inner.major_outage::before {
147
+ background: ${sharedStyles.colors.status.major};
148
+ }
149
+
150
+ .statusbar-inner.maintenance::before {
151
+ background: ${sharedStyles.colors.status.maintenance};
152
+ }
153
+
154
+ .statusbar-inner:hover {
155
+ border-color: ${sharedStyles.colors.border.muted};
156
+ box-shadow: ${unsafeCSS(sharedStyles.shadows.base)};
157
+ }
158
+
159
+ .status-indicator {
160
+ width: 10px;
161
+ height: 10px;
162
+ border-radius: 50%;
163
+ flex-shrink: 0;
164
+ position: relative;
165
+ }
166
+
167
+ .status-indicator::after {
168
+ content: '';
169
+ position: absolute;
170
+ inset: -3px;
171
+ border-radius: 50%;
172
+ opacity: 0.2;
173
+ }
174
+
175
+ .statusbar-inner.operational .status-indicator {
176
+ background: ${sharedStyles.colors.status.operational};
177
+ box-shadow: 0 0 0 3px ${cssManager.bdTheme('rgba(22, 163, 74, 0.15)', 'rgba(34, 197, 94, 0.2)')};
178
+ }
179
+
180
+ .statusbar-inner.operational .status-indicator::after {
181
+ background: ${sharedStyles.colors.status.operational};
182
+ animation: pulse-ring 2s ease-out infinite;
183
+ }
184
+
185
+ .statusbar-inner.degraded .status-indicator {
186
+ background: ${sharedStyles.colors.status.degraded};
187
+ box-shadow: 0 0 0 3px ${cssManager.bdTheme('rgba(217, 119, 6, 0.15)', 'rgba(251, 191, 36, 0.2)')};
188
+ }
189
+
190
+ .statusbar-inner.partial_outage .status-indicator {
191
+ background: ${sharedStyles.colors.status.partial};
192
+ box-shadow: 0 0 0 3px ${cssManager.bdTheme('rgba(220, 38, 38, 0.15)', 'rgba(248, 113, 113, 0.2)')};
193
+ }
194
+
195
+ .statusbar-inner.major_outage .status-indicator {
196
+ background: ${sharedStyles.colors.status.major};
197
+ box-shadow: 0 0 0 3px ${cssManager.bdTheme('rgba(185, 28, 28, 0.15)', 'rgba(239, 68, 68, 0.2)')};
198
+ animation: pulse-indicator 1s ease-in-out infinite;
199
+ }
200
+
201
+ .statusbar-inner.maintenance .status-indicator {
202
+ background: ${sharedStyles.colors.status.maintenance};
203
+ box-shadow: 0 0 0 3px ${cssManager.bdTheme('rgba(37, 99, 235, 0.15)', 'rgba(96, 165, 250, 0.2)')};
204
+ }
205
+
206
+ @keyframes pulse-ring {
207
+ 0% { transform: scale(1); opacity: 0.2; }
208
+ 50% { transform: scale(1.5); opacity: 0; }
209
+ 100% { transform: scale(1); opacity: 0; }
210
+ }
211
+
212
+ @keyframes pulse-indicator {
213
+ 0%, 100% { opacity: 1; }
214
+ 50% { opacity: 0.6; }
215
+ }
216
+
217
+ .status-content {
218
+ display: flex;
219
+ align-items: center;
220
+ gap: ${unsafeCSS(sharedStyles.spacing.md)};
221
+ flex: 1;
222
+ padding-left: ${unsafeCSS(sharedStyles.spacing.sm)};
223
+ }
224
+
225
+ .status-main {
226
+ display: flex;
227
+ align-items: center;
228
+ gap: ${unsafeCSS(sharedStyles.spacing.sm)};
229
+ color: ${sharedStyles.colors.text.primary};
230
+ }
231
+
232
+ .status-message {
233
+ font-weight: 600;
234
+ }
235
+
236
+ .status-details {
237
+ font-size: 13px;
238
+ font-weight: 400;
239
+ color: ${sharedStyles.colors.text.secondary};
240
+ }
241
+
242
+ .loading-skeleton {
243
+ background: ${sharedStyles.colors.background.card};
244
+ border: 1px solid ${sharedStyles.colors.border.default};
245
+ border-radius: ${unsafeCSS(sharedStyles.borderRadius.lg)};
246
+ height: 64px;
247
+ position: relative;
248
+ overflow: hidden;
249
+ }
250
+
251
+ .loading-skeleton::after {
252
+ content: '';
253
+ position: absolute;
254
+ top: 0;
255
+ left: 0;
256
+ right: 0;
257
+ bottom: 0;
258
+ background: ${cssManager.bdTheme('linear-gradient(90deg, transparent 0%, rgba(0,0,0,0.04) 50%, transparent 100%)', 'linear-gradient(90deg, transparent 0%, rgba(255,255,255,0.04) 50%, transparent 100%)')};
259
+ animation: loading 1.5s ${unsafeCSS(sharedStyles.easings.default)} infinite;
260
+ }
261
+
262
+ @keyframes loading {
263
+ 0% { transform: translateX(-100%); }
264
+ 100% { transform: translateX(200%); }
265
+ }
266
+
267
+ .last-updated {
268
+ font-size: 12px;
269
+ color: ${sharedStyles.colors.text.muted};
270
+ white-space: nowrap;
271
+ padding: 4px 10px;
272
+ background: ${sharedStyles.colors.background.muted};
273
+ border-radius: ${unsafeCSS(sharedStyles.borderRadius.full)};
274
+ transition: all ${unsafeCSS(sharedStyles.durations.fast)} ${unsafeCSS(sharedStyles.easings.default)};
275
+ }
276
+
277
+ .statusbar-inner:hover .last-updated {
278
+ background: ${cssManager.bdTheme('#e4e4e7', '#3f3f46')};
279
+ }
280
+
281
+ @media (max-width: 768px) {
282
+ .statusbar-container {
283
+ padding: ${unsafeCSS(sharedStyles.spacing.md)};
284
+ }
285
+
286
+ .statusbar-inner {
287
+ flex-direction: column;
288
+ align-items: flex-start;
289
+ gap: ${unsafeCSS(sharedStyles.spacing.sm)};
290
+ min-height: auto;
291
+ padding: ${unsafeCSS(sharedStyles.spacing.md)};
28
292
  }
29
293
 
30
- .mainbox {
31
- margin: auto;
32
- max-width: 900px;
33
- text-align: center;
34
- background: #19572E;
35
- line-height: 50px;
36
- border-radius: 3px;
294
+ .status-main {
295
+ flex-direction: column;
296
+ align-items: flex-start;
297
+ gap: 4px;
37
298
  }
299
+
300
+ .last-updated {
301
+ align-self: flex-start;
302
+ }
303
+ }
304
+
305
+ @media (max-width: 640px) {
306
+ .statusbar-inner {
307
+ font-size: 14px;
308
+ }
309
+
310
+ .status-indicator {
311
+ width: 8px;
312
+ height: 8px;
313
+ }
314
+
315
+ .last-updated {
316
+ font-size: 11px;
317
+ }
318
+ }
38
319
  `,
39
- ]; }
40
- render() {
41
- return html `
42
- <style>
43
- </style>
44
- <div class="mainbox">
45
- Everything is working normally!
320
+ ];
321
+ render() {
322
+ const formatLastUpdated = () => {
323
+ const date = new Date(this.overallStatus.lastUpdated);
324
+ const now = new Date();
325
+ const diff = now.getTime() - date.getTime();
326
+ const minutes = Math.floor(diff / 60000);
327
+ if (minutes < 1)
328
+ return 'Just now';
329
+ if (minutes < 60)
330
+ return `${minutes}m ago`;
331
+ const hours = Math.floor(minutes / 60);
332
+ if (hours < 24)
333
+ return `${hours}h ago`;
334
+ return date.toLocaleDateString();
335
+ };
336
+ return html `
337
+ <div class="statusbar-container">
338
+ ${this.loading ? html `
339
+ <div class="loading-skeleton"></div>
340
+ ` : html `
341
+ <div class="statusbar-inner ${this.overallStatus.status}">
342
+ <div class="status-content">
343
+ <div class="status-indicator"></div>
344
+ <div class="status-main">
345
+ <span>${this.overallStatus.message}</span>
346
+ ${this.overallStatus.affectedServices > 0 ? html `
347
+ <span class="status-details">
348
+ · ${this.overallStatus.affectedServices} of ${this.overallStatus.totalServices} services affected
349
+ </span>
350
+ ` : ''}
351
+ </div>
352
+ </div>
353
+ <div class="last-updated">
354
+ ${formatLastUpdated()}
355
+ </div>
356
+ </div>
357
+ `}
46
358
  </div>
47
359
  `;
48
- }
49
- };
50
- UplStatuspageStatusbar = __decorate([
51
- customElement('upl-statuspage-statusbar'),
52
- __metadata("design:paramtypes", [])
53
- ], UplStatuspageStatusbar);
360
+ }
361
+ static {
362
+ __runInitializers(_classThis, _classExtraInitializers);
363
+ }
364
+ };
365
+ return UplStatuspageStatusbar = _classThis;
366
+ })();
54
367
  export { UplStatuspageStatusbar };
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsLXN0YXR1c3BhZ2Utc3RhdHVzYmFyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHNfd2ViL2VsZW1lbnRzL3VwbC1zdGF0dXNwYWdlLXN0YXR1c2Jhci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUF1QixVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0gsT0FBTyxLQUFLLFFBQVEsTUFBTSw4QkFBOEIsQ0FBQztBQVNsRCxJQUFNLHNCQUFzQixHQUE1QixNQUFNLHNCQUF1QixTQUFRLFdBQVc7YUFDdkMsU0FBSSxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQTs7R0FFOUIsQUFGaUIsQ0FFaEI7SUFFRjtRQUNFLEtBQUssRUFBRSxDQUFDO0lBQ1YsQ0FBQzthQUVhLFdBQU0sR0FBRztRQUNyQixVQUFVLENBQUMsYUFBYTtRQUN4QixHQUFHLENBQUE7Ozs7d0JBSWlCLFVBQVUsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQzs7Ozs7Ozs7Ozs7OztLQWEzRDtLQUNGLEFBcEJtQixDQW9CbkI7SUFFTSxNQUFNO1FBQ1gsT0FBTyxJQUFJLENBQUE7Ozs7OztLQU1WLENBQUM7SUFDSixDQUFDOztBQXZDVSxzQkFBc0I7SUFEbEMsYUFBYSxDQUFDLDBCQUEwQixDQUFDOztHQUM3QixzQkFBc0IsQ0F3Q2xDIn0=
368
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsLXN0YXR1c3BhZ2Utc3RhdHVzYmFyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHNfd2ViL2VsZW1lbnRzL3VwbC1zdGF0dXNwYWdlLXN0YXR1c2Jhci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBdUIsVUFBVSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMxSSxPQUFPLEtBQUssUUFBUSxNQUFNLDhCQUE4QixDQUFDO0FBRXpELE9BQU8sS0FBSyxZQUFZLE1BQU0sNEJBQTRCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0lBU2pELHNCQUFzQjs0QkFEbEMsYUFBYSxDQUFDLDBCQUEwQixDQUFDOzs7O3NCQUNFLFdBQVc7Ozs7Ozs7Ozs7c0NBQW5CLFNBQVEsV0FBVzs7Ozt5Q0FHcEQsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO21DQVMxQixRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUM7c0NBRzNCLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQztZQVg1Qiw0TEFBUyxhQUFhLDZCQUFiLGFBQWEscUdBTXBCO1lBR0YsMEtBQVMsT0FBTyw2QkFBUCxPQUFPLHlGQUFrQjtZQUdsQyxtTEFBUyxVQUFVLDZCQUFWLFVBQVUsK0ZBQWlCO1lBaEJ0Qyw2S0EwU0M7Ozs7UUF6U1EsTUFBTSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUM7UUFHOUIsdUZBQXlDO1lBQ3ZDLE1BQU0sRUFBRSxhQUFhO1lBQ3JCLE9BQU8sRUFBRSx5QkFBeUI7WUFDbEMsV0FBVyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDdkIsZ0JBQWdCLEVB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
@@ -1,4 +1,5 @@
1
1
  import { DeesElement, type TemplateResult } from '@design.estate/dees-element';
2
+ import type { IStatusHistoryPoint } from '../interfaces/index.js';
2
3
  import './internal/uplinternal-miniheading.js';
3
4
  declare global {
4
5
  interface HTMLElementTagNameMap {
@@ -7,7 +8,20 @@ declare global {
7
8
  }
8
9
  export declare class UplStatuspageStatusdetails extends DeesElement {
9
10
  static demo: () => TemplateResult<1>;
11
+ accessor historyData: IStatusHistoryPoint[];
12
+ accessor dataPoints: IStatusHistoryPoint[];
13
+ accessor serviceId: string;
14
+ accessor serviceName: string;
15
+ accessor loading: boolean;
16
+ accessor hoursToShow: number;
10
17
  constructor();
11
18
  static styles: import("@design.estate/dees-element").CSSResult[];
12
19
  render(): TemplateResult;
20
+ private renderBars;
21
+ private getData;
22
+ private findDataPointForTime;
23
+ private getTimeLabel;
24
+ private showTooltip;
25
+ private hideTooltip;
26
+ private handleBarClick;
13
27
  }
@@ -0,0 +1 @@
1
+ export declare const demoFunc: () => import("@design.estate/dees-element").TemplateResult<1>;