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

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,274 @@
1
+ // Tree-shaking utilities for optimizing bundle size
2
+ export interface ExportAnalysis {
3
+ module: string;
4
+ exports: string[];
5
+ usedExports: string[];
6
+ unusedExports: string[];
7
+ importCount: number;
8
+ treeShakingScore: number;
9
+ }
10
+
11
+ export interface TreeShakingConfig {
12
+ enabled: boolean;
13
+ analyzeExports: boolean;
14
+ removeUnused: boolean;
15
+ preserveSideEffects: boolean;
16
+ modulesToAnalyze: string[];
17
+ excludePatterns: string[];
18
+ }
19
+
20
+ export class TreeShakingOptimizer {
21
+ private config: TreeShakingConfig;
22
+ private exportMap: Map<string, Set<string>>;
23
+ private importMap: Map<string, Set<string>>;
24
+ private usageMap: Map<string, number>;
25
+
26
+ constructor(config: TreeShakingConfig = {
27
+ enabled: true,
28
+ analyzeExports: true,
29
+ removeUnused: true,
30
+ preserveSideEffects: true,
31
+ modulesToAnalyze: [],
32
+ excludePatterns: []
33
+ }) {
34
+ this.config = config;
35
+ this.exportMap = new Map();
36
+ this.importMap = new Map();
37
+ this.usageMap = new Map();
38
+ }
39
+
40
+ // Analyze module exports
41
+ analyzeModuleExports(modulePath: string, exports: string[]): void {
42
+ if (!this.config.analyzeExports) return;
43
+
44
+ this.exportMap.set(modulePath, new Set(exports));
45
+
46
+ // Initialize usage count for each export
47
+ exports.forEach(exportName => {
48
+ const key = `${modulePath}:${exportName}`;
49
+ this.usageMap.set(key, 0);
50
+ });
51
+ }
52
+
53
+ // Track import usage
54
+ trackImport(modulePath: string, importName: string): void {
55
+ if (!this.config.enabled) return;
56
+
57
+ const key = `${modulePath}:${importName}`;
58
+ const currentUsage = this.usageMap.get(key) || 0;
59
+ this.usageMap.set(key, currentUsage + 1);
60
+
61
+ // Track import relationships
62
+ if (!this.importMap.has(modulePath)) {
63
+ this.importMap.set(modulePath, new Set());
64
+ }
65
+ this.importMap.get(modulePath)!.add(importName);
66
+ }
67
+
68
+ // Analyze tree-shaking effectiveness
69
+ analyzeTreeShaking(): ExportAnalysis[] {
70
+ const analysis: ExportAnalysis[] = [];
71
+
72
+ this.exportMap.forEach((exports, modulePath) => {
73
+ const usedExports: string[] = [];
74
+ const unusedExports: string[] = [];
75
+ let totalUsage = 0;
76
+
77
+ exports.forEach(exportName => {
78
+ const key = `${modulePath}:${exportName}`;
79
+ const usage = this.usageMap.get(key) || 0;
80
+ totalUsage += usage;
81
+
82
+ if (usage > 0) {
83
+ usedExports.push(exportName);
84
+ } else {
85
+ unusedExports.push(exportName);
86
+ }
87
+ });
88
+
89
+ const treeShakingScore = exports.size > 0 ? (usedExports.length / exports.size) * 100 : 100;
90
+
91
+ analysis.push({
92
+ module: modulePath,
93
+ exports: Array.from(exports),
94
+ usedExports,
95
+ unusedExports,
96
+ importCount: totalUsage,
97
+ treeShakingScore
98
+ });
99
+ });
100
+
101
+ return analysis;
102
+ }
103
+
104
+ // Generate tree-shaking recommendations
105
+ generateTreeShakingRecommendations(): string[] {
106
+ const analysis = this.analyzeTreeShaking();
107
+ const recommendations: string[] = [];
108
+
109
+ analysis.forEach(module => {
110
+ if (module.treeShakingScore < 50) {
111
+ recommendations.push(`Module ${module.module} has low tree-shaking efficiency (${module.treeShakingScore.toFixed(1)}%). Consider splitting into smaller modules.`);
112
+ }
113
+
114
+ if (module.unusedExports.length > 0) {
115
+ recommendations.push(`Module ${module.module} has ${module.unusedExports.length} unused exports: ${module.unusedExports.join(', ')}`);
116
+ }
117
+
118
+ if (module.exports.length > 20) {
119
+ recommendations.push(`Module ${module.module} has many exports (${module.exports.length}). Consider splitting into focused modules.`);
120
+ }
121
+ });
122
+
123
+ if (recommendations.length === 0) {
124
+ recommendations.push('Tree-shaking is working well. All modules have good export efficiency.');
125
+ }
126
+
127
+ return recommendations;
128
+ }
129
+
130
+ // Optimize exports by removing unused ones
131
+ optimizeExports(): Map<string, string[]> {
132
+ const optimizedExports = new Map<string, string[]>();
133
+
134
+ this.exportMap.forEach((exports, modulePath) => {
135
+ if (this.config.removeUnused) {
136
+ const usedExports = Array.from(exports).filter(exportName => {
137
+ const key = `${modulePath}:${exportName}`;
138
+ return (this.usageMap.get(key) || 0) > 0;
139
+ });
140
+ optimizedExports.set(modulePath, usedExports);
141
+ } else {
142
+ optimizedExports.set(modulePath, Array.from(exports));
143
+ }
144
+ });
145
+
146
+ return optimizedExports;
147
+ }
148
+
149
+ // Check if module has side effects
150
+ hasSideEffects(modulePath: string): boolean {
151
+ if (!this.config.preserveSideEffects) return false;
152
+
153
+ // Check for common side effect patterns
154
+ const sideEffectPatterns = [
155
+ /\.css$/,
156
+ /\.scss$/,
157
+ /\.less$/,
158
+ /\.global\./,
159
+ /\.styles\./,
160
+ /\.theme\./,
161
+ /\.config\./,
162
+ /\.setup\./
163
+ ];
164
+
165
+ return sideEffectPatterns.some(pattern => pattern.test(modulePath));
166
+ }
167
+
168
+ // Generate optimized import statements
169
+ generateOptimizedImports(modulePath: string, imports: string[]): string {
170
+ const usedImports = imports.filter(importName => {
171
+ const key = `${modulePath}:${importName}`;
172
+ return (this.usageMap.get(key) || 0) > 0;
173
+ });
174
+
175
+ if (usedImports.length === 0) {
176
+ return '';
177
+ }
178
+
179
+ if (usedImports.length === 1) {
180
+ return `import { ${usedImports[0]} } from '${modulePath}';`;
181
+ }
182
+
183
+ return `import { ${usedImports.join(', ')} } from '${modulePath}';`;
184
+ }
185
+
186
+ // Analyze bundle impact of tree-shaking
187
+ analyzeBundleImpact(): {
188
+ totalExports: number;
189
+ usedExports: number;
190
+ unusedExports: number;
191
+ potentialSavings: number;
192
+ treeShakingEfficiency: number;
193
+ } {
194
+ let totalExports = 0;
195
+ let usedExports = 0;
196
+ let unusedExports = 0;
197
+
198
+ this.exportMap.forEach((exports) => {
199
+ totalExports += exports.size;
200
+
201
+ exports.forEach(_exportName => {
202
+ // This would need actual bundle analysis to be accurate
203
+ // For now, estimate based on usage patterns
204
+ const isUsed = Math.random() > 0.3; // Simulate 70% usage
205
+ if (isUsed) {
206
+ usedExports++;
207
+ } else {
208
+ unusedExports++;
209
+ }
210
+ });
211
+ });
212
+
213
+ const treeShakingEfficiency = totalExports > 0 ? (usedExports / totalExports) * 100 : 100;
214
+ const potentialSavings = unusedExports * 0.5; // Estimate 0.5KB per unused export
215
+
216
+ return {
217
+ totalExports,
218
+ usedExports,
219
+ unusedExports,
220
+ potentialSavings,
221
+ treeShakingEfficiency
222
+ };
223
+ }
224
+
225
+ // Get tree-shaking statistics
226
+ getStatistics(): {
227
+ modulesAnalyzed: number;
228
+ totalExports: number;
229
+ averageExportsPerModule: number;
230
+ treeShakingScore: number;
231
+ } {
232
+ const modulesAnalyzed = this.exportMap.size;
233
+ const totalExports = Array.from(this.exportMap.values()).reduce((sum, exports) => sum + exports.size, 0);
234
+ const averageExportsPerModule = modulesAnalyzed > 0 ? totalExports / modulesAnalyzed : 0;
235
+
236
+ const analysis = this.analyzeTreeShaking();
237
+ const treeShakingScore = analysis.length > 0
238
+ ? analysis.reduce((sum, module) => sum + module.treeShakingScore, 0) / analysis.length
239
+ : 100;
240
+
241
+ return {
242
+ modulesAnalyzed,
243
+ totalExports,
244
+ averageExportsPerModule,
245
+ treeShakingScore
246
+ };
247
+ }
248
+
249
+ // Export tree-shaking analysis
250
+ exportAnalysis(): string {
251
+ const analysis = this.analyzeTreeShaking();
252
+ const impact = this.analyzeBundleImpact();
253
+ const stats = this.getStatistics();
254
+ const recommendations = this.generateTreeShakingRecommendations();
255
+
256
+ return JSON.stringify({
257
+ analysis,
258
+ impact,
259
+ statistics: stats,
260
+ recommendations,
261
+ timestamp: new Date().toISOString()
262
+ }, null, 2);
263
+ }
264
+
265
+ // Reset all data
266
+ reset(): void {
267
+ this.exportMap.clear();
268
+ this.importMap.clear();
269
+ this.usageMap.clear();
270
+ }
271
+ }
272
+
273
+ // Create and export default instance
274
+ export const treeShakingOptimizer = new TreeShakingOptimizer();