{"version":3,"file":"shared-lib.BbdVCvxv.mjs","names":["useRef","useState","useCallback","useRef","useState","_Fragment","metadata","metadata","siteMetadata","metadataVersion","__FramerMetadata__","siteMetadata"],"sources":["https:/framerusercontent.com/modules/FsukVhRzCWqc4SfmgmL9/NbxdDP6uG73LOOi54hYX/LiquidMetal.js","https:/framerusercontent.com/modules/LOqrd2o7TaRvoErLUQ1B/8TrJhgYmJ1iKDXKNbmRz/MagicBlendCursor.js","https:/framerusercontent.com/modules/hGWQ6DoocusTRlKjXbzF/itczqvbEqpED3jEVlLGI/siteMetadata.js","https:/framerusercontent.com/modules/zQcMdc25jmTX1HOVkSsM/1BTtB88DVsIHMqsqQBfG/augiA20Il.js","https:/framerusercontent.com/modules/jtHR8VD5JxAQq54PQfD8/IaJKLku3IQPLlAWXnmUC/TejLkVb7n.js"],"sourcesContent":["/*\n * Copyright (c) 2025 Fred Moon (x.com/fw3d). All rights reserved.\n *\n * This code is the exclusive property of Fred Moon. Any unauthorized use,\n * reproduction, modification, distribution, or incorporation into other\n * software, in whole or in part, is strictly prohibited without the express\n * written permission of the author.\n *\n * This code is provided \"AS IS\" without warranty of any kind, either\n * expressed or implied, including but not limited to the implied warranties\n * of merchantability and fitness for a particular purpose.\n *\n * For licensing inquiries, please contact Fred Moon at x.com/fw3d\n *\n * This copyright notice and permission notice shall be included in all\n * copies or substantial portions of this software.\n *\n * Note: This code uses @paper-design/shaders-react (MIT License)\n * which is subject to its own license and excluded from this copyright claim.\n */import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useEffect,useRef,useState,useCallback}from\"react\";import{addPropertyControls,ControlType}from\"framer\";// Fragment shader source with mobile precision fixes\nconst liquidFragSource=/* glsl */`#version 300 es\n#ifdef GL_ES\nprecision highp float;\n#else\nprecision mediump float;\n#endif\n\nin vec2 vUv;\nout vec4 fragColor;\n\nuniform sampler2D u_image_texture;\nuniform float u_time;\nuniform float u_ratio;\nuniform float u_img_ratio;\nuniform float u_patternScale;\nuniform float u_refraction;\nuniform float u_edge;\nuniform float u_patternBlur;\nuniform float u_liquid;\n\n#define TWO_PI 6.28318530718\n#define PI 3.14159265358979323846\n\nvec3 mod289(vec3 x) { return x - floor(x * (1. / 289.)) * 289.; }\nvec2 mod289(vec2 x) { return x - floor(x * (1. / 289.)) * 289.; }\nvec3 permute(vec3 x) { return mod289(((x*34.)+1.)*x); }\nfloat snoise(vec2 v) {\n    const vec4 C = vec4(0.211324865405187, 0.366025403784439, -0.577350269189626, 0.024390243902439);\n    vec2 i = floor(v + dot(v, C.yy));\n    vec2 x0 = v - i + dot(i, C.xx);\n    vec2 i1;\n    i1 = (x0.x > x0.y) ? vec2(1., 0.) : vec2(0., 1.);\n    vec4 x12 = x0.xyxy + C.xxzz;\n    x12.xy -= i1;\n    i = mod289(i);\n    vec3 p = permute(permute(i.y + vec3(0., i1.y, 1.)) + i.x + vec3(0., i1.x, 1.));\n    vec3 m = max(0.5 - vec3(dot(x0, x0), dot(x12.xy, x12.xy), dot(x12.zw, x12.zw)), 0.);\n    m = m*m;\n    m = m*m;\n    vec3 x = 2. * fract(p * C.www) - 1.;\n    vec3 h = abs(x) - 0.5;\n    vec3 ox = floor(x + 0.5);\n    vec3 a0 = x - ox;\n    m *= 1.79284291400159 - 0.85373472095314 * (a0*a0 + h*h);\n    vec3 g;\n    g.x = a0.x * x0.x + h.x * x0.y;\n    g.yz = a0.yz * x12.xz + h.yz * x12.yw;\n    return 130. * dot(m, g);\n}\n\nvec2 get_img_uv() {\n    vec2 img_uv = vUv;\n    img_uv -= .5;\n    if (u_ratio > u_img_ratio) {\n        img_uv.x = img_uv.x * u_ratio / u_img_ratio;\n    } else {\n        img_uv.y = img_uv.y * u_img_ratio / u_ratio;\n    }\n    float scale_factor = 1.;\n    img_uv *= scale_factor;\n    img_uv += .5;\n    img_uv.y = 1. - img_uv.y;\n    return img_uv;\n}\n\nvec2 rotate(vec2 uv, float th) {\n    return mat2(cos(th), sin(th), -sin(th), cos(th)) * uv;\n}\n\nfloat get_color_channel(float c1, float c2, float stripe_p, vec3 w, float extra_blur, float b) {\n    float ch = c2;\n    float border = 0.;\n    float blur = u_patternBlur + extra_blur;\n\n    ch = mix(ch, c1, smoothstep(.0, blur, stripe_p));\n\n    border = w[0];\n    ch = mix(ch, c2, smoothstep(border - blur, border + blur, stripe_p));\n\n    b = smoothstep(.2, .8, b);\n    border = w[0] + .4 * (1. - b) * w[1];\n    ch = mix(ch, c1, smoothstep(border - blur, border + blur, stripe_p));\n\n    border = w[0] + .5 * (1. - b) * w[1];\n    ch = mix(ch, c2, smoothstep(border - blur, border + blur, stripe_p));\n\n    border = w[0] + w[1];\n    ch = mix(ch, c1, smoothstep(border - blur, border + blur, stripe_p));\n\n    float gradient_t = (stripe_p - w[0] - w[1]) / w[2];\n    float gradient = mix(c1, c2, smoothstep(0., 1., gradient_t));\n    ch = mix(ch, gradient, smoothstep(border - blur, border + blur, stripe_p));\n\n    return ch;\n}\n\nfloat get_img_frame_alpha(vec2 uv, float img_frame_width) {\n    float img_frame_alpha = smoothstep(0., img_frame_width, uv.x) * smoothstep(1., 1. - img_frame_width, uv.x);\n    img_frame_alpha *= smoothstep(0., img_frame_width, uv.y) * smoothstep(1., 1. - img_frame_width, uv.y);\n    return img_frame_alpha;\n}\n\nvoid main() {\n    vec2 uv = vUv;\n    uv.y = 1. - uv.y;\n    uv.x *= u_ratio;\n\n    float diagonal = uv.x - uv.y;\n    \n    // Mobile fix: normalize time to prevent precision issues\n    float t = .001 * mod(u_time, 10000.0);\n    \n    vec2 img_uv = get_img_uv();\n    vec4 img = texture(u_image_texture, img_uv);\n\n    vec3 color = vec3(0.);\n    float opacity = 1.;\n\n    vec3 color1 = vec3(.98, 0.98, 1.);\n    vec3 color2 = vec3(.1, .1, .1 + .1 * smoothstep(.7, 1.3, uv.x + uv.y));\n\n    float edge = img.r;\n\n    vec2 grad_uv = uv;\n    grad_uv -= .5;\n\n    float dist = length(grad_uv + vec2(0., .2 * diagonal));\n    grad_uv = rotate(grad_uv, (.25 - .2 * diagonal) * PI);\n\n    float bulge = pow(1.8 * dist, 1.2);\n    bulge = 1. - bulge;\n    bulge *= pow(uv.y, .3);\n\n    float cycle_width = u_patternScale;\n    float thin_strip_1_ratio = .12 / cycle_width * (1. - .4 * bulge);\n    float thin_strip_2_ratio = .07 / cycle_width * (1. + .4 * bulge);\n    float wide_strip_ratio = (1. - thin_strip_1_ratio - thin_strip_2_ratio);\n\n    float thin_strip_1_width = cycle_width * thin_strip_1_ratio;\n    float thin_strip_2_width = cycle_width * thin_strip_2_ratio;\n\n    opacity = 1. - smoothstep(.9 - .5 * u_edge, 1. - .5 * u_edge, edge);\n    opacity *= get_img_frame_alpha(img_uv, 0.01);\n\n    float noise = snoise(uv - t);\n    edge += (1. - edge) * u_liquid * noise;\n\n    float refr = 0.;\n    refr += (1. - bulge);\n    refr = clamp(refr, 0., 1.);\n\n    float dir = grad_uv.x;\n    dir += diagonal;\n    dir -= 2. * noise * diagonal * (smoothstep(0., 1., edge) * smoothstep(1., 0., edge));\n\n    bulge *= clamp(pow(uv.y, .1), .3, 1.);\n    dir *= (.1 + (1.1 - edge) * bulge);\n    dir *= smoothstep(1., .7, edge);\n    dir += .18 * (smoothstep(.1, .2, uv.y) * smoothstep(.4, .2, uv.y));\n    dir += .03 * (smoothstep(.1, .2, 1. - uv.y) * smoothstep(.4, .2, 1. - uv.y));\n    dir *= (.5 + .5 * pow(uv.y, 2.));\n    dir *= cycle_width;\n    dir -= t;\n\n    float refr_r = refr;\n    refr_r += .03 * bulge * noise;\n    float refr_b = 1.3 * refr;\n\n    refr_r += 5. * (smoothstep(-.1, .2, uv.y) * smoothstep(.5, .1, uv.y)) * (smoothstep(.4, .6, bulge) * smoothstep(1., .4, bulge));\n    refr_r -= diagonal;\n\n    refr_b += (smoothstep(0., .4, uv.y) * smoothstep(.8, .1, uv.y)) * (smoothstep(.4, .6, bulge) * smoothstep(.8, .4, bulge));\n    refr_b -= .2 * edge;\n\n    refr_r *= u_refraction;\n    refr_b *= u_refraction;\n\n    vec3 w = vec3(thin_strip_1_width, thin_strip_2_width, wide_strip_ratio);\n    w[1] -= .02 * smoothstep(.0, 1., edge + bulge);\n    float stripe_r = mod(dir + refr_r, 1.);\n    float r = get_color_channel(color1.r, color2.r, stripe_r, w, 0.02 + .03 * u_refraction * bulge, bulge);\n    float stripe_g = mod(dir, 1.);\n    float g = get_color_channel(color1.g, color2.g, stripe_g, w, 0.01 / (1. - diagonal), bulge);\n    float stripe_b = mod(dir - refr_b, 1.);\n    float b = get_color_channel(color1.b, color2.b, stripe_b, w, .01, bulge);\n\n    color = vec3(r, g, b);\n    color *= opacity;\n\n    fragColor = vec4(color, opacity);\n}\n`;// Vertex shader\nconst vertexShaderSource=`#version 300 es\nprecision mediump float;\n\nin vec2 a_position;\nout vec2 vUv;\n\nvoid main() {\n    vUv = .5 * (a_position + 1.);\n    gl_Position = vec4(a_position, 0.0, 1.0);\n}`;// Default shader parameters (can be overridden by props)\nconst getShaderParams=props=>({patternScale:props.patternScale,refraction:props.dispersion,edge:props.edge,patternBlur:props.patternBlur,liquid:props.liquify,speed:props.speed});/**\n * @framerDisableUnlink\n * @framerIntrinsicWidth 300\n * @framerIntrinsicHeight 300\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n */export default function LiquidMetalLogo(props){const{imageSource,speed,dispersion,edge,patternBlur,liquify,patternScale}=props;const canvasRef=useRef(null);const[gl,setGl]=useState(null);const[uniforms,setUniforms]=useState({});const[imageData,setImageData]=useState(null);const[processing,setProcessing]=useState(false);const totalAnimationTime=useRef(0);const lastRenderTime=useRef(0);// Create default SVG image when no image is provided\nconst createDefaultSVGImage=useCallback(()=>{return new Promise((resolve,reject)=>{const svgString=`\n                <svg width=\"400\" height=\"400\" viewBox=\"0 0 400 400\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n                    <path d=\"M127.571 97.1191H272.428V169.545H200L127.571 97.1191ZM127.571 169.545H200L272.428 241.973H127.571V169.545ZM127.571 241.973H200V314.402L127.571 241.973Z\" fill=\"black\"/>\n                </svg>\n            `;const blob=new Blob([svgString],{type:\"image/svg+xml\"});const file=new File([blob],\"default.svg\",{type:\"image/svg+xml\"});// Process the SVG using the same logic as uploaded images\nparseLogoImage(file).then(resolve).catch(reject);});},[]);// Image processing function (ported from parse-logo-image.ts)\nconst parseLogoImage=useCallback(file=>{const canvas=document.createElement(\"canvas\");const ctx=canvas.getContext(\"2d\");return new Promise((resolve,reject)=>{if(!file||!ctx){reject(new Error(\"Invalid file or context\"));return;}const img=new Image;img.onload=function(){// Force SVG to load at high fidelity\nif(file.type===\"image/svg+xml\"){img.width=1e3;img.height=1e3;}const MAX_SIZE=1e3;const MIN_SIZE=500;let width=img.naturalWidth;let height=img.naturalHeight;// Calculate new dimensions\nif(width>MAX_SIZE||height>MAX_SIZE||width<MIN_SIZE||height<MIN_SIZE){if(width>height){if(width>MAX_SIZE){height=Math.round(height*MAX_SIZE/width);width=MAX_SIZE;}else if(width<MIN_SIZE){height=Math.round(height*MIN_SIZE/width);width=MIN_SIZE;}}else{if(height>MAX_SIZE){width=Math.round(width*MAX_SIZE/height);height=MAX_SIZE;}else if(height<MIN_SIZE){width=Math.round(width*MIN_SIZE/height);height=MIN_SIZE;}}}canvas.width=width;canvas.height=height;// Draw the user image on an offscreen canvas\nconst shapeCanvas=document.createElement(\"canvas\");shapeCanvas.width=width;shapeCanvas.height=height;const shapeCtx=shapeCanvas.getContext(\"2d\");shapeCtx.drawImage(img,0,0,width,height);// Build the inside/outside mask\nconst shapeImageData=shapeCtx.getImageData(0,0,width,height);const data=shapeImageData.data;const shapeMask=new Array(width*height).fill(false);for(let y=0;y<height;y++){for(let x=0;x<width;x++){const idx4=(y*width+x)*4;const r=data[idx4];const g=data[idx4+1];const b=data[idx4+2];const a=data[idx4+3];if(r===255&&g===255&&b===255&&a===255||a===0){shapeMask[y*width+x]=false;}else{shapeMask[y*width+x]=true;}}}function inside(x,y){if(x<0||x>=width||y<0||y>=height)return false;return shapeMask[y*width+x];}// Identify boundary pixels\nconst boundaryMask=new Array(width*height).fill(false);for(let y=0;y<height;y++){for(let x=0;x<width;x++){const idx=y*width+x;if(!shapeMask[idx])continue;let isBoundary=false;for(let ny=y-1;ny<=y+1&&!isBoundary;ny++){for(let nx=x-1;nx<=x+1&&!isBoundary;nx++){if(!inside(nx,ny)){isBoundary=true;}}}if(isBoundary){boundaryMask[idx]=true;}}}// Poisson solve: Δu = -C\nconst u=new Float32Array(width*height).fill(0);const newU=new Float32Array(width*height).fill(0);const C=.01;const ITERATIONS=300;function getU(x,y,arr){if(x<0||x>=width||y<0||y>=height)return 0;if(!shapeMask[y*width+x])return 0;return arr[y*width+x];}for(let iter=0;iter<ITERATIONS;iter++){for(let y=0;y<height;y++){for(let x=0;x<width;x++){const idx=y*width+x;if(!shapeMask[idx]||boundaryMask[idx]){newU[idx]=0;continue;}const sumN=getU(x+1,y,u)+getU(x-1,y,u)+getU(x,y+1,u)+getU(x,y-1,u);newU[idx]=(C+sumN)/4;}}// Swap arrays\nfor(let i=0;i<width*height;i++){u[i]=newU[i];}}// Normalize and apply nonlinear remap\nlet maxVal=0;for(let i=0;i<width*height;i++){if(u[i]>maxVal)maxVal=u[i];}const alpha=2;const outImg=ctx.createImageData(width,height);for(let y=0;y<height;y++){for(let x=0;x<width;x++){const idx=y*width+x;const px=idx*4;if(!shapeMask[idx]){outImg.data[px]=255;outImg.data[px+1]=255;outImg.data[px+2]=255;outImg.data[px+3]=255;}else{const raw=u[idx]/maxVal;const remapped=Math.pow(raw,alpha);const gray=255*(1-remapped);outImg.data[px]=gray;outImg.data[px+1]=gray;outImg.data[px+2]=gray;outImg.data[px+3]=255;}}}resolve(outImg);};img.onerror=()=>reject(new Error(\"Failed to load image\"));img.src=URL.createObjectURL(file);});},[]);// Process uploaded image or use default SVG\nuseEffect(()=>{if(!imageSource){// No image uploaded, use default SVG\nsetProcessing(true);createDefaultSVGImage().then(processedImageData=>{setImageData(processedImageData);setProcessing(false);}).catch(error=>{console.error(\"Error processing default SVG:\",error);setProcessing(false);});return;}setProcessing(true);// Convert Framer image URL to blob and process\nfetch(imageSource).then(response=>response.blob()).then(blob=>{const file=new File([blob],\"image\",{type:blob.type});return parseLogoImage(file);}).then(processedImageData=>{setImageData(processedImageData);setProcessing(false);}).catch(error=>{console.error(\"Error processing image:\",error);setProcessing(false);});},[imageSource,parseLogoImage,createDefaultSVGImage]);// Initialize WebGL\nuseEffect(()=>{if(!canvasRef.current)return;const canvas=canvasRef.current;const context=canvas.getContext(\"webgl2\",{antialias:true,alpha:true,premultipliedAlpha:false});if(!context){console.error(\"WebGL2 not supported\");return;}function createShader(gl,sourceCode,type){const shader=gl.createShader(type);if(!shader)return null;gl.shaderSource(shader,sourceCode);gl.compileShader(shader);if(!gl.getShaderParameter(shader,gl.COMPILE_STATUS)){console.error(\"Shader compilation error:\",gl.getShaderInfoLog(shader));gl.deleteShader(shader);return null;}return shader;}const vertexShader=createShader(context,vertexShaderSource,context.VERTEX_SHADER);const fragmentShader=createShader(context,liquidFragSource,context.FRAGMENT_SHADER);if(!vertexShader||!fragmentShader)return;const program=context.createProgram();if(!program)return;context.attachShader(program,vertexShader);context.attachShader(program,fragmentShader);context.linkProgram(program);if(!context.getProgramParameter(program,context.LINK_STATUS)){console.error(\"Program linking error:\",context.getProgramInfoLog(program));return;}// Get uniform locations\nconst uniformLocations={};const uniformCount=context.getProgramParameter(program,context.ACTIVE_UNIFORMS);for(let i=0;i<uniformCount;i++){const uniformInfo=context.getActiveUniform(program,i);if(uniformInfo){const location=context.getUniformLocation(program,uniformInfo.name);if(location){uniformLocations[uniformInfo.name]=location;}}}// Set up vertex buffer.\nconst vertices=new Float32Array([-1,-1,1,-1,-1,1,1,1]);const vertexBuffer=context.createBuffer();context.bindBuffer(context.ARRAY_BUFFER,vertexBuffer);context.bufferData(context.ARRAY_BUFFER,vertices,context.STATIC_DRAW);context.useProgram(program);const positionLocation=context.getAttribLocation(program,\"a_position\");context.enableVertexAttribArray(positionLocation);context.bindBuffer(context.ARRAY_BUFFER,vertexBuffer);context.vertexAttribPointer(positionLocation,2,context.FLOAT,false,0,0);// Enable blending for transparency\ncontext.enable(context.BLEND);context.blendFunc(context.SRC_ALPHA,context.ONE_MINUS_SRC_ALPHA);setGl(context);setUniforms(uniformLocations);return()=>{context.deleteProgram(program);context.deleteShader(vertexShader);context.deleteShader(fragmentShader);context.deleteBuffer(vertexBuffer);};},[]);// Update uniforms\nuseEffect(()=>{if(!gl||!uniforms||Object.keys(uniforms).length===0)return;const params=getShaderParams(props);// Set shader parameters\ngl.uniform1f(uniforms.u_patternScale,params.patternScale);gl.uniform1f(uniforms.u_refraction,params.refraction);gl.uniform1f(uniforms.u_edge,params.edge);gl.uniform1f(uniforms.u_patternBlur,params.patternBlur);gl.uniform1f(uniforms.u_liquid,params.liquid);},[gl,uniforms,props]);// Handle canvas resize and image texture\nuseEffect(()=>{if(!gl||!uniforms||!canvasRef.current||!imageData)return;const canvas=canvasRef.current;const imgRatio=imageData.width/imageData.height;// Resize canvas to match container\nconst rect=canvas.getBoundingClientRect();const size=Math.min(rect.width,rect.height)*devicePixelRatio;canvas.width=size;canvas.height=size;gl.viewport(0,0,size,size);// Set ratio uniforms\ngl.uniform1f(uniforms.u_ratio,1);gl.uniform1f(uniforms.u_img_ratio,imgRatio);// Create and upload texture\nconst texture=gl.createTexture();gl.activeTexture(gl.TEXTURE0);gl.bindTexture(gl.TEXTURE_2D,texture);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,gl.LINEAR);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MAG_FILTER,gl.LINEAR);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE);gl.pixelStorei(gl.UNPACK_ALIGNMENT,1);gl.texImage2D(gl.TEXTURE_2D,0,gl.RGBA,imageData.width,imageData.height,0,gl.RGBA,gl.UNSIGNED_BYTE,imageData.data);gl.uniform1i(uniforms.u_image_texture,0);return()=>{if(texture)gl.deleteTexture(texture);};},[gl,uniforms,imageData]);// Animation loop with enhanced mobile stability\nuseEffect(()=>{if(!gl||!uniforms||!imageData)return;let animationId;const animate=currentTime=>{const deltaTime=currentTime-lastRenderTime.current;lastRenderTime.current=currentTime;// Enhanced mobile time handling\ntotalAnimationTime.current+=deltaTime*speed;// Keep time in a smaller range for better mobile precision\nconst normalizedTime=totalAnimationTime.current%1e4;gl.uniform1f(uniforms.u_time,normalizedTime);// Clear with transparent background\ngl.clearColor(0,0,0,0);gl.clear(gl.COLOR_BUFFER_BIT);// Draw\ngl.drawArrays(gl.TRIANGLE_STRIP,0,4);animationId=requestAnimationFrame(animate);};lastRenderTime.current=performance.now();animationId=requestAnimationFrame(animate);return()=>{if(animationId)cancelAnimationFrame(animationId);};},[gl,uniforms,imageData,speed]);return /*#__PURE__*/_jsxs(\"div\",{style:{width:\"100%\",height:\"100%\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",position:\"relative\"},children:[processing&&/*#__PURE__*/_jsxs(\"div\",{style:{position:\"absolute\",inset:0,display:\"flex\",alignItems:\"center\",justifyContent:\"center\",backgroundColor:\"rgba(0,0,0,0.5)\",zIndex:10},children:[/*#__PURE__*/_jsx(\"div\",{style:{width:\"32px\",height:\"32px\",border:\"3px solid rgba(255,255,255,0.3)\",borderTop:\"3px solid white\",borderRadius:\"50%\",animation:\"spin 1s linear infinite\"}}),/*#__PURE__*/_jsx(\"style\",{children:`\n                            @keyframes spin {\n                                0% { transform: rotate(0deg); }\n                                100% { transform: rotate(360deg); }\n                            }\n                        `})]}),/*#__PURE__*/_jsx(\"canvas\",{ref:canvasRef,style:{width:\"100%\",height:\"100%\",objectFit:\"contain\"}})]});}LiquidMetalLogo.defaultProps={imageSource:\"\",speed:.3,dispersion:.015,edge:.4,patternBlur:.005,liquify:.07,patternScale:2};LiquidMetalLogo.displayName=\"🚀 Liquid Metal\";addPropertyControls(LiquidMetalLogo,{imageSource:{type:ControlType.Image,title:\"Logo Image\",description:\"For better results, upload an SVG or a high resolution image\"},dispersion:{type:ControlType.Number,title:\"Dispersion\",defaultValue:.015,min:0,max:.06,step:.001,displayStepper:true},edge:{type:ControlType.Number,title:\"Edge\",defaultValue:.4,min:0,max:1,step:.01,displayStepper:true},patternBlur:{type:ControlType.Number,title:\"Pattern Blur\",defaultValue:.005,min:0,max:.05,step:.001,displayStepper:true},liquify:{type:ControlType.Number,title:\"Liquify\",defaultValue:.07,min:0,max:1,step:.01,displayStepper:true},speed:{type:ControlType.Number,title:\"Speed\",defaultValue:.3,min:0,max:1,step:.01,displayStepper:true},patternScale:{type:ControlType.Number,title:\"Pattern Scale\",defaultValue:2,min:1,max:10,step:.1,displayStepper:true,description:\"v1.1\\nShader by [paper.design](https://paper.design)\\nPorted to Framer by [Fred Moon](https://x.com/fw3d)\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"LiquidMetalLogo\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerDisableUnlink\":\"* @framerIntrinsicWidth 300\",\"framerIntrinsicHeight\":\"300\",\"framerSupportedLayoutWidth\":\"any\",\"framerSupportedLayoutHeight\":\"any\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./LiquidMetal.map","import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{startTransition,useState,useEffect,useRef}from\"react\";import{createPortal}from\"react-dom\";import{motion,useMotionValue,useSpring}from\"framer-motion\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n */export default function MagicBlendCursor({presetTheme=\"Original Invert\",opacity=1,hoverScale=1.5,damping=30,stiffness=300,mass=.5,style}){const containerRef=useRef(null);const[cursorSize,setCursorSize]=useState({w:100,h:100});const cursorSizeRef=useRef({w:100,h:100});const mouseX=useMotionValue(-1e3);const mouseY=useMotionValue(-1e3);const springX=useSpring(mouseX,{damping,stiffness,mass});const springY=useSpring(mouseY,{damping,stiffness,mass});const[isHovered,setIsHovered]=useState(false);const[isMounted,setIsMounted]=useState(false);const isCanvas=RenderTarget.current()===RenderTarget.canvas;let cursorColor=\"transparent\";let backdropFilterStyle=\"none\";let mixBlendModeStyle=\"normal\";switch(presetTheme){case\"Monochrome\":cursorColor=\"rgba(255, 255, 255, 0.5)\";backdropFilterStyle=\"invert(100%) grayscale(100%) contrast(1.2)\";break;case\"Sunset\":cursorColor=\"rgba(255, 107, 53, 0.7)\";backdropFilterStyle=\"invert(100%) grayscale(100%) contrast(1.2)\";break;case\"Forest\":cursorColor=\"rgba(46, 204, 113, 0.6)\";backdropFilterStyle=\"invert(100%) grayscale(100%) contrast(1.2)\";break;case\"Ocean\":cursorColor=\"rgba(52, 152, 219, 0.6)\";backdropFilterStyle=\"invert(100%) grayscale(100%) contrast(1.2)\";break;case\"Neon Pink\":cursorColor=\"rgba(255, 0, 255, 0.6)\";backdropFilterStyle=\"invert(100%) grayscale(100%) contrast(1.2)\";break;case\"Cyber Blue\":cursorColor=\"rgba(0, 229, 255, 0.6)\";backdropFilterStyle=\"invert(100%) grayscale(100%) contrast(1.2)\";break;case\"Original Invert\":default:cursorColor=\"#FFFFFF\";mixBlendModeStyle=\"difference\";backdropFilterStyle=\"none\";break;}useEffect(()=>{setIsMounted(true);if(!containerRef.current)return;const observer=new ResizeObserver(entries=>{for(let entry of entries){const w=entry.contentRect.width||entry.target.clientWidth||100;const h=entry.contentRect.height||entry.target.clientHeight||100;if(w>0&&h>0){cursorSizeRef.current={w,h};setCursorSize({w,h});}}});observer.observe(containerRef.current);return()=>observer.disconnect();},[]);useEffect(()=>{if(isCanvas)return;const updateMousePosition=e=>{mouseX.set(e.clientX-cursorSizeRef.current.w/2);mouseY.set(e.clientY-cursorSizeRef.current.h/2);};const checkHoverState=e=>{const target=e.target;if(!target)return;const isClickable=target.tagName===\"A\"||target.tagName===\"BUTTON\"||target.closest(\"a\")!==null||target.closest(\"button\")!==null||window.getComputedStyle(target).cursor===\"pointer\";startTransition(()=>{setIsHovered(isClickable);});};window.addEventListener(\"mousemove\",updateMousePosition);window.addEventListener(\"mouseover\",checkHoverState);return()=>{window.removeEventListener(\"mousemove\",updateMousePosition);window.removeEventListener(\"mouseover\",checkHoverState);};},[isCanvas,mouseX,mouseY]);if(isCanvas){return /*#__PURE__*/_jsx(\"div\",{ref:containerRef,style:{...style,backgroundColor:presetTheme===\"Original Invert\"?\"#000\":\"rgba(128, 128, 128, 0.2)\",opacity:opacity,display:\"flex\",justifyContent:\"center\",alignItems:\"center\",border:\"2px dashed rgba(0,0,0,0.2)\",borderRadius:\"50%\"}});}const activeCursor=/*#__PURE__*/_jsx(motion.div,{animate:{scale:isHovered?hoverScale:1},transition:{scale:{type:\"spring\",damping:20,stiffness:300}},style:{x:springX,y:springY,position:\"fixed\",top:0,left:0,width:cursorSize.w,height:cursorSize.h,borderRadius:\"50%\",backgroundColor:cursorColor,opacity:opacity,pointerEvents:\"none\",zIndex:99999,willChange:\"transform\",mixBlendMode:mixBlendModeStyle,backdropFilter:backdropFilterStyle!==\"none\"?backdropFilterStyle:undefined,WebkitBackdropFilter:backdropFilterStyle!==\"none\"?backdropFilterStyle:undefined}});return /*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"div\",{ref:containerRef,style:{...style,visibility:\"hidden\",pointerEvents:\"none\"}}),isMounted&&!isCanvas?/*#__PURE__*/createPortal(activeCursor,document.body):null]});}MagicBlendCursor.displayName=\"Magic Blend Cursor\";addPropertyControls(MagicBlendCursor,{presetTheme:{type:ControlType.Enum,title:\"Theme\",description:\"Select the cursor's visual style.\",options:[\"Original Invert\",\"Monochrome\",\"Neon Pink\",\"Cyber Blue\",\"Sunset\",\"Forest\",\"Ocean\"],defaultValue:\"Original Invert\"},opacity:{type:ControlType.Number,title:\"Opacity\",description:\"Base opacity level.\",defaultValue:1,min:0,max:1,step:.1},hoverScale:{type:ControlType.Number,title:\"Hover Scale\",description:\"Scale multiplier on hover.\",defaultValue:1.5,min:1,max:5,step:.1},damping:{type:ControlType.Number,title:\"Damping\",description:\"Spring animation damping.\",defaultValue:30,min:0,max:100},stiffness:{type:ControlType.Number,title:\"Stiffness\",description:\"Spring animation stiffness.\",defaultValue:300,min:0,max:1e3},mass:{type:ControlType.Number,title:\"Mass\",description:\"Spring animation mass.\",defaultValue:.5,min:.1,max:2,step:.1}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"MagicBlendCursor\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"any\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"any\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./MagicBlendCursor.map","// Generated by Framer (3ad0d99)\nexport default function metadata(params,activeLocale){return{description:\"Made with Framer\",robots:\"max-image-preview:large\",title:\"My Framer Site\"};}export const metadataVersion=1;\nexport const __FramerMetadata__ = {\"exports\":{\"metadataVersion\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Generated by Framer (80f113d)\nimport siteMetadata from\"#framer/local/siteMetadata/siteMetadata/siteMetadata.js\";export default function metadata(params,activeLocale){return{breakpoints:[{hash:\"72rtr7\",mediaQuery:\"(min-width: 1200px)\"},{hash:\"c01kr0\",mediaQuery:\"(max-width: 1199.98px)\"}],description:siteMetadata(params,activeLocale).description,elements:{},robots:\"max-image-preview:large\",serializationId:\"framer-KjUM3\",title:siteMetadata(params,activeLocale).title||\"Home\",viewport:\"width=device-width\"};}export const metadataVersion=1;\nexport const __FramerMetadata__ = {\"exports\":{\"metadataVersion\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Generated by Framer (80f113d)\nimport siteMetadata from\"#framer/local/siteMetadata/siteMetadata/siteMetadata.js\";export default function metadata(params,activeLocale){return{breakpoints:[{hash:\"rzdg7m\",mediaQuery:\"(min-width: 1200px)\"},{hash:\"1i9vo90\",mediaQuery:\"(max-width: 1199.98px)\"}],description:siteMetadata(params,activeLocale).description,elements:{},robots:\"max-image-preview:large\",serializationId:\"framer-XKR7C\",title:siteMetadata(params,activeLocale).title||\"About\",viewport:\"width=device-width\"};}export const metadataVersion=1;\nexport const __FramerMetadata__ = {\"exports\":{\"metadataVersion\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}"],"mappings":"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"}