PageSourceSearch

https://www.machinecraft.org/assets/ServiceTicketDashboard-Dfn5k33t.js

js machinecraft.org collected 2026-10-08 21:34:29 UTC 16,286 bytes, 1 lines download raw bytes

1import{r as d,j as e}from"./vendor-react-B5jR4fe2.js";import{u as I,t as u}from"./index-Bc77KLPI.js";import{S as O}from"./SEOHead-lztdvS40.js";import{L as v,w as F,b6 as E,ar as D,b9 as W,q as y,af as N,S as q,ba as G,b3 as Q,b7 as w,am as H,m as B,a6 as U,b8 as V,c as X,bb as Y}from"./vendor-icons-COsjkDUz.js";import"./vendor-common-BG8TW9DD.js";import"./vendor-trpc-Dkx5Aa2n.js";import"./vendor-lenis-DEgUBGZs.js";import"./vendor-superjson-C2BHV6N2.js";import"./vendor-sonner-DMLtmxnD.js";import"./vendor-radix-BwKqL8A1.js";import"./vendor-tw-merge-D6B6e0vX.js";import"./i18n-languages-m5Rzj1N_.js";function J(){return""}function K(t){const c=Date.now()-new Date(t).getTime(),s=Math.floor(c/6e4);if(s<60)return`${s}m ago`;const r=Math.floor(s/60);return r<24?`${r}h ago`:`${Math.floor(r/24)}d ago`}const p={open:{label:"Open",color:"text-amber-400",bg:"bg-amber-400/10",border:"border-amber-400/30",icon:e.jsx(D,{"data-loc":"client/src/pages/ServiceTicketDashboard.tsx:80",size:12})},in_progress:{label:"In Progress",color:"text-blue-400",bg:"bg-blue-400/10",border:"border-blue-400/30",icon:e.jsx(v,{"data-loc":"client/src/pages/ServiceTicketDashboard.tsx:87",size:12,className:"motion-safe:animate-spin"})},waiting_parts:{label:"Waiting Parts",color:"text-orange-400",bg:"bg-orange-400/10",border:"border-orange-400/30",icon:e.jsx(y,{"data-loc":"client/src/pages/ServiceTicketDashboard.tsx:94",size:12})},resolved:{label:"Resolved",color:"text-emerald-400",bg:"bg-emerald-400/10",border:"border-emerald-400/30",icon:e.jsx(N,{"data-loc":"client/src/pages/ServiceTicketDashboard.tsx:101",size:12})},closed:{label:"Closed",color:"text-gray-500",bg:"bg-gray-500/10",border:"border-gray-500/30",icon:e.jsx(Y,{"data-loc":"client/src/pages/ServiceTicketDashboard.tsx:108",size:12})}},Z={low:"text-gray-400",normal:"text-blue-400",high:"text-orange-400",urgent:"text-red-400"};function ee({status:t}){const c=p[t]??p.open;return e.jsxs("span",{"data-loc":"client/src/pages/ServiceTicketDashboard.tsx:124",className:`inline-flex items-center gap-1 text-[11px] font-semibold px-2 py-0.5 rounded-full border ${c.color} ${c.bg} ${c.border}`,children:[c.icon,c.label]})}function h({label:t,value:c,icon:s,color:r,active:i,onClick:x}){return e.jsxs("button",{"data-loc":"client/src/pages/ServiceTicketDashboard.tsx:151",type:"button",onClick:x,className:`flex-1 min-w-[120px] rounded-2xl border p-4 text-left transition-all ${i?"border-[#f5c518]/50 bg-[#f5c518]/10":"border-white/8 bg-[#111] hover:border-white/20 hover:bg-[#161616]"}`,children:[e.jsx("div",{"data-loc":"client/src/pages/ServiceTicketDashboard.tsx:159",className:`w-8 h-8 rounded-xl flex items-center justify-center mb-3 ${r}`,children:s}),e.jsx("p",{"data-loc":"client/src/pages/ServiceTicketDashboard.tsx:160",className:"text-2xl font-bold text-white",children:c}),e.jsx("p",{"data-loc":"client/src/pages/ServiceTicketDashboard.tsx:161",className:"text-xs text-gray-500 mt-0.5",children:t})]})}function te({ticket:t,onDelete:c,onResume:s,onGenerateSummary:r,summaryLoading:i}){p[t.status]??p.open;const x=!["resolved","closed"].includes(t.status),b=["open","in_progress"].includes(t.status);return e.jsxs("div",{"data-loc":"client/src/pages/ServiceTicketDashboard.tsx:186",className:"bg-[#111] border border-white/8 rounded-2xl p-4 hover:border-white/15 transition-all group",children:[e.jsxs("div",{"data-loc":"client/src/pages/ServiceTicketDashboard.tsx:188",className:"flex items-start justify-between gap-3 mb-3",children:[e.jsxs("div",{"data-loc":"client/src/pages/ServiceTicketDashboard.tsx:189",className:"flex-1 min-w-0",children:[e.jsxs("div",{"data-loc":"client/src/pages/ServiceTicketDashboard.tsx:190",className:"flex items-center gap-2 mb-1 flex-wrap",children:[e.jsx("span",{"data-loc":"client/src/pages/ServiceTicketDashboard.tsx:191",className:"text-[11px] font-mono text-gray-500",children:t.ticketNumber}),e.jsx(ee,{"data-loc":"client/src/pages/ServiceTicketDashboard.tsx:192",status:t.status}),t.priority!=="normal"&&e.jsx("span",{"data-loc":"client/src/pages/ServiceTicketDashboard.tsx:194",className:`text-[10px] font-semibold uppercase ${Z[t.priority]??"text-gray-400"}`,children:t.priority})]}),e.jsx("h3",{"data-loc":"client/src/pages/ServiceTicketDashboard.tsx:199",className:"text-sm font-semibold text-white leading-snug line-clamp-2",children:t.subject})]}),e.jsxs("div",{"data-loc":"client/src/pages/ServiceTicketDashboard.tsx:201",className:"flex items-center gap-1 shrink-0 opacity-0 group-hover:opacity-100 transition-opacity",children:[b&&e.jsx("button",{"data-loc":"client/src/pages/ServiceTicketDashboard.tsx:203",type:"button",onClick:()=>s(t),className:"p-1.5 rounded-lg text-gray-400 hover:text-[#f5c518] hover:bg-[#f5c518]/10 transition-all",title:"Resume conversation",children:e.jsx(H,{"data-loc":"client/src/pages/ServiceTicketDashboard.tsx:208",size:14})}),x&&e.jsx("button",{"data-loc":"client/src/pages/ServiceTicketDashboard.tsx:212",type:"button",onClick:()=>c(t.id),className:"p-1.5 rounded-lg text-gray-400 hover:text-red-400 hover:bg-red-400/10 transition-all",title:"Delete ticket",children:e.jsx(w,{"data-loc":"client/src/pages/ServiceTicketDashboard.tsx:217",size:14})})]})]}),t.project&&e.jsxs("div",{"data-loc":"client/src/pages/ServiceTicketDashboard.tsx:225",className:"flex items-center gap-1.5 mb-3",children:[e.jsx(B,{"data-loc":"client/src/pages/ServiceTicketDashboard.tsx:226",size:11,className:"text-gray-600 shrink-0"}),e.jsxs("span",{"data-loc":"client/src/pages/ServiceTicketDashboard.tsx:227",className:"text-[11px] text-gray-500 truncate",children:[t.project.projectName," · ",t.project.machineModel]})]}),t.aiSummary?e.jsx("p",{"data-loc":"client/src/pages/ServiceTicketDashboard.tsx:235",className:"text-xs text-gray-400 leading-relaxed mb-3 line-clamp-2",children:t.aiSummary}):e.jsx("p",{"data-loc":"client/src/pages/ServiceTicketDashboard.tsx:237",className:"text-xs text-gray-600 italic mb-3 line-clamp-2",children:t.description.slice(0,120)}),e.jsxs("div",{"data-loc":"client/src/pages/ServiceTicketDashboard.tsx:241",className:"flex items-center justify-between gap-2",children:[e.jsxs("div",{"data-loc":"client/src/pages/ServiceTicketDashboard.tsx:242",className:"flex items-center gap-1 text-[11px] text-gray-600",children:[e.jsx(U,{"data-loc":"client/src/pages/ServiceTicketDashboard.tsx:243",size:11}),e.jsx("span",{"data-loc":"client/src/pages/ServiceTicketDashboard.tsx:244",children:K(t.createdAt)})]}),e.jsxs("div",{"data-loc":"client/src/pages/ServiceTicketDashboard.tsx:246",className:"flex items-center gap-2",children:[!t.aiSummary&&e.jsxs("button",{"data-loc":"client/src/pages/ServiceTicketDashboard.tsx:248",type:"button",onClick:()=>r(t.id),disabled:i,className:"text-[10px] text-gray-600 hover:text-[#f5c518] flex items-center gap-1 transition-colors disabled:opacity-60",children:[i?e.jsx(v,{"data-loc":"client/src/pages/ServiceTicketDashboard.tsx:253",size:10,
1className:"motion-safe:animate-spin"}):e.jsx(V,{"data-loc":"client/src/pages/ServiceTicketDashboard.tsx:253",size:10}),"AI Summary"]}),b&&e.jsxs("button",{"data-loc":"client/src/pages/ServiceTicketDashboard.tsx:258",type:"button",onClick:()=>s(t),className:"flex items-center gap-1 text-[11px] text-[#f5c518]/80 hover:text-[#f5c518] transition-colors",children:["Continue ",e.jsx(X,{"data-loc":"client/src/pages/ServiceTicketDashboard.tsx:262",size:11})]})]})]})]})}function pe(){const[,t]=I(),c=J(),[s,r]=d.useState("all"),[i,x]=d.useState(""),[b,S]=d.useState(new Set),[f,g]=d.useState(null);d.useEffect(()=>{t("/service")},[c,t]);const{data:C,isLoading:z,refetch:k}=u.servicePortal.getAllMyTickets.useQuery({token:c},{enabled:!1}),T=u.servicePortal.generateTicketSummary.useMutation({onSuccess:()=>k()}),m=u.servicePortal.deleteMyTicket.useMutation({onSuccess:()=>{g(null),k()}}),L=d.useCallback(async a=>{S(n=>new Set(n).add(a));try{await T.mutateAsync({token:c,ticketId:a})}finally{S(n=>{const l=new Set(n);return l.delete(a),l})}},[c,T]),M=d.useCallback(a=>{a.project&&t(`/portal/chat/${a.project.id}`)},[t]),o=C??[],P=o.filter(a=>a.status==="open").length,_=o.filter(a=>a.status==="in_progress").length,R=o.filter(a=>a.status==="waiting_parts").length,$=o.filter(a=>["resolved","closed"].includes(a.status)).length,j=o.filter(a=>{const n=s==="all"||a.status===s,l=i.toLowerCase(),A=!l||a.subject.toLowerCase().includes(l)||a.ticketNumber.toLowerCase().includes(l)||(a.project?.projectName??"").toLowerCase().includes(l)||(a.aiSummary??"").toLowerCase().includes(l);return n&&A});return z?e.jsx("div",{"data-loc":"client/src/pages/ServiceTicketDashboard.tsx:350",className:"min-h-screen bg-[#0a0a0a] flex items-center justify-center",children:e.jsx(v,{"data-loc":"client/src/pages/ServiceTicketDashboard.tsx:351",className:"text-[#f5c518] motion-safe:animate-spin",size:32})}):e.jsxs("div",{"data-loc":"client/src/pages/ServiceTicketDashboard.tsx:357",className:"min-h-screen bg-[#0a0a0a] text-white",children:[e.jsx(O,{"data-loc":"client/src/pages/ServiceTicketDashboard.tsx:358",title:"Service Tickets | Machinecraft Technologies",description:"View and manage all service tickets for your Machinecraft machines.",ogImageAlt:"Machinecraft service ticket dashboard",path:"/portal/tickets",noindex:!0}),e.jsxs("div",{"data-loc":"client/src/pages/ServiceTicketDashboard.tsx:366",className:"bg-[#0d0d0d] border-b border-white/8 px-4 py-3 flex items-center gap-3 sticky top-0 z-10",children:[e.jsx("button",{"data-loc":"client/src/pages/ServiceTicketDashboard.tsx:367",type:"button",onClick:()=>t("/service"),className:"text-gray-400 hover:text-white transition-colors",children:e.jsx(F,{"data-loc":"client/src/pages/ServiceTicketDashboard.tsx:368",size:18})}),e.jsxs("div",{"data-loc":"client/src/pages/ServiceTicketDashboard.tsx:370",className:"flex-1",children:[e.jsx("h1",{"data-loc":"client/src/pages/ServiceTicketDashboard.tsx:371",className:"text-sm font-bold text-white",children:"Service Tickets"}),e.jsxs("p",{"data-loc":"client/src/pages/ServiceTicketDashboard.tsx:372",className:"text-xs text-gray-500",children:[o.length," total tickets"]})]}),e.jsxs("button",{"data-loc":"client/src/pages/ServiceTicketDashboard.tsx:374",type:"button",onClick:()=>t("/service/chat"),className:"flex items-center gap-1.5 bg-[#f5c518] text-black text-xs font-bold px-3 py-1.5 rounded-xl hover:bg-[#f5c518]/90 transition-all",children:[e.jsx(E,{"data-loc":"client/src/pages/ServiceTicketDashboard.tsx:378",size:13}),"New Ticket"]})]}),e.jsxs("div",{"data-loc":"client/src/pages/ServiceTicketDashboard.tsx:383",className:"max-w-2xl mx-auto px-4 py-6 space-y-6",children:[e.jsxs("div",{"data-loc":"client/src/pages/ServiceTicketDashboard.tsx:385",className:"flex gap-3 overflow-x-auto pb-1",style:{scrollbarWidth:"none"},children:[e.jsx(h,{"data-loc":"client/src/pages/ServiceTicketDashboard.tsx:386",label:"Open",value:P,icon:e.jsx(D,{"data-loc":"client/src/pages/ServiceTicketDashboard.tsx:389",size:16}),color:"bg-amber-400/15 text-amber-400",active:s==="open",onClick:()=>r(s==="open"?"all":"open")}),e.jsx(h,{"data-loc":"client/src/pages/ServiceTicketDashboard.tsx:394",label:"In Progress",value:_,icon:e.jsx(W,{"data-loc":"client/src/pages/ServiceTicketDashboard.tsx:397",size:16}),color:"bg-blue-400/15 text-blue-400",active:s==="in_progress",onClick:()=>r(s==="in_progress"?"all":"in_progress")}),e.jsx(h,{"data-loc":"client/src/pages/ServiceTicketDashboard.tsx:402",label:"Waiting Parts",value:R,icon:e.jsx(y,{"data-loc":"client/src/pages/ServiceTicketDashboard.tsx:405",size:16}),color:"bg-orange-400/15 text-orange-400",active:s==="waiting_parts",onClick:()=>r(s==="waiting_parts"?"all":"waiting_parts")}),e.jsx(h,{"data-loc":"client/src/pages/ServiceTicketDashboard.tsx:410",label:"Resolved",value:$,icon:e.jsx(N,{"data-loc":"client/src/pages/ServiceTicketDashboard.tsx:413",size:16}),color:"bg-emerald-400/15 text-emerald-400",active:s==="resolved",onClick:()=>r(s==="resolved"?"all":"resolved")})]}),e.jsxs("div",{"data-loc":"client/src/pages/ServiceTicketDashboard.tsx:421",className:"flex gap-2",children:[e.jsxs("div",{"data-loc":"client/src/pages/ServiceTicketDashboard.tsx:422",className:"flex-1 relative",children:[e.jsx(q,{"data-loc":"client/src/pages/ServiceTicketDashboard.tsx:423",size:14,className:"absolute left-3 top-1/2 -translate-y-1/2 text-gray-500"}),e.jsx("input",{"data-loc":"client/src/pages/ServiceTicketDashboard.tsx:424",type:"text",placeholder:"Search tickets...",value:i,onChange:a=>x(a.target.value),className:"w-full bg-[#111] border border-white/8 rounded-xl pl-9 pr-4 py-2.5 text-sm text-white placeholder-gray-600 focus:outline-none focus:border-[#f5c518]/40 transition-colors"})]}),s!=="all"&&e.jsxs("button",{"data-loc":"client/src/pages/ServiceTicketDashboard.tsx:433",type:"button",onClick:()=>r("all"),className:"flex items-center gap-1.5 bg-[#111] border border-white/8 rounded-xl px-3 py-2 text-xs text-gray-400 hover:text-white transition-colors",children:[e.jsx(G,{"data-loc":"client/src/pages/ServiceTicketDashboard.tsx:437",size:12}),"Clear"]})]}),j.length===0?e.jsxs("div",{"data-loc":"client/src/pages/ServiceTicketDashboard.tsx:445",className:"text-center py-16",children:[e.jsx(Q,{"data-loc":"client/src/pages/ServiceTicketDashboard.tsx:446",size:40,className:"text-gray-700 mx-auto mb-4"}),o.length===0?e.jsxs(e.Fragment,{children:[e.jsx("p",{"data-loc":"client/src/pages/ServiceTicketDashboard.tsx:449",className:"text-gray-400 font-medium mb-1",children:"No service tickets yet"}),e.jsx("p",{"data-loc":"client/src/pages/ServiceTicketDashboard.tsx:450",className:"text-gray-600 text-sm mb-6",children:"Start a chat with our service assistant to log an issue"}),e.jsx("button",{"data-loc":"client/src/pages/ServiceTicketDashboard.tsx:451",type:"button",onClick:()=>t("/service/chat"),className:"bg-[#f5c518] text-black text-sm font-bold px-5 py-2.5 rounded-xl hover:bg-[#f5c518]/90 transition-all",children:"Start Service Chat"})]}):e.jsxs(e.Fragment,{children:[e.jsx("p",{"data-loc":"client/src/pages/ServiceTicketDashboard.tsx:460",className:"text-gray-400 font-medium mb-1",children:"No tickets match your filter"}),e.jsx("button",{"data-loc":"client/src/pages/ServiceTicketDashboard.tsx:461",type:"button",onClick:()=>{r("all"),x("")},className:"text-[#f5c518] text-sm hover:underline mt-2",children:"Clear filters"})]})]}):e.jsx("div",{"data-loc":"client/src/pages/ServiceTicketDashboard.tsx:471",className:"space-y-3",children:j.map(a=>e.jsx(te,{"data-loc":"client/src/pages/ServiceTicketDashboard.tsx:473",ticket:a,onDelete:n=>g(n),onResume:M,onGenerateSummary:L,summaryLoading:b.has(a.id)},a.id))})]}),f!==null&&e.jsx("div",{"data-loc":"client/src/pages/ServiceTicketDashboard.tsx:488",className:"fixed inset-0 bg-black/70 flex items-center justify-center z-50 p-4",children:e.jsxs("div",{"data-loc":"client/src/pages/ServiceTicketDashboard.tsx:489",className:"bg-[#111] border border-white/10 rounded-2xl p-6 max-w-sm w-full",children:[e.jsx("div",{"data-loc":"client/src/pages/ServiceTicketDashboard.tsx:490",className:"w-12 h-12 bg-red-500/15 rounded-2xl flex items-center justify-center mb-4",children:e.jsx(w,{"data-loc":"client/src/pages/ServiceTicketDashboard.tsx:491",size:20,className:"text-red-400"})}),e.jsx("h3",{"data-loc":"client/src/pages/ServiceTicketDashboard.tsx:493",className:"text-white font-bold mb-2",children:"Delete Ticket?"}),e.jsx("p",{"data-loc":"client/src/pages/ServiceTicketDashboard.tsx:494",className:"text-gray-400 text-sm mb-6",children:"This will permanently delete the ticket and all its messages. This action cannot be undone."}),e.jsxs("div",{"data-loc":"client/src/pages/ServiceTicketDashboard.tsx:497",className:"flex gap-3",children:[e.jsx("button",{"data-loc":"client/src/pages/ServiceTicketDashboard.tsx:498",type:"button",onClick:()=>g(null),className:"flex-1 bg-white/5 border border-white/10 text-white text-sm font-medium py-2.5 rounded-xl hover:bg-white/10 transition-all",children:"Cancel"}),e.jsx("button",{"data-loc":"client/src/pages/ServiceTicketDashboard.tsx:504",type:"button",onClick:()=>m.mutate({token:c,ticketId:f}),disabled:m.isPending,className:"flex-1 bg-red-500 text-white text-sm font-bold py-2.5 rounded-xl hover:bg-red-600 transition-all disabled:opacity-50",children:m.isPending?"Deleting...":"Delete"})]})]})})]})}export{pe 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.