1import{a as k,j as e}from"./trpc-vendor-Bta84Nsh.js";import{t as N,B as y,I as _,C as $,h as H}from"./index-_3-B0itT.js";import{t as m,M as W,j as I,aj as T,a$ as L,ap as U,_ as G,w as Z,ag as Q,Y as O}from"./ui-vendor-NEZNvIbV.js";import{T as J,a as Y,b as B,c as F}from"./tabs-YRkpqMYJ.js";import{n as q,D as X}from"./controlChecklists-D9SK4nz8.js";import"./react-vendor-DpXpH6G7.js";const ee=[["low","Niedrig"],["medium","Mittel"],["high","Hoch"],["urgent","Dringend"]],se=[["","Kampagnen-Zuständige"],["admin","Admin / Leitung"],["marketing","Marketing"],["assistant","Assistenz"],["grafiker","Grafiker"],["videograf","Videograf"],["cutter","Cutter"],["partner","Partner"]];function te(){const{data:l=null,refetch:f,isLoading:A}=N.campaignPlanner.getDefaultTodos.useQuery(void 0,{staleTime:6e4}),c=N.campaignPlanner.setDefaultTodos.useMutation({onSuccess:()=>{f(),m.success("Kampagnen-Vorlage gespeichert")},onError:r=>m.error(r?.message??"Fehler")}),[b,u]=k.useState([]);k.useEffect(()=>{l&&Array.isArray(l)&&u(l.map(r=>({title:r.title??"",offsetDays:Number(r.offsetDays)||0,priority:["low","medium","high","urgent"].includes(r.priority)?r.priority:"medium",fromEnd:!!r.fromEnd,assignedRole:r.assignedRole??""})))},[l]);const g=(r,n)=>u(d=>d.map((j,E)=>E===r?{...j,...n}:j)),C=()=>u(r=>[...r,{title:"Neue Aufgabe",offsetDays:-7,priority:"medium",fromEnd:!1,assignedRole:""}]),o=r=>u(n=>n.filter((d,j)=>j!==r)),v=()=>{const r=b.map(n=>({title:n.title.trim(),offsetDays:Number(n.offsetDays)||0,priority:n.priority,fromEnd:!!n.fromEnd,assignedRole:n.assignedRole?n.assignedRole:null})).filter(n=>n.title.length>0);if(!r.length){m.error("Mindestens eine Aufgabe nötig.");return}c.mutate({items:r})};return e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex flex-wrap items-start justify-between gap-3",children:[e.jsxs("div",{children:[e.jsxs("h2",{className:"text-lg font-bold text-foreground flex items-center gap-2",children:[e.jsx(W,{className:"w-5 h-5 text-primary"})," Kampagnen-Aufgaben"]}),e.jsxs("p",{className:"text-sm text-muted-foreground mt-1 max-w-2xl",children:["Diese To-dos befüllen ",e.jsx("strong",{className:"text-foreground",children:"jede neue Kampagne"})," automatisch. Ãber ",e.jsx("strong",{className:"text-foreground",children:'âRolle"'})," wird jede Aufgabe beim Kampagnenstart automatisch an die passende Person delegiert.",e.jsx("br",{}),e.jsx("span",{className:"text-xs",children:'Zeitpunkt: negative Tage = vor Start, positive = nach Start. âab Ende" = bezogen aufs Kampagnenende (z.B. Closeout).'})]})]}),e.jsxs("div",{className:"flex gap-2 shrink-0",children:[e.jsxs(y,{variant:"outline",onClick:C,className:"gap-1.5",children:[e.jsx(I,{className:"w-4 h-4"})," Aufgabe"]}),e.jsxs(y,{onClick:v,disabled:c.isPending,className:"gap-1.5",children:[c.isPending?e.jsx(T,{className:"w-4 h-4 animate-spin"}):e.jsx(L,{className:"w-4 h-4"})," Vorlage speichern"]})]})]}),A?e.jsxs("div",{className:"text-sm text-muted-foreground flex items-center gap-2",children:[e.jsx(T,{className:"w-4 h-4 animate-spin"})," lädtâ¦"]}):e.jsxs("div",{className:"space-y-2",children:[b.length===0&&e.jsx("div",{className:"text-sm text-muted-foreground italic",children:'â noch keine Aufgaben. âAufgabe" klicken. â'}),b.map((r,n)=>e.jsxs("div",{className:"rounded-lg border border-border bg-card p-2.5 flex flex-wrap items-center gap-2",children:[e.jsx(_,{value:r.title,onChange:d=>g(n,{title:d.target.value}),placeholder:"Aufgabeâ¦",className:"flex-1 min-w-[220px] text-foreground"}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(_,{type:"number",value:r.offsetDays,onChange:d=>g(n,{offsetDays:Number(d.target.value)}),className:"w-16 text-foreground",title:"Tage vor(-)/nach(+)"}),e.jsx("span",{className:"text-xs text-muted-foreground",children:"Tage"})]}),e.jsxs("label",{className:"flex items-center gap-1 text-xs text-foreground cursor-pointer select-none",children:[e.jsx("input",{type:"checkbox",checked:!!r.fromEnd,onChange:d=>g(n,{fromEnd:d.target.checked})})," ab Ende"]}),e.jsx("select",{value:r.priority,onChange:d=>g(n,{priority:d.target.value}),className:"h-9 rounded-md border border-border bg-background text-foreground text-sm px-2",children:ee.map(([d,j])=>e.jsx("option",{value:d,children:j},d))}),e.jsx("select",{value:r.assignedRole??"",onChange:d=>g(n,{assignedRole:d.target.value}),className:"h-9 rounded-md border border-border bg-background text-foreground text-sm px-2",title:"Automatisch delegieren anâ¦",children:se.map(([d,j])=>e.jsx("option",{value:d,children:j},d))}),e.jsx(y,{size:"sm",variant:"ghost",onClick:()=>o(n),className:"h-9 text-red-500 shrink-0 px-2",title:"Entfernen",children:e.jsx(U,{className:"w-4 h-4"})})]},n))]})]})}const ae=["Hook in die Kamera (Coach/Inhaber) â Sprechtext siehe Intro · 15â20 Sek. · 2 Takes","Angebots-Ansage: Was, wie lange, für wen · 15 Sek.","Trainingsfläche mit Betrieb (B-Roll) · 3â4 kurze Schwenks à 5 Sek.","Mitglied-Testimonial · 20 Sek. · Einverständnis abfragen · WICHTIG: Frage IN die Antwort einbauen (Frage wird rausgeschnitten) â statt â5 Jahreâ â âIch trainiere seit 5 Jahren hier â¦â · leicht seitlich · 2 Anläufe","Team/Empfang â BegrüÃungs-Moment · 10 Sek.","AuÃenansicht + Logo · 5 Sek."],ne="Hochkant 9:16 · neuestes Handy · Fenster vor dir (kein Gegenlicht) · ruhige Hand oder anlehnen · Originaldateien hochladen (nicht per WhatsApp) · kurz & knackig, auf die USPs fokussiert · je nach Studio-Typ die passenden USPs betonen (Fitness = Preis/24-7/Flexibilität · Gesundheit = Betreuung/Prävention · CrossFit = Community/Coaches)",re=`Ziel: Leads über Meta-Ads. Kernbotschaft (muss
1in jedem Video fallen): [Angebot]. 2Sprechtexte in eigenen Worten, nicht ablesen. Jeden Text 2â3à aufnehmen.`;function ie(){const{data:l=null,refetch:f,isLoading:A}=N.campaignPlanner.getDefaultVideoBriefing.useQuery(void 0,{staleTime:6e4}),c=N.campaignPlanner.setDefaultVideoBriefing.useMutation({onSuccess:()=>{f(),m.success("Standard-Video-Briefing gespeichert")},onError:n=>m.error(n?.message??"Fehler")}),[b,u]=k.useState(""),[g,C]=k.useState(""),[o,v]=k.useState("");k.useEffect(()=>{u(l?.intro&&l.intro.length?l.intro:re),C(Array.isArray(l?.shots)&&l.shots.length?l.shots.join(` 3`):ae.join(` 4`)),v(l?.rules&&l.rules.length?l.rules:ne)},[l]);const r=()=>c.mutate({intro:b.trim(),shots:g.split(` 5`).map(n=>n.trim()).filter(Boolean),rules:o.trim()});return e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex flex-wrap items-start justify-between gap-3",children:[e.jsxs("div",{children:[e.jsxs("h2",{className:"text-lg font-bold text-foreground flex items-center gap-2",children:[e.jsx(G,{className:"w-5 h-5 text-primary"})," Standard-Video-Briefing"]}),e.jsxs("p",{className:"text-sm text-muted-foreground mt-1 max-w-2xl",children:["Diese Vorlage befüllt den ",e.jsx("strong",{className:"text-foreground",children:"Video-Tab jeder neuen Kampagne"}),". Struktur bleibt immer gleich â nur der Inhalt wird pro Kampagne angepasst. Testimonials: die Frage in die Antwort einbauen, kurz & knackig, USP-orientiert."]})]}),e.jsxs(y,{onClick:r,disabled:c.isPending,className:"gap-1.5 shrink-0",children:[c.isPending?e.jsx(T,{className:"w-4 h-4 animate-spin"}):e.jsx(L,{className:"w-4 h-4"})," Vorlage speichern"]})]}),A?e.jsxs("div",{className:"text-sm text-muted-foreground flex items-center gap-2",children:[e.jsx(T,{className:"w-4 h-4 animate-spin"})," lädtâ¦"]}):e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("label",{className:"text-xs font-semibold text-foreground",children:"Intro / Sprechtext-Rahmen"}),e.jsx("textarea",{value:b,onChange:n=>u(n.target.value),rows:3,className:"w-full mt-1 text-sm rounded-md border border-border bg-background text-foreground px-3 py-2 resize-y",placeholder:"Ziel, Kernbotschaft, Sprechtext-Hinweiseâ¦"})]}),e.jsxs("div",{children:[e.jsxs("label",{className:"text-xs font-semibold text-foreground",children:["Shotliste ",e.jsx("span",{className:"text-muted-foreground font-normal",children:"(eine Zeile pro Aufnahme)"})]}),e.jsx("textarea",{value:g,onChange:n=>C(n.target.value),rows:8,className:"w-full mt-1 text-sm rounded-md border border-border bg-background text-foreground px-3 py-2 resize-y font-mono leading-relaxed",placeholder:"Eine Aufnahme pro Zeileâ¦"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-xs font-semibold text-foreground",children:"Formatregeln"}),e.jsx("textarea",{value:o,onChange:n=>v(n.target.value),rows:3,className:"w-full mt-1 text-sm rounded-md border border-border bg-background text-foreground px-3 py-2 resize-y",placeholder:"Format, Licht, USP-Fokus je Typâ¦"})]})]})]})}function le(){const{data:l=null,refetch:f,isLoading:A}=N.tasks.getControlChecklists.useQuery(void 0,{staleTime:6e4}),c=N.tasks.setControlChecklists.useMutation({onSuccess:()=>{f(),m.success("Kontroll-Checklisten gespeichert")},onError:t=>m.error(t?.message??"Fehler")}),[b,u]=k.useState([]);k.useEffect(()=>{u(q(l))},[l]);const g=(t,i)=>u(p=>p.map((x,P)=>P===t?{...x,...i}:x)),C=t=>g(t,{items:[...b[t].items,"Neuer Prüfpunkt"]}),o=(t,i,p)=>g(t,{items:b[t].items.map((x,P)=>P===i?p:x)}),v=(t,i)=>g(t,{items:b[t].items.filter((p,x)=>x!==i)}),r=()=>u(t=>[...t,{id:`typ-${Date.now().toString().slice(-5)}`,label:"Neuer Typ",keywords:[],items:["Neuer Prüfpunkt"]}]),n=t=>{if(b.length<=1){m.error("Mindestens ein Typ nötig.");return}u(i=>i.filter((p,x)=>x!==t))},d=t=>u(i=>i.map((p,x)=>({...p,isDefault:x===t}))),j=()=>{const t=b.map(i=>({id:(i.id||i.label||"typ").trim().slice(0,40)||"typ",label:(i.label||"Typ").trim().slice(0,60)||"Typ",keywords:(i.keywords||[]).map(p=>p.trim()).filter(Boolean),items:(i.items||[]).map(p=>p.trim()).filter(Boolean),isDefault:!!i.isDefault})).filter(i=>i.label);!t.some(i=>i.isDefault)&&t.length&&(t[t.length-1].isDefault=!0),c.mutate({types:t})},E=()=>{confirm("Auf die Standard-Typen zurücksetzen?")&&u(X.map(t=>
5({...t,items:[...t.items],keywords:[...t.keywords]})))};return e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex flex-wrap items-start justify-between gap-3",children:[e.jsxs("div",{children:[e.jsxs("h2",{className:"text-lg font-bold text-foreground flex items-center gap-2",children:[e.jsx(Z,{className:"w-5 h-5 text-primary"})," Kontroll-Checklisten"]}),e.jsxs("p",{className:"text-sm text-muted-foreground mt-1 max-w-2xl",children:["Eigene Typen mit ",e.jsx("strong",{className:"text-foreground",children:"Stichwörtern"}),": Passt ein Stichwort zum Aufgaben-Titel, greift automatisch dieser Typ. Die Punkte erscheinen beim ",e.jsx("strong",{className:"text-foreground",children:"Kontrollieren"})," â abgehakt durch Admin/Marketing-Lead, bevor freigegeben wird. Der ",e.jsx("strong",{className:"text-foreground",children:"Standard-Typ"})," gilt, wenn kein Stichwort passt."]})]}),e.jsxs("div",{className:"flex gap-2 shrink-0",children:[e.jsx(y,{onClick:E,variant:"outline",className:"gap-1.5",children:"Zurücksetzen"}),e.jsxs(y,{onClick:j,disabled:c.isPending,className:"gap-1.5",children:[c.isPending?e.jsx(T,{className:"w-4 h-4 animate-spin"}):e.jsx(L,{className:"w-4 h-4"})," Speichern"]})]})]}),A?e.jsxs("div",{className:"text-sm text-muted-foreground flex items-center gap-2",children:[e.jsx(T,{className:"w-4 h-4 animate-spin"})," lädtâ¦"]}):e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[b.map((t,i)=>e.jsxs("div",{className:`rounded-xl border p-4 ${t.isDefault?"border-primary/50 bg-primary/[0.03]":"border-border bg-card"}`,children:[e.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[e.jsx("input",{value:t.label,onChange:p=>g(i,{label:p.target.value}),className:"flex-1 h-8 rounded-md border border-border bg-background text-foreground text-sm font-bold px-2",placeholder:"Typ-Name (z.B. Posting)"}),e.jsx("button",{onClick:()=>d(i),title:t.isDefault?"Standard-Typ":"Als Standard setzen",className:`shrink-0 px-1 ${t.isDefault?"text-amber-500":"text-muted-foreground hover:text-amber-500"}`,children:e.jsx(Q,{className:`w-4 h-4 ${t.isDefault?"fill-amber-500":""}`})}),e.jsx("button",{onClick:()=>n(i),className:"text-red-500 shrink-0 px-1",title:"Typ löschen",children:e.jsx(U,{className:"w-4 h-4"})})]}),e.jsx("label",{className:"text-[11px] font-semibold text-muted-foreground",children:"Stichwörter (Komma-getrennt) â greifen im Aufgaben-Titel"}),e.jsx("input",{value:(t.keywords||[]).join(", "),onChange:p=>g(i,{keywords:p.target.value.split(",").map(x=>x.trim())}),className:"w-full h-8 rounded-md border border-border bg-background text-foreground text-xs px-2 mt-1 mb-1",placeholder:"z.B. posting, reel, story"}),t.isDefault&&e.jsx("div",{className:"text-[10px] text-amber-600 dark:text-amber-400 mb-1",children:"â
Standard â gilt, wenn kein Stichwort passt (Stichwörter optional)"}),e.jsx("div",{className:"text-[11px] font-semibold text-muted-foreground mt-2 mb-1",children:"Prüfpunkte"}),e.jsx("div",{className:"space-y-1.5",children:(t.items??[]).map((p,x)=>e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx("span",{className:"text-blue-500 text-xs shrink-0",children:"â"}),e.jsx("input",{value:p,onChange:P=>o(i,x,P.target.value),className:"flex-1 h-8 rounded-md border border-border bg-background text-foreground text-xs px-2"}),e.jsx("button",{onClick:()=>v(i,x),className:"text-red-500 shrink-0 px-1",title:"Entfernen",children:e.jsx(U,{className:"w-3.5 h-3.5"})})]},x))}),e.jsxs("button",{onClick:()=>C(i),className:"mt-2 text-xs text-primary font-medium inline-flex items-center gap-1",children:[e.jsx(I,{className:"w-3.5 h-3.5"})," Prüfpunkt"]})]},i)),e.jsxs("button",{onClick:r,className:"rounded-xl border-2 border-dashed border-border text-muted-foreground hover:border-primary hover:text-primary transition-colors min-h-[120px] flex flex-col items-center justify-center gap-1.5 text-sm font-medium",children:[e.jsx(I,{className:"w-6 h-6"})," Neuen Typ anlegen"]})]})]})}const oe=["studio_owner","studio_team","assistant","admin","grafiker","videograf","cutter","partner"],de={
5studio_owner:"Inhaber",studio_team:"Studio-Team",assistant:"Assistenz",admin:"Admin",grafiker:"Grafiker",videograf:"Videograf",cutter:"Cutter",partner:"Partner"},ce=["low","normal","high","critical"],ue={low:"Niedrig",normal:"Normal",high:"Hoch",critical:"Kritisch"},R=["Studiophase","Set Up","Vorbereitung","Kampagnenstart"],z="Ohne Phase";function Ne(){const{data:l=[],refetch:f,isLoading:A}=N.onboarding.templateList.useQuery(),c=N.onboarding.templateUpsert.useMutation({onSuccess:()=>{f()},onError:s=>m.error(s.message)}),b=N.onboarding.templateDelete.useMutation({onSuccess:()=>{f(),m.success("Aufgabe entfernt")},onError:s=>m.error(s.message)}),u=N.onboarding.seedDefaultTemplates.useMutation({onSuccess:s=>{f(),m.success(s?.added>0?`${s.added} Standard-Aufgabe(n) ergänzt`:"Alle Standard-Aufgaben sind bereits vorhanden")},onError:s=>m.error(s.message)}),{data:g=[]}=N.brands.list.useQuery(void 0,{staleTime:5*6e4}),{data:C=[]}=N.users.list.useQuery(void 0,{staleTime:5*6e4}),[o,v]=k.useState(""),[r,n]=k.useState(""),d=N.onboarding.createTaskForBrand.useMutation({onSuccess:s=>{s?.alreadyExisted?m.info("Für dieses Studio gibt es die Onboarding-Aufgabe bereits."):m.success(`Onboarding-Aufgabe angelegt (${s?.subtaskCount??0} Unteraufgaben) â jetzt unter âAufgaben" sichtbar.`)},onError:s=>m.error(s.message)}),[j,E]=k.useState([]);k.useEffect(()=>{E(l.map(s=>({id:s.id,title:s.title,description:s.description,category:s.category,phase:s.phase??null,assignedRole:s.assignedRole,assignedUserId:s.assignedUserId!=null?Number(s.assignedUserId):null,dueOffsetDays:Number(s.dueOffsetDays),priority:s.priority,sortOrder:Number(s.sortOrder),isActive:s.isActive===1||s.isActive===!0})))},[l]);const t=(s,h)=>E(w=>w.map((a,S)=>S===s?{...a,...h}:a)),i=s=>({id:s.id,title:s.title.trim(),description:s.description??null,category:s.category,phase:s.phase||null,assignedRole:s.assignedRole||null,assignedUserId:s.assignedUserId??null,dueOffsetDays:s.dueOffsetDays,priority:s.priority,sortOrder:s.sortOrder,isActive:s.isActive}),p=s=>c.mutate(i(s)),x=(s,h)=>E(w=>{const a=w.map((D,V)=>V===s?{...D,...h}:D),S=a[s];return S?.id&&c.mutate(i(S),{onSuccess:()=>m.success("Zuweisung gespeichert")}),a}),P=s=>c.mutate({title:"Neue Aufgabe",description:null,category:"sonstiges",phase:s??null,assignedRole:"assistant",dueOffsetDays:-7,priority:"normal",sortOrder:j.length,isActive:!0},{onSuccess:()=>f()}),M=N.onboarding.bulkInternalToAssistant.useMutation({onSuccess:s=>{f(),m.success(s?.changed>0?`${s.changed} interne Punkte auf Assistenz gestellt`:"Alle internen Punkte waren schon der Assistenz zugewiesen")},onError:s=>m.error(s.message)}),K=(s,h)=>{const w=s.assignedRole==="studio_owner"||s.assignedRole==="studio_team";return e.jsxs("div",{className:`rounded-lg border ${w?"border-emerald-500/40":"border-border"} ${s.isActive?"bg-card":"bg-muted/30 opacity-70"} p-2 space-y-1.5`,children:[e.jsxs("div",{className:"flex items-center gap-1.5 flex-wrap",children:[e.jsxs("button",{type:"button",onClick:()=>x(h,{assignedRole:w?"assistant":"studio_owner"}),title:"Umschalten: sieht das Studio diese Aufgabe (Studio) oder ist sie intern?",className:`shrink-0 text-[9px] font-bold rounded px-1.5 py-0.5 cursor-pointer hover:opacity-75 ${w?"bg-emerald-500/15 text-emerald-600":"bg-blue-500/15 text-blue-600"}`,children:[w?"ð¢ Studio":"intern"," â"]}),e.jsx(_,{value:s.title,onChange:a=>t(h,{title:a.target.value}),className:"flex-1 min-w-[160px] h-8 text-sm font-medium",placeholder:"Unteraufgabe"}),e.jsxs("select",{value:s.phase??"",onChange:a=>t(h,{phase:a.target.value||null}),className:"h-8 text-xs rounded-md border border-border bg-background px-1.5 shrink-0",title:"Phase",children:[e.jsx("option",{value:"",children:"â Phase â"}),R.map(a=>e.jsx("option",{value:a,children:a},a))]}),e.jsxs("select",{value:s.assignedRole??"",onChange:a=>x(h,{assignedRole:a.target.value}),className:"h-8 text-xs rounded-md border border-border bg-background text-foreground px-1.5 shrink-0",title:"Welche Rolle macht's",children:[e.jsx("option",{value:"",children:"â egal â"}),oe.map(a=>e.jsx("option",{value:a,children:de[a]??a},a))]}),e.jsxs("select",{value:s.assignedUserId??"",onChange:a=>x(h,{assignedUserId:a.target.value?Number(a.target.value):null}),className:"h-8 text-xs rounded-md border border-border bg-background text-foreground px-1.5 shrink-0",title:"Feste Person (überschreibt Rolle) â Aufgabe landet direkt in ihrer Aufgabenliste",children:[e.jsx("option",{value:"",children:"â Person: auto (Rolle) â"}),C.map(a=>e.jsx("option",{value:a.id,children:a.name||a.email||`#${a.id}`},a.id))]}),e.jsx("input",{type:"number",value:s.dueOffsetDays,onChange:a=>t(h,{dueOffsetDays:parseInt(a.target.value)||0}),className:"h-8 w-14 text-xs rounded-md border border-border bg-background text-foreground px-1.5 shrink-0",title:"Fällig: Tage vor Go-Live"}),e.jsx("select",{value:s.priority,onChange:a=>t(h,{priority:a.target.value}),className:"h-8 text-xs rounded-md border border-border bg-background text-foreground px-1.5 shrink-0",title:"Priorität",children:ce.map(a=>e.jsx("option",{value:a,children:ue[a]??a},a))}),e.jsx("label",{className:"flex items-center gap-1 text-xs text-muted-foreground shrink-0 cursor-pointer",title:"Aktiv",children:e.jsx("input",{type:"checkbox",checked:s.isActive,onChange:a=>t(h,{isActive:a.target.checked})})}),e.jsx(y,{size:"sm",variant:"outline",onClick:()=>p(s),disabled:c.isPending,className:"h-8 gap-1 shrink-0 px-2",title:"Speichern",children:e.jsx(L,{className:"w-3.5 h-3.5"})}),e.jsx(y,{size:"sm",variant:"ghost",onClick:()=>s.id&&b.mutate({id:s.id}),className:"h-8 text-red-500 shrink-0 px-2",title:"Löschen",children:e.jsx(U,{className:"w-4 h-4"})})]}),e.jsx("textarea",{value:s.description??"",onChange:a=>t(h,{description:a.target.value}),rows:1,placeholder:"Beschreibung (optional)",className:"w-full text-xs rounded-md border border-border bg-background px-2 py-1 resize-y"})]},s.id??h)};
5return e.jsxs("div",{className:"p-6 max-w-4xl mx-auto space-y-4",children:[e.jsxs("h1",{className:"text-2xl font-bold flex items-center gap-2 text-foreground",children:[e.jsx(O,{className:"w-6 h-6 text-primary"})," Aufgaben-Vorlagen"]}),e.jsxs("p",{className:"text-sm text-muted-foreground",children:["Welche Aufgaben bei einem ",e.jsx("strong",{className:"text-foreground",children:"Onboarding"})," und bei einer ",e.jsx("strong",{className:"text-foreground",children:"neuen Kampagne"})," automatisch entstehen â plus das ",e.jsx("strong",{className:"text-foreground",children:"Standard-Video-Briefing"}),". Alles hier an einem Ort pflegbar."]}),e.jsxs(J,{defaultValue:"onboarding",children:[e.jsxs(Y,{children:[e.jsx(B,{value:"onboarding",children:"Onboarding-Aufgaben"}),e.jsx(B,{value:"kampagne",children:"Kampagnen-Aufgaben"}),e.jsx(B,{value:"video",children:"Video-Briefing"}),e.jsx(B,{value:"kontrolle",children:"Kontroll-Checklisten"})]}),e.jsxs(F,{value:"onboarding",className:"space-y-4 mt-4",children:[e.jsxs("div",{className:"flex items-start justify-between gap-3 flex-wrap",children:[e.jsxs("div",{children:[e.jsxs("h1",{className:"text-2xl font-bold flex items-center gap-2",children:[e.jsx(O,{className:"w-6 h-6 text-primary"})," Onboarding-Checkliste"]}),e.jsxs("p",{className:"text-sm text-muted-foreground mt-1 max-w-2xl",children:["Die Master-Liste fürs Studio-Onboarding â einmal definieren, beliebig ergänzen. Sie wird beim Onboarding automatisch als abhakbare Aufgabenliste erzeugt. Ãber ",e.jsx("strong",{children:'âRolle"'}),' steuerst du, wer eine Aufgabe sieht: Studio-Rollen (Inhaber/Team) sehen nur ihre eigenen Punkte, der Rest bleibt intern. âFällig (Tage)" = relativ zum Go-Live (â14 = 14 Tage vorher, 0 = am Go-Live-Tag).']})]}),e.jsxs("div",{className:"flex items-center gap-2 flex-wrap",children:[e.jsxs(y,{variant:"outline",onClick:()=>M.mutate(),disabled:M.isPending,className:"gap-1.5",children:[M.isPending?e.jsx(T,{className:"w-4 h-4 animate-spin"}):null," Alle internen â Assistenz"]}),e.jsxs(y,{variant:"outline",onClick:()=>u.mutate(),disabled:u.isPending,className:"gap-1.5",children:[u.isPending?e.jsx(T,{className:"w-4 h-4 animate-spin"}):e.jsx(O,{className:"w-4 h-4"})," Standard-Aufgaben laden"]})]})]}),e.jsxs("div",{className:"rounded-lg border border-border bg-muted/20 p-3 flex items-center gap-2 flex-wrap",children:[e.jsx("span",{className:"text-sm text-foreground font-medium",children:"Onboarding-Aufgabe für ein Studio anlegen:"}),e.jsxs("select",{value:o,onChange:s=>v(s.target.value),className:"h-9 text-sm rounded-md border border-border bg-background px-2 min-w-[200px]",children:[e.jsx("option",{value:"",children:"Studio wählenâ¦"}),g.map(s=>e.jsx("option",{value:s.id,children:s.studioName||s.name},s.id))]}),e.jsxs("label",{className:"flex items-center gap-1.5 text-xs text-muted-foreground",children:["Frist bis",e.jsx("input",{type:"date",value:r,onChange:s=>n(s.target.value),className:"h-9 text-sm rounded-md border border-border bg-background px-2"})]}),e.jsxs(y,{variant:"outline",disabled:!o||d.isPending,onClick:()=>d.mutate({brandId:Number(o),deadline:r?new Date(r+"T12:00:00").getTime():null}),className:"gap-1.5",children:[d.isPending?e.jsx(T,{className:"w-4 h-4 animate-spin"}):e.jsx(O,{className:"w-4 h-4"})," Jetzt anlegen"]}),e.jsx("span",{className:"text-xs text-muted-foreground",children:'Neue Marken bekommen sie automatisch (Frist: +30 Tage). Erscheint als 1 aufklappbare Aufgabe mit Unteraufgaben unter âAufgaben".'})]}),o?e.jsx(ge,{brandId:Number(o)}):null,A?e.jsx("p",{className:"text-sm text-muted-foreground",children:"Ladeâ¦"}):e.jsx($,{children:e.jsxs(H,{className:"py-4 space-y-2.5",children:[e.jsxs("div",{className:"flex items-center gap-2 pb-2.5 border-b border-border",children:[e.jsx(O,{className:"w-5 h-5 text-primary shrink-0"}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("div",{className:"text-base font-bold text-foreground",children:"ð Onboarding: [Studio]"}),e.jsxs("div",{className:"text-xs text-muted-foreground",children:["So wird die Aufgabe angelegt â ",j.length," Unteraufgabe",j.length===1?"":"n",". ð¢ = Studio sieht sie, sonst intern."]})]}),e.jsxs(y,{size:"sm",onClick:P,disabled:c.isPending,className:"gap-1.5 shrink-0",children:[e.jsx(I,{className:"w-4 h-4"})," Unteraufgabe"]})]}),j.length===0?e.jsx("div",{className:"text-center text-sm text-muted-foreground py-6",children:'Noch keine Unteraufgaben â âStandard-Aufgaben laden" oder âUnteraufgabe" klicken.'}):[...R,z].map(s=>{const h=j.map((S,D)=>({r:S,i:D})).filter(({r:S})=>s===z?!S.phase||!R.includes(S.phase):S.phase===s);if(s===z&&h.length===0)return null;const w=R.indexOf(s),a=w>=0&&w<R.length-1;return e.jsxs("div",{className:"space-y-1.5",children:[e.jsxs("div",{className:"flex items-center gap-2 pt-2",children:[e.jsx("span",{className:"text-xs font-bold uppercase tracking-wide text-primary whitespace-nowrap",children:s===z?"Ohne Phase":`Phase ${w+1} · ${s}`}),e.jsxs("span",{className:"text-[10px] text-muted-foreground whitespace-nowrap",children:[h.length," Punkt",h.length===1?"":"e"]}),a&&e.jsxs("span",{className:"text-[10px] text-muted-foreground whitespace-nowrap hidden sm:inline",children:["â muss fertig sein, bevor â",R[w+1],'" startet']}),e.jsx("div",{className:"flex-1 h-px bg-border"}),e.jsxs(y,{size:"sm",variant:"ghost",onClick:()=>P(s===z?void 0:s),disabled:c.isPending,className:"h-6 text-xs gap-1 shrink-0",children:[e.jsx(I,{className:"w-3 h-3"})," Punkt"]})]}),h.length===0?e.jsx("div",{className:"text-[11px] text-muted-foreground italic pl-1",children:"â noch leer â"}):h.map(({r:S,i:D})=>K(S,D))]},s)})]})})]}),e.jsx(F,{value:"kampagne",className:"mt-4",children:e.jsx(te,{})}),e.jsx(F,{value:"video",className:"mt-4",children:e.jsx(ie,{})}),e.jsx(F,{value:"kontrolle",className:"mt-4",children:e.jsx(le,{})})]})]})}const me=[{key:"instant_form",label:"Meta Instant-Formular"},{key:"website",label:"Website / Landingpage"},{key:"closeout",label:"Closeout-Mails"},{key:"retargeting",label:"Retargeting"},{key:"google",label:"Google Ads"},{key:"organic",label:"Organisch / Social"}];function ge({brandId:l}){const f=N.brands.getAdSetup.useQuery({brandId:l},{staleTime:1e4}),[A,c]=k.useState([]),[b,u]=k.useState("");k.useEffect(()=>{f.data&&(c(f.data.channels??[]),u(f.data.note??""))},[f.data,l]);const g=N.brands.setAdSetup.useMutation({onSuccess:()=>{f.refetch?.(),m.success("Werbe-Setup gespeichert â steht künftig in der Onboarding-Aufgabe.")},onError:o=>m.error(o.message)}
5),C=o=>c(v=>v.includes(o)?v.filter(r=>r!==o):[...v,o]);return e.jsxs("div",{className:"rounded-lg border border-primary/40 bg-primary/5 p-3 space-y-2",children:[e.jsxs("div",{className:"text-sm font-semibold text-foreground",children:["ð¯ Werbe-Setup für dieses Studio ",e.jsx("span",{className:"font-normal text-muted-foreground",children:"â was soll geschaltet werden?"})]}),e.jsx("div",{className:"flex flex-wrap gap-1.5",children:me.map(o=>{const v=A.includes(o.key);return e.jsxs("button",{type:"button",onClick:()=>C(o.key),className:`text-xs font-semibold rounded-full px-3 py-1.5 border transition-colors ${v?"bg-primary text-primary-foreground border-primary":"bg-background text-foreground border-border hover:border-primary"}`,children:[v?"â ":"",o.label]},o.key)})}),e.jsx("textarea",{value:b,onChange:o=>u(o.target.value),rows:2,placeholder:"Notiz (optional), z. B. âErst Instant-Formular testen, Website nur bei genug Budget.",className:"w-full text-sm rounded-md border border-border bg-background px-2 py-1.5 resize-y text-foreground"}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs(y,{size:"sm",onClick:()=>g.mutate({brandId:l,channels:A,note:b.trim()||void 0}),disabled:g.isPending,className:"gap-1.5",children:[g.isPending?e.jsx(T,{className:"w-4 h-4 animate-spin"}):e.jsx(L,{className:"w-4 h-4"})," Werbe-Setup speichern"]}),e.jsx("span",{className:"text-[11px] text-muted-foreground",children:"Erscheint in der Onboarding-Aufgabe + bei den Werbe-Unteraufgaben."})]})]})}export{Ne 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.