@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,496 +1,356 @@
1
- import { ColorThemeConfig, MultiThemeConfig } from './types';
2
-
3
- // High contrast theme configuration
4
- export interface HighContrastThemeConfig extends MultiThemeConfig {
5
- highContrast: {
6
- enabled: boolean;
7
- contrastRatio: number; // Target contrast ratio (WCAG AAA = 7.0)
8
- enhancedColors: boolean; // Use enhanced color palette
9
- borderEmphasis: boolean; // Add borders for better definition
10
- textEmphasis: boolean; // Enhanced text styling
11
- focusIndicators: boolean; // Enhanced focus indicators
12
- };
13
- }
14
-
15
1
  // High contrast color utilities
16
2
  export class HighContrastColors {
17
- // WCAG contrast ratio calculation
18
- static calculateContrastRatio(foreground: string, background: string): number {
19
- const fgLuminance = this.getLuminance(foreground);
20
- const bgLuminance = this.getLuminance(background);
21
-
22
- const lighter = Math.max(fgLuminance, bgLuminance);
23
- const darker = Math.min(fgLuminance, bgLuminance);
24
-
25
- return (lighter + 0.05) / (darker + 0.05);
26
- }
27
-
28
- // Get relative luminance of a color
29
- private static getLuminance(color: string): number {
30
- const rgb = this.hexToRgb(color);
31
- if (!rgb) return 0;
32
-
33
- const { r, g, b } = rgb;
34
-
35
- const rsRGB = r / 255;
36
- const gsRGB = g / 255;
37
- const bsRGB = b / 255;
38
-
39
- const rL = rsRGB <= 0.03928 ? rsRGB / 12.92 : Math.pow((rsRGB + 0.055) / 1.055, 2.4);
40
- const gL = gsRGB <= 0.03928 ? gsRGB / 12.92 : Math.pow((gsRGB + 0.055) / 1.055, 2.4);
41
- const bL = bsRGB <= 0.03928 ? bsRGB / 12.92 : Math.pow((bsRGB + 0.055) / 1.055, 2.4);
42
-
43
- return 0.2126 * rL + 0.7152 * gL + 0.0722 * bL;
44
- }
45
-
46
- // Convert hex color to RGB
47
- private static hexToRgb(hex: string): { r: number; g: number; b: number } | null {
48
- const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
49
- if (!result) return null;
50
-
51
- return {
52
- r: parseInt(result[1], 16),
53
- g: parseInt(result[2], 16),
54
- b: parseInt(result[3], 16)
55
- };
56
- }
57
-
58
- // Check if contrast ratio meets WCAG requirements
59
- static meetsWCAGRequirements(foreground: string, background: string, level: 'AA' | 'AAA' = 'AA'): boolean {
60
- const ratio = this.calculateContrastRatio(foreground, background);
61
- const requiredRatio = level === 'AA' ? 4.5 : 7.0;
62
-
63
- return ratio >= requiredRatio;
64
- }
65
-
66
- // Generate high contrast color variants
67
- static generateHighContrastVariants(baseColor: string, backgroundColor: string, targetRatio: number = 7.0): string[] {
68
- const variants: string[] = [];
69
-
70
- // Generate lighter and darker variants
71
- for (let i = 1; i <= 10; i++) {
72
- const lighter = this.adjustColorBrightness(baseColor, i * 0.1);
73
- const darker = this.adjustColorBrightness(baseColor, -i * 0.1);
74
-
75
- if (this.calculateContrastRatio(lighter, backgroundColor) >= targetRatio) {
76
- variants.push(lighter);
77
- }
78
-
79
- if (this.calculateContrastRatio(darker, backgroundColor) >= targetRatio) {
80
- variants.push(darker);
81
- }
3
+ // WCAG contrast ratio calculation
4
+ static calculateContrastRatio(foreground, background) {
5
+ const fgLuminance = this.getLuminance(foreground);
6
+ const bgLuminance = this.getLuminance(background);
7
+ const lighter = Math.max(fgLuminance, bgLuminance);
8
+ const darker = Math.min(fgLuminance, bgLuminance);
9
+ return (lighter + 0.05) / (darker + 0.05);
82
10
  }
83
-
84
- return variants;
85
- }
86
-
87
- // Adjust color brightness
88
- private static adjustColorBrightness(color: string, factor: number): string {
89
- const rgb = this.hexToRgb(color);
90
- if (!rgb) return color;
91
-
92
- const { r, g, b } = rgb;
93
-
94
- const newR = Math.max(0, Math.min(255, Math.round(r + (255 - r) * factor)));
95
- const newG = Math.max(0, Math.min(255, Math.round(g + (255 - g) * factor)));
96
- const newB = Math.max(0, Math.min(255, Math.round(b + (255 - b) * factor)));
97
-
98
- return `#${newR.toString(16).padStart(2, '0')}${newG.toString(16).padStart(2, '0')}${newB.toString(16).padStart(2, '0')}`;
99
- }
100
-
101
- // Find best high contrast color
102
- static findBestHighContrastColor(foreground: string, background: string, targetRatio: number = 7.0): string {
103
- const ratio = this.calculateContrastRatio(foreground, background);
104
-
105
- if (ratio >= targetRatio) {
106
- return foreground;
107
- }
108
-
109
- // Try lighter variants first
110
- for (let i = 1; i <= 20; i++) {
111
- const lighter = this.adjustColorBrightness(foreground, i * 0.05);
112
- if (this.calculateContrastRatio(lighter, background) >= targetRatio) {
113
- return lighter;
114
- }
11
+ // Get relative luminance of a color
12
+ static getLuminance(color) {
13
+ const rgb = this.hexToRgb(color);
14
+ if (!rgb)
15
+ return 0;
16
+ const { r, g, b } = rgb;
17
+ const rsRGB = r / 255;
18
+ const gsRGB = g / 255;
19
+ const bsRGB = b / 255;
20
+ const rL = rsRGB <= 0.03928 ? rsRGB / 12.92 : Math.pow((rsRGB + 0.055) / 1.055, 2.4);
21
+ const gL = gsRGB <= 0.03928 ? gsRGB / 12.92 : Math.pow((gsRGB + 0.055) / 1.055, 2.4);
22
+ const bL = bsRGB <= 0.03928 ? bsRGB / 12.92 : Math.pow((bsRGB + 0.055) / 1.055, 2.4);
23
+ return 0.2126 * rL + 0.7152 * gL + 0.0722 * bL;
115
24
  }
116
-
117
- // Try darker variants
118
- for (let i = 1; i <= 20; i++) {
119
- const darker = this.adjustColorBrightness(foreground, -i * 0.05);
120
- if (this.calculateContrastRatio(darker, background) >= targetRatio) {
121
- return darker;
122
- }
25
+ // Convert hex color to RGB
26
+ static hexToRgb(hex) {
27
+ const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
28
+ if (!result)
29
+ return null;
30
+ return {
31
+ r: parseInt(result[1], 16),
32
+ g: parseInt(result[2], 16),
33
+ b: parseInt(result[3], 16)
34
+ };
35
+ }
36
+ // Check if contrast ratio meets WCAG requirements
37
+ static meetsWCAGRequirements(foreground, background, level = 'AA') {
38
+ const ratio = this.calculateContrastRatio(foreground, background);
39
+ const requiredRatio = level === 'AA' ? 4.5 : 7.0;
40
+ return ratio >= requiredRatio;
41
+ }
42
+ // Generate high contrast color variants
43
+ static generateHighContrastVariants(baseColor, backgroundColor, targetRatio = 7.0) {
44
+ const variants = [];
45
+ // Generate lighter and darker variants
46
+ for (let i = 1; i <= 10; i++) {
47
+ const lighter = this.adjustColorBrightness(baseColor, i * 0.1);
48
+ const darker = this.adjustColorBrightness(baseColor, -i * 0.1);
49
+ if (this.calculateContrastRatio(lighter, backgroundColor) >= targetRatio) {
50
+ variants.push(lighter);
51
+ }
52
+ if (this.calculateContrastRatio(darker, backgroundColor) >= targetRatio) {
53
+ variants.push(darker);
54
+ }
55
+ }
56
+ return variants;
57
+ }
58
+ // Adjust color brightness
59
+ static adjustColorBrightness(color, factor) {
60
+ const rgb = this.hexToRgb(color);
61
+ if (!rgb)
62
+ return color;
63
+ const { r, g, b } = rgb;
64
+ const newR = Math.max(0, Math.min(255, Math.round(r + (255 - r) * factor)));
65
+ const newG = Math.max(0, Math.min(255, Math.round(g + (255 - g) * factor)));
66
+ const newB = Math.max(0, Math.min(255, Math.round(b + (255 - b) * factor)));
67
+ return `#${newR.toString(16).padStart(2, '0')}${newG.toString(16).padStart(2, '0')}${newB.toString(16).padStart(2, '0')}`;
68
+ }
69
+ // Find best high contrast color
70
+ static findBestHighContrastColor(foreground, background, targetRatio = 7.0) {
71
+ const ratio = this.calculateContrastRatio(foreground, background);
72
+ if (ratio >= targetRatio) {
73
+ return foreground;
74
+ }
75
+ // Try lighter variants first
76
+ for (let i = 1; i <= 20; i++) {
77
+ const lighter = this.adjustColorBrightness(foreground, i * 0.05);
78
+ if (this.calculateContrastRatio(lighter, background) >= targetRatio) {
79
+ return lighter;
80
+ }
81
+ }
82
+ // Try darker variants
83
+ for (let i = 1; i <= 20; i++) {
84
+ const darker = this.adjustColorBrightness(foreground, -i * 0.05);
85
+ if (this.calculateContrastRatio(darker, background) >= targetRatio) {
86
+ return darker;
87
+ }
88
+ }
89
+ // Fallback to black or white
90
+ const blackRatio = this.calculateContrastRatio('#000000', background);
91
+ const whiteRatio = this.calculateContrastRatio('#FFFFFF', background);
92
+ return blackRatio > whiteRatio ? '#000000' : '#FFFFFF';
123
93
  }
124
-
125
- // Fallback to black or white
126
- const blackRatio = this.calculateContrastRatio('#000000', background);
127
- const whiteRatio = this.calculateContrastRatio('#FFFFFF', background);
128
-
129
- return blackRatio > whiteRatio ? '#000000' : '#FFFFFF';
130
- }
131
94
  }
132
-
133
95
  // High contrast theme manager
134
96
  export class HighContrastThemeManager {
135
- private isEnabled: boolean = false;
136
- private targetContrastRatio: number = 7.0; // WCAG AAA
137
- private enhancedColors: boolean = true;
138
- private borderEmphasis: boolean = true;
139
- private textEmphasis: boolean = true;
140
- private focusIndicators: boolean = true;
141
- private originalTheme: MultiThemeConfig | null = null;
142
- private highContrastTheme: HighContrastThemeConfig | null = null;
143
-
144
- constructor() {
145
- this.initializeSystemPreference();
146
- }
147
-
148
- // Initialize system preference detection
149
- private initializeSystemPreference(): void {
150
- if (typeof window !== 'undefined' && window.matchMedia) {
151
- const highContrastQuery = window.matchMedia('(prefers-contrast: high)');
152
- this.isEnabled = highContrastQuery.matches;
153
-
154
- highContrastQuery.addEventListener('change', (e) => {
155
- this.isEnabled = e.matches;
97
+ constructor() {
98
+ this.isEnabled = false;
99
+ this.targetContrastRatio = 7.0; // WCAG AAA
100
+ this.enhancedColors = true;
101
+ this.borderEmphasis = true;
102
+ this.textEmphasis = true;
103
+ this.focusIndicators = true;
104
+ this.originalTheme = null;
105
+ this.highContrastTheme = null;
106
+ this.initializeSystemPreference();
107
+ }
108
+ // Initialize system preference detection
109
+ initializeSystemPreference() {
110
+ if (typeof window !== 'undefined' && window.matchMedia) {
111
+ const highContrastQuery = window.matchMedia('(prefers-contrast: high)');
112
+ this.isEnabled = highContrastQuery.matches;
113
+ highContrastQuery.addEventListener('change', (e) => {
114
+ this.isEnabled = e.matches;
115
+ this.applyHighContrast();
116
+ });
117
+ }
118
+ }
119
+ // Enable high contrast mode
120
+ enable() {
121
+ this.isEnabled = true;
156
122
  this.applyHighContrast();
157
- });
158
- }
159
- }
160
-
161
- // Enable high contrast mode
162
- enable(): void {
163
- this.isEnabled = true;
164
- this.applyHighContrast();
165
- }
166
-
167
- // Disable high contrast mode
168
- disable(): void {
169
- this.isEnabled = false;
170
- this.removeHighContrast();
171
- }
172
-
173
- // Toggle high contrast mode
174
- toggle(): void {
175
- if (this.isEnabled) {
176
- this.disable();
177
- } else {
178
- this.enable();
179
- }
180
- }
181
-
182
- // Check if high contrast is enabled
183
- isHighContrastEnabled(): boolean {
184
- return this.isEnabled;
185
- }
186
-
187
- // Set target contrast ratio
188
- setTargetContrastRatio(ratio: number): void {
189
- this.targetContrastRatio = Math.max(1.0, Math.min(21.0, ratio));
190
- if (this.isEnabled) {
191
- this.applyHighContrast();
192
- }
193
- }
194
-
195
- // Get current target contrast ratio
196
- getTargetContrastRatio(): number {
197
- return this.targetContrastRatio;
198
- }
199
-
200
- // Enable/disable enhanced colors
201
- setEnhancedColors(enabled: boolean): void {
202
- this.enhancedColors = enabled;
203
- if (this.isEnabled) {
204
- this.applyHighContrast();
205
- }
206
- }
207
-
208
- // Enable/disable border emphasis
209
- setBorderEmphasis(enabled: boolean): void {
210
- this.borderEmphasis = enabled;
211
- if (this.isEnabled) {
212
- this.applyHighContrast();
213
- }
214
- }
215
-
216
- // Enable/disable text emphasis
217
- setTextEmphasis(enabled: boolean): void {
218
- this.textEmphasis = enabled;
219
- if (this.isEnabled) {
220
- this.applyHighContrast();
221
- }
222
- }
223
-
224
- // Enable/disable focus indicators
225
- setFocusIndicators(enabled: boolean): void {
226
- this.focusIndicators = enabled;
227
- if (this.isEnabled) {
228
- this.applyHighContrast();
229
- }
230
- }
231
-
232
- // Apply high contrast to current theme
233
- applyHighContrast(): void {
234
- if (!this.isEnabled) return;
235
-
236
- // Store original theme if not already stored
237
- if (!this.originalTheme) {
238
- this.originalTheme = this.getCurrentTheme();
239
- }
240
-
241
- // Generate high contrast theme
242
- this.highContrastTheme = this.generateHighContrastTheme(this.originalTheme);
243
-
244
- // Apply the theme
245
- this.applyTheme(this.highContrastTheme);
246
-
247
- // Add high contrast CSS classes
248
- document.documentElement.classList.add('high-contrast');
249
-
250
- // Apply high contrast styles
251
- this.applyHighContrastStyles();
252
- }
253
-
254
- // Remove high contrast mode
255
- removeHighContrast(): void {
256
- if (!this.isEnabled) return;
257
-
258
- // Remove high contrast CSS classes
259
- document.documentElement.classList.remove('high-contrast');
260
-
261
- // Remove high contrast styles
262
- this.removeHighContrastStyles();
263
-
264
- // Restore original theme
265
- if (this.originalTheme) {
266
- this.applyTheme(this.originalTheme);
267
- }
268
- }
269
-
270
- // Generate high contrast theme from base theme
271
- private generateHighContrastTheme(baseTheme: MultiThemeConfig): HighContrastThemeConfig {
272
- const highContrastTheme: HighContrastThemeConfig = {
273
- ...baseTheme,
274
- highContrast: {
275
- enabled: true,
276
- contrastRatio: this.targetContrastRatio,
277
- enhancedColors: this.enhancedColors,
278
- borderEmphasis: this.borderEmphasis,
279
- textEmphasis: this.textEmphasis,
280
- focusIndicators: this.focusIndicators
281
- }
282
- };
283
-
123
+ }
124
+ // Disable high contrast mode
125
+ disable() {
126
+ this.isEnabled = false;
127
+ this.removeHighContrast();
128
+ }
129
+ // Toggle high contrast mode
130
+ toggle() {
131
+ if (this.isEnabled) {
132
+ this.disable();
133
+ }
134
+ else {
135
+ this.enable();
136
+ }
137
+ }
138
+ // Check if high contrast is enabled
139
+ isHighContrastEnabled() {
140
+ return this.isEnabled;
141
+ }
142
+ // Set target contrast ratio
143
+ setTargetContrastRatio(ratio) {
144
+ this.targetContrastRatio = Math.max(1.0, Math.min(21.0, ratio));
145
+ if (this.isEnabled) {
146
+ this.applyHighContrast();
147
+ }
148
+ }
149
+ // Get current target contrast ratio
150
+ getTargetContrastRatio() {
151
+ return this.targetContrastRatio;
152
+ }
153
+ // Enable/disable enhanced colors
154
+ setEnhancedColors(enabled) {
155
+ this.enhancedColors = enabled;
156
+ if (this.isEnabled) {
157
+ this.applyHighContrast();
158
+ }
159
+ }
160
+ // Enable/disable border emphasis
161
+ setBorderEmphasis(enabled) {
162
+ this.borderEmphasis = enabled;
163
+ if (this.isEnabled) {
164
+ this.applyHighContrast();
165
+ }
166
+ }
167
+ // Enable/disable text emphasis
168
+ setTextEmphasis(enabled) {
169
+ this.textEmphasis = enabled;
170
+ if (this.isEnabled) {
171
+ this.applyHighContrast();
172
+ }
173
+ }
174
+ // Enable/disable focus indicators
175
+ setFocusIndicators(enabled) {
176
+ this.focusIndicators = enabled;
177
+ if (this.isEnabled) {
178
+ this.applyHighContrast();
179
+ }
180
+ }
181
+ // Apply high contrast to current theme
182
+ applyHighContrast() {
183
+ if (!this.isEnabled)
184
+ return;
185
+ // Store original theme if not already stored
186
+ if (!this.originalTheme) {
187
+ this.originalTheme = this.getCurrentTheme();
188
+ }
189
+ // Generate high contrast theme
190
+ this.highContrastTheme = this.generateHighContrastTheme(this.originalTheme);
191
+ // Apply the theme
192
+ this.applyTheme(this.highContrastTheme);
193
+ // Add high contrast CSS classes
194
+ document.documentElement.classList.add('high-contrast');
195
+ // Apply high contrast styles
196
+ this.applyHighContrastStyles();
197
+ }
198
+ // Remove high contrast mode
199
+ removeHighContrast() {
200
+ if (!this.isEnabled)
201
+ return;
202
+ // Remove high contrast CSS classes
203
+ document.documentElement.classList.remove('high-contrast');
204
+ // Remove high contrast styles
205
+ this.removeHighContrastStyles();
206
+ // Restore original theme
207
+ if (this.originalTheme) {
208
+ this.applyTheme(this.originalTheme);
209
+ }
210
+ }
211
+ // Generate high contrast theme from base theme
212
+ generateHighContrastTheme(baseTheme) {
213
+ const highContrastTheme = {
214
+ ...baseTheme,
215
+ highContrast: {
216
+ enabled: true,
217
+ contrastRatio: this.targetContrastRatio,
218
+ enhancedColors: this.enhancedColors,
219
+ borderEmphasis: this.borderEmphasis,
220
+ textEmphasis: this.textEmphasis,
221
+ focusIndicators: this.focusIndicators
222
+ }
223
+ };
224
+ // Enhance colors for high contrast
225
+ if (this.enhancedColors) {
226
+ highContrastTheme.colors = this.enhanceColorsForHighContrast(baseTheme.colors);
227
+ }
228
+ // Enhance fonts for high contrast
229
+ if (this.textEmphasis) {
230
+ highContrastTheme.fonts = this.enhanceFontsForHighContrast(baseTheme.fonts);
231
+ }
232
+ // Enhance spacing for high contrast
233
+ highContrastTheme.spacing = this.enhanceSpacingForHighContrast(baseTheme.spacing);
234
+ // Enhance shadows for high contrast
235
+ highContrastTheme.shadows = this.enhanceShadowsForHighContrast(baseTheme.shadows);
236
+ return highContrastTheme;
237
+ }
284
238
  // Enhance colors for high contrast
285
- if (this.enhancedColors) {
286
- highContrastTheme.colors = this.enhanceColorsForHighContrast(baseTheme.colors);
239
+ enhanceColorsForHighContrast(colors) {
240
+ const enhancedColors = { ...colors };
241
+ // Enhance primary colors
242
+ if (enhancedColors.primary) {
243
+ enhancedColors.primary = {
244
+ ...enhancedColors.primary,
245
+ 500: HighContrastColors.findBestHighContrastColor(enhancedColors.primary[500], enhancedColors.surface?.background || '#FFFFFF', this.targetContrastRatio),
246
+ light: HighContrastColors.findBestHighContrastColor(enhancedColors.primary.light || enhancedColors.primary[100], enhancedColors.surface?.background || '#FFFFFF', this.targetContrastRatio),
247
+ dark: HighContrastColors.findBestHighContrastColor(enhancedColors.primary.dark || enhancedColors.primary[900], enhancedColors.surface?.background || '#FFFFFF', this.targetContrastRatio)
248
+ };
249
+ }
250
+ // Enhance secondary colors
251
+ if (enhancedColors.secondary) {
252
+ enhancedColors.secondary = {
253
+ ...enhancedColors.secondary,
254
+ 500: HighContrastColors.findBestHighContrastColor(enhancedColors.secondary[500], enhancedColors.surface?.background || '#FFFFFF', this.targetContrastRatio),
255
+ light: HighContrastColors.findBestHighContrastColor(enhancedColors.secondary.light || enhancedColors.secondary[100], enhancedColors.surface?.background || '#FFFFFF', this.targetContrastRatio),
256
+ dark: HighContrastColors.findBestHighContrastColor(enhancedColors.secondary.dark || enhancedColors.secondary[900], enhancedColors.surface?.background || '#FFFFFF', this.targetContrastRatio)
257
+ };
258
+ }
259
+ // Enhance error colors
260
+ if (enhancedColors.semantic?.error) {
261
+ enhancedColors.semantic = {
262
+ ...enhancedColors.semantic,
263
+ error: HighContrastColors.findBestHighContrastColor(enhancedColors.semantic.error, enhancedColors.surface?.background || '#FFFFFF', this.targetContrastRatio)
264
+ };
265
+ }
266
+ // Enhance warning colors
267
+ if (enhancedColors.semantic?.warning) {
268
+ enhancedColors.semantic = {
269
+ ...enhancedColors.semantic,
270
+ warning: HighContrastColors.findBestHighContrastColor(enhancedColors.semantic.warning, enhancedColors.surface?.background || '#FFFFFF', this.targetContrastRatio)
271
+ };
272
+ }
273
+ // Enhance success colors
274
+ if (enhancedColors.semantic?.success) {
275
+ enhancedColors.semantic = {
276
+ ...enhancedColors.semantic,
277
+ success: HighContrastColors.findBestHighContrastColor(enhancedColors.semantic.success, enhancedColors.surface?.background || '#FFFFFF', this.targetContrastRatio)
278
+ };
279
+ }
280
+ // Enhance info colors
281
+ if (enhancedColors.semantic?.info) {
282
+ enhancedColors.semantic = {
283
+ ...enhancedColors.semantic,
284
+ info: HighContrastColors.findBestHighContrastColor(enhancedColors.semantic.info, enhancedColors.surface?.background || '#FFFFFF', this.targetContrastRatio)
285
+ };
286
+ }
287
+ // Enhance text colors
288
+ if (enhancedColors.text) {
289
+ enhancedColors.text = {
290
+ ...enhancedColors.text,
291
+ primary: HighContrastColors.findBestHighContrastColor(enhancedColors.text.primary, enhancedColors.surface?.background || '#FFFFFF', this.targetContrastRatio),
292
+ secondary: HighContrastColors.findBestHighContrastColor(enhancedColors.text.secondary, enhancedColors.surface?.background || '#FFFFFF', this.targetContrastRatio)
293
+ };
294
+ }
295
+ return enhancedColors;
287
296
  }
288
-
289
297
  // Enhance fonts for high contrast
290
- if (this.textEmphasis) {
291
- highContrastTheme.fonts = this.enhanceFontsForHighContrast(baseTheme.fonts);
298
+ enhanceFontsForHighContrast(fonts) {
299
+ const enhancedFonts = { ...fonts };
300
+ // Increase font weights for better visibility
301
+ if (enhancedFonts.primary?.weights) {
302
+ enhancedFonts.primary.weights = enhancedFonts.primary.weights.map((weight) => Math.max(400, weight));
303
+ }
304
+ if (enhancedFonts.body?.weights) {
305
+ enhancedFonts.body.weights = enhancedFonts.body.weights.map((weight) => Math.max(400, weight));
306
+ }
307
+ // Increase letter spacing for better readability
308
+ if (enhancedFonts.primary?.letterSpacing) {
309
+ enhancedFonts.primary.letterSpacing = {
310
+ ...enhancedFonts.primary.letterSpacing,
311
+ tight: Math.max(0.025, enhancedFonts.primary.letterSpacing.tight || 0.025),
312
+ normal: Math.max(0, enhancedFonts.primary.letterSpacing.normal || 0),
313
+ wide: Math.max(0.025, enhancedFonts.primary.letterSpacing.wide || 0.025)
314
+ };
315
+ }
316
+ return enhancedFonts;
292
317
  }
293
-
294
318
  // Enhance spacing for high contrast
295
- highContrastTheme.spacing = this.enhanceSpacingForHighContrast(baseTheme.spacing);
296
-
319
+ enhanceSpacingForHighContrast(spacing) {
320
+ const enhancedSpacing = { ...spacing };
321
+ // Increase focus ring spacing
322
+ if (enhancedSpacing.focusRing) {
323
+ enhancedSpacing.focusRing = Math.max(2, enhancedSpacing.focusRing || 2);
324
+ }
325
+ // Increase border widths
326
+ if (enhancedSpacing.borderWidth) {
327
+ enhancedSpacing.borderWidth = {
328
+ ...enhancedSpacing.borderWidth,
329
+ thin: Math.max(1, enhancedSpacing.borderWidth.thin || 1),
330
+ normal: Math.max(2, enhancedSpacing.borderWidth.normal || 2),
331
+ thick: Math.max(3, enhancedSpacing.borderWidth.thick || 3)
332
+ };
333
+ }
334
+ return enhancedSpacing;
335
+ }
297
336
  // Enhance shadows for high contrast
298
- highContrastTheme.shadows = this.enhanceShadowsForHighContrast(baseTheme.shadows);
299
-
300
- return highContrastTheme;
301
- }
302
-
303
- // Enhance colors for high contrast
304
- private enhanceColorsForHighContrast(colors: ColorThemeConfig): ColorThemeConfig {
305
- const enhancedColors: ColorThemeConfig = { ...colors };
306
-
307
- // Enhance primary colors
308
- if (enhancedColors.primary) {
309
- enhancedColors.primary = {
310
- ...enhancedColors.primary,
311
- 500: HighContrastColors.findBestHighContrastColor(
312
- enhancedColors.primary[500],
313
- enhancedColors.surface?.background || '#FFFFFF',
314
- this.targetContrastRatio
315
- ),
316
- light: HighContrastColors.findBestHighContrastColor(
317
- enhancedColors.primary.light || enhancedColors.primary[100],
318
- enhancedColors.surface?.background || '#FFFFFF',
319
- this.targetContrastRatio
320
- ),
321
- dark: HighContrastColors.findBestHighContrastColor(
322
- enhancedColors.primary.dark || enhancedColors.primary[900],
323
- enhancedColors.surface?.background || '#FFFFFF',
324
- this.targetContrastRatio
325
- )
326
- };
327
- }
328
-
329
- // Enhance secondary colors
330
- if (enhancedColors.secondary) {
331
- enhancedColors.secondary = {
332
- ...enhancedColors.secondary,
333
- 500: HighContrastColors.findBestHighContrastColor(
334
- enhancedColors.secondary[500],
335
- enhancedColors.surface?.background || '#FFFFFF',
336
- this.targetContrastRatio
337
- ),
338
- light: HighContrastColors.findBestHighContrastColor(
339
- enhancedColors.secondary.light || enhancedColors.secondary[100],
340
- enhancedColors.surface?.background || '#FFFFFF',
341
- this.targetContrastRatio
342
- ),
343
- dark: HighContrastColors.findBestHighContrastColor(
344
- enhancedColors.secondary.dark || enhancedColors.secondary[900],
345
- enhancedColors.surface?.background || '#FFFFFF',
346
- this.targetContrastRatio
347
- )
348
- };
349
- }
350
-
351
- // Enhance error colors
352
- if (enhancedColors.semantic?.error) {
353
- enhancedColors.semantic = {
354
- ...enhancedColors.semantic,
355
- error: HighContrastColors.findBestHighContrastColor(
356
- enhancedColors.semantic.error,
357
- enhancedColors.surface?.background || '#FFFFFF',
358
- this.targetContrastRatio
359
- )
360
- };
361
- }
362
-
363
- // Enhance warning colors
364
- if (enhancedColors.semantic?.warning) {
365
- enhancedColors.semantic = {
366
- ...enhancedColors.semantic,
367
- warning: HighContrastColors.findBestHighContrastColor(
368
- enhancedColors.semantic.warning,
369
- enhancedColors.surface?.background || '#FFFFFF',
370
- this.targetContrastRatio
371
- )
372
- };
373
- }
374
-
375
- // Enhance success colors
376
- if (enhancedColors.semantic?.success) {
377
- enhancedColors.semantic = {
378
- ...enhancedColors.semantic,
379
- success: HighContrastColors.findBestHighContrastColor(
380
- enhancedColors.semantic.success,
381
- enhancedColors.surface?.background || '#FFFFFF',
382
- this.targetContrastRatio
383
- )
384
- };
385
- }
386
-
387
- // Enhance info colors
388
- if (enhancedColors.semantic?.info) {
389
- enhancedColors.semantic = {
390
- ...enhancedColors.semantic,
391
- info: HighContrastColors.findBestHighContrastColor(
392
- enhancedColors.semantic.info,
393
- enhancedColors.surface?.background || '#FFFFFF',
394
- this.targetContrastRatio
395
- )
396
- };
397
- }
398
-
399
- // Enhance text colors
400
- if (enhancedColors.text) {
401
- enhancedColors.text = {
402
- ...enhancedColors.text,
403
- primary: HighContrastColors.findBestHighContrastColor(
404
- enhancedColors.text.primary,
405
- enhancedColors.surface?.background || '#FFFFFF',
406
- this.targetContrastRatio
407
- ),
408
- secondary: HighContrastColors.findBestHighContrastColor(
409
- enhancedColors.text.secondary,
410
- enhancedColors.surface?.background || '#FFFFFF',
411
- this.targetContrastRatio
412
- )
413
- };
414
- }
415
-
416
- return enhancedColors;
417
- }
418
-
419
- // Enhance fonts for high contrast
420
- private enhanceFontsForHighContrast(fonts: any): any {
421
- const enhancedFonts = { ...fonts };
422
-
423
- // Increase font weights for better visibility
424
- if (enhancedFonts.primary?.weights) {
425
- enhancedFonts.primary.weights = enhancedFonts.primary.weights.map((weight: number) =>
426
- Math.max(400, weight)
427
- );
428
- }
429
-
430
- if (enhancedFonts.body?.weights) {
431
- enhancedFonts.body.weights = enhancedFonts.body.weights.map((weight: number) =>
432
- Math.max(400, weight)
433
- );
434
- }
435
-
436
- // Increase letter spacing for better readability
437
- if (enhancedFonts.primary?.letterSpacing) {
438
- enhancedFonts.primary.letterSpacing = {
439
- ...enhancedFonts.primary.letterSpacing,
440
- tight: Math.max(0.025, enhancedFonts.primary.letterSpacing.tight || 0.025),
441
- normal: Math.max(0, enhancedFonts.primary.letterSpacing.normal || 0),
442
- wide: Math.max(0.025, enhancedFonts.primary.letterSpacing.wide || 0.025)
443
- };
444
- }
445
-
446
- return enhancedFonts;
447
- }
448
-
449
- // Enhance spacing for high contrast
450
- private enhanceSpacingForHighContrast(spacing: any): any {
451
- const enhancedSpacing = { ...spacing };
452
-
453
- // Increase focus ring spacing
454
- if (enhancedSpacing.focusRing) {
455
- enhancedSpacing.focusRing = Math.max(2, enhancedSpacing.focusRing || 2);
456
- }
457
-
458
- // Increase border widths
459
- if (enhancedSpacing.borderWidth) {
460
- enhancedSpacing.borderWidth = {
461
- ...enhancedSpacing.borderWidth,
462
- thin: Math.max(1, enhancedSpacing.borderWidth.thin || 1),
463
- normal: Math.max(2, enhancedSpacing.borderWidth.normal || 2),
464
- thick: Math.max(3, enhancedSpacing.borderWidth.thick || 3)
465
- };
466
- }
467
-
468
- return enhancedSpacing;
469
- }
470
-
471
- // Enhance shadows for high contrast
472
- private enhanceShadowsForHighContrast(shadows: any): any {
473
- const enhancedShadows = { ...shadows };
474
-
475
- // Increase shadow intensity
476
- if (enhancedShadows.intensity) {
477
- enhancedShadows.intensity = Math.min(1.0, enhancedShadows.intensity * 1.5);
478
- }
479
-
480
- // Increase shadow spread
481
- if (enhancedShadows.spread) {
482
- enhancedShadows.spread = Math.max(0, enhancedShadows.spread * 1.2);
483
- }
484
-
485
- return enhancedShadows;
486
- }
487
-
488
- // Apply high contrast styles
489
- private applyHighContrastStyles(): void {
490
- const style = document.createElement('style');
491
- style.id = 'high-contrast-styles';
492
-
493
- style.textContent = `
337
+ enhanceShadowsForHighContrast(shadows) {
338
+ const enhancedShadows = { ...shadows };
339
+ // Increase shadow intensity
340
+ if (enhancedShadows.intensity) {
341
+ enhancedShadows.intensity = Math.min(1.0, enhancedShadows.intensity * 1.5);
342
+ }
343
+ // Increase shadow spread
344
+ if (enhancedShadows.spread) {
345
+ enhancedShadows.spread = Math.max(0, enhancedShadows.spread * 1.2);
346
+ }
347
+ return enhancedShadows;
348
+ }
349
+ // Apply high contrast styles
350
+ applyHighContrastStyles() {
351
+ const style = document.createElement('style');
352
+ style.id = 'high-contrast-styles';
353
+ style.textContent = `
494
354
  .high-contrast {
495
355
  --focus-ring-width: 3px;
496
356
  --focus-ring-color: #FFFFFF;
@@ -530,92 +390,68 @@ export class HighContrastThemeManager {
530
390
  border: var(--border-emphasis) !important;
531
391
  }
532
392
  `;
533
-
534
- document.head.appendChild(style);
535
- }
536
-
537
- // Remove high contrast styles
538
- private removeHighContrastStyles(): void {
539
- const style = document.getElementById('high-contrast-styles');
540
- if (style) {
541
- style.remove();
542
- }
543
- }
544
-
545
- // Get current theme (placeholder - would integrate with actual theme system)
546
- private getCurrentTheme(): MultiThemeConfig {
547
- // This would integrate with the actual theme system
548
- return {} as MultiThemeConfig;
549
- }
550
-
551
- // Apply theme (placeholder - would integrate with actual theme system)
552
- private applyTheme(theme: MultiThemeConfig): void {
553
- // This would integrate with the actual theme system
554
- console.log('Applying theme:', theme);
555
- }
556
-
557
- // Get high contrast configuration
558
- getConfiguration(): {
559
- enabled: boolean;
560
- targetContrastRatio: number;
561
- enhancedColors: boolean;
562
- borderEmphasis: boolean;
563
- textEmphasis: boolean;
564
- focusIndicators: boolean;
565
- } {
566
- return {
567
- enabled: this.isEnabled,
568
- targetContrastRatio: this.targetContrastRatio,
569
- enhancedColors: this.enhancedColors,
570
- borderEmphasis: this.borderEmphasis,
571
- textEmphasis: this.textEmphasis,
572
- focusIndicators: this.focusIndicators
573
- };
574
- }
575
-
576
- // Validate high contrast theme
577
- validateHighContrastTheme(theme: HighContrastThemeConfig): boolean {
578
- if (!theme.highContrast?.enabled) return false;
579
-
580
- // Validate contrast ratios
581
- if (theme.colors) {
582
- const background = theme.colors.surface?.background || '#FFFFFF';
583
-
584
- // Check primary color contrast
585
- if (theme.colors.primary?.[500]) {
586
- const ratio = HighContrastColors.calculateContrastRatio(
587
- theme.colors.primary[500],
588
- background
589
- );
590
- if (ratio < this.targetContrastRatio) {
591
- console.warn(`Primary color contrast ratio ${ratio} is below target ${this.targetContrastRatio}`);
592
- return false;
393
+ document.head.appendChild(style);
394
+ }
395
+ // Remove high contrast styles
396
+ removeHighContrastStyles() {
397
+ const style = document.getElementById('high-contrast-styles');
398
+ if (style) {
399
+ style.remove();
593
400
  }
594
- }
595
-
596
- // Check text color contrast
597
- if (theme.colors.text?.primary) {
598
- const ratio = HighContrastColors.calculateContrastRatio(
599
- theme.colors.text.primary,
600
- background
601
- );
602
- if (ratio < this.targetContrastRatio) {
603
- console.warn(`Text color contrast ratio ${ratio} is below target ${this.targetContrastRatio}`);
604
- return false;
401
+ }
402
+ // Get current theme (placeholder - would integrate with actual theme system)
403
+ getCurrentTheme() {
404
+ // This would integrate with the actual theme system
405
+ return {};
406
+ }
407
+ // Apply theme (placeholder - would integrate with actual theme system)
408
+ applyTheme(theme) {
409
+ // This would integrate with the actual theme system
410
+ console.log('Applying theme:', theme);
411
+ }
412
+ // Get high contrast configuration
413
+ getConfiguration() {
414
+ return {
415
+ enabled: this.isEnabled,
416
+ targetContrastRatio: this.targetContrastRatio,
417
+ enhancedColors: this.enhancedColors,
418
+ borderEmphasis: this.borderEmphasis,
419
+ textEmphasis: this.textEmphasis,
420
+ focusIndicators: this.focusIndicators
421
+ };
422
+ }
423
+ // Validate high contrast theme
424
+ validateHighContrastTheme(theme) {
425
+ if (!theme.highContrast?.enabled)
426
+ return false;
427
+ // Validate contrast ratios
428
+ if (theme.colors) {
429
+ const background = theme.colors.surface?.background || '#FFFFFF';
430
+ // Check primary color contrast
431
+ if (theme.colors.primary?.[500]) {
432
+ const ratio = HighContrastColors.calculateContrastRatio(theme.colors.primary[500], background);
433
+ if (ratio < this.targetContrastRatio) {
434
+ console.warn(`Primary color contrast ratio ${ratio} is below target ${this.targetContrastRatio}`);
435
+ return false;
436
+ }
437
+ }
438
+ // Check text color contrast
439
+ if (theme.colors.text?.primary) {
440
+ const ratio = HighContrastColors.calculateContrastRatio(theme.colors.text.primary, background);
441
+ if (ratio < this.targetContrastRatio) {
442
+ console.warn(`Text color contrast ratio ${ratio} is below target ${this.targetContrastRatio}`);
443
+ return false;
444
+ }
445
+ }
605
446
  }
606
- }
447
+ return true;
607
448
  }
608
-
609
- return true;
610
- }
611
449
  }
612
-
613
450
  // Export default instances
614
451
  export const highContrastThemeManager = new HighContrastThemeManager();
615
-
616
452
  // Export default
617
453
  export default {
618
- HighContrastColors,
619
- HighContrastThemeManager,
620
- highContrastThemeManager
454
+ HighContrastColors,
455
+ HighContrastThemeManager,
456
+ highContrastThemeManager
621
457
  };