PageSourceSearch

https://andgo-platform.web.app/assets/Subscriptions-C-mUbCxC.js

js andgo-platform.web.app collected 2026-10-03 12:16:53 UTC 19,944 bytes, 1 lines download raw bytes

1import{j as e,X as q,Q as J,v as ee}from"./vendor-ui-CKm7ZMyW.js";import{r as o,d as se,g as te}from"./vendor-react-BcgnEh9s.js";import{B as P,b as m,c as j,h as ae,i as H}from"./index-10Bqe08t.js";import{C as ne,b as re}from"./card-BC9cEqZn.js";import{B as le}from"./badge-BMO1Tbpn.js";import{o as ie}from"./sso-Cy_Jm8XA.js";import{A as ce,a as oe,b as de,c as me,d as xe,e as ue,f as he,g as pe,h as ge}from"./alert-dialog-D_gX2tBT.js";import{a as be}from"./pricing-claims-5My0BwEb.js";import"./vendor-firebase-C5C_sMp4.js";function fe(l,r){const x=parseInt(l.slice(1,3),16),i=parseInt(l.slice(3,5),16),u=parseInt(l.slice(5,7),16);return`rgba(${x}, ${i}, ${u}, ${r})`}function je(l){switch(l){case"personal":return"secondary";case"starter":return"outline";case"professional":return"default";case"business":return"default";case"enterprise":return"default";default:return"secondary"}}function ye(l){try{return new Date(l).toLocaleDateString("en-AU",{day:"numeric",month:"short",year:"numeric"})}catch{return"---"}}function Ne(l,r){const x=l.plans.find(i=>i.id===r||i.name.toLowerCase()===r);return!x||x.priceMonthly===0?"Free":`$${x.priceMonthly}/mo + GST`}function ve({product:l,subscription:r,onManage:x,onCancel:i,onUpgrade:u,onReactivate:c}){const N=()=>{i(r.subId)},h=r.status==="past_due",p=r.plan==="personal",d=r.cancelAtPeriodEnd===!0&&!p;return e.jsx(ne,{className:"transition-all duration-200 hover:shadow-md",children:e.jsxs(re,{className:"p-5",children:[e.jsxs("div",{className:"flex items-start justify-between mb-4",children:[e.jsxs("button",{type:"button",onClick:()=>ie(l.url,"_blank"),className:"flex items-center gap-3 cursor-pointer hover:opacity-80 transition-opacity",children:[e.jsx("div",{className:"w-10 h-10 rounded-xl flex items-center justify-center text-base",style:{backgroundColor:fe(l.color,.1)},children:l.logoUrl?e.jsx("img",{src:l.logoUrl,alt:"",className:"w-6 h-6 animate-coin-spin"}):e.jsx("span",{children:l.icon})}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-sm font-semibold tracking-[-0.02em] text-gray-900",children:l.name}),e.jsx("p",{className:"text-sm font-semibold text-gray-900 mt-0.5",children:Ne(l,r.plan)})]})]}),e.jsx(le,{variant:je(r.plan),className:"capitalize",children:r.plan})]}),e.jsxs("div",{className:"space-y-2 mb-5",children:[e.jsxs("div",{className:"flex justify-between text-sm",children:[e.jsx("span",{className:"text-gray-500",children:"Status"}),e.jsx("span",{className:`font-medium ${h?"text-red-600":d?"text-amber-600":"text-gray-900"}`,children:h?"Past Due":d?"Cancels at period end":r.status==="trialing"?"Trial":"Active"})]}),r.currentPeriodEnd&&e.jsxs("div",{className:"flex justify-between text-sm",children:[e.jsx("span",{className:"text-gray-500",children:d?"Access until":"Next billing"}),e.jsx("span",{className:"font-medium text-gray-900",children:ye(r.currentPeriodEnd)})]}),e.jsxs("div",{className:"flex justify-between text-sm",children:[e.jsx("span",{className:"text-gray-500",children:"Seats"}),e.jsx("span",{className:"font-medium text-gray-900",children:r.seats})]}),(()=>{var g;const v=((g=l.plans.find(b=>b.id===r.plan))==null?void 0:g.smsAllowance)??0;return v>0?e.jsxs("div",{className:"flex justify-between text-sm",children:[e.jsx("span",{className:"text-gray-500",children:"SMS / month"}),e.jsx("span",{className:"font-medium text-gray-900",children:v.toLocaleString()})]}):null})()]}),h&&e.jsx("div",{className:"bg-red-50 border border-red-100 rounded-lg px-3 py-2 mb-4",children:e.jsx("p",{className:"text-xs text-red-700 font-medium",children:"Payment failed. Please update your billing information."})}),p?e.jsx(P,{className:"w-full bg-[#0097b2] hover:bg-[#007a91]",onClick:()=>u==null?void 0:u(r),children:"Choose a plan"}):d?e.jsxs("div",{className:"flex gap-2",children:[e.jsx(P,{className:"flex-1 bg-[#0097b2] hover:bg-[#007a91]",onClick:()=>c==null?void 0:c(r.subId),children:"Reactivate"}),e.jsx(P,{variant:"outline",onClick:()=>x(r.subId),children:"Manage"})]}):e.jsxs("div",{className:"flex gap-2",children:[e.jsx(P,{className:"flex-1",onClick:()=>x(r.subId),children:"Manage subscription"}),e.jsxs(ce,{children:[e.jsx(oe,{asChild:!0,children:e.jsx(P,{variant:"outline",className:"border-red-200 text-red-600 hover:bg-red-50 hover:text-red-700",children:"Cancel"})}),e.jsxs(de,{children:[e.jsxs(me,{children:[e.jsx(xe,{children:"Cancel subscription?"}),e.jsx(ue,{children:"Are you sure? Your access will continue until the end of the billing period."})]}),e.jsxs(he,{children:[e.jsx(pe,{children:"Keep Plan"}),e.jsx(ge,{onClick:N,className:"bg-red-600 hover:bg-red-700 text-white",children:"Confirm Cancel"})]})]})]})]})]})})}function we({product:l,loading:r,onChoose:x,onFree:i,onClose:u}){const[c,N]=o.useState("monthly"),h=l.plans.filter(a=>a.priceMonthly>0&&a.id!=="personal"&&a.id!=="enterprise"),p=h.some(a=>a.priceYearly>0),v=h.some(a=>a.priceUnit==="per_user")?" per person":"",g=p?"minmax(0,1.1fr) minmax(0,1fr) minmax(0,1fr)":"minmax(0,1.1fr) minmax(0,1fr)",[b,U]=o.useState(null),[w,S]=o.useState({}),A=h.find(a=>a.id===b)??null,$=be(h);return e.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/40 p-4",onClick:u,children:e.jsxs("div",{className:"w-full max-w-2xl rounded-2xl bg-white shadow-xl max-h-[90vh] overflow-y-auto",onClick:a=>a.stopPropagation(),children:[e.jsxs("div",{className:"flex items-start justify-between p-6 pb-4 border-b border-slate-100",children:[e.jsxs("div",{children:[e.jsxs("h2",{className:"text-xl font-bold tracking-[-0.02em] text-gray-900",children:["Choose ",/^[AEIOU]/i.test(l.name)?"an":"a"," ",l.name," plan"]}),e.jsx("p",{className:"text-sm text-slate-500 mt-1",children:l.tagline})]}),e.jsx("button",{onClick:u,className:"p-1 text-slate-400 hover:text-slate-700","aria-label":"Close",children:e.jsx(q,{className:"w-5 h-5"})})]}),e.jsxs("div",{className:"px-6 pt-4 flex items-end justify-between gap-4",children:[e.jsx("p",{className:"text-xs text-slate-500",children:"Every price excludes GST. Australian cards are charged 10% on top at checkout."}),p&&e.jsxs("div",{className:"inline-flex shrink-0 rounded-lg bg-slate-100 p-1 text-sm font-medium",children:[e.jsx("button",{onClick:()=>N("monthly"),"aria-pressed":c==="monthly",className:`px-4 py-1.5 rounded-md transition ${c==="monthly"?"bg-white shadow text-gray-900 font-semibold":"text-slate-600"}`,children:"Pay monthly"}),e.jsx("button",{onClick:()=>N("yearly"),"aria-pressed":c==="yearly",className:`px-4 py-1.5 rounded-md transition ${c==="yearly"?"bg-white shadow text-gray-900 font-semibold":"text-slate-600"}`,children:"Pay annually"})]})]}),e.jsxs("div",{className:"px-6 pt-5",children:[e.jsxs("div",{className:"grid gap-3 items-end",style:{gridTemplateColumns:g},children:[e.jsx("div",{}),e.jsx("div",{className:"px-1 pb-0.5 text-xs font-semibold uppercase tracking-wider text-slate-500",children:"Monthly"}),p&&e.jsxs("div",{className:"px-1 pb-0.5 flex items-baseline gap-2",children:[e.jsx("span",{className:"text-xs font-semibold uppercase tracking-wider text-gray-900",children:"Annual"}),$&&e.jsx("span",{className:"text-xs font-semibold text-[#0097b2]",children:$})]})]}),e.jsx("div",{className:"mt-2 flex flex-col gap-2.5",children:h.map(a=>{var I;const f=a.id===b,k=a.priceMonthly*12,M=k-a.priceYearly;return e.jsxs("div",{className:`rounded-xl p-1 transition ${f?"ring-2 ring-[#0097b2] ring-offset-1":""}`,children:[e.jsxs("button",{onClick:()=>U(a.id),"aria-pressed":f,className:`grid w-full gap-3 items-stretch text-left rounded-lg transition ${f?"":"hover:bg-slate-50"}`,style:{gridTemplateColumns:g},children:[e.jsxs("span",{className:"block py-3 px-2",children:[e.jsx("span",{className:"block text-sm font-semibold text-gray-900",children:a.name}),e.jsxs("span",{className:"block mt-0.5 text-xs text-slate-500",children:[a.seats," ",a.seats===1?"seat":"seats",a.smsAllowance?` · ${a.smsAllowance.toLocaleStr
1ing()} SMS/mo`:""]})]}),e.jsxs("span",{className:`block rounded-xl border p-4 ${c==="monthly"&&p?"border-[#0097b2] bg-[#0097b2]/5":"border-slate-200 bg-white"}`,children:[e.jsxs("span",{className:"flex items-baseline gap-1",children:[e.jsxs("span",{className:"text-xl font-bold text-gray-900 tabular-nums",children:["$",a.priceMonthly.toLocaleString("en-AU")]}),e.jsxs("span",{className:"text-xs text-slate-500",children:["/month",v]})]}),p&&a.priceYearly>0&&e.jsxs("span",{className:"block mt-1 text-xs text-slate-500 tabular-nums",children:["$",k.toLocaleString("en-AU")," over a year",v]})]}),p&&e.jsxs("span",{className:`block rounded-xl border p-4 ${c==="yearly"?"border-[#0097b2] bg-[#0097b2]/5":"border-slate-200 bg-white"}`,children:[e.jsxs("span",{className:"flex items-baseline gap-1",children:[e.jsxs("span",{className:"text-xl font-bold text-gray-900 tabular-nums",children:["$",a.priceYearly.toLocaleString("en-AU")]}),e.jsxs("span",{className:"text-xs text-slate-500",children:["/year",v]})]}),M>0&&e.jsxs("span",{className:"block mt-1 text-xs font-semibold text-[#007a91] tabular-nums",children:["Saves $",M.toLocaleString("en-AU")]})]})]}),(I=a.includes)!=null&&I.length?e.jsxs(e.Fragment,{children:[e.jsxs("button",{onClick:()=>S(C=>({...C,[a.id]:!C[a.id]})),"aria-expanded":!!w[a.id],className:"mt-1 flex items-center gap-1 px-2 py-1 text-xs font-medium text-slate-500 transition hover:text-[#0097b2]",children:[e.jsx(J,{className:`h-3.5 w-3.5 transition-transform ${w[a.id]?"rotate-180":""}`}),w[a.id]?"Hide details":`What's in ${a.name}`]}),w[a.id]&&e.jsx("ul",{className:"mb-1 ml-2 mt-0.5 flex flex-col gap-1.5 px-2 pb-1",children:a.includes.map(C=>e.jsxs("li",{className:"flex items-start gap-1.5 text-xs leading-relaxed text-slate-600",children:[e.jsx(ee,{className:"mt-0.5 h-3.5 w-3.5 shrink-0 text-[#0097b2]"}),e.jsx("span",{children:C})]},C))})]}):null]},a.id)})}),e.jsx(P,{onClick:()=>A&&x(l.productId,A.id,c),disabled:r||!A,className:"mt-5 w-full bg-[#0097b2] hover:bg-[#007a91]",children:r?"…":A?`Continue with ${A.name}, ${c==="yearly"?"annual":"monthly"}`:"Continue"})]}),i&&e.jsx("div",{className:"px-6 -mt-2 pb-2 text-center",children:e.jsx("button",{onClick:i,disabled:r,className:"text-sm font-medium text-slate-500 hover:text-[#0097b2] hover:underline disabled:opacity-50",children:"or start with the Free plan"})}),e.jsx("p",{className:"px-6 pb-2 text-xs text-slate-400 text-center",children:"Prices are in AUD and exclude GST. Australian businesses registered for GST can claim it back."}),e.jsx("p",{className:"px-6 pb-6 text-xs text-slate-400 text-center",children:"Paid plans go to a secure Stripe checkout. No card details touch our servers."})]})})}function Ee(){const l=se(),[r,x]=te(),i=r.get("product"),u=r.get("suggest"),[c,N]=o.useState(!1);o.useEffect(()=>{if(r.get("success")==="true")m("Payment received. Activating your plan…"),N(!0);else if(r.get("canceled")==="true")m("Checkout cancelled. No charge was made.");else return;const s=new URLSearchParams(r);s.delete("success"),s.delete("canceled"),x(s,{replace:!0})},[]);const[h,p]=o.useState(null),[d,v]=o.useState([]),[g,b]=o.useState([]),[U,w]=o.useState(!1),[S,A]=o.useState(!0),[$,a]=o.useState(null),[f,k]=o.useState(null);o.useEffect(()=>{async function s(){try{const[t,n]=await Promise.all([j.get("/api/products"),j.get("/api/orgs/me/subscriptions").catch(()=>({subscriptions:[],bundleDiscount:!1}))]);v(t),b(n.subscriptions||[]),w(n.bundleDiscount||!1)}catch(t){m.error(t instanceof Error?t.message:"Failed to load subscriptions")}finally{A(!1)}}s()},[]),o.useEffect(()=>{if(!c||S)return;const s=E=>["active","trialing"].includes(E.status)&&!["personal","free"].includes(E.plan),t=g.filter(s).length;let n=!1,y=0;const Y=async()=>{var E,G;if(!n){y+=1;try{const O=await j.get("/api/orgs/me/subscriptions"),_=O.subscriptions||[];if(n)return;b(_),w(O.bundleDiscount||!1);const T=_.filter(s);if(T.length>t){const D=T[T.length-1],L=d.find(F=>F.productId===D.productId),X=((G=(E=L==null?void 0:L.plans)==null?void 0:E.find(F=>F.id===D.plan))==null?void 0:G.name)??D.plan;m.success(`${(L==null?void 0:L.name)??D.productId} ${X} is live.`),ae(D.productId,D.plan),N(!1);return}}catch{}if(y>=15){m("Payment succeeded, but the plan is taking longer than usual to activate. Refresh in a moment."),N(!1);return}W=setTimeout(Y,2e3)}};let W=setTimeout(Y,1500);return()=>{n=!0,clearTimeout(W)}
1},[c,S]),o.useEffect(()=>{var t;if(S||!i||!d.some(n=>n.productId===i))return;p(i),(t=document.getElementById(`product-${i}`))==null||t.scrollIntoView({behavior:"smooth",block:"center"});const s=setTimeout(()=>p(null),4e3);return()=>clearTimeout(s)},[S,i,d]);const M=s=>d.find(t=>t.productId===s),I=g.filter(s=>s.status!=="canceled"),C=I.filter(s=>s.plan!=="personal").length,R=async s=>{a(s);try{const t=await j.post("/api/orgs/me/billing-portal"),n=t.portalUrl??t.url;n&&(n.startsWith("https://billing.stripe.com/")||n.startsWith("https://myandgo.com.au"))&&window.open(n,"_blank")}catch(t){m.error(t instanceof Error?t.message:"Failed to open billing portal")}finally{a(null)}},V=async s=>{a(s);try{await j.delete(`/api/orgs/me/subscriptions/${s}`),b(t=>t.map(n=>n.subId===s?{...n,cancelAtPeriodEnd:!0}:n)),m("Subscription set to cancel at the end of the billing period.")}catch(t){m.error(t instanceof Error?t.message:"Failed to cancel subscription")}finally{a(null)}},Z=async s=>{a(s);try{await j.post(`/api/orgs/me/subscriptions/${s}/reactivate`),b(t=>t.map(n=>n.subId===s?{...n,cancelAtPeriodEnd:!1}:n)),m.success("Subscription reactivated. It will keep renewing.")}catch(t){m.error(t instanceof Error?t.message:"Failed to reactivate subscription")}finally{a(null)}},z=async s=>{a(s);try{const t=d.find(n=>n.productId===s);if(t!=null&&t.hasFreeTier){await j.post("/api/orgs/me/subscriptions",{productId:s,plan:"personal",interval:"monthly"}),m.success("Free plan activated!");const n=await j.get("/api/orgs/me/subscriptions").catch(()=>({subscriptions:[],bundleDiscount:!1}));b(n.subscriptions||[]),w(n.bundleDiscount||!1)}else{H(s,"starter","monthly");const n=await j.post("/api/orgs/me/subscriptions",{productId:s,plan:"starter",interval:"monthly"});n.checkoutUrl&&n.checkoutUrl.startsWith("https://checkout.stripe.com/")&&(window.location.href=n.checkoutUrl)}}catch(t){m.error(t instanceof Error?t.message:"Failed to start checkout")}finally{a(null)}},K=async(s,t,n)=>{a(s);try{H(s,t,n);const y=await j.post("/api/orgs/me/subscriptions",{productId:s,plan:t,interval:n});y.checkoutUrl&&y.checkoutUrl.startsWith("https://checkout.stripe.com/")?window.location.href=y.checkoutUrl:m.error("Could not start checkout. Please try again.")}catch(y){m.error(y instanceof Error?y.message:"Failed to start checkout")}finally{a(null)}},Q=s=>{const t=d.find(n=>n.productId===s.productId);t&&k(t)};if(S)return e.jsx("div",{className:"flex items-center justify-center py-32",children:e.jsx("div",{className:"w-6 h-6 border-2 border-primary border-t-transparent rounded-full animate-spin"})});const B=d.filter(s=>s.status==="live"&&!g.some(t=>t.productId===s.productId&&t.status!=="canceled"));return e.jsxs("div",{children:[e.jsxs("div",{className:"mb-8",children:[e.jsx("h1",{className:"text-2xl font-semibold tracking-[-0.02em] text-gray-900",children:"Subscriptions"}),e.jsx("p",{className:"text-sm text-gray-500 mt-1",children:"Manage your product plans and billing."})]}),i&&(()=>{const s=d.find(n=>n.productId===i);if(!s)return null;const t=u?u.charAt(0).toUpperCase()+u.slice(1):null;return e.jsxs("div",{className:"bg-amber-50 border border-amber-200 rounded-xl px-5 py-3.5 mb-8",children:[e.jsxs("p",{className:"text-sm font-medium text-amber-900",children:["You've reached your plan's limit on ",s.name,"."]}),e.jsx("p",{className:"text-xs text-amber-700 mt-0.5",children:t?`Open Manage on the ${s.name} card below to move up to ${t}.`:`Open Manage on the ${s.name} card below to choose a plan that fits.`})]})})(),U&&C>=2&&e.jsxs("div",{className:"bg-primary/10 border border-primary/20 rounded-xl px-5 py-3.5 mb-8 flex items-center gap-3",children:[e.jsx("div",{className:"w-8 h-8 rounded-lg bg-primary/20 flex items-center justify-center flex-shrink-0",children:e.jsx("svg",{className:"w-4 h-4 text-primary",fill:"none",viewBox:"0 0 24 24",strokeWidth:2,stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9.813 15.904 9 18.75l-.813-2.846a4.5 4.5 0 0 0-3.09-3.09L2.25 12l2.846-.813a4.5 4.5 0 0 0 3.09-3.09L9 5.25l.813 2.846a4.5 4.5 0 0 0 3.09 3.09
1L15.75 12l-2.846.813a4.5 4.5 0 0 0-3.09 3.09ZM18.259 8.715 18 9.75l-.259-1.035a3.375 3.375 0 0 0-2.455-2.456L14.25 6l1.036-.259a3.375 3.375 0 0 0 2.455-2.456L18 2.25l.259 1.035a3.375 3.375 0 0 0 2.455 2.456L21.75 6l-1.036.259a3.375 3.375 0 0 0-2.455 2.456Z"})})}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium text-primary/80",children:"You're saving 20% with the AndGo Bundle!"}),e.jsxs("p",{className:"text-xs text-primary/60 mt-0.5",children:[C," paid products -- 20% discount applied automatically."]})]})]}),I.length>0?e.jsxs("div",{className:"mb-10",children:[e.jsx("h2",{className:"text-lg font-semibold tracking-[-0.02em] text-gray-900 mb-4",children:"Your Plans"}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4",children:I.map(s=>{const t=M(s.productId);return t?e.jsx("div",{id:`product-${s.productId}`,className:h===s.productId?"rounded-xl ring-2 ring-primary ring-offset-2 transition-all":"transition-all",children:e.jsx(ve,{product:t,subscription:s,onManage:R,onCancel:V,onUpgrade:Q,onReactivate:Z})},s.subId):null})})]}):e.jsxs("div",{className:"text-center py-16 bg-white rounded-xl border border-slate-200 mb-10",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-muted flex items-center justify-center mx-auto mb-4",children:e.jsx("svg",{className:"w-6 h-6 text-gray-400",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M2.25 8.25h19.5M2.25 9h19.5m-16.5 5.25h6m-6 2.25h3m-3.75 3h15a2.25 2.25 0 0 0 2.25-2.25V6.75A2.25 2.25 0 0 0 19.5 4.5h-15a2.25 2.25 0 0 0-2.25 2.25v10.5A2.25 2.25 0 0 0 4.5 19.5Z"})})}),e.jsx("h3",{className:"text-sm font-semibold text-gray-900 mb-1",children:"No subscriptions yet"}),e.jsx("p",{className:"text-sm text-gray-500 mb-4",children:"Explore products on the Dashboard to get started."}),e.jsx(P,{onClick:()=>l("/"),children:"Browse Products"})]}),B.length>0&&e.jsxs("div",{children:[e.jsx("h2",{className:"text-lg font-semibold tracking-[-0.02em] text-gray-900 mb-4",children:"Add a Product"}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4",children:B.map(s=>e.jsxs("div",{id:`product-${s.productId}`,className:`bg-white rounded-xl border p-5 transition-all duration-200 hover:shadow-md cursor-pointer ${h===s.productId?"border-primary ring-2 ring-primary ring-offset-2":"border-slate-200"}`,onClick:()=>k(s),children:[e.jsxs("div",{className:"flex items-center gap-3 mb-3",children:[e.jsx("div",{className:"w-10 h-10 rounded-xl flex items-center justify-center text-base",style:{backgroundColor:`${s.color}1a`},children:s.logoUrl?e.jsx("img",{src:s.logoUrl,alt:"",className:"w-6 h-6 animate-coin-spin"}):e.jsx("span",{children:s.icon})}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-sm font-semibold tracking-[-0.02em] text-gray-900",children:s.name}),e.jsx("p",{className:"text-xs text-gray-500",children:s.tagline})]})]}),e.jsx(P,{onClick:t=>{t.stopPropagation(),k(s)},disabled:$===s.productId,className:"w-full",children:$===s.productId?e.jsxs("span",{className:"flex items-center justify-center gap-2",children:[e.jsx("span",{className:"w-3.5 h-3.5 border-2 border-white border-t-transparent rounded-full animate-spin"}),"Starting..."]}):"Choose a plan"})]},s.productId))})]}),f&&e.jsx(we,{product:f,loading:$===f.productId,onChoose:(s,t,n)=>K(s,t,n),onFree:f.hasFreeTier&&!g.some(s=>s.productId===f.productId&&s.status!=="canceled")?()=>{const s=f.productId;k(null),z(s)}:void 0,onClose:()=>k(null)})]})}export{Ee as Subscriptions};

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.