@rakeyshgidwani/roger-ui-bank-theme-stan-design 0.1.4 → 0.1.6

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 (164) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/dist/index.d.ts +131 -131
  3. package/dist/index.esm.js +148 -148
  4. package/dist/index.js +148 -148
  5. package/dist/styles.css +1 -1
  6. package/package.json +1 -1
  7. package/src/components/ui/accessibility-demo.tsx +271 -0
  8. package/src/components/ui/advanced-component-architecture-demo.tsx +916 -0
  9. package/src/components/ui/advanced-transition-system-demo.tsx +670 -0
  10. package/src/components/ui/advanced-transition-system.tsx +395 -0
  11. package/src/components/ui/animation/animated-container.tsx +166 -0
  12. package/src/components/ui/animation/index.ts +19 -0
  13. package/src/components/ui/animation/staggered-container.tsx +68 -0
  14. package/src/components/ui/animation-demo.tsx +250 -0
  15. package/src/components/ui/badge.tsx +33 -0
  16. package/src/components/ui/battery-conscious-animation-demo.tsx +568 -0
  17. package/src/components/ui/border-radius-shadow-demo.tsx +187 -0
  18. package/src/components/ui/button.tsx +36 -0
  19. package/src/components/ui/card.tsx +207 -0
  20. package/src/components/ui/checkbox.tsx +30 -0
  21. package/src/components/ui/color-preview.tsx +411 -0
  22. package/src/components/ui/data-display/chart.tsx +653 -0
  23. package/src/components/ui/data-display/data-grid-simple.tsx +76 -0
  24. package/src/components/ui/data-display/data-grid.tsx +680 -0
  25. package/src/components/ui/data-display/list.tsx +456 -0
  26. package/src/components/ui/data-display/table.tsx +482 -0
  27. package/src/components/ui/data-display/timeline.tsx +441 -0
  28. package/src/components/ui/data-display/tree.tsx +602 -0
  29. package/src/components/ui/data-display/types.ts +536 -0
  30. package/src/components/ui/enterprise-mobile-experience-demo.tsx +749 -0
  31. package/src/components/ui/enterprise-mobile-experience.tsx +464 -0
  32. package/src/components/ui/feedback/alert.tsx +157 -0
  33. package/src/components/ui/feedback/progress.tsx +292 -0
  34. package/src/components/ui/feedback/skeleton.tsx +185 -0
  35. package/src/components/ui/feedback/toast.tsx +280 -0
  36. package/src/components/ui/feedback/types.ts +125 -0
  37. package/src/components/ui/font-preview.tsx +288 -0
  38. package/src/components/ui/form-demo.tsx +553 -0
  39. package/src/components/ui/hardware-acceleration-demo.tsx +547 -0
  40. package/src/components/ui/input.tsx +35 -0
  41. package/src/components/ui/label.tsx +16 -0
  42. package/src/components/ui/layout-demo.tsx +367 -0
  43. package/src/components/ui/layouts/adaptive-layout.tsx +139 -0
  44. package/src/components/ui/layouts/desktop-layout.tsx +224 -0
  45. package/src/components/ui/layouts/index.ts +10 -0
  46. package/src/components/ui/layouts/mobile-layout.tsx +162 -0
  47. package/src/components/ui/layouts/tablet-layout.tsx +197 -0
  48. package/src/components/ui/mobile-form-validation.tsx +451 -0
  49. package/src/components/ui/mobile-input-demo.tsx +201 -0
  50. package/src/components/ui/mobile-input.tsx +281 -0
  51. package/src/components/ui/mobile-skeleton-loading-demo.tsx +638 -0
  52. package/src/components/ui/navigation/breadcrumb.tsx +158 -0
  53. package/src/components/ui/navigation/index.ts +36 -0
  54. package/src/components/ui/navigation/menu.tsx +374 -0
  55. package/src/components/ui/navigation/navigation-demo.tsx +324 -0
  56. package/src/components/ui/navigation/pagination.tsx +272 -0
  57. package/src/components/ui/navigation/sidebar.tsx +383 -0
  58. package/src/components/ui/navigation/stepper.tsx +303 -0
  59. package/src/components/ui/navigation/tabs.tsx +205 -0
  60. package/src/components/ui/navigation/types.ts +299 -0
  61. package/src/components/ui/overlay/backdrop.tsx +81 -0
  62. package/src/components/ui/overlay/focus-manager.tsx +143 -0
  63. package/src/components/ui/overlay/index.ts +36 -0
  64. package/src/components/ui/overlay/modal.tsx +270 -0
  65. package/src/components/ui/overlay/overlay-manager.tsx +110 -0
  66. package/src/components/ui/overlay/popover.tsx +462 -0
  67. package/src/components/ui/overlay/portal.tsx +79 -0
  68. package/src/components/ui/overlay/tooltip.tsx +303 -0
  69. package/src/components/ui/overlay/types.ts +196 -0
  70. package/src/components/ui/performance-demo.tsx +596 -0
  71. package/src/components/ui/semantic-input-system-demo.tsx +502 -0
  72. package/src/components/ui/semantic-input-system-demo.tsx.disabled +873 -0
  73. package/src/components/ui/tablet-layout.tsx +192 -0
  74. package/src/components/ui/theme-customizer.tsx +386 -0
  75. package/src/components/ui/theme-preview.tsx +310 -0
  76. package/src/components/ui/theme-switcher.tsx +264 -0
  77. package/src/components/ui/theme-toggle.tsx +38 -0
  78. package/src/components/ui/token-demo.tsx +195 -0
  79. package/src/components/ui/touch-demo.tsx +462 -0
  80. package/src/components/ui/touch-friendly-interface-demo.tsx +519 -0
  81. package/src/components/ui/touch-friendly-interface.tsx +296 -0
  82. package/src/hooks/index.ts +190 -0
  83. package/src/hooks/use-accessibility-support.ts +518 -0
  84. package/src/hooks/use-adaptive-layout.ts +289 -0
  85. package/src/hooks/use-advanced-patterns.ts +294 -0
  86. package/src/hooks/use-advanced-transition-system.ts +393 -0
  87. package/src/hooks/use-animation-profile.ts +288 -0
  88. package/src/hooks/use-battery-animations.ts +384 -0
  89. package/src/hooks/use-battery-conscious-loading.ts +475 -0
  90. package/src/hooks/use-battery-optimization.ts +330 -0
  91. package/src/hooks/use-battery-status.ts +299 -0
  92. package/src/hooks/use-component-performance.ts +344 -0
  93. package/src/hooks/use-device-loading-states.ts +459 -0
  94. package/src/hooks/use-device.tsx +110 -0
  95. package/src/hooks/use-enterprise-mobile-experience.ts +488 -0
  96. package/src/hooks/use-form-feedback.ts +403 -0
  97. package/src/hooks/use-form-performance.ts +513 -0
  98. package/src/hooks/use-frame-rate.ts +251 -0
  99. package/src/hooks/use-gestures.ts +338 -0
  100. package/src/hooks/use-hardware-acceleration.ts +341 -0
  101. package/src/hooks/use-input-accessibility.ts +455 -0
  102. package/src/hooks/use-input-performance.ts +506 -0
  103. package/src/hooks/use-layout-performance.ts +319 -0
  104. package/src/hooks/use-loading-accessibility.ts +535 -0
  105. package/src/hooks/use-loading-performance.ts +473 -0
  106. package/src/hooks/use-memory-usage.ts +287 -0
  107. package/src/hooks/use-mobile-form-layout.ts +464 -0
  108. package/src/hooks/use-mobile-form-validation.ts +518 -0
  109. package/src/hooks/use-mobile-keyboard-optimization.ts +472 -0
  110. package/src/hooks/use-mobile-layout.ts +302 -0
  111. package/src/hooks/use-mobile-optimization.ts +406 -0
  112. package/src/hooks/use-mobile-skeleton.ts +402 -0
  113. package/src/hooks/use-mobile-touch.ts +414 -0
  114. package/src/hooks/use-performance-throttling.ts +348 -0
  115. package/src/hooks/use-performance.ts +316 -0
  116. package/src/hooks/use-reusable-architecture.ts +414 -0
  117. package/src/hooks/use-semantic-input-types.ts +357 -0
  118. package/src/hooks/use-semantic-input.ts +565 -0
  119. package/src/hooks/use-tablet-layout.ts +384 -0
  120. package/src/hooks/use-touch-friendly-input.ts +524 -0
  121. package/src/hooks/use-touch-friendly-interface.ts +331 -0
  122. package/src/hooks/use-touch-optimization.ts +375 -0
  123. package/src/index.ts +279 -279
  124. package/src/lib/utils.ts +6 -0
  125. package/src/themes/README.md +272 -0
  126. package/src/themes/ThemeContext.tsx +31 -0
  127. package/src/themes/ThemeProvider.tsx +232 -0
  128. package/src/themes/accessibility/index.ts +27 -0
  129. package/src/themes/accessibility.ts +259 -0
  130. package/src/themes/aria-patterns.ts +420 -0
  131. package/src/themes/base-themes.ts +55 -0
  132. package/src/themes/colorManager.ts +380 -0
  133. package/src/themes/examples/dark-theme.ts +154 -0
  134. package/src/themes/examples/minimal-theme.ts +108 -0
  135. package/src/themes/focus-management.ts +701 -0
  136. package/src/themes/fontLoader.ts +201 -0
  137. package/src/themes/high-contrast.ts +621 -0
  138. package/src/themes/index.ts +19 -0
  139. package/src/themes/inheritance.ts +227 -0
  140. package/src/themes/keyboard-navigation.ts +550 -0
  141. package/src/themes/motion-reduction.ts +662 -0
  142. package/src/themes/navigation.ts +238 -0
  143. package/src/themes/screen-reader.ts +645 -0
  144. package/src/themes/systemThemeDetector.ts +182 -0
  145. package/src/themes/themeCSSUpdater.ts +262 -0
  146. package/src/themes/themePersistence.ts +238 -0
  147. package/src/themes/themes/default.ts +586 -0
  148. package/src/themes/themes/harvey.ts +554 -0
  149. package/src/themes/themes/stan-design.ts +683 -0
  150. package/src/themes/types.ts +460 -0
  151. package/src/themes/useSystemTheme.ts +48 -0
  152. package/src/themes/useTheme.ts +87 -0
  153. package/src/themes/validation.ts +462 -0
  154. package/src/tokens/index.ts +34 -0
  155. package/src/tokens/tokenExporter.ts +397 -0
  156. package/src/tokens/tokenGenerator.ts +276 -0
  157. package/src/tokens/tokenManager.ts +248 -0
  158. package/src/tokens/tokenValidator.ts +543 -0
  159. package/src/tokens/types.ts +78 -0
  160. package/src/utils/bundle-analyzer.ts +260 -0
  161. package/src/utils/bundle-splitting.ts +483 -0
  162. package/src/utils/lazy-loading.ts +441 -0
  163. package/src/utils/performance-monitor.ts +513 -0
  164. package/src/utils/tree-shaking.ts +274 -0
