1import{r as a,d as R,b0 as E,T as D,j as e,P as q,ah as z,s as G,X,a as g,D as i}from"./index-BY2qKH8z.js";import{C as H}from"./calendar-days-CNQcRC5M.js";import{S as J}from"./search-ClQW1S_B.js";import{L as h}from"./loader-circle-DczacYwv.js";import{T as k}from"./trash-2-BMxp4dfd.js";const _={info:{label:"Info",color:"bg-blue-100 text-blue-700",icon:E},warning:{label:"Warning",color:"bg-orange-100 text-orange-700",icon:D},feature:{label:"Feature",color:"bg-violet-100 text-violet-700",icon:G},policy:{label:"Policy",color:"bg-gray-100 text-gray-700",icon:z}},K={all:"All Users",sellers:"Sellers Only",buyers:"Buyers Only"},j={title:"",message:"",type:"info",is_urgent:!1,audience:"all"},se=()=>{const[c,u]=a.useState([]),[M,N]=a.useState(!0),[w,S]=a.useState(!1),[x,A]=a.useState(null),[m,L]=a.useState(""),[p,P]=a.useState("all"),[$,f]=a.useState(!1),[n,b]=a.useState(null),[l,o]=a.useState(j),U=async()=>{try{N(!0);const t=await g.get("/admin/announcements");u(t.data?.announcements||t.data||[])}catch{i.error("Failed to load announcements")}finally{N(!1)}};a.useEffect(()=>{U()},[]);const C=new Date,I=c.filter(t=>{const s=new Date(t.created_at);return s.getMonth()===C.getMonth()&&s.getFullYear()===C.getFullYear()}),O=[{label:"Total",value:c.length,icon:R,color:"text-violet-600 bg-violet-50"},{label:"Active",value:c.filter(t=>t.is_active!==!1).length,icon:E,color:"text-green-600 bg-green-50"},{label:"Urgent",value:c.filter(t=>t.is_urgent).length,icon:D,color:"text-red-600 bg-red-50"},{label:"This Month",value:I.length,icon:H,color:"text-blue-600 bg-blue-50"}],T=c.filter(t=>{const s=!m||t.title?.toLowerCase().includes(m.toLowerCase())||t.message?.toLowerCase().includes(m.toLowerCase()),r=p==="all"||t.type===p;return s&&r}),B=()=>{b(null),o(j),f(!0)},W=t=>{b(t),o({title:t.title||"",message:t.message||"",type:t.type||"info",is_urgent:t.is_urgent||!1,audience:t.audience||"all"}),f(!0)},y=()=>{f(!1),b(null),o(j)},Y=async t=>{if(t.preventDefault(),!l.title.trim()||!l.message.trim()){i.error("Title and message are required");return}S(!0);try{if(n){const s=await g.put(`/admin/announcements/${n.id}`,l),r=s.data?.announcement||s.data;u(d=>d.map(v=>v.id===n.id?{...v,...r}:v)),i.success("Announcement updated")}else{const s=await g.post("/admin/announcements",l),r=s.data?.announcement||s.data;u(d=>[r,...d]),i.success("Announcement created")}y()}catch{i.error(n?"Failed to update announcement":"Failed to create announcement")}finally{S(!1)}},F=async t=>{if(window.confirm("Delete this announcement?")){A(t);try{await g.delete(`/admin/announcements/${t}`),u(s=>s.filter(r=>r.id!==t)),n?.id===t&&y(),i.success("Announcement deleted")}catch{i.error("Failed to delete announcement")}finally{A(null)}}};return e.jsxs("div",{className:"p-6 space-y-6",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("h1",{className:"text-2xl font-bold text-gray-900",children:"Announcements"}),e.jsxs("button",{onClick:B,className:"flex items-center gap-2 px-4 py-2 bg-violet-600 hover:bg-violet-700 text-white text-sm font-medium rounded-xl transition-colors",children:[e.jsx(q,{className:"w-4 h-4"}),"New Announcement"]})]}),e.jsx("div",{className:"grid grid-cols-2 lg:grid-cols-4 gap-4",children:O.map(t=>e.jsxs("div",{className:"bg-white rounded-2xl border border-gray-100 p-5 flex items-center gap-4",children:[e.jsx("div",{className:`p-3 rounded-xl ${t.color}`,children:e.jsx(t.icon,{className:"w-5 h-5"})}),e.jsxs("div",{children:[e.jsx("p",{className:"text-2xl font-bold text-gray-900",children:t.value}),e.jsx("p",{className:"text-sm text-gray-500",children:t.label})]})]},t.label))}),e.jsxs("div",{className:"flex gap-6",children:[e.jsxs("div",{className:"flex-1 bg-white rounded-2xl border border-gray-100",children:[e.jsxs("div",{className:"p-4 border-b border-gray-100 flex gap-3",children:[e.jsxs("div",{className:"flex-1 relative",children:[e.jsx(J,{className:"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-gray-400"}),e.jsx("input",{value:m,onChange:t=>L(t.target.value),placeholder:"Search announcements...",className:"w-full pl-9 pr-4 py-2 text-sm border border-gray-200 rounded-xl outline-none focus:border-violet-400"})]}),e.jsxs("select",{value:p,onChange:t=>P(t.target.value),className:"px-3 py-2 text-sm border border-gray-200 rounded-xl outline-none",children:[e.jsx("option",{value:"all",children:"All Types"}),e.jsx("option",{value:"info",children:"Info"}),e.jsx("option",{value:"warning",children:"Warning"}),e.jsx("option",{value:"feature",children:"Feature"}),e.jsx("option",{value:"policy",children:"Policy"})]})]}),M?e.jsx("div",{className:"flex justify-center py-12",children:e.jsx(h,{className:"w-6 h-6 animate-spin text-violet-600"})}):T.length===0?e.jsx("div",{className:"text-center py-12 text-gray-400",children:"No announcements found"}):e.jsx("div",{className:"divide-y divide-gray-50",children:T.map(t=>{const s=_[t.type]||_.info,r=s.icon;return e.jsx("div",{className:"p-4 hover:bg-gray-50 transition-colors cursor-pointer",onClick:()=>W(t),children:e.jsxs("div",{className:"flex items-start justify-between gap-3",children:[e.jsxs("div",{className:"flex items-start gap-3 flex-1 min-w-0",children:[e.jsx("div",{className:`p-1.5 rounded-lg flex-shrink-0 mt-0.5 ${s.color}`,children:e.jsx(r,{className:"w-3.5 h-3.5"})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2 flex-wrap",children:[e.jsx("p",{className:"font-medium text-sm text-gray-900 truncate",children:t.title}),t.is_urgent&&e.jsx("span",{className:"text-xs font-semibold px-1.5 py-0.5 bg-red-100 text-red-700 rounded-md flex-shrink-0",children:"URGENT"})]}),e.jsx("p",{className:"text-xs text-gray-500 mt-0.5 line-clamp-1",children:t.message}),e.jsxs("div",{className:"flex items-center gap-2 mt-1.5",children:[e.jsx("span",{className:`text-xs font-medium px-2 py-0.5 rounded-full ${s.color}`,children:s.label}),e.jsx("span",{className:"text-xs text-gray-400",children:K[t.audience]||t.audience}),e.jsx("span",{className:"text-xs text-gray-400",children:new Date(t.created_at).toLocaleDateString()})]})]})]}),e.jsx("button",{onClick:d=>{d.stopPropagation(),F(t.id)},disabled:x===t.id,className:"p-1.5 rounded-lg text-gray-400 hover:text-red-500 hover:bg-red-50 transition-colors flex-shrink-0",children:x===t.id?e.jsx(h,{className:"w-4 h-4 animate-spin"}):e.jsx(k,{className:"w-4 h-4"})})]})},t.id)})})]}),$&&e.jsxs("div",{className:"w-96 bg-white rounded-2xl border border-gray-100 flex flex-col",children:[e.jsxs("div",{className:"p-4 border-b border-gray-100 flex items-center justify-between",children:[e.jsx("h2",{className:"font-semibold text-gray-900",children:n?"Edit Announcement":"New Announcement"}),e.jsx("button",{onClick:y,className:"text-gray-400 hover:text-gray-600",children:e.jsx(X,{className:"w-5 h-5"})})]}),e.jsxs("form",{onSubmit:Y,className:"flex-1 p-4 space-y-4 overflow-y-auto",children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-xs font-medium text-gray-700 mb-1",children:"Title *"}),e.jsx("input",{value:l.title,onChange:t=>o(s=>({...s,title:t.target.value})),placeholder:"Announcement title",className:"w-full px-3 py-2 text-sm border border-gray-200 rounded-xl outline-none focus:border-violet-400"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-xs font-medium text-gray-700 mb-1",children:"Message *"}),e.jsx("textarea",{value:l.message,onChange:t=>o(s=>({...s,message:t.target.value})),placeholder:"Write announcement message...",rows:4,className:"w-full px-3 py-2 text-sm border border-gray-200 rounded-xl outline-none focus:border-violet-400 resize-none"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-xs font-medium text-gray-700 mb-1",children:"Type"}
1),e.jsxs("select",{value:l.type,onChange:t=>o(s=>({...s,type:t.target.value})),className:"w-full px-3 py-2 text-sm border border-gray-200 rounded-xl outline-none focus:border-violet-400",children:[e.jsx("option",{value:"info",children:"Info"}),e.jsx("option",{value:"warning",children:"Warning"}),e.jsx("option",{value:"feature",children:"Feature"}),e.jsx("option",{value:"policy",children:"Policy"})]})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-xs font-medium text-gray-700 mb-1",children:"Audience"}),e.jsxs("select",{value:l.audience,onChange:t=>o(s=>({...s,audience:t.target.value})),className:"w-full px-3 py-2 text-sm border border-gray-200 rounded-xl outline-none focus:border-violet-400",children:[e.jsx("option",{value:"all",children:"All Users"}),e.jsx("option",{value:"sellers",children:"Sellers Only"}),e.jsx("option",{value:"buyers",children:"Buyers Only"})]})]}),e.jsxs("label",{className:"flex items-center gap-3 cursor-pointer select-none",children:[e.jsxs("div",{className:"relative",children:[e.jsx("input",{type:"checkbox",checked:l.is_urgent,onChange:t=>o(s=>({...s,is_urgent:t.target.checked})),className:"sr-only"}),e.jsx("div",{className:`w-10 h-6 rounded-full transition-colors ${l.is_urgent?"bg-red-500":"bg-gray-200"}`}),e.jsx("div",{className:`absolute top-1 left-1 w-4 h-4 bg-white rounded-full shadow transition-transform ${l.is_urgent?"translate-x-4":""}`})]}),e.jsx("span",{className:"text-sm font-medium text-gray-700",children:"Mark as Urgent"})]}),e.jsxs("button",{type:"submit",disabled:w,className:"w-full flex items-center justify-center gap-2 px-4 py-2.5 bg-violet-600 hover:bg-violet-700 disabled:opacity-50 text-white text-sm font-medium rounded-xl transition-colors",children:[w&&e.jsx(h,{className:"w-4 h-4 animate-spin"}),n?"Save Changes":"Publish Announcement"]}),n&&e.jsxs("button",{type:"button",onClick:()=>F(n.id),disabled:x===n.id,className:"w-full flex items-center justify-center gap-2 px-4 py-2.5 bg-red-50 hover:bg-red-100 text-red-600 text-sm font-medium rounded-xl transition-colors",children:[x===n.id?e.jsx(h,{className:"w-4 h-4 animate-spin"}):e.jsx(k,{className:"w-4 h-4"}),"Delete Announcement"]})]})]})]})]})};export{se 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.