1import{j as e,a0 as T,U as I,T as F,I as O,u as P,l as R,r as d,f as w,H as U}from"./index-D8E_HrJx.js";import{T as H,a as V,b as k,c as i,d as E,e as n}from"./table-B02VPaci.js";import{T as B,a as W}from"./TicketPriorityBadge-82JIByul.js";import{h as $}from"./moment-BLMuvzoS.js";import{S as h,a as p,b as j,c as g,d as o}from"./select-DmfS0kXM.js";import{S as q}from"./search-CgQjvGX3.js";import{L as Y}from"./loader-circle-CTJaw5SE.js";import"./badge-CHNsPq8A.js";import"./index-D3RLoQ46.js";import"./chevron-up-Dg2T6RKr.js";function z({tickets:l}){return l.length?e.jsx("div",{className:"bg-white rounded-2xl border border-slate-100 shadow-sm overflow-hidden",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs(H,{children:[e.jsx(V,{children:e.jsxs(k,{className:"bg-slate-50",children:[e.jsx(i,{className:"text-xs font-semibold",children:"Ticket"}),e.jsx(i,{className:"text-xs font-semibold",children:"Subject"}),e.jsx(i,{className:"text-xs font-semibold",children:"Customer"}),e.jsx(i,{className:"text-xs font-semibold",children:"Status"}),e.jsx(i,{className:"text-xs font-semibold",children:"Priority"}),e.jsx(i,{className:"text-xs font-semibold",children:"Category"}),e.jsx(i,{className:"text-xs font-semibold",children:"Agent"}),e.jsx(i,{className:"text-xs font-semibold",children:"SLA"}),e.jsx(i,{className:"text-xs font-semibold",children:"Updated"})]})}),e.jsx(E,{children:l.map(a=>e.jsxs(k,{className:"hover:bg-slate-50 cursor-pointer",children:[e.jsx(n,{children:e.jsx(T,{to:`/admin/support/ticket/${a.id}`,className:"text-xs font-mono text-indigo-600 hover:underline",children:a.ticket_number})}),e.jsx(n,{children:e.jsx(T,{to:`/admin/support/ticket/${a.id}`,className:"text-sm font-medium text-slate-900 hover:text-indigo-600 line-clamp-1 max-w-[200px] block",children:a.subject})}),e.jsx(n,{children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"w-6 h-6 rounded-full bg-slate-200 flex items-center justify-center flex-shrink-0",children:a.customer_avatar?e.jsx("img",{src:a.customer_avatar,alt:"",className:"w-full h-full rounded-full object-cover"}):e.jsx(I,{className:"w-3 h-3 text-slate-500"})}),e.jsx("span",{className:"text-xs text-slate-600 truncate max-w-[120px]",children:a.customer_name||a.customer_email})]})}),e.jsx(n,{children:e.jsx(B,{status:a.status})}),e.jsx(n,{children:e.jsx(W,{priority:a.priority})}),e.jsx(n,{children:e.jsx("span",{className:"text-xs text-slate-500",children:a.category||"â"})}),e.jsx(n,{children:e.jsx("span",{className:"text-xs text-slate-500",children:a.assigned_agent_name||"Unassigned"})}),e.jsx(n,{children:a.sla_status==="overdue"?e.jsxs("span",{className:"text-xs font-medium text-red-600 flex items-center gap-1",children:[e.jsx(F,{className:"w-3 h-3"}),"Overdue"]}):a.sla_status==="at_risk"?e.jsx("span",{className:"text-xs font-medium text-orange-600",children:"At Risk"}):e.jsx("span",{className:"text-xs text-slate-400",children:a.sla_status==="resolved"?"Resolved":"On Track"})}),e.jsx(n,{children:e.jsx("span",{className:"text-xs text-slate-400",children:$(a.updated_date).fromNow()})})]},a.id))})]})})}):e.jsx("div",{className:"bg-white rounded-2xl p-12 text-center border border-slate-100 shadow-sm",children:e.jsx("p",{className:"text-sm text-slate-500",children:"No tickets match your filters."})})}const D=[{value:"all",label:"All Statuses"},{value:"new",label:"New"},{value:"open",label:"Open"},{value:"in_progress",label:"In Progress"},{value:"waiting_on_customer",label:"Waiting on Customer"},{value:"waiting_on_support",label:"Waiting on Support"},{value:"resolved",label:"Resolved"},{value:"closed",label:"Closed"},{value:"reopened",label:"Reopened"}],G=[{value:"all",label:"All Priorities"},{value:"critical",label:"Critical"},{value:"urgent",label:"Urgent"},{value:"high",label:"High"},{value:"normal",label:"Normal"},{value:"low",label:"Low"}];function J({filters:l,onChange:a,categories:f,agents:b}){const c=(s,v)=>a({...l,[s]:v});return e.jsxs("div",{className:"flex flex-wrap gap-3 items-center",children:[e.jsxs("div",{className:"relative flex-1 min-w-[200px]",children:[e.jsx(q,{className:"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-slate-400"}),e.jsx(O,{placeholder:"Search tickets...",value:l.search||"",onChange:s=>c("search",s.target.value),className:"pl-9 rounded-xl"})]}),e.jsxs(h,{value:l.status||"all",onValueChange:s=>c("status",s),children:[e.jsx(p,{className:"w-[160px] rounded-xl",children:e.jsx(j,{})}),e.jsx(g,{children:D.map(s=>e.jsx(o,{value:s.value,children:s.label},s.value))})]}),e.jsxs(h,{value:l.priority||"all",onValueChange:s=>c("priority",s),children:[e.jsx(p,{className:"w-[150px] rounded-xl",children:e.jsx(j,{})}),e.jsx(g,{children:G.map(s=>e.jsx(o,{value:s.value,children:s.label},s.value))})]}),e.jsxs(h,{value:l.category||"all",onValueChange:s=>c("category",s),children:[e.jsx(p,{className:"w-[160px] rounded-xl",children:e.jsx(j,{})}),e.jsxs(g,{children:[e.jsx(o,{value:"all",children:"All Categories"}),(f||[]).map(s=>e.jsx(o,{value:s.name,children:s.name},s.id))]})]}),e.jsxs(h,{value:l.agent||"all",onValueChange:s=>c("agent",s),children:[e.jsx(p,{className:"w-[160px] rounded-xl",children:e.jsx(j,{})}),e.jsxs(g,{children:[e.jsx(o,{value:"all",children:"All Agents"}),e.jsx(o,{value:"unassigned",children:"Unassigned"}),(b||[]).map(s=>e.jsx(o,{value:s.email,children:s.full_name||s.email},s.email))]})]})]})}function re(){const{user:l}
1=P(),a=R(),[f,b]=d.useState([]),[c,s]=d.useState([]),[v,C]=d.useState([]),[S,A]=d.useState(!0),[t,L]=d.useState({search:"",status:"all",priority:"all",category:"all",agent:"all"});d.useEffect(()=>{if(l){if(l.role!=="admin"&&l.support_role!=="support_agent"&&l.support_role!=="support_manager"){a("/support");return}Promise.all([w.entities.SupportTicket.filter({},"-created_date",500),w.entities.SupportCategory.filter({is_active:!0},"sort_order",50),w.entities.User.filter({role:"admin"},"-created_date",100)]).then(([r,x,u])=>{b(r),s(x),C(u),A(!1)})}},[l]);const N=f.filter(r=>{var x,u,_,y;if(t.search){const m=t.search.toLowerCase();if(!((x=r.subject)!=null&&x.toLowerCase().includes(m))&&!((u=r.ticket_number)!=null&&u.toLowerCase().includes(m))&&!((_=r.customer_name)!=null&&_.toLowerCase().includes(m))&&!((y=r.customer_email)!=null&&y.toLowerCase().includes(m)))return!1}return!(t.status!=="all"&&r.status!==t.status||t.priority!=="all"&&r.priority!==t.priority||t.category!=="all"&&r.category!==t.category||t.agent==="unassigned"&&r.assigned_agent_email||t.agent!=="all"&&t.agent!=="unassigned"&&r.assigned_agent_email!==t.agent)});return S?e.jsx("div",{className:"min-h-screen flex items-center justify-center",style:{backgroundColor:"#F2F2F7"},children:e.jsx(Y,{className:"w-8 h-8 animate-spin text-purple-500"})}):e.jsxs("div",{className:"min-h-screen",style:{backgroundColor:"#F2F2F7"},children:[e.jsxs("div",{className:"bg-white px-4 pt-5 pb-5 md:px-8 md:pt-10 border-b border-slate-100",children:[e.jsxs("div",{className:"flex items-center gap-3 mb-4",children:[e.jsx(U,{className:"w-6 h-6 text-indigo-600"}),e.jsx("h1",{className:"text-xl md:text-2xl font-extrabold tracking-tight",style:{color:"#1C1C1E"},children:"All Tickets"}),e.jsxs("span",{className:"text-sm text-slate-400 ml-2",children:[N.length," result",N.length!==1?"s":""]})]}),e.jsx(J,{filters:t,onChange:L,categories:c,agents:v})]}),e.jsx("div",{className:"max-w-7xl mx-auto px-4 md:px-8 py-6",children:e.jsx(z,{tickets:N})})]})}export{re 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.