PageSourceSearch

https://studio--credenciales-digitales-ia.us-central1.hosted.app/_…/app/billing/page-028f0ffae2e3957f.js

js studio--credenciales-digitales-ia.us-central1.hosted.app collected 2026-10-03 05:34:04 UTC 7,351 bytes, 1 lines download raw bytes

1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7522],{26816:(e,a,t)=>{Promise.resolve().then(t.bind(t,56604))},28044:(e,a,t)=>{"use strict";t.d(a,{A:()=>s});let s=(0,t(40157).A)("ShieldAlert",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"M12 8v4",key:"1got3b"}],["path",{d:"M12 16h.01",key:"1drbdi"}]])},41963:(e,a,t)=>{"use strict";t.d(a,{A:()=>c});var s=t(95155),r=t(19049),l=t(35695),i=t(12115),n=t(68856),o=t(78961);let c=e=>{let a=a=>{let{isAuthenticated:t,isAuthLoading:c}=(0,r.k)(),d=(0,l.useRouter)();return((0,i.useEffect)(()=>{c||t||d.replace("/login")},[c,t,d]),c||!t)?(0,s.jsxs)("div",{className:"flex flex-col min-h-screen",children:[(0,s.jsx)(o.A,{}),(0,s.jsxs)("main",{className:"flex-1 p-4 md:p-8 lg:p-12",children:[(0,s.jsx)(n.E,{className:"h-10 w-1/2 mb-12"}),(0,s.jsx)(n.E,{className:"h-64 w-full"})]})]}):(0,s.jsx)(e,{...a})};return a.displayName="withAuthProtection(".concat(e.displayName||e.name||"Component",")"),a}},56604:(e,a,t)=>{"use strict";t.r(a),t.d(a,{default:()=>x});var s=t(95155),r=t(12115),l=t(78961),i=t(30285),n=t(66695),o=t(10518),c=t(28044),d=t(19049),m=t(59434),u=t(41963);let p=[{name:"Gratis",price:"0",priceDisplay:"$0",description:"Funcionalidades b\xe1sicas para empezar.",features:["Acceso a la Biblia NVI","Resaltado y notas","Generador de Devocionales (limitado)"],buttonText:"Plan Actual"},{name:"Pro",price:"5",priceDisplay:"$5",unit:"/ mes",description:"Desbloquea todo el poder de la IA.",features:["Todas las funciones de IA","M\xfaltiples traducciones (pr\xf3ximamente)","Guardado en la nube ilimitado","Soporte prioritario"],buttonText:"Actualizar a Pro"},{name:"Familia",price:"10",priceDisplay:"$10",unit:"/ mes",description:"Para toda tu familia o grupo de estudio.",features:["Todo lo del plan Pro","Hasta 5 cuentas","Grupos de estudio privados (pr\xf3ximamente)"],buttonText:"Actualizar a Familia"}],x=(0,u.A)(function(){let{user:e,updateUserPlan:a,toast:t}=(0,d.k)(),[u,x]=(0,r.useState)(null);(0,r.useEffect)(()=>{let e=document.createElement("script");return e.type="text/javascript",e.src="https://checkout.epayco.co/checkout.js",e.async=!0,e.onload=()=>{if(window.ePayco){let e=window.ePayco.checkout.configure({key:"4235cfcd09e4693fe250dc2ca249015e",test:!0});x(()=>e)}},document.body.appendChild(e),()=>{document.body.contains(e)&&document.body.removeChild(e)}},[]);let f=(a,s)=>{if(!u||!e)return void t({variant:"destructive",title:"Error de Pago",description:"El servicio de pago no est\xe1 disponible. Por favor, recarga la p\xe1gina."});let r={name:"Suscripci\xf3n Plan ".concat(a),description:"Pago mensual para el Plan ".concat(a),invoice:"FAC-".concat(new Date().getTime()),currency:"usd",amount:s,tax_base:"0",tax:"0",country:"co",lang:"es",external:"true",confirmation:"URL_DE_TU_BACKEND_PARA_CONFIRMACION",response:"".concat(window.location.origin,"/billing"),name_billing:e.name,email_billing:e.email};u.open(r)},h=async s=>{if((null==e?void 0:e.role)!=="superadmin")return void t({variant:"destructive",title:"No autorizado",description:"Esta funci\xf3n es solo para administradores."});t({title:"Simulaci\xf3n de Pago",description:"Actualizando plan a ".concat(s,"...")}),await a(s)};return e?(0,s.jsxs)("div",{className:"flex flex-col min-h-screen bg-background text-foreground",children:[(0,s.jsx)(l.A,{}),(0,s.jsx)("main",{className:"flex-1",children:(0,s.jsxs)("div",{className:"container mx-auto px-4 py-12 md:px-6 md:py-16",children:[(0,s.jsxs)("div",{className:"text-center max-w-3xl mx-auto",children:[(0,s.jsx)("h1",{className:"text-4xl md:text-5xl font-extrabold tracking-tight font-headline text-primary",children:"Planes de Suscripci\xf3n"}),(0,s.jsx)("p",{className:"mt-4 text-lg md:text-xl text-muted-foreground",children:"Elige el plan que mejor se adapte a tus necesidades de estudio b\xedblico."})]}),(0,s.jsx)("div",{className:"grid gap-8 md:grid-cols-3 mt-12 max-w-5xl mx-auto items-start",children:p.map(a=>{let t=a.name===e.plan,r="Gratis"===e.plan&&"Pro"===a.name;return(0,s.jsxs)(n.Zp,{className:(0,m.cn)("flex flex-col",t?"border-2 border-primary":"",r?"shadow-lg":""),children:[(0,s.jsxs)(n.aR,{children:[(0,s.jsx)(n.ZB,{className:"font-headline text-2xl",children:a.name}),(0,s.jsx)(n.BT,{children:a.description}),(0,s.jsxs)("div",{className:"flex items-baseline pt-4",children:[(0,s.jsx)("span",{className:"text-4xl font-bold",children:a.priceDisplay}),a.unit&&(0,s.jsx)("span",{className:"text-muted-foreground",children:a.unit})]})]}),(0,s.jsxs)(n.Wu,{className:"flex flex-col flex-grow",children:[(0,s.jsx)("ul",{className:"space-y-2 mb-8 flex-grow",children:a.features.map(e=>(0,s.jsxs)("li",{className:"flex items-center gap-2",children:[(0,s.jsx)(o.A,{className:"h-4 w-4 text-green-500"}),(0,s.jsx)("span",{className:"text-muted-foreground",children:e})]},e))}),(0,s.jsx)(i.$,{className:"w-full",disabled:t||"Gratis"!==a.name&&!u,onClick:()=>f(a.name,a.price),children:t?"Plan Actual":a.buttonText}),"superadmin"===e.role&&!t&&"Gratis"!==a.name&&(0,s.jsx)(i.$,{variant:"outline",size:"sm",className:"w-full mt-2",onClick:()=>h(a.name),children:"Simular Pago Exitoso"})]})]},a.name)})}),(0,s.jsxs)(n.Zp,{className:"mt-12 max-w-5xl mx-auto bg-muted/50 border-dashed",children:[(0,s.jsx)(n.aR,{children:(0,s.jsxs)(n.ZB,{className:"flex items-center gap-2",children:[(0,s.jsx)(c.A,{className:"w-5 h-5 text-amber-500"})," Nota sobre Pagos"]})}),(0,s.jsx)(n.Wu,{children:(0,s.jsx)("p",{className:"text-sm text-muted-foreground",children:'Actualmente, la integraci\xf3n con ePayco es para demostraci\xf3n. El pago se procesar\xe1 en el entorno de pruebas de ePayco, pero tu plan en esta aplicaci\xf3n no se actualizar\xe1 autom\xe1ticamente. La confirmaci\xf3n segura de pago requiere un componente de backend que no est\xe1 implementado. El bot\xf3n "Simular Pago Exitoso" (visible solo para administradores) te permite probar el flujo de actualizaci\xf3n de plan.'})})]})]})})]}):null})},66695:(e,a,t)=>{"use strict";t.d(a,{BT:()=>c,Wu:()=>d,ZB:()=>o,Zp:()=>i,aR:()=>n,wL:()=>m});var s=t(95155),r=t(12115),l=t(59434);let i=r.forwardRef((e,a)=>{let{className:t,...r}=e;return(0,s.jsx)("div",{ref:a,className:(0,l.cn)("rounded-lg border bg-card text-card-foreground shadow-sm",t),...r})});
1i.displayName="Card";let n=r.forwardRef((e,a)=>{let{className:t,...r}=e;return(0,s.jsx)("div",{ref:a,className:(0,l.cn)("flex flex-col space-y-1.5 p-6",t),...r})});n.displayName="CardHeader";let o=r.forwardRef((e,a)=>{let{className:t,...r}=e;return(0,s.jsx)("div",{ref:a,className:(0,l.cn)("text-2xl font-semibold leading-none tracking-tight",t),...r})});o.displayName="CardTitle";let c=r.forwardRef((e,a)=>{let{className:t,...r}=e;return(0,s.jsx)("div",{ref:a,className:(0,l.cn)("text-sm text-muted-foreground",t),...r})});c.displayName="CardDescription";let d=r.forwardRef((e,a)=>{let{className:t,...r}=e;return(0,s.jsx)("div",{ref:a,className:(0,l.cn)("p-6 pt-0",t),...r})});d.displayName="CardContent";let m=r.forwardRef((e,a)=>{let{className:t,...r}=e;return(0,s.jsx)("div",{ref:a,className:(0,l.cn)("flex items-center p-6 pt-0",t),...r})});m.displayName="CardFooter"}},e=>{var a=a=>e(e.s=a);e.O(0,[2992,3644,4091,4001,6659,9514,4754,8961,8441,2721,7358],()=>a(26816)),_N_E=e.O()}]);

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.