PageSourceSearch

https://cx.tools/assets/Dashboard-jvnFI5GS.js

js cx.tools collected 2026-10-05 10:57:15 UTC 12,718 bytes, 1 lines download raw bytes

1var j=(a,m,i)=>new Promise((l,b)=>{var d=c=>{try{s(i.next(c))}catch(o){b(o)}},f=c=>{try{s(i.throw(c))}catch(o){b(o)}},s=c=>c.done?l(c.value):Promise.resolve(c.value).then(d,f);s((i=i.apply(a,m)).next())});import{j as e}from"./ui-components-cMNetHE6.js";import{f as V,a as n,L as T}from"./react-vendor-QD-inATk.js";import{c as g,an as q,i as Q,H as X,a as J,B as W,U as K,q as Y,t as B,ag as Z}from"./index-B_NFjErF.js";import{L as ee,P as te}from"./PasswordChangeForm-Cby3P6H2.js";import{C as A}from"./circle-check-B-mHzyyY.js";import{C as M}from"./circle-x-BiX6mlUI.js";import"./utils-DpcVKHOi.js";import"./label-FTBVxUKZ.js";const se=g("Eye",[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);const P=g("Megaphone",[["path",{d:"m3 11 18-5v12L3 14v-3z",key:"n962bs"}],["path",{d:"M11.6 16.8a3 3 0 1 1-5.8-1.6",key:"1yl0tm"}]]);const ae=g("MousePointerClick",[["path",{d:"M14 4.1 12 6",key:"ita8i4"}],["path",{d:"m5.1 8-2.9-.8",key:"1go3kf"}],["path",{d:"m6 12-1.9 2",key:"mnht97"}],["path",{d:"M7.2 2.2 8 5.1",key:"1cfko1"}],["path",{d:"M9.037 9.69a.498.498 0 0 1 .653-.653l11 4.5a.5.5 0 0 1-.074.949l-4.349 1.041a1 1 0 0 0-.74.739l-1.04 4.35a.5.5 0 0 1-.95.074z",key:"s0h3yz"}]]);function he(){const{user:a,signOut:m}=q(),i=V(),[l,b]=n.useState([]),[d,f]=n.useState([]),[s,c]=n.useState([]),[o,E]=n.useState([]),[z,u]=n.useState(!0),[O,I]=n.useState(!0),[N,$]=n.useState(null),[U,H]=n.useState("");n.useEffect(()=>{if(!a)return;const t=Q();t&&t.auth.getSession().then(h=>j(null,[h],function*({data:{session:r}}){var _,S,C,L;if(!r)return;const x={Authorization:`Bearer ${r.access_token}`},[y,w]=yield Promise.all([fetch("/api/admin/vendors",{headers:x}),fetch("/api/admin/clicks",{headers:x})]);if(!y.ok){$("Failed to load vendor data."),u(!1);return}const v=yield y.json();if(b((_=v.vendors)!=null?_:[]),f((S=v.bookings)!=null?S:[]),u(!1),w.ok){const D=yield w.json();c((C=D.recent)!=null?C:[]),E((L=D.breakdown)!=null?L:[])}I(!1)}))},[a]);const R=()=>j(null,null,function*(){yield m(),i("/vendor/login")}),k=l.filter(t=>t.last_sign_in_at).length,F=d.filter(t=>t.status==="active").length,G=d.filter(t=>t.status==="pending").length;return e.jsxs(e.Fragment,{children:[e.jsxs(X,{children:[e.jsx("title",{children:"Admin Dashboard | CX Tools"}),e.jsx("meta",{name:"robots",content:"noindex"})]}),e.jsxs("div",{className:"min-h-screen bg-fiber-base",children:[e.jsx(J,{searchQuery:U,setSearchQuery:H}),e.jsxs("main",{className:"container max-w-6xl mx-auto px-4 md:px-6 py-12",children:[e.jsxs("div",{className:"flex items-start justify-between mb-8",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-3xl font-extrabold text-fiber-accent mb-1",children:"Admin Dashboard"}),e.jsx("p",{className:"text-fiber-accent/50 text-sm",children:a==null?void 0:a.email})]}),e.jsxs(W,{variant:"ghost",size:"sm",onClick:R,className:"text-fiber-accent/50 hover:text-fiber-accent",children:[e.jsx(ee,{className:"h-4 w-4 mr-1"}),"Sign out"]})]}),e.jsxs("div",{className:"grid grid-cols-2 sm:grid-cols-3 lg:grid-cols-5 gap-4 mb-8",children:[e.jsx(p,{label:"Total vendors",value:l.length,icon:e.jsx(K,{className:"h-5 w-5"})}),e.jsx(p,{label:"Logged in",value:k,icon:e.jsx(A,{className:"h-5 w-5 text-green-500"})}),e.jsx(p,{label:"Never logged in",value:l.length-k,icon:e.jsx(M,{className:"h-5 w-5 text-fiber-accent/40"})}),e.jsx(p,{label:"Active promotions",value:F,icon:e.jsx(Y,{className:"h-5 w-5 text-amber-500"})}),e.jsx(p,{label:"Pending bookings",value:G,icon:e.jsx(P,{className:"h-5 w-5 text-fiber-highlight"})})]}),d.length>0&&e.jsxs("div",{className:"border border-fiber-accent/20 mb-8",children:[e.jsx("div",{className:"px-5 py-3 border-b border-fiber-accent/10 bg-fiber-accent/5",children:e.jsxs("h2",{className:"font-semibold text-fiber-accent text-sm uppercase tracking-wider flex items-center gap-2",children:[e.jsx(P,{className:"h-4 w-4"}),"Promotion Bookings"]})}),e.jsxs("table",{className:"w-full text-sm",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-fiber-accent/10 text-left",children:[e.jsx("th",{className:"px-5 py-3 font-semibold text-fiber-accent/60 text-xs uppercase tracking-wider",children:"Tool"}),e.jsx("th",{className:"px-5 py-3 font-semibold text-fiber-accent/60 text-xs uppercase tracking-wider",children:"Slot"}),e.jsx("th",{className:"px-5 py-3 font-semibold text-fiber-accent/60 text-xs uppercase tracking-wider",children:"Status"}),e.jsx("th",{className:"px-5 py-3 font-semibold text-fiber-accent/60 text-xs uppercase tracking-wider",children:"Period"})]})}),e.jsx("tbody",{children:d.map(t=>{var h;const r=B.find(x=>x.id===t.tool_id);return e.jsxs("tr",{className:"border-b border-fiber-accent/10 last:border-0 hover:bg-fiber-accent/5 transition-colors",children:[e.jsx("td",{className:"px-5 py-4 text-fiber-accent font-medium",children:(h=r==null?void 0:r.name)!=null?h:t.tool_id}),e.jsx("td",{className:"px-5 py-4 text-fiber-accent/70 capitalize",children:t.slot_type}),e.jsx("td",{className:"px-5 py-4",children:e.jsx("span",{className:`inline-flex items-center gap-1 text-xs font-mono uppercase ${t.status==="active"?"text-green-600":t.status==="pending"?"text-amber-600":"text-fiber-accent/40"}`,children:t.status})}),e.jsxs("td",{className:"px-5 py-4 text-fiber-accent/60 text-xs",children:[t.starts_at?new Date(t.starts_at).toLocaleDateString("en-GB",{day:"numeric",month:"short"}):"—"," → ",t.ends_at?new Date(t.ends_at).toLocaleDateString("en-GB",{day:"numeric",month:"short"}):"—"]})]},t.id)})})]})]}),e.jsxs("div",{className:"border border-fiber-accent/20 mb-8",children:[e.jsx("div",{className:"px-5 py-3 border-b border-fiber-accent/10 bg-fiber-accent/5",children:e.jsx("h2",{className:"font-semibold text-fiber-accent text-sm uppercase tracking-wider",children:"Vendor Accounts"})}),z?e.jsx("p",{className:"p-6 text-sm text-fiber-accent/50",children:"Loading…"}):N?e.jsx("p",{className:"p-6 text-sm text-red-500",children:N}):l.length===0?e.jsx("p",{className:"p-6 text-sm text-fiber-accent/50",children:"No vend
1ors yet."}):e.jsxs("table",{className:"w-full text-sm",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-fiber-accent/10 text-left",children:[e.jsx("th",{className:"px-5 py-3 font-semibold text-fiber-accent/60 text-xs uppercase tracking-wider",children:"Email"}),e.jsx("th",{className:"px-5 py-3 font-semibold text-fiber-accent/60 text-xs uppercase tracking-wider",children:"Tool"}),e.jsx("th",{className:"px-5 py-3 font-semibold text-fiber-accent/60 text-xs uppercase tracking-wider",children:"Last login"}),e.jsx("th",{className:"px-5 py-3 font-semibold text-fiber-accent/60 text-xs uppercase tracking-wider",children:"Status"}),e.jsx("th",{className:"px-5 py-3 font-semibold text-fiber-accent/60 text-xs uppercase tracking-wider"})]})}),e.jsx("tbody",{children:l.map(t=>{var h;const r=B.find(x=>x.id===t.tool_id);return e.jsxs("tr",{className:"border-b border-fiber-accent/10 last:border-0 hover:bg-fiber-accent/5 transition-colors",children:[e.jsx("td",{className:"px-5 py-4 text-fiber-accent",children:(h=t.email)!=null?h:"—"}),e.jsx("td",{className:"px-5 py-4",children:r?e.jsx(T,{to:`/vendor/dashboard?preview=${t.tool_id}`,className:"text-fiber-highlight hover:underline font-medium",children:r.name}):e.jsx("span",{className:"text-fiber-accent/50",children:t.tool_id})}),e.jsx("td",{className:"px-5 py-4 text-fiber-accent/60",children:t.last_sign_in_at?e.jsxs("span",{className:"flex items-center gap-1.5",children:[e.jsx(Z,{className:"h-3.5 w-3.5"}),new Date(t.last_sign_in_at).toLocaleDateString("en-GB",{day:"numeric",month:"short",year:"numeric"})]}):e.jsx("span",{className:"text-fiber-accent/30 italic",children:"Never"})}),e.jsx("td",{className:"px-5 py-4",children:t.confirmed?e.jsxs("span",{className:"inline-flex items-center gap-1 text-green-600 text-xs font-mono uppercase",children:[e.jsx(A,{className:"h-3.5 w-3.5"}),"Active"]}):e.jsxs("span",{className:"inline-flex items-center gap-1 text-fiber-accent/40 text-xs font-mono uppercase",children:[e.jsx(M,{className:"h-3.5 w-3.5"}),"Pending"]})}),e.jsx("td",{className:"px-5 py-4",children:e.jsxs(T,{to:`/vendor/dashboard?preview=${t.tool_id}`,className:"inline-flex items-center gap-1 text-xs text-fiber-highlight hover:underline",children:[e.jsx(se,{className:"h-3.5 w-3.5"}),"Preview"]})})]},t.user_id)})})]})]}),e.jsxs("div",{className:"border border-fiber-accent/20 mb-8",children:[e.jsx("div",{className:"px-5 py-3 border-b border-fiber-accent/10 bg-fiber-accent/5",children:e.jsxs("h2",{className:"font-semibold text-fiber-accent text-sm uppercase tracking-wider flex items-center gap-2",children:[e.jsx(ae,{className:"h-4 w-4"}),"Click Analytics"]})}),O?e.jsx("p",{className:"p-6 text-sm text-fiber-accent/50",children:"Loading click data…"}):e.jsxs("div",{className:"p-5 space-y-8",children:[o.length>0&&e.jsxs("div",{children:[e.jsx("p",{className:"text-xs font-mono uppercase tracking-wider text-fiber-accent/50 mb-3",children:'All-time counts — outbound click = "Visit Website" button · detail view = tool page opened'}),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-fiber-accent/10 text-left",children:[e.jsx("th",{className:"pb-2 pr-6 font-semibold text-fiber-accent/60 text-xs uppercase tracking-wider",children:"Tool"}),e.jsx("th",{className:"pb-2 pr-6 font-semibold text-fiber-accent/60 text-xs uppercase tracking-wider",children:"Outbound clicks"}),e.jsx("th",{className:"pb-2 font-semibold text-fiber-accent/60 text-xs uppercase tracking-wider",children:"Detail views"})]})}),e.jsx("tbody",{children:o.slice(0,30).map(t=>e.jsxs("tr",{className:"border-b border-fiber-accent/10 last:border-0",children:[e.jsx("td",{className:"py-2 pr-6 text-fiber-accent",children:t.tool_name}),e.jsx("td",{className:"py-2 pr-6",children:e.jsx("span",{className:`font-mono font-bold ${t.outbound>0?"text-fiber-highlight":"text-fiber-accent/30"}`,children:t.outbound})}),e.jsx("td",{className:"py-2 text-fiber-accent/50 font-mono",children:t.detail})]},t.tool_name))})]})})]}),s.length>0&&e.jsxs("div",{children:[e.jsx("p",{className:"text-xs font-mono uppercase tracking-wider text-fiber-accent/50 mb-3",children:"Most recent 100 raw rows — check clicked_at timestamps for data quality"}),e.jsx("div",{className:"overflow-x-auto max-h-72 overflow-y-auto border border-fiber-accent/10",children:e.jsxs("table",{className:"w-full text-xs",children:[e.jsx("thead",{className:"sticky top-0 bg-white",children:e.jsxs("tr",{className:"border-b border-fiber-accent/10 text-left",children:[e.jsx("th",{className:"px-3 py-2 font-semibold text-fiber-accent/60 uppercase tracking-wider",children:"ID"}),e.jsx("th",{className:"px-3 py-2 font-semibold text-fiber-accent/60 uppercase tracking-wider",children:"Tool"}),e.jsx("th",{className:"px-3 py-2 font-semibold text-fiber-accent/60 uppercase tracking-wider",children:"Type"}),e.jsx("th",{className:"px-3 py-2 font-semibold text-fiber-accent/60 uppercase tracking-wider",children:"clicked_at (UTC)"})]})}),e.jsx("tbody",{children:s.map(t=>e.jsxs("tr",{className:"border-b border-fiber-accent/10 last:border-0 hover:bg-fiber-accent/5",children:[e.jsx("td",{className:"px-3 py-1.5 font-mono text-fiber-accent/40",children:t.id}),e.jsx("td",{className:"px-3 py-1.5 text-fiber-accent",children:t.tool_name}),e.jsx("td",{className:"px-3 py-1.5",children:e.jsx("span",{className:`font-mono ${t.event_type==="outbound_click"?"text-fiber-highlight":"text-fiber-accent/40"}`,children:t.event_type==="outbound_click"?"outbound":"detail"})}),e.jsx("td",{className:"px-3 py-1.5 font-mono text-fiber-accent/60",children:new Date(t.clicked_at).toISOString().replace("T"," ").slice(0,19)})]},t.id))})]})}),s.length>0&&e.jsxs("p",{className:"text-xs text-fiber-accent/40 mt-2",children:["Earliest in sample:"," ",new Date(s[s.length-1].clicked_at).toISOString().replace("T"," ").slice(0,19)," UTC"," · ","Latest:"," ",new Date(s[0].clicked_at).toISOString().replace("T"," ").slice(0,19)," UTC"]})]}),s.length===0&&o.length===0&&e.jsx("p",{className:"text-sm text-fiber-accent/40",children:"No click data yet."})]})]}),e.jsx(te,{layout:"inline"})]})]})]})}function p({label:a,value:m,icon:i}){return e.jsxs("div",{className:"border border-fiber-accent/20 p-5",children:[e.jsxs("div",{className:"flex items-center gap-2 text-fiber-accent/50 mb-2",children:[i,e.jsx("span",{className:"text-xs uppercase tracking-wider font-mono",children:a})]}),e.jsx("p",{className:"text-3xl font-extrabold text-fiber-accent",children:m})]})}
1export{he 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.