@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
@@ -0,0 +1,367 @@
1
+ import { css, cssManager, unsafeCSS } from '@design.estate/dees-element';
2
+
3
+ export const fonts = {
4
+ base: `'Geist Sans', -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif`,
5
+ mono: `'Geist Mono', ui-monospace, SFMono-Regular, "SF Mono", Consolas, "Liberation Mono", Menlo, monospace`
6
+ };
7
+
8
+ export const colors = {
9
+ // Background colors
10
+ background: {
11
+ primary: cssManager.bdTheme('#ffffff', '#09090b'),
12
+ secondary: cssManager.bdTheme('#fafafa', '#18181b'),
13
+ muted: cssManager.bdTheme('#f4f4f5', '#27272a'),
14
+ card: cssManager.bdTheme('#ffffff', '#0f0f12'),
15
+ elevated: cssManager.bdTheme('#ffffff', '#1a1a1e')
16
+ },
17
+
18
+ // Border colors
19
+ border: {
20
+ default: cssManager.bdTheme('#e4e4e7', '#27272a'),
21
+ muted: cssManager.bdTheme('#f4f4f5', '#3f3f46'),
22
+ subtle: cssManager.bdTheme('#f0f0f2', '#1f1f23')
23
+ },
24
+
25
+ // Text colors
26
+ text: {
27
+ primary: cssManager.bdTheme('#09090b', '#fafafa'),
28
+ secondary: cssManager.bdTheme('#71717a', '#a1a1aa'),
29
+ muted: cssManager.bdTheme('#a1a1aa', '#71717a')
30
+ },
31
+
32
+ // Status colors - vibrant and accessible
33
+ status: {
34
+ operational: cssManager.bdTheme('#16a34a', '#22c55e'),
35
+ degraded: cssManager.bdTheme('#d97706', '#fbbf24'),
36
+ partial: cssManager.bdTheme('#dc2626', '#f87171'),
37
+ major: cssManager.bdTheme('#b91c1c', '#ef4444'),
38
+ maintenance: cssManager.bdTheme('#2563eb', '#60a5fa')
39
+ },
40
+
41
+ // Accent colors for interactive elements
42
+ accent: {
43
+ primary: cssManager.bdTheme('#09090b', '#fafafa'),
44
+ hover: cssManager.bdTheme('#18181b', '#e4e4e7'),
45
+ focus: cssManager.bdTheme('#3b82f6', '#60a5fa')
46
+ }
47
+ };
48
+
49
+ export const shadows = {
50
+ xs: '0 1px 2px 0 rgba(0, 0, 0, 0.03)',
51
+ sm: '0 1px 3px 0 rgba(0, 0, 0, 0.06), 0 1px 2px -1px rgba(0, 0, 0, 0.06)',
52
+ base: '0 4px 6px -1px rgba(0, 0, 0, 0.07), 0 2px 4px -2px rgba(0, 0, 0, 0.05)',
53
+ md: '0 6px 12px -2px rgba(0, 0, 0, 0.08), 0 3px 7px -3px rgba(0, 0, 0, 0.05)',
54
+ lg: '0 12px 24px -4px rgba(0, 0, 0, 0.1), 0 6px 12px -6px rgba(0, 0, 0, 0.05)',
55
+ xl: '0 24px 48px -12px rgba(0, 0, 0, 0.12), 0 12px 24px -12px rgba(0, 0, 0, 0.05)',
56
+ inner: 'inset 0 2px 4px 0 rgba(0, 0, 0, 0.04)',
57
+ glow: '0 0 20px -5px rgba(34, 197, 94, 0.3)'
58
+ };
59
+
60
+ export const borderRadius = {
61
+ xs: '3px',
62
+ sm: '4px',
63
+ base: '6px',
64
+ md: '8px',
65
+ lg: '12px',
66
+ xl: '16px',
67
+ '2xl': '24px',
68
+ full: '9999px'
69
+ };
70
+
71
+ export const spacing = {
72
+ xs: '4px',
73
+ sm: '8px',
74
+ md: '16px',
75
+ lg: '24px',
76
+ xl: '32px',
77
+ '2xl': '48px',
78
+ '3xl': '64px',
79
+ '4xl': '96px'
80
+ };
81
+
82
+ // Animation easings
83
+ export const easings = {
84
+ default: 'cubic-bezier(0.4, 0, 0.2, 1)',
85
+ smooth: 'cubic-bezier(0.4, 0, 0.6, 1)',
86
+ bounce: 'cubic-bezier(0.68, -0.55, 0.265, 1.55)',
87
+ snappy: 'cubic-bezier(0.2, 0, 0, 1)'
88
+ };
89
+
90
+ // Durations
91
+ export const durations = {
92
+ fast: '100ms',
93
+ normal: '200ms',
94
+ slow: '300ms',
95
+ slower: '500ms'
96
+ };
97
+
98
+ export const commonStyles = css`
99
+ /* Button styles */
100
+ .button {
101
+ display: inline-flex;
102
+ align-items: center;
103
+ justify-content: center;
104
+ font-family: ${unsafeCSS(fonts.base)};
105
+ font-size: 13px;
106
+ font-weight: 500;
107
+ height: 36px;
108
+ padding: 0 14px;
109
+ border-radius: ${unsafeCSS(borderRadius.base)};
110
+ border: 1px solid ${colors.border.default};
111
+ background: ${colors.background.primary};
112
+ color: ${colors.text.primary};
113
+ cursor: pointer;
114
+ user-select: none;
115
+ transition: all ${unsafeCSS(durations.normal)} ${unsafeCSS(easings.default)};
116
+ gap: 6px;
117
+ white-space: nowrap;
118
+ letter-spacing: -0.01em;
119
+ }
120
+
121
+ .button:hover {
122
+ background: ${colors.background.secondary};
123
+ border-color: ${cssManager.bdTheme('#d4d4d8', '#3f3f46')};
124
+ box-shadow: ${unsafeCSS(shadows.xs)};
125
+ }
126
+
127
+ .button:active {
128
+ transform: scale(0.98);
129
+ transition-duration: ${unsafeCSS(durations.fast)};
130
+ }
131
+
132
+ .button:focus-visible {
133
+ outline: 2px solid ${colors.accent.focus};
134
+ outline-offset: 2px;
135
+ }
136
+
137
+ .button.primary {
138
+ background: ${colors.accent.primary};
139
+ color: ${colors.background.primary};
140
+ border-color: transparent;
141
+ }
142
+
143
+ .button.primary:hover {
144
+ background: ${colors.accent.hover};
145
+ box-shadow: ${unsafeCSS(shadows.sm)};
146
+ }
147
+
148
+ .button.ghost {
149
+ background: transparent;
150
+ border-color: transparent;
151
+ }
152
+
153
+ .button.ghost:hover {
154
+ background: ${colors.background.muted};
155
+ }
156
+
157
+ .button.sm {
158
+ height: 32px;
159
+ padding: 0 12px;
160
+ font-size: 12px;
161
+ }
162
+
163
+ .button.lg {
164
+ height: 44px;
165
+ padding: 0 20px;
166
+ font-size: 15px;
167
+ }
168
+
169
+ /* Card styles */
170
+ .card {
171
+ background: ${colors.background.card};
172
+ border: 1px solid ${colors.border.default};
173
+ border-radius: ${unsafeCSS(borderRadius.lg)};
174
+ padding: ${unsafeCSS(spacing.lg)};
175
+ box-shadow: ${unsafeCSS(shadows.sm)};
176
+ transition: all ${unsafeCSS(durations.normal)} ${unsafeCSS(easings.default)};
177
+ }
178
+
179
+ .card:hover {
180
+ border-color: ${colors.border.muted};
181
+ box-shadow: ${unsafeCSS(shadows.base)};
182
+ }
183
+
184
+ .card.interactive {
185
+ cursor: pointer;
186
+ }
187
+
188
+ .card.interactive:hover {
189
+ transform: translateY(-2px);
190
+ box-shadow: ${unsafeCSS(shadows.md)};
191
+ }
192
+
193
+ /* Loading skeleton */
194
+ .skeleton {
195
+ background: ${cssManager.bdTheme(
196
+ 'linear-gradient(90deg, #f4f4f5 0%, #e4e4e7 50%, #f4f4f5 100%)',
197
+ 'linear-gradient(90deg, #18181b 0%, #27272a 50%, #18181b 100%)'
198
+ )};
199
+ background-size: 200% 100%;
200
+ animation: skeleton-loading 1.5s ease-in-out infinite;
201
+ border-radius: ${unsafeCSS(borderRadius.base)};
202
+ }
203
+
204
+ @keyframes skeleton-loading {
205
+ 0% { background-position: 200% 0; }
206
+ 100% { background-position: -200% 0; }
207
+ }
208
+
209
+ /* Pulse animation for status indicators */
210
+ @keyframes pulse {
211
+ 0%, 100% { opacity: 1; }
212
+ 50% { opacity: 0.5; }
213
+ }
214
+
215
+ /* Fade in animation */
216
+ @keyframes fadeIn {
217
+ from { opacity: 0; transform: translateY(4px); }
218
+ to { opacity: 1; transform: translateY(0); }
219
+ }
220
+
221
+ .fade-in {
222
+ animation: fadeIn ${unsafeCSS(durations.slow)} ${unsafeCSS(easings.default)} forwards;
223
+ }
224
+
225
+ /* Scale in animation */
226
+ @keyframes scaleIn {
227
+ from { opacity: 0; transform: scale(0.95); }
228
+ to { opacity: 1; transform: scale(1); }
229
+ }
230
+
231
+ .scale-in {
232
+ animation: scaleIn ${unsafeCSS(durations.slow)} ${unsafeCSS(easings.bounce)} forwards;
233
+ }
234
+
235
+ /* Container styles */
236
+ .container {
237
+ max-width: 1200px;
238
+ margin: 0 auto;
239
+ padding: 0 ${unsafeCSS(spacing.lg)};
240
+ }
241
+
242
+ /* Status pill */
243
+ .status-pill {
244
+ display: inline-flex;
245
+ align-items: center;
246
+ gap: 6px;
247
+ padding: 4px 10px;
248
+ border-radius: ${unsafeCSS(borderRadius.full)};
249
+ font-size: 12px;
250
+ font-weight: 500;
251
+ letter-spacing: 0.01em;
252
+ }
253
+
254
+ .status-pill .status-dot {
255
+ width: 6px;
256
+ height: 6px;
257
+ border-radius: 50%;
258
+ flex-shrink: 0;
259
+ }
260
+
261
+ .status-pill.operational {
262
+ background: ${cssManager.bdTheme('rgba(22, 163, 74, 0.1)', 'rgba(34, 197, 94, 0.15)')};
263
+ color: ${cssManager.bdTheme('#15803d', '#4ade80')};
264
+ }
265
+
266
+ .status-pill.operational .status-dot {
267
+ background: ${colors.status.operational};
268
+ }
269
+
270
+ .status-pill.degraded {
271
+ background: ${cssManager.bdTheme('rgba(217, 119, 6, 0.1)', 'rgba(251, 191, 36, 0.15)')};
272
+ color: ${cssManager.bdTheme('#b45309', '#fcd34d')};
273
+ }
274
+
275
+ .status-pill.degraded .status-dot {
276
+ background: ${colors.status.degraded};
277
+ }
278
+
279
+ .status-pill.partial_outage,
280
+ .status-pill.major_outage {
281
+ background: ${cssManager.bdTheme('rgba(220, 38, 38, 0.1)', 'rgba(248, 113, 113, 0.15)')};
282
+ color: ${cssManager.bdTheme('#b91c1c', '#fca5a5')};
283
+ }
284
+
285
+ .status-pill.partial_outage .status-dot,
286
+ .status-pill.major_outage .status-dot {
287
+ background: ${colors.status.major};
288
+ }
289
+
290
+ .status-pill.maintenance {
291
+ background: ${cssManager.bdTheme('rgba(37, 99, 235, 0.1)', 'rgba(96, 165, 250, 0.15)')};
292
+ color: ${cssManager.bdTheme('#1d4ed8', '#93c5fd')};
293
+ }
294
+
295
+ .status-pill.maintenance .status-dot {
296
+ background: ${colors.status.maintenance};
297
+ }
298
+
299
+ /* Responsive utilities */
300
+ @media (max-width: 1024px) {
301
+ .container {
302
+ padding: 0 ${unsafeCSS(spacing.md)};
303
+ }
304
+ }
305
+
306
+ @media (max-width: 640px) {
307
+ .container {
308
+ padding: 0 ${unsafeCSS(spacing.md)};
309
+ }
310
+
311
+ .button {
312
+ height: 40px;
313
+ padding: 0 16px;
314
+ }
315
+
316
+ .button.sm {
317
+ height: 36px;
318
+ }
319
+ }
320
+
321
+ /* Visually hidden (for accessibility) */
322
+ .sr-only {
323
+ position: absolute;
324
+ width: 1px;
325
+ height: 1px;
326
+ padding: 0;
327
+ margin: -1px;
328
+ overflow: hidden;
329
+ clip: rect(0, 0, 0, 0);
330
+ white-space: nowrap;
331
+ border: 0;
332
+ }
333
+ `;
334
+
335
+ export const getStatusColor = (status: string) => {
336
+ switch (status) {
337
+ case 'operational':
338
+ return colors.status.operational;
339
+ case 'degraded':
340
+ return colors.status.degraded;
341
+ case 'partial_outage':
342
+ return colors.status.partial;
343
+ case 'major_outage':
344
+ return colors.status.major;
345
+ case 'maintenance':
346
+ return colors.status.maintenance;
347
+ default:
348
+ return colors.text.secondary;
349
+ }
350
+ };
351
+
352
+ export const getStatusIcon = (status: string) => {
353
+ switch (status) {
354
+ case 'operational':
355
+ return '✓';
356
+ case 'degraded':
357
+ return '!';
358
+ case 'partial_outage':
359
+ return '⚠';
360
+ case 'major_outage':
361
+ return '✕';
362
+ case 'maintenance':
363
+ return '🔧';
364
+ default:
365
+ return '?';
366
+ }
367
+ };
@@ -1 +0,0 @@
1
- export declare const page1: () => import("@design.estate/dees-element").TemplateResult<1>;
@@ -1,11 +0,0 @@
1
- import { html } from "@design.estate/dees-element";
2
- export const page1 = () => html `
3
- <upl-statuspage-header></upl-statuspage-header>
4
- <upl-statuspage-statusbar></upl-statuspage-statusbar>
5
- <upl-statuspage-assetsselector></upl-statuspage-assetsselector>
6
- <upl-statuspage-statusdetails></upl-statuspage-statusdetails>
7
- <upl-statuspage-statusmonth></upl-statuspage-statusmonth>
8
- <upl-statuspage-incidents></upl-statuspage-incidents>
9
- <upl-statuspage-footer></upl-statuspage-footer>
10
- `;
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZTEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90c193ZWIvcGFnZXMvcGFnZTEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRW5ELE1BQU0sQ0FBQyxNQUFNLEtBQUssR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUE7Ozs7Ozs7O0NBUTlCLENBQUMifQ==
@@ -1,11 +0,0 @@
1
- import { html } from "@design.estate/dees-element";
2
-
3
- export const page1 = () => html`
4
- <upl-statuspage-header></upl-statuspage-header>
5
- <upl-statuspage-statusbar></upl-statuspage-statusbar>
6
- <upl-statuspage-assetsselector></upl-statuspage-assetsselector>
7
- <upl-statuspage-statusdetails></upl-statuspage-statusdetails>
8
- <upl-statuspage-statusmonth></upl-statuspage-statusmonth>
9
- <upl-statuspage-incidents></upl-statuspage-incidents>
10
- <upl-statuspage-footer></upl-statuspage-footer>
11
- `;