@rakeyshgidwani/roger-ui-bank-theme-stan-design 0.2.8 → 0.2.10

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 (304) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/dist/components/ui/accessibility-demo.esm.js +30 -24
  3. package/dist/components/ui/accessibility-demo.js +30 -24
  4. package/dist/components/ui/advanced-component-architecture-demo.esm.js +235 -179
  5. package/dist/components/ui/advanced-component-architecture-demo.js +235 -179
  6. package/dist/components/ui/advanced-transition-system-demo.esm.js +110 -64
  7. package/dist/components/ui/advanced-transition-system-demo.js +110 -64
  8. package/dist/components/ui/advanced-transition-system.esm.js +166 -122
  9. package/dist/components/ui/advanced-transition-system.js +166 -122
  10. package/dist/components/ui/animation/animated-container.esm.js +52 -29
  11. package/dist/components/ui/animation/animated-container.js +52 -29
  12. package/dist/components/ui/animation/staggered-container.esm.js +18 -9
  13. package/dist/components/ui/animation/staggered-container.js +18 -9
  14. package/dist/components/ui/animation-demo.esm.js +67 -35
  15. package/dist/components/ui/animation-demo.js +67 -35
  16. package/dist/components/ui/badge.esm.js +9 -6
  17. package/dist/components/ui/badge.js +9 -6
  18. package/dist/components/ui/battery-conscious-animation-demo.esm.js +122 -87
  19. package/dist/components/ui/battery-conscious-animation-demo.js +122 -87
  20. package/dist/components/ui/border-radius-shadow-demo.esm.js +23 -12
  21. package/dist/components/ui/border-radius-shadow-demo.js +23 -12
  22. package/dist/components/ui/button.esm.js +8 -2
  23. package/dist/components/ui/button.js +8 -2
  24. package/dist/components/ui/card.esm.js +33 -8
  25. package/dist/components/ui/card.js +33 -8
  26. package/dist/components/ui/checkbox.esm.js +3 -3
  27. package/dist/components/ui/checkbox.js +3 -3
  28. package/dist/components/ui/color-preview.esm.js +68 -45
  29. package/dist/components/ui/color-preview.js +68 -45
  30. package/dist/components/ui/data-display/chart.esm.js +112 -84
  31. package/dist/components/ui/data-display/chart.js +112 -84
  32. package/dist/components/ui/data-display/data-grid-simple.esm.js +1 -1
  33. package/dist/components/ui/data-display/data-grid-simple.js +1 -1
  34. package/dist/components/ui/data-display/data-grid.esm.js +80 -67
  35. package/dist/components/ui/data-display/data-grid.js +80 -67
  36. package/dist/components/ui/data-display/list.esm.js +53 -45
  37. package/dist/components/ui/data-display/list.js +53 -45
  38. package/dist/components/ui/data-display/table.esm.js +62 -54
  39. package/dist/components/ui/data-display/table.js +62 -54
  40. package/dist/components/ui/data-display/timeline.esm.js +39 -34
  41. package/dist/components/ui/data-display/timeline.js +39 -34
  42. package/dist/components/ui/data-display/tree.esm.js +116 -84
  43. package/dist/components/ui/data-display/tree.js +116 -84
  44. package/dist/components/ui/data-display/types.esm.js +389 -364
  45. package/dist/components/ui/data-display/types.js +389 -364
  46. package/dist/components/ui/enterprise-mobile-experience-demo.esm.js +120 -70
  47. package/dist/components/ui/enterprise-mobile-experience-demo.js +120 -70
  48. package/dist/components/ui/enterprise-mobile-experience.esm.js +124 -73
  49. package/dist/components/ui/enterprise-mobile-experience.js +124 -73
  50. package/dist/components/ui/feedback/alert.esm.js +22 -15
  51. package/dist/components/ui/feedback/alert.js +22 -15
  52. package/dist/components/ui/feedback/progress.esm.js +47 -24
  53. package/dist/components/ui/feedback/progress.js +47 -24
  54. package/dist/components/ui/feedback/skeleton.esm.js +39 -29
  55. package/dist/components/ui/feedback/skeleton.js +39 -29
  56. package/dist/components/ui/feedback/toast.esm.js +62 -38
  57. package/dist/components/ui/feedback/toast.js +62 -38
  58. package/dist/components/ui/feedback/types.esm.js +83 -83
  59. package/dist/components/ui/feedback/types.js +83 -83
  60. package/dist/components/ui/font-preview.esm.js +41 -39
  61. package/dist/components/ui/font-preview.js +41 -39
  62. package/dist/components/ui/form-demo.esm.js +150 -113
  63. package/dist/components/ui/form-demo.js +150 -113
  64. package/dist/components/ui/hardware-acceleration-demo.esm.js +137 -87
  65. package/dist/components/ui/hardware-acceleration-demo.js +137 -87
  66. package/dist/components/ui/input.esm.js +4 -1
  67. package/dist/components/ui/input.js +4 -1
  68. package/dist/components/ui/layout-demo.esm.js +81 -56
  69. package/dist/components/ui/layout-demo.js +81 -56
  70. package/dist/components/ui/layouts/adaptive-layout.esm.js +27 -8
  71. package/dist/components/ui/layouts/adaptive-layout.js +27 -8
  72. package/dist/components/ui/layouts/desktop-layout.esm.js +39 -19
  73. package/dist/components/ui/layouts/desktop-layout.js +39 -19
  74. package/dist/components/ui/layouts/mobile-layout.esm.js +19 -9
  75. package/dist/components/ui/layouts/mobile-layout.js +19 -9
  76. package/dist/components/ui/layouts/tablet-layout.esm.js +28 -14
  77. package/dist/components/ui/layouts/tablet-layout.js +28 -14
  78. package/dist/components/ui/mobile-form-validation.esm.js +120 -87
  79. package/dist/components/ui/mobile-form-validation.js +120 -87
  80. package/dist/components/ui/mobile-input-demo.esm.js +19 -13
  81. package/dist/components/ui/mobile-input-demo.js +19 -13
  82. package/dist/components/ui/mobile-input.esm.js +185 -120
  83. package/dist/components/ui/mobile-input.js +185 -120
  84. package/dist/components/ui/mobile-skeleton-loading-demo.esm.js +128 -111
  85. package/dist/components/ui/mobile-skeleton-loading-demo.js +128 -111
  86. package/dist/components/ui/navigation/breadcrumb.esm.js +17 -14
  87. package/dist/components/ui/navigation/breadcrumb.js +17 -14
  88. package/dist/components/ui/navigation/index.esm.js +23 -1
  89. package/dist/components/ui/navigation/index.js +23 -1
  90. package/dist/components/ui/navigation/menu.esm.js +49 -35
  91. package/dist/components/ui/navigation/menu.js +49 -35
  92. package/dist/components/ui/navigation/navigation-demo.esm.js +81 -74
  93. package/dist/components/ui/navigation/navigation-demo.js +81 -74
  94. package/dist/components/ui/navigation/pagination.esm.js +62 -50
  95. package/dist/components/ui/navigation/pagination.js +62 -50
  96. package/dist/components/ui/navigation/sidebar.esm.js +56 -42
  97. package/dist/components/ui/navigation/sidebar.js +56 -42
  98. package/dist/components/ui/navigation/stepper.esm.js +34 -23
  99. package/dist/components/ui/navigation/stepper.js +34 -23
  100. package/dist/components/ui/navigation/tabs.esm.js +32 -21
  101. package/dist/components/ui/navigation/tabs.js +32 -21
  102. package/dist/components/ui/navigation/types.esm.js +196 -195
  103. package/dist/components/ui/navigation/types.js +196 -195
  104. package/dist/components/ui/overlay/backdrop.esm.js +17 -16
  105. package/dist/components/ui/overlay/backdrop.js +17 -16
  106. package/dist/components/ui/overlay/focus-manager.esm.js +21 -19
  107. package/dist/components/ui/overlay/focus-manager.js +21 -19
  108. package/dist/components/ui/overlay/index.esm.js +22 -2
  109. package/dist/components/ui/overlay/index.js +22 -2
  110. package/dist/components/ui/overlay/modal.esm.js +38 -34
  111. package/dist/components/ui/overlay/modal.js +38 -34
  112. package/dist/components/ui/overlay/overlay-manager.esm.js +25 -20
  113. package/dist/components/ui/overlay/overlay-manager.js +25 -20
  114. package/dist/components/ui/overlay/popover.esm.js +74 -58
  115. package/dist/components/ui/overlay/popover.js +74 -58
  116. package/dist/components/ui/overlay/portal.esm.js +7 -7
  117. package/dist/components/ui/overlay/portal.js +7 -7
  118. package/dist/components/ui/overlay/tooltip.esm.js +54 -39
  119. package/dist/components/ui/overlay/tooltip.js +54 -39
  120. package/dist/components/ui/overlay/types.esm.js +132 -131
  121. package/dist/components/ui/overlay/types.js +132 -131
  122. package/dist/components/ui/performance-demo.esm.js +135 -88
  123. package/dist/components/ui/performance-demo.js +135 -88
  124. package/dist/components/ui/semantic-input-system-demo.esm.js +117 -80
  125. package/dist/components/ui/semantic-input-system-demo.js +117 -80
  126. package/dist/components/ui/theme-customizer.esm.js +84 -52
  127. package/dist/components/ui/theme-customizer.js +84 -52
  128. package/dist/components/ui/theme-preview.esm.js +95 -43
  129. package/dist/components/ui/theme-preview.js +95 -43
  130. package/dist/components/ui/theme-switcher.esm.js +70 -44
  131. package/dist/components/ui/theme-switcher.js +70 -44
  132. package/dist/components/ui/theme-toggle.esm.js +3 -3
  133. package/dist/components/ui/theme-toggle.js +3 -3
  134. package/dist/components/ui/token-demo.esm.js +33 -21
  135. package/dist/components/ui/token-demo.js +33 -21
  136. package/dist/components/ui/touch-demo.esm.js +102 -73
  137. package/dist/components/ui/touch-demo.js +102 -73
  138. package/dist/components/ui/touch-friendly-interface-demo.esm.js +102 -64
  139. package/dist/components/ui/touch-friendly-interface-demo.js +102 -64
  140. package/dist/components/ui/touch-friendly-interface.esm.js +85 -61
  141. package/dist/components/ui/touch-friendly-interface.js +85 -61
  142. package/dist/hooks/use-accessibility-support.esm.js +115 -85
  143. package/dist/hooks/use-accessibility-support.js +115 -85
  144. package/dist/hooks/use-adaptive-layout.esm.js +56 -33
  145. package/dist/hooks/use-adaptive-layout.js +56 -33
  146. package/dist/hooks/use-advanced-patterns.esm.js +57 -42
  147. package/dist/hooks/use-advanced-patterns.js +57 -42
  148. package/dist/hooks/use-advanced-transition-system.esm.js +112 -71
  149. package/dist/hooks/use-advanced-transition-system.js +112 -71
  150. package/dist/hooks/use-animation-profile.esm.js +63 -34
  151. package/dist/hooks/use-animation-profile.js +63 -34
  152. package/dist/hooks/use-battery-animations.esm.js +80 -55
  153. package/dist/hooks/use-battery-animations.js +80 -55
  154. package/dist/hooks/use-battery-conscious-loading.esm.js +166 -123
  155. package/dist/hooks/use-battery-conscious-loading.js +166 -123
  156. package/dist/hooks/use-battery-optimization.esm.js +78 -55
  157. package/dist/hooks/use-battery-optimization.js +78 -55
  158. package/dist/hooks/use-battery-status.esm.js +73 -51
  159. package/dist/hooks/use-battery-status.js +73 -51
  160. package/dist/hooks/use-component-performance.esm.js +62 -47
  161. package/dist/hooks/use-component-performance.js +62 -47
  162. package/dist/hooks/use-device-loading-states.esm.js +152 -109
  163. package/dist/hooks/use-device-loading-states.js +152 -109
  164. package/dist/hooks/use-device.esm.js +25 -14
  165. package/dist/hooks/use-device.js +25 -14
  166. package/dist/hooks/use-enterprise-mobile-experience.esm.js +137 -88
  167. package/dist/hooks/use-enterprise-mobile-experience.js +137 -88
  168. package/dist/hooks/use-form-feedback.esm.js +124 -81
  169. package/dist/hooks/use-form-feedback.js +124 -81
  170. package/dist/hooks/use-form-performance.esm.js +127 -92
  171. package/dist/hooks/use-form-performance.js +127 -92
  172. package/dist/hooks/use-frame-rate.esm.js +56 -37
  173. package/dist/hooks/use-frame-rate.js +56 -37
  174. package/dist/hooks/use-gestures.esm.js +96 -72
  175. package/dist/hooks/use-gestures.js +96 -72
  176. package/dist/hooks/use-hardware-acceleration.esm.js +65 -37
  177. package/dist/hooks/use-hardware-acceleration.js +65 -37
  178. package/dist/hooks/use-input-accessibility.esm.js +157 -119
  179. package/dist/hooks/use-input-accessibility.js +157 -119
  180. package/dist/hooks/use-input-performance.esm.js +139 -104
  181. package/dist/hooks/use-input-performance.js +139 -104
  182. package/dist/hooks/use-layout-performance.esm.js +50 -29
  183. package/dist/hooks/use-layout-performance.js +50 -29
  184. package/dist/hooks/use-loading-accessibility.esm.js +209 -169
  185. package/dist/hooks/use-loading-accessibility.js +209 -169
  186. package/dist/hooks/use-loading-performance.esm.js +117 -93
  187. package/dist/hooks/use-loading-performance.js +117 -93
  188. package/dist/hooks/use-memory-usage.esm.js +57 -38
  189. package/dist/hooks/use-memory-usage.js +57 -38
  190. package/dist/hooks/use-mobile-form-layout.esm.js +111 -74
  191. package/dist/hooks/use-mobile-form-layout.js +111 -74
  192. package/dist/hooks/use-mobile-form-validation.esm.js +211 -144
  193. package/dist/hooks/use-mobile-form-validation.js +211 -144
  194. package/dist/hooks/use-mobile-keyboard-optimization.esm.js +154 -113
  195. package/dist/hooks/use-mobile-keyboard-optimization.js +154 -113
  196. package/dist/hooks/use-mobile-layout.esm.js +73 -51
  197. package/dist/hooks/use-mobile-layout.js +73 -51
  198. package/dist/hooks/use-mobile-optimization.esm.js +72 -44
  199. package/dist/hooks/use-mobile-optimization.js +72 -44
  200. package/dist/hooks/use-mobile-skeleton.esm.js +97 -64
  201. package/dist/hooks/use-mobile-skeleton.js +97 -64
  202. package/dist/hooks/use-mobile-touch.esm.js +128 -93
  203. package/dist/hooks/use-mobile-touch.js +128 -93
  204. package/dist/hooks/use-performance-throttling.esm.js +72 -48
  205. package/dist/hooks/use-performance-throttling.js +72 -48
  206. package/dist/hooks/use-performance.esm.js +90 -52
  207. package/dist/hooks/use-performance.js +90 -52
  208. package/dist/hooks/use-reusable-architecture.esm.js +94 -65
  209. package/dist/hooks/use-reusable-architecture.js +94 -65
  210. package/dist/hooks/use-semantic-input-types.esm.js +166 -124
  211. package/dist/hooks/use-semantic-input-types.js +166 -124
  212. package/dist/hooks/use-semantic-input.esm.js +178 -126
  213. package/dist/hooks/use-semantic-input.js +178 -126
  214. package/dist/hooks/use-tablet-layout.esm.js +67 -38
  215. package/dist/hooks/use-tablet-layout.js +67 -38
  216. package/dist/hooks/use-touch-friendly-input.esm.js +193 -149
  217. package/dist/hooks/use-touch-friendly-input.js +193 -149
  218. package/dist/hooks/use-touch-friendly-interface.esm.js +99 -67
  219. package/dist/hooks/use-touch-friendly-interface.js +99 -67
  220. package/dist/hooks/use-touch-optimization.esm.js +99 -72
  221. package/dist/hooks/use-touch-optimization.js +99 -72
  222. package/dist/index.esm.js +289 -280
  223. package/dist/index.js +289 -280
  224. package/dist/lib/utils.esm.js +1 -1
  225. package/dist/lib/utils.js +1 -1
  226. package/dist/plugins/theme-css-generator.esm.js +104 -55
  227. package/dist/plugins/theme-css-generator.js +104 -55
  228. package/dist/provider.esm.js +4 -4
  229. package/dist/provider.js +4 -4
  230. package/dist/styles.css +1 -1
  231. package/dist/theme.esm.js +633 -468
  232. package/dist/theme.js +633 -468
  233. package/dist/themes/ThemeContext.esm.js +15 -15
  234. package/dist/themes/ThemeContext.js +15 -15
  235. package/dist/themes/ThemeProvider.esm.js +25 -22
  236. package/dist/themes/ThemeProvider.js +25 -22
  237. package/dist/themes/accessibility.esm.js +147 -108
  238. package/dist/themes/accessibility.js +147 -108
  239. package/dist/themes/aria-patterns.esm.js +198 -162
  240. package/dist/themes/aria-patterns.js +198 -162
  241. package/dist/themes/base-themes.esm.js +14 -11
  242. package/dist/themes/base-themes.js +14 -11
  243. package/dist/themes/colorManager.esm.js +101 -83
  244. package/dist/themes/colorManager.js +101 -83
  245. package/dist/themes/examples/dark-theme.esm.js +133 -103
  246. package/dist/themes/examples/dark-theme.js +133 -103
  247. package/dist/themes/examples/minimal-theme.esm.js +83 -61
  248. package/dist/themes/examples/minimal-theme.js +83 -61
  249. package/dist/themes/focus-management.esm.js +202 -143
  250. package/dist/themes/focus-management.js +202 -143
  251. package/dist/themes/fontLoader.esm.js +28 -19
  252. package/dist/themes/fontLoader.js +28 -19
  253. package/dist/themes/high-contrast.esm.js +152 -104
  254. package/dist/themes/high-contrast.js +152 -104
  255. package/dist/themes/inheritance.esm.js +35 -27
  256. package/dist/themes/inheritance.js +35 -27
  257. package/dist/themes/keyboard-navigation.esm.js +152 -123
  258. package/dist/themes/keyboard-navigation.js +152 -123
  259. package/dist/themes/motion-reduction.esm.js +193 -133
  260. package/dist/themes/motion-reduction.js +193 -133
  261. package/dist/themes/navigation.esm.js +146 -146
  262. package/dist/themes/navigation.js +146 -146
  263. package/dist/themes/screen-reader.esm.js +159 -94
  264. package/dist/themes/screen-reader.js +159 -94
  265. package/dist/themes/systemThemeDetector.esm.js +42 -34
  266. package/dist/themes/systemThemeDetector.js +42 -34
  267. package/dist/themes/themeCSSUpdater.esm.js +21 -9
  268. package/dist/themes/themeCSSUpdater.js +21 -9
  269. package/dist/themes/themePersistence.esm.js +68 -47
  270. package/dist/themes/themePersistence.js +68 -47
  271. package/dist/themes/themes/stan-design.esm.js +633 -468
  272. package/dist/themes/themes/stan-design.js +633 -468
  273. package/dist/themes/types.esm.js +301 -287
  274. package/dist/themes/types.js +301 -287
  275. package/dist/themes/useSystemTheme.esm.js +4 -4
  276. package/dist/themes/useSystemTheme.js +4 -4
  277. package/dist/themes/useTheme.esm.js +4 -4
  278. package/dist/themes/useTheme.js +4 -4
  279. package/dist/themes/validation.esm.js +128 -77
  280. package/dist/themes/validation.js +128 -77
  281. package/dist/tokens/index.esm.js +15 -4
  282. package/dist/tokens/index.js +15 -4
  283. package/dist/tokens/tokenExporter.esm.js +87 -61
  284. package/dist/tokens/tokenExporter.js +87 -61
  285. package/dist/tokens/tokenGenerator.esm.js +86 -77
  286. package/dist/tokens/tokenGenerator.js +86 -77
  287. package/dist/tokens/tokenManager.esm.js +64 -51
  288. package/dist/tokens/tokenManager.js +64 -51
  289. package/dist/tokens/tokenValidator.esm.js +193 -147
  290. package/dist/tokens/tokenValidator.js +193 -147
  291. package/dist/tokens/types.esm.js +49 -35
  292. package/dist/tokens/types.js +49 -35
  293. package/dist/utils/bundle-analyzer.esm.js +83 -65
  294. package/dist/utils/bundle-analyzer.js +83 -65
  295. package/dist/utils/bundle-splitting.esm.js +142 -117
  296. package/dist/utils/bundle-splitting.js +142 -117
  297. package/dist/utils/lazy-loading.esm.js +132 -106
  298. package/dist/utils/lazy-loading.js +132 -106
  299. package/dist/utils/performance-monitor.esm.js +170 -129
  300. package/dist/utils/performance-monitor.js +170 -129
  301. package/dist/utils/tree-shaking.esm.js +69 -61
  302. package/dist/utils/tree-shaking.js +69 -61
  303. package/package.json +1 -1
  304. package/src/index.ts +146 -146
