@uptime.link/statuspage 1.1.0 → 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 (28) hide show
  1. package/dist_bundle/bundle.js +1823 -915
  2. package/dist_bundle/bundle.js.map +3 -3
  3. package/dist_ts_web/00_commitinfo_data.js +1 -1
  4. package/dist_ts_web/elements/upl-statuspage-assetsselector.js +119 -45
  5. package/dist_ts_web/elements/upl-statuspage-footer.js +81 -27
  6. package/dist_ts_web/elements/upl-statuspage-header.js +79 -19
  7. package/dist_ts_web/elements/upl-statuspage-incidents.js +242 -55
  8. package/dist_ts_web/elements/upl-statuspage-statsgrid.js +225 -50
  9. package/dist_ts_web/elements/upl-statuspage-statusbar.js +58 -7
  10. package/dist_ts_web/elements/upl-statuspage-statusdetails.js +36 -11
  11. package/dist_ts_web/elements/upl-statuspage-statusmonth.d.ts +2 -0
  12. package/dist_ts_web/elements/upl-statuspage-statusmonth.js +415 -230
  13. package/dist_ts_web/styles/shared.styles.d.ts +22 -0
  14. package/dist_ts_web/styles/shared.styles.js +146 -3
  15. package/dist_watch/bundle.js +1417 -444
  16. package/dist_watch/bundle.js.map +3 -3
  17. package/dist_watch/index.html +1 -0
  18. package/package.json +1 -1
  19. package/ts_web/00_commitinfo_data.ts +1 -1
  20. package/ts_web/elements/upl-statuspage-assetsselector.ts +118 -44
  21. package/ts_web/elements/upl-statuspage-footer.ts +80 -26
  22. package/ts_web/elements/upl-statuspage-header.ts +87 -18
  23. package/ts_web/elements/upl-statuspage-incidents.ts +247 -56
  24. package/ts_web/elements/upl-statuspage-statsgrid.ts +224 -52
  25. package/ts_web/elements/upl-statuspage-statusbar.ts +57 -6
  26. package/ts_web/elements/upl-statuspage-statusdetails.ts +35 -10
  27. package/ts_web/elements/upl-statuspage-statusmonth.ts +436 -252
  28. package/ts_web/styles/shared.styles.ts +166 -2
@@ -45752,13 +45752,53 @@ var easings = {
45752
45752
  default: "cubic-bezier(0.4, 0, 0.2, 1)",
45753
45753
  smooth: "cubic-bezier(0.4, 0, 0.6, 1)",
45754
45754
  bounce: "cubic-bezier(0.68, -0.55, 0.265, 1.55)",
45755
- snappy: "cubic-bezier(0.2, 0, 0, 1)"
45755
+ snappy: "cubic-bezier(0.2, 0, 0, 1)",
45756
+ spring: "cubic-bezier(0.175, 0.885, 0.32, 1.275)"
45756
45757
  };
45757
45758
  var durations = {
45759
+ instant: "50ms",
45758
45760
  fast: "100ms",
45759
45761
  normal: "200ms",
45760
45762
  slow: "300ms",
45761
- slower: "500ms"
45763
+ slower: "500ms",
45764
+ slowest: "800ms"
45765
+ };
45766
+ var statusGradients = {
45767
+ operational: cssManager.bdTheme(
45768
+ "linear-gradient(135deg, rgba(22, 163, 74, 0.08) 0%, rgba(22, 163, 74, 0.02) 100%)",
45769
+ "linear-gradient(135deg, rgba(34, 197, 94, 0.12) 0%, rgba(34, 197, 94, 0.03) 100%)"
45770
+ ),
45771
+ degraded: cssManager.bdTheme(
45772
+ "linear-gradient(135deg, rgba(217, 119, 6, 0.08) 0%, rgba(217, 119, 6, 0.02) 100%)",
45773
+ "linear-gradient(135deg, rgba(251, 191, 36, 0.12) 0%, rgba(251, 191, 36, 0.03) 100%)"
45774
+ ),
45775
+ partial: cssManager.bdTheme(
45776
+ "linear-gradient(135deg, rgba(220, 38, 38, 0.08) 0%, rgba(220, 38, 38, 0.02) 100%)",
45777
+ "linear-gradient(135deg, rgba(248, 113, 113, 0.12) 0%, rgba(248, 113, 113, 0.03) 100%)"
45778
+ ),
45779
+ major: cssManager.bdTheme(
45780
+ "linear-gradient(135deg, rgba(185, 28, 28, 0.10) 0%, rgba(185, 28, 28, 0.03) 100%)",
45781
+ "linear-gradient(135deg, rgba(239, 68, 68, 0.15) 0%, rgba(239, 68, 68, 0.04) 100%)"
45782
+ ),
45783
+ maintenance: cssManager.bdTheme(
45784
+ "linear-gradient(135deg, rgba(37, 99, 235, 0.08) 0%, rgba(37, 99, 235, 0.02) 100%)",
45785
+ "linear-gradient(135deg, rgba(96, 165, 250, 0.12) 0%, rgba(96, 165, 250, 0.03) 100%)"
45786
+ )
45787
+ };
45788
+ var glass = {
45789
+ light: "background: rgba(255, 255, 255, 0.7); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px);",
45790
+ dark: "background: rgba(9, 9, 11, 0.8); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px);",
45791
+ subtle: cssManager.bdTheme(
45792
+ "background: rgba(255, 255, 255, 0.5); backdrop-filter: blur(8px);",
45793
+ "background: rgba(9, 9, 11, 0.6); backdrop-filter: blur(8px);"
45794
+ )
45795
+ };
45796
+ var statusGlows = {
45797
+ operational: "0 0 20px -5px rgba(34, 197, 94, 0.4)",
45798
+ degraded: "0 0 20px -5px rgba(251, 191, 36, 0.4)",
45799
+ partial: "0 0 20px -5px rgba(248, 113, 113, 0.4)",
45800
+ major: "0 0 20px -5px rgba(239, 68, 68, 0.5)",
45801
+ maintenance: "0 0 20px -5px rgba(96, 165, 250, 0.4)"
45762
45802
  };
45763
45803
  var commonStyles = i`
45764
45804
  /* Button styles */
@@ -45877,6 +45917,28 @@ var commonStyles = i`
45877
45917
  50% { opacity: 0.5; }
45878
45918
  }
45879
45919
 
45920
+ /* Pulse ring animation for active status */
45921
+ @keyframes pulse-ring {
45922
+ 0% {
45923
+ transform: scale(1);
45924
+ opacity: 0.8;
45925
+ }
45926
+ 100% {
45927
+ transform: scale(2.5);
45928
+ opacity: 0;
45929
+ }
45930
+ }
45931
+
45932
+ /* Shimmer effect for loading states */
45933
+ @keyframes shimmer {
45934
+ 0% {
45935
+ background-position: -200% 0;
45936
+ }
45937
+ 100% {
45938
+ background-position: 200% 0;
45939
+ }
45940
+ }
45941
+
45880
45942
  /* Fade in animation */
45881
45943
  @keyframes fadeIn {
45882
45944
  from { opacity: 0; transform: translateY(4px); }
@@ -45887,6 +45949,22 @@ var commonStyles = i`
45887
45949
  animation: fadeIn ${r(durations.slow)} ${r(easings.default)} forwards;
45888
45950
  }
45889
45951
 
45952
+ /* Fade in up animation */
45953
+ @keyframes fadeInUp {
45954
+ from {
45955
+ opacity: 0;
45956
+ transform: translateY(16px);
45957
+ }
45958
+ to {
45959
+ opacity: 1;
45960
+ transform: translateY(0);
45961
+ }
45962
+ }
45963
+
45964
+ .fade-in-up {
45965
+ animation: fadeInUp ${r(durations.slower)} ${r(easings.default)} forwards;
45966
+ }
45967
+
45890
45968
  /* Scale in animation */
45891
45969
  @keyframes scaleIn {
45892
45970
  from { opacity: 0; transform: scale(0.95); }
@@ -45897,6 +45975,86 @@ var commonStyles = i`
45897
45975
  animation: scaleIn ${r(durations.slow)} ${r(easings.bounce)} forwards;
45898
45976
  }
45899
45977
 
45978
+ /* Slide down animation for expanding content */
45979
+ @keyframes slideDown {
45980
+ from {
45981
+ opacity: 0;
45982
+ transform: translateY(-8px);
45983
+ }
45984
+ to {
45985
+ opacity: 1;
45986
+ transform: translateY(0);
45987
+ }
45988
+ }
45989
+
45990
+ .slide-down {
45991
+ animation: slideDown ${r(durations.slow)} ${r(easings.default)} forwards;
45992
+ }
45993
+
45994
+ /* Stagger animation delay utilities */
45995
+ .stagger-1 { animation-delay: 50ms; }
45996
+ .stagger-2 { animation-delay: 100ms; }
45997
+ .stagger-3 { animation-delay: 150ms; }
45998
+ .stagger-4 { animation-delay: 200ms; }
45999
+ .stagger-5 { animation-delay: 250ms; }
46000
+
46001
+ /* Status indicator with pulse ring */
46002
+ .status-dot-animated {
46003
+ position: relative;
46004
+ width: 10px;
46005
+ height: 10px;
46006
+ border-radius: 50%;
46007
+ }
46008
+
46009
+ .status-dot-animated::before {
46010
+ content: '';
46011
+ position: absolute;
46012
+ inset: 0;
46013
+ border-radius: 50%;
46014
+ background: inherit;
46015
+ animation: pulse-ring 2s ${r(easings.default)} infinite;
46016
+ }
46017
+
46018
+ .status-dot-animated.operational::before {
46019
+ background: ${colors.status.operational};
46020
+ }
46021
+
46022
+ .status-dot-animated.degraded::before,
46023
+ .status-dot-animated.partial_outage::before,
46024
+ .status-dot-animated.major_outage::before {
46025
+ animation: pulse-ring 1.5s ${r(easings.default)} infinite;
46026
+ }
46027
+
46028
+ /* Hover lift effect */
46029
+ .hover-lift {
46030
+ transition: transform ${r(durations.normal)} ${r(easings.default)},
46031
+ box-shadow ${r(durations.normal)} ${r(easings.default)};
46032
+ }
46033
+
46034
+ .hover-lift:hover {
46035
+ transform: translateY(-2px);
46036
+ }
46037
+
46038
+ /* Icon animation */
46039
+ .icon-spin {
46040
+ animation: spin 1s linear infinite;
46041
+ }
46042
+
46043
+ @keyframes spin {
46044
+ from { transform: rotate(0deg); }
46045
+ to { transform: rotate(360deg); }
46046
+ }
46047
+
46048
+ /* Bounce animation for attention */
46049
+ @keyframes bounce {
46050
+ 0%, 100% { transform: translateY(0); }
46051
+ 50% { transform: translateY(-4px); }
46052
+ }
46053
+
46054
+ .bounce {
46055
+ animation: bounce 1s ${r(easings.bounce)} infinite;
46056
+ }
46057
+
45900
46058
  /* Container styles */
