1import{b as O,i as V,r as l,g as E,j as e,B as j,C as k,v as q,w as J,c as D,I as K}from"./index-Ci11rTa3.js";import{u as U}from"./useAdminCheck-BFLbpIeA.js";import{S as T,a as L,b as F,c as M,d as c}from"./select-BLNHsAN_.js";import{B as N}from"./badge-tRfcFGoN.js";import{T as P,a as Q,b as A,c as n,d as W,e as d}from"./table-DDZys5jE.js";import{D as X,b as Y,c as Z,d as ee}from"./dialog-CC6bjNTB.js";import{L as _}from"./loader-circle-xP6jGSnh.js";import{A as se}from"./arrow-left-XQWy6kBb.js";import{M as ae}from"./mail-B3hJFUlV.js";import{T as te}from"./trash-2-BZAS9NKl.js";import"./index-XDj9ENF1.js";import"./index-4yzmcWkL.js";import"./Combination-2S_NLqg4.js";import"./index-DcBDMlex.js";import"./chevron-down-vYKN_OwT.js";import"./check-D6Ki_WVD.js";import"./index-CoTarw9x.js";const we=({embedded:o=!1})=>{const{isAdmin:i,isLoading:f}=U(),g=O(),{toast:p}=V(),[r,w]=l.useState([]),[B,b]=l.useState(!0),[x,H]=l.useState(""),[m,R]=l.useState("all"),[h,$]=l.useState("all"),[a,v]=l.useState(null);l.useEffect(()=>{!f&&!i&&g("/")},[i,f,g]),l.useEffect(()=>{i&&S()},[i]);const S=async()=>{b(!0);const{data:s,error:t}=await E.from("guest_exit_feedback").select("*").order("created_at",{ascending:!1});t?p({title:"Fehler",description:t.message,variant:"destructive"}):w(s||[]),b(!1)},z=l.useMemo(()=>{const s=new Set;return r.forEach(t=>t.source&&s.add(t.source)),Array.from(s)},[r]),u=l.useMemo(()=>r.filter(s=>{if(m!=="all"&&s.source!==m||h==="with"&&!s.email||h==="without"&&s.email)return!1;if(x){const t=x.toLowerCase();if(!`${s.message||""} ${s.email||""} ${s.source||""}`.toLowerCase().includes(t))return!1}return!0}),[r,x,m,h]),G=async s=>{if(!confirm("Eintrag wirklich löschen?"))return;const{error:t}=await E.from("guest_exit_feedback").delete().eq("id",s);t?p({title:"Fehler",description:t.message,variant:"destructive"}):(w(y=>y.filter(I=>I.id!==s)),v(null),p({title:"Gelöscht"}))};if(f||!i)return e.jsx("div",{className:"min-h-screen flex items-center justify-center",children:e.jsx(_,{className:"h-8 w-8 animate-spin"})});const C=e.jsxs("div",{className:o?"space-y-4":"max-w-6xl mx-auto space-y-4",children:[!o&&e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsxs(j,{variant:"ghost",size:"sm",onClick:()=>g("/ctrl-p9x7k"),children:[e.jsx(se,{className:"h-4 w-4 mr-1"})," Admin"]}),e.jsx("h1",{className:"text-2xl font-bold",children:"Guest Exit Feedback"}),e.jsxs(N,{variant:"secondary",children:[u.length," / ",r.length]})]}),o&&e.jsx("div",{className:"flex items-center gap-2",children:e.jsxs(N,{variant:"secondary",children:[u.length," / ",r.length]})}),e.jsxs(k,{children:[e.jsx(q,{children:e.jsx(J,{className:"text-base",children:"Filter"})}),e.jsxs(D,{className:"flex flex-wrap gap-3",children:[e.jsx(K,{placeholder:"Suche (Text, E-Mail, Source)",value:x,onChange:s=>H(s.target.value),className:"max-w-xs"}),e.jsxs(T,{value:m,onValueChange:R,children:[e.jsx(L,{className:"w-48",children:e.jsx(F,{placeholder:"Source"})}),e.jsxs(M,{children:[e.jsx(c,{value:"all",children:"Alle Sources"}),z.map(s=>e.jsx(c,{value:s,children:s},s))]})]}),e.jsxs(T,{value:h,onValueChange:$,children:[e.jsx(L,{className:"w-48",children:e.jsx(F,{})}),e.jsxs(M,{children:[e.jsx(c,{value:"all",children:"Alle Einträge"}),e.jsx(c,{value:"with",children:"Mit E-Mail"}),e.jsx(c,{value:"without",children:"Ohne E-Mail"})]})]}),e.jsx(j,{variant:"outline",onClick:S,children:"Neu laden"})]})]}),e.jsx(k,{children:e.jsx(D,{className:"p-0",children:B?e.jsx("div",{className:"p-12 flex justify-center",children:e.jsx(_,{className:"h-6 w-6 animate-spin"})}):u.length===0?e.jsx("div",{className:"p-12 text-center text-muted-foreground",children:"Keine Einträge"}):e.jsxs(P,{children:[e.jsx(Q,{children:e.jsxs(A,{children:[e.jsx(n,{children:"Datum"}),e.jsx(n,{children:"Source"}),e.jsx(n,{children:"Nachricht"}),e.jsx(n,{children:"E-Mail"}),e.jsx(n,{className:"w-20"})]})}),e.jsx(W,{children:u.map(s=>e.jsxs(A,{className:"cursor-pointer",onClick:()=>v(s),children:[e.jsx(d,{className:"whitespace-nowrap text-sm",children:new Date(s.created_at).toLocaleString("de-DE")}),e.jsx(d,{children:e.jsx(N,{variant:"outline",children:s.source||"â"})}),e.jsx(d,{className:"max-w-md truncate",children:s.message}),e.jsx(d,{className:"text-sm",children:s.email?e.jsxs("span",{className:"inline-flex items-center gap-1",children:[e.jsx(ae,{className:"h-3 w-3"}),s.email]}):e.jsx("span",{className:"text-muted-foreground",children:"â"})}),e.jsx(d,{children:e.jsx(j,{variant:"ghost",size:"sm",children:"Details"})})]},s.id))})]})})}),e.jsx(X,{open:!!a,onOpenChange:s=>!s&&v(null),children:e.jsxs(Y,{className:"max-w-2xl max-h-[90vh] overflow-y-auto",children:[e.jsx(Z,{children:e.jsx(ee,{children:"Feedback Details"})}),a&&e.jsxs("div",{className:"space-y-4 text-sm",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{children:[e.jsx("div",{className:"text-xs text-muted-foreground",children:"Datum"}
1),e.jsx("div",{children:new Date(a.created_at).toLocaleString("de-DE")})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-xs text-muted-foreground",children:"Source"}),e.jsx("div",{children:a.source||"â"})]}),e.jsxs("div",{className:"col-span-2",children:[e.jsx("div",{className:"text-xs text-muted-foreground",children:"E-Mail"}),e.jsx("div",{children:a.email?e.jsx("a",{className:"text-primary underline",href:`mailto:${a.email}`,children:a.email}):"â"})]})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"Nachricht"}),e.jsx("div",{className:"rounded-md bg-muted p-3 whitespace-pre-wrap",children:a.message})]}),a.context&&e.jsxs("div",{children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"Context"}),e.jsx("pre",{className:"rounded-md bg-muted p-3 text-xs overflow-x-auto",children:JSON.stringify(a.context,null,2)})]}),a.user_agent&&e.jsxs("div",{children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"User Agent"}),e.jsx("div",{className:"rounded-md bg-muted p-3 text-xs break-all",children:a.user_agent})]}),e.jsx("div",{className:"flex justify-end gap-2 pt-2",children:e.jsxs(j,{variant:"destructive",size:"sm",onClick:()=>G(a.id),children:[e.jsx(te,{className:"h-4 w-4 mr-1"})," Löschen"]})})]})]})})]});return o?C:e.jsx("div",{className:"min-h-screen bg-background p-6",children:C})};export{we 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.