1import{r as u,j as e}from"./vendor-react-CFJRxGiR.js";import{P as A,B as D,b as Ke,ab as de,bI as Te,r as F,n as w,I as U,M as p,y as Be,af as Se,x as Fe}from"./index-20fxIyDQ.js";import{B as ee}from"./badge-CZLq5SvB.js";import{T as fe}from"./textarea-9DhVmBm3.js";import{S as Me}from"./switch-ho5mtS6v.js";import{S as V,a as H,b as P,c as q,d as $}from"./select-DEe64QWV.js";import{D as Ve,f as He,a as Pe,b as qe,c as Ge,e as Re}from"./dialog-BDkUoucx.js";import{t as je,n as be,c as Ee,g as Ue,l as Ze,s as We,w as Ye,d as Xe,f as Je,a as Qe}from"./calendar-CrOxmfZc.js";import{C as et}from"./chevron-left-wfTGTrCn.js";import{P as ie}from"./plus-BlSFqhBq.js";import{E as Le}from"./external-link-DSVFlyXo.js";import{T as ce}from"./trash-2-BJCkfEpe.js";import{S as tt}from"./share-2-CfjGPlkg.js";import{U as st}from"./user-plus-BRA2Zlur.js";import{C as rt}from"./calendar-clock-DSQLUVAv.js";import{C as $e}from"./circle-check-DJ2k2mdH.js";import{C as at}from"./circle-x-DIiSjNOx.js";import{C as Ae}from"./calendar-days-BEM3p2vR.js";import{R as nt}from"./refresh-cw-BqAgJjK_.js";import{U as it}from"./unlink-BQTUdh4o.js";import{P as lt}from"./phone-call-CrmA_aVF.js";import{C as ot}from"./clock-CDqm8qTt.js";import"./vendor-supabase-DJ1D-njw.js";import"./vendor-i18n-Bj4zRzTt.js";import"./locale-de-Oo0374CC.js";import"./vendor-query-Bpkgs1Aa.js";import"./vendor-utils-mQ1NDWkS.js";import"./index-xHtxXHuq.js";import"./index-BdQq_4o_.js";import"./chevron-up--qFx_CEn.js";import"./index-DzpETpXX.js";const I=7,Z=21,le=(Z-I)*60,ke=i=>{const m=new Date(i),a=(m.getDay()+6)%7;return m.setDate(m.getDate()-a),m.setHours(0,0,0,0),m},De=(i,m)=>{const a=new Date(i);return a.setDate(a.getDate()+m),a},oe=(i,m)=>i.toDateString()===m.toDateString(),k=i=>i.toLocaleTimeString(A(),{hour:"2-digit",minute:"2-digit"});function X(i,m){return i.filter(a=>a.start&&!a.allDay&&oe(new Date(a.start),m)).map(a=>({start:new Date(a.start),end:new Date(a.end??a.start),event:a})).sort((a,N)=>a.start.getTime()-N.start.getTime())}function we(i,m){const a=new Date(m);a.setHours(I,0,0,0);const N=new Date(m);return N.setHours(Z,0,0,0),i.reduce((x,j)=>{const v=Math.max(j.start.getTime(),a.getTime()),y=Math.min(j.end.getTime(),N.getTime());return x+Math.max(0,(y-v)/6e4)},0)}function ve(i,m){const a=new Date(m);a.setHours(I,0,0,0);const N=new Date(m);N.setHours(Z,0,0,0);const x=[];let j=a;return i.forEach(v=>{v.start>j&&x.push({start:new Date(j),end:new Date(Math.min(v.start.getTime(),N.getTime()))}),v.end>j&&(j=v.end)}),j<N&&x.push({start:new Date(j),end:N}),x.filter(v=>v.end.getTime()-v.start.getTime()>=15*6e4)}const Ne=i=>{const m=Math.min(100,Math.round(i/le*100)),a=m===0?"bg-emerald-500/60":m<40?"bg-primary/70":m<75?"bg-amber-400/80":"bg-red-500/80";return{pct:m,tone:a}},Y=64,J=i=>(i.getHours()-I)*60+i.getMinutes();function dt({day:i,events:m,onCreateAt:a,onDelete:N}){const x=u.useMemo(()=>X(m,i),[m,i]),j=u.useMemo(()=>ve(x,i),[x,i]),v=we(x,i),{pct:y,tone:C}=Ne(v),T=Math.max(0,le-v),E=Array.from({length:Z-I},(r,o)=>I+o),M=new Date,n=oe(M,i)&&M.getHours()>=I&&M.getHours()<Z;return e.jsxs("div",{className:"mt-4 space-y-3",children:[e.jsxs("div",{className:"grid gap-2 sm:grid-cols-3",children:[e.jsxs("div",{className:"rounded-xl border border-white/10 bg-white/[0.03] p-3",children:[e.jsx("p",{className:"text-[11px] uppercase tracking-wide text-muted-foreground",children:"Auslastung"}),e.jsxs("p",{className:"mt-1 text-lg font-semibold",children:[y,"%"]}),e.jsx("div",{className:"mt-1.5 h-1.5 w-full rounded-full bg-white/10",children:e.jsx("div",{className:`h-1.5 rounded-full ${C}`,style:{width:`${y}%`}})})]}),e.jsxs("div",{className:"rounded-xl border border-white/10 bg-white/[0.03] p-3",children:[e.jsx("p",{className:"text-[11px] uppercase tracking-wide text-muted-foreground",children:"Termine"}),e.jsx("p",{className:"mt-1 text-lg font-semibold",children:x.length}),e.jsxs("p",{className:"text-[11px] text-muted-foreground",children:[Math.round(v/60*10)/10," h belegt von ",Z-I," h"]})]}),e.jsxs("div",{className:"rounded-xl border border-white/10 bg-white/[0.03] p-3",children:[e.jsx("p",{className:"text-[11px] uppercase tracking-wide text-muted-foreground",children:"Freie Zeit"}),e.jsxs("p",{className:"mt-1 text-lg font-semibold text-emerald-300",children:[Math.round(T/60*10)/10," h"]}),e.jsxs("p",{className:"text-[11px] text-muted-foreground",children:[j.length," Lücke(n) ab 15 Min."]})]})]}),e.jsxs("div",{className:"relative flex gap-1",children:[e.jsx("div",{className:"w-14 shrink-0",children:E.map(r=>e.jsxs("div",{className:"pr-1 text-right text-[11px] text-muted-foreground",style:{height:Y},children:[String(r).padStart(2,"0"),":00"]},r))}),e.jsxs("div",{className:"relative flex-1 rounded-xl border border-white/10 bg-white/[0.02]",children:[E.map(r=>e.jsx("div",{className:"grid grid-cols-2 border-b border-white/5 last:border-b-0",style:{height:Y},children:[0,30].map(o=>{const d=new Date(i);return d.setHours(r,o,0,0),e.jsx("button",{onClick:()=>a(d),title:`${k(d)} â klicken zum Eintragen`,className:"group h-full w-full border-r border-white/5 last:border-r-0 hover:bg-primary/10",children:e.jsxs("span",{className:"flex items-center justify-center gap-1 text-[10px] text-primary opacity-0 transition-opacity group-hover:opacity-100",children:[e.jsx(ie,{className:"h-3 w-3"})," ",k(d)]})},o)})},r)),j.map(r=>{const o=Math.max(0,J(r.start))/60*Y,d=(J(r.end)-Math.max(0,J(r.start)))/60*Y;return d<=0?null:e.jsx("div",{className:"pointer-events-none absolute left-0 right-0 border-y border-dashed border-emerald-400/30 bg-emerald-400/[0.06]",style:{to
1p:o,height:d},children:e.jsxs("span",{className:"ml-2 text-[10px] text-emerald-300/80",children:["frei ",k(r.start),"â",k(r.end)]})},`gap-${r.start.toISOString()}`)}),x.map(r=>{const o=J(r.start),d=Math.max(20,(r.end.getTime()-r.start.getTime())/6e4);return o+d<=0||o>=le?null:e.jsx("div",{className:"absolute left-2 right-2 overflow-hidden rounded-lg border border-primary/40 bg-primary/25 px-2 py-1 text-[11px] backdrop-blur-sm",style:{top:Math.max(0,o)/60*Y,height:d/60*Y},children:e.jsxs("div",{className:"flex items-start justify-between gap-2",children:[e.jsxs("div",{className:"min-w-0",children:[e.jsx("p",{className:"truncate font-medium text-foreground",children:r.event.summary}),e.jsxs("p",{className:"truncate text-muted-foreground",children:[k(r.start),"â",k(r.end),r.event.location?` · ${r.event.location}`:""]})]}),e.jsxs("span",{className:"flex shrink-0 items-center gap-1",children:[r.event.hangoutLink&&e.jsx("a",{href:r.event.hangoutLink,target:"_blank",rel:"noopener noreferrer",className:"text-primary","aria-label":"Meet öffnen",children:e.jsx(de,{className:"h-3.5 w-3.5"})}),e.jsx("button",{onClick:()=>
1N(r.event.id),className:"text-muted-foreground hover:text-red-400","aria-label":"Termin löschen",children:e.jsx(ce,{className:"h-3.5 w-3.5"})})]})]})},r.event.id)}),n&&e.jsx("div",{className:"pointer-events-none absolute left-0 right-0 border-t-2 border-red-500/70",style:{top:J(M)/60*Y},children:e.jsx("span",{className:"absolute -top-2 left-1 rounded bg-red-500/80 px-1 text-[9px] text-white",children:"jetzt"})})]})]})]})}function ct({events:i,view:m,cursor:a,onCursorChange:N,onViewChange:x,onCreateAt:j,onDelete:v}){const y=new Date,C=u.useMemo(()=>{const n=ke(a);return Array.from({length:7},(r,o)=>De(n,o))},[a]),T=u.useMemo(()=>{const n=new Date(a.getFullYear(),a.getMonth(),1),r=ke(n);return Array.from({length:42},(o,d)=>De(r,d))},[a]),E=n=>{const r=new Date(a);m==="day"?r.setDate(r.getDate()+n):m==="week"?r.setDate(r.getDate()+n*7):r.setMonth(r.getMonth()+n),N(r)},M=m==="day"?a.toLocaleDateString(A(),{weekday:"long",day:"2-digit",month:"long",year:"numeric"}):m==="week"?`${C[0].toLocaleDateString(A(),{day:"2-digit",month:"short"})} â ${C[6].toLocaleDateString(A(),{day:"2-digit",month:"short",year:"numeric"})}`:a.toLocaleDateString(A(),{month:"long",year:"numeric"});return e.jsxs("div",{className:"rounded-2xl border border-white/10 bg-white/[0.04] p-4 backdrop-blur-xl",children:[e.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-2",children:[e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(D,{variant:"outline",size:"icon",className:"h-8 w-8",onClick:()=>E(-1),"aria-label":"Zurück",children:e.jsx(et,{className:"h-4 w-4"})}),e.jsx(D,{variant:"outline",size:"sm",onClick:()=>N(new Date),children:"Heute"}),e.jsx(D,{variant:"outline",size:"icon",className:"h-8 w-8",onClick:()=>E(1),"aria-label":"Weiter",children:e.jsx(Ke,{className:"h-4 w-4"})}),e.jsx("p",{className:"ml-2 text-sm font-semibold",children:M})]}),e.jsx("div",{className:"flex gap-1 rounded-xl border border-white/10 bg-white/[0.03] p-1",children:["day","week","month"].map(n=>e.jsx("button",{onClick:()=>x(n),className:`rounded-lg px-3 py-1 text-xs transition-colors ${m===n?"bg-primary/20 text-primary":"text-muted-foreground hover:text-foreground"}`,children:n==="day"?"Tag":n==="week"?"Woche":"Monat"},n))})]}),m==="day"?e.jsx(dt,{day:a,events:i,onCreateAt:j,onDelete:v}):m==="week"?e.jsx("div",{className:"mt-4 overflow-x-auto",children:e.jsxs("div",{className:"min-w-[860px]",children:[e.jsxs("div",{className:"grid grid-cols-[56px_repeat(7,1fr)] gap-1",children:[e.jsx("div",{}),C.map(n=>{const r=X(i,n),{pct:o,tone:d}=Ne(we(r,n));return e.jsxs("div",{className:`rounded-lg border p-2 ${oe(n,y)?"border-primary/50 bg-primary/10":"border-white/10 bg-white/[0.03]"}`,children:[e.jsxs("p",{className:"text-xs font-medium",children:[n.toLocaleDateString(A(),{weekday:"short"})," ",n.getDate(),"."]}),e.jsx("div",{className:"mt-1.5 h-1.5 w-full rounded-full bg-white/10",children:e.jsx("div",{className:`h-1.5 rounded-full ${d}`,style:{width:`${o}%`}})}),e.jsxs("p",{className:"mt-1 text-[11px] text-muted-foreground",children:[o,"% belegt · ",r.length," Termine"]})]},n.toISOString())})]}),e.jsxs("div",{className:"mt-1 grid grid-cols-[56px_repeat(7,1fr)] gap-1",children:[e.jsx("div",{children:Array.from({length:Z-I},(n,r)=>e.jsxs("div",{className:"h-12 pr-1 text-right text-[11px] text-muted-foreground",children:[I+r,":00"]},r))}),C.map(n=>{const r=X(i,n);return e.jsxs("div",{className:"relative rounded-lg border border-white/10 bg-white/[0.02]",children:[Array.from({length:Z-I},(o,d)=>{const _=new Date(n);return _.setHours(I+d,0,0,0),e.jsx("button",{onClick:()=>j(_),title:`${k(_)} â frei, klicken zum Eintragen`,className:"group h-12 w-full border-b border-white/5 last:border-b-0 hover:bg-primary/10",children:e.jsx(ie,{className:"mx-auto h-3 w-3 text-primary opacity-0 transition-opacity group-hover:opacity-100"})},d)}),r.map(o=>{const d=(o.start.getHours()-I)*60+o.start.getMinutes(),_=Math.max(20,(o.end.getTime()-o.start.getTime())/6e4);return d+_<=0||d>=le?null:e.jsxs("div",{className:"absolute left-1 right-1 overflow-hidden rounded-md border border-primary/40 bg-primary/25 px-1.5 py-1 text-[11px]",style:{to
1p:`${Math.max(0,d)/60*48}px`,height:`${_/60*48}px`},title:`${o.event.summary} · ${k(o.start)}â${k(o.end)}`,children:[e.jsx("p",{className:"truncate font-medium text-foreground",children:o.event.summary}),e.jsxs("p",{className:"truncate text-muted-foreground",children:[k(o.start),"â",k(o.end)]})]},o.event.id)})]},n.toISOString())})]})]})}):e.jsxs("div",{className:"mt-4",children:[e.jsx("div",{className:"grid grid-cols-7 gap-1 text-center text-[11px] text-muted-foreground",children:["Mo","Di","Mi","Do","Fr","Sa","So"].map(n=>e.jsx("div",{children:n},n))}),e.jsx("div",{className:"mt-1 grid grid-cols-7 gap-1",children:T.map(n=>{const r=X(i,n),o=ve(r,n),{pct:d,tone:_}=Ne(we(r,n)),O=n.getMonth()!==a.getMonth();return e.jsxs("div",{className:`min-h-[104px] rounded-lg border p-2 text-left ${oe(n,y)?"border-primary/50 bg-primary/10":"border-white/10 bg-white/[0.03]"} ${O?"opacity-45":""}`,children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("span",{className:"text-xs font-medium",children:n.getDate()}),e.jsx("button",{onClick:()=>{const z=new Date(n);z.setHours(9,0,0,0),j(z)},"aria-label":"Termin anlegen",children:e.jsx(ie,{className:"h-3.5 w-3.5 text-primary/70 hover:text-primary"})})]}),e.jsx("div",{className:"mt-1 h-1 w-full rounded-full bg-white/10",children:e.jsx("div",{className:`h-1 rounded-full ${_}`,style:{width:`${d}%`}})}),e.jsxs("div",{className:"mt-1 space-y-1",children:[r.slice(0,2).map(z=>e.jsxs("p",{className:"truncate rounded bg-primary/20 px-1 text-[10px]",title:z.event.summary,children:[k(z.start)," ",z.event.summary]},z.event.id)),r.length>2&&e.jsxs("p",{className:"text-[10px] text-muted-foreground",children:["+",r.length-2," weitere"]}),r.length===0&&e.jsx("p",{className:"text-[10px] text-emerald-300/80",children:"ganzer Tag frei"}),r.length>0&&o.length>0&&e.jsxs("p",{className:"text-[10px] text-muted-foreground",children:["Lücke: ",k(o[0].start),"â",k(o[0].end)]})]})]},n.toISOString())})})]}),e.jsxs("div",{className:"mt-4 rounded-xl border border-white/10 bg-white/[0.03] p-3",children:[e.jsxs("p",{className:"text-sm font-semibold",children:["Heute · ",y.toLocaleDateString(A(),{dateStyle:"full"})]}),X(i,y).length===0?e.jsx("p",{className:"mt-2 text-xs text-muted-foreground",children:"Keine Termine â der ganze Tag ist frei."}):e.jsx("div",{className:"mt-2 space-y-1.5",children:X(i,y).map(n=>e.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-2 rounded-lg border border-white/10 bg-white/[0.03] px-2 py-1.5 text-xs",children:[e.jsxs("span",{className:"min-w-0 truncate",children:[k(n.start),"â",k(n.end)," · ",n.event.summary]}),e.jsxs("span",{className:"flex items-center gap-1",children:[n.event.hangoutLink&&e.jsx("a",{href:n.event.hangoutLink,target:"_blank",rel:"noopener noreferrer",className:"text-primary","aria-label":"Meet öffnen",children:e.jsx(de,{className:"h-3.5 w-3.5"})}),n.event.htmlLink&&e.jsx("a",{href:n.event.htmlLink,target:"_blank",rel:"noopener noreferrer",className:"text-muted-foreground hover:text-foreground","aria-label":"In Google öffnen",children:e.jsx(Le,{className:"h-3.5 w-3.5"})}),e.jsx("button",{onClick:()=>v(n.event.id),className:"text-muted-foreground hover:text-red-400","aria-label":"Termin löschen",children:e.jsx(ce,{className:"h-3.5 w-3.5"})})]})]},n.event.id))}),e.jsxs("p",{className:"mt-2 text-xs text-muted-foreground",children:["Freie Lücken: ",ve(X(i,y),y).map(n=>`${k(n.start)}â${k(n.end)}`).join(" · ")||"keine"]})]})]})}const ge=({className:i="",children:m})=>e.jsx("div",{className:`rounded-2xl border border-white/10 bg-white/[0.04] p-5 backdrop-blur-xl ${i}`,children:m}),mt=[{value:1,label:"Mo"},{value:2,label:"Di"},{value:3,label:"Mi"},{value:4,label:"Do"},{value:5,label:"Fr"},{value:6,label:"Sa"},{value:0,label:"So"}];function ht({calendarId:i,onChanged:m}){const{org:a,session:N}=Te(),x=N?.user?.id??null,[j,v]=u.useState([]),[y,C]=u.useState([]),[T,E]=u.useState([]),[M,n]=u.useState(!1),[r,o]=u.useState({scope:"org",shared_with:"",visibility:"busy",can_book:!0,weekdays:[1,2,3,4,5],start_hour:9,end_hour:17,slot_minutes:30,note:""}),[d,_]=u.useState({owner:"",title:"",note:"",start:je(new Date(Date.now()+864e5)),duration:"30"}),O=u.useCallback(async()=>
1{if(!a?.id)return;const[{data:t},{data:c},{data:g}]=await Promise.all([F.from("partner_calendar_shares").select("*").eq("org_id",a.id),F.from("partner_calendar_bookings").select("*").eq("org_id",a.id).order("starts_at"),F.from("partner_memberships").select("user_id").eq("org_id",a.id)]);v(t??[]),C(c??[]);const b=(g??[]).map(S=>S.user_id);if(b.length){const{data:S}=await F.from("partner_profiles").select("user_id, first_name, last_name, email").in("user_id",b);E((S??[]).map(L=>({user_id:L.user_id,name:[L.first_name,L.last_name].filter(Boolean).join(" ")||L.email||"Teammitglied",email:L.email})))}},[a?.id]);u.useEffect(()=>{O()},[O]);const z=t=>T.find(c=>c.user_id===t)?.email??null,R=t=>T.find(c=>c.user_id===t)?.name??"Teammitglied",f=j.find(t=>t.owner_user_id===x),te=u.useMemo(()=>j.filter(t=>t.owner_user_id!==x&&t.can_book&&(t.share_scope==="org"||t.shared_with_user_id===x)),[j,x]),W=y.filter(t=>t.owner_user_id===x),se=y.filter(t=>t.requester_user_id===x),G=async()=>{if(!(!a?.id||!x)){n(!0);try{const t={org_id:a.id,owner_user_id:x,share_scope:r.scope,shared_with_user_id:r.scope==="user"&&r.shared_with||null,visibility:r.visibility,can_book:r.can_book,weekdays:r.weekdays,start_hour:r.start_hour,end_hour:r.end_hour,slot_minutes:r.slot_minutes,note:r.note||null},{error:c}=f?await F.from("partner_calendar_shares").update(t).eq("id",f.id):await F.from("partner_calendar_shares").insert(t);if(c)throw c;p.success("Kalender-Freigabe gespeichert."),await O()}catch(t){p.error(t instanceof Error?t.message:"Freigabe konnte nicht gespeichert werden.")}finally{n(!1)}}},me=async()=>{if(f){n(!0);try{await F.from("partner_calendar_shares").delete().eq("id",f.id),p.success("Freigabe entfernt."),await O()}finally{n(!1)}}};u.useEffect(()=>{f&&o({scope:f.share_scope,shared_with:f.shared_with_user_id??"",visibility:f.visibility,can_book:f.can_book,weekdays:f.weekdays??[1,2,3,4,5],start_hour:f.start_hour,end_hour:f.end_hour,slot_minutes:f.slot_minutes,note:f.note??""})},[f]);const re=async()=>{if(!a?.id||!x)return;if(!d.owner){p.error("Bitte Kollegin oder Kollegen wählen.");return}const t=new Date(d.start);if(Number.isNaN(t.getTime())){p.error("Ungültige Startzeit.");return}const c=new Date(t.getTime()+Number(d.duration)*6e4),g=y.find(b=>["pending","accepted"].includes(b.status)&&[b.owner_user_id,b.requester_user_id].some(S=>S===d.owner||S===x)&&new Date(b.starts_at)<c&&new Date(b.ends_at)>t);if(g){p.error(`Zeitkonflikt mit â${g.title}â (${new Date(g.starts_at).toLocaleString(A())}). Bitte anderen Slot wählen.`);return}n(!0);try{const{error:b}=await F.from("partner_calendar_bookings").insert({org_id:a.id,owner_user_id:d.owner,requester_user_id:x,title:d.title.trim()||"Interner Termin",note:d.note||null,starts_at:t.toISOString(),ends_at:c.toISOString()});if(b)throw b;const S=z(d.owner);if(S)try{await be({orgId:a.id,kind:"booking_request",recipients:[S],title:d.title.trim()||"Interner Termin",startsAt:t.toISOString(),endsAt:c.toISOString(),note:d.note||null,organizer:N?.user?.email??null})}catch(L){p.warning(L instanceof Error?`Anfrage gespeichert, E-Mail fehlgeschlagen: ${L.message}`:"Anfrage gespeichert, E-Mail fehlgeschlagen.")}p.success("Slot-Anfrage gesendet."),_(L=>({...L,title:"",note:""})),await O()}catch(b){p.error(b instanceof Error?b.message:"Anfrage fehlgeschlagen.")}finally{n(!1)}},ae=async(t,c)=>{n(!0);try{let g=null;c&&(g=(await Ee({calendarId:i,summary:`${t.title} (${R(t.requester_user_id)})`,description:t.note??void 0,start:t.starts_at,end:t.ends_at,conference:!0})).event.id);const{error:b}=await F.from("partner_calendar_bookings").update({status:c?"accepted":"declined",google_event_id:g,decided_at:new Date().toISOString()}).eq("id",t.id);if(b)throw b;const S=z(t.requester_user_id);if(S&&a?.id)try{await be({orgId:a.id,kind:"booking_decision",recipients:[S],title:t.title,startsAt:t.starts_at,endsAt:t.ends_at,note:t.note,decision:c?"accepted":"declined",organizer:N?.user?.email??null})}catch{}p.success(c?"Slot bestätigt und im Kalender eingetragen.":"Anfrage abgelehnt."),await O(),m?.()}catch(g){p.error(g instanceof Error?g.message:"Entscheidung fehlgeschlagen.")}finally{n(!1)}};return e.jsxs("div",{className:"grid gap-4 lg:grid-cols-2",children:[e.jsxs(ge,{children:[e.jsxs("p",{className:"flex items-center gap-2 font-semibold",children:[e.jsx(tt,{className:"h-4 w-4 text-primary"})," Kalender für das Team freigeben"]}),e.jsx("p",{className:"mt-1 text-xs text-muted-foreground",children:"Lege fest, wer deine Belegung sieht und in welchen Zeitfenstern Slots angefragt werden dürfen."}),e.jsxs("div",{className:"mt-4 space-y-3",children:[e.jsxs("div",{className:"grid gap-3 sm:grid-cols-2",children:[e.jsxs("div",{children:[e.jsx(w,{className:"text-xs text-muted-foreground",children:"Freigabe für"}),e.jsxs(V,{value:r.scope,onValueChange:t=>o({...r,scope:t}),children:[e.jsx(H,{children:e.jsx(P,{})}),e.jsxs(q,{children:[e.jsx($,{value:"org",children:"Ganzes Team"}),e.jsx($,{value:"user",children:"Einzelne Person"})]})]})]}),r.scope==="user"&&e.jsxs("div",{children:[e.jsx(w,{className:"text-xs text-muted-foreground",children:"Person"}),e.jsxs(V,{value:r.shared_with,onValueChange:t=>o({...r,shared_with:t}),children:[e.jsx(H,{children:e.jsx(P,{placeholder:"Wählen"})}),e.jsx(q,{children:T.filter(t=>t.user_id!==x).map(t=>e.jsx($,{value:t.user_id,children:t.name},t.user_id))})]})]}),e.jsxs("div",{children:[e.jsx(w,{className:"text-xs text-muted-foreground",children:"Sichtbarkeit"}),e.jsxs(V,{value:r.visibility,onValueChange:t=>o({...r,visibility:t}),children:[e.jsx(H,{children:e.jsx(P,{})}),e.jsxs(q,{children:[e.jsx($,{value:"busy",children:"Nur belegt / frei"}),e.jsx($,{value:"details",children:"Termindetails"})]})]})]}),e.jsxs("div",{children:[e.jsx(w,{className:"text-xs text-muted-foreground",children:"Slot-Länge"}),e.jsxs(V,{value:String(r.slot_minutes),onValueChange:t=>o({...r,slot_minutes:Number(t)}),children:[e.jsx(H,{children:e.jsx(P,{})}),e.jsx(q,{children:[15,30,45,60].map(t=>e.jsxs($,{value:String(t),children:[t," Min."]},t))})]})]}),e.jsxs("div",{children:[e.jsx(w,{className:"text-xs text-muted-foreground",children:"Von (Stunde)"}
1),e.jsx(U,{type:"number",min:0,max:23,value:r.start_hour,onChange:t=>o({...r,start_hour:Number(t.target.value)})})]}),e.jsxs("div",{children:[e.jsx(w,{className:"text-xs text-muted-foreground",children:"Bis (Stunde)"}),e.jsx(U,{type:"number",min:1,max:24,value:r.end_hour,onChange:t=>o({...r,end_hour:Number(t.target.value)})})]})]}),e.jsxs("div",{children:[e.jsx(w,{className:"text-xs text-muted-foreground",children:"Buchbare Wochentage"}),e.jsx("div",{className:"mt-1 flex flex-wrap gap-1.5",children:mt.map(t=>{const c=r.weekdays.includes(t.value);return e.jsx("button",{onClick:()=>o({...r,weekdays:c?r.weekdays.filter(g=>g!==t.value):[...r.weekdays,t.value]}),className:`rounded-lg border px-3 py-1 text-xs transition-colors ${c?"border-primary/40 bg-primary/20 text-primary":"border-white/10 bg-white/[0.03] text-muted-foreground"}`,children:t.label},t.value)})})]}),e.jsxs("div",{className:"flex items-center justify-between rounded-xl border border-white/10 bg-white/[0.03] p-3",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium",children:"Slot-Buchung erlauben"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Teammitglieder können Zeiten anfragen, du bestätigst."})]}),e.jsx(Me,{checked:r.can_book,onCheckedChange:t=>o({...r,can_book:t})})]}),e.jsxs("div",{children:[e.jsx(w,{className:"text-xs text-muted-foreground",children:"Hinweis für das Team"}),e.jsx(fe,{rows:2,value:r.note,onChange:t=>o({...r,note:t.target.value}),placeholder:"z. B. Calls bitte nur nachmittags"})]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(D,{onClick:G,disabled:M,children:"Freigabe speichern"}),f&&e.jsxs(D,{variant:"outline",onClick:me,disabled:M,children:[e.jsx(ce,{className:"mr-2 h-4 w-4"})," Freigabe entfernen"]})]})]})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs(ge,{children:[e.jsxs("p",{className:"flex items-center gap-2 font-semibold",children:[e.jsx(st,{className:"h-4 w-4 text-primary"})," Slot beim Team anfragen"]}),te.length===0?e.jsx("p",{className:"mt-2 text-xs text-muted-foreground",children:"Noch niemand im Team hat dir Buchungs-Slots freigegeben."}):e.jsxs("div",{className:"mt-3 space-y-3",children:[e.jsxs("div",{children:[e.jsx(w,{className:"text-xs text-muted-foreground",children:"Kalender"}),e.jsxs(V,{value:d.owner,onValueChange:t=>_({...d,owner:t}),children:[e.jsx(H,{children:e.jsx(P,{placeholder:"Person wählen"})}),e.jsx(q,{children:te.map(t=>e.jsxs($,{value:t.owner_user_id,children:[R(t.owner_user_id)," · ",t.start_hour,"â",t.end_hour," Uhr"]},t.id))})]})]}),e.jsxs("div",{className:"grid gap-3 sm:grid-cols-2",children:[e.jsxs("div",{children:[e.jsx(w,{className:"text-xs text-muted-foreground",children:"Start"}),e.jsx(U,{type:"datetime-local",value:d.start,onChange:t=>_({...d,start:t.target.value})})]}),e.jsxs("div",{children:[e.jsx(w,{className:"text-xs text-muted-foreground",children:"Dauer"}),e.jsxs(V,{value:d.duration,onValueChange:t=>_({...d,duration:t}),children:[e.jsx(H,{children:e.jsx(P,{})}),e.jsx(q,{children:["15","30","45","60"].map(t=>e.jsxs($,{value:t,children:[t," Min."]},t))})]})]})]}),e.jsxs("div",{children:[e.jsx(w,{className:"text-xs text-muted-foreground",children:"Thema"}),e.jsx(U,{value:d.title,onChange:t=>_({...d,title:t.target.value}),placeholder:"z. B. Deal-Review Musterfirma"})]}),e.jsxs("div",{children:[e.jsx(w,{className:"text-xs text-muted-foreground",children:"Notiz"}),e.jsx(fe,{rows:2,value:d.note,onChange:t=>_({...d,note:t.target.value})})]}),e.jsx(D,{onClick:re,disabled:M,children:"Slot anfragen"})]})]}),e.jsxs(ge,{children:[e.jsxs("p",{className:"flex items-center gap-2 font-semibold",children:[e.jsx(rt,{className:"h-4 w-4 text-primary"})," Slot-Anfragen"]}),W.length===0&&se.length===0?e.jsx("p",{className:"mt-2 text-xs text-muted-foreground",children:"Keine Anfragen."}):e.jsxs("div",{className:"mt-3 space-y-2",children:[W.map(t=>e.jsxs("div",{className:"rounded-xl border border-white/10 bg-white/[0.03] p-3",children:[e.jsx("p",{className:"text-sm font-medium",children:t.title}),e.jsxs("p",{className:"text-xs text-muted-foreground",children:["von ",R(t.requester_user_id
1)," · ",new Date(t.starts_at).toLocaleString(A(),{dateStyle:"medium",timeStyle:"short"})]}),t.note&&e.jsx("p",{className:"mt-1 text-xs text-muted-foreground",children:t.note}),t.status==="pending"?e.jsxs("div",{className:"mt-2 flex gap-2",children:[e.jsxs(D,{size:"sm",onClick:()=>ae(t,!0),disabled:M,children:[e.jsx($e,{className:"mr-1 h-4 w-4"})," Annehmen"]}),e.jsxs(D,{size:"sm",variant:"outline",onClick:()=>ae(t,!1),disabled:M,children:[e.jsx(at,{className:"mr-1 h-4 w-4"})," Ablehnen"]})]}):e.jsx(ee,{variant:"outline",className:"mt-2 border-white/20",children:t.status==="accepted"?"Bestätigt":"Abgelehnt"})]},t.id)),se.map(t=>e.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-2 rounded-xl border border-white/10 bg-white/[0.02] p-3",children:[e.jsxs("div",{className:"min-w-0",children:[e.jsxs("p",{className:"text-sm",children:[t.title," bei ",R(t.owner_user_id)]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:new Date(t.starts_at).toLocaleString(A(),{dateStyle:"medium",timeStyle:"short"})})]}),e.jsx(ee,{variant:"outline",className:"border-white/20",children:t.status==="pending"?"Offen":t.status==="accepted"?"Bestätigt":"Abgelehnt"})]},t.id))]})]})]})]})}const Q=({className:i="",children:m})=>e.jsx("div",{className:`rounded-2xl border border-white/10 bg-white/[0.04] p-5 backdrop-blur-xl ${i}`,children:m}),ut=[{value:"7",label:"Nächste 7 Tage"},{value:"14",label:"Nächste 14 Tage"},{value:"30",label:"Nächste 30 Tage"},{value:"90",label:"Nächstes Quartal"}],pe=[{value:"call",label:"Telefon-Call",icon:lt,prefix:"Call"},{value:"meeting",label:"Termin / Meeting",icon:Fe,prefix:"Termin"},{value:"demo",label:"Produkt-Demo",icon:de,prefix:"Demo"},{value:"block",label:"Zeitblock (Fokus)",icon:ot,prefix:"Fokus"}],Ce=(i,m=!1)=>i?new Date(i).toLocaleString(A(),m?{dateStyle:"full"}:{dateStyle:"medium",timeStyle:"short"}):"â",xt=i=>i?new Date(i).toLocaleDateString(A(),{weekday:"long",day:"2-digit",month:"long"}):"Ohne Datum";function gt(){const{org:i,session:m}=Te(),[a,N]=u.useState(null),[x,j]=u.useState(!0),[v,y]=u.useState(!1),[C,T]=u.useState(!1),[E,M]=u.useState("primary"),[n,r]=u.useState("30"),[o,d]=u.useState([]),[_,O]=u.useState(null),[z,R]=u.useState(!1),[f,te]=u.useState("grid"),[W,se]=u.useState("week"),[G,me]=u.useState(new Date),[re,ae]=u.useState([]),t=new Date,[c,g]=u.useState(()=>({kind:"call",title:"",lead_id:"none",attendees:"",location:"",description:"",start:je(new Date(t.getTime()+36e5)),duration:"30",meet:!1})),b=u.useCallback(async()=>{j(!0);try{const s=await Ue();if(N(s),s.calendars?.length){const l=s.calendars.find(h=>h.primary)??s.calendars[0];M(h=>s.calendars.some(K=>K.id===h)?h:l.id)}}catch(s){p.error(s instanceof Error?s.message:"Status konnte nicht geladen werden.")}finally{j(!1)}},[]),S=u.useCallback(async()=>{if(!(!a?.connected||!a.healthy)){T(!0),O(null);try{let s,l;f==="list"?(s=new Date,l=new Date(Date.now()+Number(n)*864e5)):W==="day"?(s=new Date(G),s.setHours(0,0,0,0),l=new Date(s.getTime()+2*864e5)):W==="week"?(s=new Date(G),s.setDate(s.getDate()-(s.getDay()+6)%7-1),s.setHours(0,0,0,0),l=new Date(s.getTime()+16*864e5)):(s=new Date(G.getFullYear(),G.getMonth(),1),s.setDate(s.getDate()-7),l=new Date(G.getFullYear(),G.getMonth()+1,8));const{events:h}=await Ze({calendarId:E,timeMin:s.toISOString(),timeMax:l.toISOString()});d(h)}catch(s){O(s instanceof Error?s.message:"Termine konnten nicht geladen werden.")}finally{T(!1)}}},[a?.connected,a?.healthy,E,n,f,W,G]);u.useEffect(()=>{b()},[b]),u.useEffect(()=>{S()},[S]),u.useEffect(()=>{i?.id&&F.from("partner_leads").select("id, company_name, email").eq("org_id",i.id).order("created_at",{ascending:!1}).limit(200).then(({data:s})=>ae(s??[]))},[i?.id]);const L=async()=>{const s=window.open("","aiploya-calendar-oauth","width=600,height=740");if(!s){p.error("Popup wurde blockiert. Bitte Popups erlauben und erneut versuchen.");return}y(!0);try{const l=await We(),h=Ye(s);s.location.href=l,await h,p.success("Google Kalender verbunden."),await b()}catch(l){s.close(),p.error(l instanceof Error?l.message:"Verbindung fehlgeschlagen.")}finally{y(!1)}},Ie=async()=>{T(!0);try{await Xe(),d([]),p.success("Kalender-Verbindung getrennt."),await b()}catch(s){p.error(s instanceof Error?s.message:"Trennen fehlgeschlagen.")}finally{T(!1)}},ze=async()=>{const s=pe.find(B=>B.value===c.kind)??pe[0],l=re.find(B=>B.id===c.lead_id),h=c.title.trim()||`${s.prefix}${l?` â ${l.company_name}`:""}`;if(!c.start){p.error("Bitte Startzeit wählen.");return}const K=new Date(c.start);if(Number.isNaN(K.getTime())){p.error("Ungültige Startzeit.");return}const he=new Date(K.getTime()+Number(c.duration||"30")*6e4),ue=[...c.attendees.split(/[,;
1\s]+/).filter(Boolean),...l?.email?[l.email]:[]],xe=Je(o,K.toISOString(),he.toISOString());if(xe.length>0){p.error(`Zeitkonflikt: ${xe.length} bestehender Termin überlappt (${xe.map(B=>B.summary||"Termin").slice(0,2).join(", ")}). Bitte anderen Slot wählen.`);return}T(!0);try{const B=await Ee({calendarId:E,summary:h,description:[c.description,l?`Lead: ${l.company_name}`:null].filter(Boolean).join(` 2 3`)||void 0,location:c.location||void 0,start:K.toISOString(),end:he.toISOString(),attendees:Array.from(new Set(ue)),conference:c.meet});if(ue.length>0&&i?.id)try{await be({orgId:i.id,kind:"invite",recipients:ue,title:h,startsAt:K.toISOString(),endsAt:he.toISOString(),note:c.description||null,organizer:m?.user?.email??null,meetLink:B.event.hangoutLink??null})}catch(ne){p.warning(ne instanceof Error?`Termin erstellt, Einladungsmail fehlgeschlagen: ${ne.message}`:"Termin erstellt, Einladungsmail fehlgeschlagen.")}c.lead_id!=="none"&&i?.id&&await F.from("partner_activities").insert({org_id:i.id,lead_id:c.lead_id,activity_type:c.kind==="call"?"call":"meeting",subject:h,body:`Kalender-Termin: ${Ce(K.toISOString())}`,occurred_at:K.toISOString()}),p.success(B.event.hangoutLink?"Termin mit Google Meet erstellt.":"Termin erstellt."),R(!1),g(ne=>({...ne,title:"",description:"",attendees:"",location:""})),await S()}catch(B){p.error(B instanceof Error?B.message:"Termin konnte nicht erstellt werden.")}finally{T(!1)}},ye=async s=>{T(!0);try{await Qe({calendarId:E,eventId:s}),d(l=>l.filter(h=>h.id!==s)),p.success("Termin gelöscht.")}catch(l){p.error(l instanceof Error?l.message:"Löschen fehlgeschlagen.")}finally{T(!1)}},_e=u.useMemo(()=>{const s=new Map;return o.forEach(l=>{const h=xt(l.start);s.set(h,[...s.get(h)??[],l])}),Array.from(s.entries())},[o]),Oe=o.filter(s=>s.start&&new Date(s.start).toDateString()===new Date().toDateString()).length;return e.jsxs("div",{className:"space-y-4",children:[e.jsx(Q,{children:e.jsxs("div",{className:"flex flex-wrap items-start justify-between gap-4",children:[e.jsxs("div",{className:"min-w-0",children:[e.jsxs("h2",{className:"flex items-center gap-2 text-lg font-semibold",children:[e.jsx(Ae,{className:"h-5 w-5 text-primary"}),"Google Kalender"]}),e.jsx("p",{className:"mt-1 text-sm text-muted-foreground",children:"Verbinde deinen Google-Kalender, um Calls und Termine direkt aus AIploya zu planen â synchron in beide Richtungen."}),x?e.jsx("p",{className:"mt-3 text-xs text-muted-foreground",children:"Status wird geladen â¦"}):a?.connected?e.jsxs("div",{className:"mt-3 flex flex-wrap items-center gap-2 text-xs",children:[a.healthy?e.jsxs(ee,{variant:"outline",className:"border-emerald-400/30 bg-emerald-500/15 text-emerald-300",children:[e.jsx($e,{className:"mr-1 h-3 w-3"})," Verbunden"]}):e.jsxs(ee,{variant:"outline",className:"border-amber-400/30 bg-amber-500/15 text-amber-300",children:[e.jsx(Be,{className:"mr-1 h-3 w-3"})," Verbunden, aber Fehler"]}),a.email&&e.jsx("span",{className:"text-muted-foreground",children:a.email}),e.jsxs("span",{className:"text-muted-foreground",children:["· Heute: ",Oe," Termine"]})]}):e.jsx(ee,{variant:"outline",className:"mt-3 border-white/20 text-white/70",children:"Nicht verbunden"}),a?.connected&&a.healthy===!1&&a.details&&e.jsx("p",{className:"mt-2 max-w-xl rounded-lg border border-amber-400/20 bg-amber-500/10 p-2 text-xs text-amber-200",children:a.details})]}),e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsxs(D,{variant:"outline",size:"sm",onClick:()=>{b(),S()},disabled:C||x,children:[e.jsx(nt,{className:`mr-2 h-4 w-4 ${C?"animate-spin":""}`})," Aktualisieren"]}),a?.connected?e.jsxs(e.Fragment,{children:[e.jsxs(D,{variant:"outline",size:"sm",onClick:L,disabled:v,children:[e.jsx(Se,{className:"mr-2 h-4 w-4"})," Neu verbinden"]}),e.jsxs(D,{variant:"outline",size:"sm",onClick:Ie,disabled:C,children:[e.jsx(it,{className:"mr-2 h-4 w-4"})," Trennen"]})]}):e.jsxs(D,{size:"sm",onClick:L,disabled:v,children:[e.jsx(Se,{className:"mr-2 h-4 w-4"})," ",v?"Verbinde â¦":"Google Kalender verbinden"]})]})]})}),a?.connected&&a.healthy&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"flex gap-1 rounded-2xl border border-white/10 bg-white/[0.03] p-1",children:[["grid","Kalenderansicht"],["list","Terminl
3iste"],["share","Team-Freigaben"]].map(([s,l])=>e.jsx("button",{onClick:()=>te(s),className:`flex-1 rounded-xl px-3 py-2 text-sm transition-colors ${f===s?"bg-primary/20 text-primary":"text-muted-foreground hover:text-foreground"}`,children:l},s))}),e.jsxs(Q,{className:"flex flex-wrap items-end gap-3",children:[e.jsxs("div",{className:"min-w-[200px] flex-1",children:[e.jsx(w,{className:"text-xs text-muted-foreground",children:"Kalender"}),e.jsxs(V,{value:E,onValueChange:M,children:[e.jsx(H,{children:e.jsx(P,{})}),e.jsx(q,{children:a.calendars.map(s=>e.jsxs($,{value:s.id,children:[s.summary,s.primary?" (Standard)":""]},s.id))})]})]}),f==="list"&&e.jsxs("div",{className:"min-w-[160px]",children:[e.jsx(w,{className:"text-xs text-muted-foreground",children:"Zeitraum"}),e.jsxs(V,{value:n,onValueChange:r,children:[e.jsx(H,{children:e.jsx(P,{})}),e.jsx(q,{children:ut.map(s=>e.jsx($,{value:s.value,children:s.label},s.value))})]})]}),e.jsxs(Ve,{open:z,onOpenChange:R,children:[e.jsx(He,{asChild:!0,children:e.jsxs(D,{children:[e.jsx(ie,{className:"mr-2 h-4 w-4"})," Termin / Call anlegen"]})}),e.jsxs(Pe,{className:"max-h-[90vh] overflow-y-auto sm:max-w-lg",children:[e.jsx(qe,{children:e.jsx(Ge,{children:"Neuer Kalendereintrag"})}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{children:[e.jsx(w,{children:"Art"}),e.jsxs(V,{value:c.kind,onValueChange:s=>g(l=>({...l,kind:s})),children:[e.jsx(H,{children:e.jsx(P,{})}),e.jsx(q,{children:pe.map(s=>e.jsx($,{value:s.value,children:s.label},s.value))})]})]}),e.jsxs("div",{children:[e.jsx(w,{children:"Titel (optional)"}),e.jsx(U,{value:c.title,onChange:s=>g(l=>({...l,title:s.target.value})),placeholder:"Wird automatisch aus Art und Lead gebildet"})]}),e.jsxs("div",{children:[e.jsx(w,{children:"Lead / Kunde"}),e.jsxs(V,{value:c.lead_id,onValueChange:s=>g(l=>({...l,lead_id:s})),children:[e.jsx(H,{children:e.jsx(P,{})}),e.jsxs(q,{children:[e.jsx($,{value:"none",children:"Kein Lead"}),re.map(s=>e.jsx($,{value:s.id,children:s.company_name},s.id))]})]})]}),e.jsxs("div",{className:"grid gap-3 sm:grid-cols-2",children:[e.jsxs("div",{children:[e.jsx(w,{children:"Start"}),e.jsx(U,{type:"datetime-local",value:c.start,onChange:s=>g(l=>({...l,start:s.target.value}))})]}),e.jsxs("div",{children:[e.jsx(w,{children:"Dauer (Minuten)"}),e.jsxs(V,{value:c.duration,onValueChange:s=>g(l=>({...l,duration:s})),children:[e.jsx(H,{children:e.jsx(P,{})}),e.jsx(q,{children:["15","30","45","60","90","120"].map(s=>e.jsxs($,{value:s,children:[s," Min."]},s))})]})]})]}),e.jsxs("div",{children:[e.jsx(w,{children:"Teilnehmer (E-Mails, komma-getrennt)"}),e.jsx(U,{value:c.attendees,onChange:s=>g(l=>({...l,attendees:s.target.value})),placeholder:"[email protected]"})]}),e.jsxs("div",{children:[e.jsx(w,{children:"Ort / Telefonnummer"}),e.jsx(U,{value:c.location,onChange:s=>g(l=>({...l,location:s.target.value}))})]}),e.jsxs("div",{children:[e.jsx(w,{children:"Notizen"}),e.jsx(fe,{rows:3,value:c.description,onChange:s=>g(l=>({...l,description:s.target.value}))})]}),e.jsxs("div",{className:"flex items-center justify-between rounded-xl border border-white/10 bg-white/[0.03] p-3",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium",children:"Google Meet Link erstellen"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Fügt automatisch einen Videolink hinzu."})]}),e.jsx(Me,{checked:c.meet,onCheckedChange:s=>g(l=>({...l,meet:s}))})]})]}),e.jsxs(Re,{children:[e.jsx(D,{variant:"outline",onClick:()=>R(!1),children:"Abbrechen"}),e.jsx(D,{onClick:ze,disabled:C,children:C?"Speichert â¦":"Termin erstellen"})]})]})]})]}),_&&e.jsx(Q,{className:"border-amber-400/20 bg-amber-500/10",children:e.jsx("p",{className:"text-sm text-amber-200",children:_})}),f==="grid"&&e.jsx(ct,{events:o,view:W,cursor:G,onCursorChange:me,onViewChange:se,onCreateAt:s=>{g(l=>({...l,start:je(s)})),R(!0)},onDelete:s=>void ye(s)}),f==="share"&&e.jsx(ht,{calendarId:E,onChanged:()=>void S()}),e.jsxs("div",{className:f==="list"?"space-y-4":"hidden",children:[_e.map(([s,l])=>e.jsxs(Q,{children:[e.jsx("p",{className:"mb-3 text-sm font-semibold text-primary",children:s}),e.jsx("div",{className:"space-y-2",children:l.map(h=>e.jsx("div",{className:"rounded-xl border border-white/10 bg-white/[0.03] p-3",children:e.jsxs("div",{className:"flex flex-wrap items-start justify-between gap-2",children:[e.jsxs("div",{className:"min-w-0",children:[e.jsx("p",{className:"text-sm font-medium",children:h.summary}),e.jsx("p",{className:"mt-1 text-xs text-muted-foreground",children:h.allDay?"Ganztägig":`${Ce(h.start)} â ${new Date(h.end??h.start??"").toLocaleTimeString(A(),{hour:"2-digit",minute:"2-digit"})}`}),h.location&&e.jsx("p",{className:"mt-1 text-xs text-muted-foreground",children:h.location}),h.attendees.length>0&&e.jsxs("p",{className:"mt-1 text-xs text-muted-foreground",children:[h.attendees.length," Teilnehmer: ",h.attendees.map(K=>
3K.email).filter(Boolean).join(", ")]})]}),e.jsxs("div",{className:"flex items-center gap-1",children:[h.hangoutLink&&e.jsx(D,{asChild:!0,variant:"ghost",size:"icon",title:"Google Meet",children:e.jsx("a",{href:h.hangoutLink,target:"_blank",rel:"noreferrer",children:e.jsx(de,{className:"h-4 w-4"})})}),h.htmlLink&&e.jsx(D,{asChild:!0,variant:"ghost",size:"icon",title:"In Google Kalender öffnen",children:e.jsx("a",{href:h.htmlLink,target:"_blank",rel:"noreferrer",children:e.jsx(Le,{className:"h-4 w-4"})})}),e.jsx(D,{variant:"ghost",size:"icon",title:"Löschen",onClick:()=>ye(h.id),disabled:C,children:e.jsx(ce,{className:"h-4 w-4 text-rose-300"})})]})]})},h.id))})]},s)),!C&&_e.length===0&&!_&&e.jsx(Q,{children:e.jsx("p",{className:"text-sm text-muted-foreground",children:"Keine Termine im gewählten Zeitraum. Lege einen Call oder Termin an."})})]})]})]})}function Ut(){return e.jsxs("div",{className:"space-y-5",children:[e.jsxs("div",{children:[e.jsxs("h1",{className:"flex items-center gap-2 text-2xl font-semibold",children:[e.jsx(Ae,{className:"h-6 w-6 text-primary"}),"Kalender"]}),e.jsx("p",{className:"mt-1 text-sm text-muted-foreground",children:"Synchronisiere deinen Google-Kalender, plane Calls und Termine mit Leads und blocke dir eigene Zeiten â alles direkt aus dem Partner Hub."})]}),e.jsx(gt,{})]})}export{Ut 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.