@rakeyshgidwani/roger-ui-bank-theme-stan-design 0.2.11 → 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 -3
- package/dist/components/ui/navigation/index.js +0 -3
- 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 -5
- package/dist/components/ui/overlay/index.js +0 -5
- 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 -161
- package/dist/index.js +150 -161
- 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 -13
- package/dist/tokens/index.js +2 -13
- 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
package/dist/provider.esm.js
CHANGED
|
@@ -1,20 +1,4 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
// Simple theme provider - in real implementation would integrate with core provider
|
|
5
|
-
export interface StanDesignProviderProps {
|
|
6
|
-
children: React.ReactNode;
|
|
7
|
-
theme?: typeof StanDesignTheme;
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
export const StanDesignProvider: React.FC<StanDesignProviderProps> = ({
|
|
11
|
-
children,
|
|
12
|
-
theme = StanDesignTheme,
|
|
13
|
-
...props
|
|
14
|
-
}) => (
|
|
15
|
-
<div data-theme="stan-design" style={{ '--theme-name': 'stan-design' } as React.CSSProperties}>
|
|
16
|
-
{children}
|
|
17
|
-
</div>
|
|
18
|
-
);
|
|
19
|
-
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { stanDesignTheme } from './theme';
|
|
3
|
+
export const StanDesignProvider = ({ children, theme = stanDesignTheme, ...props }) => (_jsx("div", { "data-theme": "stan-design", style: { '--theme-name': 'stan-design' }, children: children }));
|
|
20
4
|
export default StanDesignProvider;
|
package/dist/provider.js
CHANGED
|
@@ -1,20 +1,4 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
// Simple theme provider - in real implementation would integrate with core provider
|
|
5
|
-
export interface StanDesignProviderProps {
|
|
6
|
-
children: React.ReactNode;
|
|
7
|
-
theme?: typeof StanDesignTheme;
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
export const StanDesignProvider: React.FC<StanDesignProviderProps> = ({
|
|
11
|
-
children,
|
|
12
|
-
theme = StanDesignTheme,
|
|
13
|
-
...props
|
|
14
|
-
}) => (
|
|
15
|
-
<div data-theme="stan-design" style={{ '--theme-name': 'stan-design' } as React.CSSProperties}>
|
|
16
|
-
{children}
|
|
17
|
-
</div>
|
|
18
|
-
);
|
|
19
|
-
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { stanDesignTheme } from './theme';
|
|
3
|
+
export const StanDesignProvider = ({ children, theme = stanDesignTheme, ...props }) => (_jsx("div", { "data-theme": "stan-design", style: { '--theme-name': 'stan-design' }, children: children }));
|
|
20
4
|
export default StanDesignProvider;
|
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CSS Layers Validation Tool
|
|
3
|
+
* Tests cascade order and specificity control in CSS layers
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Test if CSS layers are working correctly
|
|
7
|
+
* @returns {Object} Test results
|
|
8
|
+
*/
|
|
9
|
+
export function validateCSSLayers() {
|
|
10
|
+
const results = {
|
|
11
|
+
layerOrder: testLayerOrder(),
|
|
12
|
+
specificity: testSpecificity(),
|
|
13
|
+
inheritance: testInheritance(),
|
|
14
|
+
responsive: testResponsiveOrder(),
|
|
15
|
+
summary: null
|
|
16
|
+
};
|
|
17
|
+
// Calculate summary
|
|
18
|
+
const totalTests = Object.values(results).reduce((acc, testGroup) => {
|
|
19
|
+
if (testGroup && typeof testGroup === 'object' && testGroup.tests) {
|
|
20
|
+
return acc + testGroup.tests.length;
|
|
21
|
+
}
|
|
22
|
+
return acc;
|
|
23
|
+
}, 0);
|
|
24
|
+
const passedTests = Object.values(results).reduce((acc, testGroup) => {
|
|
25
|
+
if (testGroup && typeof testGroup === 'object' && testGroup.tests) {
|
|
26
|
+
return acc + testGroup.tests.filter(test => test.passed).length;
|
|
27
|
+
}
|
|
28
|
+
return acc;
|
|
29
|
+
}, 0);
|
|
30
|
+
results.summary = {
|
|
31
|
+
total: totalTests,
|
|
32
|
+
passed: passedTests,
|
|
33
|
+
failed: totalTests - passedTests,
|
|
34
|
+
percentage: totalTests > 0 ? Math.round((passedTests / totalTests) * 100) : 0
|
|
35
|
+
};
|
|
36
|
+
return results;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Test layer cascade order
|
|
40
|
+
*/
|
|
41
|
+
function testLayerOrder() {
|
|
42
|
+
const tests = [];
|
|
43
|
+
// Create test element
|
|
44
|
+
const testElement = document.createElement('div');
|
|
45
|
+
testElement.className = 'layer-test';
|
|
46
|
+
testElement.style.position = 'absolute';
|
|
47
|
+
testElement.style.visibility = 'hidden';
|
|
48
|
+
document.body.appendChild(testElement);
|
|
49
|
+
try {
|
|
50
|
+
const computedStyle = window.getComputedStyle(testElement);
|
|
51
|
+
const backgroundColor = computedStyle.backgroundColor;
|
|
52
|
+
const content = computedStyle.content;
|
|
53
|
+
// Test that overrides layer wins (purple background)
|
|
54
|
+
tests.push({
|
|
55
|
+
name: 'Layer order - overrides wins',
|
|
56
|
+
passed: backgroundColor === 'rgb(128, 0, 128)' || backgroundColor === 'purple',
|
|
57
|
+
expected: 'purple background from overrides layer',
|
|
58
|
+
actual: backgroundColor
|
|
59
|
+
});
|
|
60
|
+
tests.push({
|
|
61
|
+
name: 'Layer content property',
|
|
62
|
+
passed: content === '"overrides"',
|
|
63
|
+
expected: '"overrides"',
|
|
64
|
+
actual: content
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
tests.push({
|
|
69
|
+
name: 'Layer order test',
|
|
70
|
+
passed: false,
|
|
71
|
+
expected: 'No errors',
|
|
72
|
+
actual: error.message
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
finally {
|
|
76
|
+
document.body.removeChild(testElement);
|
|
77
|
+
}
|
|
78
|
+
return {
|
|
79
|
+
category: 'Layer Order',
|
|
80
|
+
tests
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Test specificity within layers
|
|
85
|
+
*/
|
|
86
|
+
function testSpecificity() {
|
|
87
|
+
const tests = [];
|
|
88
|
+
const testElement = document.createElement('div');
|
|
89
|
+
testElement.className = 'specificity-test';
|
|
90
|
+
testElement.style.position = 'absolute';
|
|
91
|
+
testElement.style.visibility = 'hidden';
|
|
92
|
+
document.body.appendChild(testElement);
|
|
93
|
+
try {
|
|
94
|
+
const computedStyle = window.getComputedStyle(testElement);
|
|
95
|
+
const backgroundColor = computedStyle.backgroundColor;
|
|
96
|
+
// Test that utilities layer wins over components layer
|
|
97
|
+
tests.push({
|
|
98
|
+
name: 'Specificity - utilities over components',
|
|
99
|
+
passed: backgroundColor === 'rgb(0, 0, 255)' || backgroundColor === 'blue',
|
|
100
|
+
expected: 'blue background from utilities layer',
|
|
101
|
+
actual: backgroundColor
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
catch (error) {
|
|
105
|
+
tests.push({
|
|
106
|
+
name: 'Specificity test',
|
|
107
|
+
passed: false,
|
|
108
|
+
expected: 'No errors',
|
|
109
|
+
actual: error.message
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
finally {
|
|
113
|
+
document.body.removeChild(testElement);
|
|
114
|
+
}
|
|
115
|
+
return {
|
|
116
|
+
category: 'Specificity',
|
|
117
|
+
tests
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Test inheritance within layers
|
|
122
|
+
*/
|
|
123
|
+
function testInheritance() {
|
|
124
|
+
const tests = [];
|
|
125
|
+
const parentElement = document.createElement('div');
|
|
126
|
+
parentElement.className = 'inheritance-test';
|
|
127
|
+
const childElement = document.createElement('div');
|
|
128
|
+
childElement.className = 'child';
|
|
129
|
+
parentElement.appendChild(childElement);
|
|
130
|
+
parentElement.style.position = 'absolute';
|
|
131
|
+
parentElement.style.visibility = 'hidden';
|
|
132
|
+
document.body.appendChild(parentElement);
|
|
133
|
+
try {
|
|
134
|
+
const parentStyle = window.getComputedStyle(parentElement);
|
|
135
|
+
const childStyle = window.getComputedStyle(childElement);
|
|
136
|
+
// Test that utilities layer color overrides components layer
|
|
137
|
+
tests.push({
|
|
138
|
+
name: 'Layer inheritance - parent color',
|
|
139
|
+
passed: parentStyle.color === 'rgb(0, 0, 255)' || parentStyle.color === 'blue',
|
|
140
|
+
expected: 'blue color from utilities layer',
|
|
141
|
+
actual: parentStyle.color
|
|
142
|
+
});
|
|
143
|
+
// Test that child inherits the overridden color
|
|
144
|
+
tests.push({
|
|
145
|
+
name: 'Layer inheritance - child inherits',
|
|
146
|
+
passed: childStyle.color === 'rgb(0, 0, 255)' || childStyle.color === 'blue',
|
|
147
|
+
expected: 'inherited blue color',
|
|
148
|
+
actual: childStyle.color
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
catch (error) {
|
|
152
|
+
tests.push({
|
|
153
|
+
name: 'Inheritance test',
|
|
154
|
+
passed: false,
|
|
155
|
+
expected: 'No errors',
|
|
156
|
+
actual: error.message
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
finally {
|
|
160
|
+
document.body.removeChild(parentElement);
|
|
161
|
+
}
|
|
162
|
+
return {
|
|
163
|
+
category: 'Inheritance',
|
|
164
|
+
tests
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Test responsive behavior within layers
|
|
169
|
+
*/
|
|
170
|
+
function testResponsiveOrder() {
|
|
171
|
+
const tests = [];
|
|
172
|
+
const testElement = document.createElement('div');
|
|
173
|
+
testElement.className = 'responsive-layer-test';
|
|
174
|
+
testElement.style.position = 'absolute';
|
|
175
|
+
testElement.style.visibility = 'hidden';
|
|
176
|
+
document.body.appendChild(testElement);
|
|
177
|
+
try {
|
|
178
|
+
const computedStyle = window.getComputedStyle(testElement);
|
|
179
|
+
const backgroundColor = computedStyle.backgroundColor;
|
|
180
|
+
// Test that utilities layer wins in responsive context
|
|
181
|
+
if (window.innerWidth <= 768) {
|
|
182
|
+
tests.push({
|
|
183
|
+
name: 'Responsive layers - mobile utilities win',
|
|
184
|
+
passed: backgroundColor === 'rgb(0, 128, 0)' || backgroundColor === 'green',
|
|
185
|
+
expected: 'green background from utilities layer',
|
|
186
|
+
actual: backgroundColor
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
else {
|
|
190
|
+
tests.push({
|
|
191
|
+
name: 'Responsive layers - desktop utilities win',
|
|
192
|
+
passed: backgroundColor === 'rgb(0, 0, 255)' || backgroundColor === 'blue',
|
|
193
|
+
expected: 'blue background from utilities layer',
|
|
194
|
+
actual: backgroundColor
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
catch (error) {
|
|
199
|
+
tests.push({
|
|
200
|
+
name: 'Responsive layer test',
|
|
201
|
+
passed: false,
|
|
202
|
+
expected: 'No errors',
|
|
203
|
+
actual: error.message
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
finally {
|
|
207
|
+
document.body.removeChild(testElement);
|
|
208
|
+
}
|
|
209
|
+
return {
|
|
210
|
+
category: 'Responsive',
|
|
211
|
+
tests
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Generate a visual report of layer validation
|
|
216
|
+
* @param {Object} results - Validation results
|
|
217
|
+
* @returns {HTMLElement} Report element
|
|
218
|
+
*/
|
|
219
|
+
export function generateLayerReport(results) {
|
|
220
|
+
const reportElement = document.createElement('div');
|
|
221
|
+
reportElement.className = 'layer-diagnostic';
|
|
222
|
+
const title = document.createElement('h3');
|
|
223
|
+
title.textContent = `CSS Layers Validation (${results.summary.passed}/${results.summary.total} passed)`;
|
|
224
|
+
reportElement.appendChild(title);
|
|
225
|
+
// Add overall status
|
|
226
|
+
const overallStatus = document.createElement('div');
|
|
227
|
+
overallStatus.className = `test-result ${results.summary.percentage >= 80 ? 'pass' : 'fail'}`;
|
|
228
|
+
overallStatus.textContent = `Overall: ${results.summary.percentage}% passed`;
|
|
229
|
+
reportElement.appendChild(overallStatus);
|
|
230
|
+
// Add category results
|
|
231
|
+
Object.values(results).forEach(category => {
|
|
232
|
+
if (category && category.category && category.tests) {
|
|
233
|
+
const categoryDiv = document.createElement('div');
|
|
234
|
+
categoryDiv.style.marginTop = '10px';
|
|
235
|
+
categoryDiv.innerHTML = `<strong>${category.category}:</strong>`;
|
|
236
|
+
reportElement.appendChild(categoryDiv);
|
|
237
|
+
category.tests.forEach(test => {
|
|
238
|
+
const testDiv = document.createElement('div');
|
|
239
|
+
testDiv.className = `test-result ${test.passed ? 'pass' : 'fail'}`;
|
|
240
|
+
testDiv.textContent = `${test.passed ? '✓' : '✗'} ${test.name}`;
|
|
241
|
+
if (!test.passed) {
|
|
242
|
+
testDiv.title = `Expected: ${test.expected}, Got: ${test.actual}`;
|
|
243
|
+
}
|
|
244
|
+
reportElement.appendChild(testDiv);
|
|
245
|
+
});
|
|
246
|
+
}
|
|
247
|
+
});
|
|
248
|
+
return reportElement;
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* Run validation and display results
|
|
252
|
+
*/
|
|
253
|
+
export function runLayerValidation() {
|
|
254
|
+
const results = validateCSSLayers();
|
|
255
|
+
const report = generateLayerReport(results);
|
|
256
|
+
// Remove existing report
|
|
257
|
+
const existingReport = document.querySelector('.layer-diagnostic');
|
|
258
|
+
if (existingReport) {
|
|
259
|
+
existingReport.remove();
|
|
260
|
+
}
|
|
261
|
+
// Add new report
|
|
262
|
+
document.body.appendChild(report);
|
|
263
|
+
// Auto-remove after 10 seconds
|
|
264
|
+
setTimeout(() => {
|
|
265
|
+
if (report.parentNode) {
|
|
266
|
+
report.parentNode.removeChild(report);
|
|
267
|
+
}
|
|
268
|
+
}, 10000);
|
|
269
|
+
return results;
|
|
270
|
+
}
|
|
271
|
+
// Auto-run validation if in development mode
|
|
272
|
+
if (process.env.NODE_ENV === 'development') {
|
|
273
|
+
// Run validation after a short delay to ensure CSS is loaded
|
|
274
|
+
setTimeout(runLayerValidation, 1000);
|
|
275
|
+
}
|
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CSS Layers Validation Tool
|
|
3
|
+
* Tests cascade order and specificity control in CSS layers
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Test if CSS layers are working correctly
|
|
7
|
+
* @returns {Object} Test results
|
|
8
|
+
*/
|
|
9
|
+
export function validateCSSLayers() {
|
|
10
|
+
const results = {
|
|
11
|
+
layerOrder: testLayerOrder(),
|
|
12
|
+
specificity: testSpecificity(),
|
|
13
|
+
inheritance: testInheritance(),
|
|
14
|
+
responsive: testResponsiveOrder(),
|
|
15
|
+
summary: null
|
|
16
|
+
};
|
|
17
|
+
// Calculate summary
|
|
18
|
+
const totalTests = Object.values(results).reduce((acc, testGroup) => {
|
|
19
|
+
if (testGroup && typeof testGroup === 'object' && testGroup.tests) {
|
|
20
|
+
return acc + testGroup.tests.length;
|
|
21
|
+
}
|
|
22
|
+
return acc;
|
|
23
|
+
}, 0);
|
|
24
|
+
const passedTests = Object.values(results).reduce((acc, testGroup) => {
|
|
25
|
+
if (testGroup && typeof testGroup === 'object' && testGroup.tests) {
|
|
26
|
+
return acc + testGroup.tests.filter(test => test.passed).length;
|
|
27
|
+
}
|
|
28
|
+
return acc;
|
|
29
|
+
}, 0);
|
|
30
|
+
results.summary = {
|
|
31
|
+
total: totalTests,
|
|
32
|
+
passed: passedTests,
|
|
33
|
+
failed: totalTests - passedTests,
|
|
34
|
+
percentage: totalTests > 0 ? Math.round((passedTests / totalTests) * 100) : 0
|
|
35
|
+
};
|
|
36
|
+
return results;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Test layer cascade order
|
|
40
|
+
*/
|
|
41
|
+
function testLayerOrder() {
|
|
42
|
+
const tests = [];
|
|
43
|
+
// Create test element
|
|
44
|
+
const testElement = document.createElement('div');
|
|
45
|
+
testElement.className = 'layer-test';
|
|
46
|
+
testElement.style.position = 'absolute';
|
|
47
|
+
testElement.style.visibility = 'hidden';
|
|
48
|
+
document.body.appendChild(testElement);
|
|
49
|
+
try {
|
|
50
|
+
const computedStyle = window.getComputedStyle(testElement);
|
|
51
|
+
const backgroundColor = computedStyle.backgroundColor;
|
|
52
|
+
const content = computedStyle.content;
|
|
53
|
+
// Test that overrides layer wins (purple background)
|
|
54
|
+
tests.push({
|
|
55
|
+
name: 'Layer order - overrides wins',
|
|
56
|
+
passed: backgroundColor === 'rgb(128, 0, 128)' || backgroundColor === 'purple',
|
|
57
|
+
expected: 'purple background from overrides layer',
|
|
58
|
+
actual: backgroundColor
|
|
59
|
+
});
|
|
60
|
+
tests.push({
|
|
61
|
+
name: 'Layer content property',
|
|
62
|
+
passed: content === '"overrides"',
|
|
63
|
+
expected: '"overrides"',
|
|
64
|
+
actual: content
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
tests.push({
|
|
69
|
+
name: 'Layer order test',
|
|
70
|
+
passed: false,
|
|
71
|
+
expected: 'No errors',
|
|
72
|
+
actual: error.message
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
finally {
|
|
76
|
+
document.body.removeChild(testElement);
|
|
77
|
+
}
|
|
78
|
+
return {
|
|
79
|
+
category: 'Layer Order',
|
|
80
|
+
tests
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Test specificity within layers
|
|
85
|
+
*/
|
|
86
|
+
function testSpecificity() {
|
|
87
|
+
const tests = [];
|
|
88
|
+
const testElement = document.createElement('div');
|
|
89
|
+
testElement.className = 'specificity-test';
|
|
90
|
+
testElement.style.position = 'absolute';
|
|
91
|
+
testElement.style.visibility = 'hidden';
|
|
92
|
+
document.body.appendChild(testElement);
|
|
93
|
+
try {
|
|
94
|
+
const computedStyle = window.getComputedStyle(testElement);
|
|
95
|
+
const backgroundColor = computedStyle.backgroundColor;
|
|
96
|
+
// Test that utilities layer wins over components layer
|
|
97
|
+
tests.push({
|
|
98
|
+
name: 'Specificity - utilities over components',
|
|
99
|
+
passed: backgroundColor === 'rgb(0, 0, 255)' || backgroundColor === 'blue',
|
|
100
|
+
expected: 'blue background from utilities layer',
|
|
101
|
+
actual: backgroundColor
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
catch (error) {
|
|
105
|
+
tests.push({
|
|
106
|
+
name: 'Specificity test',
|
|
107
|
+
passed: false,
|
|
108
|
+
expected: 'No errors',
|
|
109
|
+
actual: error.message
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
finally {
|
|
113
|
+
document.body.removeChild(testElement);
|
|
114
|
+
}
|
|
115
|
+
return {
|
|
116
|
+
category: 'Specificity',
|
|
117
|
+
tests
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Test inheritance within layers
|
|
122
|
+
*/
|
|
123
|
+
function testInheritance() {
|
|
124
|
+
const tests = [];
|
|
125
|
+
const parentElement = document.createElement('div');
|
|
126
|
+
parentElement.className = 'inheritance-test';
|
|
127
|
+
const childElement = document.createElement('div');
|
|
128
|
+
childElement.className = 'child';
|
|
129
|
+
parentElement.appendChild(childElement);
|
|
130
|
+
parentElement.style.position = 'absolute';
|
|
131
|
+
parentElement.style.visibility = 'hidden';
|
|
132
|
+
document.body.appendChild(parentElement);
|
|
133
|
+
try {
|
|
134
|
+
const parentStyle = window.getComputedStyle(parentElement);
|
|
135
|
+
const childStyle = window.getComputedStyle(childElement);
|
|
136
|
+
// Test that utilities layer color overrides components layer
|
|
137
|
+
tests.push({
|
|
138
|
+
name: 'Layer inheritance - parent color',
|
|
139
|
+
passed: parentStyle.color === 'rgb(0, 0, 255)' || parentStyle.color === 'blue',
|
|
140
|
+
expected: 'blue color from utilities layer',
|
|
141
|
+
actual: parentStyle.color
|
|
142
|
+
});
|
|
143
|
+
// Test that child inherits the overridden color
|
|
144
|
+
tests.push({
|
|
145
|
+
name: 'Layer inheritance - child inherits',
|
|
146
|
+
passed: childStyle.color === 'rgb(0, 0, 255)' || childStyle.color === 'blue',
|
|
147
|
+
expected: 'inherited blue color',
|
|
148
|
+
actual: childStyle.color
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
catch (error) {
|
|
152
|
+
tests.push({
|
|
153
|
+
name: 'Inheritance test',
|
|
154
|
+
passed: false,
|
|
155
|
+
expected: 'No errors',
|
|
156
|
+
actual: error.message
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
finally {
|
|
160
|
+
document.body.removeChild(parentElement);
|
|
161
|
+
}
|
|
162
|
+
return {
|
|
163
|
+
category: 'Inheritance',
|
|
164
|
+
tests
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Test responsive behavior within layers
|
|
169
|
+
*/
|
|
170
|
+
function testResponsiveOrder() {
|
|
171
|
+
const tests = [];
|
|
172
|
+
const testElement = document.createElement('div');
|
|
173
|
+
testElement.className = 'responsive-layer-test';
|
|
174
|
+
testElement.style.position = 'absolute';
|
|
175
|
+
testElement.style.visibility = 'hidden';
|
|
176
|
+
document.body.appendChild(testElement);
|
|
177
|
+
try {
|
|
178
|
+
const computedStyle = window.getComputedStyle(testElement);
|
|
179
|
+
const backgroundColor = computedStyle.backgroundColor;
|
|
180
|
+
// Test that utilities layer wins in responsive context
|
|
181
|
+
if (window.innerWidth <= 768) {
|
|
182
|
+
tests.push({
|
|
183
|
+
name: 'Responsive layers - mobile utilities win',
|
|
184
|
+
passed: backgroundColor === 'rgb(0, 128, 0)' || backgroundColor === 'green',
|
|
185
|
+
expected: 'green background from utilities layer',
|
|
186
|
+
actual: backgroundColor
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
else {
|
|
190
|
+
tests.push({
|
|
191
|
+
name: 'Responsive layers - desktop utilities win',
|
|
192
|
+
passed: backgroundColor === 'rgb(0, 0, 255)' || backgroundColor === 'blue',
|
|
193
|
+
expected: 'blue background from utilities layer',
|
|
194
|
+
actual: backgroundColor
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
catch (error) {
|
|
199
|
+
tests.push({
|
|
200
|
+
name: 'Responsive layer test',
|
|
201
|
+
passed: false,
|
|
202
|
+
expected: 'No errors',
|
|
203
|
+
actual: error.message
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
finally {
|
|
207
|
+
document.body.removeChild(testElement);
|
|
208
|
+
}
|
|
209
|
+
return {
|
|
210
|
+
category: 'Responsive',
|
|
211
|
+
tests
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Generate a visual report of layer validation
|
|
216
|
+
* @param {Object} results - Validation results
|
|
217
|
+
* @returns {HTMLElement} Report element
|
|
218
|
+
*/
|
|
219
|
+
export function generateLayerReport(results) {
|
|
220
|
+
const reportElement = document.createElement('div');
|
|
221
|
+
reportElement.className = 'layer-diagnostic';
|
|
222
|
+
const title = document.createElement('h3');
|
|
223
|
+
title.textContent = `CSS Layers Validation (${results.summary.passed}/${results.summary.total} passed)`;
|
|
224
|
+
reportElement.appendChild(title);
|
|
225
|
+
// Add overall status
|
|
226
|
+
const overallStatus = document.createElement('div');
|
|
227
|
+
overallStatus.className = `test-result ${results.summary.percentage >= 80 ? 'pass' : 'fail'}`;
|
|
228
|
+
overallStatus.textContent = `Overall: ${results.summary.percentage}% passed`;
|
|
229
|
+
reportElement.appendChild(overallStatus);
|
|
230
|
+
// Add category results
|
|
231
|
+
Object.values(results).forEach(category => {
|
|
232
|
+
if (category && category.category && category.tests) {
|
|
233
|
+
const categoryDiv = document.createElement('div');
|
|
234
|
+
categoryDiv.style.marginTop = '10px';
|
|
235
|
+
categoryDiv.innerHTML = `<strong>${category.category}:</strong>`;
|
|
236
|
+
reportElement.appendChild(categoryDiv);
|
|
237
|
+
category.tests.forEach(test => {
|
|
238
|
+
const testDiv = document.createElement('div');
|
|
239
|
+
testDiv.className = `test-result ${test.passed ? 'pass' : 'fail'}`;
|
|
240
|
+
testDiv.textContent = `${test.passed ? '✓' : '✗'} ${test.name}`;
|
|
241
|
+
if (!test.passed) {
|
|
242
|
+
testDiv.title = `Expected: ${test.expected}, Got: ${test.actual}`;
|
|
243
|
+
}
|
|
244
|
+
reportElement.appendChild(testDiv);
|
|
245
|
+
});
|
|
246
|
+
}
|
|
247
|
+
});
|
|
248
|
+
return reportElement;
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* Run validation and display results
|
|
252
|
+
*/
|
|
253
|
+
export function runLayerValidation() {
|
|
254
|
+
const results = validateCSSLayers();
|
|
255
|
+
const report = generateLayerReport(results);
|
|
256
|
+
// Remove existing report
|
|
257
|
+
const existingReport = document.querySelector('.layer-diagnostic');
|
|
258
|
+
if (existingReport) {
|
|
259
|
+
existingReport.remove();
|
|
260
|
+
}
|
|
261
|
+
// Add new report
|
|
262
|
+
document.body.appendChild(report);
|
|
263
|
+
// Auto-remove after 10 seconds
|
|
264
|
+
setTimeout(() => {
|
|
265
|
+
if (report.parentNode) {
|
|
266
|
+
report.parentNode.removeChild(report);
|
|
267
|
+
}
|
|
268
|
+
}, 10000);
|
|
269
|
+
return results;
|
|
270
|
+
}
|
|
271
|
+
// Auto-run validation if in development mode
|
|
272
|
+
if (process.env.NODE_ENV === 'development') {
|
|
273
|
+
// Run validation after a short delay to ensure CSS is loaded
|
|
274
|
+
setTimeout(runLayerValidation, 1000);
|
|
275
|
+
}
|