1import{_ as tt}from"./BbgUwqB5.js";import{_ as st}from"./DiKJ08Nh.js";import{f as et,D as lt,j as A,w as g,o as a,b as l,J,c as d,n as v,i as n,d as _,t as u,k as m,T as it,m as C,a as s,p as ot,v as at,F as B,l as V,r as p,e as nt,a2 as P,G as ct,_ as dt}from"./DHH4uiu3.js";import{I as c}from"./CnXrXDLz.js";const ut={class:"modal-content"},rt={class:"modal-icon-wrap"},ht={class:"modal-icon-circle"},pt={class:"modal-text"},vt={class:"modal-actions"},_t=["disabled"],gt={class:"page-head"},mt={class:"filters-section"},bt={class:"search-wrap"},ft={class:"filters-right"},wt={class:"entries-count"},kt={key:0,class:"reorder-hint"},Ct={class:"view-toggle"},yt={class:"posts-section"},Dt={key:0,class:"empty-state"},$t={key:1,class:"empty-state"},xt={key:2,class:"posts-grid"},Tt={class:"post-thumbnail"},Lt=["src","alt"],It={key:1,class:"thumbnail-placeholder"},Et={key:2,class:"featured-badge"},Nt={class:"post-content"},Pt={class:"post-title"},Ft={class:"post-excerpt"},St={class:"post-meta"},Ot={key:0,class:"meta-item"},At={class:"meta-item"},Bt={key:0,class:"post-tags"},Vt={key:0,class:"tag more"},Mt={class:"post-actions"},Ut=["disabled","onClick","title"],qt=["onClick"],jt=["onClick"],Gt={key:3,class:"posts-list"},zt=["onDragstart","onDragover","onDrop"],Jt={class:"list-col drag-col"},Rt={class:"list-col thumb-col"},Ht={class:"list-thumb"},Kt=["src","alt"],Qt={key:1,class:"list-thumb-placeholder"},Wt={class:"list-col title-col"},Xt={class:"list-title"},Yt={class:"list-col status-col"},Zt={key:0,class:"list-featured-badge",title:"Featured"},ts={class:"list-col date-col"},ss={class:"list-date"},es={class:"list-col actions-col"},ls=["disabled","onClick","title"],is=["onClick"],os=["onClick"],as=et({__name:"index",async setup(ns){let M,U;const S=p(!1),y=p(null),L=p([]),D=p(""),$=p("list"),w=p(null),x=p(null),O=p(!1),I=p(!1),E=p(null),T=p(!1),b=p(null),k=nt(()=>{const i=D.value.trim().toLowerCase();let e=L.value;return i&&(e=L.value.filter(o=>[o.title,o.slug,o.authorName,o.status].join(" ").toLowerCase().includes(i))),e.sort((o,N)=>{const t=o.sortOrder||1/0,h=N.sortOrder||1/0;return t-h})}),R=P,f=(i,e)=>{y.value={type:i,text:e},setTimeout(()=>{y.value=null},4e3)},F=async()=>{S.value=!0;try{const i=await R("/api/admin/blog/list");L.value=i.entries}finally{S.value=!1}},q=i=>{E.value=i,I.value=!0},H=async()=>{if(E.value){T.value=!0;try{await P("/api/admin/blog/delete",{method:"DELETE",query:{id:E.value._id}}),f("success","Post deleted successfully."),I.value=!1,E.value=null,await F()}catch(i){f("error",i instanceof Error?i.message:"Failed to delete post.")}finally{T.value=!1}}},j=async i=>{const e=`${window.location.origin}/${i.slug}/`;try{await navigator.clipboard.writeText(e),f("success","Link copied to clipboard.")}catch{f("error","Failed to copy link.")}},G=async i=>{const e=i.status==="published"?"draft":"published";b.value=i._id;try{await P("/api/admin/blog/toggle-status",{method:"POST",body:{_id:i._id,status:e}}),f("success",`Post ${e==="published"?"published":"unpublished"} successfully.`),await F()}catch(o){f("error",o instanceof Error?o.message:"Failed to update status.")}finally{b.value=null}},K=i=>{w.value=i},Q=i=>{x.value=i},W=()=>{x.value=null},X=async i=>{if(!w.value||x.value===null)return;const e=k.value.findIndex(o=>o._id===w.value._id);if(e===-1||e===i){w.value=null,x.value=null;return}O.value=!0;try{const o=[...k.value],[N]=o.splice(e,1);o.splice(i,0,N);const t=o.map((h,r)=>({_id:h._id,sortOrder:r+1}));await P("/api/admin/blog/reorder",{method:"POST",body:{updates:t}}),L.value=L.value.map(h=>{const r=t.find(Z=>Z._id===h._id);return r?{...h,sortOrder:r.sortOrder}:h}),f("success","Posts reordered successfully.")}catch(o){f("error",o instanceof Error?o.message:"Failed to reorder posts."),await F()}finally{O.value=!1,w.value=null,x.value=null}},z=i=>new Date(i).toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"}),Y=async()=>{await P("/api/admin/logout",{method:"POST"}),await ct("/admin/login")};return[M,U]=lt(()=>F()),await M,U(),(i,e)=>{const o=tt,N=st;return a(),A(N,{onLogout:Y},{default:g(()=>[l(J,{name:"toast"},{default:g(()=>[y.value?(a(),d("div",{key:0,class:v(["toast",y.value.type])},[l(n(c),{icon:y.value.type==="success"?"lucide:check-circle":"lucide:alert-circle",width:"18",height:"18"},null,8,["icon"]),_(" "+u(y.value.text),1)],2)):m("",!0)]),_:1}),(a(),A(it,{to:"body"},[l(J,{name:"modal"},{default:g(()=>[I.value?(a(),d("div",{key:0,class:"modal-overlay",onClick:e[1]||(e[1]=C(t=>I.value=!1,["self"]))},[s("div",ut,[s("div",rt,[s("div",ht,[l(n(c),{icon:"lucide:trash-2",width:"28",height:"28"})])]),e[8]||(e[8]=s("h3",{class:"modal-title"},"Delete Post",-1)),s("p",pt,[e[6]||(e[6]=_(" Are you sure you want to delete ",-1)),s("strong",null,'"'+u(E.value?.title)+'"',1),e[7]||(e[7]=_("? ",-1))]),e[9]||(e[9]=s("p",{class:"modal-warning"},"This action cannot be undone. The post will be permanently removed from your blog.",
1-1)),s("div",vt,[s("button",{class:"btn-secondary",onClick:e[0]||(e[0]=t=>I.value=!1)},"Cancel"),s("button",{class:"btn-danger",disabled:T.value,onClick:H},[l(n(c),{icon:T.value?"lucide:loader":"lucide:trash-2",width:"16",height:"16",class:v({spinning:T.value})},null,8,["icon","class"]),_(" "+u(T.value?"Deleting...":"Delete Post"),1)],8,_t)])])])):m("",!0)]),_:1})])),s("section",gt,[e[11]||(e[11]=s("div",null,[s("h1",null,"Blog Posts")],-1)),l(o,{to:"/admin/blog/new",class:"primary-btn"},{default:g(()=>[l(n(c),{icon:"lucide:plus",width:"18",height:"18"}),e[10]||(e[10]=_(" Create New Post ",-1))]),_:1})]),s("section",mt,[s("div",bt,[l(n(c),{icon:"lucide:search",width:"16",height:"16",class:"search-icon"}),ot(s("input",{"onUpdate:modelValue":e[2]||(e[2]=t=>D.value=t),type:"text",placeholder:"Search posts...",class:"search-input"},null,512),[[at,D.value]])]),s("div",ft,[s("p",wt,[_(u(k.value.length)+" "+u(k.value.length===1?"post":"posts")+" ",1),$.value==="list"&&!D.value?(a(),d("span",kt,"⢠Drag to reorder ⢠First 2 are Featured")):m("",!0)]),s("div",Ct,[s("button",{class:v(["view-btn",{active:$.value==="grid"}]),onClick:e[3]||(e[3]=t=>$.value="grid"),title:"Grid view"},[l(n(c),{icon:"lucide:layout-grid",width:"16",height:"16"})],2),s("button",{class:v(["view-btn",{active:$.value==="list"}]),onClick:e[4]||(e[4]=t=>$.value="list"),title:"List view"},[l(n(c),{icon:"lucide:list",width:"16",height:"16"})],2)])])]),s("section",yt,[S.value?(a(),d("div",Dt,[l(n(c),{icon:"lucide:loader",width:"32",height:"32",class:"spinning text-muted"}),e[12]||(e[12]=s("p",null,"Loading posts...",-1))])):k.value.length?$.value==="grid"?(a(),d("div",xt,[(a(!0),d(B,null,V(k.value,(t,h)=>(a(),d("article",{key:t._id,class:"post-card"},[l(o,{to:`/admin/blog/${t._id}`,class:"card-link"},{default:g(()=>[s("div",Tt,[t.featuredImage?(a(),d("img",{key:0,src:t.featuredImage,alt:t.title},null,8,Lt)):(a(),d("div",It,[l(n(c),{icon:"lucide:image",width:"32",height:"32"})])),s("span",{class:v(["status-badge",t.status])},u(t.status),3),h<2?(a(),d("span",Et,[l(n(c),{icon:"lucide:star",width:"12",height:"12"}),_(" Featured "+u(h+1),1)])):m("",!0)]),s("div",Nt,[s("h3",Pt,u(t.title),1),s("p",Ft,u(t.excerpt||"No excerpt provided."),1),s("div",St,[t.authorName?(a(),d("span",Ot,[l(n(c),{icon:"lucide:user",width:"12",height:"12"}),_(" "+u(t.authorName),1)])):m("",!0),s("span",At,[l(n(c),{icon:"lucide:calendar",width:"12",height:"12"}),_(" "+u(z(t.updatedAt)),1)])]),t.tags?.length?(a(),d("div",Bt,[(a(!0),d(B,null,V(t.tags.slice(0,3),r=>(a(),d("span",{key:r,class:"tag"},u(r),1))),128)),t.tags.length>3?(a(),d("span",Vt,"+"+u(t.tags.length-3),1)):m("",!0)])):m("",!0)])]),_:2},1032,["to"]),s("div",Mt,[s("button",{class:v(["action-btn",t.status==="published"?"unpublish":"publish"]),disabled:b.value===t._id,onClick:C(r=>G(t),["stop"]),title:t.status==="published"?"Unpublish":"Publish"},[l(n(c),{icon:b.value===t._id?"lucide:loader":t.status==="published"?"lucide:eye-off":"lucide:eye",width:"16",height:"16",class:v({spinning:b.value===t._id})},null,8,["icon","class"])],10,Ut),l(o,{to:`/admin/blog/${t._id}`,class:"action-btn edit",title:"Edit",onClick:e[5]||(e[5]=C(()=>{},["stop"]))},{default:g(()=>[l(n(c),{icon:"lucide:pencil",width:"16",height:"16"})]),_:1},8,["to"]),s("button",{class:"action-btn copy",onClick:C(r=>j(t),["stop"]),title:"Copy Link"},[l(n(c),{icon:"lucide:link",width:"16",height:"16"})],8,qt),s("button",{class:"action-btn delete",onClick:C(r=>q(t),["stop"]),title:"Delete"},[l(n(c),{icon:"lucide:trash-2",width:"16",height:"16"})],8,jt)])]))),128))])):(a(),d("div",Gt,[e[15]||(e[15]=s("div",{class:"list-header"},[s("span",{class:"list-col drag-col"}),s("span",{class:"list-col thumb-col"}),s("span",{class:"list-col title-col"},"Title"),s("span",{class:"list-col status-col"},"Status"),s("span",{class:"list-col date-col"},"Date"),s("span",{class:"list-col actions-col"},"Actions")],-1)),(a(!0),d(B,null,V(k.value,(t,h)=>(a(),d("div",{key:t._id,class:v(["list-row",{"is-dragging":w.value?._id===t._id,"is-drag-over":x.value===h&&w.value?._id!==t._id,"is-reordering":O.value}]),draggable:"true",onDragstart:r=>K(t),onDragover:C(r=>Q(h),["prevent"]),onDragleave:W,onDrop:C(r=>X(h),["prevent"])},[s("div",Jt,[l(n(c),{icon:"lucide:grip-vertical",width:"16",height:"16",class:"drag-handle"})]),l(o,{to:`/admin/blog/${t._id}`,class:"list-row-link"},{default:g(()=>[s("div",Rt,[s("div",Ht,[t.featuredImage?(a(),d("img",{key:0,src:t.featuredImage,alt:t.title},null,8,Kt)):(a(),d("div",Qt,[l(n(c),{icon:"lucide:image",width:"16",height:"16"}
1)]))])]),s("div",Wt,[s("h4",Xt,u(t.title),1)]),s("div",Yt,[s("span",{class:v(["list-status",t.status])},[e[14]||(e[14]=s("span",{class:"status-dot"},null,-1)),_(" "+u(t.status),1)],2),h<2?(a(),d("span",Zt,[l(n(c),{icon:"lucide:star",width:"12",height:"12"})])):m("",!0)]),s("div",ts,[s("span",ss,u(z(t.updatedAt)),1)])]),_:2},1032,["to"]),s("div",es,[s("button",{class:v(["list-action-btn",t.status==="published"?"unpublish":"publish"]),disabled:b.value===t._id,onClick:r=>G(t),title:t.status==="published"?"Unpublish":"Publish"},[l(n(c),{icon:b.value===t._id?"lucide:loader":t.status==="published"?"lucide:eye-off":"lucide:eye",width:"14",height:"14",class:v({spinning:b.value===t._id})},null,8,["icon","class"])],10,ls),l(o,{to:`/admin/blog/${t._id}`,class:"list-action-btn edit",title:"Edit"},{default:g(()=>[l(n(c),{icon:"lucide:pencil",width:"14",height:"14"})]),_:1},8,["to"]),s("button",{class:"list-action-btn copy",onClick:r=>j(t),title:"Copy Link"},[l(n(c),{icon:"lucide:link",width:"14",height:"14"})],8,is),s("button",{class:"list-action-btn delete",onClick:r=>q(t),title:"Delete"},[l(n(c),{icon:"lucide:trash-2",width:"14",height:"14"})],8,os)])],42,zt))),128))])):(a(),d("div",$t,[l(n(c),{icon:"lucide:file-x",width:"48",height:"48",class:"text-muted"}),s("p",null,u(D.value?"No posts match your search.":"No posts yet. Create your first one!"),1),D.value?m("",!0):(a(),A(o,{key:0,to:"/admin/blog/new",class:"primary-btn"},{default:g(()=>[l(n(c),{icon:"lucide:plus",width:"18",height:"18"}),e[13]||(e[13]=_(" Create New Post ",-1))]),_:1}))]))])]),_:1})}}}),hs=dt(as,[["__scopeId","data-v-81b7cd11"]]);export{hs 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.