PageSourceSearch

https://mashuapp.base44.app/assets/Promotions-DQOBo6iM.js

js mashuapp.base44.app collected 2026-10-03 03:16:06 UTC 6,038 bytes, 1 lines download raw bytes

1import{r as u,j as e}from"./vendor-radix-al_OTMAN.js";import{U as m}from"./index-JlZLcK8n.js";import"./vendor-recharts-BJ3gX3uR.js";import"./vendor-framer-motion-BYr8tkHJ.js";const p={code:"",percent_off:25,max_uses:100,expires_at:"",active:!0};function h(t){return t?new Date(t).toISOString().slice(0,16):""}function b({codes:t,onSave:i,onDeactivate:o,saving:l}){const[n,a]=u.useState(null),r=n||p,d=s=>a({...r,...s}),x=s=>a({...s,expires_at:h(s.expires_at)}),c=()=>a(null);return e.jsxs("div",{className:"space-y-5",children:[e.jsxs("form",{onSubmit:s=>{s.preventDefault(),i(r).then(c)},className:"grid gap-4 rounded-3xl border border-purple-100 bg-white p-5 shadow-sm md:grid-cols-6",children:[e.jsxs("label",{className:"text-sm font-semibold text-gray-700 md:col-span-1",children:["Code",e.jsx("input",{value:r.code,onChange:s=>d({code:s.target.value.toUpperCase()}),className:"mt-1 h-11 w-full rounded-2xl border border-purple-100 px-3",required:!0})]}),e.jsxs("label",{className:"text-sm font-semibold text-gray-700",children:["Percent",e.jsx("input",{type:"number",min:"25",max:"100",value:r.percent_off,onChange:s=>d({percent_off:Number(s.target.value)}),className:"mt-1 h-11 w-full rounded-2xl border border-purple-100 px-3",required:!0})]}),e.jsxs("label",{className:"text-sm font-semibold text-gray-700",children:["Max uses",e.jsx("input",{type:"number",min:"1",value:r.max_uses,onChange:s=>d({max_uses:Number(s.target.value)}),className:"mt-1 h-11 w-full rounded-2xl border border-purple-100 px-3",required:!0})]}),e.jsxs("label",{className:"text-sm font-semibold text-gray-700 md:col-span-2",children:["Expires",e.jsx("input",{type:"datetime-local",value:r.expires_at,onChange:s=>d({expires_at:s.target.value}),className:"mt-1 h-11 w-full rounded-2xl border border-purple-100 px-3",required:!0})]}),e.jsxs("div",{className:"flex items-end gap-2",children:[e.jsx("button",{disabled:l,className:"h-11 rounded-full bg-gray-950 px-4 text-sm font-semibold text-white disabled:opacity-60",children:r.id?"Save":"Create"}),n&&e.jsx("button",{type:"button",onClick:c,className:"h-11 rounded-full border border-purple-200 px-4 text-sm font-semibold text-purple-700",children:"Cancel"})]})]}),e.jsx("div",{className:"overflow-x-auto rounded-3xl border border-purple-100 bg-white shadow-sm",children:e.jsxs("table",{className:"w-full min-w-[760px] text-left text-sm",children:[e.jsx("thead",{className:"bg-purple-50 text-xs uppercase tracking-[0.12em] text-gray-600",children:e.jsxs("tr",{children:[e.jsx("th",{className:"p-4",children:"Code"}),e.jsx("th",{children:"Discount"}),e.jsx("th",{children:"Usage"}),e.jsx("th",{children:"Expires"}),e.jsx("th",{children:"Status"}),e.jsx("th",{children:"Actions"})]})}),e.jsxs("tbody",{children:[t.map(s=>e.jsxs("tr",{className:"border-t border-purple-50",children:[e.jsx("td",{className:"p-4 font-semibold text-gray-950",children:s.code}),e.jsxs("td",{children:[s.percent_off,"%"]}),e.jsxs("td",{children:[s.uses_count||0," / ",s.max_uses]}),e.jsx("td",{children:new Date(s.expires_at).toLocaleDateString()}),e.jsx("td",{children:s.active?"Active":"Inactive"}),e.jsxs("td",{className:"space-x-2",children:[e.jsx("button",{onClick:()=>x(s),className:"font-semibold text-purple-700",children:"Edit"}),e.jsx("button",{onClick:()=>
1o(s.id),className:"font-semibold text-gray-600",children:"Deactivate"})]})]},s.id)),!t.length&&e.jsx("tr",{children:e.jsx("td",{className:"p-6 text-center text-gray-600",colSpan:"6",children:"No discount codes yet."})})]})]})})]})}function f(t){return t?new Date(t).toISOString().slice(0,16):""}function g({sale:t,onSave:i,saving:o}){const[l,n]=u.useState(()=>({title:(t==null?void 0:t.title)||"Launch offer",message:(t==null?void 0:t.message)||"Get 25% off all analyses",percent_off:(t==null?void 0:t.percent_off)||25,ends_at:f(t==null?void 0:t.ends_at),active:(t==null?void 0:t.active)??!0})),a=r=>n(d=>({...d,...r}));return e.jsxs("form",{onSubmit:r=>{r.preventDefault(),i({...t,...l})},className:"grid gap-5 rounded-3xl border border-purple-100 bg-white p-6 shadow-sm md:grid-cols-2",children:[e.jsxs("label",{className:"text-sm font-semibold text-gray-700",children:["Title",e.jsx("input",{value:l.title,onChange:r=>a({title:r.target.value}),className:"mt-1 h-11 w-full rounded-2xl border border-purple-100 px-3",required:!0})]}),e.jsxs("label",{className:"text-sm font-semibold text-gray-700",children:["Message",e.jsx("input",{value:l.message,onChange:r=>a({message:r.target.value}),className:"mt-1 h-11 w-full rounded-2xl border border-purple-100 px-3",required:!0})]}),e.jsxs("label",{className:"text-sm font-semibold text-gray-700",children:["Percent off",e.jsx("input",{type:"number",min:"25",max:"100",value:l.percent_off,onChange:r=>a({percent_off:Number(r.target.value)}),className:"mt-1 h-11 w-full rounded-2xl border border-purple-100 px-3",required:!0})]}),e.jsxs("label",{className:"text-sm font-semibold text-gray-700",children:["Ends at",e.jsx("input",{type:"datetime-local",value:l.ends_at,onChange:r=>a({ends_at:r.target.value}),className:"mt-1 h-11 w-full rounded-2xl border border-purple-100 px-3",required:!0})]}),e.jsxs("label",{className:"flex items-center gap-3 text-sm font-semibold text-gray-700",children:[e.jsx("input",{type:"checkbox",checked:l.active,onChange:r=>a({active:r.target.checked}),className:"h-5 w-5 rounded border-purple-200"})," Active sale"]}),e.jsx("div",{className:"flex justify-end md:col-span-2",children:e.jsx("button",{disabled:o,className:"h-11 rounded-full bg-gray-950 px-5 text-sm font-semibold text-white disabled:opacity-60",children:"Save Site Sale"})})]})}function w(){const{discountCodes:t,siteSale:i,saveDiscount:o,deactivateDiscount:l,saveSale:n,saving:a}=m();return e.jsxs("div",{className:"space-y-8",children:[e.jsxs("section",{children:[e.jsx("h2",{className:"mb-4",children:"Discount codes"}),e.jsx(b,{codes:t,onSave:o,onDeactivate:l,saving:a})]}),e.jsxs("section",{children:[e.jsx("h2",{className:"mb-4",children:"Site-wide sale"}),e.jsx(g,{sale:i,onSave:n,saving:a})]})]})}export{w 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.