{"version":3,"file":"FloatingParticles.CRF5EhQU.mjs","names":["React.forwardRef","useRef","useState"],"sources":["https:/framerusercontent.com/modules/NibHVeXBbpPxkEG35lyx/AERruVtjQQdViNJQvcRM/NEnHnKBNF.js","https:/framerusercontent.com/modules/Br85so422b70VYepB3Fa/u8FCdChKacEQQiUAfva6/FloatingParticles.js"],"sourcesContent":["// Generated by Framer (ceb690b)\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,cx,motion,useSVGTemplate,withCSS}from\"framer\";import*as React from\"react\";import{forwardRef}from\"react\";const mask=\"var(--framer-icon-mask)\";const Base=/*#__PURE__*/forwardRef(function(props,ref){return /*#__PURE__*/_jsx(\"svg\",{...props,ref:ref,children:props.children});});const MotionSVG=motion.create(Base);const SVG=/*#__PURE__*/forwardRef((props,ref)=>{const{animated,layoutId,children,...rest}=props;return animated?/*#__PURE__*/_jsx(MotionSVG,{...rest,layoutId:layoutId,ref:ref,children:children}):/*#__PURE__*/_jsx(\"svg\",{...rest,ref:ref,children:children});});const svg='<svg display=\"block\" role=\"presentation\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M 10 20 C 15.523 20 20 15.523 20 10 C 20 4.477 15.523 0 10 0 C 4.477 0 0 4.477 0 10 C 0 15.523 4.477 20 10 20\" fill-opacity=\"var(--42b6oa, 0.16)\" fill=\"var(--4i27ky, rgb(0, 0, 0))\" height=\"20px\" id=\"xntVpJzrC\" transform=\"translate(2 2)\" width=\"20px\"/><path d=\"M 10 14 L 14 10 M 14 10 L 10 6 M 14 10 L 6 10 M 20 10 C 20 15.523 15.523 20 10 20 C 4.477 20 0 15.523 0 10 C 0 4.477 4.477 0 10 0 C 15.523 0 20 4.477 20 10\" fill=\"transparent\" height=\"20px\" id=\"wr6q4R2sS\" stroke-dasharray=\"\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"var(--b8xnka, 2)\" stroke=\"var(--4i27ky, rgb(0, 0, 0))\" transform=\"translate(2 2)\" width=\"20px\"/></svg>';const getProps=({alpha,color,height,id,width,width1,...props})=>{return{...props,akr7Ge2dd:width1??props.akr7Ge2dd??2,PF8qIBMI7:alpha??props.PF8qIBMI7??.16,rm13cFo5g:color??props.rm13cFo5g??\"rgb(0, 0, 0)\"};};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const{style,className,layoutId,variant,rm13cFo5g,akr7Ge2dd,PF8qIBMI7,...restProps}=getProps(props);const href=useSVGTemplate(\"2085602926\",svg);return /*#__PURE__*/_jsx(SVG,{...restProps,className:cx(\"framer-fDGSB\",className),layoutId:layoutId,ref:ref,role:\"presentation\",style:{\"--42b6oa\":PF8qIBMI7,\"--4i27ky\":rm13cFo5g,\"--b8xnka\":akr7Ge2dd,...style},viewBox:\"0 0 24 24\",children:/*#__PURE__*/_jsx(\"use\",{href:href})});});const css=[`.framer-fDGSB { -webkit-mask: ${mask}; aspect-ratio: 1; display: block; mask: ${mask}; width: 24px; }`];/**\n * This is a generated Framer component.\n * @framerIntrinsicWidth 24\n * @framerIntrinsicHeight 24\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n * @framerVariables {\"rm13cFo5g\":\"color\",\"akr7Ge2dd\":\"width1\",\"PF8qIBMI7\":\"alpha\"}\n * @framerImmutableVariables true\n * @framerVector {\"name\":\"Arrow Right Circle\",\"color\":{\"type\":\"variable\",\"value\":\"4i27ky\"},\"set\":{\"localId\":\"vectorSet/jIUXDd189\",\"id\":\"jIUXDd189\",\"moduleId\":\"mbMVkRB5lkkRzWT95l5L\"}}\n */const Icon=withCSS(Component,css,\"framer-fDGSB\");Icon.displayName=\"Arrow Right Circle\";export default Icon;addPropertyControls(Icon,{rm13cFo5g:{defaultValue:\"rgb(0, 0, 0)\",hidden:false,title:\"Color\",type:ControlType.Color},akr7Ge2dd:{defaultValue:2,displayStepper:true,hidden:false,max:4,min:1,title:\"Width\",type:ControlType.Number},PF8qIBMI7:{defaultValue:.16,displayStepper:true,hidden:false,max:1,min:0,step:.01,title:\"Alpha\",type:ControlType.Number}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Icon\",\"slots\":[],\"annotations\":{\"framerVariables\":\"{\\\"rm13cFo5g\\\":\\\"color\\\",\\\"akr7Ge2dd\\\":\\\"width1\\\",\\\"PF8qIBMI7\\\":\\\"alpha\\\"}\",\"framerIntrinsicWidth\":\"24\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerIntrinsicHeight\":\"24\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerImmutableVariables\":\"true\",\"framerVector\":\"{\\\"name\\\":\\\"Arrow Right Circle\\\",\\\"color\\\":{\\\"type\\\":\\\"variable\\\",\\\"value\\\":\\\"4i27ky\\\"},\\\"set\\\":{\\\"localId\\\":\\\"vectorSet/jIUXDd189\\\",\\\"id\\\":\\\"jIUXDd189\\\",\\\"moduleId\\\":\\\"mbMVkRB5lkkRzWT95l5L\\\"}}\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Floating particles that smoothly hover and move around\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{useEffect,useRef,useState,startTransition}from\"react\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";import{motion,useInView}from\"framer-motion\";/**\n * @framerSupportedLayoutWidth fixed\n * @framerSupportedLayoutHeight fixed\n */export default function FloatingParticles(props){const{particleCount=20,particleSize=4,particleColor1=\"#FFFFFF\",particleColor2=\"#CCCCCC\",particleColor3=\"#999999\",speed=1,opacity=.8,blur=false}=props;const containerRef=useRef(null);const animationRef=useRef();const[particles,setParticles]=useState([]);const[dimensions,setDimensions]=useState({width:400,height:300});const isStatic=useIsStaticRenderer();const isInView=useInView(containerRef,{once:false});// Initialize particles\nuseEffect(()=>{if(isStatic)return;const colors=[particleColor1,particleColor2,particleColor3];const newParticles=[];for(let i=0;i<particleCount;i++){newParticles.push({id:i,x:Math.random()*dimensions.width,y:Math.random()*dimensions.height,vx:(Math.random()-.5)*speed*.5,vy:(Math.random()-.5)*speed*.5,size:particleSize+Math.random()*particleSize*.5,opacity:opacity*(.5+Math.random()*.5),color:colors[Math.floor(Math.random()*colors.length)]});}startTransition(()=>setParticles(newParticles));},[particleCount,particleSize,particleColor1,particleColor2,particleColor3,speed,opacity,dimensions,isStatic]);// Update dimensions when container size changes\nuseEffect(()=>{if(!containerRef.current||isStatic)return;const updateDimensions=()=>{const rect=containerRef.current?.getBoundingClientRect();if(rect){startTransition(()=>setDimensions({width:rect.width,height:rect.height}));}};updateDimensions();if(typeof window!==\"undefined\"){window.addEventListener(\"resize\",updateDimensions);return()=>window.removeEventListener(\"resize\",updateDimensions);}},[isStatic]);// Animation loop\nuseEffect(()=>{if(isStatic||!isInView||particles.length===0)return;const animate=()=>{startTransition(()=>{setParticles(prevParticles=>prevParticles.map(particle=>{let newX=particle.x+particle.vx*speed;let newY=particle.y+particle.vy*speed;let newVx=particle.vx;let newVy=particle.vy;// Bounce off edges with some randomness\n    if(newX<=0||newX>=dimensions.width){newVx=-newVx+(Math.random()-.5)*.1;newX=Math.max(0,Math.min(dimensions.width,newX));}if(newY<=0||newY>=dimensions.height){newVy=-newVy+(Math.random()-.5)*.1;newY=Math.max(0,Math.min(dimensions.height,newY));}// Add slight random movement for floating effect\n    newVx+=(Math.random()-.5)*.02;newVy+=(Math.random()-.5)*.02;// Limit velocity\n    const maxVel=speed*.8;newVx=Math.max(-maxVel,Math.min(maxVel,newVx));newVy=Math.max(-maxVel,Math.min(maxVel,newVy));return{...particle,x:newX,y:newY,vx:newVx,vy:newVy};}));});if(isInView){animationRef.current=requestAnimationFrame(animate);}};animationRef.current=requestAnimationFrame(animate);return()=>{if(animationRef.current){cancelAnimationFrame(animationRef.current);}};},[isStatic,isInView,particles.length,speed,dimensions]);if(isStatic){// Static preview with some particles\nconst colors=[particleColor1,particleColor2,particleColor3];const staticParticles=Array.from({length:Math.min(particleCount,10)},(_,i)=>({id:i,x:(i*50+30)%300,y:(i*30+40)%200,size:particleSize,opacity:opacity,color:colors[i%colors.length]}));return /*#__PURE__*/_jsx(\"div\",{ref:containerRef,style:{width:\"100%\",height:\"100%\",position:\"relative\",overflow:\"hidden\",backgroundColor:\"transparent\"},children:staticParticles.map(particle=>/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",left:particle.x,top:particle.y,width:particle.size,height:particle.size,backgroundColor:particle.color,borderRadius:\"50%\",opacity:particle.opacity,filter:blur?\"blur(1px)\":\"none\"}},particle.id))});}return /*#__PURE__*/_jsx(\"div\",{ref:containerRef,style:{width:\"100%\",height:\"100%\",position:\"relative\",overflow:\"hidden\",backgroundColor:\"transparent\"},children:particles.map(particle=>/*#__PURE__*/_jsx(motion.div,{style:{position:\"absolute\",left:particle.x,top:particle.y,width:particle.size,height:particle.size,backgroundColor:particle.color,borderRadius:\"50%\",opacity:particle.opacity,filter:blur?\"blur(1px)\":\"none\"},animate:{scale:[1,1.2,1],opacity:[particle.opacity,particle.opacity*.7,particle.opacity]},transition:{duration:3+Math.random()*2,repeat:Infinity,ease:\"easeInOut\"}},particle.id))});}addPropertyControls(FloatingParticles,{particleCount:{type:ControlType.Number,title:\"Particle Count\",defaultValue:20,min:5,max:300,step:1},particleSize:{type:ControlType.Number,title:\"Particle Size\",defaultValue:4,min:1,max:20,step:1,unit:\"px\"},particleColor1:{type:ControlType.Color,title:\"Particle Color 1\",defaultValue:\"#FFFFFF\"},particleColor2:{type:ControlType.Color,title:\"Particle Color 2\",defaultValue:\"#CCCCCC\"},particleColor3:{type:ControlType.Color,title:\"Particle Color 3\",defaultValue:\"#999999\"},speed:{type:ControlType.Number,title:\"Speed\",defaultValue:1,min:.1,max:5,step:.1},opacity:{type:ControlType.Number,title:\"Opacity\",defaultValue:.8,min:.1,max:1,step:.1},blur:{type:ControlType.Boolean,title:\"Blur Effect\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FloatingParticles\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"fixed\",\"framerSupportedLayoutHeight\":\"fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./FloatingParticles.map"],"mappings":"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"}