{
  "version": 3,
  "sources": ["ssg:https://framerusercontent.com/modules/2HJZhCGleyEfB9XThNWp/mkvrAgcfcDvwdKTt3Uwy/Cursor.js"],
  "sourcesContent": ["import{jsx as _jsx}from\"react/jsx-runtime\";import{useEffect,useState}from\"react\";export default function Cursor(){const[position,setPosition]=useState({x:0,y:0});const[trailingPos,setTrailingPos]=useState({x:0,y:0});const[isHovering,setIsHovering]=useState(false);const[clicked,setClicked]=useState(false);// Track real mouse position\nuseEffect(()=>{const update=e=>setPosition({x:e.clientX,y:e.clientY});window.addEventListener(\"mousemove\",update);return()=>window.removeEventListener(\"mousemove\",update);},[]);// Animate trailing position\nuseEffect(()=>{let frame;const lerp=(a,b,n)=>(1-n)*a+n*b;const follow=()=>{setTrailingPos(prev=>({x:lerp(prev.x,position.x,.15),y:lerp(prev.y,position.y,.15)}));frame=requestAnimationFrame(follow);};follow();return()=>cancelAnimationFrame(frame);},[position]);// Handle hover state\nuseEffect(()=>{const handleHover=e=>{const target=e.target;const isInteractive=target.closest(\"button, a, [data-cursor='hover']\");setIsHovering(!!isInteractive);};window.addEventListener(\"mouseover\",handleHover);return()=>window.removeEventListener(\"mouseover\",handleHover);},[]);// Click pulse effect\nuseEffect(()=>{const handleClick=()=>{setClicked(true);setTimeout(()=>setClicked(false),150);};window.addEventListener(\"click\",handleClick);return()=>window.removeEventListener(\"click\",handleClick);},[]);// Final visual properties\nconst size=isHovering?20:16;const color=isHovering||clicked?\"#6954F0\":\"#fff\";return /*#__PURE__*/_jsx(\"div\",{style:{position:\"fixed\",top:trailingPos.y,left:trailingPos.x,width:size,height:size,backgroundColor:color,borderRadius:\"50%\",pointerEvents:\"none\",transform:\"translate(-50%, -50%)\",zIndex:9999,transition:\"width 0.2s ease, height 0.2s ease, background-color 0.15s ease\"}});}\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Cursor\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Cursor.map"],
  "mappings": "gGAAgG,SAARA,GAAyB,CAAC,GAAK,CAACC,EAASC,CAAW,EAAEC,EAAS,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAO,CAACC,EAAYC,CAAc,EAAEF,EAAS,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAO,CAACG,EAAWC,CAAa,EAAEJ,EAAS,EAAK,EAAO,CAACK,EAAQC,CAAU,EAAEN,EAAS,EAAK,EAChTO,EAAU,IAAI,CAAC,IAAMC,EAAOC,GAAGV,EAAY,CAAC,EAAEU,EAAE,QAAQ,EAAEA,EAAE,OAAO,CAAC,EAAE,OAAAC,EAAO,iBAAiB,YAAYF,CAAM,EAAQ,IAAIE,EAAO,oBAAoB,YAAYF,CAAM,CAAE,EAAE,CAAC,CAAC,EAC/KD,EAAU,IAAI,CAAC,IAAII,EAAYC,EAAK,CAACC,EAAEC,EAAEC,KAAK,EAAEA,GAAGF,EAAEE,EAAED,EAAQE,EAAO,IAAI,CAACd,EAAee,IAAO,CAAC,EAAEL,EAAKK,EAAK,EAAEnB,EAAS,EAAE,GAAG,EAAE,EAAEc,EAAKK,EAAK,EAAEnB,EAAS,EAAE,GAAG,CAAC,EAAE,EAAEa,EAAM,sBAAsBK,CAAM,CAAE,EAAE,OAAAA,EAAO,EAAQ,IAAI,qBAAqBL,CAAK,CAAE,EAAE,CAACb,CAAQ,CAAC,EAClQS,EAAU,IAAI,CAAC,IAAMW,EAAYT,GAAG,CAAuB,IAAMU,EAAfV,EAAE,OAAkC,QAAQ,kCAAkC,EAAEL,EAAc,CAAC,CAACe,CAAa,CAAE,EAAE,OAAAT,EAAO,iBAAiB,YAAYQ,CAAW,EAAQ,IAAIR,EAAO,oBAAoB,YAAYQ,CAAW,CAAE,EAAE,CAAC,CAAC,EACtRX,EAAU,IAAI,CAAC,IAAMa,EAAY,IAAI,CAACd,EAAW,EAAI,EAAE,WAAW,IAAIA,EAAW,EAAK,EAAE,GAAG,CAAE,EAAE,OAAAI,EAAO,iBAAiB,QAAQU,CAAW,EAAQ,IAAIV,EAAO,oBAAoB,QAAQU,CAAW,CAAE,EAAE,CAAC,CAAC,EAC1M,IAAMC,EAAKlB,EAAW,GAAG,GAASmB,EAAMnB,GAAYE,EAAQ,UAAU,OAAO,OAAoBkB,EAAK,MAAM,CAAC,MAAM,CAAC,SAAS,QAAQ,IAAItB,EAAY,EAAE,KAAKA,EAAY,EAAE,MAAMoB,EAAK,OAAOA,EAAK,gBAAgBC,EAAM,aAAa,MAAM,cAAc,OAAO,UAAU,wBAAwB,OAAO,KAAK,WAAW,gEAAgE,CAAC,CAAC,CAAE",
  "names": ["Cursor", "position", "setPosition", "ye", "trailingPos", "setTrailingPos", "isHovering", "setIsHovering", "clicked", "setClicked", "ue", "update", "e", "window", "frame", "lerp", "a", "b", "n", "follow", "prev", "handleHover", "isInteractive", "handleClick", "size", "color", "p"]
}
