1import{_ as te,a as se,b as ie,c as ne}from"./Bbj_xyaX.js";import{a9 as oe,I as re,br as ae,y as le,$ as C,Q as p,an as de,U as S,aD as a,W as o,aV as s,aT as r,X as t,aK as n,bj as ce,bl as z,V as _,bn as u,bI as ue,bk as me,aU as f,bm as fe,Y as A,bd as L,bG as ge}from"./CZO_kbxe.js";import{_ as pe}from"./ak1-y-9y.js";import{_ as _e}from"./Cgz1c-3U.js";import{u as xe}from"./aluA_p2L.js";import{u as ve}from"./6zVar_9p.js";import{u as he}from"./CmStpy4T.js";import"./DJtKO38Q.js";import"./DL1TxsSW.js";import"./BGGUAEei.js";import"./ywOWvMHg.js";import"./DHC8vXKX.js";import"./C5vBVshv.js";import"./DMHyAxDi.js";import"./C1R5UMyj.js";import"./DijbpKhM.js";const be={class:"space-y-6"},ye={key:0,class:"flex items-center justify-center py-12"},ke={class:"grid grid-cols-2 gap-4 max-w-sm"},Ce={class:"rounded-2xl bg-elevated/50 border border-default p-5"},ze={class:"flex items-center gap-3 mb-3"},we={class:"flex items-center justify-center size-8 rounded-lg bg-primary-500/10 ring-1 ring-inset ring-primary-500/25"},$e={class:"text-2xl font-bold text-highlighted"},Se={class:"rounded-2xl bg-elevated/50 border border-default p-5"},Re={class:"flex items-center justify-between mb-3"},Ue={class:"flex items-center justify-center size-8 rounded-lg bg-elevated/50 ring-1 ring-inset ring-accented"},Ie={class:"text-2xl font-bold text-highlighted"},Fe={class:"text-xs text-dimmed uppercase tracking-wide mt-1"},je={key:0,class:"flex items-center gap-2 rounded-lg bg-elevated/50 border border-default px-4 py-3"},Ne={class:"text-sm text-dimmed"},Le={key:1,class:"flex items-stretch gap-2"},qe={class:"flex items-center gap-1 p-1 rounded-xl bg-elevated/50 border border-default w-fit"},Be={class:"text-xs text-dimmed"},De={key:0,class:"flex flex-col items-center gap-3 py-12 text-center"},Ve={key:1,class:"grid gap-3"},Te={class:"size-10 rounded-full overflow-hidden bg-elevated/50 ring-1 ring-accented shrink-0"},Me=["src","alt"],Pe={key:1,class:"size-full flex items-center justify-center text-dimmed"},Ae={class:"flex-1 min-w-0"},Ee={class:"text-sm font-medium text-highlighted truncate"},Oe={class:"flex items-center gap-1.5"},Ye={key:0},Ge={class:"grid gap-3"},Ke={class:"size-10 rounded-full overflow-hidden bg-elevated/50 ring-1 ring-accented"},Qe=["src","alt"],We={key:1,class:"size-full flex items-center justify-center text-dimmed"},Xe={class:"text-sm font-medium text-highlighted truncate"},He={class:"flex items-center gap-1.5"},Je={key:1},Ze={class:"grid gap-3"},et={class:"size-10 rounded-full overflow-hidden bg-elevated/50 ring-1 ring-accented"},tt=["src","alt"],st={key:1,class:"size-full flex items-center justify-center text-dimmed"},it={class:"text-sm font-medium text-highlighted truncate"},nt={key:2,class:"flex flex-col items-center gap-3 py-12 text-center"},ot={key:2,class:"flex items-center gap-2 rounded-lg bg-amber-500/10 border border-amber-500/20 px-4 py-3"},rt={class:"text-xs tint-amber"},zt=oe({__name:"friends",setup(at){re({title:"Friends",description:"Manage your friends and friend requests"});const l=xe(),c=ve(),q=he(),h=ae(),E=le(),B=C(!0),w=C(E.query.tab==="requests"?"requests":"friends"),R=C(!1),g=C(null),$=C(null),D=C(null),V=p(()=>c.friends),U=p(()=>c.incomingRequests),I=p(()=>c.outgoingRequests),x=p(()=>l.getPlanLimit("friends")),T=p(()=>x.value===1/0?"â":String(x.value)),b=p(()=>c.friendCount),O=p(()=>b.value>=x.value),F=p(()=>c.incomingCount),j=p(()=>c.outgoingCount);function Y(d){$.value=d.username}async function G(d){if(!(!d||!l.userId)){R.value=!0;try{await c.sendRequest(l.userId,d),h.add({title:"Friend request sent!",description:`Request sent to @${d}`,icon:"i-lucide-user-plus",color:"success"}),$.value=null,D.value?.clearSelection()}catch(e){h.add({title:"Could not send request",description:e.data?.message||"Something went wrong",icon:"i-lucide-x",color:"error"})}finally{R.value=!1}}}async function K(d){if(l.userId){g.value=d;try{await c.acceptRequest(l.userId,d),q.fetchUnreadCount(l.userId),h.add({title:"Friend request accepted!",icon:"i-lucide-check",color:"success"})}catch(e){h.add({title:"Failed to accept",description:e.data?.message,icon:"i-lucide-x",color:"error"})}finally{g.value=null}}}async function Q(d){if(l.userId){g.value=d;try{await c.removeFriend(l.userId,d),h.add({title:"Friend removed",icon:"i-lucide-user-minus",color:"success"})}catch(e){h.add({title:"Failed to remove",description:e.data?.message,icon:"i-lucide-x",color:"error"})}finally{g.value=null}}}
1async function M(d){if(l.userId){g.value=d;try{await c.declineOrCancel(l.userId,d),q.fetchUnreadCount(l.userId)}catch{}finally{g.value=null}}}return de(async()=>{l.userId&&await Promise.all([c.fetchFriends(l.userId,!0),c.fetchRequests(l.userId)]),B.value=!1}),(d,e)=>{const W=ne,m=ce,X=ge,H=ie,J=se,v=me,y=ue,k=fe,Z=pe,P=_e,ee=te;return o(),S(ee,{id:"friends"},{header:a(()=>[n(J,null,{leading:a(()=>[n(W)]),title:a(()=>[n(m,{name:"i-lucide-users",class:"size-5 text-primary-400"}),e[5]||(e[5]=s("span",null,"Friends",-1))]),right:a(()=>[n(X),n(H)]),_:1})]),body:a(()=>[s("div",be,[t(B)?(o(),r("div",ye,[n(m,{name:"i-lucide-loader-2",class:"size-6 animate-spin text-muted"})])):(o(),r(z,{key:1},[s("div",ke,[s("div",Ce,[s("div",ze,[s("div",we,[n(m,{name:"i-lucide-users",class:"size-4 text-primary-400"})])]),s("span",$e,u(t(b)),1),e[6]||(e[6]=s("p",{class:"text-xs text-dimmed uppercase tracking-wide mt-1"}," Friends ",-1))]),s("div",Se,[s("div",Re,[s("div",Ue,[n(m,{name:"i-lucide-gauge",class:"size-4 text-dimmed"})]),t(l).isElite?_("",!0):(o(),S(y,{key:0,text:"Upgrade for a higher friend limit"},{default:a(()=>[n(v,{icon:"i-lucide-arrow-up-right",size:"xs",color:"primary",variant:"ghost",to:"/dashboard/settings/billing"})]),_:1}))]),s("span",Ie,u(t(T)),1),s("p",Fe,[e[7]||(e[7]=f(" Limit ",-1)),t(l).isElite?_("",!0):(o(),r("span",{key:0,class:"text-primary-400/70 normal-case tracking-normal cursor-pointer hover:text-primary-300",onClick:e[0]||(e[0]=i=>d.$router.push("/dashboard/settings/billing"))}," · Upgrade "))])])]),s("div",null,[t(O)?(o(),r("div",je,[n(m,{name:"i-lucide-lock",class:"size-4 text-dimmed shrink-0"}),s("p",Ne,[f(" Friend limit reached ("+u(t(x))+"). ",1),n(k,{to:"/dashboard/settings/billing",class:"text-primary-400 underline underline-offset-2 hover:text-primary-300"},{default:a(()=>[...e[8]||(e[8]=[f(" Upgrade ",-1)])]),_:1}),e[9]||(e[9]=f(" to add more. ",-1))])])):(o(),r("div",Le,[n(Z,{ref_key:"characterSearchRef",ref:D,placeholder:"Search for a username to add...",class:"flex-1",onSelect:Y,onClear:e[1]||(e[1]=i=>$.value=null)},null,512),t($)?(o(),S(v,{key:0,icon:"i-lucide-user-plus",label:"Send Request",color:"primary",class:"self-stretch",loading:t(R),onClick:e[2]||(e[2]=i=>G(t($)))},null,8,["loading"])):_("",!0)]))]),s("div",qe,[s("button",{class:A(["px-4 py-2 rounded-lg text-sm font-medium transition-all duration-200 flex items-center gap-2",t(w)==="friends"?"bg-elevated text-highlighted shadow-sm":"text-muted hover:text-toned"]),onClick:e[3]||(e[3]=i=>w.value="friends")},[e[10]||(e[10]=f(" Friends ",-1)),s("span",Be,u(t(b))+"/"+u(t(T)),1)],2),s("button",{class:A(["px-4 py-2 rounded-lg text-sm font-medium transition-all duration-200 flex items-center gap-2",t(w)==="requests"?"bg-elevated text-highlighted shadow-sm":"text-muted hover:text-toned"]),onClick:e[4]||(e[4]=i=>w.value="requests")},[e[11]||(e[11]=f(" Requests ",-1)),t(F)>0?(o(),S(y,{key:0,text:`${t(F)} incoming`},{default:a(()=>[n(P,{color:"primary",variant:"solid",size:"xs",icon:"i-lucide-arrow-down",class:"gap-0.5"},{default:a(()=>[f(u(t(F)),1)]),_:1})]),_:1},8,["text"])):_("",!0),t(j)>0?(o(),S(y,{key:1,text:`${t(j)} outgoing`},{default:a(()=>[n(P,{color:"neutral",variant:"subtle",size:"xs",icon:"i-lucide-arrow-up",class:"gap-0.5"},{default:a(()=>[f(u(t(j)),1)]),_:1})]),_:1},8,["text"])):_("",!0)],2)]),t(w)==="friends"?(o(),r(z,{key:0},[t(V).length===0?(o(),r("div",De,[n(m,{name:"i-lucide-users",class:"size-12 text-dimmed"}),e[12]||(e[12]=s("p",{class:"text-sm text-dimmed"}," No friends yet. Search for a username above to send a friend request. ",-1))])):(o(),r("div",Ve,[(o(!0),r(z,null,L(t(V),i=>(o(),r("div",{key:i.friendship_id,class:"flex items-center gap-3 rounded-xl bg-elevated/50 border border-default p-4"},[s("div",Te,[i.avatar_url?(o(),r("img",{key:0,src:i.avatar_url,alt:i.username,class:"size-full object-cover"},null,8,Me)):(o(),r("div",Pe,[n(m,{name:"i-lucide-user",class:"size-5"})]))]),s("div",Ae,[s("p",Ee," @"+u(i.username),1)]),s("div",Oe,[n(y,{text:"View profile"},{default:a(()=>[n(v,{icon:"i-lucide-external-link",size:"xs",color:"neutral",variant:"ghost",to:`/${i.username}`,target:"_blank"},null,8,["to"])]),_:2},1024),n(y,{text:"Unfriend"},{default:a(()=>[n(v,{icon:"i-lucide-user-minus",size:"xs",color:"error",variant:"ghost",loading:t(g)===i.friendship_id,onClick:N=>Q(i.friendship_id)},null,8,["loading","onClick"])]),_:2},1024)])]))),128))]))],64)):(o(),r(z,{key:1},[t(U).length>0?(o(),r("div",Ye,[e[13]||(e[13]=s("h3",{class:"text-xs font-medium text-dimmed uppercase tracking-wider mb-3"}," Incoming Requests ",-1)),s("div",Ge,[(o(!0),r(z,null,L(t(U),i=>(o(),r("div",{key:i.friendship_id,class:"flex items-center gap-3 rounded-xl bg-elevated/50 border border-default p-4"},[n(k,{to:`/${i.username}`,class:"shrink-0"},{default:a(()=>[s("div",Ke,[i.avatar_url?(o(),r("img",{key:0,src:i.avatar_url,alt:i.username,class:"size-full object-cover"},null,8,Qe)):(o(),r("div",We,[n(m,{name:"i-lucide-user",class:"size-5"})]))])]),_:2},1032,["to"]),n(k,{to:`/${i.username}`,class:"flex-1 min-w-0"},{default:a(()=>[s("p",Xe," @"+u(i.username),1)]),_:2},1032,["to"]),s("div",He,[n(v,{icon:"i-lucide-check",size:"xs",color:"success",variant:"soft",label:"Accept",loading:t(g)===i.friendship_id,onClick:N=>K(i.friendship_id)},null,8,["loading","onClick"]),n(y,{text:"Decline request"},{default:a(()=>[n(v,{icon:"i-lucide-x",size:"xs",color:"error",variant:"ghost",loading:t(g)===i.friendship_id,onClick:N=>M(i.friendship_id)},null,8,["loading","onClick"])]),_:2},1024)])]))),128))])])):_("",!0),t(I).length>0?(o(),r("div",Je,[e[15]||(e[15]=s("h3",{class:"text-xs font-medium text-dimmed uppercase tracking-wider mb-3"}," Outgoing Requests ",-1)),s("div",Ze,[(o(!0),r(z,null,L(t(I),i=>(o(),r("div",{key:i.friendship_id,class:"flex items-center gap-3 rounded-xl bg-elevated/50 border border-default p-4"},[n(k,{to:`/${i.username}`,class:"shrink-0"},{default:a(()=>[s("div",et,[i.avatar_url?(o(),r("img",{key:0,src:i.avatar_url,alt:i.username,class:"size-full object-cover"},null,8,tt)):(o(),r("div",st,[n(m,{name:"i-lucide-user",class:"size-5"})]))])]),_:2},1032,["to"]),n(k,{to:`/${i.username}`,class:"flex-1 min-w-0"},{default:a(()=>[s("p",it," @"+u(i.username),1),e[14]||(e[14]=s("p",{class:"text-xs text-dimmed"}," Pending ",-1))]),_:2},1032,["to"]),n(v,{icon:"i-lucide-x",label:"Cancel",size:"xs",color:"neutral",variant:"ghost",loading:t(g)===i.friendship_id,onClick:N=>M(i.friendship_id)},null,8,["loading","onClick"])]))),128))])])):_("",!0),t(U).length===0&&t(I).length===0?(o(),r("div",nt,[n(m,{name:"i-lucide-inbox",class:"size-12 text-dimmed"}),e[16]||(e[16]=s("p",{class:"text-sm text-dimmed"}," No pending friend requests. ",-1))])):_("",!0)],64)),t(b)>=t(x)-2&&t(b)<t(x)?(o(),r("div",ot,[n(m,{name:"i-lucide-alert-triangle",class:"size-4 text-amber-400 shrink-0"}),s("p",rt,[f(" You're approaching your friend limit ("+u(t(b))+"/"+u(t(x))+"). ",1),n(k,{to:"/dashboard/settings/billing",class:"underline underline-offset-2 hover:opacity-80"},{default:a(()=>[...e[17]||(e[17]=[f(" Upgrade your plan ",-1)])]),_:1}),e[18]||(e[18]=f(" to add more. ",-1))])])):_("",!0)],64))])]),_:1})}}});
1export{zt as default}; 2//# sourceMappingURL=DOks39Mf.js.map
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.