1import{d as Q,c as X,r as m,o as Y,D as A,K as M,B as e,k as x,G as s,u as d,V as Z,L as D,M as ee,z as n,H as k,E as y,_ as E,F as I,W as N,a3 as te,C as o,A as V}from"./vendor-vue-BVJWaRIf.js";import{f as W,u as se,a as ae,c as re,a9 as de,_ as p,h as oe,C as le}from"./index-DajaXR7V.js";import{_ as ne}from"./AppLayout.vue_vue_type_script_setup_true_lang-JfP_0peg.js";import{u as ie}from"./vendor-i18n-pgwztqC8.js";import"./vendor-misc-WKm5Kdig.js";import"./AppHeader.vue_vue_type_style_index_0_scoped_59fb3e77_lang-Byu4umtj.js";import"./useClipboard-CMfQ2Hei.js";import"./LocaleSwitcher-2gZiNgay.js";/* empty css */async function ce(S){const t={code:S},{data:v}=await W.post("/redeem",t);return v}async function ue(S=1,t=20){const{data:v}=await W.get("/redeem/history",{params:{page:S,page_size:t}});return v}const L={redeem:ce,getHistory:ue},me={class:"mx-auto max-w-2xl space-y-6"},pe={class:"card overflow-hidden"},_e={class:"bg-gradient-to-br from-primary-500 to-primary-600 px-6 py-8 text-center"},ye={class:"mb-4 inline-flex h-16 w-16 items-center justify-center rounded-2xl bg-white/20 backdrop-blur-sm"},xe={class:"text-sm font-medium text-primary-100"},ve={class:"mt-2 text-4xl font-bold text-white"},he={class:"mt-2 text-sm text-primary-100"},be={class:"card"},fe={class:"p-6"},ge={for:"code",class:"input-label"},ke={class:"relative mt-1"},we={class:"pointer-events-none absolute inset-y-0 left-0 flex items-center pl-4"},Ce=["placeholder","disabled"],Ae={class:"input-hint"},Se=["disabled"],$e={key:0,class:"-ml-1 mr-2 h-5 w-5 animate-spin",fill:"none",viewBox:"0 0 24 24"},ze={key:0,class:"card border-emerald-200 bg-emerald-50 dark:border-emerald-800/50 dark:bg-emerald-900/20"},Re={class:"p-6"},Fe={class:"flex items-start gap-4"},Ve={class:"flex h-10 w-10 flex-shrink-0 items-center justify-center rounded-xl bg-emerald-100 dark:bg-emerald-900/30"},je={class:"flex-1"},Be={class:"text-sm font-semibold text-emerald-800 dark:text-emerald-300"},He={class:"mt-2 text-sm text-emerald-700 dark:text-emerald-400"},Me={class:"mt-3 space-y-1"},Te={key:0,class:"font-medium"},Pe={key:1,class:"font-medium"},qe={key:2,class:"font-medium"},De={key:0},Ee={key:1},Ie={key:3},Ne={class:"font-semibold"},Le={key:4},We={class:"font-semibold"},Ue={key:0,class:"card border-red-200 bg-red-50 dark:border-red-800/50 dark:bg-red-900/20"},Ge={class:"p-6"},Ke={class:"flex items-start gap-4"},Je={class:"flex h-10 w-10 flex-shrink-0 items-center justify-center rounded-xl bg-red-100 dark:bg-red-900/30"},Oe={class:"flex-1"},Qe={class:"text-sm font-semibold text-red-800 dark:text-red-300"},Xe={class:"mt-2 text-sm text-red-700 dark:text-red-400"},Ye={class:"card border-primary-200 bg-primary-50 dark:border-primary-800/50 dark:bg-primary-900/20"},Ze={class:"p-6"},et={class:"flex items-start gap-4"},tt={class:"flex h-10 w-10 flex-shrink-0 items-center justify-center rounded-xl bg-primary-100 dark:bg-primary-900/30"},st={class:"flex-1"},at={class:"text-sm font-semibold text-primary-800 dark:text-primary-300"},rt={class:"mt-2 list-inside list-disc space-y-1 text-sm text-primary-700 dark:text-primary-400"},dt={key:0,class:"ml-1.5 inline-flex items-center rounded-md bg-primary-200/50 px-2 py-0.5 text-xs font-medium text-primary-800 dark:bg-primary-800/40 dark:text-primary-200"},ot={class:"card"},lt={class:"border-b border-gray-100 px-6 py-4 dark:border-dark-700"},nt={class:"text-lg font-semibold text-gray-900 dark:text-white"},it={class:"p-6"},ct={key:0,class:"flex items-center justify-center py-8"},ut={key:1,class:"space-y-3"},mt={class:"flex items-center gap-4"},pt={class:"text-sm font-medium text-gray-900 dark:text-white"},_t={class:"text-xs text-gray-500 dark:text-dark-400"},yt={class:"text-right"},xt={key:0,class:"font-mono text-xs text-gray-400 dark:text-dark-500"},vt={key:1,class:"text-xs text-gray-400 dark:text-dark-500"},ht=["title"],bt={key:2,class:"empty-state py-8"},ft={class:"mb-4 flex h-16 w-16 items-center justify-center rounded-2xl bg-gray-100 dark:bg-dark-800"},gt={class:"text-sm text-gray-500 dark:text-dark-400"},kt={class:"mt-4 flex flex-wrap items-center justify-between gap-3 text-sm"},wt=["disabled"],Ct=["value"],At=["disabled"],St=["disabled"],$t=Q({__name:"RedeemView",setup(S){const{t}=ie(),v=se(),h=ae(),U=re(),T=X(()=>v.user),b=m(""),_=m(!1),i=m(null),$=m(""),j=m([]),f=m(!1),w=m(1),g=m(20),B=m(0);let z=0,P=20;const H=m(""),R=a=>a==="balance"||a==="admin_balance",F=a=>a==="subscription",G=a=>a==="admin_balance"||a==="admin_concurrency",K=a=>a.type==="balance"?t("redeem.balanceAddedRedeem"):a.type==="admin_balance"?a.value>
1=0?t("redeem.balanceAddedAdmin"):t("redeem.balanceDeductedAdmin"):a.type==="concurrency"?t("redeem.concurrencyAddedRedeem"):a.type==="admin_concurrency"?a.value>=0?t("redeem.concurrencyAddedAdmin"):t("redeem.concurrencyReducedAdmin"):a.type==="subscription"?t("redeem.subscriptionAssigned"):t("common.unknown"),J=a=>{var l;if(R(a.type))return`${a.value>=0?"+":""}$${a.value.toFixed(2)}`;if(F(a.type)){const c=a.validity_days||Math.round(a.value),u=((l=a.group)==null?void 0:l.name)||"";return u?`${c}${t("redeem.days")} - ${u}`:`${c}${t("redeem.days")}`}else return`${a.value>=0?"+":""}${a.value} ${t("redeem.requests")}`},C=async(a=1)=>{const l=++z,c=g.value;f.value=!0;try{const u=await L.getHistory(a,c);if(l!==z)return;j.value=u.items,B.value=u.total,w.value=a,g.value=c,P=c}catch(u){if(l!==z)return;g.value=P,h.showError(t("redeem.historyLoadFailed")),console.error("Failed to fetch history:",u)}finally{l===z&&(f.value=!1)}},O=async()=>{var a,l;if(!b.value.trim()){h.showError(t("redeem.pleaseEnterCode"));return}_.value=!0,$.value="",i.value=null;try{const c=await L.redeem(b.value.trim());i.value=c;try{await v.refreshUser()}catch(u){console.error("Failed to refresh user after redeem:",u),h.showWarning(t("redeem.userRefreshFailed"))}if(c.type==="subscription")try{await U.fetchActiveSubscriptions(!0)}catch(u){console.error("Failed to refresh subscriptions after redeem:",u),h.showWarning(t("redeem.subscriptionRefreshFailed"))}b.value="",await C(),h.showSuccess(t("redeem.codeRedeemSuccess"))}catch(c){$.value=((l=(a=c.response)==null?void 0:a.data)==null?void 0:l.detail)||t("redeem.failedToRedeem"),h.showError(t("redeem.redeemFailed"))}finally{_.value=!1}};return Y(async()=>{C();try{const a=await de.getPublicSettings();H.value=a.contact_info||""}catch(a){console.error("Failed to load contact info:",a)}}),(a,l)=>(o(),A(ne,null,{default:M(()=>{var c,u,q;return[e("div",me,[e("div",pe,[e("div",_e,[e("div",ye,[x(p,{name:"creditCard",size:"xl",class:"text-white"})]),e("p",xe,s(d(t)("redeem.currentBalance")),1),e("p",ve," $"+s(((u=(c=T.value)==null?void 0:c.balance)==null?void 0:u.toFixed(2))||"0.00"),1),e("p",he,s(d(t)("redeem.concurrency"))+": "+s(((q=T.value)==null?void 0:q.concurrency)||0)+" "+s(d(t)("redeem.requests")),1)])]),e("div",be,[e("div",fe,[e("form",{onSubmit:Z(O,["prevent"]),class:"space-y-5"},[e("div",null,[e("label",ge,s(d(t)("redeem.redeemCodeLabel")),1),e("div",ke,[e("div",we,[x(p,{name:"gift",size:"md",class:"text-gray-400 dark:text-dark-500"})]),D(e("input",{id:"code","onUpdate:modelValue":l[0]||(l[0]=r=>b.value=r),type:"text",required:"",placeholder:d(t)("redeem.redeemCodePlaceholder"),disabled:_.value,class:"input py-3 pl-12 text-lg"},null,8,Ce),[[ee,b.value]])]),e("p",Ae,s(d(t)("redeem.redeemCodeHint")),1)]),e("button",{type:"submit",disabled:!b.value||_.value,class:"btn btn-primary w-full py-3"},[_.value?(o(),n("svg",$e,[...l[5]||(l[5]=[e("circle",{class:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor","stroke-width":"4"},null,-1),e("path",{class:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"},null,-1)])])):(o(),A(p,{key:1,name:"checkCircle",size:"md",class:"mr-2"})),k(" "+s(_.value?d(t)("redeem.redeeming"):d(t)("redeem.redeemButton")),1)],8,Se)],32)])]),x(E,{name:"fade"},{default:M(()=>[i.value?(o(),n("div",ze,[e("div",Re,[e("div",Fe,[e("div",Ve,[x(p,{name:"checkCircle",size:"md",class:"text-emerald-600 dark:text-emerald-400"})]),e("div",je,[e("h3",Be,s(d(t)("redeem.redeemSuccess")),1),e("div",He,[e("p",null,s(i.value.message),1),e("div",Me,[i.value.type==="balance"?(o(),n("p",Te,s(d(t)("redeem.added"))+": $"+s(i.value.value.toFixed(2)),1)):i.value.type==="concurrency"?(o(),n("p",Pe,s(d(t)("redeem.added"))+": "+s(i.value.value)+" "+s(d(t)("redeem.concurrentRequests")),1)):i.value.type==="subscription"?(o(),n("p",qe,[k(s(d(t)("redeem.subscriptionAssigned"))+" ",1),i.value.group_name?(o(),n("span",De," - "+s(i.value.group_name),1)):y("",!0),i.value.validity_days?(o(),n("span",Ee," ("+s(d(t)("redeem.subscriptionDays",{days:i.value.validity_days}))+")",1)):y("",!0)])):y("",!0),i.value.new_balance!==void 0?(o(),n("p",Ie,[k(s(d(t)("redeem.newBalance"))+": ",1),e("span",Ne,"$"+s(i.value.new_balance.toFixed(2)),1)])):y("",!0),i.value.new_concurrency!==void 0?(o(),n("p",Le,[k(s(d(t)("redeem.newConcurrency"))+": ",1),e("span",We,s(i.value.new_concurrency)+" "+s(d(t)("redeem.requests")),1)])):y("",!0)])])])])])])):y("",!0)]),_:1}),x(E,{name:"fade"},{default:M(()=>[$.value?(o(),n("div",Ue,[e("div",Ge,[e("div",Ke,[e("div",Je,[x(p,{name:"exclamationCircle",size:"md",class:"text-red-600 dark:text-red-400"})]),e("div",Oe,[e("h3",Qe,s(d(t)("redeem.redeemFailed")),1),e("p",Xe,s($.value),1)])])])])):y("",!0)]),_:1}),e("div",Ye,[e("div",Ze,[e("div",et,[e("div",tt,[x(p,{name:"infoCircle",size:"md",class:"text-primary-600 dark:text-primary-400"})]),e("div",st,[e("h3",at,s(d(t)("redeem.aboutCodes")),1),e("ul",rt,[e("li",null,s(d(t)("redeem.codeRule1")),1),e("li",null,s(d(t)("redeem.codeRule2")),1),e("li",null,[k(s(d(t)("redeem.codeRule3"))+" ",1),H.value?(o(),n("span",dt,s(H.value),1)):y("",!0)]),e("li",null,s(d(t)("redeem.codeRule4")),1)])])])])]),e("div",ot,[e("div",lt,[e("h2",nt,s(d(t)("redeem.recentActivity")),1)]),e("div",it,[f.value?(o(),n("div",ct,[...l[6]||(l[6]=[e("svg",{class:"h-6 w-6 animate-spin text-primary-500",fill:"none",viewBox:"0 0 24 24"},[e("circle",{class:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor","stroke-width":"4"}),e("path",{class:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})],-1)])])):j.value.length>0?(o(),n("div",ut,[(o(!0),n(I,null,N(j.value,r=>(o(),n("div",{key:r.id,class:"flex items-center justify-between rounded-xl bg-gray-50 p-4 dark:bg-dark-800"},[e("div",mt,[e("div",{class:V(["flex h-10 w-10 items-center justify-center rounded-xl",R(r.type)?r.value>=0?"bg-emerald-100 dark:bg-emerald-900/30":"bg-red-100 dark:bg-red-900/30":F(r.type)?"bg-purple-100 dar
1k:bg-purple-900/30":r.value>=0?"bg-blue-100 dark:bg-blue-900/30":"bg-orange-100 dark:bg-orange-900/30"])},[R(r.type)?(o(),A(p,{key:0,name:"dollar",size:"md",class:V(r.value>=0?"text-emerald-600 dark:text-emerald-400":"text-red-600 dark:text-red-400")},null,8,["class"])):F(r.type)?(o(),A(p,{key:1,name:"badge",size:"md",class:"text-purple-600 dark:text-purple-400"})):(o(),A(p,{key:2,name:"bolt",size:"md",class:V(r.value>=0?"text-blue-600 dark:text-blue-400":"text-orange-600 dark:text-orange-400")},null,8,["class"]))],2),e("div",null,[e("p",pt,s(K(r)),1),e("p",_t,s(d(oe)(r.used_at)),1)])]),e("div",yt,[e("p",{class:V(["text-sm font-semibold",R(r.type)?r.value>=0?"text-emerald-600 dark:text-emerald-400":"text-red-600 dark:text-red-400":F(r.type)?"text-purple-600 dark:text-purple-400":r.value>=0?"text-blue-600 dark:text-blue-400":"text-orange-600 dark:text-orange-400"])},s(J(r)),3),G(r.type)?(o(),n("p",vt,s(d(t)("redeem.adminAdjustment")),1)):(o(),n("p",xt,s(r.code.slice(0,8))+"... ",1)),r.notes?(o(),n("p",{key:2,class:"mt-1 text-xs text-gray-500 dark:text-dark-400 italic max-w-[200px] truncate",title:r.notes},s(r.notes),9,ht)):y("",!0)])]))),128))])):(o(),n("div",bt,[e("div",ft,[x(p,{name:"clock",size:"xl",class:"text-gray-400 dark:text-dark-500"})]),e("p",gt,s(d(t)("redeem.historyWillAppear")),1)])),e("div",kt,[e("span",null,s(d(t)("common.total"))+": "+s(B.value)+" "+s(d(t)("pagination.results")),1),e("label",null,[k(s(d(t)("pagination.perPage"))+" ",1),D(e("select",{"onUpdate:modelValue":l[1]||(l[1]=r=>g.value=r),class:"input w-20",disabled:f.value||_.value,onChange:l[2]||(l[2]=r=>C(1))},[(o(),n(I,null,N([20,50,100],r=>e("option",{key:r,value:r},s(r),9,Ct)),64))],40,wt),[[te,g.value]])]),e("button",{class:"btn btn-secondary",disabled:f.value||_.value||w.value<=1,onClick:l[3]||(l[3]=r=>C(w.value-1))},s(d(t)("pagination.previous")),9,At),e("button",{class:"btn btn-secondary",disabled:f.value||_.value||w.value*g.value>=B.value,onClick:l[4]||(l[4]=r=>C(w.value+1))},s(d(t)("pagination.next")),9,St)])])])])]}),_:1}))}}),Pt=le($t,[["__scopeId","data-v-2b6a8010"]]);export{Pt 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.