@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
@@ -0,0 +1,531 @@
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
+ spring: 'cubic-bezier(0.175, 0.885, 0.32, 1.275)'
89
+ };
90
+
91
+ // Durations
92
+ export const durations = {
93
+ instant: '50ms',
94
+ fast: '100ms',
95
+ normal: '200ms',
96
+ slow: '300ms',
97
+ slower: '500ms',
98
+ slowest: '800ms'
99
+ };
100
+
101
+ // Status gradients for backgrounds
102
+ export const statusGradients = {
103
+ operational: cssManager.bdTheme(
104
+ 'linear-gradient(135deg, rgba(22, 163, 74, 0.08) 0%, rgba(22, 163, 74, 0.02) 100%)',
105
+ 'linear-gradient(135deg, rgba(34, 197, 94, 0.12) 0%, rgba(34, 197, 94, 0.03) 100%)'
106
+ ),
107
+ degraded: cssManager.bdTheme(
108
+ 'linear-gradient(135deg, rgba(217, 119, 6, 0.08) 0%, rgba(217, 119, 6, 0.02) 100%)',
109
+ 'linear-gradient(135deg, rgba(251, 191, 36, 0.12) 0%, rgba(251, 191, 36, 0.03) 100%)'
110
+ ),
111
+ partial: cssManager.bdTheme(
112
+ 'linear-gradient(135deg, rgba(220, 38, 38, 0.08) 0%, rgba(220, 38, 38, 0.02) 100%)',
113
+ 'linear-gradient(135deg, rgba(248, 113, 113, 0.12) 0%, rgba(248, 113, 113, 0.03) 100%)'
114
+ ),
115
+ major: cssManager.bdTheme(
116
+ 'linear-gradient(135deg, rgba(185, 28, 28, 0.10) 0%, rgba(185, 28, 28, 0.03) 100%)',
117
+ 'linear-gradient(135deg, rgba(239, 68, 68, 0.15) 0%, rgba(239, 68, 68, 0.04) 100%)'
118
+ ),
119
+ maintenance: cssManager.bdTheme(
120
+ 'linear-gradient(135deg, rgba(37, 99, 235, 0.08) 0%, rgba(37, 99, 235, 0.02) 100%)',
121
+ 'linear-gradient(135deg, rgba(96, 165, 250, 0.12) 0%, rgba(96, 165, 250, 0.03) 100%)'
122
+ )
123
+ };
124
+
125
+ // Glassmorphism styles
126
+ export const glass = {
127
+ light: 'background: rgba(255, 255, 255, 0.7); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px);',
128
+ dark: 'background: rgba(9, 9, 11, 0.8); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px);',
129
+ subtle: cssManager.bdTheme(
130
+ 'background: rgba(255, 255, 255, 0.5); backdrop-filter: blur(8px);',
131
+ 'background: rgba(9, 9, 11, 0.6); backdrop-filter: blur(8px);'
132
+ )
133
+ };
134
+
135
+ // Status glow shadows
136
+ export const statusGlows = {
137
+ operational: '0 0 20px -5px rgba(34, 197, 94, 0.4)',
138
+ degraded: '0 0 20px -5px rgba(251, 191, 36, 0.4)',
139
+ partial: '0 0 20px -5px rgba(248, 113, 113, 0.4)',
140
+ major: '0 0 20px -5px rgba(239, 68, 68, 0.5)',
141
+ maintenance: '0 0 20px -5px rgba(96, 165, 250, 0.4)'
142
+ };
143
+
144
+ export const commonStyles = css`
145
+ /* Button styles */
146
+ .button {
147
+ display: inline-flex;
148
+ align-items: center;
149
+ justify-content: center;
150
+ font-family: ${unsafeCSS(fonts.base)};
151
+ font-size: 13px;
152
+ font-weight: 500;
153
+ height: 36px;
154
+ padding: 0 14px;
155
+ border-radius: ${unsafeCSS(borderRadius.base)};
156
+ border: 1px solid ${colors.border.default};
157
+ background: ${colors.background.primary};
158
+ color: ${colors.text.primary};
159
+ cursor: pointer;
160
+ user-select: none;
161
+ transition: all ${unsafeCSS(durations.normal)} ${unsafeCSS(easings.default)};
162
+ gap: 6px;
163
+ white-space: nowrap;
164
+ letter-spacing: -0.01em;
165
+ }
166
+
167
+ .button:hover {
168
+ background: ${colors.background.secondary};
169
+ border-color: ${cssManager.bdTheme('#d4d4d8', '#3f3f46')};
170
+ box-shadow: ${unsafeCSS(shadows.xs)};
171
+ }
172
+
173
+ .button:active {
174
+ transform: scale(0.98);
175
+ transition-duration: ${unsafeCSS(durations.fast)};
176
+ }
177
+
178
+ .button:focus-visible {
179
+ outline: 2px solid ${colors.accent.focus};
180
+ outline-offset: 2px;
181
+ }
182
+
183
+ .button.primary {
184
+ background: ${colors.accent.primary};
185
+ color: ${colors.background.primary};
186
+ border-color: transparent;
187
+ }
188
+
189
+ .button.primary:hover {
190
+ background: ${colors.accent.hover};
191
+ box-shadow: ${unsafeCSS(shadows.sm)};
192
+ }
193
+
194
+ .button.ghost {
195
+ background: transparent;
196
+ border-color: transparent;
197
+ }
198
+
199
+ .button.ghost:hover {
200
+ background: ${colors.background.muted};
201
+ }
202
+
203
+ .button.sm {
204
+ height: 32px;
205
+ padding: 0 12px;
206
+ font-size: 12px;
207
+ }
208
+
209
+ .button.lg {
210
+ height: 44px;
211
+ padding: 0 20px;
212
+ font-size: 15px;
213
+ }
214
+
215
+ /* Card styles */
216
+ .card {
217
+ background: ${colors.background.card};
218
+ border: 1px solid ${colors.border.default};
219
+ border-radius: ${unsafeCSS(borderRadius.lg)};
220
+ padding: ${unsafeCSS(spacing.lg)};
221
+ box-shadow: ${unsafeCSS(shadows.sm)};
222
+ transition: all ${unsafeCSS(durations.normal)} ${unsafeCSS(easings.default)};
223
+ }
224
+
225
+ .card:hover {
226
+ border-color: ${colors.border.muted};
227
+ box-shadow: ${unsafeCSS(shadows.base)};
228
+ }
229
+
230
+ .card.interactive {
231
+ cursor: pointer;
232
+ }
233
+
234
+ .card.interactive:hover {
235
+ transform: translateY(-2px);
236
+ box-shadow: ${unsafeCSS(shadows.md)};
237
+ }
238
+
239
+ /* Loading skeleton */
240
+ .skeleton {
241
+ background: ${cssManager.bdTheme(
242
+ 'linear-gradient(90deg, #f4f4f5 0%, #e4e4e7 50%, #f4f4f5 100%)',
243
+ 'linear-gradient(90deg, #18181b 0%, #27272a 50%, #18181b 100%)'
244
+ )};
245
+ background-size: 200% 100%;
246
+ animation: skeleton-loading 1.5s ease-in-out infinite;
247
+ border-radius: ${unsafeCSS(borderRadius.base)};
248
+ }
249
+
250
+ @keyframes skeleton-loading {
251
+ 0% { background-position: 200% 0; }
252
+ 100% { background-position: -200% 0; }
253
+ }
254
+
255
+ /* Pulse animation for status indicators */
256
+ @keyframes pulse {
257
+ 0%, 100% { opacity: 1; }
258
+ 50% { opacity: 0.5; }
259
+ }
260
+
261
+ /* Pulse ring animation for active status */
262
+ @keyframes pulse-ring {
263
+ 0% {
264
+ transform: scale(1);
265
+ opacity: 0.8;
266
+ }
267
+ 100% {
268
+ transform: scale(2.5);
269
+ opacity: 0;
270
+ }
271
+ }
272
+
273
+ /* Shimmer effect for loading states */
274
+ @keyframes shimmer {
275
+ 0% {
276
+ background-position: -200% 0;
277
+ }
278
+ 100% {
279
+ background-position: 200% 0;
280
+ }
281
+ }
282
+
283
+ /* Fade in animation */
284
+ @keyframes fadeIn {
285
+ from { opacity: 0; transform: translateY(4px); }
286
+ to { opacity: 1; transform: translateY(0); }
287
+ }
288
+
289
+ .fade-in {
290
+ animation: fadeIn ${unsafeCSS(durations.slow)} ${unsafeCSS(easings.default)} forwards;
291
+ }
292
+
293
+ /* Fade in up animation */
294
+ @keyframes fadeInUp {
295
+ from {
296
+ opacity: 0;
297
+ transform: translateY(16px);
298
+ }
299
+ to {
300
+ opacity: 1;
301
+ transform: translateY(0);
302
+ }
303
+ }
304
+
305
+ .fade-in-up {
306
+ animation: fadeInUp ${unsafeCSS(durations.slower)} ${unsafeCSS(easings.default)} forwards;
307
+ }
308
+
309
+ /* Scale in animation */
310
+ @keyframes scaleIn {
311
+ from { opacity: 0; transform: scale(0.95); }
312
+ to { opacity: 1; transform: scale(1); }
313
+ }
314
+
315
+ .scale-in {
316
+ animation: scaleIn ${unsafeCSS(durations.slow)} ${unsafeCSS(easings.bounce)} forwards;
317
+ }
318
+
319
+ /* Slide down animation for expanding content */
320
+ @keyframes slideDown {
321
+ from {
322
+ opacity: 0;
323
+ transform: translateY(-8px);
324
+ }
325
+ to {
326
+ opacity: 1;
327
+ transform: translateY(0);
328
+ }
329
+ }
330
+
331
+ .slide-down {
332
+ animation: slideDown ${unsafeCSS(durations.slow)} ${unsafeCSS(easings.default)} forwards;
333
+ }
334
+
335
+ /* Stagger animation delay utilities */
336
+ .stagger-1 { animation-delay: 50ms; }
337
+ .stagger-2 { animation-delay: 100ms; }
338
+ .stagger-3 { animation-delay: 150ms; }
339
+ .stagger-4 { animation-delay: 200ms; }
340
+ .stagger-5 { animation-delay: 250ms; }
341
+
342
+ /* Status indicator with pulse ring */
343
+ .status-dot-animated {
344
+ position: relative;
345
+ width: 10px;
346
+ height: 10px;
347
+ border-radius: 50%;
348
+ }
349
+
350
+ .status-dot-animated::before {
351
+ content: '';
352
+ position: absolute;
353
+ inset: 0;
354
+ border-radius: 50%;
355
+ background: inherit;
356
+ animation: pulse-ring 2s ${unsafeCSS(easings.default)} infinite;
357
+ }
358
+
359
+ .status-dot-animated.operational::before {
360
+ background: ${colors.status.operational};
361
+ }
362
+
363
+ .status-dot-animated.degraded::before,
364
+ .status-dot-animated.partial_outage::before,
365
+ .status-dot-animated.major_outage::before {
366
+ animation: pulse-ring 1.5s ${unsafeCSS(easings.default)} infinite;
367
+ }
368
+
369
+ /* Hover lift effect */
370
+ .hover-lift {
371
+ transition: transform ${unsafeCSS(durations.normal)} ${unsafeCSS(easings.default)},
372
+ box-shadow ${unsafeCSS(durations.normal)} ${unsafeCSS(easings.default)};
373
+ }
374
+
375
+ .hover-lift:hover {
376
+ transform: translateY(-2px);
377
+ }
378
+
379
+ /* Icon animation */
380
+ .icon-spin {
381
+ animation: spin 1s linear infinite;
382
+ }
383
+
384
+ @keyframes spin {
385
+ from { transform: rotate(0deg); }
386
+ to { transform: rotate(360deg); }
387
+ }
388
+
389
+ /* Bounce animation for attention */
390
+ @keyframes bounce {
391
+ 0%, 100% { transform: translateY(0); }
392
+ 50% { transform: translateY(-4px); }
393
+ }
394
+
395
+ .bounce {
396
+ animation: bounce 1s ${unsafeCSS(easings.bounce)} infinite;
397
+ }
398
+
399
+ /* Container styles */
400
+ .container {
401
+ max-width: 1200px;
402
+ margin: 0 auto;
403
+ padding: 0 ${unsafeCSS(spacing.lg)};
404
+ }
405
+
406
+ /* Status pill */
407
+ .status-pill {
408
+ display: inline-flex;
409
+ align-items: center;
410
+ gap: 6px;
411
+ padding: 4px 10px;
412
+ border-radius: ${unsafeCSS(borderRadius.full)};
413
+ font-size: 12px;
414
+ font-weight: 500;
415
+ letter-spacing: 0.01em;
416
+ }
417
+
418
+ .status-pill .status-dot {
419
+ width: 6px;
420
+ height: 6px;
421
+ border-radius: 50%;
422
+ flex-shrink: 0;
423
+ }
424
+
425
+ .status-pill.operational {
426
+ background: ${cssManager.bdTheme('rgba(22, 163, 74, 0.1)', 'rgba(34, 197, 94, 0.15)')};
427
+ color: ${cssManager.bdTheme('#15803d', '#4ade80')};
428
+ }
429
+
430
+ .status-pill.operational .status-dot {
431
+ background: ${colors.status.operational};
432
+ }
433
+
434
+ .status-pill.degraded {
435
+ background: ${cssManager.bdTheme('rgba(217, 119, 6, 0.1)', 'rgba(251, 191, 36, 0.15)')};
436
+ color: ${cssManager.bdTheme('#b45309', '#fcd34d')};
437
+ }
438
+
439
+ .status-pill.degraded .status-dot {
440
+ background: ${colors.status.degraded};
441
+ }
442
+
443
+ .status-pill.partial_outage,
444
+ .status-pill.major_outage {
445
+ background: ${cssManager.bdTheme('rgba(220, 38, 38, 0.1)', 'rgba(248, 113, 113, 0.15)')};
446
+ color: ${cssManager.bdTheme('#b91c1c', '#fca5a5')};
447
+ }
448
+
449
+ .status-pill.partial_outage .status-dot,
450
+ .status-pill.major_outage .status-dot {
451
+ background: ${colors.status.major};
452
+ }
453
+
454
+ .status-pill.maintenance {
455
+ background: ${cssManager.bdTheme('rgba(37, 99, 235, 0.1)', 'rgba(96, 165, 250, 0.15)')};
456
+ color: ${cssManager.bdTheme('#1d4ed8', '#93c5fd')};
457
+ }
458
+
459
+ .status-pill.maintenance .status-dot {
460
+ background: ${colors.status.maintenance};
461
+ }
462
+
463
+ /* Responsive utilities */
464
+ @media (max-width: 1024px) {
465
+ .container {
466
+ padding: 0 ${unsafeCSS(spacing.md)};
467
+ }
468
+ }
469
+
470
+ @media (max-width: 640px) {
471
+ .container {
472
+ padding: 0 ${unsafeCSS(spacing.md)};
473
+ }
474
+
475
+ .button {
476
+ height: 40px;
477
+ padding: 0 16px;
478
+ }
479
+
480
+ .button.sm {
481
+ height: 36px;
482
+ }
483
+ }
484
+
485
+ /* Visually hidden (for accessibility) */
486
+ .sr-only {
487
+ position: absolute;
488
+ width: 1px;
489
+ height: 1px;
490
+ padding: 0;
491
+ margin: -1px;
492
+ overflow: hidden;
493
+ clip: rect(0, 0, 0, 0);
494
+ white-space: nowrap;
495
+ border: 0;
496
+ }
497
+ `;
498
+
499
+ export const getStatusColor = (status: string) => {
500
+ switch (status) {
501
+ case 'operational':
502
+ return colors.status.operational;
503
+ case 'degraded':
504
+ return colors.status.degraded;
505
+ case 'partial_outage':
506
+ return colors.status.partial;
507
+ case 'major_outage':
508
+ return colors.status.major;
509
+ case 'maintenance':
510
+ return colors.status.maintenance;
511
+ default:
512
+ return colors.text.secondary;
513
+ }
514
+ };
515
+
516
+ export const getStatusIcon = (status: string) => {
517
+ switch (status) {
518
+ case 'operational':
519
+ return '✓';
520
+ case 'degraded':
521
+ return '!';
522
+ case 'partial_outage':
523
+ return '⚠';
524
+ case 'major_outage':
525
+ return '✕';
526
+ case 'maintenance':
527
+ return '🔧';
528
+ default:
529
+ return '?';
530
+ }
531
+ };
@@ -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
- `;