1import{r as u,j as r,h as ys,u as ws,L as Le}from"./react-vendor-BhYcHFpO.js";import{P as W}from"./index-DRgGGSBy.js";import{M as Re,o as js,d as Fe,c as qe,j as B,q as ge,w as M,i as he,a6 as vs,a7 as Is,a8 as Ns}from"./firebase-zYKD-ixQ.js";import{d as N}from"./appRepair-DbJA6Mdj.js";import{B as Cs,a9 as Ss,cg as Ps,h as Ts,k as Es,bn as $s,ch as Ge,ci as As,cj as We,ck as Us,cl as _s,cm as ks,b7 as Bs,y as Ms,b as Os,W as Ls,bb as Rs,bd as Fs,be as qs,bh as Vs,bg as zs,bj as Ds,bf as Hs,cn as Qs,co as Gs,bi as Ve,cp as Ws,cq as Js,cr as ze,cs as q}from"./App-COz8zHWr.js";import{C as Xs}from"./membershipUpgradeService-DE_uX25_.js";import{s as Ys}from"./sin_articulos-B37Ex45N.js";import{g as Zs,U as Ks}from"./UpgradeMembresiaModal-Df3CFZla.js";import{g as er}from"./serviceAppointments-Bj6bzDEk.js";const sr=[{name:"Instagram",re:/instagram/i},{name:"Facebook",re:/fban|fbav|fb_iab/i},{name:"Messenger",re:/messenger/i},{name:"TikTok",re:/tiktok|musical_ly|bytedancewebview/i},{name:"LinkedIn",re:/linkedinapp/i},{name:"Snapchat",re:/snapchat/i},{name:"WeChat",re:/micromessenger/i},{name:"Line",re:/\bline\//i},{name:null,re:/;\s*wv\)/}];function De(e){const x=typeof navigator<"u"?navigator.userAgent:"";if(!x)return{isInApp:!1,appName:null};for(const{name:C,re:h}of sr)if(h.test(x))return{isInApp:!0,appName:C};return{isInApp:!1,appName:null}}function Je({appName:e,onContinue:x,onClose:C}){const[h,O]=u.useState(!1),V=`${window.location.origin}/tienda`,z=e?`el navegador de ${e}`:"un navegador integrado",ne=async()=>{try{await navigator.clipboard.writeText(V),O(!0)}catch{O("manual")}};return r.jsxs(Cs,{onClose:C,title:"Mejor desde tu navegador",footer:r.jsxs("div",{className:"flex flex-col gap-2",children:[r.jsx("button",{type:"button",onClick:ne,className:"w-full py-3 rounded-xl bg-primary-500 text-on-primary font-medium active:scale-[0.98] transition disabled:opacity-60 flex items-center justify-center gap-2",children:h===!0?r.jsxs(r.Fragment,{children:[r.jsx(Ss,{className:"w-4 h-4"}),"Enlace copiado"]}):r.jsxs(r.Fragment,{children:[r.jsx(Ps,{className:"w-4 h-4"}),"Copiar enlace"]})}),r.jsx("button",{type:"button",onClick:x,className:"w-full rounded-xl border border-gray-300 px-4 py-3 text-sm text-gray-700 active:scale-[0.98] transition",children:"Seguir aquà de todas formas"})]}),children:[r.jsxs("p",{className:"text-sm text-gray-700 mb-2",children:["Parece que estás en ",z,". Para pagar, tu banco te pedirá una verificación que ahà a veces se corta a medias."]}),r.jsxs("p",{className:"text-sm text-gray-700 mb-4",children:["Abre este enlace en ",r.jsx("span",{className:"font-medium",children:"Chrome o Safari"})," y haz la compra desde ahÃ:"]}),r.jsx("div",{className:"rounded-xl bg-gray-50 border border-gray-200 px-3 py-2 text-sm text-gray-800 break-all select-all",children:V}),h==="manual"&&r.jsx("p",{className:"text-xs text-amber-600 mt-3",children:"No hemos podido copiarlo solos: mantén pulsado el enlace de arriba para copiarlo."})]})}Je.propTypes={appName:W.string,onContinue:W.func.isRequired,onClose:W.func.isRequired};const fe={all:{name:"Todo",icon:ks},memberships:{name:"MembresÃas",icon:_s},classes:{name:"Bonos de Clases",icon:Us},products:{name:"Productos",icon:We},otherServices:{name:"Otros Servicios",icon:As},courses:{name:"Cursos",icon:Ge}},xe=new Set(["active","trialing","past_due","cancel_pending","processing"]),be=(e={})=>e.productId||e.priceId||String(e.id||""),He=(e={})=>{if(!e.capacityEnabled)return null;const x=Number(e.maxActiveMembers);return Number.isInteger(x)&&x>0?x:null},Qe=e=>({month:"mes",year:"año",week:"semana",day:"dÃa"})[e]||e;function hr(){var Ue,_e,ke,Be,Me,Oe;const{trainerDetails:e,loading:x,error:C}=Ts(),{titleLower:h}=Es(),{storeLabel:O}=$s(),V=O==="Tienda"?`Tienda de ${(e==null?void 0:e.display_name)||`tu ${h}`}`:O,[z,ne]=ys(),J=z.get("courseId")||"",E=z.get("category")||(J?"courses":null),[o,ye]=u.useState(null),[Xe,ce]=u.useState(!0),[we,X]=u.useState(null),[$,je]=u.useState(fe[E]?E:"all"),[L,R]=u.useState(null),[ve,ie]=u.useState(null),Ie=u.useRef(!1),{userDetails:m}=Bs(),{assignment:Ye}=Ms(),{currentUser:Ze}=Os(),{sedesById:Ke,multicentroOn:es,sedesSuspendidasIds:ss}=Ls(),[Ne,le]=u.useState(null),f=m!=null&&m.membresia_actual&&typeof m.membresia_actual=="object"?m.membresia_actual:null,rs=String((m==null?void 0:m.membresia_estado)||"").toLowerCase(),ts=String((f==null?void 0:f.status)||"").toLowerCase(),os=(m==null?void 0:m.membresia_pago_pendiente)===!0||xe.has(rs)||xe.has(ts),as=!!f&&os,de=Rs(f),Ce=Fs(m),Se=qs(m==null?void 0:m.membresia_ultimo_pago_error),Pe=(f==null?void 0:f.priceId)||null,ns=(f==null?void 0:f.productId)||null,[S,cs]=u.useState(null),[is,Te]=u.useState(new Set),[ls,Y]=u.useState({}),[P,Z]=u.useState(null),ds=ws(),us=((_e=(Ue=e==null?void 0:e.appSettings)==null?void 0:Ue.billing)==null?void 0:_e.hideStore)===!0;u.useEffect(()=>{E&&fe[E]&&E!==$&&je(E)},[$,E]),u.useEffect(()=>{const s=Re(),t=js(s,i=>{cs(i?i.uid:null)});return()=>{typeof t=="function"&&t()}},[]),u.useEffect(()=>{(async()=>
1{if(!x){if(!e||!e.id){C||X(`No se pudo determinar tu ${h} o no tienes uno asignado.`),ce(!1);return}try{ce(!0),X(null);const t=e.id,i=Fe(N,`userDetails/${t}/stripeConfig/config`),n=await qe(i);n.exists()?ye(n.data()):ye({})}catch(t){console.error("Error fetching store config:",t),X("Error al cargar los productos de la tienda.")}finally{ce(!1)}}})()},[e,x,C,h]),u.useEffect(()=>{(async()=>{if(!(e!=null&&e.id)||!S){Z(null);return}try{const t=e!=null&&e.IDBO?B(N,"Centros",e.IDBO,"Clientes_asociados_centros"):B(N,"userDetails",e.id,"Clientes_asociados"),i=ge(t,M("uidcliente","==",S)),n=await he(i);if(n.empty)Z(null);else{const d=n.docs[0].data();Z({...Qs(d),matricula:d.matricula||null})}}catch(t){console.warn("No se pudo cargar el perfil del cliente para reglas de visibilidad:",t),Z(null)}})()},[e,S]),u.useEffect(()=>{(async()=>{if(!(e!=null&&e.id)||!S){Te(new Set);return}const t=[];e!=null&&e.IDBO&&t.push(B(N,`Centros/${e.IDBO}/Clientes_asociados_centros/${S}/courseEntitlements`)),t.push(B(N,`userDetails/${e.id}/Clientes_asociados/${S}/courseEntitlements`));const i=await Promise.all(t.map(d=>he(d).catch(()=>null))),n=new Set;i.forEach(d=>{var b;(b=d==null?void 0:d.docs)==null||b.forEach(a=>{const c=a.data()||{};(c.status||"active")==="active"&&n.add(c.courseId||a.id)})}),Te(n)})()},[e==null?void 0:e.id,e==null?void 0:e.IDBO,S]),u.useEffect(()=>{(async()=>{const i=(Array.isArray(o==null?void 0:o.memberships)?o.memberships:[]).filter(n=>He(n));if(!(e!=null&&e.id)||i.length===0){Y({});return}try{const n={};i.forEach(a=>{const c=be(a),l=He(a);c&&l&&(n[c]={max:l,active:0,available:l,soldOut:!1})});const d=[];if(e.IDBO)d.push(M("IDBO","==",e.IDBO));else if(e.IDPT)d.push(M("IDPT","==",e.IDPT));else{Y(n);return}const b=[...xe];await Promise.all(i.map(async a=>{const c=be(a);if(!n[c])return;const l=[];if(a.productId&&l.push(M("membresia_actual.productId","==",a.productId)),a.priceId&&l.push(M("membresia_actual.priceId","==",a.priceId)),l.length!==0)try{const p=ge(B(N,"userDetails"),vs(...d,M("membresia_estado","in",b),l.length===1?l[0]:Is(...l))),j=await Ns(p);n[c].active=j.data().count||0}catch(p){console.warn("[StorePage] No se pudo contar el aforo de",c,(p==null?void 0:p.message)||p)}})),Object.keys(n).forEach(a=>{const c=n[a];c.available=Math.max(0,c.max-c.active),c.soldOut=c.active>=c.max}),Y(n)}catch(n){console.warn("No se pudo calcular el cupo de membresÃas:",n),Y({})}})()},[o==null?void 0:o.memberships,e==null?void 0:e.id,e==null?void 0:e.IDPT,e==null?void 0:e.IDBO]);const ue=async(s,t,i,n,d,b,a=!1,c={})=>{if(!e||!e.id){console.error("ID del entrenador (trainerDetails.id) no disponible."),q.error(`No se pudo iniciar el pago. Inténtalo de nuevo; si sigue fallando, contacta con tu ${h}.`);return}const l=Re();if(!l.currentUser){console.error("Usuario no autenticado."),q.error("Inicia sesión para poder comprar.");return}if(!Ie.current&&De().isInApp){ie({args:[s,t,i,n,d,b,a,c]});return}R(s),X(null);try{const p=await l.currentUser.getIdToken(!0);console.log("Objeto trainerDetails básico (del hook):",e);let j=null;try{const g=Fe(N,"userDetails",e.id),k=await qe(g);if(k.exists()){const T=k.data();console.log("Documento completo del entrenador obtenido de Firestore:",T),j=T.stripeAccountId}else throw console.error(`No se encontró el documento del entrenador en userDetails/${e.id}`),new Error(`No se encontró la configuración de pago de tu ${h}.`)}catch(g){console.error("Error al obtener los detalles completos del entrenador desde Firestore:",g),q.error("No se pudo cargar la información de pago. Inténtalo de nuevo en unos segundos."),R(null);return}if(!j){console.error("Error: stripeAccountId no encontrado en el documento del entrenador:",e.id),q.error(`Los pagos aún no están disponibles. Contacta con tu ${h}.`),R(null);return}console.log("trainerStripeAccountId obtenido:",j);let y=null;try{const g=e!=null&&e.IDBO?B(N,"Centros",e.IDBO,"Clientes_asociados_centros"):B(N,"userDetails",e.id,"Clientes_asociados"),k=ge(g,M("uidcliente","==",l.currentUser.uid)),T=await he(k);
1if(T.empty)console.warn("No se encontró el cliente asociado para obtener stripeCustomerId. UID cliente:",l.currentUser.uid,"UID entrenador:",e.id);else{const I=T.docs[0].data();y=I.stripeCustomerId,y?console.log("stripeCustomerId encontrado:",y,"para el cliente:",l.currentUser.uid,"con el entrenador:",e.id):console.warn("Campo stripeCustomerId no encontrado en el documento del cliente asociado.",I)}}catch(g){console.error("Error al obtener stripeCustomerId del cliente asociado:",g)}const w=i==="memberships"?"subscription":"payment",U=e.currency||"eur",te=`${window.location.origin}/payment-success?session_id={CHECKOUT_SESSION_ID}&productName=${encodeURIComponent(t)}&price=${b}¤cy=${U}&categoryType=${encodeURIComponent(i)}&priceId=${encodeURIComponent(s)}${c.appointmentIncluded?"&appointmentIncluded=1":""}${c.courseId?`&courseId=${encodeURIComponent(c.courseId)}`:""}`,Q=`${window.location.origin}/payment-cancelled`;console.log(`Iniciando compra para: ${t} (Price ID: ${s}, Trainer Stripe Account ID: ${j}, Client Stripe Customer ID: ${y||"No encontrado"}, Category: ${i}, Mode: ${w})`);const _={priceId:s,trainerStripeAccountId:j,mode:w,successUrl:te,cancelUrl:Q,categoryType:i,currency:U,...c,...a&&{paymentMethod:"sepa"},metadata:{categoryType:i,trainerId:e.id,priceId:s,clientId:l.currentUser.uid,...c},...y&&{customerId:y}};typeof n=="number"&&n>0&&(_.trialDays=n),typeof d=="number"&&d>=1&&d<=31&&(_.billingAnchorDay=d),console.log("Enviando payload a Cloud Function:",_);const G=await fetch(Xs,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${p}`},body:JSON.stringify(_)});if(!G.ok){const g=await G.json().catch(()=>({}));throw console.error(`Checkout backend error ${G.status}:`,g.error||g.message||"(sin cuerpo)"),R(null),new Error("checkout_failed")}const oe=await G.json();console.log("Respuesta completa de la Cloud Function:",oe);const v=oe.checkoutUrl;if(console.log("URL de Checkout recibida por el frontend:",v),console.log("Tipo de checkoutUrl:",typeof v),!v||typeof v!="string"){console.error("No se recibió una URL de checkout válida o no es un string.",v),q.error("No se pudo abrir la pasarela de pago. Inténtalo de nuevo en unos segundos."),R(null);return}console.log("Redirigiendo a URL de Checkout:",v),window.location.href=v}catch(p){console.error("Error en handleBuyProduct:",p),q.error(`No se pudo iniciar el pago. Inténtalo de nuevo; si sigue fallando, contacta con tu ${h}.`),R(null)}},ps=s=>Gs({...s,archived:!1},{clientUid:S,clientProfile:P}),ms=s=>{je(s);const t=new URLSearchParams(z);s==="all"?t.delete("category"):t.set("category",s),t.delete("courseId"),ne(t,{replace:!0})},D=s=>Array.isArray(s)?s.filter(t=>t!=null&&t.archived?!1:ps(t)):[],H=D(o==null?void 0:o.memberships),pe=Zs(H,((ke=o==null?void 0:o.hierarchyConfig)==null?void 0:ke.membershipOrder)||[],{priceId:Pe,productId:ns},{hierarchyEnabled:((Be=o==null?void 0:o.hierarchyConfig)==null?void 0:Be.enabled)===!0,allowSelfDowngrade:((Me=o==null?void 0:o.hierarchyConfig)==null?void 0:Me.allowSelfDowngrade)!==!1,catalog:(o==null?void 0:o.memberships)||[],sedesSuspendidasIds:ss}),gs=new Set(pe.upgrades.map(s=>s.priceId)),hs=new Set(pe.downgrades.map(s=>s.priceId)),fs=pe.libre,K=D((Oe=o==null?void 0:o.classes)==null?void 0:Oe.bundles),ee=D(o==null?void 0:o.products),se=D(o==null?void 0:o.otherServices),re=D(o==null?void 0:o.courses),xs={memberships:H,classes:K,products:ee,otherServices:se,courses:re},Ee=(e==null?void 0:e.stripe_sepa_capability)==="active"&&((e==null?void 0:e.currency)||"eur").toLowerCase()==="eur",A=(o==null?void 0:o.matriculaConfig)||null,bs=Vs({matricula:P==null?void 0:P.matricula,createdAt:P==null?void 0:P.createdAt},A)==="pendiente"&&(A==null?void 0:A.cobroOnline)!==!1,$e=({item:s,type:t})=>{var T,me;const{name:i,price:n,imageUrl:d,quantity:b,priceId:a,description:c,courseId:l}=s,p=s.categoryType==="memberships"||t==="memberships",j=s.categoryType==="otherServices"?er(s,((me=(T=e==null?void 0:e.appSettings)==null?void 0:T.agenda)==null?void 0:me.tiposSesion)||[]):[],y=j.reduce((I,ae)=>I+ae.quantity,0),w=p?ls[be(s)]:null,U=!!(w!=null&&w.soldOut),te=s.paymentMethodMode||"both",Q=te!=="sepa",_=te!=="card",oe=s.categoryType==="courses"&&l&&is.has(l),v=(s.bundleType||"bonos")==="pases",g=t==="bundle"?i||`${b} ${v?Number(b)===1?"Pase de dÃa":"Pases de dÃa":"Clases"}`:i,k=typeof c=="string"?c.trim():"";return r.jsxs("div",{className:"bg-white rounded-2xl shadow-soft overflow-hidden flex flex-col transform hover:shadow-medium transition duration-300 group",children:[d?r.jsx("img",{src:d,alt:g,className:"w-full h-48 object-cover group-hover:scale-105 transition-transform duration-300"}):r.jsx("div",{className:"w-full h-48 bg-gray-500/30 flex items-center justify-center text-gray-100",children:r.jsx(We,{size:48})}),r.jsxs("div",{className:"relative px-5 pb-5 pt-10 -mt-10 flex flex-col flex-grow",children:[r.jsx("h3",{className:"text-lg font-medium text-gray-800 group-hover:text-primary-600 transition-colors duration-300 mb-2 truncate",title:g,children:g}),k&&r.jsx("p",{className:"text-sm text-gray-700 mb-3 flex-grow whitespace-pre-line",children:k}),r.jsx("p",{className:"text-primary-500 text-xl font-medium mb-4 mt-auto tabular-nums",children:Ve(n,e==null?void 0:e.currency)}),p&&bs&&s.exentaMatricula!==!0&&r.jsxs("p",{className:"text-sm text-gray-600 font-medium mb-2",children:["+ ",Ve(Number(A==null?void 0:A.price)||0,e==null?void 0:e.currency)," de matrÃcula (solo la primera vez)"]}),es&&Array.isArray(s.sedesAcceso)&&s.sedesAcceso.length>0&&r.jsxs("p",{className:"text-sm text-gray-600 font-medium mb-2",children:[p?"Válida solo en:":"Válido solo en:"," ",s.sedesAcceso.map(I=>{var ae;return((ae=Ke.get(I))==null?void 0:ae.nombre)||"Centro"}
1).join(", ")]}),y>0&&r.jsxs("div",{className:"text-sm text-gray-600 mb-2",children:[r.jsxs("p",{children:["Incluye ",y," ",y===1?"cita individual":"citas individuales",": ",j.map(I=>`${I.quantity} à ${I.name}`).join(" + "),"."]}),r.jsx("p",{children:"Podrás solicitar cada cita al confirmar el pago o más tarde desde tu perfil."})]}),s.includesCredits&&s.creditsPerPeriod>0&&r.jsxs("p",{className:"text-sm text-green-600 font-medium mb-2",children:["Incluye ",s.creditsPerPeriod," clases cada ",Qe(s.interval)]}),s.includesPases&&s.pasesPerPeriod>0&&r.jsxs("p",{className:"text-sm text-green-600 font-medium mb-2",children:["Incluye ",s.pasesPerPeriod," ",Number(s.pasesPerPeriod)===1?"pase de dÃa":"pases de dÃa"," cada ",Qe(s.interval)]}),t==="bundle"&&b&&r.jsxs("p",{className:"text-xs text-gray-600 mb-3",children:["Paquete de ",b," ",v?Number(b)===1?"pase de dÃa":"pases de dÃa":"clases"]}),p&&(w==null?void 0:w.max)>0&&r.jsx("div",{className:`mb-3 rounded-lg px-3 py-2 text-sm ${U?"bg-red-50 text-red-600 border border-red-100":"bg-white/70 text-gray-600 border border-white/60"}`,children:U?"Agotado":w.available===1?"Queda 1 alta disponible":`Quedan ${w.available} altas disponibles`}),oe?r.jsxs(Le,{to:"/cursos",className:"w-full bg-green-600 hover:bg-green-700 text-white font-medium py-2.5 px-4 rounded-lg flex items-center justify-center transition duration-300 shadow-md hover:shadow-lg",children:[r.jsx(Ge,{className:"mr-2"}),"Ir al curso"]}):p&&as?a&&a===Pe?r.jsx("button",{disabled:!0,className:"w-full bg-gray-200 text-gray-500 font-medium py-2.5 px-4 rounded-lg cursor-not-allowed",children:"Tu plan actual"}):U?r.jsx("button",{disabled:!0,className:"w-full bg-gray-200 text-gray-500 font-medium py-2.5 px-4 rounded-lg cursor-not-allowed",children:"Tope alcanzado"}):Ce?r.jsx("button",{disabled:!0,className:"w-full bg-gray-100 text-gray-500 font-medium py-2.5 px-4 rounded-lg cursor-not-allowed",title:"Tienes un recibo pendiente: ponte al dÃa para poder cambiar de plan",children:"Pago pendiente"}):de&&gs.has(a)?r.jsx("button",{onClick:()=>le(a),className:"w-full bg-gradient-to-r from-primary-500 to-primary-600 hover:from-primary-600 hover:to-primary-700 text-on-primary font-medium py-2.5 px-4 rounded-lg transition duration-300 shadow-md hover:shadow-lg",children:fs?"Cambiar a este plan":"Mejorar a este plan"}):de&&hs.has(a)?r.jsx("button",{onClick:()=>le(a),className:"w-full bg-white border border-primary-300 text-primary-600 hover:bg-primary-50 font-medium py-2.5 px-4 rounded-lg transition duration-300 shadow-sm hover:shadow-md",children:"Bajar a este plan"}):r.jsx("button",{disabled:!0,className:"w-full bg-gray-100 text-gray-500 font-medium py-2.5 px-4 rounded-lg cursor-not-allowed",title:"Este cambio lo gestiona tu centro",children:"Lo gestiona tu centro"}):p&&U?r.jsx("button",{disabled:!0,className:"w-full bg-gray-200 text-gray-500 font-medium py-2.5 px-4 rounded-lg cursor-not-allowed",children:"Tope alcanzado"}):r.jsxs(r.Fragment,{children:[Q&&r.jsxs("button",{onClick:()=>ue(a,g,s.categoryType,s.trialDays,s.billingAnchorDay,s.price,!1,{...l?{courseId:l}:{},...y>0?{appointmentIncluded:"1"}:{}}),disabled:!!L,className:"w-full bg-gradient-to-r from-primary-500 to-primary-600 hover:from-primary-600 hover:to-primary-700 text-on-primary font-medium py-2.5 px-4 rounded-lg flex items-center justify-center transition duration-300 shadow-md hover:shadow-lg focus:outline-none focus:ring-2 focus:ring-primary-400 focus:ring-opacity-75 transform group-hover:scale-105 disabled:opacity-50 disabled:cursor-not-allowed",children:[L&&L===a?r.jsx(Ws,{className:"animate-spin mr-2"}):r.jsx(Js,{className:"mr-2"}),L&&L===a?"Procesando...":"Comprar"]}),_&&Ee&&r.jsxs("button",{onClick:()=>ue(a,g,s.categoryType,s.trialDays,s.billingAnchorDay,s.price,!0,{...l?{courseId:l}:{},...y>0?{appointmentIncluded:"1"}:{}}),disabled:!!L,className:`w-full ${Q?"mt-2":""} bg-white/70 hover:bg-white text-primary-700 border border-primary-300 font-medium py-2.5 px-4 rounded-lg flex items-center justify-center transition duration-300 shadow-sm hover:shadow-md focus:outline-none focus:ring-2 focus:ring-primary-300 disabled:opacity-50 disabled:cursor-not-allowed`,title:"Pago por adeudo en tu cuenta bancaria (mandato SEPA)",children:[r.jsx(ze,{className:"mr-2"}),s.categoryType==="memberships"?"Domiciliación bancaria":"Pagar con cuenta (SEPA)"]}),_&&!Q&&!Ee&&r.jsxs("div",{children:[r.jsxs("button",{disabled:!0,className:"w-full bg-gray-200 text-gray-400 border border-gray-300 font-medium py-2.5 px-4 roun
1ded-lg flex items-center justify-center cursor-not-allowed",children:[r.jsx(ze,{className:"mr-2"}),"Domiciliación no disponible"]}),r.jsxs("p",{className:"text-xs text-gray-500 mt-1 text-center",children:["Tu ",h," aún no tiene activada la domiciliación bancaria."]})]})]})]})]},s.id||a)};$e.propTypes={item:W.object,type:W.string};const Ae=(()=>{if(!o)return[];let s=[];return H.length>0&&(s=[...s,...H.map(t=>({...t,categoryType:"memberships"}))]),K.length>0&&(s=[...s,...K.map(t=>({...t,categoryType:"classes"}))]),ee.length>0&&(s=[...s,...ee.map(t=>({...t,categoryType:"products"}))]),se.length>0&&(s=[...s,...se.map(t=>({...t,categoryType:"otherServices"}))]),re.length>0&&(s=[...s,...re.map(t=>({...t,categoryType:"courses"}))]),J&&$==="courses"?s.filter(t=>t.categoryType==="courses"&&String(t.courseId)===String(J)):$==="all"?s:s.filter(t=>t.categoryType===$)})();if((x||Xe)&&!o)return r.jsx("div",{className:"container mx-auto px-4 py-8 text-center",children:r.jsx("p",{className:"text-lg text-gray-600",children:"Cargando productos de la tienda..."})});if(us){const s=!!(e!=null&&e.IDBO);return r.jsxs("div",{className:"container mx-auto px-4 py-8 flex flex-col items-center justify-center text-center min-h-[calc(100vh-200px)]",children:[r.jsx(zs,{className:"text-gray-300 text-6xl mb-6"}),r.jsxs("h1",{className:"text-2xl font-medium mb-3 text-gray-800",children:[O," · No disponible"]}),r.jsxs("p",{className:"text-md text-gray-600 max-w-md",children:[s?"Tu centro":"Tu profesional"," no tiene disponible este catálogo en este momento."]}),r.jsx("button",{type:"button",onClick:()=>ds("/hoy"),className:"mt-8 inline-flex items-center bg-primary-500 hover:bg-primary-600 text-on-primary font-medium py-2.5 px-5 rounded-lg transition-colors",children:"Volver a Hoy"})]})}if(we||C)return r.jsxs("div",{className:"container mx-auto px-4 py-8 text-center text-red-600 bg-red-50 p-6 rounded-lg",children:[r.jsx("p",{className:"text-lg font-medium",children:"Error"}),r.jsx("p",{children:we||C})]});if(!o||Object.values(xs).every(s=>s.length===0))return r.jsxs("div",{className:"container mx-auto px-4 py-8 flex flex-col items-center justify-center text-center min-h-[calc(100vh-200px)]",children:[r.jsx("h1",{className:"text-3xl font-medium mb-6 text-gray-800",children:V}),r.jsx("div",{className:"max-w-md mx-auto",children:r.jsx("img",{src:Ys,alt:"No hay artÃculos disponibles",className:"w-full h-auto"})}),r.jsx("p",{className:"text-xl text-gray-700 mt-8",children:"TodavÃa no hay productos o servicios disponibles"}),r.jsxs("p",{className:"text-md text-gray-500 mt-2",children:["Este ",h," aún no ha añadido productos o servicios. Vuelve a comprobarlo más tarde."]})]});const F=["all"];return H.length>0&&F.push("memberships"),K.length>0&&F.push("classes"),ee.length>0&&F.push("products"),se.length>0&&F.push("otherServices"),re.length>0&&F.push("courses"),r.jsxs("div",{className:"container mx-auto px-4 py-8 min-h-screen bg-gray-100 pb-24",children:[r.jsxs("div",{className:"flex justify-between items-center mb-8",children:[r.jsx("h1",{className:"text-3xl font-medium text-gray-800",children:V}),r.jsxs(Le,{to:"/compras",className:"flex items-center gap-2 bg-white hover:bg-gray-200 text-gray-700 font-medium py-2 px-4 rounded-lg transition duration-300 shadow-sm focus:outline-none focus:ring-2 focus:ring-primary-400",children:[r.jsx(Ds,{}),r.jsx("span",{children:"Mis compras"})]})]}),Ce&&r.jsxs("div",{className:"mb-8 rounded-2xl border border-red-200 bg-red-50 p-4",children:[r.jsx("p",{className:"text-sm font-medium text-red-700",children:"Tienes un recibo pendiente"}),r.jsxs("p",{className:"mt-1 text-sm text-red-700/90",children:["No hemos podido cobrar tu ",(f==null?void 0:f.planName)||"membresÃa",".",Se?` ${Se}`:""," Actualiza tu método de pago para ponerte al dÃa; mientras tanto no se puede cambiar de plan."]}),de?r.jsx("button",{type:"button",onClick:()=>Hs({currentUser:Ze,membresia:f,trainerDetails:e,returnUrl:`${window.location.origin}/tienda`}),className:"mt-3 inline-flex items-center rounded-xl bg-red-600 px-4 py-2 text-sm font-medium text-white transition-colors hover:bg-red-700",children:"Actualizar método de pago"}):r.jsxs("p",{className:"mt-2 text-xs text-red-700/80",children:["Tu membresÃa la gestiona tu ",h,": habla con él para regularizar el pago."]})]}),r.jsx("div",{className:"mb-10 flex flex-wrap justify-center gap-3 px-2",children:F.map(s=>{const t=fe[s];if(!t)return null;const i=t.icon;return r.jsxs("button",{onClick:()=>ms(s),className:`flex items-center justify-center px-5 py-2.5 rounded-lg text-sm font-medium transition duration-300 ease-in-out transform hover:scale-105 focus:outline-none focus:ring-2 focus:ring-opacity-75 2 ${$===s?"bg-primary-500 text-on-primary shadow-md focus:ring-primary-400":"bg-white text-gray-700 hover:bg-gray-200 shadow-sm focus:ring-gray-300"}`,children:[r.jsx(i,{className:"mr-2 h-4 w-4"}),t.name]},s)})}),Ae.length>0?r.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-x-6 gap-y-8",children:Ae.map(s=>r.jsx($e,{item:s,type:s.categoryType==="classes"?"bundle":s.categoryType},s.id||s.priceId))}):r.jsx("p",{className:"text-center text-gray-600 mt-10",children:J&&$==="courses"?"Este curso ya no está disponible para compra en la tienda.":"No hay productos disponibles en esta categorÃa."}),r.jsx(Ks,{open:!!Ne,onClose:()=>le(null),userDetails:m,assignment:Ye,clientProfile:P,preselectPriceId:Ne}),ve&&r.jsx(Je,{appName:De().appName,onContinue:()=>{Ie.current=!0;const{args:s}=ve;ie(null),ue(...s)},onClose:()=>ie(null)})]})}export{hr as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.