@@ -1,111 +1,141 @@
1
1
  // Accessibility theme configuration interface
2
2
  export interface AccessibilityThemeConfig {
3
- highContrast;
4
- reducedMotion;
5
- focusVisible;
6
- ariaLabels, string>;
7
- keyboardShortcuts, string>;
8
- focusRing;
9
- width;
10
- style;
11
- offset;
3
+ highContrast: boolean;
4
+ reducedMotion: boolean;
5
+ focusVisible: boolean;
6
+ ariaLabels: Record<string, string>;
7
+ keyboardShortcuts: Record<string, string>;
8
+ focusRing: {
9
+ color: string;
10
+ width: string;
11
+ style: 'solid' | 'dashed' | 'dotted';
12
+ offset: string;
12
13
  };
13
- motion;
14
- normal;
15
- slow;
14
+ motion: {
15
+ duration: {
16
+ fast: string;
17
+ normal: string;
18
+ slow: string;
16
19
  };
17
- easing;
18
- easeIn;
19
- easeOut;
20
- easeInOut;
20
+ easing: {
21
+ ease: string;
22
+ easeIn: string;
23
+ easeOut: string;
24
+ easeInOut: string;
21
25
  };
22
26
  };
23
- contrast; // WCAG AA minimum contrast ratio
24
- enhanced; // WCAG AAA enhanced contrast ratio
25
- target; // Target contrast ratio for the theme
27
+ contrast: {
28
+ minimum: number; // WCAG AA minimum contrast ratio
29
+ enhanced: number; // WCAG AAA enhanced contrast ratio
30
+ target: number; // Target contrast ratio for the theme
26
31
  };
27
- spacing;
28
- touchTarget; // Minimum touch target size
32
+ spacing: {
33
+ focusRing: string;
34
+ touchTarget: string; // Minimum touch target size
29
35
  };
30
36
  }
