@rakeyshgidwani/roger-ui-bank-theme-stan-design 0.2.9 → 0.2.10

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 (304) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/dist/components/ui/accessibility-demo.esm.js +30 -24
  3. package/dist/components/ui/accessibility-demo.js +30 -24
  4. package/dist/components/ui/advanced-component-architecture-demo.esm.js +235 -179
  5. package/dist/components/ui/advanced-component-architecture-demo.js +235 -179
  6. package/dist/components/ui/advanced-transition-system-demo.esm.js +110 -64
  7. package/dist/components/ui/advanced-transition-system-demo.js +110 -64
  8. package/dist/components/ui/advanced-transition-system.esm.js +166 -122
  9. package/dist/components/ui/advanced-transition-system.js +166 -122
  10. package/dist/components/ui/animation/animated-container.esm.js +52 -29
  11. package/dist/components/ui/animation/animated-container.js +52 -29
  12. package/dist/components/ui/animation/staggered-container.esm.js +18 -9
  13. package/dist/components/ui/animation/staggered-container.js +18 -9
  14. package/dist/components/ui/animation-demo.esm.js +67 -35
  15. package/dist/components/ui/animation-demo.js +67 -35
  16. package/dist/components/ui/badge.esm.js +9 -6
  17. package/dist/components/ui/badge.js +9 -6
  18. package/dist/components/ui/battery-conscious-animation-demo.esm.js +122 -87
  19. package/dist/components/ui/battery-conscious-animation-demo.js +122 -87
  20. package/dist/components/ui/border-radius-shadow-demo.esm.js +23 -12
  21. package/dist/components/ui/border-radius-shadow-demo.js +23 -12
  22. package/dist/components/ui/button.esm.js +8 -2
  23. package/dist/components/ui/button.js +8 -2
  24. package/dist/components/ui/card.esm.js +33 -8
  25. package/dist/components/ui/card.js +33 -8
  26. package/dist/components/ui/checkbox.esm.js +3 -3
  27. package/dist/components/ui/checkbox.js +3 -3
  28. package/dist/components/ui/color-preview.esm.js +68 -45
  29. package/dist/components/ui/color-preview.js +68 -45
  30. package/dist/components/ui/data-display/chart.esm.js +112 -84
  31. package/dist/components/ui/data-display/chart.js +112 -84
  32. package/dist/components/ui/data-display/data-grid-simple.esm.js +1 -1
  33. package/dist/components/ui/data-display/data-grid-simple.js +1 -1
  34. package/dist/components/ui/data-display/data-grid.esm.js +80 -67
  35. package/dist/components/ui/data-display/data-grid.js +80 -67
  36. package/dist/components/ui/data-display/list.esm.js +53 -45
  37. package/dist/components/ui/data-display/list.js +53 -45
  38. package/dist/components/ui/data-display/table.esm.js +62 -54
  39. package/dist/components/ui/data-display/table.js +62 -54
  40. package/dist/components/ui/data-display/timeline.esm.js +39 -34
  41. package/dist/components/ui/data-display/timeline.js +39 -34
  42. package/dist/components/ui/data-display/tree.esm.js +116 -84
  43. package/dist/components/ui/data-display/tree.js +116 -84
  44. package/dist/components/ui/data-display/types.esm.js +389 -364
  45. package/dist/components/ui/data-display/types.js +389 -364
  46. package/dist/components/ui/enterprise-mobile-experience-demo.esm.js +120 -70
  47. package/dist/components/ui/enterprise-mobile-experience-demo.js +120 -70
  48. package/dist/components/ui/enterprise-mobile-experience.esm.js +124 -73
  49. package/dist/components/ui/enterprise-mobile-experience.js +124 -73
  50. package/dist/components/ui/feedback/alert.esm.js +22 -15
  51. package/dist/components/ui/feedback/alert.js +22 -15
  52. package/dist/components/ui/feedback/progress.esm.js +47 -24
  53. package/dist/components/ui/feedback/progress.js +47 -24
  54. package/dist/components/ui/feedback/skeleton.esm.js +39 -29
  55. package/dist/components/ui/feedback/skeleton.js +39 -29
  56. package/dist/components/ui/feedback/toast.esm.js +62 -38
  57. package/dist/components/ui/feedback/toast.js +62 -38
  58. package/dist/components/ui/feedback/types.esm.js +83 -83
  59. package/dist/components/ui/feedback/types.js +83 -83
  60. package/dist/components/ui/font-preview.esm.js +41 -39
  61. package/dist/components/ui/font-preview.js +41 -39
  62. package/dist/components/ui/form-demo.esm.js +150 -113
  63. package/dist/components/ui/form-demo.js +150 -113
  64. package/dist/components/ui/hardware-acceleration-demo.esm.js +137 -87
  65. package/dist/components/ui/hardware-acceleration-demo.js +137 -87
  66. package/dist/components/ui/input.esm.js +4 -1
  67. package/dist/components/ui/input.js +4 -1
  68. package/dist/components/ui/layout-demo.esm.js +81 -56
  69. package/dist/components/ui/layout-demo.js +81 -56
  70. package/dist/components/ui/layouts/adaptive-layout.esm.js +27 -8
  71. package/dist/components/ui/layouts/adaptive-layout.js +27 -8
  72. package/dist/components/ui/layouts/desktop-layout.esm.js +39 -19
  73. package/dist/components/ui/layouts/desktop-layout.js +39 -19
  74. package/dist/components/ui/layouts/mobile-layout.esm.js +19 -9
  75. package/dist/components/ui/layouts/mobile-layout.js +19 -9
  76. package/dist/components/ui/layouts/tablet-layout.esm.js +28 -14
  77. package/dist/components/ui/layouts/tablet-layout.js +28 -14
  78. package/dist/components/ui/mobile-form-validation.esm.js +120 -87
  79. package/dist/components/ui/mobile-form-validation.js +120 -87
  80. package/dist/components/ui/mobile-input-demo.esm.js +19 -13
  81. package/dist/components/ui/mobile-input-demo.js +19 -13
  82. package/dist/components/ui/mobile-input.esm.js +185 -120
  83. package/dist/components/ui/mobile-input.js +185 -120
  84. package/dist/components/ui/mobile-skeleton-loading-demo.esm.js +128 -111
  85. package/dist/components/ui/mobile-skeleton-loading-demo.js +128 -111
  86. package/dist/components/ui/navigation/breadcrumb.esm.js +17 -14
  87. package/dist/components/ui/navigation/breadcrumb.js +17 -14
  88. package/dist/components/ui/navigation/index.esm.js +23 -1
  89. package/dist/components/ui/navigation/index.js +23 -1
  90. package/dist/components/ui/navigation/menu.esm.js +49 -35
  91. package/dist/components/ui/navigation/menu.js +49 -35
  92. package/dist/components/ui/navigation/navigation-demo.esm.js +81 -74
  93. package/dist/components/ui/navigation/navigation-demo.js +81 -74
  94. package/dist/components/ui/navigation/pagination.esm.js +62 -50
  95. package/dist/components/ui/navigation/pagination.js +62 -50
  96. package/dist/components/ui/navigation/sidebar.esm.js +56 -42
  97. package/dist/components/ui/navigation/sidebar.js +56 -42
  98. package/dist/components/ui/navigation/stepper.esm.js +34 -23
  99. package/dist/components/ui/navigation/stepper.js +34 -23
  100. package/dist/components/ui/navigation/tabs.esm.js +32 -21
  101. package/dist/components/ui/navigation/tabs.js +32 -21
  102. package/dist/components/ui/navigation/types.esm.js +196 -195
  103. package/dist/components/ui/navigation/types.js +196 -195
  104. package/dist/components/ui/overlay/backdrop.esm.js +17 -16
  105. package/dist/components/ui/overlay/backdrop.js +17 -16
  106. package/dist/components/ui/overlay/focus-manager.esm.js +21 -19
  107. package/dist/components/ui/overlay/focus-manager.js +21 -19
  108. package/dist/components/ui/overlay/index.esm.js +22 -2
  109. package/dist/components/ui/overlay/index.js +22 -2
  110. package/dist/components/ui/overlay/modal.esm.js +38 -34
  111. package/dist/components/ui/overlay/modal.js +38 -34
  112. package/dist/components/ui/overlay/overlay-manager.esm.js +25 -20
  113. package/dist/components/ui/overlay/overlay-manager.js +25 -20
  114. package/dist/components/ui/overlay/popover.esm.js +74 -58
  115. package/dist/components/ui/overlay/popover.js +74 -58
  116. package/dist/components/ui/overlay/portal.esm.js +7 -7
  117. package/dist/components/ui/overlay/portal.js +7 -7
  118. package/dist/components/ui/overlay/tooltip.esm.js +54 -39
  119. package/dist/components/ui/overlay/tooltip.js +54 -39
  120. package/dist/components/ui/overlay/types.esm.js +132 -131
  121. package/dist/components/ui/overlay/types.js +132 -131
  122. package/dist/components/ui/performance-demo.esm.js +135 -88
  123. package/dist/components/ui/performance-demo.js +135 -88
  124. package/dist/components/ui/semantic-input-system-demo.esm.js +117 -80
  125. package/dist/components/ui/semantic-input-system-demo.js +117 -80
  126. package/dist/components/ui/theme-customizer.esm.js +84 -52
  127. package/dist/components/ui/theme-customizer.js +84 -52
  128. package/dist/components/ui/theme-preview.esm.js +95 -43
  129. package/dist/components/ui/theme-preview.js +95 -43
  130. package/dist/components/ui/theme-switcher.esm.js +70 -44
  131. package/dist/components/ui/theme-switcher.js +70 -44
  132. package/dist/components/ui/theme-toggle.esm.js +3 -3
  133. package/dist/components/ui/theme-toggle.js +3 -3
  134. package/dist/components/ui/token-demo.esm.js +33 -21
  135. package/dist/components/ui/token-demo.js +33 -21
  136. package/dist/components/ui/touch-demo.esm.js +102 -73
  137. package/dist/components/ui/touch-demo.js +102 -73
  138. package/dist/components/ui/touch-friendly-interface-demo.esm.js +102 -64
  139. package/dist/components/ui/touch-friendly-interface-demo.js +102 -64
  140. package/dist/components/ui/touch-friendly-interface.esm.js +85 -61
  141. package/dist/components/ui/touch-friendly-interface.js +85 -61
  142. package/dist/hooks/use-accessibility-support.esm.js +115 -85
  143. package/dist/hooks/use-accessibility-support.js +115 -85
  144. package/dist/hooks/use-adaptive-layout.esm.js +56 -33
  145. package/dist/hooks/use-adaptive-layout.js +56 -33
  146. package/dist/hooks/use-advanced-patterns.esm.js +57 -42
  147. package/dist/hooks/use-advanced-patterns.js +57 -42
  148. package/dist/hooks/use-advanced-transition-system.esm.js +112 -71
  149. package/dist/hooks/use-advanced-transition-system.js +112 -71
  150. package/dist/hooks/use-animation-profile.esm.js +63 -34
  151. package/dist/hooks/use-animation-profile.js +63 -34
  152. package/dist/hooks/use-battery-animations.esm.js +80 -55
  153. package/dist/hooks/use-battery-animations.js +80 -55
  154. package/dist/hooks/use-battery-conscious-loading.esm.js +166 -123
  155. package/dist/hooks/use-battery-conscious-loading.js +166 -123
  156. package/dist/hooks/use-battery-optimization.esm.js +78 -55
  157. package/dist/hooks/use-battery-optimization.js +78 -55
  158. package/dist/hooks/use-battery-status.esm.js +73 -51
  159. package/dist/hooks/use-battery-status.js +73 -51
  160. package/dist/hooks/use-component-performance.esm.js +62 -47
  161. package/dist/hooks/use-component-performance.js +62 -47
  162. package/dist/hooks/use-device-loading-states.esm.js +152 -109
  163. package/dist/hooks/use-device-loading-states.js +152 -109
  164. package/dist/hooks/use-device.esm.js +25 -14
  165. package/dist/hooks/use-device.js +25 -14
  166. package/dist/hooks/use-enterprise-mobile-experience.esm.js +137 -88
  167. package/dist/hooks/use-enterprise-mobile-experience.js +137 -88
  168. package/dist/hooks/use-form-feedback.esm.js +124 -81
  169. package/dist/hooks/use-form-feedback.js +124 -81
  170. package/dist/hooks/use-form-performance.esm.js +127 -92
  171. package/dist/hooks/use-form-performance.js +127 -92
  172. package/dist/hooks/use-frame-rate.esm.js +56 -37
  173. package/dist/hooks/use-frame-rate.js +56 -37
  174. package/dist/hooks/use-gestures.esm.js +96 -72
  175. package/dist/hooks/use-gestures.js +96 -72
  176. package/dist/hooks/use-hardware-acceleration.esm.js +65 -37
  177. package/dist/hooks/use-hardware-acceleration.js +65 -37
  178. package/dist/hooks/use-input-accessibility.esm.js +157 -119
  179. package/dist/hooks/use-input-accessibility.js +157 -119
  180. package/dist/hooks/use-input-performance.esm.js +139 -104
  181. package/dist/hooks/use-input-performance.js +139 -104
  182. package/dist/hooks/use-layout-performance.esm.js +50 -29
  183. package/dist/hooks/use-layout-performance.js +50 -29
  184. package/dist/hooks/use-loading-accessibility.esm.js +209 -169
  185. package/dist/hooks/use-loading-accessibility.js +209 -169
  186. package/dist/hooks/use-loading-performance.esm.js +117 -93
  187. package/dist/hooks/use-loading-performance.js +117 -93
  188. package/dist/hooks/use-memory-usage.esm.js +57 -38
  189. package/dist/hooks/use-memory-usage.js +57 -38
  190. package/dist/hooks/use-mobile-form-layout.esm.js +111 -74
  191. package/dist/hooks/use-mobile-form-layout.js +111 -74
  192. package/dist/hooks/use-mobile-form-validation.esm.js +211 -144
  193. package/dist/hooks/use-mobile-form-validation.js +211 -144
  194. package/dist/hooks/use-mobile-keyboard-optimization.esm.js +154 -113
  195. package/dist/hooks/use-mobile-keyboard-optimization.js +154 -113
  196. package/dist/hooks/use-mobile-layout.esm.js +73 -51
  197. package/dist/hooks/use-mobile-layout.js +73 -51
  198. package/dist/hooks/use-mobile-optimization.esm.js +72 -44
  199. package/dist/hooks/use-mobile-optimization.js +72 -44
  200. package/dist/hooks/use-mobile-skeleton.esm.js +97 -64
  201. package/dist/hooks/use-mobile-skeleton.js +97 -64
  202. package/dist/hooks/use-mobile-touch.esm.js +128 -93
  203. package/dist/hooks/use-mobile-touch.js +128 -93
  204. package/dist/hooks/use-performance-throttling.esm.js +72 -48
  205. package/dist/hooks/use-performance-throttling.js +72 -48
  206. package/dist/hooks/use-performance.esm.js +90 -52
  207. package/dist/hooks/use-performance.js +90 -52
  208. package/dist/hooks/use-reusable-architecture.esm.js +94 -65
  209. package/dist/hooks/use-reusable-architecture.js +94 -65
  210. package/dist/hooks/use-semantic-input-types.esm.js +166 -124
  211. package/dist/hooks/use-semantic-input-types.js +166 -124
  212. package/dist/hooks/use-semantic-input.esm.js +178 -126
  213. package/dist/hooks/use-semantic-input.js +178 -126
  214. package/dist/hooks/use-tablet-layout.esm.js +67 -38
  215. package/dist/hooks/use-tablet-layout.js +67 -38
  216. package/dist/hooks/use-touch-friendly-input.esm.js +193 -149
  217. package/dist/hooks/use-touch-friendly-input.js +193 -149
  218. package/dist/hooks/use-touch-friendly-interface.esm.js +99 -67
  219. package/dist/hooks/use-touch-friendly-interface.js +99 -67
  220. package/dist/hooks/use-touch-optimization.esm.js +99 -72
  221. package/dist/hooks/use-touch-optimization.js +99 -72
  222. package/dist/index.esm.js +289 -280
  223. package/dist/index.js +289 -280
  224. package/dist/lib/utils.esm.js +1 -1
  225. package/dist/lib/utils.js +1 -1
  226. package/dist/plugins/theme-css-generator.esm.js +104 -55
  227. package/dist/plugins/theme-css-generator.js +104 -55
  228. package/dist/provider.esm.js +4 -4
  229. package/dist/provider.js +4 -4
  230. package/dist/styles.css +1 -1
  231. package/dist/theme.esm.js +633 -468
  232. package/dist/theme.js +633 -468
  233. package/dist/themes/ThemeContext.esm.js +15 -15
  234. package/dist/themes/ThemeContext.js +15 -15
  235. package/dist/themes/ThemeProvider.esm.js +25 -22
  236. package/dist/themes/ThemeProvider.js +25 -22
  237. package/dist/themes/accessibility.esm.js +147 -108
  238. package/dist/themes/accessibility.js +147 -108
  239. package/dist/themes/aria-patterns.esm.js +198 -162
  240. package/dist/themes/aria-patterns.js +198 -162
  241. package/dist/themes/base-themes.esm.js +14 -11
  242. package/dist/themes/base-themes.js +14 -11
  243. package/dist/themes/colorManager.esm.js +101 -83
  244. package/dist/themes/colorManager.js +101 -83
  245. package/dist/themes/examples/dark-theme.esm.js +133 -103
  246. package/dist/themes/examples/dark-theme.js +133 -103
  247. package/dist/themes/examples/minimal-theme.esm.js +83 -61
  248. package/dist/themes/examples/minimal-theme.js +83 -61
  249. package/dist/themes/focus-management.esm.js +202 -143
  250. package/dist/themes/focus-management.js +202 -143
  251. package/dist/themes/fontLoader.esm.js +28 -19
  252. package/dist/themes/fontLoader.js +28 -19
  253. package/dist/themes/high-contrast.esm.js +152 -104
  254. package/dist/themes/high-contrast.js +152 -104
  255. package/dist/themes/inheritance.esm.js +35 -27
  256. package/dist/themes/inheritance.js +35 -27
  257. package/dist/themes/keyboard-navigation.esm.js +152 -123
  258. package/dist/themes/keyboard-navigation.js +152 -123
  259. package/dist/themes/motion-reduction.esm.js +193 -133
  260. package/dist/themes/motion-reduction.js +193 -133
  261. package/dist/themes/navigation.esm.js +146 -146
  262. package/dist/themes/navigation.js +146 -146
  263. package/dist/themes/screen-reader.esm.js +159 -94
  264. package/dist/themes/screen-reader.js +159 -94
  265. package/dist/themes/systemThemeDetector.esm.js +42 -34
  266. package/dist/themes/systemThemeDetector.js +42 -34
  267. package/dist/themes/themeCSSUpdater.esm.js +21 -9
  268. package/dist/themes/themeCSSUpdater.js +21 -9
  269. package/dist/themes/themePersistence.esm.js +68 -47
  270. package/dist/themes/themePersistence.js +68 -47
  271. package/dist/themes/themes/stan-design.esm.js +633 -468
  272. package/dist/themes/themes/stan-design.js +633 -468
  273. package/dist/themes/types.esm.js +301 -287
  274. package/dist/themes/types.js +301 -287
  275. package/dist/themes/useSystemTheme.esm.js +4 -4
  276. package/dist/themes/useSystemTheme.js +4 -4
  277. package/dist/themes/useTheme.esm.js +4 -4
  278. package/dist/themes/useTheme.js +4 -4
  279. package/dist/themes/validation.esm.js +128 -77
  280. package/dist/themes/validation.js +128 -77
  281. package/dist/tokens/index.esm.js +15 -4
  282. package/dist/tokens/index.js +15 -4
  283. package/dist/tokens/tokenExporter.esm.js +87 -61
  284. package/dist/tokens/tokenExporter.js +87 -61
  285. package/dist/tokens/tokenGenerator.esm.js +86 -77
  286. package/dist/tokens/tokenGenerator.js +86 -77
  287. package/dist/tokens/tokenManager.esm.js +64 -51
  288. package/dist/tokens/tokenManager.js +64 -51
  289. package/dist/tokens/tokenValidator.esm.js +193 -147
  290. package/dist/tokens/tokenValidator.js +193 -147
  291. package/dist/tokens/types.esm.js +49 -35
  292. package/dist/tokens/types.js +49 -35
  293. package/dist/utils/bundle-analyzer.esm.js +83 -65
  294. package/dist/utils/bundle-analyzer.js +83 -65
  295. package/dist/utils/bundle-splitting.esm.js +142 -117
  296. package/dist/utils/bundle-splitting.js +142 -117
  297. package/dist/utils/lazy-loading.esm.js +132 -106
  298. package/dist/utils/lazy-loading.js +132 -106
  299. package/dist/utils/performance-monitor.esm.js +170 -129
  300. package/dist/utils/performance-monitor.js +170 -129
  301. package/dist/utils/tree-shaking.esm.js +69 -61
  302. package/dist/utils/tree-shaking.js +69 -61
  303. package/package.json +1 -1
  304. package/src/index.ts +146 -146
