1import{b1 as S,b3 as L,b8 as D,w as E,b as k,e as s,o as r,f as n,j as w,g as $,x,F as u,t as p,l as j,m as I,p as f,i as b,n as _,X as T,R as U}from"./NFnIG1Q0.js";const z={class:"min-h-screen bg-slate-950 relative overflow-hidden"},A={class:"relative z-10 max-w-screen-2xl mx-auto px-4 sm:px-8 py-6 sm:py-8"},B={class:"flex items-start justify-between gap-4 select-none"},F={class:"flex items-start gap-3 min-w-0"},O={class:"min-w-0"},X={class:"mt-2 text-xs text-purple-200/80"},q={key:0,class:"mt-16 text-center text-purple-200 animate-pulse"},G={key:1,class:"mt-16 text-center text-red-300"},H={key:2,class:"mt-6 overflow-x-auto rounded-2xl border border-white/10 bg-white/5 backdrop-blur-sm shadow-xl shadow-indigo-500/10"},Z={class:"w-full border-collapse text-sm"},J={class:"bg-white/5"},K={class:"sticky left-0 z-10 bg-[#101020] group-hover:bg-[#181330] px-4 py-2.5 border-b border-r border-white/10"},Q=["onClick","title"],W=["src","alt"],Y={class:"font-semibold text-white truncate hover:text-purple-300 transition-colors"},ee={class:"text-[11px] opacity-75"},te={key:1,class:"text-gray-600"},ne={key:3,class:"mt-16 text-center text-purple-200"},oe={key:4,class:"mt-4 flex flex-wrap items-center gap-x-5 gap-y-2 text-xs text-purple-200/70"},ae=S({__name:"ranks",async setup(se){let d,y;L({title:"Provider Monthly Rankings â VoiceRankings",ogTitle:"Provider Monthly Rankings â VoiceRankings",description:"Month-by-month play rankings for every voice provider on VoiceRankings, from September 2025 to today.",ogDescription:"Month-by-month play rankings for every voice provider on VoiceRankings"});const R=new Map(D.map(o=>[o.value.toLowerCase(),o.voice_service_alias]));function C(o,e){const t=(o||R.get(e.toLowerCase())||e).toLowerCase().replace(/^https?:\/\//,"").split("/")[0];return`/api/v1/ranks/provider-favicon?host=${encodeURIComponent(t||"google.com")}`}const{data:v,pending:V,error:P}=([d,y]=E(async()=>U("provider-monthly-rankings",async()=>(await $fetch("/api/v1/ranks/get-provider-monthly-rankings")).data)),d=await d,y(),d),i=k(()=>v.value?.months??[]),g=k(()=>{const o=v.value?.providers;return o?Object.values(o).sort((e,l)=>{const t=a=>{for(let m=a.monthlyRank.length-1;m>=0;m--)if(a.monthlyRank[m]!=null)return a.monthlyRank[m];return Number.MAX_SAFE_INTEGER},c=t(e)-t(l);return c!==0?c:e.name.localeCompare(l.name)}):[]});function h(o){const[e,l]=o.split("-").map(Number);return new Date(Date.UTC(e,l-1,1)).toLocaleDateString("en-US",{timeZone:"UTC",month:"short",year:"numeric"})}function M(o){return o>=1e3?`${(o/1e3).toFixed(1).replace(/\.0$/,"")}k`:String(o)}function N(o){window.open(`/voice/${encodeURIComponent(o)}`,"_blank","noopener")}return(o,e)=>{const l=I;return r(),s("div",z,[e[6]||(e[6]=n("div",{class:"absolute inset-0 bg-gradient-to-br from-slate-950 via-indigo-950/40 to-slate-950"},null,-1)),n("div",A,[n("div",B,[n("div",F,[e[2]||(e[2]=n("img",{src:"https://cdn.soundranks.com/images/voicerankings-logo.png",alt:"VoiceRankings",class:"w-7 h-7 object-contain shrink-0 mt-0.5"},null,-1)),n("div",O,[e[1]||(e[1]=n("h1",{class:"text-xl font-bold tracking-tight text-white uppercase"},"VoiceRankings · Monthly Provider Rankings ð",-1)),n("div",X,[e[0]||(e[0]=x(" Plays per month · all qualifying providers ",-1)),i.value.length?(r(),s(u,{key:0},[x(" · "+p(h(i.value[0]))+" â "+p(h(i.value[i.value.length-1])),1)],64)):w("",!0)])])]),$(l,{to:"/voices/race",class:"shrink-0 text-xs font-semibold px-3 py-2 rounded-lg bg-white/10 text-purple-100 hover:bg-white/20 transition-colors inline-flex items-center gap-1.5"},{default:j(()=>[...e[3]||(e[3]=[n("svg",{class:"w-3.5 h-3.5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24","stroke-width":"2.5"},[n("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M19 12H5m0 0l6 6m-6-6l6-6"})],-1),x(" Back to race ",-1)])]),_:1})]),f(V)?(r(),s("div",q,"Loading monthly rankings...")):f(P)?(r(),s("div",G," Couldn't load monthly rankings. Please try again later. ")):g.value.length?(r(),s("div",H,[n("table",Z,[n("thead",null,[n("tr",J,[e[4]||(e[4]=n("th",{class:"sticky left-0 z-20 bg-[#14142b] px-4 py-3 text-left text-xs font-bold uppercase tracking-wider text-purple-200 border-b border-r border-white/10 min-w-56"}," Provider ",-1)),(r(!0),s(u,null,b(i.value,(t,c)=>(r(),s("th",{key:t,class:_(["px-3 py-3 text-center text-xs font-bold uppercase tracking-wider whitespace-nowrap border-b border-white/10",c===i.value.length-1?"text-purple-200":"text-purple-300/80"])},p(h(t)),3))),128))])]),n("tbody",null,[(r(!0),s(u,null,b(g.value,t=>
1(r(),s("tr",{key:t.name,class:"group hover:bg-purple-500/5 transition-colors"},[n("td",K,[n("button",{onClick:c=>N(t.name),class:"flex items-center gap-2.5 max-w-full text-left",title:`Open ${t.name}`},[n("img",{src:C(t.alias,t.name),alt:t.name,class:"w-5 h-5 rounded object-contain shrink-0 bg-white/10",loading:"lazy"},null,8,W),n("span",Y,p(t.name),1)],8,Q)]),(r(!0),s(u,null,b(i.value,(c,a)=>(r(),s("td",{key:c,class:"px-3 py-2.5 text-center border-b border-white/5 whitespace-nowrap tabular-nums"},[t.monthlyPlays[a]>0?(r(),s("span",{key:0,class:_(["inline-flex items-center gap-1 rounded-md px-1.5 py-0.5 text-xs font-semibold ring-1",t.monthlyRank[a]===1?"bg-gradient-to-r from-amber-400/25 to-yellow-200/25 text-amber-200 ring-amber-300/40":t.monthlyRank[a]<=3?"bg-purple-500/15 text-purple-100 ring-purple-400/30":t.monthlyRank[a]<=5?"bg-indigo-500/15 text-indigo-100 ring-indigo-400/30":"bg-white/10 text-gray-200 ring-white/10"])},[n("span",null,"#"+p(t.monthlyRank[a]),1),n("span",ee,"· "+p(M(t.monthlyPlays[a])),1)],2)):(r(),s("span",te,"â"))]))),128))]))),128))])])])):(r(),s("div",ne,"No ranking data available yet.")),g.value.length?(r(),s("div",oe,[...e[5]||(e[5]=[T('<span class="inline-flex items-center gap-1.5"><span class="inline-block h-2.5 w-2.5 rounded-sm bg-gradient-to-r from-amber-400/60 to-yellow-200/60"></span> #1 that month</span><span class="inline-flex items-center gap-1.5"><span class="inline-block h-2.5 w-2.5 rounded-sm bg-purple-500/40 ring-1 ring-purple-400/30"></span> top 3</span><span class="inline-flex items-center gap-1.5"><span class="inline-block h-2.5 w-2.5 rounded-sm bg-indigo-500/40 ring-1 ring-indigo-400/30"></span> top 5</span><span>Cell shows rank · plays for the month. Click a provider to open its page.</span>',4)])])):w("",!0)])])}}});export{ae 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.