@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,25 @@
1
+ import { html } from '@design.estate/dees-element';
2
+
3
+ export const demoFunc = () => html`
4
+ <style>
5
+ .demo-container {
6
+ background: #fafafa;
7
+ padding: 40px 0;
8
+ min-height: 400px;
9
+ }
10
+ </style>
11
+ <div class="demo-container">
12
+ <upl-statuspage-pagetitle
13
+ .pageTitle=${'System Status'}
14
+ .pageSubtitle=${'Real-time operational status and incident reports for all services'}
15
+ ></upl-statuspage-pagetitle>
16
+
17
+ <br>
18
+
19
+ <upl-statuspage-pagetitle
20
+ .pageTitle=${'API Documentation'}
21
+ .pageSubtitle=${'Comprehensive guides and references for integrating with our platform'}
22
+ .centered=${true}
23
+ ></upl-statuspage-pagetitle>
24
+ </div>
25
+ `;
@@ -0,0 +1,89 @@
1
+ import { DeesElement, property, html, customElement, type TemplateResult, css, cssManager, unsafeCSS } from '@design.estate/dees-element';
2
+ import * as domtools from '@design.estate/dees-domtools';
3
+ import * as sharedStyles from '../styles/shared.styles.js';
4
+ import { demoFunc } from './upl-statuspage-pagetitle.demo.js';
5
+
6
+ declare global {
7
+ interface HTMLElementTagNameMap {
8
+ 'upl-statuspage-pagetitle': UplStatuspagePagetitle;
9
+ }
10
+ }
11
+
12
+ @customElement('upl-statuspage-pagetitle')
13
+ export class UplStatuspagePagetitle extends DeesElement {
14
+ public static demo = demoFunc;
15
+
16
+ @property({ type: String })
17
+ accessor pageTitle: string = 'System Status';
18
+
19
+ @property({ type: String })
20
+ accessor pageSubtitle: string = '';
21
+
22
+ @property({ type: Boolean })
23
+ accessor centered: boolean = false;
24
+
25
+ constructor() {
26
+ super();
27
+ }
28
+
29
+ public static styles = [
30
+ domtools.elementBasic.staticStyles,
31
+ css`
32
+ :host {
33
+ display: block;
34
+ font-family: ${unsafeCSS(sharedStyles.fonts.base)};
35
+ }
36
+
37
+ .title-container {
38
+ max-width: 1200px;
39
+ margin: 0 auto;
40
+ padding: ${unsafeCSS(sharedStyles.spacing.lg)};
41
+ }
42
+
43
+ .title-container.centered {
44
+ text-align: center;
45
+ }
46
+
47
+ h1 {
48
+ font-size: 48px;
49
+ font-weight: 700;
50
+ letter-spacing: -0.03em;
51
+ line-height: 1.1;
52
+ color: ${sharedStyles.colors.text.primary};
53
+ margin: 0 0 ${unsafeCSS(sharedStyles.spacing.md)} 0;
54
+ }
55
+
56
+ p {
57
+ font-size: 18px;
58
+ color: ${sharedStyles.colors.text.secondary};
59
+ margin: 0;
60
+ line-height: 1.6;
61
+ }
62
+
63
+ @media (max-width: 640px) {
64
+ .title-container {
65
+ padding: ${unsafeCSS(sharedStyles.spacing.lg)} ${unsafeCSS(sharedStyles.spacing.md)};
66
+ }
67
+
68
+ h1 {
69
+ font-size: 32px;
70
+ }
71
+
72
+ p {
73
+ font-size: 16px;
74
+ }
75
+ }
76
+ `
77
+ ]
78
+
79
+ public render(): TemplateResult {
80
+ return html`
81
+ <div class="title-container ${this.centered ? 'centered' : ''}">
82
+ <h1>${this.pageTitle}</h1>
83
+ ${this.pageSubtitle ? html`
84
+ <p>${this.pageSubtitle}</p>
85
+ ` : ''}
86
+ </div>
87
+ `;
88
+ }
89
+ }
@@ -0,0 +1,315 @@
1
+ import { html } from '@design.estate/dees-element';
2
+
3
+ export const demoFunc = () => html`
4
+ <style>
5
+ .demo-container {
6
+ display: flex;
7
+ flex-direction: column;
8
+ gap: 20px;
9
+ }
10
+ .demo-section {
11
+ border: 1px solid #ddd;
12
+ border-radius: 8px;
13
+ padding: 20px;
14
+ background: #f5f5f5;
15
+ }
16
+ .demo-title {
17
+ font-size: 14px;
18
+ font-weight: 600;
19
+ margin-bottom: 16px;
20
+ color: #333;
21
+ }
22
+ .demo-controls {
23
+ display: flex;
24
+ gap: 10px;
25
+ margin-top: 16px;
26
+ flex-wrap: wrap;
27
+ }
28
+ .demo-button {
29
+ padding: 6px 12px;
30
+ border: 1px solid #ddd;
31
+ background: white;
32
+ border-radius: 4px;
33
+ cursor: pointer;
34
+ font-size: 13px;
35
+ }
36
+ .demo-button:hover {
37
+ background: #f0f0f0;
38
+ }
39
+ .demo-button.active {
40
+ background: #2196F3;
41
+ color: white;
42
+ border-color: #2196F3;
43
+ }
44
+ </style>
45
+
46
+ <div class="demo-container">
47
+ <!-- Normal Operation -->
48
+ <div class="demo-section">
49
+ <div class="demo-title">Normal Operation</div>
50
+ <dees-demowrapper
51
+ .runAfterRender=${async (wrapperElement: any) => {
52
+ const statsGrid = wrapperElement.querySelector('upl-statuspage-statsgrid') as any;
53
+
54
+ // Set initial values
55
+ statsGrid.currentStatus = 'operational';
56
+ statsGrid.uptime = 99.95;
57
+ statsGrid.avgResponseTime = 125;
58
+ statsGrid.totalIncidents = 0;
59
+ statsGrid.affectedServices = 0;
60
+ statsGrid.totalServices = 12;
61
+ statsGrid.timePeriod = '90 days';
62
+ }}
63
+ >
64
+ <upl-statuspage-statsgrid></upl-statuspage-statsgrid>
65
+ </dees-demowrapper>
66
+ </div>
67
+
68
+ <!-- Degraded Performance -->
69
+ <div class="demo-section">
70
+ <div class="demo-title">Degraded Performance</div>
71
+ <dees-demowrapper
72
+ .runAfterRender=${async (wrapperElement: any) => {
73
+ const statsGrid = wrapperElement.querySelector('upl-statuspage-statsgrid') as any;
74
+
75
+ statsGrid.currentStatus = 'degraded';
76
+ statsGrid.uptime = 98.50;
77
+ statsGrid.avgResponseTime = 450;
78
+ statsGrid.totalIncidents = 3;
79
+ statsGrid.affectedServices = 2;
80
+ statsGrid.totalServices = 12;
81
+ statsGrid.timePeriod = '30 days';
82
+ }}
83
+ >
84
+ <upl-statuspage-statsgrid></upl-statuspage-statsgrid>
85
+ </dees-demowrapper>
86
+ </div>
87
+
88
+ <!-- Major Outage -->
89
+ <div class="demo-section">
90
+ <div class="demo-title">Major Outage</div>
91
+ <dees-demowrapper
92
+ .runAfterRender=${async (wrapperElement: any) => {
93
+ const statsGrid = wrapperElement.querySelector('upl-statuspage-statsgrid') as any;
94
+
95
+ statsGrid.currentStatus = 'major_outage';
96
+ statsGrid.uptime = 95.20;
97
+ statsGrid.avgResponseTime = 1250;
98
+ statsGrid.totalIncidents = 8;
99
+ statsGrid.affectedServices = 7;
100
+ statsGrid.totalServices = 12;
101
+ statsGrid.timePeriod = '7 days';
102
+ }}
103
+ >
104
+ <upl-statuspage-statsgrid></upl-statuspage-statsgrid>
105
+ </dees-demowrapper>
106
+ </div>
107
+
108
+ <!-- Interactive Demo -->
109
+ <div class="demo-section">
110
+ <div class="demo-title">Interactive Demo</div>
111
+ <dees-demowrapper
112
+ .runAfterRender=${async (wrapperElement: any) => {
113
+ const statsGrid = wrapperElement.querySelector('upl-statuspage-statsgrid') as any;
114
+
115
+ // Initial state
116
+ statsGrid.currentStatus = 'operational';
117
+ statsGrid.uptime = 99.99;
118
+ statsGrid.avgResponseTime = 85;
119
+ statsGrid.totalIncidents = 0;
120
+ statsGrid.affectedServices = 0;
121
+ statsGrid.totalServices = 15;
122
+ statsGrid.timePeriod = '90 days';
123
+
124
+ // Create controls
125
+ const controls = document.createElement('div');
126
+ controls.className = 'demo-controls';
127
+
128
+ // Status buttons
129
+ const statuses = ['operational', 'degraded', 'partial_outage', 'major_outage', 'maintenance'];
130
+ statuses.forEach((status, index) => {
131
+ const button = document.createElement('button');
132
+ button.className = 'demo-button' + (index === 0 ? ' active' : '');
133
+ button.textContent = status.replace(/_/g, ' ').replace(/\b\w/g, l => l.toUpperCase());
134
+ button.onclick = () => {
135
+ controls.querySelectorAll('.demo-button').forEach(btn => btn.classList.remove('active'));
136
+ button.classList.add('active');
137
+
138
+ statsGrid.currentStatus = status;
139
+
140
+ // Adjust other values based on status
141
+ switch (status) {
142
+ case 'operational':
143
+ statsGrid.uptime = 99.99;
144
+ statsGrid.avgResponseTime = 85;
145
+ statsGrid.totalIncidents = 0;
146
+ statsGrid.affectedServices = 0;
147
+ break;
148
+ case 'degraded':
149
+ statsGrid.uptime = 98.50;
150
+ statsGrid.avgResponseTime = 350;
151
+ statsGrid.totalIncidents = 2;
152
+ statsGrid.affectedServices = 1;
153
+ break;
154
+ case 'partial_outage':
155
+ statsGrid.uptime = 97.00;
156
+ statsGrid.avgResponseTime = 750;
157
+ statsGrid.totalIncidents = 5;
158
+ statsGrid.affectedServices = 3;
159
+ break;
160
+ case 'major_outage':
161
+ statsGrid.uptime = 94.50;
162
+ statsGrid.avgResponseTime = 1500;
163
+ statsGrid.totalIncidents = 10;
164
+ statsGrid.affectedServices = 8;
165
+ break;
166
+ case 'maintenance':
167
+ statsGrid.uptime = 99.00;
168
+ statsGrid.avgResponseTime = 150;
169
+ statsGrid.totalIncidents = 1;
170
+ statsGrid.affectedServices = 2;
171
+ break;
172
+ }
173
+ };
174
+ controls.appendChild(button);
175
+ });
176
+
177
+ wrapperElement.appendChild(controls);
178
+
179
+ // Add time period selector
180
+ const timePeriodControls = document.createElement('div');
181
+ timePeriodControls.className = 'demo-controls';
182
+ timePeriodControls.style.marginTop = '10px';
183
+
184
+ const periods = ['24 hours', '7 days', '30 days', '90 days'];
185
+ periods.forEach((period, index) => {
186
+ const button = document.createElement('button');
187
+ button.className = 'demo-button' + (index === 3 ? ' active' : '');
188
+ button.textContent = period;
189
+ button.onclick = () => {
190
+ timePeriodControls.querySelectorAll('.demo-button').forEach(btn => btn.classList.remove('active'));
191
+ button.classList.add('active');
192
+ statsGrid.timePeriod = period;
193
+ };
194
+ timePeriodControls.appendChild(button);
195
+ });
196
+
197
+ wrapperElement.appendChild(timePeriodControls);
198
+ }}
199
+ >
200
+ <upl-statuspage-statsgrid></upl-statuspage-statsgrid>
201
+ </dees-demowrapper>
202
+ </div>
203
+
204
+ <!-- Loading State -->
205
+ <div class="demo-section">
206
+ <div class="demo-title">Loading State</div>
207
+ <dees-demowrapper
208
+ .runAfterRender=${async (wrapperElement: any) => {
209
+ const statsGrid = wrapperElement.querySelector('upl-statuspage-statsgrid') as any;
210
+ statsGrid.loading = true;
211
+
212
+ // Create toggle button
213
+ const controls = document.createElement('div');
214
+ controls.className = 'demo-controls';
215
+
216
+ const toggleButton = document.createElement('button');
217
+ toggleButton.className = 'demo-button';
218
+ toggleButton.textContent = 'Toggle Loading';
219
+ toggleButton.onclick = () => {
220
+ statsGrid.loading = !statsGrid.loading;
221
+ if (!statsGrid.loading) {
222
+ statsGrid.currentStatus = 'operational';
223
+ statsGrid.uptime = 99.95;
224
+ statsGrid.avgResponseTime = 125;
225
+ statsGrid.totalIncidents = 0;
226
+ statsGrid.affectedServices = 0;
227
+ statsGrid.totalServices = 12;
228
+ }
229
+ };
230
+ controls.appendChild(toggleButton);
231
+
232
+ wrapperElement.appendChild(controls);
233
+ }}
234
+ >
235
+ <upl-statuspage-statsgrid></upl-statuspage-statsgrid>
236
+ </dees-demowrapper>
237
+ </div>
238
+
239
+ <!-- Real-time Updates -->
240
+ <div class="demo-section">
241
+ <div class="demo-title">Real-time Updates</div>
242
+ <dees-demowrapper
243
+ .runAfterRender=${async (wrapperElement: any) => {
244
+ const statsGrid = wrapperElement.querySelector('upl-statuspage-statsgrid') as any;
245
+
246
+ // Initial values
247
+ statsGrid.currentStatus = 'operational';
248
+ statsGrid.uptime = 99.95;
249
+ statsGrid.avgResponseTime = 100;
250
+ statsGrid.totalIncidents = 0;
251
+ statsGrid.affectedServices = 0;
252
+ statsGrid.totalServices = 10;
253
+ statsGrid.timePeriod = '24 hours';
254
+
255
+ // Simulate real-time updates
256
+ let interval = setInterval(() => {
257
+ // Slight variations in response time
258
+ statsGrid.avgResponseTime = Math.floor(80 + Math.random() * 40);
259
+
260
+ // Occasionally change status
261
+ if (Math.random() < 0.1) {
262
+ const statuses = ['operational', 'degraded'];
263
+ statsGrid.currentStatus = statuses[Math.floor(Math.random() * statuses.length)];
264
+
265
+ if (statsGrid.currentStatus === 'degraded') {
266
+ statsGrid.avgResponseTime = Math.floor(300 + Math.random() * 200);
267
+ statsGrid.totalIncidents = Math.min(statsGrid.totalIncidents + 1, 5);
268
+ statsGrid.affectedServices = Math.min(Math.floor(Math.random() * 3) + 1, statsGrid.totalServices);
269
+ statsGrid.uptime = Math.max(99.0, statsGrid.uptime - 0.05);
270
+ } else {
271
+ statsGrid.affectedServices = 0;
272
+ }
273
+ }
274
+ }, 2000);
275
+
276
+ // Add control button
277
+ const controls = document.createElement('div');
278
+ controls.className = 'demo-controls';
279
+
280
+ const toggleButton = document.createElement('button');
281
+ toggleButton.className = 'demo-button active';
282
+ toggleButton.textContent = 'Stop Updates';
283
+ toggleButton.onclick = () => {
284
+ if (interval) {
285
+ clearInterval(interval);
286
+ interval = null;
287
+ toggleButton.textContent = 'Start Updates';
288
+ toggleButton.classList.remove('active');
289
+ } else {
290
+ interval = setInterval(() => {
291
+ statsGrid.avgResponseTime = Math.floor(80 + Math.random() * 40);
292
+ if (Math.random() < 0.1) {
293
+ const statuses = ['operational', 'degraded'];
294
+ statsGrid.currentStatus = statuses[Math.floor(Math.random() * statuses.length)];
295
+ }
296
+ }, 2000);
297
+ toggleButton.textContent = 'Stop Updates';
298
+ toggleButton.classList.add('active');
299
+ }
300
+ };
301
+ controls.appendChild(toggleButton);
302
+
303
+ wrapperElement.appendChild(controls);
304
+
305
+ // Cleanup on unmount
306
+ wrapperElement.addEventListener('remove', () => {
307
+ if (interval) clearInterval(interval);
308
+ });
309
+ }}
310
+ >
311
+ <upl-statuspage-statsgrid></upl-statuspage-statsgrid>
312
+ </dees-demowrapper>
313
+ </div>
314
+ </div>
315
+ `;