@uptime.link/statuspage 1.0.74 → 1.2.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 +5019 -519
  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 +679 -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 +846 -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 +373 -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 +937 -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 +549 -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 +408 -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 +397 -62
  40. package/dist_ts_web/elements/upl-statuspage-statusmonth.d.ts +17 -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 +662 -103
  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 +102 -0
  57. package/dist_ts_web/styles/shared.styles.js +494 -0
  58. package/dist_watch/bundle.js +52265 -32033
  59. package/dist_watch/bundle.js.map +4 -4
  60. package/dist_watch/index.html +1 -0
  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 +600 -18
  71. package/ts_web/elements/upl-statuspage-footer.demo.ts +744 -0
  72. package/ts_web/elements/upl-statuspage-footer.ts +662 -30
  73. package/ts_web/elements/upl-statuspage-header.demo.ts +241 -0
  74. package/ts_web/elements/upl-statuspage-header.ts +289 -52
  75. package/ts_web/elements/upl-statuspage-incidents.demo.ts +1216 -0
  76. package/ts_web/elements/upl-statuspage-incidents.ts +840 -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 +478 -0
  81. package/ts_web/elements/upl-statuspage-statusbar.demo.ts +393 -0
  82. package/ts_web/elements/upl-statuspage-statusbar.ts +332 -20
  83. package/ts_web/elements/upl-statuspage-statusdetails.demo.ts +754 -0
  84. package/ts_web/elements/upl-statuspage-statusdetails.ts +321 -37
  85. package/ts_web/elements/upl-statuspage-statusmonth.demo.ts +876 -0
  86. package/ts_web/elements/upl-statuspage-statusmonth.ts +584 -79
  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 +531 -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
@@ -1,90 +1,425 @@
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
35
  import * as plugins from '../plugins.js';
11
- import { DeesElement, property, html, customElement, css, cssManager, } from '@design.estate/dees-element';
36
+ import { DeesElement, property, html, customElement, css, cssManager, unsafeCSS, } from '@design.estate/dees-element';
37
+ import * as sharedStyles from '../styles/shared.styles.js';
12
38
  import './internal/uplinternal-miniheading.js';
