1import{s as S,r as x,b as z,t as h,j as e,L as w}from"./vendor-react-core-_0sZDOLQ.js";import{c as D,B as n,b as d}from"./index-j07E1qHv.js";import{I as c}from"./input-rti45mgP.js";import{L as r}from"./label-7HT5__eZ.js";import{T as _}from"./textarea-CHKzP3UK.js";import{C as q,a as L}from"./card-DHmBnTdH.js";import{B as A}from"./badge-BXqwvh8U.js";import{D as F,b as T,c as E,d as I}from"./dialog-C9ty4md6.js";import{S as M,a as Q,b as B,c as O,d as K}from"./select-DHshRvNJ.js";import{t as g}from"./index-CDqomOa1.js";import{_ as V,a0 as R,J as U,ad as G,a1 as H}from"./vendor-lucide-Ddz0eB7N.js";import{m as J}from"./vendor-framer-motion-C1oRD-X5.js";import"./vendor-radix-CFmJ1img.js";import"./vendor-utils-BRu4i-LD.js";import"./vendor-supabase-Ca6cp8v2.js";const X=["camisolas","equipamento","acessorios","outros"];function me(){const m=S(),[v,u]=x.useState(!1),[l,j]=x.useState(null),[a,t]=x.useState({name:"",description:"",price:"",category:"camisolas",stock:"",image_url:"",sizes:"",active:!0}),{data:p,isLoading:f}=z({queryKey:["admin-products"],queryFn:()=>d.entities.Product.list("-created_date"),initialData:[]}),y=h({mutationFn:s=>d.entities.Product.create(s),onSuccess:()=>{m.invalidateQueries(["admin-products"]),g.success("Produto criado com sucesso"),o()}}),N=h({mutationFn:({id:s,data:i})=>d.entities.Product.update(s,i),onSuccess:()=>{m.invalidateQueries(["admin-products"]),g.success("Produto atualizado"),o()}}),b=h({mutationFn:s=>d.entities.Product.delete(s),onSuccess:()=>{m.invalidateQueries(["admin-products"]),g.success("Produto eliminado")}}),o=()=>{t({name:"",description:"",price:"",category:"camisolas",stock:"",image_url:"",sizes:"",active:!0}),j(null),u(!1)},C=s=>{s.preventDefault();const i={...a,price:parseFloat(a.price),stock:parseInt(a.stock),sizes:a.sizes?a.sizes.split(",").map(P=>P.trim()):[]};l?N.mutate({id:l.id,data:i}):y.mutate(i)},k=s=>{var i;j(s),t({name:s.name,description:s.description||"",price:s.price,category:s.category,stock:s.stock,image_url:s.image_url||"",sizes:((i=s.sizes)==null?void 0:i.join(", "))||"",active:s.active}),u(!0)};return e.jsx("main",{className:"min-h-screen bg-gray-50 py-12",children:e.jsxs("div",{className:"container mx-auto px-4",children:[e.jsx(w,{to:D("Admin"),children:e.jsxs(n,{variant:"ghost",className:"mb-6",children:[e.jsx(V,{className:"w-4 h-4 mr-2"}),"Voltar ao Dashboard"]})}),e.jsxs("div",{className:"flex items-center justify-between mb-8",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-3xl font-bold text-gray-900",children:"Gestão de Produtos"}),e.jsxs("p",{className:"text-gray-600 mt-1",children:[p.length," produtos cadastrados"]})]}),e.jsxs(n,{onClick:()=>u(!0),className:"bg-red-600 hover:bg-red-700",children:[e.jsx(R,{className:"w-4 h-4 mr-2"}),"Novo Produto"]})]}),f?e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-6",children:[...Array(6)].map((s,i)=>e.jsx("div",{className:"bg-white rounded-xl h-64 animate-pulse"},i))}):e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-6",children:p.map((s,i)=>e.jsx(J.div,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{delay:i*.05},children:e.jsx(q,{children:e.jsxs(L,{className:"p-4",children:[e.jsx("div",{className:"aspect-square bg-gray-100 rounded-lg mb-3 overflow-hidden",children:s.image_url?e.jsx("img",{src:s.image_url,alt:s.name,className:"w-full h-full object-cover"}):e.jsx("div",{className:"w-full h-full flex items-center justify-center",children:e.jsx(U,{className:"w-16 h-16 text-gray-300"})})}),e.jsx("h3",{className:"font-bold text-gray-900 mb-1",children:s.name}),e.jsx("p",{className:"text-sm text-gray-600 mb-2 line-clamp-2",children:s.description}),e.jsxs("div",{className:"flex items-center justify-between mb-3",children:[e.jsxs("span",{className:"text-lg font-bold text-red-600",children:[s.price.toLocaleString("pt-AO")," Kz"]}),e.jsx(A,{variant:s.active?"default":"secondary",children:s.active?"Ativo":"Inativo"})]}),e.jsxs("p",{className:"text-sm text-gray-600 mb-3",children:["Stock: ",s.stock]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsxs(n,{size:"sm",variant:"outline",onClick:()=>k(s),className:"flex-1",children:[e.jsx(G,{className:"w-4 h-4 mr-1"}),"Editar"]}),e.jsx(n,{size:"sm",variant:"destructive",onClick:()=>{confirm("Tem certeza que deseja eliminar este produto?")&&b.mutate(s.id)},children:e.jsx(H,{className:"w-4 h-4"})})]})]})})},s.id))}),e.jsx(F,{open:v,onOpenChange:s=>!s&&o(),children:e.jsxs(T,{className:"max-w-2xl",children:[e.jsx(E,{children:e.jsx(I,{children:l?"Editar Produto":"Novo Produto"})}),e.jsxs("form",{onSubmit:C,className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx(r,{children:"Nome *"}),e.jsx(c,{value:a.name,onChange:s=>t({...a,name:s.target.value}),required:!0})]}),e.jsxs("div",{children:[e.jsx(r,{children:"Descrição"}),e.jsx(_,{value:a.description,onChange:s=>t({...a,description:s.target.value}),rows:3})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{children:[e.jsx(r,{children:"Preç
1o (Kz) *"}),e.jsx(c,{type:"number",value:a.price,onChange:s=>t({...a,price:s.target.value}),required:!0})]}),e.jsxs("div",{children:[e.jsx(r,{children:"Stock *"}),e.jsx(c,{type:"number",value:a.stock,onChange:s=>t({...a,stock:s.target.value}),required:!0})]})]}),e.jsxs("div",{children:[e.jsx(r,{children:"Categoria *"}),e.jsxs(M,{value:a.category,onValueChange:s=>t({...a,category:s}),children:[e.jsx(Q,{children:e.jsx(B,{})}),e.jsx(O,{children:X.map(s=>e.jsx(K,{value:s,children:s},s))})]})]}),e.jsxs("div",{children:[e.jsx(r,{children:"URL da Imagem"}),e.jsx(c,{value:a.image_url,onChange:s=>t({...a,image_url:s.target.value})})]}),e.jsxs("div",{children:[e.jsx(r,{children:"Tamanhos (separados por vÃrgula)"}),e.jsx(c,{value:a.sizes,onChange:s=>t({...a,sizes:s.target.value}),placeholder:"S, M, L, XL"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("input",{type:"checkbox",id:"active",checked:a.active,onChange:s=>t({...a,active:s.target.checked})}),e.jsx(r,{htmlFor:"active",children:"Produto Ativo"})]}),e.jsxs("div",{className:"flex gap-3",children:[e.jsx(n,{type:"button",variant:"outline",onClick:o,className:"flex-1",children:"Cancelar"}),e.jsx(n,{type:"submit",className:"flex-1 bg-red-600 hover:bg-red-700",children:l?"Atualizar":"Criar"})]})]})]})})]})})}export{me 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.