PageSourceSearch

https://my05-app-58d50.web.app/assets/Training-B4PN6TzC.js

js my05-app-58d50.web.app collected 2026-10-03 12:31:05 UTC 21,656 bytes, 1 lines download raw bytes

1import{y as ue,u as Ae,a as Pe,r as l,q as W,w as le,t as S,W as oe,j as e,X as H,n as De,f,o as q,e as K,B as J,H as Ue,Q as ce,J as Be,M as ze,U as Ee,Z as Re,a7 as Ge,G as Oe}from"./index-CPP4aw51.js";import{B as Le}from"./config-BRsQMxtB.js";import{A as We}from"./arrow-left-FTGe0X4D.js";import{C as de}from"./calendar-_OgKTEsl.js";import{H as He}from"./history-DXlCqyji.js";import{T as qe}from"./triangle-alert-CRJ7xhzl.js";import{S as P}from"./star-VP7tlib6.js";import{P as me}from"./pen-DVxj8cTs.js";import{S as Ke}from"./send-5oGjlinp.js";import{O as Je}from"./octagon-alert-BsrpXd_i.js";import{C as Ve}from"./circle-x-Cs3MAFCY.js";import{C as Xe}from"./chevron-down-Bl0Yrxv2.js";import{p as N}from"./parseISO-DnZzmcBW.js";import{a as Qe}from"./addMinutes-CHuqVku4.js";import{i as Ze,a as Ye}from"./isBefore-2NTE8UXu.js";import{f as V}from"./format-f1vQoKvJ.js";import{d as et}from"./de-VgnDcFRd.js";import"./normalizeDates-BR9iMQP2.js";import"./en-US-Dy7bfbI0.js";import"./differenceInCalendarDays-5owXRo10.js";const tt=[["path",{d:"M9 9.003a1 1 0 0 1 1.517-.859l4.997 2.997a1 1 0 0 1 0 1.718l-4.997 2.997A1 1 0 0 1 9 14.996z",key:"kmsa83"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]],xe=ue("circle-play",tt);const at=[["path",{d:"M9 14 4 9l5-5",key:"102s5s"}],["path",{d:"M4 9h10.5a5.5 5.5 0 0 1 5.5 5.5a5.5 5.5 0 0 1-5.5 5.5H11",key:"f3b9sd"}]],st=ue("undo-2",at),D=({children:a,className:i="",onClick:d})=>e.jsx("div",{onClick:d,className:`rounded-[2rem] border border-white/10 bg-black/20 shadow-2xl backdrop-blur-xl transition-all duration-300 ${d?"active:scale-[0.98] cursor-pointer":""} ${i}`,children:a}),rt=(a,i)=>{const d=a.split("/");return d.length>=4&&d[0]==="users"&&d[2]==="profiles"?`${d[1]}_${i}`:i},nt=a=>{if(a.path){const i=a.path.split("/");if(i.length>=4&&i[0]==="users"&&i[2]==="profiles")return i[1]}return a.parentId||a.ownerUid||a.id||null},it=(a,i)=>{const d=i.find(U=>U.id===a);return d?.userId?d.userId:a.includes("_")?a.split("_")[0]:a||null},he=a=>{if(!a)return 0;const i=a.updatedAt||a.createdAt;if(!i)return 0;const d=Date.parse(i);return Number.isNaN(d)?0:d};function _t({user:a}){const i=Ae(),d=Pe(),U=l.useCallback(()=>{if(window.history.length>1){d(-1);return}d("/",{replace:!0})},[d]),[B,pe]=l.useState(()=>{try{const t=localStorage.getItem("pwa_training_sessions_cache");return t?JSON.parse(t):[]}catch{return[]}}),[X,be]=l.useState({}),[Q,fe]=l.useState([]),[ge,we]=l.useState({}),[z,je]=l.useState(()=>!localStorage.getItem("pwa_training_sessions_cache")),[Z,Ne]=l.useState(!1),[Y,ve]=l.useState(!1),[w,_]=l.useState(null),[h,I]=l.useState(null),[ye,ke]=l.useState(null),ee=l.useRef({showCancelModal:null,showFeedbackModal:null}),T=l.useRef(!1);ee.current={showCancelModal:w,showFeedbackModal:h},l.useEffect(()=>{const t=!!w||!!h;t&&!T.current?(window.history.pushState({...window.history.state||{},trainingTrap:!0},"",window.location.pathname),T.current=!0):t||(T.current=!1)},[w,h]),l.useEffect(()=>{const t=s=>{const r=ee.current;!r.showCancelModal&&!r.showFeedbackModal||(s.stopImmediatePropagation(),T.current=!1,r.showFeedbackModal?I(null):r.showCancelModal&&_(null))};return window.addEventListener("popstate",t,!0),()=>window.removeEventListener("popstate",t,!0)},[]);const[E,te]=l.useState(""),[$,F]=l.useState(0),[R,M]=l.useState(""),[C,G]=l.useState(null),y=l.useMemo(()=>{const t=new Set;a.id&&t.add(a.id);let s=null;if(a.path){const r=a.path.split("/");r.length>=4&&r[0]==="users"&&r[2]==="profiles"&&(s=r[1])}return s||(a.parentId?s=a.parentId:a.ownerUid&&(s=a.ownerUid)),s&&a.id&&t.add(`${s}_${a.id}`),Array.from(t)},[a]),A=y.find(t=>t.includes("_"))||a.id,Se=nt(a);l.useEffect(()=>{if((async()=>{try{const m=W(De(f,"profiles")),n=(await q(m)).docs.map(p=>{const g=p.data(),k=rt(p.ref.path,p.id);return{...g,id:k,userId:p.ref.parent.parent?.id||"unknown",isMaster:!1}}),j=(await q(S(f,"club_members"))).docs.map(p=>{const g=p.data();return g.linkedUserId?null:{id:`master_${p.id}`,userId:`master_${p.id}`,name:`${g.lastName}, ${g.firstName}`,role:"member",avatarUrl:"",isMaster:!0}}).filter(Boolean);fe([...n,...j]);const v=await q(S(f,"courts")),o={};v.docs.forEach(p=>{o[p.id]=p.data().name}),we(o)}catch(m){console.error("Data Load Error",m)}})(),!a||y.length===0)return;const s=W(S(f,"training_sessions"),le("participants","array-contains-any",y)),r=oe(s,m=>{const c=m.docs.map(n=>({id:n.id,...n.data()}));c.sort((n,u)=>{const j=n.date?N(n.date):new Date(0),v=u.date?N(u.date):new Date(0);return j.getTime()===v.getTime()?(n.time||"").localeCompare(u.time||""):j.getTime()-v.getTime()}),pe(c),localStorage.setItem("pwa_training_sessions_cache",JSON.stringify(c)),je(!1)}),b=W(S(f,"training_feedback"),le("userId","==",a.id)),x=oe(b,m=>{const c={};m.docs.forEach(n=>{const u={id:n.id,...n.data()},j=c[u.sessionId];(!j||he(u)>=he(j))&&(c[u.sessionId]=u)}),be(c)});return()=>{r(),x()}},[a,y]);const{pastSessions:ae,nextSession:se,futureSessions:re}=l.useMemo(()=>{const t=new Date,s=[],r=[];let b=null;return B.forEach(x=>{const m=N(`${x.date}T${x.time}`),c=Qe(m,x.duration||60);Ze(c,t)?s.push(x):r.push(x)}),s.sort((x,m)=>{const c=N(`${x.date}T${x.time}`).getTime();return N(`${m.date}T${m.time}`).getTime()-c}),r.length>0&&(b=r[0],r.shift()),{pastSessions:s,nextSession:b,futureSessions:r}}
1,[B]),Ce=async()=>{if(!w||!E.trim())return await i.alert({title:"Bitte gib einen Grund für die Absage an.",tone:"default"});try{const t=K(f,"training_sessions",w.id);await J(t,{cancellations:Ue(A),[`cancellationReasons.${A}`]:E}),_(null),te(""),await i.alert({title:"Deine Absage wurde an den Trainer übermittelt.",tone:"default"})}catch(t){console.error(t),await i.alert({title:"Fehler",message:"Fehler beim Absagen.",tone:"danger"})}},_e=async t=>{if(await i.confirm({title:"Möchtest du deine Absage wirklich zurückziehen?",confirmText:"Ja, teilnehmen",cancelText:"Abbrechen"}))try{const s=K(f,"training_sessions",t.id);await J(s,{cancellations:Oe(A),[`cancellationReasons.${A}`]:Ge()}),await i.toast({title:"Willkommen zurück!",variant:"success"})}catch(s){console.error(s),await i.alert({title:"Fehler",message:"Fehler beim Widerrufen.",tone:"danger"})}},ne=t=>{const s=X[t.id];I(t),s?(F(s.rating),M(s.comment||""),G(s.id)):(F(0),M(""),G(null))},Ie=async()=>{if(!h)return;if($===0)return await i.alert({title:"Bitte wähle eine Sternebewertung aus.",tone:"default"});const t=new Date().toISOString(),s=Array.from(new Set((h.trainers||[]).map(n=>n.userId).filter(Boolean))),r=h.trainerId?[h.trainerId]:[],b=s.length>0?s:r,x=Array.from(new Set(b.map(n=>it(n,Q)).filter(Boolean))),m=Array.from(new Set((h.trainers||[]).map(n=>n.name).filter(Boolean).concat(h.trainerName?[h.trainerName]:[]))),c={sessionId:h.id,sessionDate:h.date,sessionGroupName:h.groupName,userId:a.id,userName:a.name,authorUid:Se||a.id,authorProfileId:a.id,trainerProfileIds:b,trainerOwnerUids:x,trainerNames:m,rating:$,comment:R,isAnonymous:!1,createdAt:t,updatedAt:t};try{if(C){try{await J(K(f,"training_feedback",C),{rating:$,comment:R,updatedAt:t})}catch(n){if(n?.code!=="permission-denied")throw n;await ce(S(f,"training_feedback"),{...c,replacesFeedbackId:C})}await i.toast({title:"Feedback aktualisiert",variant:"success"})}else await ce(S(f,"training_feedback"),c),await i.toast({title:"Danke für dein Feedback!",variant:"success"});I(null),F(0),M(""),G(null)}catch(n){console.error(n),await i.alert({title:"Feedback konnte nicht gespeichert werden.",tone:"default"})}},Te=t=>t.cancellations?.some(s=>y.includes(s)),$e=t=>t.status==="cancelled",Fe=t=>$e(t)?"trainer_cancel":Te(t)?"my_cancel":"active",O=({session:t,isNext:s=!1})=>{const r=Fe(t),b=N(t.date),x=N(`${t.date}T${t.time}`),c=Ye(new Date,x),n=ye===t.id,u=X[t.id];let v={active:"border-l-blue-500 bg-[#13141f]",my_cancel:"border-l-yellow-500 bg-[#13141f]/50 opacity-70 grayscale-[0.5]",trainer_cancel:"border-l-red-600 bg-red-900/10 border-red-500/20"}[r];return s&&r==="active"&&(v="border-l-emerald-500 bg-gradient-to-r from-emerald-900/10 to-[#13141f]"),e.jsxs(D,{onClick:()=>ke(n?null:t.id),className:`relative overflow-hidden border-l-4 ${v} transition-all duration-500 ${s?"ring-1 ring-emerald-500/30 shadow-[0_0_40px_rgba(16,185,129,0.15)] my-4":"mb-3"}`,children:[s&&r==="active"&&e.jsxs("div",{className:"absolute top-0 right-0 bg-emerald-500 text-black text-[9px] font-black px-3 py-1 rounded-bl-xl z-20 flex items-center gap-1",children:[e.jsx(xe,{className:"h-3 w-3 fill-black"})," NÄCHSTES TRAINING"]}),e.jsxs("div",{className:"p-5 flex justify-between items-start",children:[e.jsxs("div",{className:"flex gap-4",children:[e.jsxs("div",{className:`flex flex-col items-center justify-center min-w-[3.5rem] rounded-2xl h-16 border ${s?"bg-emerald-500/10 border-emerald-500/30":"bg-white/5 border-white/5"}`,children:[e.jsx("span",{className:`text-[10px] font-bold uppercase ${s?"text-emerald-200":"text-white/40"}`,children:V(b,"MMM",{locale:et})}),e.jsx("span",{className:`text-xl font-black ${s?"text-emerald-400":"text-white"}`,children:V(b,"dd")})]}),e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[r==="trainer_cancel"&&e.jsx("span",{className:"px-2 py-0.5 rounded bg-red-500 text-white text-[9px] font-black uppercase tracking-wider",children:"Fällt aus"}),r==="my_cancel"&&e.jsx("span",{className:"px-2 py-0.5 rounded bg-yellow-500/20 text-yellow-200 text-[9px] font-black uppercase tracking-wider border border-yellow-500/20",children:"Du hast abgesagt"})]}),e.jsx("h3",{className:`text-lg font-bold leading-tight ${r==="trainer_cancel"?"text-red-200 line-through decoration-2":"text-white"}`,children:t.groupName}),e.jsxs("div",{className:"flex flex-wrap items-center gap-3 text-xs text-white/50 mt-1.5 font-medium",children:[e.jsxs("span",{className:"flex items-center gap-1.5",children:[e.jsx(Be,{className:"h-3.5 w-3.5 text-blue-400"})," ",t.time," Uhr"]}),t.courtId&&e.jsxs("span",{className:"flex items-center gap-1.5",children:[e.jsx(ze,{className:"h-3.5 w-3.5 text-emerald-400"})," ",ge[t.courtId]||"Platz"]}),e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx(Ee,{className:"h-3.5 w-3.5 text-purple-400"}),e.jsx("span",{children:t.trainers&&t.trainers.length>0?t.trainers.map(o=>`${o.name}${o.role==="Co-Trainer"?" (Co)":""}`).join(", "):t.trainerName||"Trainer"})]})]})]})]}),e.jsx(Re,{className:`h-5 w-5 text-white/20 transition-transform duration-300 ${n?"rotate-90":""}`})]}),n&&e.jsxs("div",{className:"px-5 pb-5 animate-in slide-in-from-top-2 duration-300",children:[r==="trainer_cancel"&&e.jsxs("div",{className:"mb-4 p-3 bg-red-500/10 border border-red-500/30 rounded-xl flex items-start gap-3",children:[e.jsx(Je,{className:"h-5 w-5 text-red-500 shrink-0"}),e.jsxs("div",{children:[e.jsx("p",{className:"text-xs font-bold text-red-200 uppercase",children:"ACHTUNG: Termin abgesagt"}),e.jsx("p",{className:"text-xs text-red-200/70 mt-1",children:t.trainerNotes||"Der Trainer hat diesen Termin storniert."})]})]}),e.jsx("div",{className:"h-px bg-white/5 mb-4"}),e.jsxs("div",{className:"mb-6",children:[e.jsxs("div",{className:"flex justify-between items-center mb-3",children:[e.jsx("p",{className:"text-[10px] font-bold text-white/40 uppercase",children:"Teilnehmer"}),e.jsxs("span",{className:"text-[10px] text-white/30",children:[t.participants.length," Personen"]})]}),e.jsx("div",{className:"grid grid-cols-4 gap-3",children:t.participants?.map(o=>{const p=Q.find(Me=>Me.id===o),g=y.includes(o),k=t.cancellations?.includes(o),L=g?"Ich":p?.name.split(" ")[0]||"Unbekannt";return e.jsxs("div",{className:"flex flex-col items-center gap-1 group",children:[e.jsxs("div",{className:`relative h-12 w-12 rounded-full flex items-center justify-center font-bold text-sm shadow-lg overflow-hidden border-2 transition-all ${k?"border-red-500/50 grayscale opacity-60":g?"border-blue-500 shadow-blue-500/20":"border-white/10"} bg-[#1a1c25]`,children:[p?.avatarUrl?e.jsx("img",{src:p.avatarUrl,className:"w-full h-full object-cover",alt:L}
1):e.jsx("span",{className:"text-white/50",children:L.charAt(0)}),k?e.jsx("div",{className:"absolute inset-0 bg-red-500/20 flex items-center justify-center",children:e.jsx(H,{className:"h-5 w-5 text-red-200"})}):g&&e.jsx("div",{className:"absolute bottom-0 right-0 h-3 w-3 bg-blue-500 rounded-full border border-black"})]}),e.jsxs("div",{className:"text-center w-full",children:[e.jsx("span",{className:`block text-[10px] font-bold truncate ${k?"text-red-400 line-through":"text-white/80"}`,children:L}),k&&e.jsx("span",{className:"block text-[8px] text-red-300 truncate leading-tight mt-0.5",children:"Abgemeldet"})]})]},o)})})]}),u&&r==="active"&&e.jsxs("div",{className:"bg-yellow-500/5 border border-yellow-500/20 p-4 rounded-xl mb-4",children:[e.jsxs("div",{className:"flex justify-between items-start mb-2",children:[e.jsxs("div",{className:"flex flex-col",children:[e.jsx("span",{className:"text-[10px] font-bold text-yellow-500 uppercase tracking-wider mb-1",children:"Dein Feedback"}),e.jsx("div",{className:"flex gap-0.5",children:[1,2,3,4,5].map(o=>e.jsx(P,{className:`h-3 w-3 ${o<=u.rating?"fill-yellow-400 text-yellow-400":"text-white/10"}`},o))})]}),e.jsx("button",{onClick:o=>{o.stopPropagation(),ne(t)},className:"p-2 bg-white/5 hover:bg-white/10 rounded-lg text-white/70 hover:text-white transition-colors",children:e.jsx(me,{className:"h-4 w-4"})})]}),u.comment&&e.jsxs("p",{className:"text-xs italic text-white/70",children:['"',u.comment,'"']})]}),e.jsxs("div",{className:"flex gap-3 mt-4",children:[c&&r==="active"&&!u&&e.jsxs("button",{onClick:o=>{o.stopPropagation(),ne(t)},className:"flex-1 py-3 bg-yellow-500 text-black font-bold text-xs rounded-xl hover:bg-yellow-400 active:scale-95 transition-all flex items-center justify-center gap-2 shadow-lg shadow-yellow-500/10",children:[e.jsx(P,{className:"h-4 w-4 fill-black"})," Bewerten"]}),r==="my_cancel"?e.jsxs("button",{onClick:o=>{o.stopPropagation(),_e(t)},className:"flex-1 py-3 bg-white/10 text-white font-bold text-xs rounded-xl hover:bg-white/20 active:scale-95 transition-all flex items-center justify-center gap-2",children:[e.jsx(st,{className:"h-4 w-4"})," Wieder teilnehmen"]}):r==="active"?e.jsxs("button",{onClick:o=>{o.stopPropagation(),_(t)},className:"flex-1 py-3 bg-red-500/10 border border-red-500/20 text-red-400 font-bold text-xs rounded-xl hover:bg-red-500/20 active:scale-95 transition-all flex items-center justify-center gap-2",children:[e.jsx(Ve,{className:"h-4 w-4"})," Absagen"]}):null]})]})]})},ie=({title:t,count:s,expanded:r,onToggle:b,children:x,icon:m,colorClass:c})=>s===0?null:e.jsxs("div",{className:"mb-6 group",children:[e.jsxs("div",{onClick:b,className:"relative cursor-pointer transition-transform active:scale-95",children:[e.jsx("div",{className:`absolute top-2 left-2 right-2 h-full bg-white/5 rounded-3xl border border-white/5 z-0 ${r?"opacity-0":"opacity-100 transition-opacity"}`}),e.jsx("div",{className:`absolute top-1 left-1 right-1 h-full bg-white/5 rounded-3xl border border-white/5 z-10 ${r?"opacity-0":"opacity-100 transition-opacity"}`}),e.jsxs(D,{className:`p-5 flex justify-between items-center relative z-20 hover:border-white/20 ${c}`,children:[e.jsxs("div",{className:"flex gap-4 items-center",children:[e.jsx("div",{className:"h-12 w-12 rounded-2xl bg-white/10 flex items-center justify-center shadow-lg backdrop-blur-md border border-white/10",children:e.jsx(m,{className:"h-6 w-6 text-white"})}),e.jsxs("div",{children:[e.jsx("h3",{className:"font-bold text-lg text-white",children:t}),e.jsxs("p",{className:"text-[10px] text-white/50 font-medium uppercase tracking-wider",children:[s," Termine"]})]})]}),e.jsx(Xe,{className:`h-6 w-6 text-white/50 transition-transform duration-300 ${r?"rotate-180":""}`})]})]}),r&&e.jsx("div",{className:"mt-4 space-y-3 border-l-2 border-white/10 pl-4 ml-6 animate-in slide-in-from-top-2",children:x})]});return e.jsxs("div",{className:"h-screen text-white relative overflow-hidden font-sans selection:bg-blue-500/30",children:[e.jsx("div",{className:"fixed inset-0 z-0 pointer-events-none",style:{backgroundImage:`url('${Le.hardcourt}')`,backgroundSize:"cover",backgroundPosition:"center",filter:"blur(4px) brightness(0.5)",transform:"scale(1.05)"}}),e.jsxs("div",{className:"relative z-10 h-screen flex flex-col overflow-hidden",children:[e.jsx("div",{className:"shrink-0 bg-black/60 backdrop-blur-xl border-b border-white/10 z-40",children:e.jsxs("div",{className:"px-4 pt-4 pb-3 max-w-xl mx-auto flex items-center gap-4",children:[e.jsx("button",{onClick:U,className:"h-10 w-10 bg-white/10 rounded-xl flex items-center justify-center hover:bg-white/20 active:scale-95 transition-all",children:e.jsx(We,{className:"h-5 w-5 text-white"})}),e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl font-black text-transparent bg-clip-text bg-gradient-to-r from-blue-400 to-indigo-400",children:"Mein Training"}),e.jsx("p",{className:"text-xs text-white/50 font-medium",children:"Kalender & Feedback"})]})]})}),e.jsxs("div",{className:"flex-1 overflow-y-auto custom-scrollbar bg-black/20",children:[e.jsxs("div",{className:"p-4 pt-6 pb-32 max-w-xl mx-auto relative z-10",children:[z&&e.jsxs("div",{className:"flex flex-col items-center justify-center py-20 space-y-4",children:[e.jsx("div",{className:"w-8 h-8 border-2 border-blue-500 border-t-transparent roun
1ded-full animate-spin"}),e.jsx("p",{className:"text-white/30 text-xs animate-pulse",children:"Synchronisiere Termine..."})]}),!z&&B.length===0&&e.jsxs("div",{className:"p-8 text-center bg-white/5 rounded-3xl border border-dashed border-white/10 mx-4",children:[e.jsx(de,{className:"h-10 w-10 text-white/20 mx-auto mb-3"}),e.jsx("h3",{className:"text-white/50 font-bold",children:"Keine Termine"}),e.jsx("p",{className:"text-xs text-white/30 mt-1",children:"Du bist aktuell in keinen Gruppen eingetragen."})]}),!z&&e.jsxs("div",{className:"space-y-4",children:[e.jsx(ie,{title:"Vergangene Trainings",count:ae.length,expanded:Z,onToggle:()=>Ne(!Z),icon:He,colorClass:"bg-gradient-to-br from-slate-800 to-slate-900",children:ae.map(t=>e.jsx(O,{session:t},t.id))}),se&&e.jsxs("div",{className:"py-2",children:[e.jsxs("div",{className:"mb-2 px-2 text-[10px] font-bold text-emerald-400 uppercase tracking-widest flex items-center gap-2",children:[e.jsx(xe,{className:"h-3 w-3"})," Dein nächster Termin"]}),e.jsx(O,{session:se,isNext:!0})]}),e.jsx(ie,{title:"Geplante Trainings",count:re.length,expanded:Y,onToggle:()=>ve(!Y),icon:de,colorClass:"bg-gradient-to-br from-blue-900/40 to-slate-900",children:re.map(t=>e.jsx(O,{session:t},t.id))})]}),w&&e.jsx("div",{className:"fixed inset-0 z-[200] bg-black/60 flex items-center justify-center p-4 pb-24 backdrop-blur-md animate-in fade-in",children:e.jsxs(D,{className:"w-full max-w-sm p-6 bg-[#12141c]/90 backdrop-blur-3xl border-white/20 rounded-[2.5rem] shadow-[0_20px_50px_rgba(0,0,0,0.5)]",children:[e.jsxs("div",{className:"flex justify-between items-center mb-4",children:[e.jsxs("h3",{className:"text-lg font-bold text-red-400 flex items-center gap-2",children:[e.jsx(qe,{className:"h-5 w-5"})," Training absagen"]}),e.jsx("button",{onClick:()=>_(null),children:e.jsx(H,{className:"text-white/50"})})]}),e.jsxs("p",{className:"text-sm text-white/70 mb-4",children:["Du sagst für ",e.jsx("strong",{children:w.groupName})," am ",V(N(w.date),"dd.MM.")," ab."]}),e.jsx("label",{className:"text-xs font-bold text-white/50 uppercase block mb-2",children:"Grund (Pflicht)"}),e.jsx("textarea",{autoFocus:!0,value:E,onChange:t=>te(t.target.value),placeholder:"z.B. Krank, Arbeit, Verletzung...",className:"w-full bg-black/30 border border-white/10 rounded-xl p-3 text-white text-sm min-h-[80px] outline-none focus:border-red-500/50 mb-4"}),e.jsx("button",{onClick:Ce,className:"w-full py-3 bg-red-500 hover:bg-red-600 text-white font-bold rounded-xl shadow-lg transition-colors",children:"Verbindlich absagen"})]})}),h&&e.jsx("div",{className:"fixed inset-0 z-[200] bg-black/60 flex items-center justify-center p-4 pb-24 backdrop-blur-md animate-in fade-in",children:e.jsxs(D,{className:"w-full max-w-sm p-6 bg-[#12141c]/90 backdrop-blur-3xl border-white/20 rounded-[2.5rem] shadow-[0_20px_50px_rgba(0,0,0,0.5)]",children:[e.jsxs("div",{className:"flex justify-between items-center mb-1",children:[e.jsxs("h3",{className:"text-lg font-bold text-yellow-400 flex items-center gap-2",children:[e.jsx(P,{className:"h-5 w-5 fill-yellow-400"})," ",C?"Feedback bearbeiten":"Feedback"]}),e.jsx("button",{onClick:()=>I(null),children:e.jsx(H,{className:"text-white/50"})})]}),e.jsxs("p",{className:"text-xs text-white/50 mb-6",children:["Wie war das Training bei ",h.trainerName,"?"]}),e.jsx("div",{className:"flex justify-center gap-3 mb-6",children:[1,2,3,4,5].map(t=>e.jsx("button",{onClick:()=>F(t),className:"transition-transform active:scale-90 hover:scale-110",children:e.jsx(P,{className:`h-8 w-8 ${t<=$?"text-yellow-400 fill-yellow-400":"text-white/20"}`})},t))}),e.jsx("label",{className:"text-xs font-bold text-white/50 uppercase block mb-2",children:"Dein Kommentar (Optional)"}),e.jsx("textarea",{value:R,onChange:t=>M(t.target.value),placeholder:"Was war gut? Was kann besser werden?",className:"w-full bg-black/30 border border-white/10 rounded-xl p-3 text-white text-sm min-h-[80px] outline-none focus:border-yellow-500/50 mb-4"}),e.jsx("button",{onClick:Ie,className:"w-full py-3 bg-yellow-500 hover:bg-yellow-400 text-black font-bold rounded-xl shadow-lg transition-colors flex items-center justify-center gap-2",children:C?e.jsxs(e.Fragment,{children:[e.jsx(me,{className:"h-4 w-4"})," Aktualisieren"]}):e.jsxs(e.Fragment,{children:[e.jsx(Ke,{className:"h-4 w-4"})," Feedback senden"]})})]})})]})," "]})," "]})," "]})}export{_t 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.