@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
@@ -6,7 +6,11 @@ declare global {
6
6
  }
7
7
  export declare class UplStatuspageHeader extends DeesElement {
8
8
  static demo: () => TemplateResult<1>;
9
- pageTitle: string;
9
+ accessor pageTitle: string;
10
+ accessor showReportButton: boolean;
11
+ accessor showSubscribeButton: boolean;
12
+ accessor logoUrl: string;
13
+ accessor loading: boolean;
10
14
  constructor();
11
15
  static styles: import("@design.estate/dees-element").CSSResult[];
12
16
  render(): TemplateResult;
@@ -0,0 +1 @@
1
+ export declare const demoFunc: () => import("@design.estate/dees-element").TemplateResult<1>;
@@ -0,0 +1,220 @@
1
+ import { html } from '@design.estate/dees-element';
2
+ export const demoFunc = () => html `
3
+ <style>
4
+ .demo-container {
5
+ display: flex;
6
+ flex-direction: column;
7
+ gap: 20px;
8
+ }
9
+ .demo-section {
10
+ border: 1px solid #ddd;
11
+ border-radius: 8px;
12
+ padding: 20px;
13
+ background: #f5f5f5;
14
+ }
15
+ .demo-title {
16
+ font-size: 14px;
17
+ font-weight: 600;
18
+ margin-bottom: 16px;
19
+ color: #333;
20
+ }
21
+ .demo-controls {
22
+ display: flex;
23
+ gap: 10px;
24
+ margin-top: 16px;
25
+ flex-wrap: wrap;
26
+ }
27
+ .demo-button {
28
+ padding: 6px 12px;
29
+ border: 1px solid #ddd;
30
+ background: white;
31
+ border-radius: 4px;
32
+ cursor: pointer;
33
+ font-size: 13px;
34
+ }
35
+ .demo-button:hover {
36
+ background: #f0f0f0;
37
+ }
38
+ </style>
39
+
40
+ <div class="demo-container">
41
+ <!-- Basic Header -->
42
+ <div class="demo-section">
43
+ <div class="demo-title">Basic Header with Dynamic Title</div>
44
+ <dees-demowrapper
45
+ .runAfterRender=${async (wrapperElement) => {
46
+ const header = wrapperElement.querySelector('upl-statuspage-header');
47
+ // Demo different titles
48
+ const titles = [
49
+ 'MyService Status Page',
50
+ 'Production Environment Status',
51
+ 'API Health Dashboard',
52
+ 'Global Infrastructure Status',
53
+ '🚀 Rocket Systems Monitor',
54
+ 'Multi-Region Service Status'
55
+ ];
56
+ let titleIndex = 0;
57
+ header.pageTitle = titles[titleIndex];
58
+ // Add event listeners
59
+ header.addEventListener('reportNewIncident', (event) => {
60
+ console.log('Report incident clicked');
61
+ alert('Report Incident form would open here');
62
+ });
63
+ header.addEventListener('statusSubscribe', (event) => {
64
+ console.log('Subscribe clicked');
65
+ alert('Subscribe modal would open here');
66
+ });
67
+ // Cycle through titles
68
+ setInterval(() => {
69
+ titleIndex = (titleIndex + 1) % titles.length;
70
+ header.pageTitle = titles[titleIndex];
71
+ }, 2000);
72
+ }}
73
+ >
74
+ <upl-statuspage-header></upl-statuspage-header>
75
+ </dees-demowrapper>
76
+ </div>
77
+
78
+ <!-- Header with Hidden Buttons -->
79
+ <div class="demo-section">
80
+ <div class="demo-title">Header with Configurable Buttons</div>
81
+ <dees-demowrapper
82
+ .runAfterRender=${async (wrapperElement) => {
83
+ const header = wrapperElement.querySelector('upl-statuspage-header');
84
+ header.pageTitle = 'Configurable Button States';
85
+ // Add properties to control button visibility
86
+ header.showReportButton = true;
87
+ header.showSubscribeButton = true;
88
+ const controls = document.createElement('div');
89
+ controls.className = 'demo-controls';
90
+ controls.innerHTML = `
91
+ <button class="demo-button" id="toggleReport">Toggle Report Button</button>
92
+ <button class="demo-button" id="toggleSubscribe">Toggle Subscribe Button</button>
93
+ <button class="demo-button" id="toggleBoth">Hide Both</button>
94
+ <button class="demo-button" id="showBoth">Show Both</button>
95
+ `;
96
+ wrapperElement.appendChild(controls);
97
+ controls.querySelector('#toggleReport')?.addEventListener('click', () => {
98
+ header.showReportButton = !header.showReportButton;
99
+ });
100
+ controls.querySelector('#toggleSubscribe')?.addEventListener('click', () => {
101
+ header.showSubscribeButton = !header.showSubscribeButton;
102
+ });
103
+ controls.querySelector('#toggleBoth')?.addEventListener('click', () => {
104
+ header.showReportButton = false;
105
+ header.showSubscribeButton = false;
106
+ });
107
+ controls.querySelector('#showBoth')?.addEventListener('click', () => {
108
+ header.showReportButton = true;
109
+ header.showSubscribeButton = true;
110
+ });
111
+ }}
112
+ >
113
+ <upl-statuspage-header></upl-statuspage-header>
114
+ </dees-demowrapper>
115
+ </div>
116
+
117
+ <!-- Header with Custom Styling -->
118
+ <div class="demo-section">
119
+ <div class="demo-title">Header with Custom Branding</div>
120
+ <dees-demowrapper
121
+ .runAfterRender=${async (wrapperElement) => {
122
+ const header = wrapperElement.querySelector('upl-statuspage-header');
123
+ header.pageTitle = 'Enterprise Cloud Platform';
124
+ // Custom branding properties
125
+ header.brandColor = '#1976D2';
126
+ header.logoUrl = 'https://via.placeholder.com/120x40/1976D2/ffffff?text=LOGO';
127
+ header.customStyles = true;
128
+ // Simulate different brand states
129
+ const brands = [
130
+ { title: 'Enterprise Cloud Platform', color: '#1976D2', logo: 'ENTERPRISE' },
131
+ { title: 'StartUp SaaS Monitor', color: '#00BCD4', logo: 'STARTUP' },
132
+ { title: 'Government Services Status', color: '#4CAF50', logo: 'GOV' },
133
+ { title: 'Financial Systems Health', color: '#673AB7', logo: 'FINTECH' }
134
+ ];
135
+ let brandIndex = 0;
136
+ setInterval(() => {
137
+ brandIndex = (brandIndex + 1) % brands.length;
138
+ const brand = brands[brandIndex];
139
+ header.pageTitle = brand.title;
140
+ header.brandColor = brand.color;
141
+ header.logoUrl = `https://via.placeholder.com/120x40/${brand.color.slice(1)}/ffffff?text=${brand.logo}`;
142
+ }, 3000);
143
+ }}
144
+ >
145
+ <upl-statuspage-header></upl-statuspage-header>
146
+ </dees-demowrapper>
147
+ </div>
148
+
149
+ <!-- Header with Loading State -->
150
+ <div class="demo-section">
151
+ <div class="demo-title">Header with Loading States</div>
152
+ <dees-demowrapper
153
+ .runAfterRender=${async (wrapperElement) => {
154
+ const header = wrapperElement.querySelector('upl-statuspage-header');
155
+ header.pageTitle = 'Loading State Demo';
156
+ header.loading = true;
157
+ // Simulate loading completion
158
+ setTimeout(() => {
159
+ header.loading = false;
160
+ header.pageTitle = 'Status Page Loaded';
161
+ }, 2000);
162
+ // Add loading toggle
163
+ const controls = document.createElement('div');
164
+ controls.className = 'demo-controls';
165
+ controls.innerHTML = `
166
+ <button class="demo-button" id="toggleLoading">Toggle Loading State</button>
167
+ `;
168
+ wrapperElement.appendChild(controls);
169
+ controls.querySelector('#toggleLoading')?.addEventListener('click', () => {
170
+ header.loading = !header.loading;
171
+ if (header.loading) {
172
+ header.pageTitle = 'Loading...';
173
+ setTimeout(() => {
174
+ header.loading = false;
175
+ header.pageTitle = 'Status Page Ready';
176
+ }, 2000);
177
+ }
178
+ });
179
+ }}
180
+ >
181
+ <upl-statuspage-header></upl-statuspage-header>
182
+ </dees-demowrapper>
183
+ </div>
184
+
185
+ <!-- Header with Event Counter -->
186
+ <div class="demo-section">
187
+ <div class="demo-title">Header with Event Tracking</div>
188
+ <dees-demowrapper
189
+ .runAfterRender=${async (wrapperElement) => {
190
+ const header = wrapperElement.querySelector('upl-statuspage-header');
191
+ header.pageTitle = 'Event Tracking Demo';
192
+ let reportCount = 0;
193
+ let subscribeCount = 0;
194
+ // Create counter display
195
+ const counterDisplay = document.createElement('div');
196
+ counterDisplay.style.marginTop = '16px';
197
+ counterDisplay.style.fontSize = '14px';
198
+ counterDisplay.innerHTML = `
199
+ <div>Report Clicks: <strong id="reportCount">0</strong></div>
200
+ <div>Subscribe Clicks: <strong id="subscribeCount">0</strong></div>
201
+ `;
202
+ wrapperElement.appendChild(counterDisplay);
203
+ header.addEventListener('reportNewIncident', () => {
204
+ reportCount++;
205
+ counterDisplay.querySelector('#reportCount').textContent = reportCount.toString();
206
+ console.log(`Report incident clicked ${reportCount} times`);
207
+ });
208
+ header.addEventListener('statusSubscribe', () => {
209
+ subscribeCount++;
210
+ counterDisplay.querySelector('#subscribeCount').textContent = subscribeCount.toString();
211
+ console.log(`Subscribe clicked ${subscribeCount} times`);
212
+ });
213
+ }}
214
+ >
215
+ <upl-statuspage-header></upl-statuspage-header>
216
+ </dees-demowrapper>
217
+ </div>
218
+ </div>
219
+ `;
220
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsLXN0YXR1c3BhZ2UtaGVhZGVyLmRlbW8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90c193ZWIvZWxlbWVudHMvdXBsLXN0YXR1c3BhZ2UtaGVhZGVyLmRlbW8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRW5ELE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7MEJBMkNSLEtBQUssRUFBRSxjQUFtQixFQUFFLEVBQUU7SUFDOUMsTUFBTSxNQUFNLEdBQUcsY0FBYyxDQUFDLGFBQWEsQ0FBQyx1QkFBdUIsQ0FBUSxDQUFDO0lBRTVFLHdCQUF3QjtJQUN4QixNQUFNLE1BQU0sR0FBRztRQUNiLHVCQUF1QjtRQUN2QiwrQkFBK0I7UUFDL0Isc0JBQXNCO1FBQ3RCLDhCQUE4QjtRQUM5QiwyQkFBMkI7UUFDM0IsNkJBQTZCO0tBQzlCLENBQUM7SUFFRixJQUFJLFVBQVUsR0FBRyxDQUFDLENBQUM7SUFDbkIsTUFBTSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFFdEMsc0JBQXNCO0lBQ3RCLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLEtBQWtCLEVBQUUsRUFBRTtRQUNsRSxPQUFPLENBQUMsR0FBRyxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFDdkMsS0FBSyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7SUFDaEQsQ0FBQyxDQUFDLENBQUM7SUFFSCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxLQUFrQixFQUFFLEVBQUU7UUFDaEUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ2pDLEtBQUssQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO0lB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