@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
@@ -1,25 +1,46 @@
1
1
  import { useState, useCallback, useRef, useEffect } from 'react'
2
2
 
3
3
  export interface MobileSkeletonConfig {
4
- enableMobileOptimization?}
4
+ enableMobileOptimization?: boolean
5
+ enablePerformanceOptimization?: boolean
6
+ enableBatteryOptimization?: boolean
7
+ enableAccessibilitySupport?: boolean
8
+ enableTouchOptimization?: boolean
9
+ animationDuration?: number
10
+ skeletonCount?: number
11
+ mobileBreakpoint?: number
12
+ }
5
13
 
6
14
  export interface SkeletonVariant {
7
- id}
15
+ id: string
16
+ name: string
17
+ width: string | number
18
+ height: string | number
19
+ borderRadius?: string | number
20
+ animation?: 'pulse' | 'wave' | 'shimmer' | 'fade'
21
+ mobileOptimized?: boolean
22
+ touchFriendly?: boolean
23
+ }
8
24
 
9
25
  export interface DeviceLoadingState {
10
- deviceType}
26
+ deviceType: 'mobile' | 'tablet' | 'desktop'
27
+ orientation: 'portrait' | 'landscape'
28
+ screenSize: 'small' | 'medium' | 'large'
29
+ loadingStrategy: 'skeleton' | 'spinner' | 'progress' | 'skeleton-spinner'
30
+ animationIntensity: 'low' | 'medium' | 'high'
31
+ }
11
32
 
12
33
  export interface MobileSkeletonCallbacks {
13
- onSkeletonCreated?) => void
14
- onLoadingStateChanged?) => void
15
- onPerformanceOptimized?) => void
16
- onBatteryOptimized?) => void
17
- onAccessibilityEnhanced?) => void
34
+ onSkeletonCreated?: (variant: SkeletonVariant) => void
35
+ onLoadingStateChanged?: (state: DeviceLoadingState) => void
36
+ onPerformanceOptimized?: (optimization: string) => void
37
+ onBatteryOptimized?: (strategy: string) => void
38
+ onAccessibilityEnhanced?: (feature: string) => void
18
39
  }
19
40
 
20
41
  export const useMobileSkeleton = (
21
- config= {},
22
- callbacks= {}
42
+ config: MobileSkeletonConfig = {},
43
+ callbacks: MobileSkeletonCallbacks = {}
23
44
  ) => {
24
45
  const {
25
46
  enablePerformanceOptimization = true,
@@ -30,20 +51,22 @@ export const useMobileSkeleton = (
30
51
  } = config
31
52
 
32
53
  const [deviceState, setDeviceState] = useState<DeviceLoadingState>({
33
- deviceType,
34
- orientation,
35
- screenSize,
36
- loadingStrategy,
37
- animationIntensity})
54
+ deviceType: 'desktop',
55
+ orientation: 'landscape',
56
+ screenSize: 'large',
57
+ loadingStrategy: 'skeleton',
58
+ animationIntensity: 'medium'
59
+ })
38
60
 
39
61
  const [skeletonVariants, setSkeletonVariants] = useState<SkeletonVariant[]>([])
40
62
  const [isOptimizing, setIsOptimizing] = useState(false)
41
63
  const [optimizations, setOptimizations] = useState<string[]>([])
42
64
  const [performanceMetrics, setPerformanceMetrics] = useState({
43
- renderTime,
44
- animationFrameRate,
45
- memoryUsage,
46
- batteryImpact})
65
+ renderTime: 0,
66
+ animationFrameRate: 60,
67
+ memoryUsage: 0,
68
+ batteryImpact: 'low'
69
+ })
47
70
 
48
71
 
49
72
  const animationFrameRef = useRef<number | null>(null)
