PageSourceSearch

https://nickz.ai/assets/js/index-B8OWTSjr.js

js nickz.ai collected 2026-10-05 14:20:37 UTC 13,050 bytes, 1 lines download raw bytes

1import{u as e,r as t,j as s}from"./vendor-react-DejgYtBM.js";import{f as i,l as a}from"./vendor-semi-D8d7bTtM.js";import{u as l,a as o,S as n,A as r,a9 as d,e as c,p as m,k as x,j as h,l as g,aa as v,i as b,o as f,ab as p,I as u,d as y,n as j,m as k,h as w,f as F,b as N}from"./index-BeIIFw6E.js";import{S as z,O as T,W as E,P as S,a as M,M as C,C as W}from"./vendor-3d-DLEs90f1.js";import{a0 as _,a4 as I,a5 as A,a6 as L,Q as D,a7 as K,a8 as $,a9 as R,aa as U,f as P,ab as q,ac as B}from"./vendor-icons-EJvJ5X-w.js";import{I as O}from"./index-BXaa1F4t.js";import{V as H}from"./vendor-charts-CKochBGt.js";import"./vendor-motion-Chfy_MiU.js";const{Title:V,Text:G}=i,Q=e=>e>=1e12?(e/1e12).toFixed(1)+"T":e>=1e9?(e/1e9).toFixed(1)+"B":e>=1e6?(e/1e6).toFixed(1)+"M":e>=1e3?(e/1e3).toFixed(1)+"K":e.toLocaleString(),Z={OpenAI:N,Anthropic:F,Google:w,DeepSeek:k,Alibaba:j,Zhipu:y,Moonshot:u,Doubao:p,xAI:O,Midjourney:f,Suno:b,Kuaishou:v,iFlytek:g,Minimax:h,Baidu:x,Tencent:m,Cohere:c,Mistral:d},J={chat:{key:"chat",labelKey:"对话",icon:P,color:"#6366f1",gradientFrom:"#818cf8",gradientTo:"#6366f1"},image:{key:"image",labelKey:"绘图",icon:U,color:"#ec4899",gradientFrom:"#f472b6",gradientTo:"#ec4899"},video:{key:"video",labelKey:"视频",icon:R,color:"#8b5cf6",gradientFrom:"#a78bfa",gradientTo:"#8b5cf6"},music:{key:"music",labelKey:"音乐",icon:$,color:"#10b981",gradientFrom:"#34d399",gradientTo:"#10b981"},other:{key:"other",labelKey:"其他",icon:K,color:"#8b5cf6",gradientFrom:"#a78bfa",gradientTo:"#8b5cf6"}},X=[{key:"1d",label:"一天"},{key:"7d",label:"一周"},{key:"30d",label:"一个月"}],Y=["bg-gradient-to-br from-yellow-400 to-amber-500 text-white","bg-gradient-to-br from-gray-300 to-gray-400 text-white","bg-gradient-to-br from-amber-600 to-amber-700 text-white"],ee=({rank:e})=>s.jsx("div",{className:`w-7 h-7 rounded-lg flex items-center justify-center text-xs font-bold flex-shrink-0 ${Y[e-1]||"bg-gray-100 text-gray-500"}`,children:e}),te=({category:e,isMobile:i})=>{const{models:a,color:l,gradientFrom:o}=e,n=t.useMemo(()=>a.slice(0,15).map(e=>({model:e.name,calls:e.calls,tokens:e.tokens})),[a]),r=n.some(e=>e.tokens>0),d=t.useMemo(()=>{const e=[{id:"barSeries",type:"bar",dataId:"chartData",xField:"model",yField:"calls",seriesField:"callsLabel",barWidth:"40%",bar:{style:{cornerRadius:[4,4,0,0],fill:l}}}];r&&e.push({id:"lineSeries",type:"line",dataId:"chartData",xField:"model",yField:"tokens",seriesField:"tokensLabel",point:{visible:!0,style:{fill:"#ffffff",stroke:l,lineWidth:2,size:6}},line:{style:{stroke:l,lineWidth:2}}});const t=[{orient:"bottom",type:"band",sampling:!1,label:{style:{fontSize:i?8:10,fill:"#6b7280",angle:-45},formatMethod:e=>{const t=i?10:16;return e.length>t?e.slice(0,t-2)+"..":e}},tick:{visible:!1},grid:{visible:!1},domainLine:{style:{stroke:"#E8F0FE"}}},{orient:"left",type:"linear",seriesIndex:[0],label:{style:{fontSize:10,fill:"#9ca3af"},formatMethod:e=>Q(e)},grid:{style:{stroke:"#E8F0FE",lineWidth:1}},domainLine:{visible:!1},tick:{visible:!1},title:{visible:!0,text:"调用次数",style:{fontSize:11,fill:"#6b7280",fontWeight:"normal"}}}];r&&t.push({orient:"right",type:"linear",seriesIndex:[1],label:{style:{fontSize:10,fill:"#9ca3af"},formatMethod:e=>Q(e)},grid:{visible:!1},domainLine:{visible:!1},tick:{visible:!1},title:{visible:!0,text:"Token使用量",style:{fontSize:11,fill:"#6b7280",fontWeight:"normal"}}});const s=[{label:"调用次数",shape:{fill:l,symbolType:"square"}}];return r&&s.push({label:"Token使用量",shape:{fill:l,symbolType:"circle"}}),{type:"common",data:[{id:"chartData",values:n.map(e=>({...e,callsLabel:"调用次数",tokensLabel:"Token使用量"}))}],series:e,axes:t,legends:{visible:!0,orient:"top",position:"middle",padding:{bottom:12},item:{shape:{style:{size:10}},label:{style:{fontSize:12,fill:"#6b7280"}}},data:s},crosshair:{xField:{visible:!0,line:{type:"line",style:{stroke:"#6366f1",lineWidth:1,opacity:.5,lineDash:[4,4]}}},yField:{visible:!0,line:{type:"line",style:{stroke:"#6366f1",lineWidth:1,opacity:.5,lineDash:[4,4]}}}},tooltip:{mark:{content:[{key:()=>"调用次数",value:e=>Q(e?.calls||0)},...r?[{key:()=>"Token使用量",value:e=>Q(e?.tokens||0)}]:[]]}},padding:{left:8,right:8,top:8,bottom:8},height:i?260:320}},[n,l,o,r,i]);return s.jsx(H,{spec:d})},se=({model:e,category:t,isMobile:i,navigate:a})=>{const l=t.models[0]?.calls||1,o=e.calls/l*100;return s.jsx("div",{className:"group rounded-xl hover:shadow-md transition-all duration-300 overflow-hidden cursor-pointer",style:{background:"#FFFFFF",border:"1px solid #E0EAFC"},children:s.jsxs("div",{className:"p-3.5 md:p-4",children:[s.jsxs("div",{className:"flex items-center gap-3",children:[s.jsx(ee,{rank:e.rank}),s.jsx("div",{className:"w-7 h-7 flex-shrink-0 flex items-center justify-center",children:(n=e.Icon,n?n.Color?s.jsx(n.Color,{size:22}):s.jsx(n,{size:22}):null)}),s.jsxs("div",{className:"flex-1 min-w-0",children:[s.jsx("div",{className:"font-semibold text-gray-900 text-sm truncate group-hover:text-blue-600 transition-colors",children:e.name}),s.jsx("div",{className:"text-xs text-gray-400 mt-0.5",children:e.provider})]}),s.jsxs("div",{className:"text-right flex-shrink-0",children:[s.jsx("div",{className:"text-sm font-bold text-gray-800 tabular-nums",children:Q(e.calls)}),0!==e.growth&&s.jsxs("div",{className:"flex items-center justify-end gap-0.5 text-xs font-medium "+(e.growth>0?"text-green-500":"text-red-500"),children:[e.growth>0?s.jsx(q,{size:10}):s.jsx(B,{size:10}),s.jsxs("span",{children:[e.growth>0?"+":"",e.growth,"%"]})]})]})]}),s.jsxs("div",{className:"mt-3 flex items-center gap-2",children:[s.jsx("div",{className:"flex-1 h-2 rounded-full overflow-hidden",style:{background:"#E8F0FE"},children:s.jsx("div",{className:"h-full rounded-full transition-all duration-700 ease-out",style:{width:`${o}%`,background:`linear-gradient(90deg, ${t.gradientFrom}, ${t.gradientTo})`}})}),s.jsxs("span",{className:"text-xs font-semibold tabular-nums w-12 text-right",style:{color:t.color},children:[e.pct,"%"]})]})]})});var n},ie=({category:e,isMobile:i,t:a,navigate:l})=>{const[o,n]=t.useState(!1),r=e.icon,d=i?6:15,c=o?e.models:e.models.slice(0,d);return s.jsxs("section",{className:"mb-10 md:mb-14",children:[s.jsxs("div",{className:"flex items-center justify-between mb-5",children:[s.jsxs("div",{className:"flex items-center gap-3",children:[s.jsx("div",{className:"w-9 h-9 rounded-xl flex items-center justify-center",style:{background:`linear-gradient(135deg, ${e.gradientFrom}, ${e.gradientTo})`},children:s.jsx(r,{size:18,className:"text-white"})}),s.jsx("div",{children:s.jsx("h2",{className:"text-lg font-bold text-gray-900",children:a(e.labelKey)})})]}),s.jsxs("div",{className:"text-right",children:[s.jsx("div",{className:"text-sm font-bold text-gray-800",children:e.totalCalls}),0!==e.growth&&s.jsxs("div",{className:"flex items-center justify-end gap-1 text-xs font-medium "+(e.growth>0?"text-green-500":"text-red-500"),children:[e.growth>0?s.jsx(I,{size:11}):s.jsx(A,{size:11}),s.jsxs("span",{children:[e.growth>0?"+":"",e.growth,"%"]})]})]})]}),s.jsx("div",{className:"rounded-2xl shadow-sm p-3 md:p-5 mb-5",style:{background:"#FFFFFF",border:"1px solid #E0EAFC"},children:s.jsx(te,{category:e,isMobile:i})}),s.jsxs("div",{className:"flex items-center gap-2 mb-4",children:[s.jsx(L,{size:16,className:"text-amber-500"}),s.jsx("span",{className:"text-sm font-bold text-gray-700",children:a("热门排行")})]}),s.jsx("div",{className:"grid gap-3 "+(i?"grid-cols-1":"grid-cols-2 lg:grid-cols-4"),children:c.map(t=>s.jsx(se,{model:t,category:e,isMobile:i,navigate:l},t.name))}),e.models.length>d&&s.jsx("div",{className:"flex justify-center mt-5",children:s.jsxs("button",{onClick:()=>n(!o),className:"flex items-center gap-1 px-5 py-2 rounded-full text-sm text-gray-500 hover:text-gray-700 transition-all duration-200",style:{background:"#E0EAFC",border:"1px solid #D0DFFB"},children:[a(o?"收起":"查看更多"),s.jsx(D,{size:14,className:"transition-transform duration-200 "+(o?"rotate-90":"")})]})})]})},ae=({isMobile:e})=>{const i=t.useRef(null);return t.useEffect(()=>{const t=i.current;if(!t)return;let s,a,l,o,n;try{const i=new z,r=new T(-1,1,1,-1,0,10);r.position.z=1,s=new E({antialias:!1,alpha:!1}),s.setPixelRatio(Math.min(window.devicePixelRatio,2)),s.setSize(t.clientWidth,t.clientHeight),s.domElement.style.display="block",t.appendChild(s.domElement),a=new S(2,2,e?64:128,e?32:64),l=new M({uniforms:{uTime:{value:0}},vertexShader:"\n          uniform float uTime;
1\n          varying vec2 vUv;\n          varying float vWave;\n          void main() {\n            vUv = uv;\n            float wave = sin(position.x * 3.0 + uTime * 0.8) * 0.03\n                       + sin(position.y * 4.0 + uTime * 0.6) * 0.02\n                       + sin((position.x + position.y) * 2.0 + uTime) * 0.025;\n            vWave = wave;\n            vec3 pos = position;\n            pos.z += wave;\n            gl_Position = projectionMatrix * modelViewMatrix * vec4(pos, 1.0);\n          }\n        ",fragmentShader:"\n          uniform float uTime;\n          varying vec2 vUv;\n          varying float vWave;\n          void main() {\n            vec3 c1 = vec3(0.357, 0.553, 0.937);\n            vec3 c2 = vec3(0.486, 0.424, 0.941);\n            vec3 c3 = vec3(0.659, 0.333, 0.969);\n            vec3 c4 = vec3(0.753, 0.518, 0.988);\n            float t = vUv.x * 0.7 + vUv.y * 0.3 + vWave * 3.0 + sin(uTime * 0.2) * 0.15;\n            t = fract(t);\n            vec3 color = mix(c1, c2, smoothstep(0.0, 0.33, t));\n            color = mix(color, c3, smoothstep(0.33, 0.66, t));\n            color = mix(color, c4, smoothstep(0.66, 1.0, t));\n            color += vWave * 1.5;\n            gl_FragColor = vec4(color, 1.0);\n          }\n        "}),i.add(new C(a,l));const d=new W;let c=!0;o=new IntersectionObserver(([e])=>{c=e.isIntersecting},{threshold:0}),o.observe(t);let m=0;const x=t=>{n=requestAnimationFrame(x),c&&(e&&t-m<33||(m=t,l.uniforms.uTime.value=d.getElapsedTime(),s.render(i,r)))};n=requestAnimationFrame(x);const h=()=>{s&&t&&s.setSize(t.clientWidth,t.clientHeight)};return window.addEventListener("resize",h),()=>{window.removeEventListener("resize",h),o.disconnect(),cancelAnimationFrame(n),a.dispose(),l.dispose(),s.dispose(),t.contains(s.domElement)&&t.removeChild(s.domElement)}}catch(r){a&&a.dispose(),l&&l.dispose(),s&&(s.dispose(),t.contains(s.domElement)&&t.removeChild(s.domElement))}},[e]),s.jsx("div",{ref:i,className:"absolute inset-0"})},le=()=>{const{t:d}=l(),c=e(),m=o(),[x]=t.useContext(n),h=x?.status?.ranking_enabled,[g,v]=t.useState("7d"),[b,f]=t.useState([]),[p,u]=t.useState({total_calls:0,total_tokens:0,active_models:0}),[y,j]=t.useState(!0);return t.useEffect(()=>{h?(async()=>{j(!0);try{const t=await r.get(`/api/ranking?limit=50&period=${g}`);if(t.data.success&&t.data.data){const s=t.data.data;u(s.summary||{total_calls:0,total_tokens:0,active_models:0}),f((e=s.categories)?e.map(e=>({...J[e.category]||J.other,totalCalls:Q(e.total_calls),totalCallsRaw:e.total_calls,growth:e.growth,models:(e.models||[]).map(e=>({rank:e.rank,name:e.model_name,provider:e.provider||"",calls:e.calls,tokens:e.tokens,pct:e.pct,growth:e.growth,Icon:Z[e.provider]||null}))})).filter(e=>e.models.length>0):[])}}catch(t){}finally{j(!1)}var e})():j(!1)},[h,g]),h?s.jsxs("div",{className:"min-h-screen",style:{background:"#F1F7FF"},children:[s.jsxs("div",{className:"relative overflow-hidden",children:[s.jsx(ae,{isMobile:m}),s.jsxs("div",{className:"relative z-10 max-w-[1200px] mx-auto px-4 md:px-6 pt-10 md:pt-16 pb-8 md:pb-14 text-center",children:[s.jsxs("div",{className:"inline-flex items-center gap-2 px-4 py-1.5 rounded-full bg-white/15 backdrop-blur-sm border border-white/20 mb-5",children:[s.jsx(_,{size:14,className:"text-amber-300"}),s.jsx("span",{className:"text-sm font-medium text-white/90",children:d("热门模型排行")})]}),s.jsx("h1",{className:"text-3xl md:text-5xl font-bold text-white mb-3 tracking-tight",children:d("热门模型排行")}),s.jsxs("p",{className:"text-white/70 text-sm md:text-base max-w-lg mx-auto mb-8",children:[p.active_models," ",d("个模型已接入"),",",Q(p.total_calls)," ",d("次调用")]}),s.jsx("div",{className:"inline-flex items-center gap-1 p-1 rounded-xl bg-white/15 backdrop-blur-sm border border-white/20",children:X.map(e=>s.jsx("button",{onClick:()=>v(e.key),className:"px-4 md:px-5 py-2 rounded-lg text-sm font-medium transition-all duration-200 "+(g===e.key?"bg-white text-gray-800 shadow-sm":"text-white/80 hover:text-white hover:bg-white/10"),children:d(e.label)},e.key))})]})]}),s.jsx("div",{className:"max-w-[1200px] mx-auto px-4 md:px-6 py-8 md:py-12",children:y?s.jsx("div",{className:"flex justify-center py-20",children:s.jsx(a,{size:"large"})}):b.map(e=>s.jsx(ie,{category:e,isMobile:m,t:d,navigate:c},e.key))})]}):s.jsx("div",{className:"min-h-screen flex items-center justify-center",style:{background:"#F1F7FF"},children:s.jsx(i.Text,{type:"tertiary",style:{fontSize:16},children:d("排行榜功能暂未开放")})})};export{le 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.