{"version":3,"file":"Particles.DNLS2UEC.mjs","names":["useState","useMemo"],"sources":["https:/framerusercontent.com/modules/AtlA8K6ZchzPQmwGoodz/wEbZqqxpc7cjwmfvSv7y/Particles.js"],"sourcesContent":["// FloatingParticles effect component with small dots floating in zero gravity\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{useEffect,useState,useMemo,startTransition}from\"react\";import{motion}from\"framer-motion\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";/**\n * @framerSupportedLayoutWidth fixed\n * @framerSupportedLayoutHeight fixed\n */export default function Particles(props){const{particleCount=12,minSize=1,maxSize=2,speed=.03,color=\"#FFFFFF\",opacity=.8}=props;const isStatic=useIsStaticRenderer();const[particles,setFloatingParticles]=useState([]);// Initialize particles\nconst initialFloatingParticles=useMemo(()=>{return Array.from({length:particleCount},(_,i)=>{const spawnX=Math.random()*100;const spawnY=Math.random()*100;return{id:i,x:spawnX,y:spawnY,size:minSize+Math.random()*(maxSize-minSize),vx:(Math.random()-.5)*speed*.5,vy:(Math.random()-.5)*speed*.5,spawnX:spawnX,spawnY:spawnY};});},[particleCount,minSize,maxSize,speed]);useEffect(()=>{startTransition(()=>setFloatingParticles(initialFloatingParticles));},[initialFloatingParticles]);// Animation loop\nuseEffect(()=>{if(isStatic||particles.length===0)return;let animationFrame;const animate=()=>{startTransition(()=>{setFloatingParticles(prevFloatingParticles=>prevFloatingParticles.map(particle=>{let newX=particle.x+particle.vx;let newY=particle.y+particle.vy;let newVx=particle.vx;let newVy=particle.vy;// Calculate distance from spawn point\n    const distanceFromSpawn=Math.sqrt(Math.pow(newX-particle.spawnX,2)+Math.pow(newY-particle.spawnY,2));// Maximum roaming radius (in percentage)\n    const maxRadius=15;// If particle is too far from spawn, pull it back\n    if(distanceFromSpawn>maxRadius){const angle=Math.atan2(particle.spawnY-newY,particle.spawnX-newX);newVx+=Math.cos(angle)*.01;newVy+=Math.sin(angle)*.01;}// Add slight random drift for zero gravity effect\n    newVx+=(Math.random()-.5)*.002;newVy+=(Math.random()-.5)*.002;// Limit velocity\n    const maxVel=speed*.3;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};}));});animationFrame=requestAnimationFrame(animate);};animationFrame=requestAnimationFrame(animate);return()=>cancelAnimationFrame(animationFrame);},[isStatic,particles.length,speed]);if(isStatic){// Static preview with particles in fixed positions\nreturn /*#__PURE__*/_jsx(\"div\",{style:{position:\"relative\",width:\"100%\",height:\"100%\",overflow:\"hidden\",...props.style},children:initialFloatingParticles.map(particle=>/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",left:`${particle.x}%`,top:`${particle.y}%`,width:`${particle.size}px`,height:`${particle.size}px`,backgroundColor:color,borderRadius:\"50%\",opacity:opacity,transform:\"translate(-50%, -50%)\"}},particle.id))});}return /*#__PURE__*/_jsx(\"div\",{style:{position:\"relative\",width:\"100%\",height:\"100%\",overflow:\"hidden\",...props.style},children:particles.map(particle=>/*#__PURE__*/_jsx(motion.div,{animate:{left:`${particle.x}%`,top:`${particle.y}%`},style:{position:\"absolute\",left:`${particle.x}%`,top:`${particle.y}%`,width:`${particle.size}px`,height:`${particle.size}px`,backgroundColor:color,borderRadius:\"50%\",opacity:opacity,transform:\"translate(-50%, -50%)\"},transition:{type:\"tween\",ease:\"linear\",duration:.1}},particle.id))});}addPropertyControls(Particles,{particleCount:{type:ControlType.Number,title:\"Particle Count\",defaultValue:12,min:3,max:500,step:1},minSize:{type:ControlType.Number,title:\"Min Size\",defaultValue:1,min:.5,max:5,step:.1,unit:\"px\"},maxSize:{type:ControlType.Number,title:\"Max Size\",defaultValue:2,min:.5,max:8,step:.1,unit:\"px\"},speed:{type:ControlType.Number,title:\"Speed\",defaultValue:.03,min:.01,max:.5,step:.01},color:{type:ControlType.Color,title:\"Color\",defaultValue:\"#FFFFFF\"},opacity:{type:ControlType.Number,title:\"Opacity\",defaultValue:.8,min:0,max:1,step:.1}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Particles\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"fixed\",\"framerSupportedLayoutWidth\":\"fixed\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Particles.map"],"mappings":"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"}