@rakeyshgidwani/roger-ui-bank-theme-stan-design 0.2.9 → 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
@@ -5,7 +5,8 @@ import { defaultTheme } from './themes/default';
5
5
  * Deep merge utility for theme inheritance
6
6
  * Recursively merges theme configuration with default values
7
7
  */
8
- function deepMerge<T extends Record<string, any>>(target, source)= { ...target };
8
+ function deepMerge<T extends Record<string, any>>(target: T, source: Partial<T>): T {
9
+ const result = { ...target };
9
10
 
10
11
  for (const key in source) {
11
12
  if (source[key] !== undefined) {
@@ -33,26 +34,28 @@ function deepMerge<T extends Record<string, any>>(target, source)= { ...target }
33
34
  * Apply theme inheritance by merging with default theme
34
35
  * Any undefined values in the theme will be filled with defaults
35
36
  */
36
- export function applyThemeInheritance(theme), theme);
37
+ export function applyThemeInheritance(theme: Partial<MultiThemeConfig>): MultiThemeConfig {
38
+ return deepMerge(defaultTheme, theme);
37
39
  }
38
40
 
39
41
  /**
40
42
  * Create a theme with inheritance support
41
43
  * This is the recommended way to define new themes
42
44
  */
43
- export function createTheme(themeConfig));
45
+ export function createTheme(themeConfig: Partial<MultiThemeConfig>): MultiThemeConfig {
46
+ return applyThemeInheritance(themeConfig);
44
47
  }
45
48
 
46
49
  /**
47
50
  * Validate that a theme has all required properties
48
51
  * Returns an array of missing property paths
49
52
  */
50
- export function validateThemeCompleteness(theme)] {
51
- const missingPaths] = [];
53
+ export function validateThemeCompleteness(theme: MultiThemeConfig): string[] {
54
+ const missingPaths: string[] = [];
52
55
 
53
- function checkObject(obj, defaultObj, path= '') {
56
+ function checkObject(obj: any, defaultObj: any, path: string = '') {
54
57
  for (const key in defaultObj) {
55
- const currentPath = path ? `${path}.${key}` ;
58
+ const currentPath = path ? `${path}.${key}` : key;
56
59
 
57
60
  if (obj[key] === undefined) {
58
61
  missingPaths.push(currentPath);
@@ -76,12 +79,12 @@ export function validateThemeCompleteness(theme)] {
76
79
  */
77
80
  export const themeInheritanceManager = {
78
81
  // Internal theme registry
79
- _themes, MultiThemeConfig>(),
82
+ _themes: new Map<string, MultiThemeConfig>(),
80
83
 
81
84
  /**
82
85
  * Apply inheritance to a theme
83
86
  */
84
- applyInheritance,
87
+ applyInheritance: applyThemeInheritance,
85
88
 
86
89
  /**
87
90
  * Create a new theme with inheritance
@@ -91,17 +94,17 @@ export const themeInheritanceManager = {
91
94
  /**
92
95
  * Get the default theme
93
96
  */
94
- getDefaultTheme) => defaultTheme,
97
+ getDefaultTheme: () => defaultTheme,
95
98
 
96
99
  /**
97
100
  * Validate theme completeness
98
101
  */
99
- validateCompleteness,
102
+ validateCompleteness: validateThemeCompleteness,
100
103
 
101
104
  /**
102
105
  * Check if a theme has inheritance applied
103
106
  */
104
- hasInheritance)=> {
107
+ hasInheritance: (theme: MultiThemeConfig): boolean => {
105
108
  const missing = validateThemeCompleteness(theme);
106
109
  return missing.length === 0;
107
110
  },
@@ -109,9 +112,9 @@ export const themeInheritanceManager = {
109
112
  /**
110
113
  * Get theme property with fallback to default
111
114
  */
112
- getProperty, path, fallback?)=> {
115
+ getProperty: <T>(theme: MultiThemeConfig, path: string, fallback?: T): T => {
113
116
  const keys = path.split('.');
114
- let current= theme;
117
+ let current: any = theme;
115
118
 
116
119
  for (const key of keys) {
117
120
  if (current && typeof current === 'object' && key in current) {
@@ -136,7 +139,7 @@ export const themeInheritanceManager = {
136
139
  /**
137
140
  * Register a theme with inheritance applied
138
141
  */
139
- registerTheme, theme)=> {
142
+ registerTheme: (name: string, theme: Partial<MultiThemeConfig>): MultiThemeConfig => {
140
143
  const themeWithInheritance = applyThemeInheritance(theme);
141
144
  themeInheritanceManager._themes.set(name, themeWithInheritance);
142
145
  return themeWithInheritance;
@@ -145,7 +148,7 @@ export const themeInheritanceManager = {
145
148
  /**
146
149
  * Get complete theme with inheritance applied
147
150
  */
148
- getCompleteTheme)=> {
151
+ getCompleteTheme: (name: string): CompleteThemeConfig | null => {
149
152
  // First try to get the registered theme
150
153
  const registeredTheme = themeInheritanceManager._themes.get(name);
151
154
  if (registeredTheme) {
@@ -168,14 +171,14 @@ export const themeInheritanceManager = {
168
171
  /**
169
172
  * Get all registered theme names
170
173
  */
171
- getRegisteredThemeNames)] => {
174
+ getRegisteredThemeNames: (): string[] => {
172
175
  return Array.from(themeInheritanceManager._themes.keys());
173
176
  },
174
177
 
175
178
  /**
176
179
  * Check if a theme is registered
177
180
  */
178
- isThemeRegistered)=> {
181
+ isThemeRegistered: (name: string): boolean => {
179
182
  return themeInheritanceManager._themes.has(name);
180
183
  }
181
184
  };
@@ -184,8 +187,8 @@ export const themeInheritanceManager = {
184
187
  * Theme inheritance decorator
185
188
  * Use this to automatically apply inheritance when defining themes
186
189
  */
187
- export function withInheritance(themeConfig) {
188
- return function <T extends { new (...args])}>(constructor) {
190
+ export function withInheritance(themeConfig: Partial<MultiThemeConfig>) {
191
+ return function <T extends { new (...args: any[]): any }>(constructor: T) {
189
192
  return class extends constructor {
190
193
  static theme = applyThemeInheritance(themeConfig);
191
194
  };
@@ -196,24 +199,29 @@ export function withInheritance(themeConfig) {
196
199
  * Partial theme type for theme definitions
197
200
  * Use this when you only want to define specific parts of a theme
198
201
  */
199
-
202
+ export type PartialThemeConfig = Partial<MultiThemeConfig>;
200
203
 
201
204
  /**
202
205
  * Theme override utility
203
206
  * Allows you to override specific parts of an existing theme
204
207
  */
205
208
  export function overrideTheme(
206
- baseTheme,
207
- overrides), overrides);
209
+ baseTheme: MultiThemeConfig,
210
+ overrides: Partial<MultiThemeConfig>
211
+ ): MultiThemeConfig {
212
+ return deepMerge(baseTheme, overrides);
208
213
  }
209
214
 
210
215
  /**
211
216
  * Convert MultiThemeConfig to CompleteThemeConfig
212
217
  */
213
- export function toCompleteThemeConfig(theme),
214
- validation,
215
- errors],
216
- warnings]
218
+ export function toCompleteThemeConfig(theme: MultiThemeConfig): CompleteThemeConfig {
219
+ return {
220
+ ...theme,
221
+ validation: {
222
+ isValid: true,
223
+ errors: [],
224
+ warnings: []
217
225
  }
218
226
  };
219
227
  }
@@ -5,7 +5,8 @@ import { defaultTheme } from './themes/default';
5
5
  * Deep merge utility for theme inheritance
6
6
  * Recursively merges theme configuration with default values
7
7
  */
8
- function deepMerge<T extends Record<string, any>>(target, source)= { ...target };
8
+ function deepMerge<T extends Record<string, any>>(target: T, source: Partial<T>): T {
9
+ const result = { ...target };
9
10
 
10
11
  for (const key in source) {
11
12
  if (source[key] !== undefined) {
@@ -33,26 +34,28 @@ function deepMerge<T extends Record<string, any>>(target, source)= { ...target }
33
34
  * Apply theme inheritance by merging with default theme
34
35
  * Any undefined values in the theme will be filled with defaults
35
36
  */
36
- export function applyThemeInheritance(theme), theme);
37
+ export function applyThemeInheritance(theme: Partial<MultiThemeConfig>): MultiThemeConfig {
38
+ return deepMerge(defaultTheme, theme);
37
39
  }
38
40
 
39
41
  /**
40
42
  * Create a theme with inheritance support
41
43
  * This is the recommended way to define new themes
42
44
  */
43
- export function createTheme(themeConfig));
45
+ export function createTheme(themeConfig: Partial<MultiThemeConfig>): MultiThemeConfig {
46
+ return applyThemeInheritance(themeConfig);
44
47
  }
45
48
 
46
49
  /**
47
50
  * Validate that a theme has all required properties
48
51
  * Returns an array of missing property paths
49
52
  */
50
- export function validateThemeCompleteness(theme)] {
51
- const missingPaths] = [];
53
+ export function validateThemeCompleteness(theme: MultiThemeConfig): string[] {
54
+ const missingPaths: string[] = [];
52
55
 
53
- function checkObject(obj, defaultObj, path= '') {
56
+ function checkObject(obj: any, defaultObj: any, path: string = '') {
54
57
  for (const key in defaultObj) {
55
- const currentPath = path ? `${path}.${key}` ;
58
+ const currentPath = path ? `${path}.${key}` : key;
56
59
 
57
60
  if (obj[key] === undefined) {
58
61
  missingPaths.push(currentPath);
@@ -76,12 +79,12 @@ export function validateThemeCompleteness(theme)] {
76
79
  */
77
80
  export const themeInheritanceManager = {
78
81
  // Internal theme registry
79
- _themes, MultiThemeConfig>(),
82
+ _themes: new Map<string, MultiThemeConfig>(),
80
83
 
81
84
  /**
82
85
  * Apply inheritance to a theme
83
86
  */
84
- applyInheritance,
87
+ applyInheritance: applyThemeInheritance,
85
88
 
86
89
  /**
87
90
  * Create a new theme with inheritance
@@ -91,17 +94,17 @@ export const themeInheritanceManager = {
91
94
  /**
92
95
  * Get the default theme
93
96
  */
94
- getDefaultTheme) => defaultTheme,
97
+ getDefaultTheme: () => defaultTheme,
95
98
 
96
99
  /**
97
100
  * Validate theme completeness
98
101
  */
99
- validateCompleteness,
102
+ validateCompleteness: validateThemeCompleteness,
100
103
 
101
104
  /**
102
105
  * Check if a theme has inheritance applied
103
106
  */
104
- hasInheritance)=> {
107
+ hasInheritance: (theme: MultiThemeConfig): boolean => {
105
108
  const missing = validateThemeCompleteness(theme);
106
109
  return missing.length === 0;
107
110
  },
@@ -109,9 +112,9 @@ export const themeInheritanceManager = {
109
112
  /**
110
113
  * Get theme property with fallback to default
111
114
  */
112
- getProperty, path, fallback?)=> {
115
+ getProperty: <T>(theme: MultiThemeConfig, path: string, fallback?: T): T => {
113
116
  const keys = path.split('.');
114
- let current= theme;
117
+ let current: any = theme;
115
118
 
116
119
  for (const key of keys) {
117
120
  if (current && typeof current === 'object' && key in current) {
@@ -136,7 +139,7 @@ export const themeInheritanceManager = {
136
139
  /**
137
140
  * Register a theme with inheritance applied
138
141
  */
139
- registerTheme, theme)=> {
142
+ registerTheme: (name: string, theme: Partial<MultiThemeConfig>): MultiThemeConfig => {
140
143
  const themeWithInheritance = applyThemeInheritance(theme);
141
144
  themeInheritanceManager._themes.set(name, themeWithInheritance);
142
145
  return themeWithInheritance;
@@ -145,7 +148,7 @@ export const themeInheritanceManager = {
145
148
  /**
146
149
  * Get complete theme with inheritance applied
147
150
  */
148
- getCompleteTheme)=> {
151
+ getCompleteTheme: (name: string): CompleteThemeConfig | null => {
149
152
  // First try to get the registered theme
150
153
  const registeredTheme = themeInheritanceManager._themes.get(name);
151
154
  if (registeredTheme) {
@@ -168,14 +171,14 @@ export const themeInheritanceManager = {
168
171
  /**
169
172
  * Get all registered theme names
170
173
  */
171
- getRegisteredThemeNames)] => {
174
+ getRegisteredThemeNames: (): string[] => {
172
175
  return Array.from(themeInheritanceManager._themes.keys());
173
176
  },
174
177
 
175
178
  /**
176
179
  * Check if a theme is registered
177
180
  */
178
- isThemeRegistered)=> {
181
+ isThemeRegistered: (name: string): boolean => {
179
182
  return themeInheritanceManager._themes.has(name);
180
183
  }
181
184
  };
@@ -184,8 +187,8 @@ export const themeInheritanceManager = {
184
187
  * Theme inheritance decorator
185
188
  * Use this to automatically apply inheritance when defining themes
186
189
  */
187
- export function withInheritance(themeConfig) {
188
- return function <T extends { new (...args])}>(constructor) {
190
+ export function withInheritance(themeConfig: Partial<MultiThemeConfig>) {
191
+ return function <T extends { new (...args: any[]): any }>(constructor: T) {
189
192
  return class extends constructor {
190
193
  static theme = applyThemeInheritance(themeConfig);
191
194
  };
@@ -196,24 +199,29 @@ export function withInheritance(themeConfig) {
196
199
  * Partial theme type for theme definitions
197
200
  * Use this when you only want to define specific parts of a theme
198
201
  */
199
-
202
+ export type PartialThemeConfig = Partial<MultiThemeConfig>;
200
203
 
201
204
  /**
202
205
  * Theme override utility
203
206
  * Allows you to override specific parts of an existing theme
204
207
  */
205
208
  export function overrideTheme(
206
- baseTheme,
207
- overrides), overrides);
209
+ baseTheme: MultiThemeConfig,
210
+ overrides: Partial<MultiThemeConfig>
211
+ ): MultiThemeConfig {
212
+ return deepMerge(baseTheme, overrides);
208
213
  }
209
214
 
210
215
  /**
211
216
  * Convert MultiThemeConfig to CompleteThemeConfig
212
217
  */
213
- export function toCompleteThemeConfig(theme),
214
- validation,
215
- errors],
216
- warnings]
218
+ export function toCompleteThemeConfig(theme: MultiThemeConfig): CompleteThemeConfig {
219
+ return {
220
+ ...theme,
221
+ validation: {
222
+ isValid: true,
223
+ errors: [],
224
+ warnings: []
217
225
  }
218
226
  };
219
227
  }