{"version":3,"file":"FluidGlassButton_NEW.13-R5Dt0.mjs","names":["useRef","THREE.Color","THREE.Vector2","THREE.Scene","THREE.OrthographicCamera","THREE.WebGLRenderer","THREE.PlaneGeometry","THREE.ShaderMaterial","THREE.Mesh","useCallback","_Fragment"],"sources":["https:/framerusercontent.com/modules/Uueo7ThEYmD5dBkgGjiS/ry3bTURpw8XcqKY6iAxo/FluidGlassButton_NEW.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{useRef,useEffect,useCallback}from\"react\";import*as THREE from\"three\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";const vertexShader=`\nvarying vec2 vUv;\nvoid main() {\n    vUv = uv;\n    gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n}\n`;const fragmentShader=`\nvarying vec2 vUv;\nuniform float uTime;\nuniform float uHover;\nuniform float uClick;\nuniform vec3 uBaseColor;\nuniform vec3 uGlassColor;\nuniform vec2 uResolution;\n\n// Hash function for pseudo-randomness\nfloat hash(vec2 p) {\n    return fract(sin(dot(p, vec2(12.9898, 78.233))) * 43758.5453);\n}\n\n// Simplex-style noise\nfloat noise(vec2 p) {\n    vec2 i = floor(p);\n    vec2 f = fract(p);\n    vec2 u = f * f * (3.0 - 2.0 * f);\n    return mix(mix(hash(i + vec2(0.0, 0.0)), hash(i + vec2(1.0, 0.0)), u.x),\n               mix(hash(i + vec2(0.0, 1.0)), hash(i + vec2(1.0, 1.0)), u.x), u.y);\n}\n\n// Fractal Brownian Motion for liquid distortion\nfloat fbm(vec2 p) {\n    float f = 0.0;\n    float amp = 0.5;\n    for(int i = 0; i < 4; i++) {\n        f += amp * noise(p);\n        p *= 2.0;\n        amp *= 0.5;\n    }\n    return f;\n}\n\nvoid main() {\n    // Aspect-corrected coordinates for perfect pill shape math\n    float aspect = uResolution.x / uResolution.y;\n    vec2 p = vUv * 2.0 - 1.0;\n    p.x *= aspect;\n\n    // Center calculations for the liquid click surge\n    vec2 center = vec2(0.5);\n    vec2 dirToCenter = normalize(vUv - center + vec2(0.0001));\n    float distToCenter = length(vUv - center);\n\n    // 1. SDF (Signed Distance Field) for a Pill Shape\n    float r = 1.0; \n    vec2 b = vec2(max(aspect - 1.0, 0.0), 0.0);\n    vec2 d = abs(p) - b;\n    float dist = length(max(d, 0.0)) + min(max(d.x, d.y), 0.0) - r;\n    \n    // Normalized distance from edge (0 = edge, 1 = center)\n    float innerDist = clamp(abs(dist), 0.0, 1.0);\n\n    // 2. Dynamic Liquid Noise Field\n    float t = uTime;\n    \n    // Stretch noise horizontally\n    vec2 noiseUv = vUv * vec2(2.0, 1.0); \n    \n    // Dynamic warping on hover + Liquid Surge on Click\n    vec2 warp = vec2(fbm(noiseUv + t * 0.5), fbm(noiseUv + t * 0.5 + 12.34)) * mix(0.0, 0.4, uHover);\n    warp -= dirToCenter * uClick * 0.25 * smoothstep(0.8, 0.0, distToCenter); \n    \n    float n1 = fbm(noiseUv + warp + vec2(t, 0.0));\n    float n2 = fbm(noiseUv + warp + vec2(n1, t * 1.2));\n\n    // 3. Glassy Rim & Specular Highlights\n    float rimWidth = mix(0.15, 0.35, n2) * mix(1.0, 1.4, uHover);\n    rimWidth += uClick * 0.15; // Rim expands on click\n    float rim = smoothstep(rimWidth, 0.0, innerDist);\n    \n    float specDist = abs(innerDist - 0.12 + n1 * 0.08);\n    float specular = smoothstep(0.03, 0.0, specDist);\n\n    float rightBias = smoothstep(0.2, 1.0, vUv.x);\n    rim *= mix(0.6, 1.5, rightBias);\n    specular *= mix(0.5, 2.0, rightBias);\n\n    // 4. Highly Dynamic Stars / Particles\n    vec2 starUv = vUv * vec2(aspect * 6.0, 6.0);\n    \n    // Drift uses the accumulated uTime so it accelerates smoothly without jumping\n    starUv.x -= uTime * 0.2; \n    starUv.y += sin(uTime * 0.5 + starUv.x) * mix(0.2, 0.6, uHover); \n    \n    // Star Burst on Click\n    starUv += dirToCenter * uClick * 1.5;\n\n    vec2 id = floor(starUv);\n    vec2 gv = fract(starUv) - 0.5;\n    float nStar = hash(id);\n    float star = 0.0;\n    \n    float starThreshold = mix(0.94, 0.86, uHover); \n    \n    if (nStar > starThreshold) { \n        // Randomize size per star\n        float sizeMod = mix(0.5, 2.5, hash(id + 13.37)); \n        \n        // Local micro-movements (wiggling inside their cell on hover)\n        vec2 localWiggle = vec2(\n            sin(uTime * 2.0 + nStar * 50.0),\n            cos(uTime * 2.3 + nStar * 40.0)\n        ) * 0.25 * uHover;\n\n        float starDist = length(gv - localWiggle) * sizeMod;\n        \n        // Core brightness + Outer glow\n        star = smoothstep(0.12, 0.0, starDist);\n        star += smoothstep(0.25, 0.0, starDist) * 0.3;\n\n        // Twinkle phase uses accumulated time to naturally speed up\n        float twinklePhase = uTime * mix(5.0, 15.0, hash(id + 42.0));\n        star *= sin(twinklePhase + nStar * 100.0) * 0.5 + 0.5; \n        \n        // Fade stars out near the edge\n        star *= smoothstep(0.05, 0.2, innerDist); \n    }\n\n    // 5. Compositing\n    vec3 color = uBaseColor;\n    \n    float innerLiquid = smoothstep(0.2, 0.9, n2) * (1.0 - innerDist) * mix(0.2, 0.45, uHover);\n    color += uGlassColor * innerLiquid;\n    \n    color += uGlassColor * rim * mix(0.6, 1.2, uHover);\n    color += vec3(1.0) * specular * mix(0.8, 2.0, uHover);\n    \n    color += vec3(1.0) * star * mix(0.8, 1.5, uHover);\n\n    // Click Flash Effects\n    color += uGlassColor * rim * uClick * 0.8;\n    color += vec3(1.0) * specular * uClick * 1.5;\n    color += uGlassColor * exp(-distToCenter * 6.0) * uClick * 0.6; // Volumetric center glow\n\n    color *= smoothstep(1.5, 0.2, length(vUv - 0.5));\n\n    gl_FragColor = vec4(color, 1.0);\n}\n`;export default function PremiumShaderButton(props){const{text=\"Get Started\",textFont={},padding=\"0px 24px 0px 24px\",baseColor=\"#000000\",glassColor=\"#C2C2C2\",hoverSpeed=.6,borderRadius=999,livePreview=false,onClick,link}=props;const isStatic=useIsStaticRenderer();const containerRef=useRef(null);const hoverRef=useRef(0);const clickRef=useRef(0);// Ref points to semantic interactive element (either a or button)\nconst outerRef=useRef(null);// Store references to shader uniforms so we don't recreate the material for prop changes\nconst uniformsRef=useRef({uTime:{value:0},uHover:{value:0},uClick:{value:0},uBaseColor:{value:new THREE.Color},uGlassColor:{value:new THREE.Color},uResolution:{value:new THREE.Vector2(1,1)}});// Update uniform colors when props change\nuseEffect(()=>{if(isStatic)return;uniformsRef.current.uBaseColor.value.set(baseColor);uniformsRef.current.uGlassColor.value.set(glassColor);},[baseColor,glassColor,isStatic]);// Vanilla three.js loop & setup inside useEffect\nuseEffect(()=>{if(isStatic)return;const container=containerRef.current;if(!container)return;const scene=new THREE.Scene;// Orthographic camera ensures the shader plane fits perfectly 2D without perspective distortion\nconst camera=new THREE.OrthographicCamera(-1,1,1,-1,0,1);const renderer=new THREE.WebGLRenderer({antialias:false,alpha:true});renderer.setPixelRatio(Math.min(window.devicePixelRatio,2));container.appendChild(renderer.domElement);const geometry=new THREE.PlaneGeometry(2,2);const material=new THREE.ShaderMaterial({vertexShader,fragmentShader,uniforms:uniformsRef.current,transparent:true});const mesh=new THREE.Mesh(geometry,material);scene.add(mesh);let animationFrameId;let timeAccumulator=0;let lastTime=performance.now();let isIntersecting=false;let currentHoverValue=0;let currentClickValue=0;const renderLoop=time=>{animationFrameId=requestAnimationFrame(renderLoop);// Canvas freezing strategy: only render if onscreen or the user enables live preview overriding\nif(!isIntersecting&&!livePreview){lastTime=time;return;}const delta=(time-lastTime)/1e3;lastTime=time;// Smoothly interpolate hover state targeting\nconst targetHover=hoverRef.current;currentHoverValue=THREE.MathUtils.lerp(currentHoverValue,targetHover,delta*4);// Consume click trigger\nif(clickRef.current>0){currentClickValue=clickRef.current;clickRef.current=0;}// Fade click effect\ncurrentClickValue=THREE.MathUtils.lerp(currentClickValue,0,delta*6);// Accumulate time based dynamically on hover speed to prevent jumping\nconst currentSpeed=THREE.MathUtils.lerp(.15,hoverSpeed,currentHoverValue);timeAccumulator+=delta*currentSpeed;uniformsRef.current.uTime.value=timeAccumulator;uniformsRef.current.uHover.value=currentHoverValue;uniformsRef.current.uClick.value=currentClickValue;renderer.render(scene,camera);};animationFrameId=requestAnimationFrame(renderLoop);const resizeObserver=new ResizeObserver(entries=>{for(const entry of entries){const{width,height}=entry.contentRect;renderer.setSize(width,height);uniformsRef.current.uResolution.value.set(width,height);}});resizeObserver.observe(container);const intersectionObserver=new IntersectionObserver(entries=>{for(const entry of entries){isIntersecting=entry.isIntersecting;}});intersectionObserver.observe(container);return()=>{cancelAnimationFrame(animationFrameId);resizeObserver.disconnect();intersectionObserver.disconnect();geometry.dispose();material.dispose();renderer.dispose();if(container.contains(renderer.domElement)){container.removeChild(renderer.domElement);}};},[livePreview,hoverSpeed,isStatic]);const isLink=Boolean(link&&link!==\"\");const handleMouseDownEvt=useCallback(e=>{clickRef.current=1;if(outerRef.current){outerRef.current.style.transform=\"scale(0.96)\";}},[]);const handleMouseUpEvt=useCallback(()=>{if(outerRef.current){outerRef.current.style.transform=\"scale(1)\";}},[]);const handleMouseEnterEvt=useCallback(()=>{hoverRef.current=1;if(outerRef.current){outerRef.current.style.zIndex=\"10\";}},[]);const handleMouseLeaveEvt=useCallback(()=>{hoverRef.current=0;if(outerRef.current){outerRef.current.style.transform=\"scale(1)\";outerRef.current.style.zIndex=\"1\";}},[]);const handleKeyDown=useCallback(e=>{if(e.key===\"Enter\"||e.key===\" \"){e.preventDefault();clickRef.current=1;// Visual click scale simulation\nif(outerRef.current){outerRef.current.style.transform=\"scale(0.96)\";setTimeout(()=>{if(outerRef.current){outerRef.current.style.transform=\"scale(1)\";}},150);}if(onClick){onClick(e);}else if(isLink&&outerRef.current&&outerRef.current instanceof HTMLAnchorElement){outerRef.current.click();}}},[onClick,isLink]);const containerStyle={width:\"100%\",height:\"100%\",minWidth:0,minHeight:0,position:\"relative\",borderRadius:borderRadius,cursor:\"pointer\",padding:0,display:\"block\",boxSizing:\"border-box\",backgroundColor:baseColor,boxShadow:\"inset 0 0 0 1px rgba(255, 255, 255, 0.15), 0 10px 30px -10px rgba(0,0,0,0.5)\",transition:\"transform 0.4s cubic-bezier(0.16, 1, 0.3, 1), z-index 0s\",zIndex:1,textDecoration:\"none\",outline:\"none\",border:\"none\",margin:0,fontFamily:\"inherit\",overflow:\"visible\"};const content=/*#__PURE__*/_jsxs(_Fragment,{children:[!isStatic&&/*#__PURE__*/_jsx(\"div\",{ref:containerRef,style:{position:\"absolute\",top:0,left:0,right:0,bottom:0,zIndex:0,borderRadius:borderRadius,overflow:\"hidden\",pointerEvents:\"none\"}}),/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",inset:0,zIndex:1,display:\"flex\",alignItems:\"center\",justifyContent:\"center\",boxSizing:\"border-box\",padding:padding,minWidth:0,minHeight:0,color:\"white\",pointerEvents:\"none\",textAlign:\"center\",whiteSpace:\"nowrap\",textShadow:\"0px 2px 10px rgba(255,255,255,0.3)\",...textFont},children:text})]});if(isLink){return /*#__PURE__*/_jsx(\"a\",{href:link,ref:outerRef,style:containerStyle,onMouseEnter:handleMouseEnterEvt,onMouseLeave:handleMouseLeaveEvt,onMouseDown:handleMouseDownEvt,onMouseUp:handleMouseUpEvt,onClick:onClick,onKeyDown:handleKeyDown,role:\"button\",tabIndex:0,children:content});}return /*#__PURE__*/_jsx(\"button\",{ref:outerRef,style:containerStyle,onMouseEnter:handleMouseEnterEvt,onMouseLeave:handleMouseLeaveEvt,onMouseDown:handleMouseDownEvt,onMouseUp:handleMouseUpEvt,onClick:onClick,onKeyDown:handleKeyDown,children:content});}addPropertyControls(PremiumShaderButton,{livePreview:{type:ControlType.Boolean,title:\"Live Preview\",defaultValue:false},link:{type:ControlType.Link,title:\"Link\"},text:{type:ControlType.String,title:\"Text\",defaultValue:\"Get Started\"},textFont:{type:ControlType.Font,title:\"Typography\",controls:\"extended\",defaultValue:{fontFamily:\"Aileron\",fontSize:\"24px\",variant:\"600\",letterSpacing:\"0.01em\",lineHeight:\"1.5em\",textAlign:\"left\"}},padding:{type:ControlType.Padding,title:\"Padding\",defaultValue:\"0px 24px 0px 24px\"},baseColor:{type:ControlType.Color,title:\"Base Color\",defaultValue:\"#000000\"},glassColor:{type:ControlType.Color,title:\"Glass Color\",defaultValue:\"#C2C2C2\"},hoverSpeed:{type:ControlType.Number,title:\"Hover Speed\",defaultValue:.6,min:.1,max:5,step:.1,displayStepper:true},borderRadius:{type:ControlType.Number,title:\"Radius\",defaultValue:999,min:0,max:999}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"PremiumShaderButton\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"PremiumShaderButtonProps\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./FluidGlassButton_NEW.map"],"mappings":"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"}