31
37
 
32
38
  // Default accessibility configuration
33
- export const defaultAccessibilityConfig= {
34
- highContrast,
35
- reducedMotion,
36
- focusVisible,
37
- ariaLabels,
38
- open,
39
- expand,
40
- collapse,
41
- next,
42
- previous,
43
- submit,
44
- cancel,
45
- loading,
46
- error,
47
- success,
48
- warning,
49
- info},
50
- keyboardShortcuts,
51
- submit,
52
- cancel,
53
- next,
54
- previous,
55
- expand,
56
- collapse},
57
- focusRing,
58
- width,
59
- style,
60
- offset},
61
- motion,
62
- normal,
63
- slow},
64
- easing,
65
- easeIn,
66
- easeOut,
67
- easeInOut}
39
+ export const defaultAccessibilityConfig: AccessibilityThemeConfig = {
40
+ highContrast: false,
41
+ reducedMotion: false,
42
+ focusVisible: true,
43
+ ariaLabels: {
44
+ close: 'Close',
45
+ open: 'Open',
46
+ expand: 'Expand',
47
+ collapse: 'Collapse',
48
+ next: 'Next',
49
+ previous: 'Previous',
50
+ submit: 'Submit',
51
+ cancel: 'Cancel',
52
+ loading: 'Loading',
53
+ error: 'Error',
54
+ success: 'Success',
55
+ warning: 'Warning',
56
+ info: 'Information'
68
57
  },
69
- contrast, // WCAG AA minimum
70
- enhanced, // WCAG AAA enhanced
71
- target},
72
- spacing,
73
- touchTarget}
58
+ keyboardShortcuts: {
59
+ close: 'Escape',
60
+ submit: 'Enter',
61
+ cancel: 'Escape',
62
+ next: 'Tab',
63
+ previous: 'Shift+Tab',
64
+ expand: 'Space or Enter',
65
+ collapse: 'Space or Enter'
66
+ },
67
+ focusRing: {
68
+ color: '#3b82f6',
69
+ width: '2px',
70
+ style: 'solid',
71
+ offset: '2px'
72
+ },
73
+ motion: {
74
+ duration: {
75
+ fast: '150ms',
76
+ normal: '300ms',
77
+ slow: '500ms'
78
+ },
79
+ easing: {
80
+ ease: 'ease',
81
+ easeIn: 'ease-in',
82
+ easeOut: 'ease-out',
83
+ easeInOut: 'ease-in-out'
84
+ }
85
+ },
86
+ contrast: {
87
+ minimum: 4.5, // WCAG AA minimum
88
+ enhanced: 7.0, // WCAG AAA enhanced
89
+ target: 4.5
90
+ },
91
+ spacing: {
92
+ focusRing: '2px',
93
+ touchTarget: '44px'
94
+ }
74
95
  };
