1import{j as e,r as s}from"./vendor-react-D0h46m16.js";import{a as t}from"./legacy-article-redirect-fp3isHR7.js";import{S as i}from"./DonationThankYou-D9g4qmKo.js";import{C as r,a as n,b as a,d as l,e as c}from"./altTextGenerator-DWCIDCE5.js";import{u as d,I as o}from"./use-regenerate-feed-DLitAIVb.js";import{L as m}from"./use-comment-appeals-DYtoMEP7.js";import{u as x,B as u}from"./button-CykUDgWQ.js";import{z as h,S as j,ag as g,ah as p,K as f}from"./use-profile-CuRxmWYi.js";import{A as v,a as b}from"./alert-D-Nwoxg7.js";import{s as N}from"./use-search-history-Boqjf0_n.js";import{R as k,a as w}from"./radio-group-Dl7hTI_5.js";import{S as _}from"./use-personalization-DqHcdDlo.js";import{E as y}from"./EditorialLayout-CetJLmv0.js";import{b as T}from"./vendor-query-Dr68jqlw.js";import{a1 as C,bc as S,g as A,bd as F,be as M,T as L,bf as E,aX as D,f as X,U as W,bg as z,bh as P,bi as I,d as $,m as R,S as B,o as G,bj as K,b6 as U,F as q,ao as H}from"./vendor-icons-BbYfpdOz.js";import"./Footer-C-QL4pp4.js";import"./weatherTime-Y9ihW93L.js";import"./whatsNew--tlXZLzZ.js";import"./index-DqZvI2U2.js";import"./vendor-radix-D7CZeoLk.js";import"./vendor-radix-core-BVUYVtAx.js";import"./vendor-api-B4hs_cPm.js";import"./index.esm-B2IzwMux.js";import"./ScrollToTop-BbnbJAtN.js";import"./exports-cWTammwm.js";import"./sidebar-NOdMlSz1.js";import"./use-campaign-participation-C7Qsjmdf.js";import"./Imprint-_-bc-Cou.js";import"./PageLoader-CuOLERt0.js";import"./use-section-tracking-D1IaNRxi.js";import"./schemaGenerators-CEodAQEs.js";import"./sitemap-index-Cq_Imzq3.js";import"./reactrouterv6-DTS0VFAF.js";import"./helpers-EawpXZ78.js";import"./use-articles-admin-CsOMYdKH.js";import"./use-moderation-logs-DVWptnU4.js";import"./StaticPageRoute-BGDHSsAS.js";const O=e=>e.toLocaleString("de-DE"),V=e=>e.toLocaleString("de-DE",{minimumFractionDigits:2,maximumFractionDigits:2})+" â¬";function J({value:s,suffix:t=""}){return s>0?e.jsxs("span",{className:"inline-flex items-center gap-0.5 text-xs font-medium text-green-600",children:[e.jsx(L,{className:"h-3 w-3"}),"+",s,t]}):s<0?e.jsxs("span",{className:"inline-flex items-center gap-0.5 text-xs font-medium text-red-500",children:[e.jsx(E,{className:"h-3 w-3"}),s,t]}):e.jsxs("span",{className:"inline-flex items-center gap-0.5 text-xs font-medium text-muted-foreground",children:[e.jsx(I,{className:"h-3 w-3"}),"0",t]})}function Q({title:s,value:t,sub:i,icon:c,iconColor:d="text-muted-foreground"}){return e.jsxs(r,{children:[e.jsxs(a,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(l,{className:"text-xs font-medium text-muted-foreground",children:s}),e.jsx(c,{className:`h-4 w-4 ${d}`})]}),e.jsxs(n,{children:[e.jsx("div",{className:"text-2xl font-bold",children:t}),i&&e.jsx("div",{className:"text-xs text-muted-foreground mt-1",children:i})]})]})}function Y(){return e.jsx("div",{className:"space-y-8 mb-8",children:[0,1,2,3].map(s=>e.jsx("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-4",children:[0,1,2,3].map(s=>e.jsxs(r,{children:[e.jsx(a,{className:"pb-2",children:e.jsx(j,{className:"h-4 w-24"})}),e.jsxs(n,{children:[e.jsx(j,{className:"h-8 w-16 mb-2"}),e.jsx(j,{className:"h-3 w-20"})]})]},s))},s))})}function Z(){const{data:s,isLoading:t,error:i}=(()=>{const{isAdmin:e}=h();return T({queryKey:["admin-kpi"],queryFn:async()=>{const{data:e,error:s}=await N.functions.invoke("admin-kpi");if(s)throw s;if(!e?.success||!e.data)throw new Error(e?.error||"Failed to load KPI data");return e.data},enabled:e,staleTime:6e4,gcTime:3e5,refetchOnWindowFocus:!0,retry:1})})();return t?e.jsx(Y,{}):i?e.jsx(r,{className:"mb-8 border-red-200 bg-red-50",children:e.jsxs(n,{className:"pt-6 text-sm text-red-700",children:["KPIs konnten nicht geladen werden: ",i instanceof Error?i.message:"Unbekannter Fehler"]})}
1):s?e.jsxs("div",{className:"space-y-8 mb-8",children:[e.jsxs("section",{children:[e.jsx("h3",{className:"text-sm font-semibold text-muted-foreground uppercase tracking-wide mb-3",children:"Abonnements"}),e.jsxs("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-4",children:[e.jsx(Q,{title:"Aktive Abos",value:O(s.subscriptions.total_active),icon:C,iconColor:"text-blue-600"}),e.jsx(Q,{title:"MRR (effektiv)",value:V(s.subscriptions.effective_mrr_eur),sub:"inkl. Rabatte",icon:S,iconColor:"text-emerald-600"}),e.jsx(Q,{title:"Gekündigt (läuft aus)",value:O(s.subscriptions.pending_cancellations),sub:"noch aktiv",icon:A,iconColor:"text-amber-600"}),e.jsx(Q,{title:"Abgelaufen",value:O(s.subscriptions.expired_total),sub:"gesamt",icon:F,iconColor:"text-red-500"})]})]}),s.subscriptions.active_by_tier.length>0&&e.jsxs("section",{children:[e.jsx("h3",{className:"text-sm font-semibold text-muted-foreground uppercase tracking-wide mb-3",children:"Nach Tier"}),e.jsx("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-4",children:s.subscriptions.active_by_tier.map(s=>e.jsx(Q,{title:s.tier_display,value:O(s.count),sub:`${s.monthly}à monatlich · ${s.yearly}à jährlich`,icon:C,iconColor:"text-purple-600"},s.tier_id))})]}),e.jsxs("section",{children:[e.jsx("h3",{className:"text-sm font-semibold text-muted-foreground uppercase tracking-wide mb-3",children:"Wachstum"}),e.jsxs("div",{className:"grid grid-cols-2 md:grid-cols-3 lg:grid-cols-6 gap-4",children:[e.jsx(Q,{title:"Neu heute",value:O(s.trends.new_today),icon:M,iconColor:"text-green-600"}),e.jsx(Q,{title:"Neu · 7 Tage",value:O(s.trends.new_7d),icon:L,iconColor:"text-green-600"}),e.jsx(Q,{title:"Neu · 30 Tage",value:O(s.trends.new_30d),icon:L,iconColor:"text-green-600"}),e.jsx(Q,{title:"Churn · 7 Tage",value:O(s.trends.cancelled_7d),icon:E,iconColor:"text-red-500"}),e.jsx(Q,{title:"Churn · 30 Tage",value:O(s.trends.cancelled_30d),icon:E,iconColor:"text-red-500"}),e.jsx(Q,{title:"Netto · 30 Tage",value:s.trends.net_growth_30d>0?`+${s.trends.net_growth_30d}`:O(s.trends.net_growth_30d),sub:e.jsx(J,{value:s.trends.net_growth_7d,suffix:" (7d)"}),icon:D,iconColor:s.trends.net_growth_30d>0?"text-emerald-600":s.trends.net_growth_30d<0?"text-red-500":"text-muted-foreground"})]})]}),e.jsxs("section",{children:[e.jsx("h3",{className:"text-sm font-semibold text-muted-foreground uppercase tracking-wide mb-3",children:"Community"}),e.jsxs("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-4",children:[e.jsx(Q,{title:"Newsletter bestätigt",value:O(s.newsletter.confirmed),sub:`+${s.newsletter.new_30d} in 30 Tagen · ${s.newsletter.pending} pending`,icon:X,iconColor:"text-amber-600"}),e.jsx(Q,{title:"Registrierungen",value:O(s.users.total),sub:e.jsxs(e.Fragment,{children:["+",s.users.new_today," heute · +",s.users.new_30d," in 30 Tagen"]}),icon:W,iconColor:"text-green-600"}),e.jsx(Q,{title:"Aktive User · 30 Tage",value:O(s.users.active_30d),sub:`${Math.round(s.users.active_30d/Math.max(s.users.total,1)*100)}% der Basis`,icon:z,iconColor:"text-blue-600"}),e.jsx(Q,{title:"Spenden · 30 Tage",value:V(s.donations.sum_30d_eur),sub:`${s.donations.count_30d}à · ${s.donations.count_today>0?`+${s.donations.count_today} heute`:"heute 0"}`,icon:P,iconColor:"text-pink-600"})]})]}),e.jsxs("div",{className:"text-[10px] text-muted-foreground text-right",children:["Aktualisiert: ",new Date(s.generated_at).toLocaleString("de-DE")]})]}):null}const ee=()=>{const h=t(),{toast:j}=x(),{data:T,isLoading:C}=g(),S=p(),A=d(),[F,M]=s.useState({});s.useEffect(()=>{if(T){const e={};T.forEach(s=>{e[s.key]=s.value||""}),M(e)}},[T]);const L=async e=>{try{await S.mutateAsync({key:e,value:F[e]}),j({title:"Erfolgreich gespeichert",description:"Die Einstellung wurde aktualisiert."}),"ticker_mode"===e&&A.mutate()}catch{j({title:"Fehler",description:"Die Einstellung konnte nicht gespeichert werden.",variant:"destructive"})}};return C?e.jsx(y,{children:e.jsx("div",{className:"flex items-center justify-center py-20",children:e.jsx($,{className:"h-8 w-8 animate-spin text-primary"})})}):e.jsxs(y,{children:[e.jsx(i,{title:"Redaktion",description:"Verwaltungsbereich für Tracking-Einstellungen",canonical:"/redaktion"}),e.jsxs("div",{className:"max-w-4xl mx-auto",children:[e.jsxs("div",{className:"flex items-center justify-between gap-4 mb-8",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"Dashboard"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Tracking-Einstellungen und Laufleisten-Modus"})]}),e.jsxs(u,{variant:"outline",onClick:async()=>{await N.auth.signOut(),j({title:"Abgemeldet",description:"Sie wurden erfolgreich abgemeldet."}),h("/redaktion/login/")},size:"sm",children:[e.jsx(R,{className:"mr-2 h-4 w-4"}),e.jsx("span",{className:"hidden sm:inline",children:"Abmelden"})]})]}),e.jsx(Z,{}),e.jsxs(v,{className:"mb-6",children:[e.jsx(B,{className:"h-4 w-4"}),e.jsx(b,{children:"Hier können Sie die Tracking-IDs und den Laufleisten-Modus konfigurieren. Weitere Funktionen finden Sie in der Sidebar."})]}),f()&&e.jsxs(r,{className:"mb-8",children:[e.jsxs(a,{children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(G,{className:"h-5 w-5 text-amber-500"}),e.jsx(l,{children:"WM 2026 Paket"})]}),e.jsx(c,{children:"EIN Schalter für das gesamte WM-Paket: Live-Ticker statt Laufleiste (auch mobil), WM-Eintrag im Menü (statt Sport + Forum), Tor-Benachrichtigungen und API-Abrufe. Bei Deaktivierung gilt wieder das normale Menü und der unten gewählte Laufleisten-Modus â die WM-Seiten (/wm-2026) bleiben mit dem letzten Datenstand erreichbar."})]}),e.jsx(n,{children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(_,{id:"wm-ticker-enabled",checked:"false"!==F.wm_ticker_enabled,disabled:S.isPending,onCheckedChange:e=>{const s=e?"true":"false";M({...F,wm_ticker_enabled:s}),S.mutateAsync({key:"wm_ticker_enabled",value:s}).then(()=>{j({title:"Erfolgreich gespeichert",description:e?"WM-Ticker aktiviert â live in ca. 2 Minuten.":"WM-Ticker deaktiviert â Laufleiste wechselt in ca. 2 Minuten zurück."})}).catch(()=>{j({title:"Fehler",description:"Die Einstellung konnte nicht gespeichert werden.",variant:"destructive"})})}}),e.jsx(m,{htmlFor:"wm-ticker-enabled",className:"cursor-pointer",children:"false"!==F.wm_ticker_enabled?"WM-Livestände aktiv":"WM-Livestände deaktiviert"})]})})]}),e.jsxs(r,{className:"mb-8",children:[e.jsxs(a,{children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(K,{className:"h-5 w-5 text-sky-500"}),e.jsx(l,{children:"Wetter-Dashboard"})]}),e.jsx(c,{children:'Steuert /wetter/oesterreich/⦠in drei Stufen. âTest" = nur per direkter URL erreichbar (noindex & unverlinkt), âLive" = indexiert & verlinkt, âAus" = deaktiviert (404). Wirkt nach Cache-Ablauf (⤠5 Min).'})]}),e.jsx(n,{children:e.jsxs(k,{value:F.weather_mode||"test",onValueChange:e=>{M({...F,weather_mode:e}),S.mutateAsync({key:"weather_mode",value:e}).then(()=>{j({title:"Gespeichert",description:`Wetter-Dashboard: ${e}`})}).catch(()=>{j({title:"Fehler",description:"Einstellung konnte nicht gespeichert werden.",variant:"destructive"})})},className:"grid grid-cols-1 sm:grid-cols-3 gap-4",children:[e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(w,{value:"off",id:"weather-off"}),e.jsxs(m,{htmlFor:"weather-off",className:"cursor-pointer",children:[e.jsx("div",{className:"font-medium",children:"Aus"}),e.jsx("div",{className:"text-xs text-muted-foreground",children:"deaktiviert (404)"})]})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(w,{value:"test",id:"weather-test"}),e.jsxs(m,{htmlFor:"weather-test",className:"cursor-pointer",children:[e.jsx("div",{className:"font-medium",children:"Test"}),e.jsx("div",{className:"text-xs text-muted-foreground",children:"URL-only, noindex"})]})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(w,{value:"live",id:"weather-live"}),e.jsxs(m,{htmlFor:"weather-live",className:"cursor-pointer",children:[e.jsx("div",{className:"font-medium",children:"Live"}),e.jsx("div",{className:"text-xs text-muted-foreground",children:"indexiert + verlinkt"})]})]})]})})]}),e.jsxs(r,{className:"mb-8",children:[e.jsxs(a,{children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(U,{className:"h-5 w-5 text-primary"}),e.jsx(l,{children:"Laufleisten-Modus"})]}),e.jsx(c,{children:"Wählen Sie den Anzeigemodus für die obere Laufleiste"})]}),e.jsxs(n,{className:"space-y-4",children:[e.jsxs(k,{value:F.ticker_mode||"news",onValueChange:e=>M({...F,ticker_mode:e}),className:"grid grid-cols-1 sm:grid-cols-3 gap-4",children:[e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(w,{value:"news",id:"ticker-news"}),e.jsxs(m,{htmlFor:"ticker-news",className:"flex items-center gap-2 cursor-pointer",children:[e.jsx(q,{className:"h-4 w-4 text-primary"}),e.jsxs("div",{children:[e.jsx("div",{className:"font-medium",children:"Neueste Meldungen"}),e.jsx("div",{className:"text-xs text-muted-foreground",children:"Headlines aus Artikeln"})]})]})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(w,{value:"atx",id:"ticker-atx"}),e.jsxs(m,{htmlFor:"ticker-atx",className:"flex items-center gap-2 cursor-pointer",children:[e.jsx(H,{className:"h-4 w-4 text-green-500"}),e.jsxs("div",{children:[e.jsx("div",{className:"font-medium",children:"ATX Börsenkurse"}),e.jsx("div",{className:"text-xs text-muted-foreground",children:"Index & Top-Aktien"})]})]})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(w,{value:"weather",id:"ticker-weather"}),e.jsxs(m,{htmlFor:"ticker-weather",className:"flex items-center gap-2 cursor-pointer",children:[e.jsx(K,{className:"h-4 w-4 text-blue-500"}),e.jsxs("div",{children:[e.jsx("div",{className:"font-medium",children:"Wetter Ãsterreich"}),e.jsx("div",{className:"text-xs text-muted-foreground",children:"Alle 9 Bundesländer"})]})]})]})]}),e.jsx(u,{onClick:()=>L("ticker_mode"),disabled:S.isPending,children:S.isPending?e.jsxs(e.Fragment,{children:[e.jsx($,{className:"mr-2 h-4 w-4 animate-spin"}),"Speichern..."]}):"Ticker-Modus speichern"})]})]}),e.jsx("h2",{className:"text-2xl font-bold mb-4",children:"Tracking-Einstellungen"}),e.jsx("div",{className:"space-y-6",children:T?.map(s=>e.jsxs(r,{children:[e.jsxs(a,{children:[e.jsx(l,{className:"text-lg",children:s.key}),e.jsx(c,{children:s.description})]}),e.jsxs(n,{className:"space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:s.key,children:"Wert"}),e.jsx(o,{id:s.key,value:F[s.key]||"",onChange:e=>M({...F,[s.key]:e.target.value}),placeholder:`${s.key} eingeben`})]}),e.jsx(u,{onClick:()=>L(s.key),disabled:S.isPending,children:S.isPending?e.jsxs(e.Fragment,{children:[e.jsx($,{className:"mr-2 h-4 w-4 animate-spin"}),"Speichern..."]}):"Speichern"})]})]},s.id))}),e.jsxs(r,{className:"mt-8",children:[e.jsx(a,{children:e.jsx(l,{children:"Hinweise"})}),e.jsxs(n,{className:"space-y-2 text-sm text-muted-foreground",children:[e.jsxs("p",{children:[e.jsx("strong",{children:"gtm_id:"})," Google Tag Manager Container-ID (z.B. GTM-XXXXXXX)"]}),e.jsxs("p",{children:[e.jsx("strong",{children:"ga_id:"})," Google Analytics 4 Measurement-ID (z.B. G-XXXXXXXXXX)"]}),e.jsxs("p",{children:[e.jsx("strong",{children:"audienzz_publisher_id:"})," Audienzz Publisher-ID für Werbeanzeigen"]}),e.jsx("p",{className:"mt-4 text-xs",children:"Nach dem Speichern werden die Tracking-Skripte automatisch mit den neuen IDs geladen, wenn Nutzer die entsprechenden Cookies akzeptiert haben."})]})]})]})]})};export{ee 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.