import"../chunks/DsnmJJEf.js";import{o as ht}from"../chunks/DukJHxi2.js";import{p as pe,e as Le,f as ie,a as o,b as ge,t as b,c as v,v as It,D as wt,u as Fe,g as e,j as T,h as F,i as re,d as r,r as t,s as a,n as Ze,l as Et,am as At,q as kt,m as He,k as Mt,$ as Pt}from"../chunks/krC2xWPP.js";import{s as d,w as Rt,d as Qe,a as ke,e as Ke}from"../chunks/CddAxf8c.js";import{p as he,i as $,a as zt,b as Ot}from"../chunks/DjsWWzyL.js";import{s as $e,h as Gt}from"../chunks/j_DJpx8B.js";import{b as Ve,i as p,g as Tt,c as Me,a as tt}from"../chunks/Cu5ilWky.js";import{g as Ut,a as Ct,b as Lt,c as Xt,d as Bt,e as Wt,f as Ht,h as $t}from"../chunks/BDkfn6gG.js";import{t as jt,x as Yt}from"../chunks/18iuIwwJ.js";import{r as Ft}from"../chunks/CQDj4r_w.js";import{A as Vt,c as Kt}from"../chunks/mRQytvOt.js";import{c as pt}from"../chunks/CuDfWLaU.js";import{d as at}from"../chunks/DtZdUUoV.js";import{h as Jt}from"../chunks/CuL3Sd6G.js";import{s as se,e as Ne,i as Re,b as ut,B as Ye,t as be}from"../chunks/Lvd_r9sp.js";import{u as qt}from"../chunks/DI9dxHnF.js";import{S as Zt}from"../chunks/K87jKp17.js";import{b as Je}from"../chunks/BSopV7IU.js";import{B as Qt}from"../chunks/CkCDfBZD.js";import{F as er}from"../chunks/BZUPCn-g.js";import{U as tr}from"../chunks/DwS2ehmU.js";import{P as rr}from"../chunks/Bi6PtFz0.js";import{P as ar}from"../chunks/IgssrPG4.js";import{T as sr,H as ir,A as or,R as nr,c as dr,i as lr}from"../chunks/Dnp5jjtA.js";import{D as lt}from"../chunks/nlum2O0L.js";import{S as vr}from"../chunks/hE_Oj9Ry.js";import{S as ur}from"../chunks/Cr0Hb3fo.js";import{C as cr}from"../chunks/BVZX0JD2.js";import{a as nt}from"../chunks/CD06zTmh.js";import{T as Dt}from"../chunks/zdwqcrP5.js";import{L as qe}from"../chunks/C_E2vM9U.js";import{C as fr}from"../chunks/1ntGG_wQ.js";import{a as mr,E as _r}from"../chunks/DKn7_j4m.js";import{D as pr}from"../chunks/DBVjMAyX.js";import{P as ct}from"../chunks/C1jLV8_5.js";import{h as ft}from"../chunks/DSIsCMt7.js";import{b as gr}from"../chunks/CpuCZOqP.js";import{G as xr}from"../chunks/9QV-A355.js";import{X as mt}from"../chunks/CiIMiELt.js";import{C as br}from"../chunks/DEuEFefA.js";import{P as hr}from"../chunks/mXADw150.js";import{R as Er}from"../chunks/CRjkBTWq.js";import{G as Ar}from"../chunks/6XVG9yYt.js";import{c as Tr}from"../chunks/BcwIk3O9.js";import{S as Dr}from"../chunks/Efbhffrv.js";import{R as yr}from"../chunks/DmaMvHCd.js";const Nr=()=>performance.now(),Ce={tick:i=>requestAnimationFrame(i),now:()=>Nr(),tasks:new Set};function yt(){const i=Ce.now();Ce.tasks.forEach(s=>{s.c(i)||(Ce.tasks.delete(s),s.f())}),Ce.tasks.size!==0&&Ce.tick(yt)}function Sr(i){let s;return Ce.tasks.size===0&&Ce.tick(yt),{promise:new Promise(_=>{Ce.tasks.add(s={c:i,f:_})}),abort(){Ce.tasks.delete(s)}}}async function Ir(){return Ve.get("/dashboard/widgets")}async function gt(i){return Ve.patch("/dashboard/layout",i)}async function wr(i){return Ve.patch("/dashboard/site-layout",i)}async function kr(i){await Ve.post(`/dashboard/notifications/${i}/hide`,{})}async function Mr(){return Ve.get("/system/info")}var Pr=v('
');function Rr(i,s){pe(s,!0);let _=he(s,"active",3,!1);var R=Le(),D=ie(R);{var c=m=>{var A=Pr();b(y=>se(A,"aria-label",y),[()=>p.t("ADMIN_NEXT.TOP_PROGRESS_BAR.WORKING")]),o(m,A)};$(D,m=>{_()&&m(c)})}o(i,R),ge()}const Nt=Symbol("dashboard-data");function zr(i){It(Nt,i)}function je(){const i=wt(Nt);if(!i)throw new Error("getDashboardData must be called inside a tree");return i}var Or=v('
'),$s=v(" ",1);function Ui(i,s){pe(s,!0);let _=re(null),R=re(null),D=re(He([])),c=re(He([])),m=re(He([])),A=re(null),y=re(He([])),V=re(He([])),K=re(null),U=re(null),w=re(He([])),g=re(He([])),n=re(!1),z=re(!1),h=re(!0),l=re(!1),E=re(!1),X=re(!1),x=re(!1),f=re(!1),N=re(!1),u=re(!1);const k=F(()=>JSON.stringify(e(w))!==JSON.stringify(e(g))),S=F(()=>pt("gpm")),P=F(()=>pt("system"));zr(()=>({stats:e(_),systemInfo:e(R),notifications:e(D),recentPages:e(m),popularity:e(A),feed:e(y),backups:e(V),updates:e(K),reports:e(U),animated:e(l),updatingAll:e(E),upgradingGrav:e(X),creatingBackup:e(x),canWriteGpm:e(S),canWriteSystem:e(P),onUpdateAll:ee,onUpgradeGrav:B,onCreateBackup:j}));async function G(W={}){const{flushGpm:H=!1,silent:te=!1}=W;te||T(h,!0);try{const M=await Promise.allSettled([Ut(),Mr(),Ct(H),Jt(8),Lt(),Xt(H),Bt(),Wt(H),Ht(),Ir(),$t(H)]);M[0].status==="fulfilled"&&T(_,M[0].value,!0),M[1].status==="fulfilled"&&T(R,M[1].value,!0),M[2].status==="fulfilled"&&T(D,M[2].value,!0),M[3].status==="fulfilled"&&T(m,M[3].value,!0),M[4].status==="fulfilled"&&T(A,M[4].value,!0),M[5].status==="fulfilled"&&T(y,M[5].value?.feed??[],!0),M[6].status==="fulfilled"&&T(V,M[6].value,!0),M[7].status==="fulfilled"&&T(K,M[7].value,!0),M[8].status==="fulfilled"&&T(U,M[8].value,!0),M[9].status==="fulfilled"&&(T(w,M[9].value.widgets,!0),T(g,JSON.parse(JSON.stringify(e(w))),!0),T(n,M[9].value.can_edit_site,!0)),M[10].status==="fulfilled"&&T(c,M[10].value,!0)}finally{te||(T(h,!1),T(l,!1),requestAnimationFrame(()=>requestAnimationFrame(()=>{T(l,!0)})))}}function q(W){return{preset:"custom",widgets:W.map(H=>({id:H.id,visible:H.visible,size:H.size,order:H.order}))}}async function C(){T(N,!0);try{const W=await gt(q(e(w)));T(w,W.widgets,!0),T(g,JSON.parse(JSON.stringify(e(w))),!0),T(f,!1),be.success(p.t("ADMIN_NEXT.DASHBOARD.LAYOUT_SAVED"))}catch(W){be.error(`Save failed: ${W instanceof Error?W.message:String(W)}`)}finally{T(N,!1)}}async function L(){if(await at.confirm({title:"Save as site default?",message:"This layout will become the default for every user on this site. Widgets you hide here will be hidden for everyone and cannot be re-enabled per-user.",confirmLabel:"Save site default"})){T(N,!0);try{const H=await wr(q(e(w)));T(w,H.widgets,!0),T(g,JSON.parse(JSON.stringify(e(w))),!0),T(f,!1),be.success(p.t("ADMIN_NEXT.DASHBOARD.SITE_LAYOUT_SAVED"))}catch(H){be.error(`Save failed: ${H instanceof Error?H.message:String(H)}`)}finally{T(N,!1)}}}function O(W){const H=W.apply(),te=new Map(H.widgets.map(M=>[M.id,M]));T(w,e(w).map(M=>{const de=te.get(M.id);return de?{...M,visible:de.visible??M.visible,size:de.size??M.size,order:de.order??M.order}:M}).sort((M,de)=>M.order-de.order),!0)}async function I(){if(await at.confirm({title:"Reset your layout?",message:"Your personal customizations will be cleared. The site default layout will apply.",confirmLabel:"Reset"})){T(N,!0);try{const H=await gt({preset:"default",widgets:[]});T(w,H.widgets,!0),T(g,JSON.parse(JSON.stringify(e(w))),!0),T(f,!1),be.success(p.t("ADMIN_NEXT.DASHBOARD.LAYOUT_RESET"))}catch(H){be.error(`Reset failed: ${H instanceof Error?H.message:String(H)}`)}finally{T(N,!1)}}}function J(){T(w,JSON.parse(JSON.stringify(e(g))),!0),T(f,!1)}function Q(W){const H=Math.max(0,...e(w).map(te=>te.order));T(w,e(w).map(te=>te.id===W?{...te,visible:!0,order:H+1}:te),!0)}async function ee(){const W=(e(K)?.plugins?.filter(M=>M.updatable).length??0)+(e(K)?.themes?.filter(M=>M.updatable).length??0);if(!await at.confirm({title:"Update all packages?",message:`This will update ${W} package${W!==1?"s":""}. Continue?`,confirmLabel:"Update All"}))return;T(E,!0);const te=be.loading(`Updating ${W} package${W!==1?"s":""}…`);try{const M=await jt(),de=M.updated.length;if(M.failed.length===0)be.success(p.t("ADMIN_NEXT.TOASTS.PACKAGES_UPDATED",{n:de}),{id:te});else{const ye=M.failed.map(Te=>`${Te.package}: ${Te.error}`).join(`
`);be.error((de>0?p.t("ADMIN_NEXT.TOASTS.PACKAGES_UPDATED",{n:de})+" · ":"")+`${ye}`,{id:te})}await G({silent:!0}),Ft([...M.updated,...M.cascaded_dependencies])}catch(M){be.error(p.t("ADMIN_NEXT.TOASTS.UPDATE_FAILED",{detail:M instanceof Error?M.message:String(M)}),{id:te})}finally{T(E,!1)}}async function B(){const W=e(K)?.grav?.available??"";if(!await at.confirm({title:"Upgrade Grav core?",message:`This will upgrade Grav from v${e(K)?.grav?.current??""} to v${W}. The site may be briefly unavailable during the upgrade.`,confirmLabel:"Upgrade Grav"}))return;T(X,!0);const te=be.loading(`Upgrading Grav to v${W}…`);try{const M=await Yt();be.success(p.t("ADMIN_NEXT.TOASTS.GRAV_UPGRADED",{version:M.new_version}),{id:te}),await G({silent:!0})}catch(M){be.error(`Grav upgrade failed: ${M instanceof Error?M.message:String(M)}`,{id:te})}finally{T(X,!1)}}async function j(){T(x,!0);const W=be.loading(p.t("ADMIN_NEXT.APP.CREATING_BACKUP"));try{const H=await Kt();be.success(p.t("ADMIN_NEXT.TOASTS.BACKUP_CREATED",{size:st(H.size)}),{id:W}),await G({silent:!0})}catch(H){be.error(`Backup failed: ${H instanceof Error?H.message:String(H)}`,{id:W})}finally{T(x,!1)}}Fe(()=>{Me.isAuthenticated&&G()});const Y=qt(()=>G({silent:!0}),6e4,{runImmediately:!1});ht(()=>{Y.start(),Us().then(Ae=>{T(z,Ae===!0)});const W=tt.subscribe("pages:*",()=>G({silent:!0})),H=tt.subscribe("users:*",()=>G({silent:!0})),te=tt.subscribe("plugins:*",()=>G({silent:!0})),M=tt.subscribe("gpm:*",()=>G({silent:!0})),de=tt.subscribe("config:update",()=>G({silent:!0}));return()=>{Y.stop(),W(),H(),te(),M(),de()}});var Z=$s();Gt("1uha8ag",W=>{Mt(H=>{Pt.title=H??""},[()=>p.t("ADMIN_NEXT.APP.DASHBOARD_GRAV_ADMIN")])});var oe=ie(Z);{let W=F(()=>e(E)||e(X)||e(x));Rr(oe,{get active(){return e(W)}})}var Ee=a(oe,2);{var ne=W=>{var H=Cs(),te=r(H);qe(te,{size:24,class:"animate-spin text-muted-foreground"}),t(H),o(W,H)},ae=W=>{var H=Hs(),te=r(H);Zt(te,{children:(Xe,Be)=>{let fe=()=>Be?.().scrolled;var De=Ws(),ze=r(De),Ie=r(ze),we=r(Ie),et=r(we,!0);t(we);var me=a(we,2);{var ce=le=>{var ve=Ls(),We=r(ve,!0);t(ve),b(Ge=>d(We,Ge),[()=>p.t("ADMIN_NEXT.APP.WELCOME_BACK",{name:Me.fullname||Me.username})]),o(le,ve)},ue=le=>{var ve=Xs(),We=r(ve,!0);t(ve),b(Ge=>d(We,Ge),[()=>p.t("ADMIN_NEXT.DASHBOARD.EDIT_HINT")]),o(le,ve)};$(me,le=>{!fe()&&!e(f)?le(ce):e(f)&&le(ue,1)})}t(Ie);var _e=a(Ie,2),Oe=r(_e);{var Pe=le=>{Ye(le,{variant:"outline",size:"sm",onclick:()=>G({flushGpm:!0}),children:(ve,We)=>{var Ge=Bs(),rt=ie(Ge);yr(rt,{size:13});var ot=a(rt);b(Ue=>d(ot,` ${Ue??""}`),[()=>p.t("ADMIN_NEXT.APP.REFRESH")]),o(ve,Ge)},$$slots:{default:!0}})};$(Oe,le=>{e(f)||le(Pe)})}var xe=a(Oe,2);{let le=F(()=>e(n)?L:void 0);Es(xe,{get dirty(){return e(k)},get saving(){return e(N)},get canEditSite(){return e(n)},onSaveUser:C,get onSaveSite(){return e(le)},onApplyPreset:O,onCancel:J,onResetToDefault:I,get editMode(){return e(f)},set editMode(ve){T(f,ve,!0)}})}t(_e),t(ze),t(De),b(le=>{$e(De,1,`px-6 transition-[padding] duration-200 ${fe()?"py-2":"pt-6 pb-3"}`),$e(ze,1,`flex items-center justify-between ${fe()?"min-h-6":"min-h-8"}`),$e(we,1,`font-semibold tracking-tight text-foreground transition-[font-size] duration-200 ${fe()?"text-sm":"text-xl"}`),d(et,le)},[()=>p.t("ADMIN_NEXT.DASHBOARD.TITLE")]),o(Xe,De)},$$slots:{default:!0}});var M=a(te,2),de=r(M);Os(de,{get exposed(){return e(z)}});var Ae=a(de,2);Rs(Ae,{get notifications(){return e(c)}});var ye=a(Ae,2);us(ye,{get widgets(){return e(w)},get editMode(){return e(f)},onChange:Se=>T(w,Se,!0),onAddClick:()=>T(u,!0)}),t(M);var Te=a(M,2);Ns(Te,{get widgets(){return e(w)},onAdd:Q,get open(){return e(u)},set open(Se){T(u,Se,!0)}}),t(H),o(W,H)};$(Ee,W=>{e(h)?W(ne):W(ae,-1)})}o(i,Z),ge()}export{Ui as component};