75
96
 
76
97
  // High contrast accessibility configuration
77
- export const highContrastAccessibilityConfig= {
98
+ export const highContrastAccessibilityConfig: AccessibilityThemeConfig = {
78
99
  ...defaultAccessibilityConfig,
79
- highContrast,
80
- focusRing,
81
- width,
82
- style,
83
- offset},
84
- contrast,
85
- enhanced,
86
- target}
100
+ highContrast: true,
101
+ focusRing: {
102
+ color: '#ffffff',
103
+ width: '3px',
104
+ style: 'solid',
105
+ offset: '1px'
106
+ },
107
+ contrast: {
108
+ minimum: 7.0,
109
+ enhanced: 7.0,
110
+ target: 7.0
111
+ }
87
112
  };
88
113
 
89
114
  // Reduced motion accessibility configuration
90
- export const reducedMotionAccessibilityConfig= {
115
+ export const reducedMotionAccessibilityConfig: AccessibilityThemeConfig = {
91
116
  ...defaultAccessibilityConfig,
92
- reducedMotion,
93
- motion,
94
- normal,
95
- slow},
96
- easing,
97
- easeIn,
98
- easeOut,
99
- easeInOut}
117
+ reducedMotion: true,
118
+ motion: {
119
+ duration: {
120
+ fast: '0ms',
121
+ normal: '0ms',
122
+ slow: '0ms'
123
+ },
124
+ easing: {
125
+ ease: 'linear',
126
+ easeIn: 'linear',
127
+ easeOut: 'linear',
128
+ easeInOut: 'linear'
129
+ }
100
130
  }
