@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,279 @@
|
|
|
1
|
+
import { useState, useCallback, useRef, useEffect, ReactNode, ComponentType } from 'react'
|
|
2
|
+
|
|
3
|
+
export interface AdvancedPatternsConfig {
|
|
4
|
+
enableCompoundComponents?}
|
|
5
|
+
|
|
6
|
+
export interface CompoundComponentContext {
|
|
7
|
+
registerComponent, component) => void
|
|
8
|
+
unregisterComponent) => void
|
|
9
|
+
getComponent) => ReactNode | undefined
|
|
10
|
+
getAllComponents) => ReactNode[]
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export interface RenderPropsConfig<T = any> {
|
|
14
|
+
data) => ReactNode
|
|
15
|
+
fallback?}
|
|
16
|
+
|
|
17
|
+
export interface HigherOrderComponentConfig {
|
|
18
|
+
component, any>
|
|
19
|
+
enhancers) => ComponentType<any>>
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export interface AdvancedPatternsCallbacks {
|
|
23
|
+
onPatternApplied?, component) => void
|
|
24
|
+
onPerformanceOptimized?) => void
|
|
25
|
+
onAccessibilityEnhanced?) => void
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export const useAdvancedPatterns = (
|
|
29
|
+
config= {},
|
|
30
|
+
callbacks= {}
|
|
31
|
+
) => {
|
|
32
|
+
const {
|
|
33
|
+
enableCompoundComponents = true,
|
|
34
|
+
enableRenderProps = true,
|
|
35
|
+
enableHigherOrderComponents = true,
|
|
36
|
+
enableCustomHooks = true,
|
|
37
|
+
enablePerformanceOptimization = true,
|
|
38
|
+
enableAccessibilitySupport = true
|
|
39
|
+
} = config
|
|
40
|
+
|
|
41
|
+
const [patterns, setPatterns] = useState<string[]>([])
|
|
42
|
+
const [isOptimizing, setIsOptimizing] = useState(false)
|
|
43
|
+
const componentsRef = useRef<Map<string, ReactNode>>(new Map())
|
|
44
|
+
const performanceMetricsRef = useRef<Map<string, number>>(new Map())
|
|
45
|
+
|
|
46
|
+
// Compound Components Pattern
|
|
47
|
+
const createCompoundComponent = useCallback((
|
|
48
|
+
baseComponent,
|
|
49
|
+
subComponents, ComponentType<any>>
|
|
50
|
+
) => {
|
|
51
|
+
if (!enableCompoundComponents) return baseComponent
|
|
52
|
+
|
|
53
|
+
const compoundComponent = Object.assign(baseComponent, subComponents)
|
|
54
|
+
|
|
55
|
+
setPatterns(prev => [...prev, 'Compound Components'])
|
|
56
|
+
callbacks.onPatternApplied?.('Compound Components', baseComponent.displayName || 'Unknown')
|
|
57
|
+
|
|
58
|
+
return compoundComponent
|
|
59
|
+
}, [enableCompoundComponents, callbacks])
|
|
60
|
+
|
|
61
|
+
// Render Props Pattern
|
|
62
|
+
const createRenderPropsComponent = useCallback(<T,>(
|
|
63
|
+
config) => {
|
|
64
|
+
if (!enableRenderProps) return null
|
|
65
|
+
|
|
66
|
+
const { data, loading, error, render, fallback } = config
|
|
67
|
+
|
|
68
|
+
if (loading) {
|
|
69
|
+
return { type, fallback }
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
if (error) {
|
|
73
|
+
return { type, message}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
setPatterns(prev => [...prev, 'Render Props'])
|
|
77
|
+
callbacks.onPatternApplied?.('Render Props', 'RenderPropsComponent')
|
|
78
|
+
|
|
79
|
+
return { type, data, render }
|
|
80
|
+
}, [enableRenderProps, callbacks])
|
|
81
|
+
|
|
82
|
+
// Higher-Order Component Pattern
|
|
83
|
+
const createHigherOrderComponent = useCallback((
|
|
84
|
+
config) => {
|
|
85
|
+
if (!enableHigherOrderComponents) return config.component
|
|
86
|
+
|
|
87
|
+
const { component, props, enhancers } = config
|
|
88
|
+
|
|
89
|
+
let EnhancedComponent = Component
|
|
90
|
+
|
|
91
|
+
enhancers.forEach(enhancer => {
|
|
92
|
+
EnhancedComponent = enhancer(EnhancedComponent)
|
|
93
|
+
})
|
|
94
|
+
|
|
95
|
+
setPatterns(prev => [...prev, 'Higher-Order Components'])
|
|
96
|
+
callbacks.onPatternApplied?.('Higher-Order Components', Component.displayName || 'Unknown')
|
|
97
|
+
|
|
98
|
+
return { component, props, enhanced}
|
|
99
|
+
}, [enableHigherOrderComponents, callbacks])
|
|
100
|
+
|
|
101
|
+
// Custom Hooks Pattern
|
|
102
|
+
const createCustomHook = useCallback(<T>(
|
|
103
|
+
hookName,
|
|
104
|
+
hookLogic) => T
|
|
105
|
+
) => {
|
|
106
|
+
if (!enableCustomHooks) return hookLogic()
|
|
107
|
+
|
|
108
|
+
setPatterns(prev => [...prev, 'Custom Hooks'])
|
|
109
|
+
callbacks.onPatternApplied?.('Custom Hooks', hookName)
|
|
110
|
+
|
|
111
|
+
return hookLogic()
|
|
112
|
+
}, [enableCustomHooks, callbacks])
|
|
113
|
+
|
|
114
|
+
// Performance Optimization
|
|
115
|
+
const optimizeComponent = useCallback((
|
|
116
|
+
componentId,
|
|
117
|
+
optimizationType) => {
|
|
118
|
+
if (!enablePerformanceOptimization) return
|
|
119
|
+
|
|
120
|
+
setIsOptimizing(true)
|
|
121
|
+
|
|
122
|
+
setTimeout(() => {
|
|
123
|
+
const optimization = `${optimizationType} applied to ${componentId}`
|
|
124
|
+
setPatterns(prev => [...prev, optimization])
|
|
125
|
+
callbacks.onPerformanceOptimized?.(optimization)
|
|
126
|
+
setIsOptimizing(false)
|
|
127
|
+
}, 200)
|
|
128
|
+
}, [enablePerformanceOptimization, callbacks])
|
|
129
|
+
|
|
130
|
+
// Accessibility Enhancement
|
|
131
|
+
const enhanceAccessibility = useCallback((
|
|
132
|
+
componentId,
|
|
133
|
+
feature) => {
|
|
134
|
+
if (!enableAccessibilitySupport) return
|
|
135
|
+
|
|
136
|
+
const enhancement = `${feature} accessibility enhanced for ${componentId}`
|
|
137
|
+
setPatterns(prev => [...prev, enhancement])
|
|
138
|
+
callbacks.onAccessibilityEnhanced?.(enhancement)
|
|
139
|
+
}, [enableAccessibilitySupport, callbacks])
|
|
140
|
+
|
|
141
|
+
// Component Registry
|
|
142
|
+
const registerComponent = useCallback((id, component) => {
|
|
143
|
+
componentsRef.current.set(id, component)
|
|
144
|
+
}, [])
|
|
145
|
+
|
|
146
|
+
const unregisterComponent = useCallback((id) => {
|
|
147
|
+
componentsRef.current.delete(id)
|
|
148
|
+
}, [])
|
|
149
|
+
|
|
150
|
+
const getComponent = useCallback((id) => {
|
|
151
|
+
return componentsRef.current.get(id)
|
|
152
|
+
}, [])
|
|
153
|
+
|
|
154
|
+
const getAllComponents = useCallback(() => {
|
|
155
|
+
return Array.from(componentsRef.current.values())
|
|
156
|
+
}, [])
|
|
157
|
+
|
|
158
|
+
// Performance Monitoring
|
|
159
|
+
const measurePerformance = useCallback((componentId, operation) => {
|
|
160
|
+
const startTime = performance.now()
|
|
161
|
+
|
|
162
|
+
return () => {
|
|
163
|
+
const endTime = performance.now()
|
|
164
|
+
const duration = endTime - startTime
|
|
165
|
+
performanceMetricsRef.current.set(`${componentId}-${operation}`, duration)
|
|
166
|
+
}
|
|
167
|
+
}, [])
|
|
168
|
+
|
|
169
|
+
// Pattern Analysis
|
|
170
|
+
const analyzePatterns = useCallback(() => {
|
|
171
|
+
const patternCounts = patterns.reduce((acc, pattern) => {
|
|
172
|
+
acc[pattern] = (acc[pattern] || 0) + 1
|
|
173
|
+
return acc
|
|
174
|
+
}, {} as Record<string, number>)
|
|
175
|
+
|
|
176
|
+
return {
|
|
177
|
+
totalPatterns,
|
|
178
|
+
patternCounts,
|
|
179
|
+
uniquePatterns).length,
|
|
180
|
+
performanceMetrics)
|
|
181
|
+
}
|
|
182
|
+
}, [patterns])
|
|
183
|
+
|
|
184
|
+
// Pattern Recommendations
|
|
185
|
+
const getPatternRecommendations = useCallback(() => {
|
|
186
|
+
const recommendations = []
|
|
187
|
+
|
|
188
|
+
if (patterns.length === 0) {
|
|
189
|
+
recommendations.push('Consider implementing compound components for complex UI structures')
|
|
190
|
+
recommendations.push('Use render props for flexible component composition')
|
|
191
|
+
recommendations.push('Apply higher-order components for cross-cutting concerns')
|
|
192
|
+
recommendations.push('Create custom hooks for reusable logic')
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
if (!patterns.includes('Performance Optimization')) {
|
|
196
|
+
recommendations.push('Implement memoization for expensive computations')
|
|
197
|
+
recommendations.push('Use lazy loading for large component trees')
|
|
198
|
+
recommendations.push('Consider virtualization for long lists')
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
if (!patterns.includes('Accessibility Support')) {
|
|
202
|
+
recommendations.push('Add ARIA labels and roles to components')
|
|
203
|
+
recommendations.push('Implement keyboard navigation support')
|
|
204
|
+
recommendations.push('Ensure screen reader compatibility')
|
|
205
|
+
recommendations.push('Add focus management features')
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
return recommendations
|
|
209
|
+
}, [patterns])
|
|
210
|
+
|
|
211
|
+
// Pattern Validation
|
|
212
|
+
const validatePatterns = useCallback(() => {
|
|
213
|
+
const validation = {
|
|
214
|
+
isValid,
|
|
215
|
+
errors] as string[],
|
|
216
|
+
warnings] as string[]
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
// Check for pattern conflicts
|
|
220
|
+
if (patterns.includes('Compound Components') && patterns.includes('Higher-Order Components')) {
|
|
221
|
+
validation.warnings.push('Compound Components and Higher-Order Components can be used together but may increase complexity')
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
// Check for missing optimizations
|
|
225
|
+
if (patterns.length > 3 && !patterns.includes('Performance Optimization')) {
|
|
226
|
+
validation.warnings.push('Multiple patterns detected without performance optimization')
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
// Check for accessibility compliance
|
|
230
|
+
if (patterns.length > 2 && !patterns.includes('Accessibility Support')) {
|
|
231
|
+
validation.warnings.push('Multiple patterns detected without accessibility support')
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
return validation
|
|
235
|
+
}, [patterns])
|
|
236
|
+
|
|
237
|
+
// Cleanup on unmount
|
|
238
|
+
useEffect(() => {
|
|
239
|
+
return () => {
|
|
240
|
+
componentsRef.current.clear()
|
|
241
|
+
performanceMetricsRef.current.clear()
|
|
242
|
+
}
|
|
243
|
+
}, [])
|
|
244
|
+
|
|
245
|
+
return {
|
|
246
|
+
// State
|
|
247
|
+
patterns,
|
|
248
|
+
isOptimizing,
|
|
249
|
+
|
|
250
|
+
// Pattern Creators
|
|
251
|
+
createCompoundComponent,
|
|
252
|
+
createRenderPropsComponent,
|
|
253
|
+
createHigherOrderComponent,
|
|
254
|
+
createCustomHook,
|
|
255
|
+
|
|
256
|
+
// Optimization
|
|
257
|
+
optimizeComponent,
|
|
258
|
+
enhanceAccessibility,
|
|
259
|
+
measurePerformance,
|
|
260
|
+
|
|
261
|
+
// Component Registry
|
|
262
|
+
registerComponent,
|
|
263
|
+
unregisterComponent,
|
|
264
|
+
getComponent,
|
|
265
|
+
getAllComponents,
|
|
266
|
+
|
|
267
|
+
// Analysis
|
|
268
|
+
analyzePatterns,
|
|
269
|
+
getPatternRecommendations,
|
|
270
|
+
validatePatterns,
|
|
271
|
+
|
|
272
|
+
// Utility functions
|
|
273
|
+
hasPattern) => patterns.includes(pattern),
|
|
274
|
+
getPatternCount) => patterns.filter(p => p === pattern).length,
|
|
275
|
+
clearPatterns) => setPatterns([])
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
export default useAdvancedPatterns
|
|
@@ -0,0 +1,279 @@
|
|
|
1
|
+
import { useState, useCallback, useRef, useEffect, ReactNode, ComponentType } from 'react'
|
|
2
|
+
|
|
3
|
+
export interface AdvancedPatternsConfig {
|
|
4
|
+
enableCompoundComponents?}
|
|
5
|
+
|
|
6
|
+
export interface CompoundComponentContext {
|
|
7
|
+
registerComponent, component) => void
|
|
8
|
+
unregisterComponent) => void
|
|
9
|
+
getComponent) => ReactNode | undefined
|
|
10
|
+
getAllComponents) => ReactNode[]
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export interface RenderPropsConfig<T = any> {
|
|
14
|
+
data) => ReactNode
|
|
15
|
+
fallback?}
|
|
16
|
+
|
|
17
|
+
export interface HigherOrderComponentConfig {
|
|
18
|
+
component, any>
|
|
19
|
+
enhancers) => ComponentType<any>>
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export interface AdvancedPatternsCallbacks {
|
|
23
|
+
onPatternApplied?, component) => void
|
|
24
|
+
onPerformanceOptimized?) => void
|
|
25
|
+
onAccessibilityEnhanced?) => void
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export const useAdvancedPatterns = (
|
|
29
|
+
config= {},
|
|
30
|
+
callbacks= {}
|
|
31
|
+
) => {
|
|
32
|
+
const {
|
|
33
|
+
enableCompoundComponents = true,
|
|
34
|
+
enableRenderProps = true,
|
|
35
|
+
enableHigherOrderComponents = true,
|
|
36
|
+
enableCustomHooks = true,
|
|
37
|
+
enablePerformanceOptimization = true,
|
|
38
|
+
enableAccessibilitySupport = true
|
|
39
|
+
} = config
|
|
40
|
+
|
|
41
|
+
const [patterns, setPatterns] = useState<string[]>([])
|
|
42
|
+
const [isOptimizing, setIsOptimizing] = useState(false)
|
|
43
|
+
const componentsRef = useRef<Map<string, ReactNode>>(new Map())
|
|
44
|
+
const performanceMetricsRef = useRef<Map<string, number>>(new Map())
|
|
45
|
+
|
|
46
|
+
// Compound Components Pattern
|
|
47
|
+
const createCompoundComponent = useCallback((
|
|
48
|
+
baseComponent,
|
|
49
|
+
subComponents, ComponentType<any>>
|
|
50
|
+
) => {
|
|
51
|
+
if (!enableCompoundComponents) return baseComponent
|
|
52
|
+
|
|
53
|
+
const compoundComponent = Object.assign(baseComponent, subComponents)
|
|
54
|
+
|
|
55
|
+
setPatterns(prev => [...prev, 'Compound Components'])
|
|
56
|
+
callbacks.onPatternApplied?.('Compound Components', baseComponent.displayName || 'Unknown')
|
|
57
|
+
|
|
58
|
+
return compoundComponent
|
|
59
|
+
}, [enableCompoundComponents, callbacks])
|
|
60
|
+
|
|
61
|
+
// Render Props Pattern
|
|
62
|
+
const createRenderPropsComponent = useCallback(<T,>(
|
|
63
|
+
config) => {
|
|
64
|
+
if (!enableRenderProps) return null
|
|
65
|
+
|
|
66
|
+
const { data, loading, error, render, fallback } = config
|
|
67
|
+
|
|
68
|
+
if (loading) {
|
|
69
|
+
return { type, fallback }
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
if (error) {
|
|
73
|
+
return { type, message}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
setPatterns(prev => [...prev, 'Render Props'])
|
|
77
|
+
callbacks.onPatternApplied?.('Render Props', 'RenderPropsComponent')
|
|
78
|
+
|
|
79
|
+
return { type, data, render }
|
|
80
|
+
}, [enableRenderProps, callbacks])
|
|
81
|
+
|
|
82
|
+
// Higher-Order Component Pattern
|
|
83
|
+
const createHigherOrderComponent = useCallback((
|
|
84
|
+
config) => {
|
|
85
|
+
if (!enableHigherOrderComponents) return config.component
|
|
86
|
+
|
|
87
|
+
const { component, props, enhancers } = config
|
|
88
|
+
|
|
89
|
+
let EnhancedComponent = Component
|
|
90
|
+
|
|
91
|
+
enhancers.forEach(enhancer => {
|
|
92
|
+
EnhancedComponent = enhancer(EnhancedComponent)
|
|
93
|
+
})
|
|
94
|
+
|
|
95
|
+
setPatterns(prev => [...prev, 'Higher-Order Components'])
|
|
96
|
+
callbacks.onPatternApplied?.('Higher-Order Components', Component.displayName || 'Unknown')
|
|
97
|
+
|
|
98
|
+
return { component, props, enhanced}
|
|
99
|
+
}, [enableHigherOrderComponents, callbacks])
|
|
100
|
+
|
|
101
|
+
// Custom Hooks Pattern
|
|
102
|
+
const createCustomHook = useCallback(<T>(
|
|
103
|
+
hookName,
|
|
104
|
+
hookLogic) => T
|
|
105
|
+
) => {
|
|
106
|
+
if (!enableCustomHooks) return hookLogic()
|
|
107
|
+
|
|
108
|
+
setPatterns(prev => [...prev, 'Custom Hooks'])
|
|
109
|
+
callbacks.onPatternApplied?.('Custom Hooks', hookName)
|
|
110
|
+
|
|
111
|
+
return hookLogic()
|
|
112
|
+
}, [enableCustomHooks, callbacks])
|
|
113
|
+
|
|
114
|
+
// Performance Optimization
|
|
115
|
+
const optimizeComponent = useCallback((
|
|
116
|
+
componentId,
|
|
117
|
+
optimizationType) => {
|
|
118
|
+
if (!enablePerformanceOptimization) return
|
|
119
|
+
|
|
120
|
+
setIsOptimizing(true)
|
|
121
|
+
|
|
122
|
+
setTimeout(() => {
|
|
123
|
+
const optimization = `${optimizationType} applied to ${componentId}`
|
|
124
|
+
setPatterns(prev => [...prev, optimization])
|
|
125
|
+
callbacks.onPerformanceOptimized?.(optimization)
|
|
126
|
+
setIsOptimizing(false)
|
|
127
|
+
}, 200)
|
|
128
|
+
}, [enablePerformanceOptimization, callbacks])
|
|
129
|
+
|
|
130
|
+
// Accessibility Enhancement
|
|
131
|
+
const enhanceAccessibility = useCallback((
|
|
132
|
+
componentId,
|
|
133
|
+
feature) => {
|
|
134
|
+
if (!enableAccessibilitySupport) return
|
|
135
|
+
|
|
136
|
+
const enhancement = `${feature} accessibility enhanced for ${componentId}`
|
|
137
|
+
setPatterns(prev => [...prev, enhancement])
|
|
138
|
+
callbacks.onAccessibilityEnhanced?.(enhancement)
|
|
139
|
+
}, [enableAccessibilitySupport, callbacks])
|
|
140
|
+
|
|
141
|
+
// Component Registry
|
|
142
|
+
const registerComponent = useCallback((id, component) => {
|
|
143
|
+
componentsRef.current.set(id, component)
|
|
144
|
+
}, [])
|
|
145
|
+
|
|
146
|
+
const unregisterComponent = useCallback((id) => {
|
|
147
|
+
componentsRef.current.delete(id)
|
|
148
|
+
}, [])
|
|
149
|
+
|
|
150
|
+
const getComponent = useCallback((id) => {
|
|
151
|
+
return componentsRef.current.get(id)
|
|
152
|
+
}, [])
|
|
153
|
+
|
|
154
|
+
const getAllComponents = useCallback(() => {
|
|
155
|
+
return Array.from(componentsRef.current.values())
|
|
156
|
+
}, [])
|
|
157
|
+
|
|
158
|
+
// Performance Monitoring
|
|
159
|
+
const measurePerformance = useCallback((componentId, operation) => {
|
|
160
|
+
const startTime = performance.now()
|
|
161
|
+
|
|
162
|
+
return () => {
|
|
163
|
+
const endTime = performance.now()
|
|
164
|
+
const duration = endTime - startTime
|
|
165
|
+
performanceMetricsRef.current.set(`${componentId}-${operation}`, duration)
|
|
166
|
+
}
|
|
167
|
+
}, [])
|
|
168
|
+
|
|
169
|
+
// Pattern Analysis
|
|
170
|
+
const analyzePatterns = useCallback(() => {
|
|
171
|
+
const patternCounts = patterns.reduce((acc, pattern) => {
|
|
172
|
+
acc[pattern] = (acc[pattern] || 0) + 1
|
|
173
|
+
return acc
|
|
174
|
+
}, {} as Record<string, number>)
|
|
175
|
+
|
|
176
|
+
return {
|
|
177
|
+
totalPatterns,
|
|
178
|
+
patternCounts,
|
|
179
|
+
uniquePatterns).length,
|
|
180
|
+
performanceMetrics)
|
|
181
|
+
}
|
|
182
|
+
}, [patterns])
|
|
183
|
+
|
|
184
|
+
// Pattern Recommendations
|
|
185
|
+
const getPatternRecommendations = useCallback(() => {
|
|
186
|
+
const recommendations = []
|
|
187
|
+
|
|
188
|
+
if (patterns.length === 0) {
|
|
189
|
+
recommendations.push('Consider implementing compound components for complex UI structures')
|
|
190
|
+
recommendations.push('Use render props for flexible component composition')
|
|
191
|
+
recommendations.push('Apply higher-order components for cross-cutting concerns')
|
|
192
|
+
recommendations.push('Create custom hooks for reusable logic')
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
if (!patterns.includes('Performance Optimization')) {
|
|
196
|
+
recommendations.push('Implement memoization for expensive computations')
|
|
197
|
+
recommendations.push('Use lazy loading for large component trees')
|
|
198
|
+
recommendations.push('Consider virtualization for long lists')
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
if (!patterns.includes('Accessibility Support')) {
|
|
202
|
+
recommendations.push('Add ARIA labels and roles to components')
|
|
203
|
+
recommendations.push('Implement keyboard navigation support')
|
|
204
|
+
recommendations.push('Ensure screen reader compatibility')
|
|
205
|
+
recommendations.push('Add focus management features')
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
return recommendations
|
|
209
|
+
}, [patterns])
|
|
210
|
+
|
|
211
|
+
// Pattern Validation
|
|
212
|
+
const validatePatterns = useCallback(() => {
|
|
213
|
+
const validation = {
|
|
214
|
+
isValid,
|
|
215
|
+
errors] as string[],
|
|
216
|
+
warnings] as string[]
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
// Check for pattern conflicts
|
|
220
|
+
if (patterns.includes('Compound Components') && patterns.includes('Higher-Order Components')) {
|
|
221
|
+
validation.warnings.push('Compound Components and Higher-Order Components can be used together but may increase complexity')
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
// Check for missing optimizations
|
|
225
|
+
if (patterns.length > 3 && !patterns.includes('Performance Optimization')) {
|
|
226
|
+
validation.warnings.push('Multiple patterns detected without performance optimization')
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
// Check for accessibility compliance
|
|
230
|
+
if (patterns.length > 2 && !patterns.includes('Accessibility Support')) {
|
|
231
|
+
validation.warnings.push('Multiple patterns detected without accessibility support')
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
return validation
|
|
235
|
+
}, [patterns])
|
|
236
|
+
|
|
237
|
+
// Cleanup on unmount
|
|
238
|
+
useEffect(() => {
|
|
239
|
+
return () => {
|
|
240
|
+
componentsRef.current.clear()
|
|
241
|
+
performanceMetricsRef.current.clear()
|
|
242
|
+
}
|
|
243
|
+
}, [])
|
|
244
|
+
|
|
245
|
+
return {
|
|
246
|
+
// State
|
|
247
|
+
patterns,
|
|
248
|
+
isOptimizing,
|
|
249
|
+
|
|
250
|
+
// Pattern Creators
|
|
251
|
+
createCompoundComponent,
|
|
252
|
+
createRenderPropsComponent,
|
|
253
|
+
createHigherOrderComponent,
|
|
254
|
+
createCustomHook,
|
|
255
|
+
|
|
256
|
+
// Optimization
|
|
257
|
+
optimizeComponent,
|
|
258
|
+
enhanceAccessibility,
|
|
259
|
+
measurePerformance,
|
|
260
|
+
|
|
261
|
+
// Component Registry
|
|
262
|
+
registerComponent,
|
|
263
|
+
unregisterComponent,
|
|
264
|
+
getComponent,
|
|
265
|
+
getAllComponents,
|
|
266
|
+
|
|
267
|
+
// Analysis
|
|
268
|
+
analyzePatterns,
|
|
269
|
+
getPatternRecommendations,
|
|
270
|
+
validatePatterns,
|
|
271
|
+
|
|
272
|
+
// Utility functions
|
|
273
|
+
hasPattern) => patterns.includes(pattern),
|
|
274
|
+
getPatternCount) => patterns.filter(p => p === pattern).length,
|
|
275
|
+
clearPatterns) => setPatterns([])
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
export default useAdvancedPatterns
|