1"use strict";(self.rspackChunknewapi_web=self.rspackChunknewapi_web||[]).push([[7098],{74028(e,t,s){s.d(t,{c:()=>r});var a=s(68413);function r(e){let{search:t,navigate:s,pagination:r,globalFilter:n,columnFilters:l=[]}=e,i=r?.pageKey??"page",o=r?.pageSizeKey??"pageSize",d=r?.defaultPage??1,c=r?.defaultPageSize??20,u=n?.key??"filter",m=n?.enabled??!0,x=n?.trim??!0,p=(0,a.useMemo)(()=>{let e=[];for(let s of l){let a=t[s.searchKey],r=s.deserialize??(e=>e);if("string"===s.type){let t=r(a)??"";"string"==typeof t&&""!==t.trim()&&e.push({id:s.columnId,value:t})}else{let t=r(a)??[];Array.isArray(t)&&t.length>0&&e.push({id:s.columnId,value:t})}}return e},[l,t]),[h,g]=(0,a.useState)(p);(0,a.useEffect)(()=>{g(p)},[t]);let f=(0,a.useMemo)(()=>{let e=t[i],s=t[o];return{pageIndex:Math.max(0,("number"==typeof e?e:d)-1),pageSize:"number"==typeof s?s:c}},[t,i,o,d,c]),[j,b]=(0,a.useState)(()=>{if(!m)return;let e=t[u];return"string"==typeof e?e:""}),y=m?e=>{let t="function"==typeof e?e(j??""):e,a=x?t.trim():t;b(a),s({search:e=>({...e,[i]:void 0,[u]:a||void 0})})}:void 0;return{globalFilter:m?j??"":void 0,onGlobalFilterChange:y,columnFilters:h,onColumnFiltersChange:e=>{let t="function"==typeof e?e(h):e;g(t);let a={};for(let e of l){let s=t.find(t=>t.id===e.columnId),r=e.serialize??(e=>e);if("string"===e.type){let t="string"==typeof s?.value?s.value:"";a[e.searchKey]=""!==t.trim()?r(t):void 0}else{let t=Array.isArray(s?.value)?s.value:[];a[e.searchKey]=t.length>0?r(t):void 0}}s({search:e=>({...e,[i]:void 0,...a})})},pagination:f,onPaginationChange:e=>{let t="function"==typeof e?e(f):e,a=t.pageIndex+1,r=t.pageSize;s({search:e=>({...e,[i]:a<=d?void 0:a,[o]:r})})},ensurePageInRange:function(e){let a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{resetTo:"first"},r=t[i],n="number"==typeof r?r:d;e>0&&n>e&&s({replace:!0,search:t=>({...t,[i]:"last"===a.resetTo?e:void 0})})}}}},66897(e,t,s){s.r(t),s.d(t,{component:()=>ex});var a=s(72361),r=s(6702),n=s(99170),l=s(67267),i=s(61631),o=s(81204),d=s(46775),c=s(34126),u=s(92170);let m=[{label:"Primary endpoint",url:"https://cn.chatapi.app",accent:"bg-emerald-500"},{label:"Backup endpoint",url:"https://apicdn.xycai.us",accent:"bg-amber-500"},{label:"Overseas direct endpoint",url:"https://apicdn.xyc.ai",accent:"bg-cyan-500"}];function x(e){let{t}=(0,r.Bd)();return(0,a.jsxs)(c.m_,{children:[(0,a.jsx)(c.k$,{render:(0,a.jsx)(d.$,{type:"button",variant:"ghost",size:"icon",className:"text-muted-foreground hover:text-foreground size-7","aria-label":t("Learn more")}),children:(0,a.jsx)(i.qkh,{className:"size-3.5"})}),(0,a.jsx)(c.ZI,{className:"max-w-80 leading-5",children:t(e.label)})]})}function p(){let{t:e}=(0,r.Bd)(),t=`curl {${e("Endpoint address")}}/api/usage/token -H "Authorization: Bearer sk-xxxx"`;return(0,a.jsxs)("section",{id:"api-endpoints","aria-labelledby":"api-endpoints-card-title",className:"border-border/70 bg-card flex h-full min-h-0 flex-col overflow-hidden rounded-md border",children:[(0,a.jsxs)("div",{className:"border-border/60 flex flex-wrap items-center gap-3 border-b px-4 py-3",children:[(0,a.jsx)("span",{className:"bg-foreground text-background flex size-8 shrink-0 items-center justify-center rounded-md",children:(0,a.jsx)(i.Zv9,{className:"size-4","aria-hidden":"true"})}),(0,a.jsx)("h2",{id:"api-endpoints-card-title",className:"text-sm font-semibold",children:e("API Endpoints")}),(0,a.jsxs)("div",{className:"ms-auto flex flex-wrap items-center justify-end gap-2",children:[(0,a.jsxs)("span",{className:"border-border bg-background text-muted-foreground inline-flex h-7 items-center gap-1.5 rounded-md border px-2 text-xs font-medium",children:[(0,a.jsx)(i.sxL,{className:"text-success size-3.5","aria-hidden":"true"}),e("Supports WSS mode")]}),(0,a.jsxs)("a",{href:"https://docs.xycai.us/",target:"_blank",rel:"noreferrer",className:"border-border bg-background hover:bg-muted inline-flex h-7 items-center gap-1.5 rounded-md border px-2 text-xs font-medium transition-colors",children:[(0,a.jsx)(i.Gyj,{className:"size-3.5","aria-hidden":"true"}),e("Developer documentation"),(0,a.jsx)(i.GrD,{className:"text-muted-foreground size-3","aria-hidden":"true"})]})]})]}),(0,a.jsx)("div",{className:"divide-border/60 grid divide-y lg:grid-cols-3 lg:divide-x lg:divide-y-0 xl:flex-1",children:m.map(t=>(0,a.jsxs)("div",{className:"flex min-w-0 items-center gap-2 px-4 py-3",children:[(0,a.jsx)("span",{className:(0,o.cn)("size-2 shrink-0 rounded-full",t.accent),"aria-hidden":"true"}),(0,a.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,a.jsx)("div",{className:"text-muted-foreground text-[11px] font-medium",children:e(t.label)}),(0,a.jsx)("code",{className:"block truncate font-mono text-xs font-medium",children:t.url})]}),(0,a.jsx)(u.i,{value:t.url,variant:"ghost",size:"icon",className:"size-7",iconClassName:"size-3.5",tooltip:e("Copy URL"),"aria-label":e("Copy URL")}),(0,a.jsx)(x,{label:"Most software, including CC Switch, Codex, Claude Code, and IDE plugins, only needs this endpoint and requires no additional configuration."})]},t.url))}),(0,a.jsxs)("div",{className:"border-border/60 bg-muted/25 border-t px-4 py-2",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)(i.t6i,{className:"text-muted-foreground size-4 shrink-0","aria-hidden":"true"}),(0,a.jsx)("p",{className:"min-w-0 text-xs leading-5",children:e("Enterprise customers can request a dedicated CDN with CN2 bidirectional return routes instead of sharing public API endpoints.")}),(0,a.jsx)(x,{label:"Available to customers who recharge at least USD 1,000."})]}),(0,a.jsxs)("div",{className:"border-border/50 mt-1.5 flex min-w-0 items-center gap-2 border-t pt-1.5",children:[(0,a.jsxs)("span",{className:"inline-flex shrink-0 items-center gap-1.5 text-xs font-medium",children:[(0,a.jsx)(i.kVM,{className:"text-muted-foreground size-3.5","aria-hidden":"true"}),e("Check balance with an API key"),":"]}),(0,a.jsxs)("div",{className:"border-border/70 bg-background flex h-7 min-w-0 flex-1 items-center rounded-md border ps-2",children:[(0,a.jsx)("code",{className:"no-scrollbar min-w-0 flex-1 overflow-x-auto font-mono text-[11px] leading-none whitespace-nowrap",children:t}),(0,a.jsx)(u.i,{value:t,variant:"ghost",size:"icon",className:"size-6",iconClassName:"size-3",tooltip:e("Copy cURL"),"aria-label":e("Copy cURL")})]})]})]})]})}var h=s(42925),g=s(83476),f=s(68413),j=s(53540),b=s(2718),y=s(55581),N=s(3521),v=s(11564),w=s(20598),k=s(3642),S=s(74028),C=s(15648),_=s(54023),z=s(18434),I=s(58254),A=s(3088),P=s(78202),E=s(9455),R=s(3075),F=s(48196),D=s(89663),K=s(64989);function M(e){let{apiKey:t}=e,{t:s}=(0,r.Bd)(),{triggerRefresh:n}=(0,g.Q)(),{options:l}=(0,D.x)(),[o,d]=(0,f.useState)(!1),c=(0,f.useCallback)(async e=>{if(e&&e!==t.group){d(!0);try{let a=await (0,P.XW)({...t,group:e});a.success?(w.oR.success(s("Group updated")),n()):w.oR.error(a.message||s("Update failed"))}catch{w.oR.error(s("Update failed"))}finally{d(!1)}}},[t,s,n]);return(0,a.jsxs)("div",{className:"inline-flex w-fit items-center gap-1.5",children:[(0,a.jsx)(K.e,{options:l,value:t.group,onValueChange:c,placeholder:s("Select an API key group (prices vary)"),disabled:o,compact:!0}),o&&(0,a.jsx)(i.krw,{className:"text-muted-foreground size-3.5 shrink-0 animate-spin"})]})}function B(e){let{apiKey:t}=e,{t:s}=(0,r.Bd)();return t.tag?(0,a.jsx)(A.Wh,{label:t.tag,variant:"neutral",showDot:!1,copyable:!0}):(0,a.jsx)("span",{className:"text-muted-foreground text-xs",children:s("Unassigned")})}function L(e){let{apiKey:t}=e,{t:s}=(0,r.Bd)();if(!t.period_quota_enabled||t.period_quota<=0)return(0,a.jsx)("span",{className:"text-muted-foreground text-xs",children:s("Unlimited")});let n=Math.max(0,t.period_used_quota||0),l=Math.max(0,t.period_quota),i=Math.min(100,n/l*100),d=t.period_window_start?s("Resets on {{date}}",{date:(0,k.fk)(t.period_window_start+86400*(t.period_days||0))}):s("Starts after the first use of this key");return(0,a.jsxs)("div",{className:"min-w-[150px] space-y-1",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between gap-2 text-xs tabular-nums",children:[(0,a.jsxs)("span",{children:[(0,k.eN)(n)," / ",(0,k.eN)(l)]}),(0,a.jsxs)("span",{className:"text-muted-foreground",children:[Math.round(i),"%"]})]}),(0,a.jsx)("div",{className:"bg-muted h-1.5 overflow-hidden rounded-full",children:(0,a.jsx)("div",{className:(0,o.cn)("h-full rounded-full transition-[width]",i>=100?"bg-destructive":i>=80?"bg-amber-500":"bg-primary"),style:{width:`${i}%`}})}),(0,a.jsx)("div",{className:"text-muted-foreground truncate text-[11px]",title:d,children:d})]})}function q(e){let t,{apiKey:s}=e,{t:n}=(0,r.Bd)(),{resolveRealKey:l,resolvedKeys:o,loadingKeys:u,copiedKeyId:m,markKeyCopied:x}=(0,g.Q)(),[p,h]=(0,f.useState)(!1),j=!!u[s.id],b=o[s.id],y=m===s.id,N=`sk-${s.key}`,v=(t=N.replace(/\*+/g,"****")).length<=16?t:`${t.slice(0,8)}...${t.slice(-4)}`,k=(0,f.useCallback)(e=>{h(e),e&&!b&&l(s.id)},[b,l,s.id]),S=(0,f.useCallback)(async()=>
1{if(!b){l(s.id),w.oR.info(n("API key is loading, please try again in a moment"));return}b&&await (0,R.l)(b)&&x(s.id)},[b,l,s.id,x,n]);return(0,a.jsxs)("div",{className:"flex items-center",children:[(0,a.jsxs)(F.AM,{open:p,onOpenChange:k,children:[(0,a.jsx)(F.Wv,{render:(0,a.jsx)(d.$,{variant:"ghost",size:"sm","aria-label":N,className:"text-muted-foreground h-7 w-36 max-w-36 justify-start overflow-hidden px-0 font-mono text-xs text-ellipsis"}),children:v}),(0,a.jsx)(F.hl,{className:"w-auto max-w-[min(90vw,28rem)]",align:"start",children:(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)("p",{className:"text-muted-foreground text-xs",children:n("Full API Key")}),j?(0,a.jsxs)("div",{className:"flex items-center gap-2 py-2",children:[(0,a.jsx)(i.krw,{className:"size-3.5 animate-spin"}),(0,a.jsx)("span",{className:"text-muted-foreground text-xs",children:n("Loading...")})]}):(0,a.jsx)("input",{readOnly:!0,value:b||N,autoFocus:!0,onFocus:e=>e.target.select(),className:"bg-muted/50 w-full min-w-[280px] rounded-md border px-3 py-2 font-mono text-xs outline-none"})]})})]}),(0,a.jsxs)(c.m_,{children:[(0,a.jsx)(c.k$,{render:(0,a.jsx)(d.$,{variant:"ghost",size:"icon",className:"size-7 shrink-0",onClick:S,onFocus:()=>{b||l(s.id)},onPointerEnter:()=>{b||l(s.id)},disabled:j}),children:j?(0,a.jsx)(i.krw,{className:"size-3.5 animate-spin"}):y?(0,a.jsx)(i.Jlk,{className:"size-3.5 text-green-600"}):(0,a.jsx)(i.QRo,{className:"size-3.5"})}),(0,a.jsx)(c.ZI,{children:j?n("Loading..."):y?n("Copied!"):n("Copy API key")})]})]})}var U=s(33120),$=s(64577),Q=s(23780),T=s(43631),Z=s(25732),H=s(63859);let W=Z.vk(e=>null==e?"":e,Z.Yj()),O=Z.Ik({id:Z.ai(),name:Z.Yj(),key:Z.Yj(),status:Z.ai(),remain_quota:Z.ai(),used_quota:Z.ai(),unlimited_quota:Z.zM(),expired_time:Z.ai(),created_time:Z.ai(),accessed_time:Z.ai(),group:W,period_quota_enabled:Z.vk(e=>!0===e||1===e||"1"===e,Z.zM()).default(!1),period_days:H.ai().int().min(0).default(0),period_quota:H.ai().min(0).default(0),period_used_quota:H.ai().min(0).default(0),period_window_start:H.ai().min(0).default(0),tag:W,cross_group_retry:Z.vk(e=>1===e||0!==e&&e,Z.zM()).optional().default(!1),model_limits_enabled:Z.zM(),model_limits:W,allow_ips:W});function V(e){let{row:t}=e,{t:s}=(0,r.Bd)(),n=O.parse(t.original),{setOpen:l,setCurrentRow:o,triggerRefresh:c,resolveRealKey:u,resolvedKeys:m,loadingKeys:x}=(0,g.Q)(),p=n.status===E.m7.ENABLED,[h,j]=(0,f.useState)(!1),b=m[n.id],y=!!x[n.id],N=(0,f.useCallback)(e=>{!e||b||y||u(n.id)},[n.id,y,b,u]),v=(0,f.useCallback)(()=>b||(u(n.id),w.oR.info(s("API key is loading, please try again in a moment")),null),[n.id,b,u,s]),k=async e=>{e?.stopPropagation();let t=p?E.m7.DISABLED:E.m7.ENABLED;j(!0);try{let e=await (0,P.JM)(n.id,t);if(e.success){let e=p?s(E.PL.API_KEY_DISABLED):s(E.PL.API_KEY_ENABLED);w.oR.success(e),c()}else w.oR.error(e.message||s(E.UU.STATUS_UPDATE_FAILED))}catch{w.oR.error(s(E.UU.UNEXPECTED))}finally{j(!1)}};return(0,a.jsxs)("div",{className:"flex items-center justify-end gap-1",children:[(0,a.jsx)(Q.o,{variant:"outline",size:"sm",loading:h,onClick:k,className:p?void 0:"border-emerald-600/50 text-emerald-700 hover:bg-emerald-50 dark:border-emerald-400/40 dark:text-emerald-400 dark:hover:bg-emerald-500/10",children:p?s("Disable"):s("Enable")}),(0,a.jsxs)(T.rI,{modal:!1,onOpenChange:N,children:[(0,a.jsxs)(T.ty,{render:(0,a.jsx)(d.$,{variant:"ghost",className:"data-popup-open:bg-muted flex h-8 w-8 p-0"}),children:[(0,a.jsx)(i.a4,{className:"h-4 w-4"}),(0,a.jsx)("span",{className:"sr-only",children:s("Open menu")})]}),(0,a.jsxs)(T.SQ,{align:"end",className:"w-44 p-1",children:[(0,a.jsxs)(T._2,{className:"gap-2.5",onClick:async()=>{let e=v();!e||await (0,R.l)(e)&&w.oR.success(s("Copied"))},children:[(0,a.jsx)(i.QRo,{size:16,className:"text-muted-foreground"}),s("Copy Key")]}),(0,a.jsxs)(T._2,{className:"gap-2.5",onClick:()=>{o(n),l("update")},children:[(0,a.jsx)(i.ffu,{size:16,className:"text-muted-foreground"}),s("Edit")]}),(0,a.jsx)(T.mB,{}),(0,a.jsxs)(T._2,{onClick:()=>{o(n),l("delete")},className:"text-destructive focus:text-destructive gap-2.5",children:[(0,a.jsx)(i.TBR,{size:16}),s("Delete")]})]})]})]})}function G(){let{t:e}=(0,r.Bd)(),{setOpen:t}=(0,g.Q)();return(0,a.jsx)("div",{className:"flex gap-2",children:(0,a.jsxs)(Q.o,{variant:"accent",onClick:()=>t("create"),children:[(0,a.jsx)(i.FWt,{className:"h-4 w-4"}),e("Create API Key")]})})}var Y=s(24993);function X(e){let{open:t,onOpenChange:s,table:n}=e,{t:l}=(0,r.Bd)(),{triggerRefresh:i}=(0,g.Q)(),[o,d]=(0,f.useState)(!1),c=n.getFilteredSelectedRowModel().rows,u=async()=>{d(!0);try{let e=c.map(e=>e.original.id),t=await (0,P.S0)(e);if(t.success){let a=t.data||e.length;w.oR.success(l("Successfully deleted {{count}} API key(s)",{count:a})),n.resetRowSelection(),i(),s(!1)}
1else w.oR.error(t.message||l(E.UU.BATCH_DELETE_FAILED))}catch(e){w.oR.error(l(E.UU.UNEXPECTED))}finally{d(!1)}};return(0,a.jsx)(Y.T,{destructive:!0,open:t,onOpenChange:s,handleConfirm:u,isLoading:o,className:"max-w-md",title:l("Delete {{count}} API key(s)?",{count:c.length}),desc:(0,a.jsxs)(a.Fragment,{children:[l("You are about to delete {{count}} API key(s).",{count:c.length})," ",(0,a.jsx)("br",{}),l("This action cannot be undone.")]}),confirmText:l("Delete")})}function J(e){let{table:t,tags:s=[]}=e,{t:n}=(0,r.Bd)(),{resolveRealKeysBatch:l}=(0,g.Q)(),[o,u]=(0,f.useState)(!1),[m,x]=(0,f.useState)(!1),[p,h]=(0,f.useState)(!1),[j,b]=(0,f.useState)(""),{triggerRefresh:y}=(0,g.Q)(),N=t.getFilteredSelectedRowModel().rows,v=(0,f.useCallback)(async function(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],s=N.map(e=>e.original.id);if(0===s.length)return;if(s.length>100)return void w.oR.error(n("Up to 100 API keys can be tagged at once"));let a=e?"":j.trim();if(!e&&!a)return void w.oR.error(n("Enter a tag name first"));try{let r=await (0,P.eI)(s,a);if(!1===r.success)return void w.oR.error(r.message||n("Failed to update tags"));let l=r.affected??s.length;w.oR.success(e?n("Cleared tag from {{count}} key(s)",{count:l}):n("Applied tag to {{count}} key(s)",{count:l})),b(""),h(!1),t.resetRowSelection(),y()}catch{w.oR.error(n("Failed to update tags"))}},[N,n,j,t,y]),k=(0,f.useCallback)(async()=>{if(0!==N.length){x(!0);try{let e=N.map(e=>e.original.id),t=await l(e),s=[];for(let e of N){let a=e.original,r=t[a.id];r&&s.push(`${a.name} ${r}`)}s.length>0&&(await (0,R.l)(s.join("\n"))?w.oR.success(n("Copied {{count}} key(s)",{count:s.length})):w.oR.error(n("Failed to copy keys")))}catch{w.oR.error(n("Failed to copy keys"))}finally{x(!1)}}},[N,l,n]);return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(I.Of,{table:t,entityName:"API key",children:[(0,a.jsxs)(c.m_,{children:[(0,a.jsx)(c.k$,{render:(0,a.jsx)(d.$,{variant:"outline",size:"icon",className:"size-8",onClick:k,disabled:m,"aria-label":n("Copy selected keys")}),children:m?(0,a.jsx)(i.krw,{className:"size-4 animate-spin"}):(0,a.jsx)(i.QRo,{className:"size-4"})}),(0,a.jsx)(c.ZI,{children:(0,a.jsx)("p",{children:n("Copy selected keys")})})]}),(0,a.jsxs)(F.AM,{open:p,onOpenChange:h,children:[(0,a.jsx)(F.Wv,{render:(0,a.jsx)(d.$,{variant:"outline",size:"icon",className:"size-8","aria-label":n("Batch tag")}),children:(0,a.jsx)(i.vwO,{className:"size-4"})}),(0,a.jsxs)(F.hl,{align:"center",className:"w-72 space-y-3",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:"font-medium",children:n("Batch tag")}),(0,a.jsxs)("p",{className:"text-muted-foreground text-xs",children:[n("Selected API keys"),": ",N.length]})]}),(0,a.jsx)(_.p,{value:j,maxLength:50,placeholder:n("Select a tag or enter a new one"),onChange:e=>b(e.target.value)}),s.length>0&&(0,a.jsx)("div",{className:"flex flex-wrap gap-1.5",children:s.map(e=>(0,a.jsx)(d.$,{type:"button",variant:"outline",size:"sm",className:"h-7 px-2 text-xs",onClick:()=>b(e.tag),children:e.tag},e.tag))}),(0,a.jsxs)("div",{className:"flex items-center justify-end gap-2",children:[(0,a.jsx)(d.$,{type:"button",variant:"ghost",size:"sm",onClick:()=>void v(!0),children:n("Clear tag")}),(0,a.jsx)(d.$,{type:"button",size:"sm",onClick:()=>void v(!1),children:n("Apply tag")})]})]})]}),(0,a.jsxs)(c.m_,{children:[(0,a.jsxs)(c.k$,{render:(0,a.jsx)(d.$,{variant:"destructive",size:"icon",onClick:()=>u(!0),className:"size-8","aria-label":n("Delete selected API keys")}),children:[(0,a.jsx)(i.TBR,{}),(0,a.jsx)("span",{className:"sr-only",children:n("Delete selected API keys")})]}),(0,a.jsx)(c.ZI,{children:(0,a.jsx)("p",{children:n("Delete selected API keys")})})]})]}),(0,a.jsx)(X,{open:o,onOpenChange:u,table:t})]})}let ee=(0,b.GY)("/_authenticated/keys/");function et(e){return e.status!==E.m7.ENABLED}function es(){return(0,a.jsx)("div",{className:"divide-border overflow-hidden rounded-lg border",children:Array.from({length:5}).map((e,t)=>(0,a.jsxs)("div",{className:"space-y-2 border-b px-3 py-2.5 last:border-b-0",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsx)(z.E,{className:"h-4 w-32"}),(0,a.jsx)(z.E,{className:"h-5 w-16 rounded-md"})]}),(0,a.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,a.jsx)(z.E,{className:"h-7 w-44"}),(0,a.jsx)(z.E,{className:"h-8 w-16"})]}),(0,a.jsx)(z.E,{className:"h-3 w-28"})]},t))})}function ea(e){let{table:t,isLoading:s}=e,{t:n}=(0,r.Bd)(),l=t.getRowModel().rows;return s?(0,a.jsx)(es,{}):l.length?(0,a.jsx)("div",{className:"divide-border overflow-hidden rounded-lg border",children:l.map(e=>{let t=e.original,s=E.EG[t.status],r=t.used_quota+t.remain_quota;return(0,a.jsxs)("div",{className:(0,o.cn)("bg-card space-y-2.5 border-b px-3 py-2.5 last:border-b-0",et(t)&&I.Z0),children:[(0,a.jsxs)("div",{className:"flex items-start justify-between gap-3",children:[(0,a.jsxs)("div",{className:"min-w-0",children:[(0,a.jsx)("div",{className:"truncate text-sm font-semibold",children:t.name}),(0,a.jsx)("div",{className:"text-muted-foreground text-[11px]",children:n("API Key")})]}),s&&(0,a.jsx)(A.Wh,{label:n(s.label),variant:s.variant,copyable:!1})]}),(0,a.jsxs)("div",{className:"flex min-w-0 items-center justify-between gap-2",children:[(0,a.jsx)("div",{className:"min-w-0 flex-1 [&_button:first-child]:max-w-full [&_button:first-child]:truncate [&_button:first-child]:px-0",children:(0,a.jsx)(q,{apiKey:t})}),(0,a.jsx)(V,{row:e})]}),(0,a.jsxs)("div",{className:"flex items-center justify-between gap-2 text-xs",children:[(0,a.jsx)("span",{className:"text-muted-foreground",children:n("Quota")}),t.unlimited_quota?(0,a.jsx)("span",{className:"font-medium",children:n("Unlimited")}):(0,a.jsxs)("span",{className:"font-medium tabular-nums",children:[(0,k.eN)(t.remain_quota),(0,a.jsxs)("span",{className:"text-muted-foreground font-normal",children:[" / ",(0,k.eN)(r)]})]})]}),(0,a.jsxs)("div",{className:"flex items-center justify-between gap-2 text-xs",children:[(0,a.jsx)("span",{className:"text-muted-foreground",children:n("Spent")}),(0,a.jsx)("span",{className:"font-medium tabular-nums",children:(0,k.eN)(t.used_quota)})]}),(0,a.jsxs)("div",{className:"flex items-center justify-between gap-2 text-xs",children:[(0,a.jsx)("span",{className:"text-muted-foreground",children:n("Management tag")}),(0,a.jsx)(B,{apiKey:t})]}),(0,a.jsxs)("div",{className:"pt-1",children:[(0,a.jsx)("div",{className:"text-muted-foreground mb-1 text-xs",children:n("Period quota")}),(0,a.jsx)(L,{apiKey:t})]})]},e.id)})}):(0,a.jsx)("div",{className:"rounded-lg border p-8",children:(0,a.jsx)(C.Sv,{className:"border-none p-0",children:(0,a.jsxs)(C.FT,{children:[(0,a.jsx)(C.Kr,{variant:"icon",children:(0,a.jsx)(i.WmV,{className:"size-6"})}),(0,a.jsx)(C.cz,{children:n("No API Keys Found")}),(0,a.jsx)(C.Ou,{children:n("No API keys available. Create your first API key to get started.")})]})})})}function er(){let{t:e}=(0,r.Bd)(),{refreshTrigger:t}=(0,g.Q)(),s=function(){let{t:e}=(0,r.Bd)(),t=function(){let{data:e}=(0,j.I)({queryKey:["token-usage-stats"],queryFn:async()=>{let e=await $.FH.get("/api/token/usage_stats");return e.data?.data??[]},refetchInterval:15e3});return(0,f.useMemo)(()=>{let t=new Map;for(let s of e??[])t.set(s.id,s);return t},[e])}();return[{id:"select",header:t=>{let{table:s}=t;return(0,a.jsx)(U.S,{checked:s.getIsAllPageRowsSelected(),indeterminate:s.getIsSomePageRowsSelected(),onCheckedChange:e=>s.toggleAllPageRowsSelected(!!e),"aria-label":e("Select all"),className:"translate-y-[2px]"})},cell:t=>{let{row:s}=t;return(0,a.jsx)(U.S,{checked:s.getIsSelected(),onCheckedChange:e=>s.toggleSelected(!!e),"aria-label":e("Select row"),className:"translate-y-[2px]"})},enableSorting:!1,enableHiding:!1,meta:{label:e("Select")}},{accessorKey:"name",header:t=>{let{column:s}=t;return(0,a.jsx)(I.wZ,{column:s,title:e("Name")}
1)},cell:e=>{let{row:t}=e;return(0,a.jsx)("div",{className:"max-w-[200px] truncate font-medium",children:t.getValue("name")})},meta:{label:e("Name"),mobileTitle:!0}},{id:"key",accessorKey:"key",header:e("API Key"),cell:e=>{let{row:t}=e;return(0,a.jsx)(q,{apiKey:t.original})},enableSorting:!1,meta:{label:e("API Key")}},{id:"group",accessorKey:"group",header:t=>{let{column:s}=t;return(0,a.jsx)(I.wZ,{column:s,title:e("Group")})},cell:e=>{let{row:t}=e;return(0,a.jsx)(M,{apiKey:t.original})},enableSorting:!1,meta:{label:e("Group")}},{id:"tag",accessorKey:"tag",header:t=>{let{column:s}=t;return(0,a.jsx)(I.wZ,{column:s,title:e("Management tag")})},cell:e=>{let{row:t}=e;return(0,a.jsx)(B,{apiKey:t.original})},enableSorting:!1,meta:{label:e("Management tag")}},{id:"periodQuota",header:t=>{let{column:s}=t;return(0,a.jsx)(I.wZ,{column:s,title:e("Period quota")})},cell:e=>{let{row:t}=e;return(0,a.jsx)(L,{apiKey:t.original})},enableSorting:!1,meta:{label:e("Period quota")}},{id:"concurrency",header:t=>{let{column:s}=t;return(0,a.jsx)(I.wZ,{column:s,title:e("Current concurrency")})},cell:e=>{let{row:s}=e,r=t.get(s.original.id)?.inflight??0;return r>0?(0,a.jsx)("span",{className:"bg-primary/10 text-primary inline-flex min-w-8 items-center justify-center rounded-md px-2 py-1 text-[13px] font-semibold tabular-nums",children:r}):(0,a.jsx)("span",{className:"text-muted-foreground/50 inline-flex min-w-8 items-center justify-center px-2 py-1 text-[13px] tabular-nums",children:"0"})},enableSorting:!1,meta:{label:e("Current concurrency"),mobileHidden:!0}},{id:"usage",header:t=>{let{column:s}=t;return(0,a.jsx)(I.wZ,{column:s,title:e("Usage")})},cell:s=>{let{row:r}=s,n=t.get(r.original.id),l=n?.today_quota??0,i=n?.month_quota??0;return(0,a.jsxs)("div",{className:"inline-grid grid-cols-[auto_auto] items-baseline gap-x-1.5 gap-y-0.5 text-[13px] tabular-nums",children:[(0,a.jsx)("span",{className:"text-muted-foreground text-xs",children:e("Today")}),(0,a.jsx)("span",{className:(0,o.cn)("text-right font-medium",0===l&&"text-muted-foreground/60 font-normal"),children:(0,k.eN)(l)}),(0,a.jsx)("span",{className:"text-muted-foreground text-xs",children:e("Last 30 days")}),(0,a.jsx)("span",{className:(0,o.cn)("text-right font-medium",0===i&&"text-muted-foreground/60 font-normal"),children:(0,k.eN)(i)})]})},enableSorting:!1,meta:{label:e("Usage")}},{accessorKey:"expired_time",header:t=>{let{column:s}=t;return(0,a.jsx)(I.wZ,{column:s,title:e("Expires")})},cell:t=>{let{row:s}=t,r=s.getValue("expired_time");if(-1===r)return(0,a.jsx)("span",{className:"text-muted-foreground text-[13px]",children:e("Never expires")});let n=1e3*r<Date.now();return(0,a.jsx)("span",{className:(0,o.cn)("font-mono text-xs tabular-nums",n?"text-destructive":"text-muted-foreground"),children:(0,k.fk)(r)})},meta:{label:e("Expires"),mobileHidden:!0}},{accessorKey:"status",header:t=>{let{column:s}=t;return(0,a.jsx)(I.wZ,{column:s,title:e("Status")})},cell:t=>{let{row:s}=t,r=E.EG[s.getValue("status")];return r?s.getValue("status")===E.m7.ENABLED?(0,a.jsxs)(c.m_,{children:[(0,a.jsx)(c.k$,{render:(0,a.jsx)("span",{role:"img","aria-label":e(r.label),className:"inline-flex size-5 items-center justify-start"}),children:(0,a.jsx)(i.rW7,{className:"text-success size-4.5"})}),(0,a.jsx)(c.ZI,{children:e(r.label)})]}):(0,a.jsx)(A.Wh,{label:e(r.label),variant:r.variant,showDot:!1,copyable:!1}):null},filterFn:(e,t,s)=>s.includes(String(e.getValue(t))),meta:{label:e("Status"),mobileBadge:!0}},{id:"actions",cell:e=>{let{row:t}=e;return(0,a.jsx)(V,{row:t})},meta:{label:e("Actions")},size:88}]}(),[n,l]=(0,f.useState)({}),[d,u]=(0,f.useState)([]),[m,x]=(0,f.useState)({}),{globalFilter:p,onGlobalFilterChange:h,columnFilters:b,onColumnFiltersChange:C,pagination:z,onPaginationChange:R,ensurePageInRange:F}=(0,S.c)({search:ee.useSearch(),navigate:ee.useNavigate(),pagination:{defaultPage:1,defaultPageSize:20},globalFilter:{enabled:!0,key:"filter"}
1,columnFilters:[{columnId:"status",searchKey:"status",type:"array"},{columnId:"_tokenSearch",searchKey:"token",type:"string"},{columnId:"tag",searchKey:"tag",type:"array"}]}),D=b.find(e=>"_tokenSearch"===e.id)?.value||"",[K,Q]=(0,f.useState)(D),T=(0,v.d7)(K,500);(0,f.useEffect)(()=>{Q(D)},[D]),(0,f.useEffect)(()=>{T!==D&&C(e=>{let t=e.filter(e=>"_tokenSearch"!==e.id);return T?[...t,{id:"_tokenSearch",value:T}]:t})},[T,D,C]);let Z=b.find(e=>"tag"===e.id)?.value?.[0]||"",H=!!(p?.trim()||D.trim()),{data:W}=(0,j.I)({queryKey:["api-key-tags",t],queryFn:P.Hj}),O=W?.data||[],{data:Y,isLoading:X,isFetching:es}=(0,j.I)({queryKey:["keys",z.pageIndex+1,z.pageSize,p,D,Z,t],queryFn:async()=>{let t=H?await (0,P.Dw)({keyword:p,token:D,p:z.pageIndex+1,size:z.pageSize,tag:Z||void 0}):await (0,P.PX)({p:z.pageIndex+1,size:z.pageSize,tag:Z||void 0});return t.success?{items:t.data?.items||[],total:t.data?.total||0}:(w.oR.error(t.message||e(H?E.UU.SEARCH_FAILED:E.UU.LOAD_FAILED)),{items:[],total:0})},placeholderData:e=>e}),er=Y?.items||[],en=(0,y.N4)({data:er,columns:s,state:{sorting:d,columnVisibility:m,rowSelection:n,columnFilters:b,globalFilter:p,pagination:z},enableRowSelection:!0,onRowSelectionChange:l,onSortingChange:u,onColumnVisibilityChange:x,globalFilterFn:()=>!0,getCoreRowModel:(0,N.HT)(),getFilteredRowModel:(0,N.hM)(),getPaginationRowModel:(0,N.kW)(),getSortedRowModel:(0,N.h5)(),getFacetedRowModel:(0,N.kQ)(),getFacetedUniqueValues:(0,N.oS)(),onPaginationChange:R,onGlobalFilterChange:h,onColumnFiltersChange:C,manualPagination:!0,pageCount:Math.ceil((Y?.total||0)/z.pageSize)}),el=en.getPageCount();return(0,f.useEffect)(()=>{F(el)},[el,F]),(0,a.jsx)(I.cx,{table:en,columns:s,isLoading:X,isFetching:es,emptyTitle:e("No API Keys Found"),emptyDescription:e("No API keys available. Create your first API key to get started."),skeletonKeyPrefix:"api-keys-skeleton",toolbarProps:{customSearch:(0,a.jsxs)("div",{className:"border-input bg-background focus-within:border-ring focus-within:ring-ring/40 flex h-8 w-full items-center rounded-md border transition-colors focus-within:ring-2 sm:w-auto",children:[(0,a.jsx)(i.vji,{className:"text-muted-foreground ms-2.5 size-3.5 shrink-0"}),(0,a.jsx)(_.p,{placeholder:e("Filter by name..."),"aria-label":e("Filter by name..."),value:en.getState().globalFilter??"",onChange:e=>en.setGlobalFilter(e.target.value),className:"h-full border-0 bg-transparent px-2 shadow-none focus-visible:ring-0 sm:w-40"}),(0,a.jsx)("span",{className:"bg-border h-4 w-px shrink-0"}),(0,a.jsx)(_.p,{placeholder:e("Filter by API key..."),"aria-label":e("Filter by API key..."),value:K,onChange:e=>Q(e.target.value),className:"h-full border-0 bg-transparent px-2 shadow-none focus-visible:ring-0 sm:w-48"})]}),filters:[{columnId:"status",title:e("Status"),options:E.F7,singleSelect:!0},{columnId:"tag",title:e("Management tag"),options:[{label:e("Unassigned"),value:"-"},...O.map(e=>({label:e.tag,value:e.tag,count:e.count}))],singleSelect:!0}],postActions:(0,a.jsx)(G,{})},mobile:(0,a.jsx)(ea,{table:en,isLoading:X}),persistentHorizontalScrollbar:!0,tableClassName:"border-border/70 bg-card w-full max-w-full rounded-md border [&_td]:px-3! [&_th]:px-3! [&_tbody_tr]:border-border/50 [&_tbody_tr]:transition-colors [&_tbody_tr:hover]:bg-muted/25",tableHeaderClassName:"bg-muted/25 sticky top-0 z-10 [&_th]:h-10 [&_th]:text-xs [&_th]:font-medium [&_th]:tracking-wide [&_th]:text-muted-foreground",getRowClassName:e=>et(e.original)?I.JM:void 0,bulkActions:(0,a.jsx)(J,{table:en,tags:O})})}var en=s(34093),el=s(39235),ei=s(38579);let eo=[{title:"Same model",lines:["Always picks","the cheapest group"],icon:i.OJX},{title:"Failure / disconnect",lines:["Detects issues in real time","and switches automatically"],icon:i.RQC},{title:"Capability gap",lines:["e.g. Eco cannot generate images","auto-switches to a stronger group","(such as Enterprise)"],icon:i.Fmf},{title:"Deep reasoning",lines:["When stronger reasoning is needed","auto-switches to","a higher tier group"],icon:i.jy9},{title:"Never interrupted",lines:["Requests switch seamlessly","for a smooth experience"],icon:i.Xx}],ed="Continuous monitoring · light or simple workloads fall back to the best-priced group automatically, saving cost end to end";function ec(e){let{node:t}=e,{t:s}=(0,r.Bd)(),n=t.icon;return(0,a.jsxs)("div",{className:"relative isolate flex min-w-0 flex-1 flex-col items-center gap-2 px-2 py-4 text-center",children:[(0,a.jsx)("span",{"aria-hidden":!0,
1className:"bg-border-strong absolute inset-0 -z-10",style:{clipPath:"polygon(0 0, calc(100% - 22px) 0, calc(100% - 10px) 12px, 100% 12px, 100% 100%, 0 100%)"}}),(0,a.jsx)("span",{"aria-hidden":!0,className:"bg-background absolute inset-px -z-10",style:{clipPath:"polygon(0 0, calc(100% - 21.5px) 0, calc(100% - 9.5px) 11.5px, 100% 11.5px, 100% 100%, 0 100%)"}}),(0,a.jsx)("span",{className:"text-foreground text-sm font-medium",children:s(t.title)}),(0,a.jsx)(n,{className:"text-foreground size-6",strokeWidth:1.5}),(0,a.jsx)("span",{className:"text-muted-foreground text-xs leading-5",children:t.lines.map(e=>(0,a.jsx)("span",{className:"block",children:s(e)},e))})]})}function eu(e){let{vertical:t,className:s}=e;return t?(0,a.jsxs)("svg",{width:"16",height:"26",viewBox:"0 0 16 26",fill:"none",className:(0,o.cn)("mx-auto shrink-0",s),"aria-hidden":"true",children:[(0,a.jsx)("path",{d:"M8 2 V17",className:"smart-flow-dash stroke-primary",strokeWidth:"1.5",strokeLinecap:"round",strokeDasharray:"4 4"}),(0,a.jsx)("path",{d:"M8 24 L4 18 H12 Z",className:"fill-primary"})]}):(0,a.jsxs)("svg",{width:"30",height:"16",viewBox:"0 0 30 16",fill:"none",className:(0,o.cn)("shrink-0 self-center",s),"aria-hidden":"true",children:[(0,a.jsx)("path",{d:"M2 8 H21",className:"smart-flow-dash stroke-primary",strokeWidth:"1.5",strokeLinecap:"round",strokeDasharray:"4 4"}),(0,a.jsx)("path",{d:"M28 8 L22 4 V12 Z",className:"fill-primary"})]})}function em(){let{t:e}=(0,r.Bd)(),[t,s]=(0,f.useState)(!1);return(0,a.jsxs)(ei.Nt,{open:t,onOpenChange:s,className:"bg-card border-border/70 overflow-hidden rounded-lg border",children:[(0,a.jsxs)(ei.R6,{render:(0,a.jsx)("button",{type:"button",className:"hover:bg-muted/40 flex w-full items-center gap-2 px-3 py-2 text-left transition-colors","aria-expanded":t}),children:[(0,a.jsx)(el.z,{size:18}),(0,a.jsxs)("span",{className:"flex min-w-0 flex-1 flex-wrap items-baseline gap-x-2 gap-y-0.5",children:[(0,a.jsx)("span",{className:"text-sm font-medium",children:e("Smart Group · How it works")}),(0,a.jsx)("span",{className:"text-muted-foreground text-xs font-normal",children:e('Pick "Smart Group" for a key to use every model, routed automatically at the best price')})]}),(0,a.jsx)(i.yQN,{className:(0,o.cn)("text-muted-foreground size-4 shrink-0 transition-transform",t&&"rotate-180"),"aria-hidden":"true"})]}),(0,a.jsxs)(ei.Ke,{className:"border-border/70 border-t border-dotted px-3 pt-2.5 pb-3",children:[(0,a.jsxs)("div",{className:"hidden md:block",children:[(0,a.jsx)("div",{className:"flex items-stretch gap-1.5 pt-1",children:eo.map((e,t)=>(0,a.jsxs)("div",{className:"contents",children:[t>0&&(0,a.jsx)(eu,{}),(0,a.jsx)(ec,{node:e})]},e.title))}),(0,a.jsxs)("svg",{viewBox:"0 0 1000 34",fill:"none",preserveAspectRatio:"none",className:"mt-1 h-[34px] w-full","aria-hidden":"true",children:[(0,a.jsx)("path",{d:"M955 4 V16 Q955 28 943 28 L57 28 Q45 28 45 16 V12",className:"smart-flow-dash-reverse stroke-primary",strokeWidth:"1.5",strokeLinecap:"round",strokeDasharray:"5 5",vectorEffect:"non-scaling-stroke"}),(0,a.jsx)("path",{d:"M45 2 L40 12 H50 Z",className:"fill-primary"})]}),(0,a.jsx)("p",{className:"text-muted-foreground -mt-0.5 text-center text-xs",children:e(ed)})]}),(0,a.jsxs)("div",{className:"pt-1 md:hidden",children:[eo.map((e,t)=>(0,a.jsxs)("div",{children:[t>0&&(0,a.jsx)(eu,{vertical:!0}),(0,a.jsx)(ec,{node:e})]},e.title)),(0,a.jsx)("p",{className:"text-muted-foreground mt-3 text-center text-xs",children:e(ed)})]})]})]})}let ex=function(){let{t:e}=(0,r.Bd)();return(0,n.H)(e("API Keys")),(0,a.jsxs)(g.E,{children:[(0,a.jsx)(l.Ni,{children:(0,a.jsx)(l.Ni.Content,{children:(0,a.jsxs)("div",{className:"mx-auto flex w-full max-w-[1920px] flex-col gap-4",children:[(0,a.jsxs)("div",{className:"flex items-center gap-1.5 px-1 text-sm leading-5",children:[(0,a.jsx)("span",{className:"text-text-tertiary",children:e("Connect with us")}),(0,a.jsx)("span",{className:"text-text-tertiary","aria-hidden":"true",children:"/"}),(0,a.jsx)("span",{className:"text-foreground font-semibold",children:e("API Keys")})]}),(0,a.jsxs)("div",{className:"grid items-stretch gap-4 xl:grid-cols-2",children:[(0,a.jsx)(p,{}),(0,a.jsx)(en.h,{})]}),(0,a.jsx)(em,{}),(0,a.jsx)("section",{className:"border-border/70 bg-card rounded-md border p-3 sm:p-4",children:(0,a.jsx)(er,{})})]})})}),(0,a.jsx)(h.i,{})]})}}}]);
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.