1import{r as l,j as t,s as o}from"./index-CLTM18rh.js";import{c as R}from"./eventDeletion-B98nBHlH.js";import{u as Ke}from"./AdminContext-B2hLlcqc.js";import{I as ue}from"./InlineTagEditor-CgFtiFD0.js";import{N as He}from"./NurLesen-BKsmfvXD.js";import{F as Ze,s as L,a as H}from"./Filterleiste-Dovi1-bW.js";import{b as B}from"./bestaetige-CpNFuPQa.js";import{C as Pe}from"./chevron-right-D-hIC4R2.js";import"./authFetch-u5HjDcUX.js";function fe({children:v,className:Z=""}){const g=l.useRef(null),[C,q]=l.useState({left:!1,right:!1}),c=l.useCallback(()=>{const m=g.current;m&&q({left:m.scrollLeft>4,right:m.scrollLeft+m.clientWidth<m.scrollWidth-4})},[]);return l.useEffect(()=>{const m=g.current;if(!m)return;c(),m.addEventListener("scroll",c,{passive:!0}),window.addEventListener("resize",c);const $=new ResizeObserver(c);return $.observe(m),()=>{m.removeEventListener("scroll",c),window.removeEventListener("resize",c),$.disconnect()}},[c]),t.jsxs("div",{className:"relative",children:[t.jsx("div",{ref:g,className:`overflow-x-auto ${Z}`,children:v}),C.left&&t.jsx("div",{className:"pointer-events-none absolute inset-y-0 left-0 w-8 bg-gradient-to-r from-white dark:from-zinc-900 to-transparent"}),C.right&&t.jsx("div",{className:"pointer-events-none absolute inset-y-0 right-0 w-12 bg-gradient-to-l from-white dark:from-zinc-900 to-transparent flex items-center justify-end pr-1",children:t.jsx("svg",{className:"w-5 h-5 text-zinc-400 animate-pulse",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:t.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 5l7 7-7 7"})})})]})}function at({onEdit:v,onNew:Z}){const{permissions:g,eventOrganizers:C}=Ke(),q=g.perm_events_own&&!g.perm_events,c=g.perm_events||g.perm_events_own,[m,$]=l.useState([]),[w,pe]=l.useState([]),[be,re]=l.useState(!0),[F,k]=l.useState(null),[O,Q]=l.useState(null),[se,M]=l.useState(null),[ie,ne]=l.useState(null),[S,ge]=l.useState(""),[p,ae]=l.useState([]),[D,we]=l.useState("upcoming"),[x,le]=l.useState(""),[de,ze]=l.useState(!1),[T,ke]=l.useState("all"),[V,je]=l.useState("all"),[A,ve]=l.useState("all"),[Ne,_e]=l.useState(new Set),ye=e=>_e(r=>{const s=new Set(r);return s.has(e)?s.delete(e):s.add(e),s}),[u,Ce]=l.useState("date-asc"),[f,N]=l.useState(new Set),[ce,P]=l.useState(!1),[j,_]=l.useState(null),[y,$e]=l.useState(!1);async function b(){re(!0);const[{data:e},{data:r},{data:s}]=await Promise.all([o.from("events").select("id, title, date, end_date, time_from, location, organizer, lat, lng, series_id, series_label, status, registration_url, qv_role").order("date",{ascending:!1}),o.from("tags").select("id, name").eq("for_events",!0).order("sort_order").order("name"),o.from("event_tags").select("event_id, tag_id")]),i=new Map((r??[]).map(a=>[a.id,a])),n=new Map;for(const a of s??[]){const d=i.get(a.tag_id);d&&(n.has(a.event_id)||n.set(a.event_id,[]),n.get(a.event_id).push(d))}$((e??[]).map(a=>({...a,tags:n.get(a.id)??[]}))),pe(r??[]),re(!1)}l.useEffect(()=>{b()},[]),l.useEffect(()=>{N(new Set)},[S,D,x,p,y,T,V,A]);async function Se(e,r){const s=m.find(i=>i.id===e);if(s){if(s.series_id){const i=s.series_label||r,n=m.filter(d=>d.series_id===s.series_id).length;if(await B(`«${i}» ist eine Reihe mit ${n} Termin${n===1?"":"en"}. 2 3OK = GANZE Reihe löschen 4Abbrechen = nur diesen einen Termin löschen oder Abbruch`)){if(!await R({seriesId:s.series_id},`Ganze Reihe «${i}» (${n} Termin${n===1?"":"e"}) wirklich löschen? Das kann nicht rückgängig gemacht werden.`))return;k(e),await o.from("events").delete().eq("series_id",s.series_id)}else{if(!await R({id:e},`Nur diesen einen Termin (${s.date}) löschen?`))return;k(e),await o.from("events").delete().eq("id",e)}await b(),k(null);return}await R({id:e},`«${r}» wirklich löschen?`)&&(k(e),await o.from("events").delete().eq("id",e),await b(),k(null))}}async function De(e,r,s){const i=s!=="cancelled",n=m.find(K=>K.id===e);if(!n)return;let a="one";if(n.series_id){const K=n.series_label||r,U=m.filter(Y=>Y.series_id===n.series_id).length,X=await B(`«${K}» ist eine Reihe mit ${U} Termin${U===1?"":"en"}. 5 6OK = GANZE Reihe ${i?"absagen":"wieder freigeben"} 7Abbrechen = nur diesen einen Termin`);if(a=X?"series":"one",!X&&!await B(`Nur diesen einen Termin (${n.date}) ${i?"absagen":"wieder freigeben"}?`))return}else if(i&&!await B(`«${r}» absagen? Die Veranstaltung bleibt sichtbar, wird aber als ABGESAGT markiert.`))return;Q(e);
7const d=i?"cancelled":"published",z=o.from("events").update({status:d});a==="series"&&n.series_id?await z.eq("series_id",n.series_id):await z.eq("id",e),await b(),Q(null)}async function Te(e,r){const s=r!=="draft";ne(e);const i=s?"draft":"published",{error:n}=await o.from("events").update({status:i}).eq("id",e);if(ne(null),n){alert(`Status ändern fehlgeschlagen: ${n.message}`);return}await b()}async function Ve(e){M(e);const[{data:r,error:s},{data:i}]=await Promise.all([o.from("events").select("*").eq("id",e).single(),o.from("event_tags").select("tag_id").eq("event_id",e)]);if(s||!r){M(null),alert(`Duplizieren fehlgeschlagen: ${s?.message??"Quelle nicht gefunden."}`);return}const{id:n,created_at:a,updated_at:d,creator_id:z,external_id:K,source:U,source_url:X,series_id:Y,series_label:Je,...ee}=r,Me=typeof ee.title=="string"?ee.title:"Veranstaltung",We={...ee,title:`${Me} (Kopie)`,status:"draft"},{data:te,error:xe}=await o.from("events").insert(We).select("id").single();if(xe||!te){M(null),alert(`Duplizieren fehlgeschlagen: ${xe?.message??"Unbekannter Fehler."}`);return}if(i&&i.length>0){const Ge=i.map(Ie=>({event_id:te.id,tag_id:Ie.tag_id}));await o.from("event_tags").insert(Ge)}M(null),v(te.id)}function oe(e,r){$(s=>s.map(i=>i.id!==e?i:{...i,tags:w.filter(n=>r.includes(n.id))}))}const W=new Date().toISOString().slice(0,10);function Ae(e){ae(r=>r.includes(e)?r.filter(s=>s!==e):[...r,e])}const h=l.useMemo(()=>{let e=m;if(q&&(e=e.filter(r=>C.includes(r.organizer))),x?e=e.filter(r=>r.date===x):D==="upcoming"?e=e.filter(r=>!r.date||r.date>=W):D==="past"&&(e=e.filter(r=>!!r.date&&r.date<W)),p.length>0&&(e=e.filter(r=>r.tags.some(s=>p.includes(s.id)))),T==="with"?e=e.filter(r=>!!r.registration_url?.trim()):T==="without"&&(e=e.filter(r=>!r.registration_url?.trim())),V==="with"?e=e.filter(r=>r.lat!=null&&r.lng!=null):V==="without"&&(e=e.filter(r=>r.lat==null||r.lng==null)),A!=="all"&&(e=e.filter(r=>r.qv_role===A)),S.trim()){const r=S.trim().toLowerCase();e=e.filter(s=>(s.title??"").toLowerCase().includes(r)||s.location?.toLowerCase().includes(r)||s.organizer?.toLowerCase().includes(r))}return[...e].sort((r,s)=>{if(u==="date-asc")return(r.date??"").localeCompare(s.date??"");if(u==="date-desc")return(s.date??"").localeCompare(r.date??"");if(u==="title")return(r.title??"").localeCompare(s.title??"","de");if(u==="series"){const i=!!r.series_id,n=!!s.series_id;if(i!==n)return i?-1:1;if(!i)return(r.title??"").localeCompare(s.title??"","de");const a=(r.series_label??r.series_id??"").toLowerCase(),d=(s.series_label??s.series_id??"").toLowerCase(),z=a.localeCompare(d,"de");return z!==0?z:(r.date??"").localeCompare(s.date??"")}if(u==="location"){const i=(r.location??"").trim(),n=(s.location??"").trim();if(!i&&n)return 1;if(i&&!n)return-1;const a=i.localeCompare(n,"de",{sensitivity:"base"});return a!==0?a:(r.date??"").localeCompare(s.date??"")}return 0})},[m,S,p,D,x,T,V,A,u,W,q,C]),E=l.useMemo(()=>{if(!y)return[];const e=new Map;for(const s of h)s.series_id&&(e.has(s.series_id)||e.set(s.series_id,[]),e.get(s.series_id).push(s));const r=[];for(const[s,i]of e){const n=[...i].sort((d,z)=>(d.date??"").localeCompare(z.date??"")),a=n[0];r.push({series_id:s,series_label:a.series_label,lead:a,occurrences:n,firstDate:n[0].date??"",lastDate:n[n.length-1].date??"",allCancelled:n.every(d=>d.status==="cancelled")})}return r.sort((s,i)=>u==="date-asc"?s.firstDate.localeCompare(i.firstDate):u==="date-desc"?i.firstDate.localeCompare(s.firstDate):(s.series_label??s.lead.title??"").localeCompare(i.series_label??i.lead.title??"","de"))},[h,y,u]),J=l.useMemo(()=>{const e=new Set;for(const r of h)r.series_id&&e.add(r.series_id);return e.size},[h]);async function Ee(e){const r=e.series_label||e.lead.title;if(!await R({seriesId:e.series_id},`Ganze Reihe «${r}» löschen? 8 9${e.occurrences.length} Termin${e.occurrences.length===1?"":"e"} werden entfernt. Diese Aktion kann nicht rückgängig gemacht werden.`))return;k(e.series_id);const{error:s}=await o.from("events").delete().eq("series_id",e.series_id);s&&alert(`Löschen fehlgeschlagen: ${s.message}`),await b(),k(null)}async function Re(e){const r=!e.allCancelled,s=e.series_label||e.lead.title;if(!await B(`Reihe «${s}» ${r?"absagen":"wieder freigeben"}? 10 11${e.occurrences.length} Termin${e.occurrences.length===1?"":"e"} betroffen.`))return;Q(e.series_id);const i=r?"cancelled":"published";await o.from("events").update({status:i}).eq("series_id",e.series_id),await b(),Q(null)}const me=h.length>0&&h.every(e=>f.has(e.id));function Le(e){N(r=>{const s=new Set(r);return s.has(e)?s.delete(e):s.add(e),s})}function Be(){N(me?new Set:new Set(h.map(e=>e.id)))}const G=()=>h.filter(e=>f.has(e.id));async function I(e){if(e){alert(`Hat nicht geklappt: ${e.message}`),_(null);return}N(new Set),await b(),_(null)}async function qe(e){const r=G().map(n=>n.id);if(r.length===0)return;_("qv");const s=e?{qv_role:e}:{qv_role:null,jahresprogramm:!1},{error:i}=await o.from("events").update(s).in("id",r);await I(i)}async function Fe(e){const r=G(),s=e?r.filter(a=>a.qv_role!=null).map(a=>a.id):r.map(a=>a.id);if(s.length===0){alert("Ins Jahresprogramm kommen nur Anlässe mit einem Bezug zum Quartierverein. Setze zuerst «Vom QV organisiert» oder «Vom QV unterstützt».");return}const i=e?r.length-s.length:0;_("programm");const{error:n}=await o.from("events").update({jahresprogramm:e}).in("id",s);await I(n),i>0&&alert(`${i} ohne Bezug zum Verein wurden übersprungen.`)}async function he(e){const r=G().filter(i=>
11i.status!=="cancelled").map(i=>i.id);if(r.length===0)return;_("status");const{error:s}=await o.from("events").update({status:e}).in("id",r);await I(s)}async function Oe(e,r){const s=G().map(n=>n.id);if(s.length===0||!e)return;_("tag");const{error:i}=r?await o.from("event_tags").upsert(s.map(n=>({event_id:n,tag_id:e})),{ignoreDuplicates:!0}):await o.from("event_tags").delete().eq("tag_id",e).in("event_id",s);await I(i)}async function Qe(){const e=h.filter(d=>f.has(d.id)).map(d=>d.id);if(e.length===0)return;const r=h.filter(d=>f.has(d.id)&&d.series_id).length,s=r>0?` 12 13${r} davon ${r===1?"gehört":"gehören"} zu einer Reihe â es wird nur der jeweilige Termin gelöscht, nicht die ganze Reihe.`:"",i=h.filter(d=>f.has(d.id)).slice(0,12).map(d=>`⢠${d.date??"ohne Datum"} ${d.title??"ohne Titel"}`).join(` 14`),n=e.length>12?` 15⦠und ${e.length-12} weitere`:"";if(!await R({ids:e},`${e.length} Veranstaltung${e.length===1?"":"en"} wirklich löschen? 16 17${i}${n}${s} 18 19Dies kann nicht rückgängig gemacht werden.`))return;P(!0);const{error:a}=await o.from("events").delete().in("id",e);if(a){alert(`Fehler beim Löschen: ${a.message}`),P(!1);return}N(new Set),await b(),P(!1)}return t.jsxs("div",{children:[t.jsx(He,{recht:"perm_events",auch:["perm_events_own"]}),t.jsxs("div",{className:"flex items-center justify-between mb-6 gap-3 flex-wrap",children:[t.jsx("h1",{className:"text-xl font-bold text-zinc-900 dark:text-white",children:"Veranstaltungen"}),t.jsx("div",{className:"flex items-center gap-2",children:c&&t.jsxs("button",{onClick:Z,className:"flex items-center gap-2 px-4 py-2 bg-red-600 hover:bg-red-700 text-white text-sm font-medium rounded-lg transition-colors",children:[t.jsx("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:t.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M12 4v16m8-8H4"})}),"Neue Veranstaltung"]})})]}),t.jsxs(Ze,{suche:S,onSuche:ge,platzhalter:"Titel, Ort oder Veranstalter suchenâ¦",rechts:t.jsxs("button",{type:"button",onClick:()=>$e(e=>!e),disabled:J===0&&!y,className:`px-3 py-1.5 text-sm font-medium rounded-lg border transition-colors disabled:opacity-40 disabled:cursor-not-allowed ${y?"border-amber-300 dark:border-amber-800 text-amber-700 dark:text-amber-400 bg-amber-50 dark:bg-amber-950/30":"border-zinc-300 dark:border-zinc-600 text-zinc-600 dark:text-zinc-400 hover:bg-zinc-50 dark:hover:bg-zinc-800"}`,title:"Reihen-Ansicht â alle Termine einer Serie in einer Zeile zusammenfassen",children:["⺠Reihen",J>0&&` (${J})`]}),children:[t.jsxs("label",{className:"flex items-center gap-1.5",title:"Nach einem bestimmten Tag suchen",children:[t.jsx("input",{type:"date",value:x,onChange:e=>le(e.target.value),className:L}),x&&t.jsx("button",{type:"button",onClick:()=>le(""),title:"Datum aufheben",className:"text-zinc-400 hover:text-red-600 text-lg leading-none px-1",children:"Ã"})]}),t.jsx("select",{value:D,onChange:e=>we(e.target.value),disabled:!!x,title:x?"Ein gewähltes Datum gilt vor dem Zeitraum.":"Zeitraum",className:`${L} disabled:opacity-40`,children:[["upcoming","Zukünftig"],["past","Vergangen"],["all","Alle"]].map(([e,r])=>t.jsx("option",{value:e,children:r},e))}),t.jsx(H,{wert:T,onWert:e=>ke(e),titel:"Nach Anmeldung filtern",optionen:[["all","Anmeldung: alle"],["with","Mit Anmeldung"],["without","Ohne Anmeldung"]]}),t.jsx(H,{wert:V,onWert:e=>je(e),titel:"Nach Geo-Koordinaten filtern",optionen:[["all","Geo: alle"],["with","Mit Koordinaten"],["without","Geo fehlt"]]}),t.jsx(H,{wert:A,onWert:e=>ve(e),titel:"Nach dem Bezug zum Quartierverein filtern",optionen:[["all","QV: alle"],["organisiert","Vom QV organisiert"],["unterstuetzt","Vom QV unterstützt"]]}),t.jsx(H,{wert:u,onWert:e=>Ce(e),titel:"Sortierung",optionen:[["date-asc","Datum â"],["date-desc","Datum â"],["title","Titel"],["series","Reihe"],["location","Ort"]]})]}),w.length>0&&t.jsxs("div",{className:"flex flex-wrap items-center gap-1.5 mb-4",children:[t.jsxs("button",{type:"button",onClick:()=>ze(e=>!e),className:"px-2.5 py-1 text-xs font-medium rounded-full border border-zinc-300 dark:border-zinc-600 text-zinc-600 dark:text-zinc-300 hover:border-zinc-400",children:["Tags",p.length>0?` (${p.length})`:""," ",de?"â²":"â¼"]}),p.length>0&&t.jsx("button",{type:"button",onClick:()=>ae([]),className:"text-xs text-zinc-400 hover:text-red-600 px-1",children:"zurücksetzen"}),(de?w:w.filter(e=>p.includes(e.id))).map(e=>{const r=p.includes(e.id);return t.jsx("button",{onClick:()=>Ae(e.id),className:`px-2.5 py-1 text-xs font-medium rounded-full border transition-colors ${r?"border-transparent text-white":"border-zinc-200 dark:border-zinc-700 text-zinc-500 dark:text-zinc-400 hover:border-zinc-300 dark:hover:border-zinc-600"}`,style:r?{backgroundColor:e.color??"#6b7280"}:void 0,children:e.name},e.id)})]}),be?t.jsx("div",{className:"py-20 text-center text-zinc-400 text-sm",children:"Lädtâ¦"}):y?E.length===0?t.jsx("div",{className:"py-20 text-center text-zinc-400 text-sm",children:"Keine Reihen in der aktuellen Auswahl."}):t.jsxs("div",{className:"bg-white dark:bg-zinc-900 rounded-xl border border-zinc-200 dark:border-zinc-800 overflow-hidden",children:[t.jsx("div",{className:"px-4 py-2 border-b border-zinc-100 dark:border-zinc-800",children:t.jsxs("span",{className:"text-xs text-zinc-400",children:[E.length," ",E.length===1?"Reihe":"Reihen"," ·"," ",E.reduce((e,r)=>e+r.occurrences.length,0)," Termine gesamt"]})}),t.jsx(fe,{children:t.jsxs("table",{className:"w-full text-sm",children:[t.jsx("thead",{children:t.jsxs("tr",{className:"border-b border-zinc-100 dark:border-zinc-800",children:[t.jsx("th",{className:"text-left px-4 py-3 text-xs font-semibold text-zinc-400 uppercase tracking-wider",children:"Zeitraum"}),t.jsx("th",{className:"text-left px-4 py-3 text-xs font-semibold text-zinc-400 uppercase tracking-wider",children:"Reihe"}),t.jsx("th",{className:"text-left px-4 py-3 text-xs font-semibold text-zinc-400 uppercase tracking-wider hidden md:table-cell",children:"Tags"}),t.jsx("th",{className:"text-left px-4 py-3 text-xs font-semibold text-zinc-400 uppercase tracking-wider hidden lg:table-cell",children:"Ort"}),t.jsx("th",{className:"px-4 py-3 sticky right-0 z-10 bg-white dark:bg-zinc-900 shadow-[-6px_0_8px_-8px_rgba(0,0,0,0.18)]"})]})}),t.jsx("tbody",{className:"divide-y divide-zinc-100 dark:divide-zinc-800",children:E.map(e=>t.jsxs("tr",{className:`group hover:bg-zinc-50 dark:hover:bg-zinc-800/50 ${e.allCancelled?"opacity-60":""}`,children:[t.jsxs("td",{className:"px-4 py-3 text-zinc-600 dark:text-zinc-400 whitespace-nowrap",children:[e.firstDate===e.lastDate?e.firstDate:`${e.firstDate} â ${e.lastDate}`,t.jsxs("div",{className:"text-xs text-zinc-400 dark:text-zinc-500",children:[e.occurrences.length," Termin",e.occurrences.length===1?"":"e"]})]}),t.jsx("td",{className:"px-4 py-3 font-medium text-zinc-900 dark:text-white",children:t.jsxs("span",{className:"inline-flex items-center gap-1.5 flex-wrap",children:[t.jsx("span",{className:e.allCancelled?"line-through decoration-red-500/70 decoration-2":"",children:e.series_label||e.lead.title}),t.jsx("span",{className:"inline-flex items-center whitespace-nowrap px-1.5 py-0.5 text-[10px] font-medium rounded-full bg-amber-100 text-amber-700 dark:bg-amber-900/30 dark:text-amber-300",children:"⺠Reihe"})]})}),t.jsx("td",{className:"px-4 py-3 hidden md:table-cell",children:t.jsx(ue,{itemId:e.lead.id,tagIds:e.lead.tags.map(r=>r.id),allTags:w,junctionTable:"event_tags",itemKey:"event_id",onChange:r=>oe(e.lead.id,r),readOnly:!c})}),t.jsx("td",{className:"px-4 py-3 text-zinc-500 dark:text-zinc-400 hidden lg:table-cell",children:e.lead.location}),c&&t.jsx("td",{className:"px-4 py-3 whitespace-nowrap sticky right-0 z-10 bg-white dark:bg-zinc-900 group-hover:bg-zinc-50 dark:group-hover:bg-zinc-800/50 shadow-[-6px_0_8px_-8px_rgba(0,0,0,0.18)]",children:t.jsxs("div",{className:"flex flex-nowrap items-center justify-end gap-2",children:[t.jsx("button",{onClick:()=>v(e.lead.id,{scope:"all"}),className:"px-3 py-1.5 text-xs font-medium text-zinc-600 dark:text-zinc-400 hover:text-zinc-900 dark:hover:text-white border border-zinc-200 dark:border-zinc-700 hover:border-zinc-300 dark:hover:border-zinc-600 rounded-md transition-colors",children:"Reihe bearbeiten"}),t.jsx("button",{onClick:()=>Re(e),disabled:O===e.series_id,className:`px-3 py-1.5 text-xs font-medium rounded-md transition-colors disabled:opacity-40 border ${e.allCancelled?"text-emerald-700 dark:text-emerald-400 border-emerald-200 dark:border-emerald-800 hover:border-emerald-300":"text-amber-700 dark:text-amber-400 border-amber-200 dark:border-amber-900 hover:border-amber-300"}`,children:O===e.series_id?"â¦":e.allCancelled?"Reihe freigeben":"Reihe absagen"}),t.jsx("button",{onClick:()=>Ee(e),disabled:F===e.series_id,className:"px-3 py-1.5 text-xs font-medium text-red-600 dark:text-red-400 hover:text-red-700 border border-red-200 dark:border-red-900 hover:border-red-300 rounded-md transition-colors disabled:opacity-40",children:F===e.series_id?"â¦":"Reihe löschen"})]})})]},e.series_id))})]})})]}):h.length===0?t.jsx("div",{className:"py-20 text-center text-zinc-400 text-sm",children:m.length===0?"N
19och keine Veranstaltungen.":x?`Am ${new Date(`${x}T12:00:00`).toLocaleDateString("de-CH",{weekday:"long",day:"2-digit",month:"long",year:"numeric"})} ist nichts erfasst.`:"Keine Treffer."}):t.jsxs("div",{className:"bg-white dark:bg-zinc-900 rounded-xl border border-zinc-200 dark:border-zinc-800 overflow-hidden",children:[t.jsx("div",{className:"px-4 py-2 border-b border-zinc-100 dark:border-zinc-800",children:f.size>0?t.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[t.jsxs("span",{className:"text-xs font-medium text-zinc-600 dark:text-zinc-300 mr-1",children:[f.size," ausgewählt"]}),c&&t.jsxs(t.Fragment,{children:[t.jsxs("select",{value:"",disabled:j!==null,onChange:e=>{const r=e.target.value;r&&qe(r==="keiner"?"":r)},title:"Bezug zum Quartierverein für alle Ausgewählten setzen",className:`${L} text-xs disabled:opacity-40`,children:[t.jsx("option",{value:"",children:"Vereinsbezug setzenâ¦"}),t.jsx("option",{value:"organisiert",children:"Vom QV organisiert"}),t.jsx("option",{value:"unterstuetzt",children:"Vom QV unterstützt"}),t.jsx("option",{value:"keiner",children:"â kein Bezug â"})]}),t.jsxs("select",{value:"",disabled:j!==null,onChange:e=>{e.target.value&&Fe(e.target.value==="rein")},title:"Ausgewählte ins Jahresprogramm aufnehmen oder daraus entfernen",className:`${L} text-xs disabled:opacity-40`,children:[t.jsx("option",{value:"",children:"Jahresprogrammâ¦"}),t.jsx("option",{value:"rein",children:"aufnehmen"}),t.jsx("option",{value:"raus",children:"entfernen"})]}),t.jsxs("select",{value:"",disabled:j!==null,onChange:e=>{const[r,s]=e.target.value.split(":");s&&Oe(s,r==="dazu"),e.target.value=""},title:"Tag für alle Ausgewählten setzen oder entfernen",className:`${L} text-xs disabled:opacity-40`,children:[t.jsx("option",{value:"",children:"Tagsâ¦"}),t.jsx("optgroup",{label:"hinzufügen",children:w.map(e=>t.jsx("option",{value:`dazu:${e.id}`,children:e.name},`d${e.id}`))}),t.jsx("optgroup",{label:"entfernen",children:w.map(e=>t.jsx("option",{value:`weg:${e.id}`,children:e.name},`w${e.id}`))})]}),t.jsx("button",{onClick:()=>{he("published")},disabled:j!==null,className:"px-3 py-1 text-xs font-medium rounded-md border border-zinc-200 dark:border-zinc-700 hover:border-emerald-400 hover:text-emerald-700 disabled:opacity-40",children:j==="status"?"â¦":"Veröffentlichen"}),t.jsx("button",{onClick:()=>{he("draft")},disabled:j!==null,className:"px-3 py-1 text-xs font-medium rounded-md border border-zinc-200 dark:border-zinc-700 hover:border-zinc-400 disabled:opacity-40",children:"In Entwurf"})]}),c&&t.jsxs("button",{onClick:Qe,disabled:ce||j!==null,title:"Endgültig löschen",className:"ml-auto inline-flex items-center gap-1.5 px-3 py-1 text-xs font-medium text-zinc-500 dark:text-zinc-400 hover:text-red-600 border border-zinc-200 dark:border-zinc-700 hover:border-red-300 rounded-md transition-colors disabled:opacity-50",children:[t.jsx("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:"M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"})}),ce?"Löschenâ¦":`${f.size} löschen`]}),t.jsx("button",{onClick:()=>N(new Set),className:"text-xs text-zinc-400 hover:text-zinc-600 dark:hover:text-zinc-300",children:"Auswahl aufheben"})]}):t.jsxs("span",{className:"text-xs text-zinc-400",children:[h.length," ",h.length===1?"Veranstaltung":"Veranstaltungen"]})}),t.jsx(fe,{children:t.jsxs("table",{className:"w-full text-sm",children:[t.jsx("thead",{children:t.jsxs("tr",{className:"border-b border-zinc-100 dark:border-zinc-800",children:[t.jsx("th",{className:"w-8 px-2 py-3"}),c&&t.jsx("th",{className:"px-4 py-3 w-10",children:t.jsx("input",{type:"checkbox",checked:me,onChange:Be,"aria-label":"Alle auswählen",className:"w-4 h-4 rounded border-zinc-300 text-red-600 focus:ring-red-500 align-middle"})}),t.jsx("th",{className:"text-left px-4 py-3 text-xs font-semibold text-zinc-400 uppercase tracking-wider",children:"Datum"}),t.jsx("th",{className:"text-left px-4 py-3 text-xs font-semibold text-zinc-400 uppercase tracking-wider",children:"Titel"}),t.jsx("th",{className:"text-left px-4 py-3 text-xs font-semibold text-zinc-400 uppercase tracking-wider hidden sm:table-cell",children:"Verein"}),c&&t.jsx("th",{className:"px-4 py-3"})]})}),t.jsx("tbody",{className:"divide-y divide-zinc-100 dark:divide-zinc-800",children:h.map(e=>{const r=4+(c?2:0),s=Ne.has(e.id);return t.jsxs(l.Fragment,{children:[t.jsxs("tr",{className:`group hover:bg-zinc-50 dark:hover:bg-zinc-800/50 ${e.date&&e.date<W?"opacity-50":""} ${f.has(e.id)?"bg-red-50/60 dark:bg-red-950/20":""}`,children:[t.jsx("td",{className:"px-2 py-3",children:t.jsx("button",{onClick:()=>ye(e.id),"aria-expanded":s,"aria-label":s?"Einzelheiten schliessen":"Einzelheiten zeigen",className:"p-1 text-zinc-400 hover:text-red-600",children:t.jsx(Pe,{"aria-hidden":!0,
19className:`w-3.5 h-3.5 transition-transform ${s?"rotate-90":""}`})})}),c&&t.jsx("td",{className:"px-4 py-3",children:t.jsx("input",{type:"checkbox",checked:f.has(e.id),onChange:()=>Le(e.id),"aria-label":`«${e.title??"Entwurf"}» auswählen`,className:"w-4 h-4 rounded border-zinc-300 text-red-600 focus:ring-red-500 align-middle"})}),t.jsx("td",{className:"px-4 py-3 text-zinc-600 dark:text-zinc-400 whitespace-nowrap",children:e.date?e.end_date&&e.end_date!==e.date?`${e.date} â ${e.end_date}`:e.date:t.jsx("span",{className:"italic text-zinc-300 dark:text-zinc-600",children:"kein Datum"})}),t.jsx("td",{className:`px-4 py-3 font-medium text-zinc-900 dark:text-white ${e.status==="cancelled"||e.status==="draft"?"opacity-60":""}`,children:t.jsxs("span",{className:"inline-flex items-center gap-1.5 flex-wrap",children:[t.jsx("span",{className:e.status==="cancelled"?"line-through decoration-red-500/70 decoration-2":"",children:e.title??t.jsx("span",{className:"italic text-zinc-400",children:"ohne Titel"})}),e.status==="cancelled"&&t.jsx("span",{className:"inline-flex items-center whitespace-nowrap px-1.5 py-0.5 text-[10px] font-semibold rounded-full bg-red-100 text-red-700 dark:bg-red-900/30 dark:text-red-300",children:"ABGESAGT"}),e.status==="draft"&&t.jsx("span",{title:"Entwurf â nicht öffentlich sichtbar",className:"inline-flex items-center whitespace-nowrap px-1.5 py-0.5 text-[10px] font-semibold rounded-full bg-zinc-200 dark:bg-zinc-700 text-zinc-700 dark:text-zinc-200",children:"ENTWURF"}),e.series_id&&t.jsx("span",{title:e.series_label?`Reihe: ${e.series_label}`:"Teil einer Reihe",className:"inline-flex items-center whitespace-nowrap px-1.5 py-0.5 text-[10px] font-medium rounded-full bg-amber-100 text-amber-700 dark:bg-amber-900/30 dark:text-amber-300",children:"⺠Reihe"})]})}),t.jsx("td",{className:"px-4 py-3 hidden sm:table-cell whitespace-nowrap",children:e.qv_role==="organisiert"?t.jsx("span",{className:"inline-flex items-center px-2 py-0.5 text-[10px] font-semibold rounded-full bg-red-100 text-red-700 dark:bg-red-900/30 dark:text-red-300",children:"QV"}):e.qv_role==="unterstuetzt"?t.jsx("span",{className:"inline-flex items-center px-2 py-0.5 text-[10px] font-semibold rounded-full bg-amber-100 text-amber-700 dark:bg-amber-900/30 dark:text-amber-300",children:"QV unterstützt"}):t.jsx("span",{className:"text-zinc-300 dark:text-zinc-600",children:"â"})}),c&&t.jsx("td",{className:"px-4 py-3 whitespace-nowrap text-right",children:t.jsx("button",{onClick:()=>v(e.id),className:"px-3 py-1.5 text-xs font-medium text-zinc-600 dark:text-zinc-400 hover:text-zinc-900 dark:hover:text-white border border-zinc-200 dark:border-zinc-700 hover:border-zinc-300 dark:hover:border-zinc-600 rounded-md transition-colors",children:"Bearbeiten"})})]}),s&&t.jsx("tr",{className:"bg-zinc-50/70 dark:bg-zinc-800/30",children:t.jsx("td",{colSpan:r,className:"px-4 pb-4 pt-1",children:t.jsxs("div",{className:"pl-8 flex flex-col gap-3",children:[t.jsxs("dl",{className:"grid gap-x-6 gap-y-1.5 sm:grid-cols-2 text-[13px]",children:[t.jsxs("div",{className:"flex gap-2",children:[t.jsx("dt",{className:"w-24 shrink-0 text-zinc-400",children:"Ort"}),t.jsx("dd",{className:"text-zinc-700 dark:text-zinc-300",children:e.location||"â"})]}),t.jsxs("div",{className:"flex gap-2",children:[t.jsx("dt",{className:"w-24 shrink-0 text-zinc-400",children:"Veranstalter"}),t.jsx("dd",{className:"text-zinc-700 dark:text-zinc-300",children:e.organizer||"â"})]}),t.jsxs("div",{className:"flex gap-2",children:[t.jsx("dt",{className:"w-24 shrink-0 text-zinc-400",children:"Anmeldung"}),t.jsx("dd",{children:e.registration_url?.trim()?t.jsx("a",{href:e.registration_url,target:"_blank",rel:"noopener noreferrer",className:"text-red-600 hover:underline break-all",children:e.registration_url}):t.jsx("span",{className:"text-zinc-400",children:"keine"})})]}),t.jsxs("div",{className:"flex gap-2",children:[t.jsx("dt",{className:"w-24 shrink-0 text-zinc-400",children:"Koordinaten"}),t.jsx("dd",{className:"text-zinc-700 dark:text-zinc-300",children:e.lat!=null&&e.lng!=null?`${e.lat}, ${e.lng}`:t.jsx("span",{className:"text-amber-700 dark:text-amber-400",children:"fehlen"})})]}),e.series_id&&t.jsxs("div",{className:"flex gap-2",children:[t.jsx("dt",{className:"w-24 shrink-0 text-zinc-400",children:"Reihe"}),t.jsx("dd",{className:"text-zinc-700 dark:text-zinc-300",children:e.series_label??"ohne Namen"})]}),t.jsxs("div",{className:"flex gap-2 sm:col-span-2",children:[t.jsx("dt",{className:"w-24 shrink-0 text-zinc-400 pt-1",children:"Tags"}),t.jsx("dd",{className:"min-w-0",children:t.jsx(ue,{itemId:e.id,tagIds:e.tags.map(i=>i.id),allTags:w,junctionTable:"event_tags",itemKey:"event_id",onChange:i=>oe(e.id,i),readOnly:!c})})]})]}),c&&t.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[t.jsx("button",{onClick:()=>v(e.id),className:"px-3 py-1.5 text-xs font-medium text-zinc-600 dark:text-zinc-400 hover:text-zinc-900 dark:hover:text-white border border-zinc-200 dark:border-zinc-700 hover:border-zinc-300 dark:hover:border-zinc-600 rounded-md transition-colors",children:"Bearbeiten"}),t.jsx("button",{onClick:()=>Ve(e.id),disabled:se===e.id,title:"Duplizieren (als Entwurf)","aria-label":"Duplizieren",className:"p-1.5 text-zinc-500 dark:text-zinc-400 hover:text-zinc-900 dark:hover:text-white border border-zinc-200 dark:border-zinc-700 hover:border-zinc-300 dark:hover:border-zinc-600 rounded-md transition-colors disabled:opacity-40",children:se===e.id?t.jsxs("svg",{className:"w-3.5 h-3.5 animate-spin",fill:"none",viewBox:"0 0 24 24",children:[t.jsx("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),t.jsx("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8v8z"})]}):t.jsx("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:"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z"})})}
19),e.status!=="cancelled"&&t.jsx("button",{onClick:()=>Te(e.id,e.status),disabled:ie===e.id,title:e.status==="draft"?"Veröffentlichen":"In Entwurf nehmen â verschwindet von der Website",className:`px-3 py-1.5 text-xs font-medium rounded-md transition-colors disabled:opacity-40 border ${e.status==="draft"?"text-emerald-700 dark:text-emerald-400 border-emerald-200 dark:border-emerald-800 hover:border-emerald-300":"text-zinc-600 dark:text-zinc-400 border-zinc-200 dark:border-zinc-700 hover:border-zinc-300 dark:hover:border-zinc-600"}`,children:ie===e.id?"â¦":e.status==="draft"?"Veröffentlichen":"Entwurf"}),e.status!=="draft"&&t.jsx("button",{onClick:()=>De(e.id,e.title??"Entwurf",e.status),disabled:O===e.id,className:`px-3 py-1.5 text-xs font-medium rounded-md transition-colors disabled:opacity-40 border ${e.status==="cancelled"?"text-emerald-700 dark:text-emerald-400 border-emerald-200 dark:border-emerald-800 hover:border-emerald-300":"text-amber-700 dark:text-amber-400 border-amber-200 dark:border-amber-900 hover:border-amber-300"}`,children:O===e.id?"â¦":e.status==="cancelled"?"Wieder freigeben":"Absagen"}),t.jsx("button",{onClick:()=>Se(e.id,e.title??"Entwurf"),disabled:F===e.id,className:"px-3 py-1.5 text-xs font-medium text-red-600 dark:text-red-400 hover:text-red-700 border border-red-200 dark:border-red-900 hover:border-red-300 rounded-md transition-colors disabled:opacity-40",children:F===e.id?"â¦":"Löschen"})]})]})})})]},e.id)})})]})})]})]})}export{at as AdminEvents};
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.