101
131
  };
102
132
 
103
133
  // Accessibility theme manager
104
134
  export class AccessibilityThemeManager {
105
- private config;
106
- private listeners) => void>;
135
+ private config: AccessibilityThemeConfig;
136
+ private listeners: Set<(config: AccessibilityThemeConfig) => void>;
107
137
 
108
- constructor(initialConfig= defaultAccessibilityConfig) {
138
+ constructor(initialConfig: AccessibilityThemeConfig = defaultAccessibilityConfig) {
109
139
  this.config = initialConfig;
110
140
  this.listeners = new Set();
111
141
  this.initializeSystemPreferences();
@@ -115,8 +145,8 @@ export class AccessibilityThemeManager {
115
145
  private initializeSystemPreferences() {
116
146
  // Check for system high contrast preference
117
147
  if (typeof window !== 'undefined' && window.matchMedia) {
118
- const highContrastQuery = window.matchMedia('(prefers-contrast)');
119
- const reducedMotionQuery = window.matchMedia('(prefers-reduced-motion)');
148
+ const highContrastQuery = window.matchMedia('(prefers-contrast: high)');
149
+ const reducedMotionQuery = window.matchMedia('(prefers-reduced-motion: reduce)');
120
150
 
121
151
  this.updateFromSystemPreferences(highContrastQuery.matches, reducedMotionQuery.matches);
122
152
 
@@ -132,7 +162,7 @@ export class AccessibilityThemeManager {
132
162
  }
133
163
 
134
164
  // Update configuration based on system preferences
135
- private updateFromSystemPreferences(highContrast, reducedMotion) {
165
+ private updateFromSystemPreferences(highContrast: boolean, reducedMotion: boolean) {
136
166
  let newConfig = { ...this.config };
137
167
 
138
168
  if (highContrast) {
@@ -147,17 +177,18 @@ export class AccessibilityThemeManager {
147
177
  }
148
178
 
149
179
  // Get current accessibility configuration
150
- getConfig()};
180
+ getConfig(): AccessibilityThemeConfig {
181
+ return { ...this.config };
151
182
  }
152
183
 
153
184
  // Update accessibility configuration
154
- updateConfig(newConfig) {
185
+ updateConfig(newConfig: Partial<AccessibilityThemeConfig>) {
155
186
  this.config = { ...this.config, ...newConfig };
156
187
  this.notifyListeners();
157
188
  }
158
189
 
159
190
  // Subscribe to accessibility configuration changes
160
- subscribe(listener) => void)) => void {
191
+ subscribe(listener: (config: AccessibilityThemeConfig) => void): () => void {
161
192
  this.listeners.add(listener);
162
193
  return () => this.listeners.delete(listener);
163
194
  }
@@ -168,47 +199,55 @@ export class AccessibilityThemeManager {
168
199
  }
169
200
 
170
201
  // Get CSS custom properties for accessibility
171
- getCSSProperties(), string> {
202
+ getCSSProperties(): Record<string, string> {
172
203
  const { focusRing, motion, spacing } = this.config;
173
204
 
174
205
  return {
175
- '--focus-ring-color',
176
- '--focus-ring-width',
177
- '--focus-ring-style',
178
- '--focus-ring-offset',
179
- '--motion-duration-fast',
180
- '--motion-duration-normal',
181
- '--motion-duration-slow',
182
- '--motion-easing-ease',
183
- '--motion-easing-ease-in',
184
- '--motion-easing-ease-out',
185
- '--motion-easing-ease-in-out',
186
- '--spacing-focus-ring',
187
- '--spacing-touch-target'};
206
+ '--focus-ring-color': focusRing.color,
207
+ '--focus-ring-width': focusRing.width,
208
+ '--focus-ring-style': focusRing.style,
209
+ '--focus-ring-offset': focusRing.offset,
210
+ '--motion-duration-fast': motion.duration.fast,
211
+ '--motion-duration-normal': motion.duration.normal,
212
+ '--motion-duration-slow': motion.duration.slow,
213
+ '--motion-easing-ease': motion.easing.ease,
214
+ '--motion-easing-ease-in': motion.easing.easeIn,
215
+ '--motion-easing-ease-out': motion.easing.easeOut,
216
+ '--motion-easing-ease-in-out': motion.easing.easeInOut,
217
+ '--spacing-focus-ring': spacing.focusRing,
218
+ '--spacing-touch-target': spacing.touchTarget
219
+ };
188
220
  }
189
221
 
190
222
  // Check if high contrast mode is enabled
191
- isHighContrast();
223
+ isHighContrast(): boolean {
224
+ return this.config.highContrast;
192
225
  }
193
226
 
194
227
  // Check if reduced motion is enabled
195
- isReducedMotion();
228
+ isReducedMotion(): boolean {
229
+ return this.config.reducedMotion;
196
230
  }
197
231
 
198
232
  // Check if focus visible is enabled
199
- isFocusVisible();
233
+ isFocusVisible(): boolean {
234
+ return this.config.focusVisible;
200
235
  }
201
236
 
202
237
  // Get ARIA label for a specific key
203
- getAriaLabel(key)] || key;
238
+ getAriaLabel(key: string): string {
239
+ return this.config.ariaLabels[key] || key;
204
240
  }
205
241
 
206
242
  // Get keyboard shortcut for a specific action
207
- getKeyboardShortcut(action)] || '';
243
+ getKeyboardShortcut(action: string): string {
244
+ return this.config.keyboardShortcuts[action] || '';
208
245
  }
209
246
 
210
247
  // Validate contrast ratio
211
- validateContrastRatio(_foreground, _background), return true as placeholder
248
+ validateContrastRatio(_foreground: string, _background: string): boolean {
249
+ // This would implement actual contrast ratio calculation
250
+ // For now, return true as placeholder
212
251
  return true;
213
252
  }
214
253
  }
@@ -1,111 +1,141 @@
1
1
  // Accessibility theme configuration interface
2
2
  export interface AccessibilityThemeConfig {
3
- highContrast;
4
- reducedMotion;
5
- focusVisible;
6
- ariaLabels, string>;
7
- keyboardShortcuts, string>;
8
- focusRing;
9
- width;
10
- style;
11
- offset;
3
+ highContrast: boolean;
4
+ reducedMotion: boolean;
5
+ focusVisible: boolean;
6
+ ariaLabels: Record<string, string>;
7
+ keyboardShortcuts: Record<string, string>;
8
+ focusRing: {
9
+ color: string;
10
+ width: string;
11
+ style: 'solid' | 'dashed' | 'dotted';
12
+ offset: string;
12
13
  };
13
- motion;
14
- normal;
15
- slow;
14
+ motion: {
15
+ duration: {
16
+ fast: string;
17
+ normal: string;
18
+ slow: string;
16
19
  };
17
- easing;
18
- easeIn;
19
- easeOut;
20
- easeInOut;
20
+ easing: {
21
+ ease: string;
22
+ easeIn: string;
23
+ easeOut: string;
24
+ easeInOut: string;
21
25
  };
22
26
  };
23
- contrast; // WCAG AA minimum contrast ratio
24
- enhanced; // WCAG AAA enhanced contrast ratio
25
- target; // Target contrast ratio for the theme
27
+ contrast: {
28
+ minimum: number; // WCAG AA minimum contrast ratio
29
+ enhanced: number; // WCAG AAA enhanced contrast ratio
30
+ target: number; // Target contrast ratio for the theme
26
31
  };
27
- spacing;
28
- touchTarget; // Minimum touch target size
32
+ spacing: {
33
+ focusRing: string;
34
+ touchTarget: string; // Minimum touch target size
29
35
  };
30
36
  }
31
37
 
32
38
  // Default accessibility configuration
33
- export const defaultAccessibilityConfig= {
34
- highContrast,
35
- reducedMotion,
36
- focusVisible,
37
- ariaLabels,
38
- open,
39
- expand,
40
- collapse,
41
- next,
42
- previous,
43
- submit,
44
- cancel,
45
- loading,
46
- error,
47
- success,
48
- warning,
49
- info},
50
- keyboardShortcuts,
51
- submit,
52
- cancel,
53
- next,
54
- previous,
55
- expand,
56
- collapse},
57
- focusRing,
58
- width,
59
- style,
60
- offset},
61
- motion,
62
- normal,
63
- slow},
64
- easing,
65
- easeIn,
66
- easeOut,
67
- easeInOut}
39
+ export const defaultAccessibilityConfig: AccessibilityThemeConfig = {
40
+ highContrast: false,
41
+ reducedMotion: false,
42
+ focusVisible: true,
43
+ ariaLabels: {
44
+ close: 'Close',
45
+ open: 'Open',
46
+ expand: 'Expand',
47
+ collapse: 'Collapse',
48
+ next: 'Next',
49
+ previous: 'Previous',
50
+ submit: 'Submit',
51
+ cancel: 'Cancel',
52
+ loading: 'Loading',
53
+ error: 'Error',
54
+ success: 'Success',
55
+ warning: 'Warning',
56
+ info: 'Information'
68
57
  },
69
- contrast, // WCAG AA minimum
70
- enhanced, // WCAG AAA enhanced
71
- target},
72
- spacing,
73
- touchTarget}
58
+ keyboardShortcuts: {
59
+ close: 'Escape',
60
+ submit: 'Enter',
61
+ cancel: 'Escape',
62
+ next: 'Tab',
63
+ previous: 'Shift+Tab',
64
+ expand: 'Space or Enter',
65
+ collapse: 'Space or Enter'
66
+ },
67
+ focusRing: {
68
+ color: '#3b82f6',
69
+ width: '2px',
70
+ style: 'solid',
71
+ offset: '2px'
72
+ },
73
+ motion: {
74
+ duration: {
75
+ fast: '150ms',
76
+ normal: '300ms',
77
+ slow: '500ms'
78
+ },
79
+ easing: {
80
+ ease: 'ease',
81
+ easeIn: 'ease-in',
82
+ easeOut: 'ease-out',
83
+ easeInOut: 'ease-in-out'
84
+ }
85
+ },
86
+ contrast: {
87
+ minimum: 4.5, // WCAG AA minimum
88
+ enhanced: 7.0, // WCAG AAA enhanced
89
+ target: 4.5
90
+ },
91
+ spacing: {
92
+ focusRing: '2px',
93
+ touchTarget: '44px'
94
+ }
74
95
  };
