{"version":3,"file":"CalPopupButton.CrFnp7LT.mjs","names":["useState"],"sources":["https:/framerusercontent.com/modules/7sgoZeGbwMlsxGyx6PJ0/bkFf2wfWXH7QK0wKNIx5/CalPopupButton.js"],"sourcesContent":["// Botón que abre cal.eu/cal.com en un modal popup al hacer clic\n// Usa cal.com embed.js popup mode — no muestra perfil, solo el calendario del evento\n// Doc: https://cal.com/docs/embed/embed\n//\n// Tracking de origen:\n// - UTMs (utm_source, utm_medium, utm_campaign...) + gclid/fbclid/msclkid\n//   se guardan en sessionStorage al primer acceso para no perderlos si el\n//   usuario navega entre páginas antes de reservar.\n// - document.referrer se guarda en sessionStorage para capturar tráfico\n//   orgánico (Google, Instagram, Facebook...) sin necesidad de UTMs.\n// - Si el usuario aceptó la analítica (existe la cookie _ga de GA4), se captura\n//   también el client_id de GA4. Esto permite que la conversión medida en el\n//   SERVIDOR se atribuya a la sesión original del visitante en GA4. Si NO hay\n//   consentimiento, la cookie _ga no existe y NO se envía ningún client_id\n//   (comportamiento respetuoso con el Consent Mode v2 por diseño).\n// - Esa metadata se inyecta en el CONFIG del embed (data-cal-config) con el\n//   formato que cal.com documenta: `{ \"metadata[clave]\": valor }`. Así aparece\n//   en `payload.metadata[clave]` del webhook \"Reserva pagada\".\n//   (Ref: https://cal.com/help/embedding/prefill-booking-form-embed)\n//\n// NOTA: la conversión de reserva se mide en el SERVIDOR (webhook de pago de\n// cal.eu -> n8n -> GA4/Google Ads), NO en el navegador. Por eso aquí ya NO se\n// empuja ningún evento \"booking_confirmed\" al dataLayer: con el pago vía Stripe,\n// el navegador no es una fuente fiable de la conversión real (pagada).\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";import{useEffect,useState}from\"react\";let calScriptLoaded=false;let preconnectAdded=false;function addPreconnect(){if(typeof document===\"undefined\"||preconnectAdded)return;preconnectAdded=true;const hosts=[\"https://cal.com\",\"https://app.cal.com\",\"https://cal.eu\"];hosts.forEach(href=>{const link=document.createElement(\"link\");link.rel=\"preconnect\";link.href=href;link.crossOrigin=\"anonymous\";document.head.appendChild(link);});}function loadCalScript(){if(typeof window===\"undefined\"||calScriptLoaded)return;calScriptLoaded=true;(function(C,A,L){const p=function(a,ar){a.q.push(ar);};const d=C.document;C.Cal=C.Cal||function(){const cal=C.Cal;// eslint-disable-next-line prefer-rest-params\nconst ar=arguments;if(!cal.loaded){cal.ns={};cal.q=cal.q||[];d.head.appendChild(d.createElement(\"script\")).src=A;cal.loaded=true;}if(ar[0]===L){const api=function(){// eslint-disable-next-line prefer-rest-params\np(api,arguments);};const namespace=ar[1];api.q=api.q||[];if(typeof namespace===\"string\"){cal.ns[namespace]=cal.ns[namespace]||api;p(cal.ns[namespace],ar);p(cal,[\"initNamespace\",namespace]);}else{p(cal,ar);}return;}p(cal,ar);};})(window,\"https://app.cal.com/embed/embed.js\",\"init\");}function getSessionReferrer(){if(typeof window===\"undefined\")return\"\";const KEY=\"ug_referrer\";const stored=sessionStorage.getItem(KEY);if(stored!==null)return stored;const ref=document.referrer||\"\";sessionStorage.setItem(KEY,ref);return ref;}// Lee el client_id de GA4 desde la cookie `_ga` (formato: GA1.1.XXXX.YYYY).\n// Devuelve solo la parte \"XXXX.YYYY\" (el client_id que GA4 usa).\n// IMPORTANTE: la cookie `_ga` SOLO existe si el visitante aceptó la analítica\n// (gracias al Consent Mode v2). Sin consentimiento devuelve \"\" y no se envía nada.\nfunction getGaClientId(){if(typeof document===\"undefined\")return\"\";const match=document.cookie.match(/_ga=GA\\d\\.\\d\\.(\\d+\\.\\d+)/);return match?match[1]:\"\";}function getSessionUTMs(){if(typeof window===\"undefined\")return{};const KEY=\"ug_utms\";const params=new URLSearchParams(window.location.search);const UTM_KEYS=[\"utm_source\",\"utm_medium\",\"utm_campaign\",\"utm_content\",\"utm_term\",\"gclid\",\"fbclid\",\"msclkid\"];const hasTracking=UTM_KEYS.some(k=>params.has(k));if(hasTracking){const meta={};for(const k of UTM_KEYS){const v=params.get(k);if(v)meta[k]=v;}sessionStorage.setItem(KEY,JSON.stringify(meta));return meta;}const stored=sessionStorage.getItem(KEY);return stored?JSON.parse(stored):{};}function buildCalMetadata(){const utms=getSessionUTMs();const referrer=getSessionReferrer();const clientId=getGaClientId();return{...utms,...referrer?{referrer}:{},...clientId?{ga_client_id:clientId}:{},pagina:typeof window!==\"undefined\"?window.location.pathname:\"\",fecha:new Date().toISOString().split(\"T\")[0]};}// Convierte { clave: valor } al formato que cal.com espera en el CONFIG del\n// embed: { \"metadata[clave]\": valor }. Es la forma documentada para que el\n// dato aparezca luego en `payload.metadata[clave]` del webhook.\nfunction toCalMetadataConfig(meta){const out={};for(const[k,v]of Object.entries(meta)){if(v)out[`metadata[${k}]`]=v;}return out;}/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n */export default function CalPopupButton(props){const{calLink=\"ugarana/consulta-de-ginecologia-presencial\",origin=\"https://cal.eu\",label=\"Reservar →\",variant=\"primary\",brandColor=\"#2D4A38\",textColor=\"#F5F1E8\",bgColor=\"#F5F1E8\",mutedBgColor=\"#E5DFD2\",style}=props;const isStatic=useIsStaticRenderer();const namespace=`popup_${calLink.replace(/[^a-zA-Z0-9]/g,\"_\")}`;const[calConfig,setCalConfig]=useState('{\"layout\":\"month_view\",\"theme\":\"light\"}');useEffect(()=>{if(isStatic)return;if(typeof window===\"undefined\")return;addPreconnect();loadCalScript();const meta=buildCalMetadata();const metaConfig=toCalMetadataConfig(meta);setCalConfig(JSON.stringify({layout:\"month_view\",theme:\"light\",...metaConfig}));const W=window;W.Cal(\"init\",namespace,{origin});W.Cal.ns[namespace](\"ui\",{cssVarsPerTheme:{light:{\"cal-brand\":brandColor,\"cal-bg\":bgColor,\"cal-bg-emphasis\":mutedBgColor,\"cal-bg-muted\":mutedBgColor}},hideEventTypeDetails:false,layout:\"month_view\",theme:\"light\"});},[namespace,origin,brandColor,bgColor,mutedBgColor,isStatic]);const isPrimary=variant===\"primary\";return /*#__PURE__*/_jsx(\"button\",{\"data-cal-namespace\":namespace,\"data-cal-link\":calLink,\"data-cal-config\":calConfig,style:{...style,display:\"inline-flex\",alignItems:\"center\",justifyContent:\"center\",width:style?.width??\"100%\",padding:\"18px 32px\",backgroundColor:isPrimary?brandColor:\"transparent\",color:isPrimary?textColor:brandColor,border:isPrimary?\"none\":`1px solid ${brandColor}`,borderRadius:10,fontFamily:'\"Inter Tight\", system-ui, sans-serif',fontSize:12,fontWeight:400,letterSpacing:\"0.26em\",textTransform:\"uppercase\",cursor:\"pointer\",transition:\"opacity 0.2s\"},onMouseEnter:e=>{e.currentTarget.style.opacity=\"0.85\";},onMouseLeave:e=>{e.currentTarget.style.opacity=\"1\";},children:label});}addPropertyControls(CalPopupButton,{calLink:{type:ControlType.String,title:\"Cal Link\",defaultValue:\"ugarana/consulta-de-ginecologia-presencial\",placeholder:\"ugarana/evento-slug\"},origin:{type:ControlType.String,title:\"Origen\",defaultValue:\"https://cal.eu\",placeholder:\"https://cal.eu\"},label:{type:ControlType.String,title:\"Texto bot\\xf3n\",defaultValue:\"Reservar →\"},variant:{type:ControlType.Enum,title:\"Estilo\",defaultValue:\"primary\",options:[\"primary\",\"outline\"],optionTitles:[\"S\\xf3lido\",\"Outline\"],displaySegmentedControl:true},brandColor:{type:ControlType.Color,title:\"Color marca\",defaultValue:\"#2D4A38\"},textColor:{type:ControlType.Color,title:\"Color texto bot\\xf3n\",defaultValue:\"#F5F1E8\"},bgColor:{type:ControlType.Color,title:\"Color fondo popup\",defaultValue:\"#F5F1E8\"},mutedBgColor:{type:ControlType.Color,title:\"Color p\\xedldoras d\\xedas\",defaultValue:\"#E5DFD2\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"CalPopupButton\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutWidth\":\"any\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"any\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./CalPopupButton.map"],"mappings":"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"}