import{j as e,m as k,A as D}from"./vendor-animation-0s3FMHwK.js";import{r as l}from"./vendor-react-BVs3cwbi.js";import{u as Z,a as U,b as A,c as N,F as j,C as W}from"./index-CCZhiEoc.js";import{F as H}from"./Forbidden-D25jV3Oq.js";import I from"./RichEditor-Bfur5pi6.js";import"./vendor-utils-Dyr8OjFr.js";const g="/api/admin";function ee(){const{hasPermission:n}=Z(),[f,w]=l.useState("items");return n("offers.settings")?e.jsxs("div",{children:[e.jsx(k.div,{className:"admin-page-header",initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.4},children:e.jsxs("div",{children:[e.jsx("h1",{className:"admin-page-title",children:"Šablony"}),e.jsx("p",{className:"admin-page-subtitle",children:"Šablony položek a rozsahu projektu"})]})}),e.jsxs("div",{className:"offers-tabs",children:[e.jsx("button",{className:`offers-tab ${f==="items"?"active":""}`,onClick:()=>w("items"),children:"Šablony položek"}),e.jsx("button",{className:`offers-tab ${f==="scopes"?"active":""}`,onClick:()=>w("scopes"),children:"Šablony rozsahu"})]}),f==="items"?e.jsx(K,{}):e.jsx(R,{})]}):e.jsx(H,{})}function K(){const n=U(),[f,w]=l.useState(!0),[y,F]=l.useState([]),[z,m]=l.useState(!1),[h,T]=l.useState(null),[p,_]=l.useState(!1),[c,d]=l.useState({name:"",description:"",default_price:0,category:""}),[u,x]=l.useState({show:!1,template:null}),[$,E]=l.useState(!1);A(z);const b=l.useCallback(async()=>{try{const a=await N(`${g}/offers-templates.php?action=items`);if(a.status===401)return;const o=await a.json();o.success&&F(o.data.templates)}catch{n.error("Nepodařilo se načíst šablony")}finally{w(!1)}},[n]);l.useEffect(()=>{b()},[b]);const C=()=>{T(null),d({name:"",description:"",default_price:0,category:""}),m(!0)},P=a=>{T(a),d({name:a.name||"",description:a.description||"",default_price:a.default_price||0,category:a.category||""}),m(!0)},M=async()=>{if(!c.name.trim()){n.error("Název šablony je povinný");return}_(!0);try{const a=h?{...c,id:h.id}:c,S=await(await N(`${g}/offers-templates.php?action=item`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)})).json();S.success?(m(!1),await new Promise(B=>setTimeout(B,300)),n.success(S.message),b()):n.error(S.error)}catch{n.error("Chyba připojení")}finally{_(!1)}},O=async()=>{if(u.template){E(!0);try{const o=await(await N(`${g}/offers-templates.php?action=item&id=${u.template.id}`,{method:"DELETE"})).json();o.success?(x({show:!1,template:null}),n.success(o.message),b()):n.error(o.error)}catch{n.error("Chyba připojení")}finally{E(!1)}}};return f?e.jsx("div",{className:"admin-card",children:e.jsx("div",{className:"admin-skeleton",style:{gap:"1.25rem"},children:[0,1,2,3,4].map(a=>e.jsxs("div",{className:"admin-skeleton-row",children:[e.jsx("div",{className:"admin-skeleton-line circle"}),e.jsxs("div",{className:"flex-1",children:[e.jsx("div",{className:"admin-skeleton-line w-1/3",style:{marginBottom:"0.5rem"}}),e.jsx("div",{className:"admin-skeleton-line w-1/4",style:{height:"10px"}})]}),e.jsx("div",{className:"admin-skeleton-line w-1/4"})]},a))})}):e.jsxs(e.Fragment,{children:[e.jsxs(k.div,{className:"admin-card",initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.4,delay:.1},children:[e.jsxs("div",{className:"admin-card-header flex-between",children:[e.jsxs("h3",{className:"admin-card-title",children:["Šablony položek (",y.length,")"]}),e.jsxs("button",{onClick:C,className:"admin-btn admin-btn-primary admin-btn-sm",children:[e.jsxs("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[e.jsx("line",{x1:"12",y1:"5",x2:"12",y2:"19"}),e.jsx("line",{x1:"5",y1:"12",x2:"19",y2:"12"})]}),"Přidat"]})]}),e.jsx("div",{className:"admin-card-body",children:y.length===0?e.jsx("div",{className:"admin-empty-state",children:e.jsx("p",{children:"Zatím žádné šablony položek."})}):e.jsx("div",{className:"admin-table-responsive",children:e.jsxs("table",{className:"admin-table",children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{children:"Název"}),e.jsx("th",{children:"Popis"}),e.jsx("th",{children:"Cena"}),e.jsx("th",{children:"Kategorie"}),e.jsx("th",{children:"Akce"})]})}),e.jsx("tbody",{children:y.map(a=>e.jsxs("tr",{children:[e.jsx("td",{className:"fw-500",children:a.name}),e.jsx("td",{style:{color:"var(--text-secondary)"},children:a.description||"—"}),e.jsx("td",{children:Number(a.default_price).toFixed(2)}),e.jsx("td",{style:{color:"var(--text-secondary)"},children:a.category||"—"}),e.jsx("td",{children:e.jsxs("div",{className:"admin-table-actions",children:[e.jsx("button",{onClick:()=>P(a),className:"admin-btn-icon",title:"Upravit","aria-label":"Upravit",children:e.jsxs("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[e.jsx("path",{d:"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"}),e.jsx("path",{d:"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z"})]})}),e.jsx("button",{onClick:()=>x({show:!0,template:a}),className:"admin-btn-icon danger",title:"Smazat","aria-label":"Smazat",children:e.jsxs("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[e.jsx("polyline",{points:"3 6 5 6 21 6"}),e.jsx("path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"})]})})]})})]},a.id))})]})})})]}),e.jsx(D,{children:z&&e.jsxs(k.div,{className:"admin-modal-overlay",initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{duration:.2},children:[e.jsx("div",{className:"admin-modal-backdrop",onClick:()=>m(!1)}),e.jsxs(k.div,{className:"admin-modal",initial:{opacity:0,scale:.95,y:20},animate:{opacity:1,scale:1,y:0},exit:{opacity:0,scale:.95,y:20},transition:{duration:.2},children:[e.jsx("div",{className:"admin-modal-header",children:e.jsx("h2",{className:"admin-modal-title",children:h?"Upravit šablonu":"Nová šablona položky"})}),e.jsx("div",{className:"admin-modal-body",children:e.jsxs("div",{className:"admin-form",children:[e.jsx(j,{label:"Název",required:!0,children:e.jsx("input",{type:"text",value:c.name,onChange:a=>d(o=>({...o,name:a.target.value})),className:"admin-form-input"})}),e.jsx(j,{label:"Popis",children:e.jsx("textarea",{value:c.description,onChange:a=>d(o=>({...o,description:a.target.value})),className:"admin-form-input",rows:2})}),e.jsxs("div",{className:"admin-form-row",children:[e.jsx(j,{label:"Výchozí cena",children:e.jsx("input",{type:"number",value:c.default_price,onChange:a=>d(o=>({...o,default_price:parseFloat(a.target.value)||0})),className:"admin-form-input",step:"0.01"})}),e.jsx(j,{label:"Kategorie",children:e.jsx("input",{type:"text",value:c.category,onChange:a=>d(o=>({...o,category:a.target.value})),className:"admin-form-input"})})]})]})}),e.jsxs("div",{className:"admin-modal-footer",children:[e.jsx("button",{type:"button",onClick:()=>m(!1),className:"admin-btn admin-btn-secondary",disabled:p,children:"Zrušit"}),e.jsxs("button",{type:"button",onClick:M,className:"admin-btn admin-btn-primary",disabled:p,children:[p&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"admin-spinner admin-spinner-sm"}),"Ukládání..."]}),!p&&(h?"Uložit":"Vytvořit")]})]})]})]})}),e.jsx(W,{isOpen:u.show,onClose:()=>x({show:!1,template:null}),onConfirm:O,title:"Smazat šablonu",message:`Opravdu chcete smazat šablonu "${u.template?.name}"?`,confirmText:"Smazat",cancelText:"Zrušit",type:"danger",loading:$})]})}function R(){const n=U(),[f,w]=l.useState(!0),[y,F]=l.useState([]),[z,m]=l.useState(!1),[h,T]=l.useState(null),[p,_]=l.useState(!1),[c,d]=l.useState({name:"",sections:[]}),u=l.useRef(0),[x,$]=l.useState({show:!1,template:null}),[E,b]=l.useState(!1);A(z);const C=l.useCallback(async()=>{try{const s=await N(`${g}/offers-templates.php?action=scopes`);if(s.status===401)return;const t=await s.json();t.success&&F(t.data.templates)}catch{n.error("Nepodařilo se načíst šablony")}finally{w(!1)}},[n]);l.useEffect(()=>{C()},[C]);const P=()=>{T(null),d({name:"",sections:[{_key:`sc-${++u.current}`,title:"",title_cz:"",content:""}]}),m(!0)},M=async s=>{try{const i=await(await N(`${g}/offers-templates.php?action=scope_detail&id=${s.id}`)).json();i.success&&(T(i.data),d({name:i.data.name||"",sections:i.data.sections?.length?i.data.sections.map(r=>({_key:`sc-${++u.current}`,title:r.title||"",title_cz:r.title_cz||"",content:r.content||""})):[{_key:`sc-${++u.current}`,title:"",title_cz:"",content:""}]}),m(!0))}catch{n.error("Nepodařilo se načíst detail šablony")}},O=()=>{d(s=>({...s,sections:[...s.sections,{_key:`sc-${++u.current}`,title:"",title_cz:"",content:""}]}))},a=s=>{d(t=>({...t,sections:t.sections.filter((i,r)=>r!==s)}))},o=(s,t,i)=>{d(r=>({...r,sections:r.sections.map((v,V)=>V===s?{...v,[t]:i}:v)}))},S=(s,t)=>{d(i=>{const r=[...i.sections],v=s+t;return v<0||v>=r.length?i:([r[s],r[v]]=[r[v],r[s]],{...i,sections:r})})},B=async()=>{if(!c.name.trim()){n.error("Název šablony je povinný");return}_(!0);try{const s=h?{...c,id:h.id}:c,i=await(await N(`${g}/offers-templates.php?action=scope`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(s)})).json();i.success?(m(!1),await new Promise(r=>setTimeout(r,300)),n.success(i.message),C()):n.error(i.error)}catch{n.error("Chyba připojení")}finally{_(!1)}},L=async()=>{if(x.template){b(!0);try{const t=await(await N(`${g}/offers-templates.php?action=scope&id=${x.template.id}`,{method:"DELETE"})).json();t.success?($({show:!1,template:null}),n.success(t.message),C()):n.error(t.error)}catch{n.error("Chyba připojení")}finally{b(!1)}}};return f?e.jsx("div",{className:"admin-card",children:e.jsx("div",{className:"admin-skeleton",style:{gap:"1.25rem"},children:[0,1,2,3,4].map(s=>e.jsxs("div",{className:"admin-skeleton-row",children:[e.jsx("div",{className:"admin-skeleton-line circle"}),e.jsxs("div",{className:"flex-1",children:[e.jsx("div",{className:"admin-skeleton-line w-1/3",style:{marginBottom:"0.5rem"}}),e.jsx("div",{className:"admin-skeleton-line w-1/4",style:{height:"10px"}})]}),e.jsx("div",{className:"admin-skeleton-line w-1/4"})]},s))})}):e.jsxs(e.Fragment,{children:[e.jsxs(k.div,{className:"admin-card",initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.4,delay:.1},children:[e.jsxs("div",{className:"admin-card-header flex-between",children:[e.jsxs("h3",{className:"admin-card-title",children:["Šablony rozsahu (",y.length,")"]}),e.jsxs("button",{onClick:P,className:"admin-btn admin-btn-primary admin-btn-sm",children:[e.jsxs("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[e.jsx("line",{x1:"12",y1:"5",x2:"12",y2:"19"}),e.jsx("line",{x1:"5",y1:"12",x2:"19",y2:"12"})]}),"Přidat"]})]}),e.jsx("div",{className:"admin-card-body",children:y.length===0?e.jsx("div",{className:"admin-empty-state",children:e.jsx("p",{children:"Zatím žádné šablony rozsahu."})}):e.jsx("div",{className:"admin-table-responsive",children:e.jsxs("table",{className:"admin-table",children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{children:"Název"}),e.jsx("th",{children:"Akce"})]})}),e.jsx("tbody",{children:y.map(s=>e.jsxs("tr",{children:[e.jsx("td",{className:"fw-500",children:s.name}),e.jsx("td",{children:e.jsxs("div",{className:"admin-table-actions",children:[e.jsx("button",{onClick:()=>M(s),className:"admin-btn-icon",title:"Upravit","aria-label":"Upravit",children:e.jsxs("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[e.jsx("path",{d:"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"}),e.jsx("path",{d:"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z"})]})}),e.jsx("button",{onClick:()=>$({show:!0,template:s}),className:"admin-btn-icon danger",title:"Smazat","aria-label":"Smazat",children:e.jsxs("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[e.jsx("polyline",{points:"3 6 5 6 21 6"}),e.jsx("path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"})]})})]})})]},s.id))})]})})})]}),e.jsx(D,{children:z&&e.jsxs(k.div,{className:"admin-modal-overlay",initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{duration:.2},children:[e.jsx("div",{className:"admin-modal-backdrop",onClick:()=>m(!1)}),e.jsxs(k.div,{className:"admin-modal admin-modal-lg",initial:{opacity:0,scale:.95,y:20},animate:{opacity:1,scale:1,y:0},exit:{opacity:0,scale:.95,y:20},transition:{duration:.2},children:[e.jsx("div",{className:"admin-modal-header",children:e.jsx("h2",{className:"admin-modal-title",children:h?"Upravit šablonu rozsahu":"Nová šablona rozsahu"})}),e.jsx("div",{className:"admin-modal-body",children:e.jsxs("div",{className:"admin-form",children:[e.jsx(j,{label:"Název šablony",required:!0,children:e.jsx("input",{type:"text",value:c.name,onChange:s=>d(t=>({...t,name:s.target.value})),className:"admin-form-input"})}),e.jsxs("div",{className:"admin-form-group",children:[e.jsx("label",{className:"admin-form-label mb-2",children:"Sekce"}),e.jsx("div",{className:"offers-scope-list",children:c.sections.map((s,t)=>e.jsxs("div",{className:"offers-scope-section",children:[e.jsxs("div",{className:"offers-scope-section-header",children:[e.jsxs("span",{className:"offers-scope-number",children:[t+1,"."]}),e.jsx("span",{className:"offers-scope-title",children:s.title||s.title_cz||`Sekce ${t+1}`}),e.jsxs("div",{className:"offers-scope-actions",children:[e.jsx("button",{type:"button",onClick:()=>S(t,-1),disabled:t===0,className:"admin-btn-icon",title:"Posunout nahoru","aria-label":"Posunout nahoru",children:e.jsx("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:e.jsx("path",{d:"M18 15l-6-6-6 6"})})}),e.jsx("button",{type:"button",onClick:()=>S(t,1),disabled:t===c.sections.length-1,className:"admin-btn-icon",title:"Posunout dolů","aria-label":"Posunout dolů",children:e.jsx("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:e.jsx("path",{d:"M6 9l6 6 6-6"})})}),c.sections.length>1&&e.jsx("button",{type:"button",onClick:()=>a(t),className:"admin-btn-icon danger",title:"Odebrat","aria-label":"Odebrat",children:e.jsxs("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[e.jsx("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),e.jsx("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]})})]})]}),e.jsxs("div",{className:"admin-form",children:[e.jsxs("div",{className:"admin-form-row",children:[e.jsx(j,{label:e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"offers-lang-badge",children:"EN"})," Název sekce"]}),children:e.jsx("input",{type:"text",value:s.title,onChange:i=>o(t,"title",i.target.value),className:"admin-form-input",placeholder:"Název sekce (anglicky)"})}),e.jsx(j,{label:e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"offers-lang-badge offers-lang-badge-cz",children:"CZ"})," Název sekce"]}),children:e.jsx("input",{type:"text",value:s.title_cz,onChange:i=>o(t,"title_cz",i.target.value),className:"admin-form-input",placeholder:"Název sekce (česky)"})})]}),e.jsx(j,{label:"Obsah",children:e.jsx(I,{value:s.content,onChange:i=>o(t,"content",i),placeholder:"Obsah sekce...",minHeight:"150px"})})]})]},s._key))}),e.jsx("div",{style:{marginTop:"0.75rem"},children:e.jsx("button",{type:"button",onClick:O,className:"admin-btn admin-btn-secondary admin-btn-sm",children:"+ Přidat sekci"})})]})]})}),e.jsxs("div",{className:"admin-modal-footer",children:[e.jsx("button",{type:"button",onClick:()=>m(!1),className:"admin-btn admin-btn-secondary",disabled:p,children:"Zrušit"}),e.jsxs("button",{type:"button",onClick:B,className:"admin-btn admin-btn-primary",disabled:p,children:[p&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"admin-spinner admin-spinner-sm"}),"Ukládání..."]}),!p&&(h?"Uložit":"Vytvořit")]})]})]})]})}),e.jsx(W,{isOpen:x.show,onClose:()=>$({show:!1,template:null}),onConfirm:L,title:"Smazat šablonu",message:`Opravdu chcete smazat šablonu "${x.template?.name}"?`,confirmText:"Smazat",cancelText:"Zrušit",type:"danger",loading:E})]})}export{ee as default};