@@ -1,63 +1,66 @@
1
1
  // Performance monitoring utilities for tracking various metrics
2
2
  export interface PerformanceMetric {
3
- name;
4
- value;
5
- unit;
6
- timestamp;
7
- metadata?, any>;
3
+ name: string;
4
+ value: number;
5
+ unit: string;
6
+ timestamp: number;
7
+ metadata?: Record<string, any>;
8
8
  }
9
9
 
10
10
  export interface PerformanceThreshold {
11
- name;
12
- warning;
13
- critical;
14
- unit;
11
+ name: string;
12
+ warning: number;
13
+ critical: number;
14
+ unit: string;
15
15
  }
16
16
 
17
17
  export interface PerformanceReport {
18
- metrics];
19
- thresholds];
20
- violations;
21
- value;
22
- threshold;
23
- severity;
18
+ metrics: PerformanceMetric[];
19
+ thresholds: PerformanceThreshold[];
20
+ violations: Array<{
21
+ metric: string;
22
+ value: number;
23
+ threshold: number;
24
+ severity: 'warning' | 'critical';
24
25
  }>;
25
- summary;
26
- warnings;
27
- criticals;
28
- averagePerformance;
26
+ summary: {
27
+ totalMetrics: number;
28
+ warnings: number;
29
+ criticals: number;
30
+ averagePerformance: number;
29
31
  };