@@ -57,7 +80,12 @@ export const useMobileSkeleton = (
57
80
  const isTablet = width > mobileBreakpoint && width <= 1024
58
81
  const isPortrait = height > width
59
82
 
60
- let deviceType) {
83
+ let deviceType: 'mobile' | 'tablet' | 'desktop'
84
+ let screenSize: 'small' | 'medium' | 'large'
85
+ let loadingStrategy: 'skeleton' | 'spinner' | 'progress' | 'skeleton-spinner'
86
+ let animationIntensity: 'low' | 'medium' | 'high'
87
+
88
+ if (isMobile) {
61
89
  deviceType = 'mobile'
62
90
  screenSize = 'small'
63
91
  loadingStrategy = 'skeleton'
@@ -74,9 +102,9 @@ export const useMobileSkeleton = (
74
102
  animationIntensity = 'high'
75
103
  }
76
104
 
77
- const newState= {
105
+ const newState: DeviceLoadingState = {
78
106
  deviceType,
79
- orientation,
107
+ orientation: isPortrait ? 'portrait' : 'landscape',
80
108
  screenSize,
81
109
  loadingStrategy,
82
110
  animationIntensity
@@ -90,14 +118,14 @@ export const useMobileSkeleton = (
90
118
 
91
119
  // Create skeleton variants
92
120
  const createSkeletonVariant = useCallback((
93
- variant, 'id'>
121
+ variant: Omit<SkeletonVariant, 'id'>
94
122
  ) => {
95
123
  const id = `skeleton-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`
96
- const newVariant= {
124
+ const newVariant: SkeletonVariant = {
97
125
  ...variant,
98
126
  id,
99
- mobileOptimized=== 'mobile',
100
- touchFriendly=== 'mobile'
127
+ mobileOptimized: deviceState.deviceType === 'mobile',
128
+ touchFriendly: enableTouchOptimization && deviceState.deviceType === 'mobile'
101
129
  }
102
130
 
103
131
  setSkeletonVariants(prev => [...prev, newVariant])
@@ -108,43 +136,47 @@ export const useMobileSkeleton = (
108
136
 
109
137
  // Generate default skeleton variants
110
138
  const generateDefaultSkeletons = useCallback(() => {
111
- const defaults] = [
139
+ const defaults: SkeletonVariant[] = [
112
140
  {
113
- id,
114
- name,
115
- width,
116
- height,
117
- borderRadius,
118
- animation,
119
- mobileOptimized,
120
- touchFriendly},
141
+ id: 'text-line',
142
+ name: 'Text Line',
143
+ width: '100%',
144
+ height: 16,
145
+ borderRadius: 4,
146
+ animation: 'pulse',
147
+ mobileOptimized: true,
148
+ touchFriendly: true
149
+ },
121
150
  {
122
- id,
123
- name,
124
- width,
125
- height,
126
- borderRadius,
127
- animation,
128
- mobileOptimized,
129
- touchFriendly},
151
+ id: 'avatar',
152
+ name: 'Avatar',
153
+ width: 40,
154
+ height: 40,
155
+ borderRadius: '50%',
156
+ animation: 'shimmer',
157
+ mobileOptimized: true,
158
+ touchFriendly: true
159
+ },
130
160
  {
131
- id,
132
- name,
133
- width,
134
- height,
135
- borderRadius,
136
- animation,
137
- mobileOptimized,
138
- touchFriendly},
161
+ id: 'card',
162
+ name: 'Card',
163
+ width: '100%',
164
+ height: 120,
165
+ borderRadius: 8,
166
+ animation: 'wave',
167
+ mobileOptimized: true,
168
+ touchFriendly: true
169
+ },
139
170
  {
140
- id,
141
- name,
142
- width,
143
- height,
144
- borderRadius,
145
- animation,
146
- mobileOptimized,
147
- touchFriendly}
171
+ id: 'button',
172
+ name: 'Button',
173
+ width: 120,
174
+ height: 40,
175
+ borderRadius: 6,
176
+ animation: 'pulse',
177
+ mobileOptimized: true,
178
+ touchFriendly: true
179
+ }
148
180
  ]
149
181
 
150
182
  setSkeletonVariants(defaults)
@@ -262,7 +294,8 @@ export const useMobileSkeleton = (
262
294
  setPerformanceMetrics(prev => ({
263
295
  ...prev,
264
296
  renderTime,
265
- animationFrameRate}))
297
+ animationFrameRate: fps
298
+ }))
266
299
 
267
300
  frameCount = 0
268
301
  lastTime = currentTime
@@ -359,10 +392,10 @@ export const useMobileSkeleton = (
359
392
  autoOptimize,
360
393
 
361
394
  // Utility functions
362
- isMobileOptimized) => deviceState.deviceType === 'mobile',
363
- getLoadingStrategy) => deviceState.loadingStrategy,
364
- getAnimationIntensity) => deviceState.animationIntensity,
365
- clearOptimizations) => setOptimizations([])
395
+ isMobileOptimized: () => deviceState.deviceType === 'mobile',
396
+ getLoadingStrategy: () => deviceState.loadingStrategy,
397
+ getAnimationIntensity: () => deviceState.animationIntensity,
398
+ clearOptimizations: () => setOptimizations([])
366
399
  }
367
400
  }
