PageSourceSearch

https://my.droneblocks.io/_nuxt/DcQ2F3-T.js

js droneblocks.io collected 2026-10-01 13:12:33 UTC 4,167 bytes, 1 lines download raw bytes

1import{_ as V}from"./DsPr2kAG.js";import{_ as B}from"./svOzN0FW.js";import{d as E,e as F,a as R,r as v,o as I,x as $,L as w,N,f as q,h as l,p as D,i as e,t as d,j as m,q as S,l as H,v as j,m as O,F as x,R as U,k as L,g as n,n as k,V as P,s as A,_ as Q}from"./Dk0Hg_Hx.js";import{u as G}from"./Bib2XQ11.js";import"./Cp6ngm4B.js";import"./KN3MgU5m.js";const J={class:"dashboard-layout"},K={class:"dashboard-main"},W={class:"dashboard-welcome"},X={class:"org-header-row"},Y={class:"users-search"},Z={key:0,class:"loading"},ss={key:1,class:"users-list"},es={class:"user-card-avatar"},as=["src","alt"],rs={key:1,class:"user-card-initials"},ts={class:"user-card-info"},os={class:"user-card-name"},ns={key:0,class:"role-badge super-admin",style:{"font-size":"0.6rem","vertical-align":"middle"}},is={class:"user-card-email"},ls={class:"user-card-orgs"},ds={key:0,class:"user-card-no-org"},cs={class:"user-card-meta"},us={class:"user-card-date"},ms={key:0,class:"users-empty"},ps=E({__name:"users",setup(_s){F({title:"Users · Admin"});const g=R(),{isSuperAdmin:M}=G(),_=v([]),C=v(!0),p=v("");I(async()=>{if(!M.value){await $("/dashboard");return}await z(),C.value=!1});async function z(){const a=(await w(N(g,"users"))).docs.map(r=>({id:r.id,...r.data()})),o=(await w(N(g,"userOrganizations"))).docs.map(r=>r.data()),s=await w(N(g,"organizations")),i=new Map;s.docs.forEach(r=>i.set(r.id,{id:r.id,...r.data()})),_.value=a.map(r=>{const y=o.filter(u=>u.userId===r.id).map(u=>({org:i.get(u.organizationId),role:u.role})).filter(u=>u.org);return{user:r,orgs:y}}).sort((r,h)=>{const y=(r.user.displayName||r.user.email||"").toLowerCase(),u=(h.user.displayName||h.user.email||"").toLowerCase();return y.localeCompare(u)})}const b=q(()=>{const t=p.value.toLowerCase().trim();return t?_.value.filter(a=>{var c,o;return((c=a.user.email)==null?void 0:c.toLowerCase().includes(t))||((o=a.user.displayName)==null?void 0:o.toLowerCase().includes(t))||a.orgs.some(s=>s.org.name.toLowerCase().includes(t))}):_.value});function T(t){return t!=null&&t.toDate?t.toDate().toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"}):"—"}function f(t){var a,c;for(const o of t){if(o.org.trialExpiresAt&&((a=o.org.trialTiers)!=null&&a.length)){const s=o.org.trialExpiresAt,i=s!=null&&s.toDate?s.toDate():new Date(s);if(i>new Date)return`${Math.ceil((i.getTime()-Date.now())/864e5)}d left`}if((c=o.org.tiers)!=null&&c.length)return"Paid"}return"Free"}return(t,a)=>{const c=V,o=B;return n(),l("div",J,[D(c),e("main",K,[e("div",W,[e("div",X,[e("div",null,[a[1]||(a[1]=e("h1",null,"Users",-1)),e("p",null,d(m(_).length)+" total users",1)]),D(o,{to:"/admin",class:"btn-small btn-outline"},{default:S(()=>a[2]||(a[2]=[k("← Admin")])),_:1})])]),e("div",Y,[H(e("input",{"onUpdate:modelValue":a[0]||(a[0]=s=>O(p)?p.value=s:null),type:"text",placeholder:"Search by name, email, or org...",class:"create-input"},null,512),[[j,m(p)]])]),m(C)?(n(),l("div",Z,a[3]||(a[3]=[e("div",{class:"spinner"},null,-1)]))):(n(),l("div",ss,[(n(!0),l(x,null,U(m(b),s=>(n(),l("div",{key:s.user.id,class:"user-card"},[e("div",es,[s.user.photoURL?(n(),l("img",{key:0,src:s.user.photoURL,alt:s.user.displayName,class:"user-card-photo"},null,8,as)):(n(),l("span",rs,d((s.user.displayName||s.user.email||"?")[0].toUpperCase()),1))]),e("div",ts,[e("div",os,[k(d(s.user.displayName||"—")+" ",1),s.user.superAdmin?(n(),l("span",ns,"Super Admin")):L("",!0)]),e("div",is,d(s.user.email),1),e("div",ls,[(n(!0),l(x,null,U(s.orgs,i=>(n(),P(o,{key:i.org.id,to:`/admin/orgs/${i.org.id}`,class:"user-card-org"},{default:S(()=>[k(d(i.org.name)+" ",1),e("span",{class:A(["role-badge",i.role]),style:{"font-size":"0.6rem"}},d(i.role),3)]),_:2},1032,["to"]))),128)),s.orgs.length===0?(n(),l("span",ds,"No org")):L("",!0)])]),e("div",cs,[e("span",{class:A(["user-card-status",f(s.orgs).toLowerCase().includes("free")?"free":f(s.orgs).toLowerCase().includes("left")?"trial":"paid"])},d(f(s.orgs)),3),e("span",us,d(T(s.user.lastLoginAt)),1)])]))),128)),m(b).length===0?(n(),l("div",ms,d(m(p)?"No users match your search.":"No users yet."),1)):L("",!0)]))])])}}}),Ns=Q(ps,[["__scopeId","data-v-be9fd855"]]);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.