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

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 (649) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/dist/components/ui/accessibility-demo.d.ts +5 -257
  3. package/dist/components/ui/accessibility-demo.d.ts.map +1 -0
  4. package/dist/components/ui/accessibility-demo.esm.js +80 -258
  5. package/dist/components/ui/accessibility-demo.js +80 -258
  6. package/dist/components/ui/advanced-component-architecture-demo.d.ts +4 -718
  7. package/dist/components/ui/advanced-component-architecture-demo.d.ts.map +1 -0
  8. package/dist/components/ui/advanced-component-architecture-demo.esm.js +256 -916
  9. package/dist/components/ui/advanced-component-architecture-demo.js +256 -916
  10. package/dist/components/ui/advanced-transition-system-demo.d.ts +3 -660
  11. package/dist/components/ui/advanced-transition-system-demo.d.ts.map +1 -0
  12. package/dist/components/ui/advanced-transition-system-demo.esm.js +59 -670
  13. package/dist/components/ui/advanced-transition-system-demo.js +59 -670
  14. package/dist/components/ui/advanced-transition-system.d.ts +35 -381
  15. package/dist/components/ui/advanced-transition-system.d.ts.map +1 -0
  16. package/dist/components/ui/advanced-transition-system.esm.js +194 -378
  17. package/dist/components/ui/advanced-transition-system.js +194 -378
  18. package/dist/components/ui/animation/animated-container.d.ts +11 -160
  19. package/dist/components/ui/animation/animated-container.d.ts.map +1 -0
  20. package/dist/components/ui/animation/animated-container.esm.js +98 -159
  21. package/dist/components/ui/animation/animated-container.js +98 -159
  22. package/dist/components/ui/animation/index.d.ts +7 -9
  23. package/dist/components/ui/animation/index.d.ts.map +1 -0
  24. package/dist/components/ui/animation/index.esm.js +3 -18
  25. package/dist/components/ui/animation/index.js +3 -18
  26. package/dist/components/ui/animation/staggered-container.d.ts +8 -62
  27. package/dist/components/ui/animation/staggered-container.d.ts.map +1 -0
  28. package/dist/components/ui/animation/staggered-container.esm.js +37 -68
  29. package/dist/components/ui/animation/staggered-container.js +37 -68
  30. package/dist/components/ui/animation-demo.d.ts +3 -238
  31. package/dist/components/ui/animation-demo.d.ts.map +1 -0
  32. package/dist/components/ui/animation-demo.esm.js +30 -250
  33. package/dist/components/ui/animation-demo.js +30 -250
  34. package/dist/components/ui/badge.d.ts +9 -27
  35. package/dist/components/ui/badge.d.ts.map +1 -0
  36. package/dist/components/ui/badge.esm.js +15 -28
  37. package/dist/components/ui/badge.js +15 -28
  38. package/dist/components/ui/battery-conscious-animation-demo.d.ts +4 -561
  39. package/dist/components/ui/battery-conscious-animation-demo.d.ts.map +1 -0
  40. package/dist/components/ui/battery-conscious-animation-demo.esm.js +136 -565
  41. package/dist/components/ui/battery-conscious-animation-demo.js +136 -565
  42. package/dist/components/ui/border-radius-shadow-demo.d.ts +3 -183
  43. package/dist/components/ui/border-radius-shadow-demo.d.ts.map +1 -0
  44. package/dist/components/ui/border-radius-shadow-demo.esm.js +3 -184
  45. package/dist/components/ui/border-radius-shadow-demo.js +3 -184
  46. package/dist/components/ui/button.d.ts +8 -32
  47. package/dist/components/ui/button.d.ts.map +1 -0
  48. package/dist/components/ui/button.esm.js +14 -33
  49. package/dist/components/ui/button.js +14 -33
  50. package/dist/components/ui/card.d.ts +25 -193
  51. package/dist/components/ui/card.d.ts.map +1 -0
  52. package/dist/components/ui/card.esm.js +74 -188
  53. package/dist/components/ui/card.js +74 -188
  54. package/dist/components/ui/checkbox.d.ts +6 -24
  55. package/dist/components/ui/checkbox.d.ts.map +1 -0
  56. package/dist/components/ui/checkbox.esm.js +11 -30
  57. package/dist/components/ui/checkbox.js +11 -30
  58. package/dist/components/ui/color-preview.d.ts +12 -398
  59. package/dist/components/ui/color-preview.d.ts.map +1 -0
  60. package/dist/components/ui/color-preview.esm.js +50 -405
  61. package/dist/components/ui/color-preview.js +50 -405
  62. package/dist/components/ui/data-display/chart.d.ts +4 -645
  63. package/dist/components/ui/data-display/chart.d.ts.map +1 -0
  64. package/dist/components/ui/data-display/chart.esm.js +210 -632
  65. package/dist/components/ui/data-display/chart.js +210 -632
  66. package/dist/components/ui/data-display/data-grid-simple.d.ts +5 -73
  67. package/dist/components/ui/data-display/data-grid-simple.d.ts.map +1 -0
  68. package/dist/components/ui/data-display/data-grid-simple.esm.js +16 -74
  69. package/dist/components/ui/data-display/data-grid-simple.js +16 -74
  70. package/dist/components/ui/data-display/data-grid.d.ts +4 -669
  71. package/dist/components/ui/data-display/data-grid.d.ts.map +1 -0
  72. package/dist/components/ui/data-display/data-grid.esm.js +173 -661
  73. package/dist/components/ui/data-display/data-grid.js +173 -661
  74. package/dist/components/ui/data-display/list.d.ts +4 -447
  75. package/dist/components/ui/data-display/list.d.ts.map +1 -0
  76. package/dist/components/ui/data-display/list.esm.js +88 -446
  77. package/dist/components/ui/data-display/list.js +88 -446
  78. package/dist/components/ui/data-display/table.d.ts +4 -471
  79. package/dist/components/ui/data-display/table.d.ts.map +1 -0
  80. package/dist/components/ui/data-display/table.esm.js +109 -468
  81. package/dist/components/ui/data-display/table.js +109 -468
  82. package/dist/components/ui/data-display/timeline.d.ts +4 -432
  83. package/dist/components/ui/data-display/timeline.d.ts.map +1 -0
  84. package/dist/components/ui/data-display/timeline.esm.js +92 -431
  85. package/dist/components/ui/data-display/timeline.js +92 -431
  86. package/dist/components/ui/data-display/tree.d.ts +4 -593
  87. package/dist/components/ui/data-display/tree.d.ts.map +1 -0
  88. package/dist/components/ui/data-display/tree.esm.js +211 -585
  89. package/dist/components/ui/data-display/tree.js +211 -585
  90. package/dist/components/ui/data-display/types.d.ts +418 -471
  91. package/dist/components/ui/data-display/types.d.ts.map +1 -0
  92. package/dist/components/ui/data-display/types.esm.js +1 -530
  93. package/dist/components/ui/data-display/types.js +1 -530
  94. package/dist/components/ui/enterprise-mobile-experience-demo.d.ts +3 -735
  95. package/dist/components/ui/enterprise-mobile-experience-demo.d.ts.map +1 -0
  96. package/dist/components/ui/enterprise-mobile-experience-demo.esm.js +76 -749
  97. package/dist/components/ui/enterprise-mobile-experience-demo.js +76 -749
  98. package/dist/components/ui/enterprise-mobile-experience.d.ts +52 -441
  99. package/dist/components/ui/enterprise-mobile-experience.d.ts.map +1 -0
  100. package/dist/components/ui/enterprise-mobile-experience.esm.js +152 -460
  101. package/dist/components/ui/enterprise-mobile-experience.js +152 -460
  102. package/dist/components/ui/feedback/alert.d.ts +4 -153
  103. package/dist/components/ui/feedback/alert.d.ts.map +1 -0
  104. package/dist/components/ui/feedback/alert.esm.js +40 -148
  105. package/dist/components/ui/feedback/alert.js +40 -148
  106. package/dist/components/ui/feedback/progress.d.ts +4 -287
  107. package/dist/components/ui/feedback/progress.d.ts.map +1 -0
  108. package/dist/components/ui/feedback/progress.esm.js +74 -278
  109. package/dist/components/ui/feedback/progress.js +74 -278
  110. package/dist/components/ui/feedback/skeleton.d.ts +7 -181
  111. package/dist/components/ui/feedback/skeleton.d.ts.map +1 -0
  112. package/dist/components/ui/feedback/skeleton.esm.js +64 -173
  113. package/dist/components/ui/feedback/skeleton.js +64 -173
  114. package/dist/components/ui/feedback/toast.d.ts +7 -276
  115. package/dist/components/ui/feedback/toast.d.ts.map +1 -0
  116. package/dist/components/ui/feedback/toast.esm.js +86 -225
  117. package/dist/components/ui/feedback/toast.js +86 -225
  118. package/dist/components/ui/feedback/types.d.ts +85 -99
  119. package/dist/components/ui/feedback/types.d.ts.map +1 -0
  120. package/dist/components/ui/feedback/types.esm.js +1 -125
  121. package/dist/components/ui/feedback/types.js +1 -125
  122. package/dist/components/ui/font-preview.d.ts +11 -278
  123. package/dist/components/ui/font-preview.d.ts.map +1 -0
  124. package/dist/components/ui/font-preview.esm.js +56 -283
  125. package/dist/components/ui/font-preview.js +56 -283
  126. package/dist/components/ui/form-demo.d.ts +4 -544
  127. package/dist/components/ui/form-demo.d.ts.map +1 -0
  128. package/dist/components/ui/form-demo.esm.js +191 -553
  129. package/dist/components/ui/form-demo.js +191 -553
  130. package/dist/components/ui/hardware-acceleration-demo.d.ts +4 -540
  131. package/dist/components/ui/hardware-acceleration-demo.d.ts.map +1 -0
  132. package/dist/components/ui/hardware-acceleration-demo.esm.js +103 -544
  133. package/dist/components/ui/hardware-acceleration-demo.js +103 -544
  134. package/dist/components/ui/input.d.ts +8 -32
  135. package/dist/components/ui/input.d.ts.map +1 -0
  136. package/dist/components/ui/input.esm.js +13 -32
  137. package/dist/components/ui/input.js +13 -32
  138. package/dist/components/ui/label.d.ts +5 -13
  139. package/dist/components/ui/label.d.ts.map +1 -0
  140. package/dist/components/ui/label.esm.js +6 -16
  141. package/dist/components/ui/label.js +6 -16
  142. package/dist/components/ui/layout-demo.d.ts +4 -352
  143. package/dist/components/ui/layout-demo.d.ts.map +1 -0
  144. package/dist/components/ui/layout-demo.esm.js +76 -367
  145. package/dist/components/ui/layout-demo.js +76 -367
  146. package/dist/components/ui/layouts/adaptive-layout.d.ts +14 -130
  147. package/dist/components/ui/layouts/adaptive-layout.d.ts.map +1 -0
  148. package/dist/components/ui/layouts/adaptive-layout.esm.js +60 -139
  149. package/dist/components/ui/layouts/adaptive-layout.js +60 -139
  150. package/dist/components/ui/layouts/desktop-layout.d.ts +13 -217
  151. package/dist/components/ui/layouts/desktop-layout.d.ts.map +1 -0
  152. package/dist/components/ui/layouts/desktop-layout.esm.js +39 -224
  153. package/dist/components/ui/layouts/desktop-layout.js +39 -224
  154. package/dist/components/ui/layouts/index.d.ts +9 -5
  155. package/dist/components/ui/layouts/index.d.ts.map +1 -0
  156. package/dist/components/ui/layouts/index.esm.js +4 -10
  157. package/dist/components/ui/layouts/index.js +4 -10
  158. package/dist/components/ui/layouts/mobile-layout.d.ts +12 -156
  159. package/dist/components/ui/layouts/mobile-layout.d.ts.map +1 -0
  160. package/dist/components/ui/layouts/mobile-layout.esm.js +49 -162
  161. package/dist/components/ui/layouts/mobile-layout.js +49 -162
  162. package/dist/components/ui/layouts/tablet-layout.d.ts +12 -190
  163. package/dist/components/ui/layouts/tablet-layout.d.ts.map +1 -0
  164. package/dist/components/ui/layouts/tablet-layout.esm.js +53 -197
  165. package/dist/components/ui/layouts/tablet-layout.js +53 -197
  166. package/dist/components/ui/mobile-form-validation.d.ts +28 -435
  167. package/dist/components/ui/mobile-form-validation.d.ts.map +1 -0
  168. package/dist/components/ui/mobile-form-validation.esm.js +185 -420
  169. package/dist/components/ui/mobile-form-validation.js +185 -420
  170. package/dist/components/ui/mobile-input-demo.d.ts +3 -197
  171. package/dist/components/ui/mobile-input-demo.d.ts.map +1 -0
  172. package/dist/components/ui/mobile-input-demo.esm.js +11 -198
  173. package/dist/components/ui/mobile-input-demo.js +11 -198
  174. package/dist/components/ui/mobile-input.d.ts +61 -268
  175. package/dist/components/ui/mobile-input.d.ts.map +1 -0
  176. package/dist/components/ui/mobile-input.esm.js +187 -270
  177. package/dist/components/ui/mobile-input.js +187 -270
  178. package/dist/components/ui/mobile-skeleton-loading-demo.d.ts +4 -628
  179. package/dist/components/ui/mobile-skeleton-loading-demo.d.ts.map +1 -0
  180. package/dist/components/ui/mobile-skeleton-loading-demo.esm.js +144 -638
  181. package/dist/components/ui/mobile-skeleton-loading-demo.js +144 -638
  182. package/dist/components/ui/navigation/breadcrumb.d.ts +8 -148
  183. package/dist/components/ui/navigation/breadcrumb.d.ts.map +1 -0
  184. package/dist/components/ui/navigation/breadcrumb.esm.js +51 -154
  185. package/dist/components/ui/navigation/breadcrumb.js +51 -154
  186. package/dist/components/ui/navigation/index.d.ts +12 -25
  187. package/dist/components/ui/navigation/index.d.ts.map +1 -0
  188. package/dist/components/ui/navigation/index.esm.js +0 -3
  189. package/dist/components/ui/navigation/index.js +0 -3
  190. package/dist/components/ui/navigation/menu.d.ts +8 -365
  191. package/dist/components/ui/navigation/menu.d.ts.map +1 -0
  192. package/dist/components/ui/navigation/menu.esm.js +178 -365
  193. package/dist/components/ui/navigation/menu.js +178 -365
  194. package/dist/components/ui/navigation/navigation-demo.d.ts +7 -168
  195. package/dist/components/ui/navigation/navigation-demo.d.ts.map +1 -0
  196. package/dist/components/ui/navigation/navigation-demo.esm.js +130 -315
  197. package/dist/components/ui/navigation/navigation-demo.js +130 -315
  198. package/dist/components/ui/navigation/pagination.d.ts +8 -260
  199. package/dist/components/ui/navigation/pagination.d.ts.map +1 -0
  200. package/dist/components/ui/navigation/pagination.esm.js +142 -264
  201. package/dist/components/ui/navigation/pagination.js +142 -264
  202. package/dist/components/ui/navigation/sidebar.d.ts +8 -374
  203. package/dist/components/ui/navigation/sidebar.d.ts.map +1 -0
  204. package/dist/components/ui/navigation/sidebar.esm.js +156 -368
  205. package/dist/components/ui/navigation/sidebar.js +156 -368
  206. package/dist/components/ui/navigation/stepper.d.ts +8 -293
  207. package/dist/components/ui/navigation/stepper.d.ts.map +1 -0
  208. package/dist/components/ui/navigation/stepper.esm.js +131 -295
  209. package/dist/components/ui/navigation/stepper.js +131 -295
  210. package/dist/components/ui/navigation/tabs.d.ts +8 -195
  211. package/dist/components/ui/navigation/tabs.d.ts.map +1 -0
  212. package/dist/components/ui/navigation/tabs.esm.js +89 -198
  213. package/dist/components/ui/navigation/tabs.js +89 -198
  214. package/dist/components/ui/navigation/types.d.ts +216 -254
  215. package/dist/components/ui/navigation/types.d.ts.map +1 -0
  216. package/dist/components/ui/navigation/types.esm.js +1 -295
  217. package/dist/components/ui/navigation/types.js +1 -295
  218. package/dist/components/ui/overlay/backdrop.d.ts +12 -76
  219. package/dist/components/ui/overlay/backdrop.d.ts.map +1 -0
  220. package/dist/components/ui/overlay/backdrop.esm.js +39 -78
  221. package/dist/components/ui/overlay/backdrop.js +39 -78
  222. package/dist/components/ui/overlay/focus-manager.d.ts +10 -138
  223. package/dist/components/ui/overlay/focus-manager.d.ts.map +1 -0
  224. package/dist/components/ui/overlay/focus-manager.esm.js +96 -140
  225. package/dist/components/ui/overlay/focus-manager.js +96 -140
  226. package/dist/components/ui/overlay/index.d.ts +10 -27
  227. package/dist/components/ui/overlay/index.d.ts.map +1 -0
  228. package/dist/components/ui/overlay/index.esm.js +0 -5
  229. package/dist/components/ui/overlay/index.js +0 -5
  230. package/dist/components/ui/overlay/modal.d.ts +7 -261
  231. package/dist/components/ui/overlay/modal.d.ts.map +1 -0
  232. package/dist/components/ui/overlay/modal.esm.js +94 -249
  233. package/dist/components/ui/overlay/modal.js +94 -249
  234. package/dist/components/ui/overlay/overlay-manager.d.ts +13 -104
  235. package/dist/components/ui/overlay/overlay-manager.d.ts.map +1 -0
  236. package/dist/components/ui/overlay/overlay-manager.esm.js +60 -100
  237. package/dist/components/ui/overlay/overlay-manager.js +60 -100
  238. package/dist/components/ui/overlay/popover.d.ts +8 -449
  239. package/dist/components/ui/overlay/popover.d.ts.map +1 -0
  240. package/dist/components/ui/overlay/popover.esm.js +258 -438
  241. package/dist/components/ui/overlay/popover.js +258 -438
  242. package/dist/components/ui/overlay/portal.d.ts +4 -74
  243. package/dist/components/ui/overlay/portal.d.ts.map +1 -0
  244. package/dist/components/ui/overlay/portal.esm.js +45 -74
  245. package/dist/components/ui/overlay/portal.js +45 -74
  246. package/dist/components/ui/overlay/tooltip.d.ts +5 -297
  247. package/dist/components/ui/overlay/tooltip.d.ts.map +1 -0
  248. package/dist/components/ui/overlay/tooltip.esm.js +202 -288
  249. package/dist/components/ui/overlay/tooltip.js +202 -288
  250. package/dist/components/ui/overlay/types.d.ts +144 -167
  251. package/dist/components/ui/overlay/types.d.ts.map +1 -0
  252. package/dist/components/ui/overlay/types.esm.js +1 -196
  253. package/dist/components/ui/overlay/types.js +1 -196
  254. package/dist/components/ui/performance-demo.d.ts +3 -583
  255. package/dist/components/ui/performance-demo.d.ts.map +1 -0
  256. package/dist/components/ui/performance-demo.esm.js +110 -596
  257. package/dist/components/ui/performance-demo.js +110 -596
  258. package/dist/components/ui/semantic-input-system-demo.d.ts +3 -490
  259. package/dist/components/ui/semantic-input-system-demo.d.ts.map +1 -0
  260. package/dist/components/ui/semantic-input-system-demo.esm.js +87 -501
  261. package/dist/components/ui/semantic-input-system-demo.js +87 -501
  262. package/dist/components/ui/theme-customizer.d.ts +19 -370
  263. package/dist/components/ui/theme-customizer.d.ts.map +1 -0
  264. package/dist/components/ui/theme-customizer.esm.js +123 -371
  265. package/dist/components/ui/theme-customizer.js +123 -371
  266. package/dist/components/ui/theme-preview.d.ts +9 -303
  267. package/dist/components/ui/theme-preview.d.ts.map +1 -0
  268. package/dist/components/ui/theme-preview.esm.js +44 -306
  269. package/dist/components/ui/theme-preview.js +44 -306
  270. package/dist/components/ui/theme-switcher.d.ts +9 -257
  271. package/dist/components/ui/theme-switcher.d.ts.map +1 -0
  272. package/dist/components/ui/theme-switcher.esm.js +79 -258
  273. package/dist/components/ui/theme-switcher.js +79 -258
  274. package/dist/components/ui/theme-toggle.d.ts +3 -34
  275. package/dist/components/ui/theme-toggle.d.ts.map +1 -0
  276. package/dist/components/ui/theme-toggle.esm.js +22 -35
  277. package/dist/components/ui/theme-toggle.js +22 -35
  278. package/dist/components/ui/token-demo.d.ts +3 -188
  279. package/dist/components/ui/token-demo.d.ts.map +1 -0
  280. package/dist/components/ui/token-demo.esm.js +42 -189
  281. package/dist/components/ui/token-demo.js +42 -189
  282. package/dist/components/ui/touch-demo.d.ts +3 -455
  283. package/dist/components/ui/touch-demo.d.ts.map +1 -0
  284. package/dist/components/ui/touch-demo.esm.js +96 -462
  285. package/dist/components/ui/touch-demo.js +96 -462
  286. package/dist/components/ui/touch-friendly-interface-demo.d.ts +3 -512
  287. package/dist/components/ui/touch-friendly-interface-demo.d.ts.map +1 -0
  288. package/dist/components/ui/touch-friendly-interface-demo.esm.js +63 -519
  289. package/dist/components/ui/touch-friendly-interface-demo.js +63 -519
  290. package/dist/components/ui/touch-friendly-interface.d.ts +21 -282
  291. package/dist/components/ui/touch-friendly-interface.d.ts.map +1 -0
  292. package/dist/components/ui/touch-friendly-interface.esm.js +103 -281
  293. package/dist/components/ui/touch-friendly-interface.js +103 -281
  294. package/dist/hooks/index.d.ts +47 -161
  295. package/dist/hooks/index.d.ts.map +1 -0
  296. package/dist/hooks/index.esm.js +23 -181
  297. package/dist/hooks/index.js +23 -181
  298. package/dist/hooks/use-accessibility-support.d.ts +66 -508
  299. package/dist/hooks/use-accessibility-support.d.ts.map +1 -0
  300. package/dist/hooks/use-accessibility-support.esm.js +377 -518
  301. package/dist/hooks/use-accessibility-support.js +377 -518
  302. package/dist/hooks/use-adaptive-layout.d.ts +51 -281
  303. package/dist/hooks/use-adaptive-layout.d.ts.map +1 -0
  304. package/dist/hooks/use-adaptive-layout.esm.js +212 -287
  305. package/dist/hooks/use-adaptive-layout.js +212 -287
  306. package/dist/hooks/use-advanced-patterns.d.ts +78 -282
  307. package/dist/hooks/use-advanced-patterns.d.ts.map +1 -0
  308. package/dist/hooks/use-advanced-patterns.esm.js +185 -293
  309. package/dist/hooks/use-advanced-patterns.js +185 -293
  310. package/dist/hooks/use-advanced-transition-system.d.ts +51 -382
  311. package/dist/hooks/use-advanced-transition-system.d.ts.map +1 -0
  312. package/dist/hooks/use-advanced-transition-system.esm.js +286 -392
  313. package/dist/hooks/use-advanced-transition-system.js +286 -392
  314. package/dist/hooks/use-animation-profile.d.ts +39 -279
  315. package/dist/hooks/use-animation-profile.d.ts.map +1 -0
  316. package/dist/hooks/use-animation-profile.esm.js +221 -283
  317. package/dist/hooks/use-animation-profile.js +221 -283
  318. package/dist/hooks/use-battery-animations.d.ts +47 -376
  319. package/dist/hooks/use-battery-animations.d.ts.map +1 -0
  320. package/dist/hooks/use-battery-animations.esm.js +310 -384
  321. package/dist/hooks/use-battery-animations.js +310 -384
  322. package/dist/hooks/use-battery-conscious-loading.d.ts +50 -465
  323. package/dist/hooks/use-battery-conscious-loading.d.ts.map +1 -0
  324. package/dist/hooks/use-battery-conscious-loading.esm.js +374 -468
  325. package/dist/hooks/use-battery-conscious-loading.js +374 -468
  326. package/dist/hooks/use-battery-optimization.d.ts +39 -322
  327. package/dist/hooks/use-battery-optimization.d.ts.map +1 -0
  328. package/dist/hooks/use-battery-optimization.esm.js +267 -329
  329. package/dist/hooks/use-battery-optimization.js +267 -329
  330. package/dist/hooks/use-battery-status.d.ts +49 -289
  331. package/dist/hooks/use-battery-status.d.ts.map +1 -0
  332. package/dist/hooks/use-battery-status.esm.js +213 -293
  333. package/dist/hooks/use-battery-status.js +213 -293
  334. package/dist/hooks/use-component-performance.d.ts +60 -336
  335. package/dist/hooks/use-component-performance.d.ts.map +1 -0
  336. package/dist/hooks/use-component-performance.esm.js +235 -341
  337. package/dist/hooks/use-component-performance.js +235 -341
  338. package/dist/hooks/use-device-loading-states.d.ts +53 -448
  339. package/dist/hooks/use-device-loading-states.d.ts.map +1 -0
  340. package/dist/hooks/use-device-loading-states.esm.js +356 -457
  341. package/dist/hooks/use-device-loading-states.js +356 -457
  342. package/dist/hooks/use-device.d.ts +18 -102
  343. package/dist/hooks/use-device.d.ts.map +1 -0
  344. package/dist/hooks/use-device.esm.js +77 -102
  345. package/dist/hooks/use-device.js +77 -102
  346. package/dist/hooks/use-enterprise-mobile-experience.d.ts +72 -474
  347. package/dist/hooks/use-enterprise-mobile-experience.d.ts.map +1 -0
  348. package/dist/hooks/use-enterprise-mobile-experience.esm.js +349 -487
  349. package/dist/hooks/use-enterprise-mobile-experience.js +349 -487
  350. package/dist/hooks/use-form-feedback.d.ts +81 -391
  351. package/dist/hooks/use-form-feedback.d.ts.map +1 -0
  352. package/dist/hooks/use-form-feedback.esm.js +313 -398
  353. package/dist/hooks/use-form-feedback.js +313 -398
  354. package/dist/hooks/use-form-performance.d.ts +78 -501
  355. package/dist/hooks/use-form-performance.d.ts.map +1 -0
  356. package/dist/hooks/use-form-performance.esm.js +407 -500
  357. package/dist/hooks/use-form-performance.js +407 -500
  358. package/dist/hooks/use-frame-rate.d.ts +39 -241
  359. package/dist/hooks/use-frame-rate.d.ts.map +1 -0
  360. package/dist/hooks/use-frame-rate.esm.js +178 -251
  361. package/dist/hooks/use-frame-rate.js +178 -251
  362. package/dist/hooks/use-gestures.d.ts +84 -326
  363. package/dist/hooks/use-gestures.d.ts.map +1 -0
  364. package/dist/hooks/use-gestures.esm.js +230 -332
  365. package/dist/hooks/use-gestures.js +230 -332
  366. package/dist/hooks/use-hardware-acceleration.d.ts +45 -331
  367. package/dist/hooks/use-hardware-acceleration.d.ts.map +1 -0
  368. package/dist/hooks/use-hardware-acceleration.esm.js +246 -339
  369. package/dist/hooks/use-hardware-acceleration.js +246 -339
  370. package/dist/hooks/use-input-accessibility.d.ts +50 -443
  371. package/dist/hooks/use-input-accessibility.d.ts.map +1 -0
  372. package/dist/hooks/use-input-accessibility.esm.js +350 -454
  373. package/dist/hooks/use-input-accessibility.js +350 -454
  374. package/dist/hooks/use-input-performance.d.ts +47 -495
  375. package/dist/hooks/use-input-performance.d.ts.map +1 -0
  376. package/dist/hooks/use-input-performance.esm.js +419 -502
  377. package/dist/hooks/use-input-performance.js +419 -502
  378. package/dist/hooks/use-layout-performance.d.ts +33 -311
  379. package/dist/hooks/use-layout-performance.d.ts.map +1 -0
  380. package/dist/hooks/use-layout-performance.esm.js +233 -319
  381. package/dist/hooks/use-layout-performance.js +233 -319
  382. package/dist/hooks/use-loading-accessibility.d.ts +54 -524
  383. package/dist/hooks/use-loading-accessibility.d.ts.map +1 -0
  384. package/dist/hooks/use-loading-accessibility.esm.js +421 -531
  385. package/dist/hooks/use-loading-accessibility.js +421 -531
  386. package/dist/hooks/use-loading-performance.d.ts +43 -463
  387. package/dist/hooks/use-loading-performance.d.ts.map +1 -0
  388. package/dist/hooks/use-loading-performance.esm.js +398 -469
  389. package/dist/hooks/use-loading-performance.js +398 -469
  390. package/dist/hooks/use-memory-usage.d.ts +43 -277
  391. package/dist/hooks/use-memory-usage.d.ts.map +1 -0
  392. package/dist/hooks/use-memory-usage.esm.js +211 -287
  393. package/dist/hooks/use-memory-usage.js +211 -287
  394. package/dist/hooks/use-mobile-form-layout.d.ts +116 -451
  395. package/dist/hooks/use-mobile-form-layout.d.ts.map +1 -0
  396. package/dist/hooks/use-mobile-form-layout.esm.js +365 -458
  397. package/dist/hooks/use-mobile-form-layout.js +365 -458
  398. package/dist/hooks/use-mobile-form-validation.d.ts +87 -503
  399. package/dist/hooks/use-mobile-form-validation.d.ts.map +1 -0
  400. package/dist/hooks/use-mobile-form-validation.esm.js +384 -497
  401. package/dist/hooks/use-mobile-form-validation.js +384 -497
  402. package/dist/hooks/use-mobile-keyboard-optimization.d.ts +62 -461
  403. package/dist/hooks/use-mobile-keyboard-optimization.d.ts.map +1 -0
  404. package/dist/hooks/use-mobile-keyboard-optimization.esm.js +354 -468
  405. package/dist/hooks/use-mobile-keyboard-optimization.js +354 -468
  406. package/dist/hooks/use-mobile-layout.d.ts +48 -292
  407. package/dist/hooks/use-mobile-layout.d.ts.map +1 -0
  408. package/dist/hooks/use-mobile-layout.esm.js +207 -294
  409. package/dist/hooks/use-mobile-layout.js +207 -294
  410. package/dist/hooks/use-mobile-optimization.d.ts +49 -398
  411. package/dist/hooks/use-mobile-optimization.d.ts.map +1 -0
  412. package/dist/hooks/use-mobile-optimization.esm.js +308 -404
  413. package/dist/hooks/use-mobile-optimization.js +308 -404
  414. package/dist/hooks/use-mobile-skeleton.d.ts +51 -391
  415. package/dist/hooks/use-mobile-skeleton.d.ts.map +1 -0
  416. package/dist/hooks/use-mobile-skeleton.esm.js +300 -402
  417. package/dist/hooks/use-mobile-skeleton.js +300 -402
  418. package/dist/hooks/use-mobile-touch.d.ts +73 -399
  419. package/dist/hooks/use-mobile-touch.d.ts.map +1 -0
  420. package/dist/hooks/use-mobile-touch.esm.js +314 -412
  421. package/dist/hooks/use-mobile-touch.js +314 -412
  422. package/dist/hooks/use-performance-throttling.d.ts +42 -340
  423. package/dist/hooks/use-performance-throttling.d.ts.map +1 -0
  424. package/dist/hooks/use-performance-throttling.esm.js +276 -344
  425. package/dist/hooks/use-performance-throttling.js +276 -344
  426. package/dist/hooks/use-performance.d.ts +65 -306
  427. package/dist/hooks/use-performance.d.ts.map +1 -0
  428. package/dist/hooks/use-performance.esm.js +216 -313
  429. package/dist/hooks/use-performance.js +216 -313
  430. package/dist/hooks/use-reusable-architecture.d.ts +82 -400
  431. package/dist/hooks/use-reusable-architecture.d.ts.map +1 -0
  432. package/dist/hooks/use-reusable-architecture.esm.js +255 -408
  433. package/dist/hooks/use-reusable-architecture.js +255 -408
  434. package/dist/hooks/use-semantic-input-types.d.ts +51 -348
  435. package/dist/hooks/use-semantic-input-types.d.ts.map +1 -0
  436. package/dist/hooks/use-semantic-input-types.esm.js +290 -356
  437. package/dist/hooks/use-semantic-input-types.js +290 -356
  438. package/dist/hooks/use-semantic-input.d.ts +62 -552
  439. package/dist/hooks/use-semantic-input.d.ts.map +1 -0
  440. package/dist/hooks/use-semantic-input.esm.js +446 -549
  441. package/dist/hooks/use-semantic-input.js +446 -549
  442. package/dist/hooks/use-tablet-layout.d.ts +67 -375
  443. package/dist/hooks/use-tablet-layout.d.ts.map +1 -0
  444. package/dist/hooks/use-tablet-layout.esm.js +279 -384
  445. package/dist/hooks/use-tablet-layout.js +279 -384
  446. package/dist/hooks/use-touch-friendly-input.d.ts +67 -512
  447. package/dist/hooks/use-touch-friendly-input.d.ts.map +1 -0
  448. package/dist/hooks/use-touch-friendly-input.esm.js +401 -519
  449. package/dist/hooks/use-touch-friendly-input.js +401 -519
  450. package/dist/hooks/use-touch-friendly-interface.d.ts +48 -321
  451. package/dist/hooks/use-touch-friendly-interface.d.ts.map +1 -0
  452. package/dist/hooks/use-touch-friendly-interface.esm.js +242 -331
  453. package/dist/hooks/use-touch-friendly-interface.js +242 -331
  454. package/dist/hooks/use-touch-optimization.d.ts +56 -363
  455. package/dist/hooks/use-touch-optimization.d.ts.map +1 -0
  456. package/dist/hooks/use-touch-optimization.esm.js +288 -370
  457. package/dist/hooks/use-touch-optimization.js +288 -370
  458. package/dist/index.d.ts +168 -17
  459. package/dist/index.d.ts.map +1 -0
  460. package/dist/index.esm.js +150 -161
  461. package/dist/index.js +150 -161
  462. package/dist/lib/utils.d.ts +3 -3
  463. package/dist/lib/utils.d.ts.map +1 -0
  464. package/dist/lib/utils.esm.js +4 -5
  465. package/dist/lib/utils.js +4 -5
  466. package/dist/plugins/theme-css-generator.d.ts +3 -345
  467. package/dist/plugins/theme-css-generator.d.ts.map +1 -0
  468. package/dist/plugins/theme-css-generator.esm.js +292 -346
  469. package/dist/plugins/theme-css-generator.js +292 -346
  470. package/dist/provider.d.ts +6 -14
  471. package/dist/provider.d.ts.map +1 -0
  472. package/dist/provider.esm.js +3 -19
  473. package/dist/provider.js +3 -19
  474. package/dist/styles/layers/validation.d.ts +20 -0
  475. package/dist/styles/layers/validation.d.ts.map +1 -0
  476. package/dist/styles/layers/validation.esm.js +275 -0
  477. package/dist/styles/layers/validation.js +275 -0
  478. package/dist/styles.css +1 -1
  479. package/dist/theme.d.ts +7 -678
  480. package/dist/theme.d.ts.map +1 -0
  481. package/dist/theme.esm.js +654 -658
  482. package/dist/theme.js +654 -658
  483. package/dist/themes/ThemeContext.d.ts +18 -22
  484. package/dist/themes/ThemeContext.d.ts.map +1 -0
  485. package/dist/themes/ThemeContext.esm.js +1 -27
  486. package/dist/themes/ThemeContext.js +1 -27
  487. package/dist/themes/ThemeProvider.d.ts +3 -222
  488. package/dist/themes/ThemeProvider.d.ts.map +1 -0
  489. package/dist/themes/ThemeProvider.esm.js +191 -223
  490. package/dist/themes/ThemeProvider.js +191 -223
  491. package/dist/themes/accessibility/index.d.ts +18 -6
  492. package/dist/themes/accessibility/index.d.ts.map +1 -0
  493. package/dist/themes/accessibility/index.esm.js +0 -4
  494. package/dist/themes/accessibility/index.js +0 -4
  495. package/dist/themes/accessibility.d.ts +53 -253
  496. package/dist/themes/accessibility.d.ts.map +1 -0
  497. package/dist/themes/accessibility.esm.js +175 -240
  498. package/dist/themes/accessibility.js +175 -240
  499. package/dist/themes/aria-patterns.d.ts +145 -410
  500. package/dist/themes/aria-patterns.d.ts.map +1 -0
  501. package/dist/themes/aria-patterns.esm.js +345 -401
  502. package/dist/themes/aria-patterns.js +345 -401
  503. package/dist/themes/base-themes.d.ts +29 -32
  504. package/dist/themes/base-themes.d.ts.map +1 -0
  505. package/dist/themes/base-themes.esm.js +15 -24
  506. package/dist/themes/base-themes.js +15 -24
  507. package/dist/themes/colorManager.d.ts +63 -326
  508. package/dist/themes/colorManager.d.ts.map +1 -0
  509. package/dist/themes/colorManager.esm.js +293 -357
  510. package/dist/themes/colorManager.js +293 -357
  511. package/dist/themes/examples/dark-theme.d.ts +13 -139
  512. package/dist/themes/examples/dark-theme.d.ts.map +1 -0
  513. package/dist/themes/examples/dark-theme.esm.js +129 -133
  514. package/dist/themes/examples/dark-theme.js +129 -133
  515. package/dist/themes/examples/minimal-theme.d.ts +6 -93
  516. package/dist/themes/examples/minimal-theme.d.ts.map +1 -0
  517. package/dist/themes/examples/minimal-theme.esm.js +80 -85
  518. package/dist/themes/examples/minimal-theme.js +80 -85
  519. package/dist/themes/focus-management.d.ts +100 -689
  520. package/dist/themes/focus-management.d.ts.map +1 -0
  521. package/dist/themes/focus-management.esm.js +541 -677
  522. package/dist/themes/focus-management.js +541 -677
  523. package/dist/themes/fontLoader.d.ts +48 -162
  524. package/dist/themes/fontLoader.d.ts.map +1 -0
  525. package/dist/themes/fontLoader.esm.js +151 -180
  526. package/dist/themes/fontLoader.js +151 -180
  527. package/dist/themes/high-contrast.d.ts +64 -613
  528. package/dist/themes/high-contrast.d.ts.map +1 -0
  529. package/dist/themes/high-contrast.esm.js +394 -558
  530. package/dist/themes/high-contrast.js +394 -558
  531. package/dist/themes/index.d.ts +3 -6
  532. package/dist/themes/index.d.ts.map +1 -0
  533. package/dist/themes/index.esm.js +1 -9
  534. package/dist/themes/index.js +1 -9
  535. package/dist/themes/inheritance.d.ts +86 -156
  536. package/dist/themes/inheritance.d.ts.map +1 -0
  537. package/dist/themes/inheritance.esm.js +145 -180
  538. package/dist/themes/inheritance.js +145 -180
  539. package/dist/themes/keyboard-navigation.d.ts +205 -542
  540. package/dist/themes/keyboard-navigation.d.ts.map +1 -0
  541. package/dist/themes/keyboard-navigation.esm.js +418 -510
  542. package/dist/themes/keyboard-navigation.js +418 -510
  543. package/dist/themes/motion-reduction.d.ts +107 -646
  544. package/dist/themes/motion-reduction.d.ts.map +1 -0
  545. package/dist/themes/motion-reduction.esm.js +434 -591
  546. package/dist/themes/motion-reduction.js +434 -591
  547. package/dist/themes/navigation.d.ts +163 -194
  548. package/dist/themes/navigation.d.ts.map +1 -0
  549. package/dist/themes/navigation.esm.js +1 -234
  550. package/dist/themes/navigation.js +1 -234
  551. package/dist/themes/screen-reader.d.ts +82 -641
  552. package/dist/themes/screen-reader.d.ts.map +1 -0
  553. package/dist/themes/screen-reader.esm.js +515 -616
  554. package/dist/themes/screen-reader.js +515 -616
  555. package/dist/themes/systemThemeDetector.d.ts +54 -144
  556. package/dist/themes/systemThemeDetector.d.ts.map +1 -0
  557. package/dist/themes/systemThemeDetector.esm.js +135 -164
  558. package/dist/themes/systemThemeDetector.js +135 -164
  559. package/dist/themes/themeCSSUpdater.d.ts +45 -228
  560. package/dist/themes/themeCSSUpdater.d.ts.map +1 -0
  561. package/dist/themes/themeCSSUpdater.esm.js +217 -252
  562. package/dist/themes/themeCSSUpdater.js +217 -252
  563. package/dist/themes/themePersistence.d.ts +80 -188
  564. package/dist/themes/themePersistence.d.ts.map +1 -0
  565. package/dist/themes/themePersistence.esm.js +181 -212
  566. package/dist/themes/themePersistence.js +181 -212
  567. package/dist/themes/themes/default.d.ts +9 -0
  568. package/dist/themes/themes/default.d.ts.map +1 -0
  569. package/dist/themes/themes/default.esm.js +584 -0
  570. package/dist/themes/themes/default.js +584 -0
  571. package/dist/themes/themes/harvey.d.ts +7 -0
  572. package/dist/themes/themes/harvey.d.ts.map +1 -0
  573. package/dist/themes/themes/harvey.esm.js +551 -0
  574. package/dist/themes/themes/harvey.js +551 -0
  575. package/dist/themes/themes/stan-design.d.ts +7 -678
  576. package/dist/themes/themes/stan-design.d.ts.map +1 -0
  577. package/dist/themes/themes/stan-design.esm.js +654 -658
  578. package/dist/themes/themes/stan-design.js +654 -658
  579. package/dist/themes/types.d.ts +330 -385
  580. package/dist/themes/types.d.ts.map +1 -0
  581. package/dist/themes/types.esm.js +1 -458
  582. package/dist/themes/types.js +1 -458
  583. package/dist/themes/useSystemTheme.d.ts +10 -42
  584. package/dist/themes/useSystemTheme.d.ts.map +1 -0
  585. package/dist/themes/useSystemTheme.esm.js +34 -42
  586. package/dist/themes/useSystemTheme.js +34 -42
  587. package/dist/themes/useTheme.d.ts +70 -20
  588. package/dist/themes/useTheme.d.ts.map +1 -0
  589. package/dist/themes/useTheme.esm.js +23 -28
  590. package/dist/themes/useTheme.js +23 -28
  591. package/dist/themes/validation.d.ts +70 -405
  592. package/dist/themes/validation.d.ts.map +1 -0
  593. package/dist/themes/validation.esm.js +380 -433
  594. package/dist/themes/validation.js +380 -433
  595. package/dist/tokens/index.d.ts +9 -23
  596. package/dist/tokens/index.d.ts.map +1 -0
  597. package/dist/tokens/index.esm.js +2 -13
  598. package/dist/tokens/index.js +2 -13
  599. package/dist/tokens/tokenExporter.d.ts +83 -335
  600. package/dist/tokens/tokenExporter.d.ts.map +1 -0
  601. package/dist/tokens/tokenExporter.esm.js +309 -373
  602. package/dist/tokens/tokenExporter.js +309 -373
  603. package/dist/tokens/tokenGenerator.d.ts +36 -249
  604. package/dist/tokens/tokenGenerator.d.ts.map +1 -0
  605. package/dist/tokens/tokenGenerator.esm.js +241 -273
  606. package/dist/tokens/tokenGenerator.js +241 -273
  607. package/dist/tokens/tokenManager.d.ts +87 -189
  608. package/dist/tokens/tokenManager.d.ts.map +1 -0
  609. package/dist/tokens/tokenManager.esm.js +187 -241
  610. package/dist/tokens/tokenManager.js +187 -241
  611. package/dist/tokens/tokenValidator.d.ts +84 -481
  612. package/dist/tokens/tokenValidator.d.ts.map +1 -0
  613. package/dist/tokens/tokenValidator.esm.js +402 -522
  614. package/dist/tokens/tokenValidator.js +402 -522
  615. package/dist/tokens/types.d.ts +40 -60
  616. package/dist/tokens/types.d.ts.map +1 -0
  617. package/dist/tokens/types.esm.js +1 -78
  618. package/dist/tokens/types.js +1 -78
  619. package/dist/types.d.ts +399 -0
  620. package/dist/types.d.ts.map +1 -0
  621. package/dist/types.esm.js +3 -0
  622. package/dist/types.js +3 -0
  623. package/dist/utils/bundle-analyzer.d.ts +37 -254
  624. package/dist/utils/bundle-analyzer.d.ts.map +1 -0
  625. package/dist/utils/bundle-analyzer.esm.js +188 -246
  626. package/dist/utils/bundle-analyzer.js +188 -246
  627. package/dist/utils/bundle-splitting.d.ts +59 -471
  628. package/dist/utils/bundle-splitting.d.ts.map +1 -0
  629. package/dist/utils/bundle-splitting.esm.js +330 -458
  630. package/dist/utils/bundle-splitting.js +330 -458
  631. package/dist/utils/lazy-loading.d.ts +64 -429
  632. package/dist/utils/lazy-loading.d.ts.map +1 -0
  633. package/dist/utils/lazy-loading.esm.js +311 -417
  634. package/dist/utils/lazy-loading.js +311 -417
  635. package/dist/utils/performance-monitor.d.ts +72 -504
  636. package/dist/utils/performance-monitor.d.ts.map +1 -0
  637. package/dist/utils/performance-monitor.esm.js +369 -490
  638. package/dist/utils/performance-monitor.js +369 -490
  639. package/dist/utils/tree-shaking.d.ts +40 -267
  640. package/dist/utils/tree-shaking.d.ts.map +1 -0
  641. package/dist/utils/tree-shaking.esm.js +194 -264
  642. package/dist/utils/tree-shaking.js +194 -264
  643. package/package.json +18 -2
  644. package/src/index.ts +150 -149
  645. package/src/provider.tsx +3 -3
  646. package/src/theme.ts +1 -1
  647. package/src/themes/themes/default.ts +586 -0
  648. package/src/themes/themes/harvey.ts +554 -0
  649. package/src/types.ts +460 -0
