@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.
- package/CHANGELOG.md +1 -1
- package/dist/components/ui/accessibility-demo.esm.js +30 -24
- package/dist/components/ui/accessibility-demo.js +30 -24
- package/dist/components/ui/advanced-component-architecture-demo.esm.js +235 -179
- package/dist/components/ui/advanced-component-architecture-demo.js +235 -179
- package/dist/components/ui/advanced-transition-system-demo.esm.js +110 -64
- package/dist/components/ui/advanced-transition-system-demo.js +110 -64
- package/dist/components/ui/advanced-transition-system.esm.js +166 -122
- package/dist/components/ui/advanced-transition-system.js +166 -122
- package/dist/components/ui/animation/animated-container.esm.js +52 -29
- package/dist/components/ui/animation/animated-container.js +52 -29
- package/dist/components/ui/animation/staggered-container.esm.js +18 -9
- package/dist/components/ui/animation/staggered-container.js +18 -9
- package/dist/components/ui/animation-demo.esm.js +67 -35
- package/dist/components/ui/animation-demo.js +67 -35
- package/dist/components/ui/badge.esm.js +9 -6
- package/dist/components/ui/badge.js +9 -6
- package/dist/components/ui/battery-conscious-animation-demo.esm.js +122 -87
- package/dist/components/ui/battery-conscious-animation-demo.js +122 -87
- package/dist/components/ui/border-radius-shadow-demo.esm.js +23 -12
- package/dist/components/ui/border-radius-shadow-demo.js +23 -12
- package/dist/components/ui/button.esm.js +8 -2
- package/dist/components/ui/button.js +8 -2
- package/dist/components/ui/card.esm.js +33 -8
- package/dist/components/ui/card.js +33 -8
- package/dist/components/ui/checkbox.esm.js +3 -3
- package/dist/components/ui/checkbox.js +3 -3
- package/dist/components/ui/color-preview.esm.js +68 -45
- package/dist/components/ui/color-preview.js +68 -45
- package/dist/components/ui/data-display/chart.esm.js +112 -84
- package/dist/components/ui/data-display/chart.js +112 -84
- package/dist/components/ui/data-display/data-grid-simple.esm.js +1 -1
- package/dist/components/ui/data-display/data-grid-simple.js +1 -1
- package/dist/components/ui/data-display/data-grid.esm.js +80 -67
- package/dist/components/ui/data-display/data-grid.js +80 -67
- package/dist/components/ui/data-display/list.esm.js +53 -45
- package/dist/components/ui/data-display/list.js +53 -45
- package/dist/components/ui/data-display/table.esm.js +62 -54
- package/dist/components/ui/data-display/table.js +62 -54
- package/dist/components/ui/data-display/timeline.esm.js +39 -34
- package/dist/components/ui/data-display/timeline.js +39 -34
- package/dist/components/ui/data-display/tree.esm.js +116 -84
- package/dist/components/ui/data-display/tree.js +116 -84
- package/dist/components/ui/data-display/types.esm.js +389 -364
- package/dist/components/ui/data-display/types.js +389 -364
- package/dist/components/ui/enterprise-mobile-experience-demo.esm.js +120 -70
- package/dist/components/ui/enterprise-mobile-experience-demo.js +120 -70
- package/dist/components/ui/enterprise-mobile-experience.esm.js +124 -73
- package/dist/components/ui/enterprise-mobile-experience.js +124 -73
- package/dist/components/ui/feedback/alert.esm.js +22 -15
- package/dist/components/ui/feedback/alert.js +22 -15
- package/dist/components/ui/feedback/progress.esm.js +47 -24
- package/dist/components/ui/feedback/progress.js +47 -24
- package/dist/components/ui/feedback/skeleton.esm.js +39 -29
- package/dist/components/ui/feedback/skeleton.js +39 -29
- package/dist/components/ui/feedback/toast.esm.js +62 -38
- package/dist/components/ui/feedback/toast.js +62 -38
- package/dist/components/ui/feedback/types.esm.js +83 -83
- package/dist/components/ui/feedback/types.js +83 -83
- package/dist/components/ui/font-preview.esm.js +41 -39
- package/dist/components/ui/font-preview.js +41 -39
- package/dist/components/ui/form-demo.esm.js +150 -113
- package/dist/components/ui/form-demo.js +150 -113
- package/dist/components/ui/hardware-acceleration-demo.esm.js +137 -87
- package/dist/components/ui/hardware-acceleration-demo.js +137 -87
- package/dist/components/ui/input.esm.js +4 -1
- package/dist/components/ui/input.js +4 -1
- package/dist/components/ui/layout-demo.esm.js +81 -56
- package/dist/components/ui/layout-demo.js +81 -56
- package/dist/components/ui/layouts/adaptive-layout.esm.js +27 -8
- package/dist/components/ui/layouts/adaptive-layout.js +27 -8
- package/dist/components/ui/layouts/desktop-layout.esm.js +39 -19
- package/dist/components/ui/layouts/desktop-layout.js +39 -19
- package/dist/components/ui/layouts/mobile-layout.esm.js +19 -9
- package/dist/components/ui/layouts/mobile-layout.js +19 -9
- package/dist/components/ui/layouts/tablet-layout.esm.js +28 -14
- package/dist/components/ui/layouts/tablet-layout.js +28 -14
- package/dist/components/ui/mobile-form-validation.esm.js +120 -87
- package/dist/components/ui/mobile-form-validation.js +120 -87
- package/dist/components/ui/mobile-input-demo.esm.js +19 -13
- package/dist/components/ui/mobile-input-demo.js +19 -13
- package/dist/components/ui/mobile-input.esm.js +185 -120
- package/dist/components/ui/mobile-input.js +185 -120
- package/dist/components/ui/mobile-skeleton-loading-demo.esm.js +128 -111
- package/dist/components/ui/mobile-skeleton-loading-demo.js +128 -111
- package/dist/components/ui/navigation/breadcrumb.esm.js +17 -14
- package/dist/components/ui/navigation/breadcrumb.js +17 -14
- package/dist/components/ui/navigation/index.esm.js +23 -1
- package/dist/components/ui/navigation/index.js +23 -1
- package/dist/components/ui/navigation/menu.esm.js +49 -35
- package/dist/components/ui/navigation/menu.js +49 -35
- package/dist/components/ui/navigation/navigation-demo.esm.js +81 -74
- package/dist/components/ui/navigation/navigation-demo.js +81 -74
- package/dist/components/ui/navigation/pagination.esm.js +62 -50
- package/dist/components/ui/navigation/pagination.js +62 -50
- package/dist/components/ui/navigation/sidebar.esm.js +56 -42
- package/dist/components/ui/navigation/sidebar.js +56 -42
- package/dist/components/ui/navigation/stepper.esm.js +34 -23
- package/dist/components/ui/navigation/stepper.js +34 -23
- package/dist/components/ui/navigation/tabs.esm.js +32 -21
- package/dist/components/ui/navigation/tabs.js +32 -21
- package/dist/components/ui/navigation/types.esm.js +196 -195
- package/dist/components/ui/navigation/types.js +196 -195
- package/dist/components/ui/overlay/backdrop.esm.js +17 -16
- package/dist/components/ui/overlay/backdrop.js +17 -16
- package/dist/components/ui/overlay/focus-manager.esm.js +21 -19
- package/dist/components/ui/overlay/focus-manager.js +21 -19
- package/dist/components/ui/overlay/index.esm.js +22 -2
- package/dist/components/ui/overlay/index.js +22 -2
- package/dist/components/ui/overlay/modal.esm.js +38 -34
- package/dist/components/ui/overlay/modal.js +38 -34
- package/dist/components/ui/overlay/overlay-manager.esm.js +25 -20
- package/dist/components/ui/overlay/overlay-manager.js +25 -20
- package/dist/components/ui/overlay/popover.esm.js +74 -58
- package/dist/components/ui/overlay/popover.js +74 -58
- package/dist/components/ui/overlay/portal.esm.js +7 -7
- package/dist/components/ui/overlay/portal.js +7 -7
- package/dist/components/ui/overlay/tooltip.esm.js +54 -39
- package/dist/components/ui/overlay/tooltip.js +54 -39
- package/dist/components/ui/overlay/types.esm.js +132 -131
- package/dist/components/ui/overlay/types.js +132 -131
- package/dist/components/ui/performance-demo.esm.js +135 -88
- package/dist/components/ui/performance-demo.js +135 -88
- package/dist/components/ui/semantic-input-system-demo.esm.js +117 -80
- package/dist/components/ui/semantic-input-system-demo.js +117 -80
- package/dist/components/ui/theme-customizer.esm.js +84 -52
- package/dist/components/ui/theme-customizer.js +84 -52
- package/dist/components/ui/theme-preview.esm.js +95 -43
- package/dist/components/ui/theme-preview.js +95 -43
- package/dist/components/ui/theme-switcher.esm.js +70 -44
- package/dist/components/ui/theme-switcher.js +70 -44
- package/dist/components/ui/theme-toggle.esm.js +3 -3
- package/dist/components/ui/theme-toggle.js +3 -3
- package/dist/components/ui/token-demo.esm.js +33 -21
- package/dist/components/ui/token-demo.js +33 -21
- package/dist/components/ui/touch-demo.esm.js +102 -73
- package/dist/components/ui/touch-demo.js +102 -73
- package/dist/components/ui/touch-friendly-interface-demo.esm.js +102 -64
- package/dist/components/ui/touch-friendly-interface-demo.js +102 -64
- package/dist/components/ui/touch-friendly-interface.esm.js +85 -61
- package/dist/components/ui/touch-friendly-interface.js +85 -61
- package/dist/hooks/use-accessibility-support.esm.js +115 -85
- package/dist/hooks/use-accessibility-support.js +115 -85
- package/dist/hooks/use-adaptive-layout.esm.js +56 -33
- package/dist/hooks/use-adaptive-layout.js +56 -33
- package/dist/hooks/use-advanced-patterns.esm.js +57 -42
- package/dist/hooks/use-advanced-patterns.js +57 -42
- package/dist/hooks/use-advanced-transition-system.esm.js +112 -71
- package/dist/hooks/use-advanced-transition-system.js +112 -71
- package/dist/hooks/use-animation-profile.esm.js +63 -34
- package/dist/hooks/use-animation-profile.js +63 -34
- package/dist/hooks/use-battery-animations.esm.js +80 -55
- package/dist/hooks/use-battery-animations.js +80 -55
- package/dist/hooks/use-battery-conscious-loading.esm.js +166 -123
- package/dist/hooks/use-battery-conscious-loading.js +166 -123
- package/dist/hooks/use-battery-optimization.esm.js +78 -55
- package/dist/hooks/use-battery-optimization.js +78 -55
- package/dist/hooks/use-battery-status.esm.js +73 -51
- package/dist/hooks/use-battery-status.js +73 -51
- package/dist/hooks/use-component-performance.esm.js +62 -47
- package/dist/hooks/use-component-performance.js +62 -47
- package/dist/hooks/use-device-loading-states.esm.js +152 -109
- package/dist/hooks/use-device-loading-states.js +152 -109
- package/dist/hooks/use-device.esm.js +25 -14
- package/dist/hooks/use-device.js +25 -14
- package/dist/hooks/use-enterprise-mobile-experience.esm.js +137 -88
- package/dist/hooks/use-enterprise-mobile-experience.js +137 -88
- package/dist/hooks/use-form-feedback.esm.js +124 -81
- package/dist/hooks/use-form-feedback.js +124 -81
- package/dist/hooks/use-form-performance.esm.js +127 -92
- package/dist/hooks/use-form-performance.js +127 -92
- package/dist/hooks/use-frame-rate.esm.js +56 -37
- package/dist/hooks/use-frame-rate.js +56 -37
- package/dist/hooks/use-gestures.esm.js +96 -72
- package/dist/hooks/use-gestures.js +96 -72
- package/dist/hooks/use-hardware-acceleration.esm.js +65 -37
- package/dist/hooks/use-hardware-acceleration.js +65 -37
- package/dist/hooks/use-input-accessibility.esm.js +157 -119
- package/dist/hooks/use-input-accessibility.js +157 -119
- package/dist/hooks/use-input-performance.esm.js +139 -104
- package/dist/hooks/use-input-performance.js +139 -104
- package/dist/hooks/use-layout-performance.esm.js +50 -29
- package/dist/hooks/use-layout-performance.js +50 -29
- package/dist/hooks/use-loading-accessibility.esm.js +209 -169
- package/dist/hooks/use-loading-accessibility.js +209 -169
- package/dist/hooks/use-loading-performance.esm.js +117 -93
- package/dist/hooks/use-loading-performance.js +117 -93
- package/dist/hooks/use-memory-usage.esm.js +57 -38
- package/dist/hooks/use-memory-usage.js +57 -38
- package/dist/hooks/use-mobile-form-layout.esm.js +111 -74
- package/dist/hooks/use-mobile-form-layout.js +111 -74
- package/dist/hooks/use-mobile-form-validation.esm.js +211 -144
- package/dist/hooks/use-mobile-form-validation.js +211 -144
- package/dist/hooks/use-mobile-keyboard-optimization.esm.js +154 -113
- package/dist/hooks/use-mobile-keyboard-optimization.js +154 -113
- package/dist/hooks/use-mobile-layout.esm.js +73 -51
- package/dist/hooks/use-mobile-layout.js +73 -51
- package/dist/hooks/use-mobile-optimization.esm.js +72 -44
- package/dist/hooks/use-mobile-optimization.js +72 -44
- package/dist/hooks/use-mobile-skeleton.esm.js +97 -64
- package/dist/hooks/use-mobile-skeleton.js +97 -64
- package/dist/hooks/use-mobile-touch.esm.js +128 -93
- package/dist/hooks/use-mobile-touch.js +128 -93
- package/dist/hooks/use-performance-throttling.esm.js +72 -48
- package/dist/hooks/use-performance-throttling.js +72 -48
- package/dist/hooks/use-performance.esm.js +90 -52
- package/dist/hooks/use-performance.js +90 -52
- package/dist/hooks/use-reusable-architecture.esm.js +94 -65
- package/dist/hooks/use-reusable-architecture.js +94 -65
- package/dist/hooks/use-semantic-input-types.esm.js +166 -124
- package/dist/hooks/use-semantic-input-types.js +166 -124
- package/dist/hooks/use-semantic-input.esm.js +178 -126
- package/dist/hooks/use-semantic-input.js +178 -126
- package/dist/hooks/use-tablet-layout.esm.js +67 -38
- package/dist/hooks/use-tablet-layout.js +67 -38
- package/dist/hooks/use-touch-friendly-input.esm.js +193 -149
- package/dist/hooks/use-touch-friendly-input.js +193 -149
- package/dist/hooks/use-touch-friendly-interface.esm.js +99 -67
- package/dist/hooks/use-touch-friendly-interface.js +99 -67
- package/dist/hooks/use-touch-optimization.esm.js +99 -72
- package/dist/hooks/use-touch-optimization.js +99 -72
- package/dist/index.esm.js +289 -280
- package/dist/index.js +289 -280
- package/dist/lib/utils.esm.js +1 -1
- package/dist/lib/utils.js +1 -1
- package/dist/plugins/theme-css-generator.esm.js +104 -55
- package/dist/plugins/theme-css-generator.js +104 -55
- package/dist/provider.esm.js +4 -4
- package/dist/provider.js +4 -4
- package/dist/styles.css +1 -1
- package/dist/theme.esm.js +633 -468
- package/dist/theme.js +633 -468
- package/dist/themes/ThemeContext.esm.js +15 -15
- package/dist/themes/ThemeContext.js +15 -15
- package/dist/themes/ThemeProvider.esm.js +25 -22
- package/dist/themes/ThemeProvider.js +25 -22
- package/dist/themes/accessibility.esm.js +147 -108
- package/dist/themes/accessibility.js +147 -108
- package/dist/themes/aria-patterns.esm.js +198 -162
- package/dist/themes/aria-patterns.js +198 -162
- package/dist/themes/base-themes.esm.js +14 -11
- package/dist/themes/base-themes.js +14 -11
- package/dist/themes/colorManager.esm.js +101 -83
- package/dist/themes/colorManager.js +101 -83
- package/dist/themes/examples/dark-theme.esm.js +133 -103
- package/dist/themes/examples/dark-theme.js +133 -103
- package/dist/themes/examples/minimal-theme.esm.js +83 -61
- package/dist/themes/examples/minimal-theme.js +83 -61
- package/dist/themes/focus-management.esm.js +202 -143
- package/dist/themes/focus-management.js +202 -143
- package/dist/themes/fontLoader.esm.js +28 -19
- package/dist/themes/fontLoader.js +28 -19
- package/dist/themes/high-contrast.esm.js +152 -104
- package/dist/themes/high-contrast.js +152 -104
- package/dist/themes/inheritance.esm.js +35 -27
- package/dist/themes/inheritance.js +35 -27
- package/dist/themes/keyboard-navigation.esm.js +152 -123
- package/dist/themes/keyboard-navigation.js +152 -123
- package/dist/themes/motion-reduction.esm.js +193 -133
- package/dist/themes/motion-reduction.js +193 -133
- package/dist/themes/navigation.esm.js +146 -146
- package/dist/themes/navigation.js +146 -146
- package/dist/themes/screen-reader.esm.js +159 -94
- package/dist/themes/screen-reader.js +159 -94
- package/dist/themes/systemThemeDetector.esm.js +42 -34
- package/dist/themes/systemThemeDetector.js +42 -34
- package/dist/themes/themeCSSUpdater.esm.js +21 -9
- package/dist/themes/themeCSSUpdater.js +21 -9
- package/dist/themes/themePersistence.esm.js +68 -47
- package/dist/themes/themePersistence.js +68 -47
- package/dist/themes/themes/stan-design.esm.js +633 -468
- package/dist/themes/themes/stan-design.js +633 -468
- package/dist/themes/types.esm.js +301 -287
- package/dist/themes/types.js +301 -287
- package/dist/themes/useSystemTheme.esm.js +4 -4
- package/dist/themes/useSystemTheme.js +4 -4
- package/dist/themes/useTheme.esm.js +4 -4
- package/dist/themes/useTheme.js +4 -4
- package/dist/themes/validation.esm.js +128 -77
- package/dist/themes/validation.js +128 -77
- package/dist/tokens/index.esm.js +15 -4
- package/dist/tokens/index.js +15 -4
- package/dist/tokens/tokenExporter.esm.js +87 -61
- package/dist/tokens/tokenExporter.js +87 -61
- package/dist/tokens/tokenGenerator.esm.js +86 -77
- package/dist/tokens/tokenGenerator.js +86 -77
- package/dist/tokens/tokenManager.esm.js +64 -51
- package/dist/tokens/tokenManager.js +64 -51
- package/dist/tokens/tokenValidator.esm.js +193 -147
- package/dist/tokens/tokenValidator.js +193 -147
- package/dist/tokens/types.esm.js +49 -35
- package/dist/tokens/types.js +49 -35
- package/dist/utils/bundle-analyzer.esm.js +83 -65
- package/dist/utils/bundle-analyzer.js +83 -65
- package/dist/utils/bundle-splitting.esm.js +142 -117
- package/dist/utils/bundle-splitting.js +142 -117
- package/dist/utils/lazy-loading.esm.js +132 -106
- package/dist/utils/lazy-loading.js +132 -106
- package/dist/utils/performance-monitor.esm.js +170 -129
- package/dist/utils/performance-monitor.js +170 -129
- package/dist/utils/tree-shaking.esm.js +69 -61
- package/dist/utils/tree-shaking.js +69 -61
- package/package.json +1 -1
- package/src/index.ts +146 -146
|
@@ -1,35 +1,66 @@
|
|
|
1
1
|
import { useState, useEffect, useCallback, useMemo, useRef } from 'react'
|
|
2
2
|
|
|
3
3
|
export interface PerformanceMetrics {
|
|
4
|
-
fps
|
|
4
|
+
fps: number
|
|
5
|
+
frameTime: number
|
|
6
|
+
memoryUsage?: number
|
|
7
|
+
memoryLimit?: number
|
|
8
|
+
memoryPercentage?: number
|
|
9
|
+
batteryLevel?: number
|
|
10
|
+
isLowPowerMode?: boolean
|
|
11
|
+
isCharging?: boolean
|
|
12
|
+
performanceMode: 'high' | 'medium' | 'low'
|
|
13
|
+
throttlingEnabled: boolean
|
|
14
|
+
throttlingReason?: string
|
|
15
|
+
}
|
|
5
16
|
|
|
6
17
|
export interface PerformanceThresholds {
|
|
7
|
-
fps
|
|
8
|
-
|
|
9
|
-
|
|
18
|
+
fps: {
|
|
19
|
+
warning: number
|
|
20
|
+
critical: number
|
|
21
|
+
}
|
|
22
|
+
memory: {
|
|
23
|
+
warning: number
|
|
24
|
+
critical: number
|
|
25
|
+
}
|
|
26
|
+
battery: {
|
|
27
|
+
low: number
|
|
28
|
+
critical: number
|
|
29
|
+
}
|
|
10
30
|
}
|
|
11
31
|
|
|
12
32
|
export interface PerformanceCallbacks {
|
|
13
|
-
onFPSWarning
|
|
14
|
-
onMemoryWarning
|
|
15
|
-
onBatteryLow
|
|
16
|
-
onPerformanceModeChange
|
|
17
|
-
onThrottlingChange
|
|
33
|
+
onFPSWarning?: (fps: number) => void
|
|
34
|
+
onMemoryWarning?: (usage: number) => void
|
|
35
|
+
onBatteryLow?: (level: number) => void
|
|
36
|
+
onPerformanceModeChange?: (mode: PerformanceMetrics['performanceMode']) => void
|
|
37
|
+
onThrottlingChange?: (enabled: boolean, reason?: string) => void
|
|
18
38
|
}
|
|
19
39
|
|
|
20
40
|
export interface PerformanceOptions {
|
|
21
|
-
updateInterval
|
|
41
|
+
updateInterval?: number
|
|
42
|
+
thresholds?: Partial<PerformanceThresholds>
|
|
43
|
+
enableThrottling?: boolean
|
|
44
|
+
enableBatteryOptimization?: boolean
|
|
45
|
+
callbacks?: PerformanceCallbacks
|
|
46
|
+
}
|
|
22
47
|
|
|
23
|
-
const DEFAULT_THRESHOLDS= {
|
|
24
|
-
fps
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
48
|
+
const DEFAULT_THRESHOLDS: PerformanceThresholds = {
|
|
49
|
+
fps: {
|
|
50
|
+
warning: 45,
|
|
51
|
+
critical: 30
|
|
52
|
+
},
|
|
53
|
+
memory: {
|
|
54
|
+
warning: 0.7,
|
|
55
|
+
critical: 0.85
|
|
56
|
+
},
|
|
57
|
+
battery: {
|
|
58
|
+
low: 0.3,
|
|
59
|
+
critical: 0.15
|
|
60
|
+
}
|
|
30
61
|
}
|
|
31
62
|
|
|
32
|
-
export const usePerformance = (options= {}) => {
|
|
63
|
+
export const usePerformance = (options: PerformanceOptions = {}) => {
|
|
33
64
|
const {
|
|
34
65
|
updateInterval = 1000,
|
|
35
66
|
thresholds = {},
|
|
@@ -39,10 +70,11 @@ export const usePerformance = (options= {}) => {
|
|
|
39
70
|
} = options
|
|
40
71
|
|
|
41
72
|
const [metrics, setMetrics] = useState<PerformanceMetrics>({
|
|
42
|
-
fps,
|
|
43
|
-
frameTime,
|
|
44
|
-
performanceMode,
|
|
45
|
-
throttlingEnabled
|
|
73
|
+
fps: 60,
|
|
74
|
+
frameTime: 16.67,
|
|
75
|
+
performanceMode: 'high',
|
|
76
|
+
throttlingEnabled: false
|
|
77
|
+
})
|
|
46
78
|
|
|
47
79
|
const [isMonitoring, setIsMonitoring] = useState(false)
|
|
48
80
|
const frameCountRef = useRef(0)
|
|
@@ -92,8 +124,9 @@ export const usePerformance = (options= {}) => {
|
|
|
92
124
|
setMetrics(prev => ({
|
|
93
125
|
...prev,
|
|
94
126
|
memoryUsage,
|
|
95
|
-
memoryLimit,
|
|
96
|
-
memoryPercentage
|
|
127
|
+
memoryLimit: memory.jsHeapSizeLimit,
|
|
128
|
+
memoryPercentage: memoryUsage * 100
|
|
129
|
+
}))
|
|
97
130
|
|
|
98
131
|
// Check memory thresholds
|
|
99
132
|
if (memoryUsage >= finalThresholds.memory.critical && callbacks.onMemoryWarning) {
|
|
@@ -110,22 +143,23 @@ export const usePerformance = (options= {}) => {
|
|
|
110
143
|
|
|
111
144
|
setMetrics(prev => ({
|
|
112
145
|
...prev,
|
|
113
|
-
batteryLevel,
|
|
114
|
-
isLowPowerMode,
|
|
115
|
-
isCharging
|
|
146
|
+
batteryLevel: battery.level,
|
|
147
|
+
isLowPowerMode: battery.level < finalThresholds.battery.low,
|
|
148
|
+
isCharging: battery.charging
|
|
149
|
+
}))
|
|
116
150
|
|
|
117
151
|
// Check battery thresholds
|
|
118
152
|
if (battery.level <= finalThresholds.battery.critical && callbacks.onBatteryLow) {
|
|
119
153
|
callbacks.onBatteryLow(battery.level)
|
|
120
154
|
}
|
|
121
155
|
} catch (error) {
|
|
122
|
-
console.warn('Battery API not available, error)
|
|
156
|
+
console.warn('Battery API not available:', error)
|
|
123
157
|
}
|
|
124
158
|
}
|
|
125
159
|
}, [finalThresholds.battery.low, finalThresholds.battery.critical, callbacks.onBatteryLow])
|
|
126
160
|
|
|
127
161
|
// Performance mode determination
|
|
128
|
-
const determinePerformanceMode = useCallback((fps, memoryUsage
|
|
162
|
+
const determinePerformanceMode = useCallback((fps: number, memoryUsage?: number): PerformanceMetrics['performanceMode'] => {
|
|
129
163
|
if (fps < finalThresholds.fps.critical || (memoryUsage && memoryUsage > finalThresholds.memory.critical)) {
|
|
130
164
|
return 'low'
|
|
131
165
|
}
|
|
@@ -136,37 +170,38 @@ export const usePerformance = (options= {}) => {
|
|
|
136
170
|
}, [finalThresholds])
|
|
137
171
|
|
|
138
172
|
// Performance throttling logic
|
|
139
|
-
const shouldThrottle = useCallback((); reason
|
|
173
|
+
const shouldThrottle = useCallback((): { should: boolean; reason?: string } => {
|
|
140
174
|
const { fps, memoryPercentage, batteryLevel, isLowPowerMode } = metrics
|
|
141
175
|
|
|
142
176
|
// FPS-based throttling
|
|
143
177
|
if (fps < finalThresholds.fps.critical) {
|
|
144
|
-
return { should, reason}
|
|
178
|
+
return { should: true, reason: 'Low FPS' }
|
|
145
179
|
}
|
|
146
180
|
|
|
147
181
|
// Memory-based throttling
|
|
148
182
|
if (memoryPercentage && memoryPercentage > finalThresholds.memory.critical * 100) {
|
|
149
|
-
return { should, reason}
|
|
183
|
+
return { should: true, reason: 'High memory usage' }
|
|
150
184
|
}
|
|
151
185
|
|
|
152
186
|
// Battery-based throttling
|
|
153
187
|
if (enableBatteryOptimization && (isLowPowerMode || (batteryLevel && batteryLevel < finalThresholds.battery.low))) {
|
|
154
|
-
return { should, reason}
|
|
188
|
+
return { should: true, reason: 'Low battery' }
|
|
155
189
|
}
|
|
156
190
|
|
|
157
|
-
return { should}
|
|
191
|
+
return { should: false }
|
|
158
192
|
}, [metrics, finalThresholds, enableBatteryOptimization])
|
|
159
193
|
|
|
160
194
|
// Update performance mode and throttling
|
|
161
195
|
useEffect(() => {
|
|
162
196
|
const newMode = determinePerformanceMode(metrics.fps, metrics.memoryUsage)
|
|
163
|
-
const { should, reason } = shouldThrottle()
|
|
197
|
+
const { should: shouldThrottleNow, reason } = shouldThrottle()
|
|
164
198
|
|
|
165
199
|
setMetrics(prev => ({
|
|
166
200
|
...prev,
|
|
167
|
-
performanceMode,
|
|
168
|
-
throttlingEnabled,
|
|
169
|
-
throttlingReason
|
|
201
|
+
performanceMode: newMode,
|
|
202
|
+
throttlingEnabled: enableThrottling && shouldThrottleNow,
|
|
203
|
+
throttlingReason: reason
|
|
204
|
+
}))
|
|
170
205
|
|
|
171
206
|
// Notify callbacks
|
|
172
207
|
if (newMode !== metrics.performanceMode && callbacks.onPerformanceModeChange) {
|
|
@@ -213,7 +248,7 @@ export const usePerformance = (options= {}) => {
|
|
|
213
248
|
|
|
214
249
|
// Performance optimization recommendations
|
|
215
250
|
const getOptimizationRecommendations = useCallback(() => {
|
|
216
|
-
const recommendations] = []
|
|
251
|
+
const recommendations: string[] = []
|
|
217
252
|
|
|
218
253
|
if (metrics.fps < finalThresholds.fps.warning) {
|
|
219
254
|
recommendations.push('Consider reducing animation complexity or enabling performance mode')
|
|
@@ -234,15 +269,17 @@ export const usePerformance = (options= {}) => {
|
|
|
234
269
|
const enableThrottlingMode = useCallback(() => {
|
|
235
270
|
setMetrics(prev => ({
|
|
236
271
|
...prev,
|
|
237
|
-
throttlingEnabled,
|
|
238
|
-
throttlingReason
|
|
272
|
+
throttlingEnabled: true,
|
|
273
|
+
throttlingReason: 'Manual override'
|
|
274
|
+
}))
|
|
239
275
|
}, [])
|
|
240
276
|
|
|
241
277
|
const disableThrottlingMode = useCallback(() => {
|
|
242
278
|
setMetrics(prev => ({
|
|
243
279
|
...prev,
|
|
244
|
-
throttlingEnabled,
|
|
245
|
-
throttlingReason
|
|
280
|
+
throttlingEnabled: false,
|
|
281
|
+
throttlingReason: undefined
|
|
282
|
+
}))
|
|
246
283
|
}, [])
|
|
247
284
|
|
|
248
285
|
return {
|
|
@@ -255,24 +292,25 @@ export const usePerformance = (options= {}) => {
|
|
|
255
292
|
isMonitoring,
|
|
256
293
|
|
|
257
294
|
// Throttling
|
|
258
|
-
throttlingEnabled,
|
|
259
|
-
throttlingReason,
|
|
295
|
+
throttlingEnabled: metrics.throttlingEnabled,
|
|
296
|
+
throttlingReason: metrics.throttlingReason,
|
|
260
297
|
enableThrottlingMode,
|
|
261
298
|
disableThrottlingMode,
|
|
262
299
|
|
|
263
300
|
// Performance mode
|
|
264
|
-
performanceMode,
|
|
301
|
+
performanceMode: metrics.performanceMode,
|
|
265
302
|
|
|
266
303
|
// Recommendations
|
|
267
304
|
getOptimizationRecommendations,
|
|
268
305
|
|
|
269
306
|
// Thresholds
|
|
270
|
-
thresholds,
|
|
307
|
+
thresholds: finalThresholds,
|
|
271
308
|
|
|
272
309
|
// Raw values for advanced usage
|
|
273
|
-
fps,
|
|
274
|
-
frameTime,
|
|
275
|
-
memoryUsage,
|
|
276
|
-
batteryLevel,
|
|
277
|
-
isLowPowerMode
|
|
310
|
+
fps: metrics.fps,
|
|
311
|
+
frameTime: metrics.frameTime,
|
|
312
|
+
memoryUsage: metrics.memoryUsage,
|
|
313
|
+
batteryLevel: metrics.batteryLevel,
|
|
314
|
+
isLowPowerMode: metrics.isLowPowerMode
|
|
315
|
+
}
|
|
278
316
|
}
|
|
@@ -1,40 +1,62 @@
|
|
|
1
1
|
import { useState, useCallback, useEffect, ComponentType, CSSProperties } from 'react'
|
|
2
2
|
|
|
3
3
|
export interface ReusableArchitectureConfig {
|
|
4
|
-
enableComponentComposition
|
|
4
|
+
enableComponentComposition?: boolean
|
|
5
|
+
enablePatternSharing?: boolean
|
|
6
|
+
enableStyleSharing?: boolean
|
|
7
|
+
enableBehaviorSharing?: boolean
|
|
8
|
+
enableTemplateSystem?: boolean
|
|
9
|
+
enableComponentRegistry?: boolean
|
|
10
|
+
}
|
|
5
11
|
|
|
6
12
|
export interface ComponentTemplate {
|
|
7
|
-
id
|
|
8
|
-
|
|
9
|
-
|
|
13
|
+
id: string
|
|
14
|
+
name: string
|
|
15
|
+
component: ComponentType<any>
|
|
16
|
+
props: Record<string, any>
|
|
17
|
+
styles: CSSProperties
|
|
18
|
+
behaviors: string[]
|
|
19
|
+
patterns: string[]
|
|
10
20
|
}
|
|
11
21
|
|
|
12
22
|
export interface SharedPattern {
|
|
13
|
-
id
|
|
14
|
-
|
|
23
|
+
id: string
|
|
24
|
+
name: string
|
|
25
|
+
description: string
|
|
26
|
+
implementation: string
|
|
27
|
+
usage: string[]
|
|
28
|
+
category: 'composition' | 'styling' | 'behavior' | 'performance'
|
|
29
|
+
}
|
|
15
30
|
|
|
16
31
|
export interface SharedStyle {
|
|
17
|
-
id
|
|
18
|
-
|
|
19
|
-
|
|
32
|
+
id: string
|
|
33
|
+
name: string
|
|
34
|
+
css: string
|
|
35
|
+
variables: Record<string, string>
|
|
36
|
+
breakpoints: Record<string, string>
|
|
37
|
+
usage: string[]
|
|
20
38
|
}
|
|
21
39
|
|
|
22
40
|
export interface SharedBehavior {
|
|
23
|
-
id
|
|
24
|
-
|
|
41
|
+
id: string
|
|
42
|
+
name: string
|
|
43
|
+
description: string
|
|
44
|
+
hook: string
|
|
45
|
+
dependencies: string[]
|
|
46
|
+
usage: string[]
|
|
25
47
|
}
|
|
26
48
|
|
|
27
49
|
export interface ReusableArchitectureCallbacks {
|
|
28
|
-
onTemplateCreated
|
|
29
|
-
onPatternShared
|
|
30
|
-
onStyleShared
|
|
31
|
-
onBehaviorShared
|
|
32
|
-
onArchitectureOptimized
|
|
50
|
+
onTemplateCreated?: (template: ComponentTemplate) => void
|
|
51
|
+
onPatternShared?: (pattern: SharedPattern) => void
|
|
52
|
+
onStyleShared?: (style: SharedStyle) => void
|
|
53
|
+
onBehaviorShared?: (behavior: SharedBehavior) => void
|
|
54
|
+
onArchitectureOptimized?: (optimization: string) => void
|
|
33
55
|
}
|
|
34
56
|
|
|
35
57
|
export const useReusableArchitecture = (
|
|
36
|
-
config= {},
|
|
37
|
-
callbacks= {}
|
|
58
|
+
config: ReusableArchitectureConfig = {},
|
|
59
|
+
callbacks: ReusableArchitectureCallbacks = {}
|
|
38
60
|
) => {
|
|
39
61
|
const {
|
|
40
62
|
enableComponentComposition = true,
|
|
@@ -54,8 +76,8 @@ export const useReusableArchitecture = (
|
|
|
54
76
|
|
|
55
77
|
// Component composition
|
|
56
78
|
const composeComponent = useCallback((
|
|
57
|
-
baseComponent
|
|
58
|
-
enhancements) => ComponentType<any>>
|
|
79
|
+
baseComponent: ComponentType<any>,
|
|
80
|
+
enhancements: Array<(Component: ComponentType<any>) => ComponentType<any>>
|
|
59
81
|
) => {
|
|
60
82
|
if (!enableComponentComposition) return baseComponent
|
|
61
83
|
|
|
@@ -74,12 +96,12 @@ export const useReusableArchitecture = (
|
|
|
74
96
|
|
|
75
97
|
// Template system
|
|
76
98
|
const createTemplate = useCallback((
|
|
77
|
-
template, 'id'>
|
|
99
|
+
template: Omit<ComponentTemplate, 'id'>
|
|
78
100
|
) => {
|
|
79
101
|
if (!enableTemplateSystem) return null
|
|
80
102
|
|
|
81
103
|
const id = `template-${Date.now()}`
|
|
82
|
-
const newTemplate= {
|
|
104
|
+
const newTemplate: ComponentTemplate = {
|
|
83
105
|
...template,
|
|
84
106
|
id
|
|
85
107
|
}
|
|
@@ -92,13 +114,14 @@ export const useReusableArchitecture = (
|
|
|
92
114
|
return id
|
|
93
115
|
}, [enableTemplateSystem, templates, callbacks])
|
|
94
116
|
|
|
95
|
-
const getTemplate = useCallback((id) => {
|
|
117
|
+
const getTemplate = useCallback((id: string) => {
|
|
96
118
|
return templates.get(id)
|
|
97
119
|
}, [templates])
|
|
98
120
|
|
|
99
121
|
const updateTemplate = useCallback((
|
|
100
|
-
id,
|
|
101
|
-
updates
|
|
122
|
+
id: string,
|
|
123
|
+
updates: Partial<ComponentTemplate>
|
|
124
|
+
) => {
|
|
102
125
|
const template = templates.get(id)
|
|
103
126
|
if (!template) return false
|
|
104
127
|
|
|
@@ -109,7 +132,7 @@ export const useReusableArchitecture = (
|
|
|
109
132
|
return true
|
|
110
133
|
}, [templates])
|
|
111
134
|
|
|
112
|
-
const deleteTemplate = useCallback((id) => {
|
|
135
|
+
const deleteTemplate = useCallback((id: string) => {
|
|
113
136
|
const deleted = templates.delete(id)
|
|
114
137
|
if (deleted) {
|
|
115
138
|
setTemplates(new Map(templates))
|
|
@@ -119,12 +142,12 @@ export const useReusableArchitecture = (
|
|
|
119
142
|
|
|
120
143
|
// Pattern sharing
|
|
121
144
|
const sharePattern = useCallback((
|
|
122
|
-
pattern, 'id'>
|
|
145
|
+
pattern: Omit<SharedPattern, 'id'>
|
|
123
146
|
) => {
|
|
124
147
|
if (!enablePatternSharing) return null
|
|
125
148
|
|
|
126
149
|
const id = `pattern-${Date.now()}`
|
|
127
|
-
const newPattern= {
|
|
150
|
+
const newPattern: SharedPattern = {
|
|
128
151
|
...pattern,
|
|
129
152
|
id
|
|
130
153
|
}
|
|
@@ -137,22 +160,22 @@ export const useReusableArchitecture = (
|
|
|
137
160
|
return id
|
|
138
161
|
}, [enablePatternSharing, sharedPatterns, callbacks])
|
|
139
162
|
|
|
140
|
-
const getPattern = useCallback((id) => {
|
|
163
|
+
const getPattern = useCallback((id: string) => {
|
|
141
164
|
return sharedPatterns.get(id)
|
|
142
165
|
}, [sharedPatterns])
|
|
143
166
|
|
|
144
|
-
const findPatternsByCategory = useCallback((category) => {
|
|
167
|
+
const findPatternsByCategory = useCallback((category: string) => {
|
|
145
168
|
return Array.from(sharedPatterns.values()).filter(pattern => pattern.category === category)
|
|
146
169
|
}, [sharedPatterns])
|
|
147
170
|
|
|
148
171
|
// Style sharing
|
|
149
172
|
const shareStyle = useCallback((
|
|
150
|
-
style, 'id'>
|
|
173
|
+
style: Omit<SharedStyle, 'id'>
|
|
151
174
|
) => {
|
|
152
175
|
if (!enableStyleSharing) return null
|
|
153
176
|
|
|
154
177
|
const id = `style-${Date.now()}`
|
|
155
|
-
const newStyle= {
|
|
178
|
+
const newStyle: SharedStyle = {
|
|
156
179
|
...style,
|
|
157
180
|
id
|
|
158
181
|
}
|
|
@@ -165,13 +188,14 @@ export const useReusableArchitecture = (
|
|
|
165
188
|
return id
|
|
166
189
|
}, [enableStyleSharing, sharedStyles, callbacks])
|
|
167
190
|
|
|
168
|
-
const getStyle = useCallback((id) => {
|
|
191
|
+
const getStyle = useCallback((id: string) => {
|
|
169
192
|
return sharedStyles.get(id)
|
|
170
193
|
}, [sharedStyles])
|
|
171
194
|
|
|
172
195
|
const applyStyle = useCallback((
|
|
173
|
-
styleId,
|
|
174
|
-
targetComponent
|
|
196
|
+
styleId: string,
|
|
197
|
+
targetComponent: string
|
|
198
|
+
) => {
|
|
175
199
|
const style = sharedStyles.get(styleId)
|
|
176
200
|
if (!style) return false
|
|
177
201
|
|
|
@@ -187,12 +211,12 @@ export const useReusableArchitecture = (
|
|
|
187
211
|
|
|
188
212
|
// Behavior sharing
|
|
189
213
|
const shareBehavior = useCallback((
|
|
190
|
-
behavior, 'id'>
|
|
214
|
+
behavior: Omit<SharedBehavior, 'id'>
|
|
191
215
|
) => {
|
|
192
216
|
if (!enableBehaviorSharing) return null
|
|
193
217
|
|
|
194
218
|
const id = `behavior-${Date.now()}`
|
|
195
|
-
const newBehavior= {
|
|
219
|
+
const newBehavior: SharedBehavior = {
|
|
196
220
|
...behavior,
|
|
197
221
|
id
|
|
198
222
|
}
|
|
@@ -205,13 +229,14 @@ export const useReusableArchitecture = (
|
|
|
205
229
|
return id
|
|
206
230
|
}, [enableBehaviorSharing, sharedBehaviors, callbacks])
|
|
207
231
|
|
|
208
|
-
const getBehavior = useCallback((id) => {
|
|
232
|
+
const getBehavior = useCallback((id: string) => {
|
|
209
233
|
return sharedBehaviors.get(id)
|
|
210
234
|
}, [sharedBehaviors])
|
|
211
235
|
|
|
212
236
|
const applyBehavior = useCallback((
|
|
213
|
-
behaviorId,
|
|
214
|
-
targetComponent
|
|
237
|
+
behaviorId: string,
|
|
238
|
+
targetComponent: string
|
|
239
|
+
) => {
|
|
215
240
|
const behavior = sharedBehaviors.get(behaviorId)
|
|
216
241
|
if (!behavior) return false
|
|
217
242
|
|
|
@@ -227,21 +252,25 @@ export const useReusableArchitecture = (
|
|
|
227
252
|
|
|
228
253
|
// Component registry
|
|
229
254
|
const registerComponent = useCallback((
|
|
230
|
-
id,
|
|
231
|
-
component
|
|
232
|
-
metadata
|
|
255
|
+
id: string,
|
|
256
|
+
component: ComponentType<any>,
|
|
257
|
+
metadata: {
|
|
258
|
+
name: string
|
|
259
|
+
description: string
|
|
260
|
+
category: string
|
|
261
|
+
tags: string[]
|
|
233
262
|
}
|
|
234
263
|
) => {
|
|
235
264
|
if (!enableComponentRegistry) return false
|
|
236
265
|
|
|
237
|
-
const template= {
|
|
266
|
+
const template: ComponentTemplate = {
|
|
238
267
|
id,
|
|
239
|
-
name,
|
|
268
|
+
name: metadata.name,
|
|
240
269
|
component,
|
|
241
|
-
props},
|
|
242
|
-
styles},
|
|
243
|
-
behaviors],
|
|
244
|
-
patterns]
|
|
270
|
+
props: {},
|
|
271
|
+
styles: {},
|
|
272
|
+
behaviors: [],
|
|
273
|
+
patterns: []
|
|
245
274
|
}
|
|
246
275
|
|
|
247
276
|
templates.set(id, template)
|
|
@@ -253,13 +282,13 @@ export const useReusableArchitecture = (
|
|
|
253
282
|
// Architecture analysis
|
|
254
283
|
const analyzeArchitecture = useCallback(() => {
|
|
255
284
|
const analysis = {
|
|
256
|
-
totalTemplates,
|
|
257
|
-
totalPatterns,
|
|
258
|
-
totalStyles,
|
|
259
|
-
totalBehaviors,
|
|
260
|
-
compositionLevel,
|
|
261
|
-
reusabilityScore,
|
|
262
|
-
recommendations] as string[]
|
|
285
|
+
totalTemplates: templates.size,
|
|
286
|
+
totalPatterns: sharedPatterns.size,
|
|
287
|
+
totalStyles: sharedStyles.size,
|
|
288
|
+
totalBehaviors: sharedBehaviors.size,
|
|
289
|
+
compositionLevel: 'none' as 'none' | 'basic' | 'intermediate' | 'advanced',
|
|
290
|
+
reusabilityScore: 0,
|
|
291
|
+
recommendations: [] as string[]
|
|
263
292
|
}
|
|
264
293
|
|
|
265
294
|
// Calculate composition level
|
|
@@ -335,10 +364,10 @@ export const useReusableArchitecture = (
|
|
|
335
364
|
|
|
336
365
|
return {
|
|
337
366
|
// State
|
|
338
|
-
templates)),
|
|
339
|
-
sharedPatterns)),
|
|
340
|
-
sharedStyles)),
|
|
341
|
-
sharedBehaviors)),
|
|
367
|
+
templates: Array.from(templates.values()),
|
|
368
|
+
sharedPatterns: Array.from(sharedPatterns.values()),
|
|
369
|
+
sharedStyles: Array.from(sharedStyles.values()),
|
|
370
|
+
sharedBehaviors: Array.from(sharedBehaviors.values()),
|
|
342
371
|
isOptimizing,
|
|
343
372
|
optimizations,
|
|
344
373
|
|
|
@@ -374,11 +403,11 @@ export const useReusableArchitecture = (
|
|
|
374
403
|
optimizeArchitecture,
|
|
375
404
|
|
|
376
405
|
// Utility functions
|
|
377
|
-
hasTemplate) => templates.has(id),
|
|
378
|
-
hasPattern) => sharedPatterns.has(id),
|
|
379
|
-
hasStyle) => sharedStyles.has(id),
|
|
380
|
-
hasBehavior) => sharedBehaviors.has(id),
|
|
381
|
-
clearOptimizations) => setOptimizations([])
|
|
406
|
+
hasTemplate: (id: string) => templates.has(id),
|
|
407
|
+
hasPattern: (id: string) => sharedPatterns.has(id),
|
|
408
|
+
hasStyle: (id: string) => sharedStyles.has(id),
|
|
409
|
+
hasBehavior: (id: string) => sharedBehaviors.has(id),
|
|
410
|
+
clearOptimizations: () => setOptimizations([])
|
|
382
411
|
}
|
|
383
412
|
}
|
|
384
413
|
|