- pridano 20 utility trid (flex-1, mb-2, text-right, fw-500, admin-spinner-sm, atd.) - nahrazeno ~100 opakovanych inline stylu ve 39 JSX souborech - slouceno leave.css, orders.css, projects.css do admin.css (status badges) - bundle size: 228.91 -> 228.43 kB (-0.48 kB) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2 lines
8.1 KiB
JavaScript
2 lines
8.1 KiB
JavaScript
import{j as e,m as y}from"./vendor-animation-0s3FMHwK.js";import{r as d,L as o}from"./vendor-react-BVs3cwbi.js";import{a as B,u as L,d as P,e as N,C as A,c as T}from"./index-CIpK9ruO.js";import{F as D}from"./Forbidden-D25jV3Oq.js";import{u as E,a as M,S as l}from"./useListData-DkESuzM_.js";import{P as $}from"./Pagination-B1sbY6V7.js";import"./vendor-utils-Dyr8OjFr.js";const I="/api/admin",H={aktivni:"Aktivní",dokonceny:"Dokončený",zruseny:"Zrušený"},U={aktivni:"admin-badge-project-aktivni",dokonceny:"admin-badge-project-dokonceny",zruseny:"admin-badge-project-zruseny"};function q(){const c=B(),{hasPermission:m}=L(),{sort:g,order:a,handleSort:n,activeSort:i}=E("project_number"),[v,w]=d.useState(""),[b,k]=d.useState(1),[j,u]=d.useState(null),[t,x]=d.useState(null),{items:r,setItems:f,loading:S,pagination:h}=M("projects.php",{dataKey:"projects",search:v,sort:g,order:a,page:b,errorMsg:"Nepodařilo se načíst projekty"});if(!m("projects.view"))return e.jsx(D,{});const C=async()=>{if(t){u(t.id);try{const p=await(await T(`${I}/projects.php?id=${t.id}`,{method:"DELETE"})).json();p.success?(c.success(p.message||"Projekt byl smazán"),f(_=>_.filter(z=>z.id!==t.id))):c.error(p.error||"Nepodařilo se smazat projekt")}catch{c.error("Chyba připojení")}finally{u(null),x(null)}}};return S?e.jsx("div",{children:e.jsxs("div",{className:"admin-skeleton",style:{padding:0,gap:"1.5rem"},children:[e.jsxs("div",{className:"admin-skeleton-row",style:{justifyContent:"space-between"},children:[e.jsxs("div",{children:[e.jsx("div",{className:"admin-skeleton-line h-8",style:{width:"200px",marginBottom:"0.5rem"}}),e.jsx("div",{className:"admin-skeleton-line",style:{width:"140px"}})]}),e.jsx("div",{className:"admin-skeleton-line h-10",style:{width:"140px",borderRadius:"8px"}})]}),e.jsx("div",{className:"admin-card",children:e.jsxs("div",{className:"admin-skeleton",style:{gap:"1.25rem"},children:[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"})]}),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/2",style:{marginBottom:"0.5rem"}}),e.jsx("div",{className:"admin-skeleton-line w-1/3",style:{height:"10px"}})]}),e.jsx("div",{className:"admin-skeleton-line w-1/4"})]}),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-3/4",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"})]}),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/2",style:{marginBottom:"0.5rem"}}),e.jsx("div",{className:"admin-skeleton-line w-1/3",style:{height:"10px"}})]}),e.jsx("div",{className:"admin-skeleton-line w-1/4"})]}),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"})]})]})})]})}):e.jsxs("div",{children:[e.jsxs(y.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:"Projekty"}),e.jsxs("p",{className:"admin-page-subtitle",children:[h?.total??r.length," ",P(h?.total??r.length,"projekt","projekty","projektů")]})]}),m("projects.create")&&e.jsxs(o,{to:"/projects/new",className:"admin-btn admin-btn-primary",children:[e.jsxs("svg",{width:"20",height:"20",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"})]}),"Nový projekt"]})]}),e.jsx(y.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-body",children:[e.jsx("div",{className:"admin-search-bar mb-4",children:e.jsx("input",{type:"text",value:v,onChange:s=>{w(s.target.value),k(1)},className:"admin-form-input",placeholder:"Hledat podle čísla, názvu nebo zákazníka..."})}),r.length===0?e.jsxs("div",{className:"admin-empty-state",children:[e.jsx("div",{className:"admin-empty-icon",children:e.jsx("svg",{width:"28",height:"28",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:e.jsx("path",{d:"M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z"})})}),e.jsx("p",{children:"Zatím nejsou žádné projekty."}),e.jsx("p",{style:{color:"var(--text-tertiary)",fontSize:"0.875rem"},children:"Vytvořte první projekt tlačítkem výše nebo automaticky při vytvoření objednávky."})]}):e.jsx("div",{className:"admin-table-responsive",children:e.jsxs("table",{className:"admin-table",children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsxs("th",{style:{cursor:"pointer"},onClick:()=>n("project_number"),children:["Číslo ",e.jsx(l,{column:"project_number",sort:i,order:a})]}),e.jsxs("th",{style:{cursor:"pointer"},onClick:()=>n("name"),children:["Název ",e.jsx(l,{column:"name",sort:i,order:a})]}),e.jsx("th",{children:"Zákazník"}),e.jsxs("th",{style:{cursor:"pointer"},onClick:()=>n("status"),children:["Stav ",e.jsx(l,{column:"status",sort:i,order:a})]}),e.jsxs("th",{style:{cursor:"pointer"},onClick:()=>n("start_date"),children:["Začátek ",e.jsx(l,{column:"start_date",sort:i,order:a})]}),e.jsxs("th",{style:{cursor:"pointer"},onClick:()=>n("end_date"),children:["Konec ",e.jsx(l,{column:"end_date",sort:i,order:a})]}),e.jsx("th",{children:"Objednávka"}),e.jsx("th",{children:"Akce"})]})}),e.jsx("tbody",{children:r.map(s=>e.jsxs("tr",{children:[e.jsx("td",{className:"admin-mono",children:e.jsx(o,{to:`/projects/${s.id}`,className:"link-accent",children:s.project_number})}),e.jsx("td",{className:"fw-500",children:s.name||"—"}),e.jsx("td",{children:s.customer_name||"—"}),e.jsx("td",{children:e.jsx("span",{className:`admin-badge ${U[s.status]||""}`,children:H[s.status]||s.status})}),e.jsx("td",{className:"admin-mono",children:N(s.start_date)}),e.jsx("td",{className:"admin-mono",children:N(s.end_date)}),e.jsx("td",{children:s.order_id?e.jsx(o,{to:`/orders/${s.order_id}`,className:"text-secondary",style:{textDecoration:"none"},children:s.order_number}):"—"}),e.jsx("td",{children:e.jsxs("div",{className:"admin-table-actions",children:[e.jsx(o,{to:`/projects/${s.id}`,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"})]})}),!s.order_id&&m("projects.create")&&e.jsx("button",{onClick:()=>x(s),className:"admin-btn-icon danger",title:"Smazat projekt",disabled:j===s.id,children:j===s.id?e.jsx("div",{className:"admin-spinner admin-spinner-sm"}):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 6l-1 14a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2L5 6"}),e.jsx("path",{d:"M10 11v6M14 11v6"})]})})]})})]},s.id))})]})}),e.jsx($,{pagination:h,onPageChange:k})]})}),e.jsx(A,{isOpen:!!t,onClose:()=>x(null),onConfirm:C,title:"Smazat projekt",message:`Opravdu chcete smazat projekt ${t?.project_number}?`,confirmText:"Smazat",type:"danger",loading:!!j})]})}export{q as default};
|