1import{r as b,an as m,j as e,_ as w,$ as f,bc as g,s as h}from"./index-CnwAbAWO.js";import{C as l,c}from"./card-qc-RJIJs.js";const C=()=>{const[n,p]=b.useState(""),{data:a=[],isLoading:j}=m({queryKey:["admin-gift-history"],queryFn:async()=>{const{data:t,error:s}=await h.from("gift_transactions").select("*").order("created_at",{ascending:!1}).limit(500);if(s)throw s;return t??[]}}),d=[...new Set(a.flatMap(t=>[t.sender_id,t.recipient_id]))],{data:u=[]}=m({queryKey:["admin-gift-members",d.join(",")],enabled:d.length>0,queryFn:async()=>{const{data:t}=await h.from("members").select("id, name, email").in("id",d);return t??[]}}),x=Object.fromEntries(u.map(t=>[t.id,t])),r=t=>{var s;return((s=x[t])==null?void 0:s.name)||t.slice(0,8)},i=t=>{var s;return((s=x[t])==null?void 0:s.email)||""},o=a.filter(t=>{if(!n)return!0;const s=n.toLowerCase();return r(t.sender_id).toLowerCase().includes(s)||r(t.recipient_id).toLowerCase().includes(s)||i(t.sender_id).toLowerCase().includes(s)||i(t.recipient_id).toLowerCase().includes(s)||t.status.toLowerCase().includes(s)}),N=a.filter(t=>t.status==="completed").reduce((t,s)=>t+s.price_cents,0);return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl font-bold text-white",children:"Gift History"}),e.jsx("p",{className:"text-white/50 text-sm",children:"Track all gift transactions between users"})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:[e.jsx(l,{className:"bg-neutral-900 border-white/10",children:e.jsxs(c,{className:"pt-4 pb-4",children:[e.jsx("p",{className:"text-white/50 text-xs",children:"Total Gifts"}),e.jsx("p",{className:"text-2xl font-bold text-white",children:a.length})]})}),e.jsx(l,{className:"bg-neutral-900 border-white/10",children:e.jsxs(c,{className:"pt-4 pb-4",children:[e.jsx("p",{className:"text-white/50 text-xs",children:"Completed"}),e.jsx("p",{className:"text-2xl font-bold text-emerald-400",children:a.filter(t=>t.status==="completed").length})]})}),e.jsx(l,{className:"bg-neutral-900 border-white/10",children:e.jsxs(c,{className:"pt-4 pb-4",children:[e.jsx("p",{className:"text-white/50 text-xs",children:"Total Revenue"}),e.jsxs("p",{className:"text-2xl font-bold text-amber-400",children:["$",(N/100).toFixed(2)]})]})})]}),e.jsxs("div",{className:"relative max-w-sm",children:[e.jsx(w,{className:"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-white/40"}),e.jsx(f,{placeholder:"Search by name, email, or status...",value:n,onChange:t=>p(t.target.value),className:"pl-9 bg-neutral-900 border-white/10 text-white"})]}),e.jsx(l,{className:"bg-neutral-900 border-white/10",children:e.jsx(c,{className:"p-0",children: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-white/10 text-white/50 text-xs",children:[e.jsx("th",{className:"text-left p-3",children:"Date"}),e.jsx("th",{className:"text-left p-3",children:"Sender"}),e.jsx("th",{className:"text-center p-3"}),e.jsx("th",{className:"text-left p-3",children:"Recipient"}),e.jsx("th",{className:"text-right p-3",children:"Minutes"}),e.jsx("th",{className:"text-right p-3",children:"Price"}),e.jsx("th",{className:"text-center p-3",children:"Status"})]})}),e.jsx("tbody",{children:j?e.jsx("tr",{children:e.jsx("td",{colSpan:7,className:"text-center text-white/40 py-8",children:"Loading..."})}):o.length===0?e.jsx("tr",{children:e.jsx("td",{colSpan:7,className:"text-center text-white/40 py-8",children:"No gift transactions found"})}):o.map(t=>e.jsxs("tr",{className:"border-b border-white/5 hover:bg-white/5",children:[e.jsxs("td",{className:"p-3 text-white/60 text-xs whitespace-nowrap",children:[new Date(t.created_at).toLocaleDateString()," ",new Date(t.created_at).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})]}),e.jsxs("td",{className:"p-3",children:[e.jsx("p",{className:"text-white font-medium text-xs",children:r(t.sender_id)}),e.jsx("p",{className:"text-white/40 text-[10px]",children:i(t.sender_id)})]}),e.jsx("td",{className:"p-3 text-center",children:e.jsx(g,{className:"w-4 h-4 text-emerald-400 mx-auto"})}),e.jsxs("td",{className:"p-3",children:[e.jsx("p",{className:"text-white font-medium text-xs",children:r(t.recipient_id)}),e.jsx("p",{className:"text-white/40 text-[10px]",children:i(t.recipient_id)})]}),e.jsx("td",{className:"p-3 text-right text-white font-medium text-xs",children:t.minutes_amount}),e.jsxs("td",{className:"p-3 text-right text-amber-400 font-bold text-xs",children:["$",(t.price_cents/100).toFixed(2)]}),e.jsx("td",{className:"p-3 text-center",children:e.jsx("span",{className:`text-[10px] font-bold px-2 py-0.5 rounded-full ${t.status==="completed"?"bg-emerald-500/20 text-emerald-400":t.status==="pending"?"bg-amber-500/20 text-amber-400":"bg-red-500/20 text-red-400"}`,children:t.status})})]},t.id))})]})})})})]})};export{C 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.