@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
|
@@ -13,7 +13,7 @@ import { useLayoutPerformance } from '../../hooks/use-layout-performance'
|
|
|
13
13
|
import { useMobileLayout } from '../../hooks/use-mobile-layout'
|
|
14
14
|
import { useTabletLayout } from '../../hooks/use-tablet-layout'
|
|
15
15
|
|
|
16
|
-
export const LayoutDemo= () => {
|
|
16
|
+
export const LayoutDemo: React.FC = () => {
|
|
17
17
|
const [activeLayout, setActiveLayout] = useState<'mobile' | 'tablet' | 'desktop' | 'adaptive'>('adaptive')
|
|
18
18
|
const [showPerformanceMetrics, setShowPerformanceMetrics] = useState(true)
|
|
19
19
|
const [enableTouchOptimization, setEnableTouchOptimization] = useState(true)
|
|
@@ -21,45 +21,49 @@ export const LayoutDemo= () => {
|
|
|
21
21
|
|
|
22
22
|
// Hooks
|
|
23
23
|
useAdaptiveLayout({
|
|
24
|
-
enablePerformanceOptimization,
|
|
25
|
-
enableTouchOptimization,
|
|
26
|
-
enableBatteryOptimization,
|
|
27
|
-
enableMemoryOptimization
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
24
|
+
enablePerformanceOptimization: true,
|
|
25
|
+
enableTouchOptimization: true,
|
|
26
|
+
enableBatteryOptimization: true,
|
|
27
|
+
enableMemoryOptimization: true
|
|
28
|
+
}, {
|
|
29
|
+
onDeviceChange: (deviceType) => console.log('Device changed to:', deviceType),
|
|
30
|
+
onOrientationChange: (orientation) => console.log('Orientation changed to:', orientation),
|
|
31
|
+
onPerformanceChange: (score) => console.log('Performance score:', score)
|
|
31
32
|
})
|
|
32
33
|
|
|
33
34
|
const layoutPerformance = useLayoutPerformance({
|
|
34
|
-
enableLayoutCalculationOptimization,
|
|
35
|
-
enableMemoryManagement,
|
|
36
|
-
enableBatteryOptimization,
|
|
37
|
-
enablePerformanceMonitoring
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
35
|
+
enableLayoutCalculationOptimization: true,
|
|
36
|
+
enableMemoryManagement: true,
|
|
37
|
+
enableBatteryOptimization: true,
|
|
38
|
+
enablePerformanceMonitoring: true
|
|
39
|
+
}, {
|
|
40
|
+
onPerformanceWarning: (warning, metrics) => console.log('Performance warning:', warning, metrics),
|
|
41
|
+
onMemoryWarning: (usage, threshold) => console.log('Memory warning:', usage, threshold),
|
|
42
|
+
onBatteryWarning: (level, isLow) => console.log('Battery warning:', level, isLow)
|
|
41
43
|
})
|
|
42
44
|
|
|
43
45
|
const mobileLayout = useMobileLayout({
|
|
44
|
-
enableTouchTargetOptimization,
|
|
45
|
-
enableGestureSupport,
|
|
46
|
-
enableTouchFeedback,
|
|
47
|
-
enablePerformanceOptimization
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
46
|
+
enableTouchTargetOptimization: true,
|
|
47
|
+
enableGestureSupport: true,
|
|
48
|
+
enableTouchFeedback: true,
|
|
49
|
+
enablePerformanceOptimization: true
|
|
50
|
+
}, {
|
|
51
|
+
onTouchTargetOptimized: (target) => console.log('Touch target optimized:', target),
|
|
52
|
+
onGestureDetected: (event) => console.log('Gesture detected:', event),
|
|
53
|
+
onTouchFeedback: (type, target) => console.log('Touch feedback:', type, target)
|
|
51
54
|
})
|
|
52
55
|
|
|
53
56
|
useTabletLayout({
|
|
54
|
-
enableOrientationOptimization,
|
|
55
|
-
enableSplitViewSupport,
|
|
56
|
-
enableKeyboardOptimization,
|
|
57
|
-
enableSafeAreaOptimization,
|
|
58
|
-
enablePerformanceOptimization,
|
|
59
|
-
enableTouchOptimization
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
57
|
+
enableOrientationOptimization: true,
|
|
58
|
+
enableSplitViewSupport: true,
|
|
59
|
+
enableKeyboardOptimization: true,
|
|
60
|
+
enableSafeAreaOptimization: true,
|
|
61
|
+
enablePerformanceOptimization: true,
|
|
62
|
+
enableTouchOptimization: true
|
|
63
|
+
}, {
|
|
64
|
+
onOrientationChange: (orientation) => console.log('Tablet orientation:', orientation),
|
|
65
|
+
onSplitViewChange: (isSplitView) => console.log('Split view:', isSplitView),
|
|
66
|
+
onKeyboardChange: (isVisible) => console.log('Keyboard visible:', isVisible)
|
|
63
67
|
})
|
|
64
68
|
|
|
65
69
|
// Layout content
|
|
@@ -67,7 +71,8 @@ export const LayoutDemo= () => {
|
|
|
67
71
|
const commonContent = (
|
|
68
72
|
<div className="space-y-6">
|
|
69
73
|
{/* Feature Cards */}
|
|
70
|
-
<div className="grid grid-cols-1 md
|
|
74
|
+
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4">
|
|
75
|
+
<Card className="border-2 border-cs-primary">
|
|
71
76
|
<CardHeader className="pb-3">
|
|
72
77
|
<CardTitle className="text-lg flex items-center gap-2">
|
|
73
78
|
🎨 Design System
|
|
@@ -140,7 +145,9 @@ export const LayoutDemo= () => {
|
|
|
140
145
|
</CardDescription>
|
|
141
146
|
</CardHeader>
|
|
142
147
|
<CardContent>
|
|
143
|
-
<div className="grid grid-cols-2 lg
|
|
148
|
+
<div className="grid grid-cols-2 lg:grid-cols-4 gap-6 text-center">
|
|
149
|
+
<div>
|
|
150
|
+
<p className="text-2xl font-bold text-cs-primary">
|
|
144
151
|
{layoutPerformance.metrics.performanceScore}
|
|
145
152
|
</p>
|
|
146
153
|
<p className="text-sm text-cs-text-secondary">Performance Score</p>
|
|
@@ -179,25 +186,25 @@ export const LayoutDemo= () => {
|
|
|
179
186
|
<CardContent className="space-y-4">
|
|
180
187
|
<div className="flex flex-wrap gap-4">
|
|
181
188
|
<Button
|
|
182
|
-
variant={activeLayout === 'mobile' ? 'default' }
|
|
189
|
+
variant={activeLayout === 'mobile' ? 'default' : 'outline'}
|
|
183
190
|
onClick={() => setActiveLayout('mobile')}
|
|
184
191
|
>
|
|
185
192
|
📱 Mobile
|
|
186
193
|
</Button>
|
|
187
194
|
<Button
|
|
188
|
-
variant={activeLayout === 'tablet' ? 'default' }
|
|
195
|
+
variant={activeLayout === 'tablet' ? 'default' : 'outline'}
|
|
189
196
|
onClick={() => setActiveLayout('tablet')}
|
|
190
197
|
>
|
|
191
198
|
📱 Tablet
|
|
192
199
|
</Button>
|
|
193
200
|
<Button
|
|
194
|
-
variant={activeLayout === 'desktop' ? 'default' }
|
|
201
|
+
variant={activeLayout === 'desktop' ? 'default' : 'outline'}
|
|
195
202
|
onClick={() => setActiveLayout('desktop')}
|
|
196
203
|
>
|
|
197
204
|
💻 Desktop
|
|
198
205
|
</Button>
|
|
199
206
|
<Button
|
|
200
|
-
variant={activeLayout === 'adaptive' ? 'default' }
|
|
207
|
+
variant={activeLayout === 'adaptive' ? 'default' : 'outline'}
|
|
201
208
|
onClick={() => setActiveLayout('adaptive')}
|
|
202
209
|
>
|
|
203
210
|
🔄 Adaptive
|
|
@@ -206,25 +213,25 @@ export const LayoutDemo= () => {
|
|
|
206
213
|
|
|
207
214
|
<div className="flex flex-wrap gap-4">
|
|
208
215
|
<Button
|
|
209
|
-
variant={showPerformanceMetrics ? 'default' }
|
|
216
|
+
variant={showPerformanceMetrics ? 'default' : 'outline'}
|
|
210
217
|
size="sm"
|
|
211
218
|
onClick={() => setShowPerformanceMetrics(!showPerformanceMetrics)}
|
|
212
219
|
>
|
|
213
|
-
{showPerformanceMetrics ? 'Hide' } Performance
|
|
220
|
+
{showPerformanceMetrics ? 'Hide' : 'Show'} Performance
|
|
214
221
|
</Button>
|
|
215
222
|
<Button
|
|
216
|
-
variant={enableTouchOptimization ? 'default' }
|
|
223
|
+
variant={enableTouchOptimization ? 'default' : 'outline'}
|
|
217
224
|
size="sm"
|
|
218
225
|
onClick={() => setEnableTouchOptimization(!enableTouchOptimization)}
|
|
219
226
|
>
|
|
220
|
-
{enableTouchOptimization ? 'Disable' } Touch
|
|
227
|
+
{enableTouchOptimization ? 'Disable' : 'Enable'} Touch
|
|
221
228
|
</Button>
|
|
222
229
|
<Button
|
|
223
|
-
variant={enableAdvancedFeatures ? 'default' }
|
|
230
|
+
variant={enableAdvancedFeatures ? 'default' : 'outline'}
|
|
224
231
|
size="sm"
|
|
225
232
|
onClick={() => setEnableAdvancedFeatures(!enableAdvancedFeatures)}
|
|
226
233
|
>
|
|
227
|
-
{enableAdvancedFeatures ? 'Disable' } Advanced
|
|
234
|
+
{enableAdvancedFeatures ? 'Disable' : 'Enable'} Advanced
|
|
228
235
|
</Button>
|
|
229
236
|
</div>
|
|
230
237
|
</CardContent>
|
|
@@ -241,30 +248,35 @@ export const LayoutDemo= () => {
|
|
|
241
248
|
<CardContent>
|
|
242
249
|
<div className="space-y-3">
|
|
243
250
|
<div className="flex items-center justify-between">
|
|
244
|
-
<span className="text-sm">Layout Performance
|
|
245
|
-
|
|
251
|
+
<span className="text-sm">Layout Performance:</span>
|
|
252
|
+
<Badge variant={layoutPerformance.isPerformanceOptimal ? 'default' : 'secondary'}>
|
|
253
|
+
{layoutPerformance.isPerformanceOptimal ? 'Optimal' : 'Needs Optimization'}
|
|
246
254
|
</Badge>
|
|
247
255
|
</div>
|
|
248
256
|
<div className="flex items-center justify-between">
|
|
249
|
-
<span className="text-sm">Memory Usage
|
|
250
|
-
|
|
257
|
+
<span className="text-sm">Memory Usage:</span>
|
|
258
|
+
<Badge variant={layoutPerformance.isMemoryOptimal ? 'default' : 'secondary'}>
|
|
259
|
+
{layoutPerformance.isMemoryOptimal ? 'Optimal' : 'High Usage'}
|
|
251
260
|
</Badge>
|
|
252
261
|
</div>
|
|
253
262
|
<div className="flex items-center justify-between">
|
|
254
|
-
<span className="text-sm">Battery Status
|
|
255
|
-
|
|
263
|
+
<span className="text-sm">Battery Status:</span>
|
|
264
|
+
<Badge variant={layoutPerformance.isBatteryOptimal ? 'default' : 'secondary'}>
|
|
265
|
+
{layoutPerformance.isBatteryOptimal ? 'Good' : 'Low Battery'}
|
|
256
266
|
</Badge>
|
|
257
267
|
</div>
|
|
258
268
|
<div className="flex items-center justify-between">
|
|
259
|
-
<span className="text-sm">Touch Optimization
|
|
260
|
-
|
|
269
|
+
<span className="text-sm">Touch Optimization:</span>
|
|
270
|
+
<Badge variant={mobileLayout.isTouchOptimized ? 'default' : 'secondary'}>
|
|
271
|
+
{mobileLayout.isTouchOptimized ? 'Optimized' : 'Needs Optimization'}
|
|
261
272
|
</Badge>
|
|
262
273
|
</div>
|
|
263
274
|
</div>
|
|
264
275
|
|
|
265
276
|
{layoutPerformance.layoutOptimizations.length > 0 && (
|
|
266
277
|
<div className="mt-4 p-3 bg-cs-accent/10 rounded-lg">
|
|
267
|
-
<h4 className="font-medium text-sm mb-2">Recommendations
|
|
278
|
+
<h4 className="font-medium text-sm mb-2">Recommendations:</h4>
|
|
279
|
+
<ul className="text-xs text-cs-text-secondary space-y-1">
|
|
268
280
|
{layoutPerformance.layoutOptimizations.map((optimization, index) => (
|
|
269
281
|
<li key={index}>• {optimization}</li>
|
|
270
282
|
))}
|
|
@@ -277,7 +289,10 @@ export const LayoutDemo= () => {
|
|
|
277
289
|
)
|
|
278
290
|
|
|
279
291
|
switch (activeLayout) {
|
|
280
|
-
case 'mobile'
|
|
292
|
+
case 'mobile':
|
|
293
|
+
return (
|
|
294
|
+
<MobileLayout
|
|
295
|
+
title="Mobile Layout Demo"
|
|
281
296
|
description="Touch-optimized mobile layout with performance monitoring"
|
|
282
297
|
enableTouchOptimization={enableTouchOptimization}
|
|
283
298
|
enablePerformanceMonitoring={showPerformanceMetrics}
|
|
@@ -286,7 +301,10 @@ export const LayoutDemo= () => {
|
|
|
286
301
|
</MobileLayout>
|
|
287
302
|
)
|
|
288
303
|
|
|
289
|
-
case 'tablet'
|
|
304
|
+
case 'tablet':
|
|
305
|
+
return (
|
|
306
|
+
<TabletLayout
|
|
307
|
+
title="Tablet Layout Demo"
|
|
290
308
|
description="Tablet-optimized layout with orientation and split view support"
|
|
291
309
|
enableTouchOptimization={enableTouchOptimization}
|
|
292
310
|
enablePerformanceMonitoring={showPerformanceMetrics}
|
|
@@ -295,7 +313,10 @@ export const LayoutDemo= () => {
|
|
|
295
313
|
</TabletLayout>
|
|
296
314
|
)
|
|
297
315
|
|
|
298
|
-
case 'desktop'
|
|
316
|
+
case 'desktop':
|
|
317
|
+
return (
|
|
318
|
+
<DesktopLayout
|
|
319
|
+
title="Desktop Layout Demo"
|
|
299
320
|
description="Desktop-optimized layout with advanced features and performance monitoring"
|
|
300
321
|
enableAdvancedFeatures={enableAdvancedFeatures}
|
|
301
322
|
enablePerformanceMonitoring={showPerformanceMetrics}
|
|
@@ -304,7 +325,11 @@ export const LayoutDemo= () => {
|
|
|
304
325
|
</DesktopLayout>
|
|
305
326
|
)
|
|
306
327
|
|
|
307
|
-
case 'adaptive'
|
|
328
|
+
case 'adaptive':
|
|
329
|
+
default:
|
|
330
|
+
return (
|
|
331
|
+
<AdaptiveLayout
|
|
332
|
+
title="Adaptive Layout Demo"
|
|
308
333
|
description="Automatically adapts to different device types with optimal layouts"
|
|
309
334
|
enableTouchOptimization={enableTouchOptimization}
|
|
310
335
|
enablePerformanceMonitoring={showPerformanceMetrics}
|
|
@@ -13,7 +13,7 @@ import { useLayoutPerformance } from '../../hooks/use-layout-performance'
|
|
|
13
13
|
import { useMobileLayout } from '../../hooks/use-mobile-layout'
|
|
14
14
|
import { useTabletLayout } from '../../hooks/use-tablet-layout'
|
|
15
15
|
|
|
16
|
-
export const LayoutDemo= () => {
|
|
16
|
+
export const LayoutDemo: React.FC = () => {
|
|
17
17
|
const [activeLayout, setActiveLayout] = useState<'mobile' | 'tablet' | 'desktop' | 'adaptive'>('adaptive')
|
|
18
18
|
const [showPerformanceMetrics, setShowPerformanceMetrics] = useState(true)
|
|
19
19
|
const [enableTouchOptimization, setEnableTouchOptimization] = useState(true)
|
|
@@ -21,45 +21,49 @@ export const LayoutDemo= () => {
|
|
|
21
21
|
|
|
22
22
|
// Hooks
|
|
23
23
|
useAdaptiveLayout({
|
|
24
|
-
enablePerformanceOptimization,
|
|
25
|
-
enableTouchOptimization,
|
|
26
|
-
enableBatteryOptimization,
|
|
27
|
-
enableMemoryOptimization
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
24
|
+
enablePerformanceOptimization: true,
|
|
25
|
+
enableTouchOptimization: true,
|
|
26
|
+
enableBatteryOptimization: true,
|
|
27
|
+
enableMemoryOptimization: true
|
|
28
|
+
}, {
|
|
29
|
+
onDeviceChange: (deviceType) => console.log('Device changed to:', deviceType),
|
|
30
|
+
onOrientationChange: (orientation) => console.log('Orientation changed to:', orientation),
|
|
31
|
+
onPerformanceChange: (score) => console.log('Performance score:', score)
|
|
31
32
|
})
|
|
32
33
|
|
|
33
34
|
const layoutPerformance = useLayoutPerformance({
|
|
34
|
-
enableLayoutCalculationOptimization,
|
|
35
|
-
enableMemoryManagement,
|
|
36
|
-
enableBatteryOptimization,
|
|
37
|
-
enablePerformanceMonitoring
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
35
|
+
enableLayoutCalculationOptimization: true,
|
|
36
|
+
enableMemoryManagement: true,
|
|
37
|
+
enableBatteryOptimization: true,
|
|
38
|
+
enablePerformanceMonitoring: true
|
|
39
|
+
}, {
|
|
40
|
+
onPerformanceWarning: (warning, metrics) => console.log('Performance warning:', warning, metrics),
|
|
41
|
+
onMemoryWarning: (usage, threshold) => console.log('Memory warning:', usage, threshold),
|
|
42
|
+
onBatteryWarning: (level, isLow) => console.log('Battery warning:', level, isLow)
|
|
41
43
|
})
|
|
42
44
|
|
|
43
45
|
const mobileLayout = useMobileLayout({
|
|
44
|
-
enableTouchTargetOptimization,
|
|
45
|
-
enableGestureSupport,
|
|
46
|
-
enableTouchFeedback,
|
|
47
|
-
enablePerformanceOptimization
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
46
|
+
enableTouchTargetOptimization: true,
|
|
47
|
+
enableGestureSupport: true,
|
|
48
|
+
enableTouchFeedback: true,
|
|
49
|
+
enablePerformanceOptimization: true
|
|
50
|
+
}, {
|
|
51
|
+
onTouchTargetOptimized: (target) => console.log('Touch target optimized:', target),
|
|
52
|
+
onGestureDetected: (event) => console.log('Gesture detected:', event),
|
|
53
|
+
onTouchFeedback: (type, target) => console.log('Touch feedback:', type, target)
|
|
51
54
|
})
|
|
52
55
|
|
|
53
56
|
useTabletLayout({
|
|
54
|
-
enableOrientationOptimization,
|
|
55
|
-
enableSplitViewSupport,
|
|
56
|
-
enableKeyboardOptimization,
|
|
57
|
-
enableSafeAreaOptimization,
|
|
58
|
-
enablePerformanceOptimization,
|
|
59
|
-
enableTouchOptimization
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
57
|
+
enableOrientationOptimization: true,
|
|
58
|
+
enableSplitViewSupport: true,
|
|
59
|
+
enableKeyboardOptimization: true,
|
|
60
|
+
enableSafeAreaOptimization: true,
|
|
61
|
+
enablePerformanceOptimization: true,
|
|
62
|
+
enableTouchOptimization: true
|
|
63
|
+
}, {
|
|
64
|
+
onOrientationChange: (orientation) => console.log('Tablet orientation:', orientation),
|
|
65
|
+
onSplitViewChange: (isSplitView) => console.log('Split view:', isSplitView),
|
|
66
|
+
onKeyboardChange: (isVisible) => console.log('Keyboard visible:', isVisible)
|
|
63
67
|
})
|
|
64
68
|
|
|
65
69
|
// Layout content
|
|
@@ -67,7 +71,8 @@ export const LayoutDemo= () => {
|
|
|
67
71
|
const commonContent = (
|
|
68
72
|
<div className="space-y-6">
|
|
69
73
|
{/* Feature Cards */}
|
|
70
|
-
<div className="grid grid-cols-1 md
|
|
74
|
+
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4">
|
|
75
|
+
<Card className="border-2 border-cs-primary">
|
|
71
76
|
<CardHeader className="pb-3">
|
|
72
77
|
<CardTitle className="text-lg flex items-center gap-2">
|
|
73
78
|
🎨 Design System
|
|
@@ -140,7 +145,9 @@ export const LayoutDemo= () => {
|
|
|
140
145
|
</CardDescription>
|
|
141
146
|
</CardHeader>
|
|
142
147
|
<CardContent>
|
|
143
|
-
<div className="grid grid-cols-2 lg
|
|
148
|
+
<div className="grid grid-cols-2 lg:grid-cols-4 gap-6 text-center">
|
|
149
|
+
<div>
|
|
150
|
+
<p className="text-2xl font-bold text-cs-primary">
|
|
144
151
|
{layoutPerformance.metrics.performanceScore}
|
|
145
152
|
</p>
|
|
146
153
|
<p className="text-sm text-cs-text-secondary">Performance Score</p>
|
|
@@ -179,25 +186,25 @@ export const LayoutDemo= () => {
|
|
|
179
186
|
<CardContent className="space-y-4">
|
|
180
187
|
<div className="flex flex-wrap gap-4">
|
|
181
188
|
<Button
|
|
182
|
-
variant={activeLayout === 'mobile' ? 'default' }
|
|
189
|
+
variant={activeLayout === 'mobile' ? 'default' : 'outline'}
|
|
183
190
|
onClick={() => setActiveLayout('mobile')}
|
|
184
191
|
>
|
|
185
192
|
📱 Mobile
|
|
186
193
|
</Button>
|
|
187
194
|
<Button
|
|
188
|
-
variant={activeLayout === 'tablet' ? 'default' }
|
|
195
|
+
variant={activeLayout === 'tablet' ? 'default' : 'outline'}
|
|
189
196
|
onClick={() => setActiveLayout('tablet')}
|
|
190
197
|
>
|
|
191
198
|
📱 Tablet
|
|
192
199
|
</Button>
|
|
193
200
|
<Button
|
|
194
|
-
variant={activeLayout === 'desktop' ? 'default' }
|
|
201
|
+
variant={activeLayout === 'desktop' ? 'default' : 'outline'}
|
|
195
202
|
onClick={() => setActiveLayout('desktop')}
|
|
196
203
|
>
|
|
197
204
|
💻 Desktop
|
|
198
205
|
</Button>
|
|
199
206
|
<Button
|
|
200
|
-
variant={activeLayout === 'adaptive' ? 'default' }
|
|
207
|
+
variant={activeLayout === 'adaptive' ? 'default' : 'outline'}
|
|
201
208
|
onClick={() => setActiveLayout('adaptive')}
|
|
202
209
|
>
|
|
203
210
|
🔄 Adaptive
|
|
@@ -206,25 +213,25 @@ export const LayoutDemo= () => {
|
|
|
206
213
|
|
|
207
214
|
<div className="flex flex-wrap gap-4">
|
|
208
215
|
<Button
|
|
209
|
-
variant={showPerformanceMetrics ? 'default' }
|
|
216
|
+
variant={showPerformanceMetrics ? 'default' : 'outline'}
|
|
210
217
|
size="sm"
|
|
211
218
|
onClick={() => setShowPerformanceMetrics(!showPerformanceMetrics)}
|
|
212
219
|
>
|
|
213
|
-
{showPerformanceMetrics ? 'Hide' } Performance
|
|
220
|
+
{showPerformanceMetrics ? 'Hide' : 'Show'} Performance
|
|
214
221
|
</Button>
|
|
215
222
|
<Button
|
|
216
|
-
variant={enableTouchOptimization ? 'default' }
|
|
223
|
+
variant={enableTouchOptimization ? 'default' : 'outline'}
|
|
217
224
|
size="sm"
|
|
218
225
|
onClick={() => setEnableTouchOptimization(!enableTouchOptimization)}
|
|
219
226
|
>
|
|
220
|
-
{enableTouchOptimization ? 'Disable' } Touch
|
|
227
|
+
{enableTouchOptimization ? 'Disable' : 'Enable'} Touch
|
|
221
228
|
</Button>
|
|
222
229
|
<Button
|
|
223
|
-
variant={enableAdvancedFeatures ? 'default' }
|
|
230
|
+
variant={enableAdvancedFeatures ? 'default' : 'outline'}
|
|
224
231
|
size="sm"
|
|
225
232
|
onClick={() => setEnableAdvancedFeatures(!enableAdvancedFeatures)}
|
|
226
233
|
>
|
|
227
|
-
{enableAdvancedFeatures ? 'Disable' } Advanced
|
|
234
|
+
{enableAdvancedFeatures ? 'Disable' : 'Enable'} Advanced
|
|
228
235
|
</Button>
|
|
229
236
|
</div>
|
|
230
237
|
</CardContent>
|
|
@@ -241,30 +248,35 @@ export const LayoutDemo= () => {
|
|
|
241
248
|
<CardContent>
|
|
242
249
|
<div className="space-y-3">
|
|
243
250
|
<div className="flex items-center justify-between">
|
|
244
|
-
<span className="text-sm">Layout Performance
|
|
245
|
-
|
|
251
|
+
<span className="text-sm">Layout Performance:</span>
|
|
252
|
+
<Badge variant={layoutPerformance.isPerformanceOptimal ? 'default' : 'secondary'}>
|
|
253
|
+
{layoutPerformance.isPerformanceOptimal ? 'Optimal' : 'Needs Optimization'}
|
|
246
254
|
</Badge>
|
|
247
255
|
</div>
|
|
248
256
|
<div className="flex items-center justify-between">
|
|
249
|
-
<span className="text-sm">Memory Usage
|
|
250
|
-
|
|
257
|
+
<span className="text-sm">Memory Usage:</span>
|
|
258
|
+
<Badge variant={layoutPerformance.isMemoryOptimal ? 'default' : 'secondary'}>
|
|
259
|
+
{layoutPerformance.isMemoryOptimal ? 'Optimal' : 'High Usage'}
|
|
251
260
|
</Badge>
|
|
252
261
|
</div>
|
|
253
262
|
<div className="flex items-center justify-between">
|
|
254
|
-
<span className="text-sm">Battery Status
|
|
255
|
-
|
|
263
|
+
<span className="text-sm">Battery Status:</span>
|
|
264
|
+
<Badge variant={layoutPerformance.isBatteryOptimal ? 'default' : 'secondary'}>
|
|
265
|
+
{layoutPerformance.isBatteryOptimal ? 'Good' : 'Low Battery'}
|
|
256
266
|
</Badge>
|
|
257
267
|
</div>
|
|
258
268
|
<div className="flex items-center justify-between">
|
|
259
|
-
<span className="text-sm">Touch Optimization
|
|
260
|
-
|
|
269
|
+
<span className="text-sm">Touch Optimization:</span>
|
|
270
|
+
<Badge variant={mobileLayout.isTouchOptimized ? 'default' : 'secondary'}>
|
|
271
|
+
{mobileLayout.isTouchOptimized ? 'Optimized' : 'Needs Optimization'}
|
|
261
272
|
</Badge>
|
|
262
273
|
</div>
|
|
263
274
|
</div>
|
|
264
275
|
|
|
265
276
|
{layoutPerformance.layoutOptimizations.length > 0 && (
|
|
266
277
|
<div className="mt-4 p-3 bg-cs-accent/10 rounded-lg">
|
|
267
|
-
<h4 className="font-medium text-sm mb-2">Recommendations
|
|
278
|
+
<h4 className="font-medium text-sm mb-2">Recommendations:</h4>
|
|
279
|
+
<ul className="text-xs text-cs-text-secondary space-y-1">
|
|
268
280
|
{layoutPerformance.layoutOptimizations.map((optimization, index) => (
|
|
269
281
|
<li key={index}>• {optimization}</li>
|
|
270
282
|
))}
|
|
@@ -277,7 +289,10 @@ export const LayoutDemo= () => {
|
|
|
277
289
|
)
|
|
278
290
|
|
|
279
291
|
switch (activeLayout) {
|
|
280
|
-
case 'mobile'
|
|
292
|
+
case 'mobile':
|
|
293
|
+
return (
|
|
294
|
+
<MobileLayout
|
|
295
|
+
title="Mobile Layout Demo"
|
|
281
296
|
description="Touch-optimized mobile layout with performance monitoring"
|
|
282
297
|
enableTouchOptimization={enableTouchOptimization}
|
|
283
298
|
enablePerformanceMonitoring={showPerformanceMetrics}
|
|
@@ -286,7 +301,10 @@ export const LayoutDemo= () => {
|
|
|
286
301
|
</MobileLayout>
|
|
287
302
|
)
|
|
288
303
|
|
|
289
|
-
case 'tablet'
|
|
304
|
+
case 'tablet':
|
|
305
|
+
return (
|
|
306
|
+
<TabletLayout
|
|
307
|
+
title="Tablet Layout Demo"
|
|
290
308
|
description="Tablet-optimized layout with orientation and split view support"
|
|
291
309
|
enableTouchOptimization={enableTouchOptimization}
|
|
292
310
|
enablePerformanceMonitoring={showPerformanceMetrics}
|
|
@@ -295,7 +313,10 @@ export const LayoutDemo= () => {
|
|
|
295
313
|
</TabletLayout>
|
|
296
314
|
)
|
|
297
315
|
|
|
298
|
-
case 'desktop'
|
|
316
|
+
case 'desktop':
|
|
317
|
+
return (
|
|
318
|
+
<DesktopLayout
|
|
319
|
+
title="Desktop Layout Demo"
|
|
299
320
|
description="Desktop-optimized layout with advanced features and performance monitoring"
|
|
300
321
|
enableAdvancedFeatures={enableAdvancedFeatures}
|
|
301
322
|
enablePerformanceMonitoring={showPerformanceMetrics}
|
|
@@ -304,7 +325,11 @@ export const LayoutDemo= () => {
|
|
|
304
325
|
</DesktopLayout>
|
|
305
326
|
)
|
|
306
327
|
|
|
307
|
-
case 'adaptive'
|
|
328
|
+
case 'adaptive':
|
|
329
|
+
default:
|
|
330
|
+
return (
|
|
331
|
+
<AdaptiveLayout
|
|
332
|
+
title="Adaptive Layout Demo"
|
|
308
333
|
description="Automatically adapts to different device types with optimal layouts"
|
|
309
334
|
enableTouchOptimization={enableTouchOptimization}
|
|
310
335
|
enablePerformanceMonitoring={showPerformanceMetrics}
|
|
@@ -8,9 +8,18 @@ import { DesktopLayout } from './desktop-layout'
|
|
|
8
8
|
export type DeviceType = 'mobile' | 'tablet' | 'desktop'
|
|
9
9
|
|
|
10
10
|
export interface AdaptiveLayoutProps {
|
|
11
|
-
children
|
|
11
|
+
children: ReactNode
|
|
12
|
+
title?: string
|
|
13
|
+
description?: string
|
|
14
|
+
showHeader?: boolean
|
|
15
|
+
showSidebar?: boolean
|
|
16
|
+
enableTouchOptimization?: boolean
|
|
17
|
+
enablePerformanceMonitoring?: boolean
|
|
18
|
+
enableAdvancedFeatures?: boolean
|
|
19
|
+
className?: string
|
|
20
|
+
}
|
|
12
21
|
|
|
13
|
-
export const AdaptiveLayout= ({
|
|
22
|
+
export const AdaptiveLayout: React.FC<AdaptiveLayoutProps> = ({
|
|
14
23
|
children,
|
|
15
24
|
title = 'Adaptive Layout',
|
|
16
25
|
description = 'Automatically adapts to different device types with optimal layouts',
|
|
@@ -22,7 +31,7 @@ export const AdaptiveLayout= ({
|
|
|
22
31
|
className = ''
|
|
23
32
|
}) => {
|
|
24
33
|
const [deviceType, setDeviceType] = useState<DeviceType>('desktop')
|
|
25
|
-
const [screenSize, setScreenSize] = useState({ width, height})
|
|
34
|
+
const [screenSize, setScreenSize] = useState({ width: 0, height: 0 })
|
|
26
35
|
const [orientation, setOrientation] = useState<'portrait' | 'landscape'>('landscape')
|
|
27
36
|
|
|
28
37
|
// Device detection and adaptation
|
|
@@ -32,7 +41,7 @@ export const AdaptiveLayout= ({
|
|
|
32
41
|
const height = window.innerHeight
|
|
33
42
|
|
|
34
43
|
setScreenSize({ width, height })
|
|
35
|
-
setOrientation(width > height ? 'landscape' )
|
|
44
|
+
setOrientation(width > height ? 'landscape' : 'portrait')
|
|
36
45
|
|
|
37
46
|
// Device type detection based on screen size
|
|
38
47
|
if (width < 768) {
|
|
@@ -65,7 +74,10 @@ export const AdaptiveLayout= ({
|
|
|
65
74
|
}
|
|
66
75
|
|
|
67
76
|
switch (deviceType) {
|
|
68
|
-
case 'mobile'
|
|
77
|
+
case 'mobile':
|
|
78
|
+
return (
|
|
79
|
+
<MobileLayout
|
|
80
|
+
{...commonProps}
|
|
69
81
|
showFooter={true}
|
|
70
82
|
enableTouchOptimization={enableTouchOptimization}
|
|
71
83
|
>
|
|
@@ -73,7 +85,10 @@ export const AdaptiveLayout= ({
|
|
|
73
85
|
</MobileLayout>
|
|
74
86
|
)
|
|
75
87
|
|
|
76
|
-
case 'tablet'
|
|
88
|
+
case 'tablet':
|
|
89
|
+
return (
|
|
90
|
+
<TabletLayout
|
|
91
|
+
{...commonProps}
|
|
77
92
|
showSidebar={showSidebar}
|
|
78
93
|
enableTouchOptimization={enableTouchOptimization}
|
|
79
94
|
>
|
|
@@ -81,7 +96,10 @@ export const AdaptiveLayout= ({
|
|
|
81
96
|
</TabletLayout>
|
|
82
97
|
)
|
|
83
98
|
|
|
84
|
-
case 'desktop'
|
|
99
|
+
case 'desktop':
|
|
100
|
+
return (
|
|
101
|
+
<DesktopLayout
|
|
102
|
+
{...commonProps}
|
|
85
103
|
showSidebar={showSidebar}
|
|
86
104
|
showTopBar={true}
|
|
87
105
|
enableAdvancedFeatures={enableAdvancedFeatures}
|
|
@@ -90,7 +108,8 @@ export const AdaptiveLayout= ({
|
|
|
90
108
|
</DesktopLayout>
|
|
91
109
|
)
|
|
92
110
|
|
|
93
|
-
default
|
|
111
|
+
default:
|
|
112
|
+
return <div>{children}</div>
|
|
94
113
|
}
|
|
95
114
|
}
|
|
96
115
|
|