@rakeyshgidwani/roger-ui-bank-theme-stan-design 0.2.10 → 0.2.16
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 +80 -258
- package/dist/components/ui/accessibility-demo.js +80 -258
- package/dist/components/ui/advanced-component-architecture-demo.esm.js +256 -916
- package/dist/components/ui/advanced-component-architecture-demo.js +256 -916
- package/dist/components/ui/advanced-transition-system-demo.esm.js +59 -670
- package/dist/components/ui/advanced-transition-system-demo.js +59 -670
- package/dist/components/ui/advanced-transition-system.esm.js +194 -378
- package/dist/components/ui/advanced-transition-system.js +194 -378
- package/dist/components/ui/animation/animated-container.esm.js +98 -159
- package/dist/components/ui/animation/animated-container.js +98 -159
- package/dist/components/ui/animation/index.esm.js +3 -18
- package/dist/components/ui/animation/index.js +3 -18
- package/dist/components/ui/animation/staggered-container.esm.js +37 -68
- package/dist/components/ui/animation/staggered-container.js +37 -68
- package/dist/components/ui/animation-demo.esm.js +30 -250
- package/dist/components/ui/animation-demo.js +30 -250
- package/dist/components/ui/badge.esm.js +15 -28
- package/dist/components/ui/badge.js +15 -28
- package/dist/components/ui/battery-conscious-animation-demo.esm.js +136 -565
- package/dist/components/ui/battery-conscious-animation-demo.js +136 -565
- package/dist/components/ui/border-radius-shadow-demo.esm.js +3 -184
- package/dist/components/ui/border-radius-shadow-demo.js +3 -184
- package/dist/components/ui/button.esm.js +14 -33
- package/dist/components/ui/button.js +14 -33
- package/dist/components/ui/card.esm.js +74 -188
- package/dist/components/ui/card.js +74 -188
- package/dist/components/ui/checkbox.esm.js +11 -30
- package/dist/components/ui/checkbox.js +11 -30
- package/dist/components/ui/color-preview.esm.js +50 -405
- package/dist/components/ui/color-preview.js +50 -405
- package/dist/components/ui/data-display/chart.esm.js +210 -632
- package/dist/components/ui/data-display/chart.js +210 -632
- package/dist/components/ui/data-display/data-grid-simple.esm.js +16 -74
- package/dist/components/ui/data-display/data-grid-simple.js +16 -74
- package/dist/components/ui/data-display/data-grid.esm.js +173 -661
- package/dist/components/ui/data-display/data-grid.js +173 -661
- package/dist/components/ui/data-display/list.esm.js +88 -446
- package/dist/components/ui/data-display/list.js +88 -446
- package/dist/components/ui/data-display/table.esm.js +109 -468
- package/dist/components/ui/data-display/table.js +109 -468
- package/dist/components/ui/data-display/timeline.esm.js +92 -431
- package/dist/components/ui/data-display/timeline.js +92 -431
- package/dist/components/ui/data-display/tree.esm.js +211 -585
- package/dist/components/ui/data-display/tree.js +211 -585
- package/dist/components/ui/data-display/types.esm.js +1 -530
- package/dist/components/ui/data-display/types.js +1 -530
- package/dist/components/ui/enterprise-mobile-experience-demo.esm.js +76 -749
- package/dist/components/ui/enterprise-mobile-experience-demo.js +76 -749
- package/dist/components/ui/enterprise-mobile-experience.esm.js +152 -460
- package/dist/components/ui/enterprise-mobile-experience.js +152 -460
- package/dist/components/ui/feedback/alert.esm.js +40 -148
- package/dist/components/ui/feedback/alert.js +40 -148
- package/dist/components/ui/feedback/progress.esm.js +74 -278
- package/dist/components/ui/feedback/progress.js +74 -278
- package/dist/components/ui/feedback/skeleton.esm.js +64 -173
- package/dist/components/ui/feedback/skeleton.js +64 -173
- package/dist/components/ui/feedback/toast.esm.js +86 -225
- package/dist/components/ui/feedback/toast.js +86 -225
- package/dist/components/ui/feedback/types.esm.js +1 -125
- package/dist/components/ui/feedback/types.js +1 -125
- package/dist/components/ui/font-preview.esm.js +56 -283
- package/dist/components/ui/font-preview.js +56 -283
- package/dist/components/ui/form-demo.esm.js +191 -553
- package/dist/components/ui/form-demo.js +191 -553
- package/dist/components/ui/hardware-acceleration-demo.esm.js +103 -544
- package/dist/components/ui/hardware-acceleration-demo.js +103 -544
- package/dist/components/ui/input.esm.js +13 -32
- package/dist/components/ui/input.js +13 -32
- package/dist/components/ui/label.esm.js +6 -16
- package/dist/components/ui/label.js +6 -16
- package/dist/components/ui/layout-demo.esm.js +76 -367
- package/dist/components/ui/layout-demo.js +76 -367
- package/dist/components/ui/layouts/adaptive-layout.esm.js +60 -139
- package/dist/components/ui/layouts/adaptive-layout.js +60 -139
- package/dist/components/ui/layouts/desktop-layout.esm.js +39 -224
- package/dist/components/ui/layouts/desktop-layout.js +39 -224
- package/dist/components/ui/layouts/index.esm.js +4 -10
- package/dist/components/ui/layouts/index.js +4 -10
- package/dist/components/ui/layouts/mobile-layout.esm.js +49 -162
- package/dist/components/ui/layouts/mobile-layout.js +49 -162
- package/dist/components/ui/layouts/tablet-layout.esm.js +53 -197
- package/dist/components/ui/layouts/tablet-layout.js +53 -197
- package/dist/components/ui/mobile-form-validation.esm.js +185 -420
- package/dist/components/ui/mobile-form-validation.js +185 -420
- package/dist/components/ui/mobile-input-demo.esm.js +11 -198
- package/dist/components/ui/mobile-input-demo.js +11 -198
- package/dist/components/ui/mobile-input.esm.js +187 -270
- package/dist/components/ui/mobile-input.js +187 -270
- package/dist/components/ui/mobile-skeleton-loading-demo.esm.js +144 -638
- package/dist/components/ui/mobile-skeleton-loading-demo.js +144 -638
- package/dist/components/ui/navigation/breadcrumb.esm.js +51 -154
- package/dist/components/ui/navigation/breadcrumb.js +51 -154
- package/dist/components/ui/navigation/index.esm.js +0 -26
- package/dist/components/ui/navigation/index.js +0 -26
- package/dist/components/ui/navigation/menu.esm.js +178 -365
- package/dist/components/ui/navigation/menu.js +178 -365
- package/dist/components/ui/navigation/navigation-demo.esm.js +130 -315
- package/dist/components/ui/navigation/navigation-demo.js +130 -315
- package/dist/components/ui/navigation/pagination.esm.js +142 -264
- package/dist/components/ui/navigation/pagination.js +142 -264
- package/dist/components/ui/navigation/sidebar.esm.js +156 -368
- package/dist/components/ui/navigation/sidebar.js +156 -368
- package/dist/components/ui/navigation/stepper.esm.js +131 -295
- package/dist/components/ui/navigation/stepper.js +131 -295
- package/dist/components/ui/navigation/tabs.esm.js +89 -198
- package/dist/components/ui/navigation/tabs.js +89 -198
- package/dist/components/ui/navigation/types.esm.js +1 -295
- package/dist/components/ui/navigation/types.js +1 -295
- package/dist/components/ui/overlay/backdrop.esm.js +39 -78
- package/dist/components/ui/overlay/backdrop.js +39 -78
- package/dist/components/ui/overlay/focus-manager.esm.js +96 -140
- package/dist/components/ui/overlay/focus-manager.js +96 -140
- package/dist/components/ui/overlay/index.esm.js +0 -27
- package/dist/components/ui/overlay/index.js +0 -27
- package/dist/components/ui/overlay/modal.esm.js +94 -249
- package/dist/components/ui/overlay/modal.js +94 -249
- package/dist/components/ui/overlay/overlay-manager.esm.js +60 -100
- package/dist/components/ui/overlay/overlay-manager.js +60 -100
- package/dist/components/ui/overlay/popover.esm.js +258 -438
- package/dist/components/ui/overlay/popover.js +258 -438
- package/dist/components/ui/overlay/portal.esm.js +45 -74
- package/dist/components/ui/overlay/portal.js +45 -74
- package/dist/components/ui/overlay/tooltip.esm.js +202 -288
- package/dist/components/ui/overlay/tooltip.js +202 -288
- package/dist/components/ui/overlay/types.esm.js +1 -196
- package/dist/components/ui/overlay/types.js +1 -196
- package/dist/components/ui/performance-demo.esm.js +110 -596
- package/dist/components/ui/performance-demo.js +110 -596
- package/dist/components/ui/semantic-input-system-demo.esm.js +87 -501
- package/dist/components/ui/semantic-input-system-demo.js +87 -501
- package/dist/components/ui/theme-customizer.esm.js +123 -371
- package/dist/components/ui/theme-customizer.js +123 -371
- package/dist/components/ui/theme-preview.esm.js +44 -306
- package/dist/components/ui/theme-preview.js +44 -306
- package/dist/components/ui/theme-switcher.esm.js +79 -258
- package/dist/components/ui/theme-switcher.js +79 -258
- package/dist/components/ui/theme-toggle.esm.js +22 -35
- package/dist/components/ui/theme-toggle.js +22 -35
- package/dist/components/ui/token-demo.esm.js +42 -189
- package/dist/components/ui/token-demo.js +42 -189
- package/dist/components/ui/touch-demo.esm.js +96 -462
- package/dist/components/ui/touch-demo.js +96 -462
- package/dist/components/ui/touch-friendly-interface-demo.esm.js +63 -519
- package/dist/components/ui/touch-friendly-interface-demo.js +63 -519
- package/dist/components/ui/touch-friendly-interface.esm.js +103 -281
- package/dist/components/ui/touch-friendly-interface.js +103 -281
- package/dist/hooks/index.esm.js +23 -181
- package/dist/hooks/index.js +23 -181
- package/dist/hooks/use-accessibility-support.esm.js +377 -518
- package/dist/hooks/use-accessibility-support.js +377 -518
- package/dist/hooks/use-adaptive-layout.esm.js +212 -287
- package/dist/hooks/use-adaptive-layout.js +212 -287
- package/dist/hooks/use-advanced-patterns.esm.js +185 -293
- package/dist/hooks/use-advanced-patterns.js +185 -293
- package/dist/hooks/use-advanced-transition-system.esm.js +286 -392
- package/dist/hooks/use-advanced-transition-system.js +286 -392
- package/dist/hooks/use-animation-profile.esm.js +221 -283
- package/dist/hooks/use-animation-profile.js +221 -283
- package/dist/hooks/use-battery-animations.esm.js +310 -384
- package/dist/hooks/use-battery-animations.js +310 -384
- package/dist/hooks/use-battery-conscious-loading.esm.js +374 -468
- package/dist/hooks/use-battery-conscious-loading.js +374 -468
- package/dist/hooks/use-battery-optimization.esm.js +267 -329
- package/dist/hooks/use-battery-optimization.js +267 -329
- package/dist/hooks/use-battery-status.esm.js +213 -293
- package/dist/hooks/use-battery-status.js +213 -293
- package/dist/hooks/use-component-performance.esm.js +235 -341
- package/dist/hooks/use-component-performance.js +235 -341
- package/dist/hooks/use-device-loading-states.esm.js +356 -457
- package/dist/hooks/use-device-loading-states.js +356 -457
- package/dist/hooks/use-device.esm.js +77 -102
- package/dist/hooks/use-device.js +77 -102
- package/dist/hooks/use-enterprise-mobile-experience.esm.js +349 -487
- package/dist/hooks/use-enterprise-mobile-experience.js +349 -487
- package/dist/hooks/use-form-feedback.esm.js +313 -398
- package/dist/hooks/use-form-feedback.js +313 -398
- package/dist/hooks/use-form-performance.esm.js +407 -500
- package/dist/hooks/use-form-performance.js +407 -500
- package/dist/hooks/use-frame-rate.esm.js +178 -251
- package/dist/hooks/use-frame-rate.js +178 -251
- package/dist/hooks/use-gestures.esm.js +230 -332
- package/dist/hooks/use-gestures.js +230 -332
- package/dist/hooks/use-hardware-acceleration.esm.js +246 -339
- package/dist/hooks/use-hardware-acceleration.js +246 -339
- package/dist/hooks/use-input-accessibility.esm.js +350 -454
- package/dist/hooks/use-input-accessibility.js +350 -454
- package/dist/hooks/use-input-performance.esm.js +419 -502
- package/dist/hooks/use-input-performance.js +419 -502
- package/dist/hooks/use-layout-performance.esm.js +233 -319
- package/dist/hooks/use-layout-performance.js +233 -319
- package/dist/hooks/use-loading-accessibility.esm.js +421 -531
- package/dist/hooks/use-loading-accessibility.js +421 -531
- package/dist/hooks/use-loading-performance.esm.js +398 -469
- package/dist/hooks/use-loading-performance.js +398 -469
- package/dist/hooks/use-memory-usage.esm.js +211 -287
- package/dist/hooks/use-memory-usage.js +211 -287
- package/dist/hooks/use-mobile-form-layout.esm.js +365 -458
- package/dist/hooks/use-mobile-form-layout.js +365 -458
- package/dist/hooks/use-mobile-form-validation.esm.js +384 -497
- package/dist/hooks/use-mobile-form-validation.js +384 -497
- package/dist/hooks/use-mobile-keyboard-optimization.esm.js +354 -468
- package/dist/hooks/use-mobile-keyboard-optimization.js +354 -468
- package/dist/hooks/use-mobile-layout.esm.js +207 -294
- package/dist/hooks/use-mobile-layout.js +207 -294
- package/dist/hooks/use-mobile-optimization.esm.js +308 -404
- package/dist/hooks/use-mobile-optimization.js +308 -404
- package/dist/hooks/use-mobile-skeleton.esm.js +300 -402
- package/dist/hooks/use-mobile-skeleton.js +300 -402
- package/dist/hooks/use-mobile-touch.esm.js +314 -412
- package/dist/hooks/use-mobile-touch.js +314 -412
- package/dist/hooks/use-performance-throttling.esm.js +276 -344
- package/dist/hooks/use-performance-throttling.js +276 -344
- package/dist/hooks/use-performance.esm.js +216 -313
- package/dist/hooks/use-performance.js +216 -313
- package/dist/hooks/use-reusable-architecture.esm.js +255 -408
- package/dist/hooks/use-reusable-architecture.js +255 -408
- package/dist/hooks/use-semantic-input-types.esm.js +290 -356
- package/dist/hooks/use-semantic-input-types.js +290 -356
- package/dist/hooks/use-semantic-input.esm.js +446 -549
- package/dist/hooks/use-semantic-input.js +446 -549
- package/dist/hooks/use-tablet-layout.esm.js +279 -384
- package/dist/hooks/use-tablet-layout.js +279 -384
- package/dist/hooks/use-touch-friendly-input.esm.js +401 -519
- package/dist/hooks/use-touch-friendly-input.js +401 -519
- package/dist/hooks/use-touch-friendly-interface.esm.js +242 -331
- package/dist/hooks/use-touch-friendly-interface.js +242 -331
- package/dist/hooks/use-touch-optimization.esm.js +288 -370
- package/dist/hooks/use-touch-optimization.js +288 -370
- package/dist/index.esm.js +150 -294
- package/dist/index.js +150 -294
- package/dist/lib/utils.esm.js +4 -5
- package/dist/lib/utils.js +4 -5
- package/dist/plugins/theme-css-generator.esm.js +292 -346
- package/dist/plugins/theme-css-generator.js +292 -346
- package/dist/provider.esm.js +3 -19
- package/dist/provider.js +3 -19
- package/dist/styles/layers/validation.esm.js +275 -0
- package/dist/styles/layers/validation.js +275 -0
- package/dist/styles.css +1 -1
- package/dist/theme.esm.js +654 -658
- package/dist/theme.js +654 -658
- package/dist/themes/ThemeContext.esm.js +1 -27
- package/dist/themes/ThemeContext.js +1 -27
- package/dist/themes/ThemeProvider.esm.js +191 -223
- package/dist/themes/ThemeProvider.js +191 -223
- package/dist/themes/accessibility/index.esm.js +0 -4
- package/dist/themes/accessibility/index.js +0 -4
- package/dist/themes/accessibility.esm.js +175 -240
- package/dist/themes/accessibility.js +175 -240
- package/dist/themes/aria-patterns.esm.js +345 -401
- package/dist/themes/aria-patterns.js +345 -401
- package/dist/themes/base-themes.esm.js +15 -24
- package/dist/themes/base-themes.js +15 -24
- package/dist/themes/colorManager.esm.js +293 -357
- package/dist/themes/colorManager.js +293 -357
- package/dist/themes/examples/dark-theme.esm.js +129 -133
- package/dist/themes/examples/dark-theme.js +129 -133
- package/dist/themes/examples/minimal-theme.esm.js +80 -85
- package/dist/themes/examples/minimal-theme.js +80 -85
- package/dist/themes/focus-management.esm.js +541 -677
- package/dist/themes/focus-management.js +541 -677
- package/dist/themes/fontLoader.esm.js +151 -180
- package/dist/themes/fontLoader.js +151 -180
- package/dist/themes/high-contrast.esm.js +394 -558
- package/dist/themes/high-contrast.js +394 -558
- package/dist/themes/index.esm.js +1 -9
- package/dist/themes/index.js +1 -9
- package/dist/themes/inheritance.esm.js +145 -180
- package/dist/themes/inheritance.js +145 -180
- package/dist/themes/keyboard-navigation.esm.js +418 -510
- package/dist/themes/keyboard-navigation.js +418 -510
- package/dist/themes/motion-reduction.esm.js +434 -591
- package/dist/themes/motion-reduction.js +434 -591
- package/dist/themes/navigation.esm.js +1 -234
- package/dist/themes/navigation.js +1 -234
- package/dist/themes/screen-reader.esm.js +515 -616
- package/dist/themes/screen-reader.js +515 -616
- package/dist/themes/systemThemeDetector.esm.js +135 -164
- package/dist/themes/systemThemeDetector.js +135 -164
- package/dist/themes/themeCSSUpdater.esm.js +217 -252
- package/dist/themes/themeCSSUpdater.js +217 -252
- package/dist/themes/themePersistence.esm.js +181 -212
- package/dist/themes/themePersistence.js +181 -212
- package/dist/themes/themes/default.esm.js +584 -0
- package/dist/themes/themes/default.js +584 -0
- package/dist/themes/themes/harvey.esm.js +551 -0
- package/dist/themes/themes/harvey.js +551 -0
- package/dist/themes/themes/stan-design.esm.js +654 -658
- package/dist/themes/themes/stan-design.js +654 -658
- package/dist/themes/types.esm.js +1 -458
- package/dist/themes/types.js +1 -458
- package/dist/themes/useSystemTheme.esm.js +34 -42
- package/dist/themes/useSystemTheme.js +34 -42
- package/dist/themes/useTheme.esm.js +23 -28
- package/dist/themes/useTheme.js +23 -28
- package/dist/themes/validation.esm.js +380 -433
- package/dist/themes/validation.js +380 -433
- package/dist/tokens/index.esm.js +2 -25
- package/dist/tokens/index.js +2 -25
- package/dist/tokens/tokenExporter.esm.js +309 -373
- package/dist/tokens/tokenExporter.js +309 -373
- package/dist/tokens/tokenGenerator.esm.js +241 -273
- package/dist/tokens/tokenGenerator.js +241 -273
- package/dist/tokens/tokenManager.esm.js +187 -241
- package/dist/tokens/tokenManager.js +187 -241
- package/dist/tokens/tokenValidator.esm.js +402 -522
- package/dist/tokens/tokenValidator.js +402 -522
- package/dist/tokens/types.esm.js +1 -78
- package/dist/tokens/types.js +1 -78
- package/dist/types.esm.js +3 -0
- package/dist/types.js +3 -0
- package/dist/utils/bundle-analyzer.esm.js +188 -246
- package/dist/utils/bundle-analyzer.js +188 -246
- package/dist/utils/bundle-splitting.esm.js +330 -458
- package/dist/utils/bundle-splitting.js +330 -458
- package/dist/utils/lazy-loading.esm.js +311 -417
- package/dist/utils/lazy-loading.js +311 -417
- package/dist/utils/performance-monitor.esm.js +369 -490
- package/dist/utils/performance-monitor.js +369 -490
- package/dist/utils/tree-shaking.esm.js +194 -264
- package/dist/utils/tree-shaking.js +194 -264
- package/package.json +18 -2
- package/src/index.ts +150 -149
- package/src/provider.tsx +3 -3
- package/src/theme.ts +1 -1
- package/{dist/theme.d.ts → src/themes/themes/default.ts} +77 -169
- package/src/themes/themes/harvey.ts +554 -0
- package/{dist/themes/types.d.ts → src/types.ts} +7 -1
- package/dist/components/ui/accessibility-demo.d.ts +0 -259
- package/dist/components/ui/advanced-component-architecture-demo.d.ts +0 -718
- package/dist/components/ui/advanced-transition-system-demo.d.ts +0 -660
- package/dist/components/ui/advanced-transition-system.d.ts +0 -391
- package/dist/components/ui/animation/animated-container.d.ts +0 -162
- package/dist/components/ui/animation/index.d.ts +0 -9
- package/dist/components/ui/animation/staggered-container.d.ts +0 -64
- package/dist/components/ui/animation-demo.d.ts +0 -238
- package/dist/components/ui/badge.d.ts +0 -28
- package/dist/components/ui/battery-conscious-animation-demo.d.ts +0 -561
- package/dist/components/ui/border-radius-shadow-demo.d.ts +0 -183
- package/dist/components/ui/button.d.ts +0 -33
- package/dist/components/ui/card.d.ts +0 -205
- package/dist/components/ui/checkbox.d.ts +0 -26
- package/dist/components/ui/color-preview.d.ts +0 -402
- package/dist/components/ui/data-display/chart.d.ts +0 -646
- package/dist/components/ui/data-display/data-grid-simple.d.ts +0 -73
- package/dist/components/ui/data-display/data-grid.d.ts +0 -670
- package/dist/components/ui/data-display/list.d.ts +0 -448
- package/dist/components/ui/data-display/table.d.ts +0 -472
- package/dist/components/ui/data-display/timeline.d.ts +0 -433
- package/dist/components/ui/data-display/tree.d.ts +0 -594
- package/dist/components/ui/data-display/types.d.ts +0 -534
- package/dist/components/ui/enterprise-mobile-experience-demo.d.ts +0 -735
- package/dist/components/ui/enterprise-mobile-experience.d.ts +0 -461
- package/dist/components/ui/feedback/alert.d.ts +0 -154
- package/dist/components/ui/feedback/progress.d.ts +0 -288
- package/dist/components/ui/feedback/skeleton.d.ts +0 -182
- package/dist/components/ui/feedback/toast.d.ts +0 -277
- package/dist/components/ui/feedback/types.d.ts +0 -123
- package/dist/components/ui/font-preview.d.ts +0 -282
- package/dist/components/ui/form-demo.d.ts +0 -544
- package/dist/components/ui/hardware-acceleration-demo.d.ts +0 -540
- package/dist/components/ui/input.d.ts +0 -33
- package/dist/components/ui/label.d.ts +0 -13
- package/dist/components/ui/layout-demo.d.ts +0 -352
- package/dist/components/ui/layouts/adaptive-layout.d.ts +0 -132
- package/dist/components/ui/layouts/desktop-layout.d.ts +0 -219
- package/dist/components/ui/layouts/index.d.ts +0 -5
- package/dist/components/ui/layouts/mobile-layout.d.ts +0 -158
- package/dist/components/ui/layouts/tablet-layout.d.ts +0 -192
- package/dist/components/ui/mobile-form-validation.d.ts +0 -439
- package/dist/components/ui/mobile-input-demo.d.ts +0 -197
- package/dist/components/ui/mobile-input.d.ts +0 -273
- package/dist/components/ui/mobile-skeleton-loading-demo.d.ts +0 -628
- package/dist/components/ui/navigation/breadcrumb.d.ts +0 -149
- package/dist/components/ui/navigation/index.d.ts +0 -25
- package/dist/components/ui/navigation/menu.d.ts +0 -366
- package/dist/components/ui/navigation/navigation-demo.d.ts +0 -169
- package/dist/components/ui/navigation/pagination.d.ts +0 -261
- package/dist/components/ui/navigation/sidebar.d.ts +0 -375
- package/dist/components/ui/navigation/stepper.d.ts +0 -294
- package/dist/components/ui/navigation/tabs.d.ts +0 -196
- package/dist/components/ui/navigation/types.d.ts +0 -293
- package/dist/components/ui/overlay/backdrop.d.ts +0 -79
- package/dist/components/ui/overlay/focus-manager.d.ts +0 -141
- package/dist/components/ui/overlay/index.d.ts +0 -27
- package/dist/components/ui/overlay/modal.d.ts +0 -262
- package/dist/components/ui/overlay/overlay-manager.d.ts +0 -107
- package/dist/components/ui/overlay/popover.d.ts +0 -450
- package/dist/components/ui/overlay/portal.d.ts +0 -75
- package/dist/components/ui/overlay/tooltip.d.ts +0 -298
- package/dist/components/ui/overlay/types.d.ts +0 -194
- package/dist/components/ui/performance-demo.d.ts +0 -583
- package/dist/components/ui/semantic-input-system-demo.d.ts +0 -490
- package/dist/components/ui/theme-customizer.d.ts +0 -378
- package/dist/components/ui/theme-preview.d.ts +0 -305
- package/dist/components/ui/theme-switcher.d.ts +0 -259
- package/dist/components/ui/theme-toggle.d.ts +0 -34
- package/dist/components/ui/token-demo.d.ts +0 -188
- package/dist/components/ui/touch-demo.d.ts +0 -455
- package/dist/components/ui/touch-friendly-interface-demo.d.ts +0 -512
- package/dist/components/ui/touch-friendly-interface.d.ts +0 -292
- package/dist/hooks/index.d.ts +0 -161
- package/dist/hooks/use-accessibility-support.d.ts +0 -516
- package/dist/hooks/use-adaptive-layout.d.ts +0 -287
- package/dist/hooks/use-advanced-patterns.d.ts +0 -292
- package/dist/hooks/use-advanced-transition-system.d.ts +0 -390
- package/dist/hooks/use-animation-profile.d.ts +0 -285
- package/dist/hooks/use-battery-animations.d.ts +0 -382
- package/dist/hooks/use-battery-conscious-loading.d.ts +0 -473
- package/dist/hooks/use-battery-optimization.d.ts +0 -328
- package/dist/hooks/use-battery-status.d.ts +0 -297
- package/dist/hooks/use-component-performance.d.ts +0 -342
- package/dist/hooks/use-device-loading-states.d.ts +0 -456
- package/dist/hooks/use-device.d.ts +0 -104
- package/dist/hooks/use-enterprise-mobile-experience.d.ts +0 -486
- package/dist/hooks/use-form-feedback.d.ts +0 -401
- package/dist/hooks/use-form-performance.d.ts +0 -511
- package/dist/hooks/use-frame-rate.d.ts +0 -249
- package/dist/hooks/use-gestures.d.ts +0 -336
- package/dist/hooks/use-hardware-acceleration.d.ts +0 -339
- package/dist/hooks/use-input-accessibility.d.ts +0 -451
- package/dist/hooks/use-input-performance.d.ts +0 -503
- package/dist/hooks/use-layout-performance.d.ts +0 -317
- package/dist/hooks/use-loading-accessibility.d.ts +0 -532
- package/dist/hooks/use-loading-performance.d.ts +0 -471
- package/dist/hooks/use-memory-usage.d.ts +0 -285
- package/dist/hooks/use-mobile-form-layout.d.ts +0 -462
- package/dist/hooks/use-mobile-form-validation.d.ts +0 -516
- package/dist/hooks/use-mobile-keyboard-optimization.d.ts +0 -469
- package/dist/hooks/use-mobile-layout.d.ts +0 -300
- package/dist/hooks/use-mobile-optimization.d.ts +0 -404
- package/dist/hooks/use-mobile-skeleton.d.ts +0 -399
- package/dist/hooks/use-mobile-touch.d.ts +0 -412
- package/dist/hooks/use-performance-throttling.d.ts +0 -346
- package/dist/hooks/use-performance.d.ts +0 -314
- package/dist/hooks/use-reusable-architecture.d.ts +0 -412
- package/dist/hooks/use-semantic-input-types.d.ts +0 -354
- package/dist/hooks/use-semantic-input.d.ts +0 -563
- package/dist/hooks/use-tablet-layout.d.ts +0 -382
- package/dist/hooks/use-touch-friendly-input.d.ts +0 -520
- package/dist/hooks/use-touch-friendly-interface.d.ts +0 -329
- package/dist/hooks/use-touch-optimization.d.ts +0 -373
- package/dist/index.d.ts +0 -149
- package/dist/lib/utils.d.ts +0 -3
- package/dist/plugins/theme-css-generator.d.ts +0 -345
- package/dist/provider.d.ts +0 -17
- package/dist/themes/ThemeContext.d.ts +0 -27
- package/dist/themes/ThemeProvider.d.ts +0 -222
- package/dist/themes/accessibility/index.d.ts +0 -7
- package/dist/themes/accessibility.d.ts +0 -259
- package/dist/themes/aria-patterns.d.ts +0 -418
- package/dist/themes/base-themes.d.ts +0 -34
- package/dist/themes/colorManager.d.ts +0 -327
- package/dist/themes/examples/dark-theme.d.ts +0 -139
- package/dist/themes/examples/minimal-theme.d.ts +0 -93
- package/dist/themes/focus-management.d.ts +0 -699
- package/dist/themes/fontLoader.d.ts +0 -163
- package/dist/themes/high-contrast.d.ts +0 -619
- package/dist/themes/index.d.ts +0 -11
- package/dist/themes/inheritance.d.ts +0 -160
- package/dist/themes/keyboard-navigation.d.ts +0 -550
- package/dist/themes/motion-reduction.d.ts +0 -660
- package/dist/themes/navigation.d.ts +0 -232
- package/dist/themes/screen-reader.d.ts +0 -645
- package/dist/themes/systemThemeDetector.d.ts +0 -148
- package/dist/themes/themeCSSUpdater.d.ts +0 -229
- package/dist/themes/themePersistence.d.ts +0 -192
- package/dist/themes/themes/stan-design.d.ts +0 -678
- package/dist/themes/useSystemTheme.d.ts +0 -43
- package/dist/themes/useTheme.d.ts +0 -20
- package/dist/themes/validation.d.ts +0 -406
- package/dist/tokens/index.d.ts +0 -25
- package/dist/tokens/tokenExporter.d.ts +0 -336
- package/dist/tokens/tokenGenerator.d.ts +0 -250
- package/dist/tokens/tokenManager.d.ts +0 -194
- package/dist/tokens/tokenValidator.d.ts +0 -488
- package/dist/tokens/types.d.ts +0 -78
- package/dist/utils/bundle-analyzer.d.ts +0 -260
- package/dist/utils/bundle-splitting.d.ts +0 -483
- package/dist/utils/lazy-loading.d.ts +0 -437
- package/dist/utils/performance-monitor.d.ts +0 -513
- package/dist/utils/tree-shaking.d.ts +0 -274
|
@@ -1,519 +1,63 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
|
|
8
|
-
export const TouchFriendlyInterfaceDemo
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
</Button>
|
|
65
|
-
</div>
|
|
66
|
-
</div>
|
|
67
|
-
|
|
68
|
-
<div className="space-y-4">
|
|
69
|
-
<h3 className="text-lg font-semibold text-cs-text-primary">Touch-Friendly Inputs</h3>
|
|
70
|
-
|
|
71
|
-
<div className="space-y-3">
|
|
72
|
-
<Input
|
|
73
|
-
placeholder="Small Input (44px)"
|
|
74
|
-
value={formData.name}
|
|
75
|
-
onChange={(e) => handleInputChange('name', e.target.value)}
|
|
76
|
-
className="touch-target touch-friendly-input touch-interaction touch-performance min-h-[44px] min-w-[44px] px-3 py-2 text-sm"
|
|
77
|
-
/>
|
|
78
|
-
|
|
79
|
-
<Input
|
|
80
|
-
placeholder="Default Input (48px)"
|
|
81
|
-
value={formData.email}
|
|
82
|
-
onChange={(e) => handleInputChange('email', e.target.value)}
|
|
83
|
-
className="touch-target touch-friendly-input touch-interaction touch-performance min-h-[48px] min-w-[48px] px-4 py-3 text-base"
|
|
84
|
-
/>
|
|
85
|
-
|
|
86
|
-
<Input
|
|
87
|
-
placeholder="Large Input (56px)"
|
|
88
|
-
value={formData.message}
|
|
89
|
-
onChange={(e) => handleInputChange('message', e.target.value)}
|
|
90
|
-
className="touch-target touch-friendly-input touch-interaction touch-performance min-h-[56px] min-w-[56px] px-6 py-4 text-lg"
|
|
91
|
-
/>
|
|
92
|
-
</div>
|
|
93
|
-
</div>
|
|
94
|
-
</div>
|
|
95
|
-
|
|
96
|
-
<div className="grid grid-cols-1 md:grid-cols-2 gap-6">
|
|
97
|
-
<div className="space-y-4">
|
|
98
|
-
<h3 className="text-lg font-semibold text-cs-text-primary">Interactive Cards</h3>
|
|
99
|
-
|
|
100
|
-
<div className="space-y-3">
|
|
101
|
-
<Card className="touch-target touch-friendly-card touch-interaction touch-performance touch-feedback min-h-[44px] min-w-[44px] p-3 cursor-pointer">
|
|
102
|
-
<CardContent className="text-center">
|
|
103
|
-
<div className="text-lg font-semibold">Small Card</div>
|
|
104
|
-
<div className="text-sm text-cs-text-secondary">44px target</div>
|
|
105
|
-
</CardContent>
|
|
106
|
-
</Card>
|
|
107
|
-
|
|
108
|
-
<Card className="touch-target touch-friendly-card touch-interaction touch-performance touch-ripple min-h-[48px] min-w-[48px] p-4 cursor-pointer">
|
|
109
|
-
<CardContent className="text-center">
|
|
110
|
-
<div className="text-lg font-semibold">Default Card</div>
|
|
111
|
-
<div className="text-sm text-cs-text-secondary">48px target</div>
|
|
112
|
-
</CardContent>
|
|
113
|
-
</Card>
|
|
114
|
-
|
|
115
|
-
<Card className="touch-target touch-friendly-card touch-interaction touch-performance touch-state-hover touch-state-active min-h-[56px] min-w-[56px] p-6 cursor-pointer">
|
|
116
|
-
<CardContent className="text-center">
|
|
117
|
-
<div className="text-lg font-semibold">Large Card</div>
|
|
118
|
-
<div className="text-sm text-cs-text-secondary">56px target</div>
|
|
119
|
-
</CardContent>
|
|
120
|
-
</Card>
|
|
121
|
-
</div>
|
|
122
|
-
</div>
|
|
123
|
-
|
|
124
|
-
<div className="space-y-4">
|
|
125
|
-
<h3 className="text-lg font-semibold text-cs-text-primary">Form Controls</h3>
|
|
126
|
-
|
|
127
|
-
<div className="space-y-4">
|
|
128
|
-
<div className="flex items-center space-x-3">
|
|
129
|
-
<button
|
|
130
|
-
type="button"
|
|
131
|
-
role="switch"
|
|
132
|
-
aria-checked={toggleState}
|
|
133
|
-
onClick={() => setToggleState(!toggleState)}
|
|
134
|
-
className="touch-target touch-interaction touch-performance touch-feedback relative inline-flex items-center justify-center rounded-full transition-colors min-h-[48px] min-w-[48px] focus:outline-none focus:ring-2 focus:ring-cs-primary focus:ring-offset-2"
|
|
135
|
-
style={{
|
|
136
|
-
backgroundColor: toggleState ? 'var(--cs-primary)' : 'var(--cs-border)'
|
|
137
|
-
}}
|
|
138
|
-
>
|
|
139
|
-
<span
|
|
140
|
-
className="inline-block rounded-full bg-white shadow transform transition-transform w-6 h-6"
|
|
141
|
-
style={{
|
|
142
|
-
transform: toggleState ? 'translateX(24px)' : 'translateX(0)'
|
|
143
|
-
}}
|
|
144
|
-
/>
|
|
145
|
-
</button>
|
|
146
|
-
<span className="text-sm">Toggle Switch</span>
|
|
147
|
-
</div>
|
|
148
|
-
|
|
149
|
-
<div className="space-y-2">
|
|
150
|
-
<label className="text-sm font-medium">Slider Value: {sliderValue}</label>
|
|
151
|
-
<input
|
|
152
|
-
type="range"
|
|
153
|
-
value={sliderValue}
|
|
154
|
-
onChange={(e) => setSliderValue(Number(e.target.value))}
|
|
155
|
-
min={0}
|
|
156
|
-
max={100}
|
|
157
|
-
step={1}
|
|
158
|
-
className="touch-target touch-interaction touch-performance touch-feedback w-full h-2 bg-cs-border rounded-lg appearance-none cursor-pointer focus:outline-none focus:ring-2 focus:ring-cs-primary min-h-[48px]"
|
|
159
|
-
/>
|
|
160
|
-
</div>
|
|
161
|
-
</div>
|
|
162
|
-
</div>
|
|
163
|
-
</div>
|
|
164
|
-
</div>
|
|
165
|
-
)
|
|
166
|
-
|
|
167
|
-
const renderTouchInteractionsDemo = () => (
|
|
168
|
-
<div className="space-y-6">
|
|
169
|
-
<div className="grid grid-cols-1 md:grid-cols-2 gap-6">
|
|
170
|
-
<div className="space-y-4">
|
|
171
|
-
<h3 className="text-lg font-semibold text-cs-text-primary">Touch State</h3>
|
|
172
|
-
|
|
173
|
-
<div className="space-y-3">
|
|
174
|
-
<div className="p-4 bg-cs-surface-bg rounded-lg border border-cs-border">
|
|
175
|
-
<div className="grid grid-cols-2 gap-4 text-sm">
|
|
176
|
-
<div>
|
|
177
|
-
<span className="font-medium">Touching:</span>
|
|
178
|
-
<span className={`ml-2 ${touchInteractionState.isTouching ? 'text-cs-success' : 'text-cs-text-secondary'}`}>
|
|
179
|
-
{touchInteractionState.isTouching ? 'Yes' : 'No'}
|
|
180
|
-
</span>
|
|
181
|
-
</div>
|
|
182
|
-
<div>
|
|
183
|
-
<span className="font-medium">Touch Count:</span>
|
|
184
|
-
<span className="ml-2 text-cs-text-primary">{touchInteractionState.touchCount}</span>
|
|
185
|
-
</div>
|
|
186
|
-
<div>
|
|
187
|
-
<span className="font-medium">Duration:</span>
|
|
188
|
-
<span className="ml-2 text-cs-text-primary">{touchInteractionState.touchDuration.toFixed(0)}ms</span>
|
|
189
|
-
</div>
|
|
190
|
-
<div>
|
|
191
|
-
<span className="font-medium">Velocity:</span>
|
|
192
|
-
<span className="ml-2 text-cs-text-primary">{touchInteractionState.touchVelocity.toFixed(2)}px/ms</span>
|
|
193
|
-
</div>
|
|
194
|
-
</div>
|
|
195
|
-
</div>
|
|
196
|
-
</div>
|
|
197
|
-
</div>
|
|
198
|
-
|
|
199
|
-
<div className="space-y-4">
|
|
200
|
-
<h3 className="text-lg font-semibold text-cs-text-primary">Gesture Detection</h3>
|
|
201
|
-
|
|
202
|
-
<div className="space-y-3">
|
|
203
|
-
<div className="p-4 bg-cs-surface-bg rounded-lg border border-cs-border">
|
|
204
|
-
<div className="text-center">
|
|
205
|
-
<div className="text-2xl font-bold text-cs-primary mb-2">
|
|
206
|
-
{touchInteractionState.gestureType === 'none' ? '👆' :
|
|
207
|
-
touchInteractionState.gestureType === 'tap' ? '👆' :
|
|
208
|
-
touchInteractionState.gestureType === 'double-tap' ? '👆👆' :
|
|
209
|
-
touchInteractionState.gestureType === 'long-press' ? '⏰' :
|
|
210
|
-
touchInteractionState.gestureType === 'swipe' ? '👈👉' : '🤏'}
|
|
211
|
-
</div>
|
|
212
|
-
<div className="text-lg font-semibold capitalize">
|
|
213
|
-
{touchInteractionState.gestureType.replace('-', ' ')}
|
|
214
|
-
</div>
|
|
215
|
-
<div className="text-sm text-cs-text-secondary">
|
|
216
|
-
{touchInteractionState.gestureType === 'none' ? 'Touch to detect gesture' :
|
|
217
|
-
touchInteractionState.gestureType === 'tap' ? 'Quick touch detected' :
|
|
218
|
-
touchInteractionState.gestureType === 'double-tap' ? 'Double touch detected' :
|
|
219
|
-
touchInteractionState.gestureType === 'long-press' ? 'Long press detected' :
|
|
220
|
-
touchInteractionState.gestureType === 'swipe' ? 'Swipe gesture detected' : 'Pinch detected'}
|
|
221
|
-
</div>
|
|
222
|
-
</div>
|
|
223
|
-
</div>
|
|
224
|
-
</div>
|
|
225
|
-
</div>
|
|
226
|
-
</div>
|
|
227
|
-
|
|
228
|
-
<div className="space-y-4">
|
|
229
|
-
<h3 className="text-lg font-semibold text-cs-text-primary">Touch Coordinates</h3>
|
|
230
|
-
|
|
231
|
-
<div className="grid grid-cols-1 md:grid-cols-2 gap-4">
|
|
232
|
-
<div className="p-4 bg-cs-surface-bg rounded-lg border border-cs-border">
|
|
233
|
-
<h4 className="font-medium mb-2">Start Position</h4>
|
|
234
|
-
<div className="text-sm space-y-1">
|
|
235
|
-
<div>X: {touchInteractionState.touchStartX}px</div>
|
|
236
|
-
<div>Y: {touchInteractionState.touchStartY}px</div>
|
|
237
|
-
</div>
|
|
238
|
-
</div>
|
|
239
|
-
|
|
240
|
-
<div className="p-4 bg-cs-surface-bg rounded-lg border border-cs-border">
|
|
241
|
-
<h4 className="font-medium mb-2">Current Position</h4>
|
|
242
|
-
<div className="text-sm space-y-1">
|
|
243
|
-
<div>X: {touchInteractionState.touchCurrentX}px</div>
|
|
244
|
-
<div>Y: {touchInteractionState.touchCurrentY}px</div>
|
|
245
|
-
</div>
|
|
246
|
-
</div>
|
|
247
|
-
</div>
|
|
248
|
-
</div>
|
|
249
|
-
</div>
|
|
250
|
-
)
|
|
251
|
-
|
|
252
|
-
const renderPerformanceDemo = () => (
|
|
253
|
-
<div className="space-y-6">
|
|
254
|
-
<div className="grid grid-cols-1 md:grid-cols-2 gap-6">
|
|
255
|
-
<div className="space-y-4">
|
|
256
|
-
<h3 className="text-lg font-semibold text-cs-text-primary">Performance Metrics</h3>
|
|
257
|
-
|
|
258
|
-
<div className="space-y-3">
|
|
259
|
-
<div className="p-4 bg-cs-surface-bg rounded-lg border border-cs-border">
|
|
260
|
-
<div className="space-y-3">
|
|
261
|
-
<div className="flex justify-between items-center">
|
|
262
|
-
<span className="text-sm font-medium">Performance Score</span>
|
|
263
|
-
<span className={`text-lg font-bold ${
|
|
264
|
-
touchTargetState.performanceScore >= 80 ? 'text-cs-success' :
|
|
265
|
-
touchTargetState.performanceScore >= 60 ? 'text-cs-warning' : 'text-cs-error'
|
|
266
|
-
}`}>
|
|
267
|
-
{touchTargetState.performanceScore}/100
|
|
268
|
-
</span>
|
|
269
|
-
</div>
|
|
270
|
-
|
|
271
|
-
<div className="w-full bg-cs-border rounded-full h-2">
|
|
272
|
-
<div
|
|
273
|
-
className={`h-2 rounded-full transition-all duration-300 ${
|
|
274
|
-
touchTargetState.performanceScore >= 80 ? 'bg-cs-success' :
|
|
275
|
-
touchTargetState.performanceScore >= 60 ? 'bg-cs-warning' : 'bg-cs-error'
|
|
276
|
-
}`}
|
|
277
|
-
style={{ width: `${touchTargetState.performanceScore}%` }}
|
|
278
|
-
/>
|
|
279
|
-
</div>
|
|
280
|
-
|
|
281
|
-
<div className="text-xs text-cs-text-secondary">
|
|
282
|
-
{touchTargetState.performanceScore >= 80 ? 'Excellent performance' :
|
|
283
|
-
touchTargetState.performanceScore >= 60 ? 'Good performance' : 'Needs optimization'}
|
|
284
|
-
</div>
|
|
285
|
-
</div>
|
|
286
|
-
</div>
|
|
287
|
-
</div>
|
|
288
|
-
</div>
|
|
289
|
-
|
|
290
|
-
<div className="space-y-4">
|
|
291
|
-
<h3 className="text-lg font-semibold text-cs-text-primary">Touch Target Status</h3>
|
|
292
|
-
|
|
293
|
-
<div className="space-y-3">
|
|
294
|
-
<div className="p-4 bg-cs-surface-bg rounded-lg border border-cs-border">
|
|
295
|
-
<div className="space-y-2">
|
|
296
|
-
<div className="flex justify-between items-center">
|
|
297
|
-
<span className="text-sm">Target Size</span>
|
|
298
|
-
<span className="font-medium">{touchTargetState.size}px</span>
|
|
299
|
-
</div>
|
|
300
|
-
|
|
301
|
-
<div className="flex justify-between items-center">
|
|
302
|
-
<span className="text-sm">Compliance</span>
|
|
303
|
-
<span className={`font-medium ${touchTargetState.size >= 44 ? 'text-cs-success' : 'text-cs-error'}`}>
|
|
304
|
-
{touchTargetState.size >= 44 ? '✅ Compliant' : '❌ Non-compliant'}
|
|
305
|
-
</span>
|
|
306
|
-
</div>
|
|
307
|
-
|
|
308
|
-
<div className="flex justify-between items-center">
|
|
309
|
-
<span className="text-sm">Spacing</span>
|
|
310
|
-
<span className="font-medium capitalize">{touchTargetState.spacing}</span>
|
|
311
|
-
</div>
|
|
312
|
-
|
|
313
|
-
<div className="flex justify-between items-center">
|
|
314
|
-
<span className="text-sm">Feedback</span>
|
|
315
|
-
<span className="font-medium capitalize">{touchTargetState.feedback}</span>
|
|
316
|
-
</div>
|
|
317
|
-
</div>
|
|
318
|
-
</div>
|
|
319
|
-
</div>
|
|
320
|
-
</div>
|
|
321
|
-
</div>
|
|
322
|
-
|
|
323
|
-
<div className="space-y-4">
|
|
324
|
-
<h3 className="text-lg font-semibold text-cs-text-primary">Optimizations</h3>
|
|
325
|
-
|
|
326
|
-
<div className="p-4 bg-cs-surface-bg rounded-lg border border-cs-border">
|
|
327
|
-
{isOptimizing ? (
|
|
328
|
-
<div className="text-center py-4">
|
|
329
|
-
<div className="animate-spin rounded-full h-8 w-8 border-b-2 border-cs-primary mx-auto mb-2"></div>
|
|
330
|
-
<div className="text-sm text-cs-text-secondary">Optimizing touch targets...</div>
|
|
331
|
-
</div>
|
|
332
|
-
) : optimizations.length > 0 ? (
|
|
333
|
-
<div className="space-y-2">
|
|
334
|
-
{optimizations.map((optimization, index) => (
|
|
335
|
-
<div key={index} className="flex items-center space-x-2 text-sm">
|
|
336
|
-
<span className="text-cs-success">✅</span>
|
|
337
|
-
<span>{optimization}</span>
|
|
338
|
-
</div>
|
|
339
|
-
))}
|
|
340
|
-
</div>
|
|
341
|
-
) : (
|
|
342
|
-
<div className="text-center py-4 text-cs-text-secondary">
|
|
343
|
-
No optimizations applied yet
|
|
344
|
-
</div>
|
|
345
|
-
)}
|
|
346
|
-
</div>
|
|
347
|
-
</div>
|
|
348
|
-
</div>
|
|
349
|
-
)
|
|
350
|
-
|
|
351
|
-
const renderAccessibilityDemo = () => (
|
|
352
|
-
<div className="space-y-6">
|
|
353
|
-
<div className="grid grid-cols-1 md:grid-cols-2 gap-6">
|
|
354
|
-
<div className="space-y-4">
|
|
355
|
-
<h3 className="text-lg font-semibold text-cs-text-primary">Accessibility Features</h3>
|
|
356
|
-
|
|
357
|
-
<div className="space-y-3">
|
|
358
|
-
<div className="p-4 bg-cs-surface-bg rounded-lg border border-cs-border">
|
|
359
|
-
<div className="space-y-2">
|
|
360
|
-
<div className="flex justify-between items-center">
|
|
361
|
-
<span className="text-sm">ARIA Support</span>
|
|
362
|
-
<span className={`font-medium ${touchTargetState.isAccessible ? 'text-cs-success' : 'text-cs-warning'}`}>
|
|
363
|
-
{touchTargetState.isAccessible ? '✅ Enabled' : '⚠️ Disabled'}
|
|
364
|
-
</span>
|
|
365
|
-
</div>
|
|
366
|
-
|
|
367
|
-
<div className="flex justify-between items-center">
|
|
368
|
-
<span className="text-sm">Focus Management</span>
|
|
369
|
-
<span className="font-medium text-cs-success">✅ Enabled</span>
|
|
370
|
-
</div>
|
|
371
|
-
|
|
372
|
-
<div className="flex justify-between items-center">
|
|
373
|
-
<span className="text-sm">Screen Reader</span>
|
|
374
|
-
<span className="font-medium text-cs-success">✅ Supported</span>
|
|
375
|
-
</div>
|
|
376
|
-
|
|
377
|
-
<div className="flex justify-between items-center">
|
|
378
|
-
<span className="text-sm">Keyboard Nav</span>
|
|
379
|
-
<span className="font-medium text-cs-success">✅ Supported</span>
|
|
380
|
-
</div>
|
|
381
|
-
</div>
|
|
382
|
-
</div>
|
|
383
|
-
</div>
|
|
384
|
-
</div>
|
|
385
|
-
|
|
386
|
-
<div className="space-y-4">
|
|
387
|
-
<h3 className="text-lg font-semibold text-cs-text-primary">Touch Standards</h3>
|
|
388
|
-
|
|
389
|
-
<div className="space-y-3">
|
|
390
|
-
<div className="p-4 bg-cs-surface-bg rounded-lg border border-cs-border">
|
|
391
|
-
<div className="space-y-2">
|
|
392
|
-
<div className="flex justify-between items-center">
|
|
393
|
-
<span className="text-sm">44px Minimum</span>
|
|
394
|
-
<span className={`font-medium ${touchTargetState.size >= 44 ? 'text-cs-success' : 'text-cs-error'}`}>
|
|
395
|
-
{touchTargetState.size >= 44 ? '✅ Met' : '❌ Not Met'}
|
|
396
|
-
</span>
|
|
397
|
-
</div>
|
|
398
|
-
|
|
399
|
-
<div className="flex justify-between items-center">
|
|
400
|
-
<span className="text-sm">Touch Action</span>
|
|
401
|
-
<span className="font-medium text-cs-success">✅ Optimized</span>
|
|
402
|
-
</div>
|
|
403
|
-
|
|
404
|
-
<div className="flex justify-between items-center">
|
|
405
|
-
<span className="text-sm">Tap Highlight</span>
|
|
406
|
-
<span className="font-medium text-cs-success">✅ Disabled</span>
|
|
407
|
-
</div>
|
|
408
|
-
|
|
409
|
-
<div className="flex justify-between items-center">
|
|
410
|
-
<span className="text-sm">User Select</span>
|
|
411
|
-
<span className="font-medium text-cs-success">✅ Disabled</span>
|
|
412
|
-
</div>
|
|
413
|
-
</div>
|
|
414
|
-
</div>
|
|
415
|
-
</div>
|
|
416
|
-
</div>
|
|
417
|
-
</div>
|
|
418
|
-
|
|
419
|
-
<div className="space-y-4">
|
|
420
|
-
<h3 className="text-lg font-semibold text-cs-text-primary">Interactive Test</h3>
|
|
421
|
-
|
|
422
|
-
<div className="grid grid-cols-1 md:grid-cols-3 gap-4">
|
|
423
|
-
<Button
|
|
424
|
-
size="default"
|
|
425
|
-
className="touch-target touch-friendly-button touch-interaction touch-performance touch-feedback min-h-[48px] min-w-[48px]"
|
|
426
|
-
aria-label="Test button with scale feedback"
|
|
427
|
-
>
|
|
428
|
-
Scale Feedback
|
|
429
|
-
</Button>
|
|
430
|
-
|
|
431
|
-
<Button
|
|
432
|
-
size="default"
|
|
433
|
-
variant="secondary"
|
|
434
|
-
className="touch-target touch-friendly-button-secondary touch-interaction touch-performance touch-ripple min-h-[48px] min-w-[48px]"
|
|
435
|
-
aria-label="Test button with ripple feedback"
|
|
436
|
-
>
|
|
437
|
-
Ripple Feedback
|
|
438
|
-
</Button>
|
|
439
|
-
|
|
440
|
-
<Button
|
|
441
|
-
size="default"
|
|
442
|
-
variant="outline"
|
|
443
|
-
className="touch-target touch-interaction touch-performance touch-state-hover touch-state-active min-h-[48px] min-w-[48px] bg-transparent border border-cs-border text-cs-text-primary hover:bg-cs-hover-bg"
|
|
444
|
-
aria-label="Test button with color feedback"
|
|
445
|
-
>
|
|
446
|
-
Color Feedback
|
|
447
|
-
</Button>
|
|
448
|
-
</div>
|
|
449
|
-
</div>
|
|
450
|
-
</div>
|
|
451
|
-
)
|
|
452
|
-
|
|
453
|
-
return (
|
|
454
|
-
<div className="space-y-6">
|
|
455
|
-
{/* Header */}
|
|
456
|
-
<div className="text-center space-y-2">
|
|
457
|
-
<h2 className="text-2xl font-bold text-cs-text-primary">
|
|
458
|
-
Touch-Friendly Interface & 44px Target Compliance
|
|
459
|
-
</h2>
|
|
460
|
-
<p className="text-cs-text-secondary">
|
|
461
|
-
Advanced touch interface system with accessibility compliance and performance optimization
|
|
462
|
-
</p>
|
|
463
|
-
</div>
|
|
464
|
-
|
|
465
|
-
{/* Navigation Tabs */}
|
|
466
|
-
<div className="flex flex-wrap gap-2 justify-center">
|
|
467
|
-
{(['targets', 'interactions', 'performance', 'accessibility'] as const).map((demo) => (
|
|
468
|
-
<button
|
|
469
|
-
key={demo}
|
|
470
|
-
onClick={() => setActiveDemo(demo)}
|
|
471
|
-
className={`px-4 py-2 rounded-lg font-medium transition-colors ${
|
|
472
|
-
activeDemo === demo
|
|
473
|
-
? 'bg-cs-primary text-white'
|
|
474
|
-
: 'bg-cs-surface-bg text-cs-text-primary hover:bg-cs-hover-bg'
|
|
475
|
-
}`}
|
|
476
|
-
>
|
|
477
|
-
{demo === 'targets' && '🎯 Target Compliance'}
|
|
478
|
-
{demo === 'interactions' && '👆 Touch Interactions'}
|
|
479
|
-
{demo === 'performance' && '⚡ Performance'}
|
|
480
|
-
{demo === 'accessibility' && '♿ Accessibility'}
|
|
481
|
-
</button>
|
|
482
|
-
))}
|
|
483
|
-
</div>
|
|
484
|
-
|
|
485
|
-
{/* Demo Content */}
|
|
486
|
-
<div className="min-h-[400px]">
|
|
487
|
-
{activeDemo === 'targets' && renderTargetComplianceDemo()}
|
|
488
|
-
{activeDemo === 'interactions' && renderTouchInteractionsDemo()}
|
|
489
|
-
{activeDemo === 'performance' && renderPerformanceDemo()}
|
|
490
|
-
{activeDemo === 'accessibility' && renderAccessibilityDemo()}
|
|
491
|
-
</div>
|
|
492
|
-
|
|
493
|
-
{/* Status Bar */}
|
|
494
|
-
<div className="p-4 bg-cs-surface-bg rounded-lg border border-cs-border">
|
|
495
|
-
<div className="flex flex-wrap items-center justify-between gap-4 text-sm">
|
|
496
|
-
<div className="flex items-center space-x-4">
|
|
497
|
-
<span className="font-medium">Status:</span>
|
|
498
|
-
<Badge variant={touchTargetState.isOptimized ? 'default' : 'secondary'}>
|
|
499
|
-
{touchTargetState.isOptimized ? 'Optimized' : 'Optimizing...'}
|
|
500
|
-
</Badge>
|
|
501
|
-
<Badge variant={touchTargetState.isAccessible ? 'default' : 'secondary'}>
|
|
502
|
-
{touchTargetState.isAccessible ? 'Accessible' : 'Enhancing...'}
|
|
503
|
-
</Badge>
|
|
504
|
-
</div>
|
|
505
|
-
|
|
506
|
-
<div className="flex items-center space-x-4">
|
|
507
|
-
<span className="font-medium">Performance:</span>
|
|
508
|
-
<span className={`font-bold ${
|
|
509
|
-
touchTargetState.performanceScore >= 80 ? 'text-cs-success' :
|
|
510
|
-
touchTargetState.performanceScore >= 60 ? 'text-cs-warning' : 'text-cs-error'
|
|
511
|
-
}`}>
|
|
512
|
-
{touchTargetState.performanceScore}%
|
|
513
|
-
</span>
|
|
514
|
-
</div>
|
|
515
|
-
</div>
|
|
516
|
-
</div>
|
|
517
|
-
</div>
|
|
518
|
-
)
|
|
519
|
-
}
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState } from 'react';
|
|
3
|
+
import { Badge } from './badge';
|
|
4
|
+
import { Input } from './input';
|
|
5
|
+
import { Button } from './button';
|
|
6
|
+
import { Card, CardContent } from './card';
|
|
7
|
+
import { useTouchFriendlyInterface } from '../../hooks/use-touch-friendly-interface';
|
|
8
|
+
export const TouchFriendlyInterfaceDemo = () => {
|
|
9
|
+
const [activeDemo, setActiveDemo] = useState('targets');
|
|
10
|
+
const [formData, setFormData] = useState({
|
|
11
|
+
name: '',
|
|
12
|
+
email: '',
|
|
13
|
+
message: ''
|
|
14
|
+
});
|
|
15
|
+
const [toggleState, setToggleState] = useState(false);
|
|
16
|
+
const [sliderValue, setSliderValue] = useState(50);
|
|
17
|
+
const { touchTargetState, touchInteractionState, isOptimizing, optimizations } = useTouchFriendlyInterface({
|
|
18
|
+
minSize: 44,
|
|
19
|
+
spacing: 'default',
|
|
20
|
+
feedback: 'scale',
|
|
21
|
+
performance: true,
|
|
22
|
+
accessibility: true
|
|
23
|
+
}, {
|
|
24
|
+
onTouchTargetOptimized: (config) => {
|
|
25
|
+
console.log('Touch target optimized:', config);
|
|
26
|
+
},
|
|
27
|
+
onTouchInteractionDetected: (interaction) => {
|
|
28
|
+
console.log('Touch interaction detected:', interaction);
|
|
29
|
+
},
|
|
30
|
+
onPerformanceOptimized: (score) => {
|
|
31
|
+
console.log('Performance optimized:', score);
|
|
32
|
+
},
|
|
33
|
+
onAccessibilityEnhanced: (feature) => {
|
|
34
|
+
console.log('Accessibility enhanced:', feature);
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
const handleInputChange = (field, value) => {
|
|
38
|
+
setFormData(prev => ({ ...prev, [field]: value }));
|
|
39
|
+
};
|
|
40
|
+
const renderTargetComplianceDemo = () => (_jsxs("div", { className: "space-y-6", children: [_jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6", children: [_jsxs("div", { className: "space-y-4", children: [_jsx("h3", { className: "text-lg font-semibold text-cs-text-primary", children: "44px Target Compliance" }), _jsxs("div", { className: "space-y-3", children: [_jsx(Button, { size: "sm", className: "touch-target touch-friendly-button touch-interaction touch-performance min-h-[44px] min-w-[44px]", children: "Small Button (44px)" }), _jsx(Button, { size: "default", variant: "secondary", className: "touch-target touch-friendly-button-secondary touch-interaction touch-performance min-h-[48px] min-w-[48px]", children: "Default Button (48px)" }), _jsx(Button, { size: "lg", variant: "outline", className: "touch-target touch-interaction touch-performance min-h-[56px] min-w-[56px] bg-transparent border border-cs-border text-cs-text-primary hover:bg-cs-hover-bg", children: "Large Button (56px)" }), _jsx(Button, { size: "lg", variant: "ghost", className: "touch-target touch-interaction touch-performance min-h-[64px] min-w-[64px] bg-transparent text-cs-text-primary hover:bg-cs-hover-bg", children: "Extra Large Button (64px)" })] })] }), _jsxs("div", { className: "space-y-4", children: [_jsx("h3", { className: "text-lg font-semibold text-cs-text-primary", children: "Touch-Friendly Inputs" }), _jsxs("div", { className: "space-y-3", children: [_jsx(Input, { placeholder: "Small Input (44px)", value: formData.name, onChange: (e) => handleInputChange('name', e.target.value), className: "touch-target touch-friendly-input touch-interaction touch-performance min-h-[44px] min-w-[44px] px-3 py-2 text-sm" }), _jsx(Input, { placeholder: "Default Input (48px)", value: formData.email, onChange: (e) => handleInputChange('email', e.target.value), className: "touch-target touch-friendly-input touch-interaction touch-performance min-h-[48px] min-w-[48px] px-4 py-3 text-base" }), _jsx(Input, { placeholder: "Large Input (56px)", value: formData.message, onChange: (e) => handleInputChange('message', e.target.value), className: "touch-target touch-friendly-input touch-interaction touch-performance min-h-[56px] min-w-[56px] px-6 py-4 text-lg" })] })] })] }), _jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6", children: [_jsxs("div", { className: "space-y-4", children: [_jsx("h3", { className: "text-lg font-semibold text-cs-text-primary", children: "Interactive Cards" }), _jsxs("div", { className: "space-y-3", children: [_jsx(Card, { className: "touch-target touch-friendly-card touch-interaction touch-performance touch-feedback min-h-[44px] min-w-[44px] p-3 cursor-pointer", children: _jsxs(CardContent, { className: "text-center", children: [_jsx("div", { className: "text-lg font-semibold", children: "Small Card" }), _jsx("div", { className: "text-sm text-cs-text-secondary", children: "44px target" })] }) }), _jsx(Card, { className: "touch-target touch-friendly-card touch-interaction touch-performance touch-ripple min-h-[48px] min-w-[48px] p-4 cursor-pointer", children: _jsxs(CardContent, { className: "text-center", children: [_jsx("div", { className: "text-lg font-semibold", children: "Default Card" }), _jsx("div", { className: "text-sm text-cs-text-secondary", children: "48px target" })] }) }), _jsx(Card, { className: "touch-target touch-friendly-card touch-interaction touch-performance touch-state-hover touch-state-active min-h-[56px] min-w-[56px] p-6 cursor-pointer", children: _jsxs(CardContent, { className: "text-center", children: [_jsx("div", { className: "text-lg font-semibold", children: "Large Card" }), _jsx("div", { className: "text-sm text-cs-text-secondary", children: "56px target" })] }) })] })] }), _jsxs("div", { className: "space-y-4", children: [_jsx("h3", { className: "text-lg font-semibold text-cs-text-primary", children: "Form Controls" }), _jsxs("div", { className: "space-y-4", children: [_jsxs("div", { className: "flex items-center space-x-3", children: [_jsx("button", { type: "button", role: "switch", "aria-checked": toggleState, onClick: () => setToggleState(!toggleState), className: "touch-target touch-interaction touch-performance touch-feedback relative inline-flex items-center justify-center rounded-full transition-colors min-h-[48px] min-w-[48px] focus:outline-none focus:ring-2 focus:ring-cs-primary focus:ring-offset-2", style: {
|
|
41
|
+
backgroundColor: toggleState ? 'var(--cs-primary)' : 'var(--cs-border)'
|
|
42
|
+
}, children: _jsx("span", { className: "inline-block rounded-full bg-white shadow transform transition-transform w-6 h-6", style: {
|
|
43
|
+
transform: toggleState ? 'translateX(24px)' : 'translateX(0)'
|
|
44
|
+
} }) }), _jsx("span", { className: "text-sm", children: "Toggle Switch" })] }), _jsxs("div", { className: "space-y-2", children: [_jsxs("label", { className: "text-sm font-medium", children: ["Slider Value: ", sliderValue] }), _jsx("input", { type: "range", value: sliderValue, onChange: (e) => setSliderValue(Number(e.target.value)), min: 0, max: 100, step: 1, className: "touch-target touch-interaction touch-performance touch-feedback w-full h-2 bg-cs-border rounded-lg appearance-none cursor-pointer focus:outline-none focus:ring-2 focus:ring-cs-primary min-h-[48px]" })] })] })] })] })] }));
|
|
45
|
+
const renderTouchInteractionsDemo = () => (_jsxs("div", { className: "space-y-6", children: [_jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6", children: [_jsxs("div", { className: "space-y-4", children: [_jsx("h3", { className: "text-lg font-semibold text-cs-text-primary", children: "Touch State" }), _jsx("div", { className: "space-y-3", children: _jsx("div", { className: "p-4 bg-cs-surface-bg rounded-lg border border-cs-border", children: _jsxs("div", { className: "grid grid-cols-2 gap-4 text-sm", children: [_jsxs("div", { children: [_jsx("span", { className: "font-medium", children: "Touching:" }), _jsx("span", { className: `ml-2 ${touchInteractionState.isTouching ? 'text-cs-success' : 'text-cs-text-secondary'}`, children: touchInteractionState.isTouching ? 'Yes' : 'No' })] }), _jsxs("div", { children: [_jsx("span", { className: "font-medium", children: "Touch Count:" }), _jsx("span", { className: "ml-2 text-cs-text-primary", children: touchInteractionState.touchCount })] }), _jsxs("div", { children: [_jsx("span", { className: "font-medium", children: "Duration:" }), _jsxs("span", { className: "ml-2 text-cs-text-primary", children: [touchInteractionState.touchDuration.toFixed(0), "ms"] })] }), _jsxs("div", { children: [_jsx("span", { className: "font-medium", children: "Velocity:" }), _jsxs("span", { className: "ml-2 text-cs-text-primary", children: [touchInteractionState.touchVelocity.toFixed(2), "px/ms"] })] })] }) }) })] }), _jsxs("div", { className: "space-y-4", children: [_jsx("h3", { className: "text-lg font-semibold text-cs-text-primary", children: "Gesture Detection" }), _jsx("div", { className: "space-y-3", children: _jsx("div", { className: "p-4 bg-cs-surface-bg rounded-lg border border-cs-border", children: _jsxs("div", { className: "text-center", children: [_jsx("div", { className: "text-2xl font-bold text-cs-primary mb-2", children: touchInteractionState.gestureType === 'none' ? '👆' :
|
|
46
|
+
touchInteractionState.gestureType === 'tap' ? '👆' :
|
|
47
|
+
touchInteractionState.gestureType === 'double-tap' ? '👆👆' :
|
|
48
|
+
touchInteractionState.gestureType === 'long-press' ? '⏰' :
|
|
49
|
+
touchInteractionState.gestureType === 'swipe' ? '👈👉' : '🤏' }), _jsx("div", { className: "text-lg font-semibold capitalize", children: touchInteractionState.gestureType.replace('-', ' ') }), _jsx("div", { className: "text-sm text-cs-text-secondary", children: touchInteractionState.gestureType === 'none' ? 'Touch to detect gesture' :
|
|
50
|
+
touchInteractionState.gestureType === 'tap' ? 'Quick touch detected' :
|
|
51
|
+
touchInteractionState.gestureType === 'double-tap' ? 'Double touch detected' :
|
|
52
|
+
touchInteractionState.gestureType === 'long-press' ? 'Long press detected' :
|
|
53
|
+
touchInteractionState.gestureType === 'swipe' ? 'Swipe gesture detected' : 'Pinch detected' })] }) }) })] })] }), _jsxs("div", { className: "space-y-4", children: [_jsx("h3", { className: "text-lg font-semibold text-cs-text-primary", children: "Touch Coordinates" }), _jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4", children: [_jsxs("div", { className: "p-4 bg-cs-surface-bg rounded-lg border border-cs-border", children: [_jsx("h4", { className: "font-medium mb-2", children: "Start Position" }), _jsxs("div", { className: "text-sm space-y-1", children: [_jsxs("div", { children: ["X: ", touchInteractionState.touchStartX, "px"] }), _jsxs("div", { children: ["Y: ", touchInteractionState.touchStartY, "px"] })] })] }), _jsxs("div", { className: "p-4 bg-cs-surface-bg rounded-lg border border-cs-border", children: [_jsx("h4", { className: "font-medium mb-2", children: "Current Position" }), _jsxs("div", { className: "text-sm space-y-1", children: [_jsxs("div", { children: ["X: ", touchInteractionState.touchCurrentX, "px"] }), _jsxs("div", { children: ["Y: ", touchInteractionState.touchCurrentY, "px"] })] })] })] })] })] }));
|
|
54
|
+
const renderPerformanceDemo = () => (_jsxs("div", { className: "space-y-6", children: [_jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6", children: [_jsxs("div", { className: "space-y-4", children: [_jsx("h3", { className: "text-lg font-semibold text-cs-text-primary", children: "Performance Metrics" }), _jsx("div", { className: "space-y-3", children: _jsx("div", { className: "p-4 bg-cs-surface-bg rounded-lg border border-cs-border", children: _jsxs("div", { className: "space-y-3", children: [_jsxs("div", { className: "flex justify-between items-center", children: [_jsx("span", { className: "text-sm font-medium", children: "Performance Score" }), _jsxs("span", { className: `text-lg font-bold ${touchTargetState.performanceScore >= 80 ? 'text-cs-success' :
|
|
55
|
+
touchTargetState.performanceScore >= 60 ? 'text-cs-warning' : 'text-cs-error'}`, children: [touchTargetState.performanceScore, "/100"] })] }), _jsx("div", { className: "w-full bg-cs-border rounded-full h-2", children: _jsx("div", { className: `h-2 rounded-full transition-all duration-300 ${touchTargetState.performanceScore >= 80 ? 'bg-cs-success' :
|
|
56
|
+
touchTargetState.performanceScore >= 60 ? 'bg-cs-warning' : 'bg-cs-error'}`, style: { width: `${touchTargetState.performanceScore}%` } }) }), _jsx("div", { className: "text-xs text-cs-text-secondary", children: touchTargetState.performanceScore >= 80 ? 'Excellent performance' :
|
|
57
|
+
touchTargetState.performanceScore >= 60 ? 'Good performance' : 'Needs optimization' })] }) }) })] }), _jsxs("div", { className: "space-y-4", children: [_jsx("h3", { className: "text-lg font-semibold text-cs-text-primary", children: "Touch Target Status" }), _jsx("div", { className: "space-y-3", children: _jsx("div", { className: "p-4 bg-cs-surface-bg rounded-lg border border-cs-border", children: _jsxs("div", { className: "space-y-2", children: [_jsxs("div", { className: "flex justify-between items-center", children: [_jsx("span", { className: "text-sm", children: "Target Size" }), _jsxs("span", { className: "font-medium", children: [touchTargetState.size, "px"] })] }), _jsxs("div", { className: "flex justify-between items-center", children: [_jsx("span", { className: "text-sm", children: "Compliance" }), _jsx("span", { className: `font-medium ${touchTargetState.size >= 44 ? 'text-cs-success' : 'text-cs-error'}`, children: touchTargetState.size >= 44 ? '✅ Compliant' : '❌ Non-compliant' })] }), _jsxs("div", { className: "flex justify-between items-center", children: [_jsx("span", { className: "text-sm", children: "Spacing" }), _jsx("span", { className: "font-medium capitalize", children: touchTargetState.spacing })] }), _jsxs("div", { className: "flex justify-between items-center", children: [_jsx("span", { className: "text-sm", children: "Feedback" }), _jsx("span", { className: "font-medium capitalize", children: touchTargetState.feedback })] })] }) }) })] })] }), _jsxs("div", { className: "space-y-4", children: [_jsx("h3", { className: "text-lg font-semibold text-cs-text-primary", children: "Optimizations" }), _jsx("div", { className: "p-4 bg-cs-surface-bg rounded-lg border border-cs-border", children: isOptimizing ? (_jsxs("div", { className: "text-center py-4", children: [_jsx("div", { className: "animate-spin rounded-full h-8 w-8 border-b-2 border-cs-primary mx-auto mb-2" }), _jsx("div", { className: "text-sm text-cs-text-secondary", children: "Optimizing touch targets..." })] })) : optimizations.length > 0 ? (_jsx("div", { className: "space-y-2", children: optimizations.map((optimization, index) => (_jsxs("div", { className: "flex items-center space-x-2 text-sm", children: [_jsx("span", { className: "text-cs-success", children: "\u2705" }), _jsx("span", { children: optimization })] }, index))) })) : (_jsx("div", { className: "text-center py-4 text-cs-text-secondary", children: "No optimizations applied yet" })) })] })] }));
|
|
58
|
+
const renderAccessibilityDemo = () => (_jsxs("div", { className: "space-y-6", children: [_jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6", children: [_jsxs("div", { className: "space-y-4", children: [_jsx("h3", { className: "text-lg font-semibold text-cs-text-primary", children: "Accessibility Features" }), _jsx("div", { className: "space-y-3", children: _jsx("div", { className: "p-4 bg-cs-surface-bg rounded-lg border border-cs-border", children: _jsxs("div", { className: "space-y-2", children: [_jsxs("div", { className: "flex justify-between items-center", children: [_jsx("span", { className: "text-sm", children: "ARIA Support" }), _jsx("span", { className: `font-medium ${touchTargetState.isAccessible ? 'text-cs-success' : 'text-cs-warning'}`, children: touchTargetState.isAccessible ? '✅ Enabled' : '⚠️ Disabled' })] }), _jsxs("div", { className: "flex justify-between items-center", children: [_jsx("span", { className: "text-sm", children: "Focus Management" }), _jsx("span", { className: "font-medium text-cs-success", children: "\u2705 Enabled" })] }), _jsxs("div", { className: "flex justify-between items-center", children: [_jsx("span", { className: "text-sm", children: "Screen Reader" }), _jsx("span", { className: "font-medium text-cs-success", children: "\u2705 Supported" })] }), _jsxs("div", { className: "flex justify-between items-center", children: [_jsx("span", { className: "text-sm", children: "Keyboard Nav" }), _jsx("span", { className: "font-medium text-cs-success", children: "\u2705 Supported" })] })] }) }) })] }), _jsxs("div", { className: "space-y-4", children: [_jsx("h3", { className: "text-lg font-semibold text-cs-text-primary", children: "Touch Standards" }), _jsx("div", { className: "space-y-3", children: _jsx("div", { className: "p-4 bg-cs-surface-bg rounded-lg border border-cs-border", children: _jsxs("div", { className: "space-y-2", children: [_jsxs("div", { className: "flex justify-between items-center", children: [_jsx("span", { className: "text-sm", children: "44px Minimum" }), _jsx("span", { className: `font-medium ${touchTargetState.size >= 44 ? 'text-cs-success' : 'text-cs-error'}`, children: touchTargetState.size >= 44 ? '✅ Met' : '❌ Not Met' })] }), _jsxs("div", { className: "flex justify-between items-center", children: [_jsx("span", { className: "text-sm", children: "Touch Action" }), _jsx("span", { className: "font-medium text-cs-success", children: "\u2705 Optimized" })] }), _jsxs("div", { className: "flex justify-between items-center", children: [_jsx("span", { className: "text-sm", children: "Tap Highlight" }), _jsx("span", { className: "font-medium text-cs-success", children: "\u2705 Disabled" })] }), _jsxs("div", { className: "flex justify-between items-center", children: [_jsx("span", { className: "text-sm", children: "User Select" }), _jsx("span", { className: "font-medium text-cs-success", children: "\u2705 Disabled" })] })] }) }) })] })] }), _jsxs("div", { className: "space-y-4", children: [_jsx("h3", { className: "text-lg font-semibold text-cs-text-primary", children: "Interactive Test" }), _jsxs("div", { className: "grid grid-cols-1 md:grid-cols-3 gap-4", children: [_jsx(Button, { size: "default", className: "touch-target touch-friendly-button touch-interaction touch-performance touch-feedback min-h-[48px] min-w-[48px]", "aria-label": "Test button with scale feedback", children: "Scale Feedback" }), _jsx(Button, { size: "default", variant: "secondary", className: "touch-target touch-friendly-button-secondary touch-interaction touch-performance touch-ripple min-h-[48px] min-w-[48px]", "aria-label": "Test button with ripple feedback", children: "Ripple Feedback" }), _jsx(Button, { size: "default", variant: "outline", className: "touch-target touch-interaction touch-performance touch-state-hover touch-state-active min-h-[48px] min-w-[48px] bg-transparent border border-cs-border text-cs-text-primary hover:bg-cs-hover-bg", "aria-label": "Test button with color feedback", children: "Color Feedback" })] })] })] }));
|
|
59
|
+
return (_jsxs("div", { className: "space-y-6", children: [_jsxs("div", { className: "text-center space-y-2", children: [_jsx("h2", { className: "text-2xl font-bold text-cs-text-primary", children: "Touch-Friendly Interface & 44px Target Compliance" }), _jsx("p", { className: "text-cs-text-secondary", children: "Advanced touch interface system with accessibility compliance and performance optimization" })] }), _jsx("div", { className: "flex flex-wrap gap-2 justify-center", children: ['targets', 'interactions', 'performance', 'accessibility'].map((demo) => (_jsxs("button", { onClick: () => setActiveDemo(demo), className: `px-4 py-2 rounded-lg font-medium transition-colors ${activeDemo === demo
|
|
60
|
+
? 'bg-cs-primary text-white'
|
|
61
|
+
: 'bg-cs-surface-bg text-cs-text-primary hover:bg-cs-hover-bg'}`, children: [demo === 'targets' && '🎯 Target Compliance', demo === 'interactions' && '👆 Touch Interactions', demo === 'performance' && '⚡ Performance', demo === 'accessibility' && '♿ Accessibility'] }, demo))) }), _jsxs("div", { className: "min-h-[400px]", children: [activeDemo === 'targets' && renderTargetComplianceDemo(), activeDemo === 'interactions' && renderTouchInteractionsDemo(), activeDemo === 'performance' && renderPerformanceDemo(), activeDemo === 'accessibility' && renderAccessibilityDemo()] }), _jsx("div", { className: "p-4 bg-cs-surface-bg rounded-lg border border-cs-border", children: _jsxs("div", { className: "flex flex-wrap items-center justify-between gap-4 text-sm", children: [_jsxs("div", { className: "flex items-center space-x-4", children: [_jsx("span", { className: "font-medium", children: "Status:" }), _jsx(Badge, { variant: touchTargetState.isOptimized ? 'default' : 'secondary', children: touchTargetState.isOptimized ? 'Optimized' : 'Optimizing...' }), _jsx(Badge, { variant: touchTargetState.isAccessible ? 'default' : 'secondary', children: touchTargetState.isAccessible ? 'Accessible' : 'Enhancing...' })] }), _jsxs("div", { className: "flex items-center space-x-4", children: [_jsx("span", { className: "font-medium", children: "Performance:" }), _jsxs("span", { className: `font-bold ${touchTargetState.performanceScore >= 80 ? 'text-cs-success' :
|
|
62
|
+
touchTargetState.performanceScore >= 60 ? 'text-cs-warning' : 'text-cs-error'}`, children: [touchTargetState.performanceScore, "%"] })] })] }) })] }));
|
|
63
|
+
};
|