1import{r as a,j as e}from"./index-CSm-WcKV.js";import{S as l}from"./SiteLayout-CB5sulZ7.js";function h(){const[s,t]=a.useState("loading"),[i,d]=a.useState(null);a.useEffect(()=>{const n=new URLSearchParams(window.location.search).get("token");if(d(n),!n){t("invalid");return}fetch(`/email/unsubscribe?token=${encodeURIComponent(n)}`).then(async r=>{const c=await r.json().catch(()=>({}));if(!r.ok)return t("invalid");if(c.valid)return t("ready");if(c.reason==="already_unsubscribed")return t("already");t("invalid")}).catch(()=>t("error"))},[]);async function o(){if(i){t("submitting");try{const n=await fetch("/email/unsubscribe",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({token:i})}),r=await n.json().catch(()=>({}));if(!n.ok)return t("error");if(r.success)return t("success");if(r.reason==="already_unsubscribed")return t("already");t("error")}catch{t("error")}}}return e.jsx(l,{children:e.jsx("section",{className:"container-default py-24",children:e.jsxs("div",{className:"max-w-xl mx-auto text-center",children:[s==="loading"&&e.jsx("p",{className:"text-muted-foreground",children:"Bitte warten â¦"}),s==="invalid"&&e.jsxs(e.Fragment,{children:[e.jsx("h1",{className:"display-2",children:"Link ungültig"}),e.jsx("p",{className:"mt-4 text-muted-foreground",children:"Dieser Abmelde-Link ist ungültig oder abgelaufen."})]}),s==="already"&&e.jsxs(e.Fragment,{children:[e.jsx("h1",{className:"display-2",children:"Bereits abgemeldet"}),e.jsx("p",{className:"mt-4 text-muted-foreground",children:"Diese E-Mail-Adresse erhält keine weiteren Nachrichten von uns."})]}),(s==="ready"||s==="submitting")&&e.jsxs(e.Fragment,{children:[e.jsx("h1",{className:"display-2",children:"Abmelden bestätigen"}),e.jsx("p",{className:"mt-4 text-muted-foreground",children:"Möchtest du dich von zukünftigen E-Mails abmelden?"}),e.jsx("button",{onClick:o,disabled:s==="submitting",className:"mt-8 inline-flex h-12 items-center justify-center rounded-none bg-primary px-8 text-sm font-bold text-primary-foreground border border-primary hover:bg-background hover:text-foreground transition-all duration-300 active:scale-[0.98] disabled:opacity-60",children:s==="submitting"?"Wird gesendetâ¦":"Abmeldung bestätigen"})]}),s==="success"&&e.jsxs(e.Fragment,{children:[e.jsx("h1",{className:"display-2",children:"Abgemeldet"}),e.jsx("p",{className:"mt-4 text-muted-foreground",children:"Du erhältst von uns keine weiteren E-Mails. Danke, dass du da warst."})]}),s==="error"&&e.jsxs(e.Fragment,{children:[e.jsx("h1",{className:"display-2",children:"Etwas ist schiefgelaufen"}),e.jsx("p",{className:"mt-4 text-muted-foreground",children:"Bitte versuche es später erneut oder schreib uns an [email protected]."})]})]})})})}export{h as component};
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.