import{d as ne,bl as me,bm as ce,Y as E,b as y,ae as $e,Z as Xe,o as t,c as i,F as V,p as be,n as ae,r as Te,a as o,e as Ee,_ as qe,g as _,l as e,bL as dt,bt as ie,f as He,h as B,dO as ct,i as $,t as b,dP as pt,dQ as mt,dK as vt,k as _e,w as X,ct as Je,q as ue,bw as Oe,j as q,aS as Qe,dR as ft,bx as Ce,b5 as Ie,c2 as Ze,bu as gt,v as ze,x as de,dS as et,s as yt,bS as ht,X as Ne,dM as bt,L as kt,G as xt,bo as Se,bp as Ue,bJ as wt,bc as Pt,V as tt,N as je,E as _t,b3 as Ae,dT as St,az as Mt,cm as De,ag as $t,c$ as Ge,aw as Ct}from"./Co0rzPff.js";import{c as Me,p as xe}from"./DcFkmsmp.js";import{N as It}from"./DXpa0SRI.js";import{f as re}from"./WM7oQQBD.js";import{_ as Et}from"./N3sMM75Y.js";import{S as Rt}from"./B_QGMTtP.js";import{l as at}from"./z-xUYPp7.js";import{C as Bt}from"./B1zKQxf0.js";import{_ as Lt}from"./qC9qCRM4.js";import{A as Vt}from"./wH9RihXo.js";const Tt=["onClick"],Ut=ne({__name:"OptionGroup",props:me({options:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(x){const l=ce(x,"modelValue"),r=x,a=E(null),u=E(4),d=E(4),n=E(4),v=E(4),L=y(()=>`${u.value}px`),z=y(()=>`${d.value}px`),k=y(()=>`${n.value}px`),f=y(()=>`${v.value}px`),C=E(),G=E(!1);function T(P){l.value=P}$e(l,()=>{H(r.options.indexOf(l.value))});function H(P){const h=C.value[P];if(!h||!h.offsetParent)return;const c={left:h.offsetLeft,top:h.offsetTop,right:h.offsetParent.offsetWidth-h.offsetLeft-h.offsetWidth,bottom:h.offsetParent.offsetHeight-h.offsetTop-h.offsetHeight};u.value===4&&n.value===4?(u.value=c.left,n.value=c.right,d.value=c.top,v.value=c.bottom):(c.left{n.value=c.right},200)):(n.value=c.right,setTimeout(()=>{u.value=c.left},200)),c.top{v.value=c.bottom},200)):(v.value=c.bottom,setTimeout(()=>{d.value=c.top},200))),G.value=!0}return Xe(()=>{H(r.options.indexOf(l.value))}),(P,h)=>(t(),i("nav",{ref_key:"scrollContainer",ref:a,class:"card-shadow experimental-styles-within relative flex w-fit overflow-x-auto rounded-full bg-bg-raised p-1 text-sm font-bold"},[(t(!0),i(V,null,be(P.options,(c,U)=>(t(),i("button",{key:`option-group-${U}`,ref_for:!0,ref_key:"optionButtons",ref:C,class:ae(["button-animation z-[1] flex flex-row items-center gap-2 rounded-full bg-transparent px-4 py-2 font-semibold",{"text-button-textSelected":l.value===c,"text-primary":l.value!==c}]),onClick:A=>T(c)},[Te(P.$slots,"default",{option:c,selected:l.value===c},void 0,!0)],10,Tt))),128)),o("div",{class:"navtabs-transition pointer-events-none absolute h-[calc(100%-0.5rem)] overflow-hidden rounded-full bg-button-bgSelected p-1",style:Ee({left:L.value,top:z.value,right:k.value,bottom:f.value,opacity:G.value?1:0}),"aria-hidden":"true"},null,4)],512))}}),jt=qe(Ut,[["__scopeId","data-v-7d4483db"]]);var nt="basil",qt=function(l){return l===3?"v3":l},st="https://js.stripe.com",zt="".concat(st,"/").concat(nt,"/stripe.js"),Nt=/^https:\/\/js\.stripe\.com\/v3\/?(\?.*)?$/,Ft=/^https:\/\/js\.stripe\.com\/(v3|[a-z]+)\/stripe\.js(\?.*)?$/,Ye="loadStripe.setLoadParameters was called but an existing Stripe.js script already exists in the document; existing script parameters will be used",Ot=function(l){return Nt.test(l)||Ft.test(l)},Zt=function(){for(var l=document.querySelectorAll('script[src^="'.concat(st,'"]')),r=0;r element.");return u.appendChild(a),a},At=function(l,r){!l||!l._registerWrapper||l._registerWrapper({name:"stripe-js",version:"7.3.1",startTime:r})},fe=null,we=null,Pe=null,Dt=function(l){return function(r){l(new Error("Failed to load Stripe.js",{cause:r}))}},Gt=function(l,r){return function(){window.Stripe?l(window.Stripe):r(new Error("Stripe.js not available"))}},Yt=function(l){return fe!==null?fe:(fe=new Promise(function(r,a){if(typeof window>"u"||typeof document>"u"){r(null);return}if(window.Stripe&&l&&console.warn(Ye),window.Stripe){r(window.Stripe);return}try{var u=Zt();if(u&&l)console.warn(Ye);else if(!u)u=Ke(l);else if(u&&Pe!==null&&we!==null){var d;u.removeEventListener("load",Pe),u.removeEventListener("error",we),(d=u.parentNode)===null||d===void 0||d.removeChild(u),u=Ke(l)}Pe=Gt(r,a),we=Dt(a),u.addEventListener("load",Pe),u.addEventListener("error",we)}catch(n){a(n);return}}),fe.catch(function(r){return fe=null,Promise.reject(r)}))},Kt=function(l,r,a){if(l===null)return null;var u=r[0],d=u.match(/^pk_test/),n=qt(l.version),v=nt;d&&n!==v&&console.warn("Stripe.js@".concat(n," was loaded on the page, but @stripe/stripe-js@").concat("7.3.1"," expected Stripe.js@").concat(v,". This may result in unexpected behavior. For more information, see https://docs.stripe.com/sdks/stripejs-versioning"));var L=l.apply(void 0,r);return At(L,a),L},ge,ot=!1,rt=function(){return ge||(ge=Yt(null).catch(function(l){return ge=null,Promise.reject(l)}),ge)};Promise.resolve().then(function(){return rt()}).catch(function(x){ot||console.warn(x)});var Wt=function(){for(var l=arguments.length,r=new Array(l),a=0;a(t(),i("div",{class:ae(["flex items-center gap-2 font-semibold",l.error?"text-red":"animate-pulse"])},[l.error?(t(),_(e(dt),{key:0,class:"w-6 h-6"})):(t(),_(e(ie),{key:1,class:"w-6 h-6 animate-spin"})),l.error?Te(l.$slots,"error",{key:2},void 0,!0):Te(l.$slots,"default",{key:3},void 0,!0)],2))}}),lt=qe(Xt,[["__scopeId","data-v-422613a2"]]),Ht=(x,l,r,a,u,d,n,v,L,z)=>{const k=E(null);let f;const C=E(0),G=E(!1),T=E(!1),H=E(),P=E(),h=E(),c=E(),U=E(),A=E(!1),R=E(),S=E(),I=E(),w=E(!1),j=E(!1);async function F(){k.value=await Wt(x)}function s(M){return L(M)}function g(M){return L(M)}const O=y(()=>{var M;return(M=u.value)==null?void 0:M.prices.find(N=>N.currency_code===a)}),K=M=>{const N=getComputedStyle(document.body);if(!k.value)throw new Error("Stripe API not yet loaded");f=k.value.elements({appearance:{variables:{colorPrimary:N.getPropertyValue("--color-brand"),colorBackground:N.getPropertyValue("--color-button-bg"),colorText:N.getPropertyValue("--color-base"),colorTextPlaceholder:N.getPropertyValue("--color-secondary"),colorDanger:N.getPropertyValue("--color-red"),fontFamily:N.getPropertyValue("--font-standard"),spacingUnit:"0.25rem",borderRadius:"0.75rem"}},loader:"never",...M});const ee=f.create("payment",{layout:{type:"tabs",defaultCollapsed:!1}});ee.mount("#payment-element");const Q=[];r.forEach(p=>{var Y;const m=(Y=p.billing_details)==null?void 0:Y.address;m&&m.line1&&m.city&&m.postal_code&&m.country&&m.state&&p.billing_details.name&&Q.push({address:{line1:m.line1,line2:m.line2??void 0,city:m.city,state:m.state,postal_code:m.postal_code,country:m.country},name:p.billing_details.name})});const oe=f.create("address",{mode:"billing",contacts:Q.length>0?Q:void 0});return oe.mount("#address-element"),{elements:f,paymentElement:ee,addressElement:oe}},W=y(()=>{if(l&&l.invoice_settings&&l.invoice_settings.default_payment_method){const M=l.invoice_settings.default_payment_method;return typeof M=="string"?M:M.id}else return r&&r[0]&&r[0].id?r[0].id:null}),te=async()=>{var M,N;H.value=void 0;try{if(!l&&W.value&&(T.value=!0,await se(W.value,!1),T.value=!1),!R.value){C.value=0;const{elements:ee,addressElement:Q,paymentElement:oe}=K({mode:"payment",currency:a.toLowerCase(),amount:(N=(M=u.value)==null?void 0:M.prices.find(p=>p.currency_code===a))==null?void 0:N.prices.intervals[d.value],paymentMethodCreation:"manual",setupFutureUsage:"off_session"});f=ee,oe.on("ready",()=>{C.value+=1}),Q.on("ready",()=>{C.value+=1})}}catch(ee){H.value=String(ee),console.log(ee)}};async function se(M,N){var ee;try{T.value=!0,N||(R.value=r.find(Y=>Y.id===M));const Q=N?{type:"confirmation_token",token:M}:{type:"payment_method",id:M};if(!u.value)return J("No product selected");const oe={type:"new",product_id:(ee=u.value)==null?void 0:ee.id,interval:d.value};let p=null;const m={type:"pyro",server_region:n.value,source:v.value?{project_id:v.value}:{}};if(P.value)p=await g({...Q,charge:oe,existing_payment_intent:P.value,metadata:m}),p&&console.log(`Updated payment intent: ${d.value} for ${p.total}`);else{const Y=await s({...Q,charge:oe,metadata:m});Y&&(P.value=Y.payment_intent_id,I.value=Y.client_secret,p=Y,console.log(`Created payment intent: ${d.value} for ${Y.total}`))}p?(h.value=p.tax,c.value=p.total,j.value=!1):(h.value=0,c.value=0,j.value=!0),N&&(U.value=M,p&&p.payment_method&&(S.value=p.payment_method))}catch(Q){J(Q)}T.value=!1}async function D(){if(!f)return J("No elements");if(!k.value)return J("No stripe");const{error:M,confirmationToken:N}=await k.value.createConfirmationToken({elements:f});if(M){J(M.message??"Unknown error creating confirmation token");return}return N.id}function J(M){T.value=!1,w.value=!1,z(typeof M=="string"?new Error(M):M)}async function ve(){if(T.value=!0,!f)return J("No elements");const{error:M}=await f.submit();if(M)return J(M.message??"Unknown error creating payment method");const N=await D();return N?(await se(N,!0),O.value?c.value?(f.update({currency:O.value.currency_code.toLowerCase(),amount:c.value}),C.value=0,U.value=N,T.value=!1,N):J("No total amount"):J("No plan prices")):J("Failed to create confirmation token")}async function Re(M){R.value=M,M===void 0?await te():se(M.id,!1)}const ke=y(()=>C.value<2);async function Be(M){var Q,oe;if(j.value)return w.value=!1,!0;w.value=!0;const N=I.value;if(!N)return J("No client secret");if(!k.value)return J("No stripe");A.value=!0;const{error:ee}=await k.value.confirmPayment({clientSecret:N,confirmParams:{confirmation_token:U.value,return_url:`${M}?priceId=${(oe=(Q=u.value)==null?void 0:Q.prices.find(p=>p.currency_code===a))==null?void 0:oe.id}&plan=${d.value}`}});return ee?(J(ee.message??"Unknown error submitting payment"),!1):(A.value=!1,w.value=!1,!0)}async function Le(){if(console.log("selected:",R.value),console.log("token:",U.value),R.value)await se(R.value.id,!1);else if(U.value)await se(U.value,!0);else throw new Error("No payment method selected")}const pe=y(()=>R.value||U.value||j.value);return{initializeStripe:F,selectPaymentMethod:Re,reloadPaymentIntent:Le,primaryPaymentMethodId:W,selectedPaymentMethod:R,inputtedPaymentMethod:S,hasPaymentMethod:pe,createNewPaymentMethod:ve,loadingElements:ke,loadingElementsFailed:G,paymentMethodLoading:T,loadStripeElements:te,tax:h,total:c,submitPayment:Be,completingPurchase:w,noPaymentRequired:j}},ye={monthly:1,quarterly:3,yearly:12},Jt={class:"m-0 flex list-none flex-col gap-2 px-0 text-sm leading-normal text-secondary"},Qt={class:"flex items-center gap-2"},ea={class:"flex items-center gap-2"},ta={class:"flex items-center gap-2"},aa={class:"flex items-center gap-2"},Fe=ne({__name:"ServersSpecs",props:{ram:{},storage:{},cpus:{}},emits:["click-bursting-link"],setup(x,{emit:l}){const r=l,a=x,u=y(()=>a.ram/1024),d=y(()=>a.storage/1024),n=y(()=>a.cpus/2);return(v,L)=>{const z=He("tooltip");return t(),i("ul",Jt,[o("li",Qt,[B(e(ct),{class:"h-5 w-5 shrink-0"}),$(" "+b(u.value)+" GB RAM ",1)]),o("li",ea,[B(e(pt),{class:"h-5 w-5 shrink-0"}),$(" "+b(d.value)+" GB Storage ",1)]),o("li",ta,[B(e(mt),{class:"h-5 w-5 shrink-0"}),$(" "+b(n.value)+" Shared CPUs ",1)]),o("li",aa,[B(e(vt),{class:"h-5 w-5 shrink-0"}),$(" Bursts up to "+b(v.cpus)+" CPUs ",1),_e((t(),_(Et,{class:"flex",to:"https://test.kalataka.ru/servers#cpu-burst",target:"_blank",onClick:L[0]||(L[0]=()=>r("click-bursting-link"))},{default:X(()=>[B(e(Je),{class:"h-4 w-4 text-secondary opacity-80"})]),_:1})),[[z,"CPU bursting allows your server to temporarily use additional threads to help mitigate TPS spikes. Click for more info."]])])])}}}),na=["aria-pressed"],sa={class:"flex h-full flex-col justify-between gap-2"},oa={class:"flex flex-col"},ra={class:"flex items-center justify-between"},la={class:"text-2xl font-semibold text-contrast"},ia={key:0,class:"relative w-fit rounded-full bg-highlight-green px-3 py-1 text-sm font-bold text-brand backdrop-blur-lg"},ua={class:"m-0 text-lg font-bold text-contrast"},da={class:"text-sm font-semibold text-secondary"},ca={class:"text-sm"},pa={class:"w-fit"},ma=["aria-expanded"],va={class:"w-fit rounded-md border border-contrast/10 p-3 shadow-lg"},Ve=ne({__name:"ModalBasedServerPlan",props:{plan:{},title:{},description:{},buttonColor:{default:"standard"},mostPopular:{type:Boolean,default:!1},selected:{type:Boolean,default:!1}},emits:["select"],setup(x,{emit:l}){const r=x,a=l,{formatMessage:u,locale:d}=ue(),n=Oe("selectedInterval"),v=Oe("currency"),L=y(()=>{var f,C,G,T;if(!r.plan||!v||!(n!=null&&n.value))return;const k=(T=(G=(C=(f=r.plan.prices)==null?void 0:f.find(H=>H.currency_code===v))==null?void 0:C.prices)==null?void 0:G.intervals)==null?void 0:T[n.value];if(k)return k/ye[n.value]}),z=y(()=>{if(!r.mostPopular)return;const k={backgroundImage:"radial-gradient(86.12% 101.64% at 95.97% 94.07%, rgba(27, 217, 106, 0.23) 0%, rgba(14, 115, 56, 0.2) 100%)",boxShadow:"0px 12px 38.1px rgba(27, 217, 106, 0.13)"};return r.selected||(k.borderColor="rgba(12, 107, 52, 0.55)"),k});return(k,f)=>(t(),i("div",{class:ae(["rounded-2xl p-4 font-semibold transition-all duration-300 experimental-styles-within h-full border-2 border-solid cursor-pointer select-none",{"bg-brand-highlight border-brand":k.selected,"bg-button-bg border-transparent":!k.selected,"!bg-bg":k.mostPopular}]),style:Ee(z.value),role:"button",tabindex:"0","aria-pressed":k.selected,onClick:f[0]||(f[0]=C=>a("select",k.plan)),onKeydown:[f[1]||(f[1]=Ce(Ie(C=>a("select",k.plan),["prevent"]),["enter"])),f[2]||(f[2]=Ce(Ie(C=>a("select",k.plan),["prevent"]),["space"]))]},[o("div",sa,[o("div",oa,[o("div",ra,[o("span",la,b(e(u)(k.title)),1),k.mostPopular?(t(),i("div",ia," Most Popular ")):q("",!0)]),o("span",ua,[$(b(e(re)(e(d),L.value,e(v),!0))+" ",1),o("span",da," / month"+b(e(n)!=="monthly"?`, billed ${e(n)}`:""),1)])]),o("span",ca,b(e(u)(k.description)),1),o("div",pa,[B(e(ft),{placement:"bottom-start",triggers:["hover","focus"],"auto-hide":!0,delay:{show:100,hide:120},distance:6},{default:X(({shown:C})=>[o("div",{class:ae(["flex w-fit items-center gap-2 cursor-help text-sm font-medium cursor-default select-none outline-none",C?"text-primary":"text-secondary"]),role:"button",tabindex:"0","aria-haspopup":"true","aria-expanded":C},[B(e(Qe)),f[3]||(f[3]=$(" View plan details "))],10,ma)]),popper:X(()=>[o("div",va,[B(Fe,{ram:k.plan.metadata.ram,storage:k.plan.metadata.storage,cpus:k.plan.metadata.cpu},null,8,["ram","storage","cpus"])])]),_:1})])])],46,na))}}),fa={class:"grid grid-cols-[1fr_auto_1fr] items-center gap-3 mb-5 !mt-0"},ga={key:1},ya={key:2},ha={class:"bg-transparent p-0 text-sm text-xs font-bold text-brand"},ba={key:0,class:"text-orange mb-5 text-center",role:"alert"},ka={class:"grid grid-cols-1 sm:grid-cols-2 !gap-4"},xa=["aria-pressed","onKeydown"],wa={class:"flex h-full flex-col justify-between"},Pa={class:"flex flex-col gap-2"},_a={class:"m-0 text-lg font-bold text-contrast"},Sa={class:"text-sm font-semibold text-secondary"},Ma={class:"text-sm"},$a={class:"flex flex-col gap-2"},Ca={class:"flex items-center gap-3"},Ia={key:0,class:"text-sm text-secondary"},Ea=ne({__name:"ServersPurchase0Plan",props:me({availableProducts:{},currency:{},existingPlan:{}},{plan:{},planModifiers:{},interval:{},intervalModifiers:{}}),emits:me(["choose-custom"],["update:plan","update:interval"]),setup(x,{emit:l}){const{formatMessage:r,locale:a}=ue(),u=x,d=["monthly","quarterly"],n=ce(x,"plan"),v=ce(x,"interval"),L=l,z=ze({title:{id:"servers.purchase.step.plan.prompt",defaultMessage:"Choose a plan"},subtitle:{id:"servers.purchase.step.plan.subtitle",defaultMessage:"Pick the amount of RAM and specs that fit your needs."},selectPlan:{id:"servers.purchase.step.plan.select",defaultMessage:"Select Plan"},getStarted:{id:"servers.purchase.step.plan.get-started",defaultMessage:"Get started"},billed:{id:"servers.purchase.step.plan.billed",defaultMessage:"billed {interval}"},smallDesc:{id:"servers.purchase.step.plan.small.desc",defaultMessage:"Perfect for 1–5 friends with a few light mods."},mediumDesc:{id:"servers.purchase.step.plan.medium.desc",defaultMessage:"Great for 6–15 players and multiple mods."},largeDesc:{id:"servers.purchase.step.plan.large.desc",defaultMessage:"Ideal for 15–25 players, modpacks, or heavy modding."},customDesc:{id:"servers.purchase.step.plan.custom.desc",defaultMessage:"Pick a customized plan with just the specs you need."},mostPopular:{id:"servers.purchase.step.plan.most-popular",defaultMessage:"Most Popular"}}),k=y(()=>!!(u.existingPlan&&n.value&&u.existingPlan.id===n.value.id)),f=y(()=>{var h;const P={small:void 0,medium:void 0,large:void 0};for(const c of u.availableProducts)((h=c==null?void 0:c.metadata)==null?void 0:h.type)==="pyro"&&(c.metadata.ram===4096?P.small=c:c.metadata.ram===6144?P.medium=c:c.metadata.ram===8192&&(P.large=c));return P});function C(){L("choose-custom")}function G(P){var c,U,A,R;if(!P)return;const h=(R=(A=(U=(c=P.prices)==null?void 0:c.find(S=>S.currency_code===u.currency))==null?void 0:U.prices)==null?void 0:A.intervals)==null?void 0:R[v.value];if(h)return h/ye[v.value]}const T=y(()=>{var h;let P;for(const c of u.availableProducts){const U=G(c),A=(((h=c==null?void 0:c.metadata)==null?void 0:h.ram)??0)/1024;if(U&&A>0){const R=U/A;(P===void 0||R{let P;for(const h of u.availableProducts){const c=G(h);c&&(P===void 0||c{var c,U,A;return t(),i(V,null,[o("div",fa,[h[4]||(h[4]=o("span",null,null,-1)),B(jt,{modelValue:v.value,"onUpdate:modelValue":h[0]||(h[0]=R=>v.value=R),class:"!bg-button-bg !shadow-none",options:d},{default:X(({option:R})=>[R==="monthly"?(t(),i(V,{key:0},[$(" Pay monthly ")],64)):R==="quarterly"?(t(),i("span",ga," Pay quarterly ")):R==="yearly"?(t(),i("span",ya," Pay yearly ")):q("",!0)]),_:1},8,["modelValue"]),o("span",ha,b(v.value!=="quarterly"?"Save":"Saving")+" 16% with quarterly billing! ",1)]),B(gt,{"enter-active-class":"transition-all duration-300 ease-out","enter-from-class":"opacity-0 max-h-0","enter-to-class":"opacity-100 max-h-20","leave-active-class":"transition-all duration-200 ease-in","leave-from-class":"opacity-100 max-h-20","leave-to-class":"opacity-0 max-h-0"},{default:X(()=>[k.value?(t(),i("div",ba," Your server is already on this plan, choose a different plan. ")):q("",!0)]),_:1}),o("div",ka,[f.value.small?(t(),_(Ve,{key:0,plan:f.value.small,title:{id:"servers.purchase.step.plan.small",defaultMessage:"Small"},description:e(z).smallDesc,"button-color":"blue",selected:((c=n.value)==null?void 0:c.id)===f.value.small.id,onSelect:h[1]||(h[1]=R=>n.value=R)},null,8,["plan","description","selected"])):q("",!0),f.value.medium?(t(),_(Ve,{key:1,plan:f.value.medium,title:{id:"servers.purchase.step.plan.medium",defaultMessage:"Medium"},description:e(z).mediumDesc,"most-popular":"","button-color":"brand",selected:((U=n.value)==null?void 0:U.id)===f.value.medium.id,onSelect:h[2]||(h[2]=R=>n.value=R)},null,8,["plan","description","selected"])):q("",!0),f.value.large?(t(),_(Ve,{key:2,plan:f.value.large,title:{id:"servers.purchase.step.plan.large",defaultMessage:"Large"},description:e(z).largeDesc,"button-color":"purple",selected:((A=n.value)==null?void 0:A.id)===f.value.large.id,onSelect:h[3]||(h[3]=R=>n.value=R)},null,8,["plan","description","selected"])):q("",!0),H.value?(t(),i("div",{key:3,class:ae(["rounded-2xl p-4 font-semibold transition-all duration-300 experimental-styles-within h-full border-2 border-solid cursor-pointer select-none",n.value?"bg-button-bg border-transparent":"bg-brand-highlight border-brand"]),role:"button",tabindex:"0","aria-pressed":!n.value,onClick:C,onKeydown:[Ce(Ie(C,["prevent"]),["enter"]),Ce(Ie(C,["prevent"]),["space"])]},[o("div",wa,[o("div",Pa,[h[6]||(h[6]=o("div",{class:"flex items-center justify-between"},[o("span",{class:"text-2xl font-semibold text-contrast"},"Custom")],-1)),o("span",_a,[$(b(e(re)(e(a),H.value,P.currency,!0))+" ",1),o("span",Sa,[h[5]||(h[5]=$(" / month")),v.value!=="monthly"?(t(),i(V,{key:0},[$(", billed "+b(v.value),1)],64)):q("",!0)])]),o("span",Ma,b(e(r)(e(z).customDesc)),1)]),o("div",$a,[o("div",Ca,[T.value?(t(),i("span",Ia," From "+b(e(re)(e(a),T.value,P.currency,!0))+" / GB ",1)):q("",!0)])])])],42,xa)):q("",!0)])],64)}}}),he={"us-vin":{name:de({id:"servers.region.north-america",defaultMessage:"North America"}),flag:"https://flagcdn.com/us.svg"},"eu-cov":{name:de({id:"servers.region.western-europe",defaultMessage:"Western Europe"}),flag:"https://flagcdn.com/gb.svg"},"eu-lim":{name:de({id:"servers.region.central-europe",defaultMessage:"Central Europe"}),flag:"https://flagcdn.com/de.svg"},"as-sin":{name:de({id:"servers.region.southeast-asia",defaultMessage:"Southeast Asia"}),flag:"https://flagcdn.com/sg.svg"}},Ra=["disabled"],Ba=["src"],La={class:"flex flex-col gap-1 items-center"},Va={class:"flex items-center gap-1 flex-wrap justify-center"},Ta={key:0,class:"text-sm text-secondary"},Ua={class:"text-xs flex items-center flex-wrap justify-center gap-1 text-secondary font-medium"},ja={key:0},qa={key:1,class:"flex gap-1 items-center"},za={key:3},Na=ne({__name:"ServersRegionButton",props:me({region:{},ping:{},bestPing:{type:Boolean},outOfStock:{type:Boolean}},{modelValue:{required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(x){const{formatMessage:l}=ue(),r=ce(x,"modelValue"),a=x,u=y(()=>r.value===a.region.shortcode),d=y(()=>{var f;return((f=he[a.region.shortcode])==null?void 0:f.flag)??`https://flagcdn.com/${a.region.country_code}.svg`}),n=y(()=>{var f;return(f=he[a.region.shortcode])==null?void 0:f.name}),v=y(()=>n.value?l(n.value):a.region.display_name),L=y(()=>n.value?a.region.display_name:void 0),z=y(()=>at(a.ping??0));function k(){r.value=a.region.shortcode}return(f,C)=>(t(),i("button",{disabled:f.outOfStock,class:ae(["rounded-2xl p-4 font-semibold transition-all border-2 border-solid flex flex-col items-center gap-3",{"bg-button-bg border-transparent text-primary":!u.value,"bg-brand-highlight border-brand text-contrast":u.value,"opacity-50 cursor-not-allowed":f.outOfStock,"hover:text-contrast active:scale-95 hover:brightness-[--hover-brightness] focus-visible:brightness-[--hover-brightness] ":!f.outOfStock}]),onClick:k},[d.value?(t(),i("img",{key:0,class:ae(["aspect-[16/10] max-w-16 w-full object-cover rounded-md border-1 border-solid",[u.value?"border-brand":"border-button-border",{"saturate-[0.25]":f.outOfStock}]]),src:d.value,alt:"","aria-hidden":"true"},null,10,Ba)):q("",!0),o("span",La,[o("span",Va,[$(b(v.value)+" ",1),f.outOfStock?(t(),i("span",Ta,"(Out of stock)")):q("",!0)]),o("span",Ua,[L.value?(t(),i(V,{key:0},[o("span",null,b(L.value),1),f.ping!==-1?(t(),i("span",ja,"•")):q("",!0)],64)):q("",!0),f.ping!==-1?(t(),i("span",qa,[f.ping?(t(),_(e(et),{key:0,"aria-hidden":"true",style:Ee(`--_signal-${z.value}: ${z.value<=2?"var(--color-red)":z.value<=4?"var(--color-orange)":"var(--color-green)"}`),"stroke-width":"3px",class:"shrink-0"},null,8,["style"])):(t(),_(e(ie),{key:1,class:"animate-spin"})),f.ping?(t(),i(V,{key:2},[$(b(f.ping)+"ms ",1)],64)):(t(),i("span",za," Testing connection... "))])):q("",!0)])])],10,Ra))}}),Fa={class:"mt-0 mb-4 text-xl font-bold text-contrast"},Oa={class:"grid grid-cols-1 sm:grid-cols-2 gap-4"},Za={class:"mt-3 text-sm"},Aa={class:"text-link",target:"_blank",rel:"noopener noreferrer",href:"https://surveys.modrinth.com/servers-region-waitlist"},Da={class:"mt-4 mb-2 text-xl font-bold text-contrast"},Ga={key:0,class:"mt-2 mb-0"},Ya={class:"text-contrast text-lg font-bold"},Ka={key:0},Wa={class:"bg-bg rounded-xl p-4 mt-2 text-secondary h-14"},Xa={key:0,class:"flex gap-2 items-center"},Ha={key:1},Ja={key:2,class:"flex gap-2 items-center"},Qa={class:"flex gap-2 mt-2"},en=ne({__name:"ServersPurchase1Region",props:me({regions:{},pings:{},fetchStock:{type:Function},custom:{type:Boolean},currency:{},interval:{},availableProducts:{}},{plan:{},planModifiers:{},region:{},regionModifiers:{}}),emits:["update:plan","update:region"],setup(x){const{formatMessage:l,locale:r}=ue(),a=x,u=E(!0),d=E(!1),n=ce(x,"plan"),v=ce(x,"region"),L=y(()=>{var I,w,j,F,s;const S=(s=(F=(j=(w=(I=n.value)==null?void 0:I.prices)==null?void 0:w.find(g=>g.currency_code===a.currency))==null?void 0:j.prices)==null?void 0:F.intervals)==null?void 0:s[a.interval];return S?S/ye[a.interval]:void 0}),z=Object.keys(he),k=y(()=>a.regions.slice().sort((S,I)=>z.indexOf(S.shortcode)-z.indexOf(I.shortcode))),f=y(()=>u.value?k.value:k.value.filter(S=>S.shortcode==="eu-lim"?c.value[S.shortcode]>0:!0)),C=E(-1),G=y(()=>a.availableProducts.map(S=>(S.metadata.ram??0)/1024).filter(S=>S>0)),T=y(()=>Math.min(...G.value)),H=y(()=>Math.max(...G.value)),P=y(()=>a.availableProducts.find(S=>(S.metadata.ram??0)/1024===T.value)??a.availableProducts[0]);function h(S,I){if(I>0){d.value=!0;const w=a.availableProducts.find(j=>(j.metadata.ram??0)/1024===I);if(w){const j=k.value.find(F=>F.shortcode===S);j?a.fetchStock(j,{cpu:w.metadata.cpu??0,memory_mb:w.metadata.ram??0,swap_mb:w.metadata.swap??0,storage_mb:w.metadata.storage??0}).then(F=>{F>0?n.value=w:n.value=void 0}).finally(()=>{d.value=!1}):d.value=!1}}}$e(C,S=>{a.custom&&v.value&&h(v.value,S)}),$e(v,S=>{a.custom&&S&&h(S,C.value)});const c=E({}),U=E(),A=ze({prompt:{id:"servers.region.prompt",defaultMessage:"Where would you like your server to be located?"},regionUnsupported:{id:"servers.region.region-unsupported",defaultMessage:"Region not listed? Let us know where you'd like to see Modrinth Servers next!"},customPrompt:{id:"servers.region.custom.prompt",defaultMessage:"How much RAM do you want your server to have?"}});async function R(){c.value={};const S=k.value.map(w=>{var j,F,s,g;return a.fetchStock(w,n.value?{cpu:((j=n.value)==null?void 0:j.metadata.cpu)??0,memory_mb:((F=n.value)==null?void 0:F.metadata.ram)??0,swap_mb:((s=n.value)==null?void 0:s.metadata.swap)??0,storage_mb:((g=n.value)==null?void 0:g.metadata.storage)??0}:{cpu:P.value.metadata.cpu??0,memory_mb:P.value.metadata.ram??0,swap_mb:P.value.metadata.swap??0,storage_mb:P.value.metadata.storage??0})});(await Promise.all(S)).forEach((w,j)=>{c.value[k.value[j].shortcode]=w})}return Xe(()=>{var S;u.value=!0,U.value=a.pings.length>0?(S=a.pings.reduce((I,w)=>I.ping{const I=k.value.find(j=>c.value[j.shortcode]>0);let w=v.value;w||(w=U.value&&c.value[U.value]>0?U.value:I==null?void 0:I.shortcode),v.value=w,a.custom&&w&&h(w,T.value),u.value=!1})}),(S,I)=>u.value?(t(),_(lt,{key:0,class:"flex py-40 justify-center"},{default:X(()=>I[2]||(I[2]=[$(" Checking availability... ")])),_:1})):(t(),i(V,{key:1},[o("h2",Fa,b(e(l)(e(A).prompt)),1),o("div",Oa,[(t(!0),i(V,null,be(f.value,w=>{var j;return t(),_(Na,{key:w.shortcode,modelValue:v.value,"onUpdate:modelValue":I[0]||(I[0]=F=>v.value=F),region:w,"out-of-stock":c.value[w.shortcode]===0,ping:(j=S.pings.find(F=>F.region===w.shortcode))==null?void 0:j.ping,"best-ping":U.value===w.shortcode},null,8,["modelValue","region","out-of-stock","ping","best-ping"])}),128))]),o("div",Za,[B(e(ht),{"message-id":e(A).regionUnsupported},{link:X(({children:w})=>[o("a",Aa,[(t(),_(yt(()=>w)))])]),_:1},8,["message-id"])]),S.custom?(t(),i(V,{key:0},[o("h2",Da,b(e(l)(e(A).customPrompt)),1),o("div",null,[B(Rt,{modelValue:C.value,"onUpdate:modelValue":I[1]||(I[1]=w=>C.value=w),min:T.value,max:H.value,step:2,unit:"GB"},null,8,["modelValue","min","max"]),L.value?(t(),i("p",Ga,[o("span",Ya,b(e(re)(e(r),L.value,S.currency,!0))+" / month",1),S.interval!=="monthly"?(t(),i("span",Ka,", billed "+b(S.interval),1)):q("",!0)])):q("",!0),o("div",Wa,[d.value?(t(),i("div",Xa,[B(e(ie),{class:"size-5 shrink-0 animate-spin"}),I[3]||(I[3]=$(" Checking availability... "))])):n.value?(t(),i("div",Ha,[B(Fe,{class:"!flex-row justify-between",ram:n.value.metadata.ram??0,storage:n.value.metadata.storage??0,cpus:n.value.metadata.cpu??0},null,8,["ram","storage","cpus"])])):(t(),i("div",Ja,[B(e(Ne),{class:"size-5 shrink-0 text-red"}),$(" Sorry, we don't have any plans available with "+b(C.value)+" GB RAM in this region. ",1)]))]),o("div",Qa,[B(e(Qe),{class:"hidden sm:block shrink-0 mt-1"}),I[4]||(I[4]=o("span",{class:"text-sm text-secondary"}," Storage and shared CPU count are currently not configurable independently, and are based on the amount of RAM you select. ",-1))])])],64)):q("",!0)],64))}}),tn={key:4},an={key:6},nn={key:7},it=ne({__name:"FormattedPaymentMethod",props:{method:{}},setup(x){const{formatMessage:l}=ue();return(r,a)=>"type"in r.method?(t(),i(V,{key:0},[r.method.type==="card"?(t(),_(e(bt),{key:0,class:"size-[1.5em]"})):r.method.type==="cashapp"?(t(),_(e(kt),{key:1,class:"size-[1.5em]"})):r.method.type==="paypal"?(t(),_(e(xt),{key:2,class:"size-[1.5em]"})):(t(),_(e(Je),{key:3,class:"size-[1.5em]"})),r.method.type==="card"&&"card"in r.method&&r.method.card?(t(),i("span",tn,b(e(l)(e(Me).paymentMethodCardDisplay,{card_brand:e(l)(e(xe)[r.method.card.brand])??e(l)(e(xe).unknown),last_four:r.method.card.last4})),1)):(t(),i(V,{key:5},[$(b(e(l)(e(xe)[r.method.type])??e(l)(e(xe).unknown)),1)],64)),r.method.type==="cashapp"&&"cashapp"in r.method&&r.method.cashapp?(t(),i("span",an," ("+b(r.method.cashapp.cashtag)+") ",1)):r.method.type==="paypal"&&"paypal"in r.method&&r.method.paypal?(t(),i("span",nn," ("+b(r.method.paypal.payer_email)+") ",1)):q("",!0)],64)):q("",!0)}}),sn={key:2},We=ne({__name:"PaymentMethodOption",props:{item:{},selected:{type:Boolean},loading:{type:Boolean,default:!1}},emits:["select"],setup(x,{emit:l}){const r=l;return(a,u)=>(t(),i("button",{class:ae(["flex items-center w-full gap-2 border-none p-3 text-primary rounded-xl transition-all duration-200 hover:bg-button-bg hover:brightness-[--hover-brightness] active:scale-[0.98] hover:cursor-pointer",a.selected?"bg-button-bg":"bg-transparent"]),onClick:u[0]||(u[0]=d=>r("select"))},[a.selected?(t(),_(e(Se),{key:0,class:"size-6 text-brand"})):(t(),_(e(Ue),{key:1,class:"size-6 text-secondary"})),a.item===void 0?(t(),i("span",sn,"New payment method")):a.item?(t(),_(it,{key:3,method:a.item},null,8,["method"])):q("",!0),a.loading?(t(),_(e(ie),{key:4,class:"ml-auto size-4 text-secondary animate-spin"})):q("",!0)],2))}}),on={class:"mt-0 mb-1 text-xl font-bold text-contrast"},rn={class:"mt-0 mb-4 text-secondary"},ln={class:"flex flex-col gap-1"},un=ne({__name:"ServersPurchase2PaymentMethod",props:{paymentMethods:{},selected:{},loadingElements:{type:Boolean},loadingElementsFailed:{type:Boolean}},emits:["select"],setup(x,{emit:l}){const{formatMessage:r}=ue(),a=l,u=ze({prompt:{id:"servers.purchase.step.payment.prompt",defaultMessage:"Select a payment method"},description:{id:"servers.purchase.step.payment.description",defaultMessage:"You won't be charged yet."}});return(d,n)=>(t(),i(V,null,[o("h2",on,b(e(r)(e(u).prompt)),1),o("p",rn,b(e(r)(e(u).description)),1),o("div",ln,[(t(!0),i(V,null,be(d.paymentMethods,v=>{var L;return t(),_(We,{key:v.id,item:v,selected:((L=d.selected)==null?void 0:L.id)===v.id,onSelect:z=>a("select",v)},null,8,["item","selected","onSelect"])}),128)),B(We,{loading:!1,item:void 0,selected:d.selected===void 0,onSelect:n[0]||(n[0]=v=>a("select",void 0))},null,8,["selected"])])],64))}}),dn={},cn={xmlns:"http://www.w3.org/2000/svg","xmlns:serif":"http://www.serif.com/",version:"1.1",viewBox:"0 0 1793 199"};function pn(x,l){return t(),i("svg",cn,l[0]||(l[0]=[wt('',1)]))}const mn=qe(dn,[["render",pn]]),vn={class:"w-full flex items-center justify-between"},fn={class:"text-right mr-1"},gn={class:"text-primary font-bold"},yn={class:"text-xs text-secondary"},hn={class:"p-4 flex flex-col gap-4 bg-table-alternateRow"},bn={class:"font-semibold"},kn={class:"text-right"},xn={class:"text-xs text-secondary"},wn=ne({__name:"ExpandableInvoiceTotal",props:{period:{},currency:{},total:{},billingItems:{},loading:{type:Boolean}},setup(x){const{locale:l}=ue(),r=x,a=y(()=>r.period?` / ${r.period}`:"");return(u,d)=>(t(),_(Vt,{class:"rounded-2xl overflow-hidden bg-bg","button-class":"bg-transparent p-0 w-full p-4 active:scale-[0.98] transition-transform duration-100"},{title:X(()=>[o("div",vn,[d[0]||(d[0]=o("div",{class:"flex items-center gap-2 text-contrast font-bold"},"Total",-1)),o("div",fn,[o("span",gn,[u.loading?(t(),_(e(ie),{key:0,class:"animate-spin size-4"})):(t(),i(V,{key:1},[$(b(e(re)(e(l),u.total,u.currency)),1)],64)),o("span",yn,b(a.value),1)])])])]),default:X(()=>[o("div",hn,[(t(!0),i(V,null,be(u.billingItems,({title:n,amount:v})=>(t(),i("div",{key:n,class:"flex items-center justify-between"},[o("div",bn,b(n),1),o("div",kn,[u.loading?(t(),_(e(ie),{key:0,class:"animate-spin size-4"})):(t(),i(V,{key:1},[$(b(e(re)(e(l),v,u.currency)),1)],64)),o("span",xn,b(a.value),1)])]))),128))])]),_:1}))}}),Pn={class:"grid sm:grid-cols-[3fr_2fr] gap-4"},_n={class:"bg-table-alternateRow p-4 rounded-2xl"},Sn={class:"flex items-center gap-2 mb-3"},Mn={class:"bg-table-alternateRow p-4 rounded-2xl flex flex-col gap-2 items-center justify-center"},$n=["src"],Cn={class:"font-semibold"},In={class:"text-xs flex items-center gap-1 text-secondary font-medium"},En={key:0},Rn={key:3},Bn={class:"grid grid-cols-2 gap-2 mt-4"},Ln={class:"flex flex-col items-start gap-1 font-medium text-primary"},Vn={class:"text-sm text-secondary flex items-center gap-1"},Tn={class:"flex flex-col items-start gap-1 font-medium text-primary"},Un={class:"text-xs font-bold text-brand px-1.5 py-0.5 rounded-full bg-brand-highlight"},jn={class:"text-sm text-secondary flex items-center gap-1"},qn={class:"mt-2"},zn={key:1,class:"p-4 rounded-2xl bg-table-alternateRow text-sm text-secondary leading-relaxed"},Nn={key:0,class:"mt-2 flex items-center pl-4 pr-2 py-3 bg-bg rounded-2xl gap-2 text-secondary"},Fn={key:0,class:"flex items-center gap-2 text-secondary"},On={key:1,class:"flex items-center gap-2 text-red"},Zn={key:1,class:"m-0 mt-4 text-sm text-secondary"},An={key:2,class:"mt-2 flex items-center gap-1 text-sm"},Dn={href:"https://www.minecraft.net/en-us/eula",target:"_blank",class:"text-brand underline hover:brightness-[--hover-brightness]"},Gn=ne({__name:"ServersPurchase3Review",props:me({plan:{},region:{},tax:{},total:{},currency:{},ping:{},loading:{type:Boolean},selectedPaymentMethod:{},hasPaymentMethod:{type:Boolean},noPaymentRequired:{type:Boolean},existingPlan:{},existingSubscription:{}},{interval:{required:!0},intervalModifiers:{},acceptedEula:{type:Boolean,required:!0},acceptedEulaModifiers:{}}),emits:me(["changePaymentMethod","reloadPaymentIntent"],["update:interval","update:acceptedEula"]),setup(x,{emit:l}){const r=ue(),{locale:a,formatMessage:u}=r,d=l,n=x,v=ce(x,"interval"),L=ce(x,"acceptedEula"),z=y(()=>n.plan.prices.find(s=>s.currency_code===n.currency)),k=y(()=>{var s,g,O;return(O=(g=(s=z.value)==null?void 0:s.prices)==null?void 0:g.intervals)==null?void 0:O[v.value]}),f=y(()=>{var g,O;if(!n.existingPlan)return;const s=n.existingPlan.prices.find(K=>K.currency_code===n.currency);return(O=(g=s==null?void 0:s.prices)==null?void 0:g.intervals)==null?void 0:O[v.value]}),C=y(()=>{if(!(k.value==null||f.value==null))return k.value-f.value}),G=y(()=>(C.value??0)>0),T=y(()=>ye[v.value]*30),H=y(()=>{if(!G.value||n.total==null||n.tax==null)return;const s=n.total-n.tax,g=C.value??0;if(g<=0)return;const O=Math.max(0,Math.min(1,s/g));return Math.round(O*T.value)}),P=y(()=>G.value&&(n.total??0)>0),h=y(()=>{if(!n.existingSubscription)return;const s=Ae(n.existingSubscription.created);if(!s.isValid())return;let g=s;const O=Ae();if(n.existingSubscription.interval==="monthly"){const W=O.diff(s,"month");g=s.add(W+1,"month")}else if(n.existingSubscription.interval==="quarterly"){const W=O.diff(s,"month"),te=Math.floor(W/3);g=s.add((te+1)*3,"month")}else if(n.existingSubscription.interval==="yearly"){const W=O.diff(s,"year");g=s.add(W+1,"year")}else if(n.existingSubscription.interval==="five-days"){const W=O.diff(s,"day"),te=Math.floor(W/5);g=s.add((te+1)*5,"day")}else return;const K=g.diff(O,"day");return Math.max(0,K)}),c=y(()=>h.value??H.value),U=y(()=>{if(!n.plan||!n.plan.metadata||n.plan.metadata.type!=="pyro")return"Unknown";const s=n.plan.metadata.ram;return s===4096?"Small":s===6144?"Medium":s===8192?"Large":"Custom"}),A=y(()=>{var s;return((s=he[n.region.shortcode])==null?void 0:s.flag)??`https://flagcdn.com/${n.region.country_code}.svg`}),R=y(()=>{var s;return(s=he[n.region.shortcode])==null?void 0:s.name}),S=y(()=>R.value?u(R.value):n.region.display_name),I=y(()=>R.value?n.region.display_name:void 0),w=y(()=>at(n.ping??0)),j=y(()=>v.value==="monthly"?"month":v.value==="quarterly"?"3 months":v.value==="yearly"?"year":"???");function F(s){v.value=s,d("reloadPaymentIntent")}return(s,g)=>{var O,K,W,te;return t(),i(V,null,[o("div",Pn,[o("div",_n,[o("div",Sn,[B(mn,{class:"flex h-5 w-fit"}),B(Lt,null,{default:X(()=>[$(b(U.value),1)]),_:1})]),o("div",null,[s.plan.metadata&&s.plan.metadata.ram&&s.plan.metadata.storage&&s.plan.metadata.cpu?(t(),_(Fe,{key:0,class:"!grid sm:grid-cols-2",ram:s.plan.metadata.ram,storage:s.plan.metadata.storage,cpus:s.plan.metadata.cpu},null,8,["ram","storage","cpus"])):q("",!0)])]),o("div",Mn,[A.value?(t(),i("img",{key:0,class:"aspect-[16/10] max-w-12 w-full object-cover rounded-md border-1 border-button-border border-solid",src:A.value,alt:"","aria-hidden":"true"},null,8,$n)):q("",!0),o("span",Cn,b(S.value),1),o("span",In,[I.value?(t(),i(V,{key:0},[o("span",null,b(I.value),1),s.ping!==-1?(t(),i("span",En,"•")):q("",!0)],64)):q("",!0),s.ping!==-1?(t(),i(V,{key:1},[s.ping?(t(),_(e(et),{key:0,"aria-hidden":"true",style:Ee(`--_signal-${w.value}: ${w.value<=2?"var(--color-red)":w.value<=4?"var(--color-orange)":"var(--color-green)"}`),"stroke-width":"3px",class:"shrink-0"},null,8,["style"])):(t(),_(e(ie),{key:1,class:"animate-spin"})),s.ping?(t(),i(V,{key:2},[$(b(s.ping)+"ms ",1)],64)):(t(),i("span",Rn," Testing connection... "))],64)):q("",!0)])])]),o("div",Bn,[o("button",{class:ae([v.value==="monthly"?"bg-button-bg border-transparent":"bg-transparent border-button-border","rounded-2xl active:scale-[0.98] transition-transform duration-100 border-2 border-solid p-4 flex items-center gap-2"]),onClick:g[0]||(g[0]=se=>F("monthly"))},[v.value==="monthly"?(t(),_(e(Se),{key:0,class:"size-6 text-brand"})):(t(),_(e(Ue),{key:1,class:"size-6 text-secondary"})),o("div",Ln,[o("span",{class:ae(["flex items-center gap-1",{"text-contrast":v.value==="monthly"}])},"Pay monthly",2),o("span",Vn,b(e(re)(e(a),(O=z.value)==null?void 0:O.prices.intervals.monthly,s.currency,!0))+" / month",1)])],2),o("button",{class:ae([v.value==="quarterly"?"bg-button-bg border-transparent":"bg-transparent border-button-border","rounded-2xl active:scale-[0.98] transition-transform duration-100 border-2 border-solid p-4 flex items-center gap-2"]),onClick:g[1]||(g[1]=se=>F("quarterly"))},[v.value==="quarterly"?(t(),_(e(Se),{key:0,class:"size-6 text-brand"})):(t(),_(e(Ue),{key:1,class:"size-6 text-secondary"})),o("div",Tn,[o("span",{class:ae(["flex items-center gap-1",{"text-contrast":v.value==="quarterly"}])},[g[4]||(g[4]=$("Pay quarterly ")),o("span",Un,b(v.value==="quarterly"?"Saving":"Save")+" 16%",1)],2),o("span",jn,b(e(re)(e(a),(((te=(W=(K=z.value)==null?void 0:K.prices)==null?void 0:W.intervals)==null?void 0:te.quarterly)??0)/e(ye).quarterly,s.currency,!0))+" / month",1)])],2)]),o("div",qn,[s.noPaymentRequired?(t(),i("div",zn," No payment required. Your downgrade will apply at the end of the current billing period. ")):(t(),_(wn,{key:0,period:P.value?void 0:j.value,currency:s.currency,loading:s.loading,total:s.total??-1,"billing-items":s.total!==void 0&&s.tax!==void 0?[{title:P.value&&c.value?`Modrinth Servers (${U.value}) — prorated for ${c.value} day${c.value===1?"":"s"}`:`Modrinth Servers (${U.value})`,amount:s.total-s.tax},{title:"Tax",amount:s.tax}]:[]},null,8,["period","currency","loading","total","billing-items"]))]),s.noPaymentRequired?q("",!0):(t(),i("div",Nn,[s.selectedPaymentMethod?(t(),_(it,{key:0,method:s.selectedPaymentMethod},null,8,["method"])):(t(),i(V,{key:1},[s.hasPaymentMethod?(t(),i("div",Fn,[B(e(Se),{class:"text-brand"}),g[5]||(g[5]=$(" Using new payment method "))])):(t(),i("div",On,[B(e(Ne)),g[6]||(g[6]=$(" No payment method selected "))]))],64)),B(je,{size:"small",type:"transparent"},{default:X(()=>[o("button",{class:"ml-auto",onClick:g[2]||(g[2]=se=>d("changePaymentMethod"))},[s.selectedPaymentMethod||s.hasPaymentMethod?(t(),i(V,{key:0},[B(e(Pt)),g[7]||(g[7]=$(" Change "))],64)):(t(),i(V,{key:1},[g[8]||(g[8]=$(" Select payment method ")),B(e(tt))],64))])]),_:1})])),s.noPaymentRequired?q("",!0):(t(),i("p",Zn,[G.value&&(s.total??0)>0?(t(),i(V,{key:0},[g[9]||(g[9]=$(" Today, you will be charged a prorated amount for the remainder of your current billing cycle. ")),g[10]||(g[10]=o("br",null,null,-1)),$(" Your subscription will renew at "+b(e(re)(e(a),k.value,s.currency))+" / "+b(j.value)+" plus applicable taxes at the end of your current billing interval, until you cancel. You can cancel anytime from your settings page. ",1)],64)):(t(),i(V,{key:1},[g[11]||(g[11]=$(" You'll be charged ")),s.loading?(t(),_(e(ie),{key:0,class:"animate-spin relative top-0.5 mx-2"})):(t(),i(V,{key:1},[$(b(e(re)(e(a),s.total,s.currency)),1)],64)),$(" every "+b(j.value)+" plus applicable taxes starting today, until you cancel. You can cancel anytime from your settings page. ",1)],64)),g[12]||(g[12]=o("br",null,null,-1)),g[13]||(g[13]=o("span",{class:"font-semibold"},'By clicking "Subscribe", you are purchasing a recurring subscription.',-1)),g[14]||(g[14]=o("br",null,null,-1))])),s.noPaymentRequired?q("",!0):(t(),i("div",An,[B(Bt,{modelValue:L.value,"onUpdate:modelValue":g[3]||(g[3]=se=>L.value=se),label:"I acknowledge that I have read and agree to the",description:"I acknowledge that I have read and agree to the Minecraft EULA"},null,8,["modelValue"]),o("a",Dn,[g[15]||(g[15]=$("Minecraft EULA")),B(e(_t),{class:"size-3 shrink-0 ml-0.5 mb-0.5"})])]))],64)}}}),Yn={class:"flex items-center gap-1 font-bold text-secondary"},Kn=["onClick"],Wn={class:"w-[40rem] max-w-full"},Xn={key:4},Hn={class:"min-h-[16rem] flex flex-col gap-2 mt-2 p-4 bg-table-alternateRow rounded-xl justify-center items-center"},Jn={class:"flex gap-2 justify-between mt-4"},Qn=["disabled"],ds=ne({__name:"ModrinthServersPurchaseModal",props:{publishableKey:{},returnUrl:{},paymentMethods:{},customer:{},currency:{},pings:{},regions:{},availableProducts:{},planStage:{type:Boolean},existingPlan:{},existingSubscription:{},refreshPaymentMethods:{type:Function},fetchStock:{type:Function},initiatePayment:{type:Function},onError:{type:Function},onFinalizeNoPaymentChange:{type:Function}},emits:["hide"],setup(x,{expose:l}){const{formatMessage:r}=ue(),a=x,u=St("modal"),d=E(),n=E("quarterly"),v=E(!1),L=E(),z=E(),{initializeStripe:k,selectPaymentMethod:f,primaryPaymentMethodId:C,loadStripeElements:G,selectedPaymentMethod:T,inputtedPaymentMethod:H,createNewPaymentMethod:P,loadingElements:h,loadingElementsFailed:c,tax:U,total:A,paymentMethodLoading:R,reloadPaymentIntent:S,hasPaymentMethod:I,submitPayment:w,completingPurchase:j,noPaymentRequired:F}=Ht(a.publishableKey,a.customer,a.paymentMethods,a.currency,d,n,L,z,a.initiatePayment,a.onError),s=E(!1),g=E(!1),O=E(!0),K=a.planStage?["plan","region","payment","review"]:["region","payment","review"],W={plan:de({id:"servers.purchase.step.plan.title",defaultMessage:"Plan"}),region:de({id:"servers.purchase.step.region.title",defaultMessage:"Region"}),payment:de({id:"servers.purchase.step.payment.title",defaultMessage:"Payment method"}),review:de({id:"servers.purchase.step.review.title",defaultMessage:"Review"})},te=y(()=>a.regions.find(p=>p.shortcode===L.value)),se=y(()=>{var p;return(p=a.pings.find(m=>{var Y;return m.region===((Y=te.value)==null?void 0:Y.shortcode)}))==null?void 0:p.ping}),D=E(),J=y(()=>D.value?K.indexOf(D.value):-1),ve=y(()=>{const p=D.value?K[K.indexOf(D.value)-1]:void 0;return p==="payment"&&O.value&&C.value?"region":p}),Re=y(()=>D.value?K[K.indexOf(D.value)+1]:void 0),ke=y(()=>{switch(D.value){case"plan":return console.log("Plan step:",{customServer:s.value,selectedPlan:d.value,existingPlan:a.existingPlan}),s.value||!!d.value&&(!a.existingPlan||d.value.id!==a.existingPlan.id);case"region":return L.value&&d.value&&n.value;case"payment":return T.value||!h.value;case"review":return(F.value||g.value&&I.value)&&!j.value;default:return!1}});async function Be(p){switch(p){case"plan":return!0;case"region":return!0;case"payment":if(await k(),C.value&&O.value){const m=await a.paymentMethods.find(Y=>Y.id===C.value);return await f(m),await pe("review",!0),!1}return!0;case"review":return F.value||T.value?!0:!!await P()}}async function Le(p){switch(p){case"region":break;case"payment":await G();break}}async function pe(p,m=!1){if(!p){await w(a.returnUrl);return}!m&&!ke.value||await Be(p)&&(D.value=p,await Ct(),await Le(p))}$e(d,()=>{D.value==="plan"&&(s.value=!d.value)});const M=y(()=>a.availableProducts.find(p=>{var m;return((m=p==null?void 0:p.metadata)==null?void 0:m.type)==="pyro"&&p.metadata.ram===6144})??a.availableProducts.find(p=>{var m;return((m=p==null?void 0:p.metadata)==null?void 0:m.type)==="pyro"})??a.availableProducts[0]);function N(p,m,Y){var Z;v.value=!1,m===null?(d.value=void 0,s.value=!0):(d.value=m??M.value,s.value=!d.value),n.value=p,s.value=!d.value,T.value=void 0,D.value=K[0],O.value=!0,z.value=Y,(Z=u.value)==null||Z.show()}l({show:N});function ee(){s.value=!0,d.value=void 0}async function Q(){O.value=!1,T.value=void 0,await pe("payment",!0)}function oe(p){return p==="payment"?Q():pe(p,!0)}return(p,m)=>{const Y=He("tooltip");return t(),_(It,{ref_key:"modal",ref:u,onHide:m[9]||(m[9]=Z=>p.$emit("hide"))},{title:X(()=>[o("div",Yn,[(t(!0),i(V,null,be(e(K),(Z,le)=>(t(),i(V,{key:Z},[leoe(Z)},b(e(r)(W[Z])),9,Kn)):(t(),i("span",{key:1,class:ae({"text-contrast":le===J.value})},b(e(r)(W[Z])),3)),le[o("div",Wn,[D.value==="plan"?(t(),_(Ea,{key:0,plan:d.value,"onUpdate:plan":m[0]||(m[0]=Z=>d.value=Z),interval:n.value,"onUpdate:interval":m[1]||(m[1]=Z=>n.value=Z),"existing-plan":p.existingPlan,"available-products":p.availableProducts,currency:p.currency,onChooseCustom:ee},null,8,["plan","interval","existing-plan","available-products","currency"])):D.value==="region"?(t(),_(en,{key:1,region:L.value,"onUpdate:region":m[2]||(m[2]=Z=>L.value=Z),plan:d.value,"onUpdate:plan":m[3]||(m[3]=Z=>d.value=Z),regions:p.regions,pings:p.pings,custom:s.value,"available-products":p.availableProducts,currency:p.currency,interval:n.value,"fetch-stock":p.fetchStock},null,8,["region","plan","regions","pings","custom","available-products","currency","interval","fetch-stock"])):D.value==="payment"&&d.value&&n.value?(t(),_(un,{key:2,"payment-methods":p.paymentMethods,selected:e(T),"loading-elements":e(h),"loading-elements-failed":e(c),onSelect:e(f)},null,8,["payment-methods","selected","loading-elements","loading-elements-failed","onSelect"])):D.value==="review"&&(e(I)||e(F))&&te.value&&n.value&&d.value?(t(),_(Gn,{key:3,interval:n.value,"onUpdate:interval":m[4]||(m[4]=Z=>n.value=Z),"accepted-eula":g.value,"onUpdate:acceptedEula":m[5]||(m[5]=Z=>g.value=Z),currency:p.currency,plan:d.value,region:te.value,ping:se.value,loading:e(R),"selected-payment-method":e(T)||e(H),"has-payment-method":e(I),tax:e(U),total:e(A),"no-payment-required":e(F),"existing-plan":p.existingPlan,"existing-subscription":p.existingSubscription,onChangePaymentMethod:Q,onReloadPaymentIntent:e(S)},null,8,["interval","accepted-eula","currency","plan","region","ping","loading","selected-payment-method","has-payment-method","tax","total","no-payment-required","existing-plan","existing-subscription","onReloadPaymentIntent"])):(t(),i("div",Xn,"Something went wrong")),_e(o("div",Hn,[_e(o("div",null,[B(lt,{error:e(c)},{error:X(()=>m[10]||(m[10]=[$(" Error loading Stripe payment UI. ")])),default:X(()=>[m[11]||(m[11]=$(" Loading... "))]),_:1},8,["error"])],512),[[De,e(h)]]),m[12]||(m[12]=o("div",{class:"w-full"},[o("div",{id:"address-element"}),o("div",{id:"payment-element",class:"mt-4"})],-1))],512),[[De,e(T)===void 0&&D.value==="payment"&&d.value&&n.value]])]),o("div",Jn,[B(e(je),null,{default:X(()=>[ve.value?(t(),i("button",{key:0,onClick:m[6]||(m[6]=Z=>ve.value&&pe(ve.value,!0))},[B(e($t)),$(" "+b(e(r)(e(Me).backButton)),1)])):(t(),i("button",{key:1,onClick:m[7]||(m[7]=Z=>{var le;return(le=e(u))==null?void 0:le.hide()})},[B(e(Ne)),$(" "+b(e(r)(e(Me).cancelButton)),1)]))]),_:1}),B(e(je),{color:"brand"},{default:X(()=>[_e((t(),i("button",{disabled:!ke.value,onClick:m[8]||(m[8]=Z=>e(F)&&D.value==="review"?(async()=>{var le;if(a.onFinalizeNoPaymentChange)try{await a.onFinalizeNoPaymentChange()}catch{return}(le=e(u))==null||le.hide()})():pe(Re.value))},[D.value==="review"?(t(),i(V,{key:0},[e(F)?(t(),i(V,{key:0},[B(e(Ge)),m[13]||(m[13]=$(" Confirm Change"))],64)):(t(),i(V,{key:1},[e(j)?(t(),_(e(ie),{key:0,class:"animate-spin"})):(t(),_(e(Ge),{key:1})),m[14]||(m[14]=$(" Subscribe "))],64))],64)):(t(),i(V,{key:1},[$(b(e(r)(e(Me).nextButton))+" ",1),B(e(tt))],64))],8,Qn)),[[Y,D.value==="review"&&!g.value&&!e(F)?"You must accept the Minecraft EULA to proceed.":void 0]])]),_:1})])]),_:1},512)}}});export{lt as M,Fe as _,ds as a,Wt as l,ye as m};