45901
46059
  .container {
45902
46060
  max-width: 1200px;
@@ -46911,23 +47069,24 @@ __publicField(UplStatuspageAssetsselector, "styles", [
46911
47069
  flex: 1;
46912
47070
  min-width: 200px;
46913
47071
  padding: ${r(spacing.xs)} ${r(spacing.sm)};
46914
- border: 1px solid ${cssManager.bdTheme("#e5e7eb", "#27272a")};
47072
+ border: 1px solid ${colors.border.default};
46915
47073
  border-radius: ${r(borderRadius.base)};
46916
- background: ${cssManager.bdTheme("#ffffff", "#0a0a0a")};
46917
- color: ${cssManager.bdTheme("#0a0a0a", "#fafafa")};
47074
+ background: ${colors.background.card};
47075
+ color: ${colors.text.primary};
46918
47076
  font-size: 13px;
46919
47077
  font-family: ${r(fonts.base)};
46920
- transition: all 0.2s ease;
47078
+ transition: all ${r(durations.fast)} ${r(easings.default)};
46921
47079
  height: 32px;
46922
47080
  }
46923
47081
 
46924
47082
  .search-input:focus {
46925
47083
  outline: none;
46926
- border-color: ${cssManager.bdTheme("#0a0a0a", "#fafafa")};
47084
+ border-color: ${colors.text.primary};
47085
+ box-shadow: 0 0 0 2px ${cssManager.bdTheme("rgba(0, 0, 0, 0.05)", "rgba(255, 255, 255, 0.05)")};
46927
47086
  }
46928
47087
 
46929
47088
  .search-input::placeholder {
46930
- color: ${cssManager.bdTheme("#9ca3af", "#71717a")};
47089
+ color: ${colors.text.muted};
46931
47090
  }
46932
47091
 
46933
47092
  .filter-button {
@@ -46935,27 +47094,28 @@ __publicField(UplStatuspageAssetsselector, "styles", [
46935
47094
  align-items: center;
46936
47095
  justify-content: center;
46937
47096
  padding: ${r(spacing.xs)} ${r(spacing.sm)};
46938
- border: 1px solid ${cssManager.bdTheme("#e5e7eb", "#27272a")};
47097
+ border: 1px solid ${colors.border.default};
46939
47098
  border-radius: ${r(borderRadius.base)};
46940
- background: transparent;
46941
- color: ${cssManager.bdTheme("#6b7280", "#a1a1aa")};
47099
+ background: ${colors.background.card};
47100
+ color: ${colors.text.secondary};
46942
47101
  cursor: pointer;
46943
47102
  font-size: 13px;
46944
- font-weight: 400;
47103
+ font-weight: 500;
46945
47104
  font-family: ${r(fonts.base)};
46946
- transition: all 0.2s ease;
47105
+ transition: all ${r(durations.fast)} ${r(easings.default)};
46947
47106
  height: 32px;
46948
47107
  }
46949
47108
 
46950
47109
  .filter-button:hover {
46951
- border-color: ${cssManager.bdTheme("#0a0a0a", "#fafafa")};
46952
- color: ${cssManager.bdTheme("#0a0a0a", "#fafafa")};
47110
+ border-color: ${colors.border.muted};
47111
+ color: ${colors.text.primary};
47112
+ box-shadow: ${r(shadows.sm)};
46953
47113
  }
46954
47114
 
46955
47115
  .filter-button.active {
46956
- background: ${cssManager.bdTheme("#0a0a0a", "#fafafa")};
46957
- color: ${cssManager.bdTheme("#fafafa", "#0a0a0a")};
46958
- border-color: ${cssManager.bdTheme("#0a0a0a", "#fafafa")};
47116
+ background: ${colors.text.primary};
47117
+ color: ${colors.background.primary};
47118
+ border-color: ${colors.text.primary};
46959
47119
  }
46960
47120
 
46961
47121
  .selected-services {
@@ -46969,56 +47129,99 @@ __publicField(UplStatuspageAssetsselector, "styles", [
46969
47129
  display: inline-flex;
46970
47130
  align-items: center;
46971
47131
  gap: ${r(spacing.xs)};
46972
- padding: ${r(spacing.xs)} ${r(spacing.md)};
46973
- background: ${cssManager.bdTheme("#ffffff", "#0a0a0a")};
46974
- border: 1px solid ${cssManager.bdTheme("#e5e7eb", "#27272a")};
47132
+ padding: 6px ${r(spacing.md)};
47133
+ background: ${colors.background.card};
47134
+ border: 1px solid ${colors.border.default};
46975
47135
  border-radius: ${r(borderRadius.full)};
46976
47136
  font-size: 13px;
46977
- transition: all 0.2s ease;
47137
+ font-weight: 500;
47138
+ transition: all ${r(durations.fast)} ${r(easings.default)};
47139
+ animation: pillFadeIn 0.3s ${r(easings.default)} both;
47140
+ }
47141
+
47142
+ .service-pill:nth-child(1) { animation-delay: 0ms; }
47143
+ .service-pill:nth-child(2) { animation-delay: 30ms; }
47144
+ .service-pill:nth-child(3) { animation-delay: 60ms; }
47145
+ .service-pill:nth-child(4) { animation-delay: 90ms; }
47146
+ .service-pill:nth-child(5) { animation-delay: 120ms; }
47147
+
47148
+ @keyframes pillFadeIn {
47149
+ from {
47150
+ opacity: 0;
47151
+ transform: scale(0.9);
47152
+ }
47153
+ to {
47154
+ opacity: 1;
47155
+ transform: scale(1);
47156
+ }
46978
47157
  }
46979
47158
 
46980
47159
  .service-pill:hover {
46981
- border-color: ${cssManager.bdTheme("#0a0a0a", "#fafafa")};
47160
+ border-color: ${colors.border.muted};
47161
+ box-shadow: ${r(shadows.sm)};
47162
+ transform: translateY(-1px);
46982
47163
  }
46983
47164
 
46984
47165
  .service-pill .status-dot {
46985
47166
  width: 6px;
46986
47167
  height: 6px;
46987
47168
  border-radius: 50%;
47169
+ flex-shrink: 0;
47170
+ }
47171
+
47172
+ .service-pill .status-dot.operational {
47173
+ box-shadow: 0 0 0 2px ${cssManager.bdTheme("rgba(34, 197, 94, 0.2)", "rgba(34, 197, 94, 0.3)")};
46988
47174
  }
46989
47175
 
46990
47176
  .manage-button {
46991
47177
  display: inline-flex;
46992
47178
  align-items: center;
46993
47179
  gap: ${r(spacing.xs)};
46994
- padding: ${r(spacing.xs)} ${r(spacing.md)};
46995
- background: transparent;
46996
- border: 1px solid ${cssManager.bdTheme("#e5e7eb", "#27272a")};
47180
+ padding: 6px ${r(spacing.md)};
47181
+ background: ${colors.background.card};
47182
+ border: 1px solid ${colors.border.default};
46997
47183
  border-radius: ${r(borderRadius.base)};
46998
47184
  font-size: 13px;
46999
47185
  font-weight: 500;
47000
47186
  cursor: pointer;
47001
- transition: all 0.2s ease;
47002
- color: ${cssManager.bdTheme("#6b7280", "#a1a1aa")};
47187
+ transition: all ${r(durations.fast)} ${r(easings.default)};
47188
+ color: ${colors.text.secondary};
47003
47189
  font-family: ${r(fonts.base)};
47004
47190
  }
47005
47191
 
47006
47192
  .manage-button:hover {
47007
- border-color: ${cssManager.bdTheme("#0a0a0a", "#fafafa")};
47008
- color: ${cssManager.bdTheme("#0a0a0a", "#fafafa")};
47193
+ border-color: ${colors.border.muted};
47194
+ color: ${colors.text.primary};
47195
+ box-shadow: ${r(shadows.sm)};
47196
+ transform: translateY(-1px);
47197
+ }
47198
+
47199
+ .manage-button:active {
47200
+ transform: translateY(0);
47009
47201
  }
47010
47202
 
47011
47203
  .expandable-section {
47012
47204
  margin-top: ${r(spacing.lg)};
47013
47205
  overflow: hidden;
47014
- transition: all 0.3s ease;
47206
+ animation: expandIn 0.3s ${r(easings.default)};
47207
+ }
47208
+
47209
+ @keyframes expandIn {
47210
+ from {
47211
+ opacity: 0;
47212
+ transform: translateY(-8px);
47213
+ }
47214
+ to {
47215
+ opacity: 1;
47216
+ transform: translateY(0);
47217
+ }
47015
47218
  }
47016
47219
 
47017
47220
  .expandable-content {
47018
47221
  padding: ${r(spacing.lg)};
47019
- background: ${cssManager.bdTheme("#fafafa", "#0a0a0a")};
47020
- border: 1px solid ${cssManager.bdTheme("#e5e7eb", "#27272a")};
47021
- border-radius: ${r(borderRadius.base)};
47222
+ background: ${colors.background.secondary};
47223
+ border: 1px solid ${colors.border.default};
47224
+ border-radius: ${r(borderRadius.lg)};
47022
47225
  }
47023
47226
 
47024
47227
  .assets-grid {
@@ -47031,22 +47234,40 @@ __publicField(UplStatuspageAssetsselector, "styles", [
47031
47234
  .asset-card {
47032
47235
  display: flex;
47033
47236
  align-items: center;
47034
- padding: ${r(spacing.sm)} ${r(spacing.md)};
47035
- background: ${cssManager.bdTheme("#ffffff", "#0a0a0a")};
47237
+ padding: ${r(spacing.md)};
47238
+ background: ${colors.background.card};
47036
47239
  border-radius: ${r(borderRadius.base)};
47037
47240
  cursor: pointer;
47038
- transition: all 0.2s ease;
47039
- border: 1px solid ${cssManager.bdTheme("#e5e7eb", "#27272a")};
47241
+ transition: all ${r(durations.fast)} ${r(easings.default)};
47242
+ border: 1px solid ${colors.border.default};
47040
47243
  gap: ${r(spacing.sm)};
47244
+ animation: cardFadeIn 0.3s ${r(easings.default)} both;
47245
+ }
47246
+
47247
+ @keyframes cardFadeIn {
47248
+ from {
47249
+ opacity: 0;
47250
+ transform: translateY(8px);
47251
+ }
47252
+ to {
47253
+ opacity: 1;
47254
+ transform: translateY(0);
47255
+ }
47041
47256
  }
47042
47257
 
47043
47258
  .asset-card:hover {
47044
- border-color: ${cssManager.bdTheme("#d1d5db", "#3f3f46")};
47259
+ border-color: ${colors.border.muted};
47260
+ box-shadow: ${r(shadows.sm)};
47261
+ transform: translateY(-2px);
47045
47262
  }
47046
47263
 
47047
47264
  .asset-card.selected {
47048
- border-color: ${cssManager.bdTheme("#0a0a0a", "#fafafa")};
47049
- background: ${cssManager.bdTheme("#f9fafb", "#0f0f0f")};
47265
+ border-color: ${colors.text.primary};
47266
+ background: ${colors.background.secondary};
47267
+ }
47268
+
47269
+ .asset-card.selected:hover {
47270
+ box-shadow: ${r(shadows.md)};
47050
47271
  }
47051
47272
 
47052
47273
  .asset-checkbox {
@@ -47090,13 +47311,24 @@ __publicField(UplStatuspageAssetsselector, "styles", [
47090
47311
  width: 8px;
47091
47312
  height: 8px;
47092
47313
  border-radius: ${r(borderRadius.full)};
47314
+ flex-shrink: 0;
47093
47315
  }
47094
47316
 
47095
- .status-indicator.operational, .status-dot.operational { background: #22c55e; }
47096
- .status-indicator.degraded, .status-dot.degraded { background: #fbbf24; }
47097
- .status-indicator.partial_outage, .status-dot.partial_outage { background: #f87171; }
47098
- .status-indicator.major_outage, .status-dot.major_outage { background: #ef4444; }
47099
- .status-indicator.maintenance, .status-dot.maintenance { background: #60a5fa; }
47317
+ .status-indicator.operational, .status-dot.operational {
47318
+ background: ${colors.status.operational};
47319
+ }
47320
+ .status-indicator.degraded, .status-dot.degraded {
47321
+ background: ${colors.status.degraded};
47322
+ }
47323
+ .status-indicator.partial_outage, .status-dot.partial_outage {
47324
+ background: ${colors.status.partial};
47325
+ }
47326
+ .status-indicator.major_outage, .status-dot.major_outage {
47327
+ background: ${colors.status.major};
47328
+ }
47329
+ .status-indicator.maintenance, .status-dot.maintenance {
47330
+ background: ${colors.status.maintenance};
47331
+ }
47100
47332
 
47101
47333
  .status-text {
47102
47334
  font-size: 12px;
@@ -48184,17 +48416,33 @@ __publicField(UplStatuspageFooter, "styles", [
48184
48416
  }
48185
48417
 
48186
48418
  .footer-link {
48187
- color: ${cssManager.bdTheme("#6b7280", "#a1a1aa")};
48419
+ color: ${colors.text.secondary};
48188
48420
  text-decoration: none;
48189
- transition: color 0.15s ease;
48421
+ transition: all ${r(durations.fast)} ${r(easings.default)};
48190
48422
  font-size: 13px;
48191
48423
  font-weight: 400;
48424
+ position: relative;
48192
48425
  }
48193
-
48426
+
48427
+ .footer-link::after {
48428
+ content: '';
48429
+ position: absolute;
48430
+ bottom: -2px;
48431
+ left: 0;
48432
+ width: 0;
48433
+ height: 1px;
48434
+ background: ${colors.text.primary};
48435
+ transition: width ${r(durations.fast)} ${r(easings.default)};
48436
+ }
48437
+
48194
48438
  .footer-link:hover {
48195
48439
  color: ${colors.text.primary};
48196
48440
  }
48197
48441
 
48442
+ .footer-link:hover::after {
48443
+ width: 100%;
48444
+ }
48445
+
48198
48446
  .footer-actions {
48199
48447
  display: flex;
48200
48448
  flex-direction: column;
@@ -48204,25 +48452,33 @@ __publicField(UplStatuspageFooter, "styles", [
48204
48452
  .action-button {
48205
48453
  padding: 8px 16px;
48206
48454
  height: 36px;
48207
- border: 1px solid ${cssManager.bdTheme("#e5e7eb", "#27272a")};
48208
- background: ${cssManager.bdTheme("#ffffff", "#0a0a0a")};
48209
- border-radius: 6px;
48455
+ border: 1px solid ${colors.border.default};
48456
+ background: ${colors.background.card};
48457
+ border-radius: ${r(borderRadius.base)};
48210
48458
  cursor: pointer;
48211
48459
  text-align: center;
48212
- transition: all 0.15s ease;
48460
+ transition: all ${r(durations.fast)} ${r(easings.default)};
48213
48461
  white-space: nowrap;
48214
48462
  font-size: 13px;
48215
- font-weight: 400;
48463
+ font-weight: 500;
48216
48464
  color: ${colors.text.primary};
48217
48465
  font-family: ${r(fonts.base)};
48218
48466
  display: inline-flex;
48219
48467
  align-items: center;
48220
48468
  justify-content: center;
48469
+ gap: 6px;
48221
48470
  }
48222
-
48471
+
48223
48472
  .action-button:hover {
48224
- background: ${cssManager.bdTheme("#f9fafb", "#18181b")};
48225
- border-color: ${cssManager.bdTheme("#d1d5db", "#3f3f46")};
48473
+ background: ${colors.background.secondary};
48474
+ border-color: ${colors.border.muted};
48475
+ transform: translateY(-1px);
48476
+ box-shadow: ${r(shadows.sm)};
48477
+ }
48478
+
48479
+ .action-button:active {
48480
+ transform: translateY(0);
48481
+ box-shadow: none;
48226
48482
  }
48227
48483
 
48228
48484
  .footer-bottom {
@@ -48243,30 +48499,43 @@ __publicField(UplStatuspageFooter, "styles", [
48243
48499
 
48244
48500
  .social-links {
48245
48501
  display: flex;
48246
- gap: ${r(spacing.md)};
48502
+ gap: ${r(spacing.sm)};
48247
48503
  align-items: center;
48248
48504
  }
48249
-
48505
+
48250
48506
  .social-link {
48251
48507
  display: inline-flex;
48252
48508
  align-items: center;
48253
48509
  justify-content: center;
48254
- width: 32px;
48255
- height: 32px;
48256
- border-radius: 6px;
48257
- transition: all 0.15s ease;
48258
- color: ${cssManager.bdTheme("#6b7280", "#a1a1aa")};
48510
+ width: 34px;
48511
+ height: 34px;
48512
+ border-radius: ${r(borderRadius.base)};
48513
+ transition: all ${r(durations.fast)} ${r(easings.default)};
48514
+ color: ${colors.text.muted};
48515
+ border: 1px solid transparent;
48259
48516
  }
48260
-
48517
+
48261
48518
  .social-link:hover {
48262
48519
  color: ${colors.text.primary};
48263
- background: ${cssManager.bdTheme("#f3f4f6", "#27272a")};
48520
+ background: ${colors.background.secondary};
48521
+ border-color: ${colors.border.default};
48522
+ transform: translateY(-2px);
48523
+ box-shadow: ${r(shadows.sm)};
48264
48524
  }
48265
-
48525
+
48526
+ .social-link:active {
48527
+ transform: translateY(0);
48528
+ }
48529
+
48266
48530
  .social-link svg {
48267
48531
  width: 16px;
48268
48532
  height: 16px;
48269
48533
  fill: currentColor;
48534
+ transition: transform ${r(durations.fast)} ${r(easings.default)};
48535
+ }
48536
+
48537
+ .social-link:hover svg {
48538
+ transform: scale(1.1);
48270
48539
  }
48271
48540
 
48272
48541
  .copyright {
@@ -48281,20 +48550,37 @@ __publicField(UplStatuspageFooter, "styles", [
48281
48550
 
48282
48551
  .powered-by {
48283
48552
  font-size: 12px;
48284
- color: ${cssManager.bdTheme("#9ca3af", "#71717a")};
48553
+ color: ${colors.text.muted};
48285
48554
  text-align: right;
48286
48555
  }
48287
-
48556
+
48288
48557
  .powered-by a {
48289
- color: ${cssManager.bdTheme("#6b7280", "#a1a1aa")};
48558
+ color: ${colors.text.secondary};
48290
48559
  text-decoration: none;
48291
- transition: color 0.15s ease;
48560
+ transition: all ${r(durations.fast)} ${r(easings.default)};
48561
+ font-weight: 500;
48562
+ position: relative;
48292
48563
  }
48293
-
48564
+
48565
+ .powered-by a::after {
48566
+ content: '';
48567
+ position: absolute;
48568
+ bottom: -1px;
48569
+ left: 0;
48570
+ width: 0;
48571
+ height: 1px;
48572
+ background: ${colors.text.primary};
48573
+ transition: width ${r(durations.fast)} ${r(easings.default)};
48574
+ }
48575
+
48294
48576
  .powered-by a:hover {
48295
48577
  color: ${colors.text.primary};
48296
48578
  }
48297
48579
 
48580
+ .powered-by a:hover::after {
48581
+ width: 100%;
48582
+ }
48583
+
48298
48584
  .status-update {
48299
48585
  padding: 12px 16px;
48300
48586
  background: ${cssManager.bdTheme("#f9fafb", "#18181b")};
@@ -48683,12 +48969,21 @@ var UplStatuspageHeader = class extends (_a4 = DeesElement, _pageTitle_dec = [n5
48683
48969
  <div class="header-actions">
48684
48970
  ${this.showReportButton ? x`
48685
48971
  <button class="actionButton" @click=${this.dispatchReportNewIncident}>
48686
- Report Issue
48972
+ <svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
48973
+ <path d="M7.86 2h8.28L22 7.86v8.28L16.14 22H7.86L2 16.14V7.86L7.86 2z"></path>
48974
+ <line x1="12" y1="8" x2="12" y2="12"></line>
48975
+ <line x1="12" y1="16" x2="12.01" y2="16"></line>
48976
+ </svg>
48977
+ <span class="button-text">Report Issue</span>
48687
48978
  </button>
48688
48979
  ` : ""}
48689
48980
  ${this.showSubscribeButton ? x`
48690
48981
  <button class="actionButton primary" @click=${this.dispatchStatusSubscribe}>
48691
- Subscribe
48982
+ <svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
48983
+ <path d="M6 8a6 6 0 0 1 12 0c0 7 3 9 3 9H3s3-2 3-9"></path>
48984
+ <path d="M10.3 21a1.94 1.94 0 0 0 3.4 0"></path>
48985
+ </svg>
48986
+ <span class="button-text">Subscribe</span>
48692
48987
  </button>
48693
48988
  ` : ""}
48694
48989
  </div>
@@ -48723,15 +49018,21 @@ __publicField(UplStatuspageHeader, "styles", [
48723
49018
  i`
48724
49019
  :host {
48725
49020
  display: block;
48726
- background: ${colors.background.primary};
49021
+ background: ${cssManager.bdTheme(
49022
+ "rgba(255, 255, 255, 0.85)",
49023
+ "rgba(9, 9, 11, 0.85)"
49024
+ )};
48727
49025
  font-family: ${r(fonts.base)};
48728
49026
  color: ${colors.text.primary};
48729
- border-bottom: 1px solid ${colors.border.default};
49027
+ border-bottom: 1px solid ${cssManager.bdTheme(
49028
+ "rgba(0, 0, 0, 0.06)",
49029
+ "rgba(255, 255, 255, 0.06)"
49030
+ )};
48730
49031
  position: sticky;
48731
49032
  top: 0;
48732
49033
  z-index: 40;
48733
- backdrop-filter: blur(12px);
48734
- -webkit-backdrop-filter: blur(12px);
49034
+ backdrop-filter: blur(16px) saturate(180%);
49035
+ -webkit-backdrop-filter: blur(16px) saturate(180%);
48735
49036
  }
48736
49037
 
48737
49038
  .header-container {
@@ -48750,7 +49051,7 @@ __publicField(UplStatuspageHeader, "styles", [
48750
49051
  .header-left {
48751
49052
  display: flex;
48752
49053
  align-items: center;
48753
- gap: ${r(spacing.lg)};
49054
+ gap: ${r(spacing.md)};
48754
49055
  }
48755
49056
 
48756
49057
  .header-actions {
@@ -48767,26 +49068,47 @@ __publicField(UplStatuspageHeader, "styles", [
48767
49068
  border-radius: ${r(borderRadius.base)};
48768
49069
  cursor: pointer;
48769
49070
  user-select: none;
48770
- transition: all ${r(durations.normal)} ${r(easings.default)};
49071
+ transition: all ${r(durations.fast)} ${r(easings.default)};
48771
49072
  display: inline-flex;
48772
49073
  align-items: center;
48773
49074
  justify-content: center;
49075
+ gap: 6px;
48774
49076
  height: 36px;
48775
49077
  background: transparent;
48776
49078
  border: 1px solid ${colors.border.default};
48777
49079
  color: ${colors.text.primary};
48778
49080
  letter-spacing: -0.01em;
49081
+ position: relative;
49082
+ overflow: hidden;
49083
+ }
49084
+
49085
+ .actionButton::before {
49086
+ content: '';
49087
+ position: absolute;
49088
+ inset: 0;
49089
+ background: ${cssManager.bdTheme(
49090
+ "linear-gradient(135deg, rgba(0, 0, 0, 0.02) 0%, transparent 100%)",
49091
+ "linear-gradient(135deg, rgba(255, 255, 255, 0.03) 0%, transparent 100%)"
49092
+ )};
49093
+ opacity: 0;
49094
+ transition: opacity ${r(durations.fast)} ${r(easings.default)};
48779
49095
  }
48780
49096
 
48781
49097
  .actionButton:hover {
48782
49098
  background: ${colors.background.secondary};
48783
49099
  border-color: ${colors.border.muted};
48784
- box-shadow: ${r(shadows.xs)};
49100
+ box-shadow: ${r(shadows.sm)};
49101
+ transform: translateY(-1px);
49102
+ }
49103
+
49104
+ .actionButton:hover::before {
49105
+ opacity: 1;
48785
49106
  }
48786
49107
 
48787
49108
  .actionButton:active {
48788
- transform: scale(0.98);
49109
+ transform: translateY(0) scale(0.98);
48789
49110
  transition-duration: ${r(durations.fast)};
49111
+ box-shadow: none;
48790
49112
  }
48791
49113
 
48792
49114
  .actionButton:focus-visible {
@@ -48794,22 +49116,40 @@ __publicField(UplStatuspageHeader, "styles", [
48794
49116
  outline-offset: 2px;
48795
49117
  }
48796
49118
 
49119
+ /* Button icon styles */
49120
+ .actionButton svg {
49121
+ width: 14px;
49122
+ height: 14px;
49123
+ flex-shrink: 0;
49124
+ transition: transform ${r(durations.fast)} ${r(easings.default)};
49125
+ }
49126
+
49127
+ .actionButton:hover svg {
49128
+ transform: scale(1.1);
49129
+ }
49130
+
48797
49131
  .site-title {
48798
- font-size: 18px;
49132
+ font-size: 17px;
48799
49133
  font-weight: 600;
48800
49134
  letter-spacing: -0.02em;
48801
49135
  color: ${colors.text.primary};
49136
+ transition: color ${r(durations.fast)} ${r(easings.default)};
49137
+ }
49138
+
49139
+ .site-title:hover {
49140
+ color: ${colors.text.secondary};
48802
49141
  }
48803
49142
 
48804
49143
  .logo {
48805
49144
  height: 28px;
48806
49145
  width: auto;
48807
49146
  filter: ${cssManager.bdTheme("none", "brightness(0) invert(1)")};
48808
- transition: opacity ${r(durations.normal)} ${r(easings.default)};
49147
+ transition: all ${r(durations.normal)} ${r(easings.default)};
48809
49148
  }
48810
49149
 
48811
49150
  .logo:hover {
48812
49151
  opacity: 0.8;
49152
+ transform: scale(1.02);
48813
49153
  }
48814
49154
 
48815
49155
  .page-info {
@@ -48837,11 +49177,16 @@ __publicField(UplStatuspageHeader, "styles", [
48837
49177
  background: ${colors.accent.primary};
48838
49178
  color: ${colors.background.primary};
48839
49179
  border-color: transparent;
49180
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
49181
+ }
49182
+
49183
+ .actionButton.primary::before {
49184
+ background: linear-gradient(135deg, rgba(255, 255, 255, 0.15) 0%, transparent 100%);
48840
49185
  }
48841
49186
 
48842
49187
  .actionButton.primary:hover {
48843
49188
  background: ${colors.accent.hover};
48844
- box-shadow: ${r(shadows.sm)};
49189
+ box-shadow: ${r(shadows.md)};
48845
49190
  }
48846
49191
 
48847
49192
  .loading-skeleton {
@@ -48860,10 +49205,10 @@ __publicField(UplStatuspageHeader, "styles", [
48860
49205
  "linear-gradient(90deg, transparent 0%, rgba(0,0,0,0.04) 50%, transparent 100%)",
48861
49206
  "linear-gradient(90deg, transparent 0%, rgba(255,255,255,0.04) 50%, transparent 100%)"
48862
49207
  )};
48863
- animation: loading 1.5s ${r(easings.default)} infinite;
49208
+ animation: shimmer 1.5s ${r(easings.default)} infinite;
48864
49209
  }
48865
49210
 
48866
- @keyframes loading {
49211
+ @keyframes shimmer {
48867
49212
  0% { transform: translateX(-100%); }
48868
49213
  100% { transform: translateX(200%); }
48869
49214
  }
@@ -48878,11 +49223,11 @@ __publicField(UplStatuspageHeader, "styles", [
48878
49223
  }
48879
49224
 
48880
49225
  .header-left {
48881
- gap: ${r(spacing.md)};
49226
+ gap: ${r(spacing.sm)};
48882
49227
  }
48883
49228
 
48884
49229
  .site-title {
48885
- font-size: 16px;
49230
+ font-size: 15px;
48886
49231
  }
48887
49232
 
48888
49233
  .logo {
@@ -48893,8 +49238,18 @@ __publicField(UplStatuspageHeader, "styles", [
48893
49238
  @media (max-width: 640px) {
48894
49239
  .actionButton {
48895
49240
  font-size: 12px;
48896
- padding: 0 12px;
49241
+ padding: 0 10px;
48897
49242
  height: 32px;
49243
+ gap: 4px;
49244
+ }
49245
+
49246
+ .actionButton svg {
49247
+ width: 12px;
49248
+ height: 12px;
49249
+ }
49250
+
49251
+ .actionButton .button-text {
49252
+ display: none;
48898
49253
  }
48899
49254
 
48900
49255
  .page-title {
@@ -50196,8 +50551,9 @@ var UplStatuspageIncidents = class extends (_a5 = DeesElement, _currentIncidents
50196
50551
  renderIncident(incident, isCurrent) {
50197
50552
  const latestUpdate = incident.updates[incident.updates.length - 1];
50198
50553
  const duration = incident.endTime ? this.formatDuration(incident.endTime - incident.startTime) : this.formatDuration(Date.now() - incident.startTime);
50554
+ const isActive = isCurrent && latestUpdate?.status !== "resolved";
50199
50555
  return x`
50200
- <div class="incident-card ${this.expandedIncidents.has(incident.id) ? "expanded" : ""}">
50556
+ <div class="incident-card ${this.expandedIncidents.has(incident.id) ? "expanded" : ""} ${isActive ? "active-incident" : ""}">
50201
50557
  <div class="incident-header ${incident.severity}" @click=${() => this.toggleIncident(incident.id)}>
50202
50558
  <div>
50203
50559
  <h3 class="incident-title">${incident.title}</h3>
@@ -50274,8 +50630,10 @@ var UplStatuspageIncidents = class extends (_a5 = DeesElement, _currentIncidents
50274
50630
 
50275
50631
  ${incident.updates.length > 0 ? x`
50276
50632
  <div class="incident-updates">
50277
- <h4 style="font-size: 14px; margin: 0 0 12px 0;">Updates</h4>
50278
- ${incident.updates.slice(-3).reverse().map((update) => this.renderUpdate(update))}
50633
+ <h4 class="updates-title">Updates</h4>
50634
+ <div class="timeline">
50635
+ ${incident.updates.slice(-3).reverse().map((update, index2) => this.renderUpdate(update, index2))}
50636
+ </div>
50279
50637
  </div>
50280
50638
  ` : ""}
50281
50639
 
@@ -50324,24 +50682,32 @@ var UplStatuspageIncidents = class extends (_a5 = DeesElement, _currentIncidents
50324
50682
  </div>
50325
50683
  `;
50326
50684
  }
50327
- renderUpdate(update) {
50685
+ renderUpdate(update, index2 = 0) {
50328
50686
  return x`
50329
- <div class="update-item">
50330
- <div class="update-time">${this.formatDate(update.timestamp)}</div>
50687
+ <div class="update-item" style="animation-delay: ${index2 * 50}ms">
50688
+ <div class="update-time">
50689
+ ${this.formatDate(update.timestamp)}
50690
+ ${update.status ? x`<span class="update-status-badge">${update.status}</span>` : ""}
50691
+ </div>
50331
50692
  <div class="update-message">${update.message}</div>
50332
50693
  ${update.author ? x`
50333
- <div class="update-author">— ${update.author}</div>
50694
+ <div class="update-author">
50695
+ <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
50696
+ <path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"></path>
50697
+ <circle cx="12" cy="7" r="4"></circle>
50698
+ </svg>
50699
+ ${update.author}
50700
+ </div>
50334
50701
  ` : ""}
50335
50702
  </div>
50336
50703
  `;
50337
50704
  }
50338
50705
  getStatusIcon(status) {
50339
- return x`<span style="
50706
+ return x`<span class="status-dot" style="
50340
50707
  display: inline-block;
50341
50708
  width: 6px;
50342
50709
  height: 6px;
50343
50710
  border-radius: 50%;
50344
- margin-right: 4px;
50345
50711
  background: ${status === "resolved" ? colors.status.operational : status === "monitoring" ? colors.status.maintenance : status === "identified" ? colors.status.degraded : colors.status.partial};
50346
50712
  "></span>`;
50347
50713
  }
@@ -50482,36 +50848,79 @@ __publicField(UplStatuspageIncidents, "styles", [
50482
50848
  background: ${colors.background.card};
50483
50849
  padding: ${r(spacing.xl)};
50484
50850
  margin-bottom: ${r(spacing.lg)};
50485
- border-radius: ${r(borderRadius.md)};
50851
+ border-radius: ${r(borderRadius.lg)};
50486
50852
  border: 1px solid ${colors.border.default};
50487
50853
  text-align: center;
50488
50854
  color: ${colors.text.secondary};
50489
50855
  box-shadow: ${r(shadows.sm)};
50856
+ animation: fadeInUp 0.4s ${r(easings.default)} both;
50490
50857
  }
50491
50858
 
50859
+ /* Staggered entrance animations */
50492
50860
  .incident-card {
50493
50861
  background: ${colors.background.card};
50494
- border-radius: ${r(borderRadius.md)};
50862
+ border-radius: ${r(borderRadius.lg)};
50495
50863
  margin-bottom: ${r(spacing.lg)};
50496
50864
  overflow: hidden;
50497
50865
  box-shadow: ${r(shadows.sm)};
50498
50866
  border: 1px solid ${colors.border.default};
50499
- transition: all 0.2s ease;
50867
+ transition: all ${r(durations.normal)} ${r(easings.default)};
50868
+ animation: fadeInUp 0.4s ${r(easings.default)} both;
50500
50869
  }
50501
50870
 
50502
- .incident-card.expanded {
50871
+ .incident-card:nth-child(1) { animation-delay: 0ms; }
50872
+ .incident-card:nth-child(2) { animation-delay: 50ms; }
50873
+ .incident-card:nth-child(3) { animation-delay: 100ms; }
50874
+ .incident-card:nth-child(4) { animation-delay: 150ms; }
50875
+ .incident-card:nth-child(5) { animation-delay: 200ms; }
50876
+
50877
+ .incident-card:hover {
50878
+ transform: translateY(-2px);
50503
50879
  box-shadow: ${r(shadows.md)};
50880
+ border-color: ${colors.border.muted};
50881
+ }
50882
+
50883
+ .incident-card.expanded {
50884
+ box-shadow: ${r(shadows.lg)};
50885
+ }
50886
+
50887
+ /* Active incident pulse effect */
50888
+ .incident-card.active-incident {
50889
+ animation: fadeInUp 0.4s ${r(easings.default)} both,
50890
+ incident-pulse 3s ease-in-out infinite;
50891
+ }
50892
+
50893
+ @keyframes fadeInUp {
50894
+ from {
50895
+ opacity: 0;
50896
+ transform: translateY(16px);
50897
+ }
50898
+ to {
50899
+ opacity: 1;
50900
+ transform: translateY(0);
50901
+ }
50902
+ }
50903
+
50904
+ @keyframes incident-pulse {
50905
+ 0%, 100% {
50906
+ box-shadow: ${r(shadows.sm)};
50907
+ }
50908
+ 50% {
50909
+ box-shadow: ${r(shadows.md)},
50910
+ 0 0 0 2px ${cssManager.bdTheme("rgba(239, 68, 68, 0.15)", "rgba(248, 113, 113, 0.2)")};
50911
+ }
50504
50912
  }
50505
50913
 
50506
50914
  .incident-header {
50507
- padding: ${r(spacing.lg)} ${r(spacing.lg)};
50915
+ padding: ${r(spacing.lg)} ${r(spacing.xl)};
50508
50916
  border-left: 4px solid;
50509
50917
  display: flex;
50510
50918
  align-items: start;
50511
50919
  justify-content: space-between;
50512
50920
  gap: ${r(spacing.md)};
50513
50921
  cursor: pointer;
50514
- transition: background-color 0.2s ease;
50922
+ transition: background-color ${r(durations.fast)} ${r(easings.default)};
50923
+ position: relative;
50515
50924
  }
50516
50925
 
50517
50926
  .incident-header:hover {
@@ -50535,10 +50944,11 @@ __publicField(UplStatuspageIncidents, "styles", [
50535
50944
  }
50536
50945
 
50537
50946
  .incident-title {
50538
- font-size: 18px;
50947
+ font-size: 17px;
50539
50948
  font-weight: 600;
50540
50949
  margin: 0;
50541
- line-height: 1.3;
50950
+ line-height: 1.4;
50951
+ letter-spacing: -0.01em;
50542
50952
  }
50543
50953
 
50544
50954
  .incident-meta {
@@ -50550,17 +50960,24 @@ __publicField(UplStatuspageIncidents, "styles", [
50550
50960
  flex-wrap: wrap;
50551
50961
  }
50552
50962
 
50553
- .incident-status {
50554
- display: inline-flex;
50963
+ .incident-meta span {
50964
+ display: flex;
50555
50965
  align-items: center;
50556
- gap: ${r(spacing.xs)};
50557
- padding: ${r(spacing.xs)} ${r(spacing.md)};
50966
+ gap: 4px;
50967
+ }
50968
+
50969
+ .incident-status {
50970
+ display: inline-flex;
50971
+ align-items: center;
50972
+ gap: 6px;
50973
+ padding: 6px 12px;
50558
50974
  border-radius: ${r(borderRadius.full)};
50559
- font-size: 12px;
50975
+ font-size: 11px;
50560
50976
  font-weight: 600;
50561
50977
  text-transform: uppercase;
50562
- letter-spacing: 0.02em;
50978
+ letter-spacing: 0.04em;
50563
50979
  flex-shrink: 0;
50980
+ transition: all ${r(durations.fast)} ${r(easings.default)};
50564
50981
  }
50565
50982
 
50566
50983
  .incident-status.investigating {
@@ -50588,68 +51005,164 @@ __publicField(UplStatuspageIncidents, "styles", [
50588
51005
  color: ${cssManager.bdTheme("#4b5563", "#d1d5db")};
50589
51006
  }
50590
51007
 
51008
+ /* Pulse for investigating status */
51009
+ .incident-status.investigating .status-dot {
51010
+ animation: status-pulse 1.5s ease-in-out infinite;
51011
+ }
51012
+
51013
+ @keyframes status-pulse {
51014
+ 0%, 100% { opacity: 1; transform: scale(1); }
51015
+ 50% { opacity: 0.6; transform: scale(1.2); }
51016
+ }
51017
+
50591
51018
  .incident-body {
50592
- padding: 0 ${r(spacing.lg)} ${r(spacing.lg)} ${r(spacing.lg)};
51019
+ padding: 0 ${r(spacing.xl)} ${r(spacing.xl)} ${r(spacing.xl)};
51020
+ animation: slideDown 0.3s ${r(easings.default)};
51021
+ }
51022
+
51023
+ @keyframes slideDown {
51024
+ from {
51025
+ opacity: 0;
51026
+ transform: translateY(-8px);
51027
+ }
51028
+ to {
51029
+ opacity: 1;
51030
+ transform: translateY(0);
51031
+ }
50593
51032
  }
50594
51033
 
50595
51034
  .incident-impact {
50596
51035
  margin: ${r(spacing.md)} 0;
50597
- padding: ${r(spacing.md)};
51036
+ padding: ${r(spacing.md)} ${r(spacing.lg)};
50598
51037
  background: ${colors.background.secondary};
50599
51038
  border-radius: ${r(borderRadius.base)};
50600
51039
  font-size: 14px;
50601
51040
  line-height: 1.6;
51041
+ border-left: 3px solid ${colors.border.muted};
50602
51042
  }
50603
51043
 
50604
51044
  .affected-services {
50605
- margin-top: ${r(spacing.md)};
51045
+ margin-top: ${r(spacing.lg)};
50606
51046
  }
50607
51047
 
50608
51048
  .affected-services-title {
50609
- font-size: 13px;
51049
+ font-size: 12px;
50610
51050
  font-weight: 600;
50611
51051
  margin-bottom: ${r(spacing.sm)};
50612
- color: ${colors.text.primary};
51052
+ color: ${colors.text.secondary};
51053
+ text-transform: uppercase;
51054
+ letter-spacing: 0.04em;
50613
51055
  }
50614
51056
 
50615
51057
  .service-tag {
50616
51058
  display: inline-block;
50617
- padding: ${r(spacing.xs)} ${r(spacing.sm)};
51059
+ padding: 4px 10px;
50618
51060
  margin: 2px;
50619
51061
  background: ${colors.background.muted};
50620
51062
  border-radius: ${r(borderRadius.sm)};
50621
51063
  font-size: 12px;
50622
51064
  color: ${colors.text.secondary};
51065
+ transition: all ${r(durations.fast)} ${r(easings.default)};
51066
+ }
51067
+
51068
+ .service-tag:hover {
51069
+ background: ${colors.background.secondary};
51070
+ color: ${colors.text.primary};
50623
51071
  }
50624
51072
 
51073
+ /* Timeline visualization for updates */
50625
51074
  .incident-updates {
50626
- margin-top: ${r(spacing.lg)};
51075
+ margin-top: ${r(spacing.xl)};
50627
51076
  border-top: 1px solid ${colors.border.default};
50628
51077
  padding-top: ${r(spacing.lg)};
50629
51078
  }
50630
51079
 
51080
+ .updates-title {
51081
+ font-size: 12px;
51082
+ font-weight: 600;
51083
+ text-transform: uppercase;
51084
+ letter-spacing: 0.04em;
51085
+ margin: 0 0 ${r(spacing.lg)} 0;
51086
+ color: ${colors.text.secondary};
51087
+ }
51088
+
51089
+ .timeline {
51090
+ position: relative;
51091
+ padding-left: 24px;
51092
+ }
51093
+
51094
+ /* Vertical connector line */
51095
+ .timeline::before {
51096
+ content: '';
51097
+ position: absolute;
51098
+ left: 5px;
51099
+ top: 8px;
51100
+ bottom: 8px;
51101
+ width: 2px;
51102
+ background: ${cssManager.bdTheme(
51103
+ "linear-gradient(to bottom, #e5e7eb 0%, #d1d5db 50%, #e5e7eb 100%)",
51104
+ "linear-gradient(to bottom, #27272a 0%, #3f3f46 50%, #27272a 100%)"
51105
+ )};
51106
+ border-radius: 1px;
51107
+ }
51108
+
50631
51109
  .update-item {
50632
51110
  position: relative;
50633
51111
  padding-left: ${r(spacing.lg)};
50634
- margin-bottom: ${r(spacing.md)};
51112
+ padding-bottom: ${r(spacing.lg)};
51113
+ animation: fadeInUp 0.3s ${r(easings.default)} both;
51114
+ }
51115
+
51116
+ .update-item:last-child {
51117
+ padding-bottom: 0;
50635
51118
  }
50636
51119
 
51120
+ /* Timeline dot */
50637
51121
  .update-item::before {
50638
51122
  content: '';
50639
51123
  position: absolute;
50640
- left: 0;
50641
- top: 6px;
50642
- width: 8px;
50643
- height: 8px;
50644
- border-radius: ${r(borderRadius.full)};
50645
- background: ${colors.border.muted};
51124
+ left: -22px;
51125
+ top: 4px;
51126
+ width: 12px;
51127
+ height: 12px;
51128
+ border-radius: 50%;
51129
+ background: ${colors.background.card};
51130
+ border: 2px solid ${colors.border.muted};
51131
+ z-index: 1;
51132
+ transition: all ${r(durations.fast)} ${r(easings.default)};
51133
+ }
51134
+
51135
+ .update-item:first-child::before {
51136
+ border-color: ${colors.status.operational};
51137
+ background: ${colors.status.operational};
51138
+ box-shadow: 0 0 0 3px ${cssManager.bdTheme("rgba(22, 163, 74, 0.15)", "rgba(34, 197, 94, 0.2)")};
51139
+ }
51140
+
51141
+ .update-item:hover::before {
51142
+ transform: scale(1.2);
51143
+ border-color: ${colors.text.secondary};
50646
51144
  }
50647
51145
 
50648
51146
  .update-time {
50649
- font-size: 12px;
50650
- color: ${colors.text.secondary};
50651
- margin-bottom: ${r(spacing.xs)};
51147
+ font-size: 11px;
51148
+ color: ${colors.text.muted};
51149
+ margin-bottom: 4px;
50652
51150
  font-family: ${r(fonts.mono)};
51151
+ display: flex;
51152
+ align-items: center;
51153
+ gap: 8px;
51154
+ }
51155
+
51156
+ .update-status-badge {
51157
+ display: inline-flex;
51158
+ padding: 2px 6px;
51159
+ border-radius: 4px;
51160
+ font-size: 10px;
51161
+ font-weight: 600;
51162
+ text-transform: uppercase;
51163
+ letter-spacing: 0.02em;
51164
+ background: ${colors.background.muted};
51165
+ color: ${colors.text.secondary};
50653
51166
  }
50654
51167
 
50655
51168
  .update-message {
@@ -50660,9 +51173,11 @@ __publicField(UplStatuspageIncidents, "styles", [
50660
51173
 
50661
51174
  .update-author {
50662
51175
  font-size: 12px;
50663
- color: ${colors.text.secondary};
50664
- margin-top: ${r(spacing.xs)};
50665
- font-style: italic;
51176
+ color: ${colors.text.muted};
51177
+ margin-top: 4px;
51178
+ display: flex;
51179
+ align-items: center;
51180
+ gap: 4px;
50666
51181
  }
50667
51182
 
50668
51183
  .loading-skeleton {
@@ -50672,33 +51187,34 @@ __publicField(UplStatuspageIncidents, "styles", [
50672
51187
  "linear-gradient(90deg, #1f1f1f 25%, #262626 50%, #1f1f1f 75%)"
50673
51188
  )};
50674
51189
  background-size: 200% 100%;
50675
- animation: loading 1.5s infinite;
50676
- border-radius: ${r(borderRadius.md)};
51190
+ animation: shimmer 1.5s infinite;
51191
+ border-radius: ${r(borderRadius.lg)};
50677
51192
  margin-bottom: ${r(spacing.lg)};
50678
51193
  }
50679
51194
 
50680
- @keyframes loading {
51195
+ @keyframes shimmer {
50681
51196
  0% { background-position: 200% 0; }
50682
51197
  100% { background-position: -200% 0; }
50683
51198
  }
50684
51199
 
50685
51200
  .show-more {
50686
51201
  text-align: center;
50687
- margin-top: ${r(spacing.lg)};
51202
+ margin-top: ${r(spacing.xl)};
50688
51203
  }
50689
51204
 
50690
51205
  .show-more-button {
50691
51206
  display: inline-flex;
50692
51207
  align-items: center;
50693
51208
  justify-content: center;
50694
- padding: ${r(spacing.sm)} ${r(spacing.lg)};
51209
+ gap: 8px;
51210
+ padding: 10px 20px;
50695
51211
  background: transparent;
50696
51212
  border: 1px solid ${colors.border.default};
50697
51213
  border-radius: ${r(borderRadius.base)};
50698
51214
  cursor: pointer;
50699
51215
  font-size: 14px;
50700
51216
  font-weight: 500;
50701
- transition: all 0.2s ease;
51217
+ transition: all ${r(durations.fast)} ${r(easings.default)};
50702
51218
  color: ${colors.text.primary};
50703
51219
  font-family: ${r(fonts.base)};
50704
51220
  }
@@ -50706,7 +51222,8 @@ __publicField(UplStatuspageIncidents, "styles", [
50706
51222
  .show-more-button:hover {
50707
51223
  background: ${colors.background.secondary};
50708
51224
  border-color: ${colors.border.muted};
50709
- transform: translateY(-1px);
51225
+ transform: translateY(-2px);
51226
+ box-shadow: ${r(shadows.sm)};
50710
51227
  }
50711
51228
 
50712
51229
  .show-more-button:active {
@@ -50725,15 +51242,15 @@ __publicField(UplStatuspageIncidents, "styles", [
50725
51242
  .subscribe-button {
50726
51243
  display: inline-flex;
50727
51244
  align-items: center;
50728
- gap: ${r(spacing.xs)};
50729
- padding: ${r(spacing.xs)} ${r(spacing.md)};
51245
+ gap: 6px;
51246
+ padding: 8px 14px;
50730
51247
  background: transparent;
50731
51248
  border: 1px solid ${colors.border.default};
50732
51249
  border-radius: ${r(borderRadius.base)};
50733
51250
  cursor: pointer;
50734
51251
  font-size: 13px;
50735
- font-weight: 400;
50736
- transition: all 0.2s ease;
51252
+ font-weight: 500;
51253
+ transition: all ${r(durations.fast)} ${r(easings.default)};
50737
51254
  color: ${colors.text.primary};
50738
51255
  font-family: ${r(fonts.base)};
50739
51256
  }
@@ -50741,14 +51258,15 @@ __publicField(UplStatuspageIncidents, "styles", [
50741
51258
  .subscribe-button:hover {
50742
51259
  background: ${colors.background.secondary};
50743
51260
  border-color: ${colors.border.muted};
51261
+ transform: translateY(-1px);
50744
51262
  }
50745
-
51263
+
50746
51264
  .subscribe-button.subscribed {
50747
51265
  background: ${cssManager.bdTheme("#f0fdf4", "#064e3b")};
50748
51266
  border-color: ${cssManager.bdTheme("#86efac", "#047857")};
50749
51267
  color: ${cssManager.bdTheme("#047857", "#86efac")};
50750
51268
  }
50751
-
51269
+
50752
51270
  .subscribe-button.subscribed:hover {
50753
51271
  background: ${cssManager.bdTheme("#dcfce7", "#065f46")};
50754
51272
  }
@@ -50761,6 +51279,15 @@ __publicField(UplStatuspageIncidents, "styles", [
50761
51279
  opacity: 0.8;
50762
51280
  }
50763
51281
 
51282
+ /* Expand icon animation */
51283
+ .expand-icon {
51284
+ transition: transform ${r(durations.normal)} ${r(easings.default)};
51285
+ }
51286
+
51287
+ .expand-icon.rotated {
51288
+ transform: rotate(180deg);
51289
+ }
51290
+
50764
51291
  @media (max-width: 640px) {
50765
51292
  .container {
50766
51293
  padding: 0 ${r(spacing.md)} ${r(spacing.md)} ${r(spacing.md)};
@@ -50770,10 +51297,28 @@ __publicField(UplStatuspageIncidents, "styles", [
50770
51297
  padding: ${r(spacing.md)};
50771
51298
  }
50772
51299
 
51300
+ .incident-body {
51301
+ padding: 0 ${r(spacing.md)} ${r(spacing.md)} ${r(spacing.md)};
51302
+ }
51303
+
50773
51304
  .incident-meta {
50774
51305
  flex-direction: column;
50775
51306
  gap: ${r(spacing.xs)};
50776
51307
  }
51308
+
51309
+ .timeline {
51310
+ padding-left: 20px;
51311
+ }
51312
+
51313
+ .timeline::before {
51314
+ left: 4px;
51315
+ }
51316
+
51317
+ .update-item::before {
51318
+ left: -18px;
51319
+ width: 10px;
51320
+ height: 10px;
51321
+ }
50777
51322
  }
50778
51323
  `
50779
51324
  ]);
@@ -51323,22 +51868,32 @@ __publicField(UplStatuspageStatusbar, "styles", [
51323
51868
  display: flex;
51324
51869
  align-items: center;
51325
51870
  justify-content: space-between;
51326
- min-height: 64px;
51327
- padding: ${r(spacing.md)} ${r(spacing.lg)};
51328
- border-radius: ${r(borderRadius.lg)};
51871
+ min-height: 72px;
51872
+ padding: ${r(spacing.lg)} ${r(spacing.xl)};
51873
+ border-radius: ${r(borderRadius.xl)};
51329
51874
  cursor: default;
51330
- transition: all ${r(durations.normal)} ${r(easings.default)};
51875
+ transition: all ${r(durations.slow)} ${r(easings.default)};
51331
51876
  position: relative;
51332
51877
  overflow: hidden;
51333
51878
  font-weight: 500;
51334
51879
  font-size: 15px;
51335
51880
  letter-spacing: -0.01em;
51336
- background: ${colors.background.card};
51337
51881
  border: 1px solid ${colors.border.default};
51338
51882
  box-shadow: ${r(shadows.sm)};
51339
51883
  }
51340
51884
 
51885
+ /* Gradient background overlay */
51341
51886
  .statusbar-inner::before {
51887
+ content: '';
51888
+ position: absolute;
51889
+ inset: 0;
51890
+ opacity: 1;
51891
+ transition: opacity ${r(durations.slow)} ${r(easings.default)};
51892
+ z-index: 0;
51893
+ }
51894
+
51895
+ /* Left accent border */
51896
+ .statusbar-inner::after {
51342
51897
  content: '';
51343
51898
  position: absolute;
51344
51899
  left: 0;
@@ -51346,31 +51901,72 @@ __publicField(UplStatuspageStatusbar, "styles", [
51346
51901
  bottom: 0;
51347
51902
  width: 4px;
51348
51903
  transition: background ${r(durations.normal)} ${r(easings.default)};
51904
+ z-index: 1;
51349
51905
  }
51350
51906
 
51907
+ /* Operational - green gradient */
51908
+ .statusbar-inner.operational {
51909
+ background: ${colors.background.card};
51910
+ }
51351
51911
  .statusbar-inner.operational::before {
51912
+ background: ${statusGradients.operational};
51913
+ }
51914
+ .statusbar-inner.operational::after {
51352
51915
  background: ${colors.status.operational};
51353
51916
  }
51354
51917
 
51918
+ /* Degraded - yellow/amber gradient */
51919
+ .statusbar-inner.degraded {
51920
+ background: ${colors.background.card};
51921
+ }
51355
51922
  .statusbar-inner.degraded::before {
51923
+ background: ${statusGradients.degraded};
51924
+ }
51925
+ .statusbar-inner.degraded::after {
51356
51926
  background: ${colors.status.degraded};
51357
51927
  }
51358
51928
 
51929
+ /* Partial outage - orange/red gradient */
51930
+ .statusbar-inner.partial_outage {
51931
+ background: ${colors.background.card};
51932
+ }
51359
51933
  .statusbar-inner.partial_outage::before {
51934
+ background: ${statusGradients.partial};
51935
+ }
51936
+ .statusbar-inner.partial_outage::after {
51360
51937
  background: ${colors.status.partial};
51361
51938
  }
51362
51939
 
51940
+ /* Major outage - red gradient */
51941
+ .statusbar-inner.major_outage {
51942
+ background: ${colors.background.card};
51943
+ }
51363
51944
  .statusbar-inner.major_outage::before {
51945
+ background: ${statusGradients.major};
51946
+ }
51947
+ .statusbar-inner.major_outage::after {
51364
51948
  background: ${colors.status.major};
51365
51949
  }
51366
51950
 
51951
+ /* Maintenance - blue gradient */
51952
+ .statusbar-inner.maintenance {
51953
+ background: ${colors.background.card};
51954
+ }
51367
51955
  .statusbar-inner.maintenance::before {
51956
+ background: ${statusGradients.maintenance};
51957
+ }
51958
+ .statusbar-inner.maintenance::after {
51368
51959
  background: ${colors.status.maintenance};
51369
51960
  }
51370
51961
 
51371
51962
  .statusbar-inner:hover {
51372
51963
  border-color: ${colors.border.muted};
51373
- box-shadow: ${r(shadows.base)};
51964
+ box-shadow: ${r(shadows.md)};
51965
+ transform: translateY(-1px);
51966
+ }
51967
+
51968
+ .statusbar-inner:hover::before {
51969
+ opacity: 1.2;
51374
51970
  }
51375
51971
 
51376
51972
  .status-indicator {
@@ -52255,8 +52851,9 @@ var UplStatuspageStatusdetails = class extends (_a8 = DeesElement, _historyData_
52255
52851
  const status = dataPoint?.status || "no-data";
52256
52852
  const responseTime = dataPoint?.responseTime || 0;
52257
52853
  bars.push(x`
52258
- <div
52854
+ <div
52259
52855
  class="bar ${status}"
52856
+ style="--bar-index: ${i9}"
52260
52857
  @mouseenter=${(e10) => this.showTooltip(e10, timestamp2, status, responseTime)}
52261
52858
  @click=${() => this.handleBarClick(timestamp2, status, responseTime)}
52262
52859
  ></div>
@@ -52357,6 +52954,12 @@ __publicField(UplStatuspageStatusdetails, "styles", [
52357
52954
 
52358
52955
  .graph-container {
52359
52956
  position: relative;
52957
+ animation: fadeIn 0.3s ${r(easings.default)};
52958
+ }
52959
+
52960
+ @keyframes fadeIn {
52961
+ from { opacity: 0; }
52962
+ to { opacity: 1; }
52360
52963
  }
52361
52964
 
52362
52965
  .mainbox {
@@ -52382,14 +52985,29 @@ __publicField(UplStatuspageStatusdetails, "styles", [
52382
52985
  flex: 1;
52383
52986
  height: 100%;
52384
52987
  cursor: pointer;
52385
- transition: all 0.15s ease;
52988
+ transition: all ${r(durations.fast)} ${r(easings.default)};
52386
52989
  position: relative;
52387
- border-radius: 2px;
52990
+ border-radius: 3px;
52991
+ animation: barGrow 0.4s ${r(easings.default)} both;
52992
+ animation-delay: calc(var(--bar-index, 0) * 8ms);
52993
+ transform-origin: bottom;
52994
+ }
52995
+
52996
+ @keyframes barGrow {
52997
+ from {
52998
+ transform: scaleY(0);
52999
+ opacity: 0;
53000
+ }
53001
+ to {
53002
+ transform: scaleY(1);
53003
+ opacity: 1;
53004
+ }
52388
53005
  }
52389
53006
 
52390
53007
  .mainbox .barContainer .bar:hover {
52391
- transform: scaleY(1.1);
52392
- box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
53008
+ transform: scaleY(1.15);
53009
+ box-shadow: 0 2px 6px rgba(0, 0, 0, 0.15);
53010
+ z-index: 1;
52393
53011
  }
52394
53012
 
52395
53013
  .mainbox .barContainer .bar.operational {
@@ -52433,20 +53051,23 @@ __publicField(UplStatuspageStatusdetails, "styles", [
52433
53051
  position: absolute;
52434
53052
  background: ${cssManager.bdTheme("#0a0a0a", "#fafafa")};
52435
53053
  color: ${cssManager.bdTheme("#fafafa", "#0a0a0a")};
52436
- padding: 6px 10px;
52437
- border-radius: 4px;
53054
+ padding: 8px 12px;
53055
+ border-radius: ${r(borderRadius.base)};
52438
53056
  font-size: 11px;
52439
53057
  pointer-events: none;
52440
53058
  opacity: 0;
52441
- transition: opacity 0.15s;
53059
+ transition: opacity ${r(durations.fast)} ${r(easings.default)},
53060
+ transform ${r(durations.fast)} ${r(easings.default)};
52442
53061
  z-index: 50;
52443
53062
  white-space: nowrap;
52444
- box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
52445
- line-height: 1.4;
53063
+ box-shadow: ${r(shadows.lg)};
53064
+ line-height: 1.5;
53065
+ transform: translateY(4px);
52446
53066
  }
52447
53067
 
52448
53068
  .tooltip.visible {
52449
53069
  opacity: 1;
53070
+ transform: translateY(0);
52450
53071
  }
52451
53072
 
52452
53073
  .tooltip-time {
@@ -53306,21 +53927,30 @@ var UplStatuspageStatusmonth = class extends (_a9 = DeesElement, _monthlyData_de
53306
53927
  const monthDate = /* @__PURE__ */ new Date(monthData.month + "-01");
53307
53928
  const monthName = monthDate.toLocaleDateString("en-US", { month: "short", year: "numeric" });
53308
53929
  const firstDayOfWeek = new Date(monthDate.getFullYear(), monthDate.getMonth(), 1).getDay();
53930
+ const now2 = /* @__PURE__ */ new Date();
53931
+ const isCurrentMonth = monthDate.getMonth() === now2.getMonth() && monthDate.getFullYear() === now2.getFullYear();
53932
+ const uptimeClass = this.getUptimeClass(monthData.overallUptime);
53309
53933
  return x`
53310
53934
  <div class="statusMonth" @mouseleave=${this.hideTooltip}>
53311
- <div class="month-header">${monthName}</div>
53935
+ <div class="month-header">
53936
+ ${monthName}
53937
+ ${isCurrentMonth ? x`<span class="current-badge">Current</span>` : ""}
53938
+ </div>
53312
53939
  <div class="days-container">
53313
53940
  <div class="days-grid">
53314
53941
  ${this.renderWeekdayLabels()}
53315
53942
  ${this.renderEmptyDays(firstDayOfWeek)}
53316
- ${monthData.days.map((day) => this.renderDay(day))}
53943
+ ${monthData.days.map((day, index2) => this.renderDay(day, index2))}
53317
53944
  ${this.renderTrailingEmptyDays(firstDayOfWeek + monthData.days.length)}
53318
53945
  </div>
53319
53946
  </div>
53320
53947
  <div class="overall-uptime">
53321
53948
  <div class="uptime-stat">
53322
53949
  <span>Uptime</span>
53323
- <span class="uptime-value">${monthData.overallUptime.toFixed(2)}%</span>
53950
+ <span class="uptime-value ${uptimeClass}">${monthData.overallUptime.toFixed(2)}%</span>
53951
+ </div>
53952
+ <div class="uptime-bar">
53953
+ <div class="uptime-bar-fill ${uptimeClass}" style="width: ${monthData.overallUptime}%"></div>
53324
53954
  </div>
53325
53955
  ${monthData.totalIncidents > 0 ? x`
53326
53956
  <div class="uptime-stat">
@@ -53332,6 +53962,11 @@ var UplStatuspageStatusmonth = class extends (_a9 = DeesElement, _monthlyData_de
53332
53962
  </div>
53333
53963
  `;
53334
53964
  }
53965
+ getUptimeClass(uptime) {
53966
+ if (uptime >= 99.9) return "good";
53967
+ if (uptime >= 99) return "warning";
53968
+ return "bad";
53969
+ }
53335
53970
  renderWeekdayLabels() {
53336
53971
  const weekdays = ["S", "M", "T", "W", "T", "F", "S"];
53337
53972
  return weekdays.map((day) => x`<div class="weekday-label">${day}</div>`);
@@ -53344,54 +53979,60 @@ var UplStatuspageStatusmonth = class extends (_a9 = DeesElement, _monthlyData_de
53344
53979
  const trailingCount = remainder === 0 ? 0 : 7 - remainder;
53345
53980
  return Array(trailingCount).fill(0).map(() => x`<div class="statusDay empty"></div>`);
53346
53981
  }
53347
- renderDay(day) {
53982
+ renderDay(day, index2 = 0) {
53348
53983
  const status = day.status || "no-data";
53349
53984
  const date = new Date(day.date);
53350
- const dayNumber = date.getDate();
53985
+ const now2 = /* @__PURE__ */ new Date();
53986
+ const isToday3 = date.toDateString() === now2.toDateString();
53987
+ const uptimeIntensity = this.getUptimeIntensity(day.uptime);
53351
53988
  return x`
53352
- <div
53353
- class="statusDay ${status}"
53989
+ <div
53990
+ class="statusDay ${status} ${isToday3 ? "today" : ""} ${status === "operational" ? uptimeIntensity : ""}"
53991
+ style="--day-index: ${index2}"
53354
53992
  @mouseenter=${(e10) => this.showTooltip && this.showDayTooltip(e10, day)}
53355
53993
  @click=${() => this.handleDayClick(day)}
53356
53994
  >
53357
- ${status === "major_outage" || status === "partial_outage" ? x`
53358
- <div style="
53359
- position: absolute;
53360
- top: 50%;
53361
- left: 50%;
53362
- transform: translate(-50%, -50%);
53363
- font-size: 8px;
53364
- font-weight: bold;
53365
- color: white;
53366
- ">${day.incidents}</div>
53995
+ ${(status === "major_outage" || status === "partial_outage") && day.incidents > 0 ? x`
53996
+ <span class="incident-count">${day.incidents}</span>
53367
53997
  ` : ""}
53368
53998
  </div>
53369
53999
  `;
53370
54000
  }
54001
+ getUptimeIntensity(uptime) {
54002
+ if (uptime >= 99.9) return "uptime-high";
54003
+ if (uptime >= 99) return "uptime-mid";
54004
+ return "";
54005
+ }
53371
54006
  showDayTooltip(event, day) {
53372
54007
  const tooltip = this.shadowRoot?.getElementById("tooltip");
53373
54008
  if (!tooltip) return;
53374
54009
  const date = new Date(day.date);
53375
54010
  const dateStr = date.toLocaleDateString("en-US", {
53376
- weekday: "long",
53377
- year: "numeric",
53378
- month: "long",
54011
+ weekday: "short",
54012
+ month: "short",
53379
54013
  day: "numeric"
53380
54014
  });
53381
54015
  let statusText = day.status.replace(/_/g, " ");
53382
54016
  statusText = statusText.charAt(0).toUpperCase() + statusText.slice(1);
54017
+ const uptimeColor = day.uptime >= 99.9 ? "#22c55e" : day.uptime >= 99 ? "#fbbf24" : "#f87171";
53383
54018
  tooltip.innerHTML = `
53384
54019
  <div class="tooltip-date">${dateStr}</div>
53385
- <div class="tooltip-stat">Status: ${statusText}</div>
53386
- <div class="tooltip-stat">Uptime: ${day.uptime.toFixed(2)}%</div>
53387
- ${day.incidents > 0 ? `<div class="tooltip-stat">Incidents: ${day.incidents}</div>` : ""}
53388
- ${day.totalDowntime > 0 ? `<div class="tooltip-stat">Downtime: ${day.totalDowntime} min</div>` : ""}
54020
+ <div class="tooltip-stat">
54021
+ <span style="display: inline-block; width: 6px; height: 6px; border-radius: 50%; background: ${uptimeColor};"></span>
54022
+ ${statusText}
54023
+ </div>
54024
+ <div class="tooltip-stat">Uptime: <strong>${day.uptime.toFixed(2)}%</strong></div>
54025
+ ${day.incidents > 0 ? `<div class="tooltip-stat">Incidents: <strong>${day.incidents}</strong></div>` : ""}
54026
+ ${day.totalDowntime > 0 ? `<div class="tooltip-stat">Downtime: <strong>${day.totalDowntime}m</strong></div>` : ""}
54027
+ <div class="tooltip-uptime-bar">
54028
+ <div class="tooltip-uptime-fill" style="width: ${day.uptime}%; background: ${uptimeColor};"></div>
54029
+ </div>
53389
54030
  `;
53390
54031
  const rect = event.target.getBoundingClientRect();
53391
54032
  const containerRect = this.getBoundingClientRect();
53392
54033
  tooltip.style.left = `${rect.left - containerRect.left + rect.width / 2}px`;
53393
- tooltip.style.top = `${rect.top - containerRect.top - 80}px`;
53394
- tooltip.style.transform = "translateX(-50%)";
54034
+ tooltip.style.top = `${rect.top - containerRect.top - 10}px`;
54035
+ tooltip.style.transform = "translateX(-50%) translateY(-100%)";
53395
54036
  tooltip.classList.add("visible");
53396
54037
  }
53397
54038
  hideTooltip() {
@@ -53434,242 +54075,402 @@ __publicField(UplStatuspageStatusmonth, "styles", [
53434
54075
  commonStyles,
53435
54076
  i`
53436
54077
  :host {
53437
- position: relative;
53438
- display: block;
53439
- background: transparent;
53440
- font-family: ${r(fonts.base)};
53441
- color: ${colors.text.primary};
53442
- }
53443
-
53444
- .container {
53445
- max-width: 1200px;
53446
- margin: 0 auto;
53447
- padding: 0 ${r(spacing.lg)} ${r(spacing.lg)} ${r(spacing.lg)};
53448
- }
54078
+ position: relative;
54079
+ display: block;
54080
+ background: transparent;
54081
+ font-family: ${r(fonts.base)};
54082
+ color: ${colors.text.primary};
54083
+ }
53449
54084
 
53450
- .mainbox {
53451
- display: grid;
53452
- grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
53453
- gap: ${r(spacing.lg)};
53454
- }
54085
+ .container {
54086
+ max-width: 1200px;
54087
+ margin: 0 auto;
54088
+ padding: 0 ${r(spacing.lg)} ${r(spacing.lg)} ${r(spacing.lg)};
54089
+ }
53455
54090
 
53456
- .statusMonth {
53457
- background: ${cssManager.bdTheme("#ffffff", "#0a0a0a")};
53458
- padding: ${r(spacing.lg)};
53459
- border-radius: ${r(borderRadius.base)};
53460
- border: 1px solid ${cssManager.bdTheme("#e5e7eb", "#27272a")};
53461
- position: relative;
53462
- transition: all 0.2s ease;
53463
- display: flex;
53464
- flex-direction: column;
53465
- min-height: 280px;
53466
- box-shadow: ${cssManager.bdTheme("0 1px 2px 0 rgba(0, 0, 0, 0.05)", "none")};
53467
- }
54091
+ .mainbox {
54092
+ display: grid;
54093
+ grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
54094
+ gap: ${r(spacing.lg)};
54095
+ }
53468
54096
 
53469
- .statusMonth:hover {
53470
- border-color: ${cssManager.bdTheme("#0a0a0a", "#fafafa")};
53471
- box-shadow: ${cssManager.bdTheme("0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)", "0 0 0 1px rgba(255, 255, 255, 0.1)")};
53472
- }
54097
+ /* Month card with entrance animation */
54098
+ .statusMonth {
54099
+ background: ${colors.background.card};
54100
+ padding: ${r(spacing.lg)};
54101
+ border-radius: ${r(borderRadius.lg)};
54102
+ border: 1px solid ${colors.border.default};
54103
+ position: relative;
54104
+ transition: all ${r(durations.normal)} ${r(easings.default)};
54105
+ display: flex;
54106
+ flex-direction: column;
54107
+ min-height: 280px;
54108
+ box-shadow: ${r(shadows.sm)};
54109
+ animation: fadeInUp 0.5s ${r(easings.default)} both;
54110
+ }
53473
54111
 
53474
- .month-header {
53475
- font-size: 13px;
53476
- font-weight: 600;
53477
- margin-bottom: ${r(spacing.md)};
53478
- color: ${cssManager.bdTheme("#0a0a0a", "#fafafa")};
53479
- letter-spacing: 0.02em;
53480
- text-transform: uppercase;
53481
- }
54112
+ .statusMonth:nth-child(1) { animation-delay: 0ms; }
54113
+ .statusMonth:nth-child(2) { animation-delay: 100ms; }
54114
+ .statusMonth:nth-child(3) { animation-delay: 200ms; }
54115
+ .statusMonth:nth-child(4) { animation-delay: 300ms; }
54116
+ .statusMonth:nth-child(5) { animation-delay: 400ms; }
53482
54117
 
53483
- .days-container {
53484
- flex: 1;
53485
- display: flex;
53486
- flex-direction: column;
53487
- margin-bottom: ${r(spacing.lg)};
54118
+ @keyframes fadeInUp {
54119
+ from {
54120
+ opacity: 0;
54121
+ transform: translateY(16px);
53488
54122
  }
53489
-
53490
- .days-grid {
53491
- display: grid;
53492
- grid-template-columns: repeat(7, 1fr);
53493
- gap: 3px;
53494
- width: 100%;
54123
+ to {
54124
+ opacity: 1;
54125
+ transform: translateY(0);
53495
54126
  }
54127
+ }
53496
54128
 
53497
- .weekday-label {
53498
- font-size: 10px;
53499
- text-align: center;
53500
- color: ${cssManager.bdTheme("#9ca3af", "#71717a")};
53501
- font-weight: 500;
53502
- height: 20px;
53503
- line-height: 20px;
53504
- margin-bottom: ${r(spacing.sm)};
53505
- text-transform: uppercase;
53506
- }
54129
+ .statusMonth:hover {
54130
+ border-color: ${colors.border.muted};
54131
+ box-shadow: ${r(shadows.md)};
54132
+ transform: translateY(-2px);
54133
+ }
53507
54134
 
53508
- .statusDay {
53509
- aspect-ratio: 1;
53510
- border-radius: 4px;
53511
- cursor: pointer;
53512
- transition: all 0.15s ease;
53513
- position: relative;
53514
- }
54135
+ .month-header {
54136
+ font-size: 12px;
54137
+ font-weight: 600;
54138
+ margin-bottom: ${r(spacing.md)};
54139
+ color: ${colors.text.primary};
54140
+ letter-spacing: 0.04em;
54141
+ text-transform: uppercase;
54142
+ display: flex;
54143
+ align-items: center;
54144
+ gap: 8px;
54145
+ }
53515
54146
 
53516
- .statusDay:hover:not(.empty) {
53517
- transform: scale(1.15);
53518
- box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
53519
- z-index: 1;
53520
- }
54147
+ .month-header .current-badge {
54148
+ font-size: 9px;
54149
+ padding: 2px 6px;
54150
+ background: ${colors.status.operational};
54151
+ color: white;
54152
+ border-radius: ${r(borderRadius.full)};
54153
+ font-weight: 500;
54154
+ letter-spacing: 0.02em;
54155
+ }
53521
54156
 
53522
- .statusDay.operational {
53523
- background: #22c55e;
53524
- }
54157
+ .days-container {
54158
+ flex: 1;
54159
+ display: flex;
54160
+ flex-direction: column;
54161
+ margin-bottom: ${r(spacing.lg)};
54162
+ }
53525
54163
 
53526
- .statusDay.degraded {
53527
- background: #fbbf24;
53528
- }
54164
+ .days-grid {
54165
+ display: grid;
54166
+ grid-template-columns: repeat(7, 1fr);
54167
+ gap: 4px;
54168
+ width: 100%;
54169
+ }
53529
54170
 
53530
- .statusDay.partial_outage {
53531
- background: #f87171;
53532
- }
54171
+ .weekday-label {
54172
+ font-size: 9px;
54173
+ text-align: center;
54174
+ color: ${colors.text.muted};
54175
+ font-weight: 600;
54176
+ height: 20px;
54177
+ line-height: 20px;
54178
+ margin-bottom: ${r(spacing.xs)};
54179
+ text-transform: uppercase;
54180
+ letter-spacing: 0.02em;
54181
+ }
54182
+
54183
+ /* Calendar day cell */
54184
+ .statusDay {
54185
+ aspect-ratio: 1;
54186
+ border-radius: 4px;
54187
+ cursor: pointer;
54188
+ transition: all ${r(durations.fast)} ${r(easings.default)};
54189
+ position: relative;
54190
+ animation: dayFadeIn 0.3s ${r(easings.default)} both;
54191
+ animation-delay: calc(var(--day-index, 0) * 15ms);
54192
+ }
53533
54193
 
53534
- .statusDay.major_outage {
53535
- background: #ef4444;
54194
+ @keyframes dayFadeIn {
54195
+ from {
54196
+ opacity: 0;
54197
+ transform: scale(0.8);
53536
54198
  }
53537
-
53538
- .statusDay.maintenance {
53539
- background: #60a5fa;
54199
+ to {
54200
+ opacity: 1;
54201
+ transform: scale(1);
53540
54202
  }
54203
+ }
53541
54204
 
53542
- .statusDay.no-data {
53543
- background: ${cssManager.bdTheme("#e5e7eb", "#27272a")};
53544
- opacity: 0.6;
53545
- }
54205
+ .statusDay:hover:not(.empty) {
54206
+ transform: scale(1.2);
54207
+ box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15);
54208
+ z-index: 2;
54209
+ }
53546
54210
 
53547
- .statusDay.empty {
53548
- background: transparent;
53549
- cursor: default;
53550
- pointer-events: none;
53551
- }
54211
+ /* Current day highlight */
54212
+ .statusDay.today {
54213
+ box-shadow: 0 0 0 2px ${colors.text.primary};
54214
+ z-index: 1;
54215
+ }
53552
54216
 
53553
- .overall-uptime {
53554
- font-size: 12px;
53555
- margin-top: auto;
53556
- padding-top: ${r(spacing.md)};
53557
- color: ${cssManager.bdTheme("#6b7280", "#a1a1aa")};
53558
- display: flex;
53559
- flex-direction: column;
53560
- gap: 6px;
53561
- border-top: 1px solid ${cssManager.bdTheme("#f3f4f6", "#1f1f1f")};
53562
- }
54217
+ .statusDay.today:hover {
54218
+ box-shadow: 0 0 0 2px ${colors.text.primary}, 0 4px 8px rgba(0, 0, 0, 0.15);
54219
+ }
53563
54220
 
53564
- .uptime-stat {
53565
- display: flex;
53566
- justify-content: space-between;
53567
- align-items: center;
53568
- }
53569
-
53570
- .uptime-value {
53571
- font-weight: 600;
53572
- color: ${cssManager.bdTheme("#0a0a0a", "#fafafa")};
53573
- font-variant-numeric: tabular-nums;
53574
- font-size: 13px;
53575
- }
54221
+ /* Status colors with intensity variations based on uptime */
54222
+ .statusDay.operational {
54223
+ background: ${colors.status.operational};
54224
+ }
53576
54225
 
53577
- .loading-skeleton {
53578
- display: flex;
53579
- flex-direction: column;
53580
- gap: ${r(spacing.sm)};
53581
- height: 100%;
53582
- }
53583
-
53584
- .skeleton-header {
53585
- height: 20px;
53586
- width: 80px;
53587
- background: ${cssManager.bdTheme("#f3f4f6", "#27272a")};
53588
- border-radius: 4px;
53589
- animation: pulse 2s infinite;
53590
- }
53591
-
53592
- .skeleton-grid {
53593
- flex: 1;
53594
- display: grid;
53595
- grid-template-columns: repeat(7, 1fr);
53596
- gap: 2px;
53597
- }
53598
-
53599
- .skeleton-day {
53600
- background: ${cssManager.bdTheme("#f3f4f6", "#27272a")};
53601
- border-radius: 2px;
53602
- animation: pulse 2s infinite;
53603
- animation-delay: calc(var(--index) * 0.05s);
53604
- }
53605
-
53606
- @keyframes pulse {
53607
- 0%, 100% { opacity: 1; }
53608
- 50% { opacity: 0.5; }
53609
- }
54226
+ .statusDay.operational.uptime-high {
54227
+ background: ${cssManager.bdTheme("#22c55e", "#22c55e")};
54228
+ }
53610
54229
 
53611
- @keyframes loading {
53612
- 0% { transform: translateX(-100%); }
53613
- 100% { transform: translateX(200%); }
53614
- }
54230
+ .statusDay.operational.uptime-mid {
54231
+ background: ${cssManager.bdTheme("#4ade80", "#4ade80")};
54232
+ }
53615
54233
 
53616
- .tooltip {
53617
- position: absolute;
53618
- background: ${cssManager.bdTheme("#0a0a0a", "#fafafa")};
53619
- color: ${cssManager.bdTheme("#fafafa", "#0a0a0a")};
53620
- padding: 8px 12px;
53621
- border-radius: 4px;
53622
- font-size: 12px;
53623
- pointer-events: none;
53624
- opacity: 0;
53625
- transition: opacity 0.15s;
53626
- z-index: 50;
53627
- white-space: nowrap;
53628
- box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
53629
- line-height: 1.5;
53630
- }
54234
+ .statusDay.degraded {
54235
+ background: ${colors.status.degraded};
54236
+ }
53631
54237
 
53632
- .tooltip.visible {
53633
- opacity: 1;
53634
- }
53635
-
53636
- .tooltip-date {
53637
- font-weight: 500;
53638
- margin-bottom: 4px;
53639
- }
53640
-
53641
- .tooltip-stat {
53642
- font-size: 11px;
53643
- opacity: 0.9;
54238
+ .statusDay.partial_outage {
54239
+ background: ${colors.status.partial};
54240
+ }
54241
+
54242
+ .statusDay.major_outage {
54243
+ background: ${colors.status.major};
54244
+ animation: dayFadeIn 0.3s ${r(easings.default)} both,
54245
+ majorOutagePulse 2s ease-in-out infinite;
54246
+ }
54247
+
54248
+ @keyframes majorOutagePulse {
54249
+ 0%, 100% { opacity: 1; }
54250
+ 50% { opacity: 0.8; }
54251
+ }
54252
+
54253
+ .statusDay.maintenance {
54254
+ background: ${colors.status.maintenance};
54255
+ }
54256
+
54257
+ .statusDay.no-data {
54258
+ background: ${colors.background.muted};
54259
+ opacity: 0.5;
54260
+ }
54261
+
54262
+ .statusDay.empty {
54263
+ background: transparent;
54264
+ cursor: default;
54265
+ pointer-events: none;
54266
+ animation: none;
54267
+ }
54268
+
54269
+ /* Incident count indicator */
54270
+ .incident-count {
54271
+ position: absolute;
54272
+ top: 50%;
54273
+ left: 50%;
54274
+ transform: translate(-50%, -50%);
54275
+ font-size: 8px;
54276
+ font-weight: 700;
54277
+ color: white;
54278
+ text-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);
54279
+ line-height: 1;
54280
+ }
54281
+
54282
+ /* Overall uptime footer */
54283
+ .overall-uptime {
54284
+ font-size: 12px;
54285
+ margin-top: auto;
54286
+ padding-top: ${r(spacing.md)};
54287
+ color: ${colors.text.secondary};
54288
+ display: flex;
54289
+ flex-direction: column;
54290
+ gap: 8px;
54291
+ border-top: 1px solid ${colors.border.default};
54292
+ }
54293
+
54294
+ .uptime-stat {
54295
+ display: flex;
54296
+ justify-content: space-between;
54297
+ align-items: center;
54298
+ }
54299
+
54300
+ .uptime-value {
54301
+ font-weight: 600;
54302
+ color: ${colors.text.primary};
54303
+ font-variant-numeric: tabular-nums;
54304
+ font-size: 13px;
54305
+ }
54306
+
54307
+ .uptime-value.good {
54308
+ color: ${colors.status.operational};
54309
+ }
54310
+
54311
+ .uptime-value.warning {
54312
+ color: ${colors.status.degraded};
54313
+ }
54314
+
54315
+ .uptime-value.bad {
54316
+ color: ${colors.status.partial};
54317
+ }
54318
+
54319
+ /* Uptime bar visualization */
54320
+ .uptime-bar {
54321
+ height: 4px;
54322
+ background: ${colors.background.muted};
54323
+ border-radius: 2px;
54324
+ overflow: hidden;
54325
+ margin-top: 4px;
54326
+ }
54327
+
54328
+ .uptime-bar-fill {
54329
+ height: 100%;
54330
+ border-radius: 2px;
54331
+ transition: width ${r(durations.slow)} ${r(easings.default)};
54332
+ }
54333
+
54334
+ .uptime-bar-fill.good {
54335
+ background: ${colors.status.operational};
54336
+ }
54337
+
54338
+ .uptime-bar-fill.warning {
54339
+ background: ${colors.status.degraded};
54340
+ }
54341
+
54342
+ .uptime-bar-fill.bad {
54343
+ background: ${colors.status.partial};
54344
+ }
54345
+
54346
+ /* Loading skeleton */
54347
+ .loading-skeleton {
54348
+ display: flex;
54349
+ flex-direction: column;
54350
+ gap: ${r(spacing.sm)};
54351
+ height: 100%;
54352
+ }
54353
+
54354
+ .skeleton-header {
54355
+ height: 20px;
54356
+ width: 80px;
54357
+ background: ${colors.background.muted};
54358
+ border-radius: 4px;
54359
+ animation: shimmer 1.5s infinite;
54360
+ }
54361
+
54362
+ .skeleton-grid {
54363
+ flex: 1;
54364
+ display: grid;
54365
+ grid-template-columns: repeat(7, 1fr);
54366
+ gap: 3px;
54367
+ }
54368
+
54369
+ .skeleton-day {
54370
+ background: ${colors.background.muted};
54371
+ border-radius: 3px;
54372
+ animation: shimmer 1.5s infinite;
54373
+ animation-delay: calc(var(--index) * 30ms);
54374
+ }
54375
+
54376
+ @keyframes shimmer {
54377
+ 0% { opacity: 0.5; }
54378
+ 50% { opacity: 1; }
54379
+ 100% { opacity: 0.5; }
54380
+ }
54381
+
54382
+ /* Tooltip */
54383
+ .tooltip {
54384
+ position: absolute;
54385
+ background: ${cssManager.bdTheme("#0a0a0a", "#fafafa")};
54386
+ color: ${cssManager.bdTheme("#fafafa", "#0a0a0a")};
54387
+ padding: 10px 14px;
54388
+ border-radius: ${r(borderRadius.base)};
54389
+ font-size: 12px;
54390
+ pointer-events: none;
54391
+ opacity: 0;
54392
+ transition: opacity ${r(durations.fast)} ${r(easings.default)},
54393
+ transform ${r(durations.fast)} ${r(easings.default)};
54394
+ z-index: 50;
54395
+ white-space: nowrap;
54396
+ box-shadow: ${r(shadows.lg)};
54397
+ line-height: 1.5;
54398
+ transform: translateX(-50%) translateY(4px);
54399
+ }
54400
+
54401
+ .tooltip.visible {
54402
+ opacity: 1;
54403
+ transform: translateX(-50%) translateY(0);
54404
+ }
54405
+
54406
+ .tooltip-date {
54407
+ font-weight: 600;
54408
+ margin-bottom: 6px;
54409
+ font-size: 13px;
54410
+ }
54411
+
54412
+ .tooltip-stat {
54413
+ font-size: 11px;
54414
+ opacity: 0.85;
54415
+ display: flex;
54416
+ align-items: center;
54417
+ gap: 6px;
54418
+ }
54419
+
54420
+ .tooltip-stat + .tooltip-stat {
54421
+ margin-top: 2px;
54422
+ }
54423
+
54424
+ .tooltip-uptime-bar {
54425
+ height: 3px;
54426
+ width: 60px;
54427
+ background: rgba(128, 128, 128, 0.3);
54428
+ border-radius: 2px;
54429
+ overflow: hidden;
54430
+ margin-top: 8px;
54431
+ }
54432
+
54433
+ .tooltip-uptime-fill {
54434
+ height: 100%;
54435
+ border-radius: 2px;
54436
+ }
54437
+
54438
+ .no-data-message {
54439
+ grid-column: 1 / -1;
54440
+ text-align: center;
54441
+ padding: ${r(spacing["2xl"])};
54442
+ color: ${colors.text.secondary};
54443
+ animation: fadeInUp 0.4s ${r(easings.default)} both;
54444
+ }
54445
+
54446
+ @media (max-width: 640px) {
54447
+ .container {
54448
+ padding: 0 ${r(spacing.md)} ${r(spacing.md)} ${r(spacing.md)};
53644
54449
  }
53645
54450
 
53646
- .no-data-message {
53647
- grid-column: 1 / -1;
53648
- text-align: center;
53649
- padding: ${r(spacing["2xl"])};
53650
- color: ${colors.text.secondary};
54451
+ .mainbox {
54452
+ grid-template-columns: 1fr;
54453
+ gap: ${r(spacing.md)};
53651
54454
  }
53652
54455
 
53653
- @media (max-width: 640px) {
53654
- .container {
53655
- padding: 0 ${r(spacing.md)} ${r(spacing.md)} ${r(spacing.md)};
53656
- }
54456
+ .statusMonth {
54457
+ padding: ${r(spacing.md)};
54458
+ min-height: 260px;
54459
+ }
53657
54460
 
53658
- .mainbox {
53659
- grid-template-columns: 1fr;
53660
- gap: ${r(spacing.md)};
53661
- }
54461
+ .days-grid {
54462
+ gap: 3px;
54463
+ }
53662
54464
 
53663
- .statusMonth {
53664
- padding: ${r(spacing.md)};
53665
- min-height: 260px;
53666
- }
54465
+ .statusDay:hover:not(.empty) {
54466
+ transform: scale(1.1);
54467
+ }
53667
54468
 
53668
- .loading-skeleton {
53669
- height: 180px;
53670
- padding: ${r(spacing.md)};
53671
- }
54469
+ .loading-skeleton {
54470
+ height: 180px;
54471
+ padding: ${r(spacing.md)};
53672
54472
  }
54473
+ }
53673
54474
  `
53674
54475
  ]);
53675
54476
  __runInitializers(_init9, 1, UplStatuspageStatusmonth);
@@ -53982,18 +54783,23 @@ var UplStatuspageStatsgrid = class extends (_a10 = DeesElement, _uptime_dec = [n
53982
54783
  </div>
53983
54784
  ` : x`
53984
54785
  <div class="stats-grid">
53985
- <div class="stat-card">
54786
+ <div class="stat-card status-card ${this.currentStatus}">
53986
54787
  <div class="stat-label">
53987
54788
  <span class="status-indicator ${this.currentStatus}"></span>
53988
54789
  Current Status
53989
54790
  </div>
53990
- <div class="stat-value">
54791
+ <div class="stat-value ${this.currentStatus}">
53991
54792
  ${this.formatStatus(this.currentStatus)}
53992
54793
  </div>
53993
54794
  </div>
53994
54795
 
53995
- <div class="stat-card">
53996
- <div class="stat-label">Uptime</div>
54796
+ <div class="stat-card uptime-card">
54797
+ <div class="stat-label">
54798
+ <svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
54799
+ <polyline points="22 12 18 12 15 21 9 3 6 12 2 12"></polyline>
54800
+ </svg>
54801
+ Uptime
54802
+ </div>
53997
54803
  <div class="stat-value">
53998
54804
  ${this.uptime.toFixed(2)}<span class="stat-unit">%</span>
53999
54805
  </div>
@@ -54002,16 +54808,29 @@ var UplStatuspageStatsgrid = class extends (_a10 = DeesElement, _uptime_dec = [n
54002
54808
  </div>
54003
54809
  </div>
54004
54810
 
54005
- <div class="stat-card">
54006
- <div class="stat-label">Avg Response Time</div>
54811
+ <div class="stat-card response-card">
54812
+ <div class="stat-label">
54813
+ <svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
54814
+ <circle cx="12" cy="12" r="10"></circle>
54815
+ <polyline points="12 6 12 12 16 14"></polyline>
54816
+ </svg>
54817
+ Avg Response
54818
+ </div>
54007
54819
  <div class="stat-value">
54008
54820
  ${this.avgResponseTime}<span class="stat-unit">ms</span>
54009
54821
  </div>
54010
54822
  ${this.renderResponseChange()}
54011
54823
  </div>
54012
54824
 
54013
- <div class="stat-card">
54014
- <div class="stat-label">Incidents</div>
54825
+ <div class="stat-card incident-card">
54826
+ <div class="stat-label">
54827
+ <svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
54828
+ <path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path>
54829
+ <line x1="12" y1="9" x2="12" y2="13"></line>
54830
+ <line x1="12" y1="17" x2="12.01" y2="17"></line>
54831
+ </svg>
54832
+ Incidents
54833
+ </div>
54015
54834
  <div class="stat-value">
54016
54835
  ${this.totalIncidents}
54017
54836
  </div>
@@ -54088,66 +54907,170 @@ __publicField(UplStatuspageStatsgrid, "styles", [
54088
54907
  }
54089
54908
 
54090
54909
  .stat-card {
54091
- background: ${cssManager.bdTheme("#ffffff", "#0a0a0a")};
54092
- border: 1px solid ${cssManager.bdTheme("#e5e7eb", "#27272a")};
54093
- border-radius: ${r(borderRadius.base)};
54910
+ background: ${colors.background.card};
54911
+ border: 1px solid ${colors.border.default};
54912
+ border-radius: ${r(borderRadius.lg)};
54094
54913
  padding: ${r(spacing.lg)};
54095
- transition: all 0.2s ease;
54914
+ transition: all ${r(durations.normal)} ${r(easings.default)};
54915
+ position: relative;
54916
+ overflow: hidden;
54917
+ animation: fadeInUp 0.4s ${r(easings.default)} both;
54918
+ }
54919
+
54920
+ .stat-card:nth-child(1) { animation-delay: 0ms; }
54921
+ .stat-card:nth-child(2) { animation-delay: 50ms; }
54922
+ .stat-card:nth-child(3) { animation-delay: 100ms; }
54923
+ .stat-card:nth-child(4) { animation-delay: 150ms; }
54924
+
54925
+ @keyframes fadeInUp {
54926
+ from {
54927
+ opacity: 0;
54928
+ transform: translateY(12px);
54929
+ }
54930
+ to {
54931
+ opacity: 1;
54932
+ transform: translateY(0);
54933
+ }
54934
+ }
54935
+
54936
+ /* Status-colored top accent */
54937
+ .stat-card::before {
54938
+ content: '';
54939
+ position: absolute;
54940
+ top: 0;
54941
+ left: 0;
54942
+ right: 0;
54943
+ height: 3px;
54944
+ background: ${colors.border.muted};
54945
+ transition: all ${r(durations.fast)} ${r(easings.default)};
54946
+ }
54947
+
54948
+ .stat-card.status-card::before {
54949
+ background: ${colors.status.operational};
54950
+ }
54951
+
54952
+ .stat-card.status-card.degraded::before {
54953
+ background: ${colors.status.degraded};
54954
+ }
54955
+
54956
+ .stat-card.status-card.partial_outage::before {
54957
+ background: ${colors.status.partial};
54958
+ }
54959
+
54960
+ .stat-card.status-card.major_outage::before {
54961
+ background: ${colors.status.major};
54962
+ }
54963
+
54964
+ .stat-card.status-card.maintenance::before {
54965
+ background: ${colors.status.maintenance};
54966
+ }
54967
+
54968
+ .stat-card.uptime-card::before {
54969
+ background: ${colors.status.operational};
54970
+ }
54971
+
54972
+ .stat-card.response-card::before {
54973
+ background: ${colors.status.maintenance};
54974
+ }
54975
+
54976
+ .stat-card.incident-card::before {
54977
+ background: ${colors.status.partial};
54096
54978
  }
54097
54979
 
54098
54980
  .stat-card:hover {
54099
- border-color: ${cssManager.bdTheme("#d1d5db", "#3f3f46")};
54100
- box-shadow: ${cssManager.bdTheme(
54101
- "0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)",
54102
- "0 0 0 1px rgba(255, 255, 255, 0.1)"
54103
- )};
54981
+ border-color: ${colors.border.muted};
54982
+ box-shadow: ${r(shadows.md)};
54983
+ transform: translateY(-3px);
54984
+ }
54985
+
54986
+ .stat-card:hover::before {
54987
+ height: 4px;
54104
54988
  }
54105
54989
 
54106
54990
  .stat-label {
54107
- font-size: 12px;
54108
- color: ${cssManager.bdTheme("#6b7280", "#a1a1aa")};
54991
+ font-size: 11px;
54992
+ color: ${colors.text.muted};
54109
54993
  text-transform: uppercase;
54110
- letter-spacing: 0.05em;
54111
- font-weight: 500;
54994
+ letter-spacing: 0.06em;
54995
+ font-weight: 600;
54112
54996
  margin-bottom: ${r(spacing.sm)};
54113
54997
  display: flex;
54114
54998
  align-items: center;
54115
- gap: ${r(spacing.xs)};
54999
+ gap: 6px;
55000
+ }
55001
+
55002
+ .stat-label svg {
55003
+ width: 14px;
55004
+ height: 14px;
55005
+ opacity: 0.7;
54116
55006
  }
54117
55007
 
54118
55008
  .stat-value {
54119
- font-size: 24px;
54120
- font-weight: 600;
54121
- color: ${cssManager.bdTheme("#0a0a0a", "#fafafa")};
55009
+ font-size: 28px;
55010
+ font-weight: 700;
55011
+ color: ${colors.text.primary};
54122
55012
  font-variant-numeric: tabular-nums;
54123
55013
  line-height: 1.2;
55014
+ letter-spacing: -0.02em;
55015
+ transition: transform ${r(durations.fast)} ${r(easings.default)};
55016
+ }
55017
+
55018
+ .stat-card:hover .stat-value {
55019
+ transform: scale(1.02);
54124
55020
  }
54125
55021
 
54126
55022
  .stat-unit {
54127
- font-size: 14px;
54128
- font-weight: 400;
54129
- color: ${cssManager.bdTheme("#6b7280", "#a1a1aa")};
54130
- margin-left: 4px;
55023
+ font-size: 16px;
55024
+ font-weight: 500;
55025
+ color: ${colors.text.secondary};
55026
+ margin-left: 2px;
54131
55027
  }
54132
55028
 
54133
55029
  .stat-change {
54134
55030
  font-size: 12px;
54135
- margin-top: ${r(spacing.xs)};
55031
+ margin-top: ${r(spacing.sm)};
54136
55032
  display: flex;
54137
55033
  align-items: center;
54138
55034
  gap: 4px;
55035
+ padding: 4px 8px;
55036
+ border-radius: ${r(borderRadius.sm)};
55037
+ width: fit-content;
54139
55038
  }
54140
55039
 
54141
55040
  .stat-change.positive {
54142
- color: ${cssManager.bdTheme("#10b981", "#10b981")};
55041
+ color: ${colors.status.operational};
55042
+ background: ${cssManager.bdTheme("rgba(22, 163, 74, 0.08)", "rgba(34, 197, 94, 0.12)")};
54143
55043
  }
54144
55044
 
54145
55045
  .stat-change.negative {
54146
- color: ${cssManager.bdTheme("#ef4444", "#ef4444")};
55046
+ color: ${colors.status.partial};
55047
+ background: ${cssManager.bdTheme("rgba(239, 68, 68, 0.08)", "rgba(248, 113, 113, 0.12)")};
54147
55048
  }
54148
55049
 
54149
55050
  .stat-change.neutral {
54150
- color: ${cssManager.bdTheme("#6b7280", "#a1a1aa")};
55051
+ color: ${colors.text.muted};
55052
+ background: ${colors.background.muted};
55053
+ }
55054
+
55055
+ /* Status text color variations */
55056
+ .stat-value.operational {
55057
+ color: ${colors.status.operational};
55058
+ }
55059
+
55060
+ .stat-value.degraded {
55061
+ color: ${colors.status.degraded};
55062
+ }
55063
+
55064
+ .stat-value.partial_outage {
55065
+ color: ${colors.status.partial};
55066
+ }
55067
+
55068
+ .stat-value.major_outage {
55069
+ color: ${colors.status.major};
55070
+ }
55071
+
55072
+ .stat-value.maintenance {
55073
+ color: ${colors.status.maintenance};
54151
55074
  }
54152
55075
 
54153
55076
  .loading-skeleton {
@@ -54157,61 +55080,102 @@ __publicField(UplStatuspageStatsgrid, "styles", [
54157
55080
  }
54158
55081
 
54159
55082
  .skeleton-card {
54160
- background: ${cssManager.bdTheme("#ffffff", "#0a0a0a")};
54161
- border: 1px solid ${cssManager.bdTheme("#e5e7eb", "#27272a")};
54162
- border-radius: ${r(borderRadius.base)};
55083
+ background: ${colors.background.card};
55084
+ border: 1px solid ${colors.border.default};
55085
+ border-radius: ${r(borderRadius.lg)};
54163
55086
  padding: ${r(spacing.lg)};
54164
- height: 100px;
55087
+ height: 110px;
55088
+ position: relative;
55089
+ overflow: hidden;
55090
+ }
55091
+
55092
+ .skeleton-card::before {
55093
+ content: '';
55094
+ position: absolute;
55095
+ top: 0;
55096
+ left: 0;
55097
+ right: 0;
55098
+ height: 3px;
55099
+ background: ${colors.background.muted};
54165
55100
  }
54166
55101
 
54167
55102
  .skeleton-label {
54168
- height: 14px;
55103
+ height: 12px;
54169
55104
  width: 80px;
54170
- background: ${cssManager.bdTheme("#f3f4f6", "#27272a")};
55105
+ background: ${colors.background.muted};
54171
55106
  border-radius: 4px;
54172
55107
  margin-bottom: ${r(spacing.sm)};
54173
- animation: pulse 2s infinite;
55108
+ animation: shimmer 1.5s infinite;
54174
55109
  }
54175
55110
 
54176
55111
  .skeleton-value {
54177
- height: 28px;
54178
- width: 120px;
54179
- background: ${cssManager.bdTheme("#f3f4f6", "#27272a")};
54180
- border-radius: 4px;
54181
- animation: pulse 2s infinite;
55112
+ height: 32px;
55113
+ width: 100px;
55114
+ background: ${colors.background.muted};
55115
+ border-radius: 6px;
55116
+ animation: shimmer 1.5s infinite;
54182
55117
  animation-delay: 0.1s;
54183
55118
  }
54184
55119
 
54185
- @keyframes pulse {
54186
- 0%, 100% { opacity: 1; }
54187
- 50% { opacity: 0.5; }
55120
+ .skeleton-change {
55121
+ height: 20px;
55122
+ width: 70px;
55123
+ background: ${colors.background.muted};
55124
+ border-radius: 4px;
55125
+ margin-top: ${r(spacing.sm)};
55126
+ animation: shimmer 1.5s infinite;
55127
+ animation-delay: 0.2s;
55128
+ }
55129
+
55130
+ @keyframes shimmer {
55131
+ 0% { opacity: 0.5; }
55132
+ 50% { opacity: 1; }
55133
+ 100% { opacity: 0.5; }
54188
55134
  }
54189
55135
 
54190
55136
  .status-indicator {
54191
55137
  display: inline-block;
54192
- width: 6px;
54193
- height: 6px;
55138
+ width: 8px;
55139
+ height: 8px;
54194
55140
  border-radius: 50%;
55141
+ flex-shrink: 0;
54195
55142
  }
54196
55143
 
54197
55144
  .status-indicator.operational {
54198
55145
  background: ${colors.status.operational};
55146
+ box-shadow: 0 0 0 2px ${cssManager.bdTheme("rgba(22, 163, 74, 0.2)", "rgba(34, 197, 94, 0.25)")};
55147
+ animation: statusPulse 2s ease-in-out infinite;
55148
+ }
55149
+
55150
+ @keyframes statusPulse {
55151
+ 0%, 100% { box-shadow: 0 0 0 2px ${cssManager.bdTheme("rgba(22, 163, 74, 0.2)", "rgba(34, 197, 94, 0.25)")}; }
55152
+ 50% { box-shadow: 0 0 0 4px ${cssManager.bdTheme("rgba(22, 163, 74, 0.1)", "rgba(34, 197, 94, 0.15)")}; }
54199
55153
  }
54200
55154
 
54201
55155
  .status-indicator.degraded {
54202
55156
  background: ${colors.status.degraded};
55157
+ box-shadow: 0 0 0 2px ${cssManager.bdTheme("rgba(217, 119, 6, 0.2)", "rgba(251, 191, 36, 0.25)")};
54203
55158
  }
54204
55159
 
54205
55160
  .status-indicator.partial_outage {
54206
55161
  background: ${colors.status.partial};
55162
+ box-shadow: 0 0 0 2px ${cssManager.bdTheme("rgba(239, 68, 68, 0.2)", "rgba(248, 113, 113, 0.25)")};
54207
55163
  }
54208
55164
 
54209
55165
  .status-indicator.major_outage {
54210
55166
  background: ${colors.status.major};
55167
+ box-shadow: 0 0 0 2px ${cssManager.bdTheme("rgba(185, 28, 28, 0.2)", "rgba(239, 68, 68, 0.25)")};
55168
+ animation: majorPulse 1s ease-in-out infinite;
55169
+ }
55170
+
55171
+ @keyframes majorPulse {
55172
+ 0%, 100% { opacity: 1; }
55173
+ 50% { opacity: 0.6; }
54211
55174
  }
54212
55175
 
54213
55176
  .status-indicator.maintenance {
54214
55177
  background: ${colors.status.maintenance};
55178
+ box-shadow: 0 0 0 2px ${cssManager.bdTheme("rgba(37, 99, 235, 0.2)", "rgba(96, 165, 250, 0.25)")};
54215
55179
  }
54216
55180
 
54217
55181
  @media (max-width: 640px) {
@@ -54220,7 +55184,7 @@ __publicField(UplStatuspageStatsgrid, "styles", [
54220
55184
  }
54221
55185
 
54222
55186
  .stats-grid {
54223
- grid-template-columns: 1fr;
55187
+ grid-template-columns: repeat(2, 1fr);
54224
55188
  gap: ${r(spacing.sm)};
54225
55189
  }
54226
55190
 
@@ -54229,7 +55193,16 @@ __publicField(UplStatuspageStatsgrid, "styles", [
54229
55193
  }
54230
55194
 
54231
55195
  .stat-value {
54232
- font-size: 20px;
55196
+ font-size: 22px;
55197
+ }
55198
+
55199
+ .stat-label {
55200
+ font-size: 10px;
55201
+ }
55202
+
55203
+ .stat-label svg {
55204
+ width: 12px;
55205
+ height: 12px;
54233
55206
  }
54234
55207
  }
54235
55208
  `