30
- timestamp;
32
+ timestamp: number;
31
33
  }
32
34
 
33
35
  export interface PerformanceMonitorConfig {
34
- enabled;
35
- autoCollect;
36
- collectionInterval;
37
- maxMetrics;
38
- thresholds];
39
- enableWebVitals;
40
- enableMemoryMonitoring;
41
- enableNetworkMonitoring;
36
+ enabled: boolean;
37
+ autoCollect: boolean;
38
+ collectionInterval: number;
39
+ maxMetrics: number;
40
+ thresholds: PerformanceThreshold[];
41
+ enableWebVitals: boolean;
42
+ enableMemoryMonitoring: boolean;
43
+ enableNetworkMonitoring: boolean;
42
44
  }
43
45
 
44
46
  export class PerformanceMonitor {
45
- private config;
46
- private metrics];
47
- private thresholds, PerformanceThreshold>;
48
- private observers, PerformanceObserver>;
49
- private collectionTimer;
50
- private startTime;
51
-
52
- constructor(config= {
53
- enabled,
54
- autoCollect,
55
- collectionInterval, // 5 seconds
56
- maxMetrics,
57
- thresholds],
58
- enableWebVitals,
59
- enableMemoryMonitoring,
60
- enableNetworkMonitoring}) {
47
+ private config: PerformanceMonitorConfig;
48
+ private metrics: PerformanceMetric[];
49
+ private thresholds: Map<string, PerformanceThreshold>;
50
+ private observers: Map<string, PerformanceObserver>;
51
+ private collectionTimer: NodeJS.Timeout | null;
52
+ private startTime: number;
53
+
54
+ constructor(config: PerformanceMonitorConfig = {
55
+ enabled: true,
56
+ autoCollect: true,
57
+ collectionInterval: 5000, // 5 seconds
58
+ maxMetrics: 1000,
59
+ thresholds: [],
60
+ enableWebVitals: true,
61
+ enableMemoryMonitoring: true,
62
+ enableNetworkMonitoring: true
63
+ }) {
61
64
  this.config = config;
62
65
  this.metrics = [];
63
66
  this.thresholds = new Map();
@@ -87,13 +90,14 @@ export class PerformanceMonitor {
87
90
  }
88
91
 
89
92
  // Set up default performance thresholds
90
- private setupDefaultThresholds()] = [
91
- { name, warning, critical, unit},
92
- { name, warning, critical, unit},
93
- { name, warning, critical, unit},
94
- { name, warning, critical, unit},
95
- { name, warning, critical, unit},
96
- { name, warning, critical, unit}
93
+ private setupDefaultThresholds(): void {
94
+ const defaultThresholds: PerformanceThreshold[] = [
95
+ { name: 'themeSwitchTime', warning: 100, critical: 300, unit: 'ms' },
96
+ { name: 'componentRenderTime', warning: 50, critical: 150, unit: 'ms' },
97
+ { name: 'bundleLoadTime', warning: 2000, critical: 5000, unit: 'ms' },
98
+ { name: 'memoryUsage', warning: 100, critical: 500, unit: 'MB' },
99
+ { name: 'firstContentfulPaint', warning: 1000, critical: 3000, unit: 'ms' },
100
+ { name: 'largestContentfulPaint', warning: 2500, critical: 4000, unit: 'ms' }
97
101
  ];
98
102
 
99
103
  defaultThresholds.forEach(threshold => {
@@ -102,7 +106,8 @@ export class PerformanceMonitor {
102
106
  }
103
107
 
104
108
  // Set up Web Vitals observer
105
- private setupWebVitalsObserver())) return;
109
+ private setupWebVitalsObserver(): void {
110
+ if (!('PerformanceObserver' in window)) return;
106
111
 
107
112
  try {
108
113
  // First Contentful Paint
@@ -110,22 +115,24 @@ export class PerformanceMonitor {
110
115
  const entries = list.getEntries();
111
116
  entries.forEach(entry => {
112
117
  this.recordMetric('firstContentfulPaint', entry.startTime, 'ms', {
113
- entryType,
114
- name});
118
+ entryType: entry.entryType,
119
+ name: entry.name
120
+ });
115
121
  });
116
122
  });
117
- fcpObserver.observe({ entryTypes] });
123
+ fcpObserver.observe({ entryTypes: ['paint'] });
118
124
 
119
125
  // Largest Contentful Paint
120
126
  const lcpObserver = new PerformanceObserver((list) => {
121
127
  const entries = list.getEntries();
122
128
  entries.forEach(entry => {
123
129
  this.recordMetric('largestContentfulPaint', entry.startTime, 'ms', {
124
- entryType,
125
- name});
130
+ entryType: entry.entryType,
131
+ name: entry.name
132
+ });
126
133
  });
127
134
  });
