@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,33 +1,44 @@
1
1
  import { useState, useCallback, useRef, useEffect, ReactNode, ComponentType } from 'react'
2
2
 
3
3
  export interface AdvancedPatternsConfig {
4
- enableCompoundComponents?}
4
+ enableCompoundComponents?: boolean
5
+ enableRenderProps?: boolean
6
+ enableHigherOrderComponents?: boolean
7
+ enableCustomHooks?: boolean
8
+ enablePerformanceOptimization?: boolean
9
+ enableAccessibilitySupport?: boolean
10
+ }
5
11
 
6
12
  export interface CompoundComponentContext {
7
- registerComponent, component) => void
8
- unregisterComponent) => void
9
- getComponent) => ReactNode | undefined
10
- getAllComponents) => ReactNode[]
13
+ registerComponent: (id: string, component: ReactNode) => void
14
+ unregisterComponent: (id: string) => void
15
+ getComponent: (id: string) => ReactNode | undefined
16
+ getAllComponents: () => ReactNode[]
11
17
  }
12
18
 
13
19
  export interface RenderPropsConfig<T = any> {
14
- data) => ReactNode
15
- fallback?}
20
+ data: T
21
+ loading: boolean
22
+ error: Error | null
23
+ render: (props: T) => ReactNode
24
+ fallback?: ReactNode
25
+ }
16
26
 
17
27
  export interface HigherOrderComponentConfig {
18
- component, any>
19
- enhancers) => ComponentType<any>>
28
+ component: ComponentType<any>
29
+ props: Record<string, any>
30
+ enhancers: Array<(Component: ComponentType<any>) => ComponentType<any>>
20
31
  }
21
32
 
22
33
  export interface AdvancedPatternsCallbacks {
23
- onPatternApplied?, component) => void
24
- onPerformanceOptimized?) => void
25
- onAccessibilityEnhanced?) => void
34
+ onPatternApplied?: (pattern: string, component: string) => void
35
+ onPerformanceOptimized?: (optimization: string) => void
36
+ onAccessibilityEnhanced?: (feature: string) => void
26
37
  }
27
38
 
