1import{j as e,r,u as qe,R as Xe,f as Ze}from"./react-vendor-Byk_u4_X.js";import{a as Ye}from"./AdminLayout-B7i2bDBP.js";import{A as Je}from"./AdminPageHeader-DB5x9kcl.js";import{A as Qe}from"./AdminInboxPage-zKbOMnMT.js";import{c as et,L as U,s as k,D as tt,a as st,d as nt,b as rt,V as u,B as j,J as ge,f as be,ad as T,aj as ke,ao as Fe,j as Ae,a7 as at,g as it,h as ot,ab as dt,aY as ye,aX as lt,Z as Ee}from"./index-BBBV1oA-.js";import{T as Me}from"./textarea-DfyJ7ixu.js";import{u as mt,M as ct,a as ut}from"./MailAnhaenge-DahfBbxt.js";import{E as pt}from"./EmptyState-BlRdtXmP.js";import{L as ht}from"./list-skeleton-Dlf3iHWf.js";import{E as ft}from"./ErrorAlert-Bi_QZl62.js";import{u as xt}from"./usePullToRefresh-B9ycGea5.js";import{S as ze}from"./switch-Dj6Wcmbk.js";import{L as Ce}from"./label-CP41nqMo.js";import{P as gt,a as bt,b as wt}from"./popover-DVJ5GF76.js";import{C as vt,a as jt,b as Pt,c as Nt,d as St,e as Ie}from"./command-BWZH-cZK.js";import{o as kt}from"./oauthState-Dz8pTVKW.js";import{A as Ue}from"./arrow-left-LeErwWV-.js";import{A as At}from"./arrow-right-DHZhb1LA.js";import{L as yt}from"./link-2-BQT3INH1.js";import{S as Et}from"./settings-2-DlJJAKic.js";import{C as Mt}from"./chevron-down-Bav_zYh6.js";import{C as zt}from"./chevrons-up-down-ESRtkaWX.js";import{b as Ct,n as It}from"./emailThreading-DyWz9o5K.js";import{M as fe}from"./mail-CwZFCkmN.js";import{I as Dt}from"./inbox-BCFfoLiK.js";import{S as De}from"./send-CO24z8rd.js";import"./Navbar-VQbl5_AA.js";import"./BackButton-D2ghk39d.js";import"./index-BdQq_4o_.js";import"./user-plus-D6BsfnVu.js";import"./credit-card-BXyaVHS_.js";import"./share-2-9kgrOw__.js";import"./message-square-DTewqW1o.js";import"./voicemail-QK4qc364.js";import"./phone-YqmgHEQN.js";import"./circle-help-BDMvEd5o.js";import"./framer-motion-ClkXBPBC.js";import"./use-mobile-jiYRTNn4.js";import"./orgMenue-B1jWom6p.js";import"./calendar-kqDakhUT.js";import"./clock-hOBhXFSA.js";import"./users-DMC6AT9q.js";/* empty css */import"./dropdown-menu-BVn-Scqe.js";import"./circle-DEpU1wz3.js";import"./sun-CTnv951F.js";import"./book-open-BFkQDXHL.js";import"./shield-CV88edtg.js";import"./plus-BN1rUtdb.js";import"./layout-dashboard-D3stOY_D.js";import"./settings-BR6v63Tm.js";import"./reportTabs-DPyhW78S.js";import"./tanstack-DDYcxB9q.js";import"./AkquiseSidebar-BQ-NDjRi.js";import"./KiSymbol-MLJAqCzt.js";import"./sparkles-dFJo9uF1.js";import"./nurSuperAdmin-BgzV9u9a.js";import"./filter-32lGm1LA.js";import"./save-DIZOa2bh.js";import"./flame-DQRvBaSg.js";import"./message-circle-CkTqL7qL.js";import"./phone-call-BUPY53W5.js";import"./headset-1VHuQ-a5.js";import"./calendar-clock-BiukR7T5.js";import"./activity-B53Q-1IF.js";import"./radio-BJfDYyGC.js";import"./store-C_EGhZz_.js";import"./map-pin-C3SWkwZn.js";import"./chart-column-DgManq71.js";import"./presentation-BctAb-Ms.js";import"./list-ordered-C3U_85-T.js";import"./sliders-horizontal-C_VgoBRM.js";import"./list-D3tMX0xY.js";import"./pencil-BV4YJuJp.js";import"./chevron-up-ChQXHYAP.js";import"./trash-2-DMDScpAn.js";import"./caller-portal-logo-CfGgCOOW.js";import"./caller-portal-logo-light-DXuQWsq_.js";import"./kopfzeile-CqrTBrEl.js";import"./usePortalEinstellung-3gmfs7bw.js";import"./taxCalculator-DlzJJlRe.js";import"./dealCalculations-B2_lwCkI.js";import"./objektWerte-B-NxYbDL.js";import"./OrgMenueLinks-Dbn38k-c.js";import"./orgNews-Fmf9lmKQ.js";import"./star-Suj5K2AZ.js";import"./AkquiseMobileTabs-CO62wz2p.js";import"./vendor-utils-kGa5bYp2.js";import"./shield-check-FUcO9DsW.js";import"./ImpersonationBanner-B8vY1lfr.js";import"./appStore-DZla2nbi.js";import"./play-jtfqtHek.js";import"./SEOHead-DFf7zBOy.js";import"./supportWidgetBridge-CcYJlXuW.js";import"./appOberflaeche-DCOkq0vx.js";import"./Combobox-CK8lPvGw.js";import"./FollowUpCard-AOwOCFcM.js";import"./ClickToCall-CBwacFnp.js";import"./calendar-CJaaexAA.js";import"./isSameDay-ChyLyvqT.js";import"./startOfDay-Dvv6Iki7.js";import"./constants-DNwe31gR.js";import"./subDays-CDVjryx4.js";import"./addDays-DbY_saIL.js";import"./format-BuW_ys6A.js";import"./en-US-B09pP2aP.js";import"./startOfMonth-DzopgdX2.js";import"./endOfMonth-pZnRpSAD.js";import"./addMonths-z7U1R1EC.js";import"./differenceInCalendarMonths-uEBS6Qho.js";import"./isBefore-CjqNPsA1.js";import"./endOfISOWeek-yyvoBobN.js";import"./de-BzajLt3a.js";import"./isToday-BoRVcPOq.js";import"./constructNow-BKHR3v70.js";import"./addHours-C_qlbD5a.js";import"./addMilliseconds-CJVvaWdV.js";
1import"./calendar-days-Dt6avt3R.js";import"./user-cog-CqypAsoQ.js";import"./SwipeZeile-jmSzIJUe.js";import"./lazyBeimOeffnen-DWr-hEdZ.js";import"./haptik-B5ysJvZH.js";import"./select-Hb4MScDP.js";import"./SlashInsertMenu-Dsb_9Xa5.js";import"./emailTemplateDefaults-5zPeXL_k.js";import"./oeffentlicheBasis-DsvZTMdT.js";import"./braces-BrgOeVh6.js";import"./clipboard-list-C3oyao5_.js";import"./CallRecordingPlayer-hg7fB5xN.js";import"./pause-DD8qU6dW.js";import"./circle-alert-BoK91A6T.js";import"./CallOutcomeSelect-CF55wYky.js";import"./callTaxonomies-CBxdejhe.js";import"./phone-incoming-BuAkuFak.js";import"./isYesterday-BcpW-HgP.js";import"./list-todo-C_qGoQaQ.js";import"./useInboxTasks-Bc9YdCfR.js";import"./useKontoAnsicht-DK08gOWW.js";import"./parseISO-CiZlHuTx.js";import"./check-check-D-tTVWsY.js";import"./supabase-CRGcyFpg.js";import"./paperclip-BAcPeUuR.js";import"./errorCodes-CfrdT8dP.js";import"./copy-5H2R1Rl4.js";import"./arrow-down-j8zMws2G.js";/** 2 * @license lucide-react v0.462.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 Ht=et("CornerUpRight",[["polyline",{points:"15 14 20 9 15 4",key:"1tbx3s"}],["path",{d:"M4 20v-7a4 4 0 0 1 4-4h12",key:"1lu4f8"}]]);function Tt(){return e.jsxs("svg",{width:"18",height:"18",viewBox:"0 0 21 21","aria-hidden":"true",className:"shrink-0",children:[e.jsx("rect",{x:"1",y:"1",width:"9",height:"9",fill:"#F25022"}),e.jsx("rect",{x:"11",y:"1",width:"9",height:"9",fill:"#7FBA00"}),e.jsx("rect",{x:"1",y:"11",width:"9",height:"9",fill:"#00A4EF"}),e.jsx("rect",{x:"11",y:"11",width:"9",height:"9",fill:"#FFB900"})]})}function _t(){return e.jsxs("svg",{width:"18",height:"18",viewBox:"0 0 48 48","aria-hidden":"true",className:"shrink-0",children:[e.jsx("path",{fill:"#EA4335",d:"M24 9.5c3.54 0 6.71 1.22 9.21 3.6l6.85-6.85C35.9 2.38 30.47 0 24 0 14.62 0 6.51 5.38 2.56 13.22l7.98 6.19C12.43 13.72 17.74 9.5 24 9.5z"}),e.jsx("path",{fill:"#4285F4",d:"M46.98 24.55c0-1.57-.15-3.09-.38-4.55H24v9.02h12.94c-.58 2.96-2.26 5.48-4.78 7.18l7.73 6c4.51-4.18 7.09-10.36 7.09-17.65z"}),e.jsx("path",{fill:"#FBBC05",d:"M10.53 28.59c-.48-1.45-.76-2.99-.76-4.59s.27-3.14.76-4.59l-7.98-6.19C.92 16.46 0 20.12 0 24c0 3.88.92 7.54 2.56 10.78l7.97-6.19z"}),e.jsx("path",{fill:"#34A853",d:"M24 48c6.48 0 11.93-2.13 15.89-5.81l-7.73-6c-2.15 1.45-4.92 2.3-8.16 2.3-6.26 0-11.57-4.22-13.47-9.91l-7.98 6.19C6.51 42.62 14.62 48 24 48z"})]})}const Lt={microsoft:"Mit Microsoft anmelden",google:"Mit Google fortfahren"};function Bt({anbieter:i,laeuft:o,onClick:d}){return e.jsx("button",{type:"button",onClick:d,disabled:o,className:["w-full h-11 rounded-md","flex items-center justify-center gap-3","bg-white text-[#3c4043] hover:bg-[#f5f5f5] active:bg-[#eeeeee]","border border-[#dadce0]","text-sm font-medium tracking-[0.01em]","transition-colors","disabled:opacity-60 disabled:cursor-not-allowed","focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent focus-visible:ring-offset-2 focus-visible:ring-offset-background"].join(" "),children:o?e.jsxs(e.Fragment,{children:[e.jsx(U,{className:"h-4 w-4 animate-spin"}),"Weiterleitung â¦"]}):e.jsxs(e.Fragment,{children:[i==="microsoft"?e.jsx(Tt,{}):e.jsx(_t,{}),Lt[i]]})})}const we=[{id:"gmail",name:"Google / Gmail",domains:["gmail.com","googlemail.com"],smtpHost:"smtp.gmail.com",smtpPort:587,smtpSecure:!1,imapHost:"imap.gmail.com",imapPort:993,hint:"Google verlangt ein App-Passwort (Google-Konto â Sicherheit â 2-Faktor aktivieren â App-Passwörter). Das normale Passwort funktioniert nicht.",requiresAppPassword:!0,setupSteps:[{text:'Ãffne myaccount.google.com und gehe zu âSicherheit".',url:"https://myaccount.google.com/security"},{text:"Aktiviere die 2-Faktor-Bestätigung (Bestätigung in zwei Schritten), falls noch nicht aktiv."},{text:'Suche oben in der Suche nach âApp-Passwörter" und erstelle eins für âMail".',url:"https://myaccount.google.com/apppasswords"},{text:"Kopiere das 16-stellige Passwort und füge es im nächsten Schritt ein."}]},{id:"microsoft365",name:"Microsoft 365 / Outlook",domains:["outlook.com","outlook.de","hotmail.com","hotmail.de","live.com","live.de","msn.com"],smtpHost:"smtp.office365.com",smtpPort:587,smtpSecure:!1,imapHost:"outlook.office365.com",imapPort:993,hint:'Microsoft lehnt das normale Passwort ab. Privat (outlook.com/hotmail/live): App-Passwort erzeugen. Firmen-Postfach (Microsoft 365): âAuthentifiziertes SMTP" muss im Admin-Center für das Postfach aktiviert sein.',requiresAppPassword:!0,setupSteps:[{text:"Melde dich mit deinem Microsoft-Konto an und öffne die Sicherheitseinstellungen.",url:"https://account.microsoft.com/security"},{text:"Aktiviere die zweistufige Ãberprüfung â ohne sie gibt es bei Microsoft keine App-Passwörter."},{text:'Privates Konto (outlook.com/hotmail/live): Erstelle unter âApp-Passwörter" ein Passwort für Mail und kopiere es.',url:"https://account.live.com/proofs/AppPassword"},{text:'Firmen-Postfach (Microsoft 365): Bitte deinen Admin, âAuthentifiziertes SMTP" im Admin-Center für dein Postfach zu aktivieren â dann funktioniert dein normales Passwort.'}]}
6,{id:"google-workspace",name:"Google Workspace (eigene Domain)",domains:[],smtpHost:"smtp.gmail.com",smtpPort:587,smtpSecure:!1,imapHost:"imap.gmail.com",imapPort:993,hint:"Deine Domain läuft über Google Workspace. Google verlangt ein App-Passwort â das normale Passwort wird abgelehnt. Voraussetzung: Die 2-Faktor-Bestätigung ist im Konto aktiv (ggf. vom Google-Workspace-Admin freizugeben).",requiresAppPassword:!0,setupSteps:[{text:'Ãffne myaccount.google.com und gehe zu âSicherheit".',url:"https://myaccount.google.com/security"},{text:"Aktiviere die 2-Faktor-Bestätigung (Bestätigung in zwei Schritten), falls noch nicht aktiv. Ist die Option gesperrt, muss dein Google-Workspace-Admin sie erst freigeben."},{text:'Suche oben nach âApp-Passwörter" und erstelle eins für âMail".',url:"https://myaccount.google.com/apppasswords"},{text:"Kopiere das 16-stellige Passwort und füge es im nächsten Schritt ein."}]},{id:"ionos",name:"IONOS (1&1)",domains:["ionos.de"],smtpHost:"smtp.ionos.de",smtpPort:587,smtpSecure:!1,imapHost:"imap.ionos.de",imapPort:993,hint:"Benutzername ist die vollständige E-Mail-Adresse, Passwort ist das Postfach-Passwort â NICHT das Passwort deines IONOS-Kundenkontos.",setupSteps:[{text:"Melde dich im IONOS-Kundenbereich an.",url:"https://login.ionos.de"},{text:'Ãffne âE-Mail" und wähle dein Postfach aus.'},{text:"Nutze deine E-Mail-Adresse als Benutzername und das Passwort dieses Postfachs (nicht das Kundenkonto-Passwort). Kennst du es nicht mehr, setze es dort neu."}]},{id:"einsundeins",name:"1&1",domains:["1und1.de","online.de"],smtpHost:"smtp.1und1.de",smtpPort:587,smtpSecure:!1,imapHost:"imap.1und1.de",imapPort:993,hint:"Benutzername ist die vollständige E-Mail-Adresse, Passwort ist das Postfach-Passwort â NICHT das Passwort deines 1&1-Kundenkontos.",setupSteps:[{text:"Melde dich im 1&1 Control-Center an.",url:"https://control-center.1und1.de"},{text:'Ãffne âE-Mail" und wähle dein Postfach aus.'},{text:"Nutze deine E-Mail-Adresse als Benutzername und das Passwort dieses Postfachs. Kennst du es nicht mehr, setze es dort neu."}]},{id:"allinkl",name:"ALL-INKL.COM",domains:[],smtpHost:"smtp.kasserver.com",smtpPort:465,smtpSecure:!0,imapHost:"imap.kasserver.com",imapPort:993,hint:"Benutzername ist die vollständige E-Mail-Adresse, Passwort ist das Postfach-Passwort aus dem KAS (nicht das KAS-Login-Passwort). ALL-INKL unterstützt auch Port 587 (STARTTLS) â bei Problemen mit 465 in den erweiterten Einstellungen darauf umstellen.",setupSteps:[{text:"Melde dich im KAS (Kunden-Administrations-System) von ALL-INKL an.",url:"https://kas.all-inkl.com"},{text:'Ãffne âE-Mail" â âE-Mail Postfach" und wähle dein Postfach aus (oder lege eins an).'},{text:"Als SMTP-/IMAP-Server dient smtp.kasserver.com bzw. imap.kasserver.com â alternativ der in KAS angezeigte wXXXXXXX.kasserver.com."},{text:"Nutze die vollständige E-Mail-Adresse als Benutzername und das Passwort dieses Postfachs."}]},{id:"strato",name:"Strato",domains:["strato.de"],smtpHost:"smtp.strato.de",smtpPort:465,smtpSecure:!0,imapHost:"imap.strato.de",imapPort:993,hint:"Kein App-Passwort nötig â es zählt das Passwort des Postfachs, nicht das deines Strato-Kundenkontos.",setupSteps:[{text:"Melde dich im Strato-Kundenlogin an.",url:"https://www.strato.de/apps/CustomerService"},{text:"Ãffne die E-Mail-Verwaltung und wähle dein Postfach aus."},{text:"Nutze deine E-Mail-Adresse als Benutzername und das Passwort dieses Postfachs."}]},{id:"uniteddomains",name:"United Domains",domains:["udag.de"],smtpHost:"smtps.udag.de",smtpPort:465,smtpSecure:!0,imapHost:"imaps.udag.de",imapPort:993,setupSteps:[{text:"Melde dich im United-Domains-Portal an.",url:"https://www.united-domains.de/portal/"},{text:"Ãffne die E-Mail-Verwaltung und wähle dein Postfach aus."},{text:"Nutze deine E-Mail-Adresse als Benutzername und das Passwort dieses Postfachs."}]},{id:"gmx",name:"GMX",domains:["gmx.de","gmx.net","gmx.at","gmx.ch"],smtpHost:"mail.gmx.net",smtpPort:587,smtpSecure:!1,imapHost:"imap.gmx.net",imapPort:993,hint:'GMX verlangt zwei Dinge: den Haken bei âPOP3/IMAP-Abruf" UND ein anwendungsspezifisches Passwort. Dein normales GMX-Passwort wird mit â535 wrong user/password" abgelehnt.',requiresAppPassword:!0,setupSteps:[{text:"Melde dich bei GMX an und öffne die E-Mail-Einstellungen.",url:"https://www.gmx.net"},{text:'Gehe zu âPOP3/IMAP-Abruf" und aktiviere den Zugriff per IMAP â ohne diesen Haken klappt die Verbindung nicht.',url:"https://hilfe.gmx.net/pop-imap/einschalten.html"},{text:'Gehe zu âEinstellungen" â âSicherheit" â âAnwendungsspezifische Passwörter" und lege eins für Inscalia an.',url:"https://hilfe.gmx.net/sicherheit/2fa/anwendungsspezifisches-passwort.html"},{text:"Nutze deine GMX-Adresse als Benutzername und genau dieses anwendungsspezifische Passwort â nicht dein normales GMX-Passwort."}]}
6,{id:"webde",name:"WEB.DE",domains:["web.de"],smtpHost:"smtp.web.de",smtpPort:587,smtpSecure:!1,imapHost:"imap.web.de",imapPort:993,hint:'WEB.DE verlangt zwei Dinge: den Haken bei âPOP3/IMAP-Abruf" UND ein anwendungsspezifisches Passwort. Dein normales WEB.DE-Passwort wird mit â535 wrong user/password" abgelehnt.',requiresAppPassword:!0,setupSteps:[{text:"Melde dich bei WEB.DE an und öffne die E-Mail-Einstellungen.",url:"https://web.de"},{text:'Gehe zu âPOP3/IMAP-Abruf" und aktiviere den Zugriff per IMAP â ohne diesen Haken klappt die Verbindung nicht.',url:"https://hilfe.web.de/pop-imap/einschalten.html"},{text:'Gehe zu âEinstellungen" â âSicherheit" â âAnwendungsspezifische Passwörter" und lege eins für Inscalia an.',url:"https://hilfe.web.de/sicherheit/2fa/anwendungsspezifisches-passwort.html"},{text:"Nutze deine WEB.DE-Adresse als Benutzername und genau dieses anwendungsspezifische Passwort â nicht dein normales Passwort."}]},{id:"telekom",name:"Telekom / T-Online",domains:["t-online.de","magenta.de"],smtpHost:"securesmtp.t-online.de",smtpPort:587,smtpSecure:!1,imapHost:"secureimap.t-online.de",imapPort:993,hint:'Die Telekom verlangt ein eigenes âPasswort für E-Mail-Programme". Dein Telekom-Login-Passwort wird von secureimap/securesmtp abgelehnt.',requiresAppPassword:!0,setupSteps:[{text:"Ãffne das Telekom E-Mail-Center und melde dich an.",url:"https://email.t-online.de"},{text:'Gehe zu âEinstellungen" â âPasswörter & Sicherheit" und erstelle ein âPasswort für E-Mail-Programme".'},{text:"Nutze deine T-Online-Adresse als Benutzername und genau dieses Passwort (nicht dein Login-Passwort)."}]},{id:"icloud",name:"Apple iCloud",domains:["icloud.com","me.com","mac.com"],smtpHost:"smtp.mail.me.com",smtpPort:587,smtpSecure:!1,imapHost:"imap.mail.me.com",imapPort:993,hint:"Apple verlangt ein app-spezifisches Passwort (appleid.apple.com).",requiresAppPassword:!0,setupSteps:[{text:"Ãffne appleid.apple.com und melde dich mit deiner Apple-ID an.",url:"https://appleid.apple.com"},{text:'Gehe zu âAnmeldung und Sicherheit" â âApp-spezifische Passwörter".'},{text:'Erstelle ein neues Passwort (Name z.B. âInscalia") und kopiere es in den nächsten Schritt.'}]},{id:"mailboxorg",name:"mailbox.org",domains:["mailbox.org"],smtpHost:"smtp.mailbox.org",smtpPort:587,smtpSecure:!1,imapHost:"imap.mailbox.org",imapPort:993,setupSteps:[{text:"Nutze deine mailbox.org-Adresse als Benutzername und dein normales Passwort.",url:"https://mailbox.org"},{text:"Optional: Erstelle in den mailbox.org-Einstellungen ein eigenes App-Passwort für mehr Sicherheit."}]},{id:"posteo",name:"Posteo",domains:["posteo.de","posteo.net"],smtpHost:"posteo.de",smtpPort:587,smtpSecure:!1,imapHost:"posteo.de",imapPort:993,setupSteps:[{text:"Nutze deine Posteo-Adresse als Benutzername und dein normales Posteo-Passwort.",url:"https://posteo.de"},{text:"Falls du in den Posteo-Einstellungen den IMAP-Zugriff deaktiviert hast, aktiviere ihn wieder."}]}],Kt=[{text:'Ãffne die Hilfe-Seiten deines E-Mail-Anbieters und suche nac
6h âIMAP SMTP Serverdaten".'},{text:"Notiere dir den SMTP-Server (Versand) und den IMAP-Server (Empfang) samt Ports."},{text:"Prüfe, ob dein Anbieter ein App-Passwort verlangt oder IMAP erst aktiviert werden muss."},{text:'Trage die Serverdaten im nächsten Schritt unter âErweiterte Einstellungen" ein.'}];function Ot(i){const o=i.lastIndexOf("@");if(o<0)return null;const d=i.slice(o+1).trim().toLowerCase();return d?we.find(h=>h.domains.includes(d))??null:null}function Ft(i){return i?.requiresAppPassword?"App-Passwort (nicht dein normales Passwort)":"Passwort / App-Passwort"}function He(i){return i?we.find(o=>o.id===i)??null:null}function Te(i){return i==="microsoft365"?"microsoft":i==="gmail"?"google":null}const _e={microsoft:"Microsoft",google:"Google"};async function Ut(i){try{const{data:o,error:d}=await k.functions.invoke("mailbox-provider-detect",{body:{email:i}});if(d)return"other";const h=o?.provider;return h==="microsoft365"||h==="google"?h:"other"}catch{return"other"}}async function Vt(i){const{data:{user:o}}=await k.auth.getUser();if(!o)throw new Error("Nicht angemeldet");const{data:d}=await k.from("profiles").select("organization_id").eq("id",o.id).maybeSingle();if(!d?.organization_id)throw new Error("Keine Organisation gefunden");const h=crypto.randomUUID(),{error:S}=await k.from("oauth_states").insert({state:h,organization_id:d.organization_id,created_by:o.id,expires_at:kt(),metadata:{zweck:"postfach",provider:i}});if(S)throw new Error(S.message);const _="https://cqrsnstuhmxfpdlzmwme.supabase.co";window.location.href=`${_}/functions/v1/mailbox-oauth-callback?state=${h}&provider=${i}`}const Le={smtpHost:"",smtpPort:"587",smtpSecure:!1,smtpUsername:"",smtpPassword:"",fromName:"",fromEmail:"",imapHost:"",imapPort:"993",imapSecure:!0},Be="custom",xe=4,Ke=[{title:"Deine E-Mail-Adresse",subtitle:"Mit welchem Postfach möchtest du senden?"},{title:"Passwort finden",subtitle:"So kommst du an dein (App-)Passwort"},{title:"Zugangsdaten eingeben",subtitle:"Benutzername und Passwort deines Postfachs"},{title:"Verbindung herstellen",subtitle:"Wir testen die Verbindung und speichern alles"}],Rt=({open:i,onOpenChange:o,onConnected:d})=>{const{toast:h}=Fe(),[S,_]=r.useState(!1),[a,x]=r.useState(Le),[p,A]=r.useState(1),[W,q]=r.useState(!1),[w,V]=r.useState(null),[P,R]=r.useState(!1),[G,X]=r.useState(!1),[M,Z]=r.useState(!1),[Y,ne]=r.useState(!1),l=we.find(t=>t.id===w)??null,re=w===Be,L=r.useRef(w),z=r.useRef(a);r.useEffect(()=>{L.current=w},[w]),r.useEffect(()=>{z.current=a},[a]);const y=r.useRef(new Map),B=()=>{A(1),V(null),X(!1),ne(!1)},C=async()=>{const t=a;if(!t.smtpHost.trim()||!t.smtpPort.trim()||!t.smtpUsername.trim()||!t.smtpPassword.trim()||!t.fromEmail.trim()){h({title:"Bitte alle Felder ausfüllen.",variant:"destructive"});return}_(!0);try{const{data:n,error:b}=await k.functions.invoke("smtp-account-connect",{body:{smtpHost:t.smtpHost.trim(),smtpPort:parseInt(t.smtpPort,10),smtpSecure:t.smtpSecure,smtpUsername:t.smtpUsername.trim(),smtpPassword:t.smtpPassword,fromName:t.fromName.trim()||void 0,fromEmail:t.fromEmail.trim(),imapHost:t.imapHost.trim()||void 0,imapPort:t.imapHost.trim()?parseInt(t.imapPort,10):void 0,imapSecure:t.imapSecure}});if(b||n?.success===!1){h({title:"Verbindung fehlgeschlagen",description:await ge(b,n,"Verbindung fehlgeschlagen"),variant:"destructive"});return}const m=n?.imapError;h(m?{title:"E-Mail-Konto verbunden â",description:`Versand funktioniert. ${m}`}:{title:"E-Mail-Konto verbunden â"}),o(!1),x(Le),B(),d?.()}catch(n){h({title:"Verbindung fehlgeschlagen",description:be(n),variant:"destructive"})}finally{_(!1)}},I=t=>{V(t.id),x(n=>({...n,smtpHost:t.smtpHost,smtpPort:String(t.smtpPort),smtpSecure:t.smtpSecure,imapHost:t.imapHost,imapPort:String(t.imapPort),imapSecure:!0,smtpUsername:n.smtpUsername.trim()?n.smtpUsername:n.fromEmail.trim()}))},J=()=>{V(Be),X(!0),x(t=>({...t,smtpUsername:t.smtpUsername.trim()?t.smtpUsername:t.fromEmail.trim()}))},D=async t=>{const n=Ot(t);if(n)return n;const b=t.lastIndexOf("@"),m=b>=0?t.slice(b+1).trim().toLowerCase():"";if(!m||!m.includes("."))return null;if(y.current.has(m))return y.current.get(m)??null;Z(!0);try{const f=await Ut(t),se=f==="microsoft365"?He("microsoft365"):f==="google"?He("google-workspace"):null;return y.current.set(m,se),se}finally{Z(!1)}},ae=async()=>{const t=a.fromEmail.trim();if(!t||(l&&!a.smtpUsername.trim()&&x(b=>({...b,smtpUsername:t})),w)||!/\S+@\S+\.\S+/.test(t))return;const n=await D(t);
6n&&!L.current&&!z.current.smtpHost.trim()&&!z.current.imapHost.trim()&&I(n)},ie=/\S+@\S+\.\S+/.test(a.fromEmail.trim()),N=Y?null:Te(w),v=t=>!Y&&!!Te(t),oe=async()=>{if(!w){const t=await D(a.fromEmail.trim());if(L.current){if(v(L.current))return;A(2);return}if(t&&!z.current.smtpHost.trim()&&!z.current.imapHost.trim()){if(I(t),v(t.id))return;A(2);return}J(),A(2);return}v(w)||(l&&!a.smtpUsername.trim()&&x(t=>({...t,smtpUsername:t.fromEmail.trim()})),A(2))},de=!!a.smtpUsername.trim()&&!!a.smtpPassword&&!!a.smtpHost.trim()&&!!a.smtpPort.trim(),le=()=>{if(p===1){ie&&oe();return}p===3&&!de||A(t=>Math.min(xe,t+1))},K=()=>A(t=>Math.max(1,t-1)),me=p===1&&(!ie||M||!!N)||p===3&&!de,Q=l?l.name:re?"Anderer Anbieter / manuell":"Anbieter auswählen (optional)",ce=()=>e.jsxs("div",{children:[e.jsx("label",{className:"text-xs font-medium text-muted-foreground mb-1 block",children:"Dein E-Mail-Anbieter"}),e.jsxs(gt,{open:P,onOpenChange:R,children:[e.jsx(bt,{asChild:!0,children:e.jsxs(j,{type:"button",variant:"outline",role:"combobox","aria-expanded":P,className:u("w-full justify-between bg-secondary/50 font-normal",!w&&"text-muted-foreground"),children:[e.jsx("span",{className:"truncate",children:Q}),e.jsx(zt,{className:"h-3.5 w-3.5 shrink-0 opacity-50"})]})}),e.jsx(wt,{className:"w-[--radix-popover-trigger-width] p-0",align:"start",children:e.jsxs(vt,{children:[e.jsx(jt,{placeholder:"Anbieter suchen (z.B. Gmail, IONOS, Strato â¦)"}),e.jsxs(Pt,{children:[e.jsx(Nt,{children:"Kein Anbieter gefunden."}),e.jsxs(St,{children:[we.map(t=>e.jsxs(Ie,{value:t.name,onSelect:()=>{I(t),R(!1)},children:[e.jsx(Ae,{className:u("mr-2 h-3.5 w-3.5",w===t.id?"opacity-100":"opacity-0")}),t.name]},t.id)),e.jsxs(Ie,{value:"Anderer Anbieter / manuell",onSelect:()=>{J(),R(!1)},children:[e.jsx(Ae,{className:u("mr-2 h-3.5 w-3.5",re?"opacity-100":"opacity-0")}),"Anderer Anbieter / manuell"]})]})]})]})})]}),e.jsx("p",{className:"text-2xs text-muted-foreground mt-1.5",children:"Wird meist automatisch anhand deiner E-Mail-Adresse erkannt. Eigene Domain (z.B. bei IONOS oder Strato)? Dann hier den Anbieter auswählen."})]}),ee=()=>e.jsxs("div",{className:"space-y-4",children:[e.jsx("p",{className:"text-xs text-muted-foreground",children:"E-Mails an Kunden werden direkt über dein Postfach verschickt â Antworten landen ganz normal in deinem Posteingang."}),e.jsxs("div",{children:[e.jsx("label",{className:"text-xs font-medium text-muted-foreground mb-1 block",children:"Deine E-Mail-Adresse"}),e.jsx(T,{type:"email",value:a.fromEmail,onChange:t=>x(n=>({...n,fromEmail:t.target.value})),onBlur:ae,placeholder:"[email protected]",className:"bg-secondary/50",autoFocus:!0})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-xs font-medium text-muted-foreground mb-1 block",children:"Anzeigename (optional)"}),e.jsx(T,{value:a.fromName,onChange:t=>x(n=>({...n,fromName:t.target.value})),placeholder:"Max Mustermann",className:"bg-secondary/50"})]}),ce(),M&&e.jsxs("p",{className:"flex items-center gap-2 text-2xs text-muted-foreground",children:[e.jsx(U,{className:"h-3 w-3 animate-spin"})," Wir prüfen, wie dein Postfach am besten verbunden wird â¦"]}),N?e.jsxs("div",{className:"space-y-3 rounded-md border border-accent/40 bg-accent/5 p-3",children:[e.jsxs("p",{className:"text-xs text-foreground/90",children:[_e[N]," erlaubt kein Passwort-Login mehr â mit einem Klick verbinden."]}),e.jsx(Bt,{anbieter:N,laeuft:W,onClick:async()=>{q(!0);try{await Vt(N)}catch(t){q(!1),h({title:"Anmeldung konnte nicht gestartet werden",description:be(t),variant:"destructive"})}}}),e.jsxs("p",{className:"text-2xs text-muted-foreground/70 text-center",children:["Du wirst zu ",_e[N]," weitergeleitet. Dein Passwort bekommen wir nie zu sehen."]}),e.jsx("button",{type:"button",onClick:()=>{ne(!0),A(2)},className:"block w-full text-center text-2xs text-muted-foreground/70 underline underline-offset-2 hover:text-foreground transition-colors",children:"Trotzdem App-Passwort verwenden"})]}):l?.hint&&e.jsxs("div",{className:"flex items-start gap-2 rounded-md border border-border/50 bg-secondary/40 p-2.5",children:[e.jsx(ke,{className:"h-3.5 w-3.5 mt-0.5 shrink-0 text-muted-foreground"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:l.hint})]})]}),ue=l?l.setupSteps:Kt,te=t=>e.jsx("div",{className:"space-y-2",children:ue.map((n,b)=>e.jsxs("div",{className:u("flex items-start gap-3 rounded-lg border border-border/50 bg-secondary/40",t?"p-2.5":"p-3"),children:[e.jsx("div",{className:u("rounded-full bg-accent/15 border border-accent/30 text-accent font-semibold flex items-center justify-center shrink-0",t?"h-5 w-5 text-2xs":"h-6 w-6 text-xs"),children:b+1}),e.jsxs("div",{className:"min-w-0 flex-1 space-y-1.5",children:[e.jsx("p",{className:u("text-foreground
6/90 leading-relaxed",t?"text-2xs":"text-xs"),children:n.text}),n.url&&e.jsxs("a",{href:n.url,target:"_blank",rel:"noopener noreferrer",className:u("inline-flex items-center gap-1 font-medium text-accent hover:underline",t?"text-2xs":"text-xs"),children:[e.jsx(at,{className:"h-3 w-3"})," Seite öffnen"]})]})]},b))}),pe=()=>e.jsxs("div",{className:"space-y-3",children:[e.jsx("p",{className:"text-xs text-muted-foreground",children:l?e.jsxs(e.Fragment,{children:["So kommst du bei ",e.jsx("strong",{className:"text-foreground/90",children:l.name})," an dein Passwort â dauert nur 1â2 Minuten:"]}):"Dein Anbieter ist nicht in unserer Liste â so findest du die nötigen Daten trotzdem:"}),l?.requiresAppPassword&&e.jsxs("div",{className:"flex items-start gap-2 rounded-md border border-accent/40 bg-accent/5 p-2.5",children:[e.jsx(ke,{className:"h-3.5 w-3.5 mt-0.5 shrink-0 text-accent"}),e.jsxs("p",{className:"text-xs text-foreground/90",children:["Wichtig: ",e.jsx("strong",{children:l.name}),' lehnt dein normales Passwort ab. Du brauchst ein eigens erzeugtes App-Passwort â sonst kommt â535 authentication failed".']})]}),te(!1),e.jsx("p",{className:"text-2xs text-muted-foreground",children:"Passwort gefunden? Dann weiter â im nächsten Schritt fügst du es ein."})]}),H=()=>e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-2xs font-medium uppercase tracking-wider text-muted-foreground",children:l?`Passwort bei ${l.name} holen`:"Zugangsdaten beim Anbieter holen"}),te(!0)]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-xs font-medium text-muted-foreground mb-1 block",children:"Benutzername"}),e.jsx(T,{value:a.smtpUsername,onChange:t=>x(n=>({...n,smtpUsername:t.target.value})),placeholder:"[email protected]",className:"bg-secondary/50"}),e.jsx("p",{className:"text-2xs text-muted-foreground mt-1",children:"Bei fast allen Anbietern ist das deine E-Mail-Adresse â wir haben sie schon eingetragen."})]}),e.jsxs("div",{children:[e.jsx("label",{className:u("text-xs font-medium mb-1 block",l?.requiresAppPassword?"text-foreground/90":"text-muted-foreground"),children:Ft(l)}),e.jsx(T,{type:"password",autoComplete:"off",value:a.smtpPassword,onChange:t=>x(n=>({...n,smtpPassword:t.target.value})),className:"bg-secondary/50 font-mono",autoFocus:!0}),l?.requiresAppPassword&&e.jsxs("p",{className:"text-2xs text-muted-foreground mt-1",children:["Dein normales ",l.name,"-Passwort wird hier abgelehnt â nimm das oben erzeugte App-Passwort."]})]}),e.jsxs("div",{className:"pt-1 border-t border-border/50",children:[e.jsxs("button",{type:"button",onClick:()=>X(t=>!t),className:"flex items-center gap-1.5 text-xs text-muted-foreground hover:text-foreground transition-colors py-2",children:[e.jsx(Et,{className:"h-3.5 w-3.5"}),"Erweiterte Einstellungen (Serverdaten)",e.jsx(Mt,{className:u("h-3.5 w-3.5 transition-transform",G&&"rotate-180")})]}),!G&&l&&e.jsxs("p",{className:"text-2xs text-muted-foreground",children:["Serverdaten sind für ",l.name," bereits korrekt vorbelegt â hier musst du normalerweise nichts ändern."]}),G&&e.jsxs("div",{className:"grid grid-cols-2 gap-3 pt-2",children:[e.jsxs("div",{className:"col-span-2",children:[e.jsx("label",{className:"text-xs font-medium text-muted-foreground mb-1 block",children:"SMTP-Server"}),e.jsx(T,{value:a.smtpHost,onChange:t=>x(n=>({...n,smtpHost:t.target.value})),placeholder:"smtp.gmail.com",className:"bg-secondary/50"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-xs font-medium text-muted-foreground mb-1 block",children:"Port"}),e.jsx(T,{value:a.smtpPort,onChange:t=>x(n=>({...n,smtpPort:t.target.value})),placeholder:"587",className:"bg-secondary/50"})]}),e.jsxs("div",{className:"flex items-end pb-2 gap-2",children:[e.jsx(ze,{checked:a.smtpSecure,onCheckedChange:t=>x(n=>({...n,smtpSecure:t}))}),e.jsx(Ce,{className:"text-xs",children:"SSL (Port 465)"})]}),e.jsxs("div",{className:"col-span-2",children:[e.jsx("label",{className:"text-xs font-medium text-muted-foreground mb-1 block",children:"IMAP-Server (optional, für Antworten in Inscalia)"}),e.jsx(T,{value:a.imapHost,onChange:t=>x(n=>({...n,imapHost:t.target.value})),placeholder:"imap.gmail.com",className:"bg-secondary/50"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-xs font-medium text-muted-foreground mb-1 block",children:"Port"}
6),e.jsx(T,{value:a.imapPort,onChange:t=>x(n=>({...n,imapPort:t.target.value})),placeholder:"993",className:"bg-secondary/50"})]}),e.jsxs("div",{className:"flex items-end pb-2 gap-2",children:[e.jsx(ze,{checked:a.imapSecure,onCheckedChange:t=>x(n=>({...n,imapSecure:t}))}),e.jsx(Ce,{className:"text-xs",children:"SSL/TLS"})]})]})]})]}),ve=()=>e.jsxs("div",{className:"space-y-4",children:[e.jsx("p",{className:"text-xs text-muted-foreground",children:"Alles bereit! Wir testen jetzt die Verbindung zu deinem Postfach und speichern die Zugangsdaten sicher verschlüsselt."}),e.jsxs("div",{className:"rounded-lg border border-border/50 bg-secondary/40 divide-y divide-border/50",children:[e.jsxs("div",{className:"flex items-center justify-between p-2.5",children:[e.jsx("span",{className:"text-xs text-muted-foreground",children:"E-Mail-Adresse"}),e.jsx("span",{className:"text-xs font-medium",children:a.fromEmail.trim()||"â"})]}),e.jsxs("div",{className:"flex items-center justify-between p-2.5",children:[e.jsx("span",{className:"text-xs text-muted-foreground",children:"Anbieter"}),e.jsx("span",{className:"text-xs font-medium",children:l?.name||"Manuell konfiguriert"})]}),e.jsxs("div",{className:"flex items-center justify-between p-2.5",children:[e.jsx("span",{className:"text-xs text-muted-foreground",children:"Versand-Server"}),e.jsxs("span",{className:"text-xs font-mono",children:[a.smtpHost.trim()||"â",":",a.smtpPort]})]}),e.jsxs("div",{className:"flex items-center justify-between p-2.5",children:[e.jsx("span",{className:"text-xs text-muted-foreground",children:"Empfang (IMAP)"}),e.jsx("span",{className:"text-xs font-mono",children:a.imapHost.trim()?`${a.imapHost.trim()}:${a.imapPort}`:"nicht eingerichtet"})]})]}),e.jsx("p",{className:"text-2xs text-muted-foreground",children:"Schlägt der Test fehl, prüfe zuerst das Passwort (Schritt 2) â das ist die häufigste Ursache."})]});return e.jsx(tt,{open:i,onOpenChange:t=>{S||o(t)},children:e.jsxs(st,{className:"max-w-md",children:[e.jsx(nt,{children:e.jsx(rt,{children:"Eigenes E-Mail-Konto verbinden"})}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[Array.from({length:xe}).map((t,n)=>{const b=n+1,m=b<p,f=b===p;return e.jsx("div",{className:u("rounded-full transition-all duration-300",m?"h-1.5 w-7 bg-accent":f?"h-2.5 w-2.5 bg-accent ring-2 ring-accent/30":"h-2 w-2 bg-muted-foreground/30")},n)}),e.jsxs("span",{className:"ml-auto text-2xs font-mono uppercase tracking-wider text-accent",children:["Schritt ",p," von ",xe]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-sm font-semibold",children:Ke[p-1].title}),e.jsx("p",{className:"text-xs text-muted-foreground",children:Ke[p-1].subtitle})]})]}),p===1&&ee(),p===2&&pe(),p===3&&H(),p===4&&ve(),e.jsxs("div",{className:"flex items-center justify-between gap-2 pt-2 border-t border-border/50",children:[p>1?e.jsxs(j,{variant:"ghost",size:"sm",onClick:K,disabled:S,className:"gap-1",children:[e.jsx(Ue,{className:"h-3.5 w-3.5"})," Zurück"]}):e.jsx(j,{variant:"outline",size:"sm",onClick:()=>o(!1),disabled:S,children:"Abbrechen"}),p===1&&N?e.jsx("span",{}):p<xe?e.jsx(j,{size:"sm",onClick:le,disabled:me,className:"gap-1",children:p===1&&M?e.jsxs(e.Fragment,{children:[e.jsx(U,{className:"h-3.5 w-3.5 animate-spin"})," Anbieter prüfen â¦"]}):e.jsxs(e.Fragment,{children:["Weiter ",e.jsx(At,{className:"h-3.5 w-3.5"})]})}):e.jsxs(j,{size:"sm",onClick:C,disabled:S,className:"gap-1.5",children:[S?e.jsx(U,{className:"h-3.5 w-3.5 animate-spin"}):e.jsx(yt,{className:"h-3.5 w-3.5"})," Verbindung testen & speichern"]})]})]})]})})};function Oe(i){const o=new Date(i),d=new Date;return o.toDateString()===d.toDateString()?o.toLocaleTimeString("de-DE",{hour:"2-digit",minute:"2-digit"}):o.toLocaleDateString("de-DE",{day:"2-digit",month:"2-digit",year:"2-digit"})}function zr(){const{user:i}=it(),{currentOrg:o}=ot(),{toast:d}=Fe(),h=qe(),S=dt(),_=Xe.useRef(null);r.useEffect(()=>{const s=new URLSearchParams(window.location.search),c=s.get("postfach_abschluss"),g=s.get("postfach_fehler");if(!(!c&&!g)){if(h("/admin/postfach",{replace:!0}),g){d({title:"Postfach nicht verbunden",description:g,variant:"destructive"});return}(async()=>{const E=(Pe,We)=>k.functions.invoke("mailbox-oauth-finish",{body:{state:c,aktion:Pe,adresse:We}}),O=Pe=>d({title:"Postfach nicht verbunden",description:Pe,variant:"destructive"}),{data:F,error:$}=await E("ansehen");if($||F?.error||!F?.adresse){O(await ge($,F,"Postfachadresse konnte nicht ermittelt werden"));return}if(!await S({title:"Postfach verbinden?",description:`Postfach ${F.adresse} mit deinem Konto verbinden? 7 8Ab dann läuft dein Mailversand über dieses Postfach, und dessen Posteingang erscheint hier. Wenn du diese Adresse nicht kennst, lehne ab.`,confirmText:"Verbinden",cancelText:"Ablehnen"})){await E("verwerfen"),O("Der Vorgang wurde verworfen.");return}const{data:je,error:Se}=await E("bestaetigen",F.adresse);if(Se||je?.error){O(await ge(Se,je,"Postfach konnte nicht verbunden werden"));return}d({title:"Postfach verbunden",description:je.adresse}),_.current?.()})()}},[]);const[a,x]=r.useState([]),[p,A]=r.useState([]),[W,q]=r.useState(!0),[w,V]=r.useState(null),[P,R]=r.useState("threads"),[G,X]=Ze(),M=G.get("tab")==="inbox"?"inbox":"postfach",Z=s=>{const c=new URLSearchParams(G);s==="inbox"?c.set("tab","inbox"):c.delete("tab"),X(c,{replace:!0})},[Y,ne]=r.useState(null),[l,re]=r.useState(null),[L,z]=r.useState(!1),[y,B]=r.useState(""),C=mt(),[I,J]=r.useState(!1),[D,ae]=r.useState(null),[ie,N]=r.useState(!1),[v,oe]=r.useState(null),[de,le]=r.useState(null),[K,me]=r.useState(null),[Q,ce]=r.useState(!1),[ee,ue]=r.useState(null),[te,pe]=r.useState(null),H=r.useCallback(async()=>
8{if(!i||!o?.id)return;q(!0);const[s,c]=await Promise.all([k.from("inbound_emails").select("*").or(`organization_id.eq.${o.id},user_id.eq.${i.id}`).order("received_at",{ascending:!1}).limit(200),k.from("contact_activities").select("id, created_at, content, contact_id, metadata").eq("created_by",i.id).eq("activity_type","email").eq("metadata->>source","mailbox-reply").order("created_at",{ascending:!1}).limit(400)]);s.error?(d({title:"Postfach konnte nicht geladen werden",description:be(s.error),variant:"destructive"}),V(s.error)):(V(null),x(s.data||[])),c.error?console.warn("[AdminMailboxPage] outbound replies load failed:",c.error):A(c.data||[]),q(!1)},[i,o?.id,d]);r.useEffect(()=>{H()},[H]);const{indikator:ve}=xt(null,H),t=r.useCallback(async()=>{try{const{data:s}=await k.functions.invoke("smtp-account-status",{body:{}});ae(!!s?.imapEnabled),oe(s?.fromEmail||null),le(s?.connected?!!s?.isVerified:null),me(s?.lastTestError||null),ue(s?.imapLastError||null),pe(s?.imapLastCheckedAt||null)}catch{ae(null),oe(null),le(null),me(null),ue(null),pe(null)}},[]),n=r.useCallback(async()=>{if(!await S({title:"Postfach trennen?",description:v?`${v} wird abgemeldet. Eingehende Antworten werden danach nicht mehr abgerufen, und Mails gehen nicht mehr ueber dieses Konto raus. Bereits empfangene Nachrichten bleiben erhalten.`:"Das verbundene Postfach wird abgemeldet. Bereits empfangene Nachrichten bleiben erhalten.",confirmText:"Trennen",destructive:!0}))return;ce(!0);const{data:c,error:g}=await k.functions.invoke("smtp-account-disconnect",{body:{}});if(ce(!1),g||c?.error){d({title:"Trennen fehlgeschlagen",description:await ge(g,c,"Postfach konnte nicht getrennt werden"),variant:"destructive"});return}d({title:"Postfach getrennt",description:v||void 0}),t()},[S,v,d]);r.useEffect(()=>{t()},[t]),r.useEffect(()=>{_.current=()=>{H(),t()}},[H,t]);const b=r.useMemo(()=>Ct(a,p),[a,p]),m=a.find(s=>s.id===Y)||null,f=b.find(s=>s.key===l)||null,se=r.useCallback(async s=>{if(s.length===0)return;x(g=>g.map(E=>s.includes(E.id)?{...E,is_read:!0}:E));const{error:c}=await k.from("inbound_emails").update({is_read:!0}).in("id",s);c&&console.warn("[AdminMailboxPage] mark read failed:",c)},[]),Ve=async s=>{ne(s.id),B(""),z(!0),s.is_read||await se([s.id])},Re=async s=>{re(s.key),B(""),z(!0);const c=s.messages.filter(g=>g.kind==="inbound"&&!g.isRead).map(g=>g.id);c.length>0&&await se(c)},Ne=async()=>{const s=P==="threads"?f?.lastInboundId:m?.id;if(!s||!y.trim())return;const c=y.trim();J(!0);try{const{data:g,error:E}=await k.functions.invoke("mailbox-reply",{body:{inboundEmailId:s,bodyHtml:`<p>${c.replace(/\n/g,"<br/>")}</p>`,bodyText:c,attachments:C.fuerVersand()}});if(E||g?.success===!1)throw new Error(g?.error||E?.message||"Antwort konnte nicht gesendet werden");d({title:"Antwort gesendet â"}),B(""),C.leeren();const O=a.find($=>$.id===s),F=It(O?.subject);A($=>[{id:crypto?.randomUUID?.()||`local-${Date.now()}`,created_at:new Date().toISOString(),content:`Re: ${F||"(ohne Betreff)"}`,contact_id:O?.contact_id||null,metadata:{recipient:O?.from_email,in_reply_to_inbound_id:s,body_preview:c}},...$])}catch(g){d({title:"Senden fehlgeschlagen",description:be(g),variant:"destructive"})}finally{J(!1)}},he=a.filter(s=>!s.is_read).length,Ge=P==="threads"?f?.lastInboundId:m?.id,$e=P==="threads"?!!f:!!m;return e.jsxs(Ye,{children:[ve,e.jsx(Je,{title:"Postfach",subtitle:M==="inbox"?"Aufgaben, Wiedervorlagen, verpasste Anrufe, WhatsApp und E-Mails an einem Ort":D===!1?"Kein Postfach mit Antworten-Abruf verbunden":"Eingehende Antworten deines verbundenen Postfachs",actions:M==="postfach"?e.jsxs("div",{className:"flex w-full flex-wrap items-center gap-2 sm:w-auto",children:[he>0&&e.jsxs(ye,{variant:"success",className:"text-xs",children:[he," ungelesen"]}),e.jsxs("div",{className:"flex flex-1 sm:flex-none items-center rounded-md border border-border/60 overflow-hidden",role:"group","aria-label":"Darstellung",children:[e.jsx("button",{type:"button","aria-pressed":P==="threads",onClick:()=>R("threads"),className:u("flex-1 sm:flex-none min-h-[44px] sm:min-h-0 px-2.5 py-1.5 text-xs transition-colors",P==="threads"?"bg-secondary text-foreground font-medium":"text-muted-foreground hover:text-foreground"),children:"Konversationen"}),e.jsx("button",{type:"button","aria-pressed":P==="single",onClick:()=>R("single"),className:u("flex-1 sm:flex-none min-h-[44px] sm:min-h-0 px-2.5 py-1.5 text-xs transition-colors border-l border-border/60",P==="single"?"bg-secondary text-foreground font-medium":"text-muted-foreground hover:text-foreground"),children:"Einzeln"})]}),e.jsxs(j,{variant:"outline",size:"sm",onClick:H,"aria-label":"Aktualisieren",title:"Aktualisieren",className:"h-11 w-11 p-0 shrink-0 sm:h-9 sm:w-auto
8sm:px-3 sm:gap-1.5 text-xs",children:[e.jsx(lt,{className:"h-4 w-4 sm:h-3.5 sm:w-3.5"})," ",e.jsx("span",{className:"hidden sm:inline",children:"Aktualisieren"})]})]}):void 0}),e.jsxs("div",{className:"mb-4 flex items-center gap-1 rounded-lg border border-border p-0.5 w-fit",children:[e.jsxs("button",{type:"button",onClick:()=>Z("postfach"),className:u("flex items-center gap-1.5 px-3 py-1.5 rounded-md text-xs font-medium transition-colors",M==="postfach"?"bg-accent/15 text-accent":"text-muted-foreground hover:text-foreground"),children:[e.jsx(fe,{className:"h-3.5 w-3.5"})," Postfach",he>0&&e.jsx("span",{className:"ml-0.5 rounded-full bg-foreground/10 px-1.5 text-xs leading-4",children:he})]}),e.jsxs("button",{type:"button",onClick:()=>Z("inbox"),className:u("flex items-center gap-1.5 px-3 py-1.5 rounded-md text-xs font-medium transition-colors",M==="inbox"?"bg-accent/15 text-accent":"text-muted-foreground hover:text-foreground"),children:[e.jsx(Dt,{className:"h-3.5 w-3.5"})," Inbox"]})]}),M==="inbox"?e.jsx(Qe,{embedded:!0}):e.jsxs(e.Fragment,{children:[w&&!W&&e.jsx(ft,{error:w,titel:"Postfach konnte nicht geladen werden",onRetry:H,className:"mb-4"}),D===!1&&!(a.length===0&&!W)&&e.jsxs("div",{className:"bg-card border border-border rounded-lg p-5 mb-4 flex flex-col items-start sm:flex-row sm:items-center sm:justify-between gap-3 sm:gap-4",children:[e.jsx("p",{className:"text-sm text-muted-foreground",children:"Verbinde dein E-Mail-Konto mit Antworten-Abruf (IMAP), damit eingehende Mails hier auftauchen."}),e.jsx(j,{size:"sm",onClick:()=>N(!0),className:"shrink-0 gap-1.5 text-xs",children:"Postfach verbinden"})]}),D===!0&&v&&e.jsxs("div",{className:"bg-card border border-border rounded-lg p-4 mb-4 flex items-center justify-between gap-4",children:[e.jsxs("div",{className:"flex items-center gap-2.5 min-w-0",children:[e.jsx("span",{className:"h-2 w-2 rounded-full bg-emerald-500 shrink-0","aria-hidden":"true"}),e.jsxs("p",{className:"text-sm text-muted-foreground truncate",children:["Verbunden mit ",e.jsx("span",{className:"text-foreground font-medium",children:v})]})]}),e.jsxs(j,{size:"sm",variant:"outline",onClick:n,disabled:Q,className:"shrink-0 gap-1.5 text-xs",children:[Q?e.jsx(U,{className:"h-3.5 w-3.5 animate-spin"}):null,Q?"Wird getrennt â¦":"Trennen"]})]}),v&&(de===!1||K)&&e.jsxs("div",{className:"rounded-lg border p-4 mb-4 flex flex-col items-start sm:flex-row sm:items-center sm:justify-between gap-3 sm:gap-4 border-amber-500/40 bg-amber-500/15",children:[e.jsxs("p",{className:"text-sm text-muted-foreground",children:[e.jsxs("span",{className:"text-foreground font-medium",children:["Versand über ",v," funktioniert gerade nicht"]}),K?` â ${K}.`:"."," Antworten gehen bis dahin über den Inscalia-Server raus, nicht aus deinem eigenen Postfach.",K&&/SmtpClientAuthentication|5\.7\.139/i.test(K)&&e.jsx(e.Fragment,{children:' Ursache: In eurem Microsoft-365-Mandanten ist âAuthentifiziertes SMTP" abgeschaltet. Das muss euer Microsoft-Admin einschalten (Exchange Admin Center â Einstellungen â Mailflow â âAuthentifiziertes SMTP aktivieren", oder je Postfach unter âE-Mail-Apps") â danach hier âPostfach neu verbinden".'})]}),e.jsx(j,{size:"sm",onClick:()=>N(!0),className:"shrink-0 gap-1.5 text-xs",children:"Postfach neu verbinden"})]}),D===!0&&v&&ee&&e.jsxs("div",{className:"rounded-lg border p-4 mb-4 flex flex-col items-start sm:flex-row sm:items-center sm:justify-between gap-3 sm:gap-4 border-destructive/40 bg-destructive/5",children:[e.jsxs("p",{className:"text-sm text-muted-foreground",children:[e.jsxs("span",{className:"text-foreground font-medium",children:["Abruf eingehender Antworten über ",v," funktioniert gerade nicht"]})," â ",ee,".",/unexpected close/i.test(ee)&&e.jsx(e.Fragment,{children:" Häufigste Ursache bei Microsoft 365: IMAP ist für dieses Postfach im Exchange Admin Center deaktiviert (Protokoll-Einstellungen des Nutzers), obwohl die Anmeldung selbst funktioniert â das muss der Postfach-Admin dort aktivieren."}),te&&` Letzter Versuch: ${new Date(te).toLocaleString("de-DE")}.`]}),e.jsx(j,{size:"sm",onClick:()=>N(!0),className:"shrink-0 gap-1.5 text-xs",children:"Postfach neu verbinden"})]}),e.jsx(Rt,{open:ie,onOpenChange:N,onConnected:t}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-[340px_1fr] gap-4 md:min-h-[60vh]",children:[e.jsx("div",{className:u("bg-card border border-border rounded-lg p-0 overflow-hidden flex-col",L?"hidden md:flex":"flex"),children:W?e.jsx(ht,{rows:6,className:"p-3"}):a.length===0?e.jsx(pt,{icon:fe,title:"Noch keine eingehenden Mails",description:D===!1?"Verbinde dein E-Mail-Konto mit Antworten-Abruf (IMAP), damit eingehende Mails hier auftauchen.":"Eingehende Antworten deines verbundenen Postfachs erscheinen hier.",action:D===!1?{label:"Postfach verbinden",icon:fe,onClick:()=>N(!0)}:void 0,className:"py-10"}):P==="threads"?e.jsx("div",{className:"overflow-y-auto divide-y divide-border/50",children:b.map(s=>e.jsxs("button",{onClick:()=>Re(s),className:u("w-full text-left px-4 py-3 hover:bg-secondary/40 transition-colors",l===s.key&&"bg-secondary/60",s.unreadCount>0&&"bg-accent/5"),children:[e.jsxs("div",{className:"flex items-center justify-between gap-2",children:[e.jsxs("span",{className:u("flex items-center gap-1.5 min-w-0 text-sm",s.unreadCount>
80?"font-semibold text-foreground":"text-foreground/80"),children:[s.unreadCount>0&&e.jsx("span",{className:"h-1.5 w-1.5 rounded-full bg-accent shrink-0"}),e.jsx("span",{className:"truncate",children:s.partnerName||s.partnerEmail})]}),e.jsx("span",{className:"text-xs text-muted-foreground shrink-0",children:Oe(s.lastDate)})]}),e.jsxs("div",{className:"flex items-center gap-1.5 mt-0.5 min-w-0",children:[e.jsx("span",{className:u("text-xs truncate",s.unreadCount>0?"text-foreground/90":"text-muted-foreground"),children:s.subject}),s.messages.length>1&&e.jsx(ye,{variant:"secondary",className:"text-xs px-1.5 py-0 shrink-0",children:s.messages.length})]}),e.jsx("div",{className:"text-xs text-muted-foreground truncate mt-0.5",children:s.lastPreview})]},s.key))}):e.jsx("div",{className:"overflow-y-auto divide-y divide-border/50",children:a.map(s=>e.jsxs("button",{onClick:()=>Ve(s),className:u("w-full text-left px-4 py-3 hover:bg-secondary/40 transition-colors",Y===s.id&&"bg-secondary/60",!s.is_read&&"bg-accent/5"),children:[e.jsxs("div",{className:"flex items-center justify-between gap-2",children:[e.jsx("span",{className:u("text-sm truncate",s.is_read?"text-foreground/80":"font-semibold text-foreground"),children:s.from_name||s.from_email}),e.jsx("span",{className:"text-xs text-muted-foreground shrink-0",children:Oe(s.received_at)})]}),e.jsx("div",{className:u("text-xs truncate mt-0.5",s.is_read?"text-muted-foreground":"text-foreground/90"),children:s.subject||"(ohne Betreff)"}),e.jsx("div",{className:"text-xs text-muted-foreground truncate mt-0.5",children:(s.body_text||"").slice(0,80)}),!s.is_read&&e.jsx("div",{className:"h-1.5 w-1.5 rounded-full bg-accent inline-block mt-1"})]},s.id))})}),e.jsxs("div",{className:u("bg-card border border-border rounded-lg p-4 md:p-6 flex-col",L?"flex":"hidden md:flex"),children:[e.jsxs("button",{type:"button",onClick:()=>z(!1),className:"md:hidden mb-3 -ml-1 inline-flex min-h-[44px] items-center gap-1.5 self-start px-1 text-sm text-muted-foreground hover:text-foreground","aria-label":"Zurück zur Liste",children:[e.jsx(Ue,{className:"h-4 w-4"})," Zurück"]}),$e?P==="threads"&&f?e.jsxs("div",{className:"flex-1 flex flex-col min-h-0",children:[e.jsxs("div",{className:"flex items-start justify-between gap-3 pb-4 border-b border-border/50 mb-4",children:[e.jsxs("div",{className:"min-w-0",children:[e.jsx("h3",{className:"font-display text-base font-semibold text-foreground truncate",children:f.subject}),e.jsxs("p",{className:"text-xs text-muted-foreground mt-1",children:[f.partnerName?`${f.partnerName} <${f.partnerEmail}>`:f.partnerEmail," · ",f.messages.length===1?"1 Nachricht":`${f.messages.length} Nachrichten`]})]}),f.contactId&&e.jsxs(j,{variant:"outline",size:"sm",onClick:()=>h(`/admin/kontakte/${f.contactId}`),className:"shrink-0 gap-1.5 text-xs",children:[e.jsx(Ee,{className:"h-3.5 w-3.5"})," Zum Kontakt"]})]}),e.jsx("div",{className:"flex-1 overflow-y-auto space-y-3 mb-4 pr-1",children:f.messages.map(s=>e.jsxs("div",{className:u("rounded-md border p-3.5",s.kind==="inbound"?"border-border/50 bg-secondary/30 mr-6 md:mr-12":"border-accent/30 bg-accent/5 ml-6 md:ml-12"),children:[e.jsxs("div",{className:"flex items-center justify-between gap-2 mb-1.5",children:[e.jsxs("span",{className:"text-xs font-medium text-foreground truncate flex items-center gap-1.5",children:[s.kind==="outbound"&&e.jsx(Ht,{className:"h-3 w-3 text-accent shrink-0"}),s.kind==="inbound"?s.fromName||s.counterpart:`Du â ${s.counterpart}`]}),e.jsx("span",{className:"text-xs text-muted-foreground shrink-0",children:new Date(s.date).toLocaleString("de-DE")})]}),s.kind==="inbound"?e.jsx("div",{className:"text-sm text-foreground/90 whitespace-pre-wrap",children:s.bodyText||"(kein Textinhalt)"}):s.bodyText?e.jsx("div",{className:"text-sm text-foreground/90 whitespace-pre-wrap",children:s.bodyText}):e.jsxs("div",{className:"text-sm text-muted-foreground italic",children:["Antwort gesendet â ",s.subject||"(ohne Betreff)"]})]},`${s.kind}-${s.id}`))}),e.jsxs("div",{className:"pt-4 border-t border-border/50 space-y-2",children:[e.jsx(Me,{value:y,onChange:s=>B(s.target.value),placeholder:"Antwort schreiben...",className:"bg-secondary/50 min-h-[90px]"}),e.jsx(ct,{anhaenge:C.anhaenge,onEntfernen:C.entfernen}),e.jsxs("div",{className:"flex items-center justify-between gap-3",children:[e.jsx(ut,{onDateien:C.hinzufuegen,disabled:I||C.laedt}),e.jsxs(j,{onClick:Ne,disabled:I||C.laedt||!y.trim()||!Ge,size:"sm",className:"gap-1.5",children:[I?e.jsx(U,{className:"h-3.5 w-3.5 animate-spin"}):e.jsx(De,{className:"h-3.5 w-3.5"})," Antworten"]})]})]})]}):m?e.jsxs("div",{className:"flex-1 flex flex-col min-h-0",children:[e.jsxs("div",{className:"flex items-start justify-between gap-3 pb-4 border-b border-border/50 mb-4",children:[e.jsxs("div",{className:"min-w-0",children:[e.jsx("h3",{className:"font-display text-base font-semibold text-foreground truncate",children:m.subject||"(ohne Betreff)"}),e.jsxs("p",{className:"text-xs text-muted-foreground mt-1",children:["Von: ",m.from_name?`${m.from_name} <${m.from_email}>`:m.from_email]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:new Date(m.received_at).toLocaleStr
8ing("de-DE")})]}),m.contact_id&&e.jsxs(j,{variant:"outline",size:"sm",onClick:()=>h(`/admin/kontakte/${m.contact_id}`),className:"shrink-0 gap-1.5 text-xs",children:[e.jsx(Ee,{className:"h-3.5 w-3.5"})," Zum Kontakt"]})]}),e.jsx("div",{className:"flex-1 overflow-y-auto text-sm text-foreground/90 whitespace-pre-wrap mb-4",children:m.body_text||"(kein Textinhalt)"}),e.jsxs("div",{className:"pt-4 border-t border-border/50 space-y-2",children:[e.jsx(Me,{value:y,onChange:s=>B(s.target.value),placeholder:"Antwort schreiben...",className:"bg-secondary/50 min-h-[90px]"}),e.jsx("div",{className:"flex justify-end",children:e.jsxs(j,{onClick:Ne,disabled:I||!y.trim(),size:"sm",className:"gap-1.5",children:[I?e.jsx(U,{className:"h-3.5 w-3.5 animate-spin"}):e.jsx(De,{className:"h-3.5 w-3.5"})," Antworten"]})})]})]}):null:e.jsxs("div",{className:"flex-1 flex flex-col items-center justify-center gap-2 text-center text-muted-foreground",children:[e.jsx(fe,{className:"h-8 w-8"}),e.jsx("p",{className:"text-sm",children:P==="threads"?"Wähle eine Konversation aus der Liste":"Wähle eine Mail aus der Liste"})]})]})]})]})]})}export{zr 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.