{"version":3,"file":"ActionButton.CLCYuST2.mjs","names":["useMemo","useState","useCallback","FramerAuthSDK","FramerAuthSDK.storePortal","__esmMin","init_npm_react_18_3_1","pe","window","ce","init_jsx_runtime","ne","p","_e","init_ssg_sandbox_shims","motion","init_framer_motion_DhsWWWsN","addPropertyControls","init_framer_DcxuU94H","RenderTarget","ControlType","framerauth_exports","it","init_framerauth","getUrlWithDomain","baseDomain","path","defaultLabel","actionType","authAction","storeAction","ActionButton","_label","_image","props","buttonBorderObject","button","label","image","defaultSignInWithGoogleIcon","defaultSignInWithGithubIcon","isLoading","setIsLoading","onPageShow","useUser","useSession","fontSize","iconSize","buttonShadowStyles","buttonShadow","buttonBorderStyles","shouldRender","user","session","handleClick","callbackURL","callback","returnURL","returnUrl","cancelURL","cancelUrl","linkURL","link","navigating","handleAuthAction","handleStoreAction","pluginId","priceId","quantity","handleLinkAction","newTab","error","action","signInSocial","data","signOut","stripeReturnURL","stripeCancelURL","res","storeCheckout","message","sendVerificationEmail","baseURL","portalURL","portalRes","url","LoadingSpinner","IconContainer","imageJsx","buttonMargin","style","buttonPadding","dynamicBoxShadow","buttonHoverStyle","buttonHoverTransition","hover","shadows","output","shadow","init_ActionButton"],"sources":["https:/framerusercontent.com/modules/JHjgrlRt9lS5A5ZVDFcg/D0S4MIYQjPkaCUisb5NR/ActionButton.js"],"sourcesContent":["// Production-ready Framer FramerAuthButton Component\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";import{motion}from\"framer-motion\";import{useCallback,useEffect,useMemo,useState}from\"react\";import*as FramerAuthSDK from\"https://cdn.jsdelivr.net/npm/@framerauth/sdk@2/dist/framerauth.mjs\";const{useUser,useSession,signOut,signInSocial,storeCheckout,sendVerificationEmail}=FramerAuthSDK;function getUrlWithDomain(path){const baseDomain=window.location.href;if(!path){return baseDomain;}else if(path?.startsWith(\"/\")){const url=new URL(path,baseDomain);return url.href;}else{try{// If it's already a full URL, return as-is\nconst url=new URL(path);return url.href;}catch{// If it fails, fallback to the base domain\nreturn baseDomain;}}}const defaultSignInWithGoogleIcon=/*#__PURE__*/_jsxs(\"svg\",{version:\"1.1\",x:\"0px\",y:\"0px\",width:\"48px\",height:\"48px\",viewBox:\"0 0 48 48\",\"enable-background\":\"new 0 0 48 48\",children:[/*#__PURE__*/_jsx(\"path\",{fill:\"#FFC107\",d:\"M43.611,20.083H42V20H24v8h11.303c-1.649,4.657-6.08,8-11.303,8c-6.627,0-12-5.373-12-12 c0-6.627,5.373-12,12-12c3.059,0,5.842,1.154,7.961,3.039l5.657-5.657C34.046,6.053,29.268,4,24,4C12.955,4,4,12.955,4,24 c0,11.045,8.955,20,20,20c11.045,0,20-8.955,20-20C44,22.659,43.862,21.35,43.611,20.083z\"}),\" \",/*#__PURE__*/_jsx(\"path\",{fill:\"#FF3D00\",d:\"M6.306,14.691l6.571,4.819C14.655,15.108,18.961,12,24,12c3.059,0,5.842,1.154,7.961,3.039l5.657-5.657 C34.046,6.053,29.268,4,24,4C16.318,4,9.656,8.337,6.306,14.691z\"}),\" \",/*#__PURE__*/_jsx(\"path\",{fill:\"#4CAF50\",d:\"M24,44c5.166,0,9.86-1.977,13.409-5.192l-6.19-5.238C29.211,35.091,26.715,36,24,36 c-5.202,0-9.619-3.317-11.283-7.946l-6.522,5.025C9.505,39.556,16.227,44,24,44z\"}),\" \",/*#__PURE__*/_jsx(\"path\",{fill:\"#1976D2\",d:\"M43.611,20.083H42V20H24v8h11.303c-0.792,2.237-2.231,4.166-4.087,5.571 c0.001-0.001,0.002-0.001,0.003-0.002l6.19,5.238C36.971,39.205,44,34,44,24C44,22.659,43.862,21.35,43.611,20.083z\"}),\" \"]});const defaultSignInWithGithubIcon=/*#__PURE__*/_jsx(\"svg\",{viewBox:\"-1.576 -2.39 100.78 100.78\",children:/*#__PURE__*/_jsx(\"path\",{fill:\"#A1A1A1\",d:\"M 48.854 0 C 21.839 0 0 22 0 49.217 C 0 70.973 13.993 89.389 33.405 95.907 C 35.832 96.397 36.721 94.848 36.721 93.545 C 36.721 92.404 36.641 88.493 36.641 84.418 C 23.051 87.352 20.221 78.551 20.221 78.551 C 18.037 72.847 14.801 71.381 14.801 71.381 C 10.353 68.366 15.125 68.366 15.125 68.366 C 20.059 68.692 22.648 73.418 22.648 73.418 C 27.015 80.914 34.052 78.796 36.883 77.492 C 37.287 74.314 38.582 72.114 39.957 70.892 C 29.118 69.751 17.714 65.514 17.714 46.609 C 17.714 41.231 19.654 36.831 22.728 33.409 C 22.243 32.187 20.544 27.134 23.214 20.371 C 23.214 20.371 27.339 19.067 36.64 25.423 C 40.622 24.346 44.729 23.798 48.854 23.793 C 52.979 23.793 57.184 24.364 61.067 25.423 C 70.369 19.067 74.494 20.371 74.494 20.371 C 77.164 27.134 75.464 32.187 74.979 33.409 C 78.134 36.831 79.994 41.231 79.994 46.609 C 79.994 65.514 68.59 69.669 57.67 70.892 C 59.45 72.44 60.986 75.373 60.986 80.018 C 60.986 86.618 60.906 91.915 60.906 93.544 C 60.906 94.848 61.796 96.397 64.222 95.908 C 83.634 89.388 97.627 70.973 97.627 49.217 C 97.707 22 75.788 0 48.854 0 Z\"})});// Label shown when the Label control is left empty.\nfunction defaultLabel(actionType,authAction,storeAction){switch(actionType){case\"auth\":switch(authAction){case\"googleSignIn\":return\"Continue with Google\";case\"githubSignIn\":return\"Continue with GitHub\";case\"signOut\":return\"Sign out\";}break;case\"store\":switch(storeAction){case\"checkout\":return\"Checkout\";case\"portal\":return\"Manage billing\";}break;case\"link\":return\"Learn more\";}return\"Button\";}/**\n * ActionButton.tsx\n * By Joel Whitaker\n *\n * @framerDisableUnlink\n *\n * @framerSupportedLayoutWidth auto prefer-fixed\n * @framerSupportedLayoutHeight auto prefer-fixed\n */export default function ActionButton(props){const{label:_label,image:_image,actionType,authAction,storeAction,link,pluginId,priceId,quantity,newTab,callback,returnUrl,cancelUrl,button,style}=props;const{borderObject:buttonBorderObject,buttonShadow,buttonPadding,buttonMargin}=button;const label=useMemo(()=>{if(!_label||_label.trim().length===0){return defaultLabel(actionType,authAction,storeAction);}return _label;},[_label,actionType,authAction,storeAction]);const image=useMemo(()=>{let image=_image;if(!image){if(actionType===\"auth\"){if(authAction===\"googleSignIn\"){image=defaultSignInWithGoogleIcon;}else if(authAction===\"githubSignIn\"){image=defaultSignInWithGithubIcon;}}}return image;},[_image,actionType,authAction]);const[isLoading,setIsLoading]=useState(false);// The loader stays up while the page navigates away. If the browser\n// restores this page from its back/forward cache, clear it again.\nuseEffect(()=>{const onPageShow=e=>{if(e.persisted)setIsLoading(false);};window.addEventListener(\"pageshow\",onPageShow);return()=>window.removeEventListener(\"pageshow\",onPageShow);},[]);// Get user authentication state\nconst{user}=useUser();const{session}=useSession();// Calculate icon/spinner size based on font size, with min/max constraints\nconst fontSize=parseInt(button?.buttonFont?.fontSize||\"13px\");const iconSize=Math.min(Math.max(fontSize,14),120);// Button styles (mirror BaseForm composition)\nconst buttonShadowStyles=buttonShadow||null;const buttonBorderStyles=buttonBorderObject?`inset 0 0 0 ${buttonBorderObject.borderWidth}px ${buttonBorderObject.borderColor}`:null;// Determine if button should render\nconst shouldRender=useCallback(()=>{if(RenderTarget.current()===RenderTarget.canvas){return true;}if(actionType===\"store\"&&storeAction===\"portal\"){return!!user&&!!session;}// Always render other non-auth buttons\nif(actionType!==\"auth\"){return true;}// For auth buttons, check user state\nif(authAction===\"googleSignIn\"||authAction===\"githubSignIn\"){// Sign in buttons - only show when logged out\nreturn!session;}if(authAction===\"signOut\"){// Sign out button - only show when logged in\nreturn!!session;}return true;},[actionType,authAction,storeAction,user,session]);const handleClick=useCallback(async e=>{e.preventDefault();const callbackURL=getUrlWithDomain(callback);// Both fall back to the current page when not configured.\nconst returnURL=getUrlWithDomain(returnUrl);const cancelURL=getUrlWithDomain(cancelUrl);const linkURL=getUrlWithDomain(link);if(isLoading)return;setIsLoading(true);// True once the page is navigating away, so the loader stays up\n// until the next page loads.\nlet navigating=false;try{switch(actionType){case\"auth\":navigating=await handleAuthAction(authAction,callbackURL);break;case\"store\":navigating=await handleStoreAction(user,storeAction,pluginId,priceId,quantity,callbackURL,returnURL,cancelURL);break;case\"link\":handleLinkAction(linkURL,newTab);setIsLoading(false);break;default:setIsLoading(false);}}catch(error){console.error(\"Action failed:\",error);if(error instanceof Error){alert(error.message);}}finally{if(!navigating)setIsLoading(false);}},[actionType,authAction,storeAction,link,pluginId,priceId,quantity,newTab,callback,returnUrl,cancelUrl,isLoading,user]);const handleAuthAction=useCallback(async(action,callbackURL)=>{switch(action){case\"googleSignIn\":case\"githubSignIn\":{// Resolves once the SDK has sent the browser to the provider.\nconst{data,error}=await signInSocial({provider:action===\"googleSignIn\"?\"google\":\"github\",callbackURL:callbackURL});if(error){throw new Error(error.message||\"Sign in failed\");}return!!data?.url;}case\"signOut\":await signOut();if(callback){window.location.href=callbackURL;}else{window.location.reload();}return true;default:throw new Error(`Unknown auth action: ${action}`);}},[callback]);const handleStoreAction=async(user,action,pluginId,priceId,quantity,callbackURL,returnURL,cancelURL)=>{// Only Stripe honours these URLs.\nconst stripeReturnURL=pluginId===\"stripe\"?returnURL:undefined;const stripeCancelURL=pluginId===\"stripe\"?cancelURL:undefined;switch(action){case\"checkout\":if(!priceId){throw new Error(\"Price ID is required for checkout\");}const res=await storeCheckout({pluginId:pluginId,priceId:priceId,quantity:quantity||1,successUrl:callbackURL,cancelUrl:stripeCancelURL});if(res.error){if(user&&res.error.code===\"EMAIL_NOT_VERIFIED\"){const message=`${res.error.message}\nPress OK to send a verification email.`;if(!confirm(message))return false;const{error}=await sendVerificationEmail({email:user.email,callbackURL:window.location.href});if(error)throw new Error(error.message);return false;}else{throw new Error(res.error.message||\"Checkout failed\");}}else{window.location.href=res.data.url;return true;}case\"portal\":{if(!(\"storePortal\"in FramerAuthSDK)){const baseURL=window?.FramerAuth?.baseURL;if(!baseURL){throw new Error(\"FramerAuth is not initialized yet\");}const portalURL=new URL(`${baseURL}/plugins/${pluginId}/portal`);if(stripeReturnURL){portalURL.searchParams.set(\"returnURL\",stripeReturnURL);}window.open(portalURL.href,\"_blank\",\"noopener,noreferrer\");return false;}const portalRes=await FramerAuthSDK.storePortal({pluginId,returnURL:stripeReturnURL});if(portalRes.error){if(portalRes.error.code===\"CUSTOMER_NOT_FOUND\"){alert(portalRes.error.message||\"No customer account found.\");return false;}throw new Error(portalRes.error.message||\"Unable to open portal\");}window.location.href=portalRes.data.url;return true;}default:throw new Error(`Unknown store action: ${action}`);}};const handleLinkAction=useCallback((url,newTab)=>{if(!url)return;if(newTab){window.open(url,\"_blank\",\"noopener,noreferrer\");}else{window.location.href=url;}},[]);// Loading spinner component\nconst LoadingSpinner=()=>{return /*#__PURE__*/_jsx(\"div\",{style:{width:\"100%\",height:\"100%\",border:\"2px solid transparent\",borderTop:`2px solid ${button?.color}`,borderRadius:\"50%\",animation:\"spin 1s linear infinite\"}});};// Icon container component that maintains consistent sizing\nconst IconContainer=()=>{// Only render if we have an image or are loading\nif(!image&&!isLoading)return null;const imageJsx=typeof image===\"object\"&&\"src\"in image?/*#__PURE__*/_jsx(\"img\",{src:image.src,srcSet:image.srcSet,alt:image.alt||\"\",style:{width:\"100%\",height:\"100%\",objectFit:\"contain\"}}):image;return /*#__PURE__*/_jsx(\"div\",{style:{width:`${iconSize}px`,height:`${iconSize}px`,flexShrink:0,display:\"flex\",alignItems:\"center\",justifyContent:\"center\"},children:isLoading?/*#__PURE__*/_jsx(LoadingSpinner,{}):image?imageJsx:null});};if(!shouldRender()){return null;}return /*#__PURE__*/_jsxs(\"div\",{style:{margin:buttonMargin},children:[/*#__PURE__*/_jsx(\"style\",{children:`\n                    @keyframes spin {\n                        0% { transform: rotate(0deg); }\n                        100% { transform: rotate(360deg); }\n                    }\n                `}),/*#__PURE__*/_jsxs(motion.button,{type:\"button\",disabled:isLoading,style:{...style,width:\"100%\",height:\"100%\",background:button?.fill,color:button?.color,borderRadius:button?.borderRadius??8,border:\"none\",padding:buttonPadding,boxShadow:dynamicBoxShadow(buttonShadowStyles,buttonBorderStyles),cursor:isLoading?\"not-allowed\":\"pointer\",outline:\"none\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",gap:\"8px\",fontSize:16,...button?.buttonFont,userSelect:\"none\",// Background and color are left to whileHover, so a CSS\n// transition doesn't fight Framer Motion's animation.\ntransition:\"box-shadow 0.15s\",opacity:isLoading?.7:1,position:\"relative\"},\"aria-label\":label,onClick:handleClick,tabIndex:0,// No hover while loading: the button is disabled then.\nwhileHover:isLoading?undefined:buttonHoverStyle(button),transition:buttonHoverTransition,children:[/*#__PURE__*/_jsx(IconContainer,{}),label&&/*#__PURE__*/_jsx(\"span\",{style:{width:\"max-content\",minWidth:0,...button?.buttonFont},children:label})]})]});}const buttonHoverTransition={duration:.2,ease:\"easeOut\"};function buttonHoverStyle(button){const hover=button?.hover;if(!hover||!hover.fill&&!hover.color){return undefined;}return{...hover.fill?{background:hover.fill}:{},...hover.color?{color:hover.color}:{}};}function dynamicBoxShadow(...shadows){const output=[];shadows.forEach(shadow=>shadow&&output.push(shadow));return output.join(\", \");}addPropertyControls(ActionButton,{actionType:{type:ControlType.Enum,options:[\"auth\",\"store\",\"link\"],optionTitles:[\"Auth\",\"Store\",\"Link\"]},authAction:{type:ControlType.Enum,title:\"Action\",options:[\"googleSignIn\",\"githubSignIn\",\"signOut\"],optionTitles:[\"Sign in with Google\",\"Sign in with Github\",\"Sign out\"],hidden(props){return props.actionType!==\"auth\";}},link:{type:ControlType.Link,hidden(props){switch(props.actionType){case\"auth\":return true;case\"store\":return true;case\"link\":return false;default:return true;}}},newTab:{type:ControlType.Boolean,title:\"New Tab\",defaultValue:false,enabledTitle:\"Yes\",disabledTitle:\"No\",hidden(props){return props.actionType!==\"link\";}},storeAction:{type:ControlType.Enum,title:\"Action\",options:[\"checkout\",\"portal\"],optionTitles:[\"Checkout\",\"Portal\"],hidden(props){return props.actionType!==\"store\";}},pluginId:{title:\"Plugin\",type:ControlType.Enum,options:[\"stripe\",\"lemonsqueezy\"],optionTitles:[\"Stripe\",\"Lemon Squeezy\"],defaultValue:\"stripe\",hidden(props){return props.actionType!==\"store\";}},priceId:{title:\"Lookup Key\",type:ControlType.String,hidden(props){switch(props.actionType){case\"auth\":return true;case\"store\":return props.storeAction!==\"checkout\";default:return true;}}},quantity:{type:ControlType.Number,defaultValue:1,hidden(props){switch(props.actionType){case\"auth\":return true;case\"store\":return props.storeAction!==\"checkout\";default:return true;}}},label:{type:ControlType.String,title:\"Label\",// Left empty, the label follows the action, e.g. \"Sign out\".\nplaceholder:\"Default\"},image:{type:ControlType.ResponsiveImage},callback:{type:ControlType.Link,title:\"Redirect\",hidden(props){switch(props.actionType){case\"auth\":return false;case\"store\":return props.storeAction!==\"checkout\";default:return true;}}},returnUrl:{type:ControlType.Link,title:\"Return\",hidden(props){// Only the Stripe portal honours a return URL.\nreturn props.actionType!==\"store\"||props.pluginId!==\"stripe\"||props.storeAction!==\"portal\";}},cancelUrl:{type:ControlType.Link,title:\"Cancel\",hidden(props){// Where Stripe checkout sends the member if they back out.\nreturn props.actionType!==\"store\"||props.pluginId!==\"stripe\"||props.storeAction!==\"checkout\";}},button:{title:\"Button\",type:ControlType.Object,controls:{buttonFont:{type:ControlType.Font,title:\"Font\",controls:\"extended\"},fill:{title:\"Fill\",type:ControlType.Color,defaultValue:\"#333\"},color:{title:\"Text\",type:ControlType.Color,defaultValue:\"#FFF\"},buttonPadding:{title:\"Padding\",type:ControlType.Padding,defaultValue:\"15px\"},buttonMargin:{type:ControlType.Padding,title:\"Margin\",defaultValue:\"0px\"},borderRadius:{type:ControlType.BorderRadius,title:\"Radius\",defaultValue:\"8px\"},borderObject:{type:ControlType.Border,title:\"Border\",optional:true,defaultValue:{borderWidth:1,borderStyle:\"solid\",borderColor:\"rgba(200,200,200,0.5)\"}},buttonShadow:{type:ControlType.BoxShadow,title:\"Shadow\",optional:true},// Optional hover state. Unset (the default) means no hover.\n// Either color can be left empty to keep the normal value.\nhover:{type:ControlType.Object,title:\"Hover\",optional:true,controls:{fill:{title:\"Fill\",type:ControlType.Color,optional:true},color:{title:\"Text\",type:ControlType.Color,optional:true}}}}}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"ActionButton\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"auto prefer-fixed\",\"framerSupportedLayoutWidth\":\"auto prefer-fixed\",\"framerDisableUnlink\":\"*\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./ActionButton.map"],"mappings":"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"}