@@ -1,916 +1,256 @@
1
- import React, { useState, useCallback, useEffect } from 'react'
2
- import { Card, CardContent, CardDescription, CardHeader, CardTitle } from './card'
3
- import { Badge } from './badge'
4
- import { Button } from './button'
5
- import { useAdvancedPatterns } from '../../hooks/use-advanced-patterns'
6
- import { useComponentPerformance } from '../../hooks/use-component-performance'
7
- import { useMobileOptimization } from '../../hooks/use-mobile-optimization'
8
- import { useReusableArchitecture } from '../../hooks/use-reusable-architecture'
9
- import { useAccessibilitySupport } from '../../hooks/use-accessibility-support'
10
-
11
- export const AdvancedComponentArchitectureDemo: React.FC = () => {
12
- const [activeTab, setActiveTab] = useState<'patterns' | 'performance' | 'mobile' | 'architecture' | 'accessibility'>('patterns')
13
- const [showPatternDemo, setShowPatternDemo] = useState(true)
14
- const [showPerformanceDemo, setShowPerformanceDemo] = useState(true)
15
- const [showMobileDemo, setShowMobileDemo] = useState(true)
16
- const [showArchitectureDemo, setShowArchitectureDemo] = useState(true)
17
- const [showAccessibilityDemo, setShowAccessibilityDemo] = useState(true)
18
-
19
- // Hooks
20
- const advancedPatterns = useAdvancedPatterns({
21
- enableCompoundComponents: true,
22
- enableRenderProps: true,
23
- enableHigherOrderComponents: true,
24
- enableCustomHooks: true,
25
- enablePerformanceOptimization: true,
26
- enableAccessibilitySupport: true
27
- }, {
28
- onPatternApplied: (pattern, component) => console.log('Pattern applied:', pattern, component),
29
- onPerformanceOptimized: (optimization) => console.log('Performance optimized:', optimization),
30
- onAccessibilityEnhanced: (feature) => console.log('Accessibility enhanced:', feature)
31
- })
32
-
33
- const componentPerformance = useComponentPerformance({
34
- enableMemoization: true,
35
- enableLazyLoading: true,
36
- enableVirtualization: true,
37
- enablePerformanceMonitoring: true,
38
- enableAutoOptimization: true
39
- }, {
40
- onPerformanceWarning: (metrics) => console.log('Performance warning:', metrics),
41
- onOptimizationApplied: (type, component) => console.log('Optimization applied:', type, component),
42
- onPerformanceImproved: (improvement) => console.log('Performance improved:', improvement),
43
- onMemoryWarning: (usage) => console.log('Memory warning:', usage)
44
- })
45
-
46
- const mobileOptimization = useMobileOptimization({
47
- enableTouchOptimization: true,
48
- enablePerformanceOptimization: true,
49
- enableBatteryOptimization: true,
50
- enableAccessibilityOptimization: true,
51
- enableResponsiveOptimization: true
52
- }, {
53
- onMobileOptimized: (optimization) => console.log('Mobile optimized:', optimization),
54
- onTouchOptimized: (feature) => console.log('Touch optimized:', feature),
55
- onPerformanceOptimized: (improvement) => console.log('Performance optimized:', improvement),
56
- onBatteryOptimized: (strategy) => console.log('Battery optimized:', strategy),
57
- onAccessibilityEnhanced: (feature) => console.log('Accessibility enhanced:', feature)
58
- })
59
-
60
- const reusableArchitecture = useReusableArchitecture({
61
- enableComponentComposition: true,
62
- enablePatternSharing: true,
63
- enableStyleSharing: true,
64
- enableBehaviorSharing: true,
65
- enableTemplateSystem: true,
66
- enableComponentRegistry: true
67
- }, {
68
- onTemplateCreated: (template) => console.log('Template created:', template),
69
- onPatternShared: (pattern) => console.log('Pattern shared:', pattern),
70
- onStyleShared: (style) => console.log('Style shared:', style),
71
- onBehaviorShared: (behavior) => console.log('Behavior shared:', behavior),
72
- onArchitectureOptimized: (optimization) => console.log('Architecture optimized:', optimization)
73
- })
74
-
75
- const accessibilitySupport = useAccessibilitySupport({
76
- enableAriaSupport: true,
77
- enableKeyboardNavigation: true,
78
- enableScreenReaderSupport: true,
79
- enableFocusManagement: true,
80
- enableHighContrast: true,
81
- enableReducedMotion: true,
82
- enableVoiceControl: true
83
- }, {
84
- onAriaEnhanced: (feature) => console.log('ARIA enhanced:', feature),
85
- onKeyboardNavigationEnabled: (feature) => console.log('Keyboard navigation enabled:', feature),
86
- onScreenReaderEnhanced: (feature) => console.log('Screen reader enhanced:', feature),
87
- onFocusManagementImproved: (feature) => console.log('Focus management improved:', feature),
88
- onAccessibilityWarning: (warning) => console.log('Accessibility warning:', warning)
89
- })
90
-
91
- // Demo functions
92
- const demonstratePatterns = useCallback(() => {
93
- // Demonstrate compound components
94
- const BaseComponent = () => <div>Base Component</div>
95
- const SubComponent = () => <div>Sub Component</div>
96
-
97
- const compoundComponent = advancedPatterns.createCompoundComponent(BaseComponent, {
98
- Sub: SubComponent
99
- })
100
-
101
- // Demonstrate render props
102
- const renderPropsData = { message: 'Hello from Render Props!' }
103
- const renderPropsComponent = advancedPatterns.createRenderPropsComponent({
104
- data: renderPropsData,
105
- loading: false,
106
- error: null,
107
- render: (data) => <div>Render Props: {data.message}</div>
108
- })
109
-
110
- // Demonstrate higher-order components
111
- const enhancedComponent = advancedPatterns.createHigherOrderComponent({
112
- component: BaseComponent,
113
- props: { enhanced: true },
114
- enhancers: [
115
- (Component) => (props: any) => <div className="enhanced"><Component {...props} /></div>
116
- ]
117
- })
118
-
119
- // Demonstrate custom hooks
120
- const customHookResult = advancedPatterns.createCustomHook('DemoHook', () => 'Custom Hook Result')
121
-
122
- console.log('Patterns demonstrated:', {
123
- compoundComponent,
124
- renderPropsComponent,
125
- enhancedComponent,
126
- customHookResult
127
- })
128
- }, [advancedPatterns])
129
-
130
- const demonstratePerformance = useCallback(() => {
131
- // Demonstrate memoization
132
- const memoizedValue = componentPerformance.memoizeValue('demo', 'expensive calculation result', ['dependency1', 'dependency2'])
133
-
134
- // Demonstrate lazy loading
135
- const lazyComponent = componentPerformance.lazyLoadComponent('DemoComponent', () =>
136
- Promise.resolve({ default: () => <div>Lazy Loaded Component</div> })
137
- )
138
-
139
- // Demonstrate virtualization
140
- const items = Array.from({ length: 1000 }, (_, i) => `Item ${i}`)
141
- const virtualizedList = componentPerformance.createVirtualizedList(
142
- items,
143
- 50,
144
- 400,
145
- (item, index) => <div key={index} className="p-2 border">{item}</div>
146
- )
147
-
148
- // Demonstrate performance measurement
149
- const stopMeasurement = componentPerformance.startRenderMeasurement()
150
- setTimeout(stopMeasurement, 100)
151
-
152
- // Demonstrate auto-optimization
153
- componentPerformance.autoOptimize('DemoComponent')
154
-
155
- console.log('Performance optimizations demonstrated:', {
156
- memoizedValue,
157
- lazyComponent,
158
- virtualizedList
159
- })
160
- }, [componentPerformance])
161
-
162
- const demonstrateMobileOptimization = useCallback(() => {
163
- // Demonstrate touch optimization
164
- mobileOptimization.optimizeTouchTargets()
165
-
166
- // Demonstrate performance optimization
167
- mobileOptimization.optimizePerformance()
168
-
169
- // Demonstrate battery optimization
170
- mobileOptimization.optimizeBattery()
171
-
172
- // Demonstrate accessibility optimization
173
- mobileOptimization.optimizeAccessibility()
174
-
175
- // Demonstrate responsive optimization
176
- mobileOptimization.optimizeResponsive()
177
-
178
- // Demonstrate component-specific optimization
179
- mobileOptimization.optimizeComponentForMobile('DemoComponent', 'touch')
180
- mobileOptimization.optimizeComponentForMobile('DemoComponent', 'performance')
181
- mobileOptimization.optimizeComponentForMobile('DemoComponent', 'battery')
182
- mobileOptimization.optimizeComponentForMobile('DemoComponent', 'accessibility')
183
- mobileOptimization.optimizeComponentForMobile('DemoComponent', 'responsive')
184
- }, [mobileOptimization])
185
-
186
- const demonstrateArchitecture = useCallback(() => {
187
- // Demonstrate component composition
188
- const BaseComponent = () => <div>Base Component</div>
189
- const enhancedComponent = reusableArchitecture.composeComponent(BaseComponent, [
190
- (Component) => (props: any) => <div className="enhanced"><Component {...props} /></div>,
191
- (Component) => (props: any) => <div className="wrapped"><Component {...props} /></div>
192
- ])
193
-
194
- // Demonstrate template creation
195
- const templateId = reusableArchitecture.createTemplate({
196
- name: 'Demo Template',
197
- component: BaseComponent,
198
- props: { demo: true },
199
- styles: { padding: '1rem' },
200
- behaviors: ['clickable', 'hoverable'],
201
- patterns: ['compound', 'enhanced']
202
- })
203
-
204
- // Demonstrate pattern sharing
205
- const patternId = reusableArchitecture.sharePattern({
206
- name: 'Demo Pattern',
207
- description: 'A demonstration pattern',
208
- implementation: 'Pattern implementation details',
209
- usage: ['Component1', 'Component2'],
210
- category: 'composition'
211
- })
212
-
213
- // Demonstrate style sharing
214
- const styleId = reusableArchitecture.shareStyle({
215
- name: 'Demo Style',
216
- css: '.demo-style { color: blue; }',
217
- variables: { '--demo-color': 'blue' },
218
- breakpoints: { mobile: 'max-width: 768px' },
219
- usage: ['Component1']
220
- })
221
-
222
- // Demonstrate behavior sharing
223
- const behaviorId = reusableArchitecture.shareBehavior({
224
- name: 'Demo Behavior',
225
- description: 'A demonstration behavior',
226
- hook: 'useDemoBehavior',
227
- dependencies: ['react'],
228
- usage: ['Component1']
229
- })
230
-
231
- // Demonstrate component registry
232
- reusableArchitecture.registerComponent('DemoComponent', BaseComponent, {
233
- name: 'Demo Component',
234
- description: 'A demonstration component',
235
- category: 'demo',
236
- tags: ['demo', 'example']
237
- })
238
-
239
- console.log('Architecture demonstrated:', {
240
- enhancedComponent,
241
- templateId,
242
- patternId,
243
- styleId,
244
- behaviorId
245
- })
246
- }, [reusableArchitecture])
247
-
248
- const demonstrateAccessibility = useCallback(() => {
249
- // Demonstrate ARIA support
250
- accessibilitySupport.enhanceAriaSupport('DemoElement', {
251
- 'aria-label': 'Demo Element',
252
- 'aria-describedby': 'demo-description',
253
- 'role': 'button'
254
- })
255
-
256
- // Demonstrate keyboard navigation
257
- accessibilitySupport.enableKeyboardNavigation('DemoElement', {
258
- 'Enter': 'Activate',
259
- 'Space': 'Toggle',
260
- 'Tab': 'Navigate'
261
- })
262
-
263
- // Demonstrate screen reader support
264
- accessibilitySupport.enhanceScreenReaderSupport('DemoElement', 'This is a demo element for screen readers')
265
-
266
- // Demonstrate focus management
267
- accessibilitySupport.improveFocusManagement('DemoElement', 'trap')
268
-
269
- // Demonstrate high contrast
270
- accessibilitySupport.enableHighContrast()
271
-
272
- // Demonstrate reduced motion
273
- accessibilitySupport.enableReducedMotion()
274
-
275
- // Demonstrate voice control
276
- accessibilitySupport.enableVoiceControl()
277
-
278
- // Demonstrate auto-enhancement
279
- accessibilitySupport.autoEnhanceAccessibility()
280
- }, [accessibilitySupport])
281
-
282
- // Auto-demonstrate all features
283
- useEffect(() => {
284
- const timer = setTimeout(() => {
285
- demonstratePatterns()
286
- demonstratePerformance()
287
- demonstrateMobileOptimization()
288
- demonstrateArchitecture()
289
- demonstrateAccessibility()
290
- }, 1000)
291
-
292
- return () => clearTimeout(timer)
293
- }, [demonstratePatterns, demonstratePerformance, demonstrateMobileOptimization, demonstrateArchitecture, demonstrateAccessibility])
294
-
295
- const tabs = [
296
- { id: 'patterns', label: 'Advanced Patterns', icon: '🧩' },
297
- { id: 'performance', label: 'Performance', icon: '⚡' },
298
- { id: 'mobile', label: 'Mobile Optimization', icon: '📱' },
299
- { id: 'architecture', label: 'Reusable Architecture', icon: '🏗️' },
300
- { id: 'accessibility', label: 'Accessibility', icon: '♿' }
301
- ]
302
-
303
- return (
304
- <div className="space-y-6">
305
- <div className="text-center">
306
- <h1 className="text-3xl font-bold text-cs-text-primary mb-2">
307
- 🏗️ Advanced Component Architecture & Patterns
308
- </h1>
309
- <p className="text-lg text-cs-text-secondary mb-4">
310
- Story 10 Implementation - Sophisticated component patterns, performance optimization, mobile optimization, reusable architecture, and accessibility support
311
- </p>
312
- <div className="flex items-center justify-center gap-2">
313
- <Badge variant="default">Story 10</Badge>
314
- <Badge variant="outline">Advanced Patterns</Badge>
315
- <Badge variant="secondary">Performance Optimized</Badge>
316
- <Badge variant="outline">Mobile First</Badge>
317
- <Badge variant="secondary">Reusable Architecture</Badge>
318
- <Badge variant="outline">Accessibility First</Badge>
319
- </div>
320
- </div>
321
-
322
- {/* Tab Navigation */}
323
- <div className="flex flex-wrap gap-2 border-b pb-4">
324
- {tabs.map((tab) => (
325
- <Button
326
- key={tab.id}
327
- variant={activeTab === tab.id ? 'default' : 'outline'}
328
- size="sm"
329
- onClick={() => setActiveTab(tab.id as any)}
330
- className="flex items-center gap-2"
331
- >
332
- <span>{tab.icon}</span>
333
- {tab.label}
334
- </Button>
335
- ))}
336
- </div>
337
-
338
- {/* Advanced Patterns Tab */}
339
- {activeTab === 'patterns' && (
340
- <Card className="border-2 border-cs-primary">
341
- <CardHeader>
342
- <CardTitle className="text-xl flex items-center gap-2">
343
- 🧩 Advanced Component Patterns
344
- <Badge variant="outline">{advancedPatterns.patterns.length} Patterns</Badge>
345
- </CardTitle>
346
- <CardDescription>
347
- Advanced component patterns including compound components, render props, higher-order components, and custom hooks
348
- </CardDescription>
349
- </CardHeader>
350
- <CardContent className="space-y-4">
351
- <div className="grid grid-cols-1 md:grid-cols-2 gap-4">
352
- <div className="space-y-3">
353
- <h4 className="font-medium">Pattern Status</h4>
354
- <div className="space-y-2">
355
- <div className="flex justify-between">
356
- <span className="text-sm">Compound Components:</span>
357
- <Badge variant={advancedPatterns.hasPattern('Compound Components') ? 'default' : 'secondary'}>
358
- {advancedPatterns.hasPattern('Compound Components') ? 'Active' : 'Inactive'}
359
- </Badge>
360
- </div>
361
- <div className="flex justify-between">
362
- <span className="text-sm">Render Props:</span>
363
- <Badge variant={advancedPatterns.hasPattern('Render Props') ? 'default' : 'secondary'}>
364
- {advancedPatterns.hasPattern('Render Props') ? 'Active' : 'Inactive'}
365
- </Badge>
366
- </div>
367
- <div className="flex justify-between">
368
- <span className="text-sm">Higher-Order Components:</span>
369
- <Badge variant={advancedPatterns.hasPattern('Higher-Order Components') ? 'default' : 'secondary'}>
370
- {advancedPatterns.hasPattern('Higher-Order Components') ? 'Active' : 'Inactive'}
371
- </Badge>
372
- </div>
373
- <div className="flex justify-between">
374
- <span className="text-sm">Custom Hooks:</span>
375
- <Badge variant={advancedPatterns.hasPattern('Custom Hooks') ? 'default' : 'secondary'}>
376
- {advancedPatterns.hasPattern('Custom Hooks') ? 'Active' : 'Inactive'}
377
- </Badge>
378
- </div>
379
- </div>
380
- </div>
381
-
382
- <div className="space-y-3">
383
- <h4 className="font-medium">Pattern Analysis</h4>
384
- <div className="space-y-2">
385
- <div className="flex justify-between">
386
- <span className="text-sm">Total Patterns:</span>
387
- <span className="text-sm text-cs-text-secondary">{advancedPatterns.patterns.length}</span>
388
- </div>
389
- <div className="flex justify-between">
390
- <span className="text-sm">Unique Patterns:</span>
391
- <span className="text-sm text-cs-text-secondary">{advancedPatterns.analyzePatterns().uniquePatterns}</span>
392
- </div>
393
- <div className="flex justify-between">
394
- <span className="text-sm">Optimization Level:</span>
395
- <Badge variant="outline">{advancedPatterns.patterns.length > 0 ? 'Optimized' : 'Not Optimized'}</Badge>
396
- </div>
397
- </div>
398
- </div>
399
- </div>
400
-
401
- {/* Pattern Controls */}
402
- <div className="flex gap-2">
403
- <Button
404
- variant="default"
405
- onClick={demonstratePatterns}
406
- disabled={advancedPatterns.isOptimizing}
407
- >
408
- Demonstrate Patterns
409
- </Button>
410
- <Button
411
- variant="outline"
412
- onClick={() => advancedPatterns.clearPatterns()}
413
- >
414
- Clear Patterns
415
- </Button>
416
- </div>
417
-
418
- {/* Pattern Recommendations */}
419
- {advancedPatterns.getPatternRecommendations().length > 0 && (
420
- <div className="p-3 bg-cs-accent/10 rounded-lg">
421
- <h4 className="font-medium text-sm mb-2">Pattern Recommendations:</h4>
422
- <ul className="text-xs text-cs-text-secondary space-y-1">
423
- {advancedPatterns.getPatternRecommendations().map((recommendation, index) => (
424
- <li key={index}>• {recommendation}</li>
425
- ))}
426
- </ul>
427
- </div>
428
- )}
429
-
430
- {/* Pattern Validation */}
431
- {advancedPatterns.validatePatterns().warnings.length > 0 && (
432
- <div className="p-3 bg-yellow-50 border border-yellow-200 rounded-lg">
433
- <h4 className="font-medium text-sm mb-2 text-yellow-800">Pattern Warnings:</h4>
434
- <ul className="text-xs text-yellow-700 space-y-1">
435
- {advancedPatterns.validatePatterns().warnings.map((warning, index) => (
436
- <li key={index}>• {warning}</li>
437
- ))}
438
- </ul>
439
- </div>
440
- )}
441
- </CardContent>
442
- </Card>
443
- )}
444
-
445
- {/* Performance Tab */}
446
- {activeTab === 'performance' && (
447
- <Card className="border-2 border-cs-secondary">
448
- <CardHeader>
449
- <CardTitle className="text-xl flex items-center gap-2">
450
- ⚡ Component Performance Optimization
451
- <Badge variant={componentPerformance.isPerformanceOptimized() ? 'default' : 'secondary'}>
452
- {componentPerformance.isPerformanceOptimized() ? 'Optimized' : 'Not Optimized'}
453
- </Badge>
454
- </CardTitle>
455
- <CardDescription>
456
- Performance optimization including memoization, lazy loading, virtualization, and performance monitoring
457
- </CardDescription>
458
- </CardHeader>
459
- <CardContent className="space-y-4">
460
- <div className="grid grid-cols-2 lg:grid-cols-4 gap-4 text-center">
461
- <div>
462
- <p className="text-2xl font-bold text-cs-primary">
463
- {componentPerformance.metrics.renderTime.toFixed(2)}ms
464
- </p>
465
- <p className="text-sm text-cs-text-secondary">Render Time</p>
466
- </div>
467
- <div>
468
- <p className="text-2xl font-bold text-cs-secondary">
469
- {componentPerformance.metrics.memoryUsage.toFixed(1)}%
470
- </p>
471
- <p className="text-sm text-cs-text-secondary">Memory Usage</p>
472
- </div>
473
- <div>
474
- <p className="text-2xl font-bold text-cs-accent">
475
- {componentPerformance.metrics.reRenderCount}
476
- </p>
477
- <p className="text-sm text-cs-text-secondary">Re-render Count</p>
478
- </div>
479
- <div>
480
- <p className="text-2xl font-bold text-cs-primary">
481
- {componentPerformance.getPerformanceScore()}
482
- </p>
483
- <p className="text-sm text-cs-text-secondary">Performance Score</p>
484
- </div>
485
- </div>
486
-
487
- {/* Performance Controls */}
488
- <div className="flex gap-2">
489
- <Button
490
- variant="default"
491
- onClick={demonstratePerformance}
492
- disabled={componentPerformance.isOptimizing}
493
- >
494
- Demonstrate Performance
495
- </Button>
496
- <Button
497
- variant="outline"
498
- onClick={() => componentPerformance.clearOptimizations()}
499
- >
500
- Clear Optimizations
501
- </Button>
502
- </div>
503
-
504
- {/* Performance Analysis */}
505
- <div className="p-3 bg-cs-accent/10 rounded-lg">
506
- <h4 className="font-medium text-sm mb-2">Performance Analysis:</h4>
507
- <div className="grid grid-cols-2 gap-4 text-sm">
508
- <div>
509
- <span className="font-medium">Needs Optimization:</span>
510
- <div className="text-cs-text-secondary">
511
- {componentPerformance.analyzePerformance().needsOptimization ? 'Yes' : 'No'}
512
- </div>
513
- </div>
514
- <div>
515
- <span className="font-medium">Optimization Score:</span>
516
- <div className="text-cs-text-secondary">
517
- {componentPerformance.analyzePerformance().optimizationScore.toFixed(1)}%
518
- </div>
519
- </div>
520
- </div>
521
- </div>
522
-
523
- {/* Performance Recommendations */}
524
- {componentPerformance.analyzePerformance().recommendations.length > 0 && (
525
- <div className="p-3 bg-blue-50 border border-blue-200 rounded-lg">
526
- <h4 className="font-medium text-sm mb-2 text-blue-800">Performance Recommendations:</h4>
527
- <ul className="text-xs text-blue-700 space-y-1">
528
- {componentPerformance.analyzePerformance().recommendations.map((recommendation, index) => (
529
- <li key={index}>• {recommendation}</li>
530
- ))}
531
- </ul>
532
- </div>
533
- )}
534
- </CardContent>
535
- </Card>
536
- )}
537
-
538
- {/* Mobile Optimization Tab */}
539
- {activeTab === 'mobile' && (
540
- <Card className="border-2 border-cs-accent">
541
- <CardHeader>
542
- <CardTitle className="text-xl flex items-center gap-2">
543
- 📱 Mobile Optimization
544
- <Badge variant={mobileOptimization.isMobileOptimized() ? 'default' : 'secondary'}>
545
- {mobileOptimization.isMobileOptimized() ? 'Optimized' : 'Not Optimized'}
546
- </Badge>
547
- </CardTitle>
548
- <CardDescription>
549
- Mobile-specific optimizations including touch optimization, performance optimization, battery optimization, and accessibility optimization
550
- </CardDescription>
551
- </CardHeader>
552
- <CardContent className="space-y-4">
553
- <div className="grid grid-cols-1 md:grid-cols-2 gap-6">
554
- <div className="space-y-3">
555
- <h4 className="font-medium">Device Information</h4>
556
- <div className="space-y-2">
557
- <div className="flex justify-between">
558
- <span className="text-sm">Device Type:</span>
559
- <Badge variant={mobileOptimization.state.isMobile ? 'default' : 'secondary'}>
560
- {mobileOptimization.state.isMobile ? 'Mobile' : 'Desktop'}
561
- </Badge>
562
- </div>
563
- <div className="flex justify-between">
564
- <span className="text-sm">Touch Device:</span>
565
- <Badge variant={mobileOptimization.state.isTouchDevice ? 'default' : 'secondary'}>
566
- {mobileOptimization.state.isTouchDevice ? 'Yes' : 'No'}
567
- </Badge>
568
- </div>
569
- <div className="flex justify-between">
570
- <span className="text-sm">Screen Size:</span>
571
- <Badge variant="outline">{mobileOptimization.state.screenSize}</Badge>
572
- </div>
573
- <div className="flex justify-between">
574
- <span className="text-sm">Orientation:</span>
575
- <Badge variant="outline">{mobileOptimization.state.orientation}</Badge>
576
- </div>
577
- </div>
578
- </div>
579
-
580
- <div className="space-y-3">
581
- <h4 className="font-medium">Optimization Status</h4>
582
- <div className="space-y-2">
583
- <div className="flex justify-between">
584
- <span className="text-sm">Touch Optimized:</span>
585
- <Badge variant="outline">{mobileOptimization.analyzeMobileOptimization().touchOptimized ? 'Yes' : 'No'}</Badge>
586
- </div>
587
- <div className="flex justify-between">
588
- <span className="text-sm">Performance Optimized:</span>
589
- <Badge variant="outline">{mobileOptimization.analyzeMobileOptimization().performanceOptimized ? 'Yes' : 'No'}</Badge>
590
- </div>
591
- <div className="flex justify-between">
592
- <span className="text-sm">Battery Optimized:</span>
593
- <Badge variant="outline">{mobileOptimization.analyzeMobileOptimization().batteryOptimized ? 'Yes' : 'No'}</Badge>
594
- </div>
595
- <div className="flex justify-between">
596
- <span className="text-sm">Accessibility Optimized:</span>
597
- <Badge variant="outline">{mobileOptimization.analyzeMobileOptimization().accessibilityOptimized ? 'Yes' : 'No'}</Badge>
598
- </div>
599
- </div>
600
- </div>
601
- </div>
602
-
603
- {/* Mobile Controls */}
604
- <div className="flex gap-2">
605
- <Button
606
- variant="default"
607
- onClick={demonstrateMobileOptimization}
608
- disabled={mobileOptimization.isOptimizing}
609
- >
610
- Demonstrate Mobile Optimization
611
- </Button>
612
- <Button
613
- variant="outline"
614
- onClick={() => mobileOptimization.clearOptimizations()}
615
- >
616
- Clear Optimizations
617
- </Button>
618
- </div>
619
-
620
- {/* Mobile Recommendations */}
621
- {mobileOptimization.analyzeMobileOptimization().recommendations.length > 0 && (
622
- <div className="p-3 bg-green-50 border border-green-200 rounded-lg">
623
- <h4 className="font-medium text-sm mb-2 text-green-800">Mobile Optimization Recommendations:</h4>
624
- <ul className="text-xs text-green-700 space-y-1">
625
- {mobileOptimization.analyzeMobileOptimization().recommendations.map((recommendation, index) => (
626
- <li key={index}>• {recommendation}</li>
627
- ))}
628
- </ul>
629
- </div>
630
- )}
631
- </CardContent>
632
- </Card>
633
- )}
634
-
635
- {/* Reusable Architecture Tab */}
636
- {activeTab === 'architecture' && (
637
- <Card className="border-2 border-cs-primary">
638
- <CardHeader>
639
- <CardTitle className="text-xl flex items-center gap-2">
640
- 🏗️ Reusable Component Architecture
641
- <Badge variant="outline">{reusableArchitecture.templates.length} Templates</Badge>
642
- </CardTitle>
643
- <CardDescription>
644
- Reusable component architecture including component composition, pattern sharing, style sharing, and behavior sharing
645
- </CardDescription>
646
- </CardHeader>
647
- <CardContent className="space-y-4">
648
- <div className="grid grid-cols-2 lg:grid-cols-4 gap-4 text-center">
649
- <div>
650
- <p className="text-2xl font-bold text-cs-primary">
651
- {reusableArchitecture.templates.length}
652
- </p>
653
- <p className="text-sm text-cs-text-secondary">Templates</p>
654
- </div>
655
- <div>
656
- <p className="text-2xl font-bold text-cs-secondary">
657
- {reusableArchitecture.sharedPatterns.length}
658
- </p>
659
- <p className="text-sm text-cs-text-secondary">Shared Patterns</p>
660
- </div>
661
- <div>
662
- <p className="text-2xl font-bold text-cs-accent">
663
- {reusableArchitecture.sharedStyles.length}
664
- </p>
665
- <p className="text-sm text-cs-text-secondary">Shared Styles</p>
666
- </div>
667
- <div>
668
- <p className="text-2xl font-bold text-cs-primary">
669
- {reusableArchitecture.sharedBehaviors.length}
670
- </p>
671
- <p className="text-sm text-cs-text-secondary">Shared Behaviors</p>
672
- </div>
673
- </div>
674
-
675
- {/* Architecture Controls */}
676
- <div className="flex gap-2">
677
- <Button
678
- variant="default"
679
- onClick={demonstrateArchitecture}
680
- disabled={reusableArchitecture.isOptimizing}
681
- >
682
- Demonstrate Architecture
683
- </Button>
684
- <Button
685
- variant="outline"
686
- onClick={() => reusableArchitecture.clearOptimizations()}
687
- >
688
- Clear Optimizations
689
- </Button>
690
- </div>
691
-
692
- {/* Architecture Analysis */}
693
- <div className="p-3 bg-cs-accent/10 rounded-lg">
694
- <h4 className="font-medium text-sm mb-2">Architecture Analysis:</h4>
695
- <div className="grid grid-cols-2 gap-4 text-sm">
696
- <div>
697
- <span className="font-medium">Composition Level:</span>
698
- <div className="text-cs-text-secondary">
699
- {reusableArchitecture.analyzeArchitecture().compositionLevel}
700
- </div>
701
- </div>
702
- <div>
703
- <span className="font-medium">Reusability Score:</span>
704
- <div className="text-cs-text-secondary">
705
- {reusableArchitecture.analyzeArchitecture().reusabilityScore.toFixed(1)}%
706
- </div>
707
- </div>
708
- </div>
709
- </div>
710
-
711
- {/* Architecture Recommendations */}
712
- {reusableArchitecture.analyzeArchitecture().recommendations.length > 0 && (
713
- <div className="p-3 bg-blue-50 border border-blue-200 rounded-lg">
714
- <h4 className="font-medium text-sm mb-2 text-blue-800">Architecture Recommendations:</h4>
715
- <ul className="text-xs text-blue-700 space-y-1">
716
- {reusableArchitecture.analyzeArchitecture().recommendations.map((recommendation, index) => (
717
- <li key={index}>• {recommendation}</li>
718
- ))}
719
- </ul>
720
- </div>
721
- )}
722
- </CardContent>
723
- </Card>
724
- )}
725
-
726
- {/* Accessibility Tab */}
727
- {activeTab === 'accessibility' && (
728
- <Card className="border-2 border-cs-secondary">
729
- <CardHeader>
730
- <CardTitle className="text-xl flex items-center gap-2">
731
- ♿ Accessibility Support
732
- <Badge variant={accessibilitySupport.isAccessibilityEnhanced() ? 'default' : 'secondary'}>
733
- {accessibilitySupport.isAccessibilityEnhanced() ? 'Enhanced' : 'Basic'}
734
- </Badge>
735
- </CardTitle>
736
- <CardDescription>
737
- Accessibility support including ARIA support, keyboard navigation, screen reader support, and focus management
738
- </CardDescription>
739
- </CardHeader>
740
- <CardContent className="space-y-4">
741
- <div className="grid grid-cols-1 md:grid-cols-2 gap-6">
742
- <div className="space-y-3">
743
- <h4 className="font-medium">Accessibility Features</h4>
744
- <div className="space-y-2">
745
- <div className="flex justify-between">
746
- <span className="text-sm">ARIA Support:</span>
747
- <Badge variant={accessibilitySupport.state.hasAriaLabels ? 'default' : 'secondary'}>
748
- {accessibilitySupport.state.hasAriaLabels ? 'Enabled' : 'Disabled'}
749
- </Badge>
750
- </div>
751
- <div className="flex justify-between">
752
- <span className="text-sm">Keyboard Navigation:</span>
753
- <Badge variant={accessibilitySupport.state.hasKeyboardNavigation ? 'default' : 'secondary'}>
754
- {accessibilitySupport.state.hasKeyboardNavigation ? 'Enabled' : 'Disabled'}
755
- </Badge>
756
- </div>
757
- <div className="flex justify-between">
758
- <span className="text-sm">Screen Reader:</span>
759
- <Badge variant={accessibilitySupport.state.hasScreenReaderSupport ? 'default' : 'secondary'}>
760
- {accessibilitySupport.state.hasScreenReaderSupport ? 'Enabled' : 'Disabled'}
761
- </Badge>
762
- </div>
763
- <div className="flex justify-between">
764
- <span className="text-sm">Focus Management:</span>
765
- <Badge variant={accessibilitySupport.state.hasFocusManagement ? 'default' : 'secondary'}>
766
- {accessibilitySupport.state.hasFocusManagement ? 'Enabled' : 'Disabled'}
767
- </Badge>
768
- </div>
769
- </div>
770
- </div>
771
-
772
- <div className="space-y-3">
773
- <h4 className="font-medium">Accessibility Preferences</h4>
774
- <div className="space-y-2">
775
- <div className="flex justify-between">
776
- <span className="text-sm">High Contrast:</span>
777
- <Badge variant={accessibilitySupport.state.isHighContrast ? 'default' : 'secondary'}>
778
- {accessibilitySupport.state.isHighContrast ? 'Enabled' : 'Disabled'}
779
- </Badge>
780
- </div>
781
- <div className="flex justify-between">
782
- <span className="text-sm">Reduced Motion:</span>
783
- <Badge variant={accessibilitySupport.state.isReducedMotion ? 'default' : 'secondary'}>
784
- {accessibilitySupport.state.isReducedMotion ? 'Enabled' : 'Disabled'}
785
- </Badge>
786
- </div>
787
- <div className="flex justify-between">
788
- <span className="text-sm">Voice Control:</span>
789
- <Badge variant={accessibilitySupport.state.isVoiceControlEnabled ? 'default' : 'secondary'}>
790
- {accessibilitySupport.state.isVoiceControlEnabled ? 'Enabled' : 'Disabled'}
791
- </Badge>
792
- </div>
793
- <div className="flex justify-between">
794
- <span className="text-sm">Accessibility Level:</span>
795
- <Badge variant="outline">{accessibilitySupport.state.accessibilityLevel}</Badge>
796
- </div>
797
- </div>
798
- </div>
799
- </div>
800
-
801
- {/* Accessibility Controls */}
802
- <div className="flex gap-2">
803
- <Button
804
- variant="default"
805
- onClick={demonstrateAccessibility}
806
- disabled={accessibilitySupport.isEnhancing}
807
- >
808
- Demonstrate Accessibility
809
- </Button>
810
- <Button
811
- variant="outline"
812
- onClick={() => accessibilitySupport.clearEnhancements()}
813
- >
814
- Clear Enhancements
815
- </Button>
816
- </div>
817
-
818
- {/* Accessibility Analysis */}
819
- <div className="p-3 bg-cs-accent/10 rounded-lg">
820
- <h4 className="font-medium text-sm mb-2">Accessibility Analysis:</h4>
821
- <div className="grid grid-cols-2 gap-4 text-sm">
822
- <div>
823
- <span className="font-medium">Accessibility Level:</span>
824
- <div className="text-cs-text-secondary">
825
- {accessibilitySupport.analyzeAccessibility().level}
826
- </div>
827
- </div>
828
- <div>
829
- <span className="font-medium">Feature Coverage:</span>
830
- <div className="text-cs-text-secondary">
831
- {accessibilitySupport.analyzeAccessibility().coverage.toFixed(1)}%
832
- </div>
833
- </div>
834
- </div>
835
- </div>
836
-
837
- {/* Accessibility Recommendations */}
838
- {accessibilitySupport.analyzeAccessibility().recommendations.length > 0 && (
839
- <div className="p-3 bg-green-50 border border-green-200 rounded-lg">
840
- <h4 className="font-medium text-sm mb-2 text-green-800">Accessibility Recommendations:</h4>
841
- <ul className="text-xs text-green-700 space-y-1">
842
- {accessibilitySupport.analyzeAccessibility().recommendations.map((recommendation, index) => (
843
- <li key={index}>• {recommendation}</li>
844
- ))}
845
- </ul>
846
- </div>
847
- )}
848
-
849
- {/* Accessibility Warnings */}
850
- {accessibilitySupport.accessibilityWarnings.length > 0 && (
851
- <div className="p-3 bg-yellow-50 border border-yellow-200 rounded-lg">
852
- <h4 className="font-medium text-sm mb-2 text-yellow-800">Accessibility Warnings:</h4>
853
- <ul className="text-xs text-yellow-700 space-y-1">
854
- {accessibilitySupport.accessibilityWarnings.map((warning, index) => (
855
- <li key={index}>• {warning}</li>
856
- ))}
857
- </ul>
858
- </div>
859
- )}
860
- </CardContent>
861
- </Card>
862
- )}
863
-
864
- {/* Demo Controls */}
865
- <Card className="border border-cs-border">
866
- <CardHeader>
867
- <CardTitle className="text-lg">Demo Controls</CardTitle>
868
- <CardDescription>
869
- Configure and test different advanced component architecture features
870
- </CardDescription>
871
- </CardHeader>
872
- <CardContent className="space-y-4">
873
- <div className="flex flex-wrap gap-4">
874
- <Button
875
- variant={showPatternDemo ? 'default' : 'outline'}
876
- size="sm"
877
- onClick={() => setShowPatternDemo(!showPatternDemo)}
878
- >
879
- {showPatternDemo ? 'Hide' : 'Show'} Pattern Demo
880
- </Button>
881
- <Button
882
- variant={showPerformanceDemo ? 'default' : 'outline'}
883
- size="sm"
884
- onClick={() => setShowPerformanceDemo(!showPerformanceDemo)}
885
- >
886
- {showPerformanceDemo ? 'Hide' : 'Show'} Performance Demo
887
- </Button>
888
- <Button
889
- variant={showMobileDemo ? 'default' : 'outline'}
890
- size="sm"
891
- onClick={() => setShowMobileDemo(!showMobileDemo)}
892
- >
893
- {showMobileDemo ? 'Hide' : 'Show'} Mobile Demo
894
- </Button>
895
- <Button
896
- variant={showArchitectureDemo ? 'default' : 'outline'}
897
- size="sm"
898
- onClick={() => setShowArchitectureDemo(!showArchitectureDemo)}
899
- >
900
- {showArchitectureDemo ? 'Hide' : 'Show'} Architecture Demo
901
- </Button>
902
- <Button
903
- variant={showAccessibilityDemo ? 'default' : 'outline'}
904
- size="sm"
905
- onClick={() => setShowAccessibilityDemo(!showAccessibilityDemo)}
906
- >
907
- {showAccessibilityDemo ? 'Hide' : 'Show'} Accessibility Demo
908
- </Button>
909
- </div>
910
- </CardContent>
911
- </Card>
912
- </div>
913
- )
914
- }
915
-
916
- export default AdvancedComponentArchitectureDemo
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState, useCallback, useEffect } from 'react';
3
+ import { Card, CardContent, CardDescription, CardHeader, CardTitle } from './card';
4
+ import { Badge } from './badge';
5
+ import { Button } from './button';
6
+ import { useAdvancedPatterns } from '../../hooks/use-advanced-patterns';
7
+ import { useComponentPerformance } from '../../hooks/use-component-performance';
8
+ import { useMobileOptimization } from '../../hooks/use-mobile-optimization';
9
+ import { useReusableArchitecture } from '../../hooks/use-reusable-architecture';
10
+ import { useAccessibilitySupport } from '../../hooks/use-accessibility-support';
11
+ export const AdvancedComponentArchitectureDemo = () => {
12
+ const [activeTab, setActiveTab] = useState('patterns');
13
+ const [showPatternDemo, setShowPatternDemo] = useState(true);
14
+ const [showPerformanceDemo, setShowPerformanceDemo] = useState(true);
15
+ const [showMobileDemo, setShowMobileDemo] = useState(true);
16
+ const [showArchitectureDemo, setShowArchitectureDemo] = useState(true);
17
+ const [showAccessibilityDemo, setShowAccessibilityDemo] = useState(true);
18
+ // Hooks
19
+ const advancedPatterns = useAdvancedPatterns({
20
+ enableCompoundComponents: true,
21
+ enableRenderProps: true,
22
+ enableHigherOrderComponents: true,
23
+ enableCustomHooks: true,
24
+ enablePerformanceOptimization: true,
25
+ enableAccessibilitySupport: true
26
+ }, {
27
+ onPatternApplied: (pattern, component) => console.log('Pattern applied:', pattern, component),
28
+ onPerformanceOptimized: (optimization) => console.log('Performance optimized:', optimization),
29
+ onAccessibilityEnhanced: (feature) => console.log('Accessibility enhanced:', feature)
30
+ });
31
+ const componentPerformance = useComponentPerformance({
32
+ enableMemoization: true,
33
+ enableLazyLoading: true,
34
+ enableVirtualization: true,
35
+ enablePerformanceMonitoring: true,
36
+ enableAutoOptimization: true
37
+ }, {
38
+ onPerformanceWarning: (metrics) => console.log('Performance warning:', metrics),
39
+ onOptimizationApplied: (type, component) => console.log('Optimization applied:', type, component),
40
+ onPerformanceImproved: (improvement) => console.log('Performance improved:', improvement),
41
+ onMemoryWarning: (usage) => console.log('Memory warning:', usage)
42
+ });
43
+ const mobileOptimization = useMobileOptimization({
44
+ enableTouchOptimization: true,
45
+ enablePerformanceOptimization: true,
46
+ enableBatteryOptimization: true,
47
+ enableAccessibilityOptimization: true,
48
+ enableResponsiveOptimization: true
49
+ }, {
50
+ onMobileOptimized: (optimization) => console.log('Mobile optimized:', optimization),
51
+ onTouchOptimized: (feature) => console.log('Touch optimized:', feature),
52
+ onPerformanceOptimized: (improvement) => console.log('Performance optimized:', improvement),
53
+ onBatteryOptimized: (strategy) => console.log('Battery optimized:', strategy),
54
+ onAccessibilityEnhanced: (feature) => console.log('Accessibility enhanced:', feature)
55
+ });
56
+ const reusableArchitecture = useReusableArchitecture({
57
+ enableComponentComposition: true,
58
+ enablePatternSharing: true,
59
+ enableStyleSharing: true,
60
+ enableBehaviorSharing: true,
61
+ enableTemplateSystem: true,
62
+ enableComponentRegistry: true
63
+ }, {
64
+ onTemplateCreated: (template) => console.log('Template created:', template),
65
+ onPatternShared: (pattern) => console.log('Pattern shared:', pattern),
66
+ onStyleShared: (style) => console.log('Style shared:', style),
67
+ onBehaviorShared: (behavior) => console.log('Behavior shared:', behavior),
68
+ onArchitectureOptimized: (optimization) => console.log('Architecture optimized:', optimization)
69
+ });
70
+ const accessibilitySupport = useAccessibilitySupport({
71
+ enableAriaSupport: true,
72
+ enableKeyboardNavigation: true,
73
+ enableScreenReaderSupport: true,
74
+ enableFocusManagement: true,
75
+ enableHighContrast: true,
76
+ enableReducedMotion: true,
77
+ enableVoiceControl: true
78
+ }, {
79
+ onAriaEnhanced: (feature) => console.log('ARIA enhanced:', feature),
80
+ onKeyboardNavigationEnabled: (feature) => console.log('Keyboard navigation enabled:', feature),
81
+ onScreenReaderEnhanced: (feature) => console.log('Screen reader enhanced:', feature),
82
+ onFocusManagementImproved: (feature) => console.log('Focus management improved:', feature),
83
+ onAccessibilityWarning: (warning) => console.log('Accessibility warning:', warning)
84
+ });
85
+ // Demo functions
86
+ const demonstratePatterns = useCallback(() => {
87
+ // Demonstrate compound components
88
+ const BaseComponent = () => _jsx("div", { children: "Base Component" });
89
+ const SubComponent = () => _jsx("div", { children: "Sub Component" });
90
+ const compoundComponent = advancedPatterns.createCompoundComponent(BaseComponent, {
91
+ Sub: SubComponent
92
+ });
93
+ // Demonstrate render props
94
+ const renderPropsData = { message: 'Hello from Render Props!' };
95
+ const renderPropsComponent = advancedPatterns.createRenderPropsComponent({
96
+ data: renderPropsData,
97
+ loading: false,
98
+ error: null,
99
+ render: (data) => _jsxs("div", { children: ["Render Props: ", data.message] })
100
+ });
101
+ // Demonstrate higher-order components
102
+ const enhancedComponent = advancedPatterns.createHigherOrderComponent({
103
+ component: BaseComponent,
104
+ props: { enhanced: true },
105
+ enhancers: [
106
+ (Component) => (props) => _jsx("div", { className: "enhanced", children: _jsx(Component, { ...props }) })
107
+ ]
108
+ });
109
+ // Demonstrate custom hooks
110
+ const customHookResult = advancedPatterns.createCustomHook('DemoHook', () => 'Custom Hook Result');
111
+ console.log('Patterns demonstrated:', {
112
+ compoundComponent,
113
+ renderPropsComponent,
114
+ enhancedComponent,
115
+ customHookResult
116
+ });
117
+ }, [advancedPatterns]);
118
+ const demonstratePerformance = useCallback(() => {
119
+ // Demonstrate memoization
120
+ const memoizedValue = componentPerformance.memoizeValue('demo', 'expensive calculation result', ['dependency1', 'dependency2']);
121
+ // Demonstrate lazy loading
122
+ const lazyComponent = componentPerformance.lazyLoadComponent('DemoComponent', () => Promise.resolve({ default: () => _jsx("div", { children: "Lazy Loaded Component" }) }));
123
+ // Demonstrate virtualization
124
+ const items = Array.from({ length: 1000 }, (_, i) => `Item ${i}`);
125
+ const virtualizedList = componentPerformance.createVirtualizedList(items, 50, 400, (item, index) => _jsx("div", { className: "p-2 border", children: item }, index));
126
+ // Demonstrate performance measurement
127
+ const stopMeasurement = componentPerformance.startRenderMeasurement();
128
+ setTimeout(stopMeasurement, 100);
129
+ // Demonstrate auto-optimization
130
+ componentPerformance.autoOptimize('DemoComponent');
131
+ console.log('Performance optimizations demonstrated:', {
132
+ memoizedValue,
133
+ lazyComponent,
134
+ virtualizedList
135
+ });
136
+ }, [componentPerformance]);
137
+ const demonstrateMobileOptimization = useCallback(() => {
138
+ // Demonstrate touch optimization
139
+ mobileOptimization.optimizeTouchTargets();
140
+ // Demonstrate performance optimization
141
+ mobileOptimization.optimizePerformance();
142
+ // Demonstrate battery optimization
143
+ mobileOptimization.optimizeBattery();
144
+ // Demonstrate accessibility optimization
145
+ mobileOptimization.optimizeAccessibility();
146
+ // Demonstrate responsive optimization
147
+ mobileOptimization.optimizeResponsive();
148
+ // Demonstrate component-specific optimization
149
+ mobileOptimization.optimizeComponentForMobile('DemoComponent', 'touch');
150
+ mobileOptimization.optimizeComponentForMobile('DemoComponent', 'performance');
151
+ mobileOptimization.optimizeComponentForMobile('DemoComponent', 'battery');
152
+ mobileOptimization.optimizeComponentForMobile('DemoComponent', 'accessibility');
153
+ mobileOptimization.optimizeComponentForMobile('DemoComponent', 'responsive');
154
+ }, [mobileOptimization]);
155
+ const demonstrateArchitecture = useCallback(() => {
156
+ // Demonstrate component composition
157
+ const BaseComponent = () => _jsx("div", { children: "Base Component" });
158
+ const enhancedComponent = reusableArchitecture.composeComponent(BaseComponent, [
159
+ (Component) => (props) => _jsx("div", { className: "enhanced", children: _jsx(Component, { ...props }) }),
160
+ (Component) => (props) => _jsx("div", { className: "wrapped", children: _jsx(Component, { ...props }) })
161
+ ]);
162
+ // Demonstrate template creation
163
+ const templateId = reusableArchitecture.createTemplate({
164
+ name: 'Demo Template',
165
+ component: BaseComponent,
166
+ props: { demo: true },
167
+ styles: { padding: '1rem' },
168
+ behaviors: ['clickable', 'hoverable'],
169
+ patterns: ['compound', 'enhanced']
170
+ });
171
+ // Demonstrate pattern sharing
172
+ const patternId = reusableArchitecture.sharePattern({
173
+ name: 'Demo Pattern',
174
+ description: 'A demonstration pattern',
175
+ implementation: 'Pattern implementation details',
176
+ usage: ['Component1', 'Component2'],
177
+ category: 'composition'
178
+ });
179
+ // Demonstrate style sharing
180
+ const styleId = reusableArchitecture.shareStyle({
181
+ name: 'Demo Style',
182
+ css: '.demo-style { color: blue; }',
183
+ variables: { '--demo-color': 'blue' },
184
+ breakpoints: { mobile: 'max-width: 768px' },
185
+ usage: ['Component1']
186
+ });
187
+ // Demonstrate behavior sharing
188
+ const behaviorId = reusableArchitecture.shareBehavior({
189
+ name: 'Demo Behavior',
190
+ description: 'A demonstration behavior',
191
+ hook: 'useDemoBehavior',
192
+ dependencies: ['react'],
193
+ usage: ['Component1']
194
+ });
195
+ // Demonstrate component registry
196
+ reusableArchitecture.registerComponent('DemoComponent', BaseComponent, {
197
+ name: 'Demo Component',
198
+ description: 'A demonstration component',
199
+ category: 'demo',
200
+ tags: ['demo', 'example']
201
+ });
202
+ console.log('Architecture demonstrated:', {
203
+ enhancedComponent,
204
+ templateId,
205
+ patternId,
206
+ styleId,
207
+ behaviorId
208
+ });
209
+ }, [reusableArchitecture]);
210
+ const demonstrateAccessibility = useCallback(() => {
211
+ // Demonstrate ARIA support
212
+ accessibilitySupport.enhanceAriaSupport('DemoElement', {
213
+ 'aria-label': 'Demo Element',
214
+ 'aria-describedby': 'demo-description',
215
+ 'role': 'button'
216
+ });
217
+ // Demonstrate keyboard navigation
218
+ accessibilitySupport.enableKeyboardNavigation('DemoElement', {
219
+ 'Enter': 'Activate',
220
+ 'Space': 'Toggle',
221
+ 'Tab': 'Navigate'
222
+ });
223
+ // Demonstrate screen reader support
224
+ accessibilitySupport.enhanceScreenReaderSupport('DemoElement', 'This is a demo element for screen readers');
225
+ // Demonstrate focus management
226
+ accessibilitySupport.improveFocusManagement('DemoElement', 'trap');
227
+ // Demonstrate high contrast
228
+ accessibilitySupport.enableHighContrast();
229
+ // Demonstrate reduced motion
230
+ accessibilitySupport.enableReducedMotion();
231
+ // Demonstrate voice control
232
+ accessibilitySupport.enableVoiceControl();
233
+ // Demonstrate auto-enhancement
234
+ accessibilitySupport.autoEnhanceAccessibility();
235
+ }, [accessibilitySupport]);
236
+ // Auto-demonstrate all features
237
+ useEffect(() => {
238
+ const timer = setTimeout(() => {
239
+ demonstratePatterns();
240
+ demonstratePerformance();
241
+ demonstrateMobileOptimization();
242
+ demonstrateArchitecture();
243
+ demonstrateAccessibility();
244
+ }, 1000);
245
+ return () => clearTimeout(timer);
246
+ }, [demonstratePatterns, demonstratePerformance, demonstrateMobileOptimization, demonstrateArchitecture, demonstrateAccessibility]);
247
+ const tabs = [
248
+ { id: 'patterns', label: 'Advanced Patterns', icon: '🧩' },
249
+ { id: 'performance', label: 'Performance', icon: '⚡' },
250
+ { id: 'mobile', label: 'Mobile Optimization', icon: '📱' },
251
+ { id: 'architecture', label: 'Reusable Architecture', icon: '🏗️' },
252
+ { id: 'accessibility', label: 'Accessibility', icon: '♿' }
253
+ ];
254
+ return (_jsxs("div", { className: "space-y-6", children: [_jsxs("div", { className: "text-center", children: [_jsx("h1", { className: "text-3xl font-bold text-cs-text-primary mb-2", children: "\uD83C\uDFD7\uFE0F Advanced Component Architecture & Patterns" }), _jsx("p", { className: "text-lg text-cs-text-secondary mb-4", children: "Story 10 Implementation - Sophisticated component patterns, performance optimization, mobile optimization, reusable architecture, and accessibility support" }), _jsxs("div", { className: "flex items-center justify-center gap-2", children: [_jsx(Badge, { variant: "default", children: "Story 10" }), _jsx(Badge, { variant: "outline", children: "Advanced Patterns" }), _jsx(Badge, { variant: "secondary", children: "Performance Optimized" }), _jsx(Badge, { variant: "outline", children: "Mobile First" }), _jsx(Badge, { variant: "secondary", children: "Reusable Architecture" }), _jsx(Badge, { variant: "outline", children: "Accessibility First" })] })] }), _jsx("div", { className: "flex flex-wrap gap-2 border-b pb-4", children: tabs.map((tab) => (_jsxs(Button, { variant: activeTab === tab.id ? 'default' : 'outline', size: "sm", onClick: () => setActiveTab(tab.id), className: "flex items-center gap-2", children: [_jsx("span", { children: tab.icon }), tab.label] }, tab.id))) }), activeTab === 'patterns' && (_jsxs(Card, { className: "border-2 border-cs-primary", children: [_jsxs(CardHeader, { children: [_jsxs(CardTitle, { className: "text-xl flex items-center gap-2", children: ["\uD83E\uDDE9 Advanced Component Patterns", _jsxs(Badge, { variant: "outline", children: [advancedPatterns.patterns.length, " Patterns"] })] }), _jsx(CardDescription, { children: "Advanced component patterns including compound components, render props, higher-order components, and custom hooks" })] }), _jsxs(CardContent, { className: "space-y-4", children: [_jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4", children: [_jsxs("div", { className: "space-y-3", children: [_jsx("h4", { className: "font-medium", children: "Pattern Status" }), _jsxs("div", { className: "space-y-2", children: [_jsxs("div", { className: "flex justify-between", children: [_jsx("span", { className: "text-sm", children: "Compound Components:" }), _jsx(Badge, { variant: advancedPatterns.hasPattern('Compound Components') ? 'default' : 'secondary', children: advancedPatterns.hasPattern('Compound Components') ? 'Active' : 'Inactive' })] }), _jsxs("div", { className: "flex justify-between", children: [_jsx("span", { className: "text-sm", children: "Render Props:" }), _jsx(Badge, { variant: advancedPatterns.hasPattern('Render Props') ? 'default' : 'secondary', children: advancedPatterns.hasPattern('Render Props') ? 'Active' : 'Inactive' })] }), _jsxs("div", { className: "flex justify-between", children: [_jsx("span", { className: "text-sm", children: "Higher-Order Components:" }), _jsx(Badge, { variant: advancedPatterns.hasPattern('Higher-Order Components') ? 'default' : 'secondary', children: advancedPatterns.hasPattern('Higher-Order Components') ? 'Active' : 'Inactive' })] }), _jsxs("div", { className: "flex justify-between", children: [_jsx("span", { className: "text-sm", children: "Custom Hooks:" }), _jsx(Badge, { variant: advancedPatterns.hasPattern('Custom Hooks') ? 'default' : 'secondary', children: advancedPatterns.hasPattern('Custom Hooks') ? 'Active' : 'Inactive' })] })] })] }), _jsxs("div", { className: "space-y-3", children: [_jsx("h4", { className: "font-medium", children: "Pattern Analysis" }), _jsxs("div", { className: "space-y-2", children: [_jsxs("div", { className: "flex justify-between", children: [_jsx("span", { className: "text-sm", children: "Total Patterns:" }), _jsx("span", { className: "text-sm text-cs-text-secondary", children: advancedPatterns.patterns.length })] }), _jsxs("div", { className: "flex justify-between", children: [_jsx("span", { className: "text-sm", children: "Unique Patterns:" }), _jsx("span", { className: "text-sm text-cs-text-secondary", children: advancedPatterns.analyzePatterns().uniquePatterns })] }), _jsxs("div", { className: "flex justify-between", children: [_jsx("span", { className: "text-sm", children: "Optimization Level:" }), _jsx(Badge, { variant: "outline", children: advancedPatterns.patterns.length > 0 ? 'Optimized' : 'Not Optimized' })] })] })] })] }), _jsxs("div", { className: "flex gap-2", children: [_jsx(Button, { variant: "default", onClick: demonstratePatterns, disabled: advancedPatterns.isOptimizing, children: "Demonstrate Patterns" }), _jsx(Button, { variant: "outline", onClick: () => advancedPatterns.clearPatterns(), children: "Clear Patterns" })] }), advancedPatterns.getPatternRecommendations().length > 0 && (_jsxs("div", { className: "p-3 bg-cs-accent/10 rounded-lg", children: [_jsx("h4", { className: "font-medium text-sm mb-2", children: "Pattern Recommendations:" }), _jsx("ul", { className: "text-xs text-cs-text-secondary space-y-1", children: advancedPatterns.getPatternRecommendations().map((recommendation, index) => (_jsxs("li", { children: ["\u2022 ", recommendation] }, index))) })] })), advancedPatterns.validatePatterns().warnings.length > 0 && (_jsxs("div", { className: "p-3 bg-yellow-50 border border-yellow-200 rounded-lg", children: [_jsx("h4", { className: "font-medium text-sm mb-2 text-yellow-800", children: "Pattern Warnings:" }), _jsx("ul", { className: "text-xs text-yellow-700 space-y-1", children: advancedPatterns.validatePatterns().warnings.map((warning, index) => (_jsxs("li", { children: ["\u2022 ", warning] }, index))) })] }))] })] })), activeTab === 'performance' && (_jsxs(Card, { className: "border-2 border-cs-secondary", children: [_jsxs(CardHeader, { children: [_jsxs(CardTitle, { className: "text-xl flex items-center gap-2", children: ["\u26A1 Component Performance Optimization", _jsx(Badge, { variant: componentPerformance.isPerformanceOptimized() ? 'default' : 'secondary', children: componentPerformance.isPerformanceOptimized() ? 'Optimized' : 'Not Optimized' })] }), _jsx(CardDescription, { children: "Performance optimization including memoization, lazy loading, virtualization, and performance monitoring" })] }), _jsxs(CardContent, { className: "space-y-4", children: [_jsxs("div", { className: "grid grid-cols-2 lg:grid-cols-4 gap-4 text-center", children: [_jsxs("div", { children: [_jsxs("p", { className: "text-2xl font-bold text-cs-primary", children: [componentPerformance.metrics.renderTime.toFixed(2), "ms"] }), _jsx("p", { className: "text-sm text-cs-text-secondary", children: "Render Time" })] }), _jsxs("div", { children: [_jsxs("p", { className: "text-2xl font-bold text-cs-secondary", children: [componentPerformance.metrics.memoryUsage.toFixed(1), "%"] }), _jsx("p", { className: "text-sm text-cs-text-secondary", children: "Memory Usage" })] }), _jsxs("div", { children: [_jsx("p", { className: "text-2xl font-bold text-cs-accent", children: componentPerformance.metrics.reRenderCount }), _jsx("p", { className: "text-sm text-cs-text-secondary", children: "Re-render Count" })] }), _jsxs("div", { children: [_jsx("p", { className: "text-2xl font-bold text-cs-primary", children: componentPerformance.getPerformanceScore() }), _jsx("p", { className: "text-sm text-cs-text-secondary", children: "Performance Score" })] })] }), _jsxs("div", { className: "flex gap-2", children: [_jsx(Button, { variant: "default", onClick: demonstratePerformance, disabled: componentPerformance.isOptimizing, children: "Demonstrate Performance" }), _jsx(Button, { variant: "outline", onClick: () => componentPerformance.clearOptimizations(), children: "Clear Optimizations" })] }), _jsxs("div", { className: "p-3 bg-cs-accent/10 rounded-lg", children: [_jsx("h4", { className: "font-medium text-sm mb-2", children: "Performance Analysis:" }), _jsxs("div", { className: "grid grid-cols-2 gap-4 text-sm", children: [_jsxs("div", { children: [_jsx("span", { className: "font-medium", children: "Needs Optimization:" }), _jsx("div", { className: "text-cs-text-secondary", children: componentPerformance.analyzePerformance().needsOptimization ? 'Yes' : 'No' })] }), _jsxs("div", { children: [_jsx("span", { className: "font-medium", children: "Optimization Score:" }), _jsxs("div", { className: "text-cs-text-secondary", children: [componentPerformance.analyzePerformance().optimizationScore.toFixed(1), "%"] })] })] })] }), componentPerformance.analyzePerformance().recommendations.length > 0 && (_jsxs("div", { className: "p-3 bg-blue-50 border border-blue-200 rounded-lg", children: [_jsx("h4", { className: "font-medium text-sm mb-2 text-blue-800", children: "Performance Recommendations:" }), _jsx("ul", { className: "text-xs text-blue-700 space-y-1", children: componentPerformance.analyzePerformance().recommendations.map((recommendation, index) => (_jsxs("li", { children: ["\u2022 ", recommendation] }, index))) })] }))] })] })), activeTab === 'mobile' && (_jsxs(Card, { className: "border-2 border-cs-accent", children: [_jsxs(CardHeader, { children: [_jsxs(CardTitle, { className: "text-xl flex items-center gap-2", children: ["\uD83D\uDCF1 Mobile Optimization", _jsx(Badge, { variant: mobileOptimization.isMobileOptimized() ? 'default' : 'secondary', children: mobileOptimization.isMobileOptimized() ? 'Optimized' : 'Not Optimized' })] }), _jsx(CardDescription, { children: "Mobile-specific optimizations including touch optimization, performance optimization, battery optimization, and accessibility optimization" })] }), _jsxs(CardContent, { className: "space-y-4", children: [_jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6", children: [_jsxs("div", { className: "space-y-3", children: [_jsx("h4", { className: "font-medium", children: "Device Information" }), _jsxs("div", { className: "space-y-2", children: [_jsxs("div", { className: "flex justify-between", children: [_jsx("span", { className: "text-sm", children: "Device Type:" }), _jsx(Badge, { variant: mobileOptimization.state.isMobile ? 'default' : 'secondary', children: mobileOptimization.state.isMobile ? 'Mobile' : 'Desktop' })] }), _jsxs("div", { className: "flex justify-between", children: [_jsx("span", { className: "text-sm", children: "Touch Device:" }), _jsx(Badge, { variant: mobileOptimization.state.isTouchDevice ? 'default' : 'secondary', children: mobileOptimization.state.isTouchDevice ? 'Yes' : 'No' })] }), _jsxs("div", { className: "flex justify-between", children: [_jsx("span", { className: "text-sm", children: "Screen Size:" }), _jsx(Badge, { variant: "outline", children: mobileOptimization.state.screenSize })] }), _jsxs("div", { className: "flex justify-between", children: [_jsx("span", { className: "text-sm", children: "Orientation:" }), _jsx(Badge, { variant: "outline", children: mobileOptimization.state.orientation })] })] })] }), _jsxs("div", { className: "space-y-3", children: [_jsx("h4", { className: "font-medium", children: "Optimization Status" }), _jsxs("div", { className: "space-y-2", children: [_jsxs("div", { className: "flex justify-between", children: [_jsx("span", { className: "text-sm", children: "Touch Optimized:" }), _jsx(Badge, { variant: "outline", children: mobileOptimization.analyzeMobileOptimization().touchOptimized ? 'Yes' : 'No' })] }), _jsxs("div", { className: "flex justify-between", children: [_jsx("span", { className: "text-sm", children: "Performance Optimized:" }), _jsx(Badge, { variant: "outline", children: mobileOptimization.analyzeMobileOptimization().performanceOptimized ? 'Yes' : 'No' })] }), _jsxs("div", { className: "flex justify-between", children: [_jsx("span", { className: "text-sm", children: "Battery Optimized:" }), _jsx(Badge, { variant: "outline", children: mobileOptimization.analyzeMobileOptimization().batteryOptimized ? 'Yes' : 'No' })] }), _jsxs("div", { className: "flex justify-between", children: [_jsx("span", { className: "text-sm", children: "Accessibility Optimized:" }), _jsx(Badge, { variant: "outline", children: mobileOptimization.analyzeMobileOptimization().accessibilityOptimized ? 'Yes' : 'No' })] })] })] })] }), _jsxs("div", { className: "flex gap-2", children: [_jsx(Button, { variant: "default", onClick: demonstrateMobileOptimization, disabled: mobileOptimization.isOptimizing, children: "Demonstrate Mobile Optimization" }), _jsx(Button, { variant: "outline", onClick: () => mobileOptimization.clearOptimizations(), children: "Clear Optimizations" })] }), mobileOptimization.analyzeMobileOptimization().recommendations.length > 0 && (_jsxs("div", { className: "p-3 bg-green-50 border border-green-200 rounded-lg", children: [_jsx("h4", { className: "font-medium text-sm mb-2 text-green-800", children: "Mobile Optimization Recommendations:" }), _jsx("ul", { className: "text-xs text-green-700 space-y-1", children: mobileOptimization.analyzeMobileOptimization().recommendations.map((recommendation, index) => (_jsxs("li", { children: ["\u2022 ", recommendation] }, index))) })] }))] })] })), activeTab === 'architecture' && (_jsxs(Card, { className: "border-2 border-cs-primary", children: [_jsxs(CardHeader, { children: [_jsxs(CardTitle, { className: "text-xl flex items-center gap-2", children: ["\uD83C\uDFD7\uFE0F Reusable Component Architecture", _jsxs(Badge, { variant: "outline", children: [reusableArchitecture.templates.length, " Templates"] })] }), _jsx(CardDescription, { children: "Reusable component architecture including component composition, pattern sharing, style sharing, and behavior sharing" })] }), _jsxs(CardContent, { className: "space-y-4", children: [_jsxs("div", { className: "grid grid-cols-2 lg:grid-cols-4 gap-4 text-center", children: [_jsxs("div", { children: [_jsx("p", { className: "text-2xl font-bold text-cs-primary", children: reusableArchitecture.templates.length }), _jsx("p", { className: "text-sm text-cs-text-secondary", children: "Templates" })] }), _jsxs("div", { children: [_jsx("p", { className: "text-2xl font-bold text-cs-secondary", children: reusableArchitecture.sharedPatterns.length }), _jsx("p", { className: "text-sm text-cs-text-secondary", children: "Shared Patterns" })] }), _jsxs("div", { children: [_jsx("p", { className: "text-2xl font-bold text-cs-accent", children: reusableArchitecture.sharedStyles.length }), _jsx("p", { className: "text-sm text-cs-text-secondary", children: "Shared Styles" })] }), _jsxs("div", { children: [_jsx("p", { className: "text-2xl font-bold text-cs-primary", children: reusableArchitecture.sharedBehaviors.length }), _jsx("p", { className: "text-sm text-cs-text-secondary", children: "Shared Behaviors" })] })] }), _jsxs("div", { className: "flex gap-2", children: [_jsx(Button, { variant: "default", onClick: demonstrateArchitecture, disabled: reusableArchitecture.isOptimizing, children: "Demonstrate Architecture" }), _jsx(Button, { variant: "outline", onClick: () => reusableArchitecture.clearOptimizations(), children: "Clear Optimizations" })] }), _jsxs("div", { className: "p-3 bg-cs-accent/10 rounded-lg", children: [_jsx("h4", { className: "font-medium text-sm mb-2", children: "Architecture Analysis:" }), _jsxs("div", { className: "grid grid-cols-2 gap-4 text-sm", children: [_jsxs("div", { children: [_jsx("span", { className: "font-medium", children: "Composition Level:" }), _jsx("div", { className: "text-cs-text-secondary", children: reusableArchitecture.analyzeArchitecture().compositionLevel })] }), _jsxs("div", { children: [_jsx("span", { className: "font-medium", children: "Reusability Score:" }), _jsxs("div", { className: "text-cs-text-secondary", children: [reusableArchitecture.analyzeArchitecture().reusabilityScore.toFixed(1), "%"] })] })] })] }), reusableArchitecture.analyzeArchitecture().recommendations.length > 0 && (_jsxs("div", { className: "p-3 bg-blue-50 border border-blue-200 rounded-lg", children: [_jsx("h4", { className: "font-medium text-sm mb-2 text-blue-800", children: "Architecture Recommendations:" }), _jsx("ul", { className: "text-xs text-blue-700 space-y-1", children: reusableArchitecture.analyzeArchitecture().recommendations.map((recommendation, index) => (_jsxs("li", { children: ["\u2022 ", recommendation] }, index))) })] }))] })] })), activeTab === 'accessibility' && (_jsxs(Card, { className: "border-2 border-cs-secondary", children: [_jsxs(CardHeader, { children: [_jsxs(CardTitle, { className: "text-xl flex items-center gap-2", children: ["\u267F Accessibility Support", _jsx(Badge, { variant: accessibilitySupport.isAccessibilityEnhanced() ? 'default' : 'secondary', children: accessibilitySupport.isAccessibilityEnhanced() ? 'Enhanced' : 'Basic' })] }), _jsx(CardDescription, { children: "Accessibility support including ARIA support, keyboard navigation, screen reader support, and focus management" })] }), _jsxs(CardContent, { className: "space-y-4", children: [_jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6", children: [_jsxs("div", { className: "space-y-3", children: [_jsx("h4", { className: "font-medium", children: "Accessibility Features" }), _jsxs("div", { className: "space-y-2", children: [_jsxs("div", { className: "flex justify-between", children: [_jsx("span", { className: "text-sm", children: "ARIA Support:" }), _jsx(Badge, { variant: accessibilitySupport.state.hasAriaLabels ? 'default' : 'secondary', children: accessibilitySupport.state.hasAriaLabels ? 'Enabled' : 'Disabled' })] }), _jsxs("div", { className: "flex justify-between", children: [_jsx("span", { className: "text-sm", children: "Keyboard Navigation:" }), _jsx(Badge, { variant: accessibilitySupport.state.hasKeyboardNavigation ? 'default' : 'secondary', children: accessibilitySupport.state.hasKeyboardNavigation ? 'Enabled' : 'Disabled' })] }), _jsxs("div", { className: "flex justify-between", children: [_jsx("span", { className: "text-sm", children: "Screen Reader:" }), _jsx(Badge, { variant: accessibilitySupport.state.hasScreenReaderSupport ? 'default' : 'secondary', children: accessibilitySupport.state.hasScreenReaderSupport ? 'Enabled' : 'Disabled' })] }), _jsxs("div", { className: "flex justify-between", children: [_jsx("span", { className: "text-sm", children: "Focus Management:" }), _jsx(Badge, { variant: accessibilitySupport.state.hasFocusManagement ? 'default' : 'secondary', children: accessibilitySupport.state.hasFocusManagement ? 'Enabled' : 'Disabled' })] })] })] }), _jsxs("div", { className: "space-y-3", children: [_jsx("h4", { className: "font-medium", children: "Accessibility Preferences" }), _jsxs("div", { className: "space-y-2", children: [_jsxs("div", { className: "flex justify-between", children: [_jsx("span", { className: "text-sm", children: "High Contrast:" }), _jsx(Badge, { variant: accessibilitySupport.state.isHighContrast ? 'default' : 'secondary', children: accessibilitySupport.state.isHighContrast ? 'Enabled' : 'Disabled' })] }), _jsxs("div", { className: "flex justify-between", children: [_jsx("span", { className: "text-sm", children: "Reduced Motion:" }), _jsx(Badge, { variant: accessibilitySupport.state.isReducedMotion ? 'default' : 'secondary', children: accessibilitySupport.state.isReducedMotion ? 'Enabled' : 'Disabled' })] }), _jsxs("div", { className: "flex justify-between", children: [_jsx("span", { className: "text-sm", children: "Voice Control:" }), _jsx(Badge, { variant: accessibilitySupport.state.isVoiceControlEnabled ? 'default' : 'secondary', children: accessibilitySupport.state.isVoiceControlEnabled ? 'Enabled' : 'Disabled' })] }), _jsxs("div", { className: "flex justify-between", children: [_jsx("span", { className: "text-sm", children: "Accessibility Level:" }), _jsx(Badge, { variant: "outline", children: accessibilitySupport.state.accessibilityLevel })] })] })] })] }), _jsxs("div", { className: "flex gap-2", children: [_jsx(Button, { variant: "default", onClick: demonstrateAccessibility, disabled: accessibilitySupport.isEnhancing, children: "Demonstrate Accessibility" }), _jsx(Button, { variant: "outline", onClick: () => accessibilitySupport.clearEnhancements(), children: "Clear Enhancements" })] }), _jsxs("div", { className: "p-3 bg-cs-accent/10 rounded-lg", children: [_jsx("h4", { className: "font-medium text-sm mb-2", children: "Accessibility Analysis:" }), _jsxs("div", { className: "grid grid-cols-2 gap-4 text-sm", children: [_jsxs("div", { children: [_jsx("span", { className: "font-medium", children: "Accessibility Level:" }), _jsx("div", { className: "text-cs-text-secondary", children: accessibilitySupport.analyzeAccessibility().level })] }), _jsxs("div", { children: [_jsx("span", { className: "font-medium", children: "Feature Coverage:" }), _jsxs("div", { className: "text-cs-text-secondary", children: [accessibilitySupport.analyzeAccessibility().coverage.toFixed(1), "%"] })] })] })] }), accessibilitySupport.analyzeAccessibility().recommendations.length > 0 && (_jsxs("div", { className: "p-3 bg-green-50 border border-green-200 rounded-lg", children: [_jsx("h4", { className: "font-medium text-sm mb-2 text-green-800", children: "Accessibility Recommendations:" }), _jsx("ul", { className: "text-xs text-green-700 space-y-1", children: accessibilitySupport.analyzeAccessibility().recommendations.map((recommendation, index) => (_jsxs("li", { children: ["\u2022 ", recommendation] }, index))) })] })), accessibilitySupport.accessibilityWarnings.length > 0 && (_jsxs("div", { className: "p-3 bg-yellow-50 border border-yellow-200 rounded-lg", children: [_jsx("h4", { className: "font-medium text-sm mb-2 text-yellow-800", children: "Accessibility Warnings:" }), _jsx("ul", { className: "text-xs text-yellow-700 space-y-1", children: accessibilitySupport.accessibilityWarnings.map((warning, index) => (_jsxs("li", { children: ["\u2022 ", warning] }, index))) })] }))] })] })), _jsxs(Card, { className: "border border-cs-border", children: [_jsxs(CardHeader, { children: [_jsx(CardTitle, { className: "text-lg", children: "Demo Controls" }), _jsx(CardDescription, { children: "Configure and test different advanced component architecture features" })] }), _jsx(CardContent, { className: "space-y-4", children: _jsxs("div", { className: "flex flex-wrap gap-4", children: [_jsxs(Button, { variant: showPatternDemo ? 'default' : 'outline', size: "sm", onClick: () => setShowPatternDemo(!showPatternDemo), children: [showPatternDemo ? 'Hide' : 'Show', " Pattern Demo"] }), _jsxs(Button, { variant: showPerformanceDemo ? 'default' : 'outline', size: "sm", onClick: () => setShowPerformanceDemo(!showPerformanceDemo), children: [showPerformanceDemo ? 'Hide' : 'Show', " Performance Demo"] }), _jsxs(Button, { variant: showMobileDemo ? 'default' : 'outline', size: "sm", onClick: () => setShowMobileDemo(!showMobileDemo), children: [showMobileDemo ? 'Hide' : 'Show', " Mobile Demo"] }), _jsxs(Button, { variant: showArchitectureDemo ? 'default' : 'outline', size: "sm", onClick: () => setShowArchitectureDemo(!showArchitectureDemo), children: [showArchitectureDemo ? 'Hide' : 'Show', " Architecture Demo"] }), _jsxs(Button, { variant: showAccessibilityDemo ? 'default' : 'outline', size: "sm", onClick: () => setShowAccessibilityDemo(!showAccessibilityDemo), children: [showAccessibilityDemo ? 'Hide' : 'Show', " Accessibility Demo"] })] }) })] })] }));
255
+ };
256
+ export default AdvancedComponentArchitectureDemo;