UNPKG

aura-glass

Version:

A comprehensive glassmorphism design system for React applications with 142+ production-ready components

59 lines (56 loc) 1.71 kB
import { jsx } from 'react/jsx-runtime'; import { useState, useEffect, useContext, createContext } from 'react'; const defaultContextValue = { reducedMotion: false, setReducedMotion: () => {}, defaultSpring: { stiffness: 100, damping: 10, mass: 1 } }; const AnimationContext = /*#__PURE__*/createContext(defaultContextValue); const AnimationProvider = ({ children, defaultReducedMotion = false, defaultSpring = { stiffness: 100, damping: 10, mass: 1 } }) => { const [reducedMotion, setReducedMotion] = useState(defaultReducedMotion); // Check for prefers-reduced-motion useEffect(() => { if (typeof window !== 'undefined') { const mediaQuery = window.matchMedia('(prefers-reduced-motion: reduce)'); setReducedMotion(mediaQuery.matches); const handleChange = e => { setReducedMotion(e.matches); }; mediaQuery.addEventListener('change', handleChange); return () => mediaQuery.removeEventListener('change', handleChange); } }, []); const contextValue = { reducedMotion, setReducedMotion, defaultSpring }; return jsx(AnimationContext.Provider, { value: contextValue, children: children }); }; const useAnimation = () => { const context = useContext(AnimationContext); if (!context) { // Instead of throwing, return default values to prevent crashes console.warn('useAnimation must be used within an AnimationProvider. Using default values.'); return defaultContextValue; } return context; }; const useAnimationContext = useAnimation; export { AnimationContext, AnimationProvider, useAnimation, useAnimationContext }; //# sourceMappingURL=AnimationContext.js.map