{"version":3,"file":"CursorGradient.DGV3NHR5.mjs","names":["useRef"],"sources":["https:/framerusercontent.com/modules/XZxi4RJJT2aWIe99ldwo/FT9lMJFtCFRkjTCEVwNP/CursorGradient.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import{useEffect,useRef}from\"react\";import{useMotionValue,useMotionTemplate,useSpring,useTransform}from\"framer-motion\";export function withCursorGradient(Component){return props=>{const ref=useRef(null);const mouseX=useMotionValue(-1e3);const mouseY=useMotionValue(-1e3);// --- Configuration ---\nconst purple=\"116, 102, 255\";const cardBg=\"#1F1F1F\";const borderWidth=2;const innerGlowSize=300;const borderGlowSize=400;// Distance autour de la carte pour déclencher l'effet\nconst proximityBuffer=100;// --- Gestion de l'Opacité (Plus rapide) ---\nconst opacityTarget=useMotionValue(0);// J'ai augmenté stiffness à 200 (au lieu de 50) pour une réaction quasi immédiate\n// J'ai ajusté damping à 25 pour éviter que l'effet ne \"rebondisse\" à la fin\nconst smoothOpacity=useSpring(opacityTarget,{stiffness:200,damping:25});const innerAlpha=useTransform(smoothOpacity,[0,1],[0,.4]);const borderAlpha=useTransform(smoothOpacity,[0,1],[0,1]);// --- Les Layers ---\nconst innerGlow=useMotionTemplate`radial-gradient(${innerGlowSize}px circle at ${mouseX}px ${mouseY}px, rgba(${purple}, ${innerAlpha}), rgba(${purple}, 0))`;const solidBase=`linear-gradient(${cardBg}, ${cardBg})`;const borderGlow=useMotionTemplate`radial-gradient(${borderGlowSize}px circle at ${mouseX}px ${mouseY}px, rgba(${purple}, ${borderAlpha}), rgba(${purple}, 0))`;// --- Logique de détection ---\nuseEffect(()=>{const handleMouseMove=e=>{if(!ref.current)return;const rect=ref.current.getBoundingClientRect();const isNear=e.clientX>=rect.left-proximityBuffer&&e.clientX<=rect.right+proximityBuffer&&e.clientY>=rect.top-proximityBuffer&&e.clientY<=rect.bottom+proximityBuffer;if(isNear){opacityTarget.set(1);mouseX.set(e.clientX-rect.left);mouseY.set(e.clientY-rect.top);}else{opacityTarget.set(0);}};window.addEventListener(\"mousemove\",handleMouseMove);return()=>window.removeEventListener(\"mousemove\",handleMouseMove);},[]);return /*#__PURE__*/_jsx(Component,{...props,ref:ref,style:{...props.style,border:`${borderWidth}px solid transparent`,backgroundImage:useMotionTemplate`${innerGlow}, ${solidBase}, ${borderGlow}`,backgroundClip:\"padding-box, padding-box, border-box\",backgroundOrigin:\"border-box\"}});};}\nexport const __FramerMetadata__ = {\"exports\":{\"withCursorGradient\":{\"type\":\"reactHoc\",\"name\":\"withCursorGradient\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./CursorGradient.map"],"mappings":"6MAAkK,SAAgB,EAAmB,EAAU,CAAC,MAAO,IAAO,CAAC,IAAM,EAAIA,EAAO,KAAK,CAAO,EAAO,EAAe,KAAK,CAAO,EAAO,EAAe,KAAK,CACnT,EAAO,gBAAsB,EAAO,UAEpC,EAAc,EAAe,EAAE,CAE/B,EAAc,EAAU,EAAc,CAAC,UAAU,IAAI,QAAQ,GAAG,CAAC,CAAO,EAAW,EAAa,EAAc,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAO,EAAY,EAAa,EAAc,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CACrL,EAAU,CAAiB,mBAAmB,IAAc,eAAe,EAAO,KAAK,EAAO,WAAW,EAAO,IAAI,EAAW,UAAU,EAAO,OAAa,EAAU,mBAAmB,EAAO,IAAI,EAAO,GAAS,EAAW,CAAiB,mBAAmB,IAAe,eAAe,EAAO,KAAK,EAAO,WAAW,EAAO,IAAI,EAAY,UAAU,EAAO,OACiK,OAA/gB,MAAc,CAAC,IAAM,EAAgB,GAAG,CAAC,GAAG,CAAC,EAAI,QAAQ,OAAO,IAAM,EAAK,EAAI,QAAQ,uBAAuB,CAAc,EAAE,SAAS,EAAK,KAAK,KAAiB,EAAE,SAAS,EAAK,MAAM,KAAiB,EAAE,SAAS,EAAK,IAAI,KAAiB,EAAE,SAAS,EAAK,OAAO,KAA2B,EAAc,IAAI,EAAE,CAAC,EAAO,IAAI,EAAE,QAAQ,EAAK,KAAK,CAAC,EAAO,IAAI,EAAE,QAAQ,EAAK,IAAI,EAAO,EAAc,IAAI,EAAE,EAAyD,OAArD,EAAO,iBAAiB,YAAY,EAAgB,KAAW,EAAO,oBAAoB,YAAY,EAAgB,EAAG,EAAE,CAAC,CAAqB,EAAK,EAAU,CAAC,GAAG,EAAU,MAAI,MAAM,CAAC,GAAG,EAAM,MAAM,OAAO,wBAAqC,gBAAgB,CAAiB,GAAG,EAAU,IAAI,EAAU,IAAI,IAAa,eAAe,uCAAuC,iBAAiB,aAAa,CAAC,CAAC,uBAP9vB,IAAoC,IAAmF"}