@rakeyshgidwani/roger-ui-bank-theme-stan-design 0.2.7 → 0.2.8
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.d.ts +259 -0
- package/dist/components/ui/accessibility-demo.esm.js +265 -0
- package/dist/components/ui/accessibility-demo.js +265 -0
- package/dist/components/ui/advanced-component-architecture-demo.d.ts +718 -0
- package/dist/components/ui/advanced-component-architecture-demo.esm.js +860 -0
- package/dist/components/ui/advanced-component-architecture-demo.js +860 -0
- package/dist/components/ui/advanced-transition-system-demo.d.ts +660 -0
- package/dist/components/ui/advanced-transition-system-demo.esm.js +624 -0
- package/dist/components/ui/advanced-transition-system-demo.js +624 -0
- package/dist/components/ui/advanced-transition-system.d.ts +391 -0
- package/dist/components/ui/advanced-transition-system.esm.js +351 -0
- package/dist/components/ui/advanced-transition-system.js +351 -0
- package/dist/components/ui/animation/animated-container.d.ts +162 -0
- package/dist/components/ui/animation/animated-container.esm.js +143 -0
- package/dist/components/ui/animation/animated-container.js +143 -0
- package/dist/components/ui/animation/index.d.ts +9 -0
- package/dist/components/ui/animation/index.esm.js +19 -0
- package/dist/components/ui/animation/index.js +19 -0
- package/dist/components/ui/animation/staggered-container.d.ts +64 -0
- package/dist/components/ui/animation/staggered-container.esm.js +59 -0
- package/dist/components/ui/animation/staggered-container.js +59 -0
- package/dist/components/ui/animation-demo.d.ts +238 -0
- package/dist/components/ui/animation-demo.esm.js +218 -0
- package/dist/components/ui/animation-demo.js +218 -0
- package/dist/components/ui/badge.d.ts +28 -0
- package/dist/components/ui/badge.esm.js +30 -0
- package/dist/components/ui/badge.js +30 -0
- package/dist/components/ui/battery-conscious-animation-demo.d.ts +561 -0
- package/dist/components/ui/battery-conscious-animation-demo.esm.js +533 -0
- package/dist/components/ui/battery-conscious-animation-demo.js +533 -0
- package/dist/components/ui/border-radius-shadow-demo.d.ts +183 -0
- package/dist/components/ui/border-radius-shadow-demo.esm.js +176 -0
- package/dist/components/ui/border-radius-shadow-demo.js +176 -0
- package/dist/components/ui/button.d.ts +33 -0
- package/dist/components/ui/button.esm.js +30 -0
- package/dist/components/ui/button.js +30 -0
- package/dist/components/ui/card.d.ts +205 -0
- package/dist/components/ui/card.esm.js +182 -0
- package/dist/components/ui/card.js +182 -0
- package/dist/components/ui/checkbox.d.ts +26 -0
- package/dist/components/ui/checkbox.esm.js +30 -0
- package/dist/components/ui/checkbox.js +30 -0
- package/dist/components/ui/color-preview.d.ts +402 -0
- package/dist/components/ui/color-preview.esm.js +388 -0
- package/dist/components/ui/color-preview.js +388 -0
- package/dist/components/ui/data-display/chart.d.ts +646 -0
- package/dist/components/ui/data-display/chart.esm.js +625 -0
- package/dist/components/ui/data-display/chart.js +625 -0
- package/dist/components/ui/data-display/data-grid-simple.d.ts +73 -0
- package/dist/components/ui/data-display/data-grid-simple.esm.js +76 -0
- package/dist/components/ui/data-display/data-grid-simple.js +76 -0
- package/dist/components/ui/data-display/data-grid.d.ts +670 -0
- package/dist/components/ui/data-display/data-grid.esm.js +667 -0
- package/dist/components/ui/data-display/data-grid.js +667 -0
- package/dist/components/ui/data-display/list.d.ts +448 -0
- package/dist/components/ui/data-display/list.esm.js +448 -0
- package/dist/components/ui/data-display/list.js +448 -0
- package/dist/components/ui/data-display/table.d.ts +472 -0
- package/dist/components/ui/data-display/table.esm.js +474 -0
- package/dist/components/ui/data-display/table.js +474 -0
- package/dist/components/ui/data-display/timeline.d.ts +433 -0
- package/dist/components/ui/data-display/timeline.esm.js +436 -0
- package/dist/components/ui/data-display/timeline.js +436 -0
- package/dist/components/ui/data-display/tree.d.ts +594 -0
- package/dist/components/ui/data-display/tree.esm.js +570 -0
- package/dist/components/ui/data-display/tree.js +570 -0
- package/dist/components/ui/data-display/types.d.ts +534 -0
- package/dist/components/ui/data-display/types.esm.js +511 -0
- package/dist/components/ui/data-display/types.js +511 -0
- package/dist/components/ui/enterprise-mobile-experience-demo.d.ts +735 -0
- package/dist/components/ui/enterprise-mobile-experience-demo.esm.js +699 -0
- package/dist/components/ui/enterprise-mobile-experience-demo.js +699 -0
- package/dist/components/ui/enterprise-mobile-experience.d.ts +461 -0
- package/dist/components/ui/enterprise-mobile-experience.esm.js +413 -0
- package/dist/components/ui/enterprise-mobile-experience.js +413 -0
- package/dist/components/ui/feedback/alert.d.ts +154 -0
- package/dist/components/ui/feedback/alert.esm.js +150 -0
- package/dist/components/ui/feedback/alert.js +150 -0
- package/dist/components/ui/feedback/progress.d.ts +288 -0
- package/dist/components/ui/feedback/progress.esm.js +269 -0
- package/dist/components/ui/feedback/progress.js +269 -0
- package/dist/components/ui/feedback/skeleton.d.ts +182 -0
- package/dist/components/ui/feedback/skeleton.esm.js +175 -0
- package/dist/components/ui/feedback/skeleton.js +175 -0
- package/dist/components/ui/feedback/toast.d.ts +277 -0
- package/dist/components/ui/feedback/toast.esm.js +256 -0
- package/dist/components/ui/feedback/toast.js +256 -0
- package/dist/components/ui/feedback/types.d.ts +123 -0
- package/dist/components/ui/feedback/types.esm.js +125 -0
- package/dist/components/ui/feedback/types.js +125 -0
- package/dist/components/ui/font-preview.d.ts +282 -0
- package/dist/components/ui/font-preview.esm.js +286 -0
- package/dist/components/ui/font-preview.js +286 -0
- package/dist/components/ui/form-demo.d.ts +544 -0
- package/dist/components/ui/form-demo.esm.js +516 -0
- package/dist/components/ui/form-demo.js +516 -0
- package/dist/components/ui/hardware-acceleration-demo.d.ts +540 -0
- package/dist/components/ui/hardware-acceleration-demo.esm.js +497 -0
- package/dist/components/ui/hardware-acceleration-demo.js +497 -0
- package/dist/components/ui/input.d.ts +33 -0
- package/dist/components/ui/input.esm.js +32 -0
- package/dist/components/ui/input.js +32 -0
- package/dist/components/ui/label.d.ts +13 -0
- package/dist/components/ui/label.esm.js +16 -0
- package/dist/components/ui/label.js +16 -0
- package/dist/components/ui/layout-demo.d.ts +352 -0
- package/dist/components/ui/layout-demo.esm.js +342 -0
- package/dist/components/ui/layout-demo.js +342 -0
- package/dist/components/ui/layouts/adaptive-layout.d.ts +132 -0
- package/dist/components/ui/layouts/adaptive-layout.esm.js +120 -0
- package/dist/components/ui/layouts/adaptive-layout.js +120 -0
- package/dist/components/ui/layouts/desktop-layout.d.ts +219 -0
- package/dist/components/ui/layouts/desktop-layout.esm.js +204 -0
- package/dist/components/ui/layouts/desktop-layout.js +204 -0
- package/dist/components/ui/layouts/index.d.ts +5 -0
- package/dist/components/ui/layouts/index.esm.js +10 -0
- package/dist/components/ui/layouts/index.js +10 -0
- package/dist/components/ui/layouts/mobile-layout.d.ts +158 -0
- package/dist/components/ui/layouts/mobile-layout.esm.js +152 -0
- package/dist/components/ui/layouts/mobile-layout.js +152 -0
- package/dist/components/ui/layouts/tablet-layout.d.ts +192 -0
- package/dist/components/ui/layouts/tablet-layout.esm.js +183 -0
- package/dist/components/ui/layouts/tablet-layout.js +183 -0
- package/dist/components/ui/mobile-form-validation.d.ts +439 -0
- package/dist/components/ui/mobile-form-validation.esm.js +418 -0
- package/dist/components/ui/mobile-form-validation.js +418 -0
- package/dist/components/ui/mobile-input-demo.d.ts +197 -0
- package/dist/components/ui/mobile-input-demo.esm.js +195 -0
- package/dist/components/ui/mobile-input-demo.js +195 -0
- package/dist/components/ui/mobile-input.d.ts +273 -0
- package/dist/components/ui/mobile-input.esm.js +216 -0
- package/dist/components/ui/mobile-input.js +216 -0
- package/dist/components/ui/mobile-skeleton-loading-demo.d.ts +628 -0
- package/dist/components/ui/mobile-skeleton-loading-demo.esm.js +621 -0
- package/dist/components/ui/mobile-skeleton-loading-demo.js +621 -0
- package/dist/components/ui/navigation/breadcrumb.d.ts +149 -0
- package/dist/components/ui/navigation/breadcrumb.esm.js +155 -0
- package/dist/components/ui/navigation/breadcrumb.js +155 -0
- package/dist/components/ui/navigation/index.d.ts +25 -0
- package/dist/components/ui/navigation/index.esm.js +14 -0
- package/dist/components/ui/navigation/index.js +14 -0
- package/dist/components/ui/navigation/menu.d.ts +366 -0
- package/dist/components/ui/navigation/menu.esm.js +360 -0
- package/dist/components/ui/navigation/menu.js +360 -0
- package/dist/components/ui/navigation/navigation-demo.d.ts +169 -0
- package/dist/components/ui/navigation/navigation-demo.esm.js +317 -0
- package/dist/components/ui/navigation/navigation-demo.js +317 -0
- package/dist/components/ui/navigation/pagination.d.ts +261 -0
- package/dist/components/ui/navigation/pagination.esm.js +260 -0
- package/dist/components/ui/navigation/pagination.js +260 -0
- package/dist/components/ui/navigation/sidebar.d.ts +375 -0
- package/dist/components/ui/navigation/sidebar.esm.js +369 -0
- package/dist/components/ui/navigation/sidebar.js +369 -0
- package/dist/components/ui/navigation/stepper.d.ts +294 -0
- package/dist/components/ui/navigation/stepper.esm.js +292 -0
- package/dist/components/ui/navigation/stepper.js +292 -0
- package/dist/components/ui/navigation/tabs.d.ts +196 -0
- package/dist/components/ui/navigation/tabs.esm.js +194 -0
- package/dist/components/ui/navigation/tabs.js +194 -0
- package/dist/components/ui/navigation/types.d.ts +293 -0
- package/dist/components/ui/navigation/types.esm.js +298 -0
- package/dist/components/ui/navigation/types.js +298 -0
- package/dist/components/ui/overlay/backdrop.d.ts +79 -0
- package/dist/components/ui/overlay/backdrop.esm.js +80 -0
- package/dist/components/ui/overlay/backdrop.js +80 -0
- package/dist/components/ui/overlay/focus-manager.d.ts +141 -0
- package/dist/components/ui/overlay/focus-manager.esm.js +141 -0
- package/dist/components/ui/overlay/focus-manager.js +141 -0
- package/dist/components/ui/overlay/index.d.ts +27 -0
- package/dist/components/ui/overlay/index.esm.js +16 -0
- package/dist/components/ui/overlay/index.js +16 -0
- package/dist/components/ui/overlay/modal.d.ts +262 -0
- package/dist/components/ui/overlay/modal.esm.js +266 -0
- package/dist/components/ui/overlay/modal.js +266 -0
- package/dist/components/ui/overlay/overlay-manager.d.ts +107 -0
- package/dist/components/ui/overlay/overlay-manager.esm.js +105 -0
- package/dist/components/ui/overlay/overlay-manager.js +105 -0
- package/dist/components/ui/overlay/popover.d.ts +450 -0
- package/dist/components/ui/overlay/popover.esm.js +446 -0
- package/dist/components/ui/overlay/popover.js +446 -0
- package/dist/components/ui/overlay/portal.d.ts +75 -0
- package/dist/components/ui/overlay/portal.esm.js +79 -0
- package/dist/components/ui/overlay/portal.js +79 -0
- package/dist/components/ui/overlay/tooltip.d.ts +298 -0
- package/dist/components/ui/overlay/tooltip.esm.js +288 -0
- package/dist/components/ui/overlay/tooltip.js +288 -0
- package/dist/components/ui/overlay/types.d.ts +194 -0
- package/dist/components/ui/overlay/types.esm.js +195 -0
- package/dist/components/ui/overlay/types.js +195 -0
- package/dist/components/ui/performance-demo.d.ts +583 -0
- package/dist/components/ui/performance-demo.esm.js +549 -0
- package/dist/components/ui/performance-demo.js +549 -0
- package/dist/components/ui/semantic-input-system-demo.d.ts +490 -0
- package/dist/components/ui/semantic-input-system-demo.esm.js +465 -0
- package/dist/components/ui/semantic-input-system-demo.js +465 -0
- package/dist/components/ui/theme-customizer.d.ts +378 -0
- package/dist/components/ui/theme-customizer.esm.js +354 -0
- package/dist/components/ui/theme-customizer.js +354 -0
- package/dist/components/ui/theme-preview.d.ts +305 -0
- package/dist/components/ui/theme-preview.esm.js +258 -0
- package/dist/components/ui/theme-preview.js +258 -0
- package/dist/components/ui/theme-switcher.d.ts +259 -0
- package/dist/components/ui/theme-switcher.esm.js +238 -0
- package/dist/components/ui/theme-switcher.js +238 -0
- package/dist/components/ui/theme-toggle.d.ts +34 -0
- package/dist/components/ui/theme-toggle.esm.js +38 -0
- package/dist/components/ui/theme-toggle.js +38 -0
- package/dist/components/ui/token-demo.d.ts +188 -0
- package/dist/components/ui/token-demo.esm.js +183 -0
- package/dist/components/ui/token-demo.js +183 -0
- package/dist/components/ui/touch-demo.d.ts +455 -0
- package/dist/components/ui/touch-demo.esm.js +433 -0
- package/dist/components/ui/touch-demo.js +433 -0
- package/dist/components/ui/touch-friendly-interface-demo.d.ts +512 -0
- package/dist/components/ui/touch-friendly-interface-demo.esm.js +481 -0
- package/dist/components/ui/touch-friendly-interface-demo.js +481 -0
- package/dist/components/ui/touch-friendly-interface.d.ts +292 -0
- package/dist/components/ui/touch-friendly-interface.esm.js +272 -0
- package/dist/components/ui/touch-friendly-interface.js +272 -0
- package/dist/hooks/index.d.ts +161 -0
- package/dist/hooks/index.esm.js +190 -0
- package/dist/hooks/index.js +190 -0
- package/dist/hooks/use-accessibility-support.d.ts +516 -0
- package/dist/hooks/use-accessibility-support.esm.js +488 -0
- package/dist/hooks/use-accessibility-support.js +488 -0
- package/dist/hooks/use-adaptive-layout.d.ts +287 -0
- package/dist/hooks/use-adaptive-layout.esm.js +266 -0
- package/dist/hooks/use-adaptive-layout.js +266 -0
- package/dist/hooks/use-advanced-patterns.d.ts +292 -0
- package/dist/hooks/use-advanced-patterns.esm.js +279 -0
- package/dist/hooks/use-advanced-patterns.js +279 -0
- package/dist/hooks/use-advanced-transition-system.d.ts +390 -0
- package/dist/hooks/use-advanced-transition-system.esm.js +352 -0
- package/dist/hooks/use-advanced-transition-system.js +352 -0
- package/dist/hooks/use-animation-profile.d.ts +285 -0
- package/dist/hooks/use-animation-profile.esm.js +259 -0
- package/dist/hooks/use-animation-profile.js +259 -0
- package/dist/hooks/use-battery-animations.d.ts +382 -0
- package/dist/hooks/use-battery-animations.esm.js +359 -0
- package/dist/hooks/use-battery-animations.js +359 -0
- package/dist/hooks/use-battery-conscious-loading.d.ts +473 -0
- package/dist/hooks/use-battery-conscious-loading.esm.js +432 -0
- package/dist/hooks/use-battery-conscious-loading.js +432 -0
- package/dist/hooks/use-battery-optimization.d.ts +328 -0
- package/dist/hooks/use-battery-optimization.esm.js +307 -0
- package/dist/hooks/use-battery-optimization.js +307 -0
- package/dist/hooks/use-battery-status.d.ts +297 -0
- package/dist/hooks/use-battery-status.esm.js +277 -0
- package/dist/hooks/use-battery-status.js +277 -0
- package/dist/hooks/use-component-performance.d.ts +342 -0
- package/dist/hooks/use-component-performance.esm.js +329 -0
- package/dist/hooks/use-component-performance.js +329 -0
- package/dist/hooks/use-device-loading-states.d.ts +456 -0
- package/dist/hooks/use-device-loading-states.esm.js +416 -0
- package/dist/hooks/use-device-loading-states.js +416 -0
- package/dist/hooks/use-device.d.ts +104 -0
- package/dist/hooks/use-device.esm.js +99 -0
- package/dist/hooks/use-device.js +99 -0
- package/dist/hooks/use-enterprise-mobile-experience.d.ts +486 -0
- package/dist/hooks/use-enterprise-mobile-experience.esm.js +439 -0
- package/dist/hooks/use-enterprise-mobile-experience.js +439 -0
- package/dist/hooks/use-form-feedback.d.ts +401 -0
- package/dist/hooks/use-form-feedback.esm.js +360 -0
- package/dist/hooks/use-form-feedback.js +360 -0
- package/dist/hooks/use-form-performance.d.ts +511 -0
- package/dist/hooks/use-form-performance.esm.js +478 -0
- package/dist/hooks/use-form-performance.js +478 -0
- package/dist/hooks/use-frame-rate.d.ts +249 -0
- package/dist/hooks/use-frame-rate.esm.js +232 -0
- package/dist/hooks/use-frame-rate.js +232 -0
- package/dist/hooks/use-gestures.d.ts +336 -0
- package/dist/hooks/use-gestures.esm.js +314 -0
- package/dist/hooks/use-gestures.js +314 -0
- package/dist/hooks/use-hardware-acceleration.d.ts +339 -0
- package/dist/hooks/use-hardware-acceleration.esm.js +313 -0
- package/dist/hooks/use-hardware-acceleration.js +313 -0
- package/dist/hooks/use-input-accessibility.d.ts +451 -0
- package/dist/hooks/use-input-accessibility.esm.js +417 -0
- package/dist/hooks/use-input-accessibility.js +417 -0
- package/dist/hooks/use-input-performance.d.ts +503 -0
- package/dist/hooks/use-input-performance.esm.js +471 -0
- package/dist/hooks/use-input-performance.js +471 -0
- package/dist/hooks/use-layout-performance.d.ts +317 -0
- package/dist/hooks/use-layout-performance.esm.js +298 -0
- package/dist/hooks/use-layout-performance.js +298 -0
- package/dist/hooks/use-loading-accessibility.d.ts +532 -0
- package/dist/hooks/use-loading-accessibility.esm.js +495 -0
- package/dist/hooks/use-loading-accessibility.js +495 -0
- package/dist/hooks/use-loading-performance.d.ts +471 -0
- package/dist/hooks/use-loading-performance.esm.js +449 -0
- package/dist/hooks/use-loading-performance.js +449 -0
- package/dist/hooks/use-memory-usage.d.ts +285 -0
- package/dist/hooks/use-memory-usage.esm.js +268 -0
- package/dist/hooks/use-memory-usage.js +268 -0
- package/dist/hooks/use-mobile-form-layout.d.ts +462 -0
- package/dist/hooks/use-mobile-form-layout.esm.js +427 -0
- package/dist/hooks/use-mobile-form-layout.js +427 -0
- package/dist/hooks/use-mobile-form-validation.d.ts +516 -0
- package/dist/hooks/use-mobile-form-validation.esm.js +451 -0
- package/dist/hooks/use-mobile-form-validation.js +451 -0
- package/dist/hooks/use-mobile-keyboard-optimization.d.ts +469 -0
- package/dist/hooks/use-mobile-keyboard-optimization.esm.js +431 -0
- package/dist/hooks/use-mobile-keyboard-optimization.js +431 -0
- package/dist/hooks/use-mobile-layout.d.ts +300 -0
- package/dist/hooks/use-mobile-layout.esm.js +280 -0
- package/dist/hooks/use-mobile-layout.js +280 -0
- package/dist/hooks/use-mobile-optimization.d.ts +404 -0
- package/dist/hooks/use-mobile-optimization.esm.js +378 -0
- package/dist/hooks/use-mobile-optimization.js +378 -0
- package/dist/hooks/use-mobile-skeleton.d.ts +399 -0
- package/dist/hooks/use-mobile-skeleton.esm.js +369 -0
- package/dist/hooks/use-mobile-skeleton.js +369 -0
- package/dist/hooks/use-mobile-touch.d.ts +412 -0
- package/dist/hooks/use-mobile-touch.esm.js +379 -0
- package/dist/hooks/use-mobile-touch.js +379 -0
- package/dist/hooks/use-performance-throttling.d.ts +346 -0
- package/dist/hooks/use-performance-throttling.esm.js +324 -0
- package/dist/hooks/use-performance-throttling.js +324 -0
- package/dist/hooks/use-performance.d.ts +314 -0
- package/dist/hooks/use-performance.esm.js +278 -0
- package/dist/hooks/use-performance.js +278 -0
- package/dist/hooks/use-reusable-architecture.d.ts +412 -0
- package/dist/hooks/use-reusable-architecture.esm.js +385 -0
- package/dist/hooks/use-reusable-architecture.js +385 -0
- package/dist/hooks/use-semantic-input-types.d.ts +354 -0
- package/dist/hooks/use-semantic-input-types.esm.js +315 -0
- package/dist/hooks/use-semantic-input-types.js +315 -0
- package/dist/hooks/use-semantic-input.d.ts +563 -0
- package/dist/hooks/use-semantic-input.esm.js +513 -0
- package/dist/hooks/use-semantic-input.js +513 -0
- package/dist/hooks/use-tablet-layout.d.ts +382 -0
- package/dist/hooks/use-tablet-layout.esm.js +355 -0
- package/dist/hooks/use-tablet-layout.js +355 -0
- package/dist/hooks/use-touch-friendly-input.d.ts +520 -0
- package/dist/hooks/use-touch-friendly-input.esm.js +480 -0
- package/dist/hooks/use-touch-friendly-input.js +480 -0
- package/dist/hooks/use-touch-friendly-interface.d.ts +329 -0
- package/dist/hooks/use-touch-friendly-interface.esm.js +299 -0
- package/dist/hooks/use-touch-friendly-interface.js +299 -0
- package/dist/hooks/use-touch-optimization.d.ts +373 -0
- package/dist/hooks/use-touch-optimization.esm.js +348 -0
- package/dist/hooks/use-touch-optimization.js +348 -0
- package/dist/lib/utils.d.ts +3 -0
- package/dist/lib/utils.esm.js +6 -0
- package/dist/lib/utils.js +6 -0
- package/dist/plugins/theme-css-generator.d.ts +345 -0
- package/dist/plugins/theme-css-generator.esm.js +305 -0
- package/dist/plugins/theme-css-generator.js +305 -0
- package/dist/styles.css +1 -1
- package/dist/themes/ThemeContext.d.ts +27 -0
- package/dist/themes/ThemeContext.esm.js +31 -0
- package/dist/themes/ThemeContext.js +31 -0
- package/dist/themes/ThemeProvider.d.ts +222 -0
- package/dist/themes/ThemeProvider.esm.js +229 -0
- package/dist/themes/ThemeProvider.js +229 -0
- package/dist/themes/accessibility/index.d.ts +7 -0
- package/dist/themes/accessibility/index.esm.js +27 -0
- package/dist/themes/accessibility/index.js +27 -0
- package/dist/themes/accessibility.d.ts +259 -0
- package/dist/themes/accessibility.esm.js +220 -0
- package/dist/themes/accessibility.js +220 -0
- package/dist/themes/aria-patterns.d.ts +418 -0
- package/dist/themes/aria-patterns.esm.js +384 -0
- package/dist/themes/aria-patterns.js +384 -0
- package/dist/themes/base-themes.d.ts +34 -0
- package/dist/themes/base-themes.esm.js +52 -0
- package/dist/themes/base-themes.js +52 -0
- package/dist/themes/colorManager.d.ts +327 -0
- package/dist/themes/colorManager.esm.js +362 -0
- package/dist/themes/colorManager.js +362 -0
- package/dist/themes/examples/dark-theme.d.ts +139 -0
- package/dist/themes/examples/dark-theme.esm.js +124 -0
- package/dist/themes/examples/dark-theme.js +124 -0
- package/dist/themes/examples/minimal-theme.d.ts +93 -0
- package/dist/themes/examples/minimal-theme.esm.js +86 -0
- package/dist/themes/examples/minimal-theme.js +86 -0
- package/dist/themes/focus-management.d.ts +699 -0
- package/dist/themes/focus-management.esm.js +642 -0
- package/dist/themes/focus-management.js +642 -0
- package/dist/themes/fontLoader.d.ts +163 -0
- package/dist/themes/fontLoader.esm.js +192 -0
- package/dist/themes/fontLoader.js +192 -0
- package/dist/themes/high-contrast.d.ts +619 -0
- package/dist/themes/high-contrast.esm.js +573 -0
- package/dist/themes/high-contrast.js +573 -0
- package/dist/themes/index.d.ts +11 -0
- package/dist/themes/index.esm.js +19 -0
- package/dist/themes/index.js +19 -0
- package/dist/themes/inheritance.d.ts +160 -0
- package/dist/themes/inheritance.esm.js +219 -0
- package/dist/themes/inheritance.js +219 -0
- package/dist/themes/keyboard-navigation.d.ts +550 -0
- package/dist/themes/keyboard-navigation.esm.js +521 -0
- package/dist/themes/keyboard-navigation.js +521 -0
- package/dist/themes/motion-reduction.d.ts +660 -0
- package/dist/themes/motion-reduction.esm.js +602 -0
- package/dist/themes/motion-reduction.js +602 -0
- package/dist/themes/navigation.d.ts +232 -0
- package/dist/themes/navigation.esm.js +238 -0
- package/dist/themes/navigation.js +238 -0
- package/dist/themes/screen-reader.d.ts +645 -0
- package/dist/themes/screen-reader.esm.js +580 -0
- package/dist/themes/screen-reader.js +580 -0
- package/dist/themes/systemThemeDetector.d.ts +148 -0
- package/dist/themes/systemThemeDetector.esm.js +174 -0
- package/dist/themes/systemThemeDetector.js +174 -0
- package/dist/themes/themeCSSUpdater.d.ts +229 -0
- package/dist/themes/themeCSSUpdater.esm.js +250 -0
- package/dist/themes/themeCSSUpdater.js +250 -0
- package/dist/themes/themePersistence.d.ts +192 -0
- package/dist/themes/themePersistence.esm.js +217 -0
- package/dist/themes/themePersistence.js +217 -0
- package/dist/themes/themes/stan-design.d.ts +678 -0
- package/dist/themes/themes/stan-design.esm.js +518 -0
- package/dist/themes/themes/stan-design.js +518 -0
- package/dist/themes/types.d.ts +454 -0
- package/dist/themes/types.esm.js +446 -0
- package/dist/themes/types.js +446 -0
- package/dist/themes/useSystemTheme.d.ts +43 -0
- package/dist/themes/useSystemTheme.esm.js +48 -0
- package/dist/themes/useSystemTheme.js +48 -0
- package/dist/themes/useTheme.d.ts +20 -0
- package/dist/themes/useTheme.esm.js +87 -0
- package/dist/themes/useTheme.js +87 -0
- package/dist/themes/validation.d.ts +406 -0
- package/dist/themes/validation.esm.js +411 -0
- package/dist/themes/validation.js +411 -0
- package/dist/tokens/index.d.ts +25 -0
- package/dist/tokens/index.esm.js +23 -0
- package/dist/tokens/index.js +23 -0
- package/dist/tokens/tokenExporter.d.ts +336 -0
- package/dist/tokens/tokenExporter.esm.js +371 -0
- package/dist/tokens/tokenExporter.js +371 -0
- package/dist/tokens/tokenGenerator.d.ts +250 -0
- package/dist/tokens/tokenGenerator.esm.js +267 -0
- package/dist/tokens/tokenGenerator.js +267 -0
- package/dist/tokens/tokenManager.d.ts +194 -0
- package/dist/tokens/tokenManager.esm.js +235 -0
- package/dist/tokens/tokenManager.js +235 -0
- package/dist/tokens/tokenValidator.d.ts +488 -0
- package/dist/tokens/tokenValidator.esm.js +497 -0
- package/dist/tokens/tokenValidator.js +497 -0
- package/dist/tokens/types.d.ts +78 -0
- package/dist/tokens/types.esm.js +64 -0
- package/dist/tokens/types.js +64 -0
- package/dist/utils/bundle-analyzer.d.ts +260 -0
- package/dist/utils/bundle-analyzer.esm.js +242 -0
- package/dist/utils/bundle-analyzer.js +242 -0
- package/dist/utils/bundle-splitting.d.ts +483 -0
- package/dist/utils/bundle-splitting.esm.js +458 -0
- package/dist/utils/bundle-splitting.js +458 -0
- package/dist/utils/lazy-loading.d.ts +437 -0
- package/dist/utils/lazy-loading.esm.js +415 -0
- package/dist/utils/lazy-loading.js +415 -0
- package/dist/utils/performance-monitor.d.ts +513 -0
- package/dist/utils/performance-monitor.esm.js +472 -0
- package/dist/utils/performance-monitor.js +472 -0
- package/dist/utils/tree-shaking.d.ts +274 -0
- package/dist/utils/tree-shaking.esm.js +266 -0
- package/dist/utils/tree-shaking.js +266 -0
- package/package.json +1 -1
|
@@ -0,0 +1,660 @@
|
|
|
1
|
+
// Motion reduction theme configuration
|
|
2
|
+
export interface MotionReductionThemeConfig {
|
|
3
|
+
motion: {
|
|
4
|
+
reduced: boolean;
|
|
5
|
+
duration: {
|
|
6
|
+
fast: string;
|
|
7
|
+
normal: string;
|
|
8
|
+
slow: string;
|
|
9
|
+
};
|
|
10
|
+
easing: {
|
|
11
|
+
ease: string;
|
|
12
|
+
easeIn: string;
|
|
13
|
+
easeOut: string;
|
|
14
|
+
easeInOut: string;
|
|
15
|
+
};
|
|
16
|
+
animations: {
|
|
17
|
+
enabled: boolean;
|
|
18
|
+
type: 'none' | 'reduced' | 'full';
|
|
19
|
+
preferences: {
|
|
20
|
+
reduceMotion: boolean;
|
|
21
|
+
reduceAnimation: boolean;
|
|
22
|
+
reduceTransition: boolean;
|
|
23
|
+
reduceTransform: boolean;
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
// Motion reduction utilities
|
|
30
|
+
export class MotionReductionManager {
|
|
31
|
+
private isReducedMotion: boolean = false;
|
|
32
|
+
private isReducedAnimation: boolean = false;
|
|
33
|
+
private isReducedTransition: boolean = false;
|
|
34
|
+
private isReducedTransform: boolean = false;
|
|
35
|
+
// private motionPreferences: Set<string> = new Set(); // Unused for now
|
|
36
|
+
private originalStyles: Map<HTMLElement, string> = new Map();
|
|
37
|
+
private reducedMotionStyles: Map<HTMLElement, string> = new Map();
|
|
38
|
+
|
|
39
|
+
constructor() {
|
|
40
|
+
this.initializeSystemPreference();
|
|
41
|
+
this.setupEventListeners();
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// Initialize system preference detection
|
|
45
|
+
private initializeSystemPreference(): void {
|
|
46
|
+
if (typeof window !== 'undefined' && window.matchMedia) {
|
|
47
|
+
const reducedMotionQuery = window.matchMedia('(prefers-reduced-motion: reduce)');
|
|
48
|
+
this.isReducedMotion = reducedMotionQuery.matches;
|
|
49
|
+
|
|
50
|
+
reducedMotionQuery.addEventListener('change', (e) => {
|
|
51
|
+
this.isReducedMotion = e.matches;
|
|
52
|
+
this.applyMotionReduction();
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
// Setup event listeners
|
|
58
|
+
private setupEventListeners(): void {
|
|
59
|
+
// Listen for preference changes
|
|
60
|
+
if (typeof window !== 'undefined') {
|
|
61
|
+
window.addEventListener('storage', (e) => {
|
|
62
|
+
if (e.key === 'motion-reduction-preferences') {
|
|
63
|
+
this.loadPreferences();
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
// Enable motion reduction
|
|
70
|
+
enable(): void {
|
|
71
|
+
this.isReducedMotion = true;
|
|
72
|
+
this.applyMotionReduction();
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
// Disable motion reduction
|
|
76
|
+
disable(): void {
|
|
77
|
+
this.isReducedMotion = false;
|
|
78
|
+
this.removeMotionReduction();
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
// Toggle motion reduction
|
|
82
|
+
toggle(): void {
|
|
83
|
+
if (this.isReducedMotion) {
|
|
84
|
+
this.disable();
|
|
85
|
+
} else {
|
|
86
|
+
this.enable();
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
// Check if motion reduction is enabled
|
|
91
|
+
isMotionReduced(): boolean {
|
|
92
|
+
return this.isReducedMotion;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
// Set specific motion reduction preferences
|
|
96
|
+
setPreferences(preferences: {
|
|
97
|
+
reduceAnimation?: boolean;
|
|
98
|
+
reduceTransition?: boolean;
|
|
99
|
+
reduceTransform?: boolean;
|
|
100
|
+
}): void {
|
|
101
|
+
if (preferences.reduceAnimation !== undefined) {
|
|
102
|
+
this.isReducedAnimation = preferences.reduceAnimation;
|
|
103
|
+
}
|
|
104
|
+
if (preferences.reduceTransition !== undefined) {
|
|
105
|
+
this.isReducedTransition = preferences.reduceTransition;
|
|
106
|
+
}
|
|
107
|
+
if (preferences.reduceTransform !== undefined) {
|
|
108
|
+
this.isReducedTransform = preferences.reduceTransform;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
this.savePreferences();
|
|
112
|
+
this.applyMotionReduction();
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
// Get current motion reduction preferences
|
|
116
|
+
getPreferences(): {
|
|
117
|
+
reduceMotion: boolean;
|
|
118
|
+
reduceAnimation: boolean;
|
|
119
|
+
reduceTransition: boolean;
|
|
120
|
+
reduceTransform: boolean;
|
|
121
|
+
} {
|
|
122
|
+
return {
|
|
123
|
+
reduceMotion: this.isReducedMotion,
|
|
124
|
+
reduceAnimation: this.isReducedAnimation,
|
|
125
|
+
reduceTransition: this.isReducedTransition,
|
|
126
|
+
reduceTransform: this.isReducedTransform
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
// Apply motion reduction to the document
|
|
131
|
+
applyMotionReduction(): void {
|
|
132
|
+
if (!this.isReducedMotion) return;
|
|
133
|
+
|
|
134
|
+
// Add reduced motion class to document
|
|
135
|
+
document.documentElement.classList.add('reduced-motion');
|
|
136
|
+
|
|
137
|
+
// Apply reduced motion styles
|
|
138
|
+
this.applyReducedMotionStyles();
|
|
139
|
+
|
|
140
|
+
// Process existing elements
|
|
141
|
+
this.processExistingElements();
|
|
142
|
+
|
|
143
|
+
// Announce motion reduction change
|
|
144
|
+
if (screenReaderOptimizer) {
|
|
145
|
+
screenReaderOptimizer.announceMotionChange(true);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
// Remove motion reduction from the document
|
|
150
|
+
removeMotionReduction(): void {
|
|
151
|
+
// Remove reduced motion class
|
|
152
|
+
document.documentElement.classList.remove('reduced-motion');
|
|
153
|
+
|
|
154
|
+
// Remove reduced motion styles
|
|
155
|
+
this.removeReducedMotionStyles();
|
|
156
|
+
|
|
157
|
+
// Restore original styles
|
|
158
|
+
this.restoreOriginalStyles();
|
|
159
|
+
|
|
160
|
+
// Announce motion reduction change
|
|
161
|
+
if (screenReaderOptimizer) {
|
|
162
|
+
screenReaderOptimizer.announceMotionChange(false);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
// Apply reduced motion styles
|
|
167
|
+
private applyReducedMotionStyles(): void {
|
|
168
|
+
const style = document.createElement('style');
|
|
169
|
+
style.id = 'reduced-motion-styles';
|
|
170
|
+
|
|
171
|
+
style.textContent = `
|
|
172
|
+
.reduced-motion,
|
|
173
|
+
.reduced-motion * {
|
|
174
|
+
/* Disable animations */
|
|
175
|
+
animation-duration: 0.01ms !important;
|
|
176
|
+
animation-iteration-count: 1 !important;
|
|
177
|
+
animation-delay: 0s !important;
|
|
178
|
+
|
|
179
|
+
/* Disable transitions */
|
|
180
|
+
transition-duration: 0.01ms !important;
|
|
181
|
+
transition-delay: 0s !important;
|
|
182
|
+
|
|
183
|
+
/* Disable transforms */
|
|
184
|
+
transform: none !important;
|
|
185
|
+
|
|
186
|
+
/* Disable scroll behavior */
|
|
187
|
+
scroll-behavior: auto !important;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
.reduced-motion .motion-safe,
|
|
191
|
+
.reduced-motion *[data-motion-safe="true"] {
|
|
192
|
+
/* Allow safe motion for essential animations */
|
|
193
|
+
animation-duration: 150ms !important;
|
|
194
|
+
transition-duration: 150ms !important;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
.reduced-motion .motion-reduce,
|
|
198
|
+
.reduced-motion *[data-motion-reduce="true"] {
|
|
199
|
+
/* Apply reduced motion for non-essential animations */
|
|
200
|
+
animation-duration: 50ms !important;
|
|
201
|
+
transition-duration: 50ms !important;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
/* Specific component overrides */
|
|
205
|
+
.reduced-motion .modal,
|
|
206
|
+
.reduced-motion .tooltip,
|
|
207
|
+
.reduced-motion .popover {
|
|
208
|
+
animation: none !important;
|
|
209
|
+
transition: none !important;
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
.reduced-motion .skeleton {
|
|
213
|
+
animation: none !important;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
.reduced-motion .progress-bar {
|
|
217
|
+
transition: none !important;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
.reduced-motion .carousel,
|
|
221
|
+
.reduced-motion .slider {
|
|
222
|
+
scroll-behavior: auto !important;
|
|
223
|
+
}
|
|
224
|
+
`;
|
|
225
|
+
|
|
226
|
+
document.head.appendChild(style);
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
// Remove reduced motion styles
|
|
230
|
+
private removeReducedMotionStyles(): void {
|
|
231
|
+
const style = document.getElementById('reduced-motion-styles');
|
|
232
|
+
if (style) {
|
|
233
|
+
style.remove();
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
// Process existing elements
|
|
238
|
+
private processExistingElements(): void {
|
|
239
|
+
// Process elements with animations
|
|
240
|
+
const animatedElements = document.querySelectorAll('[class*="animate"], [class*="transition"], [class*="transform"]');
|
|
241
|
+
animatedElements.forEach(element => {
|
|
242
|
+
this.processElement(element as HTMLElement);
|
|
243
|
+
});
|
|
244
|
+
|
|
245
|
+
// Process elements with data attributes
|
|
246
|
+
const motionElements = document.querySelectorAll('[data-motion], [data-animation], [data-transition]');
|
|
247
|
+
motionElements.forEach(element => {
|
|
248
|
+
this.processElement(element as HTMLElement);
|
|
249
|
+
});
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
// Process individual element
|
|
253
|
+
private processElement(element: HTMLElement): void {
|
|
254
|
+
// Store original styles if not already stored
|
|
255
|
+
if (!this.originalStyles.has(element)) {
|
|
256
|
+
this.originalStyles.set(element, element.style.cssText);
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
// Apply reduced motion styles
|
|
260
|
+
const reducedStyles = this.getReducedMotionStyles(element);
|
|
261
|
+
element.style.cssText = reducedStyles;
|
|
262
|
+
|
|
263
|
+
// Store reduced styles
|
|
264
|
+
this.reducedMotionStyles.set(element, reducedStyles);
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
// Get reduced motion styles for element
|
|
268
|
+
private getReducedMotionStyles(element: HTMLElement): string {
|
|
269
|
+
const originalStyles = element.style.cssText;
|
|
270
|
+
|
|
271
|
+
let reducedStyles = originalStyles;
|
|
272
|
+
|
|
273
|
+
// Remove animation properties
|
|
274
|
+
if (this.isReducedAnimation) {
|
|
275
|
+
reducedStyles = reducedStyles.replace(/animation[^;]*;?/g, '');
|
|
276
|
+
reducedStyles += 'animation: none !important;';
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
// Remove transition properties
|
|
280
|
+
if (this.isReducedTransition) {
|
|
281
|
+
reducedStyles = reducedStyles.replace(/transition[^;]*;?/g, '');
|
|
282
|
+
reducedStyles += 'transition: none !important;';
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
// Remove transform properties
|
|
286
|
+
if (this.isReducedTransform) {
|
|
287
|
+
reducedStyles = reducedStyles.replace(/transform[^;]*;?/g, '');
|
|
288
|
+
reducedStyles += 'transform: none !important;';
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
return reducedStyles;
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
// Restore original styles
|
|
295
|
+
private restoreOriginalStyles(): void {
|
|
296
|
+
this.originalStyles.forEach((originalStyle, element) => {
|
|
297
|
+
if (element && element.offsetParent !== null) {
|
|
298
|
+
element.style.cssText = originalStyle;
|
|
299
|
+
}
|
|
300
|
+
});
|
|
301
|
+
|
|
302
|
+
this.originalStyles.clear();
|
|
303
|
+
this.reducedMotionStyles.clear();
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
// Save preferences to localStorage
|
|
307
|
+
private savePreferences(): void {
|
|
308
|
+
if (typeof window !== 'undefined' && window.localStorage) {
|
|
309
|
+
const preferences = {
|
|
310
|
+
reduceAnimation: this.isReducedAnimation,
|
|
311
|
+
reduceTransition: this.isReducedTransition,
|
|
312
|
+
reduceTransform: this.isReducedTransform,
|
|
313
|
+
timestamp: Date.now()
|
|
314
|
+
};
|
|
315
|
+
|
|
316
|
+
window.localStorage.setItem('motion-reduction-preferences', JSON.stringify(preferences));
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
// Load preferences from localStorage
|
|
321
|
+
private loadPreferences(): void {
|
|
322
|
+
if (typeof window !== 'undefined' && window.localStorage) {
|
|
323
|
+
try {
|
|
324
|
+
const stored = window.localStorage.getItem('motion-reduction-preferences');
|
|
325
|
+
if (stored) {
|
|
326
|
+
const preferences = JSON.parse(stored);
|
|
327
|
+
|
|
328
|
+
this.isReducedAnimation = preferences.reduceAnimation || false;
|
|
329
|
+
this.isReducedTransition = preferences.reduceTransition || false;
|
|
330
|
+
this.isReducedTransform = preferences.reduceTransform || false;
|
|
331
|
+
}
|
|
332
|
+
} catch (error) {
|
|
333
|
+
console.warn('Failed to load motion reduction preferences:', error);
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
// Check if element should have motion reduced
|
|
339
|
+
shouldReduceMotion(element: HTMLElement): boolean {
|
|
340
|
+
if (!this.isReducedMotion) return false;
|
|
341
|
+
|
|
342
|
+
// Check for motion-safe override
|
|
343
|
+
if (element.classList.contains('motion-safe') || element.getAttribute('data-motion-safe') === 'true') {
|
|
344
|
+
return false;
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
// Check for motion-reduce override
|
|
348
|
+
if (element.classList.contains('motion-reduce') || element.getAttribute('data-motion-reduce') === 'true') {
|
|
349
|
+
return true;
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
return true;
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
// Get appropriate duration for element
|
|
356
|
+
getDuration(element: HTMLElement, defaultDuration: string, type: 'animation' | 'transition'): string {
|
|
357
|
+
if (!this.shouldReduceMotion(element)) {
|
|
358
|
+
return defaultDuration;
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
// Parse duration
|
|
362
|
+
const duration = parseFloat(defaultDuration);
|
|
363
|
+
const unit = defaultDuration.replace(/[\d.]/g, '');
|
|
364
|
+
|
|
365
|
+
if (type === 'animation') {
|
|
366
|
+
return this.isReducedAnimation ? '0.01ms' : `${Math.min(duration * 0.1, 50)}${unit}`;
|
|
367
|
+
} else {
|
|
368
|
+
return this.isReducedTransition ? '0.01ms' : `${Math.min(duration * 0.1, 50)}${unit}`;
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
// Get appropriate easing for element
|
|
373
|
+
getEasing(element: HTMLElement, defaultEasing: string): string {
|
|
374
|
+
if (!this.shouldReduceMotion(element)) {
|
|
375
|
+
return defaultEasing;
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
// Use linear easing for reduced motion
|
|
379
|
+
return 'linear';
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
// Create motion-safe wrapper
|
|
383
|
+
createMotionSafeWrapper(element: HTMLElement, callback: () => void): void {
|
|
384
|
+
if (!this.shouldReduceMotion(element)) {
|
|
385
|
+
callback();
|
|
386
|
+
return;
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
// Execute callback without motion
|
|
390
|
+
const originalReducedMotion = this.isReducedMotion;
|
|
391
|
+
this.isReducedMotion = false;
|
|
392
|
+
|
|
393
|
+
try {
|
|
394
|
+
callback();
|
|
395
|
+
} finally {
|
|
396
|
+
this.isReducedMotion = originalReducedMotion;
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
// Animate element with motion reduction awareness
|
|
401
|
+
animateElement(
|
|
402
|
+
element: HTMLElement,
|
|
403
|
+
keyframes: Keyframe[],
|
|
404
|
+
options: KeyframeAnimationOptions
|
|
405
|
+
): Animation {
|
|
406
|
+
if (this.shouldReduceMotion(element)) {
|
|
407
|
+
// Apply reduced motion options
|
|
408
|
+
const reducedOptions = {
|
|
409
|
+
...options,
|
|
410
|
+
duration: Math.min(typeof options.duration === 'number' ? options.duration : 300, 50),
|
|
411
|
+
easing: 'linear'
|
|
412
|
+
};
|
|
413
|
+
|
|
414
|
+
return element.animate(keyframes, reducedOptions);
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
return element.animate(keyframes, options);
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
// Add motion reduction observer
|
|
421
|
+
addMotionReductionObserver(callback: (isReduced: boolean) => void): () => void {
|
|
422
|
+
const observer = new MutationObserver(() => {
|
|
423
|
+
callback(this.isReducedMotion);
|
|
424
|
+
});
|
|
425
|
+
|
|
426
|
+
observer.observe(document.documentElement, {
|
|
427
|
+
attributes: true,
|
|
428
|
+
attributeFilter: ['class']
|
|
429
|
+
});
|
|
430
|
+
|
|
431
|
+
// Return cleanup function
|
|
432
|
+
return () => observer.disconnect();
|
|
433
|
+
}
|
|
434
|
+
|
|
435
|
+
// Get motion reduction statistics
|
|
436
|
+
getStatistics(): {
|
|
437
|
+
totalElements: number;
|
|
438
|
+
reducedElements: number;
|
|
439
|
+
safeElements: number;
|
|
440
|
+
preferences: {
|
|
441
|
+
reduceMotion: boolean;
|
|
442
|
+
reduceAnimation: boolean;
|
|
443
|
+
reduceTransition: boolean;
|
|
444
|
+
reduceTransform: boolean;
|
|
445
|
+
};
|
|
446
|
+
} {
|
|
447
|
+
const totalElements = document.querySelectorAll('*').length;
|
|
448
|
+
const reducedElements = document.querySelectorAll('.reduced-motion *').length;
|
|
449
|
+
const safeElements = document.querySelectorAll('.motion-safe, [data-motion-safe="true"]').length;
|
|
450
|
+
|
|
451
|
+
return {
|
|
452
|
+
totalElements,
|
|
453
|
+
reducedElements,
|
|
454
|
+
safeElements,
|
|
455
|
+
preferences: this.getPreferences()
|
|
456
|
+
};
|
|
457
|
+
}
|
|
458
|
+
|
|
459
|
+
// Reset all motion reduction settings
|
|
460
|
+
reset(): void {
|
|
461
|
+
this.isReducedMotion = false;
|
|
462
|
+
this.isReducedAnimation = false;
|
|
463
|
+
this.isReducedTransition = false;
|
|
464
|
+
this.isReducedTransform = false;
|
|
465
|
+
|
|
466
|
+
this.removeMotionReduction();
|
|
467
|
+
this.clearPreferences();
|
|
468
|
+
}
|
|
469
|
+
|
|
470
|
+
// Clear stored preferences
|
|
471
|
+
private clearPreferences(): void {
|
|
472
|
+
if (typeof window !== 'undefined' && window.localStorage) {
|
|
473
|
+
window.localStorage.removeItem('motion-reduction-preferences');
|
|
474
|
+
}
|
|
475
|
+
|
|
476
|
+
this.originalStyles.clear();
|
|
477
|
+
this.reducedMotionStyles.clear();
|
|
478
|
+
}
|
|
479
|
+
|
|
480
|
+
// Destroy motion reduction manager
|
|
481
|
+
destroy(): void {
|
|
482
|
+
this.removeMotionReduction();
|
|
483
|
+
this.clearPreferences();
|
|
484
|
+
|
|
485
|
+
// Remove event listeners
|
|
486
|
+
if (typeof window !== 'undefined') {
|
|
487
|
+
window.removeEventListener('storage', this.loadPreferences.bind(this));
|
|
488
|
+
}
|
|
489
|
+
}
|
|
490
|
+
}
|
|
491
|
+
|
|
492
|
+
// Motion reduction utilities
|
|
493
|
+
export class MotionReductionUtils {
|
|
494
|
+
// Check if motion should be reduced for element
|
|
495
|
+
static shouldReduceMotion(element: HTMLElement): boolean {
|
|
496
|
+
// Check system preference
|
|
497
|
+
if (typeof window !== 'undefined' && window.matchMedia) {
|
|
498
|
+
const reducedMotionQuery = window.matchMedia('(prefers-reduced-motion: reduce)');
|
|
499
|
+
if (reducedMotionQuery.matches) return true;
|
|
500
|
+
}
|
|
501
|
+
|
|
502
|
+
// Check element attributes
|
|
503
|
+
if (element.classList.contains('motion-reduce') || element.getAttribute('data-motion-reduce') === 'true') {
|
|
504
|
+
return true;
|
|
505
|
+
}
|
|
506
|
+
|
|
507
|
+
// Check parent elements
|
|
508
|
+
const parent = element.closest('.motion-reduce, [data-motion-reduce="true"]');
|
|
509
|
+
if (parent) return true;
|
|
510
|
+
|
|
511
|
+
return false;
|
|
512
|
+
}
|
|
513
|
+
|
|
514
|
+
// Get reduced duration
|
|
515
|
+
static getReducedDuration(duration: string, reductionFactor: number = 0.1): string {
|
|
516
|
+
const parsed = parseFloat(duration);
|
|
517
|
+
const unit = duration.replace(/[\d.]/g, '');
|
|
518
|
+
|
|
519
|
+
return `${Math.max(parsed * reductionFactor, 1)}${unit}`;
|
|
520
|
+
}
|
|
521
|
+
|
|
522
|
+
// Get reduced easing
|
|
523
|
+
static getReducedEasing(_easing: string): string {
|
|
524
|
+
return 'linear';
|
|
525
|
+
}
|
|
526
|
+
|
|
527
|
+
// Create motion-safe animation
|
|
528
|
+
static createMotionSafeAnimation(
|
|
529
|
+
element: HTMLElement,
|
|
530
|
+
keyframes: Keyframe[],
|
|
531
|
+
options: KeyframeAnimationOptions
|
|
532
|
+
): Animation | null {
|
|
533
|
+
if (this.shouldReduceMotion(element)) {
|
|
534
|
+
// Return null to indicate no animation should be performed
|
|
535
|
+
return null;
|
|
536
|
+
}
|
|
537
|
+
|
|
538
|
+
return element.animate(keyframes, options);
|
|
539
|
+
}
|
|
540
|
+
|
|
541
|
+
// Apply motion reduction to CSS custom properties
|
|
542
|
+
static applyMotionReductionToCSS(element: HTMLElement): void {
|
|
543
|
+
if (!this.shouldReduceMotion(element)) return;
|
|
544
|
+
|
|
545
|
+
const style = element.style;
|
|
546
|
+
|
|
547
|
+
// Reduce animation duration
|
|
548
|
+
if (style.getPropertyValue('--animation-duration')) {
|
|
549
|
+
const duration = style.getPropertyValue('--animation-duration');
|
|
550
|
+
style.setProperty('--animation-duration', this.getReducedDuration(duration));
|
|
551
|
+
}
|
|
552
|
+
|
|
553
|
+
// Reduce transition duration
|
|
554
|
+
if (style.getPropertyValue('--transition-duration')) {
|
|
555
|
+
const duration = style.getPropertyValue('--transition-duration');
|
|
556
|
+
style.setProperty('--transition-duration', this.getReducedDuration(duration));
|
|
557
|
+
}
|
|
558
|
+
|
|
559
|
+
// Set easing to linear
|
|
560
|
+
if (style.getPropertyValue('--animation-easing')) {
|
|
561
|
+
style.setProperty('--animation-easing', 'linear');
|
|
562
|
+
}
|
|
563
|
+
|
|
564
|
+
if (style.getPropertyValue('--transition-easing')) {
|
|
565
|
+
style.setProperty('--transition-easing', 'linear');
|
|
566
|
+
}
|
|
567
|
+
}
|
|
568
|
+
|
|
569
|
+
// Remove motion reduction from CSS custom properties
|
|
570
|
+
static removeMotionReductionFromCSS(element: HTMLElement): void {
|
|
571
|
+
const style = element.style;
|
|
572
|
+
|
|
573
|
+
// Remove custom properties
|
|
574
|
+
style.removeProperty('--animation-duration');
|
|
575
|
+
style.removeProperty('--transition-duration');
|
|
576
|
+
style.removeProperty('--animation-easing');
|
|
577
|
+
style.removeProperty('--transition-easing');
|
|
578
|
+
}
|
|
579
|
+
|
|
580
|
+
// Check if element has motion
|
|
581
|
+
static hasMotion(element: HTMLElement): boolean {
|
|
582
|
+
const computedStyle = window.getComputedStyle(element);
|
|
583
|
+
|
|
584
|
+
return (
|
|
585
|
+
computedStyle.animation !== 'none' ||
|
|
586
|
+
computedStyle.transition !== 'all 0s ease 0s' ||
|
|
587
|
+
computedStyle.transform !== 'none'
|
|
588
|
+
);
|
|
589
|
+
}
|
|
590
|
+
|
|
591
|
+
// Get motion information for element
|
|
592
|
+
static getMotionInfo(element: HTMLElement): {
|
|
593
|
+
hasAnimation: boolean;
|
|
594
|
+
hasTransition: boolean;
|
|
595
|
+
hasTransform: boolean;
|
|
596
|
+
animationDuration: string;
|
|
597
|
+
transitionDuration: string;
|
|
598
|
+
transform: string;
|
|
599
|
+
} {
|
|
600
|
+
const computedStyle = window.getComputedStyle(element);
|
|
601
|
+
|
|
602
|
+
return {
|
|
603
|
+
hasAnimation: computedStyle.animation !== 'none',
|
|
604
|
+
hasTransition: computedStyle.transition !== 'all 0s ease 0s',
|
|
605
|
+
hasTransform: computedStyle.transform !== 'none',
|
|
606
|
+
animationDuration: computedStyle.animationDuration,
|
|
607
|
+
transitionDuration: computedStyle.transitionDuration,
|
|
608
|
+
transform: computedStyle.transform
|
|
609
|
+
};
|
|
610
|
+
}
|
|
611
|
+
}
|
|
612
|
+
|
|
613
|
+
// Motion reduction hooks for React
|
|
614
|
+
export class MotionReductionHooks {
|
|
615
|
+
// Get motion reduction state
|
|
616
|
+
static useMotionReduction(): {
|
|
617
|
+
isReduced: boolean;
|
|
618
|
+
preferences: {
|
|
619
|
+
reduceAnimation: boolean;
|
|
620
|
+
reduceTransition: boolean;
|
|
621
|
+
reduceTransform: boolean;
|
|
622
|
+
};
|
|
623
|
+
shouldReduceMotion: (element: HTMLElement) => boolean;
|
|
624
|
+
} {
|
|
625
|
+
// This would be implemented in a React component
|
|
626
|
+
// For now, return a mock implementation
|
|
627
|
+
return {
|
|
628
|
+
isReduced: false,
|
|
629
|
+
preferences: {
|
|
630
|
+
reduceAnimation: false,
|
|
631
|
+
reduceTransition: false,
|
|
632
|
+
reduceTransform: false
|
|
633
|
+
},
|
|
634
|
+
shouldReduceMotion: () => false
|
|
635
|
+
};
|
|
636
|
+
}
|
|
637
|
+
|
|
638
|
+
// Get motion-safe duration
|
|
639
|
+
static useMotionSafeDuration(defaultDuration: string, _type: 'animation' | 'transition'): string {
|
|
640
|
+
// This would be implemented in a React component
|
|
641
|
+
return defaultDuration;
|
|
642
|
+
}
|
|
643
|
+
|
|
644
|
+
// Get motion-safe easing
|
|
645
|
+
static useMotionSafeEasing(defaultEasing: string): string {
|
|
646
|
+
// This would be implemented in a React component
|
|
647
|
+
return defaultEasing;
|
|
648
|
+
}
|
|
649
|
+
}
|
|
650
|
+
|
|
651
|
+
// Export default instances
|
|
652
|
+
export declare const motionReductionManager: new MotionReductionManager();
|
|
653
|
+
|
|
654
|
+
// Export default
|
|
655
|
+
export default {
|
|
656
|
+
MotionReductionManager,
|
|
657
|
+
MotionReductionUtils,
|
|
658
|
+
MotionReductionHooks,
|
|
659
|
+
motionReductionManager
|
|
660
|
+
};
|