{"version":3,"file":"SignUp.DPzVmUIQ.mjs","names":["useProject","useIsInitializing","useUser","useRef","useState","useMemo","useCallback","signUp"],"sources":["https:/framerusercontent.com/modules/n4vXQ1ryOvZX7OgCbnKE/G0gc0zeqgjXfybuhXTLl/SignUp.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useCallback,useEffect,useMemo,useRef,useState}from\"react\";import{addPropertyControls,ControlType,RenderTarget,withCSS}from\"framer\";import{useProject,useUser,useIsInitializing,signUp}from\"https://cdn.jsdelivr.net/npm/@framerauth/sdk@2/dist/framerauth.mjs\";import BaseForm,{basePropertyControls,safeParseCustomFields}from\"https://framerusercontent.com/modules/tU0OhNHakDNO2P6BFnP9/fM8K9G5fbhne3lYQfGf4/BaseForm.js\";import GoogleRecaptcha from\"https://framerusercontent.com/modules/F9ebKQnqqvVDmi64jIaf/foI0zSSonNSCAW3AjFin/GoogleRecaptcha.js\";//////////////////////////////////\n/////// FORM CONFIGURATION ///////\n//////////////////////////////////\n// Define inputs\nconst baseInputs=[{displayName:\"Name\",name:\"name\",type:\"string\",required:true,overridable:false,placeholder:\"Name\",render:true,hidden:false},{displayName:\"Email\",name:\"email\",type:\"string\",format:\"email\",required:true,overridable:false,placeholder:\"Email\",render:true,hidden:false},{displayName:\"Password\",name:\"password\",type:\"string\",format:\"password\",required:true,overridable:false,placeholder:\"Password\",render:true,hidden:false}];function isCaptchaRequired(captcha){if(!captcha)return false;if(captcha.provider!==\"google-recaptcha\")return false;if(!captcha.protectedActions)return true;return Boolean(captcha.protectedActions.signUp);}function getCaptchaSiteKey(captcha){return captcha?.siteKey??\"\";}function isFramerEditorTarget(){const target=RenderTarget.current();return target===RenderTarget.canvas||target===RenderTarget.thumbnail;}function hasFramerAuthRuntime(){return typeof window!==\"undefined\"&&Boolean(window.FramerAuth);}const formId=\"sign_up\"// Unique form ID for this form.\n;const defaultButtonLabel=\"Sign Up\"// Default submit button label on this form.\n;const exposePasswordVisibilityToggle=true// Expose password visibility toggle property for password inputs.\n;const exposePasswordValidator=true// Expose password validator property for password inputs.\n;const buttonLabelKey=`${formId}_button_label`;/**\n * SignUp.tsx\n * By Joel Whitaker\n *\n * @framerDisableUnlink\n *\n * @framerIntrinsicWidth 300\n * @framerIntrinsicHeight 40\n *\n * @framerSupportedLayoutWidth fixed\n * @framerSupportedLayoutHeight any\n */const SignUp=withCSS(function SignUp({...baseProps}){const projectState=useProject();const{project,fetchProject}=projectState;const projectLoading=projectState.isLoading??projectState.loading;const sdkState=useIsInitializing();const sdkInitializing=sdkState.initializing;const userState=useUser();const{user}=userState;const hasRequestedProjectRef=useRef(false);const[captchaToken,setCaptchaToken]=useState(null);const[captchaResetKey,setCaptchaResetKey]=useState(0);const runtimeAvailable=hasFramerAuthRuntime();const captchaRequired=isCaptchaRequired(project?.captcha);const captchaSiteKey=getCaptchaSiteKey(project?.captcha);const captchaMisconfigured=captchaRequired&&!captchaSiteKey;const shouldWaitForProject=runtimeAvailable&&!isFramerEditorTarget();const shouldRenderCaptcha=captchaRequired;const isProjectInitializing=shouldWaitForProject&&(Boolean(sdkInitializing)||Boolean(projectLoading));const projectUnavailable=runtimeAvailable&&shouldWaitForProject&&!Boolean(sdkInitializing)&&!Boolean(projectLoading)&&!project;const isDisabled=useMemo(()=>{// If the user is logged in, we disable the sign in form.\nif(!!user){return true;}return false;},[user]);useEffect(()=>{if(shouldWaitForProject||hasRequestedProjectRef.current||project){return;}hasRequestedProjectRef.current=true;fetchProject().catch(()=>{});},[shouldWaitForProject,project,fetchProject]);const customFields=useMemo(()=>{if(project&&project?.customFields.length>0){const safeCustomFields=safeParseCustomFields(project?.customFields);if(safeCustomFields.success){return safeCustomFields.data.map(field=>({...field}));}}return[];},[project]);// We can override inputs with property controls.\nconst[inputs,setInputs]=useState(baseInputs.filter(input=>{return baseProps.inputFields[input.name]?.render||true;}));const buttonProps=useMemo(()=>{// Map button label to button\n// This is to avoid style copy-pasting of the button label.\nreturn{...baseProps.button,label:baseProps.button[buttonLabelKey]};},[baseProps.button,baseProps.button[buttonLabelKey]]);const passwordValidationShadowStyles=baseProps.passwordValidator.shadowObject?`${baseProps.passwordValidator.shadowObject}`:null;const[passwordValidation,setPasswordValidation]=useState({uppercase:false,lowercase:false,digit:false,special:false,length:false});useEffect(()=>{// Map input labels to inputs\nif(baseProps.inputFields){const newInputs=[];baseInputs.forEach((input,_idx)=>{const inputControlName=snakeToCamel(input.name);if(!(inputControlName in baseProps.inputFields)){// If the input is not in the inputFields object, skip it.\nreturn;}const inputField=baseProps.inputFields[inputControlName];const render=inputField.render||true;const hidden=inputField.hidden||false;const displayName=inputField.displayName;const placeholder=displayName;if(render===true){newInputs.push({...input,hidden,displayName,placeholder});}});setInputs(newInputs);}},[undefined,baseProps.inputFields]);const renderValidationMessage=(message,isValid)=>/*#__PURE__*/_jsxs(\"div\",{style:{color:baseProps.passwordValidator.color||baseProps.label.color,...baseProps.passwordValidator.font||baseProps.label.font,opacity:isValid?1:.5,display:\"flex\",alignItems:\"center\"},children:[isValid?/*#__PURE__*/_jsx(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",width:\"16\",height:\"16\",fill:\"currentColor\",viewBox:\"0 0 16 16\",children:/*#__PURE__*/_jsx(\"path\",{d:\"M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z\"})}):/*#__PURE__*/_jsx(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",width:\"16\",height:\"16\",fill:\"currentColor\",viewBox:\"0 0 16 16\",children:/*#__PURE__*/_jsx(\"path\",{d:\"M7.47 6.97L4.22 3.72a.75.75 0 00-1.06 1.06L6.38 8l-3.22 3.22a.75.75 0 101.06 1.06L7.47 9.06l3.25 3.25a.75.75 0 001.06-1.06L8.53 8l3.25-3.25a.75.75 0 00-1.06-1.06L7.47 6.94v.03z\"})}),\" \",/*#__PURE__*/_jsx(\"span\",{style:{flex:1,marginLeft:\"5px\",textAlign:baseProps.passwordValidator.font?.textAlign||baseProps.label.font?.textAlign},children:message})]});const handleOnChange=field=>{if(field.name===\"password\"){// Validate password whenever the input value is changed, eg when user is typing\nsetPasswordValidation(validatePassword(field.value));}};const onCaptchaError=useCallback(()=>{setCaptchaResetKey(key=>key+1);setCaptchaToken(null);baseProps.onError?.();},[baseProps.onError]);const captchaAddon=shouldRenderCaptcha&&captchaSiteKey?/*#__PURE__*/_jsx(GoogleRecaptcha,{siteKey:captchaSiteKey,resetKey:captchaResetKey,onVerify:setCaptchaToken,onExpire:()=>setCaptchaToken(null),onError:()=>setCaptchaToken(null)}):null;const onSubmit=async formData=>{const customInputFieldFormData=formData;const customInputFormData={};customFields.forEach(customField=>{let value=customInputFieldFormData[customField.name];if(customField.type===\"boolean\"){value=value===\"on\"||typeof value===\"boolean\"&&value===true;}else if(customField.type===\"number\"){value=Number(value);}else{value=String(value);}customInputFormData[customField.name]=value;});// Test password validation\nconst validateResult=validatePassword(formData.password);if(Object.values(validateResult).some(v=>v===false)){setPasswordValidation(validateResult);return{ok:false,message:\"Password does not meet requirements.\"};}if(projectUnavailable){return{ok:false,message:\"FramerAuth is unavailable because the project configuration could not be loaded. Please refresh or contact support.\"};}if(captchaMisconfigured){return{ok:false,message:\"CAPTCHA is not configured correctly. Please contact support.\"};}if(captchaRequired&&captchaSiteKey&&!captchaToken){return{ok:false,message:\"Please complete the CAPTCHA.\"};}const signUpPayload={email:formData.email,password:formData.password,name:formData.name.trim(),...customInputFormData};if(captchaRequired&&captchaSiteKey&&captchaToken){signUpPayload.fetchOptions={headers:{\"x-captcha-response\":captchaToken}};}const signUpData=await signUp(signUpPayload);if(signUpData.error){setCaptchaResetKey(key=>key+1);setCaptchaToken(null);return{ok:false,message:signUpData.error.message};}setCaptchaResetKey(key=>key+1);setCaptchaToken(null);return{ok:true,message:\"Account created successfully.\"};};const formMarkup=useMemo(()=>{// The trick below hides/shows inputs based on the current step.\n// This is a hack to avoid issues with different numbers of hooks.\n// This can be made more dynamic. Would require the passwordInput sub-component\n// in AuthBaseForm to be a controlled component with no hook to toggle visibility inside the component\nconst refinedCustomFields=customFields.map(field=>({// For custom fields, make sure the placeholder is always set\n    // - either based on the given placeholder, or the displayName as a fallback.\n    ...field,placeholder:field.placeholder||field.displayName}));const allFields=[...inputs,...refinedCustomFields];const refinedFields=allFields.map(field=>{let refinedField=field;if(field.overridable){const overrides=baseProps.inputFields[field.name];if(overrides){refinedField={...refinedField,...overrides};}}return refinedField;}).filter(input=>input.render!==false);const customFieldDefaultValues={};customFields.forEach(customField=>{if(customField.defaultValue!==null&&customField.defaultValue!==undefined){customFieldDefaultValues[customField.name]=customField.defaultValue;}});const defaultValues=user||customFieldDefaultValues;return /*#__PURE__*/_jsx(BaseForm,{...baseProps,isInitializing:isProjectInitializing,isDisabled:isDisabled,fields:refinedFields,onSubmit:onSubmit,onInputChange:handleOnChange,defaultValues:{...defaultValues},button:buttonProps,submitAddon:captchaAddon,onError:onCaptchaError});},[baseProps,inputs,customFields,isDisabled,user,isProjectInitializing,buttonProps,captchaAddon,captchaRequired,captchaSiteKey,captchaMisconfigured,projectUnavailable,captchaToken,onCaptchaError])// Only re-compute the form when the step changes.\n;return /*#__PURE__*/_jsxs(\"div\",{style:{width:\"100%\",height:\"auto\",display:\"flex\",flexDirection:\"column\",position:\"relative\",gap:baseProps.gap},children:[formMarkup,!isProjectInitializing&&baseProps.displayPasswordValidator&&!isDisabled&&/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:\"column\",borderRadius:baseProps.passwordValidator.borderRadius,background:baseProps.passwordValidator.fill,padding:baseProps.passwordValidator.padding,gap:baseProps.passwordValidator.gap,boxShadow:passwordValidationShadowStyles||\"none\",...baseProps.passwordValidator.borderObject||{}},children:[renderValidationMessage(// \"At least 8 characters\",\nbaseProps.passwordValidator.labels.length,passwordValidation.length),renderValidationMessage(// \"At least one uppercase letter\",\nbaseProps.passwordValidator.labels.uppercase,passwordValidation.uppercase),renderValidationMessage(// \"At least one lowercase letter\",\nbaseProps.passwordValidator.labels.lowercase,passwordValidation.lowercase),renderValidationMessage(// \"At least one digit\",\nbaseProps.passwordValidator.labels.digit,passwordValidation.digit),renderValidationMessage(// \"At least one special character\",\nbaseProps.passwordValidator.labels.special,passwordValidation.special)]})]});},[]);const validatePassword=password=>{const regex={uppercase:/[A-Z]/,lowercase:/[a-z]/,digit:/\\d/,special:/\\W|_/,length:/.{8,}/};return{uppercase:regex.uppercase.test(password),lowercase:regex.lowercase.test(password),digit:regex.digit.test(password),special:regex.special.test(password),length:regex.length.test(password)};};const snakeToCamel=str=>{return str.split(\"_\").map((word,index)=>{if(index===0){return word;}return word.charAt(0).toUpperCase()+word.slice(1);}).join(\"\");};// Here we can override property controls if we don't want to expose them to the user.\n// We generate the inputs property controls dynamically based on the inputs array.\nconst inputsPropertyControls={};baseInputs.forEach((input,_idx)=>{const inputControlName=snakeToCamel(input.name);inputsPropertyControls[inputControlName]={title:`${input.displayName}`,type:ControlType.Object,controls:{render:input.overridable===true?{title:\"Render\",type:ControlType.Boolean,defaultValue:true}:undefined,hidden:input.overridable===true?{title:\"Hidden\",type:ControlType.Boolean,defaultValue:false,hidden:props=>props.render===true}:undefined,displayName:{title:\"Display Name\",type:ControlType.String,defaultValue:input.displayName,hidden:props=>props.render===true&&props.hidden===false}}};});const exportBasePropertyControls={...basePropertyControls,link:{title:\"Redirect\",type:ControlType.Link},inputFields:{title:\"Fields\",type:ControlType.Object,controls:inputsPropertyControls},input:{...basePropertyControls.input,controls:{...basePropertyControls.input.controls,icon:exposePasswordVisibilityToggle?{type:ControlType.Object,title:\"Icon\",controls:{showPasswordVisibilityIcon:{title:\"Activated\",type:ControlType.Boolean,defaultValue:true},color:{title:\"Color\",type:ControlType.Color,defaultValue:\"#000\",hidden:props=>!props.showPasswordVisibilityIcon}}}:undefined}},button:{// Inject default button label\n...basePropertyControls.button,controls:{...basePropertyControls.button.controls,label:undefined,[buttonLabelKey]:{...basePropertyControls.button.controls.label,defaultValue:defaultButtonLabel}}},displayPasswordValidator:{title:\"Password Validator\",type:ControlType.Boolean,defaultValue:true,hidden:!exposePasswordValidator},passwordValidator:{title:\"Password Validator\",type:ControlType.Object,hidden:props=>!exposePasswordValidator||!props.displayPasswordValidator,controls:{font:{type:ControlType.Font,title:\"Font\",controls:\"extended\"},fill:{title:\"Fill\",type:ControlType.Color,defaultValue:\"transparent\"},color:{title:\"Text\",type:ControlType.Color,defaultValue:\"#000\"},padding:{title:\"Padding\",type:ControlType.Padding},gap:{title:\"Gap\",type:ControlType.Number,defaultValue:10,min:0},borderRadius:{title:\"Radius\",type:ControlType.BorderRadius},labels:{type:ControlType.Object,title:\"Labels\",controls:{length:{title:\"Length\",type:ControlType.String,defaultValue:\"At least 8 characters\"},uppercase:{title:\"Uppercase\",type:ControlType.String,defaultValue:\"At least one uppercase letter\"},lowercase:{title:\"Lowercase\",type:ControlType.String,defaultValue:\"At least one lowercase letter\"},digit:{title:\"Digit\",type:ControlType.String,defaultValue:\"At least one digit\"},special:{title:\"Special\",type:ControlType.String,defaultValue:\"At least one special character\"}}},borderObject:{type:ControlType.Border,title:\"Border\",optional:true,defaultValue:{borderWidth:0,borderStyle:\"solid\",borderColor:\"rgba(200,200,200,0.5)\"}},shadowObject:{type:ControlType.BoxShadow,title:\"Shadow\",optional:true}}}};// @ts-ignore - TS doesn't like our basePropertyControls type.\naddPropertyControls(SignUp,exportBasePropertyControls);SignUp.defaultProps={...BaseForm.defaultProps,...SignUp.defaultProps};export default SignUp;\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"SignUp\",\"slots\":[],\"annotations\":{\"framerIntrinsicWidth\":\"300\",\"framerSupportedLayoutWidth\":\"fixed\",\"framerSupportedLayoutHeight\":\"any\",\"framerContractVersion\":\"1\",\"framerDisableUnlink\":\"*\",\"framerIntrinsicHeight\":\"40\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}"],"mappings":"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"}