PageSourceSearch

https://www.eyedock.com/build/assets/Index-ww4qtyfF.js

js eyedock.com collected 2026-10-02 21:23:45 UTC 40,169 bytes, 1 lines download raw bytes

1import{a3 as rt,u as D,m as b,z as Q,C as st,c as n,a as m,b as v,h as nt,d as s,g as i,f as d,t as l,n as X,F as p,r as Z,e as x,l as ee,p as oe,E as lt,v as be,j as P,A as y,y as ot,B as it,i as dt,o as a}from"./app-DWwbkxzy.js";import{_ as ut}from"./AccountLayout-B3tGcqE-.js";import{P as O}from"./PrimaryButton-nJGYkUXD.js";import{_ as pe}from"./InputError-DOlSbaYJ.js";import{_ as Pe}from"./SecondaryButton-BJplW9uV.js";import{_ as ie}from"./ConfirmBillingChange-BVu_t0fb.js";import{_ as Oe}from"./PlanBillingChoice-DR2WvyPn.js";import"./SidebarLayout-Dfse5RnS.js";import"./useCurrentRoute-B3vWnEsN.js";const ct={class:"py-8 px-4 sm:px-6 lg:px-8"},gt={class:"mx-auto max-w-6xl space-y-6"},yt={class:"px-4 sm:px-0"},vt={class:"flex items-center gap-3"},mt={key:0,class:"inline-flex items-center rounded-full bg-indigo-100 px-2.5 py-0.5 text-xs font-medium text-indigo-800"},bt={key:0,class:"rounded-lg border border-amber-200 bg-amber-50 p-4 dark:border-amber-900 dark:bg-amber-950"},pt={key:0,class:"mt-2 text-sm text-amber-900 dark:text-amber-100"},xt={class:"font-medium"},kt=["href"],ft={key:1,class:"mt-2 text-sm text-amber-900 dark:text-amber-100"},ht={key:1,class:"overflow-hidden rounded-lg bg-white shadow dark:bg-gray-800"},wt={class:"p-6"},_t={class:"flex items-start justify-between gap-4"},Ct={class:"mt-4 space-y-2 border-t border-gray-200 pt-4 text-sm dark:border-gray-700"},$t={class:"text-gray-700 dark:text-gray-300"},St={class:"font-medium"},Tt={key:0},Bt={class:"mt-1 space-y-0.5"},Pt={key:1,class:"pt-1"},Ot={key:2,class:"pt-1"},Ut={class:"mt-3 flex flex-wrap items-center gap-3"},Ft={key:0,value:"practice"},It={key:0,class:"flex items-center gap-2 text-sm text-gray-600 dark:text-gray-400"},At=["min","max"],Nt={key:0},Et={class:"mt-2 text-xs text-gray-500"},jt=["href"],Mt={key:2,class:"overflow-hidden rounded-lg bg-white shadow dark:bg-gray-800"},Dt={class:"p-6"},Lt={class:"flex items-start justify-between gap-4"},Rt={class:"text-lg font-semibold text-gray-900 dark:text-gray-100"},Yt={class:"mt-1 text-sm text-gray-600 dark:text-gray-400"},qt={class:"mt-4 space-y-2 border-t border-gray-200 pt-4 text-sm dark:border-gray-700"},Vt={class:"text-gray-700 dark:text-gray-300"},zt={class:"font-medium"},Gt={key:3,class:"overflow-hidden rounded-lg border border-orange-200 bg-orange-50 shadow dark:border-orange-900 dark:bg-orange-950"},Wt={class:"p-6"},Ht={key:4,class:"overflow-hidden rounded-lg bg-white shadow dark:bg-gray-800"},Jt={class:"p-6"},Kt={class:"flex items-start justify-between gap-4"},Qt={class:"text-lg font-semibold text-gray-900 dark:text-gray-100"},Xt={key:0,class:"mt-1 text-sm text-gray-600 dark:text-gray-400"},Zt={key:0,class:"inline-flex items-center rounded-full bg-green-100 px-2.5 py-0.5 text-xs font-medium text-green-800 dark:bg-green-900 dark:text-green-100"},ea={key:1,class:"inline-flex items-center rounded-full bg-sky-100 px-2.5 py-0.5 text-xs font-medium text-sky-800 dark:bg-sky-900 dark:text-sky-100"},ta={key:2,class:"inline-flex items-center rounded-full bg-gray-100 px-2.5 py-0.5 text-xs font-medium text-gray-800 dark:bg-gray-700 dark:text-gray-200"},aa={key:0},ra={class:"mt-4 divide-y divide-gray-100 border-t border-gray-200 text-sm dark:divide-gray-700 dark:border-gray-700"},sa={class:"flex flex-wrap items-baseline gap-x-3 gap-y-1 py-2.5","data-testid":"practice-upgrade-card"},na={class:"font-medium text-gray-900 dark:text-gray-100"},la=["aria-expanded"],oa={key:0,class:"flex flex-wrap items-baseline gap-x-3 gap-y-1 py-2.5"},ia={class:"font-medium text-gray-900 dark:text-gray-100"},da=["aria-expanded"],ua={key:1,class:"flex flex-wrap items-baseline gap-x-3 gap-y-1 py-2.5"},ca={class:"font-medium text-gray-900 dark:text-gray-100"},ga=["aria-expanded"],ya={key:2,class:"flex flex-wrap items-baseline gap-x-3 gap-y-1 py-2.5","data-testid":"credit-balance-row"},va={class:"font-medium text-gray-900 dark:text-gray-100"},ma={key:0,class:"mt-3 text-sm text-amber-700 dark:text-amber-300"},ba={key:1,class:"mt-3 text-sm text-gray-500 dark:text-gray-400"},pa={key:2,class:"mt-4 rounded-lg border border-gray-200 p-4 dark:border-gray-700"},xa={class:"text-sm text-gray-600 dark:text-gray-400"},ka={class:"text-gray-900 dark:text-gray-100"},fa={key:3,class:"mt-4 rounded-lg border border-gray-200 p-4 dark:border-gray-700"},ha={key:0,class:"mt-4 flex flex-wrap items-end gap-3"},wa=["min","max"],_a={key:1,"data-testid":"below-in-use",class:"mt-3 rounded-md border border-amber-200 bg-amber-50 px-3 py-2 text-sm text-amber-900 dark:border-amber-900 dark:bg-amber-950 dar
1k:text-amber-100"},Ca={key:2,class:"mt-3 text-sm text-gray-600 dark:text-gray-400"},$a={class:"text-base text-gray-900 dark:text-gray-100"},Sa={key:3,class:"mt-4 rounded-md border border-gray-200 bg-gray-50 px-4 py-3 text-sm dark:border-gray-700 dark:bg-gray-900"},Ta={key:0,class:"text-gray-500"},Ba={key:0,class:"text-gray-900 dark:text-gray-100"},Pa={class:"text-base"},Oa={key:1,class:"text-gray-900 dark:text-gray-100"},Ua={key:2,class:"mt-1 text-gray-600 dark:text-gray-400"},Fa={key:2,class:"text-gray-500"},Ia={key:1,class:"mt-4 space-y-3 border-t border-gray-200 pt-4 dark:border-gray-700"},Aa={class:"text-sm text-gray-700 dark:text-gray-300"},Na={key:0},Ea={key:0,class:"space-y-3"},ja={class:"flex flex-wrap gap-2"},Ma=["data-testid","onClick"],Da={class:"block font-medium text-gray-900 dark:text-gray-100"},La={key:0,class:"block text-xs text-amber-700 dark:text-amber-500"},Ra={key:1,class:"block text-xs text-gray-600 dark:text-gray-400"},Ya={key:0,class:"rounded-lg border border-amber-200 bg-amber-50 p-3 text-sm text-amber-900 dark:border-amber-900 dark:bg-amber-950 dark:text-amber-100","data-testid":"plan-unavailable"},qa={key:1,class:"text-sm text-amber-700 dark:text-amber-500"},Va={key:2,class:"mt-4 space-y-3 border-t border-gray-200 pt-4 dark:border-gray-700"},za={class:"flex flex-wrap gap-2"},Ga=["onClick"],Wa={class:"block font-medium text-gray-900 dark:text-gray-100"},Ha={class:"block text-xs text-gray-600 dark:text-gray-400"},Ja={key:1,class:"text-sm text-amber-700 dark:text-amber-500"},Ka={key:0,class:"flex flex-col gap-4 border-t border-gray-100 p-6 sm:flex-row sm:items-center sm:justify-between dark:border-gray-700"},Qa={class:"text-sm text-gray-600 dark:text-gray-400"},Xa={key:5,class:"overflow-hidden rounded-lg bg-white shadow dark:bg-gray-800"},Za={class:"flex flex-col gap-4 p-6 sm:flex-row sm:items-center sm:justify-between"},er={key:6,class:"overflow-hidden rounded-lg bg-white shadow dark:bg-gray-800"},tr={class:"p-6"},ar={key:1,class:"mt-4"},rr={class:"mt-2 flex flex-wrap gap-2"},sr=["onClick"],nr={key:0,class:"mt-2 text-xs text-amber-700 dark:text-amber-500"},lr={key:2,class:"mt-4 flex flex-wrap items-end gap-3"},or=["min","max"],ir={key:0,"data-testid":"upgrade-seats-problem",class:"pb-2 rounded-md border border-amber-200 bg-amber-50 px-3 py-2 text-sm text-amber-900 dark:border-amber-900 dark:bg-amber-950 dark:text-amber-100"},dr={key:1,class:"pb-2 text-sm text-gray-600 dark:text-gray-400"},ur={class:"text-base text-gray-900 dark:text-gray-100"},cr={key:3,class:"mt-4 rounded-md border border-gray-200 bg-gray-50 px-4 py-3 text-sm dark:border-gray-700 dark:bg-gray-900"},gr={key:0,class:"text-gray-500"},yr={key:0,class:"text-gray-900 dark:text-gray-100"},vr={class:"text-base"},mr={key:1,class:"mt-1 text-gray-600 dark:text-gray-400"},br={key:2,class:"text-gray-900 dark:text-gray-100"},pr={key:3,class:"mt-1 text-gray-600 dark:text-gray-400"},xr={key:2,class:"text-gray-500"},kr={key:5,class:"mt-4 flex flex-wrap gap-3"},fr={key:9,class:"overflow-hidden rounded-lg bg-white shadow dark:bg-gray-800"},hr={class:"p-6"},wr={class:"flex items-start justify-between gap-4"},_r={class:"mt-1 text-sm text-gray-600 dark:text-gray-400"},Cr={class:"inline-flex items-center rounded-full bg-indigo-100 px-2.5 py-0.5 text-xs font-medium text-indigo-800 dark:bg-indigo-900 dark:text-indigo-100"},$r={key:0,class:"mt-4 rounded-md border border-amber-200 bg-amber-50 p-3 text-sm text-amber-900 dark:border-amber-900 dark:bg-amber-950 dark:text-amber-100"},Sr={key:1,class:"mt-4 space-y-3 border-t border-gray-200 pt-4 dark:border-gray-700"},Tr={key:0,class:"text-sm text-gray-700 dark:text-gray-300"},Br={key:1,class:"flex flex-wrap gap-3"},Pr={key:2,class:"text-sm text-gray-500 dark:text-gray-400"},Or={key:3,class:"text-xs text-gray-500 dark:text-gray-400"},Ur={key:2,class:"mt-4 border-t border-gray-200 pt-4 text-sm text-gray-600 dark:border-gray-700 dark:text-gray-400"},Rr=Object.assign({layout:[rt,ut]},{__name:"Index",props:{isOwner:{type:Boolean,required:!0},hasEyedockSubscription:{type:Boolean,required:!0},canManageBilling:{type:Boolean,default:!1},creditBalance:{type:Number,default:null},subscription:{type:Object,required:!0},seats:{type:Object,required:!0},pm:{type:Object,required:!0},aiCredits:{type:Object,required:!0},owner:{type:Object,default:null},isStudent:{type:Boolean,default:!1},legacy:{type:Object,default:null},comp:{type:Object,default:null},studentRenewalUrl:{type:String,default:null},practice:{type:Object,default:()=>({self_serve:!1,can_upgrade:!1,can_buy:!1,can_change_seats:!1})}},setup(r){const Ue=dt(),Fe=y(()=>{const t=Ue.props.aiAssistant;return!!t&&(t.enabled||t.unmetered)}),u=r,h=b(2),T=b(0),E=D({seats:2,interval:null}),C=y(()=>u.practice.intervals??[]),z=y(()=>{var t;return E.interval??((t=C.value[0])==null?void 0:t.value)??u.practice.interval??"yearly"}),xe=t=>C.value.find(e=>e.value===t)??{period:u.practice.period??"year",base_price:u.practice.base_price??250,additional_seat_price:u.practice.additional_seat_price??100},U=y(()=>u.practice.interval?C.value.find(t=>t.value===u.practice.interval)??null:null),L=y(()=>xe(z.value)),de=y(()=>{var t;return((t=C.value[0])==null?void 0:t.value)??"yearly"}),B=y(()=>xe(de.value)),R=D({seats:0}),te=b("yearly"),G=D({plan:"yearly",seats:2,interval:null}),ke=()=>{var t;return Math.max(u.practice.included_seats??2,((t=u.seats)==null?void 0:t.used)??0)},Y=b(ke()),W=b(ke()),Ie=()=>{G.plan=te.value,G.seats=W.value,G.interval=de.value,G.post(route("billing.move-to-new-billing"))},Ae=y(()=>te.value==="practice"),c=b(null),F=b(!1);let fe=null,ae=0;const Ne=async(t,e,g)=>
1{var N,K;F.value=!0;const f=++ae;try{const{data:o}=await it.get(route("billing.change-preview"),{params:{seats:t,mode:e,interval:g??z.value}});f===ae&&(c.value=o)}catch(o){if(f!==ae)return;if(((N=o==null?void 0:o.response)==null?void 0:N.status)===422){c.value={available:!1,refused:Object.values(((K=o.response.data)==null?void 0:K.errors)??{}).flat().at(0)??"That number of seats is not available."};return}c.value={available:!1}}finally{f===ae&&(F.value=!1)}},q=(t,e,g)=>{if(clearTimeout(fe),!u.practice.self_serve||!t){c.value=null;return}fe=setTimeout(()=>Ne(t,e,g),350)};Q(h,t=>{E.seats=t,u.practice.can_upgrade&&q(t,"upgrade")}),Q(z,()=>{$.value&&u.practice.can_upgrade&&q(h.value,"upgrade")}),Q(T,t=>{R.seats=t,u.practice.can_change_seats&&q(t,"seats")});const j=(t,e)=>{const g=Math.max(0,t-(u.practice.included_seats??2));return e.base_price+g*e.additional_seat_price},he=y(()=>j(h.value,L.value)),H=D({interval:null}),re=b(!1),k=y(()=>C.value.find(t=>t.value!==u.practice.interval)??null),we=y(()=>u.practice.self_serve&&u.practice.can_change_seats&&!!u.practice.interval&&!!k.value),Ee=y(()=>{var t;return u.practice.self_serve&&u.practice.can_change_seats&&(((t=u.seats)==null?void 0:t.used)??0)<=1}),je=y(()=>{var f;const t=k.value;if(!t)return null;const e=((f=u.seats)==null?void 0:f.limit)??0,g=j(e,t);return`${e} ${e===1?"person":"people"} · $${g.toLocaleString("en-US")}/${t.period}`}),Me=()=>{var t;k.value&&(H.interval=k.value.value,re.value=!0,q(((t=u.seats)==null?void 0:t.limit)??0,"interval",k.value.value))},De=()=>{H.patch(route("billing.interval.update"),{preserveScroll:!0,onSuccess:t=>{var e;(e=t.props.flash)!=null&&e.error||(V.value=!1)},onFinish:()=>{re.value=!1,c.value=null}})},Le=y(()=>{var e;const t=((e=u.seats)==null?void 0:e.used)??0;return t>1?`Pays for one person. There are ${t} on this account.`:null}),I=y(()=>{const t=[],e=(u.subscription.plans??[]).map(g=>({value:g.key,label:g.label,period:g.interval==="month"?"month":"year",plan:g.key,priceText:g.price??null}));return e.length&&t.push({key:"individual",label:"Individual",blurb:"Full access for one optometrist.",needs_seats:!1,intervals:e,unavailable:Le.value}),u.practice.can_buy&&C.value.length&&t.push({key:"practice",label:"Practice",blurb:`${u.practice.included_seats??2} team members included, then $${C.value[0].additional_seat_price} a ${C.value[0].period} each.`,needs_seats:!0,intervals:C.value}),t}),M=b(null),w=b(null),_=y(()=>I.value.find(t=>t.key===M.value)??I.value.find(t=>!t.unavailable)??I.value[0]??null);Q(I,t=>{var e;M.value===null&&(M.value=((e=t.find(g=>!g.unavailable)??t[0])==null?void 0:e.key)??null)},{immediate:!0}),Q(_,t=>{var e;if(!((e=t==null?void 0:t.intervals)!=null&&e.length)){w.value=null;return}t.intervals.some(g=>g.value===w.value)||(w.value=t.intervals[0].value)},{immediate:!0});const _e=y(()=>{var g;const t=_.value,e=(g=t==null?void 0:t.intervals)==null?void 0:g.find(f=>f.value===w.value);return!t||!e?null:t.needs_seats?`$${j(Y.value,e).toLocaleString("en-US")} a ${e.period}`:e.priceText?`${e.priceText} a ${e.period}`:null}),Ce=()=>{const t=_.value;if(!(!t||!w.value||t.unavailable)){if(t.needs_seats){Je();return}Ke("eyedock",w.value)}},$=b(!1),J=b(!1),se=b(!1),ue=()=>{var t;$.value=!0,E.interval=u.practice.interval??((t=C.value[0])==null?void 0:t.value)??null,q(h.value,"upgrade")},$e=()=>{$.value=!1,J.value=!1,c.value=null},Re=()=>{E.post(route("billing.upgrade-to-practice"),{onFinish:()=>{J.value=!1}})},Se=D({}),ne=b(!1),Ye=()=>{ne.value=!0,q(1,"downgrade")},qe=()=>{Se.post(route("billing.downgrade"),{preserveScroll:!0,onFinish:()=>{ne.value=!1}})},Ve=()=>{R.patch(route("billing.seats.update"),{onSuccess:t=>{var e;(e=t.props.flash)!=null&&e.error||(A.value=!1)},onFinish:()=>{se.value=!1}})},ze=y(()=>`${h.value} ${h.value===1?"person":"people"} · $${he.value.toLocaleString("en-US")}/${L.value.period}`),Ge=y(()=>{const t=U.value??L.value;return`${T.value} ${T.value===1?"person":"people"} · $${j(T.value,t).toLocaleString("en-US")}/${t.period}`});st(()=>{var t,e,g;h.value=Math.max(u.practice.included_seats??2,((t=u.seats)==null?void 0:t.used)??0),T.value=((e=u.seats)==null?void 0:e.limit)??h.value,
1new URLSearchParams(window.location.search).has("team")&&(u.practice.can_upgrade&&ue(),(g=document.querySelector('[data-testid="practice-upgrade-card"]'))==null||g.scrollIntoView({behavior:"smooth",block:"center"}))});const We=y(()=>{var t;return!!((t=u.legacy)!=null&&t.is_active)}),He=y(()=>{var t;return!!((t=u.comp)!=null&&t.is_active)}),Te=y(()=>We.value||He.value),S=D({product:"eyedock",plan:"yearly",seats:2,interval:null}),Je=()=>{S.product="eyedock",S.plan="practice",S.seats=Y.value,S.interval=w.value??de.value,S.post(route("billing.subscribe"),{preserveScroll:!0})},Ke=(t,e)=>{S.product=t,S.plan=e,S.post(route("billing.subscribe"),{preserveScroll:!0})},ce=D({pack:null}),Qe=t=>Number.isInteger(t)?`$${t}`:`$${t.toFixed(2)}`,Xe=t=>{ce.pack=t,ce.post(route("billing.credits.purchase"),{preserveScroll:!0})},ge=()=>{ot.post(route("billing.portal"))},Ze=t=>t?`${t[0].toUpperCase()}${t.slice(1)}ly`:"Custom",A=b(!1),V=b(!1),ye=(t,{used:e=0}={})=>{const g=Number(t),f=u.practice.included_seats??2,N=u.practice.max_seats??100;return Number.isFinite(g)?g>N?`The largest practice account is ${N} team members. For a bigger group, email [email protected] and we'll set it up for you.`:g<e?`You can't pay for fewer than the ${e} ${e===1?"person":"people"} using EyeDock right now. Remove somebody from your team first, then lower this.`:g<f?`A practice account starts at ${f} team members, which is what the base price covers.`:null:null},le=y(()=>{var t;return ye(T.value,{used:((t=u.seats)==null?void 0:t.used)??0})}),Be=y(()=>ye(W.value)),ve=y(()=>ye(h.value)),et=y(()=>u.practice.is_practice?"Practice":"Individual"),tt=y(()=>!!u.practice.is_practice),at=y(()=>{const t=u.practice.interval??Ze(u.subscription.current_interval);return t?`${t[0].toUpperCase()}${t.slice(1)}`:null});return(t,e)=>{var g,f,N,K;return a(),n(p,null,[m(v(nt),{title:"Billing"}),s("div",ct,[s("div",gt,[s("header",yt,[s("div",vt,[e[17]||(e[17]=s("h1",{class:"text-2xl font-semibold text-gray-900 dark:text-gray-100"}," Billing & subscription ",-1)),r.isStudent?(a(),n("span",mt," Student / Faculty ")):i("",!0)]),e[18]||(e[18]=s("p",{class:"mt-1 text-sm text-gray-600 dark:text-gray-400"}," Manage your EyeDock subscription and add-ons. ",-1))]),r.isOwner?i("",!0):(a(),n("div",bt,[e[22]||(e[22]=s("p",{class:"text-sm text-amber-900 dark:text-amber-100"}," Only the account owner can manage or renew billing. You can view the subscription here, but can't change it. ",-1)),r.owner?(a(),n("p",pt,[e[19]||(e[19]=d(" To make a change, contact ",-1)),s("span",xt,l(r.owner.name),1),e[20]||(e[20]=d(" (",-1)),s("a",{href:`mailto:${r.owner.email}`,class:"font-medium underline hover:text-amber-950"},l(r.owner.email),9,kt),e[21]||(e[21]=d("). ",-1))])):(a(),n("p",ft," Contact your administrator to make a change. "))])),r.legacy?(a(),n("div",ht,[s("div",wt,[s("div",_t,[e[23]||(e[23]=s("div",null,[s("h2",{class:"text-lg font-semibold text-gray-900 dark:text-gray-100"}," Your membership "),s("p",{class:"mt-1 text-sm text-gray-600 dark:text-gray-400"}," Billed through your existing EyeDock membership. ")],-1)),s("span",{class:X(["inline-flex items-center rounded-full px-2.5 py-0.5 text-xs font-medium",r.legacy.is_active?"bg-green-100 text-green-800":"bg-red-100 text-red-700"])},l(r.legacy.is_active?"Active":"Expired"),3)]),s("div",Ct,[s("p",$t,[d(l(r.legacy.is_active?"Expires":"Expired")+": ",1),s("span",St,l(r.legacy.expires_at??"—"),1)]),r.legacy.products.length?(a(),n("div",Tt,[e[24]||(e[24]=s("p",{class:"font-medium text-gray-700 dark:text-gray-300"}," Your products: ",-1)),s("ul",Bt,[(a(!0),n(p,null,Z(r.legacy.products,o=>(a(),n("li",{key:o.id,class:"text-gray-600 dark:text-gray-400"},l(o.name)+" — "+l(o.expired?"expired":"until")+" "+l(o.expires_at),1))),128))])])):i("",!0),r.legacy.student_renewal_url?(a(),n("div",Pt,[e[26]||(e[26]=s("p",{class:"text-gray-600 dark:text-gray-400"}," Still a student or faculty member? Renewing needs your school's code, not a payment. ",-1)),m(v(ee),{href:r.legacy.student_renewal_url,class:"mt-1 inline-block font-medium text-orange-600 hover:text-orange-700 dark:text-orange-400"},{default:x(()=>[...e[25]||(e[25]=[d(" Renew with my student code → ",-1)])]),_:1},8,["href"])])):r.legacy.renewal_url?(a(),n("div",Ot,[e[31]||(e[31]=s("p",{class:"text-gray-600 dark:text-gray-400"}," This membership is still billed through our previous system. Move it over and you can manage everything here — card, receipts and renewal — without leaving EyeDock. ",-1)),s("div",Ut,[oe(s("select",{"onUpdate:modelValue":e[0]||(e[0]=o=>te.value=o),class:"rounded-md border-gray-300 text-sm shadow-sm focus:border-indigo-500 focus:ring-indigo-500 dark:border-gray-700 dark:bg-gray-900 dark:text-gray-300"},[e[27]||(e[27]=s("option",{value:"yearly"},"Yearly",-1)),e[28]||(e[28]=s("option",{value:"monthly"},"Monthly",-1)),r.practice.can_buy?(a(),n("option",Ft," Practice ")):i("",!0)],512),[[lt,te.value]]),Ae.value?(a(),n("label",It,[e[29]||(e[29]=s("span",null,"People",-1)),oe(s("input",{"onUpdate:modelValue":e[1]||(e[1]=o=>W.value=o),type:"number",min:r.practice.included_seats??2,max:r.practice.max_seats,class:"w-20 rounded-md border-gray-300 text-sm shadow-sm focus:border-indigo-500 focus:ring-indigo-500 dark:border-gray-700 dark:bg-gray-900 dark:text-gray-300"},null,8,At),[[be,W.value,void 0,{number:!0}]]),Be.value?i("",!0):(a(),n("span",Nt,"$"+l(j(W.value,B.value).toLocaleStr
1ing("en-US"))+"/"+l(B.value.period),1))])):i("",!0),m(O,{disabled:v(G).processing||!!Be.value,onClick:Ie},{default:x(()=>[...e[30]||(e[30]=[d(" Move to our new billing ",-1)])]),_:1},8,["disabled"])]),s("p",Et," Nothing is charged today. Your first payment is on "+l(r.legacy.expires_at??"your renewal date")+", when your current membership would have renewed. ",1),s("a",{href:r.legacy.renewal_url,target:"_blank",class:"mt-3 inline-block text-xs text-gray-500 underline hover:text-gray-700 dark:text-gray-400"}," Or update your card in the old system ",8,jt)])):i("",!0)])])])):i("",!0),r.comp?(a(),n("div",Mt,[s("div",Dt,[s("div",Lt,[s("div",null,[s("h2",Rt,l(r.comp.is_student?"Student access":r.comp.access_type==="invoiced"?"Subscription active":"Complimentary access"),1),s("p",Yt,l(r.comp.is_student?"Free EyeDock access through the student / faculty program.":r.comp.access_type==="invoiced"?"Your EyeDock access is active.":"Complimentary EyeDock access."),1)]),e[32]||(e[32]=s("span",{class:"inline-flex items-center rounded-full bg-green-100 px-2.5 py-0.5 text-xs font-medium text-green-800 dark:bg-green-900 dark:text-green-100"}," Active ",-1))]),s("div",qt,[s("p",Vt,[e[33]||(e[33]=d(" Access until: ",-1)),s("span",zt,l(r.comp.expires_at??"—"),1)]),r.comp.renew_url?(a(),P(v(ee),{key:0,href:r.comp.renew_url,class:"inline-block font-medium text-orange-600 hover:text-orange-700 dark:text-orange-400"},{default:x(()=>[...e[34]||(e[34]=[d(" Renew or re-verify your student access → ",-1)])]),_:1},8,["href"])):i("",!0)])])])):i("",!0),r.studentRenewalUrl?(a(),n("div",Gt,[s("div",Wt,[e[36]||(e[36]=s("h2",{class:"text-lg font-semibold text-gray-900 dark:text-gray-100"}," Renew your student / faculty access ",-1)),e[37]||(e[37]=s("p",{class:"mt-1 text-sm text-gray-700 dark:text-gray-300"}," If you're still a student or faculty member, enter your school's code to extend your free access for another year — no payment required. If you've graduated, choose a plan below instead. ",-1)),m(v(ee),{href:r.studentRenewalUrl,class:"mt-4 inline-block rounded-md bg-orange-600 px-4 py-2 text-sm font-medium text-white transition hover:bg-orange-700"},{default:x(()=>[...e[35]||(e[35]=[d(" Renew with my student code ",-1)])]),_:1},8,["href"]),e[38]||(e[38]=s("p",{class:"mt-2 text-xs text-gray-600 dark:text-gray-400"},[d(" Codes come from your school — ask your program office. If your school needs one, have them contact us at "),s("a",{href:"mailto:[email protected]",class:"underline hover:text-gray-900 dark:hover:text-gray-200"},"[email protected]"),d(". ")],-1))])])):i("",!0),!Te.value&&r.isOwner?(a(),n("div",Ht,[s("div",Jt,[s("div",Kt,[s("div",null,[s("h2",Qt,l(r.subscription.product),1),r.subscription.subscribed?i("",!0):(a(),n("p",Xt,l(r.subscription.description),1))]),r.subscription.subscribed?(a(),n("span",Zt," Active ")):r.subscription.on_trial?(a(),n("span",ea," Free trial ")):(a(),n("span",ta," Not active "))]),r.subscription.subscribed?(a(),n("div",aa,[s("dl",ra,[s("div",sa,[e[39]||(e[39]=s("dt",{class:"w-16 shrink-0 text-gray-500 dark:text-gray-400"}," Plan ",-1)),s("dd",na,l(et.value),1),r.practice.self_serve&&r.practice.can_upgrade?(a(),n("button",{key:0,type:"button","data-testid":"change-plan","aria-expanded":$.value,class:"text-sm font-medium text-orange-600 hover:text-orange-700 dark:text-orange-400",onClick:e[2]||(e[2]=o=>$.value?$e():ue())},l($.value?"Never mind":"Change"),9,la)):i("",!0)]),tt.value?(a(),n("div",oa,[e[41]||(e[41]=s("dt",{class:"w-16 shrink-0 text-gray-500 dark:text-gray-400"}," Seats ",-1)),s("dd",ia,l(r.seats.limit)+" paid for, "+l(r.seats.used)+" in use ",1),r.practice.self_serve&&r.practice.can_change_seats?(a(),n("button",{key:0,type:"button","data-testid":"change-seats","aria-expanded":A.value,class:"text-sm font-medium text-orange-600 hover:text-orange-700 dark:text-orange-400",onClick:e[3]||(e[3]=o=>A.value=!A.value)},l(A.value?"Never mind":"Change seats"),9,da)):i("",!0),e[42]||(e[42]=s("span",{class:"hidden text-gray-300 sm:inline dark:text-gray-600","aria-hidden":"true"},"|",-1)),m(v(ee),{href:t.route("organization.members.index"),class:"inline-flex items-center gap-1 text-sm text-gray-600 underline decoration-gray-300 underline-offset-2 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-100"},{default:x(()=>[...e[40]||(e[40]=[d(" Invite & manage your team ",-1),s("span",{"aria-hidden":"true"},"→",-1)])]),_:1},8,["href"])])):i("",!0),r.practice.interval||r.subscription.current_interval?(a(),n("div",ua,[e[43]||(e[43]=s("dt",{class:"w-16 shrink-0 text-gray-500 dark:text-gray-400"}," Billed ",-1)),s("dd",ca,l(at.value),1),we.value?(a(),n("button",{key:0,t
1ype:"button","data-testid":"switch-interval-toggle","aria-expanded":V.value,class:"text-sm font-medium text-orange-600 hover:text-orange-700 dark:text-orange-400",onClick:e[4]||(e[4]=o=>V.value=!V.value)},l(V.value?"Never mind":`Switch to ${k.value.value}`),9,ga)):i("",!0)])):i("",!0),r.creditBalance?(a(),n("div",ya,[e[44]||(e[44]=s("dt",{class:"w-16 shrink-0 text-gray-500 dark:text-gray-400"}," Credit ",-1)),s("dd",va," $"+l((r.creditBalance/100).toFixed(2)),1),e[45]||(e[45]=s("span",{class:"text-sm text-gray-500 dark:text-gray-400"}," comes off your next invoices automatically ",-1))])):i("",!0)]),r.subscription.subscribed&&r.subscription.on_grace_period&&r.subscription.ends_at?(a(),n("p",ma," Cancelled. Access continues until "+l(r.subscription.ends_at)+", then won't renew. ",1)):i("",!0),Ee.value?(a(),n("p",ba,[e[46]||(e[46]=d(" Only one person using EyeDock now? ",-1)),s("button",{type:"button","data-testid":"open-downgrade",class:"font-medium text-gray-600 underline hover:text-gray-900 dark:text-gray-300",onClick:Ye}," Go back to a single account"),e[47]||(e[47]=d(". ",-1))])):i("",!0),r.subscription.subscribed&&V.value&&we.value?(a(),n("div",pa,[s("p",xa,[d(" Paying "+l(k.value.value)+" works out at ",1),s("strong",ka,"$"+l(j(r.seats.limit,k.value).toLocaleString("en-US"))+" a "+l(k.value.period),1),e[48]||(e[48]=d(". This settles up straight away rather than at your renewal, and we'll show you the exact figure first. ",-1))]),m(Pe,{class:"mt-3","data-testid":"switch-interval",disabled:v(H).processing,onClick:Me},{default:x(()=>[d(" Switch to "+l(k.value.value)+" billing ",1)]),_:1},8,["disabled"]),m(pe,{class:"mt-2",message:v(H).errors.interval},null,8,["message"])])):i("",!0),r.subscription.subscribed&&A.value&&r.practice.can_change_seats?(a(),n("div",fa,[r.practice.self_serve&&r.practice.can_change_seats&&A.value?(a(),n("div",ha,[s("div",null,[e[49]||(e[49]=s("label",{for:"seat_target",class:"block text-xs font-medium text-gray-600 dark:text-gray-400"}," Total team members ",-1)),oe(s("input",{id:"seat_target","onUpdate:modelValue":e[5]||(e[5]=o=>T.value=o),type:"number",min:r.practice.included_seats??2,max:r.practice.max_seats,class:"mt-1 w-28 rounded-md border-gray-300 shadow-sm focus:border-indigo-500 focus:ring-indigo-500 dark:border-gray-700 dark:bg-gray-900 dark:text-gray-300"},null,8,wa),[[be,T.value,void 0,{number:!0}]])]),m(O,{class:X({"opacity-50":v(R).processing}),disabled:v(R).processing||T.value===r.seats.limit||le.value,"data-testid":"review-seats",onClick:e[6]||(e[6]=o=>se.value=!0)},{default:x(()=>[...e[50]||(e[50]=[d(" Review change ",-1)])]),_:1},8,["class","disabled"])])):i("",!0),le.value?(a(),n("p",_a,l(le.value),1)):i("",!0),A.value&&!le.value?(a(),n("p",Ca,[s("strong",$a,"$"+l(j(T.value,U.value??B.value).toLocaleString("en-US"))+"/"+l((U.value??B.value).period),1),d(" is what you'll pay from here on. Changes are prorated, so adding is charged now for the rest of your "+l((U.value??B.value).period)+", and removing is credited against your next invoice. ",1)])):i("",!0),T.value!==r.seats.limit?(a(),n("div",Sa,[F.value?(a(),n("p",Ta," Working out what this will cost… ")):(g=c.value)!=null&&g.available?(a(),n(p,{key:1},[c.value.due_now_cents?(a(),n("p",Ba,[s("strong",Pa,l(c.value.due_now),1),d(" for the rest of your current "+l((U.value??B.value).period)+". ",1)])):(a(),n("p",Oa," Nothing to pay today. This credits your account and comes off your next invoice. ")),c.value.next_invoice_on?(a(),n("p",Ua," Then "+l(c.value.recurring)+" on "+l(c.value.next_invoice_on)+". ",1)):i("",!0)],64)):(a(),n("p",Fa," You'll be charged a prorated amount for the rest of your current "+l((U.value??B.value).period)+". ",1))])):i("",!0),m(pe,{class:"mt-2",message:v(R).errors.seats},null,8,["message"])])):i("",!0)])):r.subscription.on_trial?(a(),n("div",Ia,[s("p",Aa,[e[51]||(e[51]=d(" You're on a free trial",-1)),r.subscription.trial_ends_at?(a(),n("span",Na," through "+l(r.subscription.trial_ends_at),1)):i("",!0),e[52]||(e[52]=d(". Subscribe any time to keep access. ",-1))]),r.isOwner&&I.value.length?(a(),n("div",Ea,[s("div",ja,[(a(!0),n(p,null,Z(I.value,o=>(a(),n("button",{key:o.key,type:"button","data-testid":`plan-choice-${o.key}`,class:X(["rounded-lg border px-3 py-2 text-left text-sm transition",M.value===o.key?"border-orange-500 bg-orange-50 dark:bg-orange-950":"border-gray-300 bg-white hover:bg-gray-50 dark:border-gray-700 dark:bg-gray-900"]),onClick:me=>M.value=o.key},[s("span",Da,l(o.label),1),o.unavailable?(a(),n("span",La,l(o.unavailable),1)):(a(),n("span",Ra,l(o.blurb),1))],10,Ma))),128))]),(f=_.value)!=null&&f.unavailable?(a(),n("div",Ya,[d(" An individual plan pays for one person, and there are "+l(r.seats.used)+" on this account. Choose Practice, or remove people from your team first. ",1),m(v(ee),{href:t.route("organization.members.index"),class:"font-medium underline"},{default:x(()=>[...e[53]||(e[53]=[d("Manage your team",-1)])]),_:1},8,["href"])])):_.value?(a(),P(Oe,{key:1,interval:w.value,"onUpdate:interval":e[7]||
1(e[7]=o=>w.value=o),seats:Y.value,"onUpdate:seats":e[8]||(e[8]=o=>Y.value=o),intervals:_.value.intervals,"needs-seats":!!_.value.needs_seats,"included-seats":r.practice.included_seats??2,"max-seats":r.practice.max_seats??100,"price-text":_e.value,disabled:v(S).processing},null,8,["interval","seats","intervals","needs-seats","included-seats","max-seats","price-text","disabled"])):i("",!0),m(O,{disabled:v(S).processing||!w.value||!!((N=_.value)!=null&&N.unavailable),"data-testid":"subscribe-from-trial",onClick:Ce},{default:x(()=>{var o;return[d(l((o=_.value)!=null&&o.needs_seats?"Subscribe as a practice":"Subscribe"),1)]}),_:1},8,["disabled"])])):r.isOwner?(a(),n("p",qa,[...e[54]||(e[54]=[d(" Subscription plans aren't available right now. Please contact ",-1),s("a",{href:"mailto:[email protected]",class:"font-medium underline"},"[email protected]",-1),d(" so we can help. ",-1)])])):i("",!0)])):r.isOwner?(a(),n("div",Va,[I.value.length?(a(),n(p,{key:0},[e[55]||(e[55]=s("p",{class:"text-sm text-gray-700 dark:text-gray-300"}," Choose a plan: ",-1)),s("div",za,[(a(!0),n(p,null,Z(I.value,o=>(a(),n("button",{key:o.key,type:"button",class:X(["rounded-lg border px-3 py-2 text-left text-sm transition",M.value===o.key?"border-orange-500 bg-orange-50 dark:bg-orange-950":"border-gray-300 bg-white hover:bg-gray-50 dark:border-gray-700 dark:bg-gray-900"]),onClick:me=>M.value=o.key},[s("span",Wa,l(o.label),1),s("span",Ha,l(o.blurb),1)],10,Ga))),128))]),_.value?(a(),P(Oe,{key:0,interval:w.value,"onUpdate:interval":e[9]||(e[9]=o=>w.value=o),seats:Y.value,"onUpdate:seats":e[10]||(e[10]=o=>Y.value=o),intervals:_.value.intervals,"needs-seats":!!_.value.needs_seats,"included-seats":r.practice.included_seats??2,"max-seats":r.practice.max_seats??100,"price-text":_e.value,disabled:v(S).processing},null,8,["interval","seats","intervals","needs-seats","included-seats","max-seats","price-text","disabled"])):i("",!0),m(O,{disabled:v(S).processing||!w.value,onClick:Ce},{default:x(()=>{var o;return[d(l((o=_.value)!=null&&o.needs_seats?"Subscribe as a practice":"Subscribe"),1)]}),_:1},8,["disabled"])],64)):(a(),n("p",Ja,[...e[56]||(e[56]=[d(" Subscription plans aren't available right now. Please contact ",-1),s("a",{href:"mailto:[email protected]",class:"font-medium underline"},"[email protected]",-1),d(" so we can help. ",-1)])]))])):i("",!0)]),r.canManageBilling?(a(),n("div",Ka,[s("p",Qa,[r.subscription.subscribed?(a(),n(p,{key:0},[d(" Open the secure billing portal for receipts, to update your payment method, or to cancel. ")],64)):(a(),n(p,{key:1},[d(" Past invoices and receipts are in the secure billing portal. Your subscription starts again above, not there. ")],64))]),r.isOwner&&r.subscription.subscribed?(a(),P(O,{key:0,class:"shrink-0",onClick:ge},{default:x(()=>[...e[57]||(e[57]=[d(" Open billing portal ",-1)])]),_:1})):r.isOwner?(a(),n("button",{key:1,type:"button",class:"shrink-0 text-sm font-medium text-gray-600 underline hover:text-gray-900 dark:text-gray-300",onClick:ge}," View past invoices ")):i("",!0)])):i("",!0)])):i("",!0),r.canManageBilling&&(Te.value||!r.isOwner)?(a(),n("div",Xa,[s("div",Za,[e[59]||(e[59]=s("div",null,[s("h2",{class:"text-lg font-semibold text-gray-900 dark:text-gray-100"}," Manage billing "),s("p",{class:"mt-1 text-sm text-gray-600 dark:text-gray-400"}," Receipts, payment method, plan changes and cancellation are all in Stripe's secure billing portal. ")],-1)),r.isOwner?(a(),P(O,{key:0,class:"shrink-0",onClick:ge},{default:x(()=>[...e[58]||(e[58]=[d(" Open billing portal ",-1)])]),_:1})):i("",!0)])])):i("",!0),r.practice.self_serve&&r.practice.can_upgrade?(a(),n("div",er,[s("div",tr,[e[70]||(e[70]=s("h2",{class:"text-lg font-semibold text-gray-900 dark:text-gray-100"}," Add your team ",-1)),e[71]||(e[71]=s("p",{class:"mt-1 text-sm text-gray-600 dark:text-gray-400"}," A practice account gives each colleague their own login and their own saved work, and costs less than the same people subscribing separately. ",-1)),$.value?i("",!0):(a(),P(O,{key:0,class:"mt-4","data-testid":"start-upgrade",onClick:ue},{default:x(()=>[...e[60]||(e[60]=[d(" Convert to a practice account ",-1)])]),_:1})),$.value&&C.value.length>1?(a(),n("div",ar,[e[61]||(e[61]=s("span",{class:"block text-xs font-medium text-gray-600 dark:text-gray-400"}," How often would you like to pay? ",-1)),s("div",rr,[(a(!0),n(p,null,Z(C.value,o=>(a(),n("button",{key:o.value,type:"button",class:X(["rounded-md border px-3 py-1.5 text-sm font-medium transition",z.value===o.value?"border-orange-500 bg-orange-50 text-orange-900 dark:bg-orange-950 dar
1k:text-orange-200":"border-gray-300 bg-white text-gray-700 hover:bg-gray-50 dark:border-gray-700 dark:bg-gray-900 dark:text-gray-300"]),onClick:me=>v(E).interval=o.value},l(o.label),11,sr))),128))]),r.practice.interval&&z.value!==r.practice.interval?(a(),n("p",nr," This also changes how often you are billed, which Stripe settles today rather than at your renewal. The amount below is what that comes to. ")):i("",!0)])):i("",!0),$.value?(a(),n("div",lr,[s("div",null,[e[62]||(e[62]=s("label",{for:"upgrade_seats",class:"block text-xs font-medium text-gray-600 dark:text-gray-400"}," People who'll use EyeDock ",-1)),oe(s("input",{id:"upgrade_seats","onUpdate:modelValue":e[11]||(e[11]=o=>h.value=o),type:"number",min:r.practice.included_seats??2,max:r.practice.max_seats,class:"mt-1 w-28 rounded-md border-gray-300 shadow-sm focus:border-indigo-500 focus:ring-indigo-500 dark:border-gray-700 dark:bg-gray-900 dark:text-gray-300"},null,8,or),[[be,h.value,void 0,{number:!0}]])]),ve.value?(a(),n("p",ir,l(ve.value),1)):(a(),n("p",dr,[s("strong",ur,"$"+l(he.value.toLocaleString("en-US"))+"/"+l(L.value.period),1),d(". That's $"+l(L.value.base_price)+" including "+l(r.practice.included_seats)+" team members",1),h.value>r.practice.included_seats?(a(),n(p,{key:0},[d(", plus "+l(h.value-r.practice.included_seats)+" × $"+l(L.value.additional_seat_price),1)],64)):i("",!0),e[63]||(e[63]=d(". ",-1))]))])):i("",!0),$.value?(a(),n("div",cr,[F.value?(a(),n("p",gr," Working out what you'll be charged… ")):(K=c.value)!=null&&K.available?(a(),n(p,{key:1},[c.value.due_now_cents?(a(),n("p",yr,[s("strong",vr,l(c.value.due_now),1),e[64]||(e[64]=d(" today.",-1)),c.value.credit?(a(),n(p,{key:0},[d(" That's "+l(c.value.recurring)+" for the year, less "+l(c.value.credit)+" credit for the ",1),c.value.credit_days?(a(),n(p,{key:0},[d(l(c.value.credit_days)+" "+l(c.value.credit_days===1?"day":"days")+" left on your",1)],64)):(a(),n(p,{key:1},[d("rest of your")],64)),d(" "+l(c.value.replaces_plan??"current")+" plan",1)],64)):i("",!0),e[65]||(e[65]=d(". ",-1))])):i("",!0),c.value.replaces_plan?(a(),n("p",mr," This replaces your "+l(c.value.replaces_plan)+" plan on the same subscription. There's nothing separate to cancel. ",1)):(a(),n("p",br,[e[66]||(e[66]=d(" Nothing to pay today. Your current plan has enough left to cover the change",-1)),c.value.residual_credit?(a(),n(p,{key:0},[d(", and "+l(c.value.residual_credit)+" credit carries over",1)],64)):i("",!0),e[67]||(e[67]=d(". ",-1))])),c.value.next_invoice_on?(a(),n("p",pr," Then "+l(c.value.recurring)+" on "+l(c.value.next_invoice_on)+", and each year after that unless you cancel. ",1)):i("",!0)],64)):(a(),n("p",xr," You'll be charged for the year, less credit for whatever your current plan has left. It renews each year unless you cancel. "))])):i("",!0),$.value?(a(),P(pe,{key:4,class:"mt-2",message:v(E).errors.seats},null,8,["message"])):i("",!0),$.value?(a(),n("div",kr,[m(O,{"data-testid":"review-upgrade",disabled:!!ve.value,onClick:e[12]||(e[12]=o=>J.value=!0)},{default:x(()=>[...e[68]||(e[68]=[d(" Continue ",-1)])]),_:1},8,["disabled"]),m(Pe,{onClick:$e},{default:x(()=>[...e[69]||(e[69]=[d(" Cancel ",-1)])]),_:1})])):i("",!0)])])):i("",!0),m(ie,{show:J.value,title:"Convert to a practice account?",summary:ze.value,preview:c.value,"preview-loading":F.value,processing:v(E).processing,"confirm-verb":"Convert to a practice",onClose:e[13]||(e[13]=o=>J.value=!1),onConfirm:Re},null,8,["show","summary","preview","preview-loading","processing"]),k.value?(a(),P(ie,{key:7,show:re.value,title:`Switch to ${k.value.value} billing?`,summary:je.value,preview:c.value,"preview-loading":F.value,processing:v(H).processing,period:k.value.period,"no-charge-note":"Nothing to pay now. This credits your account and comes off your next invoices.","confirm-verb":`Switch to ${k.value.value}`,onClose:e[14]||(e[14]=o=>re.value=!1),onConfirm:De},null,8,["show","title","summary","preview","preview-loading","processing","period","confirm-verb"])):i("",!0),m(ie,{show:ne.value,title:"Go back to a single account?",summary:"1 person",preview:c.value,"preview-loading":F.value,processing:v(Se).processing,period:(U.value??B.value).peri
1od,"no-charge-note":"Nothing to pay now. This credits your account and comes off your next invoices.","confirm-verb":"Go back to a single account",onClose:e[15]||(e[15]=o=>ne.value=!1),onConfirm:qe},null,8,["show","preview","preview-loading","processing","period"]),m(ie,{show:se.value,title:"Change how many people you pay for?",summary:Ge.value,preview:c.value,"preview-loading":F.value,processing:v(R).processing,"no-charge-note":"Nothing to pay now. This credits your account and comes off your next invoice.","confirm-verb":"Update team members",period:(U.value??B.value).period,onClose:e[16]||(e[16]=o=>se.value=!1),onConfirm:Ve},null,8,["show","summary","preview","preview-loading","processing","period"]),i("",!0),Fe.value?(a(),n("div",fr,[s("div",hr,[s("div",wr,[s("div",null,[e[75]||(e[75]=s("h2",{class:"text-lg font-semibold text-gray-900 dark:text-gray-100"}," AI Assistant Credits ",-1)),s("p",_r," Each answer from the AI assistant costs "+l(r.aiCredits.costs.fast)+" credit, or "+l(r.aiCredits.costs.strong)+" for a deeper answer. ",1)]),s("span",Cr,l(r.aiCredits.balance.toLocaleString())+" credits ",1)]),r.hasEyedockSubscription?r.isOwner?(a(),n("div",Sr,[r.aiCredits.packs.length?(a(),n("p",Tr," Buy a credit pack: ")):i("",!0),r.aiCredits.packs.length?(a(),n("div",Br,[(a(!0),n(p,null,Z(r.aiCredits.packs,o=>(a(),P(O,{key:o.key,disabled:v(ce).processing,onClick:me=>Xe(o.key)},{default:x(()=>[d(" Buy "+l(o.label)+" for "+l(Qe(o.price)),1)]),_:2},1032,["disabled","onClick"]))),128))])):(a(),n("p",Pr," Credit packs aren't configured yet. ")),r.aiCredits.packs.length?(a(),n("p",Or," A one-time payment, not a subscription. Credits never expire. You'll finish paying on Stripe. ")):i("",!0)])):(a(),n("div",Ur," Ask the account owner to purchase more AI credits. ")):(a(),n("div",$r," You need an active EyeDock subscription before buying AI credits. "))])])):i("",!0)])])],64)}}});export{Rr 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.