13
- let UplStatuspageStatusdetails = class UplStatuspageStatusdetails extends DeesElement {
14
- static { this.demo = () => html ` <upl-statuspage-statusdetails></upl-statuspage-statusdetails> `; }
15
- constructor() {
16
- super();
17
- }
18
- static { this.styles = [
19
- plugins.domtools.elementBasic.staticStyles,
20
- css `
39
+ import { demoFunc } from './upl-statuspage-statusdetails.demo.js';
40
+ let UplStatuspageStatusdetails = (() => {
41
+ let _classDecorators = [customElement('upl-statuspage-statusdetails')];
42
+ let _classDescriptor;
43
+ let _classExtraInitializers = [];
44
+ let _classThis;
45
+ let _classSuper = DeesElement;
46
+ let _historyData_decorators;
47
+ let _historyData_initializers = [];
48
+ let _historyData_extraInitializers = [];
49
+ let _dataPoints_decorators;
50
+ let _dataPoints_initializers = [];
51
+ let _dataPoints_extraInitializers = [];
52
+ let _serviceId_decorators;
53
+ let _serviceId_initializers = [];
54
+ let _serviceId_extraInitializers = [];
55
+ let _serviceName_decorators;
56
+ let _serviceName_initializers = [];
57
+ let _serviceName_extraInitializers = [];
58
+ let _loading_decorators;
59
+ let _loading_initializers = [];
60
+ let _loading_extraInitializers = [];
61
+ let _hoursToShow_decorators;
62
+ let _hoursToShow_initializers = [];
63
+ let _hoursToShow_extraInitializers = [];
64
+ var UplStatuspageStatusdetails = class extends _classSuper {
65
+ static { _classThis = this; }
66
+ static {
67
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
68
+ _historyData_decorators = [property({ type: Array })];
69
+ _dataPoints_decorators = [property({ type: Array })];
70
+ _serviceId_decorators = [property({ type: String })];
71
+ _serviceName_decorators = [property({ type: String })];
72
+ _loading_decorators = [property({ type: Boolean })];
73
+ _hoursToShow_decorators = [property({ type: Number })];
74
+ __esDecorate(this, null, _historyData_decorators, { kind: "accessor", name: "historyData", static: false, private: false, access: { has: obj => "historyData" in obj, get: obj => obj.historyData, set: (obj, value) => { obj.historyData = value; } }, metadata: _metadata }, _historyData_initializers, _historyData_extraInitializers);
75
+ __esDecorate(this, null, _dataPoints_decorators, { kind: "accessor", name: "dataPoints", static: false, private: false, access: { has: obj => "dataPoints" in obj, get: obj => obj.dataPoints, set: (obj, value) => { obj.dataPoints = value; } }, metadata: _metadata }, _dataPoints_initializers, _dataPoints_extraInitializers);
76
+ __esDecorate(this, null, _serviceId_decorators, { kind: "accessor", name: "serviceId", static: false, private: false, access: { has: obj => "serviceId" in obj, get: obj => obj.serviceId, set: (obj, value) => { obj.serviceId = value; } }, metadata: _metadata }, _serviceId_initializers, _serviceId_extraInitializers);
77
+ __esDecorate(this, null, _serviceName_decorators, { kind: "accessor", name: "serviceName", static: false, private: false, access: { has: obj => "serviceName" in obj, get: obj => obj.serviceName, set: (obj, value) => { obj.serviceName = value; } }, metadata: _metadata }, _serviceName_initializers, _serviceName_extraInitializers);
78
+ __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);
79
+ __esDecorate(this, null, _hoursToShow_decorators, { kind: "accessor", name: "hoursToShow", static: false, private: false, access: { has: obj => "hoursToShow" in obj, get: obj => obj.hoursToShow, set: (obj, value) => { obj.hoursToShow = value; } }, metadata: _metadata }, _hoursToShow_initializers, _hoursToShow_extraInitializers);
80
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
81
+ UplStatuspageStatusdetails = _classThis = _classDescriptor.value;
82
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
83
+ }
84
+ static demo = demoFunc;
85
+ #historyData_accessor_storage = __runInitializers(this, _historyData_initializers, []);
86
+ get historyData() { return this.#historyData_accessor_storage; }
87
+ set historyData(value) { this.#historyData_accessor_storage = value; }
88
+ #dataPoints_accessor_storage = (__runInitializers(this, _historyData_extraInitializers), __runInitializers(this, _dataPoints_initializers, []));
89
+ get dataPoints() { return this.#dataPoints_accessor_storage; }
90
+ set dataPoints(value) { this.#dataPoints_accessor_storage = value; }
91
+ #serviceId_accessor_storage = (__runInitializers(this, _dataPoints_extraInitializers), __runInitializers(this, _serviceId_initializers, ''));
92
+ get serviceId() { return this.#serviceId_accessor_storage; }
93
+ set serviceId(value) { this.#serviceId_accessor_storage = value; }
94
+ #serviceName_accessor_storage = (__runInitializers(this, _serviceId_extraInitializers), __runInitializers(this, _serviceName_initializers, 'Service'));
95
+ get serviceName() { return this.#serviceName_accessor_storage; }
96
+ set serviceName(value) { this.#serviceName_accessor_storage = value; }
97
+ #loading_accessor_storage = (__runInitializers(this, _serviceName_extraInitializers), __runInitializers(this, _loading_initializers, false));
98
+ get loading() { return this.#loading_accessor_storage; }
99
+ set loading(value) { this.#loading_accessor_storage = value; }
100
+ #hoursToShow_accessor_storage = (__runInitializers(this, _loading_extraInitializers), __runInitializers(this, _hoursToShow_initializers, 48));
101
+ get hoursToShow() { return this.#hoursToShow_accessor_storage; }
102
+ set hoursToShow(value) { this.#hoursToShow_accessor_storage = value; }
103
+ constructor() {
104
+ super();
105
+ __runInitializers(this, _hoursToShow_extraInitializers);
106
+ }
107
+ static styles = [
108
+ plugins.domtools.elementBasic.staticStyles,
109
+ sharedStyles.commonStyles,
110
+ css `
21
111
  :host {
22
112
  position: relative;
23
- padding: 0px 0px 15px 0px;
24
113
  display: block;
25
- background: ${cssManager.bdTheme('#eeeeeb', '#222222')};;
26
- font-family: Inter;
27
- color: #fff;
114
+ background: transparent;
115
+ font-family: ${unsafeCSS(sharedStyles.fonts.base)};
116
+ color: ${sharedStyles.colors.text.primary};
117
+ }
118
+
119
+ .container {
120
+ max-width: 1200px;
121
+ margin: 0 auto;
122
+ padding: 0 ${unsafeCSS(sharedStyles.spacing.lg)} ${unsafeCSS(sharedStyles.spacing.lg)} ${unsafeCSS(sharedStyles.spacing.lg)};
123
+ }
124
+
125
+ .graph-wrapper {
126
+ display: flex;
127
+ flex-direction: column;
128
+ gap: 4px;
129
+ }
130
+
131
+ .graph-container {
132
+ position: relative;
133
+ animation: fadeIn 0.3s ${unsafeCSS(sharedStyles.easings.default)};
134
+ }
135
+
136
+ @keyframes fadeIn {
137
+ from { opacity: 0; }
138
+ to { opacity: 1; }
28
139
  }
29
140
 
30
141
  .mainbox {
31
- margin: auto;
32
- max-width: 900px;
33
- text-align: right;
34
- background: ${cssManager.bdTheme('#ffffff', '#333333')};;
35
- line-height: 50px;
36
- border-radius: 3px;
142
+ background: transparent;
143
+ border: none;
144
+ border-radius: 0;
145
+ padding: 0;
37
146
  }
38
147
 
39
148
  .mainbox .barContainer {
40
149
  position: relative;
41
150
  display: flex;
42
- padding: 6px;
151
+ gap: 2px;
152
+ padding: ${unsafeCSS(sharedStyles.spacing.sm)};
153
+ background: ${cssManager.bdTheme('#fafafa', '#0a0a0a')};
154
+ border: 1px solid ${cssManager.bdTheme('#e5e7eb', '#27272a')};
155
+ border-radius: ${unsafeCSS(sharedStyles.borderRadius.base)};
43
156
  overflow: hidden;
157
+ height: 40px;
44
158
  }
45
159
 
46
160
  .mainbox .barContainer .bar {
47
- margin: 4px;
48
- width: 11px;
161
+ flex: 1;
162
+ height: 100%;
163
+ cursor: pointer;
164
+ transition: all ${unsafeCSS(sharedStyles.durations.fast)} ${unsafeCSS(sharedStyles.easings.default)};
165
+ position: relative;
49
166
  border-radius: 3px;
50
- height: 40px;
51
- background: #2deb51;
167
+ animation: barGrow 0.4s ${unsafeCSS(sharedStyles.easings.default)} both;
168
+ animation-delay: calc(var(--bar-index, 0) * 8ms);
169
+ transform-origin: bottom;
170
+ }
171
+
172
+ @keyframes barGrow {
173
+ from {
174
+ transform: scaleY(0);
175
+ opacity: 0;
176
+ }
177
+ to {
178
+ transform: scaleY(1);
179
+ opacity: 1;
180
+ }
52
181
  }
53
- .timeIndicator {
182
+
183
+ .mainbox .barContainer .bar:hover {
184
+ transform: scaleY(1.15);
185
+ box-shadow: 0 2px 6px rgba(0, 0, 0, 0.15);
186
+ z-index: 1;
187
+ }
188
+
189
+ .mainbox .barContainer .bar.operational {
190
+ background: ${cssManager.bdTheme('#22c55e', '#22c55e')};
191
+ }
192
+
193
+ .mainbox .barContainer .bar.degraded {
194
+ background: ${cssManager.bdTheme('#fbbf24', '#fbbf24')};
195
+ }
196
+
197
+ .mainbox .barContainer .bar.partial_outage {
198
+ background: ${cssManager.bdTheme('#f87171', '#f87171')};
199
+ }
200
+
201
+ .mainbox .barContainer .bar.major_outage {
202
+ background: ${cssManager.bdTheme('#ef4444', '#ef4444')};
203
+ }
204
+
205
+ .mainbox .barContainer .bar.maintenance {
206
+ background: ${cssManager.bdTheme('#60a5fa', '#60a5fa')};
207
+ }
208
+
209
+ .mainbox .barContainer .bar.no-data {
210
+ background: ${cssManager.bdTheme('#e5e7eb', '#27272a')};
211
+ opacity: 0.6;
212
+ }
213
+
214
+
215
+ .time-labels {
216
+ display: flex;
217
+ justify-content: space-between;
218
+ padding: 0;
219
+ margin-top: ${unsafeCSS(sharedStyles.spacing.xs)};
220
+ font-size: 10px;
221
+ color: ${cssManager.bdTheme('#9ca3af', '#71717a')};
222
+ font-family: ${unsafeCSS(sharedStyles.fonts.base)};
223
+ opacity: 0.8;
224
+ }
225
+
226
+ .tooltip {
54
227
  position: absolute;
55
- width: 11px;
56
- height: 11px;
57
- background: #FF9800;
58
- top: 56px;
59
- left: 400px;
60
- transform: rotate(45deg);
228
+ background: ${cssManager.bdTheme('#0a0a0a', '#fafafa')};
229
+ color: ${cssManager.bdTheme('#fafafa', '#0a0a0a')};
230
+ padding: 8px 12px;
231
+ border-radius: ${unsafeCSS(sharedStyles.borderRadius.base)};
232
+ font-size: 11px;
233
+ pointer-events: none;
234
+ opacity: 0;
235
+ transition: opacity ${unsafeCSS(sharedStyles.durations.fast)} ${unsafeCSS(sharedStyles.easings.default)},
236
+ transform ${unsafeCSS(sharedStyles.durations.fast)} ${unsafeCSS(sharedStyles.easings.default)};
237
+ z-index: 50;
238
+ white-space: nowrap;
239
+ box-shadow: ${unsafeCSS(sharedStyles.shadows.lg)};
240
+ line-height: 1.5;
241
+ transform: translateY(4px);
242
+ }
243
+
244
+ .tooltip.visible {
245
+ opacity: 1;
246
+ transform: translateY(0);
247
+ }
248
+
249
+ .tooltip-time {
250
+ font-weight: 600;
251
+ display: block;
252
+ margin-bottom: 2px;
253
+ }
254
+
255
+ .tooltip-stat {
256
+ font-size: 10px;
257
+ opacity: 0.9;
258
+ }
259
+
260
+ .loading-skeleton {
261
+ display: flex;
262
+ gap: 1px;
263
+ height: 24px;
264
+ }
265
+
266
+ .loading-skeleton .skeleton-bar {
267
+ flex: 1;
268
+ height: 100%;
269
+ background: ${cssManager.bdTheme('#f3f4f6', '#27272a')};
270
+ animation: pulse 2s infinite;
271
+ }
272
+
273
+ @keyframes pulse {
274
+ 0%, 100% { opacity: 1; }
275
+ 50% { opacity: 0.5; }
276
+ }
277
+
278
+ @keyframes loading {
279
+ 0% { background-position: 200% 0; }
280
+ 100% { background-position: -200% 0; }
281
+ }
282
+
283
+
284
+ @media (max-width: 640px) {
285
+ .container {
286
+ padding: 0 ${unsafeCSS(sharedStyles.spacing.md)} ${unsafeCSS(sharedStyles.spacing.md)} ${unsafeCSS(sharedStyles.spacing.md)};
287
+ }
288
+
289
+ .graph-container {
290
+ padding: ${unsafeCSS(sharedStyles.spacing.sm)};
291
+ }
292
+
293
+ .mainbox .barContainer {
294
+ height: 32px;
295
+ padding: ${unsafeCSS(sharedStyles.spacing.xs)};
296
+ }
297
+
298
+ .time-labels {
299
+ font-size: 9px;
300
+ }
301
+
302
+ .stats-row {
303
+ font-size: 11px;
304
+ flex-direction: column;
305
+ gap: ${unsafeCSS(sharedStyles.spacing.sm)};
306
+ align-items: flex-start;
307
+ }
61
308
  }
62
309
  `,
63
- ]; }
64
- render() {
65
- return html `
66
- <style></style>
67
- <uplinternal-miniheading>Yesterday & Today</uplinternal-miniheading>
68
- <div class="mainbox">
69
- <div class="barContainer">
70
- ${(() => {
71
- let counter = 0;
72
- const returnArray = [];
73
- while (counter < 48) {
74
- counter++;
75
- returnArray.push(html ` <div class="bar"></div> `);
76
- }
77
- return returnArray;
78
- })()}
79
- <div class="timeIndicator"></div>
310
+ ];
311
+ render() {
312
+ return html `
313
+ <div class="container">
314
+ <uplinternal-miniheading>${this.serviceName} - Last ${this.hoursToShow} Hours</uplinternal-miniheading>
315
+ <div class="mainbox">
316
+ ${this.loading ? html `
317
+ <div class="graph-container">
318
+ <div class="barContainer" style="background: ${cssManager.bdTheme('#fafafa', '#0a0a0a')}; border: 1px solid ${cssManager.bdTheme('#f3f4f6', '#1f1f1f')}; border-radius: ${sharedStyles.borderRadius.base}; padding: ${sharedStyles.spacing.sm}; height: 40px;">
319
+ <div class="loading-skeleton">
320
+ ${Array(this.hoursToShow).fill(0).map(() => html `<div class="skeleton-bar"></div>`)}
321
+ </div>
322
+ </div>
323
+ </div>
324
+ ` : html `
325
+ <div class="graph-container">
326
+ <div class="barContainer" @mouseleave=${this.hideTooltip}>
327
+ ${this.renderBars()}
328
+ </div>
329
+ </div>
330
+ <div class="time-labels">
331
+ <span>${this.getTimeLabel(this.hoursToShow - 1)}</span>
332
+ <span>${this.getTimeLabel(Math.floor(this.hoursToShow * 3 / 4))}</span>
333
+ <span>${this.getTimeLabel(Math.floor(this.hoursToShow / 2))}</span>
334
+ <span>${this.getTimeLabel(Math.floor(this.hoursToShow / 4))}</span>
335
+ <span>now</span>
336
+ </div>
337
+ `}
80
338
  </div>
339
+ <div class="tooltip" id="tooltip"></div>
81
340
  </div>
82
341
  `;
83
- }
84
- };
85
- UplStatuspageStatusdetails = __decorate([
86
- customElement('upl-statuspage-statusdetails'),
87
- __metadata("design:paramtypes", [])
88
- ], UplStatuspageStatusdetails);
342
+ }
343
+ renderBars() {
344
+ const bars = [];
345
+ const now = Date.now();
346
+ for (let i = 0; i < this.hoursToShow; i++) {
347
+ const hourIndex = this.hoursToShow - 1 - i;
348
+ const timestamp = now - (hourIndex * 60 * 60 * 1000);
349
+ const dataPoint = this.findDataPointForTime(timestamp);
350
+ const status = dataPoint?.status || 'no-data';
351
+ const responseTime = dataPoint?.responseTime || 0;
352
+ bars.push(html `
353
+ <div
354
+ class="bar ${status}"
355
+ style="--bar-index: ${i}"
356
+ @mouseenter=${(e) => this.showTooltip(e, timestamp, status, responseTime)}
357
+ @click=${() => this.handleBarClick(timestamp, status, responseTime)}
358
+ ></div>
359
+ `);
360
+ }
361
+ return bars;
362
+ }
363
+ getData() {
364
+ return this.dataPoints?.length > 0 ? this.dataPoints : this.historyData || [];
365
+ }
366
+ findDataPointForTime(timestamp) {
367
+ const data = this.getData();
368
+ if (!data || data.length === 0)
369
+ return undefined;
370
+ // Find the closest data point within the same hour
371
+ const targetHour = new Date(timestamp).getHours();
372
+ const targetDate = new Date(timestamp).toDateString();
373
+ return data.find(point => {
374
+ const pointDate = new Date(point.timestamp);
375
+ return pointDate.toDateString() === targetDate &&
376
+ pointDate.getHours() === targetHour;
377
+ });
378
+ }
379
+ getTimeLabel(hoursAgo) {
380
+ const date = new Date(Date.now() - (hoursAgo * 60 * 60 * 1000));
381
+ if (hoursAgo >= 24) {
382
+ return `${date.getMonth() + 1}/${date.getDate()}`;
383
+ }
384
+ return `${date.getHours()}h`;
385
+ }
386
+ showTooltip(event, timestamp, status, responseTime) {
387
+ const tooltip = this.shadowRoot?.getElementById('tooltip');
388
+ if (!tooltip)
389
+ return;
390
+ const date = new Date(timestamp);
391
+ const timeStr = date.toLocaleString();
392
+ const statusStr = status.replace(/_/g, ' ').replace('no-data', 'No Data');
393
+ tooltip.innerHTML = `
394
+ <div class="tooltip-time">${timeStr}</div>
395
+ <div class="tooltip-stat">Status: ${statusStr}</div>
396
+ ${responseTime > 0 ? `<div class="tooltip-stat">Response Time: ${responseTime.toFixed(0)}ms</div>` : ''}
397
+ `;
398
+ const rect = event.target.getBoundingClientRect();
399
+ const containerRect = this.getBoundingClientRect();
400
+ tooltip.style.left = `${rect.left - containerRect.left + rect.width / 2}px`;
401
+ tooltip.style.top = `${rect.top - containerRect.top - 10}px`;
402
+ tooltip.style.transform = 'translate(-50%, -100%)';
403
+ tooltip.classList.add('visible');
404
+ }
405
+ hideTooltip() {
406
+ const tooltip = this.shadowRoot?.getElementById('tooltip');
407
+ if (tooltip) {
408
+ tooltip.classList.remove('visible');
409
+ }
410
+ }
411
+ handleBarClick(timestamp, status, responseTime) {
412
+ this.dispatchEvent(new CustomEvent('barClick', {
413
+ detail: { timestamp, status, responseTime, serviceId: this.serviceId },
414
+ bubbles: true,
415
+ composed: true
416
+ }));
417
+ }
418
+ static {
419
+ __runInitializers(_classThis, _classExtraInitializers);
420
+ }
421
+ };
422
+ return UplStatuspageStatusdetails = _classThis;
423
+ })();
89
424
  export { UplStatuspageStatusdetails };
