1import{a3 as S,a4 as C,a5 as _,a6 as A,b as d,f as L,r as h,al as N,j as e}from"./index-DfAU25pB.js";import{T as K,a as D,b as c,c as i,d as M,e as n}from"./table-CptRuMYt.js";import{l as $,u as I,s as R}from"./clients.functions-BWv9_RpQ.js";const H=S({method:"GET"}).middleware([C]).handler(_("9e46ee15ae9e1d721e485f977fe6fcecfacc5c3e61a6004bffa5ed0dfebd1abe")),U=S({method:"POST"}).middleware([C]).handler(_("dd4fa3a348b97f47c2bc8b36c229d845df2712c831393054452aa01f7dbfe0c4")),V=S({method:"POST"}).middleware([C]).handler(_("b869006dca54ed8ec2eab7e8e62103830dfaa8909dc3c84728be1d7f9eea8d2d")),J=S({method:"POST"}).middleware([C]).handler(_("02358f9f860cc401654660db9df40b0f361c54cde0df0c4e3b22e8632174476c")),P={id:"",name:"",slug:"",display_name:""};function ee(){const l=A(),j=d($),T=d(I),w=d(R),v=L({queryKey:["admin","clients"],queryFn:()=>j()}),[a,r]=h.useState(P),[o,f]=h.useState(null),m=!!a.id,u=N({mutationFn:async()=>(f(null),T({data:{id:a.id||void 0,name:a.name.trim(),slug:a.slug.trim(),display_name:a.display_name.trim()||void 0}})),onError:t=>f(t?.message??String(t)),onSuccess:()=>
1{r(P),l.invalidateQueries({queryKey:["admin","clients"]})}}),y=N({mutationFn:t=>w({data:t}),onSuccess:()=>l.invalidateQueries({queryKey:["admin","clients"]})}),x=v.data?.clients??[];function k(t){r({id:t.id,name:t.name,slug:t.slug,display_name:t.display_name??""})}return e.jsxs("div",{className:"max-w-5xl space-y-8",children:[e.jsxs("header",{className:"space-y-1",children:[e.jsx("h1",{className:"text-3xl font-bold",children:"Clients"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:'Gemeinsame Client-Verwaltung. Ãnderungen sind sofort im Projekt âFull Feature UI" sichtbar.'})]}),e.jsxs("form",{onSubmit:t=>{t.preventDefault(),u.mutate()},className:"rounded-2xl border border-border bg-card p-6 space-y-4",children:[e.jsx("h2",{className:"text-lg font-semibold",children:m?"Client bearbeiten":"Neuen Client anlegen"}),e.jsxs("div",{className:"grid sm:grid-cols-3 gap-4",children:[e.jsx(p,{label:"Name",children:e.jsx("input",{required:!0,value:a.name,onChange:t=>r({...a,name:t.target.value}),className:g})}),e.jsx(p,{label:"Slug",children:e.jsx("input",{required:!0,value:a.slug,onChange:t=>r({...a,slug:t.target.value.toLowerCase().replace(/[^a-z0-9-]/g,"-")}),className:g})}),e.jsx(p,{label:"Display-Name (optional)",children:e.jsx("input",{value:a.display_name,onChange:t=>r({...a,display_name:t.target.value}),className:g})})]}),e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("button",{type:"submit",disabled:u.isPending,className:B,children:u.isPending?"Speichereâ¦":m?"Speichern":"Anlegen"}),m&&e.jsx("button",{type:"button",onClick:()=>r(P),className:b,children:"Abbrechen"}),o&&e.jsx("span",{className:"text-sm text-destructive",children:o})]})]}),e.jsx("div",{className:"overflow-hidden rounded-2xl border border-border bg-card",children:e.jsxs(K,{children:[e.jsx(D,{children:e.jsxs(c,{children:[e.jsx(i,{children:"Name"}),e.jsx(i,{children:"Slug"}),e.jsx(i,{children:"Display-Name"}),e.jsx(i,{children:"Status"}),e.jsx(i,{className:"text-right",children:"Aktion"})]})}),e.jsxs(M,{children:[v.isLoading&&e.jsx(c,{children:e.jsx(n,{colSpan:5,className:"text-center text-muted-foreground",children:"Ladeâ¦"})}),!v.isLoading&&x.length===0&&e.jsx(c,{children:e.jsx(n,{colSpan:5,className:"text-center text-muted-foreground",children:"Keine Clients."})}),x.map(t=>e.jsxs(c,{children:[e.jsx(n,{className:"font-medium",children:t.name}),e.jsx(n,{children:e.jsx("code",{className:"text-xs",children:t.slug})}),e.jsx(n,{className:"text-sm text-muted-foreground",children:t.display_name??"â"}),e.jsx(n,{children:e.jsx("span",{className:`text-xs px-2 py-0.5 rounded-full ${t.is_active?"bg-emerald-500/15 text-emerald-600":"bg-muted text-muted-foreground"}`,children:t.is_active?"aktiv":"inaktiv"})}),e.jsxs(n,{className:"text-right space-x-2",children:[e.jsx("button",{onClick:()=>k(t),className:b,children:"Bearbeiten"}),e.jsx("button",{onClick:()=>y.mutate({id:t.id,is_active:!t.is_active}),className:b,children:t.is_active?"Deaktivieren":"Aktivieren"})]})]},t.id))]})]})}),e.jsx(W,{clients:x})]})}function W({clients:l}){const j=A(),T=d(H),w=d(U),v=d(V),a=d(J),r=L({queryKey:["admin","segment-tokens"],queryFn:()=>T()}),[o,f]=h.useState(""),[m,u]=h.useState(""),[y,x]=h.useState(""),[k,t]=h.useState(null),F=()=>j.invalidateQueries({queryKey:["admin","segment-tokens"]}),q=N({mutationFn:()=>w({data:{client_id:o,label:m.trim()||void 0,expires_at:y||void 0}}),onError:s=>t(s?.message??String(s)),onSuccess:()=>{u(""),x(""),t(null),F()}}),G=N({mutationFn:s=>v({data:s}),onSuccess:F}),O=N({mutationFn:s=>a({data:{id:s}}),onSuccess:F}),z=r.data?.tokens??[],Q=s=>l.find(E=>E.id===s)?.display_name||l.find(E=>E.id===s)?.name||"â";return e.jsxs("section",{className:"space-y-4",children:[e.jsxs("header",{className:"space-y-1",children:[e.jsx("h2",{className:"text-xl font-semibold",children:"Segment-Freigabe-Tokens"}),e.jsxs("p",{className:"text-sm text-muted-foreground",children:["Mit einem Token werden die Segmente eines Clients in der Segment-Ãbersicht zusätzlich angezeigt â auch wenn sie dort sonst (z. B. per Präfix) ausgeblendet sind. Link-Aufruf:"," ",e.jsx("code",{className:"text-xs",children:"/segmente/TOKEN"})," (eigene Landingpage) oder ",e.jsx("code",{className:"text-xs",children:"â¦/seite?segment_token=TOKEN"})]})]}),e.jsxs("div",{className:"rounded-2xl border border-border bg-card p-6 space-y-4",children:[e.jsxs("div",{className:"grid sm:grid-cols-3 gap-4",children:[e.jsx(p,{label:"Client",children:e.jsxs("select",{value:o,onChange:s=>
1f(s.target.value),className:g,children:[e.jsx("option",{value:"",children:"Bitte wählenâ¦"}),l.map(s=>e.jsx("option",{value:s.id,children:s.display_name||s.name},s.id))]})}),e.jsx(p,{label:"Bezeichnung (optional)",children:e.jsx("input",{value:m,onChange:s=>u(s.target.value),className:g})}),e.jsx(p,{label:"Gültig bis (optional)",children:e.jsx("input",{type:"date",value:y,onChange:s=>x(s.target.value),className:g})})]}),e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("button",{type:"button",disabled:!o||q.isPending,onClick:()=>q.mutate(),className:B,children:q.isPending?"Erzeugeâ¦":"Token erzeugen"}),k&&e.jsx("span",{className:"text-sm text-destructive",children:k})]})]}),e.jsx("div",{className:"overflow-hidden rounded-2xl border border-border bg-card",children:e.jsxs(K,{children:[e.jsx(D,{children:e.jsxs(c,{children:[e.jsx(i,{children:"Token"}),e.jsx(i,{children:"Client"}),e.jsx(i,{children:"Bezeichnung"}),e.jsx(i,{children:"Gültig bis"}),e.jsx(i,{children:"Status"}),e.jsx(i,{className:"text-right",children:"Aktion"})]})}),e.jsxs(M,{children:[z.length===0&&e.jsx(c,{children:e.jsx(n,{colSpan:6,className:"text-center text-muted-foreground",children:"Keine Tokens."})}),z.map(s=>e.jsxs(c,{children:[e.jsx(n,{children:e.jsx("code",{className:"text-xs break-all",children:s.token})}),e.jsx(n,{children:Q(s.client_id)}),e.jsx(n,{className:"text-sm text-muted-foreground",children:s.label??"â"}),e.jsx(n,{className:"text-sm",children:s.expires_at?new Date(s.expires_at).toLocaleDateString("de-DE"):"unbegrenzt"}),e.jsx(n,{children:e.jsx("span",{className:`text-xs px-2 py-0.5 rounded-full ${s.is_active?"bg-emerald-500/15 text-emerald-600":"bg-muted text-muted-foreground"}`,children:s.is_active?"aktiv":"inaktiv"})}),e.jsxs(n,{className:"text-right space-x-2",children:[e.jsx("button",{className:b,onClick:()=>navigator.clipboard?.writeText(`${window.location.origin}/segmente/${s.token}`),children:"Link kopieren"}),e.jsx("button",{className:b,onClick:()=>G.mutate({id:s.id,is_active:!s.is_active}),children:s.is_active?"Deaktivieren":"Aktivieren"}),e.jsx("button",{className:b,onClick:()=>O.mutate(s.id),children:"Löschen"})]})]},s.id))]})]})})]})}const g="mt-1 w-full rounded-md border border-border bg-background px-3 py-2 text-sm",B="rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground hover:opacity-90 disabled:opacity-50",b="rounded-md border border-border px-3 py-1.5 text-sm hover:bg-background";function p({label:l,children:j}){return e.jsxs("label",{className:"block",children:[e.jsx("span",{className:"text-sm font-medium",children:l}),j]})}export{ee as component};
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.