{"version":3,"file":"ScrollProgressButton.DNVFlUlI.mjs","names":["useState","useRef","useCallback","useMemo","__esmMin","pe","init_npm_react_18_3_1","ne","init_ssg_sandbox_shims","window","te","_e","p","c","init_jsx_runtime","ce","de","addPropertyControls","init_framer_BWFVvmND","ControlType","fontStore","useIsStaticRenderer","fonts","css","className","init_aqjnVElV_","ScrollProgressButton","props","scrollProgress","setScrollProgress","isVisible","setIsVisible","shouldAlwaysShow","scrollTimeoutRef","lastScrollProgressRef","lastVisibilityRef","getStrokeColor","progress","localProgress","dynamicStrokeColorMemo","glowIntensityMemo","glowIntensity","activeRingColor","useGradientRing","ringColor","activeGlowColor","useGradientGlow","glowColor","handleScroll","scrollTop","docHeight","newIsVisible","showThreshold","progressChanged","visibilityChanged","scrollToTop","radiusMemo","buttonSize","ringWidth","circumferenceMemo","strokeDashoffsetMemo","innerCircleSize","showButton","visibilityMode","hideButton","containerStyle","bottomOffset","rightOffset","enableAnimation","animationSpeed","buttonStyle","innerCircleStyle","buttonColor","showShadow","svgStyle","enableGlow","circleStyle","enableHoverEffect","iconColor","init_ScrollProgressButton"],"sources":["https:/framerusercontent.com/modules/kzt7Pn9bygDGtGLbZk5m/mmUaUZ6TIknuSwNsz1Nx/aqjnVElV_.js","https:/framerusercontent.com/modules/kZqyKf7ylBvbkWRuAt20/xw7NP7UGmO98JXn8J4Pg/ScrollProgressButton.js"],"sourcesContent":["// Generated by Framer (9801af1)\nimport{fontStore}from\"framer\";fontStore.loadFonts([\"CUSTOMV2;Inter Tight SemiBold\",\"CUSTOMV2;Inter Tight Black\",\"CUSTOMV2;Inter Tight Black Italic\",\"CUSTOMV2;Inter Tight SemiBold Italic\"]);export const fonts=[{explicitInter:true,fonts:[{cssFamilyName:\"Inter Tight SemiBold\",source:\"custom\",style:\"normal\",uiFamilyName:\"Inter Tight\",url:\"https://framerusercontent.com/assets/cii8znbSDWVLUlaUhcWjG7irf0.woff2\",weight:\"600\"},{cssFamilyName:\"Inter Tight Black\",source:\"custom\",style:\"normal\",uiFamilyName:\"Inter Tight\",url:\"https://framerusercontent.com/assets/QRlxa9kgvelDGcAYxSoTydfDGw.woff2\",weight:\"900\"},{cssFamilyName:\"Inter Tight Black Italic\",source:\"custom\",style:\"italic\",uiFamilyName:\"Inter Tight\",url:\"https://framerusercontent.com/assets/Rbrb77GwfoueSSrpA26dV39Q.woff2\",weight:\"900\"},{cssFamilyName:\"Inter Tight SemiBold Italic\",source:\"custom\",style:\"italic\",uiFamilyName:\"Inter Tight\",url:\"https://framerusercontent.com/assets/D7pirQyz1TTd0wSalVbcDeDfgk.woff2\",weight:\"600\"}]}];export const css=['.framer-TyxsN .framer-styles-preset-r8v19i:not(.rich-text-wrapper), .framer-TyxsN .framer-styles-preset-r8v19i.rich-text-wrapper p { --framer-font-family: \"Inter Tight SemiBold\", \"Inter Tight SemiBold Placeholder\", sans-serif; --framer-font-family-bold: \"Inter Tight Black\", \"Inter Tight Black Placeholder\", sans-serif; --framer-font-family-bold-italic: \"Inter Tight Black Italic\", \"Inter Tight Black Italic Placeholder\", sans-serif; --framer-font-family-italic: \"Inter Tight SemiBold Italic\", \"Inter Tight SemiBold Italic Placeholder\", sans-serif; --framer-font-open-type-features: normal; --framer-font-size: 24px; --framer-font-style: normal; --framer-font-style-bold: normal; --framer-font-style-bold-italic: italic; --framer-font-style-italic: italic; --framer-font-variation-axes: normal; --framer-font-weight: 600; --framer-font-weight-bold: 900; --framer-font-weight-bold-italic: 900; --framer-font-weight-italic: 600; --framer-letter-spacing: 0em; --framer-line-height: 32px; --framer-paragraph-spacing: 0px; --framer-text-alignment: start; --framer-text-color: var(--token-a8edcbe7-b4b9-46ab-9dec-f3bd6d326fb8, #1f2837); --framer-text-decoration: none; --framer-text-stroke-color: initial; --framer-text-stroke-width: initial; --framer-text-transform: none; }','@media (max-width: 1199px) and (min-width: 810px) { .framer-TyxsN .framer-styles-preset-r8v19i:not(.rich-text-wrapper), .framer-TyxsN .framer-styles-preset-r8v19i.rich-text-wrapper p { --framer-font-family: \"Inter Tight SemiBold\", \"Inter Tight SemiBold Placeholder\", sans-serif; --framer-font-family-bold: \"Inter Tight Black\", \"Inter Tight Black Placeholder\", sans-serif; --framer-font-family-bold-italic: \"Inter Tight Black Italic\", \"Inter Tight Black Italic Placeholder\", sans-serif; --framer-font-family-italic: \"Inter Tight SemiBold Italic\", \"Inter Tight SemiBold Italic Placeholder\", sans-serif; --framer-font-open-type-features: normal; --framer-font-size: 22px; --framer-font-style: normal; --framer-font-style-bold: normal; --framer-font-style-bold-italic: italic; --framer-font-style-italic: italic; --framer-font-variation-axes: normal; --framer-font-weight: 600; --framer-font-weight-bold: 900; --framer-font-weight-bold-italic: 900; --framer-font-weight-italic: 600; --framer-letter-spacing: 0em; --framer-line-height: 30px; --framer-paragraph-spacing: 0px; --framer-text-alignment: start; --framer-text-color: var(--token-a8edcbe7-b4b9-46ab-9dec-f3bd6d326fb8, #1f2837); --framer-text-decoration: none; --framer-text-stroke-color: initial; --framer-text-stroke-width: initial; --framer-text-transform: none; } }','@media (max-width: 809px) and (min-width: 0px) { .framer-TyxsN .framer-styles-preset-r8v19i:not(.rich-text-wrapper), .framer-TyxsN .framer-styles-preset-r8v19i.rich-text-wrapper p { --framer-font-family: \"Inter Tight SemiBold\", \"Inter Tight SemiBold Placeholder\", sans-serif; --framer-font-family-bold: \"Inter Tight Black\", \"Inter Tight Black Placeholder\", sans-serif; --framer-font-family-bold-italic: \"Inter Tight Black Italic\", \"Inter Tight Black Italic Placeholder\", sans-serif; --framer-font-family-italic: \"Inter Tight SemiBold Italic\", \"Inter Tight SemiBold Italic Placeholder\", sans-serif; --framer-font-open-type-features: normal; --framer-font-size: 20px; --framer-font-style: normal; --framer-font-style-bold: normal; --framer-font-style-bold-italic: italic; --framer-font-style-italic: italic; --framer-font-variation-axes: normal; --framer-font-weight: 600; --framer-font-weight-bold: 900; --framer-font-weight-bold-italic: 900; --framer-font-weight-italic: 600; --framer-letter-spacing: 0em; --framer-line-height: 28px; --framer-paragraph-spacing: 0px; --framer-text-alignment: start; --framer-text-color: var(--token-a8edcbe7-b4b9-46ab-9dec-f3bd6d326fb8, #1f2837); --framer-text-decoration: none; --framer-text-stroke-color: initial; --framer-text-stroke-width: initial; --framer-text-transform: none; } }'];export const className=\"framer-TyxsN\";\nexport const __FramerMetadata__ = {\"exports\":{\"fonts\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"css\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"className\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Back to Top floating action button with progress ring that fills as you scroll down the page\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useEffect,useState,useCallback,useMemo,useRef,startTransition}from\"react\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";/**\n * Back to Top Button with Progress Ring\n *\n * @framerIntrinsicWidth 60\n * @framerIntrinsicHeight 60\n *\n * @framerSupportedLayoutWidth fixed\n * @framerSupportedLayoutHeight fixed\n */export default function ScrollProgressButton(props){const{buttonColor,iconColor,ringColor,ringWidth,buttonSize,bottomOffset,rightOffset,showThreshold,visibilityMode,showShadow,enableHoverEffect,enableAnimation,animationSpeed,glowColor,enableGlow,glowIntensity,useGradientRing,useGradientGlow}=props;const[scrollProgress,setScrollProgress]=useState(0);const[isVisible,setIsVisible]=useState(false);const isStatic=useIsStaticRenderer();const shouldAlwaysShow=isStatic;const scrollTimeoutRef=useRef(null);const lastScrollProgressRef=useRef(0);const lastVisibilityRef=useRef(false);// Calculate dynamic stroke color based on scroll progress\nconst getStrokeColor=useCallback(progress=>{if(progress<.5){// Purple to Blue (0% to 50%)\nconst localProgress=progress*2;const r=Math.round(91+(59-91)*localProgress);const g=Math.round(33+(130-33)*localProgress);const b=Math.round(182+(246-182)*localProgress);return`rgb(${r}, ${g}, ${b})`;}else{// Blue to Teal (50% to 100%)\nconst localProgress=(progress-.5)*2;const r=Math.round(59+(20-59)*localProgress);const g=Math.round(130+(184-130)*localProgress);const b=Math.round(246+(166-246)*localProgress);return`rgb(${r}, ${g}, ${b})`;}},[]);const dynamicStrokeColorMemo=useMemo(()=>getStrokeColor(scrollProgress),[scrollProgress,getStrokeColor]);const glowIntensityMemo=useMemo(()=>scrollProgress*15*glowIntensity,[scrollProgress,glowIntensity]);// Determine which color to use for the ring\nconst activeRingColor=useGradientRing?dynamicStrokeColorMemo:ringColor;// Determine which color to use for the glow\nconst activeGlowColor=useGradientGlow?dynamicStrokeColorMemo:glowColor;const handleScroll=useCallback(()=>{if(typeof window===\"undefined\")return;requestAnimationFrame(()=>{// Throttle updates - only update if there's a meaningful change\nif(scrollTimeoutRef.current!==null)return;scrollTimeoutRef.current=window.setTimeout(()=>{scrollTimeoutRef.current=null;requestAnimationFrame(()=>{const scrollTop=window.scrollY;const docHeight=document.documentElement.scrollHeight-window.innerHeight;const progress=docHeight<=0?0:Math.min(Math.max(scrollTop/docHeight,0),1);const newIsVisible=scrollTop>showThreshold;// Only update state if values have meaningfully changed\nconst progressChanged=Math.abs(progress-lastScrollProgressRef.current)>.001;const visibilityChanged=newIsVisible!==lastVisibilityRef.current;if(progressChanged||visibilityChanged){lastScrollProgressRef.current=progress;lastVisibilityRef.current=newIsVisible;startTransition(()=>{if(progressChanged)setScrollProgress(progress);if(visibilityChanged)setIsVisible(newIsVisible);});}});},16)// ~60fps throttle\n;});},[showThreshold]);useEffect(()=>{if(typeof window===\"undefined\")return;if(shouldAlwaysShow)return;handleScroll();window.addEventListener(\"scroll\",handleScroll,{passive:true});return()=>{window.removeEventListener(\"scroll\",handleScroll);if(scrollTimeoutRef.current!==null){clearTimeout(scrollTimeoutRef.current);}};},[handleScroll,shouldAlwaysShow]);const scrollToTop=()=>{if(typeof window===\"undefined\")return;window.scrollTo({top:0,behavior:\"smooth\"});};const radiusMemo=useMemo(()=>(buttonSize-ringWidth)/2,[buttonSize,ringWidth]);const circumferenceMemo=useMemo(()=>2*Math.PI*radiusMemo,[radiusMemo]);const strokeDashoffsetMemo=useMemo(()=>circumferenceMemo-scrollProgress*circumferenceMemo,[circumferenceMemo,scrollProgress]);// Gap between inner circle and outer ring\nconst gap=2;const innerCircleSize=buttonSize-ringWidth*2-gap*2;const showButton=shouldAlwaysShow||visibilityMode===\"always\"||visibilityMode===\"scroll\"&&isVisible;const hideButton=visibilityMode===\"hidden\"&&!shouldAlwaysShow;const containerStyle=useMemo(()=>({position:shouldAlwaysShow?\"relative\":\"fixed\",bottom:shouldAlwaysShow?undefined:bottomOffset,right:shouldAlwaysShow?undefined:rightOffset,width:buttonSize,height:buttonSize,pointerEvents:hideButton?\"none\":\"auto\",zIndex:9999,opacity:showButton?1:0,transform:shouldAlwaysShow?undefined:showButton?\"scale(1)\":\"scale(0.8)\",transition:enableAnimation&&!shouldAlwaysShow?`opacity ${animationSpeed}s ease, transform ${animationSpeed}s ease`:\"none\",touchAction:\"manipulation\"}),[shouldAlwaysShow,bottomOffset,rightOffset,buttonSize,hideButton,showButton,enableAnimation,animationSpeed]);const buttonStyle=useMemo(()=>({position:\"relative\",width:\"100%\",height:\"100%\",borderRadius:\"50%\",backgroundColor:\"transparent\",border:\"none\",cursor:\"pointer\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",transition:\"transform 0.2s ease\",WebkitTransform:\"translateZ(0)\",willChange:\"transform\",touchAction:\"manipulation\",WebkitTapHighlightColor:\"transparent\"}),[]);const innerCircleStyle=useMemo(()=>({position:\"absolute\",top:\"50%\",left:\"50%\",transform:\"translate(-50%, -50%)\",width:innerCircleSize,height:innerCircleSize,borderRadius:\"50%\",backgroundColor:buttonColor,boxShadow:showShadow?\"0 4px 12px rgba(0, 0, 0, 0.15)\":\"none\",pointerEvents:\"none\"}),[innerCircleSize,buttonColor,showShadow]);const svgStyle=useMemo(()=>({position:\"absolute\",top:0,left:0,width:\"100%\",height:\"100%\",transform:\"rotate(-90deg)\",filter:enableGlow?`drop-shadow(0 0 ${glowIntensityMemo}px ${activeGlowColor})`:\"none\",pointerEvents:\"none\"}),[enableGlow,glowIntensityMemo,activeGlowColor]);const circleStyle=useMemo(()=>({transition:\"stroke-dashoffset 0.1s linear\"}),[]);return /*#__PURE__*/_jsx(\"div\",{style:containerStyle,children:/*#__PURE__*/_jsxs(\"button\",{onClick:scrollToTop,style:buttonStyle,onMouseEnter:e=>{if(enableHoverEffect){e.currentTarget.style.transform=\"scale(1.05)\";}},onMouseLeave:e=>{if(enableHoverEffect){e.currentTarget.style.transform=\"scale(1)\";}},\"aria-label\":\"Back to top\",children:[/*#__PURE__*/_jsx(\"div\",{style:innerCircleStyle}),/*#__PURE__*/_jsxs(\"svg\",{width:buttonSize*.4,height:buttonSize*.4,viewBox:\"0 0 24 24\",fill:\"none\",stroke:iconColor,strokeWidth:\"2.5\",strokeLinecap:\"round\",strokeLinejoin:\"round\",style:{position:\"relative\",zIndex:1},children:[/*#__PURE__*/_jsx(\"title\",{children:\"Arrow up\"}),/*#__PURE__*/_jsx(\"path\",{d:\"M12 19V5M5 12l7-7 7 7\"})]}),/*#__PURE__*/_jsx(\"svg\",{style:svgStyle,children:/*#__PURE__*/_jsx(\"circle\",{cx:buttonSize/2,cy:buttonSize/2,r:radiusMemo,stroke:activeRingColor,strokeWidth:ringWidth,fill:\"none\",strokeDasharray:circumferenceMemo,strokeDashoffset:strokeDashoffsetMemo,strokeLinecap:\"round\",style:circleStyle})})]})});}addPropertyControls(ScrollProgressButton,{visibilityMode:{type:ControlType.Enum,title:\"Visibility\",description:\"Choose when the button should be visible.\",options:[\"always\",\"scroll\",\"hidden\"],optionTitles:[\"Always Show\",\"Show on Scroll\",\"Hidden\"],defaultValue:\"scroll\",displaySegmentedControl:false},showThreshold:{type:ControlType.Number,title:\"Show Threshold\",description:\"Scroll distance in pixels before the button appears.\",defaultValue:300,min:0,max:1e3,step:50,unit:\"px\",hidden:({visibilityMode})=>visibilityMode!==\"scroll\"},buttonColor:{type:ControlType.Color,title:\"Button Color\",description:\"Background color of the button.\",defaultValue:\"#FFFFFF\"},iconColor:{type:ControlType.Color,title:\"Icon Color\",description:\"Color of the arrow icon.\",defaultValue:\"#5B21B6\"},useGradientRing:{type:ControlType.Boolean,title:\"Ring Style\",description:\"Use a dynamic gradient color for the progress ring.\",defaultValue:true,enabledTitle:\"Gradient\",disabledTitle:\"Custom\"},ringColor:{type:ControlType.Color,title:\"Ring Color\",description:\"Custom color for the progress ring.\",defaultValue:\"#5B21B6\",hidden:({useGradientRing})=>useGradientRing},ringWidth:{type:ControlType.Number,title:\"Ring Width\",description:\"Thickness of the progress ring.\",defaultValue:3,min:1,max:10,step:1,unit:\"px\"},enableGlow:{type:ControlType.Boolean,title:\"Glow Effect\",description:\"Add a glow effect to the progress ring.\",defaultValue:true,enabledTitle:\"On\",disabledTitle:\"Off\"},useGradientGlow:{type:ControlType.Boolean,title:\"Glow Style\",description:\"Use a dynamic gradient color for the glow effect.\",defaultValue:true,enabledTitle:\"Gradient\",disabledTitle:\"Custom\",hidden:({enableGlow})=>!enableGlow},glowColor:{type:ControlType.Color,title:\"Glow Color\",description:\"Custom color for the glow effect.\",defaultValue:\"#5B21B6\",hidden:({enableGlow,useGradientGlow})=>!enableGlow||useGradientGlow},glowIntensity:{type:ControlType.Number,title:\"Glow Intensity\",description:\"Intensity of the glow effect.\",defaultValue:1,min:.1,max:3,step:.1,hidden:({enableGlow})=>!enableGlow},buttonSize:{type:ControlType.Number,title:\"Button Size\",description:\"Diameter of the button in pixels.\",defaultValue:60,min:40,max:100,step:5,unit:\"px\"},showShadow:{type:ControlType.Boolean,title:\"Shadow\",description:\"Show a shadow behind the button.\",defaultValue:true,enabledTitle:\"Show\",disabledTitle:\"Hide\"},enableHoverEffect:{type:ControlType.Boolean,title:\"Hover Effect\",description:\"Scale up the button on hover.\",defaultValue:true,enabledTitle:\"On\",disabledTitle:\"Off\"},enableAnimation:{type:ControlType.Boolean,title:\"Animation\",description:\"Animate the button appearance and disappearance.\",defaultValue:true,enabledTitle:\"On\",disabledTitle:\"Off\"},animationSpeed:{type:ControlType.Number,title:\"Animation Speed\",description:\"Duration of the appearance animation in seconds.\",defaultValue:.2,min:.1,max:1,step:.1,unit:\"s\",hidden:({enableAnimation})=>!enableAnimation},bottomOffset:{type:ControlType.Number,title:\"Bottom Offset\",description:\"Distance from the bottom of the screen.\",defaultValue:40,min:0,max:200,step:5,unit:\"px\"},rightOffset:{type:ControlType.Number,title:\"Right Offset\",description:\"Distance from the right of the screen.\",defaultValue:40,min:0,max:200,step:5,unit:\"px\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"ScrollProgressButton\",\"slots\":[],\"annotations\":{\"framerIntrinsicWidth\":\"60\",\"framerSupportedLayoutWidth\":\"fixed\",\"framerIntrinsicHeight\":\"60\",\"framerSupportedLayoutHeight\":\"fixed\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./ScrollProgressButton.map"],"mappings":"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"}