90
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsLXN0YXR1c3BhZ2Utc3RhdHVzZGV0YWlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzX3dlYi9lbGVtZW50cy91cGwtc3RhdHVzcGFnZS1zdGF0dXNkZXRhaWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFDTCxXQUFXLEVBQ1gsUUFBUSxFQUNSLElBQUksRUFDSixhQUFhLEVBRWIsR0FBRyxFQUNILFVBQVUsR0FDWCxNQUFNLDZCQUE2QixDQUFDO0FBRXJDLE9BQU8sdUNBQXVDLENBQUM7QUFTeEMsSUFBTSwwQkFBMEIsR0FBaEMsTUFBTSwwQkFBMkIsU0FBUSxXQUFXO2FBQzNDLFNBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUEsaUVBQWlFLEFBQTlFLENBQStFO0lBRWpHO1FBQ0UsS0FBSyxFQUFFLENBQUM7SUFDVixDQUFDO2FBRWEsV0FBTSxHQUFHO1FBQ3JCLE9BQU8sQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLFlBQVk7UUFDMUMsR0FBRyxDQUFBOzs7Ozt1QkFLZ0IsVUFBVSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDOzs7Ozs7Ozs7dUJBU3hDLFVBQVUsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQTRCMUQ7S0FDRixBQTdDbUIsQ0E2Q2xCO0lBRUssTUFBTTtRQUNYLE9BQU8sSUFBSSxDQUFBOzs7OztZQUtILENBQUMsR0FBRyxFQUFFO1lBQ04sSUFBSSxPQUFPLEdBQUcsQ0FBQyxDQUFDO1lBQ2hCLE1BQU0sV0FBVyxHQUFxQixFQUFFLENBQUM7WUFDekMsT0FBTyxPQUFPLEdBQUcsRUFBRSxFQUFFLENBQUM7Z0JBQ3BCLE9BQU8sRUFBRSxDQUFDO2dCQUNWLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFBLDJCQUEyQixDQUFDLENBQUM7WUFDcEQsQ0FBQztZQUNELE9BQU8sV0FBVyxDQUFDO1FBQ3JCLENBQUMsQ0FBQyxFQUFFOzs7O0tBSVQsQ0FBQztJQUNKLENBQUM7O0FBekVVLDBCQUEwQjtJQUR0QyxhQUFhLENBQUMsOEJBQThCLENBQUM7O0dBQ2pDLDBCQUEwQixDQTBFdEMifQ==
425
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsLXN0YXR1c3BhZ2Utc3RhdHVzZGV0YWlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzX3dlYi9lbGVtZW50cy91cGwtc3RhdHVzcGFnZS1zdGF0dXNkZXRhaWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQ0wsV0FBVyxFQUNYLFFBQVEsRUFDUixJQUFJLEVBQ0osYUFBYSxFQUViLEdBQUcsRUFDSCxVQUFVLEVBQ1YsU0FBUyxHQUNWLE1BQU0sNkJBQTZCLENBQUM7QUFFckMsT0FBTyxLQUFLLFlBQVksTUFBTSw0QkFBNEIsQ0FBQztBQUUzRCxPQUFPLHVDQUF1QyxDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztJQVNyRCwwQkFBMEI7NEJBRHRDLGFBQWEsQ0FBQyw4QkFBOEIsQ0FBQzs7OztzQkFDRSxXQUFXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OzBDQUFuQixTQUFRLFdBQVc7Ozs7dUNBR3hELFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQztzQ0FHekIsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDO3FDQUd6QixRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7dUNBRzFCLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQzttQ0FHMUIsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDO3VDQUczQixRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFkM0Isc0xBQVMsV0FBVyw2QkFBWCxXQUFXLGlHQUE2QjtZQUdqRCxtTEFBUyxVQUFVLDZCQUFWLFVBQVUsK0ZBQTZCO1lBR2hELGdMQUFTLFNBQVMs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
@@ -1,4 +1,5 @@
1
1
  import { DeesElement, type TemplateResult } from '@design.estate/dees-element';