128
- lcpObserver.observe({ entryTypes] });
135
+ lcpObserver.observe({ entryTypes: ['largest-contentful-paint'] });
129
136
 
130
137
  // First Input Delay
131
138
  const fidObserver = new PerformanceObserver((list) => {
@@ -134,12 +141,13 @@ export class PerformanceMonitor {
134
141
  if ('processingStart' in entry) {
135
142
  const fidEntry = entry as any;
136
143
  this.recordMetric('firstInputDelay', fidEntry.processingStart - fidEntry.startTime, 'ms', {
137
- entryType,
138
- name});
144
+ entryType: entry.entryType,
145
+ name: entry.name
146
+ });
139
147
  }
140
148
  });
141
149
  });
142
- fidObserver.observe({ entryTypes] });
150
+ fidObserver.observe({ entryTypes: ['first-input'] });
143
151
 
144
152
  // Cumulative Layout Shift
145
153
  const clsObserver = new PerformanceObserver((list) => {
@@ -148,27 +156,29 @@ export class PerformanceMonitor {
148
156
  if ('value' in entry) {
149
157
  const clsEntry = entry as any;
150
158
  this.recordMetric('cumulativeLayoutShift', clsEntry.value, 'score', {
151
- entryType,
152
- name});
159
+ entryType: entry.entryType,
160
+ name: entry.name
161
+ });
153
162
  }
154
163
  });
