@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,287 @@
1
+ import { useState, useEffect, useCallback, useRef, useMemo } from 'react'
2
+
3
+ export interface MemoryMetrics {
4
+ usedJSHeapSize: number
5
+ totalJSHeapSize: number
6
+ jsHeapSizeLimit: number
7
+ memoryUsage: number
8
+ memoryPercentage: number
9
+ memoryTrend: 'increasing' | 'decreasing' | 'stable'
10
+ memoryLeakDetected: boolean
11
+ performanceScore: 'excellent' | 'good' | 'fair' | 'poor'
12
+ }
13
+
14
+ export interface MemoryThresholds {
15
+ warning: number
16
+ critical: number
17
+ excellent: number
18
+ }
19
+
20
+ export interface MemoryCallbacks {
21
+ onMemoryWarning?: (usage: number) => void
22
+ onMemoryCritical?: (usage: number) => void
23
+ onMemoryLeakDetected?: (trend: MemoryMetrics['memoryTrend']) => void
24
+ onPerformanceScoreChange?: (score: MemoryMetrics['performanceScore']) => void
25
+ }
26
+
27
+ export interface MemoryOptions {
28
+ updateInterval?: number
29
+ sampleSize?: number
30
+ thresholds?: Partial<MemoryThresholds>
31
+ callbacks?: MemoryCallbacks
32
+ }
33
+
34
+ const DEFAULT_THRESHOLDS: MemoryThresholds = {
35
+ warning: 0.7,
36
+ critical: 0.85,
37
+ excellent: 0.5
38
+ }
39
+
40
+ const DEFAULT_SAMPLE_SIZE = 10
41
+ const MEMORY_LEAK_THRESHOLD = 0.1 // 10% increase over time
42
+
43
+ export const useMemoryUsage = (options: MemoryOptions = {}) => {
44
+ const {
45
+ updateInterval = 2000,
46
+ sampleSize = DEFAULT_SAMPLE_SIZE,
47
+ thresholds = {},
48
+ callbacks = {}
49
+ } = options
50
+
51
+ const [metrics, setMetrics] = useState<MemoryMetrics>({
52
+ usedJSHeapSize: 0,
53
+ totalJSHeapSize: 0,
54
+ jsHeapSizeLimit: 0,
55
+ memoryUsage: 0,
56
+ memoryPercentage: 0,
57
+ memoryTrend: 'stable',
58
+ memoryLeakDetected: false,
59
+ performanceScore: 'excellent'
60
+ })
61
+
62
+ const [isMonitoring, setIsMonitoring] = useState(false)
63
+ const intervalIdRef = useRef<NodeJS.Timeout>()
64
+ const memoryHistoryRef = useRef<number[]>([])
65
+ const lastMemoryRef = useRef<number>(0)
66
+
67
+ // Merge default thresholds with custom ones
68
+ const finalThresholds = useMemo(() => ({
69
+ ...DEFAULT_THRESHOLDS,
70
+ ...thresholds
71
+ }), [thresholds])
72
+
73
+ // Calculate performance score based on memory usage
74
+ const calculatePerformanceScore = useCallback((usage: number): MemoryMetrics['performanceScore'] => {
75
+ if (usage <= finalThresholds.excellent) return 'excellent'
76
+ if (usage <= finalThresholds.warning) return 'good'
77
+ if (usage <= finalThresholds.critical) return 'fair'
78
+ return 'poor'
79
+ }, [finalThresholds])
80
+
81
+ // Detect memory trend
82
+ const detectMemoryTrend = useCallback((currentUsage: number, previousUsage: number): MemoryMetrics['memoryTrend'] => {
83
+ const difference = currentUsage - previousUsage
84
+ const percentageChange = Math.abs(difference) / previousUsage
85
+
86
+ if (percentageChange < 0.02) return 'stable'
87
+ if (difference > 0) return 'increasing'
88
+ return 'decreasing'
89
+ }, [])
90
+
91
+ // Detect potential memory leaks
92
+ const detectMemoryLeak = useCallback((_usage: number, history: number[]): boolean => {
93
+ if (history.length < 5) return false
94
+
95
+ // Check if memory usage is consistently increasing
96
+ const recentHistory = history.slice(-5)
97
+ const isConsistentlyIncreasing = recentHistory.every((value, index) => {
98
+ if (index === 0) return true
99
+ return value >= recentHistory[index - 1]
100
+ })
101
+
102
+ if (!isConsistentlyIncreasing) return false
103
+
104
+ // Check if the increase is significant
105
+ const firstValue = recentHistory[0]
106
+ const lastValue = recentHistory[recentHistory.length - 1]
107
+ const increase = (lastValue - firstValue) / firstValue
108
+
109
+ return increase > MEMORY_LEAK_THRESHOLD
110
+ }, [])
111
+
112
+ // Update memory information
113
+ const updateMemoryInfo = useCallback(() => {
114
+ if ('memory' in performance) {
115
+ const memory = (performance as any).memory
116
+ const usedJSHeapSize = memory.usedJSHeapSize
117
+ const totalJSHeapSize = memory.totalJSHeapSize
118
+ const jsHeapSizeLimit = memory.jsHeapSizeLimit
119
+
120
+ const memoryUsage = usedJSHeapSize / jsHeapSizeLimit
121
+ const memoryPercentage = memoryUsage * 100
122
+
123
+ // Update memory history
124
+ memoryHistoryRef.current.push(memoryUsage)
125
+ if (memoryHistoryRef.current.length > sampleSize) {
126
+ memoryHistoryRef.current.shift()
127
+ }
128
+
129
+ // Detect memory trend
130
+ const memoryTrend = detectMemoryTrend(memoryUsage, lastMemoryRef.current)
131
+
132
+ // Detect memory leaks
133
+ const memoryLeakDetected = detectMemoryLeak(memoryUsage, memoryHistoryRef.current)
134
+
135
+ // Calculate performance score
136
+ const performanceScore = calculatePerformanceScore(memoryUsage)
137
+
138
+ const newMetrics: MemoryMetrics = {
139
+ usedJSHeapSize,
140
+ totalJSHeapSize,
141
+ jsHeapSizeLimit,
142
+ memoryUsage,
143
+ memoryPercentage,
144
+ memoryTrend,
145
+ memoryLeakDetected,
146
+ performanceScore
147
+ }
148
+
149
+ setMetrics(newMetrics)
150
+
151
+ // Check thresholds and call callbacks
152
+ if (memoryUsage >= finalThresholds.critical && callbacks.onMemoryCritical) {
153
+ callbacks.onMemoryCritical(memoryUsage)
154
+ } else if (memoryUsage >= finalThresholds.warning && callbacks.onMemoryWarning) {
155
+ callbacks.onMemoryWarning(memoryUsage)
156
+ }
157
+
158
+ if (memoryLeakDetected && callbacks.onMemoryLeakDetected) {
159
+ callbacks.onMemoryLeakDetected(memoryTrend)
160
+ }
161
+
162
+ // Check if performance score changed
163
+ if (performanceScore !== metrics.performanceScore && callbacks.onPerformanceScoreChange) {
164
+ callbacks.onPerformanceScoreChange(performanceScore)
165
+ }
166
+
167
+ lastMemoryRef.current = memoryUsage
168
+ }
169
+ }, [finalThresholds, callbacks, metrics.performanceScore, detectMemoryTrend, detectMemoryLeak, calculatePerformanceScore, sampleSize])
170
+
171
+ // Start monitoring
172
+ const startMonitoring = useCallback(() => {
173
+ if (isMonitoring) return
174
+
175
+ setIsMonitoring(true)
176
+
177
+ // Initial memory check
178
+ updateMemoryInfo()
179
+
180
+ // Set up interval for memory updates
181
+ intervalIdRef.current = setInterval(updateMemoryInfo, updateInterval)
182
+ }, [isMonitoring, updateMemoryInfo, updateInterval])
183
+
184
+ // Stop monitoring
185
+ const stopMonitoring = useCallback(() => {
186
+ setIsMonitoring(false)
187
+
188
+ if (intervalIdRef.current) {
189
+ clearInterval(intervalIdRef.current)
190
+ }
191
+ }, [])
192
+
193
+ // Reset statistics
194
+ const resetStats = useCallback(() => {
195
+ memoryHistoryRef.current = []
196
+ lastMemoryRef.current = 0
197
+ setMetrics(prev => ({
198
+ ...prev,
199
+ memoryTrend: 'stable',
200
+ memoryLeakDetected: false
201
+ }))
202
+ }, [])
203
+
204
+ // Auto-start monitoring on mount
205
+ useEffect(() => {
206
+ startMonitoring()
207
+ return () => stopMonitoring()
208
+ }, [startMonitoring, stopMonitoring])
209
+
210
+ // Memory optimization recommendations
211
+ const getOptimizationRecommendations = useCallback(() => {
212
+ const recommendations: string[] = []
213
+
214
+ if (metrics.memoryUsage >= finalThresholds.critical) {
215
+ recommendations.push('Critical memory usage - consider implementing memory cleanup and lazy loading')
216
+ } else if (metrics.memoryUsage >= finalThresholds.warning) {
217
+ recommendations.push('High memory usage - monitor for memory leaks and optimize resource usage')
218
+ }
219
+
220
+ if (metrics.memoryLeakDetected) {
221
+ recommendations.push('Potential memory leak detected - investigate resource cleanup and event listeners')
222
+ }
223
+
224
+ if (metrics.memoryTrend === 'increasing') {
225
+ recommendations.push('Memory usage is increasing - check for proper cleanup in useEffect and event handlers')
226
+ }
227
+
228
+ if (metrics.memoryPercentage > 80) {
229
+ recommendations.push('Memory usage above 80% - consider implementing virtual scrolling or pagination')
230
+ }
231
+
232
+ return recommendations
233
+ }, [metrics, finalThresholds])
234
+
235
+ // Memory cleanup suggestions
236
+ const getCleanupSuggestions = useCallback(() => {
237
+ const suggestions: string[] = []
238
+
239
+ if (metrics.memoryLeakDetected) {
240
+ suggestions.push('Review useEffect cleanup functions')
241
+ suggestions.push('Check for unremoved event listeners')
242
+ suggestions.push('Verify proper cleanup in component unmount')
243
+ suggestions.push('Consider using AbortController for fetch requests')
244
+ }
245
+
246
+ if (metrics.memoryTrend === 'increasing') {
247
+ suggestions.push('Implement proper cleanup in useEffect return functions')
248
+ suggestions.push('Review component lifecycle management')
249
+ suggestions.push('Check for circular references')
250
+ }
251
+
252
+ return suggestions
253
+ }, [metrics])
254
+
255
+ return {
256
+ // Metrics
257
+ metrics,
258
+
259
+ // Controls
260
+ startMonitoring,
261
+ stopMonitoring,
262
+ isMonitoring,
263
+ resetStats,
264
+
265
+ // Performance analysis
266
+ performanceScore: metrics.performanceScore,
267
+ memoryTrend: metrics.memoryTrend,
268
+ memoryLeakDetected: metrics.memoryLeakDetected,
269
+
270
+ // Optimization
271
+ getOptimizationRecommendations,
272
+ getCleanupSuggestions,
273
+
274
+ // Raw values
275
+ usedJSHeapSize: metrics.usedJSHeapSize,
276
+ totalJSHeapSize: metrics.totalJSHeapSize,
277
+ jsHeapSizeLimit: metrics.jsHeapSizeLimit,
278
+ memoryUsage: metrics.memoryUsage,
279
+ memoryPercentage: metrics.memoryPercentage,
280
+
281
+ // Thresholds
282
+ thresholds: finalThresholds,
283
+
284
+ // History
285
+ memoryHistory: memoryHistoryRef.current
286
+ }
287
+ }