2
+ import type { IMonthlyUptime } from '../interfaces/index.js';
2
3
  import './internal/uplinternal-miniheading.js';
3
4
  declare global {
4
5
  interface HTMLElementTagNameMap {
@@ -7,7 +8,23 @@ declare global {
7
8
  }
8
9
  export declare class UplStatuspageStatusmonth extends DeesElement {
9
10
  static demo: () => TemplateResult<1>;
11
+ accessor monthlyData: IMonthlyUptime[];
12
+ accessor serviceId: string;
13
+ accessor serviceName: string;
14
+ accessor loading: boolean;
15
+ accessor showTooltip: boolean;
16
+ accessor monthsToShow: number;
10
17
  constructor();
11
18
  static styles: import("@design.estate/dees-element").CSSResult[];
12
19
  render(): TemplateResult;
20
+ private renderMonth;
21
+ private getUptimeClass;
22
+ private renderWeekdayLabels;
23
+ private renderEmptyDays;
24
+ private renderTrailingEmptyDays;
25
+ private renderDay;
26
+ private getUptimeIntensity;
27
+ private showDayTooltip;
28
+ private hideTooltip;
29
+ private handleDayClick;
13
30
  }
@@ -0,0 +1 @@
1
+ export declare const demoFunc: () => import("@design.estate/dees-element").TemplateResult<1>;