75
96
 
76
97
  // High contrast accessibility configuration
77
- export const highContrastAccessibilityConfig= {
98
+ export const highContrastAccessibilityConfig: AccessibilityThemeConfig = {
78
99
  ...defaultAccessibilityConfig,
79
- highContrast,
80
- focusRing,
81
- width,
82
- style,
83
- offset},
84
- contrast,
85
- enhanced,
86
- target}
100
+ highContrast: true,
101
+ focusRing: {
102
+ color: '#ffffff',
103
+ width: '3px',
104
+ style: 'solid',
105
+ offset: '1px'
106
+ },
107
+ contrast: {
108
+ minimum: 7.0,
109
+ enhanced: 7.0,
110
+ target: 7.0
111
+ }
87
112
  };
88
113
 
89
114
  // Reduced motion accessibility configuration
90
- export const reducedMotionAccessibilityConfig= {
115
+ export const reducedMotionAccessibilityConfig: AccessibilityThemeConfig = {
91
116
  ...defaultAccessibilityConfig,
92
- reducedMotion,
93
- motion,
94
- normal,
95
- slow},
96
- easing,
97
- easeIn,
98
- easeOut,
99
- easeInOut}
117
+ reducedMotion: true,
118
+ motion: {
119
+ duration: {
120
+ fast: '0ms',
121
+ normal: '0ms',
122
+ slow: '0ms'
123
+ },
124
+ easing: {
125
+ ease: 'linear',
126
+ easeIn: 'linear',
127
+ easeOut: 'linear',
128
+ easeInOut: 'linear'
129
+ }
100
130
  }
