1import{j as e}from"./vendor-framer-e_lHCn70.js";import{r as w}from"./vendor-react-KJNI7MOv.js";import{d as re,G as H,cy as X,Q as le,s as P,c as Y,g as ce,x as Z,w as oe,ac as de,M as me,ad as xe}from"./index-CIR6ZFuo.js";import{C as d,a as O,b as R,c as A,d as m}from"./card-TqmYSDqK.js";import{B as g}from"./badge-DUmO4yhr.js";import{M as ae,T as he,a as pe,b as $,c as U,d as ue}from"./AdminDashboard-_POEr71S.js";import ge from"./VisitorWorldMap-UolSZL6x.js";import{S as fe}from"./skeleton-0iM9P1Tl.js";import{D as je,a as Ne,b as ve,c as we,d as _e}from"./dialog-CXFvhRJL.js";import{E as z}from"./eye-DNf3oxHW.js";import{a as ee,L as se,f as ne,M as ye,N as be}from"./vendor-date-Cl6Zci4u.js";import{C as G}from"./clock-DkbLKhTt.js";import{F as te,S as Se,P as De}from"./EmployerLeadsManager-SlgPzsMg.js";import{T as ke}from"./target-Ds3A4Y1x.js";import{B as Me}from"./building-Kdy-A1n3.js";import{L as Te}from"./link-2-CvfbB8i8.js";import{S as Ve}from"./search-DwXjDn2y.js";import"./vendor-radix-core-Dl2pI1uY.js";import"./vendor-utils-MBSoW7Mz.js";import"./vendor-query-B0dKBn0F.js";import"./vendor-supabase-DEDxcdm9.js";import"./vendor-radix-extended-hypInIJy.js";import"./select-BFVFAwzl.js";import"./useAuditLog-DmSYZaLX.js";import"./shield-DwTEIBfy.js";import"./refresh-cw-DnKcZzoP.js";import"./circle-x-Cb9JUVHx.js";import"./circle-check-big-DjPoezz3.js";import"./key-DIg5wa3W.js";import"./upload-CBxeO_lD.js";import"./triangle-alert-BVx1w2wU.js";import"./input-D7A3Dl7q.js";import"./table-BegGkPAP.js";import"./download-Bchf7V5g.js";import"./message-square-Dn_N0APa.js";import"./calendar-B_LlgBYw.js";import"./user-Cb9_uiS6.js";import"./label-VdvSoxpo.js";import"./external-link-R7tUOsCw.js";import"./plus-CJPxBew4.js";import"./pencil-D8V9Xr7X.js";import"./copy-Bc_7-Vry.js";import"./checkbox-BfVj_-vU.js";import"./chevron-left-DVESDM2P.js";import"./arrow-down-Cp8VUegk.js";import"./rotate-ccw-Cyr98R7q.js";import"./circle-check-DwXrdmPW.js";import"./circle-alert-DHyIN4z5.js";import"./textarea-DKdwNLmu.js";import"./phone-CFPDcUE2.js";import"./history-CwWnLw8e.js";import"./filter-CJL7BQCj.js";import"./user-check--bJxiLi1.js";import"./user-x-BqtNr9EZ.js";import"./send-BZygGeEg.js";import"./types-BSrl28b_.js";import"./brain-xaVArJdO.js";import"./vendor-charts-BDAdqkMp.js";import"./chart-column-CKST56Tm.js";import"./save-ez-ihkXQ.js";import"./slider-DudAR4tb.js";import"./palette-DBsQpEgj.js";import"./map-pin-BE74NYGL.js";import"./eye-off-CBNwpe3F.js";import"./resume-is-dead-og-v2-DL5aqQw8.js";import"./trending-down-HDOjMSRe.js";import"./user-plus-B-Wpg4b8.js";import"./bell-DSlOAFV1.js";import"./bell-off-C6PDw-yu.js";import"./snowflake-BLXVogqF.js";import"./volume-x-K7Z7Im3L.js";import"./volume-2-B1iLTvOG.js";import"./separator-wBFVqvLG.js";import"./aiVisibilityResources-DIYwZt4V.js";import"./activity-BDSTUF0A.js";import"./hero-DbDXTZ_8.js";import"./hero-BHJ6__Hx.js";import"./hero-CQe232AX.js";import"./hero-DEFRpSNH.js";import"./hero-DxE2ZWaZ.js";import"./hero-BDRfuerP.js";import"./hero-DJ7MLx8P.js";import"./tenFactorHireFactors-BcMrj80_.js";import"./useAdminAuthGuard-VEOdfgr6.js";import"./handshake-B1WCHuUj.js";/** 2 * @license lucide-react v0.462.0 - ISC 3 * 4 * This source code is licensed under the ISC license. 5 * See the LICENSE file in the root directory of this source tree. 6 */const Ee=re("Languages",[["path",{d:"m5 8 6 6",key:"1wu5hv"}],["path",{d:"m4 14 6-6 2-3",key:"1k1g8d"}],["path",{d:"M2 5h12",key:"or177f"}],["path",{d:"M7 2h1",key:"1t2jsx"}],["path",{d:"m22 22-5-10-5 10",key:"don7ne"}],["path",{d:"M14 18h6",key:"1m8k6r"}]]);/** 7 * @license lucide-react v0.462.0 - ISC 8 * 9 * This source code is licensed under the ISC license. 10 * See the LICENSE file in the root directory of this source tree. 11 */const Ce=re("Maximize2",[["polyline",{points:"15 3 21 3 21 9",key:"mznyad"}],["polyline",{points:"9 21 3 21 3 15",key:"1avn1i"}],["line",{x1:"21",x2:"14",y1:"3",y2:"10",key:"ota7mn"}],["line",{x1:"3",x2:"10",y1:"21",y2:"14",key:"1atl0r"}]]),Le=({visitorId:x,sessionId:n,onClose:E,isOpen:k=!0})=>{const[y,_]=w.useState([]),[C,b]=w.useState(!0),[S,M]=w.useState(null);w.useEffect(()=>{if(!k)return;(async()=>{b(!0);let t=P.from("visitor_page_views").select("*").order("created_at",{ascending:!0});if(x&&(t=t.eq("visitor_id",x)),n&&(t=t.eq("session_id",n)),!x&&!n){const i=new Date(Date.now()-864e5).toISOString();t=t.gte("created_at",i).limit(500)}const{data:s,error:r}=await t;if(r){console.error("Error fetching session data:",r),b(!1);return}const o=new Map;
11(s||[]).forEach(i=>{const p=i.session_id;o.has(p)||o.set(p,[]),o.get(p).push(i)});const h=Array.from(o.entries()).map(([i,p])=>{const l=p.sort((F,q)=>new Date(F.created_at).getTime()-new Date(q.created_at).getTime()),f=new Date(l[0].created_at),c=new Date(l[l.length-1].created_at),u=se(c,f);return{session_id:i,visitor_id:l[0].visitor_id,pages:l,startTime:f,endTime:c,totalPages:l.length,totalDuration:u+(l[l.length-1].time_on_page_seconds||0)}});h.sort((i,p)=>p.startTime.getTime()-i.startTime.getTime()),_(h),h.length>0&&!S&&M(h[0].session_id),b(!1)})()},[x,n,k]);const D=a=>a<60?`${a}s`:a<3600?`${Math.floor(a/60)}m ${a%60}s`:`${Math.floor(a/3600)}h ${Math.floor(a%3600/60)}m`,L=a=>a==="/"||a===""?"Home":a.split("/").filter(Boolean).pop()||a,T=e.jsx("div",{className:"space-y-4",children:C?e.jsx("div",{className:"flex items-center justify-center py-12",children:e.jsx("div",{className:"animate-pulse text-muted-foreground",children:"Loading session data..."})}):y.length===0?e.jsxs("div",{className:"text-center py-12 text-muted-foreground",children:[e.jsx(z,{className:"w-12 h-12 mx-auto mb-4 opacity-50"}),e.jsx("p",{children:"No session data available yet."}),e.jsx("p",{className:"text-sm mt-2",children:"Page views will appear here as visitors browse the site."})]}):e.jsx(fe,{className:"h-[500px] pr-4",children:e.jsx("div",{className:"space-y-4",children:y.map(a=>e.jsxs(d,{className:"overflow-hidden",children:[e.jsx("button",{onClick:()=>M(S===a.session_id?null:a.session_id),className:"w-full text-left",children:e.jsx(O,{className:"pb-2 hover:bg-muted/50 transition-colors",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"w-10 h-10 rounded-full bg-primary/10 flex items-center justify-center",children:e.jsx(H,{className:"w-5 h-5 text-primary"})}),e.jsxs("div",{children:[e.jsxs(R,{className:"text-sm font-medium",children:["Session ",a.session_id.substring(0,8),"..."]}),e.jsx(A,{className:"text-xs",children:ee(a.startTime,"MMM d, yyyy h:mm a")})]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs(g,{variant:"secondary",className:"text-xs",children:[e.jsx(z,{className:"w-3 h-3 mr-1"}),a.totalPages," pages"]}),e.jsxs(g,{variant:"outline",className:"text-xs",children:[e.jsx(X,{className:"w-3 h-3 mr-1"}),D(a.totalDuration)]}),e.jsx(le,{className:`w-4 h-4 transition-transform ${S===a.session_id?"rotate-180":""}`})]})]})})}),S===a.session_id&&e.jsx(m,{className:"pt-0",children:e.jsx("div",{className:"relative pl-6 border-l-2 border-primary/20 space-y-4 mt-4",children:a.pages.map((t,s)=>{const r=s===0,o=s===a.pages.length-1,h=s>0?se(new Date(t.created_at),new Date(a.pages[s-1].created_at)):0;return e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:`absolute -left-[25px] w-3 h-3 rounded-full border-2 border-background ${r?"bg-green-500":o?"bg-red-500":"bg-primary"}`}),h>0&&e.jsxs("div",{className:"absolute -left-[42px] -top-3 text-xs text-muted-foreground bg-background px-1",children:["+",D(h)]}),e.jsx("div",{className:"bg-muted/30 rounded-lg p-3 hover:bg-muted/50 transition-colors",children:e.jsx("div",{className:"flex items-start justify-between",children:e.jsxs("div",{className:"flex-1",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"font-medium text-sm",children:t.page_title||L(t.page_url)}),r&&e.jsx(g,{variant:"outline",className:"text-xs bg-green-500/10 text-green-600 border-green-500/30",children:"Entry"}),o&&a.pages.length>1&&e.jsx(g,{variant:"outline",className:"text-xs bg-red-500/10 text-red-600 border-red-500/30",children:"Exit"})]}),e.jsx("div",{className:"text-xs text-muted-foreground mt-1",children:t.page_url}),e.jsxs("div",{className:"flex items-center gap-4 mt-2 text-xs text-muted-foreground",children:[e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx(G,{className:"w-3 h-3"}),ee(new Date(t.created_at),"h:mm:ss a")]}),t.time_on_page_seconds&&e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx(X,{className:"w-3 h-3"}),D(t.time_on_page_seconds)]}),t.scroll_depth_percent&&e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx(ae,{className:"w-3 h-3"}),t.scroll_depth_percent,"% scrolled"]})]}),t.referrer&&r&&e.jsxs("div",{className:"text-xs text-muted-foreground mt-2",children:[e.jsx("span",{className:"text-muted-foreground
11/70",children:"From: "}),t.referrer]})]})})})]},t.id)})})})]},a.session_id))})})});return E?e.jsx(je,{open:k,onOpenChange:a=>!a&&E(),children:e.jsxs(Ne,{className:"max-w-2xl max-h-[90vh]",children:[e.jsxs(ve,{children:[e.jsxs(we,{className:"flex items-center gap-2",children:[e.jsx(z,{className:"w-5 h-5"}),"Visitor Session Replay"]}),e.jsxs(_e,{children:["Complete browsing path for ",x?`visitor ${x.substring(0,8)}...`:"all visitors"]})]}),T]})}):e.jsxs(d,{children:[e.jsxs(O,{children:[e.jsxs(R,{className:"flex items-center gap-2",children:[e.jsx(z,{className:"w-5 h-5 text-primary"}),"Recent Sessions"]}),e.jsx(A,{children:"Page-by-page browsing paths for recent visitors"})]}),e.jsx(m,{children:T})]})},$e=({timeRangeHours:x=24})=>{const[n,E]=w.useState([]),[k,y]=w.useState(!0),_={pageViews:15,sessionDuration:.5,scrollDepth:1,bounceRate:-30,returnVisitor:25},C=(t,s,r)=>{let o=0;return o+=Math.min(t*_.pageViews,100),o+=Math.min(s*_.sessionDuration,150),o+=Math.min(r*_.scrollDepth,100),t===1&&(o+=_.bounceRate),Math.max(0,Math.min(100,Math.round(o/3.5)))},b=t=>t>=70?"high":t>=40?"medium":"low";w.useEffect(()=>{const t=async()=>{y(!0);const r=ye(new Date,x),{data:o,error:h}=await P.from("visitor_page_views").select("*").gte("created_at",r.toISOString()).order("created_at",{ascending:!0}),{data:i,error:p}=await P.from("analytics_events").select("*").gte("created_at",r.toISOString()).eq("event_type","page_view").order("created_at",{ascending:!0});if(h||p){console.error("Error fetching data:",h||p),y(!1);return}const l=new Map;(o||[]).forEach(c=>{const u=`${c.visitor_id}_${c.session_id}`;l.has(u)||l.set(u,{pageViews:[],events:[],scrollDepths:[]}),l.get(u).pageViews.push(c),c.scroll_depth_percent&&l.get(u).scrollDepths.push(c.scroll_depth_percent)}),(i||[]).forEach(c=>{const u=`${c.visitor_id}_${c.session_id}`;l.has(u)||l.set(u,{pageViews:[],events:[],scrollDepths:[]}),l.get(u).events.push(c)});const f=[];l.forEach((c,u)=>{const[F,q]=u.split("_");if(c.pageViews.length===0&&c.events.length===0)return;const N=c.pageViews.sort((j,V)=>new Date(j.created_at).getTime()-new Date(V.created_at).getTime()),v=c.events.sort((j,V)=>new Date(j.created_at).getTime()-new Date(V.created_at).getTime()),W=Math.max(N.length,v.length);let I=0;if(N.length>=2){const j=new Date(N[0].created_at);I=(new Date(N[N.length-1].created_at).getTime()-j.getTime())/1e3;const K=N[N.length-1].time_on_page_seconds;K&&(I+=K)}else if(v.length>=2){const j=new Date(v[0].created_at);I=(new Date(v[v.length-1].created_at).getTime()-j.getTime())/1e3}const Q=c.scrollDepths.length>0?c.scrollDepths.reduce((j,V)=>j+V,0)/c.scrollDepths.length:50,B=v[v.length-1],J=C(W,I,Q),ie=[...new Set(N.map(j=>j.page_url)),...new Set(v.map(j=>j.page_path||"/"))];f.push({visitor_id:F,session_id:q,engagement_score:J,page_views:W,session_duration_seconds:Math.round(I),avg_scroll_depth:Math.round(Q),city:B?.city||"Unknown",country:B?.country||"Unknown",device_type:B?.device_type||"Unknown",browser:B?.browser||"Unknown",pages_visited:[...new Set(ie)],first_seen:new Date(N[0]?.created_at||v[0]?.created_at),last_seen:new Date(N[N.length-1]?.created_at||v[v.length-1]?.created_at),conversion_likelihood:b(J)})}),f.sort((c,u)=>u.engagement_score-c.engagement_score),E(f.slice(0,50)),y(!1)};t();const s=setInterval(t,12e4);return()=>clearInterval(s)},[x]);const S=t=>t<60?`${t}s`:t<3600?`${Math.floor(t/60)}m ${t%60}s`:`${Math.floor(t/3600)}h ${Math.floor(t%3600/60)}m`,M=t=>t>=70?"text-green-500":t>=40?"text-amber-500":"text-muted-foreground",D=t=>{switch(t){case"high":return e.jsxs(g,{className:"bg-green-500/10 text-green-600 border-green-500/30",children:[e.jsx(te,{className:"w-3 h-3 mr-1"}),"High"]});case"medium":return e.jsxs(g,{className:"bg-amber-500/10 text-amber-600 border-amber-500/30",children:[e.jsx(Y,{className:"w-3 h-3 mr-1"}),"Medium"]});default:return e.jsx(g,{variant:"outline",className:"text-muted-foreground",children:"Low"})}},L=n.filter(t=>t.conversion_likelihood==="high").length,T=n.filter(t=>t.conversion_likelihood==="medium").length,a=n.length>0?Math.round(n.reduce((t,s)=>t+s.engagement_score,0)/n.length):0;return k?e.jsx(d,{children:e.jsx(m,{className:"py-12",children:e.jsx("div",{className:"flex items-center justify-center",children:e.jsx("div",{className:"animate-pulse text-muted-foreground",children:"Calculating engagement scores..."})})})}):e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-4",children:[e.jsx(d,{children:e.jsxs(m,{className:"pt-6",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ke,{className:"w-5 h-5 text-primary"}),e.jsx("span",{className:"text-2xl font-bold",children:a})]}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"Avg Score"})]})}),e.jsx(d,{children:e.jsxs(m,{className:"pt-6",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(te,{className:"w-5 h-5 text-green-500"}),e.jsx("span",{className:"text-2xl font-bold text-green-500",children:L})]}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"High Intent"})]})}),e.jsx(d,{children:e.jsxs(m,{className:"pt-6",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Y,{className:"w-5 h-5 text-amber-500"}),e.jsx("span",{className:"text-2xl font-bold text-amber-500",children:T})]}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"Medium Intent"})]})}),e.jsx(d,{children:e.jsxs(m,{className:"pt-6",children:[e.jsx("div",{className:"text-2xl font-bold",children:n.length}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"Total Visitors"})]})})]}),e.jsxs(d,{children:[e.jsxs(O,{children:[e.jsxs(R,{className:"flex items-center gap-2",children:[e.jsx(ce,{className:"w-5 h-5 text-primary"}),"Visitor Engagement Ranking"]}),e.jsxs(A,{children:["Visitors ranked by likelihood to convert (last ",x," hours)"]})]}),e.jsx(m,{children:n.length===0?e.jsxs("div",{className:"text-center py-12 text-muted-foreground",children:[e.jsx(Se,{className:"w-12 h-12 mx-auto mb-4 opacity-50"}),e.jsx("p",{children:"No visitor data available yet."}),e.jsx("p",{className:"text-sm mt-2",children:"Engagement scores will appear as visitors browse your site."})]}):e.jsx("div",{className:"space-y-3",children:n.map((t,s)=>e.jsx("div",{className:"p-4 rounded-lg border bg-card hover:bg-muted/30 transition-colors",children:e.jsxs("div",{className:"flex items-start justify-between gap-4",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:`w-8 h-8 rounded-full flex items-center justify-center text-sm font-bold ${s===0?"bg-yellow-500/20 text-yellow-600":s===1?"bg-gray-400/20 text-gray-500":s===2?"bg-amber-600/20 text-amber-700":"bg-muted text-muted-foreground"}`,children:s+1}),e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:`text-2xl font-bold ${M(t.engagement_score)}`,children:t.engagement_score}),e.jsx("span",{className:"text-xs text-muted-foreground",children:"/100"})]}),e.jsx(De,{value:t.engagement_score,className:"w-20 h-1.5 mt-1"})]})]}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[e.jsxs("span",{className:"text-sm font-medium truncate",children:[t.city,", ",t.country]}),D(t.conversion_likelihood)]}),e.jsxs("div",{className:"flex flex-wrap gap-3 text-xs text-muted-foreground",children:[e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx(z,{className:"w-3 h-3"}),t.page_views," pages"]}),e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx(G,{className:"w-3 h-3"}),S(t.session_duration_seconds)]}),e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx(ae,{className:"w-3 h-3"}),t.avg_scroll_depth,"% scroll"]})]}
11),e.jsxs("div",{className:"text-xs text-muted-foreground/70 mt-1 truncate",children:["Pages: ",t.pages_visited.slice(0,3).join(" â "),t.pages_visited.length>3&&` +${t.pages_visited.length-3} more`]})]}),e.jsxs("div",{className:"text-right text-xs text-muted-foreground shrink-0",children:[e.jsx("div",{children:t.device_type}),e.jsx("div",{className:"mt-1",children:ne(t.last_seen,{addSuffix:!0})})]})]})},`${t.visitor_id}_${t.session_id}`))})})]})]})},xt=({enabled:x=!0})=>{const[n,E]=w.useState([]),[k,y]=w.useState(!0),_=async()=>{const s=be(new Date,5).toISOString(),{data:r,error:o}=await P.from("analytics_events").select("*").gte("created_at",s).order("created_at",{ascending:!1});if(o){console.error("Error fetching live visitors:",o);return}const h=new Map;(r||[]).forEach(i=>{const p=i.visitor_id||"unknown",l=h.get(p),f=i.properties;l?(l.page_views++,new Date(i.created_at)>l.last_seen&&(l.last_seen=new Date(i.created_at),l.page_path=i.page_path||"/")):h.set(p,{visitor_id:p,session_id:i.session_id||"",page_path:i.page_path||"/",city:i.city||"Unknown",country:i.country||"Unknown",region:i.region||"",timezone:i.timezone||"",device_type:i.device_type||"unknown",browser:i.browser||"Unknown",os:i.os||"Unknown",ip_address:i.ip_address||"Unknown",referrer_category:f?.referrer_category||"direct",referrer_source:f?.referrer_source||"Direct",referrer_domain:f?.referrer_domain||"",last_seen:new Date(i.created_at),page_views:1,screen_resolution:f?.screen_resolution||"Unknown",language:f?.language||"Unknown",connection_type:f?.connection_type||"Unknown"})}),E(Array.from(h.values())),y(!1)};w.useEffect(()=>{if(!x)return;_();const s=setInterval(_,1e4);return()=>clearInterval(s)},[x]),w.useEffect(()=>{if(!x)return;const s=P.channel("live-visitors").on("postgres_changes",{event:"INSERT",schema:"public",table:"analytics_events"},()=>{_()}).subscribe();return()=>{P.removeChannel(s)}},[x]);const C=s=>{switch(s){case"mobile":return e.jsx(oe,{className:"w-4 h-4"});case"tablet":return e.jsx(ue,{className:"w-4 h-4"});default:return e.jsx(Z,{className:"w-4 h-4"})}},b=s=>{switch(s){case"search":return e.jsx(Ve,{className:"w-4 h-4"});case"social":return e.jsx(xe,{className:"w-4 h-4"});case"email":return e.jsx(me,{className:"w-4 h-4"});case"referral":return e.jsx(Te,{className:"w-4 h-4"});default:return e.jsx(de,{className:"w-4 h-4"})}},S=s=>{const r=(Date.now()-s.getTime())/1e3;return r<30?"bg-green-500":r<120?"bg-yellow-500":"bg-orange-500"},M=Object.entries(n.reduce((s,r)=>{const o=`${r.city}, ${r.country}`;return s[o]=(s[o]||0)+1,s},{})).sort(([,s],[,r])=>r-s),D=Object.entries(n.reduce((s,r)=>(s[r.country]=(s[r.country]||0)+1,s),{})).sort(([,s],[,r])=>r-s),L=Object.entries(n.reduce((s,r)=>(s[r.device_type]=(s[r.device_type]||0)+1,s),{})).sort(([,s],[,r])=>r-s),T=Object.entries(n.reduce((s,r)=>(s[r.browser]=(s[r.browser]||0)+1,s),{})).sort(([,s],[,r])=>r-s),a=Object.entries(n.reduce((s,r)=>(s[r.os]=(s[r.os]||0)+1,s),{})).sort(([,s],[,r])=>r-s),t=Object.entries(n.reduce((s,r)=>(s[r.referrer_category]=(s[r.referrer_category]||0)+1,s),{})).sort(([,s],[,r])=>r-s);return k?e.jsx(d,{children:e.jsx(m,{className:"py-12",children:e.jsx("div",{className:"flex items-center justify-center",children:e.jsx("div",{className:"animate-pulse text-muted-foreground",children:"Loading live visitors..."})})})}):e.jsxs("div",{className:"space-y-4",children:[n.length>0&&e.jsx(ge,{visitors:n}),e.jsxs("div",{className:"grid grid-cols-2 md:grid-cols-4 lg:grid-cols-6 gap-4",children:[e.jsx(d,{children:e.jsxs(m,{className:"pt-6",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("div",{className:"relative flex h-3 w-3",children:[e.jsx("span",{className:"animate-ping absolute inline-flex h-full w-full rounded-full bg-green-400 opacity-75"}),e.jsx("span",{className:"relative inline-flex rounded-full h-3 w-3 bg-green-500"})]}),e.jsx("span",{className:"text-2xl font-bold",children:n.length})]}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"Active Now"})]})}),e.jsx(d,{children:e.jsxs(m,{className:"pt-6",children:[e.jsx("div",{className:"text-2xl font-bold",children:new Set(n.map(s=>s.city)).size}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"Cities"})]})}),e.jsx(d,{children:e.jsxs(m,{className:"pt-6",children:[e.jsx("div",{className:"text-2xl font-bold",children:new Set(n.map(s=>s.country)).size}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"Countries"})]})}),e.jsx(d,{children:e.jsxs(m,{className:"pt-6",children:[e.jsx("div",{className:"text-2xl font-bold",children:n.reduce((s,r)=>s+r.page_views,0)}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"Page Views (5m)"})]})}),e.jsx(d,{children:e.jsxs(m,{className:"pt-6",children:[e.jsx("div",{className:"text-2xl font-bold",children:n.filter(s=>s.device_type==="mobile").length}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"Mobile Users"})]})}),e.jsx(d,{children:e.jsxs(m,{className:"pt-6",children:[e.jsx("div",{className:"text-2xl font-bold",children:n.filter(s=>s.device_type==="desktop").length}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"Desktop Users"})]})})]}),e.jsxs(d,{children:[e.jsxs(O,{children:[e.jsxs(R,{className:"flex items-center gap-2",children:[e.jsxs("div",{className:"relative flex h-3 w-3",children:[e.jsx("span",{className:"animate-ping absolute inline-flex h-full w-full rounded-full bg-green-400 opacity-75"}),e.jsx("span",{className:"relative inline-flex rounded-full h-3 w-3 bg-green-500"})]}),"Live Visitors"]}),e.jsx(A,{children:"Users active in the last 5 minutes - Full visitor details"})]}),e.jsx(m,{children:n.length===0?e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:"No active visitors at the moment"}):e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full text-sm",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-border",children:[e.jsx("th",{className:"text-left py-3 font-medium",children:"Status"}),e.jsx("th",{className:"text-left py-3 font-medium",children:"Location"}),e.jsx("th",{className:"text-left py-3 font-medium hidden md:table-cell",children:"Page"}),e.jsx("th",{className:"text-left py-3 font-medium hidden sm:table-cell",children:"Device"}),e.jsx("th",{className:"text-left py-3 font-medium hidden lg:table-cell",children:"Browser/OS"}),e.jsx("th",{className:"text-left py-3 font-medium hidden lg:table-cell",children:"Source"}),e.jsx("th",{className:"text-left py-3 font-medium hidden xl:table-cell",children:"Screen"}),e.jsx("th",{className:"text-left py-3 font-medium hidden xl:table-cell",children:"Language"}),e.jsx("th",{className:"text-left py-3 font-medium",children:"Last Seen"})]})}),e.jsx("tbody",{children:n.map(s=>e.jsxs("tr",{className:"border-b border-border/50 hover:bg-muted/50 transition-colors",children:[e.jsx("td",{className:"py-3",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:`w-2 h-2 rounded-full ${S(s.last_seen)}`}),e.jsxs(g,{variant:"outline",className:"text-xs",children:[s.page_views," views"]})]})}),e.jsx("td",{className:"py-3",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(H,{className:"w-4 h-4 text-muted-foreground shrink-0"}),e.jsxs("div",{children:[e.jsx("div",{className:"font-medium",children:s.city}),e.jsxs("div",{className:"text-xs text-muted-foreground",children:[s.region&&`${s.region}, `,s.country]}),s.timezone&&e.jsx("div",{className:"text-xs text-muted-foreground
11/70",children:s.timezone})]})]})}),e.jsx("td",{className:"py-3 hidden md:table-cell",children:e.jsx("span",{className:"max-w-[200px] truncate block",children:s.page_path})}),e.jsx("td",{className:"py-3 hidden sm:table-cell",children:e.jsxs("div",{className:"flex items-center gap-2",children:[C(s.device_type),e.jsx("span",{className:"capitalize text-xs",children:s.device_type})]})}),e.jsx("td",{className:"py-3 hidden lg:table-cell",children:e.jsxs("div",{children:[e.jsx("div",{className:"text-xs font-medium",children:s.browser}),e.jsx("div",{className:"text-xs text-muted-foreground",children:s.os})]})}),e.jsx("td",{className:"py-3 hidden lg:table-cell",children:e.jsxs("div",{className:"flex items-center gap-2",children:[b(s.referrer_category),e.jsxs("div",{children:[e.jsx("span",{className:"capitalize text-xs block",children:s.referrer_source}),s.referrer_domain&&e.jsx("span",{className:"text-xs text-muted-foreground",children:s.referrer_domain})]})]})}),e.jsx("td",{className:"py-3 hidden xl:table-cell",children:e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(Ce,{className:"w-3 h-3 text-muted-foreground"}),e.jsx("span",{className:"text-xs",children:s.screen_resolution})]})}),e.jsx("td",{className:"py-3 hidden xl:table-cell",children:e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(Ee,{className:"w-3 h-3 text-muted-foreground"}),e.jsx("span",{className:"text-xs",children:s.language})]})}),e.jsx("td",{className:"py-3",children:e.jsxs("div",{className:"flex items-center gap-1 text-muted-foreground",children:[e.jsx(G,{className:"w-3 h-3"}),e.jsx("span",{className:"text-xs",children:ne(s.last_seen,{addSuffix:!0})})]})})]},s.visitor_id))})]})})})]}),e.jsxs(d,{children:[e.jsxs(O,{children:[e.jsx(R,{children:"Live Visitor Breakdown"}),e.jsx(A,{children:"Real-time distribution of active visitors"})]}),e.jsx(m,{children:e.jsxs(he,{defaultValue:"cities",className:"space-y-4",children:[e.jsxs(pe,{className:"grid grid-cols-3 md:grid-cols-6 w-full",children:[e.jsx($,{value:"cities",children:"Cities"}),e.jsx($,{value:"countries",children:"Countries"}),e.jsx($,{value:"devices",children:"Devices"}),e.jsx($,{value:"browsers",children:"Browsers"}),e.jsx($,{value:"os",children:"OS"}),e.jsx($,{value:"sources",children:"Sources"})]}),e.jsx(U,{value:"cities",children:e.jsx("div",{className:"space-y-2",children:M.length===0?e.jsx("div",{className:"text-center py-4 text-muted-foreground text-sm",children:"No data"}):M.slice(0,10).map(([s,r])=>e.jsxs("div",{className:"flex items-center justify-between p-2 rounded-lg hover:bg-muted/50",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Me,{className:"w-4 h-4 text-muted-foreground"}),e.jsx("span",{className:"text-sm font-medium",children:s})]}),e.jsx(g,{variant:"secondary",children:r})]},s))})}),e.jsx(U,{value:"countries",children:e.jsx("div",{className:"space-y-2",children:D.length===0?e.jsx("div",{className:"text-center py-4 text-muted-foreground text-sm",children:"No data"}):D.slice(0,10).map(([s,r])=>e.jsxs("div",{className:"flex items-center justify-between p-2 rounded-lg hover:bg-muted/50",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(H,{className:"w-4 h-4 text-muted-foreground"}),e.jsx("span",{className:"text-sm font-medium",children:s})]}),e.jsx(g,{variant:"secondary",children:r})]},s))})}),e.jsx(U,{value:"devices",children:e.jsx("div",{className:"space-y-2",children:L.length===0?e.jsx("div",{className:"text-center py-4 text-muted-foreground text-sm",children:"No data"}):L.map(([s,r])=>e.jsxs("div",{className:"flex items-center justify-between p-2 rounded-lg hover:bg-muted/50",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[C(s),e.jsx("span",{className:"text-sm font-medium capitalize",children:s})]}),e.jsx(g,{variant:"secondary",children:r})]},s))})}),e.jsx(U,{value:"browsers",children:e.jsx("div",{className:"space-y-2",children:T.length===0?e.jsx("div",{className:"text-center py-4 text-muted-foreground text-sm",children:"No data"}):T.slice(0,10).map(([s,r])=>e.jsxs("div",{className:"flex items-center justify-between p-2 rounded-lg hover:bg-muted/50",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(H,{className:"w-4 h-4 text-muted-foreground"}),e.jsx("span",{className:"text-sm font-medium",children:s})]}),e.jsx(g,{variant:"secondary",children:r})]},s))})}),e.jsx(U,{value:"os",children:e.jsx("div",{className:"space-y-2",children:a.length===0?e.jsx("div",{className:"text-center py-4 text-muted-foreground text-sm",children:"No data"}):a.slice(0,10).map(([s,r])=>e.jsxs("div",{className:"flex items-center justify-between p-2 rounded-lg hover:bg-muted/50",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Z,{className:"w-4 h-4 text-muted-foreground"}),e.jsx("span",{className:"text-sm font-medium",children:s})]}),e.jsx(g,{variant:"secondary",children:r})]},s))})}),e.jsx(U,{value:"sources",children:e.jsx("div",{className:"space-y-2",children:t.length===0?e.jsx("div",{className:"text-center py-4 text-muted-foreground text-sm",children:"No data"}):t.map(([s,r])=>e.jsxs("div",{className:"flex items-center justify-between p-2 rounded-lg hover:bg-muted/50",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[b(s),e.jsx("span",{className:"text-sm font-medium capitalize",children:s})]}),e.jsx(g,{variant:"secondary",children:r})]},s))})})]})})]}),e.jsx($e,{timeRangeHours:24}),e.jsx(Le,{})]})};export{xt 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.