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

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 (306) 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 +0 -1
  89. package/dist/components/ui/navigation/index.js +0 -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 +0 -2
  109. package/dist/components/ui/overlay/index.js +0 -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 +157 -281
  223. package/dist/index.js +157 -281
  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/index.esm.js +1 -1
  256. package/dist/themes/index.js +1 -1
  257. package/dist/themes/inheritance.esm.js +35 -27
  258. package/dist/themes/inheritance.js +35 -27
  259. package/dist/themes/keyboard-navigation.esm.js +152 -123
  260. package/dist/themes/keyboard-navigation.js +152 -123
  261. package/dist/themes/motion-reduction.esm.js +193 -133
  262. package/dist/themes/motion-reduction.js +193 -133
  263. package/dist/themes/navigation.esm.js +146 -146
  264. package/dist/themes/navigation.js +146 -146
  265. package/dist/themes/screen-reader.esm.js +159 -94
  266. package/dist/themes/screen-reader.js +159 -94
  267. package/dist/themes/systemThemeDetector.esm.js +42 -34
  268. package/dist/themes/systemThemeDetector.js +42 -34
  269. package/dist/themes/themeCSSUpdater.esm.js +21 -9
  270. package/dist/themes/themeCSSUpdater.js +21 -9
  271. package/dist/themes/themePersistence.esm.js +68 -47
  272. package/dist/themes/themePersistence.js +68 -47
  273. package/dist/themes/themes/stan-design.esm.js +633 -468
  274. package/dist/themes/themes/stan-design.js +633 -468
  275. package/dist/themes/types.esm.js +301 -287
  276. package/dist/themes/types.js +301 -287
  277. package/dist/themes/useSystemTheme.esm.js +4 -4
  278. package/dist/themes/useSystemTheme.js +4 -4
  279. package/dist/themes/useTheme.esm.js +4 -4
  280. package/dist/themes/useTheme.js +4 -4
  281. package/dist/themes/validation.esm.js +128 -77
  282. package/dist/themes/validation.js +128 -77
  283. package/dist/tokens/index.esm.js +1 -2
  284. package/dist/tokens/index.js +1 -2
  285. package/dist/tokens/tokenExporter.esm.js +87 -61
  286. package/dist/tokens/tokenExporter.js +87 -61
  287. package/dist/tokens/tokenGenerator.esm.js +86 -77
  288. package/dist/tokens/tokenGenerator.js +86 -77
  289. package/dist/tokens/tokenManager.esm.js +64 -51
  290. package/dist/tokens/tokenManager.js +64 -51
  291. package/dist/tokens/tokenValidator.esm.js +193 -147
  292. package/dist/tokens/tokenValidator.js +193 -147
  293. package/dist/tokens/types.esm.js +49 -35
  294. package/dist/tokens/types.js +49 -35
  295. package/dist/utils/bundle-analyzer.esm.js +83 -65
  296. package/dist/utils/bundle-analyzer.js +83 -65
  297. package/dist/utils/bundle-splitting.esm.js +142 -117
  298. package/dist/utils/bundle-splitting.js +142 -117
  299. package/dist/utils/lazy-loading.esm.js +132 -106
  300. package/dist/utils/lazy-loading.js +132 -106
  301. package/dist/utils/performance-monitor.esm.js +170 -129
  302. package/dist/utils/performance-monitor.js +170 -129
  303. package/dist/utils/tree-shaking.esm.js +69 -61
  304. package/dist/utils/tree-shaking.js +69 -61
  305. package/package.json +1 -1
  306. package/src/index.ts +146 -146
@@ -2,70 +2,74 @@ import React from 'react';
2
2
 
3
3
  // Lazy loading utilities for code splitting and dynamic imports