101
131
  };
102
132
 
103
133
  // Accessibility theme manager
104
134
  export class AccessibilityThemeManager {
105
- private config;
106
- private listeners) => void>;
135
+ private config: AccessibilityThemeConfig;
136
+ private listeners: Set<(config: AccessibilityThemeConfig) => void>;
107
137
 
108
- constructor(initialConfig= defaultAccessibilityConfig) {
138
+ constructor(initialConfig: AccessibilityThemeConfig = defaultAccessibilityConfig) {
109
139
  this.config = initialConfig;
110
140
  this.listeners = new Set();
111
141
  this.initializeSystemPreferences();
@@ -115,8 +145,8 @@ export class AccessibilityThemeManager {
115
145
  private initializeSystemPreferences() {
116
146
  // Check for system high contrast preference
117
147
  if (typeof window !== 'undefined' && window.matchMedia) {
118
- const highContrastQuery = window.matchMedia('(prefers-contrast)');
119
- const reducedMotionQuery = window.matchMedia('(prefers-reduced-motion)');
148
+ const highContrastQuery = window.matchMedia('(prefers-contrast: high)');
149
+ const reducedMotionQuery = window.matchMedia('(prefers-reduced-motion: reduce)');
120
150
 
121
151
  this.updateFromSystemPreferences(highContrastQuery.matches, reducedMotionQuery.matches);
122
152
 
@@ -132,7 +162,7 @@ export class AccessibilityThemeManager {
132
162
  }
133
163
 
134
164
  // Update configuration based on system preferences
135
- private updateFromSystemPreferences(highContrast, reducedMotion) {
165
+ private updateFromSystemPreferences(highContrast: boolean, reducedMotion: boolean) {
136
166
  let newConfig = { ...this.config };
137
167
 
138
168
  if (highContrast) {
@@ -147,17 +177,18 @@ export class AccessibilityThemeManager {
147
177
  }
148
178
 
149
179
  // Get current accessibility configuration
150
- getConfig()};
180
+ getConfig(): AccessibilityThemeConfig {
181
+ return { ...this.config };
151
182
  }
152
183
 
153
184
  // Update accessibility configuration
154
- updateConfig(newConfig) {
185
+ updateConfig(newConfig: Partial<AccessibilityThemeConfig>) {
155
186
  this.config = { ...this.config, ...newConfig };
156
187
  this.notifyListeners();
157
188
  }
158
189
 
159
190
  // Subscribe to accessibility configuration changes
160
- subscribe(listener) => void)) => void {
191
+ subscribe(listener: (config: AccessibilityThemeConfig) => void): () => void {
161
192
  this.listeners.add(listener);
162
193
  return () => this.listeners.delete(listener);
163
194
  }
@@ -168,47 +199,55 @@ export class AccessibilityThemeManager {
168
199
  }
169
200
 
170
201
  // Get CSS custom properties for accessibility
171
- getCSSProperties(), string> {
202
+ getCSSProperties(): Record<string, string> {
172
203
  const { focusRing, motion, spacing } = this.config;
173
204
 
174
205
  return {
175
- '--focus-ring-color',
176
- '--focus-ring-width',
177
- '--focus-ring-style',
178
- '--focus-ring-offset',
179
- '--motion-duration-fast',
180
- '--motion-duration-normal',
181
- '--motion-duration-slow',
182
- '--motion-easing-ease',
183
- '--motion-easing-ease-in',
184
- '--motion-easing-ease-out',
185
- '--motion-easing-ease-in-out',
186
- '--spacing-focus-ring',
187
- '--spacing-touch-target'};
206
+ '--focus-ring-color': focusRing.color,
207
+ '--focus-ring-width': focusRing.width,
208
+ '--focus-ring-style': focusRing.style,
209
+ '--focus-ring-offset': focusRing.offset,
210
+ '--motion-duration-fast': motion.duration.fast,
211
+ '--motion-duration-normal': motion.duration.normal,
212
+ '--motion-duration-slow': motion.duration.slow,
213
+ '--motion-easing-ease': motion.easing.ease,
214
+ '--motion-easing-ease-in': motion.easing.easeIn,
215
+ '--motion-easing-ease-out': motion.easing.easeOut,
216
+ '--motion-easing-ease-in-out': motion.easing.easeInOut,
217
+ '--spacing-focus-ring': spacing.focusRing,
218
+ '--spacing-touch-target': spacing.touchTarget
219
+ };
188
220
  }
189
221
 
190
222
  // Check if high contrast mode is enabled
191
- isHighContrast();
223
+ isHighContrast(): boolean {
224
+ return this.config.highContrast;
192
225
  }
193
226
 
194
227
  // Check if reduced motion is enabled
195
- isReducedMotion();
228
+ isReducedMotion(): boolean {
229
+ return this.config.reducedMotion;
196
230
  }
197
231
 
198
232
  // Check if focus visible is enabled
199
- isFocusVisible();
233
+ isFocusVisible(): boolean {
234
+ return this.config.focusVisible;
200
235
  }
201
236
 
202
237
  // Get ARIA label for a specific key
203
- getAriaLabel(key)] || key;
238
+ getAriaLabel(key: string): string {
239
+ return this.config.ariaLabels[key] || key;
204
240
  }
205
241
 
206
242
  // Get keyboard shortcut for a specific action
207
- getKeyboardShortcut(action)] || '';
243
+ getKeyboardShortcut(action: string): string {
244
+ return this.config.keyboardShortcuts[action] || '';
208
245
  }
209
246
 
210
247
  // Validate contrast ratio
211
- validateContrastRatio(_foreground, _background), return true as placeholder
248
+ validateContrastRatio(_foreground: string, _background: string): boolean {
249
+ // This would implement actual contrast ratio calculation
250
+ // For now, return true as placeholder
212
251
  return true;
213
252
  }
214
253
  }