155
164
  });
156
- clsObserver.observe({ entryTypes] });
165
+ clsObserver.observe({ entryTypes: ['layout-shift'] });
157
166
 
158
167
  this.observers.set('webVitals', fcpObserver);
159
168
  } catch (error) {
160
- console.warn('Failed to set up Web Vitals observer, error);
169
+ console.warn('Failed to set up Web Vitals observer:', error);
161
170
  }
162
171
  }
163
172
 
164
173
  // Record a performance metric
165
- recordMetric(name, value, unit, metadata?, any>)) return;
174
+ recordMetric(name: string, value: number, unit: string, metadata?: Record<string, any>): void {
175
+ if (!this.config.enabled) return;
166
176
 
167
- const metric= {
177
+ const metric: PerformanceMetric = {
168
178
  name,
169
179
  value,
170
180
  unit,
171
- timestamp),
181
+ timestamp: Date.now(),
172
182
  metadata
173
183
  };
174
184
 
@@ -184,7 +194,8 @@ export class PerformanceMonitor {
184
194
  }
185
195
 
186
196
  // Check if a metric violates any thresholds
187
- private checkThresholds(metric)= this.thresholds.get(metric.name);
197
+ private checkThresholds(metric: PerformanceMetric): void {
198
+ const threshold = this.thresholds.get(metric.name);
188
199
  if (!threshold) return;
189
200
 
190
201
  if (metric.value >= threshold.critical) {
@@ -195,24 +206,28 @@ export class PerformanceMonitor {
195
206
  }
196
207
 
197
208
  // Emit threshold violation event
198
- private emitThresholdViolation(metric, threshold, severity)= new CustomEvent('performanceThresholdViolation', {
199
- detail,
200
- value,
201
- threshold],
209
+ private emitThresholdViolation(metric: PerformanceMetric, threshold: PerformanceThreshold, severity: 'warning' | 'critical'): void {
210
+ const event = new CustomEvent('performanceThresholdViolation', {
211
+ detail: {
212
+ metric: metric.name,
213
+ value: metric.value,
214
+ threshold: threshold[severity],
202
215
  severity,
203
- unit,
204
- timestamp}
216
+ unit: threshold.unit,
217
+ timestamp: metric.timestamp
218
+ }
205
219
  });
206
220
 
207
221
  window.dispatchEvent(event);
208
222
 
209
223
  // Log to console
210
- const logMethod = severity === 'critical' ? 'error' ;
211
- console[logMethod](`Performance ${severity}} = ${metric.value}${metric.unit} (threshold]}${threshold.unit})`);
224
+ const logMethod = severity === 'critical' ? 'error' : 'warn';
225
+ console[logMethod](`Performance ${severity}: ${metric.name} = ${metric.value}${metric.unit} (threshold: ${threshold[severity]}${threshold.unit})`);
212
226
  }
213
227
 
214
228
  // Measure theme switch performance
215
- measureThemeSwitch(callback) => void)= performance.now();
229
+ measureThemeSwitch(callback: () => void): number {
230
+ const startTime = performance.now();
216
231
  callback();
217
232
  const endTime = performance.now();
218
233
  const duration = endTime - startTime;
@@ -222,7 +237,8 @@ export class PerformanceMonitor {
222
237
  }
223
238
 
224
239
  // Measure component render performance
225
- measureComponentRender(callback) => void)= performance.now();
240
+ measureComponentRender(callback: () => void): number {
241
+ const startTime = performance.now();
226
242
  callback();
227
243
  const endTime = performance.now();
228
244
  const duration = endTime - startTime;
@@ -232,7 +248,8 @@ export class PerformanceMonitor {
232
248
  }
233
249
 
234
250
  // Measure bundle load performance
235
- measureBundleLoad(callback) => Promise<any>)= performance.now();
251
+ measureBundleLoad(callback: () => Promise<any>): Promise<number> {
252
+ const startTime = performance.now();
236
253
  return callback().then(() => {
237
254
  const endTime = performance.now();
238
255
  const duration = endTime - startTime;
@@ -242,7 +259,8 @@ export class PerformanceMonitor {
242
259
  }
243
260
 
244
261
  // Measure memory usage
245
- measureMemoryUsage())) {
262
+ measureMemoryUsage(): number | null {
263
+ if (!this.config.enableMemoryMonitoring || !('memory' in performance)) {
246
264
  return null;
247
265
  }
248
266
 
@@ -250,14 +268,16 @@ export class PerformanceMonitor {
250
268
  const usedMB = memory.usedJSHeapSize / 1024 / 1024;
251
269
 
252
270
  this.recordMetric('memoryUsage', usedMB, 'MB', {
253
- totalJSHeapSize,
254
- jsHeapSizeLimit});
271
+ totalJSHeapSize: memory.totalJSHeapSize / 1024 / 1024,
272
+ jsHeapSizeLimit: memory.jsHeapSizeLimit / 1024 / 1024
273
+ });
255
274
 
256
275
  return usedMB;
257
276
  }
258
277
 
259
278
  // Measure network performance
260
- measureNetworkPerformance())) return;
279
+ measureNetworkPerformance(): void {
280
+ if (!this.config.enableNetworkMonitoring || !('getEntriesByType' in performance)) return;
261
281
 
262
282
  try {
263
283
  const navigationEntries = performance.getEntriesByType('navigation');
@@ -270,12 +290,13 @@ export class PerformanceMonitor {
270
290
  this.recordMetric('firstByte', nav.responseStart - nav.fetchStart, 'ms');
271
291
  }
272
292
  } catch (error) {
273
- console.warn('Failed to measure network performance, error);
293
+ console.warn('Failed to measure network performance:', error);
274
294
  }
275
295
  }
276
296
 
277
297
  // Start automatic metric collection
278
- startAutoCollection()) return;
298
+ startAutoCollection(): void {
299
+ if (this.collectionTimer) return;
279
300
 
280
301
  this.collectionTimer = setInterval(() => {
281
302
  // Collect memory usage
@@ -290,14 +311,17 @@ export class PerformanceMonitor {
290
311
  }
291
312
 
292
313
  // Stop automatic metric collection
293
- stopAutoCollection()) {
314
+ stopAutoCollection(): void {
315
+ if (this.collectionTimer) {
294
316
  clearInterval(this.collectionTimer);
295
317
  this.collectionTimer = null;
296
318
  }
297
319
  }
298
320
 
299
321
  // Collect custom metrics
300
- private collectCustomMetrics()= Date.now() - this.startTime;
322
+ private collectCustomMetrics(): void {
323
+ // Record uptime
324
+ const uptime = Date.now() - this.startTime;
301
325
  this.recordMetric('uptime', uptime, 'ms');
302
326
 
303
327
  // Record metric count
@@ -305,24 +329,26 @@ export class PerformanceMonitor {
305
329
  }
306
330
 
307
331
  // Get metrics by name
308
- getMetricsByName(name)] {
332
+ getMetricsByName(name: string): PerformanceMetric[] {
309
333
  return this.metrics.filter(metric => metric.name === name);
310
334
  }
311
335
 
312
336
  // Get latest metric by name
313
- getLatestMetric(name)= this.getMetricsByName(name);
314
- return metrics.length > 0 ? metrics[metrics.length - 1] ;
337
+ getLatestMetric(name: string): PerformanceMetric | null {
338
+ const metrics = this.getMetricsByName(name);
339
+ return metrics.length > 0 ? metrics[metrics.length - 1] : null;
315
340
  }
316
341
 
317
342
  // Get metrics within time range
318
- getMetricsInRange(startTime, endTime)] {
343
+ getMetricsInRange(startTime: number, endTime: number): PerformanceMetric[] {
319
344
  return this.metrics.filter(metric =>
320
345
  metric.timestamp >= startTime && metric.timestamp <= endTime
321
346
  );
322
347
  }
323
348
 
324
349
  // Calculate average for a metric
325
- getAverageMetric(name, timeRange?; end})= this.getMetricsByName(name);
350
+ getAverageMetric(name: string, timeRange?: { start: number; end: number }): number {
351
+ let metrics = this.getMetricsByName(name);
326
352
 
327
353
  if (timeRange) {
328
354
  metrics = this.getMetricsInRange(timeRange.start, timeRange.end);
@@ -335,10 +361,12 @@ export class PerformanceMonitor {
335
361
  }
336
362
 
337
363
  // Get performance report
338
- getPerformanceReport();
339
- value;
340
- threshold;
341
- severity;
364
+ getPerformanceReport(): PerformanceReport {
365
+ const violations: Array<{
366
+ metric: string;
367
+ value: number;
368
+ threshold: number;
369
+ severity: 'warning' | 'critical';
342
370
  }> = [];
343
371
 
344
372
  // Check all metrics against thresholds
@@ -347,16 +375,18 @@ export class PerformanceMonitor {
347
375
  if (threshold) {
348
376
  if (metric.value >= threshold.critical) {
349
377
  violations.push({
350
- metric,
351
- value,
352
- threshold,
353
- severity});
378
+ metric: metric.name,
379
+ value: metric.value,
380
+ threshold: threshold.critical,
381
+ severity: 'critical'
382
+ });
354
383
  } else if (metric.value >= threshold.warning) {
355
384
  violations.push({
356
- metric,
357
- value,
358
- threshold,
359
- severity});
385
+ metric: metric.name,
386
+ value: metric.value,
387
+ threshold: threshold.warning,
388
+ severity: 'warning'
389
+ });
360
390
  }
361
391
  }
362
392
  });
@@ -368,48 +398,56 @@ export class PerformanceMonitor {
368
398
  const timeMetrics = this.metrics.filter(m => m.unit === 'ms');
369
399
  const averagePerformance = timeMetrics.length > 0
370
400
  ? timeMetrics.reduce((sum, m) => sum + m.value, 0) / timeMetrics.length
371
- ;
401
+ : 0;
372
402
 
373
403
  return {
374
- metrics],
375
- thresholds)),
404
+ metrics: [...this.metrics],
405
+ thresholds: Array.from(this.thresholds.values()),
376
406
  violations,
377
- summary,
407
+ summary: {
408
+ totalMetrics: this.metrics.length,
378
409
  warnings,
379
410
  criticals,
380
411
  averagePerformance
381
412
  },
382
- timestamp)
413
+ timestamp: Date.now()
383
414
  };
