1import{j as e}from"./ui-E7cH9GT0.js";import{r as h}from"./vendor-Cpi2Ks0G.js";import{N as E,aV as M,V as P,aW as f,b as d,H as k,C as g,d as U,e as V,f as v,O as i,Q as l,a3 as $,a4 as A,a5 as I,a6 as Q,a7 as w,B as O,J as B,X as o}from"./index-BeEEDwOo.js";import{T as K}from"./textarea-Col2DGGw.js";import{S as L}from"./save-DxRw3h2F.js";import{P as z}from"./percent-jIn2vzxy.js";import{D as H}from"./dollar-sign-BVEPugn0.js";import{C as Z}from"./calendar-dc3FgwRa.js";import{f as J}from"./format-BcQETFuH.js";import{S as R}from"./square-pen-BB3HS2G3.js";import"./router-CKghwl56.js";const ne=()=>{const[C,m]=h.useState(!1),[n,j]=h.useState(null),[t,r]=h.useState({code:"",title:"",description:"",discount_type:"percentage",discount_value:"",minimum_order_amount:"0",max_uses:"",start_date:"",end_date:"",is_active:!0}),{toast:c}=E(),p=M(),{data:_=[],isLoading:S}=P({queryKey:["coupons"],queryFn:async()=>{const{data:s,error:a}=await o.from("coupons").select("*").order("created_at",{ascending:!1});if(a)throw a;return s}}),x=f({mutationFn:async s=>{if(n){const{error:a}=await o.from("coupons").update(s).eq("id",n.id);if(a)throw a}else{const{error:a}=await o.from("coupons").insert([s]);if(a)throw a}},onSuccess:()=>{c({title:`Coupon ${n?"updated":"created"} successfully!`}),p.invalidateQueries({queryKey:["coupons"]}),y()},onError:s=>{c({title:`Failed to ${n?"update":"create"} coupon`,description:s.message,variant:"destructive"})}}),N=f({mutationFn:async s=>{const{error:a}=await o.from("coupons").delete().eq("id",s);if(a)throw a},onSuccess:()=>{c({title:"Coupon deleted successfully!"}),p.invalidateQueries({queryKey:["coupons"]})},onError:s=>{c({title:"Failed to delete coupon",description:s.message,variant:"destructive"})}}),y=()=>{r({code:"",title:"",description:"",discount_type:"percentage",discount_value:"",minimum_order_amount:"0",max_uses:"",start_date:"",end_date:"",is_active:!0}),m(!1),j(null)},D=s=>{j(s),r({code:s.code,title:s.title,description:s.description||"",discount_type:s.discount_type,discount_value:s.discount_value.toString(),minimum_order_amount:s.minimum_order_amount.toString(),max_uses:s.max_uses?.toString()||"",start_date:s.start_date.split("T")[0],end_date:s.end_date?.split("T")[0]||"",is_active:s.is_active}),m(!0)},F=s=>{s.preventDefault();const a={code:t.code.toUpperCase(),title:t.title,description:t.description||null,discount_type:t.discount_type,discount_value:parseFloat(t.discount_value),minimum_order_amount:parseFloat(t.minimum_order_amount),max_uses:t.max_uses?parseInt(t.max_uses):null,start_date:t.start_date+"T00:00:00Z",end_date:t.end_date?t.end_date+"T23:59:59Z":null,is_active:t.is_active};x.mutate(a)},q=s=>s?new Date(s)<new Date:!1,u=s=>{const a=new Date,T=new Date(s.start_date),b=s.end_date?new Date(s.end_date):null;return s.is_active&&T<=a&&(!b||b>=a)};return e.jsxs("div",{className:"p-6 max-w-7xl mx-auto",children:[e.jsxs("div",{className:"flex justify-between items-center mb-6",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-3xl font-bold text-white mb-2",children:"Coupon Management"}),e.jsx("p",{className:"text-gray-300",children:"Create and manage discount coupons"})]}),e.jsxs(d,{onClick:()=>m(!0),className:"bg-cyan-500 hover:bg-cyan-600",children:[e.jsx(k,{className:"h-4 w-4 mr-2"}),"Create Coupon"]})]}),C&&e.jsxs(g,{className:"bg-slate-800/50 border-cyan-500/20 mb-6",children:[e.jsx(U,{children:e.jsx(V,{className:"text-white",children:n?"Edit Coupon":"Create New Coupon"})}),e.jsx(v,{children:e.jsxs("form",{onSubmit:F,className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[e.jsxs("div",{children:[e.jsx(i,{className:"text-gray-300",children:"Coupon Code *"}),e.jsx(l,{value:t.code,onChange:s=>r({...t,code:s.target.value.toUpperCase()}),placeholder:"SAVE15",className:"bg-slate-700 border-slate-600 text-white",required:!0})]}),e.jsxs("div",{children:[e.jsx(i,{className:"text-gray-300",children:"Title *"}),e.jsx(l,{value:t.title,onChange:s=>r({...t,title:s.target.value}),placeholder:"15% Off Summer Sale",className:"bg-slate-700 border-slate-600 text-white",required:!0})]})]}),e.jsxs("div",{children:[e.jsx(i,{className:"text-gray-300",children:"Description"}),e.jsx(K,{value:t.description,onChange:s=>r({...t,description:s.target.value}),placeholder:"Save 15% on all refrigerants this summer!",className:"bg-slate-700 border-slate-600 text-white",rows:2})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:[e.jsxs("div",{children:[e.jsx(i,{className:"text-gray-300",children:"Discount Type *"}),e.jsxs($,{value:t.discount_type,onValueChange:s=>r({...t,discount_type:s}),children:[e.jsx(A,{className:"bg-slate-700 border-slate-600 text-white",children:e.jsx(I,{})}),e.jsxs(Q,{children:[e.jsx(w,{value:"percentage",children:"Percentage (%)"}),e.jsx(w,{value:"fixed",children:"Fixed Amount ($)"})]})]})]}),e.jsxs("div",{children:[e.jsx(i,{className:"text-gray-300",children:"Discount Value *"}),e.jsx(l,{type:"number",step:"0.01",value:t.discount_value,onChange:s=>r({...t,discount_value:s.target.value}),placeholder:t.discount_type==="percentage"?"15":"50.00",className:"bg-slate-700 border-slate-600 text-white",required:!0})]}),e.jsxs("div",{children:[e.jsx(i,{className:"text-gray-300",children:"Minimum Order ($)"}),e.jsx(l,{type:"number",step:"0.01",value:t.minimum_order_amount,onChange:s=>r({...t,minimum_order_amount:s.target.value}),placeholder:"0.00",className:"bg-slate-700 border-slate-600 text-white"})]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:[e.jsxs("div",{children:[e.jsx(i,{className:"text-gray-300",children:"Max Uses"}),e.jsx(l,{type:"number",value:t.max_uses,onChange:s=>r({...t,max_uses:s.target.value}),placeholder:"Unlimited",className:"bg-slate-700 border-slate-600 text-white"})]}),e.jsxs("div",{children:[e.jsx(i,{className:"text-gray-300",children:"Start Date *"}),e.jsx(l,{type:"date",value:t.start_date,onChange:s=>r({...t,start_date:s.target.value}),className:"bg-slate-700 border-slate-600 text-white",required:!0})]}),e.jsxs("div",{children:[e.jsx(i,{className:"text-gray-300",children:"End Date"}),e.jsx(l,{type:"date",value:t.end_date,onChange:s=>r({...t,end_date:s.target.value}),className:"bg-slate-700 border-slate-600 text-white"})]})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx("input",{type:"checkbox",id:"is_active",checked:t.is_active,onChange:s=>r({...t,is_active:s.target.checked}),className:"rounded"}),e.jsx(i,{htmlFor:"is_active",className:"text-gray-300",children:"Active"})]}),e.jsxs("div",{className:"flex space-x-2",children:[e.jsxs(d,{type:"submit",className:"bg-cyan-500 hover:bg-cyan-600",disabled:x.isPending,children:[e.jsx(L,{className:"h-4 w-4 mr-2"}),x.isPending?"Saving...":n?"Update":"Create"]}),e.jsx(d,{type:"button",variant:"outline",onClick:y,className:"border-slate-600 text-white hover:bg-slate-700",children:"Cancel"})]})]})})]}),e.jsx("div",{className:"grid gap-4",children:S?e.jsx("div",{className:"text-white",children:"Loading coupons..."}):_.length===0?e.jsx(g,{className:"bg-slate-800/50 border-slate-600",children:e.jsx(v,{className:"py-8 text-center",children:e.jsx("p",{className:"text-gray-400",children:"No coupons created yet. Create your first coupon to get started!"})})}):_.map(s=>e.jsx(g,{className:"bg-slate-800/50 border-slate-600",children:e.jsx(v,{className:"p-6",children:e.jsxs("div",{className:"flex justify-between items-start",children:[e.jsxs("div",{className:"flex-1",children:[e.jsxs("div",{className:"flex items-center gap-4 mb-2",children:[e.jsx("h3",{className:"text-xl font-semibold text-white",children:s.title}),e.jsx(O,{variant:u(s)?"default":"secondary",className:u(s)?"bg-green-500":"bg-gray-500",children:u(s)?"Active":q(s.end_date)?"Expired":"Inactive"}),e.jsx("span",{className:"bg-cyan-500 text-white px-3 py-1 rounded-lg font-mono text-sm",children:s.code})]}),s.description&&e.jsx("p",{className:"text-gray-300 mb-3",children:s.description}),e.jsxs("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-4 text-sm",children:[e.jsxs("div",{children:[e.jsx("span",{className:"text-gray-400",children:"Discount:"}),e.jsx("div",{className:"flex items-center text-white",children:s.discount_type==="percentage"?e.jsxs(e.Fragment,{children:[e.jsx(z,{className:"h-4 w-4 mr-1"}),s.discount_value,"%"]}):e.jsxs(e.Fragment,{children:[e.jsx(H,{className:"h-4 w-4 mr-1"}),"$",s.discount_value]})})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-gray-400",children:"Min Order:"}),e.jsxs("div",{className:"text-white",children:["$",s.minimum_order_amount]})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-gray-400",children:"Uses:"}),e.jsxs("div",{className:"text-white",children:[s.current_uses,s.max_uses?`/${s.max_uses}`:"/â"]})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-gray-400",children:"Valid Until:"}),e.jsxs("div",{className:"text-white flex items-center",children:[e.jsx(Z,{className:"h-4 w-4 mr-1"}),s.end_date?J(new Date(s.end_date),"MMM dd, yyyy"):"No expiry"]})]})]})]}),e.jsxs("div",{className:"flex space-x-2 ml-4",children:[e.jsx(d,{variant:"outline",size:"sm",onClick:()=>D(s),className:"border-slate-600 text-white hover:bg-slate-700",children:e.jsx(R,{className:"h-4 w-4"})}),e.jsx(d,{variant:"outline",size:"sm",onClick:()=>N.mutate(s.id),disabled:N.isPending,className:"border-red-600 text-red-400 hover:bg-red-600 hover:text-white",children:e.jsx(B,{className:"h-4 w-4"})})]})]})})},s.id))})]})};export{ne 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.