28
39
  export const useAdvancedPatterns = (
29
- config= {},
30
- callbacks= {}
40
+ config: AdvancedPatternsConfig = {},
41
+ callbacks: AdvancedPatternsCallbacks = {}
31
42
  ) => {
32
43
  const {
33
44
  enableCompoundComponents = true,
@@ -45,8 +56,8 @@ export const useAdvancedPatterns = (
45
56
 
46
57
  // Compound Components Pattern
47
58
  const createCompoundComponent = useCallback((
48
- baseComponent,
49
- subComponents, ComponentType<any>>
59
+ baseComponent: ComponentType<any>,
60
+ subComponents: Record<string, ComponentType<any>>
50
61
  ) => {
51
62
  if (!enableCompoundComponents) return baseComponent
52
63
 
@@ -60,31 +71,33 @@ export const useAdvancedPatterns = (
60
71
 
61
72
  // Render Props Pattern
62
73
  const createRenderPropsComponent = useCallback(<T,>(
63
- config) => {
74
+ config: RenderPropsConfig<T>
75
+ ) => {
64
76
  if (!enableRenderProps) return null
65
77
 
66
78
  const { data, loading, error, render, fallback } = config
67
79
 
68
80
  if (loading) {
69
- return { type, fallback }
81
+ return { type: 'loading', fallback }
70
82
  }
71
83
 
72
84
  if (error) {
73
- return { type, message}
85
+ return { type: 'error', message: error.message }
74
86
  }
75
87
 
76
88
  setPatterns(prev => [...prev, 'Render Props'])
77
89
  callbacks.onPatternApplied?.('Render Props', 'RenderPropsComponent')
78
90
 
79
- return { type, data, render }
91
+ return { type: 'success', data, render }
80
92
  }, [enableRenderProps, callbacks])
81
93
 
82
94
  // Higher-Order Component Pattern
83
95
  const createHigherOrderComponent = useCallback((
84
- config) => {
96
+ config: HigherOrderComponentConfig
97
+ ) => {
85
98
  if (!enableHigherOrderComponents) return config.component
86
99
 
87
- const { component, props, enhancers } = config
100
+ const { component: Component, props, enhancers } = config
88
101
 
89
102
  let EnhancedComponent = Component
90
103
 
@@ -95,13 +108,13 @@ export const useAdvancedPatterns = (
95
108
  setPatterns(prev => [...prev, 'Higher-Order Components'])
96
109
  callbacks.onPatternApplied?.('Higher-Order Components', Component.displayName || 'Unknown')
97
110
 
98
- return { component, props, enhanced}
111
+ return { component: EnhancedComponent, props, enhanced: true }
99
112
  }, [enableHigherOrderComponents, callbacks])
100
113
 
101
114
  // Custom Hooks Pattern
102
115
  const createCustomHook = useCallback(<T>(
103
- hookName,
104
- hookLogic) => T
116
+ hookName: string,
117
+ hookLogic: () => T
105
118
  ) => {
106
119
  if (!enableCustomHooks) return hookLogic()
107
120
 
@@ -113,8 +126,9 @@ export const useAdvancedPatterns = (
113
126
 
114
127
  // Performance Optimization
115
128
  const optimizeComponent = useCallback((
116
- componentId,
117
- optimizationType) => {
129
+ componentId: string,
130
+ optimizationType: 'memoization' | 'lazy-loading' | 'virtualization'
131
+ ) => {
118
132
  if (!enablePerformanceOptimization) return
119
133
 
120
134
  setIsOptimizing(true)
@@ -129,8 +143,9 @@ export const useAdvancedPatterns = (
129
143
 
130
144
  // Accessibility Enhancement
131
145
  const enhanceAccessibility = useCallback((
132
- componentId,
133
- feature) => {
146
+ componentId: string,
147
+ feature: 'aria' | 'keyboard' | 'screen-reader' | 'focus'
148
+ ) => {
134
149
  if (!enableAccessibilitySupport) return
135
150
 
136
151
  const enhancement = `${feature} accessibility enhanced for ${componentId}`
@@ -139,15 +154,15 @@ export const useAdvancedPatterns = (
139
154
  }, [enableAccessibilitySupport, callbacks])
140
155
 
141
156
  // Component Registry
142
- const registerComponent = useCallback((id, component) => {
157
+ const registerComponent = useCallback((id: string, component: ReactNode) => {
143
158
  componentsRef.current.set(id, component)
144
159
  }, [])
145
160
 
146
- const unregisterComponent = useCallback((id) => {
161
+ const unregisterComponent = useCallback((id: string) => {
147
162
  componentsRef.current.delete(id)
148
163
  }, [])
149
164
 
150
- const getComponent = useCallback((id) => {
165
+ const getComponent = useCallback((id: string) => {
151
166
  return componentsRef.current.get(id)
152
167
  }, [])
153
168
 
@@ -156,7 +171,7 @@ export const useAdvancedPatterns = (
156
171
  }, [])
157
172
 
158
173
  // Performance Monitoring
159
- const measurePerformance = useCallback((componentId, operation) => {
174
+ const measurePerformance = useCallback((componentId: string, operation: string) => {
160
175
  const startTime = performance.now()
161
176
 
162
177
  return () => {
@@ -174,10 +189,10 @@ export const useAdvancedPatterns = (
174
189
  }, {} as Record<string, number>)
175
190
 
176
191
  return {
177
- totalPatterns,
192
+ totalPatterns: patterns.length,
178
193
  patternCounts,
179
- uniquePatterns).length,
180
- performanceMetrics)
194
+ uniquePatterns: Object.keys(patternCounts).length,
195
+ performanceMetrics: Object.fromEntries(performanceMetricsRef.current)
181
196
  }
182
197
  }, [patterns])
183
198
 
@@ -211,9 +226,9 @@ export const useAdvancedPatterns = (
211
226
  // Pattern Validation
212
227
  const validatePatterns = useCallback(() => {
213
228
  const validation = {
214
- isValid,
215
- errors] as string[],
216
- warnings] as string[]
229
+ isValid: true,
230
+ errors: [] as string[],
231
+ warnings: [] as string[]
217
232
  }
218
233
 
219
234
  // Check for pattern conflicts
@@ -270,9 +285,9 @@ export const useAdvancedPatterns = (
270
285
  validatePatterns,
271
286
 
272
287
  // Utility functions
273
- hasPattern) => patterns.includes(pattern),
274
- getPatternCount) => patterns.filter(p => p === pattern).length,
275
- clearPatterns) => setPatterns([])
288
+ hasPattern: (pattern: string) => patterns.includes(pattern),
289
+ getPatternCount: (pattern: string) => patterns.filter(p => p === pattern).length,
290
+ clearPatterns: () => setPatterns([])
276
291
  }
277
292
  }
278
293
 
@@ -1,33 +1,44 @@
1
1
  import { useState, useCallback, useRef, useEffect, ReactNode, ComponentType } from 'react'
2
2
 
3
3
  export interface AdvancedPatternsConfig {
4
- enableCompoundComponents?}
4
+ enableCompoundComponents?: boolean
5
+ enableRenderProps?: boolean
6
+ enableHigherOrderComponents?: boolean
7
+ enableCustomHooks?: boolean
8
+ enablePerformanceOptimization?: boolean
9
+ enableAccessibilitySupport?: boolean
10
+ }
5
11
 
6
12
  export interface CompoundComponentContext {
7
- registerComponent, component) => void
8
- unregisterComponent) => void
9
- getComponent) => ReactNode | undefined
10
- getAllComponents) => ReactNode[]
13
+ registerComponent: (id: string, component: ReactNode) => void
14
+ unregisterComponent: (id: string) => void
15
+ getComponent: (id: string) => ReactNode | undefined
16
+ getAllComponents: () => ReactNode[]
11
17
  }
12
18
 
13
19
  export interface RenderPropsConfig<T = any> {
14
- data) => ReactNode
15
- fallback?}
20
+ data: T
21
+ loading: boolean
22
+ error: Error | null
23
+ render: (props: T) => ReactNode
24
+ fallback?: ReactNode
25
+ }
16
26
 
17
27
  export interface HigherOrderComponentConfig {
18
- component, any>
19
- enhancers) => ComponentType<any>>
28
+ component: ComponentType<any>
29
+ props: Record<string, any>
30
+ enhancers: Array<(Component: ComponentType<any>) => ComponentType<any>>
20
31
  }
21
32
 
22
33
  export interface AdvancedPatternsCallbacks {
23
- onPatternApplied?, component) => void
24
- onPerformanceOptimized?) => void
25
- onAccessibilityEnhanced?) => void
34
+ onPatternApplied?: (pattern: string, component: string) => void
35
+ onPerformanceOptimized?: (optimization: string) => void
36
+ onAccessibilityEnhanced?: (feature: string) => void
26
37
  }
27
38
 
28
39
  export const useAdvancedPatterns = (
29
- config= {},
30
- callbacks= {}
40
+ config: AdvancedPatternsConfig = {},
41
+ callbacks: AdvancedPatternsCallbacks = {}
31
42
  ) => {
32
43
  const {
33
44
  enableCompoundComponents = true,
@@ -45,8 +56,8 @@ export const useAdvancedPatterns = (
45
56
 
46
57
  // Compound Components Pattern
47
58
  const createCompoundComponent = useCallback((
48
- baseComponent,
49
- subComponents, ComponentType<any>>
59
+ baseComponent: ComponentType<any>,
60
+ subComponents: Record<string, ComponentType<any>>
50
61
  ) => {
51
62
  if (!enableCompoundComponents) return baseComponent
52
63
 
@@ -60,31 +71,33 @@ export const useAdvancedPatterns = (
60
71
 
61
72
  // Render Props Pattern
62
73
  const createRenderPropsComponent = useCallback(<T,>(
63
- config) => {
74
+ config: RenderPropsConfig<T>
75
+ ) => {
64
76
  if (!enableRenderProps) return null
65
77
 
66
78
  const { data, loading, error, render, fallback } = config
67
79
 
68
80
  if (loading) {
69
- return { type, fallback }
81
+ return { type: 'loading', fallback }
70
82
  }
71
83
 
72
84
  if (error) {
73
- return { type, message}
85
+ return { type: 'error', message: error.message }
74
86
  }
75
87
 
76
88
  setPatterns(prev => [...prev, 'Render Props'])
77
89
  callbacks.onPatternApplied?.('Render Props', 'RenderPropsComponent')
78
90
 
79
- return { type, data, render }
91
+ return { type: 'success', data, render }
80
92
  }, [enableRenderProps, callbacks])
81
93
 
82
94
  // Higher-Order Component Pattern
83
95
  const createHigherOrderComponent = useCallback((
84
- config) => {
96
+ config: HigherOrderComponentConfig
97
+ ) => {
85
98
  if (!enableHigherOrderComponents) return config.component
86
99
 
87
- const { component, props, enhancers } = config
100
+ const { component: Component, props, enhancers } = config
88
101
 
89
102
  let EnhancedComponent = Component
90
103
 
@@ -95,13 +108,13 @@ export const useAdvancedPatterns = (
95
108
  setPatterns(prev => [...prev, 'Higher-Order Components'])
96
109
  callbacks.onPatternApplied?.('Higher-Order Components', Component.displayName || 'Unknown')
97
110
 
98
- return { component, props, enhanced}
111
+ return { component: EnhancedComponent, props, enhanced: true }
99
112
  }, [enableHigherOrderComponents, callbacks])
100
113
 
101
114
  // Custom Hooks Pattern
102
115
  const createCustomHook = useCallback(<T>(
103
- hookName,
104
- hookLogic) => T
116
+ hookName: string,
117
+ hookLogic: () => T
105
118
  ) => {
106
119
  if (!enableCustomHooks) return hookLogic()
107
120
 
@@ -113,8 +126,9 @@ export const useAdvancedPatterns = (
113
126
 
114
127
  // Performance Optimization
115
128
  const optimizeComponent = useCallback((
116
- componentId,
117
- optimizationType) => {
129
+ componentId: string,
130
+ optimizationType: 'memoization' | 'lazy-loading' | 'virtualization'
131
+ ) => {
118
132
  if (!enablePerformanceOptimization) return
119
133
 
120
134
  setIsOptimizing(true)
@@ -129,8 +143,9 @@ export const useAdvancedPatterns = (
129
143
 
130
144
  // Accessibility Enhancement
131
145
  const enhanceAccessibility = useCallback((
132
- componentId,
133
- feature) => {
146
+ componentId: string,
147
+ feature: 'aria' | 'keyboard' | 'screen-reader' | 'focus'
148
+ ) => {
134
149
  if (!enableAccessibilitySupport) return
135
150
 
136
151
  const enhancement = `${feature} accessibility enhanced for ${componentId}`
@@ -139,15 +154,15 @@ export const useAdvancedPatterns = (
139
154
  }, [enableAccessibilitySupport, callbacks])
140
155
 
141
156
  // Component Registry
142
- const registerComponent = useCallback((id, component) => {
157
+ const registerComponent = useCallback((id: string, component: ReactNode) => {
143
158
  componentsRef.current.set(id, component)
144
159
  }, [])
145
160
 
146
- const unregisterComponent = useCallback((id) => {
161
+ const unregisterComponent = useCallback((id: string) => {
147
162
  componentsRef.current.delete(id)
148
163
  }, [])
149
164
 
150
- const getComponent = useCallback((id) => {
165
+ const getComponent = useCallback((id: string) => {
151
166
  return componentsRef.current.get(id)
152
167
  }, [])
153
168
 
@@ -156,7 +171,7 @@ export const useAdvancedPatterns = (
156
171
  }, [])
157
172
 
158
173
  // Performance Monitoring
159
- const measurePerformance = useCallback((componentId, operation) => {
174
+ const measurePerformance = useCallback((componentId: string, operation: string) => {
160
175
  const startTime = performance.now()
161
176
 
162
177
  return () => {
@@ -174,10 +189,10 @@ export const useAdvancedPatterns = (
174
189
  }, {} as Record<string, number>)
175
190
 
176
191
  return {
177
- totalPatterns,
192
+ totalPatterns: patterns.length,
178
193
  patternCounts,
179
- uniquePatterns).length,
180
- performanceMetrics)
194
+ uniquePatterns: Object.keys(patternCounts).length,
195
+ performanceMetrics: Object.fromEntries(performanceMetricsRef.current)
181
196
  }
182
197
  }, [patterns])
183
198
 
@@ -211,9 +226,9 @@ export const useAdvancedPatterns = (
211
226
  // Pattern Validation
212
227
  const validatePatterns = useCallback(() => {
213
228
  const validation = {
214
- isValid,
215
- errors] as string[],
216
- warnings] as string[]
229
+ isValid: true,
230
+ errors: [] as string[],
231
+ warnings: [] as string[]
217
232
  }
218
233
 
219
234
  // Check for pattern conflicts
@@ -270,9 +285,9 @@ export const useAdvancedPatterns = (
270
285
  validatePatterns,
271
286
 
272
287
  // Utility functions
273
- hasPattern) => patterns.includes(pattern),
274
- getPatternCount) => patterns.filter(p => p === pattern).length,
275
- clearPatterns) => setPatterns([])
288
+ hasPattern: (pattern: string) => patterns.includes(pattern),
289
+ getPatternCount: (pattern: string) => patterns.filter(p => p === pattern).length,
290
+ clearPatterns: () => setPatterns([])
276
291
  }
277
292
  }
278
293