1import{d as Ce,c as J,z as p,C as u,A,B as e,F as q,G as o,u as l,K as R,D as V,k as w,r as E,L as I,V as Fe,H as ne,q as pe,o as Et,a as Mt,J as G,R as ee,W as ce,S as De,$ as Rt}from"./vendor-vue-CNokyTVe.js";import{_ as Q,ab as Vt,D as Ge,a as qt,g as Tt,k as W}from"./index-Bzpify6I.js";import{b as _e}from"./apiError-BcAuv_LF.js";import{g as Ut,_ as Dt,p as M,a as Ie,f as je,v as It,b as ze,m as H}from"./ModelTagInput.vue_vue_type_script_setup_true_lang-WjdcPeHC.js";import{d as Y,e as jt}from"./platformColors-BpGLohuJ.js";import{_ as zt}from"./AppLayout.vue_vue_type_script_setup_true_lang-DB33jg2n.js";import{T as Ot}from"./TablePageLayout-BpLnlEG2.js";import{D as Nt}from"./DataTable-QeaeoXSl.js";import{P as Ft}from"./Pagination-BLWEUE0g.js";import{_ as Gt}from"./ConfirmDialog.vue_vue_type_script_setup_true_lang-DfqQ3sva.js";import{_ as Lt}from"./EmptyState.vue_vue_type_script_setup_true_lang-BlXX7LdK.js";import{S as fe}from"./Select-CRadB1U5.js";import{_ as Oe}from"./PlatformIcon.vue_vue_type_script_setup_true_lang-BQDLGfe7.js";import{_ as de}from"./Toggle.vue_vue_type_script_setup_true_lang-OVibfImV.js";import{u as Pe}from"./vendor-i18n-CJe1LeE7.js";import{g as Bt}from"./usePersistedPageSize-x0WpaIWh.js";import{u as Ht}from"./useKeyedDebouncedSearch-nDANp0_T.js";import"./vendor-misc-CSmvsGIg.js";import"./AppHeader.vue_vue_type_style_index_0_scoped_e9be4349_lang-BfYnDr_J.js";import"./useClipboard-KB6Zj9c3.js";import"./LocaleSwitcher-ynQpDOt3.js";/* empty css */const Wt={class:"w-20"},Kt={class:"text-xs text-gray-400"},Yt=["value"],Jt={class:"w-20"},Qt={class:"text-xs text-gray-400"},Xt={class:"text-gray-300"},Zt=["value"],en={class:"flex-1"},tn={class:"text-xs text-gray-400"},nn={key:0,class:"text-red-500"},an=["value"],ln={class:"flex-1"},sn={class:"text-xs text-gray-400"},rn={key:0,class:"text-red-500"},on=["value"],cn={class:"flex-1"},dn={class:"text-xs text-gray-400"},un=["value"],mn={class:"flex-1"},pn={class:"text-xs text-gray-400"},_n=["value"],fn={class:"w-24"},gn={class:"text-xs text-gray-400"},hn=["value","placeholder"],yn={class:"w-20"},bn={class:"text-xs text-gray-400"},vn=["value"],xn={class:"w-20"},kn={class:"text-xs text-gray-400"},$n={class:"text-gray-300"},wn=["value"],Cn={class:"flex-1"},Pn={class:"text-xs text-gray-400"},Sn={key:0,class:"text-red-500"},An=["value"],we=Ce({__name:"IntervalRow",props:{interval:{},mode:{}},emits:["update","remove"],setup(h,{emit:r}){const{t:m}=Pe(),C=h,j=r,B=J(()=>{const P=C.interval;return(P.input_price==null||P.input_price==="")&&(P.output_price==null||P.output_price==="")&&(P.cache_write_price==null||P.cache_write_price==="")&&(P.cache_read_price==null||P.cache_read_price==="")&&(P.per_request_price==null||P.per_request_price==="")});function T(P,_){j("update",{...C.interval,[P]:_===""?null:_})}function ae(P){const _=parseInt(P,10);return isNaN(_)?0:_}function L(P){if(P==="")return null;const _=parseInt(P,10);return isNaN(_)?null:_}return(P,_)=>(u(),p("div",{class:A(["flex items-start gap-2 rounded border p-2",B.value?"border-red-400 bg-red-50 dark:border-red-500 dark:bg-red-950/20":"border-gray-200 bg-white dark:border-dark-500 dark:bg-dark-700"])},[h.mode==="token"?(u(),p(q,{key:0},[e("div",Wt,[e("label",Kt,o(l(m)("admin.channels.form.minTokens")),1),e("input",{value:h.interval.min_tokens,onInput:_[0]||(_[0]=k=>T("min_tokens",ae(k.target.value))),type:"number",min:"0",class:"input mt-0.5 text-xs"},null,40,Yt)]),e("div",Jt,[e("label",Qt,[R(o(l(m)("admin.channels.form.maxTokens"))+" ",1),e("span",Xt,o(l(m)("admin.channels.form.inclusive")),1)]),e("input",{value:h.interval.max_tokens??"",onInput:_[1]||(_[1]=k=>T("max_tokens",L(k.target.value))),type:"number",min:"0",class:"input mt-0.5 text-xs",placeholder:"â"},null,40,Zt)]),e("div",en,[e("label",tn,[R(o(l(m)("admin.channels.form.inputPrice"))+" ",1),B.value?(u(),p("span",nn,"*")):V("",!0),_[11]||(_[11]=R()),_[12]||(_[12]=e("span",{class:"text-gray-300"},"$/M",-1))]),e("input",{value:h.interval.input_price,onInput:_[2]||(_[2]=k=>T("input_price",k.target.value)),type:"number",step:"any",min:"0",class:"input mt-0.5 text-xs"},null,40,an)]),e("div",ln,[e("label",sn,[R(o(l(m)("admin.channels.form.outputPrice"))+" ",1),B.value?(u(),p("span",rn,"*")):V("",!0),_[13]||(_[13]=R()),_[14]||(_[14]=e("span",{class:"text-gray-300"},"$/M",-1))]),e("input",{value:h.interval.output_price,onInput:_[3]||(_[3]=k=>T("output_price",k.target.value)),type:"number",step:"any",min:"0",class:"input mt-0.5 text-xs"},null,40,on)]),e("div",cn,[e("label",dn,[R(o(l(m)("admin.channels.form.cacheWritePriceShort"))+" ",1),_[15]||(_[15]=e("span",{class:"text-gray-300"},"$/M",-1))]),e("input",{value:h.interval.cache_write_price,onInput:_[4]||(_[4]=k=>T("cache_write_price",k.target.value)),type:"number",step:"any",min:"0",class:"input mt-0.5 text-xs"},null,40,un)]),e("div",mn,[e("label",pn,[R(o(l(m)("admin.channels.form.cacheReadPriceShort"))+" ",1),_[16]||(_[16]=e("span",{class:"text-gray-300"},"$/M",-1))]),e("input",{value:h.interval.cache_read_price,onInput:_[5]||(_[5]=k=>T("cache_read_price",k.target.value)),type:"number",step:"any",min:"0",class:"input mt-0.5 text-xs"},null,40,_n)])],64)):(u(),p(q,{key:1},[e("div",fn,[e("label",gn,o(h.mode==="image"?l(m)("admin.channels.form.resolution"):l(m)("admin.channels.form.t
1ierLabel")),1),e("input",{value:h.interval.tier_label,onInput:_[6]||(_[6]=k=>T("tier_label",k.target.value)),type:"text",class:"input mt-0.5 text-xs",placeholder:h.mode==="image"?"1K / 2K / 4K":""},null,40,hn)]),e("div",yn,[e("label",bn,o(l(m)("admin.channels.form.minTokens")),1),e("input",{value:h.interval.min_tokens,onInput:_[7]||(_[7]=k=>T("min_tokens",ae(k.target.value))),type:"number",min:"0",class:"input mt-0.5 text-xs"},null,40,vn)]),e("div",xn,[e("label",kn,[R(o(l(m)("admin.channels.form.maxTokens"))+" ",1),e("span",$n,o(l(m)("admin.channels.form.inclusive")),1)]),e("input",{value:h.interval.max_tokens??"",onInput:_[8]||(_[8]=k=>T("max_tokens",L(k.target.value))),type:"number",min:"0",class:"input mt-0.5 text-xs",placeholder:"â"},null,40,wn)]),e("div",Cn,[e("label",Pn,[R(o(l(m)("admin.channels.form.perRequestPrice"))+" ",1),B.value?(u(),p("span",Sn,"*")):V("",!0),_[17]||(_[17]=R()),_[18]||(_[18]=e("span",{class:"text-gray-300"},"$",-1))]),e("input",{value:h.interval.per_request_price,onInput:_[9]||(_[9]=k=>T("per_request_price",k.target.value)),type:"number",step:"any",min:"0",class:"input mt-0.5 text-xs"},null,40,An)])],64)),e("button",{type:"button",onClick:_[10]||(_[10]=k=>j("remove")),class:"mt-4 rounded p-0.5 text-gray-400 hover:text-red-500"},[w(Q,{name:"x",size:"sm"})])],2))}}),En={class:"rounded-lg border border-gray-200 bg-gray-50 p-3 dark:border-dark-600 dark:bg-dark-800"},Mn={key:0,class:"flex min-w-0 flex-1 items-center gap-2 overflow-hidden"},Rn={class:"flex min-w-0 flex-1 flex-wrap items-center gap-1"},Vn={key:0,class:"whitespace-nowrap text-xs text-gray-400"},qn={key:1,class:"text-xs italic text-gray-400"},Tn={class:"flex-shrink-0 rounded-full bg-primary-100 px-2 py-0.5 text-xs font-medium text-primary-700 dark:bg-primary-900/30 dark:text-primary-300"},Un={key:1,class:"flex-1 text-xs font-medium text-gray-500 dark:text-gray-400"},Dn={class:"collapsible-inner"},In={class:"mt-3 flex items-start gap-2"},jn={class:"flex-1"},zn={class:"text-xs font-medium text-gray-500 dark:text-gray-400"},On={class:"w-40"},Nn={class:"text-xs font-medium text-gray-500 dark:text-gray-400"},Fn={key:0},Gn={class:"mt-3 block text-xs font-medium text-gray-500 dark:text-gray-400"},Ln={class:"mt-1 grid grid-cols-2 gap-2 sm:grid-cols-6"},Bn={class:"text-xs text-gray-400"},Hn=["value","placeholder"],Wn={class:"text-xs text-gray-400"},Kn=["value","placeholder"],Yn={class:"text-xs text-gray-400"},Jn=["value","placeholder"],Qn={class:"text-xs text-gray-400"},Xn=["value","placeholder"],Zn={class:"text-xs text-gray-400"},ea=["value","placeholder"],ta={class:"text-xs text-gray-400"},na=["value","placeholder"],aa={class:"mt-3"},la={class:"flex items-center justify-between"},sa={class:"text-xs font-medium text-gray-500 dark:text-gray-400"},ra={key:0,class:"mt-2 space-y-2"},oa={key:1},ia={class:"mt-3 block text-xs font-medium text-gray-500 dark:text-gray-400"},ca={class:"mt-1 w-48"},da=["value","placeholder"],ua={class:"mt-3 flex items-center justify-between"},ma={class:"text-xs font-medium text-gray-500 dark:text-gray-400"},pa={key:0,class:"mt-2 space-y-2"},_a={key:1,class:"mt-2 rounded border border-dashed border-gray-300 p-3 text-center text-xs text-gray-400 dark:border-dark-500"},fa={key:2},ga={class:"mt-3 block text-xs font-medium text-gray-500 dark:text-gray-400"},ha={class:"mt-1 w-48"},ya=["value","placeholder"],ba={class:"mt-3 flex items-center justify-between"},va={class:"text-xs font-medium text-gray-500 dark:text-gray-400"},xa={key:0,class:"mt-2 space-y-2"},ka=Ce({__name:"PricingEntryCard",props:{entry:{},platform:{}},emits:["update","remove"],setup(h,{emit:r}){const{t:m}=Pe(),C=h,j=r,B=E(C.entry.models.length>0),T=J(()=>[{value:"token",label:m("admin.channels.billingMode.token")},{value:"per_request",label:m("admin.channels.billingMode.perRequest")},{value:"image",label:m("admin.channels.billingMode.image")}]),ae=J(()=>{const $=T.value.find(f=>f.value===C.entry.billing_mode);return $?$.label:C.entry.billing_mode});function L($,f){j("update",{...C.entry,[$]:f===""?null:f})}function P(){const $=[...C.entry.intervals||[]];$.push({min_tokens:0,max_tokens:null,tier_label:"",input_price:null,output_price:null,cache_write_price:null,cache_read_price:null,per_request_price:null,sort_order:$.length}),j("update",{...C.entry,intervals:$})}function _(){const $=[...C.entry.intervals||[]],f=["1K","2K","4K","HD"];$.push({min_tokens:0,max_tokens:null,tier_label:f[$.length]||"",input_price:null,output_price:null,cache_write_price:null,cache_read_price:null,per_request_price:null,sort_order:$.length}),j("update",{...C.entry,intervals:$})}function k($,f){const g=[...C.entry.intervals||[]];g[$]=f,j("update",{...C.entry,intervals:g})}function X($){const f=[...C.entry.intervals||[]];f.splice($,1),j("update",{...C.entry,intervals:f})}async function z($){const f=C.entry.models;j("update",{...C.entry,models:$});const g=$.filter(U=>!f.includes(U));if(g.length===0)return;const S=C.entry;if(!(S.input_price!=null||S.output_price!=null||S.cache_write_price!=null||S.cache_read_price!=null))try{const U=await Vt.getModelDefaultPricing(g[0]);U.found&&j("update",{...C.entry,models:$,input_price:M(U.input_price??null),output_price:M(U.output_price??null),cache_write_price:M(U.cache_write_price??null),cache_read_price:M(U.cache_read_price??null),image_input_price:M(U.image_input_price??null),image_output_price:M(U.image_output_price??null)})}catch{}}return($,f)=>(u(),p("div",En,[e("div",{class:"flex cursor-pointer select-none items-center gap-2",onClick:f[1]||(f[1]=g=>B.value=!B.value)},[w(Q,{name:B.value?"chevronRight":"chevronDown",size:"sm","stroke-width":2,class:"flex-shrink-0 text-gray-400 transition-transform duration-200"},null,8,["name"]),B.value?(u(),p("div",Mn,[e("div",Rn,[(u(!0),p(q,null,I(h.entry.models.slice(0,3),(g,S)=>(u(),p("span",{key:S,class:A(["inline-flex shrink-0 rounded px-1.5 py-0.5 text-xs",l(Ut)(C.platform||"")])},o(g),3))),128)),h.entry.models.length>3?(u(),p("span",Vn," +"+o(h.entry.models.length-3),1)):V("",!0),h.entry.models.length===0?(u(),p("span",qn,o(l(m)("admin.channels.form.noModels")),1)):V("",!0)]),e("span",Tn,o(ae.value),1)])):(u(),p("div",Un,o(l(m)("admin.channels.form.pricingEntry")),1)),e("button",{type:"button",onClick:f[0]||(f[0]=Fe(g=>j("remove"),["stop"])),class:"flex-shrink-0 rounded p-1 text-gray-400 hover:text-red-500"},[w(Q,{name:"trash",size:"sm"})])]),e("div",{class:A(["collapsible-content",{"collapsible-content--collapsed":B.value}])},[e("div",Dn,[e("div",In,[e("div",jn,[e("label",zn,[R(o(l(m)("admin.channels.form.models"))+" ",1),f[12]||(f[12]=e("span",{class:"text-red-500"},"*",-1))]),w(Dt,{models:h.entry.models,platform:C.platform,"onUpdate:models":f[2]||(f[2]=g=>z(g)),placeholder:l(m)("admin.channels.form.modelsPlaceholder"),class:"mt-1"},null,8,["models","platform","placeholder"])]),e("div",On,[e("label",Nn,o(l(m)("admin.channels.form.billingMode")),1),w(fe,{modelValue:h.entry.billing_mode,"onUpdate:modelValue":f[3]||(f[3]=g=>j("update",{...h.entry,billing_mode:g,intervals:[]})),options:T.value,class:"mt-1"},null,8,["modelValue","options"])])]),h.entry.billing_mode==="token"?(u(),p("div",Fn,[e("label",Gn,[R(o(l(m)("admin.channels.form.defaultPrices"))+" ",1),f[13]||(f[13]=e("span",{class:"ml-1 font-normal text-gray-400"},"$/MTok",-1))]),e("div",Ln,[e("div",null,[e("label",Bn,o(l(m)("admin.channels.form.inputPrice")),1),e("input",{value:h.entry.input_price,onInput:f[4]||(f[4]=g=>L("input_price",g.target.value)),type:"number",step:"any",min:"0",class:"input mt-0.5 text-sm",placeholder:l(m)("admin.channels.form.pricePlaceholder")},null,40,Hn)]),e("div",null,[e("label",Wn,o(l(m)("admin.channels.form.outputPrice")),1),e("input",{value:h.entry.output_price,onInput:f[5]||
1(f[5]=g=>L("output_price",g.target.value)),type:"number",step:"any",min:"0",class:"input mt-0.5 text-sm",placeholder:l(m)("admin.channels.form.pricePlaceholder")},null,40,Kn)]),e("div",null,[e("label",Yn,o(l(m)("admin.channels.form.cacheWritePrice")),1),e("input",{value:h.entry.cache_write_price,onInput:f[6]||(f[6]=g=>L("cache_write_price",g.target.value)),type:"number",step:"any",min:"0",class:"input mt-0.5 text-sm",placeholder:l(m)("admin.channels.form.pricePlaceholder")},null,40,Jn)]),e("div",null,[e("label",Qn,o(l(m)("admin.channels.form.cacheReadPrice")),1),e("input",{value:h.entry.cache_read_price,onInput:f[7]||(f[7]=g=>L("cache_read_price",g.target.value)),type:"number",step:"any",min:"0",class:"input mt-0.5 text-sm",placeholder:l(m)("admin.channels.form.pricePlaceholder")},null,40,Xn)]),e("div",null,[e("label",Zn,o(l(m)("admin.channels.form.imageInputPrice")),1),e("input",{value:h.entry.image_input_price,onInput:f[8]||(f[8]=g=>L("image_input_price",g.target.value)),type:"number",step:"any",min:"0",class:"input mt-0.5 text-sm",placeholder:l(m)("admin.channels.form.pricePlaceholder")},null,40,ea)]),e("div",null,[e("label",ta,o(l(m)("admin.channels.form.imageTokenPrice")),1),e("input",{value:h.entry.image_output_price,onInput:f[9]||(f[9]=g=>L("image_output_price",g.target.value)),type:"number",step:"any",min:"0",class:"input mt-0.5 text-sm",placeholder:l(m)("admin.channels.form.pricePlaceholder")},null,40,na)])]),e("div",aa,[e("div",la,[e("label",sa,[R(o(l(m)("admin.channels.form.intervals"))+" ",1),f[14]||(f[14]=e("span",{class:"ml-1 font-normal text-gray-400"},"(min, max]",-1))]),e("button",{type:"button",onClick:P,class:"text-xs text-primary-600 hover:text-primary-700"}," + "+o(l(m)("admin.channels.form.addInterval")),1)]),h.entry.intervals&&h.entry.intervals.length>0?(u(),p("div",ra,[(u(!0),p(q,null,I(h.entry.intervals,(g,S)=>(u(),ne(we,{key:S,interval:g,mode:h.entry.billing_mode,onUpdate:O=>k(S,O),onRemove:O=>X(S)},null,8,["interval","mode","onUpdate","onRemove"]))),128))])):V("",!0)])])):h.entry.billing_mode==="per_request"?(u(),p("div",oa,[e("label",ia,[R(o(l(m)("admin.channels.form.defaultPerRequestPrice"))+" ",1),f[15]||(f[15]=e("span",{class:"ml-1 font-normal text-gray-400"},"$",-1))]),e("div",ca,[e("input",{value:h.entry.per_request_price,onInput:f[10]||(f[10]=g=>L("per_request_price",g.target.value)),type:"number",step:"any",min:"0",class:"input text-sm",placeholder:l(m)("admin.channels.form.pricePlaceholder")},null,40,da)]),e("div",ua,[e("label",ma,o(l(m)("admin.channels.form.requestTiers")),1),e("button",{type:"button",onClick:P,class:"text-xs text-primary-600 hover:text-primary-700"}," + "+o(l(m)("admin.channels.form.addTier")),1)]),h.entry.intervals&&h.entry.intervals.length>0?(u(),p("div",pa,[(u(!0),p(q,null,I(h.entry.intervals,(g,S)=>(u(),ne(we,{key:S,interval:g,mode:h.entry.billing_mode,onUpdate:O=>k(S,O),onRemove:O=>X(S)},null,8,["interval","mode","onUpdate","onRemove"]))),128))])):(u(),p("div",_a,o(l(m)("admin.channels.form.noTiersYet")),1))])):h.entry.billing_mode==="image"?(u(),p("div",fa,[e("label",ga,[R(o(l(m)("admin.channels.form.defaultImagePrice"))+" ",1),f[16]||(f[16]=e("span",{class:"ml-1 font-normal text-gray-400"},"$",-1))]),e("div",ha,[e("input",{value:h.entry.per_request_price,onInput:f[11]||(f[11]=g=>L("per_request_price",g.target.value)),type:"number",step:"any",min:"0",class:"input text-sm",placeholder:l(m)("admin.channels.form.pricePlaceholder")},null,40,ya)]),e("div",ba,[e("label",va,o(l(m)("admin.channels.form.imageTiers")),1),e("button",{type:"button",onClick:_,class:"text-xs text-primary-600 hover:text-primary-700"}," + "+o(l(m)("admin.channels.form.addTier")),1)]),h.entry.intervals&&h.entry.intervals.length>0?(u(),p("div",xa,[(u(!0),p(q,null,I(h.entry.intervals,(g,S)=>(u(),ne(we,{key:S,interval:g,mode:h.entry.billing_mode,onUpdate:O=>k(S,O),onRemove:O=>X(S)},null,8,["interval","mode","onUpdate","onRemove"]))),128))])):V("",!0)])):V("",!0)])],2)]))}}),Ne=Ge(ka,[["__scopeId","data-v-665f4ac1"]]),$a={class:"flex flex-col justify-between gap-4 lg:flex-row lg:items-start"},wa={class:"flex flex-1 flex-wrap items-center gap-3"}
1,Ca={class:"relative w-full sm:w-64"},Pa=["placeholder"],Sa={class:"flex w-full flex-shrink-0 flex-wrap items-center justify-end gap-3 lg:w-auto"},Aa=["disabled","title"],Ea={class:"font-medium text-gray-900 dark:text-white"},Ma={class:"text-sm text-gray-600 dark:text-gray-400"},Ra={class:"inline-flex items-center rounded bg-gray-100 px-2 py-0.5 text-xs font-medium text-gray-800 dark:bg-dark-600 dark:text-gray-300"},Va={class:"inline-flex items-center rounded bg-gray-100 px-2 py-0.5 text-xs font-medium text-gray-800 dark:bg-dark-600 dark:text-gray-300"},qa={class:"text-sm text-gray-600 dark:text-gray-400"},Ta={class:"flex items-center gap-1"},Ua=["onClick"],Da={class:"text-xs"},Ia=["onClick"],ja={class:"text-xs"},za={class:"channel-dialog-body"},Oa={class:"flex items-center border-b border-gray-200 dark:border-dark-700 flex-shrink-0 -mx-4 sm:-mx-6 px-4 sm:px-6 -mt-3 sm:-mt-4"},Na=["onClick"],Fa={class:"space-y-5"},Ga={class:"input-label"},La=["placeholder"],Ba={class:"input-label"},Ha=["placeholder"],Wa={key:0},Ka={class:"input-label"},Ya={class:"flex items-center gap-2 cursor-pointer"},Ja={class:"input-label mb-0"},Qa={class:"mt-1 ml-6 text-xs text-gray-400"},Xa={class:"input-label"},Za={class:"mt-1 text-xs text-gray-400"},el={class:"space-y-3"},tl={class:"input-label mb-0"},nl={class:"flex flex-wrap gap-2"},al=["checked","onChange"],ll={class:"border-t border-gray-200 pt-4 dark:border-dark-700"},sl={class:"flex items-center justify-between"},rl={class:"text-sm font-medium text-gray-700 dark:text-gray-300"},ol={class:"mt-0.5 text-xs text-gray-500 dark:text-gray-400"},il={class:"input-label text-xs"},cl={key:0,class:"ml-1 font-normal text-gray-400"},dl={class:"max-h-40 overflow-auto rounded-lg border border-gray-200 bg-gray-50 p-2 dark:border-dark-600 dark:bg-dark-900"},ul={key:0,class:"py-2 text-center text-xs text-gray-500"},ml={key:1,class:"py-2 text-center text-xs text-gray-500"},pl={key:2,class:"flex flex-wrap gap-1"},_l=["checked","disabled","onChange"],fl={class:"text-[10px] text-gray-400"},gl={key:0,class:"text-[10px] text-gray-400"},hl={key:0,class:"border-t border-gray-200 pt-3 dark:border-dark-600"},yl={class:"flex items-center justify-between"},bl={class:"text-xs font-medium text-gray-700 dark:text-gray-300"},vl={class:"mt-0.5 text-[11px] text-red-500 dark:text-red-400"},xl={key:1,class:"border-t border-gray-200 pt-3 dark:border-dark-600"},kl={class:"flex items-center justify-between gap-4"},$l={class:"text-xs font-medium text-gray-700 dark:text-gray-300"},wl={class:"mt-0.5 text-[11px] text-amber-600 dark:text-amber-400"},Cl={key:2,class:"border-t border-gray-200 pt-3 dark:border-dark-600"},Pl={class:"flex items-center justify-between gap-4"},Sl={class:"text-xs font-medium text-gray-700 dark:text-gray-300"},Al={class:"mt-0.5 text-[11px] text-amber-600 dark:text-amber-400"},El={class:"mb-1 flex items-center justify-between"},Ml={class:"input-label text-xs mb-0"},Rl=["onClick"],Vl={key:0,class:"rounded border border-dashed border-gray-300 p-2 text-center text-xs text-gray-400 dark:border-dark-500"},ql={key:1,class:"space-y-1"},Tl=["value","placeholder","onChange"],Ul=["value","placeholder","onInput"],Dl=["onClick"],Il={class:"mb-1 flex items-center justify-between"},jl={class:"input-label text-xs mb-0"},zl={class:"flex items-center gap-2"},Ol=["onClick","disabled"],Nl=["onClick"],Fl={key:0,class:"rounded border border-dashed border-gray-300 p-2 text-center text-xs text-gray-400 dark:border-dark-500"},Gl={key:1,class:"space-y-2"},Ll={class:"mt-4 border-t border-gray-200 pt-4 dark:border-dark-700 space-y-3"},Bl={class:"flex items-center justify-between"},Hl={class:"text-sm font-medium text-gray-700 dark:text-gray-300"},Wl=["onClick"],Kl={key:0,class:"text-xs italic text-gray-400 dark:text-gray-500"},Yl={class:"flex items-center justify-between"},Jl=["onUpdate:modelValue","placeholder"],Ql=["onClick"],Xl={class:"text-xs text-gray-500 dark:text-gray-400"},Zl={class:"mt-1 flex flex-wrap gap-1"},es=["checked","onChange"],ts={key:0,class:"mt-1 text-xs text-gray-400"},ns={class:"text-xs text-gray-500 dark:text-gray-400"},as={class:"mt-1 flex flex-wrap gap-1"},ls=["onClick"],ss={class:"relative mt-1 rule-account-search-container"},rs=["onUpdate:modelValue","placeholder","onInput","onFocus"],os={key:0,class:"absolute z-50 mt-1 max-h-48 w-full overflow-auto rounded-lg border bg-white shadow-lg dark:border-dark-600 dark:bg-dark-800"},is=["onClick","disabled"],cs={class:"ml-2 text-xs text-gray-400"},ds={class:"mt-1 text-xs text-gray-400"},us={class:"mb-1 flex items-center justify-between"},ms={class:"text-xs text-gray-500 dark:text-gray-400"},ps=["onClick"],_s={key:0,class:"rounded border border-dashed border-gray-300 p-2 text-center text-xs text-gray-400 dark:border-dark-500"},fs={key:1,class:"space-y-2"},gs={class:"flex justify-end gap-3"},hs=["disabled"],ys=Ce({__name:"ChannelsView",setup(h){const{t:r}=Pe(),m=qt(),C=E(!1);async function j(){var n;try{const a=await W.settings.getWebSearchEmulationConfig();C.value=(a==null?void 0:a.enabled)===!0&&(((n=a==null?void 0:a.providers)==null?void 0:n.length)??0)>0}catch(a){console.warn("Failed to load web search global state:",a),C.value=!1}}const B=J(()=>[{key:"name",label:r("admin.channels.columns.name","Name"),sortable:!0},{key:"description",label:r("admin.channels.columns.description","Description"),sortable:!1},{key:"status",label:r("admin.channels.columns.status","Status"),sortable:!0},{key:"group_count",label:r("admin.channels.columns.groups","Groups"),sortable:!1},{key:"pricing_count",label:r("admin.channels.columns.pricing","Pricing"),sortable:!1},{key:"created_at",label:r("admin.channels.columns.createdAt","Created"),sortable:!0},{key:"actions",label:r("admin.channels.columns.actions","Actions"),sortable:!1}]),T=J(()=>[{value:"",label:r("admin.channels.allStatus","All Status")},{value:"active",label:r("admin.channels.statusActive","Active")},{value:"disabled",label:r("admin.channels.statusDisabled","Disabled")}]),ae=J(()=>[{value:"active",label:r("admin.channels.statusActive","Active")},{value:"disabled",label:r("admin.channels.statusDisabled","Disabled")}]),L=J(()=>[{value:"channel_mapped",label:r("admin.channels.form.billingModelSourceChannelMapped","Bill by channel-mapped model")},{value:"requested",label:r("admin.channels.form.billingModelSourceRequested","Bill by requested model")},{value:"upstream",label:r("admin.channels.form.billingModelSourceUpstream","Bill by final upstream model")}]),P=E([]),_=E(!1),k=E(""),X=pe({status:""}),z=pe({page:1,page_size:Bt(),total:0}),$=pe({sort_by:"created_at",sort_order:"desc"}),f=E(!1),g=E(null),S=E(!1),O=E(!1),U=E(null),N=E("basic"),re=E([]),ge=E(!1),he
1=E([]),d=pe({name:"",description:"",status:"active",restrict_models:!1,billing_model_source:"channel_mapped",platforms:[],apply_pricing_to_account_stats:!1});let Z=null;const ue=["anthropic","openai","gemini","antigravity","grok"];function Le(n){return n?new Date(n).toLocaleDateString():"-"}const Se=J(()=>d.platforms.filter(n=>n.enabled).map(n=>n.platform));function Be(n){d.platforms.push({platform:n,enabled:!0,collapsed:!1,group_ids:[],model_mapping:{},model_pricing:[],web_search_emulation:!1,codex_image_generation_bridge:!1,bedrock_cc_compat:!1,account_stats_pricing_rules:[]})}function He(n){const a=d.platforms.find(t=>t.platform===n);a?(a.enabled=!a.enabled,!a.enabled&&N.value===n&&(N.value="basic")):Be(n)}function Ae(n){return re.value.filter(a=>a.platform===n||a.platform==="composite")}const Ee=J(()=>{const n=new Map;for(const a of he.value)if(!(g.value&&a.id===g.value.id))for(const t of a.group_ids||[])n.set(t,a);return n});function ye(n,a){return Ee.value.has(n)}function We(n){var a;return((a=Ee.value.get(n))==null?void 0:a.name)||""}function Ke(n){const a=We(n);return r("admin.channels.form.inOtherChannel",{name:a},`In "${a}"`)}const Ye=J(()=>{var a;const n=((a=U.value)==null?void 0:a.name)||"";return r("admin.channels.deleteConfirm",{name:n},`Are you sure you want to delete channel "${n}"? This action cannot be undone.`)});function Je(n,a){const t=d.platforms[n],i=t.group_ids.indexOf(a);i>=0?t.group_ids.splice(i,1):t.group_ids.push(a)}function Qe(n){d.platforms[n].model_pricing.push({models:[],billing_mode:"token",input_price:null,output_price:null,cache_write_price:null,cache_read_price:null,image_input_price:null,image_output_price:null,per_request_price:null,intervals:[]})}const oe=E(null);async function Xe(n){const a=d.platforms[n].platform;if(!oe.value){oe.value=a;try{const t=await W.channels.syncPricingModels(a),i=new Set;for(const c of d.platforms[n].model_pricing)for(const x of c.models)i.add(x);const s=t.models.filter(c=>!i.has(c));if(s.length===0){m.showSuccess(r("admin.channels.form.syncModelsAlreadyUpToDate"));return}d.platforms[n].model_pricing.push({models:s,billing_mode:"token",input_price:null,output_price:null,cache_write_price:null,cache_read_price:null,image_input_price:null,image_output_price:null,per_request_price:null,intervals:[]}),m.showSuccess(r("admin.channels.form.syncModelsSuccess",{count:s.length}))}catch(t){m.showError(_e(t,r("admin.channels.form.syncModelsError")))}finally{oe.value=null}}}function Ze(n,a,t){d.platforms[n].model_pricing.splice(a,1,t)}function et(n,a){d.platforms[n].model_pricing.splice(a,1)}function tt(n){const a=d.platforms[n].model_mapping;let t="",i=1;for(;t===""||t in a;)t=`model-${i}`,i++;a[t]=""}function nt(n,a){delete d.platforms[n].model_mapping[a]}function at(n,a,t){if(t=t.trim(),!t||t===a)return;const i=d.platforms[n].model_mapping;if(t in i)return;const s=i[a];delete i[a],i[t]=s}function lt(n){d.platforms[n].account_stats_pricing_rules.push({name:"",group_ids:[],account_ids:[],pricing:[]})}function st(n,a){d.platforms[n].account_stats_pricing_rules[a].pricing.push({models:[],billing_mode:"token",input_price:null,output_price:null,cache_write_price:null,cache_read_price:null,image_input_price:null,image_output_price:null,per_request_price:null,intervals:[]})}function rt(n,a){d.platforms[n].account_stats_pricing_rules.splice(a,1),ie.clearAll(),be()}function ot(n,a,t){d.platforms[n].account_stats_pricing_rules[a].pricing.splice(t,1)}function it(n){const a=re.value.find(t=>t.id===n);return a?a.name:`#${n}`}const le=E({}),se=E({}),te=E({}),me=E({}),ie=Ht({delay:300,search:async(n,{key:a,signal:t})=>{const i=a.split("-")[0];return(await W.accounts.list(1,20,{platform:i,search:n},{signal:t})).items.map(c=>({id:c.id,name:c.name,platform:c.platform}))},onSuccess:(n,a)=>{se.value[n]=a},onError:n=>{se.value[n]=[]}});function ct(n,a){const t=`${n}-${a}`;te.value[t]=!0,ie.trigger(t,le.value[t]||"")}function dt(n,a){var i;const t=`${n}-${a}`;te.value[t]=!0,(i=se.value[t])!=null&&i.length||ie.trigger(t,le.value[t]||"")}function ut(n,a,t,i){n.account_ids.includes(a.id)||(n.account_ids.push(a.id),me.value[a.id]=a.name);const s=`${t}-${i}`;le.value[s]="",te.value[s]=!1}function mt(n,a){const t=n.account_ids.indexOf(a);t!==-1&&n.account_ids.splice(t,1)}function pt(n){const a=me.value[n];return a?`${a} #${n}`:`#${n}`}function Me(n){n.target.closest(".rule-account-search-container")||Object.keys(te.value).forEach(t=>{te.value[t]=!1})}function be(){le.value={},se.value={},te.value={}}function Re(){const n=[];for(const a of d.platforms)if(a.enabled)for(const t of a.account_stats_pricing_rules)n.push({name:t.name,group_ids:t.group_ids,account_ids:t.account_ids,pricing:t.pricing.filter(i=>i.models.length>0).map(i=>({platform:a.platform,models:i.models,billing_mode:i.billing_mode,input_price:H(i.input_price),output_price:H(i.output_price),cache_write_price:H(i.cache_write_price),cache_read_price:H(i.cache_read_price),image_input_price:H(i.image_input_price),image_output_price:H(i.image_output_price),per_request_price:i.per_request_price!=null&&i.per_request_price!==""?Number(i.per_request_price):null,intervals:ze(i.intervals||[])}))});return n}function _t(){var y;const n=[],a=[],t={},i=(y=g.value)!=null&&y.features_config?{...g.value.features_config}:{};for(const v of d.platforms)if(v.enabled){n.push(...v.group_ids),Object.keys(v.model_mapping).length>0&&(t[v.platform]={...v.model_mapping});for(const D of v.model_pricing)D.models.length!==0&&a.push({platform:v.platform,models:D.models,billing_mode:D.billing_mode,input_price:H(D.input_price),output_price:H(D.output_price),cache_write_price:H(D.cache_write_price),cache_read_price:H(D.cache_read_price),image_input_price:H(D.image_input_price),image_output_price:H(D.image_output_price),per_request_price:D.per_request_price!=null&&D.per_request_price!==""?Number(D.per_request_price):null,intervals:ze(D.intervals||[])})}const s=Array.from(new Set(n)),c={};for(const v of d.platforms)v.enabled&&v.platform==="anthropic"&&(c[v.platform]=!!v.web_search_emulation);Object.keys(c).length>0?i.web_search_emulation=c:delete i.web_search_emulation;const x={};for(const v of d.platforms)v.enabled&&v.platform==="openai"&&(x[v.platform]=!!v.codex_image_generation_bridge);Object.keys(x).length>0?i.codex_image_generation_bridge=x:delete i.codex_image_generation_bridge;const b={};for(const v of d.platforms)v.enabled&&v.platform==="anthropic"&&(b[v.platform]=!!v.bedrock_cc_compat);return Object.keys(b).length>0?i.bedrock_cc_compat=b:delete i.bedrock_cc_compat,{group_ids:s,model_pricing:a,model_mapping:t,features_config:i}}function ft(n){const a=new Map;for(const s of re.value)a.set(s.id,s.platform);const t=new Set;for(const s of n.group_ids||[]){const c=a.get(s);c==="composite"?ue.forEach(x=>t.add(x)):c&&t.add(c)}for(const s of n.model_pricing||[])s.platform&&t.add(s.platform);for(const s of Object.keys(n.model_mapping||{}))ue.includes(s)&&t.add(s);const i=[];for(const s of ue){if(!t.has(s))continue;const c=(n.group_ids||[]).filter(F=>{const Ue=a.get(F);return Ue===s||Ue==="composite"}),x=(n.model_mapping||{})[s]||{},b=(n.model_pricing||[]).filter(F=>(F.platform||"anthropic")===s).map(F=>({models:F.models||[],billing_mode:F.billing_mode,input_price:M(F.input_price),output_price:M(F.output_price),cache_write_price:M(F.cache_write_price),cache_read_price:M(F.cache_read_price),image_input_price:M(F.image_input_price),image_output_price:M(F.image_output_price),per_request_price:F.per_request_price,intervals:Ie(F.intervals||[])})),y=n.features_config,v=y==null?void 0:y.web_search_emulation,D=(v==null?void 0:v[s])===!0,$e=y==null?void 0:y.codex_image_generation_bridge,St=($e==null?void 0:$e[s])===!0,At=(y==null?void 0:y.bedrock_cc_compat)===!0;i.push({platform:s,enabled:!0,collapsed:!1,group_ids:c,model_mapping:{...x},model_pricing:b,web_search_emulation:D,codex_image_generation_bridge:St,bedrock_cc_compat:At,account_stats_pricing_rules:[]})}return i}async function K(){Z&&Z.abort();const n=new AbortController;Z=n,_.value=!0;try{const a=await W.channels.list(z.page,z.page_size,{status:X.status||void 0,search:k.value||void 0,sort_by:$.sort_by,sort_order:$.sort_order},{signal:n.signal});if(n.signal.aborted||Z!==n)return;P.value=a.items||[],z.total=a.total}catch(a){const t=a;if((t==null?void 0:t.name)==="AbortError"||(t==null?void 0:t.code)==="ERR_CANCELED")return;m.showError(_e(a,r("admin.channels.loadError","Failed to load channels")))}finally{Z===n&&(_.value=!1,Z=null)}}async function ve(){ge.value=!0;try{re.value=await W.groups.getAll()}catch(n){console.error("Error loading groups:",n)}finally{ge.value=!1}}async function Ve(){try{const n=await W.channels.list(1,1e3);he.value=n.items||[]}catch{he.value=P.value}}let xe;function gt(){clearTimeout(xe),xe=setTimeout(()=>{z.page=1,K()},300)}function ht(n){z.page=n,K()}function yt(n){z.page_size=n,z.page=1,K()}function bt(n,a){$.sort_by=n,$.sort_order=a,z.page=1,K()}function qe(){d.name="",d.description="",d.status="active",d.restrict_models=!1,d.billing_model_source="channel_mapped",d.platforms=[],d.apply_pricing_to_account_stats=!1,N.value="basic",ie.clearAll(),be(),me.value={}}async function Te(){g.value=null,qe(),await Promise.all([ve(),Ve()]),f.value=!0}async function vt(n){g.value=n,d.name=n.name,d.description=n.description||"",d.status=n.status,d.restrict_models=n.restrict_models||!1,d.billing_model_source=n.billing_model_source||"channel_mapped",d.apply_pricing_to_account_stats=n.apply_pricing_to_account_stats||
1!1,await Promise.all([ve(),Ve()]),d.platforms=ft(n),xt(n.account_stats_pricing_rules||[]),await kt(),f.value=!0}function xt(n){var t;const a=new Map;for(const i of re.value)a.set(i.id,i.platform);for(const i of n){const s=new Set;for(const y of i.group_ids||[]){const v=a.get(y);v&&v!=="composite"&&s.add(v)}if(s.size===0&&((t=i.pricing)==null?void 0:t.length)>0){const y=i.pricing[0].platform;y&&s.add(y)}const c=s.size>=1?[...s][0]:null;if(!c)continue;const x=d.platforms.find(y=>y.platform===c);if(!x)continue;const b={name:i.name||"",group_ids:[...i.group_ids||[]],account_ids:[...i.account_ids||[]],pricing:(i.pricing||[]).map(y=>({models:[...y.models||[]],billing_mode:y.billing_mode,input_price:M(y.input_price),output_price:M(y.output_price),cache_write_price:M(y.cache_write_price),cache_read_price:M(y.cache_read_price),image_input_price:M(y.image_input_price),image_output_price:M(y.image_output_price),per_request_price:y.per_request_price,intervals:Ie(y.intervals||[])}))};x.account_stats_pricing_rules.push(b)}}async function kt(){const n=new Set;for(const i of d.platforms)for(const s of i.account_stats_pricing_rules)for(const c of s.account_ids)n.add(c);if(n.size===0)return;const a=[...n],t=await Promise.allSettled(a.map(i=>W.accounts.getById(i)));for(let i=0;i<a.length;i++){const s=t[i];s.status==="fulfilled"&&(me.value[a[i]]=s.value.name)}}function ke(){f.value=!1,g.value=null,qe()}async function $t(){if(S.value)return;if(!d.name.trim()){m.showError(r("admin.channels.nameRequired","Please enter a channel name"));return}for(const s of d.platforms.filter(c=>c.enabled)){if(s.group_ids.length===0){const c=r("admin.groups.platforms."+s.platform,s.platform);m.showError(r("admin.channels.noGroupsSelected",{platform:c})),N.value=s.platform;return}for(const c of s.model_pricing)if(c.models.length===0){const x=r("admin.groups.platforms."+s.platform,s.platform);m.showError(r("admin.channels.emptyModelsInPricing",{platform:x})),N.value=s.platform;return}}for(const s of d.platforms.filter(c=>c.enabled)){const c=[];for(const y of s.model_pricing)c.push(...y.models);const x=je(c);if(x){m.showError(r("admin.channels.modelConflict",{model1:x[0],model2:x[1]})),N.value=s.platform;return}const b=Object.keys(s.model_mapping);if(b.length>0){const y=je(b);if(y){m.showError(r("admin.channels.mappingConflict",{model1:y[0],model2:y[1]})),N.value=s.platform;return}}}for(const s of d.platforms.filter(c=>c.enabled))for(const c of s.model_pricing)if(c.models.length!==0&&(c.billing_mode==="per_request"||c.billing_mode==="image")&&(c.per_request_price==null||c.per_request_price==="")&&(!c.intervals||c.intervals.length===0)){m.showError(r("admin.channels.form.perRequestPriceRequired"));return}for(const s of d.platforms.filter(c=>c.enabled))for(const c of s.model_pricing){if(!c.intervals||c.intervals.length===0)continue;const x=It(c.intervals,c.billing_mode,r);if(x){const b=r("admin.groups.platforms."+s.platform,s.platform),y=c.models.join(", ")||r("admin.channels.form.unnamed");m.showError(`${b} - ${y}: ${x}`),N.value=s.platform;return}}const{group_ids:n,model_pricing:a,model_mapping:t,features_config:i}=_t();S.value=!0;try{if(g.value){const s={name:d.name.trim(),description:d.description.trim()||void 0,status:d.status,group_ids:n,model_pricing:a,model_mapping:Object.keys(t).length>0?t:{},billing_model_source:d.billing_model_source,restrict_models:d.restrict_models,features_config:i,apply_pricing_to_account_stats:d.apply_pricing_to_account_stats,account_stats_pricing_rules:Re()};await W.channels.update(g.value.id,s),m.showSuccess(r("admin.channels.updateSuccess","Channel updated"))}else{const s={name:d.name.trim(),description:d.description.trim()||void 0,group_ids:n,model_pricing:a,model_mapping:Object.keys(t).length>0?t:{},billing_model_source:d.billing_model_source,restrict_models:d.restrict_models,features_config:i,apply_pricing_to_account_stats:d.apply_pricing_to_account_stats,account_stats_pricing_rules:Re()};await W.channels.create(s),m.showSuccess(r("admin.channels.createSuccess","Channel created"))}ke(),K()}catch(s){m.showError(_e(s,g.value?r("admin.channels.updateError","Failed to update channel"):r("admin.channels.createError","Failed to create channel")))}finally{S.value=!1}}async function wt(n){const a=n.status==="active"?"disabled":"active";try{await W.channels.update(n.id,{status:a}),X.status&&X.status!==a?await K():n.status=a}catch(t){m.showError(r("admin.channels.updateError","Failed to update channel")),console.error("Error toggling channel status:",t)}}function Ct(n){U.value=n,O.value=!0}async function Pt(){if(U.value)try{await W.channels.remove(U.value.id),m.showSuccess(r("admin.channels.deleteSuccess","Channel deleted")),O.value=!1,U.value=null,K()}catch(n){m.showError(_e(n,r("admin.channels.deleteError","Failed to delete channel")))}}return Et(()=>{K(),ve(),j(),document.addEventListener("click",Me)}),Mt(()=>{clearTimeout(xe),Z==null||Z.abort(),document.removeEventListener("click",Me),ie.clearAll(),be()}),(n,a)=>(u(),ne(zt,null,{default:G(()=>[w(Ot,null,{filters:G(()=>[e("div",$a,[e("div",wa,[e("div",Ca,[w(Q,{name:"search",size:"md",class:"absolute left-3 top-1/2 -translate-y-1/2 text-gray-400 dark:text-gray-500"}),ee(e("input",{"onUpdate:modelValue":a[0]||(a[0]=t=>k.value=t),type:"text",placeholder:l(r)("admin.channels.searchChannels","Search channels..."),class:"input pl-10",onInput:gt},null,40,Pa),[[ce,k.value]])]),w(fe,{modelValue:X.status,"onUpdate:modelValue":a[1]||(a[1]=t=>X.status=t),options:T.value,placeholder:l(r)("admin.channels.allStatus","All Status"),class:"w-40",onChange:K},null,8,["modelValue","options","placeholder"])]),e("div",Sa,[e("button",{onClick:K,disabled:_.value,class:"btn btn-secondary",title:l(r)("common.refresh","Refresh")},[w(Q,{name:"refresh",size:"md",class:A(_.value?"animate-spin":"")},null,8,["class"])],8,Aa),e("button",{onClick:Te,class:"btn btn-primary"},[w(Q,{name:"plus",size:"md",class:"mr-2"}),R(" "+o(l(r)("admin.channels.createChannel","Create Channel")),1)])])])]),table:G(()=>[w(Nt,{columns:B.value,data:P.value,loading:_.value,"server-side-sort":!0,"default-sort-key":"created_at","default-sort-order":"desc",onSort:bt},{"cell-name":G(({value:t})=>
1[e("span",Ea,o(t),1)]),"cell-description":G(({value:t})=>[e("span",Ma,o(t||"-"),1)]),"cell-status":G(({row:t})=>[w(de,{modelValue:t.status==="active","onUpdate:modelValue":i=>wt(t)},null,8,["modelValue","onUpdate:modelValue"])]),"cell-group_count":G(({row:t})=>[e("span",Ra,o((t.group_ids||[]).length)+" "+o(l(r)("admin.channels.groupsUnit","groups")),1)]),"cell-pricing_count":G(({row:t})=>[e("span",Va,o((t.model_pricing||[]).length)+" "+o(l(r)("admin.channels.pricingUnit","pricing rules")),1)]),"cell-created_at":G(({value:t})=>[e("span",qa,o(Le(t)),1)]),"cell-actions":G(({row:t})=>[e("div",Ta,[e("button",{onClick:i=>vt(t),class:"flex flex-col items-center gap-0.5 rounded-lg p-1.5 text-gray-500 transition-colors hover:bg-gray-100 hover:text-primary-600 dark:hover:bg-dark-700 dark:hover:text-primary-400"},[w(Q,{name:"edit",size:"sm"}),e("span",Da,o(l(r)("common.edit","Edit")),1)],8,Ua),e("button",{onClick:i=>Ct(t),class:"flex flex-col items-center gap-0.5 rounded-lg p-1.5 text-gray-500 transition-colors hover:bg-red-50 hover:text-red-600 dark:hover:bg-red-900/20 dark:hover:text-red-400"},[w(Q,{name:"trash",size:"sm"}),e("span",ja,o(l(r)("common.delete","Delete")),1)],8,Ia)])]),empty:G(()=>[w(Lt,{title:l(r)("admin.channels.noChannelsYet","No Channels Yet"),description:l(r)("admin.channels.createFirstChannel","Create your first channel to manage model pricing"),"action-text":l(r)("admin.channels.createChannel","Create Channel"),onAction:Te},null,8,["title","description","action-text"])]),_:1},8,["columns","data","loading"])]),pagination:G(()=>[z.total>0?(u(),ne(Ft,{key:0,page:z.page,total:z.total,"page-size":z.page_size,"onUpdate:page":ht,"onUpdate:pageSize":yt},null,8,["page","total","page-size"])):V("",!0)]),_:1}),w(Tt,{show:f.value,title:g.value?l(r)("admin.channels.editChannel","Edit Channel"):l(r)("admin.channels.createChannel","Create Channel"),width:"extra-wide",onClose:ke},{footer:G(()=>[e("div",gs,[e("button",{onClick:ke,type:"button",class:"btn btn-secondary"},o(l(r)("common.cancel","Cancel")),1),e("button",{type:"submit",form:"channel-form",disabled:S.value,class:"btn btn-primary"},o(S.value?l(r)("common.submitting","Submitting..."):g.value?l(r)("common.update","Update"):l(r)("common.create","Create")),9,hs)])]),default:G(()=>[e("div",za,[e("div",Oa,[e("button",{type:"button",onClick:a[2]||(a[2]=t=>N.value="basic"),class:A(["channel-tab",N.value==="basic"?"channel-tab-active":"channel-tab-inactive"])},o(l(r)("admin.channels.form.basicSettings")),3),(u(!0),p(q,null,I(d.platforms.filter(t=>t.enabled),t=>(u(),p("button",{key:t.platform,type:"button",onClick:i=>N.value=t.platform,class:A(["channel-tab group",N.value===t.platform?"channel-tab-active":"channel-tab-inactive"])},[w(Oe,{platform:t.platform,size:"xs",class:A(l(Y)(t.platform))},null,8,["platform","class"]),e("span",{class:A(l(Y)(t.platform))},o(l(r)("admin.groups.platforms."+t.platform,t.platform)),3)],10,Na))),128))]),e("form",{id:"channel-form",onSubmit:Fe($t,["prevent"]),class:"flex-1 overflow-y-auto pt-4"},[ee(e("div",Fa,[e("div",null,[e("label",Ga,[R(o(l(r)("admin.channels.form.name","Name"))+" ",1),a[10]||(a[10]=e("span",{class:"text-red-500"},"*",-1))]),ee(e("input",{"onUpdate:modelValue":a[3]||(a[3]=t=>d.name=t),type:"text",required:"",class:"input",placeholder:l(r)("admin.channels.form.namePlaceholder","Enter channel name")},null,8,La),[[ce,d.name]])]),e("div",null,[e("label",Ba,o(l(r)("admin.channels.form.description","Description")),1),ee(e("textarea",{"onUpdate:modelValue":a[4]||(a[4]=t=>d.description=t),rows:"2",class:"input",placeholder:l(r)("admin.channels.form.descriptionPlaceholder","Optional description")},null,8,Ha),[[ce,d.description]])]),g.value?(u(),p("div",Wa,[e("label",Ka,o(l(r)("admin.channels.form.status","Status")),1),w(fe,{modelValue:d.status,"onUpdate:modelValue":a[5]||(a[5]=t=>d.status=t),options:ae.value},null,8,["modelValue","options"])])):V("",!0),e("div",null,[e("label",Ya,[ee(e("input",{type:"checkbox","onUpdate:modelValue":a[6]||(a[6]=t=>d.restrict_models=t),class:"h-4 w-4 rounded border-gray-300 text-primary-600 focus:ring-primary-500"},null,512),[[Rt,d.restrict_models]]),e("span",Ja,o(l(r)("admin.channels.form.restrictModels","Re
1strict Models")),1)]),e("p",Qa,o(l(r)("admin.channels.form.restrictModelsHint","When enabled, only models in the pricing list are allowed. Others will be rejected.")),1)]),e("div",null,[e("label",Xa,o(l(r)("admin.channels.form.billingModelSource","Billing Basis")),1),w(fe,{modelValue:d.billing_model_source,"onUpdate:modelValue":a[7]||(a[7]=t=>d.billing_model_source=t),options:L.value},null,8,["modelValue","options"]),e("p",Za,o(l(r)("admin.channels.form.billingModelSourceHint","Controls which model name is used for pricing lookup")),1)]),e("div",el,[e("label",tl,o(l(r)("admin.channels.form.platformConfig")),1),e("div",nl,[(u(),p(q,null,I(ue,t=>e("label",{key:t,class:A(["inline-flex cursor-pointer items-center gap-1.5 rounded-md border px-3 py-1.5 text-sm transition-colors",Se.value.includes(t)?"bg-primary-50 border-primary-300 dark:bg-primary-900/20 dark:border-primary-700":"border-gray-200 hover:bg-gray-50 dark:border-dark-600 dark:hover:bg-dark-700"])},[e("input",{type:"checkbox",checked:Se.value.includes(t),class:"h-3.5 w-3.5 rounded border-gray-300 text-primary-600 focus:ring-primary-500",onChange:i=>He(t)},null,40,al),w(Oe,{platform:t,size:"xs",class:A(l(Y)(t))},null,8,["platform","class"]),e("span",{class:A(l(Y)(t))},o(l(r)("admin.groups.platforms."+t,t)),3)],2)),64))])]),e("div",ll,[e("div",sl,[e("div",null,[e("label",rl,o(l(r)("admin.channels.form.applyPricingToAccountStats")),1),e("p",ol,o(l(r)("admin.channels.form.applyPricingToAccountStatsDesc")),1
1)]),w(de,{modelValue:d.apply_pricing_to_account_stats,"onUpdate:modelValue":a[8]||(a[8]=t=>d.apply_pricing_to_account_stats=t)},null,8,["modelValue"])])])],512),[[De,N.value==="basic"]]),(u(!0),p(q,null,I(d.platforms,(t,i)=>ee((u(),p("div",{key:"tab-"+t.platform,class:"space-y-4"},[e("div",null,[e("label",il,[R(o(l(r)("admin.channels.form.groups","Associated Groups"))+" ",1),a[11]||(a[11]=e("span",{class:"text-red-500"},"*",-1)),t.group_ids.length>0?(u(),p("span",cl," ("+o(l(r)("admin.channels.form.selectedCount",{count:t.group_ids.length}))+") ",1)):V("",!0)]),e("div",dl,[ge.value?(u(),p("div",ul,o(l(r)("common.loading","Loading...")),1)):Ae(t.platform).length===0?(u(),p("div",ml,o(l(r)("admin.channels.form.noGroupsAvailable","No groups available")),1)):(u(),p("div",pl,[(u(!0),p(q,null,I(Ae(t.platform),s=>(u(),p("label",{key:s.id,class:A(["inline-flex cursor-pointer items-center gap-1.5 rounded-md border border-gray-200 px-2 py-1 text-xs transition-colors hover:bg-gray-50 dark:border-dark-600 dark:hover:bg-dark-700",[t.group_ids.includes(s.id)?"bg-primary-50 border-primary-300 dark:bg-primary-900/20 dark:border-primary-700":"",ye(s.id,t.platform)?"opacity-40":""]])},[e("input",{type:"checkbox",checked:t.group_ids.includes(s.id),disabled:ye(s.id,t.platform),class:"h-3 w-3 rounded border-gray-300 text-primary-600 focus:ring-primary-500",onChange:c=>Je(i,s.id)},null,40,_l),e("span",{class:A(["font-medium",l(Y)(s.platform)])},o(s.name),3),e("span",{class:A(["rounded-full px-1 py-0 text-[10px]",l(jt)(s.platform)])},o(s.rate_multiplier)+"x",3),e("span",fl,o(s.account_count||0),1),ye(s.id,t.platform)?(u(),p("span",gl,o(Ke(s.id)),1)):V("",!0)],2))),128))]))])]),t.platform==="anthropic"&&C.value?(u(),p("div",hl,[e("div",yl,[e("div",null,[e("label",bl,o(l(r)("admin.channels.form.webSearchEmulation")),1),e("p",vl,o(l(r)("admin.channels.form.webSearchEmulationHint")),1)]),w(de,{modelValue:t.web_search_emulation,"onUpdate:modelValue":s=>t.web_search_emulation=s},null,8,["modelValue","onUpdate:modelValue"])])])):V("",!0),t.platform==="openai"?(u(),p("div",xl,[e("div",kl,[e("div",null,[e("label",$l,o(l(r)("admin.channels.form.codexImageGenerationBridge")),1),e("p",wl,o(l(r)("admin.channels.form.codexImageGenerationBridgeHint")),1)]),w(de,{modelValue:t.codex_image_generation_bridge,"onUpdate:modelValue":s=>t.codex_image_generation_bridge=s},null,8,["modelValue","onUpdate:modelValue"])])])):V("",!0),t.platform==="anthropic"?(u(),p("div",Cl,[e("div",Pl,[e("div",null,[e("label",Sl,o(l(r)("admin.channels.form.bedrockCCCompat")),1),e("p",Al,o(l(r)("admin.channels.form.bedrockCCCompatHint")),1)]),w(de,{modelValue:t.bedrock_cc_compat,"onUpdate:modelValue":s=>t.bedrock_cc_compat=s},null,8,["modelValue","onUpdate:modelValue"])])])):V("",!0),e("div",null,[e("div",El,[e("label",Ml,o(l(r)("admin.channels.form.modelMapping","Model Mapping")),1),e("button",{type:"button",onClick:s=>tt(i),class:"text-xs text-primary-600 hover:text-primary-700"}," + "+o(l(r)("common.add","Add")),9,Rl)]),Object.keys(t.model_mapping).length===0?(u(),p("div",Vl,o(l(r)("admin.channels.form.noMappingRules",'No mapping rules. Click "Add" to create one.')),1)):(u(),p("div",ql,[(u(!0),p(q,null,I(t.model_mapping,(s,c)=>(u(),p("div",{key:c,class:"flex items-center gap-2"},[e("input",{value:c,type:"text",class:A(["input flex-1 text-xs",l(Y)(t.platform)]),placeholder:l(r)("admin.channels.form.mappingSource","Source model"),onChange:x=>at(i,c,x.target.value)},null,42,Tl),a[12]||(a[12]=e("span",{class:"text-gray-400 text-xs"},"â",-1)),e("input",{value:t.model_mapping[c],type:"text",class:A(["input flex-1 text-xs",l(Y)(t.platform)]),placeholder:l(r)("admin.channels.form.mappingTarget","Target model"),onInput:x=>t.model_mapping[c]=x.target.value},null,42,Ul),e("button",{type:"button",onClick:x=>nt(i,c),class:"rounded p-0.5 text-gray-400 hover:text-red-500"},[w(Q,{name:"trash",size:"sm"})],8,Dl)]))),128))]))]),e("div",null,[e("div",Il,[e("label",jl,o(l(r)("admin.channels.form.modelPricing","Model Pricing")),1),e("div",zl,[e("button",{type:"button",onClick:s=>Xe(i),disabled:oe.value===t.platform,class:"text-xs text-gray-500 hover:text-primary-600 disabled:opacity-50"},o(oe.value===t.platform?l(r)("admin.channels.form.syncingModels"):l(r)("admin.channels.form.syncLatestModels")),9,Ol),e("button",{type:"button",onClick:s=>Qe(i),class:"text-xs text-primary-600 hover:text-primary-700"}," + "+o(l(r)("common.add","Add")),9,Nl)])]),t.model_pricing.length===0?(u(),p("div",Fl,o(l(r)("admin.channels.form.noPricingRules",'No pricing rules yet. Click "Add" to create one.')),1)):(u(),p("div",Gl,[(u(!0),p(q,null,I(t.model_pricing,(s,c)=>(u(),ne(Ne,{key:c,entry:s,platform:t.platform,onUpdate:x=>Ze(i,c,x),onRemove:x=>et(i,c)},null,8,["entry","platform","onUpdate","onRemove"]))),128))]))]),e("div",Ll,[e("div",Bl,[e
1("h4",Hl,o(l(r)("admin.channels.form.accountStatsPricingRules")),1),e("button",{type:"button",onClick:s=>lt(i),class:"rounded-lg border border-primary-300 px-3 py-1 text-xs font-medium text-primary-600 hover:bg-primary-50 dark:border-primary-600 dark:text-primary-400 dark:hover:bg-primary-900/20"}," + "+o(l(r)("admin.channels.form.addRule")),9,Wl)]),t.account_stats_pricing_rules.length===0?(u(),p("p",Kl,o(l(r)("admin.channels.form.noRulesConfigured")),1)):V("",!0),(u(!0),p(q,null,I(t.account_stats_pricing_rules,(s,c)=>{var x;return u(),p("div",{key:c,class:"space-y-3 rounded-lg border border-gray-200 p-4 dark:border-dark-600"},[e("div",Yl,[ee(e("input",{"onUpdate:modelValue":b=>s.name=b,placeholder:l(r)("admin.channels.form.ruleName"),class:"bg-transparent text-sm font-medium text-gray-700 placeholder-gray-400 outline-none dark:text-gray-300"},null,8,Jl),[[ce,s.name]]),e("button",{type:"button",onClick:b=>rt(i,c),class:"text-xs text-red-500 hover:text-red-700"},o(l(r)("common.delete")),9,Ql)]),e("div",null,[e("label",Xl,o(l(r)("admin.channels.form.ruleGroups")),1),e("div",Zl,[(u(!0),p(q,null,I(t.group_ids,b=>(u(),p("label",{key:b,class:A(["inline-flex cursor-pointer items-center gap-1 rounded-md border px-2 py-1 text-xs transition-colors",s.group_ids.includes(b)?"border-primary-300 bg-primary-50 dark:border-primary-700 dark:bg-primary-900/20":"border-gray-200 hover:bg-gray-50 dark:border-dark-600 dark:hover:bg-dark-700"])},[e("input",{type:"checkbox",checked:s.group_ids.includes(b),class:"h-3 w-3 rounded border-gray-300 text-primary-600 focus:ring-primary-500",onChange:y=>s.group_ids.includes(b)?s.group_ids.splice(s.group_ids.indexOf(b),1):s.group_ids.push(b)},null,40,es),e("span",{class:A(["font-medium",l(Y)(t.platform)])},o(it(b)),3)],2))),128))]),t.group_ids.length===0?(u(),p("p",ts,o(l(r)("admin.channels.form.noGroupsInChannel")),1)):V("",!0)]),e("div",null,[e("label",ns,o(l(r)("admin.channels.form.ruleAccounts")),1),e("div",as,[(u(!0),p(q,null,I(s.account_ids,b=>(u(),p("span",{key:b,class:"inline-flex items-center gap-1 rounded-md border border-primary-300 bg-primary-50 px-2 py-0.5 text-xs dark:border-primary-700 dark:bg-primary-900/20"},[e("span",{class:A(["font-medium",l(Y)(t.platform)])},o(pt(b)),3),e("button",{type:"button",onClick:y=>mt(s,b),class:"text-gray-400 hover:text-red-500"},[w(Q,{name:"x",size:"xs"})],8,ls)]))),128))]),e("div",ss,[ee(e("input",{"onUpdate:modelValue":b=>le.value[`${t.platform}-${c}`]=b,type:"text",class:"input text-sm",placeholder:l(r)("admin.channels.form.searchAccountPlaceholder"),onInput:b=>ct(t.platform,c),onFocus:b=>dt(t.platform,c)},null,40,rs),[[ce,le.value[`${t.platform}-${c}`]]]),te.value[`${t.platform}-${c}`]&&(((x=se.value[`${t.platform}-${c}`])==null?void 0:x.length)??0)>0?(u(),p("div",os,[(u(!0),p(q,null,I(se.value[`${t.platform}-${c}`],b=>(u(),p("button",{key:b.id,type:"button",onClick:y=>ut(s,b,t.platform,c),class:A(["w-full px-3 py-2 text-left text-sm hover:bg-gray-100 dark:hover:bg-dark-700",{"opacity-50":s.account_ids.includes(b.id)}]),disabled:s.account_ids.includes(b.id)},[e("span",{class:A(l(Y)(b.platform))},o(b.name),3),e("span",cs,"#"+o(b.id),1)],10,is))),128))])):V("",!0)]),e("p",ds,o(l(r)("admin.channels.form.ruleAccountsHint")),1)]),e("div",null,[e("div",us,[e("label",ms,o(l(r)("admin.channels.form.ruleModelPricing")),1),e("button",{type:"button",onClick:b=>st(i,c),class:"text-xs text-primary-600 hover:text-primary-700"}," + "+o(l(r)("common.add")),9,ps)]),s.pricing.length===0?(u(),p("div",_s,o(l(r)("admin.channels.form.noPricingRules")),1)):(u(),p("div",fs,[(u(!0),p(q,null,I(s.pricing,(b,y)=>(u(),ne(Ne,{key:y,entry:b,platform:t.platform,onUpdate:v=>s.pricing.splice(y,1,v),onRemove:v=>ot(i,c,y)},null,8,["entry","platform","onUpdate","onRemove"]))),128))]))])])}),128))])])),[[De,t.enabled&&N.value===t.platform]])),128))],32)])]),_:1},8,["show","title"]),w(Gt,{show:O.value,title:l(r)("admin.channels.deleteChannel","Delete Channel"),message:Ye.value,"confirm-text":l(r)("common.delete","Delete"),"cancel-text":l(r)("common.cancel","Cancel"),danger:!0,onConfirm:Pt,onCancel:a[9]||(a[9]=t=>O.value=!1)},null,8,["show","title","message","confirm-text","cancel-text"])]),_:1}))}}),Ns=Ge(ys,[["__scopeId","data-v-5f19e393"]]);export{Ns 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.