1import{_ as Q}from"./CIcK5AWm.js";import{Q as Z,c as v,a as l,b as a,N,j as w,w as s,d as r,k as o,_ as G,o as m,i as H,t as g,s as c,z as h,g as k,h as J,a5 as u}from"./Cny-jMUR.js";import{_ as W}from"./B-5qM8bm.js";import{_ as X}from"./CSHkLFmR.js";import{_ as Y}from"./tJRDHKHm.js";import{_ as ee}from"./DmDz5m4l.js";import{_ as te}from"./sd3vO9h1.js";import{u as le}from"./D1mNL5xR.js";import"./DRbcCXkf.js";import"./CXDzCsr7.js";import"./B7NayylV.js";import"./BGx-vc2c.js";import"./BRdsWsvc.js";import"./COjSgi5K.js";import"./DgD9rLi7.js";const ae={class:"bg-gray-50 min-h-screen"},se={class:"max-w-7xl mx-auto pt-16 pb-20 p-4 space-y-8"},oe={class:"grid gap-4 md:grid-cols-4"},ne={class:"mt-2 text-3xl font-semibold text-neutral-950"},ie={class:"mt-2 text-3xl font-semibold text-emerald-700"},re={class:"mt-2 text-3xl font-semibold text-amber-700"},me={class:"mt-2 text-3xl font-semibold text-neutral-950"},ce={class:"flex flex-col gap-2 md:flex-row md:items-center md:justify-between"},ue={class:"text-sm text-gray-500"},de={key:0},pe={class:"flex flex-col gap-4 md:flex-row md:flex-wrap md:items-end"},fe={class:"flex flex-col gap-1 text-xs font-semibold text-gray-500 w-full md:w-72"},_e={class:"flex flex-col gap-1 text-xs font-semibold text-gray-500 w-full md:w-56"},xe={class:"flex flex-col gap-1 text-xs font-semibold text-gray-500 w-full md:w-48"},ve={class:"mt-4 flex flex-wrap items-center gap-2"},ge={key:0,class:"h-[240px] flex items-center justify-center mt-6"},be={key:1,class:"py-10 text-center text-gray-500 mt-6"},ye={key:2,class:"overflow-x-auto mt-6"},Te=Z({__name:"clients",setup(we){const d=k(""),n=k("all"),i=k("all"),{data:z,pending:C,error:S,refresh:$}=le("/api/admin/client-emails",{lazy:!0},"$go9f-KrhPM"),p=c(()=>{var t;return((t=z.value)==null?void 0:t.rows)||[]}),A=c(()=>p.value.filter(t=>t.is_active).length),B=c(()=>p.value.filter(t=>!t.is_active).length),I=c(()=>new Set(p.value.map(t=>t.source||"")).size),D=[{label:"All statuses",value:"all"},{label:"Active",value:"active"},{label:"Inactive",value:"inactive"}],F=c(()=>[{label:"All sources",value:"all"},...Array.from(new Set(p.value.map(t=>t.source).filter(Boolean))).sort((t,e)=>String(t).localeCompare(String(e))).map(t=>({label:String(t),value:String(t)}))]),b=c(()=>{const t=d.value.trim().toLowerCase();return p.value.filter(e=>i.value==="active"&&!e.is_active||i.value==="inactive"&&e.is_active||n.value!=="all"&&e.source!==n.value?!1:t?[e.email_normalized,e.email_display].filter(Boolean).some(y=>String(y).toLowerCase().includes(t)):!0)}),T=c(()=>d.value.trim().length>0||n.value!=="all"||i.value!=="all"),L=()=>{d.value="",n.value="all",i.value="all"},R=new Intl.DateTimeFormat("en-US",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1,timeZone:"UTC"}),f=t=>{if(!t)return"â";const e=new Date(t);return Number.isNaN(e.getTime())?t:R.format(e)},j=Q,E=[{accessorKey:"id",header:"ID"},{accessorKey:"email_normalized",header:"Email",cell:({row:t})=>u("p",{class:"min-w-[220px] font-medium text-neutral-950 break-all"},t.original.email_display||t.original.email_normalized||"â")},{accessorKey:"source",header:"Source"},{accessorKey:"is_active",header:"Status",cell:({row:t})=>u(j,{color:t.original.is_active?"success":"warning",variant:"soft",size:"sm"},()=>t.original.is_active?"Active":"Inactive")},{accessorKey:"first_seen_at",header:"First seen",cell:({row:t})=>u("span",f(t.original.first_seen_at))},{accessorKey:"last_seen_at",header:"Last seen",cell:({row:t})=>u("span",f(t.original.last_seen_at))},{accessorKey:"last_synced_at",header:"Last synced",cell:({row:t})=>u("span",f(t.original.last_synced_at))},{accessorKey:"created_at",header:"Created",cell:({row:t})=>u("span",f(t.original.created_at))},{accessorKey:"updated_at",header:"Updated",cell:({row:t})=>u("span",f(t.original.updated_at))}];return(t,e)=>{var K;const y=H,O=G,q=W,_=X,U=J,M=Y,V=ee,P=te;return m(),v("div",ae,[l("div",se,[a(O,{to:"/admin/emails",class:"inline-flex items-center gap-2 text-brand"},{default:s(()=>[a(y,{name:"i-lucide-arrow-left"}),e[3]||(e[3]=r(" Email admin ",-1))]),_:1}),e[17]||(e[17]=l("div",{class:"space-y-2"},[l("h1",{class:"text-3xl md:text-4xl font-bold text-neutral-950"},"Client email list"),l("p",{class:"text-sm text-gray-600"},[r(" Review all rows from the "),l("code",null,"client_emails"),r(" table to track the full client email list. ")])],-1)),o(S)?(m(),N(q,{key:0,color:"error",variant:"soft",icon:"i-heroicons-exclamation-triangle",title:((K=o(S))==null?void 0:K.message)||"Unable to load client email rows"},null,8,["title"])):w("",!0),l("div",oe,[a(_,null,{default:s(()=>[e[4]||(e[4]=l("p",{class:"text-xs font-semibold uppercase tracking-wide text-gray-500"},"Rows loaded",-1)),l("p",ne,g(p.value.length),1)]),_:1}),a(_,null,{default:s(()=>[e[5]||(e[5]=l("p",{class:"text-xs font-semibold uppercase tracking-wide text-gray-500"},"Active",-1)),l("p",ie,g(A.value),1)]),_:1}),a(_,null,{default:s(()=>[e[6]||(e[6]=l("p",{class:"text-xs font-semibold uppercase tracking-wide text-gray-500"},"Inactive",-1)),l("p",re,g(B.value),1)]),_:1}),a(_,null,{default:s(()=>[e[7]||(e[7]=l("p",{class:"text-xs font-semibold uppercase tracking-wide text-gray-500"},"Sources",-1)),l("p",me,g(I.value),1)]),_:1})]),a(_,null,{header:s(()=>[l("div",ce,[l("div",null,[e[9]||(e[9]=l("h2",{class:"text-2xl font-semibold text-neutral-950"},"Client emails",-1)),l("p",ue,[r(" Showing "+g(b.value.length)+" row",1),b.value.length!==1?(m(),v("span",de,"s")):w("",!0),e[8]||(e[8]=r(". ",-1))])]),a(U,{icon:"i-heroicons-arrow-path",loading:o(C),onClick:o($),color:"neutral",variant:"outline",size:"sm"},{default:s(()=>[...e[10]||(e[10]=[r(" Refresh ",-1)])]),_:1},8,["loading","onClick"])])]),default:s(()=>[l("div",pe,[l("label",fe,[e[11]||(e[11]=l("span",null,"Search email",-1)),a(M,{modelValue:o(d),"onUpdate:modelValue":e[0]||(e[0]=x=>h(d)?d.value=x:null),placeholder:"[email protected]"},null,8,["modelValue"])]),l("label",_e,[e[12]||(e[12]=l("span",null,"Source",-1)),a(V,{modelValue:o(n),"onUpdate:modelValue":e[1]||(e[1]=x=>h(n)?n.value=x:null),items:F.value,"option-attribute":"label","value-attribute":"value"},null,8,["modelValue","items"])]),l("label",xe,[e[13]||(e[13]=l("span",null,"Status",-1)),a(V,{modelValue:o(i),"onUpdate:modelValue":e[2]||(e[2]=x=>h(i)?i.value=x:null),items:D,"option-attribute":"label","value-attribute":"value"},null,8,["modelValue"])])]),l("div",ve,[T.value?(m(),N(U,{key:0,variant:"ghost",size:"sm",color:"neutral",onClick:L},{default:s(()=>
1[...e[14]||(e[14]=[r(" Clear filters ",-1)])]),_:1})):w("",!0)]),o(C)?(m(),v("div",ge,[...e[15]||(e[15]=[l("div",{class:"animate-spin rounded-full h-10 w-10 border-b-2 border-neutral-400"},null,-1)])])):b.value.length?(m(),v("div",ye,[a(P,{data:b.value,columns:E,class:"client-emails-table"},null,8,["data"])])):(m(),v("div",be,[...e[16]||(e[16]=[l("p",null,"No client email rows match the current filters.",-1)])]))]),_:1})])])}}});export{Te 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.