1import{x as Y,aC as K,r as C,R as e,aK as S,aE as O,e as B,G,aF as W}from"./react-vendor-Bf4W-CWC.js";import{C as Z}from"./ChatDetailDialog-_MnSkkTH.js";import{z,I as H,r as V}from"./index-B0m-RG-5.js";import{u as J}from"./useDebounce-uhk5FmL4.js";import{d as X,e as ee,f as te,g as ae,a as k}from"./useAdminAnalyticsQueries-Ux8FSI1W.js";import"./vendor-OA-GHIxO.js";import"./radix-DpgCKSUJ.js";import"./charts-DBbg0BrZ.js";import"./adminV2Api-BnYPwEB4.js";(function(){try{var a=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{};a.SENTRY_RELEASE={id:"5af99787"};var n=new a.Error().stack;n&&(a._sentryDebugIds=a._sentryDebugIds||{},a._sentryDebugIds[n]="91b2f5e1-2572-4226-8825-3dffaf4fd7b9",a._sentryDebugIdIdentifier="sentry-dbid-91b2f5e1-2572-4226-8825-3dffaf4fd7b9")}catch{}})();const f=a=>{const n=new Date(a),i=l=>l.toString().padStart(2,"0");return`${i(n.getDate())}/${i(n.getMonth()+1)}/${n.getFullYear().toString().slice(-2)} ${i(n.getHours())}:${i(n.getMinutes())}`},D=[{id:"assistant",label:"EZY Assistant",blurb:"What our signed-in users are asking the dashboard assistant"},{id:"capture",label:"EZY Capture",blurb:"What visitors are asking the capture widget on client domains"}],se=a=>a==="capture"?"capture":"assistant",ne=a=>({session_id:a.session_id,user_email:a.user_email,domain_name:a.domain_name,message_count:a.message_count,user_message_count:a.user_message_count,preview:a.last_user_message??a.last_message,preview_role:a.last_user_message?"user":a.last_role,last_activity:a.last_message_at??a.updated_at,created_at:a.created_at}),re=a=>({session_id:a.session_id,user_email:a.user_email,domain_name:a.domain_name,message_count:a.message_count,user_message_count:null,preview:a.last_message,preview_role:a.last_role,last_activity:a.last_message_at??a.updated_at,created_at:a.created_at});function ge(){const a=Y(),[n,i]=K(),l=se(n.get("source")),b=n.get("search")||"",_=J(b,300),o=n.get("session"),d=t=>{i(r=>{const v=new URLSearchParams(r);return t(v),v},{replace:!0})},R=t=>{d(r=>{t?r.set("search",t):r.delete("search")})},L=t=>{t!==l&&d(r=>{r.set("source",t),r.delete("session")})},s=l==="assistant",u=X({search:_,enabled:s}),h=ee({search:_,enabled:!s}),M=s?u:h,{fetchNextPage:I,hasNextPage:p,isFetchingNextPage:g,isLoading:x,isRefetching:E,isError:P,error:y}=M,c=C.useMemo(()=>s?u.data?.pages.flatMap(t=>t.data.map(ne))??[]:h.data?.pages.flatMap(t=>t.data.map(re))??[],[s,u.data,h.data]),m=C.useMemo(()=>o?c.find(t=>t.session_id===o)??null:null,[o,c]),A=te(s?o:null),$=ae(s?null:o),N=s?A:$,T=()=>{a.invalidateQueries({queryKey:s?k.assistantChats():k.chatSessions()})},j=()=>{p&&!g&&I()},q=t=>{d(r=>r.set("session",t))},F=t=>{t||d(r=>r.delete("session"))},Q=m?{session_id:m.session_id,user_email:m.user_email,domain_name:m.domain_name,created_at:m.created_at,message_count:m.message_count}:null,U=D.find(t=>t.id===l)?.blurb??"",w=s?6:5;return e.createElement("div",{className:"space-y-6"},e.createElement("div",{className:"flex flex-col sm:flex-row sm:items-start justify-between gap-4"},e.createElement("div",null,e.createElement("h2",{className:"text-base font-bold text-white flex items-center gap-2"},e.createElement(S,{className:"h-4 w-4 text-orange-400"}),"Chats"),e.createElement("p",{className:"text-[11px] text-white/40 mt-1"},U)),e.createElement("div",{className:"flex flex-col lg:flex-row gap-3 w-full lg:w-auto lg:items-center lg:justify-end"},e.createElement("div",{role:"tablist","aria-label":"Chat source",className:"inline-flex rounded-[3px] border border-white/10 bg-white/[0.03] p-0.5 self-start"},D.map(t=>e.createElement("button",{key:t.id,type:"button",role:"tab","aria-selected":l===t.id,onClick:()=>L(t.id),className:z("px-3 py-1.5 text-[11px] font-bold uppercase tracking-widest rounded-[2px] transition-all whitespace-nowrap",l===t.id?"bg-orange-500/20 text-orange-300":"text-white/50 hover:text-white hover:bg-white/5")},t.label))),e.createElement(H,{placeholder:"Search by email or domain...",value:b,onChange:t=>R(t.target.value),className:"w-full sm:w-64 h-7 bg-white/[0.03] border-white/10 text-white text-[10px] placeholder:text-white/30"}),e.createElement("button",{type:"button",onClick:T,disabled:x||E,"aria-label":"Refresh sessions",className:"flex items-center justify-center h-8 w-8 rounded-[3px] bg-white/[0.03] border border-white/10 hover:bg-white/10 hover:border-white/20 text-white transition-all disabled:opacity-50"},e.createElement(O,{className:`h-3.5 w-3.5 ${x||E?"animate-spin":""}`})))),e.createElement("div",{className:"bg-white/5 backdrop-blur-xl border border-white/10 rounded-[3px] overflow-hidden"},e.createElement("div",{className:"overflow-x-auto"},e.createElement("table",{className:"w-full text-left"},e.createElement("thead",{className:"bg-white/5 text-[11px] uppercase font-bold text-white tracking-widest"},e.createElement("tr",null,e.createElement("th",{className:"px-3 py-4"},"User"),e.createElement("th",{className:"px-3 py-4"},"Domain"),e.createElement("th",{className:"px-3 py-4"},s?"Latest question":"Last message"),s&&e.createElement("th",{className:"px-3 py-4 text-right"},"Asked"),e.createElement("th",{className:"px-3 py-4 text-right"},"Msgs"),e.createElement("th",{className:"px-3 py-4 text-right"},"Last activity (dd/mm/yy hh:mm)"))),e.createElement("tbody",{className:"divide-y divide-white/5 text-[12px]"},x&&c.length===0?e.createElement("tr",null,e.createElement("td",{colSpan:w,className:"px-3 py-10 text-center text-white italic"},e.createElement(B,{className:"h-5 w-5 animate-spin mx-auto mb-2 opacity-50"}),"Loading chats...")):P?e.createElement("tr",null,e.createElement("td",{colSpan:w,className:"px-3 py-10 text-center text-red-400 italic"},"Failed to load chats:"," ",y instanceof Error?y.message:"Unknown error")):c.length===0?e.createElement("tr",null,e.createElement("td",{colSpan:w,className:"px-3 py-10 text-center text-white/40 italic"},e.createElement(S,{className:"h-5 w-5 mx-auto mb-2 opacity-50"}),"No chats found.")):c.map(t=>e.createElement("tr",{key:t.session_id,onClick:()=>q(t.session_id),className:"hover:bg-white/[0.04] transition-colors group cursor-pointer"},e.createElement("td",{className:"px-3 py-2.5"},e.createElement("div",{className:"font-medium text-white max-w-[200px] truncate"},t.user_email||e.createElement("span",{className:"text-white/40"},"anonymous"))),e.createElement("td",{className:"px-3 py-2.5"},t.domain_name?e.createElement(V,{variant:"outline",className:"text-[11px] font-mono font-normal border-white/10 text-white bg-white/[0.03] px-2.5 py-0.5 rounded-[3px] h-[22px] inline-flex items-center gap-1.5 group/chip hover:bg-white/10 hover:border-white/20 transition-all cursor-default max-w-[200px]"},e.createElement(G,{className:"h-3 w-3 opacity-30 group-hover/chip:opacity-60 transition-opacity shrink-0"}),e.createElement("span",{className:"tracking-tight truncate"},t.domain_name)):e.createElement("span",{className:"text-white/10 text-[10px]"},"â")),e.createElement("td",{className:"px-3 py-2.5 text-white/80 max-w-[400px] truncate text-[11px]"},t.preview?e.createElement("span",null,e.createElement("span",{className:"text-white/40 mr-1 uppercase text-[9px] font-bold"},"[",t.preview_role??"?","]"),t.preview):e.createElement("span",{className:"text-white/40"},"No messages")),s&&e.createElement("td",{className:"px-3 py-2.5 text-right font-medium text-orange-300"},t.user_message_count??"â"),e.createElement("td",{className:"px-3 py-2.5 text-right font-medium text-white"},t.message_count),e.createElement("td",{className:"px-3 py-2.5 text-right text-white text-[12px] font-mono whitespace-nowrap opacity-80"},t.last_activity?f(t.last_activity):f(t.created_at))))))),e.createElement("div",{className:"border-t border-white/10 px-3 py-4 bg-white/[0.01] flex items-center justify-between"},e.createElement("p",{className:"text-[10px] font-bold text-white uppercase tracking-widest"},c.length," chats loaded"),e.createElement("div",{className:"flex items-center gap-1"},e.createElement("button",{type:"button",onClick:j,disabled:g||!p,className:"p-1 text-white hover:text-orange-500 disabled:opacity-20 transition-colors flex items-center gap-1"},e.createElement("span",{className:"text-[10px] font-bold uppercase tracking-widest mr-1"},p?g?"Loading...":"Load more":"End of list"),p&&e.createElement(W,{className:"h-4 w-4"}))))),e.createElement(Z,{open:!!o,onOpenChange:F,session:Q,messages:N.data?.messages??[],loading:N.isLoading,formatDate:f}))}export{ge 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.