368
401
 
@@ -1,25 +1,46 @@
1
1
  import { useState, useCallback, useRef, useEffect } from 'react'
2
2
 
3
3
  export interface MobileSkeletonConfig {
4
- enableMobileOptimization?}
4
+ enableMobileOptimization?: boolean
5
+ enablePerformanceOptimization?: boolean
6
+ enableBatteryOptimization?: boolean
7
+ enableAccessibilitySupport?: boolean
8
+ enableTouchOptimization?: boolean
9
+ animationDuration?: number
10
+ skeletonCount?: number
11
+ mobileBreakpoint?: number
12
+ }
5
13
 
6
14
  export interface SkeletonVariant {
7
- id}
15
+ id: string
16
+ name: string
17
+ width: string | number
18
+ height: string | number
19
+ borderRadius?: string | number
20
+ animation?: 'pulse' | 'wave' | 'shimmer' | 'fade'
21
+ mobileOptimized?: boolean
22
+ touchFriendly?: boolean
23
+ }
8
24
 
9
25
  export interface DeviceLoadingState {
10
- deviceType}
26
+ deviceType: 'mobile' | 'tablet' | 'desktop'
27
+ orientation: 'portrait' | 'landscape'
28
+ screenSize: 'small' | 'medium' | 'large'
29
+ loadingStrategy: 'skeleton' | 'spinner' | 'progress' | 'skeleton-spinner'
30
+ animationIntensity: 'low' | 'medium' | 'high'
31
+ }
11
32
 
12
33
  export interface MobileSkeletonCallbacks {
13
- onSkeletonCreated?) => void
14
- onLoadingStateChanged?) => void
15
- onPerformanceOptimized?) => void
16
- onBatteryOptimized?) => void
17
- onAccessibilityEnhanced?) => void
34
+ onSkeletonCreated?: (variant: SkeletonVariant) => void
35
+ onLoadingStateChanged?: (state: DeviceLoadingState) => void
36
+ onPerformanceOptimized?: (optimization: string) => void
37
+ onBatteryOptimized?: (strategy: string) => void
38
+ onAccessibilityEnhanced?: (feature: string) => void
18
39
  }
19
40
 
20
41
  export const useMobileSkeleton = (
21
- config= {},
22
- callbacks= {}
42
+ config: MobileSkeletonConfig = {},
43
+ callbacks: MobileSkeletonCallbacks = {}
23
44
  ) => {
24
45
  const {
25
46
  enablePerformanceOptimization = true,
@@ -30,20 +51,22 @@ export const useMobileSkeleton = (
30
51
  } = config
31
52
 
32
53
  const [deviceState, setDeviceState] = useState<DeviceLoadingState>({
33
- deviceType,
34
- orientation,
35
- screenSize,
36
- loadingStrategy,
37
- animationIntensity})
54
+ deviceType: 'desktop',
55
+ orientation: 'landscape',
56
+ screenSize: 'large',
57
+ loadingStrategy: 'skeleton',
58
+ animationIntensity: 'medium'
59
+ })
38
60
 
39
61
  const [skeletonVariants, setSkeletonVariants] = useState<SkeletonVariant[]>([])
40
62
  const [isOptimizing, setIsOptimizing] = useState(false)
41
63
  const [optimizations, setOptimizations] = useState<string[]>([])
42
64
  const [performanceMetrics, setPerformanceMetrics] = useState({
43
- renderTime,
44
- animationFrameRate,
45
- memoryUsage,
46
- batteryImpact})
65
+ renderTime: 0,
66
+ animationFrameRate: 60,
67
+ memoryUsage: 0,
68
+ batteryImpact: 'low'
69
+ })
47
70
 
48
71
 
49
72
  const animationFrameRef = useRef<number | null>(null)
