PageSourceSearch

https://exxpress.at/assets/FeatureFlagsDashboard-CPeUMLzN.js

js exxpress.at collected 2026-10-01 10:32:10 UTC 22,249 bytes, 1 lines download raw bytes

1import{r as e,j as t}from"./vendor-react-D0h46m16.js";import{C as r,b as i,d as s,a,e as n}from"./altTextGenerator-DWCIDCE5.js";import{at as o,B as l}from"./use-profile-CuRxmWYi.js";import{A as c,b as d,a as m}from"./alert-D-Nwoxg7.js";import{u,B as p,c as x}from"./button-CykUDgWQ.js";import{s as g}from"./use-search-history-Boqjf0_n.js";import{S as h}from"./DonationThankYou-D9g4qmKo.js";import{E as f}from"./EditorialLayout-CetJLmv0.js";import{S as y}from"./use-personalization-DqHcdDlo.js";import{u as b,b as v,a as j}from"./vendor-query-Dr68jqlw.js";import{b8 as k,a7 as w,r as N,aK as S,bn as F,e as V,g as A,d as B,a8 as P,v as M}from"./vendor-icons-BbYfpdOz.js";import"./ScrollToTop-BbnbJAtN.js";import"./exports-cWTammwm.js";import"./legacy-article-redirect-fp3isHR7.js";import"./vendor-radix-D7CZeoLk.js";import"./vendor-radix-core-BVUYVtAx.js";import"./vendor-api-B4hs_cPm.js";import"./index-DqZvI2U2.js";import"./Footer-C-QL4pp4.js";import"./weatherTime-Y9ihW93L.js";import"./whatsNew--tlXZLzZ.js";import"./index.esm-B2IzwMux.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-regenerate-feed-DLitAIVb.js";import"./use-articles-admin-CsOMYdKH.js";import"./use-moderation-logs-DVWptnU4.js";import"./StaticPageRoute-BGDHSsAS.js";const E=()=>{const E=o(),{toast:z}=u(),C=b(),[G,L]=e.useState(!1),[D,K]=e.useState(null),{data:T=[]}=v({queryKey:["feature-flag-overrides"],queryFn:async()=>{const{data:e,error:t}=await g.from("feature_flag_overrides").select("*").order("feature_key");if(t)throw t;return e}}),_=T.reduce((e,t)=>(e[t.feature_key]=t.enabled,e),{}),O=null!==E&&E.ready,I=j({mutationFn:async({featureKey:e,enabled:t})=>{const{data:r}=await g.from("feature_flag_overrides").select("id").eq("feature_key",e).single();if(r){const{error:r}=await g.from("feature_flag_overrides").update({enabled:t,updated_at:(new Date).toISOString()}).eq("feature_key",e);if(r)throw r}else{const{error:r}=await g.from("feature_flag_overrides").insert({feature_key:e,enabled:t});if(r)throw r}},onSuccess:(e,t)=>{C.invalidateQueries({queryKey:["feature-flag-overrides"]}),z({title:"✅ Override gespeichert",description:`${t.featureKey} wurde auf ${t.enabled?"aktiv":"inaktiv"} gesetzt und in der DB gespeichert.`})},onError:e=>{z({variant:"destructive",title:"❌ Fehler beim Speichern",description:e.message})}}),R=j({mutationFn:async e=>{const{error:t}=await g.from("feature_flag_overrides").delete().eq("feature_key",e);if(t)throw t},onSuccess:(e,t)=>{C.invalidateQueries({queryKey:["feature-flag-overrides"]}),z({title:"🔄 Override entfernt",description:`${t} verwendet jetzt wieder den GrowthBook/Default-Wert.`})},onError:e=>{z({variant:"destructive",title:"❌ Fehler beim Löschen",description:e.message})}}),U=e=>{R.mutate(e)},$={"exxpress-newsletter":{title:"📰 Newsletter",description:"Newsletter-Modal und Breaker-Sektionen",category:"Marketing",impact:"high",defaultValue:!0},"exxpress-comments":{title:"💬 Kommentare",description:"Benutzerkommentare auf Artikelseiten",category:"Engagement",impact:"high",defaultValue:!0},"exxpress-notifications":{title:"🔔 Benachrichtigungen",description:"Benachrichtigungsglocke im Header",category:"Engagement",impact:"medium",defaultValue:!0},"exxpress-sponsored-content":{title:"💰 Sponsored Content",description:"Native Ads innerhalb von Artikeln",category:"Monetarisierung",impact:"high",defaultValue:!0},"exxpress-ads":{title:"📢 Werbung (Master)",description:"Master-Schalter für ALLE Werbeanzeigen",category:"Monetarisierung",impact:"high",defaultValue:!0},"exxpress-display-ads":{title:"🖼️ Display Ads",description:"Banner und Leaderboard Werbeanzeigen",category:"Monetarisierung",impact:"high",defaultValue:!0,parentFeature:"exxpress-ads"},"exxpress-mgid-native-ads":{title:"🎯 MGID Native Ads",description:"MGID Native Advertising Widgets",category:"Monetarisierung",impact:"medium",defaultValue:!0,parentFeature:"exxpress-ads"}
1,"exxpress-audienzz-ads":{title:"🎪 Audienzz Ads",description:"Audienzz-spezifische Display Ads",category:"Monetarisierung",impact:"medium",defaultValue:!0,parentFeature:"exxpress-ads"},"exxpress-cookie-banner":{title:"🍪 Cookie Banner",description:"DSGVO Cookie-Consent-Management",category:"Compliance",impact:"high",defaultValue:!1},"exxpress-search":{title:"🔍 Suche",description:"Such-Dialog und Funktionalität",category:"Navigation",impact:"medium",defaultValue:!0},"exxpress-breaking-news":{title:"⚡ Breaking News",description:"Hero Breaking News Sektion",category:"Content",impact:"medium",defaultValue:!0},"exxpress-theme-toggle":{title:"🎨 Theme Toggle",description:"Dark/Light Mode Umschalter",category:"UX",impact:"low",defaultValue:!0},"exxpress-livestream":{title:"📺 Livestream",description:"Sticky Video Player",category:"Content",impact:"medium",defaultValue:!0},"exxpress-shop-link":{title:"🛒 Shop Link",description:"Link zu shop.exxpress.at",category:"Navigation",impact:"low",defaultValue:!0},"exxpress-forum":{title:"💬 Forum",description:"Community Forum für Diskussionen",category:"Engagement",impact:"high",defaultValue:!0},"exxpress-read-after-article":{title:"📖 Read After Article",description:"Sticky nächster Artikel Bar unten",category:"UX",impact:"medium",defaultValue:!0},"exxpress-internal-links":{title:"🔗 Interne Links",description:'"Lesen Sie auch:" Links in Artikeln',category:"Content",impact:"low",defaultValue:!1},"exxpress-accessibility":{title:"♿ Accessibility",description:"Skip Links, ARIA Labels, Keyboard Navigation",category:"Compliance",impact:"high",defaultValue:!0},"exxpress-profile-settings":{title:"⚙️ Profil Einstellungen",description:"Benutzer-Profileinstellungen",category:"Profil",impact:"high",defaultValue:!0},"exxpress-profile-personalization":{title:"🎯 Personalisierung",description:"Personalisierte Feed-Einstellungen",category:"Profil",impact:"medium",defaultValue:!1},"exxpress-profile-notifications":{title:"🔔 Profil Benachrichtigungen",description:"Benachrichtigungseinstellungen im Profil",category:"Profil",impact:"medium",defaultValue:!0},"exxpress-profile-comments-page":{title:"💬 Meine Kommentare",description:"Übersicht eigener Kommentare",category:"Profil",impact:"medium",defaultValue:!0,parentFeature:"exxpress-comments"},"exxpress-profile-forum-posts":{title:"📝 Meine Forum-Beiträge",description:"Übersicht eigener Forum-Posts",category:"Profil",impact:"medium",defaultValue:!0,parentFeature:"exxpress-forum"},"exxpress-profile-achievements":{title:"🏆 Achievements",description:"Achievement-System im Profil",category:"Gamification",impact:"medium",defaultValue:!0},"exxpress-comment-appeals":{title:"📋 Kommentar-Einsprüche",description:"Einspruch gegen moderierte Kommentare",category:"Engagement",impact:"medium",defaultValue:!0,parentFeature:"exxpress-comments"},"exxpress-profile-avatar-upload":{title:"📷 Avatar Upload",description:"Profilbild hochladen",category:"Profil",impact:"low",defaultValue:!0},"exxpress-achievement-progress-tracking":{title:"📊 Progress Tracking",description:"Fortschrittsanzeige für Achievements",category:"Gamification",impact:"low",defaultValue:!1,parentFeature:"exxpress-profile-achievements"},"exxpress-achievement-leaderboard":{title:"🏅 Leaderboard",description:"Rangliste der Top-Benutzer",category:"Gamification",impact:"medium",defaultValue:!1,parentFeature:"exxpress-profile-achievements"},"exxpress-achievement-rarity-badges":{title:"💎 Rarity Badges",description:"Seltenheits-Badges für Achievements",category:"Gamification",impact:"low",defaultValue:!1,parentFeature:"exxpress-profile-achievements"},"exxpress-achievement-social-sharing":{title:"📤 Social Sharing",description:"Achievements teilen",category:"Gamification",impact:"low",defaultValue:!1,parentFeature:"exxpress-profile-achievements"},"exxpress-achievement-streaks":{title:"🔥 Streaks",description:"Tägliche Aktivitäts-Streaks",category:"Gamification",impact:"medium",defaultValue:!1,parentFeature:"exxpress-profile-achievements"}
1,"exxpress-achievement-levels":{title:"📈 Levels",description:"Benutzer-Level-System",category:"Gamification",impact:"medium",defaultValue:!1,parentFeature:"exxpress-profile-achievements"},"exxpress-achievement-email-reports":{title:"📧 E-Mail Reports",description:"Wöchentliche Achievement-Reports",category:"Gamification",impact:"low",defaultValue:!1,parentFeature:"exxpress-profile-achievements"},"exxpress-breaking-news-ab-test":{title:"🧪 Breaking News A/B Test",description:"A/B Testing für Breaking News Algorithmen",category:"Experimente",impact:"medium",defaultValue:!1,parentFeature:"exxpress-breaking-news"},"exxpress-breaking-news-algorithm":{title:"📊 Breaking News Algorithmus",description:"Welcher Algorithmus verwendet wird",category:"Experimente",impact:"medium",defaultValue:"smart_hybrid",parentFeature:"exxpress-breaking-news"},"exxpress-subscriptions":{title:"💳 Subscription System",description:"Master-Schalter für Premium-Features",category:"Subscription",impact:"high",defaultValue:!0},"exxpress-comment-limits":{title:"🚫 Kommentar-Limits",description:"Tägliche Limits basierend auf Abo-Tier",category:"Subscription",impact:"medium",defaultValue:!0,parentFeature:"exxpress-subscriptions"},"exxpress-premium-badge":{title:"🏷️ Premium Badge",description:"Badge neben Premium-Benutzernamen",category:"Subscription",impact:"low",defaultValue:!0,parentFeature:"exxpress-subscriptions"},"exxpress-ad-free-experience":{title:"🚫 Werbefreies Erlebnis",description:"Keine Werbung für Premium-Abonnenten",category:"Subscription",impact:"high",defaultValue:!0,parentFeature:"exxpress-subscriptions"},"exxpress-pricing-page":{title:"💰 Pricing Page",description:"Preisseite anzeigen",category:"Subscription",impact:"medium",defaultValue:!0,parentFeature:"exxpress-subscriptions"},"exxpress-campaigns":{title:"🎁 Campaigns",description:"Gewinnspiele, Adventkalender, etc.",category:"Marketing",impact:"medium",defaultValue:!0},"exxpress-sentry-session-replay":{title:"🎥 Session Replay",description:"Sentry Session-Aufzeichnung",category:"Monitoring",impact:"low",defaultValue:!1},"exxpress-sentry-profiling":{title:"⚡ Browser Profiling",description:"Sentry Performance Profiling",category:"Monitoring",impact:"low",defaultValue:!1},"exxpress-sentry-metrics":{title:"📊 Custom Metrics",description:"Sentry Custom Metrics senden",category:"Monitoring",impact:"low",defaultValue:!0},"exxpress-sentry-send-pii":{title:"🔒 Send PII",description:"IP-Adressen an Sentry senden",category:"Monitoring",impact:"medium",defaultValue:!1},"exxpress-sentry-logs":{title:"📝 Console Logs",description:"Console Logs an Sentry senden",category:"Monitoring",impact:"low",defaultValue:!1},"exxpress-user-bans":{title:"🚫 User Bans",description:"Globale User-Sperren (permanent/temporär)",category:"Moderation",impact:"high",defaultValue:!0},"exxpress-shadowban":{title:"👻 Shadowban",description:"Unsichtbare Sperren - User sieht eigene Kommentare, andere nicht",category:"Moderation",impact:"high",defaultValue:!0},"exxpress-strike-system":{title:"⚠️ Strike System",description:"Verwarnung-System mit automatischer Eskalation",category:"Moderation",impact:"high",defaultValue:!0},"exxpress-auto-escalation":{title:"📈 Auto-Escalation",description:"Automatische Sperr-Eskalation bei mehreren Strikes",category:"Moderation",impact:"medium",defaultValue:!0,parentFeature:"exxpress-strike-system"},"exxpress-thread-locking":{title:"🔒 Thread Locking",description:"Kommentare für einzelne Artikel sperren",category:"Moderation",impact:"medium",defaultValue:!0},"exxpress-level-decay":{title:"📉 Level Decay",description:"Level-Verfall bei Inaktivität (>90 Tage)",category:"Gamification",impact:"medium",defaultValue:!1},"exxpress-premium-point-boost":{title:"⭐ Premium Point Boost",description:"1.5x Punkte für Premium-Abonnenten",category:"Gamification",impact:"medium",defaultValue:!0,parentFeature:"exxpress-subscriptions"},"exxpress-admin-ban-management":{title:"👮 Admin Ban Management",description:"Admin-Dashboard für User-Sperren",category:"Admin",impact:"high",defaultValue:!0,parentFeature:"exxpress-user-bans"}
1,"exxpress-admin-strike-dashboard":{title:"📋 Admin Strike Dashboard",description:"Admin-Dashboard für Strike-Übersicht",category:"Admin",impact:"high",defaultValue:!0,parentFeature:"exxpress-strike-system"},"exxpress-author-pages":{title:"✍️ Autor-Seiten",description:"Dedizierte Autorenseiten mit allen Artikeln (/autor/:slug)",category:"Content",impact:"high",defaultValue:!0},"exxpress-rss-enhanced":{title:"📡 RSS Enhanced",description:"Erweiterter RSS Feed mit content:encoded und media:content",category:"Content",impact:"medium",defaultValue:!0}},q=e=>{if(e in _)return _[e];if(E&&O){const t=E.getFeatureValue(e,$[e]?.defaultValue??!1);return!0===t||"true"===t}const t=$[e]?.defaultValue;return!0===t},W=["Monetarisierung","Engagement","Content","Navigation","UX","Profil","Gamification","Subscription","Marketing","Moderation","Admin","Compliance","Experimente","Monitoring"],H={};Object.entries($).forEach(([e,t])=>{const r=t.category;H[r]||(H[r]=[]),H[r].push(e)});const Q=Object.keys(H).sort((e,t)=>{const r=W.indexOf(e),i=W.indexOf(t);return-1===r&&-1===i?0:-1===r?1:-1===i?-1:r-i}),X=Object.keys($).length,J=Object.keys($).filter(e=>q(e)).length,Y=Math.round(J/X*100),Z=Object.values($).filter(e=>e.parentFeature).length,ee=e=>{switch(e){case"high":return"bg-red-500/10 text-red-500 border-red-500/20";case"medium":return"bg-yellow-500/10 text-yellow-500 border-yellow-500/20";case"low":return"bg-blue-500/10 text-blue-500 border-blue-500/20"}};return t.jsxs(f,{children:[t.jsx(h,{title:"Feature Flags - Admin",description:"Feature Flags Dashboard für GrowthBook",noindex:!0}),t.jsxs("div",{className:"max-w-6xl mx-auto space-y-6",children:[t.jsxs("div",{className:"flex flex-col md:flex-row md:items-center justify-between gap-4 mb-8",children:[t.jsxs("div",{className:"flex items-center gap-3",children:[t.jsx(k,{className:"h-8 w-8 text-primary"}),t.jsxs("div",{children:[t.jsx("h1",{className:"text-3xl font-bold",children:"Feature Flags"}),t.jsxs("p",{className:"text-muted-foreground",children:["Live-Status aller ",X," Features via GrowthBook"]})]})]}),t.jsxs("div",{className:"flex flex-wrap items-center gap-3",children:[t.jsxs(p,{onClick:async()=>{L(!0),K(null);try{const{data:e,error:t}=await g.functions.invoke("sync-features-to-growthbook",{body:{}});if(t)throw t;K(e),z({title:"✅ Sync erfolgreich",description:`${e.results?.created?.length||0} Features erstellt, ${e.results?.skipped?.length||0} übersprungen`}),E&&await E.refreshFeatures(),z({title:"ℹ️ Auto-Sync aktiv",description:"GrowthBook synchronisiert die Features automatisch zur Vercel Edge Config (ca. 60 Sek.)"})}catch(e){console.error("Sync error:",e),z({title:"Sync fehlgeschlagen",description:e instanceof Error?e.message:"Unbekannter Fehler",variant:"destructive"})}finally{L(!1)}},variant:"default",size:"sm",disabled:G,children:[t.jsx(w,{className:"h-4 w-4 mr-2 "+(G?"animate-spin":"")}),G?"Synchronisiere...":"Sync"]}),O&&t.jsxs(t.Fragment,{children:[t.jsxs(p,{onClick:async()=>{try{const{data:e,error:t}=await g.functions.invoke("debug-growthbook-features",{body:{}});if(t)throw t;z({title:"🔍 Debug abgeschlossen",description:`${e.ourFeatures?.length||0}/46 Features gefunden. Siehe Console für Details.`})}catch(e){console.error("Debug error:",e),z({variant:"destructive",title:"Debug fehlgeschlagen",description:e instanceof Error?e.message:"Unbekannter Fehler"})}},variant:"outline",size:"sm",children:[t.jsx(N,{className:"h-4 w-4 mr-2"}),"Debug"]}),t.jsxs(p,{onClick:async()=>{E&&(await E.refreshFeatures(),C.invalidateQueries({queryKey:["feature-flag-overrides"]}),z({title:"✅ Features aktualisiert",description:`${Object.keys(E.getFeatures()).length} Features von GrowthBook geladen.`}))},variant:"outline",size:"sm",children:[t.jsx(w,{className:"h-4 w-4 mr-2"}),"Refresh"]})]}),t.jsxs(l,{variant:"outline",className:"text-lg px-4 py-2",children:[J,"/",X," Aktiv"]})]})]}),t.jsxs(c,{variant:O?"default":"destructive",children:[t.jsx(S,{className:"h-4 w-4"}),t.jsx(d,{children:O?"🟢 GrowthBook Live-Sync aktiv":"⚠️ GrowthBook nicht verbunden"}),t.jsx(m,{children:O?t.jsxs(t.Fragment,{children:["Feature Flags werden in Echtzeit von GrowthBook synchronisiert. Änderungen im GrowthBook Dashboard sind innerhalb von ~60 Sekunden aktiv.",t.jsx("div",{className:"mt-2",children:t.jsx(l,{variant:"outline",className:"animate-pulse",children:"Live Updates"})})]}):"GrowthBook ist nicht verbunden. Stelle sicher, dass der GROWTHBOOK_CLIENT_KEY korrekt konfiguriert ist."})]}),t.jsxs(c,{children:[t.jsx(F,{className:"h-4 w-4"}),t.jsxs(d,{children:["Feature-Abhängigkeiten (",Z," Child-Features)"]}),t.jsx(m,{children:t.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-2 mt-2 text-sm",children:[t.jsxs("div",{children:[t.jsx("code",{className:"bg-muted px-1 rounded",children:"exxpress-ads"})," → display-ads, mgid, audienzz"]}),t.jsxs("div",{children:[t.jsx("code",{className:"bg-muted px-1 rounded",children:"exxpress-subscriptions"})," → limits, badge, ad-free, pricing"]}),t.jsxs("div",{children:[t.jsx("code",{className:"bg-muted px-1 rounded",children:"exxpress-comments"})," → comments-page, appeals"]}),t.jsxs("div",{children:[t.jsx("code",{className:"bg-muted px-1 rounded",children:"exxpress-forum"})," → forum-posts"]}),t.jsxs("div",{children:[t.jsx("code",{className:"bg-muted px-1 rounded",children:"exxpress-profile-achievements"})," → alle Achievement-Features (7)"]}),t.jsxs("div",{children:[t.jsx("code",{className:"bg-muted px-1 rounded",children:"exxpress-breaking-news"})," → A/B Test, Algorithm"]})]})})]}),D&&t.jsxs(c,{variant:D.success?"default":"destructive",children:[t.jsx(S,{className:"h-4 w-4"}),t.jsx(d,{children:"Sync Ergebnis"}),t.jsx(m,{children:t.jsxs("div",{className:"space-y-2",children:[t.jsx("p",{children:D.message}),D.results&&t.jsxs("div",{className:"text-sm space-y-1",children:[D.results.created?.length>0&&t.jsxs("div",{children:["✅ Erstellt: ",D.results.created.join(", ")
1]}),D.results.skipped?.length>0&&t.jsxs("div",{children:["⏭️ Übersprungen: ",D.results.skipped.length," (bereits vorhanden)"]}),D.results.errors?.length>0&&t.jsxs("div",{className:"text-destructive",children:["Fehler: ",D.results.errors.map(e=>`${e.key}: ${e.error}`).join(", ")]})]})]})})]}),t.jsxs("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-4",children:[t.jsxs(r,{children:[t.jsx(i,{className:"pb-2",children:t.jsx(s,{className:"text-sm font-medium text-muted-foreground",children:"Gesamt Features"})}),t.jsx(a,{children:t.jsx("div",{className:"text-3xl font-bold",children:X})})]}),t.jsxs(r,{children:[t.jsx(i,{className:"pb-2",children:t.jsx(s,{className:"text-sm font-medium text-muted-foreground",children:"Aktiv"})}),t.jsx(a,{children:t.jsx("div",{className:"text-3xl font-bold text-green-500",children:J})})]}),t.jsxs(r,{children:[t.jsx(i,{className:"pb-2",children:t.jsx(s,{className:"text-sm font-medium text-muted-foreground",children:"Inaktiv"})}),t.jsx(a,{children:t.jsx("div",{className:"text-3xl font-bold text-red-500",children:X-J})})]}),t.jsxs(r,{children:[t.jsx(i,{className:"pb-2",children:t.jsx(s,{className:"text-sm font-medium text-muted-foreground",children:"Aktivierungsrate"})}),t.jsx(a,{children:t.jsxs("div",{className:"text-3xl font-bold",children:[Y,"%"]})})]})]}),Q.map(e=>{const o=H[e],c=o.filter(e=>q(e)).length;return t.jsxs(r,{children:[t.jsxs(i,{children:[t.jsx(s,{children:e}),t.jsxs(n,{children:[c,"/",o.length," aktiv"]})]}),t.jsx(a,{children:t.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4",children:o.map(e=>{const i=$[e],s=q(e),n=i?.parentFeature,o=!n||q(n),c="string"==typeof i?.defaultValue,d=(e=>e in _)(e),m=I.isPending;return t.jsx(r,{className:x("border transition-all",s?"border-green-500/50":"border-red-500/50",n&&"ml-4 border-l-4 border-l-primary/30",n&&!o&&"opacity-50",d&&"ring-2 ring-primary/50"),children:t.jsxs(a,{className:"pt-4",children:[t.jsxs("div",{className:"flex items-start justify-between",children:[t.jsxs("div",{className:"space-y-1 flex-1 min-w-0",children:[t.jsxs("div",{className:"font-semibold flex items-center gap-2 flex-wrap",children:[t.jsx("span",{className:"truncate",children:i?.title||e}),n&&t.jsxs(l,{variant:"outline",className:"text-xs shrink-0",children:["→ ",n.replace("exxpress-","")]})]}),t.jsx("p",{className:"text-xs text-muted-foreground",children:i?.description}),t.jsx("code",{className:"text-[10px] bg-muted px-1.5 py-0.5 rounded font-mono text-muted-foreground block mt-1",children:e})]}),s?t.jsx(V,{className:"h-5 w-5 text-green-500 shrink-0 ml-2"}):t.jsx(A,{className:"h-5 w-5 text-red-500 shrink-0 ml-2"})]}),t.jsxs("div",{className:"flex items-center gap-2 mt-3 flex-wrap",children:[i&&t.jsx(l,{variant:"outline",className:x("text-xs",ee(i.impact)),children:i.impact.toUpperCase()}),c?t.jsx(l,{variant:"secondary",className:"text-xs bg-blue-100 text-blue-700 dark:bg-blue-900/30 dark:text-blue-400",children:String(i?.defaultValue)}):t.jsxs("div",{className:"flex items-center gap-1.5",children:[t.jsx(y,{checked:s,onCheckedChange:t=>((e,t)=>{I.mutate({featureKey:e,enabled:t})})(e,t),disabled:m,className:"scale-75"}),m&&t.jsx(B,{className:"h-3 w-3 animate-spin"})]}),d&&t.jsxs(l,{variant:"outline",className:"text-[10px] bg-primary/10 text-primary cursor-pointer hover:bg-primary/20",onClick:()=>U(e),role:"button",tabIndex:0,onKeyDown:t=>{"Enter"!==t.key&&" "!==t.key||(t.preventDefault(),U(e))},"aria-label":`Override für ${e} entfernen`,children:[t.jsx(P,{className:"h-2.5 w-2.5 mr-1"}),"DB Override (Reset)"]})]}),n&&!o&&t.jsxs("div",{className:"mt-2 p-2 rounded-md bg-destructive/10 text-destructive text-xs flex items-center gap-1",children:[t.jsx(M,{className:"h-3 w-3"}),'Parent "',n,'" ist deaktiviert']})]})},e)})})})]},e)})]})]})};export{E 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.