384
415
  }
385
416
 
386
417
  // Add custom threshold
387
- addThreshold(threshold), threshold);
418
+ addThreshold(threshold: PerformanceThreshold): void {
419
+ this.thresholds.set(threshold.name, threshold);
388
420
  }
389
421
 
390
422
  // Remove threshold
391
- removeThreshold(name));
423
+ removeThreshold(name: string): void {
424
+ this.thresholds.delete(name);
392
425
  }
393
426
 
394
427
  // Clear all metrics
395
- clearMetrics()= [];
428
+ clearMetrics(): void {
429
+ this.metrics = [];
396
430
  }
397
431
 
398
432
  // Export metrics to JSON
399
- exportMetrics(),
400
- metrics,
401
- thresholds)),
402
- report),
403
- timestamp).toISOString()
433
+ exportMetrics(): string {
434
+ return JSON.stringify({
435
+ config: this.config,
436
+ metrics: this.metrics,
437
+ thresholds: Array.from(this.thresholds.values()),
438
+ report: this.getPerformanceReport(),
439
+ timestamp: new Date().toISOString()
404
440
  }, null, 2);
405
441
  }
406
442
 
407
443
  // Get configuration
408
- getConfig()};
444
+ getConfig(): PerformanceMonitorConfig {
445
+ return { ...this.config };
409
446
  }
