{"version":3,"file":"SignOutButtonControl.DvAMk6c7.mjs","names":["useState","useCallback","_Fragment"],"sources":["https:/framerusercontent.com/modules/ukFf3YCCE7UnmlItvx24/4eGbv2euNzHLulaLiciv/SignOutButtonControl.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";import{motion}from\"framer-motion\";import{useCallback,useEffect,useMemo,useState}from\"react\";// ─── Default Constants ───────────────────────────────────────────────\nconst DEFAULT_BUTTON_STYLE={font:{fontSize:14,fontWeight:\"600\",lineHeight:1.2},color:\"#000000\",background:\"#9EE86F\",hoverBackground:\"#8BD85E\",radius:\"10px\",padding:\"12px\",border:{borderWidth:0,borderStyle:\"solid\",borderColor:\"transparent\"},shadow:\"\"};/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight auto\n * @framerIntrinsicWidth 140\n * @framerIntrinsicHeight 44\n * @framerDisableUnlink\n */export default function SignOutButtonControl(props){const{redirectPath,buttonLabel,hideWhenLoggedOut,buttonStyle,_meta,style}=props;const buttonStyleConfig={...DEFAULT_BUTTON_STYLE,...buttonStyle||{},font:{...DEFAULT_BUTTON_STYLE.font,...buttonStyle&&buttonStyle.font||{}},border:{...DEFAULT_BUTTON_STYLE.border,...buttonStyle&&buttonStyle.border||{}}};const[isAuthenticated,setIsAuthenticated]=useState(false);const[isHovered,setIsHovered]=useState(false);const[status,setStatus]=useState(\"idle\");const isCanvas=RenderTarget.current()===RenderTarget.canvas;const parsedMeta=useMemo(()=>{if(!_meta)return null;try{return JSON.parse(_meta);}catch{return null;}},[_meta]);void parsedMeta;// ─── Session Check ───────────────────────────────────────────────\nuseEffect(()=>{if(isCanvas){setIsAuthenticated(true);return;}try{const hostname=window.location.hostname;const sessionKey=`ap:${hostname}:session`;const session=localStorage.getItem(sessionKey);setIsAuthenticated(Boolean(session));}catch{setIsAuthenticated(false);}},[isCanvas]);// ─── Sign Out ────────────────────────────────────────────────────\nconst handleSignOut=useCallback(async()=>{if(isCanvas)return;setStatus(\"loading\");try{const win=window;if(win.AuthPlugin&&win.AuthPlugin.auth&&typeof win.AuthPlugin.auth.dismiss===\"function\"){await win.AuthPlugin.auth.dismiss(redirectPath||\"/\");}else{// Fallback: clear session and redirect\nconst hostname=window.location.hostname;const sessionKey=`ap:${hostname}:session`;localStorage.removeItem(sessionKey);if(redirectPath){window.location.href=redirectPath;}}}catch{setStatus(\"idle\");}},[isCanvas,redirectPath]);// ─── Styles ──────────────────────────────────────────────────────\nconst buttonElementStyle={...buttonStyleConfig.font,color:buttonStyleConfig.color,backgroundColor:isHovered?buttonStyleConfig.hoverBackground:buttonStyleConfig.background,borderRadius:buttonStyleConfig.radius,padding:buttonStyleConfig.padding,...buttonStyleConfig.border,borderWidth:buttonStyleConfig.border?.borderWidth||0,borderStyle:buttonStyleConfig.border?.borderStyle||\"solid\",borderColor:buttonStyleConfig.border?.borderColor||\"transparent\",boxShadow:buttonStyleConfig.shadow||\"none\",cursor:status===\"loading\"?\"wait\":\"pointer\",textAlign:\"center\",transition:\"background-color 0.2s ease\",opacity:status===\"loading\"?.7:1,...style};// ─── Canvas Preview ──────────────────────────────────────────────\nif(isCanvas){return /*#__PURE__*/_jsx(\"div\",{style:buttonElementStyle,children:buttonLabel});}// ─── Visibility ──────────────────────────────────────────────────\nif(hideWhenLoggedOut&&!isAuthenticated){return /*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"style\",{children:`div:has(> .ap-hide-signout) { display: none; }`}),/*#__PURE__*/_jsx(\"div\",{className:\"ap-hide-signout\"})]});}// ─── Render ──────────────────────────────────────────────────────\nreturn /*#__PURE__*/_jsx(motion.button,{type:\"button\",onClick:handleSignOut,disabled:status===\"loading\",onMouseEnter:()=>setIsHovered(true),onMouseLeave:()=>setIsHovered(false),whileTap:{scale:.97},style:buttonElementStyle,children:status===\"loading\"?\"Signing out...\":buttonLabel});}SignOutButtonControl.displayName=\"Sign Out Button\";SignOutButtonControl.defaultProps={redirectPath:\"/\",buttonLabel:\"Sign Out\",hideWhenLoggedOut:true,buttonStyle:DEFAULT_BUTTON_STYLE,_meta:\"\",style:{}};addPropertyControls(SignOutButtonControl,{redirectPath:{type:ControlType.String,title:\"Redirect Path\",defaultValue:\"/\",description:\"Path to redirect after sign out.\"},buttonLabel:{type:ControlType.String,title:\"Button Label\",defaultValue:\"Sign Out\"},hideWhenLoggedOut:{type:ControlType.Boolean,title:\"Hide Logged Out\",defaultValue:true,enabledTitle:\"Yes\",disabledTitle:\"No\",description:\"Hide the button when user is not authenticated.\"},buttonStyle:{type:ControlType.Object,title:\"Button Style\",description:\"by [Auth Plugin](https://authplugin.com/?ref=field_setting)\",controls:{font:{type:ControlType.Font,title:\"Font\",controls:\"basic\",displayFontSize:true,defaultFontType:\"sans-serif\",defaultValue:{fontSize:14,fontWeight:\"600\",lineHeight:1.2}},color:{type:ControlType.Color,title:\"Text Color\",defaultValue:\"#000000\"},background:{type:ControlType.Color,title:\"Background\",defaultValue:\"#9EE86F\"},hoverBackground:{type:ControlType.Color,title:\"Hover Background\",defaultValue:\"#8BD85E\"},radius:{type:ControlType.BorderRadius,title:\"Radius\",defaultValue:\"10px\"},padding:{type:ControlType.Padding,title:\"Padding\",defaultValue:\"12px\"},border:{type:ControlType.Border,title:\"Border\",defaultValue:{borderWidth:0,borderStyle:\"solid\",borderColor:\"transparent\"}},shadow:{type:ControlType.BoxShadow,title:\"Shadow\",defaultValue:\"\"}}},_meta:{type:ControlType.String,defaultValue:\"\",hidden(){return true;}}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"SignOutButtonControl\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutWidth\":\"any\",\"framerContractVersion\":\"1\",\"framerIntrinsicWidth\":\"140\",\"framerSupportedLayoutHeight\":\"auto\",\"framerIntrinsicHeight\":\"44\",\"framerDisableUnlink\":\"\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./SignOutButtonControl.map"],"mappings":"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"}