PageSourceSearch

https://physiotherapie-neumarkt.com/assets/AdminTermine-8v652IkF.js

js physiotherapie-neumarkt.com collected 2026-10-04 11:41:55 UTC 22,277 bytes, 1 lines download raw bytes

1import{r as e,j as s,aI as t,L as a,ac as n,a8 as i,m as r,as as c,a9 as l,e as d,f as m,aA as o,am as x,a6 as g,aJ as p,a7 as h,aa as u}from"./vendor-react-C5ovwhbY.js";import{t as b,g as A}from"./index-DuPIlGcU.js";import{u as j}from"./useAuth-BY1CVM1-.js";import{C as T,a as f,B as N,b as v,c as w}from"./card-6yT5Xj59.js";import"./vendor-data-DAQqzyPr.js";import"./vendor-CsJJJphP.js";import"./vendor-utils-DeoVgzSG.js";let y=[],S=[];function k(){y.forEach(e=>e([...S]))}function D(){return{toast:e.useCallback(e=>{!function(e){const s=Math.random().toString(36).slice(2);S=[...S,{...e,id:s}],k(),setTimeout(()=>{S=S.filter(e=>e.id!==s),k()},4e3)}(e)},[])}}const M=["16:20 – 17:00","17:00 – 17:40","17:40 – 18:20"],B=["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"];const z={pending:{label:"Ausstehend",color:"bg-amber-100 text-amber-800 border-amber-200",icon:s.jsx(u,{"data-loc":"client/src/pages/AdminTermine.tsx:64",className:"w-3 h-3"})},confirmed:{label:"Bestätigt",color:"bg-green-100 text-green-800 border-green-200",icon:s.jsx(o,{"data-loc":"client/src/pages/AdminTermine.tsx:65",className:"w-3 h-3"})},cancelled:{label:"Abgesagt",color:"bg-red-100 text-red-800 border-red-200",icon:s.jsx(x,{"data-loc":"client/src/pages/AdminTermine.tsx:66",className:"w-3 h-3"})}};function C(){const{user:u,loading:y}=j(),{toast:S}=D(),k=new Date,[C,F]=e.useState(k.getFullYear()),[E,$]=e.useState(k.getMonth()+1),[K,G]=e.useState(null),[Z,J]=e.useState(""),[L,P]=e.useState(!1),[Q,I]=e.useState(null),U=b.useUtils(),{data:V,isLoading:W}=b.booking.getAvailability.useQuery({year:C,month:E}),{data:Y,isLoading:H}=b.booking.getBookings.useQuery({year:C,month:E,status:"all"},{enabled:"admin"===u?.role}),{data:O}=b.booking.getBlockedSlots.useQuery({year:C,month:E},{enabled:"admin"===u?.role}),q=b.booking.blockSlot.useMutation({onSuccess:()=>{U.booking.getAvailability.invalidate(),U.booking.getBlockedSlots.invalidate(),S({title:"Gesperrt",description:"Termin wurde erfolgreich gesperrt."}),P(!1),J("")},onError:e=>S({title:"Fehler",description:e.message,variant:"destructive"})}),R=b.booking.unblockSlot.useMutation({onSuccess:()=>{U.booking.getAvailability.invalidate(),U.booking.getBlockedSlots.invalidate(),S({title:"Freigegeben",description:"Sperre wurde aufgehoben."})},onError:e=>S({title:"Fehler",description:e.message,variant:"destructive"})}),X=b.booking.updateStatus.useMutation({onSuccess:()=>{U.booking.getBookings.invalidate(),S({title:"Status aktualisiert"})},onError:e=>S({title:"Fehler",description:e.message,variant:"destructive"})}),_=function(e,s){return new Date(e,s,0).getDate()}(C,E),ee=function(e,s){const t=new Date(e,s-1,1).getDay();return 0===t?6:t-1}(C,E),se=e.useMemo(()=>{const e=new Set;return V?.blocked?.forEach(s=>{s.timeSlot||e.add(s.dateStr)}),e},[V]),te=e.useMemo(()=>{const e={};return V?.bookedSlots?.forEach(s=>{e[s.dateStr]||(e[s.dateStr]=[]),e[s.dateStr].push(s.timeSlot)}),e},[V]),ae=e.useMemo(()=>K&&Y?Y.filter(e=>e.dateStr===K):[],[K,Y]),ne=e.useMemo(()=>K&&O?O.filter(e=>e.dateStr===K):[],[K,O]);return y?s.jsx("div",{"data-loc":"client/src/pages/AdminTermine.tsx:165",className:"min-h-screen flex items-center justify-center bg-[#f8f5f0]",children:s.jsx("div",{"data-loc":"client/src/pages/AdminTermine.tsx:166",className:"animate-spin rounded-full h-8 w-8 border-b-2 border-[#2d5a3d]"})}):u?"admin"!==u.role?s.jsx("div",{"data-loc":"client/src/pages/AdminTermine.tsx:195",className:"min-h-screen flex items-center justify-center bg-[#f8f5f0]",children:s.jsx(T,{"data-loc":"client/src/pages/AdminTermine.tsx:196",className:"max-w-md w-full mx-4",children:s.jsxs(f,{"data-loc":"client/src/pages/AdminTermine.tsx:197",className:"pt-8 pb-8 text-center",children:[s.jsx(t,{"data-loc":"client/src/pages/AdminTermine.tsx:198",className:"w-12 h-12 text-amber-500 mx-auto mb-4"}),s.jsx("h2",{"data-loc":"client/src/pages/AdminTermine.tsx:199",className:"text-xl font-semibold text-gray-800 mb-2",children:"Kein Zugriff"}),s.jsx("p",{"data-loc":"client/src/pages/AdminTermine.tsx:200",className:"text-gray-500 mb-2",children:"Ihr Konto hat keine Admin-Berechtigung."}),s.jsxs("p",{"data-loc":"client/src/pages/AdminTermine.tsx:201",className:"text-gray-400 text-sm mb-6",children:["Eingeloggt als: ",s.jsx("strong",{"data-loc":"client/src/pages/AdminTermine.tsx:201",children:u.name})," (",u.role,")"]}),s.jsx("p",{"data-loc":"client/src/pages/AdminTermine.tsx:202",className:"text-gray-400 text-xs mb-6",children:"Bitte wenden Sie sich an den Websitebetreiber, um Admin-Zugriff zu erhalten."}),s.jsx(a,{"data-loc":"client/src/pages/AdminTermine.tsx:203",href:"/",children:s.jsx(N,{"data-loc":"client/src/pages/AdminTermine.tsx:204",variant:"outline",className:"w-full",children:"Zur Startseite"})})]})})}):s.jsxs("div",{"data-loc":"client/src/pages/AdminTermine.tsx:213",className:"min-h-screen bg-[#f8f5f0]",children:[s.jsxs("div",{"data-loc":"client/src/pages/AdminTermine.tsx:215",className:"bg-[#2d5a3d] text-white px-6 py-4 flex items-center gap-4",children:[s.jsx(a,{"data-loc":"client/src/pages/AdminTermine.tsx:216",href:"/",children:s.jsxs("button",{"data-loc":"client/src/pages/AdminTermine.tsx:217",className:"flex items-center gap-2 text-white/80 hover:text-white transition-colors text-sm",children:[s.jsx(n,{"data-loc":"client/src/pages/AdminTermine.tsx:218",className:"w-4 h-4"}),"Zur Website"]})}),s.jsx("div",{"data-loc":"client/src/pages/AdminTermine.tsx:222",className:"h-4 w-px bg-white/30"}),s.jsx(i,{"data-loc":"client/src/pages/AdminTermine.tsx:223",className:"w-5 h-5"}),s.jsx("h1",{"data-loc":"client/src/pages/AdminTermine.tsx:224",className:"text-lg font-semibold",children:"Terminverwaltung"}),s.jsxs(a,{"data-loc":"client/src/pages/AdminTermine.tsx:225",href:"/admin/vital-check",className:"ml-2 hidden items-center gap-1.5 rounded-md bg-white/10 px-3 py-1.5 text-xs font-semibold text-white transition-colors hover:bg-white/20 sm:inline-flex",children:[s.jsx(r,{"data-loc":"client/src/pages/AdminTermine.tsx:229",className:"h-3.5 w-3.5","aria-hidden":"true"}),"Vital-Check-Auswertung"]}),s.jsxs("span",{"data-loc":"client/src/pages/AdminTermine.tsx:232",className:"ml-auto text-white/70 text-sm",children:["Admin: ",u.name]})]}),s.jsxs("div",{"data-loc":"client/src/pages/AdminTermine.tsx:235",className:"max-w-7xl mx-auto px-4 py-6 grid grid-cols-1 lg:grid-cols-3 gap-6",children:[s.jsxs("div",{"data-loc":"client/src/pages/AdminTermine.tsx:237",className:"lg:col-span-2",children:[s.jsxs(T,{"data-loc":"client/src/pages/AdminTermine.tsx:238",children:[s.jsxs(v,{"data-loc":"client/src/pages/AdminTermine.tsx:239",className:"pb-2",children:[s.jsxs("div",{"data-loc":"client/src/pages/AdminTermine.tsx:240",className:"flex items-center justify-between",children:[s.jsxs(w,{"data-loc":"client/src/pages/AdminTermine.tsx:241",className:"text-lg text-[#2d5a3d]",children:[B[E-1]," ",C]}),s.jsxs("div",{"data-loc":"client/src/pages/AdminTermine.tsx:244",className:"flex gap-2",children:[s.jsx(N,{"data-loc":"client/src/pages/AdminTermine.tsx:245",variant:"outline",size:"sm",onClick:()=>{1===E?(F(e=>e-1),$(12)):$(e=>e-1),G(null)},children:s.jsx(c,{"data-loc":"client/src/pages/AdminTermine.tsx:246",className:"w-4 h-4"})}),s.jsx(N,{"data-loc":"client/src/pages/AdminTermine.tsx:248",variant:"outline",size:"sm",onClick:()=>{12===E?(F(e=>e+1),$(1)):$(e=>e+1),G(null)},children:s.jsx(l,{"data-loc":"client/src/pages/AdminTermine.tsx:249",className:"w-4 h-4"})})]})]}),s.jsx("p",{"data-loc":"client/src/pages/AdminTermine.tsx:253",className:"text-xs text-gray-500",children:"Nur Montag und Dienstag sind buchbar · Klicken Sie auf einen Tag für Details"})]}),s.jsxs(f,{"data-loc":"client/src/pages/AdminTermine.tsx:255",children:[s.jsx("div",{"data-loc":"client/src/pages/AdminTermine.tsx:257",className:"grid grid-cols-7 mb-2",children:["Mo","Di","Mi","Do","Fr","Sa","So"].map(e=>s.jsx("div",{"data-loc":"client/src/pages/AdminTermine.tsx:259",className:"text-center text-xs font-medium py-1 "+("Mo"===e||"Di"===e?"text-[#2d5a3d]":"text-gray-400"),children:e},e))}),s.jsxs("div",{"data-loc":"client/src/pages/AdminTermine.tsx:266",className:"grid grid-cols-7 gap-1",children:[Array.from({length:ee}).map((e,t)=>s.jsx("div",{"data-loc":"client/src/pages/AdminTermine.tsx:269"},`empty-${t}`)),Array.from({length:_}).map((e,t)=>{const a=t+1,n=function(e,s,t){return`${e}-${String(s).padStart(2,"0")}-${String(t).padStart(2,"0")}`}(C,E,a),i=function(e,s,t){const a=new Date(e,s-1,t).getDay();return 1===a||2===a}(C,E,a),r=se.has(n),c=te[n]?.length??0,l=K===n,d=new Date(C,E-1,a)<new Date(k.getFullYear(),k.getMonth(),k.getDate());let m="relative rounded-lg p-1 text-center text-sm cursor-pointer transition-all ";return m+=l?"ring-2 ring-[#2d5a3d] bg-[#2d5a3d] text-white ":r&&i?"bg-red-100 text-red-700 border border-red-200 "
1:i&&!d?"bg-[#e8f4ec] text-[#2d5a3d] hover:bg-[#2d5a3d] hover:text-white border border-[#c8e6d0] ":i&&d?"bg-gray-50 text-gray-400 border border-gray-100 cursor-default ":"text-gray-300 cursor-default ",s.jsxs("div",{"data-loc":"client/src/pages/AdminTermine.tsx:296",className:m,onClick:()=>i&&G(n),children:[s.jsx("span",{"data-loc":"client/src/pages/AdminTermine.tsx:301",className:"font-medium",children:a}),c>0&&!l&&s.jsx("span",{"data-loc":"client/src/pages/AdminTermine.tsx:303",className:"absolute top-0.5 right-0.5 w-2 h-2 bg-amber-400 rounded-full",title:`${c} Buchung(en)`}),r&&!l&&i&&s.jsx("span",{"data-loc":"client/src/pages/AdminTermine.tsx:306",className:"absolute bottom-0.5 left-1/2 -translate-x-1/2 text-[8px] text-red-500",children:"gesperrt"})]},a)})]}),s.jsxs("div",{"data-loc":"client/src/pages/AdminTermine.tsx:314",className:"mt-4 flex flex-wrap gap-3 text-xs text-gray-500",children:[s.jsxs("span",{"data-loc":"client/src/pages/AdminTermine.tsx:315",className:"flex items-center gap-1",children:[s.jsx("span",{"data-loc":"client/src/pages/AdminTermine.tsx:315",className:"w-3 h-3 rounded bg-[#e8f4ec] border border-[#c8e6d0] inline-block"})," Verfügbar (Mo/Di)"]}),s.jsxs("span",{"data-loc":"client/src/pages/AdminTermine.tsx:316",className:"flex items-center gap-1",children:[s.jsx("span",{"data-loc":"client/src/pages/AdminTermine.tsx:316",className:"w-3 h-3 rounded bg-red-100 border border-red-200 inline-block"})," Gesperrt"]}),s.jsxs("span",{"data-loc":"client/src/pages/AdminTermine.tsx:317",className:"flex items-center gap-1",children:[s.jsx("span",{"data-loc":"client/src/pages/AdminTermine.tsx:317",className:"w-2 h-2 rounded-full bg-amber-400 inline-block"})," Hat Buchungen"]})]})]})]}),s.jsxs(T,{"data-loc":"client/src/pages/AdminTermine.tsx:323",className:"mt-4",children:[s.jsx(v,{"data-loc":"client/src/pages/AdminTermine.tsx:324",className:"pb-2",children:s.jsxs(w,{"data-loc":"client/src/pages/AdminTermine.tsx:325",className:"text-base text-[#2d5a3d]",children:["Alle Buchungen – ",B[E-1]," ",C]})}),s.jsx(f,{"data-loc":"client/src/pages/AdminTermine.tsx:329",children:H?s.jsx("div",{"data-loc":"client/src/pages/AdminTermine.tsx:331",className:"text-center py-4 text-gray-400 text-sm",children:"Lade Buchungen..."}):Y&&0!==Y.length?s.jsx("div",{"data-loc":"client/src/pages/AdminTermine.tsx:335",className:"space-y-2",children:Y.map(e=>s.jsxs("div",{"data-loc":"client/src/pages/AdminTermine.tsx:337",className:"flex items-center gap-3 p-3 bg-gray-50 rounded-lg border border-gray-100",children:[s.jsxs("div",{"data-loc":"client/src/pages/AdminTermine.tsx:338",className:"flex-1 min-w-0",children:[s.jsxs("div",{"data-loc":"client/src/pages/AdminTermine.tsx:339",className:"flex items-center gap-2 flex-wrap",children:[s.jsx("span",{"data-loc":"client/src/pages/AdminTermine.tsx:340",className:"font-medium text-sm text-gray-800",children:e.patientName}),s.jsxs("span",{"data-loc":"client/src/pages/AdminTermine.tsx:341",className:"text-xs text-gray-500",children:[e.dateStr," · ",e.timeSlot]}),s.jsxs("span",{"data-loc":"client/src/pages/AdminTermine.tsx:342",className:`inline-flex items-center gap-1 px-2 py-0.5 rounded-full text-xs border ${z[e.status].color}`,children:[z[e.status].icon,z[e.status].label]})]}),s.jsxs("div",{"data-loc":"client/src/pages/AdminTermine.tsx:347",className:"flex items-center gap-3 mt-1 text-xs text-gray-500",children:[s.jsxs("span",{"data-loc":"client/src/pages/AdminTermine.tsx:348",className:"flex items-center gap-1",children:[s.jsx(d,{"data-loc":"client/src/pages/AdminTermine.tsx:348",className:"w-3 h-3"}),e.patientPhone]}),s.jsxs("span",{"data-loc":"client/src/pages/AdminTermine.tsx:349",className:"flex items-center gap-1",children:[s.jsx(m,{"data-loc":"client/src/pages/AdminTermine.tsx:349",className:"w-3 h-3"}),e.patientEmail]})]})]}),s.jsxs("div",{"data-loc":"client/src/pages/AdminTermine.tsx:352",className:"flex gap-1 shrink-0",children:["confirmed"!==e.status&&s.jsx("button",{"data-loc":"client/src/pages/AdminTermine.tsx:354",onClick:()=>X.mutate({id:e.id,status:"confirmed"}),className:"p-1.5 rounded-md bg-green-50 text-green-600 hover:bg-green-100 transition-colors",title:"Bestätigen",children:s.jsx(o,{"data-loc":"client/src/pages/AdminTermine.tsx:359",className:"w-4 h-4"})}),"cancelled"!==e.status&&s.jsx("button",{"data-loc":"client/src/pages/AdminTermine.tsx:363",onClick:()=>X.mutate({id:e.id,status:"cancelled"}),className:"p-1.5 rounded-md bg-red-50 text-red-600 hover:bg-red-100 transition-colors",title:"Absagen",children:s.jsx(x,{"data-loc":"client/src/pages/AdminTermine.tsx:368",className:"w-4 h-4"})})]})]},e.id))}):s.jsx("div",{"data-loc":"client/src/pages/AdminTermine.tsx:333",className:"text-center py-4 text-gray-400 text-sm",children:"Keine Buchungen in diesem Monat."})})]})]}),s.jsxs("div",{"data-loc":"client/src/pages/AdminTermine.tsx:381",className:"space-y-4",children:[K?s.jsx(s.Fragment,{children:s.jsxs(T,{"data-loc":"client/src/pages/AdminTermine.tsx:384",children:[s.jsx(v,{"data-loc":"client/src/pages/AdminTermine.tsx:385",className:"pb-2",children:s.jsxs(w,{"data-loc":"client/src/pages/AdminTermine.tsx:386",className:"text-base text-[#2d5a3d] flex items-center gap-2",children:[s.jsx(i,{"data-loc":"client/src/pages/AdminTermine.tsx:387",className:"w-4 h-4"}),new Date(K+"T12:00:00").toLocaleDateString("de-DE",{weekday:"long",day:"2-digit",month:"long"})]})}),s.jsxs(f,{"data-loc":"client/src/pages/AdminTermine.tsx:391",className:"space-y-3",children:[se.has(K)?s.jsx("div",{"data-loc":"client/src/pages/AdminTermine.tsx:407",className:"text-xs text-red-600 bg-red-50 rounded-lg p-2 text-center",children:"Dieser Tag ist gesperrt"}):s.jsxs(N,{"data-loc":"client/src/pages/AdminTermine.tsx:394",variant:"outline",size:"sm",className:"w-full border-red-200 text-red-600 hover:bg-red-50",onClick:()=>{I({dateStr:K}),P(!0)},children:[s.jsx(t,{"data-loc":"client/src/pages/AdminTermine.tsx:403",className:"w-4 h-4 mr-2"}),"Ganzen Tag sperren"]}),s.jsxs("div",{"data-loc":"client/src/pages/AdminTermine.tsx:413",className:"space-y-2",children:[s.jsx("p",{"data-loc":"client/src/pages/AdminTermine.tsx:414",className:"text-xs font-medium text-gray-500 uppercase tracking-wide",children:"Zeitslots"}),M.map(e=>{const a=ne.some(s=>s.timeSlot===e),n=se.has(K),i=ae.find(s=>
1s.timeSlot===e&&"cancelled"!==s.status),r=ne.find(s=>s.timeSlot===e);return s.jsxs("div",{"data-loc":"client/src/pages/AdminTermine.tsx:422",className:"rounded-lg border p-2.5 "+(a||n?"bg-red-50 border-red-200":i?"bg-amber-50 border-amber-200":"bg-white border-gray-200"),children:[s.jsxs("div",{"data-loc":"client/src/pages/AdminTermine.tsx:423",className:"flex items-center justify-between",children:[s.jsxs("span",{"data-loc":"client/src/pages/AdminTermine.tsx:424",className:"text-sm font-medium text-gray-700 flex items-center gap-1.5",children:[s.jsx(g,{"data-loc":"client/src/pages/AdminTermine.tsx:425",className:"w-3.5 h-3.5 text-gray-400"}),e]}),s.jsxs("div",{"data-loc":"client/src/pages/AdminTermine.tsx:428",className:"flex items-center gap-1",children:[(a||n)&&s.jsxs("span",{"data-loc":"client/src/pages/AdminTermine.tsx:430",className:"text-xs text-red-500 flex items-center gap-1",children:[s.jsx(t,{"data-loc":"client/src/pages/AdminTermine.tsx:431",className:"w-3 h-3"})," Gesperrt"]}),i&&!a&&!n&&s.jsxs("span",{"data-loc":"client/src/pages/AdminTermine.tsx:435",className:`text-xs flex items-center gap-1 ${z[i.status].color} px-1.5 py-0.5 rounded-full border`,children:[z[i.status].icon,z[i.status].label]}),!a&&!n&&!i&&s.jsx("button",{"data-loc":"client/src/pages/AdminTermine.tsx:441",onClick:()=>{I({dateStr:K,timeSlot:e}),P(!0)},className:"p-1 rounded text-gray-400 hover:text-red-500 hover:bg-red-50 transition-colors",title:"Slot sperren",children:s.jsx(t,{"data-loc":"client/src/pages/AdminTermine.tsx:449",className:"w-3.5 h-3.5"})}),a&&r&&s.jsx("button",{"data-loc":"client/src/pages/AdminTermine.tsx:453",onClick:()=>R.mutate({id:r.id}),className:"p-1 rounded text-red-400 hover:text-green-600 hover:bg-green-50 transition-colors",title:"Sperre aufheben",children:s.jsx(p,{"data-loc":"client/src/pages/AdminTermine.tsx:458",className:"w-3.5 h-3.5"})})]})]}),i&&s.jsxs("div",{"data-loc":"client/src/pages/AdminTermine.tsx:464",className:"mt-1.5 text-xs text-gray-600 space-y-0.5",children:[s.jsxs("div",{"data-loc":"client/src/pages/AdminTermine.tsx:465",className:"flex items-center gap-1",children:[s.jsx(h,{"data-loc":"client/src/pages/AdminTermine.tsx:465",className:"w-3 h-3"})," ",i.patientName]}),s.jsxs("div",{"data-loc":"client/src/pages/AdminTermine.tsx:466",className:"flex items-center gap-1",children:[s.jsx(d,{"data-loc":"client/src/pages/AdminTermine.tsx:466",className:"w-3 h-3"})," ",i.patientPhone]})]})]},e)})]}),ne.some(e=>!e.timeSlot)&&s.jsxs(N,{"data-loc":"client/src/pages/AdminTermine.tsx:476",variant:"outline",size:"sm",className:"w-full border-green-200 text-green-600 hover:bg-green-50",onClick:()=>{const e=ne.find(e=>!e.timeSlot);e&&R.mutate({id:e.id})},children:[s.jsx(p,{"data-loc":"client/src/pages/AdminTermine.tsx:485",className:"w-4 h-4 mr-2"}),"Tag freigeben"]})]})]})}):s.jsx(T,{"data-loc":"client/src/pages/AdminTermine.tsx:493",children:s.jsxs(f,{"data-loc":"client/src/pages/AdminTermine.tsx:494",className:"pt-8 pb-8 text-center",children:[s.jsx(i,{"data-loc":"client/src/pages/AdminTermine.tsx:495",className:"w-10 h-10 text-gray-300 mx-auto mb-3"}),s.jsx("p",{"data-loc":"client/src/pages/AdminTermine.tsx:496",className:"text-sm text-gray-400",children:"Klicken Sie auf einen grünen Tag im Kalender, um Details zu sehen und Slots zu verwalten."})]})}),s.jsxs(T,{"data-loc":"client/src/pages/AdminTermine.tsx:502",children:[s.jsx(v,{"data-loc":"client/src/pages/AdminTermine.tsx:503",className:"pb-2",children:s.jsx(w,{"data-loc":"client/src/pages/AdminTermine.tsx:504",className:"text-sm text-gray-600",children:"Monatsübersicht"})}),s.jsx(f,{"data-loc":"client/src/pages/AdminTermine.tsx:506",className:"grid grid-cols-3 gap-3",children:["pending","confirmed","cancelled"].map(e=>{const t=Y?.filter(s=>s.status===e).length??0;return s.jsxs("div",{"data-loc":"client/src/pages/AdminTermine.tsx:510",className:`rounded-lg p-2 text-center border ${z[e].color}`,children:[s.jsx("div",{"data-loc":"client/src/pages/AdminTermine.tsx:511",className:"text-xl font-bold",children:t}),s.jsx("div",{"data-loc":"client/src/pages/AdminTermine.tsx:512",className:"text-xs",children:z[e].label})]},e)})})]})]})]}),L&&Q&&s.jsx("div",{"data-loc":"client/src/pages/AdminTermine.tsx:523",className:"fixed inset-0 bg-black/50 flex items-center justify-center z-50 p-4",children:s.jsxs("div",{"data-loc":"client/src/pages/AdminTermine.tsx:524",className:"bg-white rounded-xl shadow-xl max-w-sm w-full p-6",children:[s.jsxs("h3",{"data-loc":"client/src/pages/AdminTermine.tsx:525",className:"font-semibold text-gray-800 mb
1-1 flex items-center gap-2",children:[s.jsx(t,{"data-loc":"client/src/pages/AdminTermine.tsx:526",className:"w-4 h-4 text-red-500"}),Q.timeSlot?`Slot sperren: ${Q.timeSlot}`:"Ganzen Tag sperren"]}),s.jsx("p",{"data-loc":"client/src/pages/AdminTermine.tsx:529",className:"text-sm text-gray-500 mb-4",children:Q.dateStr}),s.jsx("label",{"data-loc":"client/src/pages/AdminTermine.tsx:530",className:"block text-sm font-medium text-gray-700 mb-1",children:"Grund (optional)"}),s.jsx("input",{"data-loc":"client/src/pages/AdminTermine.tsx:531",type:"text",value:Z,onChange:e=>J(e.target.value),placeholder:"z.B. Urlaub, Fortbildung, Krank...",className:"w-full border border-gray-200 rounded-lg px-3 py-2 text-sm mb-4 focus:outline-none focus:ring-2 focus:ring-[#2d5a3d]"}),s.jsxs("div",{"data-loc":"client/src/pages/AdminTermine.tsx:538",className:"flex gap-2",children:[s.jsx(N,{"data-loc":"client/src/pages/AdminTermine.tsx:539",className:"flex-1 bg-red-500 hover:bg-red-600 text-white",onClick:()=>q.mutate({dateStr:Q.dateStr,timeSlot:Q.timeSlot,reason:Z||void 0}),disabled:q.isPending,children:q.isPending?"Sperren...":"Sperren"}),s.jsx(N,{"data-loc":"client/src/pages/AdminTermine.tsx:546",variant:"outline",className:"flex-1",onClick:()=>{P(!1),J("")},children:"Abbrechen"})]})]})})]}):s.jsx("div",{"data-loc":"client/src/pages/AdminTermine.tsx:173",className:"min-h-screen flex items-center justify-center bg-[#f8f5f0]",children:s.jsx(T,{"data-loc":"client/src/pages/AdminTermine.tsx:174",className:"max-w-md w-full mx-4",children:s.jsxs(f,{"data-loc":"client/src/pages/AdminTermine.tsx:175",className:"pt-8 pb-8 text-center",children:[s.jsx(t,{"data-loc":"client/src/pages/AdminTermine.tsx:176",className:"w-12 h-12 text-[#2d5a3d] mx-auto mb-4"}),s.jsx("h2",{"data-loc":"client/src/pages/AdminTermine.tsx:177",className:"text-xl font-semibold text-gray-800 mb-2",children:"Bitte einloggen"}),s.jsx("p",{"data-loc":"client/src/pages/AdminTermine.tsx:178",className:"text-gray-500 mb-6",children:"Melden Sie sich an, um auf das Admin-Dashboard zuzugreifen."}),s.jsx("a",{"data-loc":"client/src/pages/AdminTermine.tsx:179",href:A(),children:s.jsx(N,{"data-loc":"client/src/pages/AdminTermine.tsx:180",className:"bg-[#2d5a3d] hover:bg-[#1e3d2a] text-white w-full mb-3",children:"Jetzt einloggen"})}),s.jsx(a,{"data-loc":"client/src/pages/AdminTermine.tsx:184",href:"/",children:s.jsx(N,{"data-loc":"client/src/pages/AdminTermine.tsx:185",variant:"outline",className:"w-full",children:"Zur Startseite"})})]})})})}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.