410
447
 
411
448
  // Update configuration
412
- updateConfig(newConfig)= { ...this.config, ...newConfig };
449
+ updateConfig(newConfig: Partial<PerformanceMonitorConfig>): void {
450
+ this.config = { ...this.config, ...newConfig };
413
451
 
414
452
  // Restart auto-collection if interval changed
415
453
  if (newConfig.collectionInterval && this.collectionTimer) {
@@ -419,7 +457,8 @@ export class PerformanceMonitor {
419
457
  }
420
458
 
421
459
  // Cleanup resources
422
- destroy());
460
+ destroy(): void {
461
+ this.stopAutoCollection();
423
462
 
424
463
  // Disconnect observers
425
464
  this.observers.forEach(observer => {
@@ -437,10 +476,11 @@ export const performanceMonitor = new PerformanceMonitor();
437
476
 
438
477
  // Utility function for measuring async operations
439
478
  export async function measureAsync<T>(
440
- name,
441
- operation) => Promise<T>,
442
- monitor= performanceMonitor
443
- )= performance.now();
479
+ name: string,
480
+ operation: () => Promise<T>,
481
+ monitor: PerformanceMonitor = performanceMonitor
482
+ ): Promise<T> {
483
+ const startTime = performance.now();
444
484
  try {
445
485
  const result = await operation();
446
486
  const duration = performance.now() - startTime;
@@ -455,10 +495,11 @@ export async function measureAsync<T>(
455
495
 
456
496
  // Utility function for measuring sync operations
457
497
  export function measureSync<T>(
458
- name,
459
- operation) => T,
460
- monitor= performanceMonitor
461
- )= performance.now();
498
+ name: string,
499
+ operation: () => T,
500
+ monitor: PerformanceMonitor = performanceMonitor
501
+ ): T {
502
+ const startTime = performance.now();
462
503
  try {
463
504
  const result = operation();
464
505
  const duration = performance.now() - startTime;