{"version":3,"file":"FreemiumForm.DInVDIEc.mjs","names":["useState","_Fragment","__esmMin","init_ssg_sandbox_shims","init_npm_react_18_3_1","window","_e","init_jsx_runtime","p","motion","init_framer_motion_DhsWWWsN","getUtms","urlParams","trk","trkstr","pick","fromUrl","urlKey","v","trkKey","utmContent","path","slug","VERTICALES","k","marca","sha256Hex","subtle","data","value","digest","b","HealthForm","isFetching","setFetching","error","setError","errorType","setErrorType","fieldErrors","setFieldErrors","form","setForm","onSubmit","ev","name","email","acceptTerms","fd","n","e","fe","EMAIL_RE","utms","res","emHash","ex","onChange","field","prev","pageStyle","cardStyle","headerStyle","titleStyle","subtitleStyle","formBodyStyle","rowStyle","Input","termsRowStyle","checkboxStyle","policeStyle","linkStyle","buttonStyle","loadingWrapStyle","Loading","errorBoxStyle","l","LOGIN_URL","errorLinkStyle","footerHintStyle","inputContainerStyle","labelStyle","inputStyle","inputStyleError","fieldErrorStyle","init_FreemiumForm","color","props","labelText","errorText"],"sources":["https:/framerusercontent.com/modules/3FQvSplwCAYzYvjQu3mv/9vr8cbn4qvEURAKOxHxD/FreemiumForm.js"],"sourcesContent":["// Welcome to Code in Framer\n// Get Started: https://www.framer.com/developers/\nimport{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{useState}from\"react\";import{motion}from\"framer-motion\";// Spinner local. Antes esto venía de `import Loading from \"./Loading.tsx\"`,\n// pero ese módulo no existe en el proyecto y hacía que el archivo no\n// exportara nada al recompilar (lo que rompía el modal de registro en todas\n// las landings). Se define aquí para no depender de un fichero externo.\nconst Loading=({color=\"#FFFFFF\"})=>/*#__PURE__*/_jsx(motion.span,{style:{width:18,height:18,borderRadius:\"50%\",borderWidth:2,borderStyle:\"solid\",borderColor:\"rgba(255,255,255,0.35)\",borderTopColor:color,display:\"inline-block\",boxSizing:\"border-box\"},animate:{rotate:360},transition:{repeat:Infinity,ease:\"linear\",duration:.8}});const Input=({labelText,errorText,...props})=>/*#__PURE__*/_jsxs(\"div\",{style:inputContainerStyle,children:[/*#__PURE__*/_jsx(\"label\",{style:labelStyle,children:labelText}),/*#__PURE__*/_jsx(\"input\",{style:{...inputStyle,...errorText?inputStyleError:null},...props}),errorText?/*#__PURE__*/_jsx(\"span\",{style:fieldErrorStyle,children:errorText}):null]});// Marcador de vertical por landing.\n// El backend de create-freemium solo reenvía a ActiveCampaign cuatro campos\n// (utm_source, utm_medium, utm_campaign y utm_content) y descarta en silencio\n// cualquier otro, así que la academia viaja pegada al final de utm_content.\n// La automatización de cada vertical en AC condiciona su entrada a este\n// marcador. Para añadir una academia nueva basta con otra línea aquí.\n// OJO: las claves tienen que ser slugs completos de landing por academia.\n// Nunca meter aquí la landing genérica /registro-sistema-ninja: haría match\n// con todas las demás y se aplicaría el marcador equivocado.\nconst VERTICALES={\"registro-sistema-ninja-bomberos\":\"sn-vert-bomberos\",\"registro-sistema-ninja-fcs\":\"sn-vert-fcs\"};// Lee los UTM del navegador, igual que hace tu función sE / el script de AC:\n// 1) la URL (?utm_source=...)  2) el helper global  3) localStorage 'tracking'\nfunction getUtms(){if(typeof window===\"undefined\")return{};const urlParams=new URLSearchParams(window.location.search);let trk=null;try{const trkstr=localStorage.getItem(\"tracking\");if(trkstr)trk=JSON.parse(trkstr);}catch(e){}const pick=(urlKey,trkKey)=>{const fromUrl=urlParams.get(urlKey);if(fromUrl)return fromUrl;if(window.getQueryParamsFromLocalStorage){const v=window.getQueryParamsFromLocalStorage(urlKey);if(v)return v;}if(trk&&trk[trkKey])return trk[trkKey];if(trk&&trk[urlKey])return trk[urlKey];return undefined;};let utmContent=pick(\"utm_content\",\"utmContent\");// Si el registro viene de una landing por academia, marcamos utm_content.\n// Se concatena para no perder el valor que trae la campaña de Meta, y solo\n// si no estaba ya (evita duplicar el marcador). Try/catch propio: si algo\n// falla aquí, el registro sigue funcionando exactamente igual que antes.\ntry{const path=(window.location.pathname||\"\").toLowerCase();const slug=Object.keys(VERTICALES).find(k=>path.includes(k));if(slug){const marca=VERTICALES[slug];if(!utmContent)utmContent=marca;else if(!String(utmContent).includes(marca))utmContent=`${utmContent}|${marca}`;}}catch(e){}return{utm_source:pick(\"utm_source\",\"utmSource\"),utm_medium:pick(\"utm_medium\",\"utmMedium\"),utm_campaign:pick(\"utm_campaign\",\"utmCampaign\"),utm_content:utmContent};}// Hash SHA-256 en hexadecimal: el formato que Meta espera para Advanced\n// Matching. Normalizamos antes (trim + minúsculas) porque Meta hashea así en\n// su lado; si no, el match rate cae. Devuelve null si el navegador no soporta\n// crypto.subtle, y en ese caso simplemente no se envía el parámetro.\nasync function sha256Hex(value){try{const subtle=window?.crypto?.subtle;if(!subtle)return null;const data=new TextEncoder().encode(value);const digest=await subtle.digest(\"SHA-256\",data);return Array.from(new Uint8Array(digest)).map(b=>b.toString(16).padStart(2,\"0\")).join(\"\");}catch(e){return null;}}// Enlace de acceso para quien ya tiene cuenta (respuesta 409). A la raíz, no\n// a una ruta de login concreta: la plataforma ya manda al login a quien no\n// tiene sesión, y así el enlace sobrevive al apagado de la web antigua.\nconst LOGIN_URL=\"https://app.formacion.ninja/\";// Formato mínimo de email: algo@dominio.ext\nconst EMAIL_RE=/^[^\\s@]+@[^\\s@]+\\.[^\\s@]{2,}$/;export default function HealthForm(props){const[isFetching,setFetching]=useState(false);const[error,setError]=useState(\"\");const[errorType,setErrorType]=useState(\"\");const[fieldErrors,setFieldErrors]=useState({});const[form,setForm]=useState({name:\"\",acceptTerms:false,email:\"\"});const onSubmit=async ev=>{ev.preventDefault();if(!isFetching){setFetching(true);// TRACKING: el usuario pulsa el botón de registro\nif(typeof window!==\"undefined\"&&window.posthog){window.posthog.capture(\"formulario_registro_iniciado\",{page:window.location.pathname});}// Valores leídos del propio formulario además del estado: el\n// autorrelleno de algunos navegadores de móvil (p. ej. el de\n// Facebook/Instagram en Android) escribe en los campos sin\n// disparar onChange, y entonces el estado iba vacío (error 400).\nlet name=form.name;let email=form.email;let acceptTerms=form.acceptTerms;try{const fd=new FormData(ev.currentTarget);const n=fd.get(\"name\");const e=fd.get(\"email\");if(typeof n===\"string\"&&n.trim())name=n;if(typeof e===\"string\"&&e.trim())email=e;if(fd.get(\"acceptTerms\")===\"on\")acceptTerms=true;}catch(e){}name=(name||\"\").trim();email=(email||\"\").trim();const fe={};if(!name)fe.name=\"Escribe tu nombre.\";if(!EMAIL_RE.test(email))fe.email=\"Revisa el email: debe ser como nombre@correo.com.\";if(fe.name||fe.email){setFieldErrors(fe);setErrorType(\"invalid\");setError(\"Revisa los campos marcados en rojo.\");if(typeof window!==\"undefined\"&&window.posthog){window.posthog.capture(\"formulario_registro_error\",{page:window.location.pathname,error_status:\"validacion_web\",email_duplicate:false});}setFetching(false);return;}try{const utms=getUtms();const res=await fetch(\"https://api-app.formacion.ninja/auth/freemium/register\",{method:\"POST\",headers:{\"Content-Type\":\"application/json; charset=utf-8\"},body:JSON.stringify({...form,name,email,acceptTerms,...utms})});if(!res.ok){throw{status:res.status,message:`Unexpected error ${await res.status}`};}// ⬇️ ⬇️ ⬇️  CAMBIO: leer la respuesta y guardar el magic link\nconst data=await res.json();if(data?.magicLoginUrl){// Guardamos el enlace de autologin para que /gracias lo use.\n// sessionStorage NO expone el token en la URL. Funciona porque\n// el form y /gracias están ambos bajo formacion.ninja.\nsessionStorage.setItem(\"ninja_magic\",data.magicLoginUrl);}// ⬆️ ⬆️ ⬆️  FIN CAMBIO\n// ⬇️ Advanced Matching (petición de Jesús, 26-ago-2026):\n// guardamos el email HASHEADO (nunca en claro) para que la\n// página de gracias lo envíe junto a la conversión y Meta\n// case mejor el registro. Try/catch propio: si esto falla,\n// el registro y la redirección siguen funcionando igual.\ntry{const emHash=await sha256Hex((email||\"\").trim().toLowerCase());if(emHash)sessionStorage.setItem(\"ninja_em\",emHash);}catch(e){}// ⬆️ FIN Advanced Matching\n// TRACKING: registro completado con éxito (este es el KPI real)\nif(typeof window!==\"undefined\"&&window.posthog){window.posthog.capture(\"formulario_registro_enviado\",{page:window.location.pathname,email:email});}window.location.href=\"/gracias/sistema-ninja\";}catch(ex){// TRACKING: error en el registro\nif(typeof window!==\"undefined\"&&window.posthog){window.posthog.capture(\"formulario_registro_error\",{page:window.location.pathname,error_status:ex?.status??\"unknown\",email_duplicate:ex?.status===409});}if(ex?.status===409){setErrorType(\"duplicate\");setError(\"Ya tienes cuenta con este email.\");}else if(ex?.status===400){setErrorType(\"invalid\");setFieldErrors({name:\"Revisa tu nombre.\",email:\"Revisa el email: debe ser como nombre@correo.com.\"});setError(\"Hay un dato que no es v\\xe1lido. Revisa tu nombre y tu email y vuelve a pulsar \\xabReg\\xedstrate gratis\\xbb.\");}else{setErrorType(\"other\");setError(\"Vaya, parece que tenemos problemas a la hora de registrarte, int\\xe9ntalo m\\xe1s tarde.\");}console.error(ex);}setFetching(false);}};const onChange=(field,ev)=>{setError(\"\");setErrorType(\"\");if(field===\"name\"||field===\"email\")setFieldErrors(prev=>({...prev,[field]:undefined}));setForm({...form,[field]:field===\"acceptTerms\"?ev.target.checked:ev.target.value});};return /*#__PURE__*/_jsx(\"div\",{style:pageStyle,children:/*#__PURE__*/_jsxs(\"form\",{onSubmit:onSubmit,style:cardStyle,children:[/*#__PURE__*/_jsxs(\"div\",{style:headerStyle,children:[/*#__PURE__*/_jsx(\"div\",{style:titleStyle,children:\"Reg\\xedstrate gratis\"}),/*#__PURE__*/_jsx(\"div\",{style:subtitleStyle,children:\"Accede al curso gratuito ahora.\"})]}),/*#__PURE__*/_jsxs(\"div\",{style:formBodyStyle,children:[/*#__PURE__*/_jsx(\"div\",{style:rowStyle,children:/*#__PURE__*/_jsx(Input,{labelText:\"Nombre*\",name:\"name\",autoComplete:\"name\",errorText:fieldErrors.name,required:true,placeholder:\"Tu nombre\",onChange:onChange.bind(onChange,\"name\")})}),/*#__PURE__*/_jsx(\"div\",{style:rowStyle,children:/*#__PURE__*/_jsx(Input,{labelText:\"Email*\",name:\"email\",autoComplete:\"email\",errorText:fieldErrors.email,required:true,placeholder:\"Tu correo\",type:\"email\",onChange:onChange.bind(onChange,\"email\")})}),/*#__PURE__*/_jsxs(\"div\",{style:termsRowStyle,children:[/*#__PURE__*/_jsx(\"input\",{type:\"checkbox\",name:\"acceptTerms\",onChange:onChange.bind(onChange,\"acceptTerms\"),style:checkboxStyle,required:true}),/*#__PURE__*/_jsxs(\"span\",{style:policeStyle,children:[\"He le\\xeddo y acepto la\",\" \",/*#__PURE__*/_jsx(\"a\",{style:linkStyle,href:\"https://formacion.ninja/politicas-de-privacidad\",children:\"Pol\\xedtica de Privacidad\"})]})]}),/*#__PURE__*/_jsx(\"div\",{style:rowStyle,children:/*#__PURE__*/_jsx(motion.button,{whileTap:{scale:.98},whileHover:{scale:1.02},style:buttonStyle,type:\"submit\",disabled:isFetching,children:!isFetching?\"Reg\\xedstrate gratis\":/*#__PURE__*/_jsx(\"span\",{style:loadingWrapStyle,children:/*#__PURE__*/_jsx(Loading,{color:\"#FFFFFF\"})})})}),error?/*#__PURE__*/_jsxs(\"div\",{style:errorBoxStyle,role:\"alert\",children:[error,errorType===\"duplicate\"?/*#__PURE__*/_jsxs(_Fragment,{children:[\" \",/*#__PURE__*/_jsx(\"a\",{href:LOGIN_URL,style:errorLinkStyle,onClick:()=>{try{window?.posthog?.capture(\"formulario_registro_entrar_click\",{page:window.location.pathname});}catch(e){}},children:\"Entra aqu\\xed\"}),\". Si no recuerdas la contrase\\xf1a, pulsa \\xab\\xbfOlvidaste tu contrase\\xf1a?\\xbb al entrar.\"]}):null]}):null,/*#__PURE__*/_jsx(\"div\",{style:footerHintStyle,children:\"Al registrarte, se crear\\xe1 tu cuenta y podr\\xe1s iniciar sesi\\xf3n en la plataforma.\"})]})]})});}/* ---------- Styles (Minimal / shadcn-ish) ---------- */const pageStyle={width:\"100%\",height:\"100%\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",padding:24,background:\"transparent\"};const cardStyle={width:\"100%\",maxWidth:560,borderRadius:16,border:\"1px solid #E2E8F0\",background:\"#FFFFFF\",boxShadow:\"0 1px 2px rgba(15, 23, 42, 0.06), 0 12px 32px rgba(15, 23, 42, 0.08)\",padding:20};const headerStyle={display:\"flex\",flexDirection:\"column\",gap:6,paddingBottom:14,borderBottom:\"1px solid #F1F5F9\",marginBottom:16};const titleStyle={fontSize:20,fontWeight:800,letterSpacing:-.3,color:\"#0F172A\"};const subtitleStyle={fontSize:14,color:\"#475569\",lineHeight:1.4};const formBodyStyle={display:\"flex\",flexDirection:\"column\",gap:14};const rowStyle={gap:12,display:\"flex\",flexDirection:\"row\",width:\"100%\"};const termsRowStyle={display:\"flex\",flexDirection:\"row\",alignItems:\"center\",gap:10,padding:\"8px 10px\",borderRadius:12,border:\"1px solid #F1F5F9\",background:\"#FFFFFF\"};const inputContainerStyle={position:\"relative\",display:\"flex\",flexDirection:\"column\",width:\"100%\",gap:6};const labelStyle={fontSize:13,fontWeight:600,color:\"#334155\"};const inputStyle={width:\"100%\",height:48,borderRadius:12,border:\"1px solid #CBD5E1\",background:\"#FFFFFF\",padding:\"0 14px\",fontSize:15,color:\"#0F172A\",boxShadow:\"0 1px 0 rgba(15, 23, 42, 0.02)\"};const inputStyleError={borderColor:\"rgba(220, 38, 38, 0.65)\",boxShadow:\"0 0 0 4px rgba(220, 38, 38, 0.10)\"};const checkboxStyle={width:18,height:18,accentColor:\"#E30613\",cursor:\"pointer\"};const policeStyle={fontSize:13,color:\"#475569\",lineHeight:1.4};const linkStyle={color:\"#E30613\",fontWeight:600,textDecoration:\"none\"};const buttonStyle={cursor:\"pointer\",display:\"flex\",width:\"100%\",height:52,alignItems:\"center\",justifyContent:\"center\",fontSize:15,fontWeight:800,letterSpacing:.2,color:\"#FFFFFF\",borderRadius:12,border:\"1px solid rgba(0,0,0,0.02)\",background:\"#E30613\",boxShadow:\"0 12px 28px rgba(227, 6, 19, 0.18)\"};const loadingWrapStyle={display:\"flex\",alignItems:\"center\",justifyContent:\"center\"};const errorBoxStyle={width:\"100%\",borderRadius:12,border:\"1px solid rgba(220, 38, 38, 0.25)\",background:\"rgba(220, 38, 38, 0.06)\",color:\"#991B1B\",padding:\"10px 12px\",fontSize:13,lineHeight:1.4};const errorLinkStyle={color:\"#E30613\",fontWeight:700,textDecoration:\"underline\"};const fieldErrorStyle={fontSize:12,color:\"#DC2626\"};const footerHintStyle={fontSize:12,color:\"#64748B\",textAlign:\"center\",paddingTop:6};\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"HealthForm\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./FreemiumForm.map"],"mappings":"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"}