@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,616 @@
1
+ import { html, cssManager } from "@design.estate/dees-element";
2
+ export const statuspageDemo = () => html `
3
+ <style>
4
+ .demo-page-wrapper {
5
+ min-height: 100vh;
6
+ background: ${cssManager.bdTheme('#fafafa', '#0a0a0a')};
7
+ }
8
+ .demo-page-wrapper > dees-demowrapper {
9
+ display: flex;
10
+ flex-direction: column;
11
+ gap: 24px;
12
+ }
13
+ </style>
14
+
15
+ <div class="demo-page-wrapper">
16
+
17
+ <dees-demowrapper
18
+ .runAfterRender=${async (wrapperElement) => {
19
+ const header = wrapperElement.querySelector('upl-statuspage-header');
20
+ const pageTitle = wrapperElement.querySelector('upl-statuspage-pagetitle');
21
+ const statusBar = wrapperElement.querySelector('upl-statuspage-statusbar');
22
+ const statsGrid = wrapperElement.querySelector('upl-statuspage-statsgrid');
23
+ const assetsSelector = wrapperElement.querySelector('upl-statuspage-assetsselector');
24
+ const statusDetails = wrapperElement.querySelector('upl-statuspage-statusdetails');
25
+ const statusMonth = wrapperElement.querySelector('upl-statuspage-statusmonth');
26
+ const incidents = wrapperElement.querySelector('upl-statuspage-incidents');
27
+ const footer = wrapperElement.querySelector('upl-statuspage-footer');
28
+ // Configure Header
29
+ header.pageTitle = 'CloudFlow';
30
+ header.showReportButton = true;
31
+ header.showSubscribeButton = true;
32
+ header.logoUrl = 'https://via.placeholder.com/150x50/2196F3/ffffff?text=CF';
33
+ // Configure Page Title
34
+ pageTitle.pageTitle = 'Service Status';
35
+ pageTitle.pageSubtitle = 'Current operational status of CloudFlow Infrastructure services';
36
+ // Configure Overall Status
37
+ statusBar.overallStatus = {
38
+ status: 'degraded',
39
+ message: 'Minor service degradation in EU-West region',
40
+ lastUpdated: Date.now(),
41
+ affectedServices: 3,
42
+ totalServices: 18
43
+ };
44
+ // Configure Services
45
+ const services = [
46
+ // Core Infrastructure
47
+ {
48
+ id: 'api-gateway',
49
+ name: 'api-gateway',
50
+ displayName: 'API Gateway',
51
+ description: 'Main API endpoint for all services',
52
+ currentStatus: 'operational',
53
+ lastChecked: Date.now(),
54
+ uptime30d: 99.95,
55
+ uptime90d: 99.92,
56
+ responseTime: 45,
57
+ category: 'Core Services',
58
+ selected: true
59
+ },
60
+ {
61
+ id: 'auth-service',
62
+ name: 'auth-service',
63
+ displayName: 'Authentication Service',
64
+ description: 'User authentication and authorization',
65
+ currentStatus: 'operational',
66
+ lastChecked: Date.now(),
67
+ uptime30d: 99.98,
68
+ uptime90d: 99.95,
69
+ responseTime: 32,
70
+ category: 'Core Services',
71
+ selected: true
72
+ },
73
+ {
74
+ id: 'user-dashboard',
75
+ name: 'user-dashboard',
76
+ displayName: 'User Dashboard',
77
+ description: 'Web application dashboard',
78
+ currentStatus: 'operational',
79
+ lastChecked: Date.now(),
80
+ uptime30d: 99.99,
81
+ uptime90d: 99.97,
82
+ responseTime: 128,
83
+ category: 'Web Services',
84
+ selected: true
85
+ },
86
+ // Regional Services - US
87
+ {
88
+ id: 'us-east-compute',
89
+ name: 'us-east-compute',
90
+ displayName: 'US-East Compute',
91
+ description: 'Virtual machine instances',
92
+ currentStatus: 'operational',
93
+ lastChecked: Date.now(),
94
+ uptime30d: 99.94,
95
+ uptime90d: 99.91,
96
+ responseTime: 22,
97
+ category: 'US-East',
98
+ selected: true
99
+ },
100
+ {
101
+ id: 'us-east-storage',
102
+ name: 'us-east-storage',
103
+ displayName: 'US-East Storage',
104
+ description: 'Object storage service',
105
+ currentStatus: 'operational',
106
+ lastChecked: Date.now(),
107
+ uptime30d: 100,
108
+ uptime90d: 99.99,
109
+ responseTime: 18,
110
+ category: 'US-East',
111
+ selected: true
112
+ },
113
+ {
114
+ id: 'us-east-database',
115
+ name: 'us-east-database',
116
+ displayName: 'US-East Database',
117
+ description: 'Managed database clusters',
118
+ currentStatus: 'operational',
119
+ lastChecked: Date.now(),
120
+ uptime30d: 99.97,
121
+ uptime90d: 99.95,
122
+ responseTime: 14,
123
+ category: 'US-East',
124
+ selected: false
125
+ },
126
+ // Regional Services - EU (Degraded)
127
+ {
128
+ id: 'eu-west-compute',
129
+ name: 'eu-west-compute',
130
+ displayName: 'EU-West Compute',
131
+ description: 'Virtual machine instances',
132
+ currentStatus: 'degraded',
133
+ lastChecked: Date.now(),
134
+ uptime30d: 98.2,
135
+ uptime90d: 99.1,
136
+ responseTime: 145,
137
+ category: 'EU-West',
138
+ selected: true
139
+ },
140
+ {
141
+ id: 'eu-west-storage',
142
+ name: 'eu-west-storage',
143
+ displayName: 'EU-West Storage',
144
+ description: 'Object storage service',
145
+ currentStatus: 'degraded',
146
+ lastChecked: Date.now(),
147
+ uptime30d: 98.5,
148
+ uptime90d: 99.3,
149
+ responseTime: 220,
150
+ category: 'EU-West',
151
+ selected: true
152
+ },
153
+ {
154
+ id: 'eu-west-database',
155
+ name: 'eu-west-database',
156
+ displayName: 'EU-West Database',
157
+ description: 'Managed database clusters',
158
+ currentStatus: 'partial_outage',
159
+ lastChecked: Date.now(),
160
+ uptime30d: 97.8,
161
+ uptime90d: 98.9,
162
+ responseTime: 450,
163
+ category: 'EU-West',
164
+ selected: true
165
+ },
166
+ // Regional Services - Asia
167
+ {
168
+ id: 'ap-south-compute',
169
+ name: 'ap-south-compute',
170
+ displayName: 'Asia-Pacific Compute',
171
+ description: 'Virtual machine instances',
172
+ currentStatus: 'operational',
173
+ lastChecked: Date.now(),
174
+ uptime30d: 99.91,
175
+ uptime90d: 99.88,
176
+ responseTime: 38,
177
+ category: 'Asia-Pacific',
178
+ selected: false
179
+ },
180
+ {
181
+ id: 'ap-south-storage',
182
+ name: 'ap-south-storage',
183
+ displayName: 'Asia-Pacific Storage',
184
+ description: 'Object storage service',
185
+ currentStatus: 'operational',
186
+ lastChecked: Date.now(),
187
+ uptime30d: 99.95,
188
+ uptime90d: 99.93,
189
+ responseTime: 42,
190
+ category: 'Asia-Pacific',
191
+ selected: false
192
+ },
193
+ // Supporting Services
194
+ {
195
+ id: 'cdn',
196
+ name: 'cdn',
197
+ displayName: 'Content Delivery Network',
198
+ description: 'Global CDN for static assets',
199
+ currentStatus: 'operational',
200
+ lastChecked: Date.now(),
201
+ uptime30d: 100,
202
+ uptime90d: 99.99,
203
+ responseTime: 12,
204
+ category: 'Network',
205
+ selected: true
206
+ },
207
+ {
208
+ id: 'dns',
209
+ name: 'dns',
210
+ displayName: 'DNS Service',
211
+ description: 'Managed DNS resolution',
212
+ currentStatus: 'operational',
213
+ lastChecked: Date.now(),
214
+ uptime30d: 100,
215
+ uptime90d: 100,
216
+ responseTime: 8,
217
+ category: 'Network',
218
+ selected: false
219
+ },
220
+ {
221
+ id: 'monitoring',
222
+ name: 'monitoring',
223
+ displayName: 'Monitoring Service',
224
+ description: 'Infrastructure monitoring',
225
+ currentStatus: 'operational',
226
+ lastChecked: Date.now(),
227
+ uptime30d: 99.92,
228
+ uptime90d: 99.90,
229
+ responseTime: 65,
230
+ category: 'Operations',
231
+ selected: true
232
+ },
233
+ {
234
+ id: 'logging',
235
+ name: 'logging',
236
+ displayName: 'Logging Service',
237
+ description: 'Centralized log management',
238
+ currentStatus: 'operational',
239
+ lastChecked: Date.now(),
240
+ uptime30d: 99.88,
241
+ uptime90d: 99.85,
242
+ responseTime: 72,
243
+ category: 'Operations',
244
+ selected: false
245
+ },
246
+ {
247
+ id: 'backup-service',
248
+ name: 'backup-service',
249
+ displayName: 'Backup Service',
250
+ description: 'Automated backup system',
251
+ currentStatus: 'operational',
252
+ lastChecked: Date.now(),
253
+ uptime30d: 100,
254
+ uptime90d: 99.98,
255
+ responseTime: 95,
256
+ category: 'Operations',
257
+ selected: false
258
+ },
259
+ {
260
+ id: 'email-service',
261
+ name: 'email-service',
262
+ displayName: 'Email Delivery',
263
+ description: 'Transactional email service',
264
+ currentStatus: 'operational',
265
+ lastChecked: Date.now(),
266
+ uptime30d: 99.94,
267
+ uptime90d: 99.91,
268
+ responseTime: 125,
269
+ category: 'Communication',
270
+ selected: true
271
+ },
272
+ {
273
+ id: 'sms-service',
274
+ name: 'sms-service',
275
+ displayName: 'SMS Gateway',
276
+ description: 'SMS notification service',
277
+ currentStatus: 'operational',
278
+ lastChecked: Date.now(),
279
+ uptime30d: 99.89,
280
+ uptime90d: 99.87,
281
+ responseTime: 180,
282
+ category: 'Communication',
283
+ selected: false
284
+ }
285
+ ];
286
+ assetsSelector.services = services;
287
+ // Configure Status Details (48 hours of data)
288
+ const generateStatusDetails = () => {
289
+ const details = [];
290
+ const now = new Date();
291
+ for (let i = 47; i >= 0; i--) {
292
+ const date = new Date(now);
293
+ date.setMinutes(0, 0, 0);
294
+ date.setHours(date.getHours() - i);
295
+ let status = 'operational';
296
+ let value = 100;
297
+ // Simulate the EU-West issues from 6-3 hours ago
298
+ if (i >= 3 && i <= 6) {
299
+ status = 'degraded';
300
+ value = 85 + Math.random() * 10;
301
+ }
302
+ else if (i > 6 && i <= 12) {
303
+ // Some minor issues earlier
304
+ if (Math.random() > 0.8) {
305
+ status = 'degraded';
306
+ value = 90 + Math.random() * 10;
307
+ }
308
+ }
309
+ details.push({
310
+ timestamp: date.getTime(),
311
+ status,
312
+ responseTime: status === 'operational' ? 20 + Math.random() * 30 : 50 + Math.random() * 100
313
+ });
314
+ }
315
+ return details;
316
+ };
317
+ statusDetails.dataPoints = generateStatusDetails();
318
+ statusDetails.serviceId = 'eu-west-database';
319
+ statusDetails.serviceName = 'EU-West Database';
320
+ // Configure Monthly Status
321
+ const generateMonthlyData = () => {
322
+ const months = [];
323
+ const now = new Date();
324
+ for (let m = 4; m >= 0; m--) {
325
+ const monthDate = new Date(now.getFullYear(), now.getMonth() - m, 1);
326
+ const daysInMonth = new Date(monthDate.getFullYear(), monthDate.getMonth() + 1, 0).getDate();
327
+ const monthKey = monthDate.toISOString().slice(0, 7);
328
+ const days = [];
329
+ let totalUptime = 0;
330
+ let incidents = 0;
331
+ for (let d = 1; d <= daysInMonth; d++) {
332
+ const dayDate = new Date(monthDate.getFullYear(), monthDate.getMonth(), d);
333
+ const isToday = dayDate.toDateString() === now.toDateString();
334
+ const isFuture = dayDate > now;
335
+ if (isFuture)
336
+ continue;
337
+ let status = 'operational';
338
+ let uptime = 100;
339
+ let dayIncidents = 0;
340
+ // Add some random incidents
341
+ if (!isToday && Math.random() > 0.92) {
342
+ status = 'degraded';
343
+ uptime = 95 + Math.random() * 4;
344
+ dayIncidents = 1;
345
+ }
346
+ else if (!isToday && Math.random() > 0.98) {
347
+ status = 'partial_outage';
348
+ uptime = 80 + Math.random() * 15;
349
+ dayIncidents = 2;
350
+ }
351
+ // Today's incident
352
+ if (isToday) {
353
+ status = 'degraded';
354
+ uptime = 96.5;
355
+ dayIncidents = 1;
356
+ }
357
+ days.push({
358
+ date: dayDate.toISOString().slice(0, 10),
359
+ status,
360
+ uptime,
361
+ incidents: dayIncidents,
362
+ totalDowntime: Math.round((100 - uptime) * 14.4) // Convert to minutes (1440 minutes per day)
363
+ });
364
+ totalUptime += uptime;
365
+ incidents += dayIncidents;
366
+ }
367
+ months.push({
368
+ month: monthKey,
369
+ days,
370
+ overallUptime: totalUptime / days.length,
371
+ totalIncidents: incidents
372
+ });
373
+ }
374
+ return months;
375
+ };
376
+ statusMonth.monthlyData = generateMonthlyData();
377
+ statusMonth.serviceId = 'all-services';
378
+ statusMonth.serviceName = 'All Services';
379
+ // Configure Incidents
380
+ const currentIncidents = [
381
+ {
382
+ id: 'inc-2024-001',
383
+ title: 'EU-West Database Performance Degradation',
384
+ impact: 'Users in EU-West region may experience slower database queries and occasional timeouts',
385
+ severity: 'major',
386
+ status: 'investigating',
387
+ startTime: Date.now() - 3 * 60 * 60 * 1000, // 3 hours ago
388
+ affectedServices: ['EU-West Database', 'EU-West Compute', 'EU-West Storage'],
389
+ updates: [
390
+ {
391
+ id: 'update-1',
392
+ timestamp: Date.now() - 3 * 60 * 60 * 1000,
393
+ status: 'investigating',
394
+ message: 'We are investigating reports of database performance issues in the EU-West region.',
395
+ author: 'CloudFlow Operations'
396
+ },
397
+ {
398
+ id: 'update-2',
399
+ timestamp: Date.now() - 2.5 * 60 * 60 * 1000,
400
+ status: 'identified',
401
+ message: 'We have identified unusual load patterns on our EU-West database cluster. Our team is working on redistributing the load.',
402
+ author: 'Database Team'
403
+ },
404
+ {
405
+ id: 'update-3',
406
+ timestamp: Date.now() - 1 * 60 * 60 * 1000,
407
+ status: 'monitoring',
408
+ message: 'Load balancing adjustments have been applied. We are monitoring the situation closely. Performance is gradually improving.',
409
+ author: 'CloudFlow Operations'
410
+ }
411
+ ]
412
+ }
413
+ ];
414
+ const pastIncidents = [
415
+ {
416
+ id: 'inc-2023-098',
417
+ title: 'Global Authentication Service Outage',
418
+ impact: 'Users were unable to log in to their accounts',
419
+ severity: 'critical',
420
+ status: 'resolved',
421
+ startTime: Date.now() - 7 * 24 * 60 * 60 * 1000, // 7 days ago
422
+ endTime: Date.now() - 7 * 24 * 60 * 60 * 1000 + 2 * 60 * 60 * 1000, // 2 hour duration
423
+ affectedServices: ['Authentication Service', 'User Dashboard', 'API Gateway'],
424
+ rootCause: 'A configuration change in our authentication service caused a cascading failure in the token validation system.',
425
+ resolution: 'The configuration was rolled back and additional safeguards were implemented to prevent similar issues.',
426
+ updates: [
427
+ {
428
+ id: 'update-4',
429
+ timestamp: Date.now() - 7 * 24 * 60 * 60 * 1000,
430
+ status: 'investigating',
431
+ message: 'Multiple reports of login failures across all regions.',
432
+ author: 'CloudFlow Operations'
433
+ },
434
+ {
435
+ id: 'update-5',
436
+ timestamp: Date.now() - 7 * 24 * 60 * 60 * 1000 + 30 * 60 * 1000,
437
+ status: 'identified',
438
+ message: 'Root cause identified as misconfiguration in auth service. Rolling back changes.',
439
+ author: 'Security Team'
440
+ },
441
+ {
442
+ id: 'update-6',
443
+ timestamp: Date.now() - 7 * 24 * 60 * 60 * 1000 + 90 * 60 * 1000,
444
+ status: 'monitoring',
445
+ message: 'Service restored. Monitoring for any lingering issues.',
446
+ author: 'CloudFlow Operations'
447
+ },
448
+ {
449
+ id: 'update-7',
450
+ timestamp: Date.now() - 7 * 24 * 60 * 60 * 1000 + 2 * 60 * 60 * 1000,
451
+ status: 'resolved',
452
+ message: 'All systems operating normally. Incident resolved.',
453
+ author: 'CloudFlow Operations'
454
+ },
455
+ {
456
+ id: 'update-8',
457
+ timestamp: Date.now() - 6 * 24 * 60 * 60 * 1000,
458
+ status: 'postmortem',
459
+ message: 'Postmortem completed. Action items identified and assigned to prevent recurrence.',
460
+ author: 'Engineering Lead'
461
+ }
462
+ ]
463
+ },
464
+ {
465
+ id: 'inc-2023-095',
466
+ title: 'US-East Storage Service Maintenance',
467
+ impact: 'Reduced redundancy for stored objects during maintenance window',
468
+ severity: 'minor',
469
+ status: 'resolved',
470
+ startTime: Date.now() - 14 * 24 * 60 * 60 * 1000,
471
+ endTime: Date.now() - 14 * 24 * 60 * 60 * 1000 + 4 * 60 * 60 * 1000,
472
+ affectedServices: ['US-East Storage'],
473
+ rootCause: 'Scheduled maintenance for storage infrastructure upgrade.',
474
+ resolution: 'Maintenance completed successfully. All systems operating at full redundancy.',
475
+ updates: [
476
+ {
477
+ id: 'update-9',
478
+ timestamp: Date.now() - 21 * 24 * 60 * 60 * 1000,
479
+ status: 'investigating',
480
+ message: 'Scheduled maintenance announced for US-East Storage service.',
481
+ author: 'CloudFlow Operations'
482
+ },
483
+ {
484
+ id: 'update-10',
485
+ timestamp: Date.now() - 14 * 24 * 60 * 60 * 1000,
486
+ status: 'monitoring',
487
+ message: 'Maintenance window has begun. No customer impact expected.',
488
+ author: 'Storage Team'
489
+ },
490
+ {
491
+ id: 'update-11',
492
+ timestamp: Date.now() - 14 * 24 * 60 * 60 * 1000 + 4 * 60 * 60 * 1000,
493
+ status: 'resolved',
494
+ message: 'Maintenance completed successfully.',
495
+ author: 'Storage Team'
496
+ }
497
+ ]
498
+ },
499
+ {
500
+ id: 'inc-2023-089',
501
+ title: 'API Gateway Rate Limiting Issues',
502
+ impact: 'Some API requests were incorrectly rate limited',
503
+ severity: 'major',
504
+ status: 'resolved',
505
+ startTime: Date.now() - 30 * 24 * 60 * 60 * 1000,
506
+ endTime: Date.now() - 30 * 24 * 60 * 60 * 1000 + 45 * 60 * 1000,
507
+ affectedServices: ['API Gateway'],
508
+ rootCause: 'A bug in the rate limiting algorithm caused legitimate requests to be blocked.',
509
+ resolution: 'Hotfix deployed to correct the rate limiting logic.',
510
+ updates: [
511
+ {
512
+ id: 'update-12',
513
+ timestamp: Date.now() - 30 * 24 * 60 * 60 * 1000,
514
+ status: 'investigating',
515
+ message: 'Reports of API requests being blocked despite being within rate limits.',
516
+ author: 'API Team'
517
+ },
518
+ {
519
+ id: 'update-13',
520
+ timestamp: Date.now() - 30 * 24 * 60 * 60 * 1000 + 20 * 60 * 1000,
521
+ status: 'identified',
522
+ message: 'Bug identified in rate limiting code. Preparing hotfix.',
523
+ author: 'API Team'
524
+ },
525
+ {
526
+ id: 'update-14',
527
+ timestamp: Date.now() - 30 * 24 * 60 * 60 * 1000 + 45 * 60 * 1000,
528
+ status: 'resolved',
529
+ message: 'Hotfix deployed. Rate limiting now functioning correctly.',
530
+ author: 'API Team'
531
+ }
532
+ ]
533
+ }
534
+ ];
535
+ incidents.currentIncidents = currentIncidents;
536
+ incidents.pastIncidents = pastIncidents;
537
+ // Configure Stats Grid
538
+ const operationalCount = services.filter(s => s.currentStatus === 'operational').length;
539
+ const totalIncidents = currentIncidents.length + 3; // Current + recent past
540
+ const avgResponseTime = services.reduce((sum, s) => sum + (s.responseTime || 0), 0) / services.length;
541
+ const avgUptime = services.reduce((sum, s) => sum + (s.uptime30d || 0), 0) / services.length;
542
+ statsGrid.currentStatus = 'degraded';
543
+ statsGrid.uptime = avgUptime;
544
+ statsGrid.avgResponseTime = Math.round(avgResponseTime);
545
+ statsGrid.totalIncidents = totalIncidents;
546
+ statsGrid.affectedServices = services.filter(s => s.currentStatus !== 'operational').length;
547
+ statsGrid.totalServices = services.length;
548
+ statsGrid.timePeriod = '30 days';
549
+ // Configure Footer
550
+ footer.companyName = 'CloudFlow Infrastructure';
551
+ footer.legalUrl = 'https://cloudflow.example.com/legal';
552
+ footer.supportEmail = 'support@cloudflow.example.com';
553
+ footer.statusPageUrl = 'https://status.cloudflow.example.com';
554
+ footer.lastUpdated = Date.now();
555
+ footer.currentYear = new Date().getFullYear();
556
+ footer.socialLinks = [
557
+ { platform: 'twitter', url: 'https://twitter.com/cloudflow' },
558
+ { platform: 'github', url: 'https://github.com/cloudflow' },
559
+ { platform: 'linkedin', url: 'https://linkedin.com/company/cloudflow' }
560
+ ];
561
+ footer.rssFeedUrl = 'https://status.cloudflow.example.com/rss';
562
+ footer.apiStatusUrl = 'https://api.cloudflow.example.com/v1/status';
563
+ footer.enableSubscribe = true;
564
+ footer.subscriberCount = 2847;
565
+ footer.additionalLinks = [
566
+ { label: 'API Documentation', url: 'https://docs.cloudflow.example.com' },
567
+ { label: 'Service SLA', url: 'https://cloudflow.example.com/sla' },
568
+ { label: 'Privacy Policy', url: 'https://cloudflow.example.com/privacy' }
569
+ ];
570
+ // Add event listeners for interactivity
571
+ header.addEventListener('reportNewIncident', () => {
572
+ alert('Report Incident: This would open a form to report a new incident.');
573
+ });
574
+ header.addEventListener('statusSubscribe', () => {
575
+ alert('Subscribe: This would open a subscription form for status updates.');
576
+ });
577
+ footer.addEventListener('subscribeClick', () => {
578
+ alert('Subscribe to updates: Enter your email for status notifications.');
579
+ });
580
+ assetsSelector.addEventListener('selectionChanged', (event) => {
581
+ console.log('Selected services changed:', event.detail.selectedServices);
582
+ // In a real app, this would update the other components to show only selected services
583
+ });
584
+ statusMonth.addEventListener('dayClick', (event) => {
585
+ console.log('Day clicked:', event.detail);
586
+ alert(`Day details: ${event.detail.date}\nUptime: ${event.detail.uptime}%\nIncidents: ${event.detail.incidents}`);
587
+ });
588
+ // Simulate real-time updates
589
+ setInterval(() => {
590
+ // Update last checked times
591
+ services.forEach(service => {
592
+ service.lastChecked = Date.now();
593
+ // Randomly change response times
594
+ service.responseTime = service.responseTime * (0.9 + Math.random() * 0.2);
595
+ });
596
+ assetsSelector.requestUpdate();
597
+ // Update overall status last updated
598
+ statusBar.overallStatus = { ...statusBar.overallStatus, lastUpdated: Date.now() };
599
+ // Update footer last updated
600
+ footer.lastUpdated = Date.now();
601
+ }, 30000); // Every 30 seconds
602
+ }}
603
+ >
604
+ <upl-statuspage-header></upl-statuspage-header>
605
+ <upl-statuspage-pagetitle></upl-statuspage-pagetitle>
606
+ <upl-statuspage-statusbar></upl-statuspage-statusbar>
607
+ <upl-statuspage-statsgrid></upl-statuspage-statsgrid>
608
+ <upl-statuspage-assetsselector></upl-statuspage-assetsselector>
609
+ <upl-statuspage-statusdetails></upl-statuspage-statusdetails>
610
+ <upl-statuspage-statusmonth></upl-statuspage-statusmonth>
611
+ <upl-statuspage-incidents></upl-statuspage-incidents>
612
+ <upl-statuspage-footer></upl-statuspage-footer>
613
+ </dees-demowrapper>
614
+ </div>
615
+ `;
616
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdHVzcGFnZS1kZW1vLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHNfd2ViL3BhZ2VzL3N0YXR1c3BhZ2UtZGVtby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRy9ELE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUE7Ozs7b0JBSXBCLFVBQVUsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQzs7Ozs7Ozs7Ozs7O3NCQVl0QyxLQUFLLEVBQUUsY0FBbUIsRUFBRSxFQUFFO0lBQzlDLE1BQU0sTUFBTSxHQUFHLGNBQWMsQ0FBQyxhQUFhLENBQUMsdUJBQXVCLENBQVEsQ0FBQztJQUM1RSxNQUFNLFNBQVMsR0FBRyxjQUFjLENBQUMsYUFBYSxDQUFDLDBCQUEwQixDQUFRLENBQUM7SUFDbEYsTUFBTSxTQUFTLEdBQUcsY0FBYyxDQUFDLGFBQWEsQ0FBQywwQkFBMEIsQ0FBUSxDQUFDO0lBQ2xGLE1BQU0sU0FBUyxHQUFHLGNBQWMsQ0FBQyxhQUFhLENBQUMsMEJBQTBCLENBQVEsQ0FBQztJQUNsRixNQUFNLGNBQWMsR0FBRyxjQUFjLENBQUMsYUFBYSxDQUFDLCtCQUErQixDQUFRLENBQUM7SUFDNUYsTUFBTSxhQUFhLEdBQUcsY0FBYyxDQUFDLGFBQWEsQ0FBQyw4QkFBOEIsQ0FBUSxDQUFDO0lBQzFGLE1BQU0sV0FBVyxHQUFHLGNBQWMsQ0FBQyxhQUFhLENBQUMsNEJBQTRCLENBQVEsQ0FBQztJQUN0RixNQUFNLFNBQVMsR0FBRyxjQUFjLENBQUMsYUFBYSxDQUFDLDBCQUEwQixDQUFRLENBQUM7SUFDbEYsTUFBTSxNQUFNLEdBQUcsY0FBYyxDQUFDLGFBQWEsQ0FBQyx1QkFBdUIsQ0FBUSxDQUFDO0lBRTVFLG1CQUFtQjtJQUNuQixNQUFNLENBQUMsU0FBUyxHQUFHLFdBQVcs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
@@ -0,0 +1 @@
1
+ export declare const statuspageMaintenance: () => import("@design.estate/dees-element").TemplateResult<1>;