PageSourceSearch

https://gradzen.com/assets/AdminReports-CUyboH12.js

js gradzen.com collected 2026-10-05 04:28:05 UTC 6,684 bytes, 1 lines download raw bytes

1import{r as b,u as v,j as e}from"./vendor-query-B0-uRJqS.js";import{ay as o,az as x,aA as T,a4 as N,C as I,bw as R,ao as B,I as M,k as H,l as z,m as D,n as E,o as j,bF as K,bG as O,c8 as y,N as w,a0 as V,B as U,aK as G,s as C}from"./index-DNYOfx3x.js";import{D as Q}from"./DualLayout-Cj3Hqufw.js";import{T as W,a as X,b as S,c as m,d as $,e as u}from"./table-ALWKH3Dv.js";import{a as J}from"./vendor-react-CW1TH9gT.js";import"./vendor-radix-Mcgp0sn6.js";import"./vendor-charts-BGFylbhW.js";const _={open:{label:"Open",variant:"default",icon:T},in_progress:{label:"In Progress",variant:"secondary",icon:N},resolved:{label:"Resolved",variant:"outline",icon:I},closed:{label:"Closed",variant:"outline",icon:R}},L={low:{label:"Low",className:"bg-muted text-muted-foreground"},medium:{label:"Medium",className:"bg-yellow-100 text-yellow-800 dark:bg-yellow-900/30 dark:text-yellow-400"},high:{label:"High",className:"bg-destructive/10 text-destructive"}};function le(){const k=J(),[c,F]=b.useState(""),[p,q]=b.useState("all"),{data:a,isLoading:A}=v({queryKey:["admin-reports"],queryFn:async()=>{const{data:s,error:t}=await C.from("support_reports").select("*").order("created_at",{ascending:!1});if(t)throw t;return s}}),{data:r}=v({queryKey:["report-user-profiles",a==null?void 0:a.map(s=>s.user_id)],queryFn:async()=>{if(!a||a.length===0)return{};const s=[...new Set(a.map(n=>n.user_id))],{data:t,error:d}=await C.from("profiles").select("user_id, full_name, email, role").in("user_id",s);return d?{}:t.reduce((n,l)=>({...n,[l.user_id]:l}),{})},enabled:!!a&&a.length>0}),i=a==null?void 0:a.filter(s=>{var n,l,h,f;const t=s.subject.toLowerCase().includes(c.toLowerCase())||s.description.toLowerCase().includes(c.toLowerCase())||((l=(n=r==null?void 0:r[s.user_id])==null?void 0:n.full_name)==null?void 0:l.toLowerCase().includes(c.toLowerCase()))||((f=(h=r==null?void 0:r[s.user_id])==null?void 0:h.email)==null?void 0:f.toLowerCase().includes(c.toLowerCase())),d=p==="all"||s.status===p;return t&&d}),g=(a==null?void 0:a.reduce((s,t)=>(s[t.status]=(s[t.status]||0)+1,s),{}))||{};return e.jsx(Q,{title:"Support Reports",layoutType:"admin",children:e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-4",children:[e.jsx(o,{children:e.jsx(x,{className:"pt-4 pb-4",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-sm text-muted-foreground",children:"Open"}),e.jsx("p",{className:"text-2xl font-bold",children:g.open||0})]}),e.jsx(T,{className:"h-8 w-8 text-muted-foreground"})]})})}),e.jsx(o,{children:e.jsx(x,{className:"pt-4 pb-4",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-sm text-muted-foreground",children:"In Progress"}),e.jsx("p",{className:"text-2xl font-bold",children:g.in_progress||0})]}),e.jsx(N,{className:"h-8 w-8 text-muted-foreground"})]})})}),e.jsx(o,{children:e.jsx(x,{className:"pt-4 pb-4",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-sm text-muted-foreground",children:"Resolved"}),e.jsx("p",{className:"text-2xl font-bold",children:g.resolved||0})]}),e.jsx(I,{className:"h-8 w-8 text-muted-foreground"})]})})}),e.jsx(o,{children:e.jsx(x,{className:"pt-4 pb-4",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-sm text-muted-foreground",children:"Closed"}),e.jsx("p",{className:"text-2xl font-bold",children:g.closed||0})]}),e.jsx(R,{className:"h-8 w-8 text-muted-foreground"})]})})})]}),e.jsx(o,{children:e.jsx(x,{className:"pt-4 pb-4",children:e.jsxs("div",{className:"flex flex-col sm:flex-row gap-4",children:[e.jsxs("div",{className:"relative flex-1",children:[e.jsx(B,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),e.jsx(M,{placeholder:"Search by subject, description, or user...",value:c,onChange:s=>F(s.target.value),className:"pl-10"})]}),e.jsxs(H,{value:p,onValueChange:q,children:[e.jsx(z,{className:"w-[180px]",children:e.jsx(D,{placeholder:"Filter by status"})}),e.jsxs(E,{children:[e.jsx(j,{value:"all",children:"All Status"}),e.jsx(j,{value:"open",children:"Open"}),e.jsx(j,{value:"in_progress",children:"In Progress"}),e.jsx(j,{value:"resolved",children:"Resolved"}),e.jsx(j,{value:"closed",children:"Closed"})]})]})]})})}),e.jsxs(o,{children:[e.jsx(K,{children:e.jsxs(O,{className:"flex items-center gap-2",children:[e.jsx(y,{className:"h-5 w-5"}),"All Reports (",(i==null?void 0:i.length)||0,")"]})}),e.jsx(x,{children:A?e.jsx("div",{className:"flex items-center justify-center py-12",children:e.jsx(N,{className:"h-8 w-8 animate-spin text-muted-foreground"})}):i&&i.length>0?e.jsx("div",{className:"overflow-x-auto",children:e.jsxs(W,{children:[e.jsx(X,{children:e.jsxs(S,{children:[e.jsx(m,{children:"Subject"}),e.jsx(m,{children:"Submitted By"}),e.jsx(m,{children:"Status"}),e.jsx(m,{children:"Priority"}),e.jsx(m,{children:"Created"}),e.jsx(m,{className:"text-right",children:"Action"})]})}),e.jsx($,{children:i.map(s=>{var h;const t=_[s.status]||_.open,d=L[s.priority]||L.medium,n=t.icon,l=r==null?void 0:r[s.user_id];return e.jsxs(S,{className:"cursor-pointer hover:bg-muted/50",children:[e.jsx(u,{className:"font-medium max-w-[200px]",children:e.jsx("span",{className:"line-clamp-1",children:s.subject})}),e.jsx(u,{children:e.jsxs("div",{className:"flex flex-col",children:[e.jsx("span",{className:"text-sm",children:(l==null?void 0:l.full_name)||"Unknown"}),e.jsx("span",{className:"text-xs text-muted-foreground capitalize",children:((h=l==null?void 0:l.role)==null?void 0:h.replace("_"," "))||"User"})]})}),e.jsx(u,{children:e.jsxs(w,{variant:t.variant,className:"gap-1",children:[e.jsx(n,{className:"h-3 w-3"}),t.label]})}),e.jsx(u,{children:e.jsx(w,{className:d.className,children:d.label})}),e.jsx(u,{className:"text-sm text-muted-foreground",children:V(new Date(s.created_at),"MMM d, yyyy")}),e.jsx(u,{className:"text-right",children:e.jsxs(U,{variant:"ghost",size:"sm",onClick:()=>k(`/admin/reports/${s.id}`),className:"gap-2",children:[e.jsx(G,{className:"h-4 w-4"}),"View"]}
1)})]},s.id)})})]})}):e.jsxs("div",{className:"flex flex-col items-center justify-center py-12 text-center",children:[e.jsx(y,{className:"h-12 w-12 text-muted-foreground mb-4"}),e.jsx("h3",{className:"text-lg font-semibold mb-2",children:"No Reports Found"}),e.jsx("p",{className:"text-muted-foreground",children:c||p!=="all"?"Try adjusting your filters":"No support reports have been submitted yet"})]})})]})]})})}export{le 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.