{"version":3,"file":"IdentityLabelControl.Conb9SwB.mjs","names":["useState","useRef","useCallback","_Fragment","useState","useRef","useMemo","_Fragment"],"sources":["https:/framerusercontent.com/modules/6NpVzJQs9faRViXrkV6j/3NUWjmKYSXCSbFFo720k/AvatarControl.js","https:/framerusercontent.com/modules/otirSrUzBggKOzzllbTv/YE69H10rG5nrzRwH6lur/IdentityLabelControl.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,useRef,useState}from\"react\";// ─── Default Constants ───────────────────────────────────────────────\nconst DEFAULT_AVATAR_STYLE={size:80,borderRadius:\"50%\",border:{borderWidth:2,borderStyle:\"solid\",borderColor:\"rgba(0,0,0,0.06)\"},shadow:\"\"};// ─── Session Helpers ─────────────────────────────────────────────────\nfunction getAvatarUrl(){try{const hostname=window.location.hostname;const sessionKey=`ap:${hostname}:session`;const raw=localStorage.getItem(sessionKey);if(!raw)return null;const session=JSON.parse(raw);const identity=session.identity||session.user||session;return identity.ap_avatar_url||identity.avatar||identity.avatarUrl||identity.avatar_url||identity.picture||identity.image||null;}catch{return null;}}function isAuthenticated(){try{const hostname=window.location.hostname;const sessionKey=`ap:${hostname}:session`;return Boolean(localStorage.getItem(sessionKey));}catch{return false;}}function getUserInitials(){try{const hostname=window.location.hostname;const sessionKey=`ap:${hostname}:session`;const raw=localStorage.getItem(sessionKey);if(!raw)return\"\";const session=JSON.parse(raw);const identity=session.identity||session.user||session;const name=identity.ap_name||identity.fullName||identity.full_name||identity.name||identity.firstName||identity.ap_email||identity.email||\"\";if(!name)return\"\";const parts=name.trim().split(/\\s+/);if(parts.length>=2)return(parts[0][0]+parts[parts.length-1][0]).toUpperCase();return name[0].toUpperCase();}catch{return\"\";}}// ─── Default placeholder SVG ─────────────────────────────────────────\nconst PLACEHOLDER_SVG=`data:image/svg+xml,${encodeURIComponent('<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"80\" height=\"80\" viewBox=\"0 0 80 80\" fill=\"none\"><rect width=\"80\" height=\"80\" fill=\"#E5E7EB\"/><path d=\"M40 44C46.627 44 52 38.627 52 32C52 25.373 46.627 20 40 20C33.373 20 28 25.373 28 32C28 38.627 33.373 44 40 44Z\" fill=\"#9CA3AF\"/><path d=\"M20 60C20 52.268 26.268 46 34 46H46C53.732 46 60 52.268 60 60V64H20V60Z\" fill=\"#9CA3AF\"/></svg>')}`;/**\n * @framerSupportedLayoutWidth auto\n * @framerSupportedLayoutHeight auto\n * @framerIntrinsicWidth 80\n * @framerIntrinsicHeight 80\n * @framerDisableUnlink\n */export default function AvatarControl(props){const{viewOnly,hideWhenLoggedOut,placeholderColor,avatarStyle,_meta,style}=props;const avatarStyleConfig={...DEFAULT_AVATAR_STYLE,...avatarStyle||{},border:{...DEFAULT_AVATAR_STYLE.border,...avatarStyle&&avatarStyle.border||{}}};const[avatarSrc,setAvatarSrc]=useState(null);const[authed,setAuthed]=useState(false);const[initials,setInitials]=useState(\"\");const[uploading,setUploading]=useState(false);const[uploadError,setUploadError]=useState(\"\");const fileInputRef=useRef(null);const hideId=useRef(`ap-h-${Math.random().toString(36).slice(2,8)}`).current;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)return;setAuthed(isAuthenticated());setAvatarSrc(getAvatarUrl());setInitials(getUserInitials());const handleStorage=e=>{const hostname=window.location.hostname;if(e.key===`ap:${hostname}:session`){setAuthed(isAuthenticated());setAvatarSrc(getAvatarUrl());setInitials(getUserInitials());}};window.addEventListener(\"storage\",handleStorage);return()=>window.removeEventListener(\"storage\",handleStorage);},[isCanvas]);// ─── Upload Handler ──────────────────────────────────────────────\nconst handleFileSelect=useCallback(async e=>{const file=e.target.files?.[0];if(!file)return;// Optimistic: show blob URL immediately\nconst blobUrl=URL.createObjectURL(file);setAvatarSrc(blobUrl);setUploading(true);setUploadError(\"\");try{const win=window;if(win.AuthPlugin&&win.AuthPlugin.auth&&typeof win.AuthPlugin.auth.uploadAvatar===\"function\"){await win.AuthPlugin.auth.uploadAvatar(file);// Refresh avatar from session after upload completes\nconst newUrl=getAvatarUrl();if(newUrl){URL.revokeObjectURL(blobUrl);setAvatarSrc(newUrl);}}else{throw new Error(\"Authentication is not configured for this site. Please contact the site owner.\");}}catch(err){setUploadError(err?.message||\"Upload failed\");// Revert to previous avatar\nURL.revokeObjectURL(blobUrl);setAvatarSrc(getAvatarUrl());}finally{setUploading(false);// Reset input so same file can be re-selected\nif(fileInputRef.current)fileInputRef.current.value=\"\";}},[]);const handleClick=useCallback(()=>{if(viewOnly||uploading||!authed)return;fileInputRef.current?.click();},[viewOnly,uploading,authed]);// ─── Styles ──────────────────────────────────────────────────────\nconst size=avatarStyleConfig.size;const canUpload=authed&&!viewOnly;const containerStyle={position:\"relative\",width:size,height:size,borderRadius:avatarStyleConfig.borderRadius,...avatarStyleConfig.border,borderWidth:avatarStyleConfig.border?.borderWidth||2,borderStyle:avatarStyleConfig.border?.borderStyle||\"solid\",borderColor:avatarStyleConfig.border?.borderColor||\"rgba(0,0,0,0.06)\",boxShadow:avatarStyleConfig.shadow||\"none\",overflow:\"hidden\",cursor:canUpload?\"pointer\":\"default\",flexShrink:0,...style};const imageStyle={width:\"100%\",height:\"100%\",objectFit:\"cover\",display:\"block\"};const placeholderStyle={width:\"100%\",height:\"100%\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",backgroundColor:placeholderColor,color:\"#ffffff\",fontSize:Math.round(size*.35),fontWeight:\"600\",userSelect:\"none\"};const spinnerOverlayStyle={position:\"absolute\",top:0,left:0,right:0,bottom:0,display:\"flex\",alignItems:\"center\",justifyContent:\"center\",backgroundColor:\"rgba(0,0,0,0.4)\",borderRadius:avatarStyleConfig.borderRadius};const hoverOverlayStyle={position:\"absolute\",top:0,left:0,right:0,bottom:0,display:\"flex\",alignItems:\"center\",justifyContent:\"center\",backgroundColor:\"rgba(0,0,0,0.3)\",borderRadius:avatarStyleConfig.borderRadius,opacity:0,transition:\"opacity 0.2s ease\"};// ─── Canvas Preview ──────────────────────────────────────────────\nif(isCanvas){return /*#__PURE__*/_jsx(\"div\",{style:containerStyle,children:/*#__PURE__*/_jsx(\"img\",{src:PLACEHOLDER_SVG,alt:\"Avatar\",style:imageStyle})});}// ─── Visibility ──────────────────────────────────────────────────\nif(hideWhenLoggedOut&&!authed){return /*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"style\",{children:`div:has(> .${hideId}) { display: none; }`}),/*#__PURE__*/_jsx(\"div\",{className:hideId})]});}// ─── Render ──────────────────────────────────────────────────────\nreturn /*#__PURE__*/_jsxs(motion.div,{initial:{opacity:0},animate:{opacity:1},transition:{duration:.2,ease:\"easeOut\"},style:containerStyle,onClick:handleClick,onMouseEnter:e=>{if(!canUpload)return;const overlay=e.currentTarget.querySelector(\"[data-hover-overlay]\");if(overlay)overlay.style.opacity=\"1\";},onMouseLeave:e=>{if(!canUpload)return;const overlay=e.currentTarget.querySelector(\"[data-hover-overlay]\");if(overlay)overlay.style.opacity=\"0\";},children:[avatarSrc?/*#__PURE__*/_jsx(\"img\",{src:avatarSrc,alt:\"User avatar\",style:imageStyle}):/*#__PURE__*/_jsx(\"div\",{style:placeholderStyle,children:initials||/*#__PURE__*/_jsxs(\"svg\",{width:Math.round(size*.4),height:Math.round(size*.4),viewBox:\"0 0 24 24\",fill:\"none\",stroke:\"#ffffff\",strokeWidth:\"2\",strokeLinecap:\"round\",strokeLinejoin:\"round\",children:[/*#__PURE__*/_jsx(\"path\",{d:\"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2\"}),/*#__PURE__*/_jsx(\"circle\",{cx:\"12\",cy:\"7\",r:\"4\"})]})}),canUpload&&!uploading&&/*#__PURE__*/_jsx(\"div\",{\"data-hover-overlay\":\"\",style:hoverOverlayStyle,children:/*#__PURE__*/_jsxs(\"svg\",{width:\"20\",height:\"20\",viewBox:\"0 0 24 24\",fill:\"none\",stroke:\"#ffffff\",strokeWidth:\"2\",strokeLinecap:\"round\",strokeLinejoin:\"round\",children:[/*#__PURE__*/_jsx(\"path\",{d:\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\"}),/*#__PURE__*/_jsx(\"polyline\",{points:\"17 8 12 3 7 8\"}),/*#__PURE__*/_jsx(\"line\",{x1:\"12\",y1:\"3\",x2:\"12\",y2:\"15\"})]})}),uploading&&/*#__PURE__*/_jsx(\"div\",{style:spinnerOverlayStyle,children:/*#__PURE__*/_jsx(motion.div,{animate:{rotate:360},transition:{duration:1,repeat:Infinity,ease:\"linear\"},style:{width:24,height:24},children:/*#__PURE__*/_jsx(\"svg\",{width:\"24\",height:\"24\",viewBox:\"0 0 24 24\",fill:\"none\",stroke:\"#ffffff\",strokeWidth:\"2\",strokeLinecap:\"round\",strokeLinejoin:\"round\",children:/*#__PURE__*/_jsx(\"path\",{d:\"M21 12a9 9 0 1 1-6.219-8.56\"})})})}),canUpload&&/*#__PURE__*/_jsx(\"input\",{ref:fileInputRef,type:\"file\",accept:\"image/*\",onChange:handleFileSelect,style:{display:\"none\"}}),uploadError&&/*#__PURE__*/_jsx(motion.div,{initial:{opacity:0,y:4},animate:{opacity:1,y:0},exit:{opacity:0},transition:{duration:.2},style:{position:\"absolute\",bottom:-28,left:\"50%\",transform:\"translateX(-50%)\",whiteSpace:\"nowrap\",fontSize:11,color:\"#dc2626\",backgroundColor:\"rgba(220,38,38,0.08)\",padding:\"4px 8px\",borderRadius:\"4px\"},children:uploadError})]});}AvatarControl.displayName=\"Avatar\";AvatarControl.defaultProps={viewOnly:false,hideWhenLoggedOut:true,placeholderColor:\"#9CA3AF\",avatarStyle:DEFAULT_AVATAR_STYLE,_meta:\"\",style:{}};addPropertyControls(AvatarControl,{viewOnly:{type:ControlType.Boolean,title:\"View Only\",defaultValue:false,enabledTitle:\"Yes\",disabledTitle:\"No\",description:\"Disable avatar upload. Shows image only.\"},hideWhenLoggedOut:{type:ControlType.Boolean,title:\"Hide Logged Out\",defaultValue:true,enabledTitle:\"Yes\",disabledTitle:\"No\",description:\"Hide the avatar when user is not authenticated.\"},placeholderColor:{type:ControlType.Color,title:\"Placeholder BG\",defaultValue:\"#9CA3AF\",description:\"Background color for placeholder when no avatar image is set.\"},avatarStyle:{type:ControlType.Object,title:\"Avatar Style\",description:\"by [Auth Plugin](https://authplugin.com/?ref=field_setting)\",controls:{size:{type:ControlType.Number,title:\"Size\",defaultValue:80,min:24,max:200,step:4,displayStepper:true},borderRadius:{type:ControlType.BorderRadius,title:\"Radius\",defaultValue:\"50%\"},border:{type:ControlType.Border,title:\"Border\",defaultValue:{borderWidth:2,borderStyle:\"solid\",borderColor:\"rgba(0,0,0,0.06)\"}},shadow:{type:ControlType.BoxShadow,title:\"Shadow\",defaultValue:\"none\"}}},_meta:{type:ControlType.String,defaultValue:\"\",hidden(){return true;}}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"AvatarControl\",\"slots\":[],\"annotations\":{\"framerIntrinsicWidth\":\"80\",\"framerIntrinsicHeight\":\"80\",\"framerSupportedLayoutWidth\":\"auto\",\"framerDisableUnlink\":\"\",\"framerSupportedLayoutHeight\":\"auto\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./AvatarControl.map","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{useEffect,useMemo,useRef,useState}from\"react\";// ─── Default Constants ───────────────────────────────────────────────\nconst DEFAULT_TEXT_STYLE={font:{fontSize:16,fontWeight:\"500\",lineHeight:1.4},color:\"#333333\"};function getIdentity(){try{const hostname=window.location.hostname;const sessionKey=`ap:${hostname}:session`;const raw=localStorage.getItem(sessionKey);if(!raw)return null;const session=JSON.parse(raw);const identity=session.identity||session.user||session;const email=identity.ap_email||identity.email||\"\";const fullName=identity.ap_name||identity.name||identity.fullName||identity.full_name||\"\";const firstName=identity.firstName||identity.first_name||fullName.split(\" \")[0]||\"\";const lastName=identity.lastName||identity.last_name||fullName.split(\" \").slice(1).join(\" \")||\"\";return{firstName,lastName,fullName,email};}catch{return null;}}/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight auto\n * @framerIntrinsicWidth 200\n * @framerIntrinsicHeight 28\n * @framerDisableUnlink\n */export default function IdentityLabelControl(props){const{field,prefix,suffix,fallbackText,hideWhenLoggedOut,textStyle,_meta,style}=props;const textStyleConfig={...DEFAULT_TEXT_STYLE,...textStyle||{},font:{...DEFAULT_TEXT_STYLE.font,...textStyle&&textStyle.font||{}}};const[identity,setIdentity]=useState(null);const hideId=useRef(`ap-h-${Math.random().toString(36).slice(2,8)}`).current;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)return;setIdentity(getIdentity());const handleStorage=e=>{const hostname=window.location.hostname;if(e.key===`ap:${hostname}:session`){setIdentity(getIdentity());}};window.addEventListener(\"storage\",handleStorage);return()=>window.removeEventListener(\"storage\",handleStorage);},[isCanvas]);// ─── Resolve Value ───────────────────────────────────────────────\nconst resolvedValue=useMemo(()=>{if(isCanvas){const canvasPreviews={firstName:\"John\",lastName:\"Doe\",fullName:\"John Doe\",email:\"john@example.com\"};return canvasPreviews[field]||\"User\";}if(!identity)return fallbackText||\"\";return identity[field]||fallbackText||\"\";},[isCanvas,identity,field,fallbackText]);const displayText=`${prefix}${resolvedValue}${suffix}`;// ─── Styles ──────────────────────────────────────────────────────\nconst normalizedFontWeight=(()=>{const current=textStyleConfig.font?.fontWeight;if(current===undefined||current===null||current===\"\"||current===\"normal\"||current===\"regular\"||current===400||current===\"400\")return 500;return current;})();const textElementStyle={...textStyleConfig.font,fontWeight:normalizedFontWeight,color:textStyleConfig.color,display:\"block\",width:\"100%\",...style};// ─── Canvas Preview ──────────────────────────────────────────────\nif(isCanvas){return /*#__PURE__*/_jsx(\"div\",{style:textElementStyle,children:displayText});}// ─── Visibility ──────────────────────────────────────────────────\nif(hideWhenLoggedOut&&!identity){return /*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"style\",{children:`div:has(> .${hideId}) { display: none; }`}),/*#__PURE__*/_jsx(\"div\",{className:hideId})]});}// ─── Render ──────────────────────────────────────────────────────\nreturn /*#__PURE__*/_jsx(motion.div,{initial:{opacity:0},animate:{opacity:1},transition:{duration:.2,ease:\"easeOut\"},style:textElementStyle,children:displayText});}IdentityLabelControl.displayName=\"Identity Label\";IdentityLabelControl.defaultProps={field:\"fullName\",prefix:\"\",suffix:\"\",fallbackText:\"\",hideWhenLoggedOut:true,textStyle:DEFAULT_TEXT_STYLE,_meta:\"\",style:{}};addPropertyControls(IdentityLabelControl,{field:{type:ControlType.Enum,title:\"Field\",defaultValue:\"fullName\",options:[\"firstName\",\"lastName\",\"fullName\",\"email\"],optionTitles:[\"First Name\",\"Last Name\",\"Full Name\",\"Email\"],description:\"Which identity field to display.\"},prefix:{type:ControlType.String,title:\"Prefix\",defaultValue:\"\",description:\"Text to show before the identity value. E.g., 'Hello, '\"},suffix:{type:ControlType.String,title:\"Suffix\",defaultValue:\"\",description:\"Text to show after the identity value. E.g., '!'\"},fallbackText:{type:ControlType.String,title:\"Fallback\",defaultValue:\"\",description:\"Text to show when value is empty.\"},hideWhenLoggedOut:{type:ControlType.Boolean,title:\"Hide Logged Out\",defaultValue:true,enabledTitle:\"Yes\",disabledTitle:\"No\",description:\"Hide the label when user is not authenticated.\"},textStyle:{type:ControlType.Object,title:\"Text 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:16,fontWeight:\"500\",lineHeight:1.4}},color:{type:ControlType.Color,title:\"Color\",defaultValue:\"#333333\"}}},_meta:{type:ControlType.String,defaultValue:\"\",hidden(){return true;}}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"IdentityLabelControl\",\"slots\":[],\"annotations\":{\"framerIntrinsicHeight\":\"28\",\"framerIntrinsicWidth\":\"200\",\"framerContractVersion\":\"1\",\"framerDisableUnlink\":\"\",\"framerSupportedLayoutWidth\":\"any\",\"framerSupportedLayoutHeight\":\"auto\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./IdentityLabelControl.map"],"mappings":"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"}