{
  "version": 3,
  "sources": ["ssg:https://framerusercontent.com/modules/hUmRcxbCoq1ajfAxLtLr/mETEgQwkr0mC31Q10QYi/CustomCursor.js"],
  "sourcesContent": ["import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{useEffect,useState,useRef}from\"react\";import{motion}from\"framer-motion\";const globalStyles=`\n  * {\n    cursor: none !important;\n  }\n  @media (hover: none) and (pointer: coarse) {\n    * {\n      cursor: auto !important;\n    }\n  }\n`;export function CustomCursor(){const[mousePosition,setMousePosition]=useState({x:0,y:0});const[isHovered,setIsHovered]=useState(false);const[isPressed,setIsPressed]=useState(false);const[isTouchDevice,setIsTouchDevice]=useState(false);const outerCursorRef=useRef(null);useEffect(()=>{const checkTouchDevice=()=>{setIsTouchDevice(\"ontouchstart\"in window||navigator.maxTouchPoints>0);};checkTouchDevice();window.addEventListener(\"resize\",checkTouchDevice);const updateCursor=e=>{setMousePosition({x:e.clientX,y:e.clientY});const element=document.elementFromPoint(e.clientX,e.clientY);setIsHovered(!!(element===null||element===void 0?void 0:element.closest('a, button, [role=\"button\"], input, textarea, select')));};const handleMouseDown=()=>setIsPressed(true);const handleMouseUp=()=>setIsPressed(false);window.addEventListener(\"mousemove\",updateCursor);window.addEventListener(\"mousedown\",handleMouseDown);window.addEventListener(\"mouseup\",handleMouseUp);return()=>{window.removeEventListener(\"resize\",checkTouchDevice);window.removeEventListener(\"mousemove\",updateCursor);window.removeEventListener(\"mousedown\",handleMouseDown);window.removeEventListener(\"mouseup\",handleMouseUp);};},[]);useEffect(()=>{let animationFrameId;const animateOuterCursor=()=>{if(outerCursorRef.current){const rect=outerCursorRef.current.getBoundingClientRect();const targetX=mousePosition.x-rect.width/2;const targetY=mousePosition.y-rect.height/2;const currentX=parseFloat(outerCursorRef.current.style.left)||0;const currentY=parseFloat(outerCursorRef.current.style.top)||0;const smoothingFactor=.03// Slower trailing effect\n;const newX=currentX+(targetX-currentX)*smoothingFactor;const newY=currentY+(targetY-currentY)*smoothingFactor;outerCursorRef.current.style.left=`${newX}px`;outerCursorRef.current.style.top=`${newY}px`;}animationFrameId=requestAnimationFrame(animateOuterCursor);};animateOuterCursor();return()=>{if(animationFrameId){cancelAnimationFrame(animationFrameId);}};},[mousePosition]);const getCursorSize=()=>{if(isPressed)return 20;if(isHovered)return 40;return 25;};const satellites=[{color:\"#f6be00\",size:8,distance:25,orbitDuration:3,wobbleFactor:0,clockwise:true},{color:\"#8Ba6c1\",size:12,distance:30,orbitDuration:4,wobbleFactor:0,clockwise:false},{color:\"#046a38\",size:7,distance:35,orbitDuration:5,wobbleFactor:0,clockwise:true},{color:\"#ee5340\",size:10,distance:40,orbitDuration:6,wobbleFactor:1,clockwise:false}];return /*#__PURE__*/_jsx(_Fragment,{children:!isTouchDevice&&/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"style\",{children:globalStyles}),/*#__PURE__*/_jsx(motion.div,{style:{position:\"fixed\",left:mousePosition.x,top:mousePosition.y,pointerEvents:\"none\",zIndex:9999,mixBlendMode:\"difference\"},children:/*#__PURE__*/_jsx(motion.div,{className:\"cursor-dot\",style:{width:getCursorSize(),height:getCursorSize(),borderRadius:\"50%\",backgroundColor:\"#ffffff\",transform:\"translate(-50%, -50%)\"},animate:{width:getCursorSize(),height:getCursorSize()},transition:{type:\"spring\",stiffness:300,damping:30}})}),/*#__PURE__*/_jsx(motion.div,{ref:outerCursorRef,style:{position:\"fixed\",pointerEvents:\"none\",zIndex:9998,width:80,height:80},children:satellites.map((satellite,index)=>/*#__PURE__*/_jsx(motion.div,{style:{width:satellite.size,height:satellite.size,borderRadius:\"50%\",backgroundColor:satellite.color,position:\"absolute\",left:`calc(50% + ${satellite.distance}px)`,top:\"50%\",transformOrigin:`${-satellite.distance}px 50%`},animate:{rotate:satellite.clockwise?360:-360,x:[0,10*satellite.wobbleFactor,0,-10*satellite.wobbleFactor,0],y:[0,10*satellite.wobbleFactor,0,-10*satellite.wobbleFactor,0]},transition:{rotate:{repeat:Infinity,duration:satellite.orbitDuration,ease:\"linear\"},x:{repeat:Infinity,duration:satellite.orbitDuration*.5,ease:\"easeInOut\"},y:{repeat:Infinity,duration:satellite.orbitDuration*.7,ease:\"easeInOut\"}}},index))})]})});}\nexport const __FramerMetadata__ = {\"exports\":{\"CustomCursor\":{\"type\":\"reactComponent\",\"name\":\"CustomCursor\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./CustomCursor.map"],
  "mappings": "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",
  "names": ["globalStyles", "CustomCursor", "mousePosition", "setMousePosition", "ye", "isHovered", "setIsHovered", "isPressed", "setIsPressed", "isTouchDevice", "setIsTouchDevice", "outerCursorRef", "pe", "ue", "checkTouchDevice", "window", "navigator", "updateCursor", "e", "element", "handleMouseDown", "handleMouseUp", "animationFrameId", "animateOuterCursor", "rect", "targetX", "targetY", "currentX", "currentY", "smoothingFactor", "newX", "newY", "getCursorSize", "satellites", "p", "l", "u", "motion", "satellite", "index"]
}
