1import{r as i,j as e}from"./react-core-Bm2Tgkay.js";import{c as U,d as G,t as x,o as _,b as S}from"./index-DzU_n_eR.js";import{B as P}from"./badge-BvwQX87x.js";import{B as C}from"./button-DIzZirXq.js";import{C as B,c as z}from"./card-DBiTrsBa.js";import{D as A,a as E,b as V,c as H,d as F,e as $}from"./useComposition-CzJUH7ZJ.js";import{I as q}from"./input-DNYuYpWQ.js";import{L as m}from"./label-BX22j6l8.js";import{S as f,a as N,b,c as w,d as u}from"./select-D6d6L6zM.js";import{T as R}from"./textarea-CF-ic4xM.js";import{P as W}from"./plus-CGLdqiXy.js";import{M as J}from"./message-square-text-BeTTls5y.js";import"./data-client-BVkRvsMm.js";import"./index-47lbaGh3.js";import"./index-CNNaq2td.js";import"./index-CJAMpL9k.js";import"./index-BdQq_4o_.js";import"./index-C1EaGkWm.js";import"./index-Dkzgt3AI.js";import"./index-DFdKgMjI.js";import"./index-CDLILjaV.js";import"./index-CdBaep3J.js";/** 2 * @license lucide-react v0.453.0 - ISC 3 * 4 * This source code is licensed under the ISC license. 5 * See the LICENSE file in the root directory of this source tree. 6 */const K=U("Headphones",[["path",{d:"M3 14h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-7a9 9 0 0 1 18 0v7a2 2 0 0 1-2 2h-1a2 2 0 0 1-2-2v-3a2 2 0 0 1 2-2h3",key:"1xhozi"}]]),L={technical:"Techniek",facility:"Facilitair",hr:"Personeel",finance:"Financieel",other:"Overig"},T={low:"Laag",normal:"Normaal",high:"Hoog",urgent:"Urgent"},Q={open:"Open",in_progress:"In behandeling",waiting:"Wacht op reactie",resolved:"Opgelost",closed:"Gesloten"};function fe(){const{user:d}=G(),p=d?.role==="admin"||d?.role==="superadmin",r=x.serviceDesk.list.useQuery(),[o,g]=i.useState(!1),[c,n]=i.useState(null);return e.jsxs("div",{"data-loc":"client/src/pages/Servicedesk.tsx:29",className:"mx-auto w-full max-w-7xl space-y-6 p-4 sm:p-6 lg:p-8",children:[e.jsxs("header",{"data-loc":"client/src/pages/Servicedesk.tsx:30",className:"flex flex-col gap-4 sm:flex-row sm:items-end sm:justify-between",children:[e.jsxs("div",{"data-loc":"client/src/pages/Servicedesk.tsx:30",children:[e.jsx("p",{"data-loc":"client/src/pages/Servicedesk.tsx:30",className:"text-xs font-semibold uppercase tracking-[0.24em] text-primary",children:"Hulp binnen de praktijk"}),e.jsx("h1",{"data-loc":"client/src/pages/Servicedesk.tsx:30",className:"mt-2 text-3xl font-bold tracking-tight",children:"Interne servicedesk"}),e.jsx("p",{"data-loc":"client/src/pages/Servicedesk.tsx:30",className:"mt-2 max-w-2xl text-sm text-muted-foreground",children:"Meld technische, facilitaire of interne vragen. Gebruik deze module niet voor patiëntgegevens of medische dossiers."})]}),e.jsxs(C,{"data-loc":"client/src/pages/Servicedesk.tsx:30",className:"h-11",onClick:()=>g(!0),children:[e.jsx(W,{"data-loc":"client/src/pages/Servicedesk.tsx:30",className:"mr-2 h-4 w-4"}),"Nieuwe melding"]})]}),p&&e.jsxs("div",{"data-loc":"client/src/pages/Servicedesk.tsx:31",className:"flex items-center gap-2 rounded-2xl border border-primary/20 bg-primary/5 p-4 text-sm",children:[e.jsx(_,{"data-loc":"client/src/pages/Servicedesk.tsx:31",className:"h-5 w-5 text-primary"}),e.jsx("span",{"data-loc":"client/src/pages/Servicedesk.tsx:31",children:"Beheerders zien alle meldingen van deze praktijk en kunnen eigenaar, prioriteit en status bijwerken."})]}),e.jsxs("section",{"data-loc":"client/src/pages/Servicedesk.tsx:32",className:"grid gap-3 lg:grid-cols-2",children:[r.isLoading&&Array.from({length:4}).map((a,v)=>e.jsx("div",{"data-loc":"client/src/pages/Servicedesk.tsx:32",className:"h-36 animate-pulse rounded-2xl bg-muted"},v)),r.error&&e.jsx(B,{"data-loc":"client/src/pages/Servicedesk.tsx:32",children:e.jsx(z,{"data-loc":"client/src/pages/Servicedesk.tsx:32",className:"p-5 text-sm text-destructive",children:"Servicedeskmeldingen konden niet worden geladen."})}),r.data?.map(a=>e.jsxs("button",{"data-loc":"client/src/pages/Servicedesk.tsx:32",onClick:()=>n(a.id),className:"rounded-2xl border bg-card p-5 text-left transition-all hover:-translate-y-0.5 hover:border-primary/40 hover:shadow-md",children:[e.jsxs("div",{"data-loc":"client/src/pages/Servicedesk.tsx:32",className:"flex items-start justify-between gap-3",children:[e.jsxs("div",{"data-loc":"client/src/pages/Servicedesk.tsx:32",className:"min-w-0",children:[e.jsx("p",{"data-loc":"client/src/pages/Servicedesk.tsx:32",className:"truncate font-semibold",children:a.title}),e.jsx("p",{"data-loc":"client/src/pages/Servicedesk.tsx:32",className:"mt-1 line-clamp-2 text-sm text-muted-foreground",children:a.description})]}),e.jsx(P,{"data-loc":"client/src/pages/Servicedesk.tsx:32",variant:a.priority==="urgent"||a.priority==="high"?"destructive":"secondary",children:T[a.priority]})]}),e.jsxs("div",{"data-loc":"client/src/pages/Servicedesk.tsx:32",className:"mt-4 flex flex-wrap items-center gap-2 text-xs text-muted-foreground",children:[e.jsx(P,{"data-loc":"client/src/pages/Servicedesk.tsx:32",variant:"outline",children:Q[a.status]}),e.jsx("span",{"data-loc":"client/src/pages/Servicedesk.tsx:32",children:L[a.category]}),e.jsx("span",{"data-loc":"client/src/pages/Servicedesk.tsx:32",children:"·"}),e.jsx("span",{"data-loc":"client/src/pages/Servicedesk.tsx:32",children:new Date(a.updatedAt).toLocaleStr
6ing("nl-NL")})]})]},a.id)),!r.isLoading&&!r.data?.length&&e.jsx(B,{"data-loc":"client/src/pages/Servicedesk.tsx:32",className:"lg:col-span-2",children:e.jsxs(z,{"data-loc":"client/src/pages/Servicedesk.tsx:32",className:"flex min-h-44 items-center gap-4 p-6",children:[e.jsx(K,{"data-loc":"client/src/pages/Servicedesk.tsx:32",className:"h-10 w-10 text-primary"}),e.jsxs("div",{"data-loc":"client/src/pages/Servicedesk.tsx:32",children:[e.jsx("p",{"data-loc":"client/src/pages/Servicedesk.tsx:32",className:"font-semibold",children:"Nog geen zichtbare meldingen"}),e.jsx("p",{"data-loc":"client/src/pages/Servicedesk.tsx:32",className:"text-sm text-muted-foreground",children:"Nieuwe meldingen verschijnen hier voor de maker, toegewezen medewerker en beheerders."})]})]})})]}),e.jsx(X,{"data-loc":"client/src/pages/Servicedesk.tsx:33",open:o,onOpenChange:g}),e.jsx(Y,{"data-loc":"client/src/pages/Servicedesk.tsx:34",ticketId:c,onClose:()=>n(null),isAdmin:p})]})}function X({open:d,onOpenChange:p}){const r=x.useUtils(),[o,g]=i.useState(""),[c,n]=i.useState(""),[a,v]=i.useState("other"),[j,y]=i.useState("normal"),h=x.serviceDesk.create.useMutation({onSuccess:async()=>{await r.serviceDesk.list.invalidate(),S.success("Melding aangemaakt"),p(!1),g(""),n("")},onError:t=>S.error(t.message)});return e.jsx(A,{"data-loc":"client/src/pages/Servicedesk.tsx:42",open:d,onOpenChange:p,children:e.jsxs(E,{"data-loc":"client/src/pages/Servicedesk.tsx:42",children:[e.jsxs(V,{"data-loc":"client/src/pages/Servicedesk.tsx:42",children:[e.jsx(H,{"data-loc":"client/src/pages/Servicedesk.tsx:42",children:"Nieuwe servicedeskmelding"}),e.jsx(F,{"data-loc":"client/src/pages/Servicedesk.tsx:42",children:"Beschrijf alleen interne operationele informatie, geen medische of patiëntgegevens."})]}),e.jsxs("div",{"data-loc":"client/src/pages/Servicedesk.tsx:42",className:"space-y-4",children:[e.jsxs("div",{"data-loc":"client/src/pages/Servicedesk.tsx:42",children:[e.jsx(m,{"data-loc":"client/src/pages/Servicedesk.tsx:42",htmlFor:"ticket-title",children:"Onderwerp"}),e.jsx(q,{"data-loc":"client/src/pages/Servicedesk.tsx:42",id:"ticket-title",value:o,onChange:t=>g(t.target.value)})]}),e.jsxs("div",{"data-loc":"client/src/pages/Servicedesk.tsx:42",children:[e.jsx(m,{"data-loc":"client/src/pages/Servicedesk.tsx:42",htmlFor:"ticket-description",children:"Omschrijving"}),e.jsx(R,{"data-loc":"client/src/pages/Servicedesk.tsx:42",id:"ticket-description",rows:5,value:c,onChange:t=>n(t.target.value)})]}),e.jsxs("div",{"data-loc":"client/src/pages/Servicedesk.tsx:42",className:"grid gap-3 sm:grid-cols-2",children:[e.jsxs("div",{"data-loc":"client/src/pages/Servicedesk.tsx:42",children:[e.jsx(m,{"data-loc":"client/src/pages/Servicedesk.tsx:42",children:"Categorie"}),e.jsxs(f,{"data-loc":"client/src/pages/Servicedesk.tsx:42",value:a,onValueChange:t=>v(t),children:[e.jsx(N,{"data-loc":"client/src/pages/Servicedesk.tsx:42",children:e.jsx(b,{"data-loc":"client/src/pages/Servicedesk.tsx:42"})}),e.jsx(w,{"data-loc":"client/src/pages/Servicedesk.tsx:42",children:Object.entries(L).map(([t,k])=>e.jsx(u,{"data-loc":"client/src/pages/Servicedesk.tsx:42",value:t,children:k},t))})]})]}),e.jsxs("div",{"data-loc":"client/src/pages/Servicedesk.tsx:42",children:[e.jsx(m,{"data-loc":"client/src/pages/Servicedesk.tsx:42",children:"Prioriteit"}),e.jsxs(f,{"data-loc":"client/src/pages/Servicedesk.tsx:42",value:j,onValueChange:t=>y(t),children:[e.jsx(N,{"data-loc":"client/src/pages/Servicedesk.tsx:42",children:e.jsx(b,{"data-loc":"client/src/pages/Servicedesk.tsx:42"})}),e.jsx(w,{"data-loc":"client/src/pages/Servicedesk.tsx:42",children:Object.entries(T).map(([t,k])=>e.jsx(u,{"data-loc":"client/src/pages/Servicedesk.tsx:42",value:t,children:k},t))})]})]})]})]}),e.jsx($,{"data-loc":"client/src/pages/Servicedesk.tsx:42",children:e.jsx(C,{"data-loc":"client/src/pages/Servicedesk.tsx:42",disabled:!o.trim()||!c.trim()||h.isPending,onClick:()=>h.mutate({title:o.trim(),description:c.trim(),category:a,priority:j}),children:h.isPending?"Opslaanâ¦":"Melding opslaan"})})]})})}function Y({ticketId:d,onClose:p,isAdmin:r}){const o=x.useUtils(),g=x.org.members.useQuery(void 0,{enabled:!!(d&&r)}),c=x.serviceDesk.detail.useQuery({ticketId:d??0},{enabled:!!d}),[n,a]=i.useState(""),[v,j]=i.useState("open"),[y,h]=i.useState("normal"),[t,k]=i.useState("unassigned");i.useEffect(()=>{c.data&&(j(c.data.status),h(c.data.priority),k(c.data.assignedToId?String(c.data.assignedToId):"unassigned"))},[c.data?.id,c.data?.updatedAt]);const I=async()=>
6{await Promise.all([o.serviceDesk.list.invalidate(),o.serviceDesk.detail.invalidate()])},O=x.serviceDesk.comment.useMutation({onSuccess:async()=>{await I(),a(""),S.success("Reactie toegevoegd")},onError:s=>S.error(s.message)}),M=x.serviceDesk.update.useMutation({onSuccess:async()=>{await I(),S.success("Melding bijgewerkt")},onError:s=>S.error(s.message)}),l=c.data;return e.jsx(A,{"data-loc":"client/src/pages/Servicedesk.tsx:54",open:!!d,onOpenChange:s=>!s&&p(),children:e.jsxs(E,{"data-loc":"client/src/pages/Servicedesk.tsx:54",className:"max-h-[90vh] overflow-y-auto sm:max-w-2xl",children:[e.jsxs(V,{"data-loc":"client/src/pages/Servicedesk.tsx:54",children:[e.jsx(H,{"data-loc":"client/src/pages/Servicedesk.tsx:54",children:l?.title||"Melding ladenâ¦"}),e.jsx(F,{"data-loc":"client/src/pages/Servicedesk.tsx:54",children:l?`${L[l.category]} · aangemaakt ${new Date(l.createdAt).toLocaleString("nl-NL")}`:"Servicedeskmelding"})]}),c.error&&e.jsx("p",{"data-loc":"client/src/pages/Servicedesk.tsx:54",className:"text-sm text-destructive",children:"Deze melding is niet beschikbaar."}),l&&e.jsxs("div",{"data-loc":"client/src/pages/Servicedesk.tsx:54",className:"space-y-5",children:[e.jsx("p",{"data-loc":"client/src/pages/Servicedesk.tsx:54",className:"whitespace-pre-wrap rounded-2xl border bg-muted/30 p-4 text-sm",children:l.description}),r&&e.jsxs("div",{"data-loc":"client/src/pages/Servicedesk.tsx:54",className:"grid gap-3 rounded-2xl border p-4 sm:grid-cols-3",children:[e.jsxs("div",{"data-loc":"client/src/pages/Servicedesk.tsx:54",children:[e.jsx(m,{"data-loc":"client/src/pages/Servicedesk.tsx:54",children:"Status"}),e.jsxs(f,{"data-loc":"client/src/pages/Servicedesk.tsx:54",value:v,onValueChange:s=>j(s),children:[e.jsx(N,{"data-loc":"client/src/pages/Servicedesk.tsx:54",children:e.jsx(b,{"data-loc":"client/src/pages/Servicedesk.tsx:54"})}),e.jsx(w,{"data-loc":"client/src/pages/Servicedesk.tsx:54",children:Object.entries(Q).map(([s,D])=>e.jsx(u,{"data-loc":"client/src/pages/Servicedesk.tsx:54",value:s,children:D},s))})]})]}),e.jsxs("div",{"data-loc":"client/src/pages/Servicedesk.tsx:54",children:[e.jsx(m,{"data-loc":"client/src/pages/Servicedesk.tsx:54",children:"Prioriteit"}),e.jsxs(f,{"data-loc":"client/src/pages/Servicedesk.tsx:54",value:y,onValueChange:s=>h(s),children:[e.jsx(N,{"data-loc":"client/src/pages/Servicedesk.tsx:54",children:e.jsx(b,{"data-loc":"client/src/pages/Servicedesk.tsx:54"})}),e.jsx(w,{"data-loc":"client/src/pages/Servicedesk.tsx:54",children:Object.entries(T).map(([s,D])=>e.jsx(u,{"data-loc":"client/src/pages/Servicedesk.tsx:54",value:s,children:D},s))})]})]}),e.jsxs("div",{"data-loc":"client/src/pages/Servicedesk.tsx:54",children:[e.jsx(m,{"data-loc":"client/src/pages/Servicedesk.tsx:54",children:"Eigenaar"}),e.jsxs(f,{"data-loc":"client/src/pages/Servicedesk.tsx:54",value:t,onValueChange:k,children:[e.jsx(N,{"data-loc":"client/src/pages/Servicedesk.tsx:54",children:e.jsx(b,{"data-loc":"client/src/pages/Servicedesk.tsx:54"})}),e.jsxs(w,{"data-loc":"client/src/pages/Servicedesk.tsx:54",children:[e.jsx(u,{"data-loc":"client/src/pages/Servicedesk.tsx:54",value:"unassigned",children:"Niet toegewezen"}),g.data?.map(s=>e.jsx(u,{"data-loc":"client/src/pages/Servicedesk.tsx:54",value:String(s.id),children:s.name||s.email},s.id))]})]})]}),e.jsx(C,{"data-loc":"client/src/pages/Servicedesk.tsx:54",className:"sm:col-span-3",disabled:M.isPending,onClick:()=>M.mutate({ticketId:l.id,status:v,priority:y,assignedToId:t==="unassigned"?null:Number(t)}),children:"Beheerwijzigingen opslaan"})]}),e.jsxs("div",{"data-loc":"client/src/pages/Servicedesk.tsx:54",children:[e.jsxs("div",{"data-loc":"client/src/pages/Servicedesk.tsx:54",className:"mb-3 flex items-center gap-2",children:[e.jsx(J,{"data-loc":"client/src/pages/Servicedesk.tsx:54",className:"h-5 w-5 text-primary"}),e.jsx("h3",{"data-loc":"client/src/pages/Servicedesk.tsx:54",className:"font-semibold",children:"Reacties"})]}),e.jsxs("div",{"data-loc":"client/src/pages/Servicedesk.tsx:54",className:"space-y-2",children:[l.comments.map(s=>e.jsxs("div",{"data-loc":"client/src/pages/Servicedesk.tsx:54",className:"rounded-2xl border p-3",children:[e.jsxs("div",{"data-loc":"client/src/pages/Servicedesk.tsx:54",className:"flex justify-between gap-3 text-xs text-muted-foreground",children:[e.jsx("span",{"data-loc":"client/src/pages/Servicedesk.tsx:54",children:s.authorName||"Medewerker"}),e.jsx("span",{"data-loc":"client/src/pages/Servicedesk.tsx:54",children:new Date(s.createdAt).toLocaleStr
6ing("nl-NL")})]}),e.jsx("p",{"data-loc":"client/src/pages/Servicedesk.tsx:54",className:"mt-2 whitespace-pre-wrap text-sm",children:s.body})]},s.id)),!l.comments.length&&e.jsx("p",{"data-loc":"client/src/pages/Servicedesk.tsx:54",className:"text-sm text-muted-foreground",children:"Nog geen reacties."})]}),e.jsxs("div",{"data-loc":"client/src/pages/Servicedesk.tsx:54",className:"mt-3 flex flex-col gap-2 sm:flex-row",children:[e.jsx(R,{"data-loc":"client/src/pages/Servicedesk.tsx:54",value:n,onChange:s=>a(s.target.value),placeholder:"Voeg een interne reactie toe"}),e.jsx(C,{"data-loc":"client/src/pages/Servicedesk.tsx:54",disabled:!n.trim()||O.isPending,onClick:()=>O.mutate({ticketId:l.id,body:n.trim()}),children:"Reageren"})]})]})]})]})})}export{fe 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.