4
4
  export interface LazyLoadConfig {
5
- enabled;
6
- preloadThreshold;
7
- cacheSize;
8
- retryAttempts;
9
- retryDelay;
10
- loadingTimeout;
5
+ enabled: boolean;
6
+ preloadThreshold: number;
7
+ cacheSize: number;
8
+ retryAttempts: number;
9
+ retryDelay: number;
10
+ loadingTimeout: number;
11
11
  }
12
12
 
13
13
  export interface LazyLoadResult<T> {
14
- data;
15
- loading;
16
- error;
17
- retry) => Promise<LazyLoadResult<T>>;
14
+ data: T | null;
15
+ loading: boolean;
16
+ error: Error | null;
17
+ retry: () => Promise<LazyLoadResult<T>>;
18
18
  }
19
19
 
20
20
  export interface LazyLoadStats {
21
- totalRequests;
22
- successfulLoads;
23
- failedLoads;
24
- cacheHits;
25
- averageLoadTime;
26
- totalLoadTime;
21
+ totalRequests: number;
22
+ successfulLoads: number;
23
+ failedLoads: number;
24
+ cacheHits: number;
25
+ averageLoadTime: number;
26
+ totalLoadTime: number;
27
27
  }
28
28
 
29
29
  export class LazyLoader {
30
- private config;
31
- private cache, { data; timestamp; ttl}>;
32
- private loadingStates, boolean>;
33
- private errorStates, Error>;
34
- private stats;
35
- private preloadQueue;
36
- private retryCounts, number>;
37
-
38
- constructor(config= {
39
- enabled,
40
- preloadThreshold,
41
- cacheSize,
42
- retryAttempts,
43
- retryDelay,
44
- loadingTimeout}) {
30
+ private config: LazyLoadConfig;
31
+ private cache: Map<string, { data: any; timestamp: number; ttl: number }>;
32
+ private loadingStates: Map<string, boolean>;
33
+ private errorStates: Map<string, Error>;
34
+ private stats: LazyLoadStats;
35
+ private preloadQueue: Set<string>;
36
+ private retryCounts: Map<string, number>;
37
+
38
+ constructor(config: LazyLoadConfig = {
39
+ enabled: true,
40
+ preloadThreshold: 0.8,
41
+ cacheSize: 100,
42
+ retryAttempts: 3,
43
+ retryDelay: 1000,
44
+ loadingTimeout: 10000
45
+ }) {
45
46
  this.config = config;
46
47
  this.cache = new Map();
47
48
  this.loadingStates = new Map();
48
49
  this.errorStates = new Map();
49
50
  this.stats = {
50
- totalRequests,
51
- successfulLoads,
52
- failedLoads,
53
- cacheHits,
54
- averageLoadTime,
55
- totalLoadTime};
51
+ totalRequests: 0,
52
+ successfulLoads: 0,
53
+ failedLoads: 0,
54
+ cacheHits: 0,
55
+ averageLoadTime: 0,
56
+ totalLoadTime: 0
57
+ };
56
58
  this.preloadQueue = new Set();
57
59
  this.retryCounts = new Map();
58
60
  }
59
61
 
60
62
  // Lazy load a module with dynamic import
61
63
  async lazyLoad<T>(
62
- modulePath,
63
- importFn) => Promise<T>,
64
- options;
65
- ttl?;
66
- preload?;
64
+ modulePath: string,
65
+ importFn: () => Promise<T>,
66
+ options: {
67
+ cacheKey?: string;
68
+ ttl?: number;
69
+ preload?: boolean;
67
70
  } = {}
68
- )= options.cacheKey || modulePath;
71
+ ): Promise<LazyLoadResult<T>> {
72
+ const cacheKey = options.cacheKey || modulePath;
69
73
  const ttl = options.ttl || 300000; // 5 minutes default
70
74
 
71
75
  // Check cache first
@@ -75,10 +79,10 @@ export class LazyLoader {
75
79
  this.stats.cacheHits++;
76
80
  this.stats.totalRequests++; // Count cache hits as requests too
77
81
  return {
78
- data,
79
- loading,
80
- error,
81
- retry) => {
82
+ data: cached.data,
83
+ loading: false,
84
+ error: null,
85
+ retry: () => {
82
86
  // Clear error state before retrying
83
87
  this.errorStates.delete(cacheKey);
84
88
  this.retryCounts.delete(cacheKey);
@@ -94,10 +98,10 @@ export class LazyLoader {
94
98
  // Check if already loading
95
99
  if (this.loadingStates.get(cacheKey)) {
96
100
  return {
97
- data,
98
- loading,
99
- error,
100
- retry) => this.lazyLoad(modulePath, importFn, options)
101
+ data: null,
102
+ loading: true,
103
+ error: null,
104
+ retry: () => this.lazyLoad(modulePath, importFn, options)
101
105
  };
102
106
  }
103
107
 
@@ -105,10 +109,10 @@ export class LazyLoader {
105
109
  const previousError = this.errorStates.get(cacheKey);
106
110
  if (previousError) {
107
111
  return {
108
- data,
109
- loading,
110
- error,
111
- retry) => this.lazyLoad(modulePath, importFn, options)
112
+ data: null,
113
+ loading: false,
114
+ error: previousError,
115
+ retry: () => this.lazyLoad(modulePath, importFn, options)
112
116
  };
113
117
  }
114
118
 
@@ -145,9 +149,9 @@ export class LazyLoader {
145
149
 
146
150
  return {
147
151
  data,
148
- loading,
149
- error,
150
- retry) => this.lazyLoad(modulePath, importFn, options)
152
+ loading: false,
153
+ error: null,
154
+ retry: () => this.lazyLoad(modulePath, importFn, options)
151
155
  };
152
156
 
153
157
  } catch (error) {
@@ -168,14 +172,14 @@ export class LazyLoader {
168
172
  }, this.config.retryDelay);
169
173
  }
170
174
 
171
- const errorObj = error instanceof Error ? error ));
175
+ const errorObj = error instanceof Error ? error : new Error(String(error));
172
176
  this.errorStates.set(cacheKey, errorObj);
