1import{r as a,s as l,j as t,F as Ot,d as xt,_ as pt}from"./index-CLTM18rh.js";import{c as Kt}from"./eventDeletion-B98nBHlH.js";import{u as Qt}from"./AdminContext-B2hLlcqc.js";import{T as Zt}from"./TagSelect-DLcoOtLD.js";import{u as Gt}from"./useTranslating-CBNKkigt.js";import{B as Le}from"./BilingualField-BhOylx8J.js";import{e as Jt,W as bt,O as Ht,f as Yt}from"./recurrence-CPz9Lig3.js";import{b as de}from"./bestaetige-CpNFuPQa.js";import{T as Xt}from"./TextWerkzeuge-xhX-BFlI.js";import"./callTranslate-CSi3EPWY.js";import"./TranslateButton-CwJtN3CI.js";const ft={title:"",title_en:"",date:"",time_from:"",end_date:"",time_to:"",main_tag_id:"",location:"",address:"",lat:"",lng:"",organizer:"",qv_role:"",jahresprogramm:!1,jahresprogramm_datum:"",description:"",description_en:"",meta_description:"",meta_description_en:"",registration_url:"",registration_label:"",info_url:"",info_label:""};function er(i){if(!i)return null;const S="/storage/v1/object/public/images/",B=i.indexOf(S);return B!==-1?i.slice(B+S.length):null}function h({label:i,children:S,hint:B}){return t.jsxs("div",{children:[t.jsx("label",{className:"block text-sm font-medium text-zinc-700 dark:text-zinc-300 mb-1.5",children:i}),S,B&&t.jsx("p",{className:"mt-1 text-xs text-zinc-400",children:B})]})}const d="w-full px-3 py-2 rounded-lg border border-zinc-300 dark:border-zinc-700 bg-white dark:bg-zinc-800 text-zinc-900 dark:text-white placeholder-zinc-400 focus:outline-none focus:ring-2 focus:ring-red-500 focus:border-transparent text-sm";function ur({id:i,onSaved:S,onCancel:B}){const{permissions:qe,eventOrganizers:W,imVorstand:O}=Qt(),Ie=qe.perm_events_own&&!qe.perm_events,[r,Y]=a.useState(Ie&&W.length>0?{...ft,organizer:W[0]}:ft),[q,Me]=a.useState([]),[vt,jt]=a.useState([]),[_t,kt]=a.useState(!!i),[ce,$e]=a.useState(!1),[me,Ve]=a.useState(!1),ue=a.useRef(!1),[Ue,o]=a.use
1State(null),[he,ge]=a.useState([]),[zt,X]=a.useState(!1),[wt,We]=a.useState(!1),{translating:xe,busy:pe,translate:be,error:Oe}=Gt(),fe=a.useRef(null),ve=a.useRef(null),Ke=a.useRef(null),[y,Qe]=a.useState(null),[R,je]=a.useState(null),[Ze,Ge]=a.useState(null),[Je,_e]=a.useState(!1),[K,ke]=a.useState(null),[ze,He]=a.useState(null),[we,ye]=a.useState([]),[Ne,Q]=a.useState(!1),[I,ee]=a.useState(null),[yt,Ye]=a.useState(!1),[Se,Xe]=a.useState(!1);a.useEffect(()=>{const e=I??(R&&R.type.startsWith("image/")?R:null);if(!e){Ge(null);return}const n=URL.createObjectURL(e);return Ge(n),()=>URL.revokeObjectURL(n)},[R,I]);async function Nt(e){const n=await pt(()=>import("./pdf-B75MOh95.js"),[]),s=(await pt(async()=>{const{default:M}=await import("./pdf.worker.min-B7BB9YL5.js");return{default:M}},[])).default;n.GlobalWorkerOptions.workerSrc=s;const m=await(await n.getDocument({data:await e.arrayBuffer()}).promise).getPage(1),u=m.getViewport({scale:1}),f=m.getViewport({scale:1200/u.width}),p=document.createElement("canvas");p.width=Math.round(f.width),p.height=Math.round(f.height);const v=p.getContext("2d");return v.fillStyle="#ffffff",v.fillRect(0,0,p.width,p.height),await m.render({canvasContext:v,viewport:f,canvas:p}).promise,await new Promise((M,J)=>p.toBlob(C=>C?M(C):J(new Error("toBlob failed")),"image/png"))}async function Te(e){if(!e){je(null),ke(null),ee(null);return}if(e.type==="application/pdf"){o(null),je(e),ke(e),ee(null),Xe(!0),Ye(!0);try{ee(await Nt(e))}catch{o("PDF konnte nicht in ein Vorschaubild umgewandelt werden â es wird trotzdem als Download angehängt.")}Ye(!1)}else je(e),ke(null),ee(null)}const[et,Ce]=a.useState(""),[tt,De]=a.useState(""),[rt,nt]=a.useState(!1),[at,st]=a.useState(!1),[j,te]=a.useState(null);async function St(){if(y){nt(!0),o(null);try{const e=(await l.auth.getSession()).data.session?.access_token,n={"Content-Type":"application/json",...e?{Authorization:`Bearer ${e}`}:{}},s=u=>fetch("/api/admin/image-alt",{method:"POST",headers:n,body:JSON.stringify({imageUrl:y,lang:u})}).then(f=>f.json()),[g,m]=await Promise.all([s("de"),s("en")]);g?.alt&&Ce(g.alt),m?.alt&&De(m.alt),!g?.alt&&!m?.alt&&o(g?.error||m?.error||"Alt-Text konnte nicht generiert werden.")}catch{o("Alt-Text konnte nicht generiert werden.")}nt(!1)}}async function Tt(e){if(!(!r.title.trim()&&!r.description.trim())){st(!0),o(null);try{const n=(await l.auth.getSession()).data.session?.access_token,s=await fetch("/api/admin/seo-description",{method:"POST",headers:{"Content-Type":"application/json",...n?{Authorization:`Bearer ${n}`}:{}},body:JSON.stringify({title:r.title,body:r.description,lang:e})}),g=await s.json();s.ok&&g.description?c(e==="en"?"meta_description_en":"meta_description",g.description):o(g.error||"Vorschlag konnte nicht generiert werden.")}catch{o("Vorschlag konnte nicht generiert werden.")}st(!1)}}const[V,re]=a.useState(null),[A,ne]=a.useState(0),[ae,it]=a.useState(!1),[U,_]=a.useState(!1),[T,lt]=a.useState(()=>typeof window>"u"?"one":new URLSearchParams(window.location.search).get("scope")==="all"?"all":"one"),[P,Ct]=a.useState(!1),[F,ot]=a.useState("weekly"),[se,Ee]=a.useState(1),[ie,dt]=a.useState([2]),[Be,Dt]=a.useState(1),[Re,Et]=a.useState(2),[Z,ct]=a.useState(""),[G,mt]=a.useState(""),[le,Ae]=a.useState([""]),[oe,ut]=a.useState(""),Pe=a.useMemo(()=>P?F==="weekly"?{mode:"weekly",interval:se,weekdays:ie,startDate:Z,endDate:G}:F==="monthly-weekday"?{mode:"monthly-weekday",ordinal:Be,weekday:Re,startDate:Z,endDate:G}:{mode:"custom",dates:le}:null,[P,F,se,ie,Be,Re,Z,G,le]),b=a.useMemo(()=>Pe?Jt(Pe):[],[Pe]),L=a.useRef(null);function Bt(e){const n=[];return e.name&&e.name!==e.street&&n.push(e.name),e.street&&n.push(e.housenumber?`${e.street} ${e.housenumber}`:e.street),(e.postcode||e.city)&&n.push([e.postcode,e.city].filter(Boolean).join(" ")),n.join(", ")}async function ht(){const e=[r.location,r.address].filter(Boolean).join(", ").trim();if(!e)return null;try{const n=`https://photon.komoot.io/api/?q=${encodeURIComponent(e)}&limit=1&lang=de&lat=47.3769&lon=8.5417`,m=((await(await fetch(n)).json()).features??[])[0];if(!m)return null;const[u,f]=m.geometry.coordinates,p={lat:f.toFixed(6),lng:u.toFixed(6)};return Y(v=>({...v,...p})),p}catch{return null}}const[Rt,At]=a.useState("");async function Pt(e){if(e.length<3){ge([]);return}We(!0);try{const n=`https://photon.komoot.io/api/?q=${encodeURIComponent(e)}&limit=6&lang=de&lat=47.3769&lon=8.5417`,m=((await(await fetch(n)).json()).features??[]).map(u=>{const f=u.properties,[p,v]=u.geometry.coordinates;return{label:Bt(f),lat:v.toFixed(6),lng:p.toFixed(6)}}).filter(u=>u.label);ge(m),X(!0)}catch{}finally{We(!1)}}function Ft(e){c("address",e),fe.current&&clearTimeout(fe.current),fe.current=setTimeout(()=>Pt(e),300)}function Lt(e){Y(n=>({...n,address:e.label,lat:e.lat,lng:e.lng})),ge([]),X(!1)}a.useEffect(()=>
1{function e(n){ve.current&&!ve.current.contains(n.target)&&X(!1)}return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[]),a.useEffect(()=>{l.from("tags").select("id, name").eq("is_primary",!0).order("name").then(({data:e})=>jt(e??[]))},[]),a.useEffect(()=>{i&&Promise.all([l.from("events").select("*").eq("id",i).single(),l.from("event_tags").select("tag_id").eq("event_id",i)]).then(([{data:e},{data:n}])=>{e&&(Y({title:e.title??"",title_en:e.title_en??"",date:e.date??"",time_from:e.time_from?.slice(0,5)??"",end_date:e.end_date??"",time_to:e.time_to?.slice(0,5)??"",main_tag_id:e.main_tag_id??"",location:e.location??"",address:e.address??"",lat:e.lat?.toString()??"",lng:e.lng?.toString()??"",organizer:e.organizer??"",qv_role:e.qv_role??"",jahresprogramm:e.jahresprogramm===!0,jahresprogramm_datum:e.jahresprogramm_datum??"",description:e.description??"",description_en:e.description_en??"",meta_description:e.meta_description??"",meta_description_en:e.meta_description_en??"",registration_url:e.registration_url??"",registration_label:e.registration_label??"",info_url:e.info_url??"",info_label:e.info_label??""}),At([e.location??"",e.address??""].join("|")),Qe(e.image_url??null),He(e.flyer_url??null),l.from("event_attachments").select("id, title, file_path, file_name, size_bytes, sort_order").eq("event_id",i).order("sort_order").then(({data:s})=>ye(s??[])),Ce(e.image_alt??""),De(e.image_alt_en??""),te(e.series_id??null),re(e.series_label??null),e.series_id&&l.from("events").select("id",{count:"exact",head:!0}).eq("series_id",e.series_id).then(({count:s})=>ne(s??0))),Me((n??[]).map(s=>s.tag_id)),kt(!1)})},[i]);function c(e,n){Y(s=>({...s,[e]:n}))}function qt(){if(it(!0),oe.trim()||ut(r.title.trim()),r.date){const e=new Date(`${r.date}T00:00:00`);if(!Z){const n=new Date(e);n.setDate(n.getDate()+7),ct(n.toISOString().slice(0,10))}if(!G){const n=new Date(e);n.setMonth(n.getMonth()+3),mt(n.toISOString().slice(0,10))}ie.length===0&&dt([e.getDay()])}ot("weekly"),Ee(1)}function gt(){it(!1)}async function It(){if(!i)return;if(b.length===0){o("Mindestens einen zusätzlichen Termin angeben.");return}if(!r.date){o("Das aktuelle Datum muss gesetzt sein, bevor du die Reihe erweiterst.");return}if(!await de(`«${r.title||"Veranstaltung"}» zu einer Reihe mit ${b.filter(u=>u!==r.date).length} zusätzlichen Terminen erweitern?`))return;_(!0),o(null);const e=globalThis.crypto.randomUUID(),n=oe.trim()||r.title.trim()||null;{const{error:u}=await l.from("events").update({series_id:e,series_label:n}).eq("id",i);if(u){o(u.message),_(!1);return}}const{data:s,error:g}=await l.from("events").select("*").eq("id",i).single();if(g||!s){o(g?.message??"Quelle nicht gefunden."),_(!1);return}const m=b.filter(u=>u!==s.date);if(m.length>0){const{id:u,created_at:f,updated_at:p,creator_id:v,external_id:M,source:J,source_url:C,...H}=s,x=m.map(N=>({...H,date:N,end_date:null,series_id:e,series_label:n})),{error:k}=await l.from("events").insert(x);if(k){o(k.message),_(!1);return}const{data:z}=await l.from("event_tags").select("tag_id").eq("event_id",i);if(z&&z.length>0){const{data:N}=await l.from("events").select("id").eq("series_id",e).neq("id",i),E=(N??[]).map(w=>w.id).flatMap(w=>z.map($=>({event_id:w,tag_id:$.tag_id})));E.length>0&&await l.from("event_tags").insert(E)}}_(!1),S()}async function Mt(){if(!i||!j||!await de("Diesen Termin aus der Reihe entfernen? Er bleibt als Einzeltermin bestehen; die anderen Termine der Reihe sind nicht betroffen."))return;_(!0),o(null);const{error:e}=await l.from("events").update({series_id:null,series_label:null}).eq("id",i);if(_(!1),e){o(e.message);return}te(null),re(null),ne(0)}async function $t(){if(!i||!j||!await de(`Die ganze Reihe${V?` «${V}»`:""} auflösen? Alle ${A||""} Termine bleiben bestehen, sind aber nicht mehr als Reihe verbunden.`))return;_(!0),o(null);const{error:e}=await l.from("events").update({series_id:null,series_label:null}).eq("series_id",j);if(_(!1),e){o(e.message);return}te(null),re(null),ne(0)}async function Vt(){if(!i||!j)return;const e=Math.max(0,A-1);if(!await Kt({seriesId:j},`${e} andere Termin${e===1?"":"e"} der Reihe${V?` «${V}»`:""} löschen? Dieser Termin bleibt als Einzeltermin erhalten.`))return;_(!0),o(null);const{error:n}=await l.from("events").delete().eq("series_id",j).neq("id",i);if(n){o(n.message),_(!1);return}
1await l.from("events").update({series_id:null,series_label:null}).eq("id",i),_(!1),te(null),re(null),ne(0)}async function Ut(e){e.preventDefault();const n=ue.current;ue.current=!1,n?Ve(!0):$e(!0);const s=()=>{$e(!1),Ve(!1)};o(null);const{data:{user:g}}=await l.auth.getUser(),m=[r.location,r.address].join("|");let u=r.lat,f=r.lng;if(i&&m!==Rt&&(r.location||r.address)){const x=await ht();x&&(u=x.lat,f=x.lng)}let p=y??null;const v=L.current?.files?.[0],M=I&&Se?I:v&&v.type.startsWith("image/")?v:null;if(M){const x=er(y);x&&await l.storage.from("images").remove([x]);const k=I?"png":v?.name.split(".").pop()||"jpg",z=`${Date.now()}-${Math.random().toString(36).slice(2)}.${k}`,{data:N,error:D}=await l.storage.from("images").upload(z,M,I?{contentType:"image/png"}:void 0);if(D||!N){o(`Bild-Upload fehlgeschlagen: ${D?.message}`),s();return}const{data:E}=l.storage.from("images").getPublicUrl(N.path);p=E.publicUrl}let J=ze??null;if(K){const x=`flyers/${Date.now()}-${Math.random().toString(36).slice(2)}.pdf`,{data:k,error:z}=await l.storage.from("images").upload(x,K,{contentType:"application/pdf"});if(z||!k){o(`PDF-Upload fehlgeschlagen: ${z?.message}`),s();return}J=l.storage.from("images").getPublicUrl(k.path).data.publicUrl}const C={title:r.title.trim()||null,title_en:r.title_en||null,date:r.date||null,end_date:r.end_date||null,time_from:r.time_from||null,time_to:r.time_to||null,location:r.location,address:r.address||null,lat:u?parseFloat(u):null,lng:f?parseFloat(f):null,organizer:r.organizer,qv_role:r.qv_role||null,jahresprogramm:!!r.qv_role&&r.jahresprogramm,jahresprogramm_datum:r.jahresprogramm_datum.trim()||null,description:r.description||null,description_en:r.description_en||null,main_tag_id:r.main_tag_id||null,image_url:p,flyer_url:J,image_alt:et.trim()||null,image_alt_en:tt.trim()||null,meta_description:r.meta_description.trim()||null,meta_description_en:r.meta_description_en.trim()||null,registration_url:r.registration_url||null,registration_label:r.registration_label||null,info_url:r.info_url||null,info_label:r.info_label||null};n&&(C.status="draft");let H=i;if(!i&&P&&!n){if(b.length===0){o("Bitte mindestens einen Termin angeben."),s();return}if(b.length>100){o(`Zu viele Termine (${b.length}). Bitte Zeitraum verkleinern.`),s();return}const x=globalThis.crypto.randomUUID(),z=oe.trim()||r.title.trim()||null,N=b.map(w=>({...C,end_date:null,date:w,series_id:x,series_label:z,creator_id:g?.id})),{data:D,error:E}=await l.from("events").insert(N).select("id");if(E||!D){o(E?.message??"Fehler"),s();return}if(q.length>0){const w=D.flatMap($=>q.map(Fe=>({event_id:$.id,tag_id:Fe})));await l.from("event_tags").insert(w)}S();return}if(i){if(T==="all"&&j){const{date:k,end_date:z,...N}=C,{error:D}=await l.from("events").update(N).eq("series_id",j);if(D){o(D.message),s();return}const{data:E}=await l.from("events").select("id").eq("series_id",j),w=(E??[]).map($=>$.id);if(w.length>0&&(await l.from("event_tags").delete().in("event_id",w),q.length>0)){const $=w.flatMap(Fe=>q.map(Wt=>({event_id:Fe,tag_id:Wt})));await l.from("event_tags").insert($)}S();return}const{error:x}=await l.from("events").update(C).eq("id",i);if(x){o(x.message),s();return}}else{const{data:x,error:k}=await l.from("events").insert({...C,creator_id:g?.id}).select("id").single();if(k||!x){o(k?.message??"Fehler"),s();return}H=x.id}await l.from("event_tags").delete().eq("event_id",H),q.length>0&&await l.from("event_tags").insert(q.map(x=>({event_id:H,tag_id:x}))),S()}return _t?t.jsx("div",{className:"py-20 text-center text-zinc-400 text-sm",children:"Lädtâ¦"}):t.jsxs("div",{className:"max-w-2xl",children:[t.jsxs("div",{className:"flex items-center gap-3 mb-8",children:[t.jsx("button",{onClick:B,className:"text-zinc-400 hover:text-zinc-600 dark:hover:text-zinc-300",children:t.jsx("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:t.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M15 19l-7-7 7-7"})})}),t.jsx("h1",{className:"text-xl font-bold text-zinc-900 dark:text-white",children:i?"Veranstaltung bearbeiten":"Neue Veranstaltung"})]}),t.jsxs("form",{onSubmit:Ut,className:"space-y-5",children:[i&&j&&t.jsxs("div",{className:"rounded-xl border border-amber-200 dark:border-amber-900 bg-amber-50 dark:bg-amber-950/20 p-4 space-y-3",children:[t.jsxs("p",{className:"text-sm font-medium text-amber-900 dark:text-amber-200",children:["Teil der Reihe",V?` «${V}»`:"",A>0&&t.jsxs("span",{className:"font-normal text-amber-700 dark:text-amber-300",children:[" (",A," Termine)"]})]}),t.jsxs("div",{className:"flex flex-wrap gap-2",children:[t.jsx("button",{type:"button",onClick:()=>lt("one"),className:`px-3 py-1 text-xs font-medium rounded-md border transition-colors ${T==="one"?"bg-amber-600 text-white border-amber-600":"bg-white dark:bg-zinc-800 text-amber-700 dark:text-amber-300 border-amber-300 dark:border-amber-700 hover:bg-amber-50 dark:hover:bg-amber-900/30"}`,children:"Nur diesen Termin"}),t.jsx("button",{type:"button",onClick:()=>lt("all"),className:`px-3 py-1 text-xs font-medium rounded-md border transition-colors ${T==="all"?"bg-amber-600 text-white border-amber-600":"bg-white dark:bg-zinc-800 text-amber-700 dark:text-amber-300 border-amber-300 dark:border-amber-700 hover:bg-amber-50 dark:hover:bg-amber-900/30"}`,children:"Alle Termine bearbeiten"})]}),t.jsx("p",{className:"text-xs text-amber-700 dark:text-amber-300",children:T==="all"?`Ãnderungen werden auf alle ${A||""} Termine der Reihe angewendet. Das Datum bleibt pro Termin erhalten.`:"Ãnderungen wirken nur auf diesen einen Termin. Die übrigen Termine der Reihe bleiben unverändert."}),t.jsxs("details",{className:"group/manage",children:[t.jsxs("summary",{className:"cursor-pointer text-xs font-medium text-amber-700 dark:text-amber-300 hover:text-amber-900 dark:hover:text-amber-100 list-none inline-flex items-center gap-1",children:[t.jsx("svg",{className:"w-3 h-3 transition-transform group-open/manage:rotate-90",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24","aria-hidden":!0,
1children:t.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 5l7 7-7 7"})}),"Reihe verwaltenâ¦"]}),t.jsxs("div",{className:"mt-2 pt-2 border-t border-amber-200 dark:border-amber-900 space-y-2",children:[t.jsxs("button",{type:"button",onClick:Mt,disabled:U,className:"w-full text-left px-3 py-2 text-xs font-medium text-amber-900 dark:text-amber-200 bg-white dark:bg-zinc-800 border border-amber-200 dark:border-amber-800 rounded-md hover:border-amber-400 dark:hover:border-amber-600 transition-colors disabled:opacity-40",children:[t.jsx("span",{className:"block font-semibold",children:"Diesen Termin aus der Reihe entfernen"}),t.jsx("span",{className:"block text-amber-700 dark:text-amber-300 font-normal mt-0.5",children:"Wird zum Einzeltermin; die anderen Termine bleiben in der Reihe."})]}),t.jsxs("button",{type:"button",onClick:$t,disabled:U,className:"w-full text-left px-3 py-2 text-xs font-medium text-amber-900 dark:text-amber-200 bg-white dark:bg-zinc-800 border border-amber-200 dark:border-amber-800 rounded-md hover:border-amber-400 dark:hover:border-amber-600 transition-colors disabled:opacity-40",children:[t.jsx("span",{className:"block font-semibold",children:"Reihe auflösen (alle bleiben)"}),t.jsxs("span",{className:"block text-amber-700 dark:text-amber-300 font-normal mt-0.5",children:["Alle ",A||""," Termine bleiben bestehen, sind aber nicht mehr als Reihe verbunden."]})]}),t.jsxs("button",{type:"button",onClick:Vt,disabled:U,className:"w-full text-left px-3 py-2 text-xs font-medium text-red-700 dark:text-red-300 bg-white dark:bg-zinc-800 border border-red-200 dark:border-red-900 rounded-md hover:border-red-400 dark:hover:border-red-600 transition-colors disabled:opacity-40",children:[t.jsx("span",{className:"block font-semibold",children:"Andere Termine löschen, nur diesen behalten"}),t.jsxs("span",{className:"block text-red-600 dark:text-red-300 font-normal mt-0.5",children:[Math.max(0,A-1)," andere Termin",A-1===1?"":"e"," werden gelöscht. Dieser Termin bleibt als Einzeltermin erhalten."]})]})]})]})]}),i&&!j&&!ae&&t.jsxs("div",{className:"rounded-xl border border-zinc-200 dark:border-zinc-800 bg-zinc-50 dark:bg-zinc-900 p-4 flex items-center justify-between gap-3 flex-wrap",children:[t.jsxs("div",{children:[t.jsx("p",{className:"text-sm font-medium text-zinc-800 dark:text-zinc-200",children:"Einzeltermin"}),t.jsx("p",{className:"text-xs text-zinc-500 dark:text-zinc-400 mt-0.5",children:"Soll diese Veranstaltung regelmässig stattfinden?"})]}),t.jsx("button",{type:"button",onClick:qt,className:"px-3 py-1.5 text-xs font-medium text-zinc-700 dark:text-zinc-300 bg-white dark:bg-zinc-800 border border-zinc-300 dark:border-zinc-700 hover:border-zinc-400 dark:hover:border-zinc-500 rounded-md transition-colors",children:"Zu einer Reihe erweiternâ¦"})]}),i&&!j&&ae&&t.jsxs("div",{className:"rounded-xl border border-amber-200 dark:border-amber-900 bg-amber-50/50 dark:bg-amber-950/20 p-4 space-y-2",children:[t.jsxs("div",{className:"flex items-center justify-between gap-2 flex-wrap",children:[t.jsx("p",{className:"text-sm font-medium text-amber-900 dark:text-amber-200",children:"Zusätzliche Termine als Reihe anlegen"}),t.jsx("button",{type:"button",onClick:gt,className:"text-xs text-amber-700 dark:text-amber-300 hover:text-amber-900 dark:hover:text-amber-100 underline",children:"Abbrechen"})]}),t.jsx("p",{className:"text-xs text-amber-700 dark:text-amber-300",children:"Definiere unten das Wiederholungs-Muster. Klick «Reihe erstellen», um die zusätzlichen Termine anzulegen â die übrigen Felder oben (Titel, Ort, Bild, Tags â¦) werden auf alle Termine kopiert."})]}),t.jsx(Le,{label:"Titel *",source:r.title,onTranslate:()=>be("title_en",r.title,e=>c("title_en",e)),loading:xe==="title_en",busy:pe,renderDE:()=>t.jsx("input",{required:!0,className:d,value:r.title,onChange:e=>c("title",e.target.value)}),renderEN:()=>t.jsx("input",{className:d,value:r.title_en,onChange:e=>c("title_en",e.target.value),placeholder:"English titleâ¦"})}),!i&&t.jsxs("label",{className:"flex items-center gap-2 cursor-pointer select-none",children:[t.jsx("input",{type:"checkbox",checked:P,onChange:e=>Ct(e.target.checked),className:"w-4 h-4 rounded border-zinc-300 text-red-600 focus:ring-red-500"}),t.jsx("span",{className:"text-sm font-medium text-zinc-700 dark:text-zinc-300",children:"Wiederkehrende Veranstaltung"})]}),(!P||i)&&t.jsx(h,{label:T==="all"?"Datum (pro Termin gespeichert)":"Datum *",hint:T==="all"?"Bei âAlle Termine bearbeitenâ bleibt das Datum pro Termin unverändert.":void 0,children:t.jsx("input",{type:"date",required:T!=="all",disabled:T==="all",className:d+(T==="all"?" opacity-50 cursor-not-allowed":""),value:r.date,onChange:e=>c("date",e.target.value)})}),(P&&!i||ae)&&t.jsxs("div",{className:"space-y-4 p-4 rounded-xl border border-zinc-200 dark:border-zinc-800 bg-zinc-50 dark:bg-zinc-900",children:[t.jsx(h,{label:"Bezeichnung (optional)",hint:"Erscheint in der Admin-Ãbersicht. Wenn leer, wird der Titel verwendet.",children:t.jsx("input",{className:d,value:oe,onChange:e=>ut(e.target.value),placeholder:"z. B. Quartiertreff Sommer 2026"})}),t.jsx(h,{label:"Wiederholung",children:t.jsx("div",{className:"flex flex-wrap gap-x-4 gap-y-1.5",children:[{v:"weekly",l:"Wöchentlich / 2-wöchentlich"},{v:"monthly-weekday",l:"Monatlich (gleicher Wochentag)"},{v:"custom",l:"Eigene Termine"}].map(e=>t.jsxs("label",{className:"flex items-center gap-1.5 text-sm text-zinc-700 dark:text-zinc-300 cursor-pointer",children:[t.jsx("input",{type:"radio",checked:F===e.v,onChange:()=>ot(e.v),className:"text-red-600"}),e.l]},e.v))})}),F!=="custom"&&t.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[t.jsx(h,{label:"Von *",children:t.jsx("input",{type:"date",className:d,value:Z,onChange:e=>ct(e.target.value),required:P})}),t.jsx(h,{label:"Bis *",children:t.jsx("input",{type:"date",className:d,value:G,onChange:e=>mt(e.target.value),required:P})})]}),F==="weekly"&&t.jsxs(t.Fragment,{children:[t.jsx(h,{label:"Intervall",children:t.jsxs("div",{className:"flex gap-4",children:[t.jsxs("label",{className:"flex items-center gap-1.5 text-sm text-zinc-700 dark:text-zinc-300 cursor-pointer",children:[t.jsx("input",{type:"radio",checked:se
1===1,onChange:()=>Ee(1),className:"text-red-600"}),"Jede Woche"]}),t.jsxs("label",{className:"flex items-center gap-1.5 text-sm text-zinc-700 dark:text-zinc-300 cursor-pointer",children:[t.jsx("input",{type:"radio",checked:se===2,onChange:()=>Ee(2),className:"text-red-600"}),"Alle 2 Wochen"]})]})}),t.jsx(h,{label:"Wochentage",children:t.jsx("div",{className:"flex flex-wrap gap-1.5",children:bt.map(e=>{const n=ie.includes(e.value);return t.jsx("button",{type:"button",onClick:()=>dt(s=>n?s.filter(g=>g!==e.value):[...s,e.value].sort()),className:`px-2.5 py-1 text-xs font-medium rounded-md border transition-colors ${n?"bg-red-600 text-white border-red-600":"bg-white dark:bg-zinc-800 text-zinc-600 dark:text-zinc-400 border-zinc-300 dark:border-zinc-700 hover:bg-zinc-50 dark:hover:bg-zinc-700"}`,children:e.short},e.value)})})})]}),F==="monthly-weekday"&&t.jsx(h,{label:"Welcher Wochentag",children:t.jsxs("div",{className:"flex gap-2 items-center",children:[t.jsx("select",{className:d+" max-w-[140px]",value:Be,onChange:e=>Dt(Number(e.target.value)),children:Ht.map(e=>t.jsx("option",{value:e.value,children:e.label},e.value))}),t.jsx("select",{className:d+" max-w-[160px]",value:Re,onChange:e=>Et(Number(e.target.value)),children:bt.map(e=>t.jsx("option",{value:e.value,children:e.long},e.value))}),t.jsx("span",{className:"text-sm text-zinc-500",children:"im Monat"})]})}),F==="custom"&&t.jsx(h,{label:"Termine",children:t.jsxs("div",{className:"space-y-2",children:[le.map((e,n)=>t.jsxs("div",{className:"flex gap-2",children:[t.jsx("input",{type:"date",className:d,value:e,onChange:s=>Ae(g=>g.map((m,u)=>u===n?s.target.value:m))}),t.jsx("button",{type:"button",onClick:()=>Ae(s=>s.length>1?s.filter((g,m)=>m!==n):s),disabled:le.length===1,className:"px-2 text-zinc-400 hover:text-red-500 disabled:opacity-30","aria-label":"Datum entfernen",children:"Ã"})]},n)),t.jsx("button",{type:"button",onClick:()=>Ae(e=>[...e,""]),className:"text-xs text-zinc-500 hover:text-zinc-800 dark:hover:text-zinc-200",children:"+ Datum hinzufügen"})]})}),t.jsx("div",{className:"pt-2 border-t border-zinc-200 dark:border-zinc-700",children:b.length===0?t.jsx("p",{className:"text-xs text-zinc-400 italic",children:"Noch keine Termine â Felder oben ausfüllen."}):t.jsxs(t.Fragment,{children:[t.jsxs("p",{className:"text-xs font-medium text-zinc-600 dark:text-zinc-400 mb-1.5",children:[b.length," ",b.length===1?"Termin wird":"Termine werden"," erstellt:"]}),t.jsx("ul",{className:"text-xs text-zinc-500 dark:text-zinc-400 space-y-0.5 max-h-40 overflow-y-auto font-mono",children:b.map(e=>t.jsx("li",{children:Yt(e)},e))}),b.length>100&&t.jsx("p",{className:"text-xs text-amber-600 dark:text-amber-400 mt-2",children:"Zu viele Termine â bitte Zeitraum verkleinern."})]})}),ae&&t.jsxs("div",{className:"pt-3 border-t border-zinc-200 dark:border-zinc-700 flex flex-wrap items-center gap-2",children:[t.jsx("button",{type:"button",onClick:It,disabled:U||b.length===0||b.length>100,className:"px-4 py-2 text-sm font-medium bg-red-600 hover:bg-red-700 disabled:opacity-50 text-white rounded-lg transition-colors",children:U?"Erstelleâ¦":`Reihe erstellen (${b.filter(e=>e!==r.date).length} zusätzliche Termine)`}),t.jsx("button",{type:"button",onClick:gt,disabled:U,className:"px-4 py-2 text-sm font-medium text-zinc-600 dark:text-zinc-400 hover:text-zinc-900 dark:hover:text-white transition-colors disabled:opacity-40",children:"Abbrechen"})]})]}),t.jsx(h,{label:"Hauptkategorie *",hint:"Bestimmt Farbe und Symbol der Veranstaltung im Kalender.",children:t.jsxs("select",{required:!0,className:d,value:r.main_tag_id,onChange:e=>c("main_tag_id",e.target.value),children:[t.jsx("option",{value:"",children:"â wählen â"}),vt.map(e=>t.jsxs("option",{value:e.id,disabled:!O&&e.name==="Quartierverein"&&r.main_tag_id!==e.id,children:[e.name,!O&&e.name==="Quartierverein"?" (nur Vorstand)":""]},e.id))]})}),t.jsx(h,{label:"Tags",children:t.jsx(Zt,{selectedIds:q,onChange:Me,itemType:"events",gesperrt:O?[]:["Quartierverein"],gesperrtHinweis:"Nur der Vorstand kennzeichnet Termine als Quartierverein."})}),t.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[t.jsx(h,{label:"Startzeit",hint:"Leer lassen für eine Veranstaltung ohne feste Zeit",children:t.jsx("input",{type:"time",className:d,value:r.time_from,onChange:e=>c("time_from",e.target.value)})}),t.jsx(h,{label:"Endzeit",children:t.jsx("input",{type:"time",className:d,value:r.time_to,onChange:e=>c("time_to",e.target.value)})})]}),t.jsx(h,{label:"Enddatum",hint:"Nur ausfüllen, wenn die Veranstaltung über mehrere Tage geht oder über Mitternacht hinaus dauert.",children:t.jsx("input",{type:"date",className:d,value:r.end_date,min:r.date||void 0,onChange:e=>c("end_date",e.target.value)})}),t.jsxs(h,{label:"Adresse",children:[t.jsxs("div",{className:"relative",ref:ve,children:[t.jsxs("div",{className:"relative",children:[t.jsx("input",{className:d,value:r.address,onChange:e=>Ft(e.target.value),onFocus:()=>he.length>0&&X(!0),placeholder:"z. B. Bullingerplatz 1, 8004 Zürich",autoComplete:"off"}),wt&&t.jsx("div",{className:"absolute right-3 top-1/2 -translate-y-1/2 w-4 h-4 rounded-full border-2 border-red-500 border-t-transparent animate-spin"})]}),zt&&he.length>0&&t.jsx("ul",{className:"absolute z-50 left-0 right-0 mt-1 bg-white dark:bg-zinc-800 border border-zinc-200 dark:border-zinc-700 rounded-lg shadow-lg overflow-hidden",children:he.map((e,n)=>t.jsx("li",{children:t.jsx("button",{type:"button",onMouseDown:()=>Lt(e),className:"w-full text-left px-3 py-2 text-sm text-zinc-700 dark:text-zinc-300 hover:bg-zinc-50 dark:hover:bg-zinc-700 transition-colors border-b border-zinc-100 dark:border-zinc-700 last:border-0",children:e.label})},n))})]}),r.lat&&r.lng&&t.jsxs("p",{className:"mt-1 text-xs text-zinc-400",children:["Koordinaten: ",r.lat,", ",r.lng]})]}),t.jsx(h,{label:"Zusätzliche Informationen zum Ort",children:t.jsx("input",{className:d,value:r.location,onChange:e=>c("location",e.target.value),placeholder:"z. B. Eingang Nordseite, 2. OG"})}),t.jsx(h,{label:"Veranstalter *",children:Ie?W.length>1?t.jsx("select",{required:!0,className:d,value:r.organizer,onChange:e=>c("organizer",e.target.value),children:W.map(e=>t.jsx("option",{value:e,children:e},e))}):t.jsx("input",{required:!0,readOnly:!0,className:`${d} opacity-70 cursor-not-allowed`,value:r.organizer||W[0]||"",title:"Als Kurator ist der Veranstalter fest vorgegeben."}):t.jsx("input",{required:!0,className:d,value:r.organizer,onChange:e=>c("organizer",e.target.value)})}),t.jsx(h,{label:"Bezug zum Quartierverein",children:O?t.jsxs(t.Fragment,{children:[t.jsxs("select",{className:d,value:r.qv_role,onChange:e=>c("qv_role",e.target.value),children:[t.jsx("option",{value:"",children:"â kein Bezug (keine Markierung) â"}),t.jsx("option",{value:"organisiert",children:"Vom QV organisiert â Abzeichen «Quartierverein»"}),t.jsx("option",{value:"unterstuetzt",children:"Vom QV unterstützt â Abzeichen «Vom QV unterstützt»"})]}),t.jsx("p",{className:"mt-1 text-xs text-zinc-400",children:"Erscheint als kleine Markierung im Veranstaltungskalender. Unabhängig davon, ob der Veranstalter öffentlich angezeigt wird. Nur für Anlässe, die der Verein selbst durchführt oder mitträgt, nicht für Stadt- oder Partneranlässe."})]}):t.jsxs("p",{className:"text-sm text-zinc-500 dark:text-zinc-400",children:[r.qv_role==="organisiert"?"Vom QV organisiert":r.qv_role==="unterstuetzt"?"Vom QV unterstützt":"Kein Bezug",t.jsx("span",{className:"block mt-1 text-xs text-zinc-400",children:"Diese Kennzeichnung setzt nur der Vorstand."})]})}),O&&r.qv_role&&t.jsxs(h,{label:"Jahresprogramm",children:[t.jsxs("label",{className:"flex items-start gap-2.5 text-sm text-zinc-700 dark:text-zinc-300 cursor-pointer",children:[t.jsx("input",{type:"checkbox",checked:r.jahresprogramm,className:"mt-0.5 accent-red-600 w-4 h-4",onChange:e=>c("jahresprogramm",e.target.checked)}),t.jsxs("span",{children:["Ins Jahresprogramm aufnehmen",t.jsxs("span",{className:"block text-xs text-zinc-400",children:["Erscheint im PDF «Jahresprogramm ",new Date(r.date||Date.now()).getFullYear(),"», das unter Dokumenten liegt. Ãnderungen am Termin stehen dort erst nach dem nächsten Publizieren."]})]})]}),r.jahresprogramm&&t.jsxs("div",{className:"mt-2",children:[t.jsx("input",{className:d,value:r.jahresprogramm_datum,onChange:e=>c("jahresprogramm_datum",e.target.value),placeholder:"z. B. Mai 2026 â leer lassen, wenn der Termin feststeht"}),t.jsx("p",{className:"mt-1 text-xs text-zinc-400",children:"Nur ausfüllen, wenn der Termin noch ungenau ist. Der Text ersetzt im Jahresprogramm die Datumsangabe; der Kalender zeigt weiterhin den Tag oben."})]})]}),t.jsx(Le,{stack:!0,label:"Beschreibung",labelEN:"Description (English)",source:r.description,onTranslate:()=>be("description_en",r.description,e=>c("description_en",e)),loading:xe==="description_en",busy:pe,hint:Ot,renderDE:()=>t.jsxs(t.Fragment,{children:[t.jsx(Xt,{feldRef:Ke}),t.jsx("textarea",{ref:Ke,rows:5,className:d,value:r.description,onChange:e=>c("description",e.target.value)})]}),renderEN:()=>t.jsx("textarea",{rows:5,className:d,value:r.description_en,onChange:e=>c("description_en",e.target.value),placeholder:"English descriptionâ¦"})}),t.jsxs("div",{className:"flex items-center justify-between gap-2",children:[t.jsx("label",{className:"block text-sm font-medium text-zinc-700 dark:text-zinc-300",children:"SEO-Beschreibung (optional)"}),t.jsx("button",{type:"button",onClick:()=>Tt("de"),disabled:at||!r.title.trim()&&!r.description.trim(),title:"Aus Titel + Beschreibung einen ~150-Zeichen-Suchsnippet generieren",className:"inline-flex items-center gap-1 text-xs font-medium px-2.5 py-1 rounded-lg border border-zinc-300 dark:border-zinc-700 bg-white dark:bg-zinc-800 text-zinc-600 dark:text-zinc-400 hover:bg-zinc-50 dark:hover:bg-zinc-700 disabled:opacity-40 disabled:cursor-not-allowed transition-colors",children:at?"Generiereâ¦":"⨠Vorschlag generieren"})]}),t.jsx(Le,{stack:!0,labelEN:"SEO description (English)",source:r.meta_description,onTranslate:()=>be("meta_description_en",r.meta_description,e=>c("meta_description_en",e)),loading:xe==="meta_description_en",busy:pe,renderDE:()=>t.jsx("textarea",{rows:2,className:d,value:r.meta_description,onChange:e=>c("meta_description",e.target.value),placeholder:"Leer lassen = automatisch aus der Beschreibung"}),renderEN:()=>t.jsx("textarea",{rows:2,className:d,value:r.meta_description_en,onChange:e=>c("meta_description_en",e.target.value),placeholder:"English SEO descriptionâ¦"})}),t.jsxs(h,{label:i?"Neues Bild hochladen":"Bild hochladen",hint:i?"Leer lassen, um das bestehende Bild zu behalten":void 0,children:[i&&y&&t.jsx("div",{className:"mb-2",children:t.jsx("img",{src:y,alt:"",loading:"lazy",className:"h-20 rounded-lg object-cover"})}
1),t.jsx("input",{ref:L,type:"file",accept:"image/*,application/pdf",className:"sr-only",onChange:e=>Te(e.target.files?.[0]??null)}),t.jsx("div",{role:"button",tabIndex:0,onClick:()=>L.current?.click(),onKeyDown:e=>{(e.key==="Enter"||e.key===" ")&&(e.preventDefault(),L.current?.click())},onDragOver:e=>{e.preventDefault(),Je||_e(!0)},onDragLeave:e=>{e.currentTarget.contains(e.relatedTarget)||_e(!1)},onDrop:e=>{e.preventDefault(),_e(!1);const n=e.dataTransfer.files?.[0];if(!(!n||!n.type.startsWith("image/")&&n.type!=="application/pdf")){if(L.current)try{const s=new DataTransfer;s.items.add(n),L.current.files=s.files}catch{}Te(n)}},className:`flex flex-col items-center justify-center gap-2 px-4 py-6 rounded-lg border-2 border-dashed cursor-pointer transition-colors text-center ${Je?"border-red-500 bg-red-50 dark:bg-red-950/20":"border-zinc-300 dark:border-zinc-700 hover:border-zinc-400 dark:hover:border-zinc-500 bg-zinc-50/50 dark:bg-zinc-800/30"}`,children:R?t.jsxs("div",{className:"flex items-center gap-3 w-full",children:[Ze&&t.jsx("img",{src:Ze,alt:"",className:`h-16 w-16 rounded-md object-cover flex-shrink-0 ${K&&!Se?"opacity-30":""}`}),t.jsxs("div",{className:"text-left min-w-0 flex-1",children:[t.jsx("p",{className:"text-sm font-medium text-zinc-800 dark:text-zinc-100 truncate",children:R.name}),t.jsxs("p",{className:"text-xs text-zinc-400",children:[(R.size/1024).toFixed(0)," KB"]}),K&&(yt?t.jsx("p",{className:"text-xs text-red-600 dark:text-red-400 mt-0.5",children:"PDF wird in ein Bild umgewandeltâ¦"}):t.jsxs("label",{className:"mt-1 flex items-center gap-1.5 text-xs text-zinc-600 dark:text-zinc-400 cursor-pointer",onClick:e=>e.stopPropagation(),children:[t.jsx("input",{type:"checkbox",checked:Se,disabled:!I,onChange:e=>Xe(e.target.checked)}),"Erste Seite auch als Event-Bild verwenden",t.jsx("span",{className:"text-zinc-400",children:"(sonst nur PDF-Download)"})]}))]}),t.jsx("button",{type:"button",onClick:e=>{e.stopPropagation(),L.current&&(L.current.value=""),Te(null)},className:"text-xs text-zinc-500 hover:text-red-600 dark:hover:text-red-400 underline shrink-0",children:"Entfernen"})]}):t.jsxs(t.Fragment,{children:[t.jsx("svg",{className:"w-7 h-7 text-zinc-400",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24","aria-hidden":!0,children:t.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.5,d:"M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-8-13v12m0-12l-4 4m4-4l4 4"})}),t.jsxs("p",{className:"text-sm text-zinc-600 dark:text-zinc-400",children:["Bild oder PDF hierher ziehen oder ",t.jsx("span",{className:"text-red-600 dark:text-red-400 font-medium",children:"auswählen"})]}),t.jsx("p",{className:"text-xs text-zinc-400",children:"JPG, PNG, WebP, GIF, PDF"})]})}),y&&!R&&t.jsxs("div",{className:"mt-2 flex items-center gap-2 text-xs",children:[t.jsx("span",{className:"text-zinc-500 dark:text-zinc-400",children:"Aktuelles Bild:"}),t.jsx("a",{href:y,target:"_blank",rel:"noopener noreferrer",className:"text-red-600 dark:text-red-400 hover:underline truncate",children:"ansehen"}),t.jsx("button",{type:"button",onClick:()=>Qe(null),className:"text-zinc-400 hover:text-red-600 underline shrink-0",children:"Bild entfernen"})]}),ze&&!K&&t.jsxs("div",{className:"mt-2 flex items-center gap-2 text-xs",children:[t.jsx("span",{className:"text-zinc-500 dark:text-zinc-400",children:"Angehängtes PDF:"}),t.jsx("a",{href:ze,target:"_blank",rel:"noopener noreferrer",className:"text-red-600 dark:text-red-400 hover:underline truncate",children:"Flyer ansehen"}),t.jsx("button",{type:"button",onClick:()=>He(null),className:"text-zinc-400 hover:text-red-600 underline shrink-0",children:"entfernen"})]}),t.jsxs("div",{className:"mt-4 rounded-lg border border-zinc-200 dark:border-zinc-700 p-3",children:[t.jsx("p",{className:"text-[12px] font-semibold uppercase tracking-wide text-zinc-400 mb-1",children:"Beilagen"}),t.jsx("p",{className:"text-xs text-zinc-500 dark:text-zinc-400 mb-2",children:"Programm, Lageplan, Anmeldeformular und Ãhnliches. Erscheinen auf der Veranstaltungsseite als Download."}),i?t.jsxs(t.Fragment,{children:[we.length>0&&t.jsx("ul",{className:"mb-2 space-y-1.5",children:we.map(e=>t.jsxs("li",{className:"flex items-center gap-2 text-[13px]",children:[t.jsx("a",{href:l.storage.from("documents").getPublicUrl(e.file_path).data.publicUrl,target:"_blank",rel:"noopener noreferrer",className:"text-red-600 dark:text-red-400 hover:underline truncate",children:e.title||e.file_name}),e.size_bytes&&t.jsxs("span",{className:"text-zinc-400 shrink-0",children:[Math.round(e.size_bytes/1024)," KB"]}
1),t.jsx("button",{type:"button",disabled:Ne,onClick:async()=>{await de(`«${e.title||e.file_name}» entfernen?`)&&(Q(!0),await l.storage.from("documents").remove([e.file_path]),await l.from("event_attachments").delete().eq("id",e.id),ye(n=>n.filter(s=>s.id!==e.id)),Q(!1))},className:"ml-auto shrink-0 text-zinc-400 hover:text-red-600",children:"entfernen"})]},e.id))}),t.jsxs("label",{className:"inline-block px-3 py-1.5 rounded-md border border-zinc-300 dark:border-zinc-600 text-xs font-medium cursor-pointer hover:bg-zinc-50 dark:hover:bg-zinc-800",children:[Ne?"Wird hochgeladenâ¦":"+ Beilage hinzufügen",t.jsx("input",{type:"file",className:"hidden",disabled:Ne,onChange:async e=>{const n=e.target.files?.[0];if(e.target.value="",!n)return;Q(!0),o(null);const s=`event-beilagen/${i}/${Date.now()}-${n.name.replace(/[^a-zA-Z0-9._-]/g,"_")}`,g=await l.storage.from("documents").upload(s,n,{contentType:n.type||void 0});if(g.error){o(`Beilage: ${g.error.message}`),Q(!1);return}const m=await l.from("event_attachments").insert({event_id:i,file_path:s,file_name:n.name,content_type:n.type||null,size_bytes:n.size,sort_order:we.length}).select("id, title, file_path, file_name, size_bytes, sort_order").single();m.error?o(`Beilage: ${m.error.message}`):ye(u=>[...u,m.data]),Q(!1)}})]})]}):t.jsx("p",{className:"text-xs text-zinc-400",children:"Zuerst speichern, danach lassen sich Beilagen anhängen."})]}),t.jsxs("div",{className:"mt-2 flex items-start gap-2",children:[t.jsx("input",{type:"text",value:et,onChange:e=>Ce(e.target.value),placeholder:"Alt-Text (Bildbeschreibung, optional)",className:d}),t.jsx("button",{type:"button",onClick:St,disabled:rt||!y,title:y?"Alt-Text aus dem Bild generieren":"Bild zuerst speichern, dann generieren",className:"shrink-0 inline-flex items-center gap-1 text-xs font-medium px-2.5 py-2 rounded-lg border border-zinc-300 dark:border-zinc-700 bg-white dark:bg-zinc-800 text-zinc-600 dark:text-zinc-400 hover:bg-zinc-50 dark:hover:bg-zinc-700 disabled:opacity-40 disabled:cursor-not-allowed transition-colors whitespace-nowrap",children:rt?"â¦":"⨠Alt-Text (DE+EN)"})]}),t.jsx("input",{type:"text",value:tt,onChange:e=>De(e.target.value),placeholder:"Alt-Text (English, optional)",className:`${d} mt-2`})]}),t.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[t.jsx(h,{label:"Anmeldungs-URL",hint:"Link zur Anmeldung / zu Tickets",children:t.jsx("input",{type:"url",className:d,value:r.registration_url,onChange:e=>c("registration_url",e.target.value),onBlur:e=>c("registration_url",xt(e.target.value)),placeholder:"https://⦠oder www.â¦"})}),t.jsx(h,{label:"Anmeldungs-Label",children:t.jsx("input",{className:d,value:r.registration_label,onChange:e=>c("registration_label",e.target.value),placeholder:"z. B. Jetzt anmelden"})})]}),t.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[t.jsx(h,{label:"Mehr-Infos-URL",hint:"Link zu weiteren Informationen (Website, Programm, Flyer â¦) â nicht für die Anmeldung",children:t.jsx("input",{type:"url",className:d,value:r.info_url,onChange:e=>c("info_url",e.target.value),onBlur:e=>c("info_url",xt(e.target.value)),placeholder:"https://⦠oder www.â¦"})}),t.jsx(h,{label:"Mehr-Infos-Label",children:t.jsx("input",{className:d,value:r.info_label,onChange:e=>c("info_label",e.target.value),placeholder:"z. B. Mehr erfahren"})})]}),t.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[t.jsx(h,{label:"Breitengrad (Karte)",hint:"Leer lassen für Standardposition Kreis 4",children:t.jsx("input",{className:d,value:r.lat,onChange:e=>c("lat",e.target.value),placeholder:"47.3769"})}),t.jsx(h,{label:"Längengrad (Karte)",children:t.jsx("input",{className:d,value:r.lng,onChange:e=>c("lng",e.target.value),placeholder:"8.5285"})})]}),t.jsxs("div",{className:"flex items-center gap-3 -mt-2",children:[t.jsxs("button",{type:"button",disabled:!r.location&&!r.address,onClick:ht,className:"inline-flex items-center gap-1.5 px-3 py-1.5 text-xs font-medium text-zinc-600 dark:text-zinc-400 border border-zinc-200 dark:border-zinc-700 hover:border-zinc-300 dark:hover:border-zinc-600 rounded-md transition-colors disabled:opacity-40 disabled:cursor-not-allowed",title:"Adresse erneut bei Photon (komoot.io) nachschlagen",children:[t.jsxs("svg",{className:"w-3.5 h-3.5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:[t.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M17.657 16.657L13.414 20.9a1.998 1.998 0 01-2.827 0l-4.244-4.243a8 8 0 1111.314 0z"}),t.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M15 11a3 3 0 11-6 0 3 3 0 016 0z"})]}),"Geokodierung erneut ausführen"]}),t.jsx("span",{className:"text-xs text-zinc-400 dark:text-zinc-500",children:"Wird beim Speichern automatisch ausgeführt, wenn Ort oder Adresse geändert wurde."})]}),Ue&&t.jsx("p",{className:"text-sm text-red-600 dark:text-red-400",children:Ue}),Oe&&t.jsx("p",{className:"text-sm text-red-600 dark:text-red-400",children:Oe}),t.jsxs("div",{className:"flex items-center gap-3 pt-2 flex-wrap",children:[t.jsx("button",{type:"submit",disabled:ce||me,className:"px-5 py-2.5 bg-red-600 hover:bg-red-700 disabled:opacity-50 text-white text-sm font-medium rounded-lg transition-colors",children:ce?"Speichernâ¦":"Speichern"}),t.jsx("button",{type:"submit",formNoValidate:!0,onClick:()=>{ue.current=!0},disabled:ce||me,className:"px-5 py-2.5 border border-zinc-300 dark:border-zinc-700 text-zinc-700 dark:text-zinc-200 hover:border-zinc-400 dark:hover:border-zinc-500 disabled:opacity-50 text-sm font-medium rounded-lg transition-colors",children:me?"Speichernâ¦":"Als Entwurf speichern"}),t.jsx("button",{type:"button",onClick:B,className:"px-5 py-2.5 text-sm font-medium text-zinc-600 dark:text-zinc-400 hover:text-zinc-900 dark:hover:text-white transition-colors",children:"Abbrechen"})]})]})]})}export{ur as AdminEventForm};
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.