@rakeyshgidwani/roger-ui-bank-theme-stan-design 0.1.3 → 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,260 @@
1
+ // Bundle analysis and optimization utilities
2
+ export interface BundleMetrics {
3
+ totalSize: number;
4
+ gzippedSize: number;
5
+ moduleCount: number;
6
+ chunkCount: number;
7
+ largestChunks: Array<{
8
+ name: string;
9
+ size: number;
10
+ gzippedSize: number;
11
+ modules: string[];
12
+ }>;
13
+ duplicateModules: string[];
14
+ unusedExports: string[];
15
+ optimizationScore: number;
16
+ }
17
+
18
+ export interface PerformanceMetrics {
19
+ buildTime: number;
20
+ themeSwitchTime: number;
21
+ componentRenderTime: number;
22
+ memoryUsage: number;
23
+ bundleLoadTime: number;
24
+ }
25
+
26
+ export class BundleAnalyzer {
27
+ private metrics: BundleMetrics;
28
+ private performanceMetrics: PerformanceMetrics;
29
+
30
+ constructor() {
31
+ this.metrics = {
32
+ totalSize: 0,
33
+ gzippedSize: 0,
34
+ moduleCount: 0,
35
+ chunkCount: 0,
36
+ largestChunks: [],
37
+ duplicateModules: [],
38
+ unusedExports: [],
39
+ optimizationScore: 0
40
+ };
41
+
42
+ this.performanceMetrics = {
43
+ buildTime: 0,
44
+ themeSwitchTime: 0,
45
+ componentRenderTime: 0,
46
+ memoryUsage: 0,
47
+ bundleLoadTime: 0
48
+ };
49
+ }
50
+
51
+ // Analyze bundle size from build output
52
+ analyzeBundleSize(buildOutput: string): BundleMetrics {
53
+ const lines = buildOutput.split('\n');
54
+ let totalSize = 0;
55
+ let gzippedSize = 0;
56
+ const chunks: Array<{ name: string; size: number; gzippedSize: number }> = [];
57
+
58
+ // Parse build output for size information
59
+ lines.forEach(line => {
60
+ if (line.includes('dist/assets/') && line.includes('kB')) {
61
+ // Updated regex to match Vite's output format more accurately
62
+ const match = line.match(/dist\/assets\/([^.]+)\.[^.]+\.([^.]+)\s+(\d+\.\d+)\s+kB\s+\│\s+gzip:\s+(\d+\.\d+)\s+kB/);
63
+ if (match) {
64
+ const [, name, ext, size, gzip] = match;
65
+ const sizeKB = parseFloat(size);
66
+ const gzipKB = parseFloat(gzip);
67
+
68
+ totalSize += sizeKB;
69
+ gzippedSize += gzipKB;
70
+
71
+ chunks.push({
72
+ name: `${name}.${ext}`,
73
+ size: sizeKB,
74
+ gzippedSize: gzipKB
75
+ });
76
+ } else {
77
+ // Fallback: try to parse just the size information
78
+ const sizeMatch = line.match(/(\d+\.\d+)\s+kB/);
79
+ if (sizeMatch) {
80
+ const sizeKB = parseFloat(sizeMatch[1]);
81
+ totalSize += sizeKB;
82
+ gzippedSize += sizeKB * 0.3; // Estimate gzip size as 30% of original
83
+
84
+ chunks.push({
85
+ name: 'unknown',
86
+ size: sizeKB,
87
+ gzippedSize: sizeKB * 0.3
88
+ });
89
+ }
90
+ }
91
+ }
92
+ });
93
+
94
+ // Sort chunks by size
95
+ chunks.sort((a, b) => b.size - a.size);
96
+
97
+ this.metrics = {
98
+ totalSize,
99
+ gzippedSize,
100
+ moduleCount: this.estimateModuleCount(totalSize),
101
+ chunkCount: chunks.length,
102
+ largestChunks: chunks.slice(0, 5).map(chunk => ({
103
+ ...chunk,
104
+ modules: this.estimateModulesForChunk(chunk.name)
105
+ })),
106
+ duplicateModules: this.detectDuplicateModules(),
107
+ unusedExports: this.detectUnusedExports(),
108
+ optimizationScore: this.calculateOptimizationScore()
109
+ };
110
+
111
+ return this.metrics;
112
+ }
113
+
114
+ // Estimate module count based on bundle size
115
+ private estimateModuleCount(bundleSizeKB: number): number {
116
+ // Rough estimation: average module size is ~2KB
117
+ return Math.round(bundleSizeKB / 2);
118
+ }
119
+
120
+ // Estimate modules for a specific chunk
121
+ private estimateModulesForChunk(chunkName: string): string[] {
122
+ // This would be more accurate with actual webpack/vite analysis
123
+ // For now, provide reasonable estimates based on chunk names
124
+ if (chunkName.includes('index')) {
125
+ return ['main', 'themes', 'components', 'utils'];
126
+ } else if (chunkName.includes('vendor')) {
127
+ return ['react', 'react-dom', 'lodash'];
128
+ } else if (chunkName.includes('theme')) {
129
+ return ['theme-provider', 'theme-switcher', 'theme-customizer'];
130
+ }
131
+ return ['unknown'];
132
+ }
133
+
134
+ // Detect duplicate modules (simplified)
135
+ private detectDuplicateModules(): string[] {
136
+ // This would require actual bundle analysis
137
+ // For now, return common duplicates
138
+ return ['react', 'react-dom'];
139
+ }
140
+
141
+ // Detect unused exports (simplified)
142
+ private detectUnusedExports(): string[] {
143
+ // This would require actual tree-shaking analysis
144
+ // For now, return potential unused exports
145
+ return ['legacy-theme', 'deprecated-utils'];
146
+ }
147
+
148
+ // Calculate optimization score (0-100)
149
+ private calculateOptimizationScore(): number {
150
+ let score = 100;
151
+
152
+ // Penalize large bundle size
153
+ if (this.metrics.totalSize > 500) score -= 20;
154
+ if (this.metrics.totalSize > 1000) score -= 30;
155
+
156
+ // Penalize many chunks
157
+ if (this.metrics.chunkCount > 10) score -= 15;
158
+
159
+ // Penalize duplicate modules
160
+ score -= this.metrics.duplicateModules.length * 5;
161
+
162
+ // Penalize unused exports
163
+ score -= this.metrics.unusedExports.length * 3;
164
+
165
+ return Math.max(0, score);
166
+ }
167
+
168
+ // Get current metrics
169
+ getMetrics(): BundleMetrics {
170
+ return { ...this.metrics };
171
+ }
172
+
173
+ // Get performance metrics
174
+ getPerformanceMetrics(): PerformanceMetrics {
175
+ return { ...this.performanceMetrics };
176
+ }
177
+
178
+ // Measure build time
179
+ measureBuildTime(startTime: number): void {
180
+ this.performanceMetrics.buildTime = Date.now() - startTime;
181
+ }
182
+
183
+ // Measure theme switch performance
184
+ measureThemeSwitch(callback: () => void): number {
185
+ const startTime = performance.now();
186
+ callback();
187
+ const endTime = performance.now();
188
+ const duration = endTime - startTime;
189
+ this.performanceMetrics.themeSwitchTime = duration;
190
+ return duration;
191
+ }
192
+
193
+ // Measure component render performance
194
+ measureComponentRender(callback: () => void): number {
195
+ const startTime = performance.now();
196
+ callback();
197
+ const endTime = performance.now();
198
+ const duration = endTime - startTime;
199
+ this.performanceMetrics.componentRenderTime = duration;
200
+ return duration;
201
+ }
202
+
203
+ // Get memory usage (if available)
204
+ getMemoryUsage(): number {
205
+ if ('memory' in performance) {
206
+ const memory = (performance as any).memory;
207
+ this.performanceMetrics.memoryUsage = memory.usedJSHeapSize / 1024 / 1024; // MB
208
+ return this.performanceMetrics.memoryUsage;
209
+ }
210
+ return 0;
211
+ }
212
+
213
+ // Generate optimization recommendations
214
+ generateRecommendations(): string[] {
215
+ const recommendations: string[] = [];
216
+
217
+ if (this.metrics.totalSize > 500) {
218
+ recommendations.push('Bundle size is large. Consider code splitting and lazy loading.');
219
+ }
220
+
221
+ if (this.metrics.chunkCount > 10) {
222
+ recommendations.push('Too many chunks. Consider consolidating smaller chunks.');
223
+ }
224
+
225
+ if (this.metrics.duplicateModules.length > 0) {
226
+ recommendations.push('Duplicate modules detected. Check for multiple versions of the same package.');
227
+ }
228
+
229
+ if (this.metrics.unusedExports.length > 0) {
230
+ recommendations.push('Unused exports detected. Enable tree-shaking and remove dead code.');
231
+ }
232
+
233
+ if (this.performanceMetrics.themeSwitchTime > 100) {
234
+ recommendations.push('Theme switching is slow. Optimize theme application logic.');
235
+ }
236
+
237
+ if (this.performanceMetrics.componentRenderTime > 50) {
238
+ recommendations.push('Component rendering is slow. Consider memoization and optimization.');
239
+ }
240
+
241
+ if (recommendations.length === 0) {
242
+ recommendations.push('Bundle is well-optimized. No immediate actions required.');
243
+ }
244
+
245
+ return recommendations;
246
+ }
247
+
248
+ // Export metrics for external analysis
249
+ exportMetrics(): string {
250
+ return JSON.stringify({
251
+ bundle: this.metrics,
252
+ performance: this.performanceMetrics,
253
+ recommendations: this.generateRecommendations(),
254
+ timestamp: new Date().toISOString()
255
+ }, null, 2);
256
+ }
257
+ }
258
+
259
+ // Create and export default instance
260
+ export const bundleAnalyzer = new BundleAnalyzer();