@@ -0,0 +1,227 @@
1
+ import { MultiThemeConfig, CompleteThemeConfig } from './types';
2
+ import { defaultTheme } from './themes/default';
3
+
4
+ /**
5
+ * Deep merge utility for theme inheritance
6
+ * Recursively merges theme configuration with default values
7
+ */
8
+ function deepMerge<T extends Record<string, any>>(target: T, source: Partial<T>): T {
9
+ const result = { ...target };
10
+
11
+ for (const key in source) {
12
+ if (source[key] !== undefined) {
13
+ if (
14
+ typeof source[key] === 'object' &&
15
+ source[key] !== null &&
16
+ !Array.isArray(source[key]) &&
17
+ typeof target[key] === 'object' &&
18
+ target[key] !== null &&
19
+ !Array.isArray(target[key])
20
+ ) {
21
+ // Recursively merge objects
22
+ result[key] = deepMerge(target[key], source[key]);
23
+ } else {
24
+ // Direct assignment for primitives, arrays, or null values
25
+ result[key] = source[key] as T[Extract<keyof T, string>];
26
+ }
27
+ }
28
+ }
29
+
30
+ return result;
31
+ }
32
+
33
+ /**
34
+ * Apply theme inheritance by merging with default theme
35
+ * Any undefined values in the theme will be filled with defaults
36
+ */
37
+ export function applyThemeInheritance(theme: Partial<MultiThemeConfig>): MultiThemeConfig {
38
+ return deepMerge(defaultTheme, theme);
39
+ }
40
+
41
+ /**
42
+ * Create a theme with inheritance support
43
+ * This is the recommended way to define new themes
44
+ */
45
+ export function createTheme(themeConfig: Partial<MultiThemeConfig>): MultiThemeConfig {
46
+ return applyThemeInheritance(themeConfig);
47
+ }
48
+
49
+ /**
50
+ * Validate that a theme has all required properties
51
+ * Returns an array of missing property paths
52
+ */
53
+ export function validateThemeCompleteness(theme: MultiThemeConfig): string[] {
54
+ const missingPaths: string[] = [];
55
+
56
+ function checkObject(obj: any, defaultObj: any, path: string = '') {
57
+ for (const key in defaultObj) {
58
+ const currentPath = path ? `${path}.${key}` : key;
59
+
60
+ if (obj[key] === undefined) {
61
+ missingPaths.push(currentPath);
62
+ } else if (
63
+ typeof defaultObj[key] === 'object' &&
64
+ defaultObj[key] !== null &&
65
+ !Array.isArray(defaultObj[key])
66
+ ) {
67
+ checkObject(obj[key], defaultObj[key], currentPath);
68
+ }
69
+ }
70
+ }
71
+
72
+ checkObject(theme, defaultTheme);
73
+ return missingPaths;
74
+ }
75
+
76
+ /**
77
+ * Theme inheritance manager
78
+ * Provides utilities for working with theme inheritance
79
+ */
80
+ export const themeInheritanceManager = {
81
+ // Internal theme registry
82
+ _themes: new Map<string, MultiThemeConfig>(),
83
+
84
+ /**
85
+ * Apply inheritance to a theme
86
+ */
87
+ applyInheritance: applyThemeInheritance,
88
+
89
+ /**
90
+ * Create a new theme with inheritance
91
+ */
92
+ createTheme,
93
+
94
+ /**
95
+ * Get the default theme
96
+ */
97
+ getDefaultTheme: () => defaultTheme,
98
+
99
+ /**
100
+ * Validate theme completeness
101
+ */
102
+ validateCompleteness: validateThemeCompleteness,
103
+
104
+ /**
105
+ * Check if a theme has inheritance applied
106
+ */
107
+ hasInheritance: (theme: MultiThemeConfig): boolean => {
108
+ const missing = validateThemeCompleteness(theme);
109
+ return missing.length === 0;
110
+ },
111
+
112
+ /**
113
+ * Get theme property with fallback to default
114
+ */
115
+ getProperty: <T>(theme: MultiThemeConfig, path: string, fallback?: T): T => {
116
+ const keys = path.split('.');
117
+ let current: any = theme;
118
+
119
+ for (const key of keys) {
120
+ if (current && typeof current === 'object' && key in current) {
121
+ current = current[key];
122
+ } else {
123
+ // Fall back to default theme
124
+ current = defaultTheme;
125
+ for (const key of keys) {
126
+ if (current && typeof current === 'object' && key in current) {
127
+ current = current[key];
128
+ } else {
129
+ return fallback as T;
130
+ }
131
+ }
132
+ break;
133
+ }
134
+ }
135
+
136
+ return current as T;
137
+ },
138
+
139
+ /**
140
+ * Register a theme with inheritance applied
141
+ */
142
+ registerTheme: (name: string, theme: Partial<MultiThemeConfig>): MultiThemeConfig => {
143
+ const themeWithInheritance = applyThemeInheritance(theme);
144
+ themeInheritanceManager._themes.set(name, themeWithInheritance);
145
+ return themeWithInheritance;
146
+ },
147
+
148
+ /**
149
+ * Get complete theme with inheritance applied
150
+ */
151
+ getCompleteTheme: (name: string): CompleteThemeConfig | null => {
152
+ // First try to get the registered theme
153
+ const registeredTheme = themeInheritanceManager._themes.get(name);
154
+ if (registeredTheme) {
155
+ // Check if this theme extends another theme that exists
156
+ if (registeredTheme.extends && !themeInheritanceManager._themes.has(registeredTheme.extends)) {
157
+ // Theme extends a missing parent, return null
158
+ return null;
159
+ }
160
+ return toCompleteThemeConfig(registeredTheme);
161
+ }
162
+
163
+ // Fall back to default theme if the requested theme is not found
164
+ if (name === 'default' || name === 'stan-design') {
165
+ return toCompleteThemeConfig(defaultTheme);
166
+ }
167
+
168
+ return null;
169
+ },
170
+
171
+ /**
172
+ * Get all registered theme names
173
+ */
174
+ getRegisteredThemeNames: (): string[] => {
175
+ return Array.from(themeInheritanceManager._themes.keys());
176
+ },
177
+
178
+ /**
179
+ * Check if a theme is registered
180
+ */
181
+ isThemeRegistered: (name: string): boolean => {
182
+ return themeInheritanceManager._themes.has(name);
183
+ }
184
+ };
185
+
186
+ /**
187
+ * Theme inheritance decorator
188
+ * Use this to automatically apply inheritance when defining themes
189
+ */
190
+ export function withInheritance(themeConfig: Partial<MultiThemeConfig>) {
191
+ return function <T extends { new (...args: any[]): any }>(constructor: T) {
192
+ return class extends constructor {
193
+ static theme = applyThemeInheritance(themeConfig);
194
+ };
195
+ };
196
+ }
197
+
198
+ /**
199
+ * Partial theme type for theme definitions
200
+ * Use this when you only want to define specific parts of a theme
201
+ */
202
+ export type PartialThemeConfig = Partial<MultiThemeConfig>;
203
+
204
+ /**
205
+ * Theme override utility
206
+ * Allows you to override specific parts of an existing theme
207
+ */
208
+ export function overrideTheme(
209
+ baseTheme: MultiThemeConfig,
210
+ overrides: Partial<MultiThemeConfig>
211
+ ): MultiThemeConfig {
212
+ return deepMerge(baseTheme, overrides);
213
+ }
214
+
215
+ /**
216
+ * Convert MultiThemeConfig to CompleteThemeConfig
217
+ */
218
+ export function toCompleteThemeConfig(theme: MultiThemeConfig): CompleteThemeConfig {
219
+ return {
220
+ ...theme,
221
+ validation: {
222
+ isValid: true,
223
+ errors: [],
224
+ warnings: []
225
+ }
226
+ };
227
+ }