173
177
 
174
178
  return {
175
- data,
176
- loading,
177
- error,
178
- retry) => {
179
+ data: null,
180
+ loading: false,
181
+ error: errorObj,
182
+ retry: () => {
179
183
  // Clear error state before retrying
180
184
  this.errorStates.delete(cacheKey);
181
185
  this.retryCounts.delete(cacheKey);
@@ -186,7 +190,8 @@ export class LazyLoader {
186
190
  }
187
191
 
188
192
  // Preload a module without waiting for the result
189
- preload<T>(modulePath, importFn) => Promise<T>)) return;
193
+ preload<T>(modulePath: string, importFn: () => Promise<T>): void {
194
+ if (!this.config.enabled) return;
190
195
 
191
196
  // Limit preload queue size
192
197
  if (this.preloadQueue.size >= 10) {
@@ -211,17 +216,20 @@ export class LazyLoader {
211
216
  }
212
217
 
213
218
  // Execute preload
214
- private async executePreload<T>(modulePath, importFn) => Promise<T>), importFn, { cacheKey, ttl}); // 10 minutes for preloaded modules
219
+ private async executePreload<T>(modulePath: string, importFn: () => Promise<T>): Promise<void> {
220
+ try {
221
+ await this.lazyLoad(modulePath, importFn, { cacheKey: modulePath, ttl: 600000 }); // 10 minutes for preloaded modules
215
222
  } catch (error) {
216
223
  // Silently fail preloads
217
- console.debug(`Preload failed for ${modulePath}, error);
224
+ console.debug(`Preload failed for ${modulePath}:`, error);
218
225
  } finally {
219
226
  this.preloadQueue.delete(modulePath);
220
227
  }
221
228
  }
222
229
 
223
230
  // Queue preload for later execution
224
- private queuePreload(modulePath)) { // Limit preload queue
231
+ private queuePreload(modulePath: string): void {
232
+ if (this.preloadQueue.size < 10) { // Limit preload queue
225
233
  this.preloadQueue.add(modulePath);
226
234
  }
227
235
  }
@@ -229,7 +237,9 @@ export class LazyLoader {
229
237
 
230
238
 
231
239
  // Cache a result
232
- private cacheResult(key, data, ttl)= this.config.cacheSize) {
240
+ private cacheResult(key: string, data: any, ttl: number): void {
241
+ // Implement LRU cache eviction
242
+ if (this.cache.size >= this.config.cacheSize) {
233
243
  const oldestKey = this.cache.keys().next().value;
234
244
  if (oldestKey) {
235
245
  this.cache.delete(oldestKey);
@@ -238,83 +248,95 @@ export class LazyLoader {
238
248
 
239
249
  this.cache.set(key, {
240
250
  data,
241
- timestamp),
251
+ timestamp: Date.now(),
242
252
  ttl
243
253
  });
244
254
  }
245
255
 
246
256
  // Create a timeout promise
247
- private createTimeout(ms), reject) => {
257
+ private createTimeout(ms: number): Promise<never> {
258
+ return new Promise((_, reject) => {
248
259
  setTimeout(() => reject(new Error(`Loading timeout after ${ms}ms`)), ms);
249
260
  });
250
261
  }
251
262
 
252
263
  // Update load time statistics
253
- private updateLoadTimeStats(loadTime)= loadTime;
264
+ private updateLoadTimeStats(loadTime: number): void {
265
+ this.stats.totalLoadTime += loadTime;
254
266
  this.stats.averageLoadTime = this.stats.totalLoadTime / this.stats.totalRequests;
255
267
  }
256
268
 
257
269
  // Get loading state for a module
258
- isLoading(modulePath));
270
+ isLoading(modulePath: string): boolean {
271
+ return this.loadingStates.has(modulePath);
259
272
  }
260
273
 
261
274
  // Get error state for a module
262
- getError(modulePath)) || null;
275
+ getError(modulePath: string): Error | null {
276
+ return this.errorStates.get(modulePath) || null;
263
277
  }
264
278
 
265
279
  // Clear cache for a specific module
266
- clearCache(modulePath));
280
+ clearCache(modulePath: string): void {
281
+ this.cache.delete(modulePath);
267
282
  this.errorStates.delete(modulePath);
268
283
  this.retryCounts.delete(modulePath);
269
284
  }
270
285
 
271
286
  // Clear all cache
272
- clearAllCache());
287
+ clearAllCache(): void {
288
+ this.cache.clear();
273
289
  this.errorStates.clear();
274
290
  this.retryCounts.clear();
275
291
  }
276
292
 
277
293
  // Get cache statistics
278
- getCacheStats();
279
- maxSize;
280
- hitRate;
294
+ getCacheStats(): {
295
+ size: number;
296
+ maxSize: number;
297
+ hitRate: number;
281
298
  } {
282
299
  const hitRate = this.stats.totalRequests > 0
283
300
  ? (this.stats.cacheHits / this.stats.totalRequests) * 100
284
- ;
301
+ : 0;
285
302
 
286
303
  return {
287
- size,
288
- maxSize,
304
+ size: this.cache.size,
305
+ maxSize: this.config.cacheSize,
289
306
  hitRate
290
307
  };
291
308
  }
292
309
 
293
310
  // Get performance statistics
294
- getStats()};
311
+ getStats(): LazyLoadStats {
312
+ return { ...this.stats };
295
313
  }
296
314
 
297
315
  // Reset all statistics
298
- resetStats()= {
299
- totalRequests,
300
- successfulLoads,
301
- failedLoads,
302
- cacheHits,
303
- averageLoadTime,
304
- totalLoadTime};
316
+ resetStats(): void {
317
+ this.stats = {
318
+ totalRequests: 0,
319
+ successfulLoads: 0,
320
+ failedLoads: 0,
321
+ cacheHits: 0,
322
+ averageLoadTime: 0,
323
+ totalLoadTime: 0
324
+ };
305
325
  }
306
326
 
307
327
  // Check if preload is in progress
308
- isPreloading(modulePath));
328
+ isPreloading(modulePath: string): boolean {
329
+ return this.preloadQueue.has(modulePath);
309
330
  }
310
331
 
311
332
  // Get preload queue status
312
- getPreloadQueue()] {
333
+ getPreloadQueue(): string[] {
313
334
  return Array.from(this.preloadQueue);
314
335
  }
315
336
 
316
337
  // Update configuration
317
- updateConfig(newConfig)= { ...this.config, ...newConfig };
338
+ updateConfig(newConfig: Partial<LazyLoadConfig>): void {
339
+ this.config = { ...this.config, ...newConfig };
318
340
 
319
341
  // Adjust cache size if needed
320
342
  if (newConfig.cacheSize && newConfig.cacheSize < this.cache.size) {
@@ -328,16 +350,17 @@ export class LazyLoader {
328
350
  }
329
351
 
330
352
  // Export lazy loading analysis
331
- exportAnalysis()= this.getCacheStats();
353
+ exportAnalysis(): string {
354
+ const cacheStats = this.getCacheStats();
332
355
  const stats = this.getStats();
333
356
  const preloadQueue = this.getPreloadQueue();
334
357
 
335
358
  return JSON.stringify({
336
- config,
359
+ config: this.config,
337
360
  cacheStats,
338
- performanceStats,
361
+ performanceStats: stats,
339
362
  preloadQueue,
340
- timestamp).toISOString()
363
+ timestamp: new Date().toISOString()
341
364
  }, null, 2);
342
365
  }
343
366
  }
@@ -347,15 +370,18 @@ export const lazyLoader = new LazyLoader();
347
370
 
348
371
  // Utility function for React lazy loading
349
372
  export function createLazyComponent<T>(
350
- importFn) => Promise<{ default}>
351
- ));
373
+ importFn: () => Promise<{ default: React.ComponentType<T> }>
374
+ ): React.LazyExoticComponent<React.ComponentType<T>> {
375
+ return React.lazy(importFn);
352
376
  }
353
377
 
354
378
  // Utility function for conditional lazy loading
355
379
  export function conditionalLazyLoad<T>(
356
- condition,
357
- importFn) => Promise<T>,
358
- fallback)) {
380
+ condition: boolean,
381
+ importFn: () => Promise<T>,
382
+ fallback: T
383
+ ): Promise<T> {
384
+ if (condition) {
359
385
  return importFn();
360
386
  }
361
387
  return Promise.resolve(fallback);
@@ -363,9 +389,9 @@ export function conditionalLazyLoad<T>(
363
389
 
364
390
  // Utility function for batch lazy loading
365
391
  export function batchLazyLoad<T>(
366
- modules; importFn) => Promise<T> }>,
367
- options; maxConcurrent?} = {}
368
- )]> {
392
+ modules: Array<{ path: string; importFn: () => Promise<T> }>,
393
+ options: { parallel?: boolean; maxConcurrent?: number } = {}
394
+ ): Promise<T[]> {
369
395
  const { parallel = true, maxConcurrent = 3 } = options;
370
396
 
371
397
  if (!parallel) {
@@ -378,9 +404,9 @@ export function batchLazyLoad<T>(
378
404
  }
379
405
 
380
406
  // Parallel loading with concurrency limit
381
- const results] = [];
407
+ const results: T[] = [];
382
408
  const queue = [...modules];
383
- const active] = [];
409
+ const active: Promise<void>[] = [];
384
410
 
385
411
  return new Promise((resolve, reject) => {
386
412
  function processQueue() {