@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,553 +1,191 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import
|
|
7
|
-
|
|
8
|
-
|
|
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
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
{
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
{
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
const
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
Story 6: Advanced Form System with Mobile Validation
|
|
193
|
-
</Badge>
|
|
194
|
-
</div>
|
|
195
|
-
|
|
196
|
-
{/* Enhanced Features Toggle */}
|
|
197
|
-
<div className="flex justify-center">
|
|
198
|
-
<div className="flex items-center gap-2 p-3 bg-gray-50 rounded-lg">
|
|
199
|
-
<span className="text-sm font-medium">Enhanced Features:</span>
|
|
200
|
-
<Button
|
|
201
|
-
variant={enableEnhancedFeatures ? 'default' : 'outline'}
|
|
202
|
-
size="sm"
|
|
203
|
-
onClick={() => setEnableEnhancedFeatures(!enableEnhancedFeatures)}
|
|
204
|
-
>
|
|
205
|
-
{enableEnhancedFeatures ? 'Enabled' : 'Disabled'}
|
|
206
|
-
</Button>
|
|
207
|
-
</div>
|
|
208
|
-
</div>
|
|
209
|
-
|
|
210
|
-
{/* Tab Navigation */}
|
|
211
|
-
<Tabs
|
|
212
|
-
tabs={[
|
|
213
|
-
{
|
|
214
|
-
id: 'basic',
|
|
215
|
-
label: 'Basic Form',
|
|
216
|
-
content: (
|
|
217
|
-
<div className="space-y-4">
|
|
218
|
-
<Card>
|
|
219
|
-
<CardHeader>
|
|
220
|
-
<CardTitle className="flex items-center gap-2">
|
|
221
|
-
🚀 Basic Form Validation
|
|
222
|
-
<Badge variant="secondary">Simple Example</Badge>
|
|
223
|
-
</CardTitle>
|
|
224
|
-
<CardDescription>
|
|
225
|
-
Basic form with name and email validation. Demonstrates core validation features.
|
|
226
|
-
</CardDescription>
|
|
227
|
-
</CardHeader>
|
|
228
|
-
<CardContent className="space-y-4">
|
|
229
|
-
<MobileFormValidation
|
|
230
|
-
ref={basicFormRef}
|
|
231
|
-
title="Basic Contact Form"
|
|
232
|
-
description="Simple form with essential validation"
|
|
233
|
-
fields={basicFields}
|
|
234
|
-
onSubmit={(data) => handleFormSubmit(data, 'Basic')}
|
|
235
|
-
onValidationChange={(isValid) => handleValidationChange(isValid, 'Basic')}
|
|
236
|
-
enableEnhancedFeatures={enableEnhancedFeatures}
|
|
237
|
-
/>
|
|
238
|
-
|
|
239
|
-
{/* Test Controls */}
|
|
240
|
-
<div className="flex gap-2 pt-4 border-t">
|
|
241
|
-
<Button
|
|
242
|
-
variant="outline"
|
|
243
|
-
size="sm"
|
|
244
|
-
onClick={() => testFormSubmission('basic')}
|
|
245
|
-
>
|
|
246
|
-
Test Submit
|
|
247
|
-
</Button>
|
|
248
|
-
<Button
|
|
249
|
-
variant="outline"
|
|
250
|
-
size="sm"
|
|
251
|
-
onClick={() => testFormValidation('basic')}
|
|
252
|
-
>
|
|
253
|
-
Test Validation
|
|
254
|
-
</Button>
|
|
255
|
-
<Button
|
|
256
|
-
variant="outline"
|
|
257
|
-
size="sm"
|
|
258
|
-
onClick={() => testFormReset('basic')}
|
|
259
|
-
>
|
|
260
|
-
Test Reset
|
|
261
|
-
</Button>
|
|
262
|
-
</div>
|
|
263
|
-
</CardContent>
|
|
264
|
-
</Card>
|
|
265
|
-
</div>
|
|
266
|
-
)
|
|
267
|
-
},
|
|
268
|
-
{
|
|
269
|
-
id: 'advanced',
|
|
270
|
-
label: 'Advanced Form',
|
|
271
|
-
content: (
|
|
272
|
-
<div className="space-y-4">
|
|
273
|
-
<Card>
|
|
274
|
-
<CardHeader>
|
|
275
|
-
<CardTitle className="flex items-center gap-2">
|
|
276
|
-
🎯 Advanced Form Validation
|
|
277
|
-
<Badge variant="default">Full Featured</Badge>
|
|
278
|
-
</CardTitle>
|
|
279
|
-
<CardDescription>
|
|
280
|
-
Comprehensive form with multiple field types, complex validation rules, and all features enabled.
|
|
281
|
-
</CardDescription>
|
|
282
|
-
</CardHeader>
|
|
283
|
-
<CardContent className="space-y-4">
|
|
284
|
-
<MobileFormValidation
|
|
285
|
-
ref={advancedFormRef}
|
|
286
|
-
title="Advanced Registration Form"
|
|
287
|
-
description="Complete form with all validation types and optimizations"
|
|
288
|
-
fields={advancedFields}
|
|
289
|
-
onSubmit={(data) => handleFormSubmit(data, 'Advanced')}
|
|
290
|
-
onValidationChange={(isValid) => handleValidationChange(isValid, 'Advanced')}
|
|
291
|
-
enableEnhancedFeatures={enableEnhancedFeatures}
|
|
292
|
-
/>
|
|
293
|
-
|
|
294
|
-
{/* Test Controls */}
|
|
295
|
-
<div className="flex gap-2 pt-4 border-t">
|
|
296
|
-
<Button
|
|
297
|
-
variant="outline"
|
|
298
|
-
size="sm"
|
|
299
|
-
onClick={() => testFormSubmission('advanced')}
|
|
300
|
-
>
|
|
301
|
-
Test Submit
|
|
302
|
-
</Button>
|
|
303
|
-
<Button
|
|
304
|
-
variant="outline"
|
|
305
|
-
size="sm"
|
|
306
|
-
onClick={() => testFormValidation('advanced')}
|
|
307
|
-
>
|
|
308
|
-
Test Validation
|
|
309
|
-
</Button>
|
|
310
|
-
<Button
|
|
311
|
-
variant="outline"
|
|
312
|
-
size="sm"
|
|
313
|
-
onClick={() => testFormReset('advanced')}
|
|
314
|
-
>
|
|
315
|
-
Test Reset
|
|
316
|
-
</Button>
|
|
317
|
-
</div>
|
|
318
|
-
</CardContent>
|
|
319
|
-
</Card>
|
|
320
|
-
</div>
|
|
321
|
-
)
|
|
322
|
-
},
|
|
323
|
-
{
|
|
324
|
-
id: 'performance',
|
|
325
|
-
label: 'Performance',
|
|
326
|
-
content: (
|
|
327
|
-
<div className="space-y-4">
|
|
328
|
-
<Card>
|
|
329
|
-
<CardHeader>
|
|
330
|
-
<CardTitle className="flex items-center gap-2">
|
|
331
|
-
⚡ Performance Monitoring
|
|
332
|
-
<Badge variant="outline">Real-time Metrics</Badge>
|
|
333
|
-
</CardTitle>
|
|
334
|
-
<CardDescription>
|
|
335
|
-
Monitor form performance, memory usage, battery status, and optimization scores.
|
|
336
|
-
</CardDescription>
|
|
337
|
-
</CardHeader>
|
|
338
|
-
<CardContent className="space-y-4">
|
|
339
|
-
<div className="grid grid-cols-1 md:grid-cols-2 gap-4">
|
|
340
|
-
<div className="space-y-3">
|
|
341
|
-
<h4 className="font-semibold">Performance Features</h4>
|
|
342
|
-
<div className="space-y-2 text-sm">
|
|
343
|
-
<div className="flex justify-between">
|
|
344
|
-
<span>Validation Throttling:</span>
|
|
345
|
-
<Badge variant="default">Enabled</Badge>
|
|
346
|
-
</div>
|
|
347
|
-
<div className="flex justify-between">
|
|
348
|
-
<span>Touch Event Optimization:</span>
|
|
349
|
-
<Badge variant={enableEnhancedFeatures ? 'default' : 'secondary'}>
|
|
350
|
-
{enableEnhancedFeatures ? 'Enabled' : 'Disabled'}
|
|
351
|
-
</Badge>
|
|
352
|
-
</div>
|
|
353
|
-
<div className="flex justify-between">
|
|
354
|
-
<span>Memory Management:</span>
|
|
355
|
-
<Badge variant={enableEnhancedFeatures ? 'default' : 'secondary'}>
|
|
356
|
-
{enableEnhancedFeatures ? 'Enabled' : 'Disabled'}
|
|
357
|
-
</Badge>
|
|
358
|
-
</div>
|
|
359
|
-
<div className="flex justify-between">
|
|
360
|
-
<span>Battery Optimization:</span>
|
|
361
|
-
<Badge variant={enableEnhancedFeatures ? 'default' : 'secondary'}>
|
|
362
|
-
{enableEnhancedFeatures ? 'Enabled' : 'Disabled'}
|
|
363
|
-
</Badge>
|
|
364
|
-
</div>
|
|
365
|
-
</div>
|
|
366
|
-
</div>
|
|
367
|
-
|
|
368
|
-
<div className="space-y-3">
|
|
369
|
-
<h4 className="font-semibold">Optimization Benefits</h4>
|
|
370
|
-
<div className="space-y-2 text-sm text-gray-600">
|
|
371
|
-
<p>• Reduced validation frequency for better performance</p>
|
|
372
|
-
<p>• Touch event throttling for smooth mobile experience</p>
|
|
373
|
-
<p>• Automatic memory cleanup to prevent leaks</p>
|
|
374
|
-
<p>• Battery-aware optimizations for mobile devices</p>
|
|
375
|
-
<p>• Real-time performance scoring and recommendations</p>
|
|
376
|
-
</div>
|
|
377
|
-
</div>
|
|
378
|
-
</div>
|
|
379
|
-
|
|
380
|
-
<div className="p-4 bg-blue-50 border border-blue-200 rounded-lg">
|
|
381
|
-
<h4 className="font-semibold text-blue-800 mb-2">Performance Tips</h4>
|
|
382
|
-
<ul className="text-sm text-blue-700 space-y-1">
|
|
383
|
-
<li>• Use validation throttling to reduce unnecessary validations</li>
|
|
384
|
-
<li>• Enable touch event optimization for better mobile performance</li>
|
|
385
|
-
<li>• Monitor memory usage and enable cleanup when needed</li>
|
|
386
|
-
<li>• Enable battery optimization for mobile devices</li>
|
|
387
|
-
<li>• Check performance scores and apply recommendations</li>
|
|
388
|
-
</ul>
|
|
389
|
-
</div>
|
|
390
|
-
</CardContent>
|
|
391
|
-
</Card>
|
|
392
|
-
</div>
|
|
393
|
-
)
|
|
394
|
-
},
|
|
395
|
-
{
|
|
396
|
-
id: 'semantic',
|
|
397
|
-
label: 'Semantic Input',
|
|
398
|
-
content: (
|
|
399
|
-
<div className="space-y-4">
|
|
400
|
-
<Card>
|
|
401
|
-
<CardHeader>
|
|
402
|
-
<CardTitle className="flex items-center gap-2">
|
|
403
|
-
🧠 Semantic Input Optimization
|
|
404
|
-
<Badge variant="outline">Smart Detection</Badge>
|
|
405
|
-
</CardTitle>
|
|
406
|
-
<CardDescription>
|
|
407
|
-
Automatic input type detection, mobile keyboard optimization, and enhanced autocomplete.
|
|
408
|
-
</CardDescription>
|
|
409
|
-
</CardHeader>
|
|
410
|
-
<CardContent className="space-y-4">
|
|
411
|
-
<div className="grid grid-cols-1 md:grid-cols-2 gap-4">
|
|
412
|
-
<div className="space-y-3">
|
|
413
|
-
<h4 className="font-semibold">Semantic Features</h4>
|
|
414
|
-
<div className="space-y-2 text-sm">
|
|
415
|
-
<div className="flex justify-between">
|
|
416
|
-
<span>Auto Type Detection:</span>
|
|
417
|
-
<Badge variant="default">Enabled</Badge>
|
|
418
|
-
</div>
|
|
419
|
-
<div className="flex justify-between">
|
|
420
|
-
<span>Keyboard Optimization:</span>
|
|
421
|
-
<Badge variant={enableEnhancedFeatures ? 'default' : 'secondary'}>
|
|
422
|
-
{enableEnhancedFeatures ? 'Enabled' : 'Disabled'}
|
|
423
|
-
</Badge>
|
|
424
|
-
</div>
|
|
425
|
-
<div className="flex justify-between">
|
|
426
|
-
<span>Autocomplete Enhancement:</span>
|
|
427
|
-
<Badge variant={enableEnhancedFeatures ? 'default' : 'secondary'}>
|
|
428
|
-
{enableEnhancedFeatures ? 'Enabled' : 'Disabled'}
|
|
429
|
-
</Badge>
|
|
430
|
-
</div>
|
|
431
|
-
<div className="flex justify-between">
|
|
432
|
-
<span>Touch Optimization:</span>
|
|
433
|
-
<Badge variant="default">Enabled</Badge>
|
|
434
|
-
</div>
|
|
435
|
-
</div>
|
|
436
|
-
</div>
|
|
437
|
-
|
|
438
|
-
<div className="space-y-3">
|
|
439
|
-
<h4 className="font-semibold">Detection Examples</h4>
|
|
440
|
-
<div className="space-y-2 text-sm text-gray-600">
|
|
441
|
-
<p>• <strong>Email:</strong> Detects @ symbol, sets email keyboard</p>
|
|
442
|
-
<p>• <strong>Phone:</strong> Detects numeric patterns, sets phone keyboard</p>
|
|
443
|
-
<p>• <strong>URL:</strong> Detects http/https, sets URL keyboard</p>
|
|
444
|
-
<p>• <strong>Search:</strong> Detects search context, optimizes input</p>
|
|
445
|
-
<p>• <strong>Number:</strong> Detects numeric patterns, sets numeric keyboard</p>
|
|
446
|
-
</div>
|
|
447
|
-
</div>
|
|
448
|
-
</div>
|
|
449
|
-
|
|
450
|
-
<div className="p-4 bg-green-50 border border-green-200 rounded-lg">
|
|
451
|
-
<h4 className="font-semibold text-green-800 mb-2">Semantic Benefits</h4>
|
|
452
|
-
<ul className="text-sm text-green-700 space-y-1">
|
|
453
|
-
<li>• Automatic input type detection based on field name and content</li>
|
|
454
|
-
<li>• Mobile keyboard optimization for better user experience</li>
|
|
455
|
-
<li>• Enhanced autocomplete with appropriate suggestions</li>
|
|
456
|
-
<li>• Touch-friendly input optimization</li>
|
|
457
|
-
<li>• Accessibility improvements with proper input modes</li>
|
|
458
|
-
</ul>
|
|
459
|
-
</div>
|
|
460
|
-
</CardContent>
|
|
461
|
-
</Card>
|
|
462
|
-
</div>
|
|
463
|
-
)
|
|
464
|
-
}
|
|
465
|
-
]}
|
|
466
|
-
activeTab={activeTab}
|
|
467
|
-
onTabChange={(tabId: string) => setActiveTab(tabId as 'basic' | 'advanced' | 'performance' | 'semantic')}
|
|
468
|
-
className="w-full"
|
|
469
|
-
/>
|
|
470
|
-
|
|
471
|
-
{/* Form Results */}
|
|
472
|
-
{formResults.length > 0 && (
|
|
473
|
-
<Card>
|
|
474
|
-
<CardHeader>
|
|
475
|
-
<CardTitle className="flex items-center gap-2">
|
|
476
|
-
📊 Form Submission Results
|
|
477
|
-
<Button
|
|
478
|
-
variant="outline"
|
|
479
|
-
size="sm"
|
|
480
|
-
onClick={clearResults}
|
|
481
|
-
>
|
|
482
|
-
Clear Results
|
|
483
|
-
</Button>
|
|
484
|
-
</CardTitle>
|
|
485
|
-
<CardDescription>
|
|
486
|
-
Recent form submissions and their data
|
|
487
|
-
</CardDescription>
|
|
488
|
-
</CardHeader>
|
|
489
|
-
<CardContent>
|
|
490
|
-
<div className="space-y-3 max-h-64 overflow-y-auto">
|
|
491
|
-
{formResults.map((result, index) => (
|
|
492
|
-
<div key={index} className="p-3 bg-gray-50 rounded-lg">
|
|
493
|
-
<div className="flex justify-between items-start mb-2">
|
|
494
|
-
<Badge variant="outline">{result.type}</Badge>
|
|
495
|
-
<span className="text-xs text-gray-500">
|
|
496
|
-
{result.timestamp.toLocaleTimeString()}
|
|
497
|
-
</span>
|
|
498
|
-
</div>
|
|
499
|
-
<pre className="text-xs bg-white p-2 rounded border overflow-x-auto">
|
|
500
|
-
{JSON.stringify(result.data, null, 2)}
|
|
501
|
-
</pre>
|
|
502
|
-
</div>
|
|
503
|
-
))}
|
|
504
|
-
</div>
|
|
505
|
-
</CardContent>
|
|
506
|
-
</Card>
|
|
507
|
-
)}
|
|
508
|
-
|
|
509
|
-
{/* Feature Summary */}
|
|
510
|
-
<Card>
|
|
511
|
-
<CardHeader>
|
|
512
|
-
<CardTitle>🎯 Story 6 Implementation Summary</CardTitle>
|
|
513
|
-
<CardDescription>
|
|
514
|
-
Complete mobile form validation system with all requested features
|
|
515
|
-
</CardDescription>
|
|
516
|
-
</CardHeader>
|
|
517
|
-
<CardContent>
|
|
518
|
-
<div className="grid grid-cols-1 md:grid-cols-2 gap-4">
|
|
519
|
-
<div className="space-y-3">
|
|
520
|
-
<h4 className="font-semibold">✅ Completed Features</h4>
|
|
521
|
-
<ul className="text-sm space-y-1 text-gray-600">
|
|
522
|
-
<li>• Mobile form validation system</li>
|
|
523
|
-
<li>• Animated success/error states</li>
|
|
524
|
-
<li>• Touch-friendly form layouts</li>
|
|
525
|
-
<li>• Semantic input optimization</li>
|
|
526
|
-
<li>• Performance-optimized validation</li>
|
|
527
|
-
<li>• Haptic feedback and touch sounds</li>
|
|
528
|
-
<li>• Battery-aware optimizations</li>
|
|
529
|
-
<li>• Memory management and cleanup</li>
|
|
530
|
-
</ul>
|
|
531
|
-
</div>
|
|
532
|
-
|
|
533
|
-
<div className="space-y-3">
|
|
534
|
-
<h4 className="font-semibold">🚀 Advanced Capabilities</h4>
|
|
535
|
-
<ul className="text-sm space-y-1 text-gray-600">
|
|
536
|
-
<li>• Real-time performance monitoring</li>
|
|
537
|
-
<li>• Automatic input type detection</li>
|
|
538
|
-
<li>• Mobile keyboard optimization</li>
|
|
539
|
-
<li>• Touch event throttling</li>
|
|
540
|
-
<li>• Responsive layout adaptation</li>
|
|
541
|
-
<li>• Accessibility enhancements</li>
|
|
542
|
-
<li>• Performance scoring system</li>
|
|
543
|
-
<li>• Optimization recommendations</li>
|
|
544
|
-
</ul>
|
|
545
|
-
</div>
|
|
546
|
-
</div>
|
|
547
|
-
</CardContent>
|
|
548
|
-
</Card>
|
|
549
|
-
</div>
|
|
550
|
-
)
|
|
551
|
-
}
|
|
552
|
-
|
|
553
|
-
export default FormDemo
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState, useRef } from 'react';
|
|
3
|
+
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from './card';
|
|
4
|
+
import { Button } from './button';
|
|
5
|
+
import { Badge } from './badge';
|
|
6
|
+
import { Tabs } from './navigation/tabs';
|
|
7
|
+
import MobileFormValidation from './mobile-form-validation';
|
|
8
|
+
export const FormDemo = () => {
|
|
9
|
+
const [activeTab, setActiveTab] = useState('basic');
|
|
10
|
+
const [formResults, setFormResults] = useState([]);
|
|
11
|
+
const [enableEnhancedFeatures, setEnableEnhancedFeatures] = useState(true);
|
|
12
|
+
const basicFormRef = useRef(null);
|
|
13
|
+
const advancedFormRef = useRef(null);
|
|
14
|
+
// Basic form fields
|
|
15
|
+
const basicFields = [
|
|
16
|
+
{
|
|
17
|
+
name: 'name',
|
|
18
|
+
label: 'Full Name',
|
|
19
|
+
type: { type: 'text' },
|
|
20
|
+
placeholder: 'Enter your full name',
|
|
21
|
+
rules: [
|
|
22
|
+
{ type: 'required', message: 'Name is required' },
|
|
23
|
+
{ type: 'minLength', value: 2, message: 'Name must be at least 2 characters' }
|
|
24
|
+
]
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
name: 'email',
|
|
28
|
+
label: 'Email Address',
|
|
29
|
+
type: { type: 'email' },
|
|
30
|
+
placeholder: 'Enter your email',
|
|
31
|
+
rules: [
|
|
32
|
+
{ type: 'required', message: 'Email is required' },
|
|
33
|
+
{ type: 'email', message: 'Please enter a valid email address' }
|
|
34
|
+
]
|
|
35
|
+
}
|
|
36
|
+
];
|
|
37
|
+
// Advanced form fields
|
|
38
|
+
const advancedFields = [
|
|
39
|
+
{
|
|
40
|
+
name: 'fullName',
|
|
41
|
+
label: 'Full Name',
|
|
42
|
+
type: { type: 'text' },
|
|
43
|
+
placeholder: 'Enter your full name',
|
|
44
|
+
rules: [
|
|
45
|
+
{ type: 'required', message: 'Full name is required' },
|
|
46
|
+
{ type: 'minLength', value: 3, message: 'Name must be at least 3 characters' },
|
|
47
|
+
{ type: 'maxLength', value: 50, message: 'Name must be less than 50 characters' }
|
|
48
|
+
]
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
name: 'emailAddress',
|
|
52
|
+
label: 'Email Address',
|
|
53
|
+
type: { type: 'email' },
|
|
54
|
+
placeholder: 'Enter your email address',
|
|
55
|
+
rules: [
|
|
56
|
+
{ type: 'required', message: 'Email is required' },
|
|
57
|
+
{ type: 'email', message: 'Please enter a valid email address' }
|
|
58
|
+
]
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
name: 'phoneNumber',
|
|
62
|
+
label: 'Phone Number',
|
|
63
|
+
type: { type: 'tel' },
|
|
64
|
+
placeholder: 'Enter your phone number',
|
|
65
|
+
rules: [
|
|
66
|
+
{ type: 'required', message: 'Phone number is required' },
|
|
67
|
+
{ type: 'pattern', value: /^[\+]?[0-9\s\-\(\)]{7,}$/, message: 'Please enter a valid phone number' }
|
|
68
|
+
]
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
name: 'website',
|
|
72
|
+
label: 'Website',
|
|
73
|
+
type: { type: 'url' },
|
|
74
|
+
placeholder: 'Enter your website URL',
|
|
75
|
+
rules: [
|
|
76
|
+
{ type: 'pattern', value: /^https?:\/\/.+/, message: 'Please enter a valid URL starting with http:// or https://' }
|
|
77
|
+
]
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
name: 'age',
|
|
81
|
+
label: 'Age',
|
|
82
|
+
type: { type: 'number' },
|
|
83
|
+
placeholder: 'Enter your age',
|
|
84
|
+
rules: [
|
|
85
|
+
{ type: 'required', message: 'Age is required' },
|
|
86
|
+
{ type: 'minLength', value: 1, message: 'Age must be at least 1' },
|
|
87
|
+
{ type: 'maxLength', value: 3, message: 'Age must be less than 1000' }
|
|
88
|
+
]
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
name: 'password',
|
|
92
|
+
label: 'Password',
|
|
93
|
+
type: { type: 'password' },
|
|
94
|
+
placeholder: 'Enter your password',
|
|
95
|
+
rules: [
|
|
96
|
+
{ type: 'required', message: 'Password is required' },
|
|
97
|
+
{ type: 'minLength', value: 8, message: 'Password must be at least 8 characters' },
|
|
98
|
+
{ type: 'pattern', value: /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)/, message: 'Password must contain lowercase, uppercase, and number' }
|
|
99
|
+
]
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
name: 'confirmPassword',
|
|
103
|
+
label: 'Confirm Password',
|
|
104
|
+
type: { type: 'password' },
|
|
105
|
+
placeholder: 'Confirm your password',
|
|
106
|
+
rules: [
|
|
107
|
+
{ type: 'required', message: 'Please confirm your password' },
|
|
108
|
+
{ type: 'custom', message: 'Passwords do not match', validator: (value) => {
|
|
109
|
+
const passwordField = advancedFields.find(f => f.name === 'password');
|
|
110
|
+
const passwordValue = passwordField ? document.getElementById('password')?.value : '';
|
|
111
|
+
return value === passwordValue;
|
|
112
|
+
} }
|
|
113
|
+
]
|
|
114
|
+
}
|
|
115
|
+
];
|
|
116
|
+
// Handle form submission
|
|
117
|
+
const handleFormSubmit = (formData, formType) => {
|
|
118
|
+
const result = {
|
|
119
|
+
type: formType,
|
|
120
|
+
data: formData,
|
|
121
|
+
timestamp: new Date()
|
|
122
|
+
};
|
|
123
|
+
setFormResults(prev => [result, ...prev.slice(0, 9)]); // Keep last 10 results
|
|
124
|
+
console.log(`${formType} form submitted:`, formData);
|
|
125
|
+
};
|
|
126
|
+
// Handle form validation change
|
|
127
|
+
const handleValidationChange = (isValid, formType) => {
|
|
128
|
+
console.log(`${formType} form validation:`, isValid ? 'Valid' : 'Invalid');
|
|
129
|
+
};
|
|
130
|
+
// Clear form results
|
|
131
|
+
const clearResults = () => {
|
|
132
|
+
setFormResults([]);
|
|
133
|
+
};
|
|
134
|
+
// Test form submission programmatically
|
|
135
|
+
const testFormSubmission = async (formType) => {
|
|
136
|
+
const formRef = formType === 'basic' ? basicFormRef : advancedFormRef;
|
|
137
|
+
if (formRef.current) {
|
|
138
|
+
try {
|
|
139
|
+
const result = await formRef.current.submit();
|
|
140
|
+
console.log(`${formType} form test submission:`, result);
|
|
141
|
+
}
|
|
142
|
+
catch (error) {
|
|
143
|
+
console.error(`${formType} form test submission error:`, error);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
};
|
|
147
|
+
// Test form validation programmatically
|
|
148
|
+
const testFormValidation = async (formType) => {
|
|
149
|
+
const formRef = formType === 'basic' ? basicFormRef : advancedFormRef;
|
|
150
|
+
if (formRef.current) {
|
|
151
|
+
try {
|
|
152
|
+
const isValid = await formRef.current.validate();
|
|
153
|
+
console.log(`${formType} form validation test:`, isValid ? 'Valid' : 'Invalid');
|
|
154
|
+
}
|
|
155
|
+
catch (error) {
|
|
156
|
+
console.error(`${formType} form validation test error:`, error);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
};
|
|
160
|
+
// Test form reset programmatically
|
|
161
|
+
const testFormReset = (formType) => {
|
|
162
|
+
const formRef = formType === 'basic' ? basicFormRef : advancedFormRef;
|
|
163
|
+
if (formRef.current) {
|
|
164
|
+
formRef.current.reset();
|
|
165
|
+
console.log(`${formType} form reset`);
|
|
166
|
+
}
|
|
167
|
+
};
|
|
168
|
+
return (_jsxs("div", { className: "space-y-6", children: [_jsxs("div", { className: "text-center space-y-2", children: [_jsx("h1", { className: "text-3xl font-bold", children: "\uD83D\uDCF1 Mobile Form Validation Demo" }), _jsx("p", { className: "text-gray-600", children: "Advanced form system with mobile validation, animated feedback, and performance optimization" }), _jsx(Badge, { variant: "outline", className: "text-sm", children: "Story 6: Advanced Form System with Mobile Validation" })] }), _jsx("div", { className: "flex justify-center", children: _jsxs("div", { className: "flex items-center gap-2 p-3 bg-gray-50 rounded-lg", children: [_jsx("span", { className: "text-sm font-medium", children: "Enhanced Features:" }), _jsx(Button, { variant: enableEnhancedFeatures ? 'default' : 'outline', size: "sm", onClick: () => setEnableEnhancedFeatures(!enableEnhancedFeatures), children: enableEnhancedFeatures ? 'Enabled' : 'Disabled' })] }) }), _jsx(Tabs, { tabs: [
|
|
169
|
+
{
|
|
170
|
+
id: 'basic',
|
|
171
|
+
label: 'Basic Form',
|
|
172
|
+
content: (_jsx("div", { className: "space-y-4", children: _jsxs(Card, { children: [_jsxs(CardHeader, { children: [_jsxs(CardTitle, { className: "flex items-center gap-2", children: ["\uD83D\uDE80 Basic Form Validation", _jsx(Badge, { variant: "secondary", children: "Simple Example" })] }), _jsx(CardDescription, { children: "Basic form with name and email validation. Demonstrates core validation features." })] }), _jsxs(CardContent, { className: "space-y-4", children: [_jsx(MobileFormValidation, { ref: basicFormRef, title: "Basic Contact Form", description: "Simple form with essential validation", fields: basicFields, onSubmit: (data) => handleFormSubmit(data, 'Basic'), onValidationChange: (isValid) => handleValidationChange(isValid, 'Basic'), enableEnhancedFeatures: enableEnhancedFeatures }), _jsxs("div", { className: "flex gap-2 pt-4 border-t", children: [_jsx(Button, { variant: "outline", size: "sm", onClick: () => testFormSubmission('basic'), children: "Test Submit" }), _jsx(Button, { variant: "outline", size: "sm", onClick: () => testFormValidation('basic'), children: "Test Validation" }), _jsx(Button, { variant: "outline", size: "sm", onClick: () => testFormReset('basic'), children: "Test Reset" })] })] })] }) }))
|
|
173
|
+
},
|
|
174
|
+
{
|
|
175
|
+
id: 'advanced',
|
|
176
|
+
label: 'Advanced Form',
|
|
177
|
+
content: (_jsx("div", { className: "space-y-4", children: _jsxs(Card, { children: [_jsxs(CardHeader, { children: [_jsxs(CardTitle, { className: "flex items-center gap-2", children: ["\uD83C\uDFAF Advanced Form Validation", _jsx(Badge, { variant: "default", children: "Full Featured" })] }), _jsx(CardDescription, { children: "Comprehensive form with multiple field types, complex validation rules, and all features enabled." })] }), _jsxs(CardContent, { className: "space-y-4", children: [_jsx(MobileFormValidation, { ref: advancedFormRef, title: "Advanced Registration Form", description: "Complete form with all validation types and optimizations", fields: advancedFields, onSubmit: (data) => handleFormSubmit(data, 'Advanced'), onValidationChange: (isValid) => handleValidationChange(isValid, 'Advanced'), enableEnhancedFeatures: enableEnhancedFeatures }), _jsxs("div", { className: "flex gap-2 pt-4 border-t", children: [_jsx(Button, { variant: "outline", size: "sm", onClick: () => testFormSubmission('advanced'), children: "Test Submit" }), _jsx(Button, { variant: "outline", size: "sm", onClick: () => testFormValidation('advanced'), children: "Test Validation" }), _jsx(Button, { variant: "outline", size: "sm", onClick: () => testFormReset('advanced'), children: "Test Reset" })] })] })] }) }))
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
id: 'performance',
|
|
181
|
+
label: 'Performance',
|
|
182
|
+
content: (_jsx("div", { className: "space-y-4", children: _jsxs(Card, { children: [_jsxs(CardHeader, { children: [_jsxs(CardTitle, { className: "flex items-center gap-2", children: ["\u26A1 Performance Monitoring", _jsx(Badge, { variant: "outline", children: "Real-time Metrics" })] }), _jsx(CardDescription, { children: "Monitor form performance, memory usage, battery status, and optimization scores." })] }), _jsxs(CardContent, { className: "space-y-4", children: [_jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4", children: [_jsxs("div", { className: "space-y-3", children: [_jsx("h4", { className: "font-semibold", children: "Performance Features" }), _jsxs("div", { className: "space-y-2 text-sm", children: [_jsxs("div", { className: "flex justify-between", children: [_jsx("span", { children: "Validation Throttling:" }), _jsx(Badge, { variant: "default", children: "Enabled" })] }), _jsxs("div", { className: "flex justify-between", children: [_jsx("span", { children: "Touch Event Optimization:" }), _jsx(Badge, { variant: enableEnhancedFeatures ? 'default' : 'secondary', children: enableEnhancedFeatures ? 'Enabled' : 'Disabled' })] }), _jsxs("div", { className: "flex justify-between", children: [_jsx("span", { children: "Memory Management:" }), _jsx(Badge, { variant: enableEnhancedFeatures ? 'default' : 'secondary', children: enableEnhancedFeatures ? 'Enabled' : 'Disabled' })] }), _jsxs("div", { className: "flex justify-between", children: [_jsx("span", { children: "Battery Optimization:" }), _jsx(Badge, { variant: enableEnhancedFeatures ? 'default' : 'secondary', children: enableEnhancedFeatures ? 'Enabled' : 'Disabled' })] })] })] }), _jsxs("div", { className: "space-y-3", children: [_jsx("h4", { className: "font-semibold", children: "Optimization Benefits" }), _jsxs("div", { className: "space-y-2 text-sm text-gray-600", children: [_jsx("p", { children: "\u2022 Reduced validation frequency for better performance" }), _jsx("p", { children: "\u2022 Touch event throttling for smooth mobile experience" }), _jsx("p", { children: "\u2022 Automatic memory cleanup to prevent leaks" }), _jsx("p", { children: "\u2022 Battery-aware optimizations for mobile devices" }), _jsx("p", { children: "\u2022 Real-time performance scoring and recommendations" })] })] })] }), _jsxs("div", { className: "p-4 bg-blue-50 border border-blue-200 rounded-lg", children: [_jsx("h4", { className: "font-semibold text-blue-800 mb-2", children: "Performance Tips" }), _jsxs("ul", { className: "text-sm text-blue-700 space-y-1", children: [_jsx("li", { children: "\u2022 Use validation throttling to reduce unnecessary validations" }), _jsx("li", { children: "\u2022 Enable touch event optimization for better mobile performance" }), _jsx("li", { children: "\u2022 Monitor memory usage and enable cleanup when needed" }), _jsx("li", { children: "\u2022 Enable battery optimization for mobile devices" }), _jsx("li", { children: "\u2022 Check performance scores and apply recommendations" })] })] })] })] }) }))
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
id: 'semantic',
|
|
186
|
+
label: 'Semantic Input',
|
|
187
|
+
content: (_jsx("div", { className: "space-y-4", children: _jsxs(Card, { children: [_jsxs(CardHeader, { children: [_jsxs(CardTitle, { className: "flex items-center gap-2", children: ["\uD83E\uDDE0 Semantic Input Optimization", _jsx(Badge, { variant: "outline", children: "Smart Detection" })] }), _jsx(CardDescription, { children: "Automatic input type detection, mobile keyboard optimization, and enhanced autocomplete." })] }), _jsxs(CardContent, { className: "space-y-4", children: [_jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4", children: [_jsxs("div", { className: "space-y-3", children: [_jsx("h4", { className: "font-semibold", children: "Semantic Features" }), _jsxs("div", { className: "space-y-2 text-sm", children: [_jsxs("div", { className: "flex justify-between", children: [_jsx("span", { children: "Auto Type Detection:" }), _jsx(Badge, { variant: "default", children: "Enabled" })] }), _jsxs("div", { className: "flex justify-between", children: [_jsx("span", { children: "Keyboard Optimization:" }), _jsx(Badge, { variant: enableEnhancedFeatures ? 'default' : 'secondary', children: enableEnhancedFeatures ? 'Enabled' : 'Disabled' })] }), _jsxs("div", { className: "flex justify-between", children: [_jsx("span", { children: "Autocomplete Enhancement:" }), _jsx(Badge, { variant: enableEnhancedFeatures ? 'default' : 'secondary', children: enableEnhancedFeatures ? 'Enabled' : 'Disabled' })] }), _jsxs("div", { className: "flex justify-between", children: [_jsx("span", { children: "Touch Optimization:" }), _jsx(Badge, { variant: "default", children: "Enabled" })] })] })] }), _jsxs("div", { className: "space-y-3", children: [_jsx("h4", { className: "font-semibold", children: "Detection Examples" }), _jsxs("div", { className: "space-y-2 text-sm text-gray-600", children: [_jsxs("p", { children: ["\u2022 ", _jsx("strong", { children: "Email:" }), " Detects @ symbol, sets email keyboard"] }), _jsxs("p", { children: ["\u2022 ", _jsx("strong", { children: "Phone:" }), " Detects numeric patterns, sets phone keyboard"] }), _jsxs("p", { children: ["\u2022 ", _jsx("strong", { children: "URL:" }), " Detects http/https, sets URL keyboard"] }), _jsxs("p", { children: ["\u2022 ", _jsx("strong", { children: "Search:" }), " Detects search context, optimizes input"] }), _jsxs("p", { children: ["\u2022 ", _jsx("strong", { children: "Number:" }), " Detects numeric patterns, sets numeric keyboard"] })] })] })] }), _jsxs("div", { className: "p-4 bg-green-50 border border-green-200 rounded-lg", children: [_jsx("h4", { className: "font-semibold text-green-800 mb-2", children: "Semantic Benefits" }), _jsxs("ul", { className: "text-sm text-green-700 space-y-1", children: [_jsx("li", { children: "\u2022 Automatic input type detection based on field name and content" }), _jsx("li", { children: "\u2022 Mobile keyboard optimization for better user experience" }), _jsx("li", { children: "\u2022 Enhanced autocomplete with appropriate suggestions" }), _jsx("li", { children: "\u2022 Touch-friendly input optimization" }), _jsx("li", { children: "\u2022 Accessibility improvements with proper input modes" })] })] })] })] }) }))
|
|
188
|
+
}
|
|
189
|
+
], activeTab: activeTab, onTabChange: (tabId) => setActiveTab(tabId), className: "w-full" }), formResults.length > 0 && (_jsxs(Card, { children: [_jsxs(CardHeader, { children: [_jsxs(CardTitle, { className: "flex items-center gap-2", children: ["\uD83D\uDCCA Form Submission Results", _jsx(Button, { variant: "outline", size: "sm", onClick: clearResults, children: "Clear Results" })] }), _jsx(CardDescription, { children: "Recent form submissions and their data" })] }), _jsx(CardContent, { children: _jsx("div", { className: "space-y-3 max-h-64 overflow-y-auto", children: formResults.map((result, index) => (_jsxs("div", { className: "p-3 bg-gray-50 rounded-lg", children: [_jsxs("div", { className: "flex justify-between items-start mb-2", children: [_jsx(Badge, { variant: "outline", children: result.type }), _jsx("span", { className: "text-xs text-gray-500", children: result.timestamp.toLocaleTimeString() })] }), _jsx("pre", { className: "text-xs bg-white p-2 rounded border overflow-x-auto", children: JSON.stringify(result.data, null, 2) })] }, index))) }) })] })), _jsxs(Card, { children: [_jsxs(CardHeader, { children: [_jsx(CardTitle, { children: "\uD83C\uDFAF Story 6 Implementation Summary" }), _jsx(CardDescription, { children: "Complete mobile form validation system with all requested features" })] }), _jsx(CardContent, { children: _jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4", children: [_jsxs("div", { className: "space-y-3", children: [_jsx("h4", { className: "font-semibold", children: "\u2705 Completed Features" }), _jsxs("ul", { className: "text-sm space-y-1 text-gray-600", children: [_jsx("li", { children: "\u2022 Mobile form validation system" }), _jsx("li", { children: "\u2022 Animated success/error states" }), _jsx("li", { children: "\u2022 Touch-friendly form layouts" }), _jsx("li", { children: "\u2022 Semantic input optimization" }), _jsx("li", { children: "\u2022 Performance-optimized validation" }), _jsx("li", { children: "\u2022 Haptic feedback and touch sounds" }), _jsx("li", { children: "\u2022 Battery-aware optimizations" }), _jsx("li", { children: "\u2022 Memory management and cleanup" })] })] }), _jsxs("div", { className: "space-y-3", children: [_jsx("h4", { className: "font-semibold", children: "\uD83D\uDE80 Advanced Capabilities" }), _jsxs("ul", { className: "text-sm space-y-1 text-gray-600", children: [_jsx("li", { children: "\u2022 Real-time performance monitoring" }), _jsx("li", { children: "\u2022 Automatic input type detection" }), _jsx("li", { children: "\u2022 Mobile keyboard optimization" }), _jsx("li", { children: "\u2022 Touch event throttling" }), _jsx("li", { children: "\u2022 Responsive layout adaptation" }), _jsx("li", { children: "\u2022 Accessibility enhancements" }), _jsx("li", { children: "\u2022 Performance scoring system" }), _jsx("li", { children: "\u2022 Optimization recommendations" })] })] })] }) })] })] }));
|
|
190
|
+
};
|
|
191
|
+
export default FormDemo;
|