@@ -57,7 +80,12 @@ export const useMobileSkeleton = (
57
80
  const isTablet = width > mobileBreakpoint && width <= 1024
58
81
  const isPortrait = height > width
59
82
 
60
- let deviceType) {
83
+ let deviceType: 'mobile' | 'tablet' | 'desktop'
84
+ let screenSize: 'small' | 'medium' | 'large'
85
+ let loadingStrategy: 'skeleton' | 'spinner' | 'progress' | 'skeleton-spinner'
86
+ let animationIntensity: 'low' | 'medium' | 'high'
87
+
88
+ if (isMobile) {
61
89
  deviceType = 'mobile'
62
90
  screenSize = 'small'
63
91
  loadingStrategy = 'skeleton'
@@ -74,9 +102,9 @@ export const useMobileSkeleton = (
74
102
  animationIntensity = 'high'
75
103
  }
76
104
 
77
- const newState= {
105
+ const newState: DeviceLoadingState = {
78
106
  deviceType,
79
- orientation,
107
+ orientation: isPortrait ? 'portrait' : 'landscape',
80
108
  screenSize,
81
109
  loadingStrategy,
82
110
  animationIntensity
@@ -90,14 +118,14 @@ export const useMobileSkeleton = (
90
118
 
91
119
  // Create skeleton variants
92
120
  const createSkeletonVariant = useCallback((
93
- variant, 'id'>
121
+ variant: Omit<SkeletonVariant, 'id'>
94
122
  ) => {
95
123
  const id = `skeleton-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`
96
- const newVariant= {
124
+ const newVariant: SkeletonVariant = {
97
125
  ...variant,
98
126
  id,
99
- mobileOptimized=== 'mobile',
100
- touchFriendly=== 'mobile'
127
+ mobileOptimized: deviceState.deviceType === 'mobile',
128
+ touchFriendly: enableTouchOptimization && deviceState.deviceType === 'mobile'
101
129
  }
102
130
 
103
131
  setSkeletonVariants(prev => [...prev, newVariant])
@@ -108,43 +136,47 @@ export const useMobileSkeleton = (
108
136
 
109
137
  // Generate default skeleton variants
110
138
  const generateDefaultSkeletons = useCallback(() => {
111
- const defaults] = [
139
+ const defaults: SkeletonVariant[] = [
112
140
  {
113
- id,
114
- name,
115
- width,
116
- height,
117
- borderRadius,
118
- animation,
119
- mobileOptimized,
120
- touchFriendly},
141
+ id: 'text-line',
142
+ name: 'Text Line',
143
+ width: '100%',
144
+ height: 16,
145
+ borderRadius: 4,
146
+ animation: 'pulse',
147
+ mobileOptimized: true,
148
+ touchFriendly: true
149
+ },
121
150
  {
122
- id,
123
- name,
124
- width,
125
- height,
126
- borderRadius,
127
- animation,
128
- mobileOptimized,
129
- touchFriendly},
151
+ id: 'avatar',
152
+ name: 'Avatar',
153
+ width: 40,
154
+ height: 40,
155
+ borderRadius: '50%',
156
+ animation: 'shimmer',
157
+ mobileOptimized: true,
158
+ touchFriendly: true
159
+ },
130
160
  {
131
- id,
132
- name,
133
- width,
134
- height,
135
- borderRadius,
136
- animation,
137
- mobileOptimized,
138
- touchFriendly},
161
+ id: 'card',
162
+ name: 'Card',
163
+ width: '100%',
164
+ height: 120,
165
+ borderRadius: 8,
166
+ animation: 'wave',
167
+ mobileOptimized: true,
168
+ touchFriendly: true
169
+ },
139
170
  {
140
- id,
141
- name,
142
- width,
143
- height,
144
- borderRadius,
145
- animation,
146
- mobileOptimized,
147
- touchFriendly}
171
+ id: 'button',
172
+ name: 'Button',
173
+ width: 120,
174
+ height: 40,
175
+ borderRadius: 6,
176
+ animation: 'pulse',
177
+ mobileOptimized: true,
178
+ touchFriendly: true
179
+ }
148
180
  ]
149
181
 
150
182
  setSkeletonVariants(defaults)
@@ -262,7 +294,8 @@ export const useMobileSkeleton = (
262
294
  setPerformanceMetrics(prev => ({
263
295
  ...prev,
264
296
  renderTime,
265
- animationFrameRate}))
297
+ animationFrameRate: fps
298
+ }))
266
299
 
267
300
  frameCount = 0
268
301
  lastTime = currentTime
@@ -359,10 +392,10 @@ export const useMobileSkeleton = (
359
392
  autoOptimize,
360
393
 
361
394
  // Utility functions
362
- isMobileOptimized) => deviceState.deviceType === 'mobile',
363
- getLoadingStrategy) => deviceState.loadingStrategy,
364
- getAnimationIntensity) => deviceState.animationIntensity,
365
- clearOptimizations) => setOptimizations([])
395
+ isMobileOptimized: () => deviceState.deviceType === 'mobile',
396
+ getLoadingStrategy: () => deviceState.loadingStrategy,
397
+ getAnimationIntensity: () => deviceState.animationIntensity,
398
+ clearOptimizations: () => setOptimizations([])
366
399
  }
367
400
  }
368
401