1import{j as e}from"./query-vendor-DVmmQ-ki.js";import{r as k,L as z}from"./react-vendor-BURXZ51T.js";import{L as N,B as i}from"./index-DpP3iEYK.js";import{I as b}from"./input-Bx2apBJb.js";import{L as p}from"./label-CiQuxLS0.js";import{C as M,b as D,c as I,d as B,a as E}from"./card-DwBoygcx.js";import{S as F}from"./switch-Cp3FZ6fH.js";import{S as P,a as H,b as V,c as O,d as j}from"./select-u_D-otHI.js";import{D as R,e as G,a as K,b as U,c as Y,d as W,f as Z}from"./dialog-BPS4FN9z.js";import{T as $,a as q,b as y,c as o,d as J,e as d}from"./table-DGTNs8pb.js";import{a as Q,b as X,c as ee,d as se}from"./useNavigationItems-ByMgbs_c.js";import{u as t}from"./index-Rp47IaA2.js";import{A as ne}from"./arrow-left-DrlG9OEE.js";import{P as ae}from"./plus-B0QqRDRs.js";import{L as w}from"./link-nc4Htzmm.js";import{G as re}from"./grip-vertical-BZSePUJo.js";import{S as te}from"./save-CKIc8EmZ.js";import{T as ie}from"./trash-2-B9W2MJEE.js";import{H as le}from"./hash-l3BYCFKA.js";import{E as ce}from"./external-link-Dq9xh9iT.js";import"./radix-slot-BTvEbTmE.js";import"./ui-radix-LBOF5AHa.js";import"./check-Dwauox-g.js";import"./x-CrVVxRiw.js";const oe={internal:w,section:le,external:ce},de={internal:"Interne Seite",section:"Seiten-Abschnitt",external:"Externer Link"};function Be(){const{data:r,isLoading:C}=Q(),l=X(),m=ee(),S=se(),[L,h]=k.useState(!1),[n,c]=k.useState(null),T=async s=>{try{await l.mutateAsync({id:s.id,is_active:!s.is_active}),t.success(s.is_active?"Menüpunkt deaktiviert":"Menüpunkt aktiviert")}catch{t.error("Fehler beim Aktualisieren")}},_=async()=>{if(!(n!=null&&n.label)||!(n!=null&&n.href)){t.error("Bitte alle Felder ausfüllen");return}try{if(n.id)await l.mutateAsync(n),t.success("Menüpunkt aktualisiert");else{const s=Math.max(0,...(r==null?void 0:r.map(a=>a.position))||[]);await m.mutateAsync({label:n.label,href:n.href,link_type:n.link_type||"internal",position:s+1,is_active:!0,target:n.target||"_self"}),t.success("Menüpunkt erstellt")}h(!1),c(null)}catch{t.error("Fehler beim Speichern")}},A=async s=>{if(confirm("Menüpunkt wirklich löschen?"))try{await S.mutateAsync(s),t.success("Menüpunkt gelöscht")}catch{t.error("Fehler beim Löschen")}},f=async(s,a)=>{if(!r)return;const x=r.findIndex(v=>v.id===s.id),u=a==="up"?x-1:x+1;if(u<0||u>=r.length)return;const g=r[u];try{await l.mutateAsync({id:s.id,position:g.position}),await l.mutateAsync({id:g.id,position:s.position})}catch{t.error("Fehler beim Verschieben")}};return C?e.jsx("div",{className:"flex items-center justify-center h-64",children:e.jsx(N,{className:"h-8 w-8 animate-spin text-muted-foreground"})}):e.jsxs("div",{className:"min-h-screen",children:[e.jsxs("div",{className:"mb-8 flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx(z,{to:"/admin/einstellungen",children:e.jsxs(i,{variant:"ghost",size:"sm",className:"mb-4 -ml-2",children:[e.jsx(ne,{className:"h-4 w-4 mr-2"}),"Zurück zu Einstellungen"]})}),e.jsx("h1",{className:"text-3xl font-bold text-foreground mb-2",children:"Navigation"}),e.jsx("p",{className:"text-muted-foreground",children:"Menüpunkte und deren Reihenfolge verwalten."})]}),e.jsxs(R,{open:L,onOpenChange:h,children:[e.jsx(G,{asChild:!0,children:e.jsxs(i,{className:"gap-2",onClick:()=>c({link_type:"internal",target:"_self"}),children:[e.jsx(ae,{className:"h-4 w-4"}),"Neuer Menüpunkt"]})}),e.jsxs(K,{children:[e.jsxs(U,{children:[e.jsx(Y,{children:n!=null&&n.id?"Menüpunkt bearbeiten":"Neuer Menüpunkt"}),e.jsx(W,{children:"Fügen Sie einen neuen Menüpunkt zur Navigation hinzu."})]}),e.jsxs("div",{className:"space-y-4 py-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(p,{htmlFor:"label",children:"Bezeichnung"}),e.jsx(b,{id:"label",value:(n==null?void 0:n.label)||"",onChange:s=>c(a=>({...a,label:s.target.value})),placeholder:"z.B. Startseite"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(p,{htmlFor:"href",children:"Link / URL"}),e.jsx(b,{id:"href",value:(n==null?void 0:n.href)||"",onChange:s=>c(a=>({...a,href:s.target.value})),placeholder:"z.B. / oder #contact oder https://..."})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(p,{htmlFor:"link_type",children:"Link-Typ"}),e.jsxs(P,{value:(n==null?void 0:n.link_type)||"internal",onValueChange:s=>c(a=>({...a,link_type:s})),children:[e.jsx(H,{children:e.jsx(V,{})}),e.jsxs(O,{children:[e.jsx(j,{value:"internal",children:"Interne Seite (z.B. /fahrzeugsuche)"}),e.jsx(j,{value:"section",children:"Seiten-Abschnitt (z.B. #contact)"}
1),e.jsx(j,{value:"external",children:"Externer Link (öffnet in neuem Tab)"})]})]})]})]}),e.jsxs(Z,{children:[e.jsx(i,{variant:"outline",onClick:()=>h(!1),children:"Abbrechen"}),e.jsxs(i,{onClick:_,disabled:m.isPending||l.isPending,children:[(m.isPending||l.isPending)&&e.jsx(N,{className:"h-4 w-4 animate-spin mr-2"}),"Speichern"]})]})]})]})]}),e.jsxs(M,{children:[e.jsxs(D,{children:[e.jsx(I,{children:"Menüpunkte"}),e.jsx(B,{children:"Verwalten Sie die Menüpunkte der Website-Navigation."})]}),e.jsx(E,{children:e.jsxs($,{children:[e.jsx(q,{children:e.jsxs(y,{children:[e.jsx(o,{className:"w-12",children:"Pos."}),e.jsx(o,{children:"Bezeichnung"}),e.jsx(o,{children:"Link"}),e.jsx(o,{children:"Typ"}),e.jsx(o,{className:"w-20",children:"Aktiv"}),e.jsx(o,{className:"w-32",children:"Aktionen"})]})}),e.jsx(J,{children:r==null?void 0:r.map((s,a)=>{const x=oe[s.link_type]||w;return e.jsxs(y,{children:[e.jsx(d,{children:e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(re,{className:"h-4 w-4 text-muted-foreground"}),e.jsxs("div",{className:"flex flex-col",children:[e.jsx(i,{variant:"ghost",size:"icon",className:"h-5 w-5",onClick:()=>f(s,"up"),disabled:a===0,children:"â"}),e.jsx(i,{variant:"ghost",size:"icon",className:"h-5 w-5",onClick:()=>f(s,"down"),disabled:a===((r==null?void 0:r.length)||0)-1,children:"â"})]})]})}),e.jsx(d,{className:"font-medium",children:s.label}),e.jsx(d,{className:"text-muted-foreground",children:s.href}),e.jsx(d,{children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(x,{className:"h-4 w-4 text-muted-foreground"}),e.jsx("span",{className:"text-sm",children:de[s.link_type]})]})}),e.jsx(d,{children:e.jsx(F,{checked:s.is_active,onCheckedChange:()=>T(s)})}),e.jsx(d,{children:e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(i,{variant:"ghost",size:"icon",onClick:()=>{c(s),h(!0)},children:e.jsx(te,{className:"h-4 w-4"})}),e.jsx(i,{variant:"ghost",size:"icon",onClick:()=>A(s.id),children:e.jsx(ie,{className:"h-4 w-4 text-destructive"})})]})})]},s.id)})})]})})]})]})}export{Be 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.