@rakeyshgidwani/roger-ui-bank-theme-stan-design 0.2.6 → 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/index.esm.js +2 -2
- package/dist/index.js +2 -2
- 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
- package/src/index.ts +2 -2
- package/src/themes/accessibility/index.ts +1 -1
- package/src/themes/focus-management.ts +3 -3
- package/src/themes/keyboard-navigation.ts +3 -3
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
export interface MemoryMetrics {
|
|
2
|
+
usedJSHeapSize: number
|
|
3
|
+
totalJSHeapSize: number
|
|
4
|
+
jsHeapSizeLimit: number
|
|
5
|
+
memoryUsage: number
|
|
6
|
+
memoryPercentage: number
|
|
7
|
+
memoryTrend: 'increasing' | 'decreasing' | 'stable'
|
|
8
|
+
memoryLeakDetected: boolean
|
|
9
|
+
performanceScore: 'excellent' | 'good' | 'fair' | 'poor'
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export interface MemoryThresholds {
|
|
13
|
+
warning: number
|
|
14
|
+
critical: number
|
|
15
|
+
excellent: number
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export interface MemoryCallbacks {
|
|
19
|
+
onMemoryWarning?: (usage: number) => void
|
|
20
|
+
onMemoryCritical?: (usage: number) => void
|
|
21
|
+
onMemoryLeakDetected?: (trend: MemoryMetrics['memoryTrend']) => void
|
|
22
|
+
onPerformanceScoreChange?: (score: MemoryMetrics['performanceScore']) => void
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export interface MemoryOptions {
|
|
26
|
+
updateInterval?: number
|
|
27
|
+
sampleSize?: number
|
|
28
|
+
thresholds?: Partial<MemoryThresholds>
|
|
29
|
+
callbacks?: MemoryCallbacks
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
const DEFAULT_THRESHOLDS: MemoryThresholds = {
|
|
33
|
+
warning: 0.7,
|
|
34
|
+
critical: 0.85,
|
|
35
|
+
excellent: 0.5
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
const DEFAULT_SAMPLE_SIZE = 10
|
|
39
|
+
const MEMORY_LEAK_THRESHOLD = 0.1 // 10% increase over time
|
|
40
|
+
|
|
41
|
+
export declare const useMemoryUsage: (options: MemoryOptions = {}) => {
|
|
42
|
+
const {
|
|
43
|
+
updateInterval = 2000,
|
|
44
|
+
sampleSize = DEFAULT_SAMPLE_SIZE,
|
|
45
|
+
thresholds = {},
|
|
46
|
+
callbacks = {}
|
|
47
|
+
} = options
|
|
48
|
+
|
|
49
|
+
const [metrics, setMetrics] = useState<MemoryMetrics>({
|
|
50
|
+
usedJSHeapSize: 0,
|
|
51
|
+
totalJSHeapSize: 0,
|
|
52
|
+
jsHeapSizeLimit: 0,
|
|
53
|
+
memoryUsage: 0,
|
|
54
|
+
memoryPercentage: 0,
|
|
55
|
+
memoryTrend: 'stable',
|
|
56
|
+
memoryLeakDetected: false,
|
|
57
|
+
performanceScore: 'excellent'
|
|
58
|
+
})
|
|
59
|
+
|
|
60
|
+
const [isMonitoring, setIsMonitoring] = useState(false)
|
|
61
|
+
const intervalIdRef = useRef<NodeJS.Timeout>()
|
|
62
|
+
const memoryHistoryRef = useRef<number[]>([])
|
|
63
|
+
const lastMemoryRef = useRef<number>(0)
|
|
64
|
+
|
|
65
|
+
// Merge default thresholds with custom ones
|
|
66
|
+
const finalThresholds = useMemo(() => ({
|
|
67
|
+
...DEFAULT_THRESHOLDS,
|
|
68
|
+
...thresholds
|
|
69
|
+
}), [thresholds])
|
|
70
|
+
|
|
71
|
+
// Calculate performance score based on memory usage
|
|
72
|
+
const calculatePerformanceScore = useCallback((usage: number): MemoryMetrics['performanceScore'] => {
|
|
73
|
+
if (usage <= finalThresholds.excellent) return 'excellent'
|
|
74
|
+
if (usage <= finalThresholds.warning) return 'good'
|
|
75
|
+
if (usage <= finalThresholds.critical) return 'fair'
|
|
76
|
+
return 'poor'
|
|
77
|
+
}, [finalThresholds])
|
|
78
|
+
|
|
79
|
+
// Detect memory trend
|
|
80
|
+
const detectMemoryTrend = useCallback((currentUsage: number, previousUsage: number): MemoryMetrics['memoryTrend'] => {
|
|
81
|
+
const difference = currentUsage - previousUsage
|
|
82
|
+
const percentageChange = Math.abs(difference) / previousUsage
|
|
83
|
+
|
|
84
|
+
if (percentageChange < 0.02) return 'stable'
|
|
85
|
+
if (difference > 0) return 'increasing'
|
|
86
|
+
return 'decreasing'
|
|
87
|
+
}, [])
|
|
88
|
+
|
|
89
|
+
// Detect potential memory leaks
|
|
90
|
+
const detectMemoryLeak = useCallback((_usage: number, history: number[]): boolean => {
|
|
91
|
+
if (history.length < 5) return false
|
|
92
|
+
|
|
93
|
+
// Check if memory usage is consistently increasing
|
|
94
|
+
const recentHistory = history.slice(-5)
|
|
95
|
+
const isConsistentlyIncreasing = recentHistory.every((value, index) => {
|
|
96
|
+
if (index === 0) return true
|
|
97
|
+
return value >= recentHistory[index - 1]
|
|
98
|
+
})
|
|
99
|
+
|
|
100
|
+
if (!isConsistentlyIncreasing) return false
|
|
101
|
+
|
|
102
|
+
// Check if the increase is significant
|
|
103
|
+
const firstValue = recentHistory[0]
|
|
104
|
+
const lastValue = recentHistory[recentHistory.length - 1]
|
|
105
|
+
const increase = (lastValue - firstValue) / firstValue
|
|
106
|
+
|
|
107
|
+
return increase > MEMORY_LEAK_THRESHOLD
|
|
108
|
+
}, [])
|
|
109
|
+
|
|
110
|
+
// Update memory information
|
|
111
|
+
const updateMemoryInfo = useCallback(() => {
|
|
112
|
+
if ('memory' in performance) {
|
|
113
|
+
const memory = (performance as any).memory
|
|
114
|
+
const usedJSHeapSize = memory.usedJSHeapSize
|
|
115
|
+
const totalJSHeapSize = memory.totalJSHeapSize
|
|
116
|
+
const jsHeapSizeLimit = memory.jsHeapSizeLimit
|
|
117
|
+
|
|
118
|
+
const memoryUsage = usedJSHeapSize / jsHeapSizeLimit
|
|
119
|
+
const memoryPercentage = memoryUsage * 100
|
|
120
|
+
|
|
121
|
+
// Update memory history
|
|
122
|
+
memoryHistoryRef.current.push(memoryUsage)
|
|
123
|
+
if (memoryHistoryRef.current.length > sampleSize) {
|
|
124
|
+
memoryHistoryRef.current.shift()
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
// Detect memory trend
|
|
128
|
+
const memoryTrend = detectMemoryTrend(memoryUsage, lastMemoryRef.current)
|
|
129
|
+
|
|
130
|
+
// Detect memory leaks
|
|
131
|
+
const memoryLeakDetected = detectMemoryLeak(memoryUsage, memoryHistoryRef.current)
|
|
132
|
+
|
|
133
|
+
// Calculate performance score
|
|
134
|
+
const performanceScore = calculatePerformanceScore(memoryUsage)
|
|
135
|
+
|
|
136
|
+
const newMetrics: MemoryMetrics = {
|
|
137
|
+
usedJSHeapSize,
|
|
138
|
+
totalJSHeapSize,
|
|
139
|
+
jsHeapSizeLimit,
|
|
140
|
+
memoryUsage,
|
|
141
|
+
memoryPercentage,
|
|
142
|
+
memoryTrend,
|
|
143
|
+
memoryLeakDetected,
|
|
144
|
+
performanceScore
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
setMetrics(newMetrics)
|
|
148
|
+
|
|
149
|
+
// Check thresholds and call callbacks
|
|
150
|
+
if (memoryUsage >= finalThresholds.critical && callbacks.onMemoryCritical) {
|
|
151
|
+
callbacks.onMemoryCritical(memoryUsage)
|
|
152
|
+
} else if (memoryUsage >= finalThresholds.warning && callbacks.onMemoryWarning) {
|
|
153
|
+
callbacks.onMemoryWarning(memoryUsage)
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
if (memoryLeakDetected && callbacks.onMemoryLeakDetected) {
|
|
157
|
+
callbacks.onMemoryLeakDetected(memoryTrend)
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
// Check if performance score changed
|
|
161
|
+
if (performanceScore !== metrics.performanceScore && callbacks.onPerformanceScoreChange) {
|
|
162
|
+
callbacks.onPerformanceScoreChange(performanceScore)
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
lastMemoryRef.current = memoryUsage
|
|
166
|
+
}
|
|
167
|
+
}, [finalThresholds, callbacks, metrics.performanceScore, detectMemoryTrend, detectMemoryLeak, calculatePerformanceScore, sampleSize])
|
|
168
|
+
|
|
169
|
+
// Start monitoring
|
|
170
|
+
const startMonitoring = useCallback(() => {
|
|
171
|
+
if (isMonitoring) return
|
|
172
|
+
|
|
173
|
+
setIsMonitoring(true)
|
|
174
|
+
|
|
175
|
+
// Initial memory check
|
|
176
|
+
updateMemoryInfo()
|
|
177
|
+
|
|
178
|
+
// Set up interval for memory updates
|
|
179
|
+
intervalIdRef.current = setInterval(updateMemoryInfo, updateInterval)
|
|
180
|
+
}, [isMonitoring, updateMemoryInfo, updateInterval])
|
|
181
|
+
|
|
182
|
+
// Stop monitoring
|
|
183
|
+
const stopMonitoring = useCallback(() => {
|
|
184
|
+
setIsMonitoring(false)
|
|
185
|
+
|
|
186
|
+
if (intervalIdRef.current) {
|
|
187
|
+
clearInterval(intervalIdRef.current)
|
|
188
|
+
}
|
|
189
|
+
}, [])
|
|
190
|
+
|
|
191
|
+
// Reset statistics
|
|
192
|
+
const resetStats = useCallback(() => {
|
|
193
|
+
memoryHistoryRef.current = []
|
|
194
|
+
lastMemoryRef.current = 0
|
|
195
|
+
setMetrics(prev => ({
|
|
196
|
+
...prev,
|
|
197
|
+
memoryTrend: 'stable',
|
|
198
|
+
memoryLeakDetected: false
|
|
199
|
+
}))
|
|
200
|
+
}, [])
|
|
201
|
+
|
|
202
|
+
// Auto-start monitoring on mount
|
|
203
|
+
useEffect(() => {
|
|
204
|
+
startMonitoring()
|
|
205
|
+
return () => stopMonitoring()
|
|
206
|
+
}, [startMonitoring, stopMonitoring])
|
|
207
|
+
|
|
208
|
+
// Memory optimization recommendations
|
|
209
|
+
const getOptimizationRecommendations = useCallback(() => {
|
|
210
|
+
const recommendations: string[] = []
|
|
211
|
+
|
|
212
|
+
if (metrics.memoryUsage >= finalThresholds.critical) {
|
|
213
|
+
recommendations.push('Critical memory usage - consider implementing memory cleanup and lazy loading')
|
|
214
|
+
} else if (metrics.memoryUsage >= finalThresholds.warning) {
|
|
215
|
+
recommendations.push('High memory usage - monitor for memory leaks and optimize resource usage')
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
if (metrics.memoryLeakDetected) {
|
|
219
|
+
recommendations.push('Potential memory leak detected - investigate resource cleanup and event listeners')
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
if (metrics.memoryTrend === 'increasing') {
|
|
223
|
+
recommendations.push('Memory usage is increasing - check for proper cleanup in useEffect and event handlers')
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
if (metrics.memoryPercentage > 80) {
|
|
227
|
+
recommendations.push('Memory usage above 80% - consider implementing virtual scrolling or pagination')
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
return recommendations
|
|
231
|
+
}, [metrics, finalThresholds])
|
|
232
|
+
|
|
233
|
+
// Memory cleanup suggestions
|
|
234
|
+
const getCleanupSuggestions = useCallback(() => {
|
|
235
|
+
const suggestions: string[] = []
|
|
236
|
+
|
|
237
|
+
if (metrics.memoryLeakDetected) {
|
|
238
|
+
suggestions.push('Review useEffect cleanup functions')
|
|
239
|
+
suggestions.push('Check for unremoved event listeners')
|
|
240
|
+
suggestions.push('Verify proper cleanup in component unmount')
|
|
241
|
+
suggestions.push('Consider using AbortController for fetch requests')
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
if (metrics.memoryTrend === 'increasing') {
|
|
245
|
+
suggestions.push('Implement proper cleanup in useEffect return functions')
|
|
246
|
+
suggestions.push('Review component lifecycle management')
|
|
247
|
+
suggestions.push('Check for circular references')
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
return suggestions
|
|
251
|
+
}, [metrics])
|
|
252
|
+
|
|
253
|
+
return {
|
|
254
|
+
// Metrics
|
|
255
|
+
metrics,
|
|
256
|
+
|
|
257
|
+
// Controls
|
|
258
|
+
startMonitoring,
|
|
259
|
+
stopMonitoring,
|
|
260
|
+
isMonitoring,
|
|
261
|
+
resetStats,
|
|
262
|
+
|
|
263
|
+
// Performance analysis
|
|
264
|
+
performanceScore: metrics.performanceScore,
|
|
265
|
+
memoryTrend: metrics.memoryTrend,
|
|
266
|
+
memoryLeakDetected: metrics.memoryLeakDetected,
|
|
267
|
+
|
|
268
|
+
// Optimization
|
|
269
|
+
getOptimizationRecommendations,
|
|
270
|
+
getCleanupSuggestions,
|
|
271
|
+
|
|
272
|
+
// Raw values
|
|
273
|
+
usedJSHeapSize: metrics.usedJSHeapSize,
|
|
274
|
+
totalJSHeapSize: metrics.totalJSHeapSize,
|
|
275
|
+
jsHeapSizeLimit: metrics.jsHeapSizeLimit,
|
|
276
|
+
memoryUsage: metrics.memoryUsage,
|
|
277
|
+
memoryPercentage: metrics.memoryPercentage,
|
|
278
|
+
|
|
279
|
+
// Thresholds
|
|
280
|
+
thresholds: finalThresholds,
|
|
281
|
+
|
|
282
|
+
// History
|
|
283
|
+
memoryHistory: memoryHistoryRef.current
|
|
284
|
+
}
|
|
285
|
+
}
|
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
import { useState, useEffect, useCallback, useRef, useMemo } from 'react'
|
|
2
|
+
|
|
3
|
+
export interface MemoryMetrics {
|
|
4
|
+
usedJSHeapSize}
|
|
5
|
+
|
|
6
|
+
export interface MemoryThresholds {
|
|
7
|
+
warning}
|
|
8
|
+
|
|
9
|
+
export interface MemoryCallbacks {
|
|
10
|
+
onMemoryWarning?) => void
|
|
11
|
+
onMemoryCritical?) => void
|
|
12
|
+
onMemoryLeakDetected?]) => void
|
|
13
|
+
onPerformanceScoreChange?]) => void
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export interface MemoryOptions {
|
|
17
|
+
updateInterval?}
|
|
18
|
+
|
|
19
|
+
const DEFAULT_THRESHOLDS= {
|
|
20
|
+
warning,
|
|
21
|
+
critical,
|
|
22
|
+
excellent}
|
|
23
|
+
|
|
24
|
+
const DEFAULT_SAMPLE_SIZE = 10
|
|
25
|
+
const MEMORY_LEAK_THRESHOLD = 0.1 // 10% increase over time
|
|
26
|
+
|
|
27
|
+
export const useMemoryUsage = (options= {}) => {
|
|
28
|
+
const {
|
|
29
|
+
updateInterval = 2000,
|
|
30
|
+
sampleSize = DEFAULT_SAMPLE_SIZE,
|
|
31
|
+
thresholds = {},
|
|
32
|
+
callbacks = {}
|
|
33
|
+
} = options
|
|
34
|
+
|
|
35
|
+
const [metrics, setMetrics] = useState<MemoryMetrics>({
|
|
36
|
+
usedJSHeapSize,
|
|
37
|
+
totalJSHeapSize,
|
|
38
|
+
jsHeapSizeLimit,
|
|
39
|
+
memoryUsage,
|
|
40
|
+
memoryPercentage,
|
|
41
|
+
memoryTrend,
|
|
42
|
+
memoryLeakDetected,
|
|
43
|
+
performanceScore})
|
|
44
|
+
|
|
45
|
+
const [isMonitoring, setIsMonitoring] = useState(false)
|
|
46
|
+
const intervalIdRef = useRef<NodeJS.Timeout>()
|
|
47
|
+
const memoryHistoryRef = useRef<number[]>([])
|
|
48
|
+
const lastMemoryRef = useRef<number>(0)
|
|
49
|
+
|
|
50
|
+
// Merge default thresholds with custom ones
|
|
51
|
+
const finalThresholds = useMemo(() => ({
|
|
52
|
+
...DEFAULT_THRESHOLDS,
|
|
53
|
+
...thresholds
|
|
54
|
+
}), [thresholds])
|
|
55
|
+
|
|
56
|
+
// Calculate performance score based on memory usage
|
|
57
|
+
const calculatePerformanceScore = useCallback((usage)] => {
|
|
58
|
+
if (usage <= finalThresholds.excellent) return 'excellent'
|
|
59
|
+
if (usage <= finalThresholds.warning) return 'good'
|
|
60
|
+
if (usage <= finalThresholds.critical) return 'fair'
|
|
61
|
+
return 'poor'
|
|
62
|
+
}, [finalThresholds])
|
|
63
|
+
|
|
64
|
+
// Detect memory trend
|
|
65
|
+
const detectMemoryTrend = useCallback((currentUsage, previousUsage)] => {
|
|
66
|
+
const difference = currentUsage - previousUsage
|
|
67
|
+
const percentageChange = Math.abs(difference) / previousUsage
|
|
68
|
+
|
|
69
|
+
if (percentageChange < 0.02) return 'stable'
|
|
70
|
+
if (difference > 0) return 'increasing'
|
|
71
|
+
return 'decreasing'
|
|
72
|
+
}, [])
|
|
73
|
+
|
|
74
|
+
// Detect potential memory leaks
|
|
75
|
+
const detectMemoryLeak = useCallback((_usage, history])=> {
|
|
76
|
+
if (history.length < 5) return false
|
|
77
|
+
|
|
78
|
+
// Check if memory usage is consistently increasing
|
|
79
|
+
const recentHistory = history.slice(-5)
|
|
80
|
+
const isConsistentlyIncreasing = recentHistory.every((value, index) => {
|
|
81
|
+
if (index === 0) return true
|
|
82
|
+
return value >= recentHistory[index - 1]
|
|
83
|
+
})
|
|
84
|
+
|
|
85
|
+
if (!isConsistentlyIncreasing) return false
|
|
86
|
+
|
|
87
|
+
// Check if the increase is significant
|
|
88
|
+
const firstValue = recentHistory[0]
|
|
89
|
+
const lastValue = recentHistory[recentHistory.length - 1]
|
|
90
|
+
const increase = (lastValue - firstValue) / firstValue
|
|
91
|
+
|
|
92
|
+
return increase > MEMORY_LEAK_THRESHOLD
|
|
93
|
+
}, [])
|
|
94
|
+
|
|
95
|
+
// Update memory information
|
|
96
|
+
const updateMemoryInfo = useCallback(() => {
|
|
97
|
+
if ('memory' in performance) {
|
|
98
|
+
const memory = (performance as any).memory
|
|
99
|
+
const usedJSHeapSize = memory.usedJSHeapSize
|
|
100
|
+
const totalJSHeapSize = memory.totalJSHeapSize
|
|
101
|
+
const jsHeapSizeLimit = memory.jsHeapSizeLimit
|
|
102
|
+
|
|
103
|
+
const memoryUsage = usedJSHeapSize / jsHeapSizeLimit
|
|
104
|
+
const memoryPercentage = memoryUsage * 100
|
|
105
|
+
|
|
106
|
+
// Update memory history
|
|
107
|
+
memoryHistoryRef.current.push(memoryUsage)
|
|
108
|
+
if (memoryHistoryRef.current.length > sampleSize) {
|
|
109
|
+
memoryHistoryRef.current.shift()
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
// Detect memory trend
|
|
113
|
+
const memoryTrend = detectMemoryTrend(memoryUsage, lastMemoryRef.current)
|
|
114
|
+
|
|
115
|
+
// Detect memory leaks
|
|
116
|
+
const memoryLeakDetected = detectMemoryLeak(memoryUsage, memoryHistoryRef.current)
|
|
117
|
+
|
|
118
|
+
// Calculate performance score
|
|
119
|
+
const performanceScore = calculatePerformanceScore(memoryUsage)
|
|
120
|
+
|
|
121
|
+
const newMetrics= {
|
|
122
|
+
usedJSHeapSize,
|
|
123
|
+
totalJSHeapSize,
|
|
124
|
+
jsHeapSizeLimit,
|
|
125
|
+
memoryUsage,
|
|
126
|
+
memoryPercentage,
|
|
127
|
+
memoryTrend,
|
|
128
|
+
memoryLeakDetected,
|
|
129
|
+
performanceScore
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
setMetrics(newMetrics)
|
|
133
|
+
|
|
134
|
+
// Check thresholds and call callbacks
|
|
135
|
+
if (memoryUsage >= finalThresholds.critical && callbacks.onMemoryCritical) {
|
|
136
|
+
callbacks.onMemoryCritical(memoryUsage)
|
|
137
|
+
} else if (memoryUsage >= finalThresholds.warning && callbacks.onMemoryWarning) {
|
|
138
|
+
callbacks.onMemoryWarning(memoryUsage)
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
if (memoryLeakDetected && callbacks.onMemoryLeakDetected) {
|
|
142
|
+
callbacks.onMemoryLeakDetected(memoryTrend)
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
// Check if performance score changed
|
|
146
|
+
if (performanceScore !== metrics.performanceScore && callbacks.onPerformanceScoreChange) {
|
|
147
|
+
callbacks.onPerformanceScoreChange(performanceScore)
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
lastMemoryRef.current = memoryUsage
|
|
151
|
+
}
|
|
152
|
+
}, [finalThresholds, callbacks, metrics.performanceScore, detectMemoryTrend, detectMemoryLeak, calculatePerformanceScore, sampleSize])
|
|
153
|
+
|
|
154
|
+
// Start monitoring
|
|
155
|
+
const startMonitoring = useCallback(() => {
|
|
156
|
+
if (isMonitoring) return
|
|
157
|
+
|
|
158
|
+
setIsMonitoring(true)
|
|
159
|
+
|
|
160
|
+
// Initial memory check
|
|
161
|
+
updateMemoryInfo()
|
|
162
|
+
|
|
163
|
+
// Set up interval for memory updates
|
|
164
|
+
intervalIdRef.current = setInterval(updateMemoryInfo, updateInterval)
|
|
165
|
+
}, [isMonitoring, updateMemoryInfo, updateInterval])
|
|
166
|
+
|
|
167
|
+
// Stop monitoring
|
|
168
|
+
const stopMonitoring = useCallback(() => {
|
|
169
|
+
setIsMonitoring(false)
|
|
170
|
+
|
|
171
|
+
if (intervalIdRef.current) {
|
|
172
|
+
clearInterval(intervalIdRef.current)
|
|
173
|
+
}
|
|
174
|
+
}, [])
|
|
175
|
+
|
|
176
|
+
// Reset statistics
|
|
177
|
+
const resetStats = useCallback(() => {
|
|
178
|
+
memoryHistoryRef.current = []
|
|
179
|
+
lastMemoryRef.current = 0
|
|
180
|
+
setMetrics(prev => ({
|
|
181
|
+
...prev,
|
|
182
|
+
memoryTrend,
|
|
183
|
+
memoryLeakDetected}))
|
|
184
|
+
}, [])
|
|
185
|
+
|
|
186
|
+
// Auto-start monitoring on mount
|
|
187
|
+
useEffect(() => {
|
|
188
|
+
startMonitoring()
|
|
189
|
+
return () => stopMonitoring()
|
|
190
|
+
}, [startMonitoring, stopMonitoring])
|
|
191
|
+
|
|
192
|
+
// Memory optimization recommendations
|
|
193
|
+
const getOptimizationRecommendations = useCallback(() => {
|
|
194
|
+
const recommendations] = []
|
|
195
|
+
|
|
196
|
+
if (metrics.memoryUsage >= finalThresholds.critical) {
|
|
197
|
+
recommendations.push('Critical memory usage - consider implementing memory cleanup and lazy loading')
|
|
198
|
+
} else if (metrics.memoryUsage >= finalThresholds.warning) {
|
|
199
|
+
recommendations.push('High memory usage - monitor for memory leaks and optimize resource usage')
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
if (metrics.memoryLeakDetected) {
|
|
203
|
+
recommendations.push('Potential memory leak detected - investigate resource cleanup and event listeners')
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
if (metrics.memoryTrend === 'increasing') {
|
|
207
|
+
recommendations.push('Memory usage is increasing - check for proper cleanup in useEffect and event handlers')
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
if (metrics.memoryPercentage > 80) {
|
|
211
|
+
recommendations.push('Memory usage above 80% - consider implementing virtual scrolling or pagination')
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
return recommendations
|
|
215
|
+
}, [metrics, finalThresholds])
|
|
216
|
+
|
|
217
|
+
// Memory cleanup suggestions
|
|
218
|
+
const getCleanupSuggestions = useCallback(() => {
|
|
219
|
+
const suggestions] = []
|
|
220
|
+
|
|
221
|
+
if (metrics.memoryLeakDetected) {
|
|
222
|
+
suggestions.push('Review useEffect cleanup functions')
|
|
223
|
+
suggestions.push('Check for unremoved event listeners')
|
|
224
|
+
suggestions.push('Verify proper cleanup in component unmount')
|
|
225
|
+
suggestions.push('Consider using AbortController for fetch requests')
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
if (metrics.memoryTrend === 'increasing') {
|
|
229
|
+
suggestions.push('Implement proper cleanup in useEffect return functions')
|
|
230
|
+
suggestions.push('Review component lifecycle management')
|
|
231
|
+
suggestions.push('Check for circular references')
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
return suggestions
|
|
235
|
+
}, [metrics])
|
|
236
|
+
|
|
237
|
+
return {
|
|
238
|
+
// Metrics
|
|
239
|
+
metrics,
|
|
240
|
+
|
|
241
|
+
// Controls
|
|
242
|
+
startMonitoring,
|
|
243
|
+
stopMonitoring,
|
|
244
|
+
isMonitoring,
|
|
245
|
+
resetStats,
|
|
246
|
+
|
|
247
|
+
// Performance analysis
|
|
248
|
+
performanceScore,
|
|
249
|
+
memoryTrend,
|
|
250
|
+
memoryLeakDetected,
|
|
251
|
+
|
|
252
|
+
// Optimization
|
|
253
|
+
getOptimizationRecommendations,
|
|
254
|
+
getCleanupSuggestions,
|
|
255
|
+
|
|
256
|
+
// Raw values
|
|
257
|
+
usedJSHeapSize,
|
|
258
|
+
totalJSHeapSize,
|
|
259
|
+
jsHeapSizeLimit,
|
|
260
|
+
memoryUsage,
|
|
261
|
+
memoryPercentage,
|
|
262
|
+
|
|
263
|
+
// Thresholds
|
|
264
|
+
thresholds,
|
|
265
|
+
|
|
266
|
+
// History
|
|
267
|
+
memoryHistory}
|
|
268
|
+
}
|