@dskripchenko/laravel-admin 1.2.4 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/ScreenPage.vue.d.ts +8 -0
- package/dist/components/dashboard/ChartWidget.vue.d.ts +5 -0
- package/dist/components/dashboard/GaugeWidget.vue.d.ts +8 -0
- package/dist/components/dashboard/HeatmapWidget.vue.d.ts +10 -9
- package/dist/components/dashboard/RecentTableWidget.vue.d.ts +14 -2
- package/dist/components/fields/NumberField.vue.d.ts +1 -1
- package/dist/components/fields/SelectField.vue.d.ts +1 -1
- package/dist/components/fields/TextAreaField.vue.d.ts +1 -1
- package/dist/components/fields/TextField.vue.d.ts +1 -1
- package/dist/components/fields/wysiwyg/quill/QuillField.vue.d.ts +1 -1
- package/dist/components/layouts/ColumnsLayout.vue.d.ts +1 -1
- package/dist/components/shell/AdminSidebarNode.test.d.ts +1 -0
- package/dist/components/shell/AdminSidebarNode.vue.d.ts +17 -0
- package/dist/index.cjs +2 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.mjs +4213 -3768
- package/dist/index.mjs.map +1 -1
- package/dist/stores/dashboard.d.ts +4 -1
- package/dist/stores/index.d.ts +2 -0
- package/dist/stores/resourceForm.d.ts +2 -2
- package/dist/stores/resourceIndex.d.ts +1 -1
- package/dist/stores/screen.d.ts +255 -0
- package/dist/stores/screen.test.d.ts +1 -0
- package/dist/style.css +1 -1
- package/package.json +2 -2
package/dist/index.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),ie=require("pinia"),X=require("vue-router"),c=require("@dskripchenko/ui"),ga=require("axios"),ne=require("./formState-GlJBphEn.cjs"),ka=require("@dskripchenko/wysiwyg");require("@dskripchenko/wysiwyg/style.css");const _a=t=>t.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase();var Pe={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"};const ba=({size:t,strokeWidth:n=2,absoluteStrokeWidth:a,color:r,iconNode:i,name:l,class:o,...s},{slots:d})=>e.h("svg",{...Pe,width:t||Pe.width,height:t||Pe.height,stroke:r||Pe.stroke,"stroke-width":a?Number(n)*24/Number(t):n,class:["lucide",`lucide-${_a(l??"icon")}`],...s},[...i.map(f=>e.h(...f)),...d.default?[d.default()]:[]]);const S=(t,n)=>(a,{slots:r})=>e.h(ba,{...a,iconNode:n,name:t},r);const wa=S("ActivityIcon",[["path",{d:"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2",key:"169zse"}]]);const Ba=S("ArchiveIcon",[["rect",{width:"20",height:"5",x:"2",y:"3",rx:"1",key:"1wp1u1"}],["path",{d:"M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8",key:"1s80jp"}],["path",{d:"M10 12h4",key:"a56b0p"}]]);const Va=S("ArrowLeftIcon",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]]);const lt=S("BellIcon",[["path",{d:"M6 8a6 6 0 0 1 12 0c0 7 3 9 3 9H3s3-2 3-9",key:"1qo2s2"}],["path",{d:"M10.3 21a1.94 1.94 0 0 0 3.4 0",key:"qgo35s"}]]);const ft=S("BookmarkIcon",[["path",{d:"m19 21-7-4-7 4V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v16z",key:"1fy3hk"}]]);const Kt=S("BoxIcon",[["path",{d:"M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z",key:"hh9hay"}],["path",{d:"m3.3 7 8.7 5 8.7-5",key:"g66t2b"}],["path",{d:"M12 22V12",key:"d0xqtd"}]]);const xa=S("BriefcaseIcon",[["path",{d:"M16 20V4a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16",key:"jecpp"}],["rect",{width:"20",height:"14",x:"2",y:"6",rx:"2",key:"i6l2r4"}]]);const Gt=S("CalendarIcon",[["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M16 2v4",key:"4m81vk"}],["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",key:"1hopcy"}],["path",{d:"M3 10h18",key:"8toen8"}]]);const nt=S("ChartColumnIcon",[["path",{d:"M3 3v16a2 2 0 0 0 2 2h16",key:"c24i48"}],["path",{d:"M18 17V9",key:"2bz60n"}],["path",{d:"M13 17V5",key:"1frdt8"}],["path",{d:"M8 17v-3",key:"17ska0"}]]);const Na=S("ChartLineIcon",[["path",{d:"M3 3v16a2 2 0 0 0 2 2h16",key:"c24i48"}],["path",{d:"m19 9-5 5-4-4-3 3",key:"2osh9i"}]]);const Ca=S("ChartPieIcon",[["path",{d:"M21 12c.552 0 1.005-.449.95-.998a10 10 0 0 0-8.953-8.951c-.55-.055-.998.398-.998.95v8a1 1 0 0 0 1 1z",key:"pzmjnu"}],["path",{d:"M21.21 15.89A10 10 0 1 1 8 2.83",key:"k2fpak"}]]);const Ke=S("CheckIcon",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);const Xt=S("ChevronDownIcon",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);const Ea=S("CircleAlertIcon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]]);const Ge=S("CircleCheckBigIcon",[["path",{d:"M21.801 10A10 10 0 1 1 17 3.335",key:"yps3ct"}],["path",{d:"m9 11 3 3L22 4",key:"1pflzl"}]]);const $a=S("CircleHelpIcon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3",key:"1u773s"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);const Sa=S("CircleUserIcon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["circle",{cx:"12",cy:"10",r:"3",key:"ilqhr7"}],["path",{d:"M7 20.662V19a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v1.662",key:"154egf"}]]);const Ua=S("CircleXIcon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]]);const Ma=S("ClockIcon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["polyline",{points:"12 6 12 12 16 14",key:"68esgv"}]]);const Da=S("CodeIcon",[["polyline",{points:"16 18 22 12 16 6",key:"z7tu5w"}],["polyline",{points:"8 6 2 12 8 18",key:"1eg1df"}]]);const Ia=S("CogIcon",[["path",{d:"M12 20a8 8 0 1 0 0-16 8 8 0 0 0 0 16Z",key:"sobvz5"}],["path",{d:"M12 14a2 2 0 1 0 0-4 2 2 0 0 0 0 4Z",key:"11i496"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 22v-2",key:"1osdcq"}],["path",{d:"m17 20.66-1-1.73",key:"eq3orb"}],["path",{d:"M11 10.27 7 3.34",key:"16pf9h"}],["path",{d:"m20.66 17-1.73-1",key:"sg0v6f"}],["path",{d:"m3.34 7 1.73 1",key:"1ulond"}],["path",{d:"M14 12h8",key:"4f43i9"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"m20.66 7-1.73 1",key:"1ow05n"}],["path",{d:"m3.34 17 1.73-1",key:"nuk764"}],["path",{d:"m17 3.34-1 1.73",key:"2wel8s"}],["path",{d:"m11 13.73-4 6.93",key:"794ttg"}]]);const Ta=S("Columns2Icon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M12 3v18",key:"108xh3"}]]);const Fa=S("CommandIcon",[["path",{d:"M15 6v12a3 3 0 1 0 3-3H6a3 3 0 1 0 3 3V6a3 3 0 1 0-3 3h12a3 3 0 1 0-3-3",key:"11bfej"}]]);const Aa=S("DatabaseIcon",[["ellipse",{cx:"12",cy:"5",rx:"9",ry:"3",key:"msslwz"}],["path",{d:"M3 5V19A9 3 0 0 0 21 19V5",key:"1wlel7"}],["path",{d:"M3 12A9 3 0 0 0 21 12",key:"mv7ke4"}]]);const Yt=S("DownloadIcon",[["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["polyline",{points:"7 10 12 15 17 10",key:"2ggqvy"}],["line",{x1:"12",x2:"12",y1:"15",y2:"3",key:"1vk2je"}]]);const Zt=S("EllipsisIcon",[["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}],["circle",{cx:"19",cy:"12",r:"1",key:"1wjl8i"}],["circle",{cx:"5",cy:"12",r:"1",key:"1pcz8c"}]]);const La=S("EyeIcon",[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);const za=S("FileClockIcon",[["path",{d:"M16 22h2a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v3",key:"37hlfg"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["circle",{cx:"8",cy:"16",r:"6",key:"10v15b"}],["path",{d:"M9.5 17.5 8 16.25V14",key:"1o80t2"}]]);const At=S("FileTextIcon",[["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",key:"1rqfz7"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]]);const Ra=S("FilesIcon",[["path",{d:"M20 7h-3a2 2 0 0 1-2-2V2",key:"x099mo"}],["path",{d:"M9 18a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h7l4 4v10a2 2 0 0 1-2 2Z",key:"18t6ie"}],["path",{d:"M3 7.6v12.8A1.6 1.6 0 0 0 4.6 22h9.8",key:"1nja0z"}]]);const Pa=S("FlagIcon",[["path",{d:"M4 15s1-1 4-1 5 2 8 2 4-1 4-1V3s-1 1-4 1-5-2-8-2-4 1-4 1z",key:"i9b6wo"}],["line",{x1:"4",x2:"4",y1:"22",y2:"15",key:"1cm3nv"}]]);const qa=S("FolderOpenIcon",[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",key:"usdka0"}]]);const ja=S("FolderIcon",[["path",{d:"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z",key:"1kt360"}]]);const Oa=S("GaugeIcon",[["path",{d:"m12 14 4-4",key:"9kzdfg"}],["path",{d:"M3.34 19a10 10 0 1 1 17.32 0",key:"19p75a"}]]);const Jt=S("GlobeIcon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",key:"13o1zl"}],["path",{d:"M2 12h20",key:"9i4pu4"}]]);const Wa=S("Grid3x3Icon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M3 9h18",key:"1pudct"}],["path",{d:"M3 15h18",key:"5xshup"}],["path",{d:"M9 3v18",key:"fh3hqa"}],["path",{d:"M15 3v18",key:"14nvp0"}]]);const Qt=S("GripVerticalIcon",[["circle",{cx:"9",cy:"12",r:"1",key:"1vctgf"}],["circle",{cx:"9",cy:"5",r:"1",key:"hp0tcf"}],["circle",{cx:"9",cy:"19",r:"1",key:"fkjjf6"}],["circle",{cx:"15",cy:"12",r:"1",key:"1tmaij"}],["circle",{cx:"15",cy:"5",r:"1",key:"19l28e"}],["circle",{cx:"15",cy:"19",r:"1",key:"f4zoj3"}]]);const Ha=S("HardDriveIcon",[["line",{x1:"22",x2:"2",y1:"12",y2:"12",key:"1y58io"}],["path",{d:"M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z",key:"oot6mr"}],["line",{x1:"6",x2:"6.01",y1:"16",y2:"16",key:"sgf278"}],["line",{x1:"10",x2:"10.01",y1:"16",y2:"16",key:"1l4acy"}]]);const Ka=S("HashIcon",[["line",{x1:"4",x2:"20",y1:"9",y2:"9",key:"4lhtct"}],["line",{x1:"4",x2:"20",y1:"15",y2:"15",key:"vyu0kd"}],["line",{x1:"10",x2:"8",y1:"3",y2:"21",key:"1ggp8o"}],["line",{x1:"16",x2:"14",y1:"3",y2:"21",key:"weycgp"}]]);const Ga=S("HeartIcon",[["path",{d:"M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z",key:"c3ymky"}]]);const Xa=S("HistoryIcon",[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}],["path",{d:"M12 7v5l4 2",key:"1fdv2h"}]]);const Ya=S("HouseIcon",[["path",{d:"M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8",key:"5wwlr5"}],["path",{d:"M3 10a2 2 0 0 1 .709-1.528l7-5.999a2 2 0 0 1 2.582 0l7 5.999A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z",key:"1d0kgt"}]]);const Lt=S("ImageIcon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}],["circle",{cx:"9",cy:"9",r:"2",key:"af1f0g"}],["path",{d:"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21",key:"1xmnt7"}]]);const Za=S("ImagesIcon",[["path",{d:"M18 22H4a2 2 0 0 1-2-2V6",key:"pblm9e"}],["path",{d:"m22 13-1.296-1.296a2.41 2.41 0 0 0-3.408 0L11 18",key:"nf6bnh"}],["circle",{cx:"12",cy:"8",r:"2",key:"1822b1"}],["rect",{width:"16",height:"16",x:"6",y:"2",rx:"2",key:"12espp"}]]);const Ja=S("InboxIcon",[["polyline",{points:"22 12 16 12 14 15 10 15 8 12 2 12",key:"o97t9d"}],["path",{d:"M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z",key:"oot6mr"}]]);const Qa=S("InfoIcon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 16v-4",key:"1dtifu"}],["path",{d:"M12 8h.01",key:"e9boi3"}]]);const eo=S("KeyIcon",[["path",{d:"m15.5 7.5 2.3 2.3a1 1 0 0 0 1.4 0l2.1-2.1a1 1 0 0 0 0-1.4L19 4",key:"g0fldk"}],["path",{d:"m21 2-9.6 9.6",key:"1j0ho8"}],["circle",{cx:"7.5",cy:"15.5",r:"5.5",key:"yqb3hr"}]]);const to=S("LayersIcon",[["path",{d:"m12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83Z",key:"8b97xw"}],["path",{d:"m22 17.65-9.17 4.16a2 2 0 0 1-1.66 0L2 17.65",key:"dd6zsq"}],["path",{d:"m22 12.65-9.17 4.16a2 2 0 0 1-1.66 0L2 12.65",key:"ep9fru"}]]);const no=S("LayoutDashboardIcon",[["rect",{width:"7",height:"9",x:"3",y:"3",rx:"1",key:"10lvy0"}],["rect",{width:"7",height:"5",x:"14",y:"3",rx:"1",key:"16une8"}],["rect",{width:"7",height:"9",x:"14",y:"12",rx:"1",key:"1hutg5"}],["rect",{width:"7",height:"5",x:"3",y:"16",rx:"1",key:"ldoo1y"}]]);const ao=S("LayoutGridIcon",[["rect",{width:"7",height:"7",x:"3",y:"3",rx:"1",key:"1g98yp"}],["rect",{width:"7",height:"7",x:"14",y:"3",rx:"1",key:"6d4xhi"}],["rect",{width:"7",height:"7",x:"14",y:"14",rx:"1",key:"nxv5o0"}],["rect",{width:"7",height:"7",x:"3",y:"14",rx:"1",key:"1bb6yr"}]]);const oo=S("LifeBuoyIcon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m4.93 4.93 4.24 4.24",key:"1ymg45"}],["path",{d:"m14.83 9.17 4.24-4.24",key:"1cb5xl"}],["path",{d:"m14.83 14.83 4.24 4.24",key:"q42g0n"}],["path",{d:"m9.17 14.83-4.24 4.24",key:"bqpfvv"}],["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}]]);const lo=S("LinkIcon",[["path",{d:"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71",key:"1cjeqo"}],["path",{d:"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71",key:"19qd67"}]]);const ro=S("ListChecksIcon",[["path",{d:"m3 17 2 2 4-4",key:"1jhpwq"}],["path",{d:"m3 7 2 2 4-4",key:"1obspn"}],["path",{d:"M13 6h8",key:"15sg57"}],["path",{d:"M13 12h8",key:"h98zly"}],["path",{d:"M13 18h8",key:"oe0vm4"}]]);const io=S("ListIcon",[["path",{d:"M3 12h.01",key:"nlz23k"}],["path",{d:"M3 18h.01",key:"1tta3j"}],["path",{d:"M3 6h.01",key:"1rqtza"}],["path",{d:"M8 12h13",key:"1za7za"}],["path",{d:"M8 18h13",key:"1lx6n3"}],["path",{d:"M8 6h13",key:"ik3vkj"}]]);const so=S("LockIcon",[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4",key:"fwvmzm"}]]);const co=S("LogOutIcon",[["path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4",key:"1uf3rs"}],["polyline",{points:"16 17 21 12 16 7",key:"1gabdz"}],["line",{x1:"21",x2:"9",y1:"12",y2:"12",key:"1uyos4"}]]);const en=S("MailIcon",[["rect",{width:"20",height:"16",x:"2",y:"4",rx:"2",key:"18n3k1"}],["path",{d:"m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7",key:"1ocrg3"}]]);const uo=S("MapPinIcon",[["path",{d:"M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0",key:"1r0f0z"}],["circle",{cx:"12",cy:"10",r:"3",key:"ilqhr7"}]]);const mo=S("MapIcon",[["path",{d:"M14.106 5.553a2 2 0 0 0 1.788 0l3.659-1.83A1 1 0 0 1 21 4.619v12.764a1 1 0 0 1-.553.894l-4.553 2.277a2 2 0 0 1-1.788 0l-4.212-2.106a2 2 0 0 0-1.788 0l-3.659 1.83A1 1 0 0 1 3 19.381V6.618a1 1 0 0 1 .553-.894l4.553-2.277a2 2 0 0 1 1.788 0z",key:"169xi5"}],["path",{d:"M15 5.764v15",key:"1pn4in"}],["path",{d:"M9 3.236v15",key:"1uimfh"}]]);const tn=S("MessageSquareIcon",[["path",{d:"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z",key:"1lielz"}]]);const fo=S("MonitorIcon",[["rect",{width:"20",height:"14",x:"2",y:"3",rx:"2",key:"48i651"}],["line",{x1:"8",x2:"16",y1:"21",y2:"21",key:"1svkeh"}],["line",{x1:"12",x2:"12",y1:"17",y2:"21",key:"vw1qmm"}]]);const po=S("MoonIcon",[["path",{d:"M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z",key:"a7tn18"}]]);const vo=S("PackageIcon",[["path",{d:"M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z",key:"1a0edw"}],["path",{d:"M12 22V12",key:"d0xqtd"}],["path",{d:"m3.3 7 7.703 4.734a2 2 0 0 0 1.994 0L20.7 7",key:"yx3hmr"}],["path",{d:"m7.5 4.27 9 5.15",key:"1c824w"}]]);const ho=S("PanelLeftIcon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}]]);const yo=S("PanelsTopLeftIcon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M3 9h18",key:"1pudct"}],["path",{d:"M9 21V9",key:"1oto5p"}]]);const go=S("PaperclipIcon",[["path",{d:"m21.44 11.05-9.19 9.19a6 6 0 0 1-8.49-8.49l8.57-8.57A4 4 0 1 1 18 8.84l-8.59 8.57a2 2 0 0 1-2.83-2.83l8.49-8.48",key:"1u3ebp"}]]);const pt=S("PencilIcon",[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]]);const Xe=S("PlusIcon",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);const ko=S("RefreshCwIcon",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]]);const vt=S("RotateCcwIcon",[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}]]);const ht=S("SearchIcon",[["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["path",{d:"m21 21-4.3-4.3",key:"1qie3q"}]]);const _o=S("SendIcon",[["path",{d:"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z",key:"1ffxy3"}],["path",{d:"m21.854 2.147-10.94 10.939",key:"12cjpa"}]]);const bo=S("ServerIcon",[["rect",{width:"20",height:"8",x:"2",y:"2",rx:"2",ry:"2",key:"ngkwjq"}],["rect",{width:"20",height:"8",x:"2",y:"14",rx:"2",ry:"2",key:"iecqi9"}],["line",{x1:"6",x2:"6.01",y1:"6",y2:"6",key:"16zg32"}],["line",{x1:"6",x2:"6.01",y1:"18",y2:"18",key:"nzw8ys"}]]);const nn=S("SettingsIcon",[["path",{d:"M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z",key:"1qme2f"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);const zt=S("ShieldIcon",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}]]);const wo=S("ShoppingBagIcon",[["path",{d:"M6 2 3 6v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V6l-3-4Z",key:"hou9p0"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M16 10a4 4 0 0 1-8 0",key:"1ltviw"}]]);const Bo=S("ShoppingCartIcon",[["circle",{cx:"8",cy:"21",r:"1",key:"jimo8o"}],["circle",{cx:"19",cy:"21",r:"1",key:"13723u"}],["path",{d:"M2.05 2.05h2l2.66 12.42a2 2 0 0 0 2 1.58h9.78a2 2 0 0 0 1.95-1.57l1.65-7.43H5.12",key:"9zh506"}]]);const Vo=S("SlidersVerticalIcon",[["line",{x1:"4",x2:"4",y1:"21",y2:"14",key:"1p332r"}],["line",{x1:"4",x2:"4",y1:"10",y2:"3",key:"gb41h5"}],["line",{x1:"12",x2:"12",y1:"21",y2:"12",key:"hf2csr"}],["line",{x1:"12",x2:"12",y1:"8",y2:"3",key:"1kfi7u"}],["line",{x1:"20",x2:"20",y1:"21",y2:"16",key:"1lhrwl"}],["line",{x1:"20",x2:"20",y1:"12",y2:"3",key:"16vvfq"}],["line",{x1:"2",x2:"6",y1:"14",y2:"14",key:"1uebub"}],["line",{x1:"10",x2:"14",y1:"8",y2:"8",key:"1yglbp"}],["line",{x1:"18",x2:"22",y1:"16",y2:"16",key:"1jxqpz"}]]);const xo=S("SquarePenIcon",[["path",{d:"M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7",key:"1m0v6g"}],["path",{d:"M18.375 2.625a1 1 0 0 1 3 3l-9.013 9.014a2 2 0 0 1-.853.505l-2.873.84a.5.5 0 0 1-.62-.62l.84-2.873a2 2 0 0 1 .506-.852z",key:"ohrbg2"}]]);const No=S("StarIcon",[["path",{d:"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z",key:"r04s7s"}]]);const Co=S("StoreIcon",[["path",{d:"m2 7 4.41-4.41A2 2 0 0 1 7.83 2h8.34a2 2 0 0 1 1.42.59L22 7",key:"ztvudi"}],["path",{d:"M4 12v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8",key:"1b2hhj"}],["path",{d:"M15 22v-4a2 2 0 0 0-2-2h-2a2 2 0 0 0-2 2v4",key:"2ebpfo"}],["path",{d:"M2 7h20",key:"1fcdvo"}],["path",{d:"M22 7v3a2 2 0 0 1-2 2a2.7 2.7 0 0 1-1.59-.63.7.7 0 0 0-.82 0A2.7 2.7 0 0 1 16 12a2.7 2.7 0 0 1-1.59-.63.7.7 0 0 0-.82 0A2.7 2.7 0 0 1 12 12a2.7 2.7 0 0 1-1.59-.63.7.7 0 0 0-.82 0A2.7 2.7 0 0 1 8 12a2.7 2.7 0 0 1-1.59-.63.7.7 0 0 0-.82 0A2.7 2.7 0 0 1 4 12a2 2 0 0 1-2-2V7",key:"6c3vgh"}]]);const Eo=S("SunIcon",[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]]);const an=S("TagIcon",[["path",{d:"M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z",key:"vktsd0"}],["circle",{cx:"7.5",cy:"7.5",r:".5",fill:"currentColor",key:"kqv944"}]]);const $o=S("TagsIcon",[["path",{d:"m15 5 6.3 6.3a2.4 2.4 0 0 1 0 3.4L17 19",key:"1cbfv1"}],["path",{d:"M9.586 5.586A2 2 0 0 0 8.172 5H3a1 1 0 0 0-1 1v5.172a2 2 0 0 0 .586 1.414L8.29 18.29a2.426 2.426 0 0 0 3.42 0l3.58-3.58a2.426 2.426 0 0 0 0-3.42z",key:"135mg7"}],["circle",{cx:"6.5",cy:"9.5",r:".5",fill:"currentColor",key:"5pm5xn"}]]);const So=S("TerminalIcon",[["polyline",{points:"4 17 10 11 4 5",key:"akl6gq"}],["line",{x1:"12",x2:"20",y1:"19",y2:"19",key:"q2wloq"}]]);const _e=S("Trash2Icon",[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}],["line",{x1:"10",x2:"10",y1:"11",y2:"17",key:"1uufr5"}],["line",{x1:"14",x2:"14",y1:"11",y2:"17",key:"xtxkd"}]]);const Uo=S("TrendingUpIcon",[["polyline",{points:"22 7 13.5 15.5 8.5 10.5 2 17",key:"126l90"}],["polyline",{points:"16 7 22 7 22 13",key:"kwv8wd"}]]);const Mo=S("TriangleAlertIcon",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);const on=S("UploadIcon",[["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["polyline",{points:"17 8 12 3 7 8",key:"t8dd8p"}],["line",{x1:"12",x2:"12",y1:"3",y2:"15",key:"widbto"}]]);const Do=S("UserPlusIcon",[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}],["line",{x1:"19",x2:"19",y1:"8",y2:"14",key:"1bvyxn"}],["line",{x1:"22",x2:"16",y1:"11",y2:"11",key:"1shjgl"}]]);const Io=S("UserIcon",[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]]);const To=S("UsersIcon",[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}],["path",{d:"M22 21v-2a4 4 0 0 0-3-3.87",key:"kshegd"}],["path",{d:"M16 3.13a4 4 0 0 1 0 7.75",key:"1da9ce"}]]);const be=S("XIcon",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);const Fo=S("ZapIcon",[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]]);let $e=null;function yt(t){$e=t}function H(){if($e===null)throw new Error("[admin] AdminClient is not registered. Call setAdminClient(...) before using stores.");return $e}function ln(){$e=null}function rn(){return $e!==null}const Z=Object.freeze(Object.defineProperty({__proto__:null,clearAdminClient:ln,getAdminClient:H,hasAdminClient:rn,setAdminClient:yt},Symbol.toStringTag,{value:"Module"})),Ye=ie.defineStore("admin-theme",()=>{const t=e.ref("light"),n=e.ref(["light","dark"]),a=e.computed(()=>t.value==="dark");function r(s){t.value=s.theme,n.value=s.availableThemes,o(s.theme)}function i(s){if(!n.value.includes(s))throw new Error(`Theme "${s}" is not available`);t.value=s,o(s)}async function l(s){if(!n.value.includes(s))throw new Error(`Theme "${s}" is not available`);const d=t.value;i(s);try{await H().post("/system/setTheme",{theme:s})}catch(f){throw i(d),f}}function o(s){typeof document<"u"&&document.documentElement&&document.documentElement.setAttribute("data-theme",s)}return{current:t,available:n,isDark:a,hydrate:r,applyLocal:i,setTheme:l}}),Ao=["aria-label","aria-pressed"],gt=e.defineComponent({__name:"ThemeToggle",setup(t){const n=Ye(),a=e.computed(()=>n.current==="dark"),r=e.computed(()=>a.value?Eo:po),i=e.computed(()=>a.value?"sun":"moon"),l=e.computed(()=>a.value?"Переключить на светлую тему":"Переключить на тёмную тему");async function o(){const s=a.value?"light":"dark";await n.setTheme(s)}return(s,d)=>(e.openBlock(),e.createElementBlock("button",{type:"button",class:"admin-topbar__icon-btn","aria-label":l.value,"aria-pressed":a.value,onClick:o},[e.createVNode(e.unref(c.UidIcon),{icon:r.value,size:18,"data-icon":i.value},null,8,["icon","data-icon"])],8,Ao))}}),Se=ie.defineStore("admin-locale",()=>{const t=e.ref("ru"),n=e.ref(["ru","en"]);function a(o){t.value=o.locale,n.value=o.availableLocales,l(o.locale)}function r(o){if(!n.value.includes(o))throw new Error(`Locale "${o}" is not available`);t.value=o,l(o)}async function i(o){if(!n.value.includes(o))throw new Error(`Locale "${o}" is not available`);const s=t.value;r(o);try{await H().post("/system/setLocale",{locale:o})}catch(d){throw r(s),d}}function l(o){typeof document<"u"&&document.documentElement&&document.documentElement.setAttribute("lang",o);try{H().setLocale(o)}catch{}}return{current:t,available:n,hydrate:a,applyLocal:r,setLocale:i}}),Lo={type:"button",class:"admin-topbar__icon-btn",style:{width:"auto",padding:"0 8px",gap:"4px","font-size":"12px"},"aria-label":"Сменить локаль"},kt=e.defineComponent({__name:"LocaleSwitcher",setup(t){const n=Se();async function a(r){r!==n.current&&await n.setLocale(r)}return(r,i)=>(e.openBlock(),e.createBlock(e.unref(c.UidMenu),null,{trigger:e.withCtx(()=>[e.createElementVNode("button",Lo,[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(Jt),size:14,"data-icon":"globe"},null,8,["icon"]),e.createElementVNode("span",null,e.toDisplayString((e.unref(n).current??"").toUpperCase()),1)])]),default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(n).available,l=>(e.openBlock(),e.createBlock(e.unref(c.UidMenuItem),{key:l,onClick:o=>a(l)},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(l.toUpperCase()),1)]),_:2},1032,["onClick"]))),128))]),_:1}))}}),Ue=ie.defineStore("admin-notifications",()=>{const t=e.ref([]),n=e.ref(0),a=e.ref(!1),r=e.ref("all"),i=e.ref(null),l=e.ref(!1),o=e.computed(()=>n.value>0);function s(){l.value=!0}function d(){l.value=!1}function f(){l.value=!l.value}function p(m){n.value=m.unread_notifications_count}async function b(m="all",w=1){a.value=!0;try{const E=await H().get(`/notifications/list?type=${m}&page=${w}`);t.value=E.data,n.value=E.meta.unread_count,i.value={page:E.meta.page,per_page:E.meta.per_page,total:E.meta.total,last_page:E.meta.last_page},r.value=m}finally{a.value=!1}}async function u(){const w=await H().get("/notifications/unread");n.value=w.count,r.value==="unread"&&(t.value=w.data)}async function N(m){await H().post("/notifications/markAsRead",{id:m});const C=t.value.find(E=>E.id===m);C&&C.read_at===null&&(C.read_at=new Date().toISOString(),n.value=Math.max(0,n.value-1))}async function h(){await H().post("/notifications/markAllAsRead");const w=new Date().toISOString();for(const C of t.value)C.read_at===null&&(C.read_at=w);n.value=0}async function k(m){await H().post("/notifications/destroy",{id:m});const C=t.value.findIndex(E=>E.id===m);if(C!==-1){const E=t.value[C].read_at===null;t.value.splice(C,1),E&&(n.value=Math.max(0,n.value-1))}}return{items:t,unreadCount:n,loading:a,meta:i,lastFilter:r,isOpen:l,hasUnread:o,hydrate:p,load:b,loadUnread:u,markAsRead:N,markAllAsRead:h,destroy:k,openDrawer:s,closeDrawer:d,toggleDrawer:f}}),zo=["aria-expanded"],Ro=["title"],sn=e.defineComponent({__name:"NotificationBell",setup(t){const n=Ue(),a=e.computed(()=>{const i=n.unreadCount;return i<=0?null:i>99?"99+":String(i)});function r(){n.toggleDrawer()}return(i,l)=>(e.openBlock(),e.createElementBlock("button",{type:"button",class:"admin-topbar__icon-btn","aria-label":"Уведомления","aria-haspopup":"dialog","aria-expanded":e.unref(n).isOpen,onClick:r},[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(lt),size:18,"data-icon":"bell"},null,8,["icon"]),a.value!==null?(e.openBlock(),e.createElementBlock("span",{key:0,class:"admin-topbar__bell-badge",title:`Непрочитанных: ${e.unref(n).unreadCount}`},e.toDisplayString(a.value),9,Ro)):e.createCommentVNode("",!0)],8,zo))}});class de extends Error{status;errorKey;payload;constructor(n,a){super(a.message??`API error ${n}`),this.name="ApiError",this.status=n,this.errorKey=a.errorKey??"unknown",this.payload=a}}class _t extends de{constructor(n){super(401,n),this.name="UnauthenticatedError"}}class cn extends de{constructor(n){super(403,n),this.name="ForbiddenError"}}class dn extends de{constructor(n){super(404,n),this.name="NotFoundError"}}class Me extends de{fields;constructor(n){super(422,n),this.name="ValidationError",this.fields=n.messages??{}}firstFieldMessage(){for(const n of Object.values(this.fields))if(n.length>0)return n[0];return null}}class De extends Error{constructor(n="Network error"){super(n),this.name="NetworkError"}}function rt(t,n){switch(t){case 401:return new _t(n);case 403:return new cn(n);case 404:return new dn(n);case 422:return new Me(n);default:return new de(t,n)}}const re=ie.defineStore("admin-auth",()=>{const t=e.ref(null),n=e.ref([]),a=e.ref(null),r=e.computed(()=>t.value!==null),i=e.computed(()=>a.value!==null);function l(h){t.value=h.user,n.value=h.permissions}function o(h){return n.value.includes("*")||n.value.includes(h)?!0:n.value.some(k=>{if(!k.endsWith(".*"))return!1;const m=k.slice(0,-1);return h.startsWith(m)})}function s(h){return h.some(o)}function d(h){return h.every(o)}async function f(h){const k=H();try{const m=await k.post("/auth/login",h);return m?.user&&(t.value=m.user),Array.isArray(m?.permissions)&&(n.value=m.permissions),a.value=null,"authenticated"}catch(m){if(m instanceof de&&m.errorKey==="two_factor_required"){const w=m.payload.challenge_token;return a.value={challengeToken:typeof w=="string"?w:"",remember:h.remember??!1},"two_factor_required"}throw m}}async function p(h){if(a.value===null)throw new Error("No pending 2FA challenge");const m=await H().post("/auth/twoFactorChallenge",{challenge_token:a.value.challengeToken,code:h});t.value=m.user,a.value=null}async function b(h){if(a.value===null)throw new Error("No pending 2FA challenge");const m=await H().post("/auth/twoFactorRecovery",{challenge_token:a.value.challengeToken,recovery_code:h});return t.value=m.user,a.value=null,{remaining:m.recovery_codes_remaining}}function u(){a.value=null}async function N(){const h=H();try{await h.post("/auth/logout")}finally{t.value=null,n.value=[],a.value=null}}return{user:t,permissions:n,pendingChallenge:a,isAuthenticated:r,isChallengePending:i,hydrate:l,hasPermission:o,hasAnyPermission:s,hasAllPermissions:d,login:f,twoFactorChallenge:p,twoFactorRecovery:b,cancelChallenge:u,logout:N}}),Po={type:"button",class:"admin-topbar__icon-btn admin-user-menu__trigger","aria-label":"Меню пользователя","aria-haspopup":"menu",style:{width:"auto",padding:"0 4px",gap:"8px"}},un=e.defineComponent({__name:"UserMenu",setup(t){const n=re(),a=X.useRouter();async function r(){try{await n.logout()}finally{await a.push({name:"admin.login"})}}function i(){a.push({name:"admin.profile"})}return(l,o)=>(e.openBlock(),e.createBlock(e.unref(c.UidMenu),null,{trigger:e.withCtx(()=>[e.createElementVNode("button",Po,[e.createVNode(e.unref(c.UidAvatar),{src:e.unref(n).user?.avatar??void 0,name:e.unref(n).user?.name??"?",alt:e.unref(n).user?.name??"User",size:"sm"},null,8,["src","name","alt"])])]),default:e.withCtx(()=>[e.createVNode(e.unref(c.UidMenuItem),{onClick:i},{default:e.withCtx(()=>[...o[0]||(o[0]=[e.createTextVNode("Профиль",-1)])]),_:1}),e.createVNode(e.unref(c.UidMenuSeparator)),e.createVNode(e.unref(c.UidMenuItem),{variant:"danger",onClick:r},{default:e.withCtx(()=>[...o[1]||(o[1]=[e.createTextVNode("Выйти",-1)])]),_:1})]),_:1}))}}),qo={class:"admin-topbar"},jo={class:"admin-topbar__breadcrumbs"},Oo={key:0,class:"sep"},Wo={class:"admin-topbar__search",role:"button",tabindex:"0"},mn=e.defineComponent({__name:"AdminTopBar",props:{breadcrumbs:{default:()=>[]},showCollapseToggle:{type:Boolean,default:!0}},emits:["toggle-sidebar"],setup(t,{emit:n}){const a=t,r=n,i=e.computed(()=>a.breadcrumbs.length-1);return(l,o)=>(e.openBlock(),e.createElementBlock("header",qo,[t.showCollapseToggle?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"admin-topbar__icon-btn","aria-label":"Свернуть меню",onClick:o[0]||(o[0]=s=>r("toggle-sidebar"))},[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(ho),size:18,"data-icon":"panel-left"},null,8,["icon"])])):e.createCommentVNode("",!0),e.createElementVNode("div",jo,[e.renderSlot(l.$slots,"breadcrumbs",{},()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.breadcrumbs,(s,d)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:d},[d>0?(e.openBlock(),e.createElementBlock("span",Oo,"›")):e.createCommentVNode("",!0),(e.openBlock(),e.createBlock(e.resolveDynamicComponent(s.to?"a":"span"),{href:typeof s.to=="string"?s.to:void 0,class:e.normalizeClass(d===i.value?"cur":"")},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(s.label),1)]),_:2},1032,["href","class"]))],64))),128))])]),o[3]||(o[3]=e.createElementVNode("div",{class:"admin-topbar__spacer"},null,-1)),e.renderSlot(l.$slots,"search",{},()=>[e.createElementVNode("div",Wo,[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(ht),size:14,"data-icon":"search"},null,8,["icon"]),o[1]||(o[1]=e.createElementVNode("span",null,"Поиск везде…",-1)),o[2]||(o[2]=e.createElementVNode("kbd",null,"⌘K",-1))])]),e.renderSlot(l.$slots,"actions"),e.createVNode(sn),e.createVNode(gt),e.createVNode(kt),e.createVNode(un)]))}}),bt=ie.defineStore("admin-menu",()=>{const t=e.ref([]),n=e.ref(!1),a=e.ref(null),r=e.ref(!1),i=e.computed(()=>{const f=re(),p=b=>{if(Array.isArray(b.permissions)&&b.permissions.length>0&&!f.hasAnyPermission(b.permissions))return null;const u=(b.children??[]).map(p).filter(N=>N!==null);return{...b,children:u}};return t.value.map(p).filter(b=>b!==null)}),l=e.computed(()=>{const f=new Map;for(const b of i.value){const u=b.group??null;f.has(u)||f.set(u,[]),f.get(u).push(b)}const p=[];for(const[b,u]of f)u.sort((N,h)=>{const k=(N.order??0)-(h.order??0);return k!==0?k:N.label.localeCompare(h.label)}),p.push({group:b,items:u});return p});async function o(f=!1){if(r.value&&!f)return t.value;n.value=!0,a.value=null;try{const b=await H().get("/system/menu");return t.value=Array.isArray(b.items)?b.items:[],r.value=!0,t.value}catch(p){throw a.value=p instanceof Error?p:new Error(String(p)),p}finally{n.value=!1}}function s(f){t.value=f,r.value=!0,a.value=null}function d(){t.value=[],r.value=!1,a.value=null,n.value=!1}return{items:t,loading:n,error:a,isLoaded:r,visibleItems:i,groupedItems:l,load:o,setItems:s,reset:d}}),Ho=["aria-label"],Ko="#2dd4bf",Go="#18181b",Ze=e.defineComponent({__name:"BrandLogo",props:{size:{default:28},animated:{type:Boolean,default:!0},variant:{default:"color"},title:{default:"LAdmin"}},setup(t){const n=t,a=e.computed(()=>Math.round(n.size*.25)),r=e.computed(()=>Math.round(n.size*.42)),i=e.computed(()=>Math.round(n.size*.18)),l=e.computed(()=>Math.max(2,Math.round(n.size*.18))),o=e.computed(()=>Math.round(n.size*.3)),s=e.computed(()=>Math.max(1,Math.round(n.size*.04))),d=e.computed(()=>n.variant==="mono"?"currentColor":Go),f=e.computed(()=>n.variant==="mono"?"var(--ladmin-logo-fg, #fff)":Ko),p=e.computed(()=>({width:`${n.size}px`,height:`${n.size}px`,padding:`0 ${i.value}px`,borderRadius:`${a.value}px`,background:d.value,color:f.value,fontSize:`${r.value}px`})),b=e.computed(()=>({width:`${l.value}px`,height:`${o.value}px`,marginLeft:`${s.value}px`,background:f.value}));return(u,N)=>(e.openBlock(),e.createElementBlock("span",{role:"img","aria-label":t.title,class:e.normalizeClass(["ladmin-logo",{"ladmin-logo--animated":t.animated}]),style:e.normalizeStyle(p.value)},[N[0]||(N[0]=e.createElementVNode("span",{"aria-hidden":"true"},">_",-1)),e.createElementVNode("span",{"aria-hidden":"true",class:"ladmin-logo__cursor",style:e.normalizeStyle(b.value)},null,4)],14,Ho))}}),Xo={activity:wa,"alert-circle":Ea,archive:Ba,"bar-chart":nt,"bar-chart-3":nt,bell:lt,bookmark:ft,box:Kt,briefcase:xa,calendar:Gt,"check-circle":Ge,clock:Ma,code:Da,cog:Ia,command:Fa,database:Aa,download:Yt,file:At,"file-text":At,"file-clock":za,files:Ra,flag:Pa,folder:ja,"folder-open":qa,gauge:Oa,globe:Jt,grid:Wa,"hard-drive":Ha,hash:Ka,"health-check":Ge,heart:Ga,"help-circle":$a,history:Xa,home:Ya,image:Lt,images:Za,inbox:Ja,info:Qa,key:eo,layers:to,layout:yo,"layout-dashboard":no,"life-buoy":oo,"line-chart":Na,link:lo,list:io,"list-checks":ro,lock:so,"log-out":co,mail:en,map:mo,"map-pin":uo,media:Lt,"message-square":tn,monitor:fo,notifications:lt,package:vo,paperclip:go,"pie-chart":Ca,"refresh-cw":ko,reports:nt,roles:zt,search:ht,send:_o,server:bo,settings:nn,shield:zt,"shopping-bag":wo,"shopping-cart":Bo,sliders:Vo,star:No,store:Co,tag:an,tags:$o,terminal:So,"trending-up":Uo,upload:on,user:Io,"user-circle":Sa,users:To,"x-circle":Ua,zap:Fo};function fn(t){return t?Xo[t]??null:null}const Yo={key:0,class:"admin-sidebar-brand__mark"},Zo={key:2,class:"admin-sidebar-brand__name"},Jo={key:0,class:"admin-sidebar-tenant"},Qo={class:"admin-sidebar-foot"},el=["title"],tl=["href"],pn=e.defineComponent({__name:"AdminSidebar",props:{collapsed:{type:Boolean,default:!1},brandName:{default:"Laravel Admin"},brandMark:{default:null},homeRouteName:{default:"admin.home"},tenant:{default:null},version:{default:null},docsUrl:{default:null}},setup(t){const n=bt(),a=X.useRoute(),r=e.computed(()=>n.groupedItems);function i(s){return!!(s.routeName&&a.name===s.routeName||s.url&&a.path===s.url)}function l(s){const d=fn(s)??Kt;return()=>e.h(c.UidIcon,{icon:d,size:16})}function o(s){if(s.url)return s.url;if(s.routeName)return{name:s.routeName}}return(s,d)=>{const f=e.resolveComponent("router-link");return e.openBlock(),e.createBlock(e.unref(c.UidSidebar),{collapsed:t.collapsed},{header:e.withCtx(()=>[e.createVNode(f,{to:{name:t.homeRouteName},class:"admin-sidebar-brand",title:t.collapsed?t.brandName:void 0,"aria-label":t.brandName},{default:e.withCtx(()=>[t.brandMark?(e.openBlock(),e.createElementBlock("div",Yo,e.toDisplayString(t.brandMark),1)):(e.openBlock(),e.createBlock(Ze,{key:1,size:28})),t.collapsed?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",Zo,e.toDisplayString(t.brandName),1))]),_:1},8,["to","title","aria-label"]),t.tenant&&!t.collapsed?(e.openBlock(),e.createElementBlock("div",Jo,[e.createElementVNode("span",null,e.toDisplayString(t.tenant.label),1),e.createElementVNode("b",null,e.toDisplayString(t.tenant.name),1)])):e.createCommentVNode("",!0)]),nav:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,(p,b)=>(e.openBlock(),e.createBlock(e.unref(c.UidSidebarGroup),{key:`grp-${b}`,title:p.group??void 0},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(p.items,u=>(e.openBlock(),e.createBlock(e.unref(c.UidSidebarItem),{key:u.key,to:o(u),active:i(u),badge:u.badge??void 0,title:t.collapsed?u.label:void 0},{icon:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(l(u.icon))))]),default:e.withCtx(()=>[e.createTextVNode(" "+e.toDisplayString(u.label),1)]),_:2},1032,["to","active","badge","title"]))),128))]),_:2},1032,["title"]))),128))]),footer:e.withCtx(()=>[e.createElementVNode("div",Qo,[e.createElementVNode("span",{class:"admin-sidebar-foot__text",title:t.version??"Laravel Admin"},[t.collapsed?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode("·")],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(t.version??"Laravel Admin"),1)],64))],8,el),t.docsUrl&&!t.collapsed?(e.openBlock(),e.createElementBlock("a",{key:0,href:t.docsUrl,class:"admin-sidebar-foot__text admin-sidebar-foot__link"}," Docs ",8,tl)):e.createCommentVNode("",!0)])]),_:1},8,["collapsed"])}}}),nl={class:"admin-shell-root"},al={key:0,class:"admin-impersonation-banner",role:"status"},at="data-admin-impersonating",vn=e.defineComponent({__name:"AdminShell",props:{collapsed:{type:Boolean,default:void 0},impersonation:{default:null}},emits:["update:collapsed","exit-impersonation"],setup(t,{emit:n}){const a=t,r=n,i=e.ref(!1),l=e.computed(()=>a.collapsed!==void 0),o=e.computed(()=>l.value?a.collapsed:i.value);function s(f){l.value||(i.value=f),r("update:collapsed",f)}function d(){r("exit-impersonation")}return e.watch(()=>a.impersonation,f=>{typeof document>"u"||(f!==null?document.documentElement.setAttribute(at,"true"):document.documentElement.removeAttribute(at))},{immediate:!0}),e.onBeforeUnmount(()=>{typeof document<"u"&&document.documentElement.removeAttribute(at)}),(f,p)=>(e.openBlock(),e.createElementBlock("div",nl,[t.impersonation?(e.openBlock(),e.createElementBlock("div",al,[e.createElementVNode("span",null,[p[1]||(p[1]=e.createTextVNode(" Вы вошли как ",-1)),e.createElementVNode("b",null,e.toDisplayString(t.impersonation.asName),1),p[2]||(p[2]=e.createTextVNode(" · режим имперсонации ",-1))]),e.createElementVNode("button",{type:"button",class:"admin-impersonation-banner__exit",onClick:d}," Выйти из режима ")])):e.createCommentVNode("",!0),e.createVNode(e.unref(c.UidSidebarLayout),{"model-value":o.value,class:"admin-shell","onUpdate:modelValue":s},{sidebar:e.withCtx(()=>[e.renderSlot(f.$slots,"sidebar",{},()=>[e.createVNode(pn,{collapsed:o.value},null,8,["collapsed"])])]),header:e.withCtx(()=>[e.renderSlot(f.$slots,"topbar",{},()=>[e.createVNode(mn,{onToggleSidebar:p[0]||(p[0]=b=>s(!o.value))})])]),footer:e.withCtx(()=>[e.renderSlot(f.$slots,"footer",{},()=>[p[3]||(p[3]=e.createElementVNode("div",{class:"admin-main-footer"},null,-1))])]),default:e.withCtx(()=>[e.renderSlot(f.$slots,"default")]),_:3},8,["model-value"])]))}}),wt=ie.defineStore("admin-navigation",()=>{const t=e.ref(0),n=e.computed(()=>t.value>0);function a(){t.value+=1}function r(){t.value>0&&(t.value-=1)}function i(){t.value=0}return{pending:t,isLoading:n,start:a,end:r,reset:i}}),ol=e.defineComponent({__name:"AdminLoadingBar",setup(t){const n=wt(),a=e.ref(!1);let r=null;e.watch(()=>n.isLoading,l=>{l?(r!==null&&(clearTimeout(r),r=null),a.value=!0):r=setTimeout(()=>{a.value=!1,r=null},120)},{immediate:!0});const i=e.computed(()=>({"admin-loading-bar":!0,"admin-loading-bar--visible":a.value}));return(l,o)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(i.value),role:"progressbar","aria-busy":"true"},null,2))}}),ll={key:0,class:"admin-notif-drawer",role:"dialog","aria-modal":"true","aria-labelledby":"admin-notif-drawer-title"},rl={class:"admin-notif-drawer__panel"},il={class:"admin-notif-drawer__hd"},sl={id:"admin-notif-drawer-title",class:"admin-notif-drawer__title"},cl={key:0,class:"admin-notif-drawer__unread-badge"},dl={class:"admin-notif-drawer__hd-actions"},ul={class:"admin-notif-drawer__tabs",role:"tablist"},ml=["aria-selected","onClick"],fl={class:"admin-notif-drawer__tab-count"},pl={class:"admin-notif-drawer__body"},vl={key:0,class:"admin-notif-drawer__empty"},hl={key:1,class:"admin-notif-drawer__empty"},yl={key:2,class:"admin-notif-drawer__list"},gl=["onClick"],kl=["data-variant"],_l={class:"admin-notif-drawer__content"},bl={class:"admin-notif-drawer__row"},wl={class:"admin-notif-drawer__item-title"},Bl={class:"admin-notif-drawer__item-time"},Vl={key:0,class:"admin-notif-drawer__item-description"},xl={key:0,class:"admin-notif-drawer__unread-dot","aria-hidden":"true"},Nl=["onClick"],Cl=e.defineComponent({__name:"NotificationsDrawer",setup(t){const n=Ue(),a=e.computed(()=>n.isOpen),r=[{key:"all",label:"Все"},{key:"unread",label:"Непрочитанные"},{key:"read",label:"Прочитанные"}];async function i(k){n.lastFilter!==k&&await n.load(k,1).catch(()=>{})}async function l(){await n.markAllAsRead().catch(()=>{})}async function o(k){k.read_at===null&&await n.markAsRead(k.id).catch(()=>{});const m=k.data.url;typeof m=="string"&&m.length>0&&(m.startsWith("http://")||m.startsWith("https://")?window.open(m,"_blank","noopener"):(n.closeDrawer(),window.location.href=m))}async function s(k,m){m.stopPropagation(),await n.destroy(k.id).catch(()=>{})}function d(){n.closeDrawer()}function f(k){const m=k.type.toLowerCase();return m.includes("import")||m.includes("finished")||m.includes("success")?Ge:m.includes("comment")||m.includes("message")||m.includes("mention")?tn:m.includes("user")||m.includes("member")||m.includes("role")?Do:m.includes("warning")||m.includes("schedule")?Mo:m.includes("delete")||m.includes("failed")||m.includes("error")?_e:Ge}function p(k){const m=k.type.toLowerCase();return m.includes("import")||m.includes("success")||m.includes("finished")?"success":m.includes("warning")||m.includes("schedule")?"warning":m.includes("delete")||m.includes("failed")||m.includes("error")?"danger":m.includes("comment")||m.includes("message")?"info":"neutral"}function b(k){if(!k)return"";const m=new Date(k).getTime();if(Number.isNaN(m))return"";const w=(Date.now()-m)/1e3;return w<60?`${Math.max(1,Math.floor(w))} сек назад`:w<3600?`${Math.floor(w/60)} мин назад`:w<86400?`${Math.floor(w/3600)} ч назад`:w<86400*2?"вчера":w<86400*7?`${Math.floor(w/86400)} д назад`:new Date(k).toLocaleDateString("ru-RU")}function u(k){const m=k.data,w=typeof m.title=="string"?m.title:typeof m.subject=="string"?m.subject:"Уведомление",C=typeof m.description=="string"?m.description:typeof m.message=="string"?m.message:typeof m.text=="string"?m.text:"";return{title:w,description:C}}const N=e.computed(()=>{const m=n.meta?.total??n.items.length,w=n.unreadCount,C=Math.max(0,m-w);return{all:m,unread:w,read:C}});e.watch(a,async k=>{k?(await n.load(n.lastFilter,1).catch(()=>{}),document.addEventListener("keydown",h)):document.removeEventListener("keydown",h)});function h(k){k.key==="Escape"&&d()}return e.onUnmounted(()=>{document.removeEventListener("keydown",h)}),(k,m)=>(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[e.createVNode(e.Transition,{name:"admin-notif-drawer"},{default:e.withCtx(()=>[a.value?(e.openBlock(),e.createElementBlock("div",ll,[e.createElementVNode("div",{class:"admin-notif-drawer__backdrop",onClick:d}),e.createElementVNode("aside",rl,[e.createElementVNode("header",il,[e.createElementVNode("h2",sl,[m[0]||(m[0]=e.createTextVNode(" Уведомления ",-1)),e.unref(n).unreadCount>0?(e.openBlock(),e.createElementBlock("span",cl,e.toDisplayString(e.unref(n).unreadCount),1)):e.createCommentVNode("",!0)]),e.createElementVNode("div",dl,[e.unref(n).unreadCount>0?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"admin-notif-drawer__mark-all",onClick:l},[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(Ke),size:14},null,8,["icon"]),m[1]||(m[1]=e.createTextVNode(" Прочитать все ",-1))])):e.createCommentVNode("",!0),e.createElementVNode("button",{type:"button",class:"admin-notif-drawer__close","aria-label":"Закрыть",onClick:d},[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(be),size:16},null,8,["icon"])])])]),e.createElementVNode("nav",ul,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(r,w=>e.createElementVNode("button",{key:w.key,type:"button",role:"tab",class:e.normalizeClass(["admin-notif-drawer__tab",{"admin-notif-drawer__tab--active":e.unref(n).lastFilter===w.key}]),"aria-selected":e.unref(n).lastFilter===w.key,onClick:C=>i(w.key)},[e.createTextVNode(e.toDisplayString(w.label)+" ",1),e.createElementVNode("span",fl,e.toDisplayString(N.value[w.key]),1)],10,ml)),64))]),e.createElementVNode("div",pl,[e.unref(n).loading&&e.unref(n).items.length===0?(e.openBlock(),e.createElementBlock("div",vl," Загрузка… ")):e.unref(n).items.length===0?(e.openBlock(),e.createElementBlock("div",hl," Нет уведомлений ")):(e.openBlock(),e.createElementBlock("ol",yl,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(n).items,w=>(e.openBlock(),e.createElementBlock("li",{key:w.id,class:e.normalizeClass(["admin-notif-drawer__item",{"admin-notif-drawer__item--unread":w.read_at===null}]),onClick:C=>o(w)},[e.createElementVNode("span",{class:"admin-notif-drawer__icon","data-variant":p(w),"aria-hidden":"true"},[e.createVNode(e.unref(c.UidIcon),{icon:f(w),size:14},null,8,["icon"])],8,kl),e.createElementVNode("div",_l,[e.createElementVNode("div",bl,[e.createElementVNode("span",wl,e.toDisplayString(u(w).title),1),e.createElementVNode("span",Bl,e.toDisplayString(b(w.created_at)),1)]),u(w).description?(e.openBlock(),e.createElementBlock("div",Vl,e.toDisplayString(u(w).description),1)):e.createCommentVNode("",!0)]),w.read_at===null?(e.openBlock(),e.createElementBlock("span",xl)):e.createCommentVNode("",!0),e.createElementVNode("button",{type:"button",class:"admin-notif-drawer__item-delete","aria-label":"Удалить",onClick:e.withModifiers(C=>s(w,C),["stop"])},[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(be),size:12},null,8,["icon"])],8,Nl)],10,gl))),128))]))])])])):e.createCommentVNode("",!0)]),_:1})]))}}),ce=ie.defineStore("admin-manifest",()=>{const t=e.ref(null),n=e.ref(!1),a=e.ref(null),r=e.ref(!1),i=e.computed(()=>t.value!==null),l=e.computed(()=>t.value?.version??null),o=e.computed(()=>t.value?.resources??[]),s=e.computed(()=>t.value?.screens??[]),d=e.computed(()=>t.value?.settings??[]),f=e.computed(()=>t.value?.plugins??[]);function p(k){return o.value.find(m=>m.slug===k)??null}function b(k){return s.value.find(m=>m.slug===k)??null}function u(k){return d.value.find(m=>m.slug===k)??null}async function N(k=!1){if(t.value!==null&&!k)return t.value;n.value=!0,a.value=null;try{const w=await H().get("/system/manifest");return t.value=w,w}catch(m){throw a.value=m instanceof Error?m:new Error(String(m)),m}finally{n.value=!1}}function h(){t.value=null,a.value=null,n.value=!1,r.value=!1}return{manifest:t,loading:n,error:a,bootResolved:r,isLoaded:i,version:l,resources:o,screens:s,settings:d,plugins:f,getResource:p,getScreen:b,getSettings:u,load:N,reset:h}});function qe(t,n){return{message:t,...n??{}}}const G={success(t,n){c.useToast().success(qe(t,n))},error(t,n){c.useToast().error(qe(t,{duration:6e3,...n??{}}))},warning(t,n){c.useToast().warning(qe(t,n))},info(t,n){c.useToast().info(qe(t,n))}},El={class:"admin-page-host"},$l={key:1,class:"admin-page-host__suspended","aria-busy":"true"},Sl={key:1,class:"admin-page-host__suspended","aria-busy":"true"},hn=e.defineComponent({__name:"AdminApp",setup(t){const n=X.useRoute(),a=ce(),r=re(),i=e.computed(()=>{const d=r.user;return d?.impersonator?{asName:String(d?.name??"?")}:null});async function l(){try{const{getAdminClient:d}=await Promise.resolve().then(()=>Z);await d().post("/auth/stopImpersonation"),window.location.reload()}catch{G.error("Не удалось выйти из режима импертонации.")}}const o=e.computed(()=>!(n.meta?.fullscreen===!0||n.meta?.kind==="auth"||n.name==="admin.notFound")),s=e.computed(()=>n.name==="admin.notFound"&&!a.bootResolved);return(d,f)=>{const p=e.resolveComponent("router-view");return e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createVNode(ol),o.value?(e.openBlock(),e.createBlock(vn,{key:0,impersonation:i.value,onExitImpersonation:l},{default:e.withCtx(()=>[e.createElementVNode("div",El,[e.createVNode(p,null,{default:e.withCtx(({Component:b})=>[e.createVNode(e.Transition,{name:"admin-page"},{default:e.withCtx(()=>[s.value?(e.openBlock(),e.createElementBlock("div",$l)):(e.openBlock(),e.createBlock(e.resolveDynamicComponent(b),{key:0}))]),_:2},1024)]),_:1})])]),_:1},8,["impersonation"])):(e.openBlock(),e.createBlock(p,{key:1},{default:e.withCtx(({Component:b})=>[e.createVNode(e.Transition,{name:"admin-page"},{default:e.withCtx(()=>[s.value?(e.openBlock(),e.createElementBlock("div",Sl)):(e.openBlock(),e.createBlock(e.resolveDynamicComponent(b),{key:0}))]),_:2},1024)]),_:1})),e.createVNode(Cl),e.createVNode(e.unref(c.UidToastProvider))],64)}}}),yn=ie.defineStore("admin-dashboard",()=>{const t=e.ref(null),n=e.ref(!1),a=e.ref([]),r=e.ref([]),i=e.ref(!1),l=e.ref(!1),o=e.computed(()=>JSON.stringify(a.value)!==JSON.stringify(r.value));async function s(w){t.value=w,l.value=!0;try{const V=((await H().get(`/dashboard/get?key=${encodeURIComponent(w)}`)).layout??[]).map((D,y)=>({...D,position:D.position??y}));r.value=V,a.value=V.map(D=>({...D}))}catch{r.value=[],a.value=[]}finally{l.value=!1}}function d(){n.value=!0}function f(){a.value=r.value.map(w=>({...w})),n.value=!1}async function p(){if(t.value!==null){i.value=!0;try{const w=H(),C=a.value.map((E,V)=>({slug:E.slug,size:E.size,position:V,hidden:E.hidden??!1,type:E.type,config:E.config}));await w.post("/dashboard/save",{key:t.value,widgets:C}),r.value=a.value.map(E=>({...E})),n.value=!1}finally{i.value=!1}}}async function b(){if(t.value!==null){i.value=!0;try{await H().post("/dashboard/reset",{key:t.value}),r.value=[],a.value=[],n.value=!1}finally{i.value=!1}}}function u(w){a.value=[...a.value,{...w,position:a.value.length}]}function N(w){a.value=a.value.filter(C=>C.slug!==w)}function h(w,C){a.value=a.value.map(E=>E.slug===w?{...E,...C}:E)}function k(w,C){if(w===C)return;const E=[...a.value],[V]=E.splice(w,1);E.splice(C,0,V),a.value=E}function m(){t.value=null,n.value=!1,a.value=[],r.value=[]}return{slug:t,editMode:n,draft:a,original:r,saving:i,loading:l,isDirty:o,openDashboard:s,enterEditMode:d,cancelEdit:f,saveLayout:p,resetToDefault:b,addWidget:u,removeWidget:N,updateWidget:h,moveWidget:k,reset:m}}),Bt=ie.defineStore("admin-i18n",()=>{const t=e.ref({}),n=e.ref("ru");function a(o){const s=o.translations;s&&typeof s=="object"&&(t.value={...s}),n.value=o.locale??"ru"}function r(o){t.value={...o}}function i(o,s={}){let d=t.value[o]??o;for(const[f,p]of Object.entries(s))d=d.replace(new RegExp(`:${f}`,"g"),String(p));return d}return{messages:t,locale:n,hydrate:a,setMessages:r,t:i,has:o=>o in t.value,keys:e.computed(()=>Object.keys(t.value))}});function Je(){const t=new Map;return{register(n,a){t.set(n,a)},get(n){return t.get(n)??null},has(n){return t.has(n)},list(){return[...t.keys()]},clear(){t.clear()},registerBundle(n){for(const[a,r]of Object.entries(n))t.set(a,r)}}}const we=Je(),Ul=we.register,gn=we.get,Ml=we.has,kn=we.list,Dl=we.clear,_n=we.registerBundle,Vt=e.defineComponent({__name:"UnknownWidget",props:{type:{}},setup(t){return(n,a)=>(e.openBlock(),e.createBlock(e.unref(c.UidAlert),{variant:"warning"},{title:e.withCtx(()=>[e.createTextVNode("Неизвестный widget-тип: "+e.toDisplayString(t.type),1)]),default:e.withCtx(()=>[a[0]||(a[0]=e.createTextVNode(" Зарегистрируйте через ",-1)),e.createElementVNode("code",null,"registerWidget('"+e.toDisplayString(t.type)+"', YourComponent)",1),a[1]||(a[1]=e.createTextVNode(". ",-1))]),_:1}))}}),bn=e.defineComponent({__name:"WidgetRenderer",props:{node:{}},setup(t){const n=t,a=e.computed(()=>gn(n.node.type)),r=e.computed(()=>{const{type:i,span:l,...o}=n.node;return o});return(i,l)=>a.value?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(a.value),e.normalizeProps(e.mergeProps({key:0},r.value)),null,16)):(e.openBlock(),e.createBlock(Vt,{key:1,type:t.node.type},null,8,["type"]))}}),Il={class:"admin-widget-actions",role:"toolbar","aria-label":"Действия с виджетом"},Tl={type:"button",class:"admin-widget-actions__btn admin-widget-actions__drag","aria-label":"Перетащить",title:"Перетащить","data-drag-handle":"true"},Fl=e.defineComponent({__name:"WidgetActionsOverlay",emits:["configure","remove"],setup(t){return(n,a)=>(e.openBlock(),e.createElementBlock("div",Il,[e.createElementVNode("button",Tl,[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(Qt),size:14},null,8,["icon"])]),e.createElementVNode("button",{type:"button",class:"admin-widget-actions__btn","aria-label":"Настройки",title:"Настройки",onClick:a[0]||(a[0]=r=>n.$emit("configure"))},[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(nn),size:14},null,8,["icon"])]),e.createElementVNode("button",{type:"button",class:"admin-widget-actions__btn admin-widget-actions__btn--danger","aria-label":"Удалить",title:"Удалить",onClick:a[1]||(a[1]=r=>n.$emit("remove"))},[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(be),size:14},null,8,["icon"])])]))}}),Al={key:0,class:"admin-dialog-root",role:"dialog","aria-modal":"true","aria-labelledby":"widget-config-title"},Ll={class:"admin-dialog"},zl={class:"admin-dialog__hd"},Rl={id:"widget-config-title",class:"admin-dialog__title"},Pl={class:"admin-dialog__body"},ql={key:0,class:"admin-dialog__field"},jl={class:"admin-dialog__type-grid"},Ol=["onClick"],Wl={class:"admin-dialog__type-name"},Hl={class:"admin-dialog__type-help"},Kl={key:1,class:"admin-dialog__field"},Gl={class:"admin-dialog__readonly"},Xl={class:"admin-dialog__field"},Yl={class:"admin-dialog__field"},Zl={key:2,class:"admin-dialog__field"},Jl={class:"admin-dialog__field"},Ql={class:"admin-dialog__field"},er={key:4,class:"admin-dialog__field"},tr={class:"admin-dialog__field"},nr={class:"admin-dialog__field"},ar={class:"admin-dialog__field"},or={class:"admin-dialog__field"},lr={class:"admin-dialog__ft"},rr=e.defineComponent({__name:"WidgetConfigDialog",props:{open:{type:Boolean},mode:{default:"add"},item:{default:null},initialTitle:{default:""}},emits:["close","add","save"],setup(t,{emit:n}){const a=t,r=n,i=e.computed(()=>kn()),l=e.ref(""),o=e.ref(""),s=e.ref("6"),d=e.ref(`# Новая заметка
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),ae=require("pinia"),X=require("vue-router"),c=require("@dskripchenko/ui"),te=require("./formState-GlJBphEn.cjs"),ya=require("axios"),ka=require("@dskripchenko/wysiwyg");require("@dskripchenko/wysiwyg/style.css");const _a=t=>t.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase();var Ye={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"};const ba=({size:t,strokeWidth:n=2,absoluteStrokeWidth:a,color:r,iconNode:i,name:o,class:l,...s},{slots:d})=>e.h("svg",{...Ye,width:t||Ye.width,height:t||Ye.height,stroke:r||Ye.stroke,"stroke-width":a?Number(n)*24/Number(t):n,class:["lucide",`lucide-${_a(o??"icon")}`],...s},[...i.map(u=>e.h(...u)),...d.default?[d.default()]:[]]);const $=(t,n)=>(a,{slots:r})=>e.h(ba,{...a,iconNode:n,name:t},r);const wa=$("ActivityIcon",[["path",{d:"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2",key:"169zse"}]]);const Ba=$("ArchiveIcon",[["rect",{width:"20",height:"5",x:"2",y:"3",rx:"1",key:"1wp1u1"}],["path",{d:"M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8",key:"1s80jp"}],["path",{d:"M10 12h4",key:"a56b0p"}]]);const Va=$("ArrowLeftIcon",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]]);const ft=$("BellIcon",[["path",{d:"M6 8a6 6 0 0 1 12 0c0 7 3 9 3 9H3s3-2 3-9",key:"1qo2s2"}],["path",{d:"M10.3 21a1.94 1.94 0 0 0 3.4 0",key:"qgo35s"}]]);const bt=$("BookmarkIcon",[["path",{d:"m19 21-7-4-7 4V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v16z",key:"1fy3hk"}]]);const tn=$("BoxIcon",[["path",{d:"M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z",key:"hh9hay"}],["path",{d:"m3.3 7 8.7 5 8.7-5",key:"g66t2b"}],["path",{d:"M12 22V12",key:"d0xqtd"}]]);const xa=$("BriefcaseIcon",[["path",{d:"M16 20V4a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16",key:"jecpp"}],["rect",{width:"20",height:"14",x:"2",y:"6",rx:"2",key:"i6l2r4"}]]);const nn=$("CalendarIcon",[["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M16 2v4",key:"4m81vk"}],["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",key:"1hopcy"}],["path",{d:"M3 10h18",key:"8toen8"}]]);const dt=$("ChartColumnIcon",[["path",{d:"M3 3v16a2 2 0 0 0 2 2h16",key:"c24i48"}],["path",{d:"M18 17V9",key:"2bz60n"}],["path",{d:"M13 17V5",key:"1frdt8"}],["path",{d:"M8 17v-3",key:"17ska0"}]]);const Na=$("ChartLineIcon",[["path",{d:"M3 3v16a2 2 0 0 0 2 2h16",key:"c24i48"}],["path",{d:"m19 9-5 5-4-4-3 3",key:"2osh9i"}]]);const Ca=$("ChartPieIcon",[["path",{d:"M21 12c.552 0 1.005-.449.95-.998a10 10 0 0 0-8.953-8.951c-.55-.055-.998.398-.998.95v8a1 1 0 0 0 1 1z",key:"pzmjnu"}],["path",{d:"M21.21 15.89A10 10 0 1 1 8 2.83",key:"k2fpak"}]]);const nt=$("CheckIcon",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);const an=$("ChevronDownIcon",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);const Ea=$("ChevronRightIcon",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);const $a=$("CircleAlertIcon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]]);const at=$("CircleCheckBigIcon",[["path",{d:"M21.801 10A10 10 0 1 1 17 3.335",key:"yps3ct"}],["path",{d:"m9 11 3 3L22 4",key:"1pflzl"}]]);const Sa=$("CircleHelpIcon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3",key:"1u773s"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);const Ma=$("CircleUserIcon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["circle",{cx:"12",cy:"10",r:"3",key:"ilqhr7"}],["path",{d:"M7 20.662V19a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v1.662",key:"154egf"}]]);const Ua=$("CircleXIcon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]]);const Da=$("ClockIcon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["polyline",{points:"12 6 12 12 16 14",key:"68esgv"}]]);const Ta=$("CodeIcon",[["polyline",{points:"16 18 22 12 16 6",key:"z7tu5w"}],["polyline",{points:"8 6 2 12 8 18",key:"1eg1df"}]]);const Ia=$("CogIcon",[["path",{d:"M12 20a8 8 0 1 0 0-16 8 8 0 0 0 0 16Z",key:"sobvz5"}],["path",{d:"M12 14a2 2 0 1 0 0-4 2 2 0 0 0 0 4Z",key:"11i496"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 22v-2",key:"1osdcq"}],["path",{d:"m17 20.66-1-1.73",key:"eq3orb"}],["path",{d:"M11 10.27 7 3.34",key:"16pf9h"}],["path",{d:"m20.66 17-1.73-1",key:"sg0v6f"}],["path",{d:"m3.34 7 1.73 1",key:"1ulond"}],["path",{d:"M14 12h8",key:"4f43i9"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"m20.66 7-1.73 1",key:"1ow05n"}],["path",{d:"m3.34 17 1.73-1",key:"nuk764"}],["path",{d:"m17 3.34-1 1.73",key:"2wel8s"}],["path",{d:"m11 13.73-4 6.93",key:"794ttg"}]]);const Aa=$("Columns2Icon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M12 3v18",key:"108xh3"}]]);const Fa=$("CommandIcon",[["path",{d:"M15 6v12a3 3 0 1 0 3-3H6a3 3 0 1 0 3 3V6a3 3 0 1 0-3 3h12a3 3 0 1 0-3-3",key:"11bfej"}]]);const La=$("DatabaseIcon",[["ellipse",{cx:"12",cy:"5",rx:"9",ry:"3",key:"msslwz"}],["path",{d:"M3 5V19A9 3 0 0 0 21 19V5",key:"1wlel7"}],["path",{d:"M3 12A9 3 0 0 0 21 12",key:"mv7ke4"}]]);const on=$("DownloadIcon",[["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["polyline",{points:"7 10 12 15 17 10",key:"2ggqvy"}],["line",{x1:"12",x2:"12",y1:"15",y2:"3",key:"1vk2je"}]]);const ln=$("EllipsisIcon",[["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}],["circle",{cx:"19",cy:"12",r:"1",key:"1wjl8i"}],["circle",{cx:"5",cy:"12",r:"1",key:"1pcz8c"}]]);const za=$("EyeIcon",[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);const Ra=$("FileClockIcon",[["path",{d:"M16 22h2a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v3",key:"37hlfg"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["circle",{cx:"8",cy:"16",r:"6",key:"10v15b"}],["path",{d:"M9.5 17.5 8 16.25V14",key:"1o80t2"}]]);const Wt=$("FileTextIcon",[["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",key:"1rqfz7"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]]);const Pa=$("FilesIcon",[["path",{d:"M20 7h-3a2 2 0 0 1-2-2V2",key:"x099mo"}],["path",{d:"M9 18a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h7l4 4v10a2 2 0 0 1-2 2Z",key:"18t6ie"}],["path",{d:"M3 7.6v12.8A1.6 1.6 0 0 0 4.6 22h9.8",key:"1nja0z"}]]);const qa=$("FlagIcon",[["path",{d:"M4 15s1-1 4-1 5 2 8 2 4-1 4-1V3s-1 1-4 1-5-2-8-2-4 1-4 1z",key:"i9b6wo"}],["line",{x1:"4",x2:"4",y1:"22",y2:"15",key:"1cm3nv"}]]);const ja=$("FolderOpenIcon",[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",key:"usdka0"}]]);const Oa=$("FolderIcon",[["path",{d:"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z",key:"1kt360"}]]);const Wa=$("GaugeIcon",[["path",{d:"m12 14 4-4",key:"9kzdfg"}],["path",{d:"M3.34 19a10 10 0 1 1 17.32 0",key:"19p75a"}]]);const rn=$("GlobeIcon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",key:"13o1zl"}],["path",{d:"M2 12h20",key:"9i4pu4"}]]);const Ha=$("Grid3x3Icon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M3 9h18",key:"1pudct"}],["path",{d:"M3 15h18",key:"5xshup"}],["path",{d:"M9 3v18",key:"fh3hqa"}],["path",{d:"M15 3v18",key:"14nvp0"}]]);const sn=$("GripVerticalIcon",[["circle",{cx:"9",cy:"12",r:"1",key:"1vctgf"}],["circle",{cx:"9",cy:"5",r:"1",key:"hp0tcf"}],["circle",{cx:"9",cy:"19",r:"1",key:"fkjjf6"}],["circle",{cx:"15",cy:"12",r:"1",key:"1tmaij"}],["circle",{cx:"15",cy:"5",r:"1",key:"19l28e"}],["circle",{cx:"15",cy:"19",r:"1",key:"f4zoj3"}]]);const Ka=$("HardDriveIcon",[["line",{x1:"22",x2:"2",y1:"12",y2:"12",key:"1y58io"}],["path",{d:"M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z",key:"oot6mr"}],["line",{x1:"6",x2:"6.01",y1:"16",y2:"16",key:"sgf278"}],["line",{x1:"10",x2:"10.01",y1:"16",y2:"16",key:"1l4acy"}]]);const Ga=$("HashIcon",[["line",{x1:"4",x2:"20",y1:"9",y2:"9",key:"4lhtct"}],["line",{x1:"4",x2:"20",y1:"15",y2:"15",key:"vyu0kd"}],["line",{x1:"10",x2:"8",y1:"3",y2:"21",key:"1ggp8o"}],["line",{x1:"16",x2:"14",y1:"3",y2:"21",key:"weycgp"}]]);const Xa=$("HeartIcon",[["path",{d:"M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z",key:"c3ymky"}]]);const Ya=$("HistoryIcon",[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}],["path",{d:"M12 7v5l4 2",key:"1fdv2h"}]]);const Za=$("HouseIcon",[["path",{d:"M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8",key:"5wwlr5"}],["path",{d:"M3 10a2 2 0 0 1 .709-1.528l7-5.999a2 2 0 0 1 2.582 0l7 5.999A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z",key:"1d0kgt"}]]);const Ht=$("ImageIcon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}],["circle",{cx:"9",cy:"9",r:"2",key:"af1f0g"}],["path",{d:"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21",key:"1xmnt7"}]]);const Ja=$("ImagesIcon",[["path",{d:"M18 22H4a2 2 0 0 1-2-2V6",key:"pblm9e"}],["path",{d:"m22 13-1.296-1.296a2.41 2.41 0 0 0-3.408 0L11 18",key:"nf6bnh"}],["circle",{cx:"12",cy:"8",r:"2",key:"1822b1"}],["rect",{width:"16",height:"16",x:"6",y:"2",rx:"2",key:"12espp"}]]);const Qa=$("InboxIcon",[["polyline",{points:"22 12 16 12 14 15 10 15 8 12 2 12",key:"o97t9d"}],["path",{d:"M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z",key:"oot6mr"}]]);const eo=$("InfoIcon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 16v-4",key:"1dtifu"}],["path",{d:"M12 8h.01",key:"e9boi3"}]]);const to=$("KeyIcon",[["path",{d:"m15.5 7.5 2.3 2.3a1 1 0 0 0 1.4 0l2.1-2.1a1 1 0 0 0 0-1.4L19 4",key:"g0fldk"}],["path",{d:"m21 2-9.6 9.6",key:"1j0ho8"}],["circle",{cx:"7.5",cy:"15.5",r:"5.5",key:"yqb3hr"}]]);const no=$("LayersIcon",[["path",{d:"m12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83Z",key:"8b97xw"}],["path",{d:"m22 17.65-9.17 4.16a2 2 0 0 1-1.66 0L2 17.65",key:"dd6zsq"}],["path",{d:"m22 12.65-9.17 4.16a2 2 0 0 1-1.66 0L2 12.65",key:"ep9fru"}]]);const ao=$("LayoutDashboardIcon",[["rect",{width:"7",height:"9",x:"3",y:"3",rx:"1",key:"10lvy0"}],["rect",{width:"7",height:"5",x:"14",y:"3",rx:"1",key:"16une8"}],["rect",{width:"7",height:"9",x:"14",y:"12",rx:"1",key:"1hutg5"}],["rect",{width:"7",height:"5",x:"3",y:"16",rx:"1",key:"ldoo1y"}]]);const oo=$("LayoutGridIcon",[["rect",{width:"7",height:"7",x:"3",y:"3",rx:"1",key:"1g98yp"}],["rect",{width:"7",height:"7",x:"14",y:"3",rx:"1",key:"6d4xhi"}],["rect",{width:"7",height:"7",x:"14",y:"14",rx:"1",key:"nxv5o0"}],["rect",{width:"7",height:"7",x:"3",y:"14",rx:"1",key:"1bb6yr"}]]);const lo=$("LifeBuoyIcon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m4.93 4.93 4.24 4.24",key:"1ymg45"}],["path",{d:"m14.83 9.17 4.24-4.24",key:"1cb5xl"}],["path",{d:"m14.83 14.83 4.24 4.24",key:"q42g0n"}],["path",{d:"m9.17 14.83-4.24 4.24",key:"bqpfvv"}],["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}]]);const ro=$("LinkIcon",[["path",{d:"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71",key:"1cjeqo"}],["path",{d:"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71",key:"19qd67"}]]);const io=$("ListChecksIcon",[["path",{d:"m3 17 2 2 4-4",key:"1jhpwq"}],["path",{d:"m3 7 2 2 4-4",key:"1obspn"}],["path",{d:"M13 6h8",key:"15sg57"}],["path",{d:"M13 12h8",key:"h98zly"}],["path",{d:"M13 18h8",key:"oe0vm4"}]]);const so=$("ListIcon",[["path",{d:"M3 12h.01",key:"nlz23k"}],["path",{d:"M3 18h.01",key:"1tta3j"}],["path",{d:"M3 6h.01",key:"1rqtza"}],["path",{d:"M8 12h13",key:"1za7za"}],["path",{d:"M8 18h13",key:"1lx6n3"}],["path",{d:"M8 6h13",key:"ik3vkj"}]]);const co=$("LockIcon",[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4",key:"fwvmzm"}]]);const uo=$("LogOutIcon",[["path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4",key:"1uf3rs"}],["polyline",{points:"16 17 21 12 16 7",key:"1gabdz"}],["line",{x1:"21",x2:"9",y1:"12",y2:"12",key:"1uyos4"}]]);const cn=$("MailIcon",[["rect",{width:"20",height:"16",x:"2",y:"4",rx:"2",key:"18n3k1"}],["path",{d:"m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7",key:"1ocrg3"}]]);const mo=$("MapPinIcon",[["path",{d:"M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0",key:"1r0f0z"}],["circle",{cx:"12",cy:"10",r:"3",key:"ilqhr7"}]]);const fo=$("MapIcon",[["path",{d:"M14.106 5.553a2 2 0 0 0 1.788 0l3.659-1.83A1 1 0 0 1 21 4.619v12.764a1 1 0 0 1-.553.894l-4.553 2.277a2 2 0 0 1-1.788 0l-4.212-2.106a2 2 0 0 0-1.788 0l-3.659 1.83A1 1 0 0 1 3 19.381V6.618a1 1 0 0 1 .553-.894l4.553-2.277a2 2 0 0 1 1.788 0z",key:"169xi5"}],["path",{d:"M15 5.764v15",key:"1pn4in"}],["path",{d:"M9 3.236v15",key:"1uimfh"}]]);const dn=$("MessageSquareIcon",[["path",{d:"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z",key:"1lielz"}]]);const po=$("MonitorIcon",[["rect",{width:"20",height:"14",x:"2",y:"3",rx:"2",key:"48i651"}],["line",{x1:"8",x2:"16",y1:"21",y2:"21",key:"1svkeh"}],["line",{x1:"12",x2:"12",y1:"17",y2:"21",key:"vw1qmm"}]]);const vo=$("MoonIcon",[["path",{d:"M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z",key:"a7tn18"}]]);const ho=$("PackageIcon",[["path",{d:"M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z",key:"1a0edw"}],["path",{d:"M12 22V12",key:"d0xqtd"}],["path",{d:"m3.3 7 7.703 4.734a2 2 0 0 0 1.994 0L20.7 7",key:"yx3hmr"}],["path",{d:"m7.5 4.27 9 5.15",key:"1c824w"}]]);const go=$("PanelLeftIcon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}]]);const yo=$("PanelsTopLeftIcon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M3 9h18",key:"1pudct"}],["path",{d:"M9 21V9",key:"1oto5p"}]]);const ko=$("PaperclipIcon",[["path",{d:"m21.44 11.05-9.19 9.19a6 6 0 0 1-8.49-8.49l8.57-8.57A4 4 0 1 1 18 8.84l-8.59 8.57a2 2 0 0 1-2.83-2.83l8.49-8.48",key:"1u3ebp"}]]);const wt=$("PencilIcon",[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]]);const ot=$("PlusIcon",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);const _o=$("RefreshCwIcon",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]]);const Bt=$("RotateCcwIcon",[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}]]);const Vt=$("SearchIcon",[["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["path",{d:"m21 21-4.3-4.3",key:"1qie3q"}]]);const bo=$("SendIcon",[["path",{d:"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z",key:"1ffxy3"}],["path",{d:"m21.854 2.147-10.94 10.939",key:"12cjpa"}]]);const wo=$("ServerIcon",[["rect",{width:"20",height:"8",x:"2",y:"2",rx:"2",ry:"2",key:"ngkwjq"}],["rect",{width:"20",height:"8",x:"2",y:"14",rx:"2",ry:"2",key:"iecqi9"}],["line",{x1:"6",x2:"6.01",y1:"6",y2:"6",key:"16zg32"}],["line",{x1:"6",x2:"6.01",y1:"18",y2:"18",key:"nzw8ys"}]]);const un=$("SettingsIcon",[["path",{d:"M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z",key:"1qme2f"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);const Kt=$("ShieldIcon",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}]]);const Bo=$("ShoppingBagIcon",[["path",{d:"M6 2 3 6v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V6l-3-4Z",key:"hou9p0"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M16 10a4 4 0 0 1-8 0",key:"1ltviw"}]]);const Vo=$("ShoppingCartIcon",[["circle",{cx:"8",cy:"21",r:"1",key:"jimo8o"}],["circle",{cx:"19",cy:"21",r:"1",key:"13723u"}],["path",{d:"M2.05 2.05h2l2.66 12.42a2 2 0 0 0 2 1.58h9.78a2 2 0 0 0 1.95-1.57l1.65-7.43H5.12",key:"9zh506"}]]);const xo=$("SlidersVerticalIcon",[["line",{x1:"4",x2:"4",y1:"21",y2:"14",key:"1p332r"}],["line",{x1:"4",x2:"4",y1:"10",y2:"3",key:"gb41h5"}],["line",{x1:"12",x2:"12",y1:"21",y2:"12",key:"hf2csr"}],["line",{x1:"12",x2:"12",y1:"8",y2:"3",key:"1kfi7u"}],["line",{x1:"20",x2:"20",y1:"21",y2:"16",key:"1lhrwl"}],["line",{x1:"20",x2:"20",y1:"12",y2:"3",key:"16vvfq"}],["line",{x1:"2",x2:"6",y1:"14",y2:"14",key:"1uebub"}],["line",{x1:"10",x2:"14",y1:"8",y2:"8",key:"1yglbp"}],["line",{x1:"18",x2:"22",y1:"16",y2:"16",key:"1jxqpz"}]]);const No=$("SquarePenIcon",[["path",{d:"M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7",key:"1m0v6g"}],["path",{d:"M18.375 2.625a1 1 0 0 1 3 3l-9.013 9.014a2 2 0 0 1-.853.505l-2.873.84a.5.5 0 0 1-.62-.62l.84-2.873a2 2 0 0 1 .506-.852z",key:"ohrbg2"}]]);const Co=$("StarIcon",[["path",{d:"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z",key:"r04s7s"}]]);const Eo=$("StoreIcon",[["path",{d:"m2 7 4.41-4.41A2 2 0 0 1 7.83 2h8.34a2 2 0 0 1 1.42.59L22 7",key:"ztvudi"}],["path",{d:"M4 12v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8",key:"1b2hhj"}],["path",{d:"M15 22v-4a2 2 0 0 0-2-2h-2a2 2 0 0 0-2 2v4",key:"2ebpfo"}],["path",{d:"M2 7h20",key:"1fcdvo"}],["path",{d:"M22 7v3a2 2 0 0 1-2 2a2.7 2.7 0 0 1-1.59-.63.7.7 0 0 0-.82 0A2.7 2.7 0 0 1 16 12a2.7 2.7 0 0 1-1.59-.63.7.7 0 0 0-.82 0A2.7 2.7 0 0 1 12 12a2.7 2.7 0 0 1-1.59-.63.7.7 0 0 0-.82 0A2.7 2.7 0 0 1 8 12a2.7 2.7 0 0 1-1.59-.63.7.7 0 0 0-.82 0A2.7 2.7 0 0 1 4 12a2 2 0 0 1-2-2V7",key:"6c3vgh"}]]);const $o=$("SunIcon",[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]]);const mn=$("TagIcon",[["path",{d:"M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z",key:"vktsd0"}],["circle",{cx:"7.5",cy:"7.5",r:".5",fill:"currentColor",key:"kqv944"}]]);const So=$("TagsIcon",[["path",{d:"m15 5 6.3 6.3a2.4 2.4 0 0 1 0 3.4L17 19",key:"1cbfv1"}],["path",{d:"M9.586 5.586A2 2 0 0 0 8.172 5H3a1 1 0 0 0-1 1v5.172a2 2 0 0 0 .586 1.414L8.29 18.29a2.426 2.426 0 0 0 3.42 0l3.58-3.58a2.426 2.426 0 0 0 0-3.42z",key:"135mg7"}],["circle",{cx:"6.5",cy:"9.5",r:".5",fill:"currentColor",key:"5pm5xn"}]]);const Mo=$("TerminalIcon",[["polyline",{points:"4 17 10 11 4 5",key:"akl6gq"}],["line",{x1:"12",x2:"20",y1:"19",y2:"19",key:"q2wloq"}]]);const Ce=$("Trash2Icon",[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}],["line",{x1:"10",x2:"10",y1:"11",y2:"17",key:"1uufr5"}],["line",{x1:"14",x2:"14",y1:"11",y2:"17",key:"xtxkd"}]]);const Uo=$("TrendingUpIcon",[["polyline",{points:"22 7 13.5 15.5 8.5 10.5 2 17",key:"126l90"}],["polyline",{points:"16 7 22 7 22 13",key:"kwv8wd"}]]);const Do=$("TriangleAlertIcon",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);const fn=$("UploadIcon",[["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["polyline",{points:"17 8 12 3 7 8",key:"t8dd8p"}],["line",{x1:"12",x2:"12",y1:"3",y2:"15",key:"widbto"}]]);const To=$("UserPlusIcon",[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}],["line",{x1:"19",x2:"19",y1:"8",y2:"14",key:"1bvyxn"}],["line",{x1:"22",x2:"16",y1:"11",y2:"11",key:"1shjgl"}]]);const Io=$("UserIcon",[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]]);const Ao=$("UsersIcon",[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}],["path",{d:"M22 21v-2a4 4 0 0 0-3-3.87",key:"kshegd"}],["path",{d:"M16 3.13a4 4 0 0 1 0 7.75",key:"1da9ce"}]]);const Ee=$("XIcon",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);const Fo=$("ZapIcon",[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]]);let Fe=null;function xt(t){Fe=t}function K(){if(Fe===null)throw new Error("[admin] AdminClient is not registered. Call setAdminClient(...) before using stores.");return Fe}function pn(){Fe=null}function vn(){return Fe!==null}const ee=Object.freeze(Object.defineProperty({__proto__:null,clearAdminClient:pn,getAdminClient:K,hasAdminClient:vn,setAdminClient:xt},Symbol.toStringTag,{value:"Module"})),lt=ae.defineStore("admin-theme",()=>{const t=e.ref("light"),n=e.ref(["light","dark"]),a=e.computed(()=>t.value==="dark");function r(s){t.value=s.theme,n.value=s.availableThemes,l(s.theme)}function i(s){if(!n.value.includes(s))throw new Error(`Theme "${s}" is not available`);t.value=s,l(s)}async function o(s){if(!n.value.includes(s))throw new Error(`Theme "${s}" is not available`);const d=t.value;i(s);try{await K().post("/system/setTheme",{theme:s})}catch(u){throw i(d),u}}function l(s){typeof document<"u"&&document.documentElement&&document.documentElement.setAttribute("data-theme",s)}return{current:t,available:n,isDark:a,hydrate:r,applyLocal:i,setTheme:o}}),Lo=["aria-label","aria-pressed"],Nt=e.defineComponent({__name:"ThemeToggle",setup(t){const n=lt(),a=e.computed(()=>n.current==="dark"),r=e.computed(()=>a.value?$o:vo),i=e.computed(()=>a.value?"sun":"moon"),o=e.computed(()=>a.value?"Переключить на светлую тему":"Переключить на тёмную тему");async function l(){const s=a.value?"light":"dark";await n.setTheme(s)}return(s,d)=>(e.openBlock(),e.createElementBlock("button",{type:"button",class:"admin-topbar__icon-btn","aria-label":o.value,"aria-pressed":a.value,onClick:l},[e.createVNode(e.unref(c.UidIcon),{icon:r.value,size:18,"data-icon":i.value},null,8,["icon","data-icon"])],8,Lo))}}),Le=ae.defineStore("admin-locale",()=>{const t=e.ref("ru"),n=e.ref(["ru","en"]);function a(l){t.value=l.locale,n.value=l.availableLocales,o(l.locale)}function r(l){if(!n.value.includes(l))throw new Error(`Locale "${l}" is not available`);t.value=l,o(l)}async function i(l){if(!n.value.includes(l))throw new Error(`Locale "${l}" is not available`);const s=t.value;r(l);try{await K().post("/system/setLocale",{locale:l})}catch(d){throw r(s),d}}function o(l){typeof document<"u"&&document.documentElement&&document.documentElement.setAttribute("lang",l);try{K().setLocale(l)}catch{}}return{current:t,available:n,hydrate:a,applyLocal:r,setLocale:i}}),zo={type:"button",class:"admin-topbar__icon-btn",style:{width:"auto",padding:"0 8px",gap:"4px","font-size":"12px"},"aria-label":"Сменить локаль"},Ct=e.defineComponent({__name:"LocaleSwitcher",setup(t){const n=Le();async function a(r){r!==n.current&&await n.setLocale(r)}return(r,i)=>(e.openBlock(),e.createBlock(e.unref(c.UidMenu),null,{trigger:e.withCtx(()=>[e.createElementVNode("button",zo,[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(rn),size:14,"data-icon":"globe"},null,8,["icon"]),e.createElementVNode("span",null,e.toDisplayString((e.unref(n).current??"").toUpperCase()),1)])]),default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(n).available,o=>(e.openBlock(),e.createBlock(e.unref(c.UidMenuItem),{key:o,onClick:l=>a(o)},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(o.toUpperCase()),1)]),_:2},1032,["onClick"]))),128))]),_:1}))}}),ze=ae.defineStore("admin-notifications",()=>{const t=e.ref([]),n=e.ref(0),a=e.ref(!1),r=e.ref("all"),i=e.ref(null),o=e.ref(!1),l=e.computed(()=>n.value>0);function s(){o.value=!0}function d(){o.value=!1}function u(){o.value=!o.value}function f(p){n.value=p.unread_notifications_count}async function y(p="all",C=1){a.value=!0;try{const E=await K().get(`/notifications/list?type=${p}&page=${C}`);t.value=E.data,n.value=E.meta.unread_count,i.value={page:E.meta.page,per_page:E.meta.per_page,total:E.meta.total,last_page:E.meta.last_page},r.value=p}finally{a.value=!1}}async function m(){const C=await K().get("/notifications/unread");n.value=C.count,r.value==="unread"&&(t.value=C.data)}async function w(p){await K().post("/notifications/markAsRead",{id:p});const B=t.value.find(E=>E.id===p);B&&B.read_at===null&&(B.read_at=new Date().toISOString(),n.value=Math.max(0,n.value-1))}async function v(){await K().post("/notifications/markAllAsRead");const C=new Date().toISOString();for(const B of t.value)B.read_at===null&&(B.read_at=C);n.value=0}async function k(p){await K().post("/notifications/destroy",{id:p});const B=t.value.findIndex(E=>E.id===p);if(B!==-1){const E=t.value[B].read_at===null;t.value.splice(B,1),E&&(n.value=Math.max(0,n.value-1))}}return{items:t,unreadCount:n,loading:a,meta:i,lastFilter:r,isOpen:o,hasUnread:l,hydrate:f,load:y,loadUnread:m,markAsRead:w,markAllAsRead:v,destroy:k,openDrawer:s,closeDrawer:d,toggleDrawer:u}}),Ro=["aria-expanded"],Po=["title"],hn=e.defineComponent({__name:"NotificationBell",setup(t){const n=ze(),a=e.computed(()=>{const i=n.unreadCount;return i<=0?null:i>99?"99+":String(i)});function r(){n.toggleDrawer()}return(i,o)=>(e.openBlock(),e.createElementBlock("button",{type:"button",class:"admin-topbar__icon-btn","aria-label":"Уведомления","aria-haspopup":"dialog","aria-expanded":e.unref(n).isOpen,onClick:r},[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(ft),size:18,"data-icon":"bell"},null,8,["icon"]),a.value!==null?(e.openBlock(),e.createElementBlock("span",{key:0,class:"admin-topbar__bell-badge",title:`Непрочитанных: ${e.unref(n).unreadCount}`},e.toDisplayString(a.value),9,Po)):e.createCommentVNode("",!0)],8,Ro))}});class se extends Error{status;errorKey;payload;constructor(n,a){super(a.message??`API error ${n}`),this.name="ApiError",this.status=n,this.errorKey=a.errorKey??"unknown",this.payload=a}}class Et extends se{constructor(n){super(401,n),this.name="UnauthenticatedError"}}class gn extends se{constructor(n){super(403,n),this.name="ForbiddenError"}}class yn extends se{constructor(n){super(404,n),this.name="NotFoundError"}}class $e extends se{fields;constructor(n){super(422,n),this.name="ValidationError",this.fields=n.messages??{}}firstFieldMessage(){for(const n of Object.values(this.fields))if(n.length>0)return n[0];return null}}class Re extends Error{constructor(n="Network error"){super(n),this.name="NetworkError"}}function pt(t,n){switch(t){case 401:return new Et(n);case 403:return new gn(n);case 404:return new yn(n);case 422:return new $e(n);default:return new se(t,n)}}const re=ae.defineStore("admin-auth",()=>{const t=e.ref(null),n=e.ref([]),a=e.ref(null),r=e.computed(()=>t.value!==null),i=e.computed(()=>a.value!==null);function o(v){t.value=v.user,n.value=v.permissions}function l(v){return n.value.includes("*")||n.value.includes(v)?!0:n.value.some(k=>{if(!k.endsWith(".*"))return!1;const p=k.slice(0,-1);return v.startsWith(p)})}function s(v){return v.some(l)}function d(v){return v.every(l)}async function u(v){const k=K();try{const p=await k.post("/auth/login",v);return p?.user&&(t.value=p.user),Array.isArray(p?.permissions)&&(n.value=p.permissions),a.value=null,"authenticated"}catch(p){if(p instanceof se&&p.errorKey==="two_factor_required"){const C=p.payload.challenge_token;return a.value={challengeToken:typeof C=="string"?C:"",remember:v.remember??!1},"two_factor_required"}throw p}}async function f(v){if(a.value===null)throw new Error("No pending 2FA challenge");const p=await K().post("/auth/twoFactorChallenge",{challenge_token:a.value.challengeToken,code:v});t.value=p.user,a.value=null}async function y(v){if(a.value===null)throw new Error("No pending 2FA challenge");const p=await K().post("/auth/twoFactorRecovery",{challenge_token:a.value.challengeToken,recovery_code:v});return t.value=p.user,a.value=null,{remaining:p.recovery_codes_remaining}}function m(){a.value=null}async function w(){const v=K();try{await v.post("/auth/logout")}finally{t.value=null,n.value=[],a.value=null}}return{user:t,permissions:n,pendingChallenge:a,isAuthenticated:r,isChallengePending:i,hydrate:o,hasPermission:l,hasAnyPermission:s,hasAllPermissions:d,login:u,twoFactorChallenge:f,twoFactorRecovery:y,cancelChallenge:m,logout:w}}),qo={type:"button",class:"admin-topbar__icon-btn admin-user-menu__trigger","aria-label":"Меню пользователя","aria-haspopup":"menu",style:{width:"auto",padding:"0 4px",gap:"8px"}},kn=e.defineComponent({__name:"UserMenu",setup(t){const n=re(),a=X.useRouter();async function r(){try{await n.logout()}finally{await a.push({name:"admin.login"})}}function i(){a.push({name:"admin.profile"})}return(o,l)=>(e.openBlock(),e.createBlock(e.unref(c.UidMenu),null,{trigger:e.withCtx(()=>[e.createElementVNode("button",qo,[e.createVNode(e.unref(c.UidAvatar),{src:e.unref(n).user?.avatar??void 0,name:e.unref(n).user?.name??"?",alt:e.unref(n).user?.name??"User",size:"sm"},null,8,["src","name","alt"])])]),default:e.withCtx(()=>[e.createVNode(e.unref(c.UidMenuItem),{onClick:i},{default:e.withCtx(()=>[...l[0]||(l[0]=[e.createTextVNode("Профиль",-1)])]),_:1}),e.createVNode(e.unref(c.UidMenuSeparator)),e.createVNode(e.unref(c.UidMenuItem),{variant:"danger",onClick:r},{default:e.withCtx(()=>[...l[1]||(l[1]=[e.createTextVNode("Выйти",-1)])]),_:1})]),_:1}))}}),jo={class:"admin-topbar"},Oo={class:"admin-topbar__breadcrumbs"},Wo={key:0,class:"sep"},Ho={class:"admin-topbar__search",role:"button",tabindex:"0"},_n=e.defineComponent({__name:"AdminTopBar",props:{breadcrumbs:{default:()=>[]},showCollapseToggle:{type:Boolean,default:!0}},emits:["toggle-sidebar"],setup(t,{emit:n}){const a=t,r=n,i=e.computed(()=>a.breadcrumbs.length-1);return(o,l)=>(e.openBlock(),e.createElementBlock("header",jo,[t.showCollapseToggle?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"admin-topbar__icon-btn","aria-label":"Свернуть меню",onClick:l[0]||(l[0]=s=>r("toggle-sidebar"))},[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(go),size:18,"data-icon":"panel-left"},null,8,["icon"])])):e.createCommentVNode("",!0),e.createElementVNode("div",Oo,[e.renderSlot(o.$slots,"breadcrumbs",{},()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.breadcrumbs,(s,d)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:d},[d>0?(e.openBlock(),e.createElementBlock("span",Wo,"›")):e.createCommentVNode("",!0),(e.openBlock(),e.createBlock(e.resolveDynamicComponent(s.to?"a":"span"),{href:typeof s.to=="string"?s.to:void 0,class:e.normalizeClass(d===i.value?"cur":"")},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(s.label),1)]),_:2},1032,["href","class"]))],64))),128))])]),l[3]||(l[3]=e.createElementVNode("div",{class:"admin-topbar__spacer"},null,-1)),e.renderSlot(o.$slots,"search",{},()=>[e.createElementVNode("div",Ho,[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(Vt),size:14,"data-icon":"search"},null,8,["icon"]),l[1]||(l[1]=e.createElementVNode("span",null,"Поиск везде…",-1)),l[2]||(l[2]=e.createElementVNode("kbd",null,"⌘K",-1))])]),e.renderSlot(o.$slots,"actions"),e.createVNode(hn),e.createVNode(Nt),e.createVNode(Ct),e.createVNode(kn)]))}}),$t=ae.defineStore("admin-menu",()=>{const t=e.ref([]),n=e.ref(!1),a=e.ref(null),r=e.ref(!1),i=e.computed(()=>{const u=re(),f=y=>{if(Array.isArray(y.permissions)&&y.permissions.length>0&&!u.hasAnyPermission(y.permissions))return null;const m=(y.children??[]).map(f).filter(w=>w!==null);return{...y,children:m}};return t.value.map(f).filter(y=>y!==null)}),o=e.computed(()=>{const u=new Map;for(const y of i.value){const m=y.group??null;u.has(m)||u.set(m,[]),u.get(m).push(y)}const f=[];for(const[y,m]of u)m.sort((w,v)=>{const k=(w.order??0)-(v.order??0);return k!==0?k:w.label.localeCompare(v.label)}),f.push({group:y,items:m});return f});async function l(u=!1){if(r.value&&!u)return t.value;n.value=!0,a.value=null;try{const y=await K().get("/system/menu");return t.value=Array.isArray(y.items)?y.items:[],r.value=!0,t.value}catch(f){throw a.value=f instanceof Error?f:new Error(String(f)),f}finally{n.value=!1}}function s(u){t.value=u,r.value=!0,a.value=null}function d(){t.value=[],r.value=!1,a.value=null,n.value=!1}return{items:t,loading:n,error:a,isLoaded:r,visibleItems:i,groupedItems:o,load:l,setItems:s,reset:d}}),Ko={activity:wa,"alert-circle":$a,archive:Ba,"bar-chart":dt,"bar-chart-3":dt,bell:ft,bookmark:bt,box:tn,briefcase:xa,calendar:nn,"check-circle":at,clock:Da,code:Ta,cog:Ia,command:Fa,database:La,download:on,file:Wt,"file-text":Wt,"file-clock":Ra,files:Pa,flag:qa,folder:Oa,"folder-open":ja,gauge:Wa,globe:rn,grid:Ha,"hard-drive":Ka,hash:Ga,"health-check":at,heart:Xa,"help-circle":Sa,history:Ya,home:Za,image:Ht,images:Ja,inbox:Qa,info:eo,key:to,layers:no,layout:yo,"layout-dashboard":ao,"life-buoy":lo,"line-chart":Na,link:ro,list:so,"list-checks":io,lock:co,"log-out":uo,mail:cn,map:fo,"map-pin":mo,media:Ht,"message-square":dn,monitor:po,notifications:ft,package:ho,paperclip:ko,"pie-chart":Ca,"refresh-cw":_o,reports:dt,roles:Kt,search:Vt,send:bo,server:wo,settings:un,shield:Kt,"shopping-bag":Bo,"shopping-cart":Vo,sliders:xo,star:Co,store:Eo,tag:mn,tags:So,terminal:Mo,"trending-up":Uo,upload:fn,user:Io,"user-circle":Ma,users:Ao,"x-circle":Ua,zap:Fo};function bn(t){return t?Ko[t]??null:null}const Go=["data-depth"],Xo=["aria-expanded","title"],Yo={class:"uid-sidebar-item__icon"},Zo={key:0,class:"uid-sidebar-item__label"},Jo={key:2,class:"admin-sidebar-node__children",role:"group"},Qo=e.defineComponent({__name:"AdminSidebarNode",props:{item:{},depth:{default:0},collapsed:{type:Boolean,default:!1},stripeAt:{default:3},indentStep:{default:14}},setup(t){const n=t,a=X.useRoute(),r=e.computed(()=>Array.isArray(n.item.children)&&n.item.children.length>0),i=e.ref(!1);function o(v){return!!(v.routeName&&a.name===v.routeName||v.url&&a.path===v.url)}function l(v){return o(v)?!0:(v.children??[]).some(l)}const s=e.computed(()=>l(n.item));e.watch(()=>s.value,v=>{v&&(i.value=!0)},{immediate:!0});const d=e.computed(()=>{if(n.item.url)return n.item.url;if(n.item.routeName)return{name:n.item.routeName}}),u=e.computed(()=>Math.min(n.depth,n.stripeAt-1)),f=e.computed(()=>Math.max(0,n.depth-(n.stripeAt-1))),y=e.computed(()=>{const v=f.value;return v===0?0:Math.max(.12,.85-(v-1)*.18)});function m(v){const k=bn(v)??tn;return()=>e.h(c.UidIcon,{icon:k,size:16})}function w(){i.value=!i.value}return(v,k)=>{const p=e.resolveComponent("AdminSidebarNode",!0);return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["admin-sidebar-node",{"admin-sidebar-node--has-children":r.value,"admin-sidebar-node--open":i.value,"admin-sidebar-node--active":s.value,"admin-sidebar-node--stripe":f.value>0}]),style:e.normalizeStyle({"--admin-sidebar-indent":`${u.value*t.indentStep}px`,"--admin-sidebar-stripe-alpha":y.value}),"data-depth":t.depth},[r.value?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:e.normalizeClass(["admin-sidebar-node__group uid-sidebar-item",{"uid-sidebar-item--active":s.value}]),"aria-expanded":i.value,title:t.collapsed?t.item.label:void 0,onClick:w},[e.createElementVNode("span",Yo,[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(m(t.item.icon))))]),t.collapsed?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("span",Zo,e.toDisplayString(t.item.label),1)),t.collapsed?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("span",{key:1,class:e.normalizeClass(["admin-sidebar-node__chev",{"admin-sidebar-node__chev--open":i.value}]),"aria-hidden":"true"},[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(Ea),size:14},null,8,["icon"])],2))],10,Xo)):(e.openBlock(),e.createBlock(e.unref(c.UidSidebarItem),{key:1,class:"admin-sidebar-node__leaf",to:d.value,active:o(t.item),badge:t.item.badge??void 0,title:t.collapsed?t.item.label:void 0},{icon:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(m(t.item.icon))))]),default:e.withCtx(()=>[e.createTextVNode(" "+e.toDisplayString(t.item.label),1)]),_:1},8,["to","active","badge","title"])),r.value&&i.value?(e.openBlock(),e.createElementBlock("div",Jo,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.item.children,C=>(e.openBlock(),e.createBlock(p,{key:C.key,item:C,depth:t.depth+1,collapsed:t.collapsed,"stripe-at":t.stripeAt,"indent-step":t.indentStep},null,8,["item","depth","collapsed","stripe-at","indent-step"]))),128))])):e.createCommentVNode("",!0)],14,Go)}}}),el=["aria-label"],tl="#2dd4bf",nl="#18181b",rt=e.defineComponent({__name:"BrandLogo",props:{size:{default:28},animated:{type:Boolean,default:!0},variant:{default:"color"},title:{default:"LAdmin"}},setup(t){const n=t,a=e.computed(()=>Math.round(n.size*.25)),r=e.computed(()=>Math.round(n.size*.42)),i=e.computed(()=>Math.round(n.size*.18)),o=e.computed(()=>Math.max(2,Math.round(n.size*.18))),l=e.computed(()=>Math.round(n.size*.3)),s=e.computed(()=>Math.max(1,Math.round(n.size*.04))),d=e.computed(()=>n.variant==="mono"?"currentColor":nl),u=e.computed(()=>n.variant==="mono"?"var(--ladmin-logo-fg, #fff)":tl),f=e.computed(()=>({width:`${n.size}px`,height:`${n.size}px`,padding:`0 ${i.value}px`,borderRadius:`${a.value}px`,background:d.value,color:u.value,fontSize:`${r.value}px`})),y=e.computed(()=>({width:`${o.value}px`,height:`${l.value}px`,marginLeft:`${s.value}px`,background:u.value}));return(m,w)=>(e.openBlock(),e.createElementBlock("span",{role:"img","aria-label":t.title,class:e.normalizeClass(["ladmin-logo",{"ladmin-logo--animated":t.animated}]),style:e.normalizeStyle(f.value)},[w[0]||(w[0]=e.createElementVNode("span",{"aria-hidden":"true"},">_",-1)),e.createElementVNode("span",{"aria-hidden":"true",class:"ladmin-logo__cursor",style:e.normalizeStyle(y.value)},null,4)],14,el))}}),al={key:0,class:"admin-sidebar-brand__mark"},ol={key:2,class:"admin-sidebar-brand__name"},ll={key:0,class:"admin-sidebar-tenant"},rl={class:"admin-sidebar-foot"},il=["title"],sl=["href"],wn=e.defineComponent({__name:"AdminSidebar",props:{collapsed:{type:Boolean,default:!1},brandName:{default:"Laravel Admin"},brandMark:{default:null},homeRouteName:{default:"admin.home"},tenant:{default:null},version:{default:null},docsUrl:{default:null}},setup(t){const n=$t(),a=e.computed(()=>n.groupedItems);return(r,i)=>{const o=e.resolveComponent("router-link");return e.openBlock(),e.createBlock(e.unref(c.UidSidebar),{collapsed:t.collapsed},{header:e.withCtx(()=>[e.createVNode(o,{to:{name:t.homeRouteName},class:"admin-sidebar-brand",title:t.collapsed?t.brandName:void 0,"aria-label":t.brandName},{default:e.withCtx(()=>[t.brandMark?(e.openBlock(),e.createElementBlock("div",al,e.toDisplayString(t.brandMark),1)):(e.openBlock(),e.createBlock(rt,{key:1,size:28})),t.collapsed?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",ol,e.toDisplayString(t.brandName),1))]),_:1},8,["to","title","aria-label"]),t.tenant&&!t.collapsed?(e.openBlock(),e.createElementBlock("div",ll,[e.createElementVNode("span",null,e.toDisplayString(t.tenant.label),1),e.createElementVNode("b",null,e.toDisplayString(t.tenant.name),1)])):e.createCommentVNode("",!0)]),nav:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,(l,s)=>(e.openBlock(),e.createBlock(e.unref(c.UidSidebarGroup),{key:`grp-${s}`,title:l.group??void 0},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.items,d=>(e.openBlock(),e.createBlock(Qo,{key:d.key,item:d,collapsed:t.collapsed},null,8,["item","collapsed"]))),128))]),_:2},1032,["title"]))),128))]),footer:e.withCtx(()=>[e.createElementVNode("div",rl,[e.createElementVNode("span",{class:"admin-sidebar-foot__text",title:t.version??"Laravel Admin"},[t.collapsed?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode("·")],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(t.version??"Laravel Admin"),1)],64))],8,il),t.docsUrl&&!t.collapsed?(e.openBlock(),e.createElementBlock("a",{key:0,href:t.docsUrl,class:"admin-sidebar-foot__text admin-sidebar-foot__link"}," Docs ",8,sl)):e.createCommentVNode("",!0)])]),_:1},8,["collapsed"])}}}),cl={class:"admin-shell-root"},dl={key:0,class:"admin-impersonation-banner",role:"status"},ut="data-admin-impersonating",Bn=e.defineComponent({__name:"AdminShell",props:{collapsed:{type:Boolean,default:void 0},impersonation:{default:null}},emits:["update:collapsed","exit-impersonation"],setup(t,{emit:n}){const a=t,r=n,i=e.ref(!1),o=e.computed(()=>a.collapsed!==void 0),l=e.computed(()=>o.value?a.collapsed:i.value);function s(u){o.value||(i.value=u),r("update:collapsed",u)}function d(){r("exit-impersonation")}return e.watch(()=>a.impersonation,u=>{typeof document>"u"||(u!==null?document.documentElement.setAttribute(ut,"true"):document.documentElement.removeAttribute(ut))},{immediate:!0}),e.onBeforeUnmount(()=>{typeof document<"u"&&document.documentElement.removeAttribute(ut)}),(u,f)=>(e.openBlock(),e.createElementBlock("div",cl,[t.impersonation?(e.openBlock(),e.createElementBlock("div",dl,[e.createElementVNode("span",null,[f[1]||(f[1]=e.createTextVNode(" Вы вошли как ",-1)),e.createElementVNode("b",null,e.toDisplayString(t.impersonation.asName),1),f[2]||(f[2]=e.createTextVNode(" · режим имперсонации ",-1))]),e.createElementVNode("button",{type:"button",class:"admin-impersonation-banner__exit",onClick:d}," Выйти из режима ")])):e.createCommentVNode("",!0),e.createVNode(e.unref(c.UidSidebarLayout),{"model-value":l.value,class:"admin-shell","onUpdate:modelValue":s},{sidebar:e.withCtx(()=>[e.renderSlot(u.$slots,"sidebar",{},()=>[e.createVNode(wn,{collapsed:l.value},null,8,["collapsed"])])]),header:e.withCtx(()=>[e.renderSlot(u.$slots,"topbar",{},()=>[e.createVNode(_n,{onToggleSidebar:f[0]||(f[0]=y=>s(!l.value))})])]),footer:e.withCtx(()=>[e.renderSlot(u.$slots,"footer",{},()=>[f[3]||(f[3]=e.createElementVNode("div",{class:"admin-main-footer"},null,-1))])]),default:e.withCtx(()=>[e.renderSlot(u.$slots,"default")]),_:3},8,["model-value"])]))}}),St=ae.defineStore("admin-navigation",()=>{const t=e.ref(0),n=e.computed(()=>t.value>0);function a(){t.value+=1}function r(){t.value>0&&(t.value-=1)}function i(){t.value=0}return{pending:t,isLoading:n,start:a,end:r,reset:i}}),ul=e.defineComponent({__name:"AdminLoadingBar",setup(t){const n=St(),a=e.ref(!1);let r=null;e.watch(()=>n.isLoading,o=>{o?(r!==null&&(clearTimeout(r),r=null),a.value=!0):r=setTimeout(()=>{a.value=!1,r=null},120)},{immediate:!0});const i=e.computed(()=>({"admin-loading-bar":!0,"admin-loading-bar--visible":a.value}));return(o,l)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(i.value),role:"progressbar","aria-busy":"true"},null,2))}}),ml={key:0,class:"admin-notif-drawer",role:"dialog","aria-modal":"true","aria-labelledby":"admin-notif-drawer-title"},fl={class:"admin-notif-drawer__panel"},pl={class:"admin-notif-drawer__hd"},vl={id:"admin-notif-drawer-title",class:"admin-notif-drawer__title"},hl={key:0,class:"admin-notif-drawer__unread-badge"},gl={class:"admin-notif-drawer__hd-actions"},yl={class:"admin-notif-drawer__tabs",role:"tablist"},kl=["aria-selected","onClick"],_l={class:"admin-notif-drawer__tab-count"},bl={class:"admin-notif-drawer__body"},wl={key:0,class:"admin-notif-drawer__empty"},Bl={key:1,class:"admin-notif-drawer__empty"},Vl={key:2,class:"admin-notif-drawer__list"},xl=["onClick"],Nl=["data-variant"],Cl={class:"admin-notif-drawer__content"},El={class:"admin-notif-drawer__row"},$l={class:"admin-notif-drawer__item-title"},Sl={class:"admin-notif-drawer__item-time"},Ml={key:0,class:"admin-notif-drawer__item-description"},Ul={key:0,class:"admin-notif-drawer__unread-dot","aria-hidden":"true"},Dl=["onClick"],Tl=e.defineComponent({__name:"NotificationsDrawer",setup(t){const n=ze(),a=e.computed(()=>n.isOpen),r=[{key:"all",label:"Все"},{key:"unread",label:"Непрочитанные"},{key:"read",label:"Прочитанные"}];async function i(k){n.lastFilter!==k&&await n.load(k,1).catch(()=>{})}async function o(){await n.markAllAsRead().catch(()=>{})}async function l(k){k.read_at===null&&await n.markAsRead(k.id).catch(()=>{});const p=k.data.url;typeof p=="string"&&p.length>0&&(p.startsWith("http://")||p.startsWith("https://")?window.open(p,"_blank","noopener"):(n.closeDrawer(),window.location.href=p))}async function s(k,p){p.stopPropagation(),await n.destroy(k.id).catch(()=>{})}function d(){n.closeDrawer()}function u(k){const p=k.type.toLowerCase();return p.includes("import")||p.includes("finished")||p.includes("success")?at:p.includes("comment")||p.includes("message")||p.includes("mention")?dn:p.includes("user")||p.includes("member")||p.includes("role")?To:p.includes("warning")||p.includes("schedule")?Do:p.includes("delete")||p.includes("failed")||p.includes("error")?Ce:at}function f(k){const p=k.type.toLowerCase();return p.includes("import")||p.includes("success")||p.includes("finished")?"success":p.includes("warning")||p.includes("schedule")?"warning":p.includes("delete")||p.includes("failed")||p.includes("error")?"danger":p.includes("comment")||p.includes("message")?"info":"neutral"}function y(k){if(!k)return"";const p=new Date(k).getTime();if(Number.isNaN(p))return"";const C=(Date.now()-p)/1e3;return C<60?`${Math.max(1,Math.floor(C))} сек назад`:C<3600?`${Math.floor(C/60)} мин назад`:C<86400?`${Math.floor(C/3600)} ч назад`:C<86400*2?"вчера":C<86400*7?`${Math.floor(C/86400)} д назад`:new Date(k).toLocaleDateString("ru-RU")}function m(k){const p=k.data,C=typeof p.title=="string"?p.title:typeof p.subject=="string"?p.subject:"Уведомление",B=typeof p.description=="string"?p.description:typeof p.message=="string"?p.message:typeof p.text=="string"?p.text:"";return{title:C,description:B}}const w=e.computed(()=>{const p=n.meta?.total??n.items.length,C=n.unreadCount,B=Math.max(0,p-C);return{all:p,unread:C,read:B}});e.watch(a,async k=>{k?(await n.load(n.lastFilter,1).catch(()=>{}),document.addEventListener("keydown",v)):document.removeEventListener("keydown",v)});function v(k){k.key==="Escape"&&d()}return e.onUnmounted(()=>{document.removeEventListener("keydown",v)}),(k,p)=>(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[e.createVNode(e.Transition,{name:"admin-notif-drawer"},{default:e.withCtx(()=>[a.value?(e.openBlock(),e.createElementBlock("div",ml,[e.createElementVNode("div",{class:"admin-notif-drawer__backdrop",onClick:d}),e.createElementVNode("aside",fl,[e.createElementVNode("header",pl,[e.createElementVNode("h2",vl,[p[0]||(p[0]=e.createTextVNode(" Уведомления ",-1)),e.unref(n).unreadCount>0?(e.openBlock(),e.createElementBlock("span",hl,e.toDisplayString(e.unref(n).unreadCount),1)):e.createCommentVNode("",!0)]),e.createElementVNode("div",gl,[e.unref(n).unreadCount>0?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"admin-notif-drawer__mark-all",onClick:o},[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(nt),size:14},null,8,["icon"]),p[1]||(p[1]=e.createTextVNode(" Прочитать все ",-1))])):e.createCommentVNode("",!0),e.createElementVNode("button",{type:"button",class:"admin-notif-drawer__close","aria-label":"Закрыть",onClick:d},[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(Ee),size:16},null,8,["icon"])])])]),e.createElementVNode("nav",yl,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(r,C=>e.createElementVNode("button",{key:C.key,type:"button",role:"tab",class:e.normalizeClass(["admin-notif-drawer__tab",{"admin-notif-drawer__tab--active":e.unref(n).lastFilter===C.key}]),"aria-selected":e.unref(n).lastFilter===C.key,onClick:B=>i(C.key)},[e.createTextVNode(e.toDisplayString(C.label)+" ",1),e.createElementVNode("span",_l,e.toDisplayString(w.value[C.key]),1)],10,kl)),64))]),e.createElementVNode("div",bl,[e.unref(n).loading&&e.unref(n).items.length===0?(e.openBlock(),e.createElementBlock("div",wl," Загрузка… ")):e.unref(n).items.length===0?(e.openBlock(),e.createElementBlock("div",Bl," Нет уведомлений ")):(e.openBlock(),e.createElementBlock("ol",Vl,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(n).items,C=>(e.openBlock(),e.createElementBlock("li",{key:C.id,class:e.normalizeClass(["admin-notif-drawer__item",{"admin-notif-drawer__item--unread":C.read_at===null}]),onClick:B=>l(C)},[e.createElementVNode("span",{class:"admin-notif-drawer__icon","data-variant":f(C),"aria-hidden":"true"},[e.createVNode(e.unref(c.UidIcon),{icon:u(C),size:14},null,8,["icon"])],8,Nl),e.createElementVNode("div",Cl,[e.createElementVNode("div",El,[e.createElementVNode("span",$l,e.toDisplayString(m(C).title),1),e.createElementVNode("span",Sl,e.toDisplayString(y(C.created_at)),1)]),m(C).description?(e.openBlock(),e.createElementBlock("div",Ml,e.toDisplayString(m(C).description),1)):e.createCommentVNode("",!0)]),C.read_at===null?(e.openBlock(),e.createElementBlock("span",Ul)):e.createCommentVNode("",!0),e.createElementVNode("button",{type:"button",class:"admin-notif-drawer__item-delete","aria-label":"Удалить",onClick:e.withModifiers(B=>s(C,B),["stop"])},[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(Ee),size:12},null,8,["icon"])],8,Dl)],10,xl))),128))]))])])])):e.createCommentVNode("",!0)]),_:1})]))}}),de=ae.defineStore("admin-manifest",()=>{const t=e.ref(null),n=e.ref(!1),a=e.ref(null),r=e.ref(!1),i=e.computed(()=>t.value!==null),o=e.computed(()=>t.value?.version??null),l=e.computed(()=>t.value?.resources??[]),s=e.computed(()=>t.value?.screens??[]),d=e.computed(()=>t.value?.settings??[]),u=e.computed(()=>t.value?.plugins??[]);function f(k){return l.value.find(p=>p.slug===k)??null}function y(k){return s.value.find(p=>p.slug===k)??null}function m(k){return d.value.find(p=>p.slug===k)??null}async function w(k=!1){if(t.value!==null&&!k)return t.value;n.value=!0,a.value=null;try{const C=await K().get("/system/manifest");return t.value=C,C}catch(p){throw a.value=p instanceof Error?p:new Error(String(p)),p}finally{n.value=!1}}function v(){t.value=null,a.value=null,n.value=!1,r.value=!1}return{manifest:t,loading:n,error:a,bootResolved:r,isLoaded:i,version:o,resources:l,screens:s,settings:d,plugins:u,getResource:f,getScreen:y,getSettings:m,load:w,reset:v}});function Ze(t,n){return{message:t,...n??{}}}const Z={success(t,n){c.useToast().success(Ze(t,n))},error(t,n){c.useToast().error(Ze(t,{duration:6e3,...n??{}}))},warning(t,n){c.useToast().warning(Ze(t,n))},info(t,n){c.useToast().info(Ze(t,n))}},Il={class:"admin-page-host"},Al={key:1,class:"admin-page-host__suspended","aria-busy":"true"},Fl={key:1,class:"admin-page-host__suspended","aria-busy":"true"},Vn=e.defineComponent({__name:"AdminApp",setup(t){const n=X.useRoute(),a=de(),r=re(),i=e.computed(()=>{const d=r.user;return d?.impersonator?{asName:String(d?.name??"?")}:null});async function o(){try{const{getAdminClient:d}=await Promise.resolve().then(()=>ee);await d().post("/auth/stopImpersonation"),window.location.reload()}catch{Z.error("Не удалось выйти из режима импертонации.")}}const l=e.computed(()=>!(n.meta?.fullscreen===!0||n.meta?.kind==="auth"||n.name==="admin.notFound")),s=e.computed(()=>n.name==="admin.notFound"&&!a.bootResolved);return(d,u)=>{const f=e.resolveComponent("router-view");return e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createVNode(ul),l.value?(e.openBlock(),e.createBlock(Bn,{key:0,impersonation:i.value,onExitImpersonation:o},{default:e.withCtx(()=>[e.createElementVNode("div",Il,[e.createVNode(f,null,{default:e.withCtx(({Component:y})=>[e.createVNode(e.Transition,{name:"admin-page"},{default:e.withCtx(()=>[s.value?(e.openBlock(),e.createElementBlock("div",Al)):(e.openBlock(),e.createBlock(e.resolveDynamicComponent(y),{key:0}))]),_:2},1024)]),_:1})])]),_:1},8,["impersonation"])):(e.openBlock(),e.createBlock(f,{key:1},{default:e.withCtx(({Component:y})=>[e.createVNode(e.Transition,{name:"admin-page"},{default:e.withCtx(()=>[s.value?(e.openBlock(),e.createElementBlock("div",Fl)):(e.openBlock(),e.createBlock(e.resolveDynamicComponent(y),{key:0}))]),_:2},1024)]),_:1})),e.createVNode(Tl),e.createVNode(e.unref(c.UidToastProvider))],64)}}}),xn=ae.defineStore("admin-dashboard",()=>{const t=e.ref(null),n=e.ref(!1),a=e.ref([]),r=e.ref([]),i=e.ref(!1),o=e.ref(!1),l=e.computed(()=>JSON.stringify(a.value)!==JSON.stringify(r.value));async function s(B){t.value=B,o.value=!0;try{const T=((await K().get(`/dashboard/get?key=${encodeURIComponent(B)}`)).layout??[]).map((_,b)=>({..._,position:_.position??b}));r.value=T,a.value=T.map(_=>({..._}))}catch{r.value=[],a.value=[]}finally{o.value=!1}}function d(){n.value=!0}function u(){a.value=r.value.map(B=>({...B})),n.value=!1}async function f(){if(t.value!==null){i.value=!0;try{const B=K(),E=a.value.map((V,T)=>({slug:V.slug,size:V.size,position:T,hidden:V.hidden??!1,type:V.type,config:V.config}));await B.post("/dashboard/save",{key:t.value,widgets:E}),r.value=a.value.map(V=>({...V})),n.value=!1}finally{i.value=!1}}}async function y(){if(t.value!==null){i.value=!0;try{await K().post("/dashboard/reset",{key:t.value}),r.value=[],a.value=[],n.value=!1}finally{i.value=!1}}}function m(B){a.value=[...a.value,{...B,position:a.value.length}]}function w(B){a.value=a.value.filter(E=>E.slug!==B)}function v(B,E){a.value=a.value.map(V=>V.slug===B?{...V,...E}:V)}function k(B,E){if(B===E)return;const V=[...a.value],[T]=V.splice(B,1);V.splice(E,0,T),a.value=V}function p(B){a.value=B}function C(){t.value=null,n.value=!1,a.value=[],r.value=[]}return{slug:t,editMode:n,draft:a,original:r,saving:i,loading:o,isDirty:l,openDashboard:s,enterEditMode:d,cancelEdit:u,saveLayout:f,resetToDefault:y,addWidget:m,removeWidget:w,updateWidget:v,moveWidget:k,setDraft:p,reset:C}}),Mt=ae.defineStore("admin-i18n",()=>{const t=e.ref({}),n=e.ref("ru");function a(l){const s=l.translations;s&&typeof s=="object"&&(t.value={...s}),n.value=l.locale??"ru"}function r(l){t.value={...l}}function i(l,s={}){let d=t.value[l]??l;for(const[u,f]of Object.entries(s))d=d.replace(new RegExp(`:${u}`,"g"),String(f));return d}return{messages:t,locale:n,hydrate:a,setMessages:r,t:i,has:l=>l in t.value,keys:e.computed(()=>Object.keys(t.value))}});function it(){const t=new Map;return{register(n,a){t.set(n,a)},get(n){return t.get(n)??null},has(n){return t.has(n)},list(){return[...t.keys()]},clear(){t.clear()},registerBundle(n){for(const[a,r]of Object.entries(n))t.set(a,r)}}}const Se=it(),Ll=Se.register,Nn=Se.get,zl=Se.has,Cn=Se.list,Rl=Se.clear,En=Se.registerBundle,Ut=e.defineComponent({__name:"UnknownWidget",props:{type:{}},setup(t){return(n,a)=>(e.openBlock(),e.createBlock(e.unref(c.UidAlert),{variant:"warning"},{title:e.withCtx(()=>[e.createTextVNode("Неизвестный widget-тип: "+e.toDisplayString(t.type),1)]),default:e.withCtx(()=>[a[0]||(a[0]=e.createTextVNode(" Зарегистрируйте через ",-1)),e.createElementVNode("code",null,"registerWidget('"+e.toDisplayString(t.type)+"', YourComponent)",1),a[1]||(a[1]=e.createTextVNode(". ",-1))]),_:1}))}}),$n=e.defineComponent({__name:"WidgetRenderer",props:{node:{}},setup(t){const n=t,a=e.computed(()=>Nn(n.node.type)),r=e.computed(()=>{const{type:i,span:o,size:l,rowSpan:s,row_span:d,kind:u,refresh:f,permission:y,slug:m,data:w,...v}=n.node;return w&&typeof w=="object"&&!Array.isArray(w)?{...v,...w,data:w}:w!==void 0?{...v,data:w}:v});return(i,o)=>a.value?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(a.value),e.normalizeProps(e.mergeProps({key:0},r.value)),null,16)):(e.openBlock(),e.createBlock(Ut,{key:1,type:t.node.type},null,8,["type"]))}}),Pl={class:"admin-widget-actions",role:"toolbar","aria-label":"Действия с виджетом"},ql={type:"button",class:"admin-widget-actions__btn admin-widget-actions__drag","aria-label":"Перетащить",title:"Перетащить","data-drag-handle":"true"},jl=e.defineComponent({__name:"WidgetActionsOverlay",emits:["configure","remove"],setup(t){return(n,a)=>(e.openBlock(),e.createElementBlock("div",Pl,[e.createElementVNode("button",ql,[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(sn),size:14},null,8,["icon"])]),e.createElementVNode("button",{type:"button",class:"admin-widget-actions__btn","aria-label":"Настройки",title:"Настройки",onClick:a[0]||(a[0]=r=>n.$emit("configure"))},[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(un),size:14},null,8,["icon"])]),e.createElementVNode("button",{type:"button",class:"admin-widget-actions__btn admin-widget-actions__btn--danger","aria-label":"Удалить",title:"Удалить",onClick:a[1]||(a[1]=r=>n.$emit("remove"))},[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(Ee),size:14},null,8,["icon"])])]))}}),Ol={key:0,class:"admin-dialog-root",role:"dialog","aria-modal":"true","aria-labelledby":"widget-config-title"},Wl={class:"admin-dialog"},Hl={class:"admin-dialog__hd"},Kl={id:"widget-config-title",class:"admin-dialog__title"},Gl={class:"admin-dialog__body"},Xl={key:0,class:"admin-dialog__field"},Yl={class:"admin-dialog__type-grid"},Zl=["onClick"],Jl={class:"admin-dialog__type-name"},Ql={class:"admin-dialog__type-help"},er={key:1,class:"admin-dialog__field"},tr={class:"admin-dialog__readonly"},nr={class:"admin-dialog__field"},ar={class:"admin-dialog__field"},or={key:2,class:"admin-dialog__field"},lr={class:"admin-dialog__field"},rr={class:"admin-dialog__field"},ir={key:4,class:"admin-dialog__field"},sr={class:"admin-dialog__field"},cr={class:"admin-dialog__field"},dr={class:"admin-dialog__field"},ur={class:"admin-dialog__field"},mr={class:"admin-dialog__ft"},fr=e.defineComponent({__name:"WidgetConfigDialog",props:{open:{type:Boolean},mode:{default:"add"},item:{default:null},initialTitle:{default:""}},emits:["close","add","save"],setup(t,{emit:n}){const a=t,r=n,i=e.computed(()=>Cn()),o=e.ref(""),l=e.ref(""),s=e.ref("6"),d=e.ref(`# Новая заметка
|
|
2
2
|
|
|
3
|
-
Текст…`),f=e.ref("LABEL"),p=e.ref("0"),b=e.ref("50"),u=e.ref("Янв, Фев, Мар, Апр"),N=e.ref("10, 20, 15, 30"),h=e.ref(""),k=e.ref("5");e.watch(()=>a.open,y=>{if(y)if(a.mode==="configure"&&a.item){const g=a.item.config??{};l.value=a.item.type??"",o.value=g.title??a.initialTitle,s.value=String(a.item.size??6),d.value=g.content??d.value;const _=g.stats?.[0];_&&(f.value=String(_.label??""),p.value=String(_.value??"")),b.value=String(g.value??50);const T=g.labels,R=g.datasets;T&&T.length>0&&(u.value=T.join(", ")),R&&R[0]?.data&&(N.value=R[0].data.join(", ")),h.value=g.resource??"",k.value=String(g.limit??5)}else l.value="",o.value="",s.value="6"});const m=e.computed(()=>l.value!==""&&o.value.trim()!==""),w={stat:"Stat — карточка с числом",stats:"Stats overview — несколько метрик",chart:"Chart — линия / столбцы / донат","bar-chart":"Bar chart — гистограмма","donut-chart":"Donut — кольцевая диаграмма","recent-table":"Recent list — последние записи",recent_list:"Recent list — последние записи","recent-list":"Recent list — последние записи",heatmap:"Heatmap — тепловая карта",gauge:"Gauge — шкала со значением",markdown:"Markdown — заметка / текст"};function C(y){return y==="markdown"?"markdown":y==="stat"||y==="stats"?"stat":y==="gauge"?"gauge":y==="chart"||y==="bar-chart"||y==="donut-chart"?"chart":y==="recent-table"||y==="recent_list"||y==="recent-list"?"recent":null}function E(){const y={title:o.value};switch(C(l.value)){case"markdown":y.content=d.value;break;case"stat":y.stats=[{label:f.value,value:p.value}];break;case"gauge":y.value=Number(b.value)||0,y.min=0,y.max=100;break;case"chart":{const g=u.value.split(",").map(T=>T.trim()).filter(Boolean),_=N.value.split(",").map(T=>Number(T.trim())).filter(T=>!Number.isNaN(T));y.labels=g,y.datasets=[{label:o.value,data:_}],y.type=l.value==="donut-chart"?"doughnut":"bar";break}case"recent":y.resource=h.value,y.limit=Number(k.value)||5;break}return y}function V(){if(!m.value)return;const y=Math.max(1,Math.min(12,Number(s.value)||6)),g=E();if(a.mode==="configure"&&a.item)r("save",{size:y,type:l.value,config:g});else{const _=`custom.${l.value}.${Date.now()}`;r("add",{slug:_,type:l.value,size:y,config:g})}r("close")}function D(){r("close")}return(y,g)=>(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[e.createVNode(e.Transition,{name:"admin-dialog"},{default:e.withCtx(()=>[t.open?(e.openBlock(),e.createElementBlock("div",Al,[e.createElementVNode("div",{class:"admin-dialog-root__backdrop",onClick:D}),e.createElementVNode("div",Ll,[e.createElementVNode("header",zl,[e.createElementVNode("h2",Rl,e.toDisplayString(t.mode==="add"?"Добавить виджет":"Настроить виджет"),1),e.createElementVNode("button",{type:"button",class:"admin-dialog__close","aria-label":"Закрыть",onClick:D},[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(be),size:16},null,8,["icon"])])]),e.createElementVNode("div",Pl,[t.mode==="add"?(e.openBlock(),e.createElementBlock("div",ql,[g[10]||(g[10]=e.createElementVNode("label",{class:"admin-dialog__label"},"Тип виджета",-1)),e.createElementVNode("div",jl,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,_=>(e.openBlock(),e.createElementBlock("button",{key:_,type:"button",class:e.normalizeClass(["admin-dialog__type-card",{"admin-dialog__type-card--active":l.value===_}]),onClick:T=>l.value=_},[e.createElementVNode("span",Wl,e.toDisplayString(_),1),e.createElementVNode("span",Hl,e.toDisplayString(w[_]??""),1)],10,Ol))),128))])])):(e.openBlock(),e.createElementBlock("div",Kl,[g[11]||(g[11]=e.createElementVNode("label",{class:"admin-dialog__label"},"Тип",-1)),e.createElementVNode("div",Gl,e.toDisplayString(l.value||"unknown"),1)])),e.createElementVNode("div",Xl,[g[12]||(g[12]=e.createElementVNode("label",{class:"admin-dialog__label"},"Заголовок",-1)),e.createVNode(e.unref(c.UidInput),{modelValue:o.value,"onUpdate:modelValue":g[0]||(g[0]=_=>o.value=_),placeholder:"Название виджета"},null,8,["modelValue"])]),e.createElementVNode("div",Yl,[g[13]||(g[13]=e.createElementVNode("label",{class:"admin-dialog__label"},"Ширина (1..12)",-1)),e.createVNode(e.unref(c.UidInput),{modelValue:s.value,"onUpdate:modelValue":g[1]||(g[1]=_=>s.value=_),type:"number"},null,8,["modelValue"])]),C(l.value)==="markdown"?(e.openBlock(),e.createElementBlock("div",Zl,[g[14]||(g[14]=e.createElementVNode("label",{class:"admin-dialog__label"},"Markdown содержимое",-1)),e.withDirectives(e.createElementVNode("textarea",{"onUpdate:modelValue":g[2]||(g[2]=_=>d.value=_),class:"admin-dialog__textarea",rows:"6"},null,512),[[e.vModelText,d.value]])])):C(l.value)==="stat"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:3},[e.createElementVNode("div",Jl,[g[15]||(g[15]=e.createElementVNode("label",{class:"admin-dialog__label"},"Метка",-1)),e.createVNode(e.unref(c.UidInput),{modelValue:f.value,"onUpdate:modelValue":g[3]||(g[3]=_=>f.value=_)},null,8,["modelValue"])]),e.createElementVNode("div",Ql,[g[16]||(g[16]=e.createElementVNode("label",{class:"admin-dialog__label"},"Значение",-1)),e.createVNode(e.unref(c.UidInput),{modelValue:p.value,"onUpdate:modelValue":g[4]||(g[4]=_=>p.value=_)},null,8,["modelValue"])])],64)):C(l.value)==="gauge"?(e.openBlock(),e.createElementBlock("div",er,[g[17]||(g[17]=e.createElementVNode("label",{class:"admin-dialog__label"},"Значение (0..100)",-1)),e.createVNode(e.unref(c.UidInput),{modelValue:b.value,"onUpdate:modelValue":g[5]||(g[5]=_=>b.value=_),type:"number"},null,8,["modelValue"])])):C(l.value)==="chart"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:5},[e.createElementVNode("div",tr,[g[18]||(g[18]=e.createElementVNode("label",{class:"admin-dialog__label"},"Метки (через запятую)",-1)),e.createVNode(e.unref(c.UidInput),{modelValue:u.value,"onUpdate:modelValue":g[6]||(g[6]=_=>u.value=_),placeholder:"Янв, Фев, Мар"},null,8,["modelValue"])]),e.createElementVNode("div",nr,[g[19]||(g[19]=e.createElementVNode("label",{class:"admin-dialog__label"},"Значения (через запятую)",-1)),e.createVNode(e.unref(c.UidInput),{modelValue:N.value,"onUpdate:modelValue":g[7]||(g[7]=_=>N.value=_),placeholder:"10, 20, 15"},null,8,["modelValue"])])],64)):C(l.value)==="recent"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:6},[e.createElementVNode("div",ar,[g[20]||(g[20]=e.createElementVNode("label",{class:"admin-dialog__label"},"Resource slug",-1)),e.createVNode(e.unref(c.UidInput),{modelValue:h.value,"onUpdate:modelValue":g[8]||(g[8]=_=>h.value=_),placeholder:"articles"},null,8,["modelValue"])]),e.createElementVNode("div",or,[g[21]||(g[21]=e.createElementVNode("label",{class:"admin-dialog__label"},"Limit",-1)),e.createVNode(e.unref(c.UidInput),{modelValue:k.value,"onUpdate:modelValue":g[9]||(g[9]=_=>k.value=_),type:"number"},null,8,["modelValue"])])],64)):e.createCommentVNode("",!0)]),e.createElementVNode("footer",lr,[e.createVNode(e.unref(c.UidButton),{variant:"ghost",onClick:D},{default:e.withCtx(()=>[...g[22]||(g[22]=[e.createTextVNode("Отмена",-1)])]),_:1}),e.createVNode(e.unref(c.UidButton),{variant:"primary",disabled:!m.value,onClick:V},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(t.mode==="add"?"Добавить":"Сохранить"),1)]),_:1},8,["disabled"])])])])):e.createCommentVNode("",!0)]),_:1})]))}}),ir={class:"admin-page admin-dashboard"},sr={class:"admin-page__hd"},cr={class:"admin-page__title-wrap"},dr={class:"admin-page__title"},ur={key:0,class:"admin-page__count"},mr={class:"admin-page__actions"},fr=["draggable","onDragstart","onDrop"],pr=["onMousedown"],xt=e.defineComponent({__name:"DashboardPage",props:{slug:{default:void 0},widgets:{default:void 0},title:{default:void 0},subtitle:{default:void 0}},emits:["change-period","export"],setup(t,{emit:n}){const a=t,r=n,i=ce(),l=yn(),o=Bt(),s=(A,z)=>o.has(A)?o.t(A):z,d=e.computed(()=>!a.slug||!i.manifest?null:i.manifest.dashboards?.find(z=>z.slug===a.slug)??null),f=e.computed(()=>a.widgets?a.widgets:m.value!==null?m.value:d.value?.widgets??[]),p=e.computed(()=>a.title??d.value?.label??"Dashboard"),b=e.computed(()=>a.subtitle??d.value?.description??null),u=e.computed(()=>{const A=new Map;for(const q of f.value){const O=String(q.slug??"");O&&A.set(O,q)}const z=l.draft,P=[];if(z.length>0){for(const q of z){if(q.hidden)continue;let O=null;if(A.has(q.slug)){const oe=A.get(q.slug);O={...oe,size:q.size??oe.size??12},A.delete(q.slug)}else if(q.type){const oe=q.config??{};O={slug:q.slug,type:q.type,title:oe.title??"",size:q.size??6,data:oe}}O&&P.push({node:O,layoutSlug:q.slug})}for(const[q,O]of A.entries())P.push({node:O,layoutSlug:q})}else for(const q of f.value)P.push({node:q,layoutSlug:String(q.slug??"")});return P});function N(A){const z=A.size??A.span;return Math.max(1,Math.min(12,typeof z=="number"?z:12))}const h=e.computed(()=>[{key:"7d",label:s("admin.dashboard.period.7d","За 7 дней")},{key:"30d",label:s("admin.dashboard.period.30d","За 30 дней")},{key:"90d",label:s("admin.dashboard.period.90d","За 90 дней")},{key:"all",label:s("admin.dashboard.period.all","Всё время")}]),k=e.ref("30d"),m=e.ref(null);async function w(A,z){k.value=A,r("change-period",A),await C()}async function C(){if(a.slug)try{const{getAdminClient:A}=await Promise.resolve().then(()=>Z),P=await A().get(`/dashboard/widgets?key=${encodeURIComponent(a.slug)}&period=${encodeURIComponent(k.value)}`);m.value=P.widgets}catch{}}const E=e.computed(()=>h.value.find(A=>A.key===k.value)?.label??s("admin.dashboard.period.label","Период")),V=e.ref(null),D=e.ref(null),y=e.ref("");function g(){V.value="add",D.value=null,y.value=""}function _(){V.value=null}function T(){l.enterEditMode()}function R(){l.cancelEdit()}async function W(){await l.saveLayout().catch(()=>{})}function K(A){l.draft.some(P=>P.slug===A)?l.removeWidget(A):l.addWidget({slug:A,hidden:!0})}function fe(A){Q();const z=l.draft.find(O=>O.slug===A)??null,q=u.value.find(O=>O.layoutSlug===A)?.node;D.value=z??{slug:A,type:q?.type??"",size:q?.size??6,config:{}},y.value=q?.title??"",V.value="configure"}function ae(A){l.addWidget(A)}function M(A){if(!D.value)return;const z=D.value.slug;if(l.draft.some(q=>q.slug===z)){const q=l.draft.find(O=>O.slug===z);l.updateWidget(z,{...A,config:{...q?.config??{},...A.config??{}}})}else l.addWidget({slug:z,type:D.value.type,...A})}const $=e.ref(null);function x(A,z){if(!l.editMode||z.dataTransfer===null)return;if(!z.target?.closest('[data-drag-handle="true"]')){z.preventDefault();return}$.value=A,z.dataTransfer.effectAllowed="move",z.dataTransfer.setData("text/plain",String(A))}function F(A){l.editMode&&$.value!==null&&A.preventDefault()}function J(A,z){if(z.preventDefault(),!l.editMode||$.value===null)return;const P=$.value;Q(),l.moveWidget(P,A),$.value=null}function Q(){if(l.draft.length===u.value.length)return;const A=u.value.map(({node:z,layoutSlug:P},q)=>{const O=l.draft.find(oe=>oe.slug===P);return{slug:P,size:N(z),position:q,hidden:O?.hidden??!1,type:O?.type??z.type,config:O?.config}});l.draft=A}const ee=e.ref(null);let ue=0;function te(A,z,P){if(!l.editMode)return;A.preventDefault(),A.stopPropagation(),Q(),ee.value={slug:z,startX:A.clientX,startSpan:P},ue=A.target.closest(".admin-dashboard__grid")?.getBoundingClientRect().width??1200,window.addEventListener("mousemove",me),window.addEventListener("mouseup",se)}function me(A){if(!ee.value)return;const z=ue/12,P=Math.round((A.clientX-ee.value.startX)/z),q=Math.max(1,Math.min(12,ee.value.startSpan+P)),O=l.draft.find(oe=>oe.slug===ee.value.slug);O&&O.size!==q&&l.updateWidget(ee.value.slug,{size:q})}function se(){ee.value=null,window.removeEventListener("mousemove",me),window.removeEventListener("mouseup",se)}function Qe(){r("export")}return(A,z)=>(e.openBlock(),e.createElementBlock("section",ir,[e.createElementVNode("header",sr,[e.createElementVNode("div",cr,[e.createElementVNode("h1",dr,e.toDisplayString(p.value),1),b.value?(e.openBlock(),e.createElementBlock("div",ur,e.toDisplayString(b.value),1)):e.createCommentVNode("",!0)]),e.createElementVNode("div",mr,[e.renderSlot(A.$slots,"actions"),e.createVNode(e.unref(c.UidMenu),null,{trigger:e.withCtx(()=>[e.createVNode(e.unref(c.UidButton),{variant:"ghost",size:"md"},{prepend:e.withCtx(()=>[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(Gt),size:14},null,8,["icon"])]),append:e.withCtx(()=>[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(Xt),size:14},null,8,["icon"])]),default:e.withCtx(()=>[e.createTextVNode(" "+e.toDisplayString(E.value)+" ",1)]),_:1})]),default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(h.value,P=>(e.openBlock(),e.createBlock(e.unref(c.UidMenuItem),{key:P.key,onClick:q=>w(P.key)},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(P.label),1)]),_:2},1032,["onClick"]))),128))]),_:1}),e.createVNode(e.unref(c.UidButton),{variant:"secondary",size:"md",onClick:Qe},{prepend:e.withCtx(()=>[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(Yt),size:14},null,8,["icon"])]),default:e.withCtx(()=>[z[0]||(z[0]=e.createTextVNode(" Export ",-1))]),_:1}),e.unref(l).editMode?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createVNode(e.unref(c.UidButton),{variant:"secondary",size:"md",onClick:g},{prepend:e.withCtx(()=>[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(Xe),size:14},null,8,["icon"])]),default:e.withCtx(()=>[z[2]||(z[2]=e.createTextVNode(" Add widget ",-1))]),_:1}),e.createVNode(e.unref(c.UidButton),{variant:"ghost",size:"md",onClick:R},{prepend:e.withCtx(()=>[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(vt),size:14},null,8,["icon"])]),default:e.withCtx(()=>[z[3]||(z[3]=e.createTextVNode(" Отмена ",-1))]),_:1}),e.createVNode(e.unref(c.UidButton),{variant:"primary",size:"md",loading:e.unref(l).saving,disabled:e.unref(l).saving,onClick:W},{default:e.withCtx(()=>[...z[4]||(z[4]=[e.createTextVNode(" Сохранить ",-1)])]),_:1},8,["loading","disabled"])],64)):(e.openBlock(),e.createBlock(e.unref(c.UidButton),{key:0,variant:"secondary",size:"md",onClick:T},{prepend:e.withCtx(()=>[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(pt),size:14},null,8,["icon"])]),default:e.withCtx(()=>[z[1]||(z[1]=e.createTextVNode(" Редактировать ",-1))]),_:1}))])]),e.createElementVNode("div",{class:e.normalizeClass(["admin-dashboard__grid",{"admin-dashboard__grid--editing":e.unref(l).editMode}])},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(u.value,(P,q)=>(e.openBlock(),e.createElementBlock("div",{key:P.layoutSlug,class:e.normalizeClass(["admin-dashboard__cell",{"admin-dashboard__cell--editing":e.unref(l).editMode}]),draggable:e.unref(l).editMode,style:e.normalizeStyle({gridColumn:`span ${N(P.node)} / span ${N(P.node)}`}),onDragstart:O=>x(q,O),onDragover:F,onDrop:O=>J(q,O)},[e.createVNode(bn,{node:P.node},null,8,["node"]),e.unref(l).editMode?(e.openBlock(),e.createBlock(Fl,{key:0,onConfigure:O=>fe(P.layoutSlug),onRemove:O=>K(P.layoutSlug)},null,8,["onConfigure","onRemove"])):e.createCommentVNode("",!0),e.unref(l).editMode?(e.openBlock(),e.createElementBlock("span",{key:1,class:"admin-dashboard__resize","aria-label":"Изменить размер",onMousedown:O=>te(O,P.layoutSlug,N(P.node))},null,40,pr)):e.createCommentVNode("",!0)],46,fr))),128))],2),e.createVNode(rr,{open:V.value!==null,mode:V.value??"add",item:D.value,"initial-title":y.value,onClose:_,onAdd:ae,onSave:M},null,8,["open","mode","item","initial-title"])]))}}),vr={key:1,class:"admin-home"},hr={class:"admin-home__title"},yr={key:0,class:"admin-home__resources"},gr={class:"admin-home__grid"},kr=["onClick"],_r={class:"admin-home__card-label"},br={class:"admin-home__card-slug"},wn=e.defineComponent({__name:"HomePage",setup(t){const n=ce(),a=re(),r=X.useRouter(),i=e.computed(()=>a.user?.name??""),l=e.computed(()=>n.manifest?.resources??[]),o=e.computed(()=>n.manifest?.dashboards??[]),s=e.computed(()=>o.value[0]?.slug??null),d=yn();return e.watch(s,f=>{f&&d.openDashboard(f)},{immediate:!0}),(f,p)=>s.value?(e.openBlock(),e.createBlock(xt,{key:0,slug:s.value},null,8,["slug"])):(e.openBlock(),e.createElementBlock("div",vr,[e.createVNode(e.unref(c.UidCard),{padding:"lg",class:"admin-home__hero"},{default:e.withCtx(()=>[e.createElementVNode("h1",hr,"Добро пожаловать"+e.toDisplayString(i.value?", "+i.value:""),1),p[0]||(p[0]=e.createElementVNode("p",{class:"admin-home__lead"}," Админ-панель готова. Зарегистрируйте DashboardScreen чтобы увидеть widget-grid здесь, либо переходите к ресурсам ниже. ",-1))]),_:1}),l.value.length?(e.openBlock(),e.createElementBlock("section",yr,[p[1]||(p[1]=e.createElementVNode("h2",{class:"admin-home__heading"},"Ресурсы",-1)),e.createElementVNode("ul",gr,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value,b=>(e.openBlock(),e.createElementBlock("li",{key:b.slug},[e.createElementVNode("button",{type:"button",class:"admin-home__card",onClick:u=>e.unref(r).push({name:`admin.resource.${b.slug}.index`})},[e.createElementVNode("span",_r,e.toDisplayString(b.label),1),e.createElementVNode("span",br,e.toDisplayString(b.slug),1)],8,kr)]))),128))])])):e.createCommentVNode("",!0)]))}}),wr={class:"admin-status-page"},Bn=e.defineComponent({__name:"ForbiddenPage",setup(t){const n=X.useRouter();return(a,r)=>(e.openBlock(),e.createElementBlock("div",wr,[e.createVNode(e.unref(c.UidCard),{padding:"lg",class:"admin-status-page__card"},{default:e.withCtx(()=>[r[2]||(r[2]=e.createElementVNode("h1",{class:"admin-status-page__code"},"403",-1)),r[3]||(r[3]=e.createElementVNode("p",{class:"admin-status-page__message"},"Доступ запрещён.",-1)),e.createVNode(e.unref(c.UidButton),{variant:"ghost",onClick:r[0]||(r[0]=i=>e.unref(n).replace({name:"admin.home"}))},{default:e.withCtx(()=>[...r[1]||(r[1]=[e.createTextVNode(" На главную ",-1)])]),_:1})]),_:1})]))}}),Br={class:"admin-status-page"},Vn=e.defineComponent({__name:"NotFoundPage",setup(t){const n=X.useRouter();return(a,r)=>(e.openBlock(),e.createElementBlock("div",Br,[e.createVNode(e.unref(c.UidCard),{padding:"lg",class:"admin-status-page__card"},{default:e.withCtx(()=>[r[2]||(r[2]=e.createElementVNode("h1",{class:"admin-status-page__code"},"404",-1)),r[3]||(r[3]=e.createElementVNode("p",{class:"admin-status-page__message"},"Страница не найдена.",-1)),e.createVNode(e.unref(c.UidButton),{variant:"ghost",onClick:r[0]||(r[0]=i=>e.unref(n).replace({name:"admin.home"}))},{default:e.withCtx(()=>[...r[1]||(r[1]=[e.createTextVNode(" На главную ",-1)])]),_:1})]),_:1})]))}}),Vr={class:"admin-settings-page"},xr={class:"admin-settings-page__title"},Nr={key:0,class:"admin-settings-page__hint"},Cr={key:1,class:"admin-settings-page__debug"},xn=e.defineComponent({__name:"SettingsPage",setup(t){const n=X.useRoute(),a=ce(),r=e.computed(()=>String(n.params.slug??"")),i=e.computed(()=>a.manifest?.settings?.find(l=>l.slug===r.value)??null);return(l,o)=>(e.openBlock(),e.createElementBlock("div",Vr,[e.createVNode(e.unref(c.UidCard),{padding:"lg"},{default:e.withCtx(()=>[e.createElementVNode("h1",xr,e.toDisplayString(i.value?.label??r.value),1),i.value?(e.openBlock(),e.createElementBlock("pre",Cr,e.toDisplayString(JSON.stringify(i.value.fields,null,2)),1)):(e.openBlock(),e.createElementBlock("p",Nr," Settings «"+e.toDisplayString(r.value)+"» не найдено в manifest'е. ",1))]),_:1})]))}}),Er={class:"admin-status-page"},$r={class:"admin-status-page__title"},Sr={class:"admin-status-page__hint"},Nn=e.defineComponent({__name:"UnknownScreenPage",setup(t){const n=X.useRoute(),a=e.computed(()=>String(n.params.slug??"")),r=e.computed(()=>String(n.meta?.title??a.value));return(i,l)=>(e.openBlock(),e.createElementBlock("div",Er,[e.createVNode(e.unref(c.UidCard),{padding:"lg",class:"admin-status-page__card"},{default:e.withCtx(()=>[e.createElementVNode("h1",$r,e.toDisplayString(r.value),1),e.createElementVNode("p",Sr,[e.createTextVNode(" Это заглушка для screen «"+e.toDisplayString(a.value)+"». Передайте свой компонент через ",1),l[0]||(l[0]=e.createElementVNode("code",null,"createAdminApp("+e.toDisplayString("{")+" pages: "+e.toDisplayString("{")+" screen: MyScreen "+e.toDisplayString("}")+" "+e.toDisplayString("}")+")",-1)),l[1]||(l[1]=e.createTextVNode(". ",-1))])]),_:1})]))}}),Ur={class:"admin-auth-card__row"},Mr=["href"],Dr={key:1,style:{"text-align":"center","font-size":"var(--uid-font-size-xs)",color:"var(--uid-text-secondary)","padding-top":"4px"}},Ir=["href"],Cn=e.defineComponent({__name:"LoginForm",props:{forgotUrl:{default:null},ssoLinkLabel:{default:null},ssoUrl:{default:null}},emits:["success"],setup(t,{emit:n}){const a=n,r=re(),i=e.ref(""),l=e.ref(""),o=e.ref(!1),s=e.ref(!1),d=e.ref(null),f=e.ref({}),p=e.computed(()=>f.value.email?.[0]),b=e.computed(()=>f.value.password?.[0]);async function u(){if(!s.value){s.value=!0,d.value=null,f.value={};try{const N=await r.login({email:i.value,password:l.value,remember:o.value});a("success",N)}catch(N){N instanceof Me?(f.value=N.fields,d.value=N.firstFieldMessage()):N instanceof De?d.value="Нет соединения с сервером":N instanceof de?d.value=N.message||"Не удалось войти":d.value=N.message}finally{s.value=!1}}}return(N,h)=>(e.openBlock(),e.createElementBlock("form",{class:"admin-auth-card__bd",novalidate:"",onSubmit:e.withModifiers(u,["prevent"])},[d.value?(e.openBlock(),e.createBlock(e.unref(c.UidAlert),{key:0,variant:"danger",class:"admin-auth-card__alert",role:"alert"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(d.value),1)]),_:1})):e.createCommentVNode("",!0),e.createVNode(e.unref(c.UidInput),{modelValue:i.value,"onUpdate:modelValue":h[0]||(h[0]=k=>i.value=k),type:"email",label:"Email",placeholder:"you@company.com",autocomplete:"username",required:!0,disabled:s.value,error:p.value,name:"email"},null,8,["modelValue","disabled","error"]),e.createVNode(e.unref(c.UidInput),{modelValue:l.value,"onUpdate:modelValue":h[1]||(h[1]=k=>l.value=k),type:"password",label:"Пароль",autocomplete:"current-password",required:!0,disabled:s.value,error:b.value,name:"password"},null,8,["modelValue","disabled","error"]),e.createElementVNode("div",Ur,[e.createVNode(e.unref(c.UidCheckbox),{modelValue:o.value,"onUpdate:modelValue":h[2]||(h[2]=k=>o.value=k),disabled:s.value},{default:e.withCtx(()=>[...h[3]||(h[3]=[e.createTextVNode(" Запомнить меня ",-1)])]),_:1},8,["modelValue","disabled"]),t.forgotUrl?(e.openBlock(),e.createElementBlock("a",{key:0,href:t.forgotUrl,class:"admin-auth-card__link"}," Забыли пароль? ",8,Mr)):e.createCommentVNode("",!0)]),e.createVNode(e.unref(c.UidButton),{type:"submit",variant:"primary",size:"lg",loading:s.value,disabled:s.value},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(s.value?"Вход…":"Войти"),1)]),_:1},8,["loading","disabled"]),t.ssoLinkLabel&&t.ssoUrl?(e.openBlock(),e.createElementBlock("div",Dr,[h[4]||(h[4]=e.createTextVNode(" или войдите через ",-1)),e.createElementVNode("a",{href:t.ssoUrl,class:"admin-auth-card__link"},e.toDisplayString(t.ssoLinkLabel),9,Ir)])):e.createCommentVNode("",!0)],32))}}),Tr=["value","disabled","aria-label","onInput","onKeydown"],Fr={class:"admin-auth-card__row"},En=e.defineComponent({__name:"TwoFactorForm",emits:["success","cancel"],setup(t,{emit:n}){const a=n,r=re(),i=e.ref("totp"),l=e.ref(["","","","","",""]),o=e.ref(""),s=e.ref([]),d=e.ref(!1),f=e.ref(null),p=e.ref(null),b=e.computed(()=>l.value.join("")),u=e.computed(()=>i.value==="totp"?b.value.length===6:o.value.trim().length>0);function N(V,D){D instanceof HTMLInputElement&&(s.value[V]=D)}function h(V,D){const y=D.target,g=y.value.replace(/\D/g,"").slice(-1);l.value[V]=g,y.value=g,g&&V<l.value.length-1&&e.nextTick(()=>s.value[V+1]?.focus()),b.value.length===l.value.length&&w()}function k(V,D){D.key==="Backspace"&&!l.value[V]&&V>0?e.nextTick(()=>s.value[V-1]?.focus()):D.key==="ArrowLeft"&&V>0?(s.value[V-1]?.focus(),D.preventDefault()):D.key==="ArrowRight"&&V<l.value.length-1&&(s.value[V+1]?.focus(),D.preventDefault())}function m(V){const y=(V.clipboardData?.getData("text")??"").replace(/\D/g,"").slice(0,l.value.length);if(y.length!==0){V.preventDefault();for(let g=0;g<l.value.length;g++)l.value[g]=y[g]??"";e.nextTick(()=>{s.value[Math.min(y.length,l.value.length-1)]?.focus(),y.length===l.value.length&&w()})}}async function w(){if(!(d.value||!u.value)){d.value=!0,f.value=null;try{if(i.value==="totp")await r.twoFactorChallenge(b.value);else{const V=await r.twoFactorRecovery(o.value.trim());p.value=V.remaining}a("success")}catch(V){V instanceof Me?f.value=V.firstFieldMessage()??"Неверный код":V instanceof De?f.value="Нет соединения с сервером":V instanceof de?f.value=V.message||"Не удалось проверить код":f.value=V.message}finally{d.value=!1}}}function C(){r.cancelChallenge(),a("cancel")}function E(){i.value=i.value==="totp"?"recovery":"totp",f.value=null}return(V,D)=>(e.openBlock(),e.createElementBlock("form",{class:"admin-auth-card__bd",novalidate:"",onSubmit:e.withModifiers(w,["prevent"])},[f.value?(e.openBlock(),e.createBlock(e.unref(c.UidAlert),{key:0,variant:"danger",class:"admin-auth-card__alert",role:"alert"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(f.value),1)]),_:1})):e.createCommentVNode("",!0),p.value!==null?(e.openBlock(),e.createBlock(e.unref(c.UidAlert),{key:1,variant:"info",class:"admin-auth-card__alert",role:"status"},{default:e.withCtx(()=>[e.createTextVNode(" Использован recovery-код. Осталось: "+e.toDisplayString(p.value),1)]),_:1})):e.createCommentVNode("",!0),i.value==="totp"?(e.openBlock(),e.createElementBlock("div",{key:2,class:"admin-code-input",onPaste:m},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value,(y,g)=>(e.openBlock(),e.createElementBlock("input",{key:g,ref_for:!0,ref:_=>N(g,_),value:l.value[g],type:"text",inputmode:"numeric",autocomplete:"one-time-code",maxlength:"1",disabled:d.value,"aria-label":`Цифра ${g+1}`,onInput:_=>h(g,_),onKeydown:_=>k(g,_)},null,40,Tr))),128))],32)):(e.openBlock(),e.createBlock(e.unref(c.UidInput),{key:3,modelValue:o.value,"onUpdate:modelValue":D[0]||(D[0]=y=>o.value=y),type:"text",label:"Recovery-код",autocomplete:"one-time-code",disabled:d.value,name:"recovery-code"},null,8,["modelValue","disabled"])),e.createVNode(e.unref(c.UidButton),{type:"submit",variant:"primary",size:"lg",loading:d.value,disabled:d.value||!u.value},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(d.value?"Проверка…":"Подтвердить"),1)]),_:1},8,["loading","disabled"]),e.createElementVNode("div",Fr,[e.createElementVNode("button",{type:"button",class:"admin-auth-card__link",onClick:E},[i.value==="totp"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode("Использовать recovery-код")],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode("Вернуться к коду из приложения")],64))]),e.createElementVNode("button",{type:"button",class:"admin-auth-card__link",onClick:C}," Отмена ")])],32))}}),Ar={class:"admin-auth-page"},Lr={key:0,class:"admin-auth-page__corner"},zr={class:"admin-auth-card__hd"},Rr=["src","alt"],Pr={key:1,"aria-hidden":"true"},qr={key:2},jr={class:"admin-auth-card__title"},Or={class:"admin-auth-card__sub"},$n=e.defineComponent({__name:"LoginPage",props:{brandName:{default:"Laravel Admin"},brandMark:{default:null},brandLogo:{default:null},homeRouteName:{default:"admin.home"},redirectQueryKey:{default:"redirect"},forgotUrl:{default:null},ssoLinkLabel:{default:null},ssoUrl:{default:null},showCornerActions:{type:Boolean,default:!0}},setup(t){const n=t,a=re(),r=X.useRouter(),i=X.useRoute();async function l(){const o=i.query[n.redirectQueryKey];if(typeof o=="string"&&o.length>0&&o.startsWith("/")){await r.push(o);return}await r.push({name:n.homeRouteName})}return e.watch(()=>a.isAuthenticated,o=>{o&&l()}),e.onMounted(()=>{a.isAuthenticated&&l()}),(o,s)=>(e.openBlock(),e.createElementBlock("div",Ar,[t.showCornerActions?(e.openBlock(),e.createElementBlock("div",Lr,[e.createVNode(gt),e.createVNode(kt)])):e.createCommentVNode("",!0),e.createVNode(e.unref(c.UidCard),{class:e.normalizeClass(["admin-auth-card",e.unref(a).isChallengePending?"admin-auth-card--wide":""]),padding:"none"},{default:e.withCtx(()=>[e.createElementVNode("div",zr,[e.createElementVNode("div",{class:e.normalizeClass(["admin-auth-card__logo",e.unref(a).isChallengePending?"admin-auth-card__logo--accent":""])},[t.brandLogo&&!e.unref(a).isChallengePending?(e.openBlock(),e.createElementBlock("img",{key:0,src:t.brandLogo,alt:t.brandName},null,8,Rr)):e.unref(a).isChallengePending?(e.openBlock(),e.createElementBlock("span",Pr,"🛡")):t.brandMark?(e.openBlock(),e.createElementBlock("span",qr,e.toDisplayString(t.brandMark),1)):(e.openBlock(),e.createBlock(Ze,{key:3,size:40}))],2),e.createElementVNode("div",jr,[e.unref(a).isChallengePending?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode("Двухфакторная проверка")],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(t.brandName),1)],64))]),e.createElementVNode("div",Or,[e.unref(a).isChallengePending?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(" Введите 6-значный код из приложения-аутентификатора ")],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode("Войдите, чтобы продолжить работу")],64))])]),e.unref(a).isChallengePending?(e.openBlock(),e.createBlock(En,{key:0,onSuccess:s[0]||(s[0]=()=>{}),onCancel:s[1]||(s[1]=()=>{})})):(e.openBlock(),e.createBlock(Cn,{key:1,"forgot-url":t.forgotUrl,"sso-link-label":t.ssoLinkLabel,"sso-url":t.ssoUrl,onSuccess:s[2]||(s[2]=()=>{})},null,8,["forgot-url","sso-link-label","sso-url"]))]),_:1},8,["class"])]))}}),Wr={class:"admin-auth-page"},Hr={class:"admin-auth-card__hd"},Kr={class:"admin-auth-card__logo"},Gr={class:"admin-auth-card__sub"},Xr={class:"admin-auth-card__body"},Yr=e.defineComponent({__name:"ForgotPasswordPage",props:{brandName:{default:"Laravel Admin"},loginRouteName:{default:"admin.login"}},setup(t){const n=X.useRouter(),a=e.ref(""),r=e.ref(!1),i=e.ref(!1);async function l(){if(a.value.trim()===""){G.error("Введите email.");return}i.value=!0;try{const{getAdminClient:o}=await Promise.resolve().then(()=>Z);await o().post("/auth/forgotPassword",{email:a.value.trim()}),r.value=!0}catch{r.value=!0}finally{i.value=!1}}return(o,s)=>(e.openBlock(),e.createElementBlock("div",Wr,[e.createVNode(e.unref(c.UidCard),{padding:"none",class:"admin-auth-card"},{default:e.withCtx(()=>[e.createElementVNode("div",Hr,[e.createElementVNode("div",Kr,[e.createVNode(Ze,{size:40})]),s[2]||(s[2]=e.createElementVNode("div",{class:"admin-auth-card__title"},"Восстановление пароля",-1)),e.createElementVNode("div",Gr,e.toDisplayString(r.value?"Если такой email зарегистрирован — мы отправили письмо со ссылкой на сброс.":"Введите email — отправим ссылку для сброса пароля."),1)]),e.createElementVNode("div",Xr,[r.value?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("form",{key:0,onSubmit:e.withModifiers(l,["prevent"])},[e.createVNode(e.unref(c.UidInput),{modelValue:a.value,"onUpdate:modelValue":s[0]||(s[0]=d=>a.value=d),type:"email",placeholder:"you@example.com",autocomplete:"email",required:""},null,8,["modelValue"]),e.createVNode(e.unref(c.UidButton),{type:"submit",variant:"primary",class:"admin-auth-card__submit",loading:i.value},{prepend:e.withCtx(()=>[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(en),size:14},null,8,["icon"])]),default:e.withCtx(()=>[s[3]||(s[3]=e.createTextVNode(" Отправить ссылку ",-1))]),_:1},8,["loading"])],32)),e.createVNode(e.unref(c.UidButton),{variant:"ghost",class:"admin-auth-card__back",onClick:s[1]||(s[1]=d=>e.unref(n).push({name:t.loginRouteName}))},{default:e.withCtx(()=>[...s[4]||(s[4]=[e.createTextVNode(" ← Назад ко входу ",-1)])]),_:1})])]),_:1})]))}}),Zr={class:"admin-auth-page"},Jr={class:"admin-auth-card__hd"},Qr={class:"admin-auth-card__logo"},ei={class:"admin-auth-card__body"},ti={key:0,class:"admin-auth-card__error"},ni=e.defineComponent({__name:"ResetPasswordPage",props:{loginRouteName:{default:"admin.login"}},setup(t){const n=t,a=X.useRouter(),r=X.useRoute(),i=e.computed(()=>String(r.query.token??"")),l=e.ref(String(r.query.email??"")),o=e.ref(""),s=e.ref(""),d=e.ref(!1),f=e.ref("");async function p(){if(f.value="",o.value.length<8){f.value="Пароль должен быть не менее 8 символов.";return}if(o.value!==s.value){f.value="Пароли не совпадают.";return}d.value=!0;try{const{getAdminClient:b}=await Promise.resolve().then(()=>Z);await b().post("/auth/resetPassword",{token:i.value,email:l.value,password:o.value,password_confirmation:s.value}),G.success("Пароль обновлён. Войдите с новым паролем."),await a.push({name:n.loginRouteName})}catch{f.value="Не удалось сбросить пароль. Возможно, ссылка устарела."}finally{d.value=!1}}return(b,u)=>(e.openBlock(),e.createElementBlock("div",Zr,[e.createVNode(e.unref(c.UidCard),{padding:"none",class:"admin-auth-card"},{default:e.withCtx(()=>[e.createElementVNode("div",Jr,[e.createElementVNode("div",Qr,[e.createVNode(Ze,{size:40})]),u[3]||(u[3]=e.createElementVNode("div",{class:"admin-auth-card__title"},"Новый пароль",-1)),u[4]||(u[4]=e.createElementVNode("div",{class:"admin-auth-card__sub"},"Задайте новый пароль для своего аккаунта.",-1))]),e.createElementVNode("div",ei,[e.createElementVNode("form",{onSubmit:e.withModifiers(p,["prevent"])},[e.createVNode(e.unref(c.UidInput),{modelValue:l.value,"onUpdate:modelValue":u[0]||(u[0]=N=>l.value=N),type:"email",placeholder:"email",required:""},null,8,["modelValue"]),e.createVNode(e.unref(c.UidInput),{modelValue:o.value,"onUpdate:modelValue":u[1]||(u[1]=N=>o.value=N),type:"password",placeholder:"Новый пароль (мин. 8)",autocomplete:"new-password",required:""},null,8,["modelValue"]),e.createVNode(e.unref(c.UidInput),{modelValue:s.value,"onUpdate:modelValue":u[2]||(u[2]=N=>s.value=N),type:"password",placeholder:"Повторите пароль",autocomplete:"new-password",required:""},null,8,["modelValue"]),f.value?(e.openBlock(),e.createElementBlock("p",ti,e.toDisplayString(f.value),1)):e.createCommentVNode("",!0),e.createVNode(e.unref(c.UidButton),{type:"submit",variant:"primary",class:"admin-auth-card__submit",loading:d.value},{prepend:e.withCtx(()=>[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(Ke),size:14},null,8,["icon"])]),default:e.withCtx(()=>[u[5]||(u[5]=e.createTextVNode(" Сохранить пароль ",-1))]),_:1},8,["loading"])],32)])]),_:1})]))}}),Rt={page:1,per_page:20,total:0,last_page:1},Nt=ie.defineStore("admin-resource-index",()=>{const t=e.ref(null),n=e.ref([]),a=e.ref({...Rt}),r=e.ref(!1),i=e.ref(!1),l=e.ref(null);let o=null;const s=200,d=e.ref(""),f=e.ref({}),p=e.ref(null),b=e.ref(null),u=e.ref(new Set),N=e.computed(()=>!r.value&&l.value===null&&n.value.length===0),h=e.computed(()=>u.value.size),k=e.computed(()=>u.value.size>0),m=e.computed(()=>l.value!==null),w=e.computed(()=>u.value.size===0||n.value.length===0?"none":n.value.every(F=>u.value.has(C(F)))?"all":"mixed");function C(x){return x.id??x.key??""}function E(x){t.value!==x&&(t.value=x,V(),r.value=!0)}function V(){n.value=[],a.value={...Rt},r.value=!1,l.value=null,d.value="",f.value={},p.value=null,b.value=null,u.value=new Set}function D(x={}){const F={page:x.page??a.value.page,per_page:x.per_page??a.value.per_page},J=x.search??d.value;J&&(F.q=J);const Q=x.sort??p.value,ee=x.direction??b.value;Q&&ee!==null&&(F.order=[{column:Q,direction:ee}]);const ue=x.filters??f.value,te={};for(const[me,se]of Object.entries(ue))se==null||se===""||(te[me]=Array.isArray(se)?se.join(","):se);return Object.keys(te).length>0&&(F.filters=te),F}async function y(x={}){if(!t.value)throw new Error("useResourceIndexStore.load() called before setSlug()");r.value=!0,l.value=null,o!==null&&clearTimeout(o),o=setTimeout(()=>{i.value=!0},s);try{const F=H(),J=D(x),Q=await F.post(`/${t.value}/search`,J);n.value=Q.data,a.value=Q.meta}catch(F){throw l.value=F instanceof Error?F:new Error(String(F)),F}finally{r.value=!1,i.value=!1,o!==null&&(clearTimeout(o),o=null)}}async function g(x){d.value=x,a.value.page=1,await y()}async function _(x,F){F==null||F===""?delete f.value[x]:f.value[x]=F,a.value.page=1,await y()}async function T(){f.value={},a.value.page=1,await y()}async function R(x,F="asc"){p.value=x,b.value=F,await y()}async function W(x){p.value===x?b.value==="asc"?b.value="desc":b.value==="desc"?(p.value=null,b.value=null):b.value="asc":(p.value=x,b.value="asc"),await y()}async function K(x){a.value.page=x,await y()}function fe(x){const F=new Set(u.value);F.has(x)?F.delete(x):F.add(x),u.value=F}function ae(){if(w.value==="all"){u.value=new Set;return}const x=new Set(u.value);for(const F of n.value)x.add(C(F));u.value=x}function M(){u.value=new Set}function $(x){return u.value.has(x)}return{slug:t,items:n,meta:a,loading:r,slowLoading:i,error:l,search:d,filters:f,sortKey:p,sortDirection:b,selection:u,isEmpty:N,hasError:m,hasSelection:k,selectedCount:h,selectionState:w,setSlug:E,reset:V,load:y,setSearch:g,setFilter:_,clearFilters:T,setSort:R,toggleSort:W,setPage:K,toggleRow:fe,toggleAllOnPage:ae,clearSelection:M,isSelected:$,rowId:C}}),ai=Object.freeze(Object.defineProperty({__proto__:null,useResourceIndexStore:Nt},Symbol.toStringTag,{value:"Module"})),Pt="d.m.Y H:i:s",oi="d.m.Y",li=/^\d{4}-\d{2}-\d{2}[T\s]\d{2}:\d{2}/;function Sn(t,n,a={}){if(t==null)return"";if(!n&&typeof t=="string"&&li.test(t))return ot(t,Pt);switch(n){case"date":return ot(String(t),a.format??oi);case"datetime":return ot(String(t),a.format??Pt);case"money":return ri(t,a.currency??"RUB",a.decimals??2);case"boolean":return ii(t,a.trueLabel??"Да",a.falseLabel??"Нет");case"bytes":return si(t);default:return String(t)}}function ot(t,n){const a=new Date(t);if(isNaN(a.getTime()))return t;const r=(o,s=2)=>String(o).padStart(s,"0"),i={d:r(a.getDate()),m:r(a.getMonth()+1),Y:String(a.getFullYear()),y:r(a.getFullYear()%100),H:r(a.getHours()),h:r((a.getHours()+11)%12+1),i:r(a.getMinutes()),s:r(a.getSeconds()),U:String(Math.floor(a.getTime()/1e3)),c:a.toISOString(),N:String((a.getDay()+6)%7+1),w:String(a.getDay())};let l="";for(let o=0;o<n.length;o++){const s=n[o];if(s==="\\"&&o+1<n.length){l+=n[o+1],o++;continue}l+=i[s]??s}return l}function ri(t,n,a){const r=typeof t=="number"?t:Number(t);return isNaN(r)?String(t):`${r.toFixed(a)} ${n}`}function ii(t,n,a){return t===!0||t===1||t==="1"||t==="true"?n:a}function si(t){const n=typeof t=="number"?t:Number(t);return isNaN(n)?String(t):n<1024?`${n} B`:n<1024*1024?`${(n/1024).toFixed(1)} KB`:n<1024*1024*1024?`${(n/1024/1024).toFixed(1)} MB`:`${(n/1024/1024/1024).toFixed(1)} GB`}const qt=e.defineComponent({name:"FilterEditor",props:{filter:{type:Object,required:!0},draft:{type:null,required:!1,default:null},isChecked:{type:Function,required:!0}},emits:["toggle-option","set-draft"],setup(t,{emit:n}){return()=>{const a=t.filter;if(a.type==="options"&&a.options&&a.options.length>0)return e.h("div",{class:"admin-toolbar__editor admin-toolbar__editor--options"},a.options.map(r=>e.h("label",{key:String(r.value),class:"admin-toolbar__list-item admin-toolbar__list-item--checkbox"},[e.h("input",{type:a.multiple?"checkbox":"radio",checked:t.isChecked(r.value),onChange:()=>n("toggle-option",r.value)}),e.h("span",null,r.label)])));if(a.type==="date_range"){const r=t.draft??{};return e.h("div",{class:"admin-toolbar__editor admin-toolbar__editor--dates"},[e.h("input",{type:"date",value:r.from??"",class:"admin-toolbar__input",placeholder:"От",onChange:i=>n("set-draft",{...r,from:i.target.value})}),e.h("input",{type:"date",value:r.to??"",class:"admin-toolbar__input",placeholder:"До",onChange:i=>n("set-draft",{...r,to:i.target.value})})])}if(a.type==="trashed"){const r=[{value:"without",label:"Без удалённых"},{value:"with",label:"С удалёнными"},{value:"only",label:"Только удалённые"}];return e.h("div",{class:"admin-toolbar__editor admin-toolbar__editor--options"},r.map(i=>e.h("label",{key:i.value,class:"admin-toolbar__list-item admin-toolbar__list-item--checkbox"},[e.h("input",{type:"radio",checked:t.draft===i.value,onChange:()=>n("set-draft",i.value)}),e.h("span",null,i.label)])))}return a.type==="switcher"?e.h("div",{class:"admin-toolbar__editor"},[e.h("label",{class:"admin-toolbar__list-item admin-toolbar__list-item--checkbox"},[e.h("input",{type:"radio",checked:t.draft===!0,onChange:()=>n("set-draft",!0)}),e.h("span",null,"Да")]),e.h("label",{class:"admin-toolbar__list-item admin-toolbar__list-item--checkbox"},[e.h("input",{type:"radio",checked:t.draft===!1,onChange:()=>n("set-draft",!1)}),e.h("span",null,"Нет")])]):e.h("input",{type:"text",value:t.draft??"",class:"admin-toolbar__input",placeholder:a.placeholder??a.label,onChange:r=>n("set-draft",r.target.value)})}}}),ci={class:"admin-toolbar"},di={class:"admin-toolbar__row admin-toolbar__row--filters"},ui={class:"admin-toolbar__search"},mi=["placeholder"],fi={key:0,class:"admin-toolbar__divider"},pi={type:"button",class:"admin-toolbar__chip admin-toolbar__chip--active"},vi={class:"admin-toolbar__chip-text"},hi=["onClick","onKeydown"],yi={class:"admin-toolbar__popover-actions"},gi={type:"button",class:"admin-toolbar__chip"},ki={class:"admin-toolbar__chip-text"},_i={class:"admin-toolbar__popover-actions"},bi={type:"button",class:"admin-toolbar__chip"},wi=["onClick"],Bi={key:0,class:"admin-toolbar__row admin-toolbar__row--actions"},Vi={type:"button",class:"admin-toolbar__chip"},xi={class:"admin-toolbar__chip-text"},Ni=["onClick"],Ci={type:"button",class:"admin-toolbar__chip"},Ei=["checked","onChange"],$i={type:"button",class:"admin-toolbar__chip"},Si={class:"admin-toolbar__popover-actions"},jt=4,Ui=e.defineComponent({__name:"AdminFilterToolbar",props:{search:{},searchPlaceholder:{default:"Поиск…"},filters:{},values:{},columns:{},groupBy:{default:null},columnVisibility:{default:()=>({})},enableSavedViews:{type:Boolean,default:!0}},emits:["update:search","apply-filter","reset","group-by","columns-visibility","save-view"],setup(t,{emit:n}){const a=t,r=n,i=e.ref(a.search);e.watch(()=>a.search,M=>{i.value=M});function l(){i.value!==a.search&&r("update:search",i.value)}function o(M){return M==null||M===""||Array.isArray(M)&&M.length===0?!1:typeof M=="object"&&!Array.isArray(M)?Object.values(M).some(x=>x!==null&&x!==""&&x!==void 0):!0}const s=e.computed(()=>a.filters.filter(M=>o(a.values[M.name]))),d=e.computed(()=>a.filters.filter(M=>!o(a.values[M.name]))),f=e.ref(new Set),p=e.computed(()=>d.value.filter((M,$)=>f.value.has(M.name)||$<jt)),b=e.computed(()=>d.value.filter((M,$)=>!f.value.has(M.name)&&$>=jt));function u(M){const $=new Set(f.value);$.add(M),f.value=$}const N=e.computed(()=>a.search!==""||s.value.length>0);function h(M){r("apply-filter",M,null)}function k(M){const $=a.values[M.name];if(M.options&&M.options.length>0){const F=(Array.isArray($)?$:[$]).map(J=>M.options?.find(Q=>String(Q.value)===String(J))?.label??String(J));return`${M.label}: ${F.join(", ")}`}if(M.type==="date_range"&&$&&typeof $=="object"){const x=$;return`${M.label}: ${x.from??""} – ${x.to??""}`}return M.type==="switcher"?`${M.label}: ${$?"да":"нет"}`:`${M.label}: ${String($)}`}const m=e.ref({});function w(M){return M in m.value||(m.value[M]=a.values[M]??null),m.value[M]}function C(M,$){m.value={...m.value,[M]:$}}function E(M,$){r("apply-filter",M,m.value[M]??null),$()}function V(M,$,x){if(!x){C(M,$);return}const F=w(M),J=Array.isArray(F)?[...F]:[],Q=J.findIndex(ee=>String(ee)===String($));Q>=0?J.splice(Q,1):J.push($),C(M,J)}function D(M,$){const x=w(M);return Array.isArray(x)?x.some(F=>String(F)===String($)):x!=null&&String(x)===String($)}const y=e.computed(()=>a.columns.filter(M=>M.groupable===!0&&(M.key??M.name)));function g(M,$){r("group-by",M),$()}function _(M){return String(M.key??M.name??"")}function T(M){return String(M.label??M.name??M.key??"")}function R(M){const $=_(M);return $ in a.columnVisibility?a.columnVisibility[$]:!0}function W(M){const $=_(M);r("columns-visibility",{...a.columnVisibility,[$]:!R(M)})}const K=e.ref("");function fe(M){K.value.trim()!==""&&(r("save-view",K.value.trim()),K.value="",M())}function ae(M){return fn(M)??null}return(M,$)=>(e.openBlock(),e.createElementBlock("div",ci,[e.createElementVNode("div",di,[e.createElementVNode("label",ui,[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(ht),size:14,class:"admin-toolbar__search-icon"},null,8,["icon"]),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":$[0]||($[0]=x=>i.value=x),type:"search",placeholder:t.searchPlaceholder,class:"admin-toolbar__search-input",onKeydown:e.withKeys(l,["enter"]),onBlur:l},null,40,mi),[[e.vModelText,i.value]])]),t.filters.length>0?(e.openBlock(),e.createElementBlock("span",fi)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,x=>(e.openBlock(),e.createBlock(e.unref(c.UidMenu),{key:`active-${x.name}`},{trigger:e.withCtx(()=>[e.createElementVNode("button",pi,[ae(x.icon)!==null?(e.openBlock(),e.createBlock(e.unref(c.UidIcon),{key:0,icon:ae(x.icon),size:14},null,8,["icon"])):e.createCommentVNode("",!0),e.createElementVNode("span",vi,e.toDisplayString(k(x)),1),e.createElementVNode("span",{role:"button",tabindex:"0","aria-label":"Сбросить фильтр",class:"admin-toolbar__chip-x",onClick:e.withModifiers(F=>h(x.name),["stop"]),onKeydown:e.withKeys(e.withModifiers(F=>h(x.name),["stop"]),["enter"])},[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(be),size:12},null,8,["icon"])],40,hi)])]),default:e.withCtx(()=>[e.createElementVNode("div",{class:"admin-toolbar__popover",onKeydown:$[1]||($[1]=e.withModifiers(()=>{},["stop"]))},[e.createVNode(e.unref(qt),{filter:x,draft:w(x.name),"is-checked":F=>D(x.name,F),onToggleOption:F=>V(x.name,F,x.multiple??!1),onSetDraft:F=>C(x.name,F)},null,8,["filter","draft","is-checked","onToggleOption","onSetDraft"]),e.createElementVNode("div",yi,[e.createVNode(e.unref(c.UidButton),{size:"sm",variant:"ghost",onClick:F=>C(x.name,null)},{default:e.withCtx(()=>[...$[12]||($[12]=[e.createTextVNode(" Очистить ",-1)])]),_:1},8,["onClick"]),e.createVNode(e.unref(c.UidButton),{size:"sm",variant:"primary",onClick:F=>E(x.name,()=>{})},{default:e.withCtx(()=>[...$[13]||($[13]=[e.createTextVNode(" Применить ",-1)])]),_:1},8,["onClick"])])],32)]),_:2},1024))),128)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(p.value,x=>(e.openBlock(),e.createBlock(e.unref(c.UidMenu),{key:`inactive-${x.name}`},{trigger:e.withCtx(()=>[e.createElementVNode("button",gi,[ae(x.icon)!==null?(e.openBlock(),e.createBlock(e.unref(c.UidIcon),{key:0,icon:ae(x.icon),size:14},null,8,["icon"])):e.createCommentVNode("",!0),e.createElementVNode("span",ki,e.toDisplayString(x.label),1)])]),default:e.withCtx(()=>[e.createElementVNode("div",{class:"admin-toolbar__popover",onKeydown:$[2]||($[2]=e.withModifiers(()=>{},["stop"]))},[e.createVNode(e.unref(qt),{filter:x,draft:w(x.name),"is-checked":F=>D(x.name,F),onToggleOption:F=>V(x.name,F,x.multiple??!1),onSetDraft:F=>C(x.name,F)},null,8,["filter","draft","is-checked","onToggleOption","onSetDraft"]),e.createElementVNode("div",_i,[e.createVNode(e.unref(c.UidButton),{size:"sm",variant:"ghost",onClick:F=>C(x.name,null)},{default:e.withCtx(()=>[...$[14]||($[14]=[e.createTextVNode(" Очистить ",-1)])]),_:1},8,["onClick"]),e.createVNode(e.unref(c.UidButton),{size:"sm",variant:"primary",onClick:F=>E(x.name,()=>{})},{default:e.withCtx(()=>[...$[15]||($[15]=[e.createTextVNode(" Применить ",-1)])]),_:1},8,["onClick"])])],32)]),_:2},1024))),128)),b.value.length>0?(e.openBlock(),e.createBlock(e.unref(c.UidMenu),{key:1},{trigger:e.withCtx(()=>[e.createElementVNode("button",bi,[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(Xe),size:14},null,8,["icon"]),$[16]||($[16]=e.createElementVNode("span",{class:"admin-toolbar__chip-text"},"Filter",-1))])]),default:e.withCtx(()=>[e.createElementVNode("div",{class:"admin-toolbar__popover admin-toolbar__popover--list",onKeydown:$[3]||($[3]=e.withModifiers(()=>{},["stop"]))},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(b.value,x=>(e.openBlock(),e.createElementBlock("button",{key:x.name,type:"button",role:"menuitem",class:"admin-toolbar__list-item",onClick:F=>u(x.name)},[ae(x.icon)!==null?(e.openBlock(),e.createBlock(e.unref(c.UidIcon),{key:0,icon:ae(x.icon),size:14},null,8,["icon"])):e.createCommentVNode("",!0),e.createTextVNode(" "+e.toDisplayString(x.label),1)],8,wi))),128))],32)]),_:1})):e.createCommentVNode("",!0),$[18]||($[18]=e.createElementVNode("span",{class:"admin-toolbar__spacer"},null,-1)),N.value?(e.openBlock(),e.createBlock(e.unref(c.UidButton),{key:2,variant:"ghost",size:"md",onClick:$[4]||($[4]=x=>r("reset"))},{prepend:e.withCtx(()=>[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(vt),size:14},null,8,["icon"])]),default:e.withCtx(()=>[$[17]||($[17]=e.createTextVNode(" Сбросить ",-1))]),_:1})):e.createCommentVNode("",!0)]),y.value.length>0||t.columns.length>0||t.enableSavedViews?(e.openBlock(),e.createElementBlock("div",Bi,[y.value.length>0?(e.openBlock(),e.createBlock(e.unref(c.UidMenu),{key:0},{trigger:e.withCtx(()=>[e.createElementVNode("button",Vi,[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(ao),size:14},null,8,["icon"]),e.createElementVNode("span",xi,e.toDisplayString(t.groupBy?`Группа: ${T(t.columns.find(x=>_(x)===t.groupBy)??{})}`:"Группировать"),1)])]),default:e.withCtx(()=>[e.createElementVNode("div",{class:"admin-toolbar__popover admin-toolbar__popover--list",onKeydown:$[6]||($[6]=e.withModifiers(()=>{},["stop"]))},[e.createElementVNode("button",{type:"button",role:"menuitem",class:"admin-toolbar__list-item",onClick:$[5]||($[5]=x=>g(null,()=>{}))},[t.groupBy?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(e.unref(c.UidIcon),{key:0,icon:e.unref(Ke),size:14},null,8,["icon"])),$[19]||($[19]=e.createElementVNode("span",null,"Без группировки",-1))]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(y.value,x=>(e.openBlock(),e.createElementBlock("button",{key:_(x),type:"button",role:"menuitem",class:"admin-toolbar__list-item",onClick:F=>g(_(x),()=>{})},[t.groupBy===_(x)?(e.openBlock(),e.createBlock(e.unref(c.UidIcon),{key:0,icon:e.unref(Ke),size:14},null,8,["icon"])):e.createCommentVNode("",!0),e.createElementVNode("span",null,e.toDisplayString(T(x)),1)],8,Ni))),128))],32)]),_:1})):e.createCommentVNode("",!0),t.columns.length>0?(e.openBlock(),e.createBlock(e.unref(c.UidMenu),{key:1},{trigger:e.withCtx(()=>[e.createElementVNode("button",Ci,[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(Ta),size:14},null,8,["icon"]),$[20]||($[20]=e.createElementVNode("span",{class:"admin-toolbar__chip-text"},"Колонки",-1))])]),default:e.withCtx(()=>[e.createElementVNode("div",{class:"admin-toolbar__popover admin-toolbar__popover--list",onKeydown:$[7]||($[7]=e.withModifiers(()=>{},["stop"]))},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.columns.filter(x=>_(x)!==""),x=>(e.openBlock(),e.createElementBlock("label",{key:_(x),class:"admin-toolbar__list-item admin-toolbar__list-item--checkbox"},[e.createElementVNode("input",{type:"checkbox",checked:R(x),onChange:F=>W(x)},null,40,Ei),e.createElementVNode("span",null,e.toDisplayString(T(x)),1)]))),128))],32)]),_:1})):e.createCommentVNode("",!0),t.enableSavedViews?(e.openBlock(),e.createBlock(e.unref(c.UidMenu),{key:2},{trigger:e.withCtx(()=>[e.createElementVNode("button",$i,[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(ft),size:14},null,8,["icon"]),$[21]||($[21]=e.createElementVNode("span",{class:"admin-toolbar__chip-text"},"Сохранить",-1))])]),default:e.withCtx(()=>[e.createElementVNode("div",{class:"admin-toolbar__popover",onKeydown:$[11]||($[11]=e.withModifiers(()=>{},["stop"]))},[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":$[8]||($[8]=x=>K.value=x),type:"text",placeholder:"Название view",class:"admin-toolbar__input",onKeydown:$[9]||($[9]=e.withKeys(x=>fe(()=>{}),["enter"]))},null,544),[[e.vModelText,K.value]]),e.createElementVNode("div",Si,[e.createVNode(e.unref(c.UidButton),{size:"sm",variant:"primary",disabled:K.value.trim()==="",onClick:$[10]||($[10]=x=>fe(()=>{}))},{default:e.withCtx(()=>[...$[22]||($[22]=[e.createTextVNode(" Сохранить view ",-1)])]),_:1},8,["disabled"])])],32)]),_:1})):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)]))}}),Mi=["title"],Di=["disabled"],Ii=e.defineComponent({__name:"InlineEditCell",props:{resourceSlug:{},rowId:{},column:{},value:{},editable:{type:Boolean,default:!0}},emits:["saved"],setup(t,{emit:n}){const a=t,r=n,i=e.ref(!1),l=e.ref(""),o=e.ref(!1),s=e.ref(null);async function d(){!a.editable||o.value||(l.value=a.value===null||a.value===void 0?"":String(a.value),i.value=!0,await e.nextTick(),s.value?.focus(),s.value?.select())}function f(){i.value=!1}async function p(){if(!(!i.value||o.value)){if(l.value===String(a.value??"")){i.value=!1;return}o.value=!0;try{const{getAdminClient:u}=await Promise.resolve().then(()=>Z);await u().post(`/${a.resourceSlug}/inlineUpdate`,{id:a.rowId,column:a.column,value:l.value}),r("saved",l.value),i.value=!1}catch(u){typeof console<"u"&&console.error("[admin] inline-update failed:",u),G.error(`Не удалось обновить «${a.column}».`)}finally{o.value=!1}}}function b(u){u.key==="Enter"?(u.preventDefault(),p()):u.key==="Escape"&&(u.preventDefault(),f())}return(u,N)=>i.value?e.withDirectives((e.openBlock(),e.createElementBlock("input",{key:1,ref_key:"inputRef",ref:s,"onUpdate:modelValue":N[0]||(N[0]=h=>l.value=h),type:"text",class:"admin-inline-edit__input",disabled:o.value,onKeydown:b,onBlur:p,onClick:N[1]||(N[1]=e.withModifiers(()=>{},["stop"]))},null,40,Di)),[[e.vModelText,l.value]]):(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass(["admin-inline-edit",{"admin-inline-edit--editable":t.editable}]),title:t.editable?"Двойной клик для редактирования":void 0,onDblclick:e.withModifiers(d,["stop"])},[e.renderSlot(u.$slots,"default",{},()=>[e.createTextVNode(e.toDisplayString(t.value),1)])],42,Mi))}}),Ti={class:"admin-page admin-resource-index"},Fi={class:"admin-page__hd"},Ai={class:"admin-page__title-wrap"},Li={class:"admin-page__title-row"},zi={class:"admin-page__title"},Ri={key:0,class:"admin-page__live",role:"status"},Pi={key:0,class:"admin-page__count"},qi={class:"admin-page__actions"},ji={class:"admin-page__view-row"},Oi={class:"admin-page__view-name"},Wi={key:0,class:"admin-page__view-badge"},Hi=["onClick"],Ki={key:0,class:"admin-bulk-toolbar",role:"toolbar"},Gi={class:"admin-bulk-toolbar__count"},Xi={key:2,class:"admin-resource-index__loading"},Yi={key:5,class:"admin-resource-index__table"},Zi=["draggable","onDragstart","onDragover","onDrop"],Ji={key:1,class:"admin-resource-index__row-actions"},Qi=["onClick"],es=["onClick"],ts=["onClick"],ns=["onClick"],as=["onClick"],os={class:"admin-cell-truncate"},ls=["title"],rs={key:6,class:"admin-resource-index__footer"},Ot="__row_actions__",Wt="__row_reorder__",Un=e.defineComponent({__name:"ResourceIndexPage",props:{slug:{},title:{default:null},subtitle:{default:null},createLabel:{default:"Создать"},createRouteName:{default:null}},emits:["bulk-action","row-click","import","header-action"],setup(t,{emit:n}){const a=Bt(),r=(B,v,U)=>a.has(B)?a.t(B,U):v,i=t,l=n,o=Nt(),s=ce(),d=wt(),f=X.useRouter(),p=e.computed(()=>s.getResource(i.slug)),b=e.computed(()=>i.title??p.value?.label??i.slug),u=e.computed(()=>{if(i.createRouteName!==null)return f.hasRoute(i.createRouteName)?i.createRouteName:null;const B=`admin.resource.${i.slug}.create`;return f.hasRoute(B)?B:null}),N=e.computed(()=>(p.value?.actions??[]).map(v=>({key:String(v.key??v.name??""),label:String(v.label??v.name??v.key??""),confirm:typeof v.confirm=="string"?v.confirm:void 0,icon:typeof v.icon=="string"?v.icon:void 0})).filter(v=>v.key!==""&&v.label!==""));async function h(B){if(!(B.confirm&&!window.confirm(B.confirm))){l("header-action",B.key);try{d.start();const{getAdminClient:v}=await Promise.resolve().then(()=>Z),I=await v().post(`/${i.slug}/action`,{key:B.key,ids:[...o.selection]});await o.load().catch(()=>{}),G.success(I?.message??`Action «${B.label}» применён к ${I?.affected??0} записям.`)}catch(v){typeof console<"u"&&console.error("[admin] header-action failed:",v),G.error(`Не удалось выполнить action «${B.label}».`)}finally{d.end()}}}async function k(B="csv"){l("header-action","export");try{d.start();const{getAdminClient:v}=await Promise.resolve().then(()=>Z),I=await v().post(`/${i.slug}/export`,{format:B,filters:o.filters,search:o.search},{responseType:"blob"}),L=URL.createObjectURL(I),Y=document.createElement("a");Y.href=L,Y.download=`${i.slug}-${new Date().toISOString().slice(0,10)}.${B}`,document.body.appendChild(Y),Y.click(),Y.remove(),URL.revokeObjectURL(L)}catch(v){typeof console<"u"&&console.error("[admin] export failed:",v),G.error(`Не удалось экспортировать данные в формате ${B.toUpperCase()}.`)}finally{d.end()}}const m=e.ref(null);function w(){l("import"),m.value?.click()}async function C(B){const v=B.target,U=v.files?.[0];if(U)try{d.start();const{getAdminClient:I}=await Promise.resolve().then(()=>Z),L=I(),Y=new FormData;Y.append("file",U),Y.append("resource",i.slug);const Le=await L.post("/import/upload",Y),Ce=await L.post("/import/preview",{resource:i.slug,upload_id:Le.upload_id}),tt=await L.post("/import/start",{resource:i.slug,upload_id:Le.upload_id,mapping:Ce.mapping}),ze=await E(L,tt.process_id),Re=ze.imported??0,Ft=ze.failed??0;Ft>0?G.warning(`Импорт завершён с ошибками: ${Re} записей, ${Ft} ошибок.`):G.success(`Импортировано записей: ${Re}.`),await o.load().catch(()=>{})}catch(I){typeof console<"u"&&console.error("[admin] import failed:",I),G.error("Импорт не удался. Проверьте формат файла и поля ресурса либо обратитесь к администратору.")}finally{v.value="",d.end()}}async function E(B,v){const U=Date.now()+9e4;for(;Date.now()<U;){await new Promise(L=>setTimeout(L,800));const I=await B.get(`/import/status?process_id=${encodeURIComponent(v)}`);if(I.status==="done"||I.status==="failed")return I}return{status:"failed",failed:1}}const V=e.computed(()=>(p.value?.features??{}).reorderable===!0),D=e.computed(()=>{const v=(p.value?.columns??[]).map(I=>{const L=I;return{key:String(L.key??L.name??""),label:String(L.label??L.name??""),sortable:!!L.sortable,align:L.align??"left",width:typeof L.width=="string"?L.width:void 0}}).filter(I=>I.key).filter(I=>$.value[I.key]!==!1);return[...V.value?[{key:Wt,label:"",sortable:!1,align:"center",width:"32px"}]:[],...v,{key:Ot,label:"",sortable:!1,align:"right",width:"120px"}]});function y(B){const v=p.value?.columns??[];for(const U of v){const I=U;if(String(I.key??I.name??"")===B)return I.editable!==null&&I.editable!==void 0}return!1}const g=e.computed(()=>{const B=p.value?.columns??[],v={};for(const U of B){const I=U,L=String(I.key??I.name??"");L&&(v[L]={preset:typeof I.preset=="string"?I.preset:void 0,meta:I.meta??{}})}return v});function _(B,v){const I=v?.row?.[B],L=g.value[B];return Sn(I,L?.preset,L?.meta??{})}function T(B){return B?.row}const R=e.computed(()=>o.search!==""||Object.keys(o.filters).length>0),W=e.computed(()=>!o.isEmpty||R.value),K=e.computed(()=>p.value?.filters??[]),fe=e.computed(()=>p.value?.columns??[]),ae=e.computed(()=>`Поиск по ${(p.value?.label??i.slug).toLowerCase()}…`),M=e.ref(null),$=e.ref({});async function x(B,v){await o.setFilter(B,v)}async function F(B){await o.setSearch(B)}async function J(){o.search="",await o.clearFilters()}async function Q(B){M.value=B,await o.load({group_by:B})}function ee(B){$.value=B}const ue=e.ref([]),te=e.ref(null);async function me(){try{const{getAdminClient:B}=await Promise.resolve().then(()=>Z),U=await B().get(`/${i.slug}_views/list`);ue.value=U.data??[]}catch{ue.value=[]}}async function se(B){te.value=B.id;const v=B.state;o.search=v.search??"",o.filters={...v.filters??{}},o.sortKey=v.sort?.key??null,o.sortDirection=v.sort?.direction??null,M.value=v.group_by??null,$.value={...v.columns??{}},o.meta.page=1,await Te()}async function Qe(){te.value=null,o.search="",o.filters={},o.sortKey=null,o.sortDirection=null,M.value=null,$.value={},o.meta.page=1,await Te()}async function A(B,v){if(v?.stopPropagation(),!!B.owned&&window.confirm(`Удалить view «${B.name}»?`))try{d.start();const{getAdminClient:U}=await Promise.resolve().then(()=>Z);await U().post(`/${i.slug}_views/delete`,{id:B.id}),te.value===B.id&&(te.value=null),await me()}catch(U){typeof console<"u"&&console.error("[admin] delete-view failed:",U)}finally{d.end()}}async function z(B){try{d.start();const{getAdminClient:v}=await Promise.resolve().then(()=>Z),I=await v().post(`/${i.slug}_views/create`,{name:B,state:{search:o.search,filters:o.filters,sort:{key:o.sortKey,direction:o.sortDirection},group_by:M.value,columns:$.value}});I?.view&&(te.value=I.view.id),await me(),G.success(r("admin.resource.view_saved","Представление сохранено."))}catch(v){typeof console<"u"&&console.error("[admin] save-view failed:",v),G.error("Не удалось сохранить view. Возможно, недостаточно прав либо ресурс не зарегистрирован.")}finally{d.end()}}const P=e.computed(()=>{const B=o.meta.total;return B===0?"":`${o.items.length} из ${B} ${q(B)}`});function q(B){const v=B%10,U=B%100;return v===1&&U!==11?"запись":v>=2&&v<=4&&(U<10||U>=20)?"записи":"записей"}const O=e.ref(null),oe=e.ref(0);let et=null;e.watch(()=>o.loading,(B,v)=>{v&&!B&&o.error===null&&(O.value=Date.now())}),e.onMounted(()=>{et=setInterval(()=>{oe.value+=1},3e4)}),e.onUnmounted(()=>{et!==null&&clearInterval(et)});const It=e.computed(()=>{if(oe.value,O.value===null)return null;const B=Math.floor((Date.now()-O.value)/1e3);if(B<5)return"обновлено только что";if(B<60)return`обновлено ${B} сек назад`;const v=Math.floor(B/60);if(v<60)return`обновлено ${v} мин назад`;const U=Math.floor(v/60);return U<24?`обновлено ${U} ч назад`:"обновлено более суток назад"}),na=e.computed(()=>{if(te.value!==null){const v=ue.value.find(U=>U.id===te.value);if(v)return v.name}return`Все ${(p.value?.label??i.slug).toLowerCase()}`});async function Te(){d.start();try{await o.load()}catch{}finally{d.end()}}e.onMounted(async()=>{o.setSlug(i.slug),s.manifest===null&&await s.load().catch(()=>{}),me(),await Te()}),e.watch(()=>i.slug,async(B,v)=>{B!==v&&(o.setSlug(B),te.value=null,me(),await Te())});async function aa(B){await e.nextTick(),await o.setSort(B,o.sortDirection)}async function oa(B){await e.nextTick(),await o.setSort(o.sortKey,B)}function la(B){o.selection=B}async function ra(B){await o.setPage(B)}function he(B){const v=B?.id??B?.key;return typeof v=="string"||typeof v=="number"?v:null}function ia(B){l("row-click",B);const v=he(B);v!==null&&f.push({name:`admin.resource.${i.slug}.view`,params:{id:String(v)}})}function sa(B,v){v?.stopPropagation();const U=he(B);U!==null&&f.push({name:`admin.resource.${i.slug}.view`,params:{id:String(U)}})}function ca(B,v){v?.stopPropagation();const U=he(B);U!==null&&f.push({name:`admin.resource.${i.slug}.edit`,params:{id:String(U)}})}async function da(B,v){v?.stopPropagation();const U=he(B);if(U!==null&&window.confirm(r("admin.resource.delete_confirm","Удалить запись?")))try{d.start();const{getAdminClient:I}=await Promise.resolve().then(()=>Z);await I().post(`/${i.slug}/delete`,{id:U}),await o.load().catch(()=>{}),G.success(r("admin.resource.deleted","Запись удалена."))}catch(I){typeof console<"u"&&console.error("[admin] delete failed:",I),G.error(r("admin.resource.delete_failed","Не удалось удалить запись."))}finally{d.end()}}function ua(B){return B.deleted_at!==null&&B.deleted_at!==void 0}async function ma(B,v){v?.stopPropagation();const U=he(B);if(U!==null)try{d.start();const{getAdminClient:I}=await Promise.resolve().then(()=>Z);await I().post(`/${i.slug}/restore`,{id:U}),await o.load().catch(()=>{}),G.success(r("admin.resource.restored","Запись восстановлена."))}catch(I){typeof console<"u"&&console.error("[admin] restore failed:",I),G.error(r("admin.resource.restore_failed","Не удалось восстановить запись."))}finally{d.end()}}const pe=e.ref(null),ye=e.ref(null),Fe=e.ref("before");function fa(B,v){if(!V.value||!v.dataTransfer)return;if(!v.target?.closest('[data-row-drag-handle="true"]')){v.preventDefault();return}pe.value=B,v.dataTransfer.effectAllowed="move",v.dataTransfer.setData("text/plain",String(B))}function pa(B,v){if(!V.value||pe.value===null)return;v.preventDefault();const U=v.currentTarget;if(U){const I=U.getBoundingClientRect();Fe.value=v.clientY<I.top+I.height/2?"before":"after"}ye.value=B}function va(){pe.value=null,ye.value=null}async function ha(B,v){if(v.preventDefault(),!V.value||pe.value===null)return;const U=pe.value,I=Fe.value==="after"?B+1:B,L=I>U?I-1:I;if(pe.value=null,ye.value=null,U===L)return;const Y=[...o.items],[Le]=Y.splice(U,1);Y.splice(L,0,Le),o.items=Y;try{d.start();const{getAdminClient:Ce}=await Promise.resolve().then(()=>Z),tt=Ce(),ze=Y.map(Re=>o.rowId(Re));await tt.post(`/${i.slug}/reorder`,{ids:ze}),G.success(r("admin.resource.reorder_saved","Порядок сохранён."))}catch(Ce){typeof console<"u"&&console.error("[admin] reorder failed:",Ce),G.error(r("admin.resource.reorder_failed","Не удалось сохранить порядок.")),await o.load().catch(()=>{})}finally{d.end()}}async function ya(B,v){v?.stopPropagation();const U=he(B);if(U!==null&&window.confirm(r("admin.resource.force_delete_confirm","Удалить запись НАВСЕГДА? Действие необратимо.")))try{d.start();const{getAdminClient:I}=await Promise.resolve().then(()=>Z);await I().post(`/${i.slug}/forceDelete`,{id:U}),await o.load().catch(()=>{}),G.success(r("admin.resource.force_deleted","Запись удалена навсегда."))}catch(I){typeof console<"u"&&console.error("[admin] force-delete failed:",I),G.error(r("admin.resource.force_delete_failed","Не удалось удалить запись навсегда."))}finally{d.end()}}function Ae(B){l("bulk-action",B,[...o.selection])}async function Tt(){await o.load().catch(()=>{})}return(B,v)=>(e.openBlock(),e.createElementBlock("section",Ti,[e.createElementVNode("header",Fi,[e.createElementVNode("div",Ai,[e.createElementVNode("div",Li,[e.createElementVNode("h1",zi,e.toDisplayString(b.value),1),It.value?(e.openBlock(),e.createElementBlock("span",Ri,[v[10]||(v[10]=e.createElementVNode("span",{class:"admin-page__live-dot","aria-hidden":"true"},null,-1)),e.createTextVNode(" "+e.toDisplayString(It.value),1)])):e.createCommentVNode("",!0)]),t.subtitle||P.value?(e.openBlock(),e.createElementBlock("div",Pi,[t.subtitle?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(t.subtitle),1)],64)):e.createCommentVNode("",!0),t.subtitle&&P.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(" · ")],64)):e.createCommentVNode("",!0),P.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.createTextVNode(e.toDisplayString(P.value),1)],64)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)]),e.createElementVNode("div",qi,[e.renderSlot(B.$slots,"actions"),e.createVNode(e.unref(c.UidMenu),null,{trigger:e.withCtx(()=>[e.createVNode(e.unref(c.UidButton),{variant:"ghost",size:"md",class:"admin-page__scope"},{prepend:e.withCtx(()=>[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(ft),size:14},null,8,["icon"])]),append:e.withCtx(()=>[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(Xt),size:14},null,8,["icon"])]),default:e.withCtx(()=>[e.createTextVNode(" "+e.toDisplayString(na.value)+" ",1)]),_:1})]),default:e.withCtx(()=>[e.createVNode(e.unref(c.UidMenuItem),{onClick:Qe},{default:e.withCtx(()=>[e.createTextVNode(" Все "+e.toDisplayString((p.value?.label??t.slug).toLowerCase()),1)]),_:1}),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(ue.value,U=>(e.openBlock(),e.createBlock(e.unref(c.UidMenuItem),{key:U.id,onClick:I=>se(U)},{default:e.withCtx(()=>[e.createElementVNode("span",ji,[e.createElementVNode("span",Oi,[e.createTextVNode(e.toDisplayString(U.name)+" ",1),U.is_default?(e.openBlock(),e.createElementBlock("span",Wi,"default")):e.createCommentVNode("",!0)]),U.owned?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"admin-page__view-delete","aria-label":"Удалить view",onClick:e.withModifiers(I=>A(U,I),["stop"])},[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(_e),size:12},null,8,["icon"])],8,Hi)):e.createCommentVNode("",!0)])]),_:2},1032,["onClick"]))),128))]),_:1}),e.createVNode(e.unref(c.UidMenu),null,{trigger:e.withCtx(()=>[e.createVNode(e.unref(c.UidButton),{variant:"ghost",size:"md","aria-label":"Действия",class:"admin-page__more"},{default:e.withCtx(()=>[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(Zt),size:16},null,8,["icon"])]),_:1})]),default:e.withCtx(()=>[e.createVNode(e.unref(c.UidMenuItem),{onClick:Tt},{default:e.withCtx(()=>[...v[11]||(v[11]=[e.createTextVNode("Обновить",-1)])]),_:1}),e.createVNode(e.unref(c.UidMenuItem),{onClick:v[0]||(v[0]=U=>k("csv"))},{default:e.withCtx(()=>[...v[12]||(v[12]=[e.createTextVNode("Экспорт CSV",-1)])]),_:1}),e.createVNode(e.unref(c.UidMenuItem),{onClick:v[1]||(v[1]=U=>k("json"))},{default:e.withCtx(()=>[...v[13]||(v[13]=[e.createTextVNode("Экспорт JSON",-1)])]),_:1}),e.createVNode(e.unref(c.UidMenuItem),{onClick:v[2]||(v[2]=U=>k("xlsx"))},{default:e.withCtx(()=>[...v[14]||(v[14]=[e.createTextVNode("Экспорт XLSX",-1)])]),_:1}),e.createVNode(e.unref(c.UidMenuItem),{onClick:v[3]||(v[3]=U=>k("pdf"))},{default:e.withCtx(()=>[...v[15]||(v[15]=[e.createTextVNode("Экспорт PDF",-1)])]),_:1}),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(N.value,U=>(e.openBlock(),e.createBlock(e.unref(c.UidMenuItem),{key:U.key,onClick:I=>h(U)},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(U.label),1)]),_:2},1032,["onClick"]))),128)),e.renderSlot(B.$slots,"header-menu")]),_:3}),e.createVNode(e.unref(c.UidButton),{variant:"secondary",size:"md",onClick:w},{prepend:e.withCtx(()=>[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(on),size:14},null,8,["icon"])]),default:e.withCtx(()=>[v[16]||(v[16]=e.createTextVNode(" Import ",-1))]),_:1}),e.createElementVNode("input",{ref_key:"importInput",ref:m,type:"file",class:"admin-page__import-input",accept:".csv,.json,.xlsx,.xls,application/json,text/csv",onChange:C},null,544),u.value?(e.openBlock(),e.createBlock(e.unref(c.UidButton),{key:0,variant:"primary",size:"md",onClick:v[4]||(v[4]=U=>B.$router.push({name:u.value}))},{prepend:e.withCtx(()=>[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(Xe),size:14},null,8,["icon"])]),default:e.withCtx(()=>[e.createTextVNode(" "+e.toDisplayString(t.createLabel),1)]),_:1})):e.createCommentVNode("",!0)])]),e.unref(o).hasSelection?(e.openBlock(),e.createElementBlock("div",Ki,[e.createElementVNode("span",Gi,[v[17]||(v[17]=e.createTextVNode(" Выбрано ",-1)),e.createElementVNode("b",null,e.toDisplayString(e.unref(o).selectedCount),1)]),v[23]||(v[23]=e.createElementVNode("span",{class:"admin-bulk-toolbar__divider"},null,-1)),e.createVNode(e.unref(c.UidButton),{size:"sm",variant:"ghost",onClick:v[5]||(v[5]=U=>Ae("publish"))},{default:e.withCtx(()=>[...v[18]||(v[18]=[e.createTextVNode("Опубликовать",-1)])]),_:1}),e.createVNode(e.unref(c.UidButton),{size:"sm",variant:"ghost",onClick:v[6]||(v[6]=U=>Ae("archive"))},{default:e.withCtx(()=>[...v[19]||(v[19]=[e.createTextVNode("Архивировать",-1)])]),_:1}),e.createVNode(e.unref(c.UidButton),{size:"sm",variant:"ghost",onClick:v[7]||(v[7]=U=>Ae("export"))},{default:e.withCtx(()=>[...v[20]||(v[20]=[e.createTextVNode("Экспорт",-1)])]),_:1}),e.createVNode(e.unref(c.UidButton),{size:"sm",variant:"danger",onClick:v[8]||(v[8]=U=>Ae("delete"))},{default:e.withCtx(()=>[...v[21]||(v[21]=[e.createTextVNode("Удалить",-1)])]),_:1}),v[24]||(v[24]=e.createElementVNode("span",{class:"admin-bulk-toolbar__spacer"},null,-1)),e.createVNode(e.unref(c.UidButton),{size:"sm",variant:"ghost",onClick:e.unref(o).clearSelection},{default:e.withCtx(()=>[...v[22]||(v[22]=[e.createTextVNode(" Снять выделение ",-1)])]),_:1},8,["onClick"])])):W.value?(e.openBlock(),e.createBlock(Ui,{key:1,search:e.unref(o).search,"search-placeholder":ae.value,filters:K.value,values:e.unref(o).filters,columns:fe.value,"group-by":M.value,"column-visibility":$.value,"onUpdate:search":F,onApplyFilter:x,onReset:J,onGroupBy:Q,onColumnsVisibility:ee,onSaveView:z},{extra:e.withCtx(()=>[e.renderSlot(B.$slots,"filters",{filters:e.unref(o).filters,setFilter:e.unref(o).setFilter})]),_:3},8,["search","search-placeholder","filters","values","columns","group-by","column-visibility"])):e.createCommentVNode("",!0),e.unref(o).loading&&e.unref(o).items.length===0?(e.openBlock(),e.createElementBlock("div",Xi,[e.unref(o).slowLoading?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},e.renderList(8,U=>e.createVNode(e.unref(c.UidSkeleton),{key:U,height:"40px"})),64)):e.createCommentVNode("",!0)])):e.unref(o).hasError?(e.openBlock(),e.createBlock(e.unref(c.UidErrorState),{key:3,title:"Не удалось загрузить данные",description:e.unref(o).error?.message??"Попробуйте обновить страницу.",class:"admin-resource-index__state"},{actions:e.withCtx(()=>[e.createVNode(e.unref(c.UidButton),{variant:"primary",onClick:Tt},{default:e.withCtx(()=>[...v[25]||(v[25]=[e.createTextVNode("Обновить",-1)])]),_:1})]),_:1},8,["description"])):e.unref(o).isEmpty?(e.openBlock(),e.createBlock(e.unref(c.UidEmptyState),{key:4,title:"Пока пусто",description:"Создайте первую запись или измените фильтры.",class:"admin-resource-index__state"},{actions:e.withCtx(()=>[t.createRouteName?(e.openBlock(),e.createBlock(e.unref(c.UidButton),{key:0,variant:"primary",onClick:v[9]||(v[9]=U=>B.$router.push({name:t.createRouteName}))},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(t.createLabel),1)]),_:1})):e.createCommentVNode("",!0)]),_:1})):(e.openBlock(),e.createElementBlock("div",Yi,[e.createVNode(e.unref(c.UidTable),{columns:D.value,data:e.unref(o).items,"sort-key":e.unref(o).sortKey,"sort-direction":e.unref(o).sortDirection,selectable:"",selection:e.unref(o).selection,"row-key":U=>e.unref(o).rowId(U),"onUpdate:sortKey":aa,"onUpdate:sortDirection":oa,"onUpdate:selection":la,onRowClick:ia},e.createSlots({_:2},[e.renderList(D.value,U=>({name:U.key,fn:e.withCtx(I=>[U.key===Wt?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass(["admin-resource-index__row-drag",{"admin-resource-index__row-drag--drop-before":ye.value!==null&&ye.value===e.unref(o).items.indexOf(T(I)??{})&&Fe.value==="before","admin-resource-index__row-drag--drop-after":ye.value!==null&&ye.value===e.unref(o).items.indexOf(T(I)??{})&&Fe.value==="after","admin-resource-index__row-drag--ghost":pe.value!==null&&pe.value===e.unref(o).items.indexOf(T(I)??{})}]),"data-row-drag-handle":"true",draggable:V.value,title:"Перетащить",onDragstart:L=>fa(e.unref(o).items.indexOf(T(I)??{}),L),onDragover:L=>pa(e.unref(o).items.indexOf(T(I)??{}),L),onDragend:va,onDrop:L=>ha(e.unref(o).items.indexOf(T(I)??{}),L)},[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(Qt),size:14},null,8,["icon"])],42,Zi)):U.key===Ot?(e.openBlock(),e.createElementBlock("div",Ji,[e.createElementVNode("button",{type:"button",class:"admin-resource-index__row-action",title:"Просмотр",onClick:e.withModifiers(L=>sa(T(I)??{},L),["stop"])},[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(La),size:16},null,8,["icon"])],8,Qi),ua(T(I)??{})?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("button",{type:"button",class:"admin-resource-index__row-action",title:"Восстановить",onClick:e.withModifiers(L=>ma(T(I)??{},L),["stop"])},[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(vt),size:16},null,8,["icon"])],8,ns),e.createElementVNode("button",{type:"button",class:"admin-resource-index__row-action admin-resource-index__row-action--danger",title:"Удалить навсегда",onClick:e.withModifiers(L=>ya(T(I)??{},L),["stop"])},[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(_e),size:16},null,8,["icon"])],8,as)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("button",{type:"button",class:"admin-resource-index__row-action",title:"Редактировать",onClick:e.withModifiers(L=>ca(T(I)??{},L),["stop"])},[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(pt),size:16},null,8,["icon"])],8,es),e.createElementVNode("button",{type:"button",class:"admin-resource-index__row-action admin-resource-index__row-action--danger",title:"Удалить",onClick:e.withModifiers(L=>da(T(I)??{},L),["stop"])},[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(_e),size:16},null,8,["icon"])],8,ts)],64))])):e.renderSlot(B.$slots,`cell-${U.key}`,{key:2,row:T(I)},()=>[y(U.key)?(e.openBlock(),e.createBlock(Ii,{key:0,"resource-slug":t.slug,"row-id":he(T(I)??{})??"",column:U.key,value:(T(I)??{})[U.key],editable:!0,onSaved:L=>{const Y=T(I);Y&&(Y[U.key]=L)}},{default:e.withCtx(()=>[e.createElementVNode("span",os,e.toDisplayString(_(U.key,I)),1)]),_:2},1032,["resource-slug","row-id","column","value","onSaved"])):(e.openBlock(),e.createElementBlock("span",{key:1,class:"admin-cell-truncate",title:_(U.key,I)},e.toDisplayString(_(U.key,I)),9,ls))])])}))]),1032,["columns","data","sort-key","sort-direction","selection","row-key"])])),!e.unref(o).loading&&!e.unref(o).hasError&&!e.unref(o).isEmpty?(e.openBlock(),e.createElementBlock("footer",rs,[e.createVNode(e.unref(c.UidPagination),{"model-value":e.unref(o).meta.page,total:e.unref(o).meta.total,"per-page":e.unref(o).meta.per_page,"onUpdate:modelValue":ra},null,8,["model-value","total","per-page"])])):e.createCommentVNode("",!0)]))}}),Ct=ie.defineStore("admin-resource-form",()=>{const t=e.ref(null),n=e.ref("create"),a=e.ref(null),r=e.ref({}),i=e.ref({}),l=e.ref({}),o=e.ref(!1),s=e.ref(!1),d=e.ref(!1),f=e.ref(null),p=e.computed(()=>n.value==="create"),b=e.computed(()=>n.value==="edit"),u=e.computed(()=>n.value==="view"),N=e.computed(()=>f.value!==null),h=e.computed(()=>{const _=r.value,T=i.value,R=new Set([...Object.keys(_),...Object.keys(T)]);for(const W of R)if(!Object.is(_[W],T[W]))if(typeof _[W]=="object"||typeof T[W]=="object"){if(JSON.stringify(_[W])!==JSON.stringify(T[W]))return!0}else return!0;return!1});function k(_,T){for(const R of Object.keys(_))delete _[R];Object.assign(_,T)}function m(){k(r.value,{}),k(i.value,{}),l.value={},o.value=!1,s.value=!1,d.value=!1,f.value=null,a.value=null}function w(_,T={}){t.value=_,n.value="create",a.value=null,k(r.value,T),k(i.value,T),l.value={},f.value=null}async function C(_,T,R="edit"){t.value=_,n.value=R,a.value=T,o.value=!0,f.value=null,l.value={};try{const K=await H().get(`/${_}/read`,{params:{id:T}});k(r.value,K.record),k(i.value,K.record)}catch(W){throw f.value=W instanceof Error?W:new Error(String(W)),W}finally{o.value=!1}}function E(_,T){if(r.value[_]=T,l.value[_]){const R={...l.value};delete R[_],l.value=R}}function V(_){l.value={..._}}function D(){l.value={}}async function y(){if(!t.value)throw new Error("useResourceFormStore.save() before slug set");if(s.value)throw new Error("Already saving");s.value=!0,f.value=null,l.value={};try{const _=H(),T=n.value==="create"?`/${t.value}/create`:`/${t.value}/update`,R=n.value==="create"?r.value:{id:a.value,...r.value},W=await _.post(T,R),K=W.record?.id??W.id;if(K===void 0)throw new Error("save: backend response does not contain record.id");return a.value=K,k(i.value,{...r.value}),n.value="edit",K}catch(_){throw _ instanceof Me?l.value={..._.fields}:(_ instanceof de||_ instanceof Error)&&(f.value=_),_}finally{s.value=!1}}async function g(){if(!t.value||a.value===null)throw new Error("Nothing to delete");if(d.value)throw new Error("Already deleting");d.value=!0,f.value=null;try{await H().post(`/${t.value}/delete`,{id:a.value})}catch(_){throw _ instanceof Error&&(f.value=_),_}finally{d.value=!1}}return{slug:t,mode:n,recordId:a,state:r,initial:i,errors:l,loading:o,saving:s,deleting:d,error:f,isCreate:p,isEdit:b,isView:u,isDirty:h,hasError:N,reset:m,prepareCreate:w,load:C,setField:E,setErrors:V,clearErrors:D,save:y,destroy:g}}),Be=Je(),Ve=Je(),is=Be.register,Et=Be.get,ss=Be.has,cs=Be.list,ds=Ve.register,it=Ve.get,us=Ve.has,ms=Ve.list;function fs(){Be.clear(),Ve.clear()}function Mn(t){t.fields&&Be.registerBundle(t.fields),t.layouts&&Ve.registerBundle(t.layouts)}const $t=e.defineComponent({__name:"UnknownField",props:{type:{},name:{}},setup(t){return(n,a)=>(e.openBlock(),e.createBlock(e.unref(c.UidAlert),{variant:"warning"},{title:e.withCtx(()=>[e.createTextVNode("Неизвестный тип поля: "+e.toDisplayString(t.type),1)]),default:e.withCtx(()=>[t.name?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("code",null,e.toDisplayString(t.name),1),a[0]||(a[0]=e.createTextVNode(" — зарегистрируйте field-компонент через ",-1)),e.createElementVNode("code",null,"registerField('"+e.toDisplayString(t.type)+"', YourComponent)",1),a[1]||(a[1]=e.createTextVNode(". ",-1))],64)):e.createCommentVNode("",!0)]),_:1}))}}),St=e.defineComponent({__name:"FieldRenderer",props:{node:{}},setup(t){const n=t,a=e.computed(()=>Et(n.node.type)),r=e.computed(()=>{const{type:i,attributes:l,...o}=n.node;return{...o,...l??{}}});return(i,l)=>a.value?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(a.value),e.normalizeProps(e.mergeProps({key:0},r.value)),null,16)):(e.openBlock(),e.createBlock($t,{key:1,type:t.node.type,name:t.node.name},null,8,["type","name"]))}}),xe=e.defineComponent({__name:"LayoutRenderer",props:{node:{}},setup(t){const n=t,a=e.computed(()=>{if(n.node.kind==="field")return{kind:"field"};if(n.node.kind==="layout"){const o=it(n.node.type);return o?{kind:"layout",component:o}:{kind:"unknown"}}const l=it(n.node.type);return l?{kind:"layout",component:l}:Et(n.node.type)?{kind:"field"}:{kind:"unknown"}}),r=e.computed(()=>{const{type:l,kind:o,...s}=n.node;return s}),i=e.computed(()=>n.node);return(l,o)=>a.value.kind==="layout"&&a.value.component?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(a.value.component),e.normalizeProps(e.mergeProps({key:0},r.value)),null,16)):a.value.kind==="field"?(e.openBlock(),e.createBlock(St,{key:1,node:i.value},null,8,["node"])):(e.openBlock(),e.createBlock($t,{key:2,type:t.node.type,name:t.node.name},null,8,["type","name"]))}}),ps={class:"admin-page admin-resource-form"},vs={class:"admin-page__hd"},hs={class:"admin-page__title-wrap"},ys={class:"admin-page__title"},gs={class:"admin-page__actions"},ks={key:1,class:"admin-resource-form__loading"},_s={key:3,class:"admin-resource-form__savebar"},st=e.defineComponent({__name:"ResourceFormPage",props:{slug:{},id:{default:null},indexRouteName:{default:null}},setup(t){const n=t,a=Ct(),r=ce(),i=X.useRouter(),l=ne.provideFormState(a.state,a.errors);e.watch(()=>a.errors,k=>{l.setErrors({...k})});const o=e.computed(()=>r.getResource(n.slug)),s=e.computed(()=>o.value?.fields??[]),d=e.computed(()=>a.isCreate?`Создать: ${o.value?.label??n.slug}`:`${o.value?.label??n.slug}: запись #${n.id}`),f=e.computed(()=>{const k=a.state.status;return typeof k=="string"?k:null}),p=e.computed(()=>{switch(f.value){case"published":return"success";case"review":case"draft":return"warning";case"archived":return"danger";default:return"default"}});e.onMounted(async()=>{r.manifest===null&&await r.load().catch(()=>{}),n.id!==null&&n.id!==void 0?await a.load(n.slug,n.id,"edit").catch(()=>{}):a.prepareCreate(n.slug)}),e.watch(()=>[n.slug,n.id],async([k,m])=>{m!=null?await a.load(k,m,"edit").catch(()=>{}):a.prepareCreate(k)});async function b(){try{const k=await a.save();a.isCreate&&i.push({name:`admin.resource.${n.slug}.edit`,params:{id:k}}).catch(()=>{})}catch{}}const u=e.computed(()=>n.indexRouteName??`admin.resource.${n.slug}.index`);async function N(){confirm("Удалить запись?")&&(await a.destroy().catch(()=>{}),a.hasError||i.push({name:u.value}).catch(()=>{}))}function h(){a.isDirty&&!confirm("Несохранённые изменения будут потеряны. Продолжить?")||i.push({name:u.value}).catch(()=>{})}return(k,m)=>(e.openBlock(),e.createElementBlock("section",ps,[e.createElementVNode("header",vs,[e.createElementVNode("div",hs,[e.createElementVNode("a",{class:"admin-resource-form__back",onClick:h},"← Назад"),e.createElementVNode("h1",ys,e.toDisplayString(d.value),1),f.value?(e.openBlock(),e.createBlock(e.unref(c.UidBadge),{key:0,variant:p.value},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(f.value),1)]),_:1},8,["variant"])):e.createCommentVNode("",!0)]),e.createElementVNode("div",gs,[e.createVNode(e.unref(c.UidButton),{variant:"ghost",disabled:e.unref(a).saving||e.unref(a).deleting,onClick:h},{default:e.withCtx(()=>[...m[0]||(m[0]=[e.createTextVNode(" Отмена ",-1)])]),_:1},8,["disabled"]),e.unref(a).isEdit?(e.openBlock(),e.createBlock(e.unref(c.UidButton),{key:0,variant:"danger",disabled:e.unref(a).saving||e.unref(a).deleting,loading:e.unref(a).deleting,onClick:N},{default:e.withCtx(()=>[...m[1]||(m[1]=[e.createTextVNode(" Удалить ",-1)])]),_:1},8,["disabled","loading"])):e.createCommentVNode("",!0),e.createVNode(e.unref(c.UidButton),{variant:"primary",disabled:e.unref(a).saving||e.unref(a).loading,loading:e.unref(a).saving,onClick:b},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(a).isCreate?"Создать":"Сохранить"),1)]),_:1},8,["disabled","loading"])])]),e.unref(a).hasError?(e.openBlock(),e.createBlock(e.unref(c.UidAlert),{key:0,variant:"danger",class:"admin-resource-form__alert",role:"alert"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(a).error?.message??"Не удалось сохранить запись"),1)]),_:1})):e.createCommentVNode("",!0),e.unref(a).loading?(e.openBlock(),e.createElementBlock("div",ks,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(6,w=>e.createVNode(e.unref(c.UidSkeleton),{key:w,height:"40px"})),64))])):(e.openBlock(),e.createBlock(e.unref(c.UidCard),{key:2,padding:"md",class:"admin-resource-form__body"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,(w,C)=>(e.openBlock(),e.createBlock(xe,{key:C,node:w},null,8,["node"]))),128))]),_:1})),e.unref(a).isDirty&&!e.unref(a).loading?(e.openBlock(),e.createElementBlock("div",_s,[m[4]||(m[4]=e.createElementVNode("span",{class:"admin-resource-form__savebar-hint"}," Есть несохранённые изменения ",-1)),e.createVNode(e.unref(c.UidButton),{variant:"ghost",size:"sm",onClick:h},{default:e.withCtx(()=>[...m[2]||(m[2]=[e.createTextVNode("Отмена",-1)])]),_:1}),e.createVNode(e.unref(c.UidButton),{variant:"primary",size:"sm",loading:e.unref(a).saving,disabled:e.unref(a).saving,onClick:b},{default:e.withCtx(()=>[...m[3]||(m[3]=[e.createTextVNode(" Сохранить ",-1)])]),_:1},8,["loading","disabled"])])):e.createCommentVNode("",!0)]))}}),Ne=Je(),bs=Ne.register,ct=Ne.get,ws=Ne.has,Bs=Ne.list,Vs=Ne.clear,Dn=Ne.registerBundle,In=e.defineComponent({__name:"UnknownEntry",props:{type:{},name:{}},setup(t){return(n,a)=>(e.openBlock(),e.createBlock(e.unref(c.UidAlert),{variant:"warning"},{title:e.withCtx(()=>[e.createTextVNode("Неизвестный тип infolist-entry: "+e.toDisplayString(t.type),1)]),default:e.withCtx(()=>[a[0]||(a[0]=e.createTextVNode(" Зарегистрируйте через ",-1)),e.createElementVNode("code",null,"registerInfolistEntry('"+e.toDisplayString(t.type)+"', YourComponent)",1),a[1]||(a[1]=e.createTextVNode(". ",-1))]),_:1}))}}),xs={key:1,class:"admin-infolist-rows"},Ns={key:2,class:"admin-infolist-cols"},Cs={key:3,class:"admin-infolist-section"},Es={key:0,class:"admin-infolist-section__hd"},$s={key:0,class:"admin-infolist-section__title"},Ss={key:1,class:"admin-infolist-section__description"},Us={class:"admin-infolist-section__body"},Ms={key:4,class:"admin-infolist-tabs"},Ds={class:"admin-infolist-tabs__list",role:"tablist"},Is={class:"admin-infolist-tabs__panel"},Tn=e.defineComponent({__name:"InfolistRenderer",props:{node:{}},setup(t){const n=t,a=new Set(["rows","columns","section","block","tabs"]),r=e.computed(()=>{if(n.node.kind==="entry"){const b=ct(n.node.type);return b?{kind:"entry",component:b}:{kind:"unknown"}}if(n.node.kind==="layout")return a.has(n.node.type)?{kind:"layout",layoutType:n.node.type}:{kind:"unknown"};if(a.has(n.node.type))return{kind:"layout",layoutType:n.node.type};const p=ct(n.node.type);return p?{kind:"entry",component:p}:{kind:"unknown"}}),i=e.computed(()=>{const{type:p,kind:b,items:u,attributes:N,...h}=n.node,k=N??{},{preset:m,format:w,currency:C,decimals:E,trueLabel:V,falseLabel:D,...y}=k,g={};return w!==void 0&&(g.format=w),C!==void 0&&(g.currency=C),E!==void 0&&(g.decimals=E),V!==void 0&&(g.trueLabel=V),D!==void 0&&(g.falseLabel=D),{...h,...y,preset:m,meta:g}}),l=e.computed(()=>n.node.items??[]),o=e.computed(()=>n.node.title??null),s=e.computed(()=>n.node.description??null),d=e.computed(()=>{const p=n.node.active;return typeof p=="number"?p:0}),f=e.computed(()=>n.node.items??[]);return(p,b)=>{const u=e.resolveComponent("InfolistRenderer",!0);return r.value.kind==="entry"?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(r.value.component),e.normalizeProps(e.mergeProps({key:0},i.value)),null,16)):r.value.kind==="layout"&&r.value.layoutType==="rows"?(e.openBlock(),e.createElementBlock("div",xs,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value,(N,h)=>(e.openBlock(),e.createBlock(u,{key:h,node:N},null,8,["node"]))),128))])):r.value.kind==="layout"&&r.value.layoutType==="columns"?(e.openBlock(),e.createElementBlock("div",Ns,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value,(N,h)=>(e.openBlock(),e.createElementBlock("div",{key:h,class:"admin-infolist-cols__item",style:e.normalizeStyle({gridColumn:`span ${typeof N.span=="number"?N.span:Math.max(1,Math.floor(12/l.value.length))}`})},[e.createVNode(u,{node:N},null,8,["node"])],4))),128))])):r.value.kind==="layout"&&(r.value.layoutType==="section"||r.value.layoutType==="block")?(e.openBlock(),e.createElementBlock("section",Cs,[o.value||s.value?(e.openBlock(),e.createElementBlock("header",Es,[o.value?(e.openBlock(),e.createElementBlock("h3",$s,e.toDisplayString(o.value),1)):e.createCommentVNode("",!0),s.value?(e.openBlock(),e.createElementBlock("p",Ss,e.toDisplayString(s.value),1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.createElementVNode("div",Us,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value,(N,h)=>(e.openBlock(),e.createBlock(u,{key:h,node:N},null,8,["node"]))),128))])])):r.value.kind==="layout"&&r.value.layoutType==="tabs"?(e.openBlock(),e.createElementBlock("div",Ms,[e.createElementVNode("ul",Ds,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(f.value,(N,h)=>(e.openBlock(),e.createElementBlock("li",{key:N.key??h,class:e.normalizeClass(["admin-infolist-tabs__tab",{"admin-infolist-tabs__tab--active":h===d.value}])},e.toDisplayString(N.label),3))),128))]),e.createElementVNode("div",Is,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(f.value[d.value]?.items??[],(N,h)=>(e.openBlock(),e.createBlock(u,{key:h,node:N},null,8,["node"]))),128))])])):(e.openBlock(),e.createBlock(In,{key:5,type:t.node.type,name:t.node.name},null,8,["type","name"]))}}}),Ut=Symbol("admin.infolist-record");function Fn(t){e.provide(Ut,t)}function Ts(){const t=e.inject(Ut);if(!t)throw new Error("useRecord() called outside of provideRecord() scope");return t}function Ie(){return e.inject(Ut,null)}const Fs={class:"admin-audit-timeline"},As={key:0,class:"admin-audit-timeline__loading"},Ls={key:1,class:"admin-audit-timeline__error"},zs={key:2,class:"admin-audit-timeline__empty"},Rs={key:3,class:"admin-audit-timeline__list"},Ps={class:"admin-audit-timeline__icon","aria-hidden":"true"},qs={class:"admin-audit-timeline__body"},js={class:"admin-audit-timeline__row"},Os={class:"admin-audit-timeline__actor"},Ws={class:"admin-audit-timeline__verb"},Hs={class:"admin-audit-timeline__when"},Ks={key:0,class:"admin-audit-timeline__detail"},Gs=e.defineComponent({__name:"AuditTimeline",props:{subjectType:{},subjectId:{}},setup(t){const n=t,a=e.ref([]),r=e.ref(!1),i=e.ref(null);async function l(){if(!n.subjectType||n.subjectType===""){a.value=[],r.value=!1,i.value=null;return}r.value=!0,i.value=null;try{const{getAdminClient:u}=await Promise.resolve().then(()=>Z),h=await u().get(`/audit/timeline?subject_type=${encodeURIComponent(n.subjectType)}&subject_id=${encodeURIComponent(String(n.subjectId))}`);a.value=h.data??[]}catch(u){i.value=u instanceof Error?u:new Error(String(u)),a.value=[]}finally{r.value=!1}}e.onMounted(l),e.watch(()=>[n.subjectType,n.subjectId],l);const o=e.computed(()=>a.value.length>0);function s(u){return u==="created"?Xe:u==="deleted"||u==="destroyed"?_e:u.includes("tag")||u.includes("label")?an:xo}function d(u){return{created:"создал",updated:"отредактировал",deleted:"удалил",destroyed:"удалил",restored:"восстановил",published:"опубликовал"}[u]??u}function f(u){const N=new Date(u).getTime();if(Number.isNaN(N))return"";const h=(Date.now()-N)/1e3;return h<60?`${Math.max(1,Math.floor(h))} сек назад`:h<3600?`${Math.floor(h/60)} мин назад`:h<86400?`${Math.floor(h/3600)} ч назад`:h<86400*30?`${Math.floor(h/86400)} д назад`:new Date(u).toLocaleDateString("ru-RU")}function p(u){if(u.summary)return u.summary;if(!u.diff||u.diff.length===0)return"";if(u.diff.length===1){const h=u.diff[0];return`Поле ${h.field}: ${b(h.before)} → ${b(h.after)}`}const N=u.diff.slice(0,4).map(h=>h.field).join(", ");return`Изменены ${u.diff.length} поля: ${N}`}function b(u){return u==null?"∅":typeof u=="string"?u.length>20?`${u.slice(0,20)}…`:u:String(u)}return(u,N)=>(e.openBlock(),e.createElementBlock("section",Fs,[N[0]||(N[0]=e.createElementVNode("h2",{class:"admin-audit-timeline__title"},"История изменений",-1)),r.value?(e.openBlock(),e.createElementBlock("div",As,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(3,h=>e.createVNode(e.unref(c.UidSkeleton),{key:h,height:"48px"})),64))])):i.value?(e.openBlock(),e.createElementBlock("div",Ls," Не удалось загрузить историю: "+e.toDisplayString(i.value.message),1)):o.value?(e.openBlock(),e.createElementBlock("ol",Rs,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,h=>(e.openBlock(),e.createElementBlock("li",{key:h.id,class:"admin-audit-timeline__item"},[e.createElementVNode("span",Ps,[e.createVNode(e.unref(c.UidIcon),{icon:s(h.event),size:14},null,8,["icon"])]),e.createElementVNode("div",qs,[e.createElementVNode("div",js,[e.createVNode(e.unref(c.UidAvatar),{name:h.actor?.name??"?",alt:h.actor?.name??"Неизвестный",size:"xs"},null,8,["name","alt"]),e.createElementVNode("span",Os,e.toDisplayString(h.actor?.name??"Система"),1),e.createElementVNode("span",Ws,e.toDisplayString(d(h.event)),1),e.createElementVNode("span",Hs,e.toDisplayString(f(h.created_at)),1)]),p(h)?(e.openBlock(),e.createElementBlock("div",Ks,e.toDisplayString(p(h)),1)):e.createCommentVNode("",!0)])]))),128))])):(e.openBlock(),e.createElementBlock("div",zs," Записей в истории пока нет. "))]))}}),Xs={class:"admin-page admin-resource-view"},Ys={class:"admin-resource-view__hd"},Zs={class:"admin-resource-view__hd-left"},Js={class:"admin-page__title"},Qs={class:"admin-resource-view__meta"},ec=["data-variant","data-status"],tc={class:"admin-resource-view__uid"},nc={class:"admin-resource-view__hd-right"},ac={key:1,class:"admin-resource-view__loading"},oc={key:2,class:"admin-resource-view__grid"},lc={class:"admin-resource-view__main"},rc={class:"admin-resource-view__aside"},ic={class:"admin-resource-view__metrics"},sc={class:"admin-resource-view__metric-label"},cc={class:"admin-resource-view__metric-value"},An=e.defineComponent({__name:"ResourceViewPage",props:{slug:{},id:{},editRouteName:{default:void 0},indexRouteName:{default:null},auditSubjectType:{default:null},statusField:{default:"status"},uidPrefix:{default:"#"}},setup(t){const n=t,a=Ct(),r=ce(),i=X.useRouter();Fn(a.state);const l=e.computed(()=>r.getResource(n.slug)),o=e.computed(()=>l.value?.infolist??l.value?.fields??[]),s=e.computed(()=>n.auditSubjectType!==null?n.auditSubjectType:l.value?.subject_type??null),d=e.computed(()=>{const D=a.state,y=[],g=W=>{if(typeof W!="string"||W==="")return null;const K=new Date(W);return Number.isNaN(K.getTime())?null:K.toLocaleString("ru-RU",{day:"2-digit",month:"2-digit",year:"numeric",hour:"2-digit",minute:"2-digit"})},_=g(D.created_at);_&&y.push({label:"Создано",value:_});const T=g(D.updated_at);T&&T!==_&&y.push({label:"Обновлено",value:T});const R=typeof D.created_by_name=="string"&&D.created_by_name!==""?D.created_by_name:typeof D.author=="string"?D.author:null;return R&&y.push({label:"Автор",value:R}),y}),f=e.computed(()=>{const D=a.state,y=D.title??D.name??D.label;return typeof y=="string"&&y.length>0?y:`${l.value?.label??n.slug}: запись #${n.id}`}),p=e.computed(()=>l.value?.label??n.slug),b=e.computed(()=>`${n.uidPrefix}${n.id}`),u=e.computed(()=>{const y=a.state[n.statusField];return typeof y=="string"&&y.length>0?y:null}),N={published:"success",active:"success",enabled:"success",draft:"neutral",pending:"warning",review:"warning",archived:"muted",disabled:"muted",inactive:"muted",deleted:"danger",failed:"danger",error:"danger"};function h(D){return N[D.toLowerCase()]??"neutral"}const k=e.computed(()=>(l.value?.actions??[]).map(y=>({key:String(y.key??y.name??""),label:String(y.label??y.name??y.key??""),confirm:typeof y.confirm=="string"?y.confirm:void 0})).filter(y=>y.key!==""&&y.label!==""));async function m(D){if(!(D.confirm&&!window.confirm(D.confirm)))try{const{getAdminClient:y}=await Promise.resolve().then(()=>Z);await y().post(`/${n.slug}/action/${D.key}`,{ids:[n.id]}),await a.load(n.slug,n.id,"view").catch(()=>{})}catch(y){typeof console<"u"&&console.error("[admin] action failed:",y)}}e.onMounted(async()=>{r.manifest===null&&await r.load().catch(()=>{}),await a.load(n.slug,n.id,"view").catch(()=>{})}),e.watch(()=>[n.slug,n.id],async([D,y])=>{await a.load(D,y,"view").catch(()=>{})});const w=e.computed(()=>n.indexRouteName??`admin.resource.${n.slug}.index`);function C(){i.push({name:w.value}).catch(()=>{i.push(`/r/${n.slug}`)})}function E(){if(!n.editRouteName){i.push(`/r/${n.slug}/${n.id}/edit`).catch(()=>{});return}i.push({name:n.editRouteName,params:{id:n.id}}).catch(()=>{})}async function V(){confirm("Удалить запись?")&&(await a.destroy().catch(()=>{}),a.hasError||i.push({name:w.value}).catch(()=>{}))}return(D,y)=>(e.openBlock(),e.createElementBlock("section",Xs,[e.createElementVNode("header",Ys,[e.createElementVNode("div",Zs,[e.createElementVNode("button",{type:"button",class:"admin-resource-view__back",onClick:C},[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(Va),size:14},null,8,["icon"]),e.createTextVNode(" "+e.toDisplayString(p.value),1)]),e.createElementVNode("h1",Js,e.toDisplayString(f.value),1),e.createElementVNode("div",Qs,[u.value?(e.openBlock(),e.createElementBlock("span",{key:0,class:"admin-status-badge","data-variant":h(u.value),"data-status":u.value},[y[0]||(y[0]=e.createElementVNode("span",{class:"admin-status-badge__dot","aria-hidden":"true"},null,-1)),e.createTextVNode(" "+e.toDisplayString(u.value),1)],8,ec)):e.createCommentVNode("",!0),e.createElementVNode("span",tc,e.toDisplayString(b.value),1)])]),e.createElementVNode("div",nc,[e.createVNode(e.unref(c.UidButton),{variant:"secondary",size:"md",onClick:E},{prepend:e.withCtx(()=>[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(pt),size:14},null,8,["icon"])]),default:e.withCtx(()=>[y[1]||(y[1]=e.createTextVNode(" Редактировать ",-1))]),_:1}),e.createVNode(e.unref(c.UidMenu),null,{trigger:e.withCtx(()=>[e.createVNode(e.unref(c.UidButton),{variant:"ghost",size:"md","aria-label":"Действия",class:"admin-page__more"},{default:e.withCtx(()=>[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(Zt),size:16},null,8,["icon"])]),_:1})]),default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(k.value,g=>(e.openBlock(),e.createBlock(e.unref(c.UidMenuItem),{key:g.key,onClick:_=>m(g)},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(g.label),1)]),_:2},1032,["onClick"]))),128)),e.createVNode(e.unref(c.UidMenuItem),{variant:"danger",onClick:V},{icon:e.withCtx(()=>[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(_e),size:14},null,8,["icon"])]),default:e.withCtx(()=>[y[2]||(y[2]=e.createTextVNode(" Удалить ",-1))]),_:1})]),_:1})])]),e.unref(a).hasError?(e.openBlock(),e.createBlock(e.unref(c.UidAlert),{key:0,variant:"danger",class:"admin-resource-view__alert",role:"alert"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(a).error?.message??"Не удалось загрузить запись"),1)]),_:1})):e.createCommentVNode("",!0),e.unref(a).loading?(e.openBlock(),e.createElementBlock("div",ac,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(8,g=>e.createVNode(e.unref(c.UidSkeleton),{key:g,height:"24px"})),64))])):(e.openBlock(),e.createElementBlock("div",oc,[e.createElementVNode("div",lc,[e.createVNode(e.unref(c.UidCard),{padding:"md",class:"admin-resource-view__card"},{default:e.withCtx(()=>[y[3]||(y[3]=e.createElementVNode("h2",{class:"admin-resource-view__card-title"},"Основные данные",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,(g,_)=>(e.openBlock(),e.createBlock(Tn,{key:_,node:g},null,8,["node"]))),128))]),_:1}),e.createVNode(e.unref(c.UidCard),{padding:"md",class:"admin-resource-view__card"},{default:e.withCtx(()=>[e.createVNode(Gs,{"subject-type":s.value,"subject-id":t.id},null,8,["subject-type","subject-id"])]),_:1})]),e.createElementVNode("aside",rc,[d.value.length>0?(e.openBlock(),e.createBlock(e.unref(c.UidCard),{key:0,padding:"md",class:"admin-resource-view__card"},{default:e.withCtx(()=>[y[4]||(y[4]=e.createElementVNode("h2",{class:"admin-resource-view__card-title"},"Метрики",-1)),e.createElementVNode("dl",ic,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.value,g=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:g.label},[e.createElementVNode("dt",sc,e.toDisplayString(g.label),1),e.createElementVNode("dd",cc,e.toDisplayString(g.value),1)],64))),128))])]),_:1})):e.createCommentVNode("",!0),e.renderSlot(D.$slots,"sidebar",{record:e.unref(a).state,resource:l.value})])]))]))}}),dc={class:"admin-page admin-profile"},uc={class:"admin-page__hd"},mc={class:"admin-page__title-wrap"},fc={class:"admin-page__title"},pc={class:"admin-page__count"},vc={class:"admin-profile__layout"},hc={class:"admin-profile__nav","aria-label":"Profile sections"},yc=["onClick"],gc=["data-icon"],kc={class:"admin-profile__content"},_c={class:"admin-profile__hero"},bc={class:"admin-profile__hero-text"},wc={class:"admin-profile__hero-name"},Bc={class:"admin-profile__hero-meta"},Vc={class:"admin-profile__form"},xc={class:"admin-profile__card-ft"},Nc={class:"admin-profile__card-hd"},Cc={key:0,class:"admin-profile__hint"},Ec={key:1,class:"admin-profile__hint"},$c={class:"admin-profile__card-ft"},Sc={class:"admin-profile__hint"},Ln=e.defineComponent({__name:"ProfilePage",props:{title:{default:"Profile"},subtitle:{default:"Личные данные, безопасность, токены"},section:{default:"general"}},emits:["update:section","avatar-replace","two-factor-disable","two-factor-regenerate","save"],setup(t,{emit:n}){const a=t,r=n,i=re(),l=Ye(),o=Se(),s=[{id:"general",label:"Основное",icon:"user"},{id:"security",label:"Безопасность",icon:"shield"},{id:"tokens",label:"API токены",icon:"key"},{id:"sessions",label:"Сессии",icon:"monitor"}],d=e.ref(a.section);function f(C){d.value=C,r("update:section",C)}const p=e.ref({name:i.user?.name??"",email:i.user?.email??"",locale:o.current,theme:l.current}),b=e.computed(()=>o.available.map(C=>({value:C,label:C.toUpperCase()}))),u=e.computed(()=>l.available.map(C=>({value:C,label:C==="dark"?"Тёмная":C==="light"?"Светлая":C})));e.watch(()=>p.value.locale,(C,E)=>{C===E||!C||o.setLocale(C).catch(()=>{})}),e.watch(()=>p.value.theme,(C,E)=>{C===E||!C||l.setTheme(C).catch(()=>{})});function N(){r("save",{...p.value})}function h(){r("avatar-replace")}function k(){r("two-factor-disable")}function m(){r("two-factor-regenerate")}const w=e.computed(()=>!!i.user?.twoFactorEnabled);return(C,E)=>(e.openBlock(),e.createElementBlock("section",dc,[e.createElementVNode("header",uc,[e.createElementVNode("div",mc,[e.createElementVNode("h1",fc,e.toDisplayString(t.title),1),e.createElementVNode("div",pc,e.toDisplayString(t.subtitle),1)])]),e.createElementVNode("div",vc,[e.createElementVNode("nav",hc,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(s,V=>e.createElementVNode("button",{key:V.id,type:"button",class:e.normalizeClass(["admin-profile__nav-item",{"admin-profile__nav-item--active":d.value===V.id}]),onClick:D=>f(V.id)},[e.createElementVNode("span",{class:"admin-profile__nav-icon","data-icon":V.icon},null,8,gc),e.createElementVNode("span",null,e.toDisplayString(V.label),1)],10,yc)),64))]),e.createElementVNode("div",kc,[d.value==="general"?(e.openBlock(),e.createBlock(e.unref(c.UidCard),{key:0,padding:"md"},{default:e.withCtx(()=>[E[7]||(E[7]=e.createElementVNode("header",{class:"admin-profile__card-hd"},[e.createElementVNode("h3",{class:"admin-profile__card-title"},"Профиль")],-1)),e.createElementVNode("div",_c,[e.createVNode(e.unref(c.UidAvatar),{src:e.unref(i).user?.avatar??void 0,name:e.unref(i).user?.name??"?",size:"lg"},null,8,["src","name"]),e.createElementVNode("div",bc,[e.createElementVNode("div",wc,e.toDisplayString(e.unref(i).user?.name??"—"),1),e.createElementVNode("div",Bc,e.toDisplayString(e.unref(i).user?.email??"—"),1)]),E[5]||(E[5]=e.createElementVNode("div",{style:{flex:"1"}},null,-1)),e.createVNode(e.unref(c.UidButton),{variant:"ghost",size:"sm",onClick:h},{default:e.withCtx(()=>[...E[4]||(E[4]=[e.createTextVNode(" Заменить ",-1)])]),_:1})]),e.createElementVNode("div",Vc,[e.createVNode(e.unref(c.UidInput),{modelValue:p.value.name,"onUpdate:modelValue":E[0]||(E[0]=V=>p.value.name=V),label:"Имя",name:"name"},null,8,["modelValue"]),e.createVNode(e.unref(c.UidInput),{modelValue:p.value.email,"onUpdate:modelValue":E[1]||(E[1]=V=>p.value.email=V),label:"Email",type:"email",name:"email"},null,8,["modelValue"]),e.createVNode(e.unref(c.UidSelect),{modelValue:p.value.locale,"onUpdate:modelValue":E[2]||(E[2]=V=>p.value.locale=V),options:b.value,label:"Язык"},null,8,["modelValue","options"]),e.createVNode(e.unref(c.UidSelect),{modelValue:p.value.theme,"onUpdate:modelValue":E[3]||(E[3]=V=>p.value.theme=V),options:u.value,label:"Тема"},null,8,["modelValue","options"])]),e.createElementVNode("footer",xc,[e.createVNode(e.unref(c.UidButton),{variant:"primary",onClick:N},{default:e.withCtx(()=>[...E[6]||(E[6]=[e.createTextVNode("Сохранить",-1)])]),_:1})])]),_:1})):d.value==="security"?(e.openBlock(),e.createBlock(e.unref(c.UidCard),{key:1,padding:"md"},{default:e.withCtx(()=>[e.createElementVNode("header",Nc,[E[8]||(E[8]=e.createElementVNode("h3",{class:"admin-profile__card-title"},"Двухфакторная аутентификация",-1)),e.createVNode(e.unref(c.UidBadge),{variant:w.value?"success":"default"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(w.value?"Включена":"Отключена"),1)]),_:1},8,["variant"])]),w.value?(e.openBlock(),e.createElementBlock("p",Cc," 2FA включена. У вас остались recovery-коды на случай потери устройства. ")):(e.openBlock(),e.createElementBlock("p",Ec," Включите 2FA для дополнительной защиты аккаунта. ")),e.createElementVNode("footer",$c,[w.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createVNode(e.unref(c.UidButton),{variant:"ghost",size:"sm",onClick:m},{default:e.withCtx(()=>[...E[9]||(E[9]=[e.createTextVNode(" Перегенерировать коды ",-1)])]),_:1}),e.createVNode(e.unref(c.UidButton),{variant:"danger",size:"sm",onClick:k},{default:e.withCtx(()=>[...E[10]||(E[10]=[e.createTextVNode(" Отключить 2FA ",-1)])]),_:1})],64)):e.renderSlot(C.$slots,"enable-2fa",{key:1},()=>[e.createVNode(e.unref(c.UidButton),{variant:"primary",disabled:""},{default:e.withCtx(()=>[...E[11]||(E[11]=[e.createTextVNode(" Включить 2FA (host customize) ",-1)])]),_:1})])])]),_:3})):e.renderSlot(C.$slots,d.value,{key:2,section:d.value},()=>[e.createVNode(e.unref(c.UidCard),{padding:"md"},{default:e.withCtx(()=>[e.createElementVNode("p",Sc," Section «"+e.toDisplayString(d.value)+"» не реализована библиотекой — host-проект подключает её через slot "+e.toDisplayString(d.value)+". ",1)]),_:1})])])])]))}}),dt=e.defineComponent({__name:"StatWidget",props:{title:{default:""},value:{default:0},prefix:{default:""},suffix:{default:""},trend:{default:void 0},precision:{default:0},tone:{default:"neutral"},loading:{type:Boolean,default:!1}},setup(t){const n=t,a={neutral:"primary",positive:"success",negative:"danger",warning:"warning",info:"info"},r=e.computed(()=>a[n.tone]);return(i,l)=>(e.openBlock(),e.createBlock(e.unref(c.UidStat),{title:t.title,value:t.value,prefix:t.prefix,suffix:t.suffix,trend:t.trend,precision:t.precision,tone:r.value,loading:t.loading},null,8,["title","value","prefix","suffix","trend","precision","tone","loading"]))}}),Uc={key:0,class:"admin-widget__hd"},Mc={key:0,class:"admin-widget__title"},Dc={key:1,class:"admin-widget__desc"},Ic=["viewBox","height","aria-label"],Tc=["x","y","width","height","fill","data-label","data-value"],Mt=e.defineComponent({__name:"BarChartWidget",props:{title:{default:""},description:{default:""},data:{},accent:{default:"var(--uid-accent)"},height:{default:200}},setup(t){const n=t,a=e.computed(()=>Math.max(1,...n.data.map(i=>i.value))),r=e.computed(()=>{const l=100/Math.max(1,n.data.length);return n.data.map((o,s)=>({label:o.label,value:o.value,x:s*l+l*.1,width:l*.8,heightPct:o.value/a.value*100}))});return(i,l)=>(e.openBlock(),e.createBlock(e.unref(c.UidCard),{padding:"md",class:"admin-widget"},{default:e.withCtx(()=>[t.title||t.description?(e.openBlock(),e.createElementBlock("header",Uc,[t.title?(e.openBlock(),e.createElementBlock("h3",Mc,e.toDisplayString(t.title),1)):e.createCommentVNode("",!0),t.description?(e.openBlock(),e.createElementBlock("p",Dc,e.toDisplayString(t.description),1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),(e.openBlock(),e.createElementBlock("svg",{class:"admin-widget-bar-chart",viewBox:`0 0 100 ${t.height}`,preserveAspectRatio:"none",height:t.height,width:"100%",role:"img","aria-label":t.title||"Bar chart"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,(o,s)=>(e.openBlock(),e.createElementBlock("rect",{key:s,x:o.x,y:t.height-o.heightPct/100*t.height,width:o.width,height:o.heightPct/100*t.height,fill:t.accent,rx:"1","data-label":o.label,"data-value":o.value},[e.createElementVNode("title",null,e.toDisplayString(o.label)+": "+e.toDisplayString(o.value),1)],8,Tc))),128))],8,Ic))]),_:1}))}}),Fc={key:0,class:"admin-widget__hd"},Ac={class:"admin-widget__title"},Lc={class:"admin-donut-widget__row"},zc=["aria-label"],Rc=["d","fill"],Pc={class:"admin-donut-widget__legend"},qc={class:"admin-donut-widget__label"},jc={class:"admin-donut-widget__value"},Dt=e.defineComponent({__name:"DonutChartWidget",props:{title:{default:""},data:{}},setup(t){const n=t,a=["var(--uid-color-teal-500, #14b8a6)","var(--uid-color-zinc-700, #3f3f46)","var(--uid-color-amber-400, #fbbf24)","var(--uid-color-rose-400, #fb7185)","var(--uid-color-blue-400, #60a5fa)"],r=e.computed(()=>n.data.reduce((l,o)=>l+o.value,0)||1),i=e.computed(()=>{let l=0;return n.data.map((o,s)=>{const d=l/r.value*2*Math.PI;l+=o.value;const f=l/r.value*2*Math.PI,p=50,b=60,u=60,N=b+p*Math.cos(d-Math.PI/2),h=u+p*Math.sin(d-Math.PI/2),k=b+p*Math.cos(f-Math.PI/2),m=u+p*Math.sin(f-Math.PI/2),w=f-d>Math.PI?1:0,C=n.data.length===1?`M ${b-p} ${u} a ${p} ${p} 0 1 0 ${p*2} 0 a ${p} ${p} 0 1 0 ${-p*2} 0`:`M ${b} ${u} L ${N} ${h} A ${p} ${p} 0 ${w} 1 ${k} ${m} Z`;return{...o,path:C,color:o.color??a[s%a.length],pct:(o.value/r.value*100).toFixed(1)}})});return(l,o)=>(e.openBlock(),e.createBlock(e.unref(c.UidCard),{padding:"md",class:"admin-widget admin-donut-widget"},{default:e.withCtx(()=>[t.title?(e.openBlock(),e.createElementBlock("header",Fc,[e.createElementVNode("h3",Ac,e.toDisplayString(t.title),1)])):e.createCommentVNode("",!0),e.createElementVNode("div",Lc,[(e.openBlock(),e.createElementBlock("svg",{viewBox:"0 0 120 120",class:"admin-donut-widget__svg",role:"img","aria-label":t.title},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,(s,d)=>(e.openBlock(),e.createElementBlock("path",{key:d,d:s.path,fill:s.color},[e.createElementVNode("title",null,e.toDisplayString(s.label)+": "+e.toDisplayString(s.value)+" ("+e.toDisplayString(s.pct)+"%)",1)],8,Rc))),128)),o[0]||(o[0]=e.createElementVNode("circle",{cx:"60",cy:"60",r:"30",fill:"var(--uid-surface-raised)"},null,-1))],8,zc)),e.createElementVNode("ul",Pc,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,(s,d)=>(e.openBlock(),e.createElementBlock("li",{key:d},[e.createElementVNode("span",{class:"admin-donut-widget__dot",style:e.normalizeStyle({background:s.color})},null,4),e.createElementVNode("span",qc,e.toDisplayString(s.label),1),e.createElementVNode("span",jc,e.toDisplayString(s.pct)+"%",1)]))),128))])])]),_:1}))}}),Oc={key:0,class:"admin-widget__hd"},Wc={class:"admin-widget__title"},Oe=e.defineComponent({__name:"RecentTableWidget",props:{title:{default:""},columns:{},rows:{},emptyText:{default:"Нет данных"}},setup(t){return(n,a)=>(e.openBlock(),e.createBlock(e.unref(c.UidCard),{padding:"md",class:"admin-widget"},{default:e.withCtx(()=>[t.title?(e.openBlock(),e.createElementBlock("header",Oc,[e.createElementVNode("h3",Wc,e.toDisplayString(t.title),1)])):e.createCommentVNode("",!0),e.createVNode(e.unref(c.UidTable),{columns:t.columns,data:t.rows,"empty-text":t.emptyText},null,8,["columns","data","empty-text"])]),_:1}))}}),Hc={key:0,class:"admin-widget__hd"},Kc={class:"admin-widget__title"},zn=e.defineComponent({__name:"HeatmapWidget",props:{title:{default:""},data:{},levels:{default:5},color:{default:void 0},gap:{default:2}},setup(t){return(n,a)=>(e.openBlock(),e.createBlock(e.unref(c.UidCard),{padding:"md",class:"admin-widget"},{default:e.withCtx(()=>[t.title?(e.openBlock(),e.createElementBlock("header",Hc,[e.createElementVNode("h3",Kc,e.toDisplayString(t.title),1)])):e.createCommentVNode("",!0),e.createVNode(e.unref(c.UidHeatmap),{data:t.data,levels:t.levels,color:t.color,gap:t.gap},null,8,["data","levels","color","gap"])]),_:1}))}}),Gc={key:0,class:"admin-widget__hd"},Xc={class:"admin-widget__title"},Yc={style:{display:"flex","justify-content":"center"}},Rn=e.defineComponent({__name:"GaugeWidget",props:{title:{default:""},value:{default:0},min:{default:0},max:{default:100},size:{default:160},ranges:{default:()=>[]},tone:{default:"neutral"},color:{default:void 0},label:{default:""},suffix:{default:""},precision:{default:0}},setup(t){const n=t,a={neutral:"primary",positive:"success",warning:"warning",negative:"danger"},r=e.computed(()=>a[n.tone]);return(i,l)=>(e.openBlock(),e.createBlock(e.unref(c.UidCard),{padding:"md",class:"admin-widget"},{default:e.withCtx(()=>[t.title?(e.openBlock(),e.createElementBlock("header",Gc,[e.createElementVNode("h3",Xc,e.toDisplayString(t.title),1)])):e.createCommentVNode("",!0),e.createElementVNode("div",Yc,[e.createVNode(e.unref(c.UidGauge),{value:t.value,min:t.min,max:t.max,size:t.size,ranges:t.ranges,tone:r.value,color:t.color,label:t.label,suffix:t.suffix,precision:t.precision},null,8,["value","min","max","size","ranges","tone","color","label","suffix","precision"])])]),_:1}))}}),Zc={key:0,class:"admin-widget__hd"},Jc={class:"admin-widget__title"},Qc={class:"admin-markdown-widget"},Pn=e.defineComponent({__name:"MarkdownWidget",props:{title:{default:""},content:{}},setup(t){return(n,a)=>(e.openBlock(),e.createBlock(e.unref(c.UidCard),{padding:"md",class:"admin-widget"},{default:e.withCtx(()=>[t.title?(e.openBlock(),e.createElementBlock("header",Zc,[e.createElementVNode("h3",Jc,e.toDisplayString(t.title),1)])):e.createCommentVNode("",!0),e.createElementVNode("div",Qc,e.toDisplayString(t.content),1)]),_:1}))}}),ed=e.defineComponent({__name:"ChartWidget",props:{type:{},title:{},size:{},data:{}},setup(t){const n=t,a=e.computed(()=>n.data?.type??"bar"),r=["#10b981","#f59e0b","#9ca3af","#3b82f6","#dc2626","#a855f7","#ec4899"],i=e.computed(()=>{const s=n.data?.datasets?.[0];return s?s.data.map((d,f)=>({label:n.data?.labels?.[f]??String(f+1),value:d})):[]}),l=e.computed(()=>n.data?.datasets?.[0]?.color),o=e.computed(()=>{const s=n.data?.datasets?.[0];return s?s.data.map((d,f)=>({label:n.data?.labels?.[f]??String(f+1),value:d,color:s.color??r[f%r.length]})):[]});return(s,d)=>a.value==="doughnut"||a.value==="pie"?(e.openBlock(),e.createBlock(Dt,{key:0,title:t.title,data:o.value},null,8,["title","data"])):a.value==="bar"||a.value==="line"||a.value==="area"?(e.openBlock(),e.createBlock(Mt,{key:1,title:t.title,data:i.value,accent:l.value},null,8,["title","data","accent"])):(e.openBlock(),e.createBlock(Vt,{key:2,type:`chart:${a.value}`},null,8,["type"]))}});function qn(){_n({stat:dt,stats:dt,chart:ed,"bar-chart":Mt,"donut-chart":Dt,"recent-table":Oe,recent_list:Oe,"recent-list":Oe,heatmap:zn,gauge:Rn,markdown:Pn})}function jn(t){return t.success===!0}function td(t){return t.success===!1}function On(t){const n=ga.create({baseURL:t.baseURL,withCredentials:!0,headers:{Accept:"application/json","X-Requested-With":"XMLHttpRequest"}});t.csrfToken&&(n.defaults.headers.common["X-CSRF-TOKEN"]=t.csrfToken),t.locale&&(n.defaults.headers.common["X-Admin-Locale"]=t.locale),n.interceptors.request.use(i=>{const l=nd("XSRF-TOKEN");return l&&i.headers.set("X-XSRF-TOKEN",decodeURIComponent(l)),i}),n.interceptors.response.use(i=>{const l=i.data;if(l&&typeof l=="object"&&"success"in l){if(jn(l))return i.data=l.payload,i;throw rt(i.status,l.payload)}return i},i=>{if(i.response){const l=i.response.status,o=i.response.data?.payload??{errorKey:"unknown",message:i.message},s=rt(l,o);return s instanceof _t&&t.onUnauthenticated?.(),Promise.reject(s)}return Promise.reject(new De(i.message))});const a=(i,l,o)=>n[i](l,o).then(s=>s.data),r=(i,l,o,s)=>n[i](l,o,s).then(d=>d.data);return{raw:n,get:(i,l)=>a("get",i,l),delete:(i,l)=>a("delete",i,l),post:(i,l,o)=>r("post",i,l,o),put:(i,l,o)=>r("put",i,l,o),patch:(i,l,o)=>r("patch",i,l,o),setLocale:i=>{n.defaults.headers.common["X-Admin-Locale"]=i}}}function nd(t){if(typeof document>"u")return null;const n=document.cookie.match(new RegExp("(^|; )"+ad(t)+"=([^;]*)"));return n?n[2]:null}function ad(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function je(t,n){const a=t.permissions?.[n];return typeof a=="string"&&a.length>0?[a]:[]}function od(t,n){const a=t.permissions?.[n];return typeof a=="string"&&a.length>0?[a]:[]}function ld(t){return Array.isArray(t.permission)?t.permission:typeof t.permission=="string"&&t.permission.length>0?[t.permission]:[]}function rd(t,n){const a=t.slug,r=`/r/${a}`;return[{path:r,name:`admin.resource.${a}.index`,component:n.resourceIndex,meta:{requiresAuth:!0,kind:"resource",slug:a,title:t.label,permissions:je(t,"view")},props:{slug:a}},{path:`${r}/create`,name:`admin.resource.${a}.create`,component:n.resourceCreate,meta:{requiresAuth:!0,kind:"resource",slug:a,title:`${t.label}: создать`,permissions:je(t,"create")},props:{slug:a}},{path:`${r}/:id/edit`,name:`admin.resource.${a}.edit`,component:n.resourceEdit,meta:{requiresAuth:!0,kind:"resource",slug:a,title:`${t.label}: редактирование`,permissions:je(t,"update")},props:i=>({slug:a,id:i.params.id})},{path:`${r}/:id`,name:`admin.resource.${a}.view`,component:n.resourceView,meta:{requiresAuth:!0,kind:"resource",slug:a,title:t.label,permissions:je(t,"view")},props:i=>({slug:a,id:i.params.id})}]}function id(t,n){return{path:`/screens/${t.slug}`,name:`admin.screen.${t.slug}`,component:n.screen,meta:{requiresAuth:!0,kind:"screen",slug:t.slug,title:t.name,permissions:ld(t)}}}function sd(t,n){return{path:`/settings/${t.slug}`,name:`admin.settings.${t.slug}`,component:n.settings,meta:{requiresAuth:!0,kind:"settings",slug:t.slug,title:t.label,permissions:od(t,"view")}}}function cd(t,n){if(typeof t.slug!="string"||t.slug.length===0)return null;const a=t.permission,r=Array.isArray(a)?a:typeof a=="string"&&a.length>0?[a]:[];return{path:`/dashboard/${t.slug}`,name:`admin.dashboard.${t.slug}`,component:n.dashboard,meta:{requiresAuth:!0,kind:"dashboard",slug:t.slug,title:t.label??"Dashboard",permissions:r}}}function Wn(t,n){if(t===null)return[];const a=[];for(const r of t.resources)a.push(...rd(r,n));for(const r of t.screens)a.push(id(r,n));for(const r of t.settings)a.push(sd(r,n));for(const r of t.dashboards){const i=cd(r,n);i&&a.push(i)}return a}function Hn(t={}){const n=t.loginRouteName??"admin.login",a=t.forbiddenRouteName??"admin.forbidden",r=t.redirectQueryKey??"redirect";return i=>{if(i.name===n)return!0;const l=re();if(i.meta?.requiresAuth===!0&&!l.isAuthenticated)return{name:n,query:{[r]:i.fullPath}};if(l.isChallengePending)return{name:n,query:{[r]:i.fullPath}};const s=i.meta?.permissions;return Array.isArray(s)&&s.length>0&&!l.hasAnyPermission(s)?{name:a}:!0}}function Kn(t={}){const n=t.template,a=t.brand??"",r=t.fallback??"";return i=>{if(typeof document>"u")return;const l=i.meta?.title??r;let o;n?o=n.replace("{title}",l).replace("{brand}",a):l&&a?o=`${l} · ${a}`:o=l||a,document.title=o}}const dd=["admin.resource.","admin.screen.","admin.settings.","admin.dashboard."];function ud(t){return typeof t!="string"?!1:dd.some(n=>t.startsWith(n))}function Gn(t){const n=t.base??"/admin",a=t.history??X.createWebHistory(n),r=[{path:"/login",name:"admin.login",component:t.components.login,meta:{kind:"auth",title:"Вход"}},{path:"/",name:"admin.home",component:t.components.home,meta:{requiresAuth:!0,kind:"system",title:"Главная"}},{path:"/forbidden",name:"admin.forbidden",component:t.components.forbidden,meta:{requiresAuth:!0,kind:"system",title:"403 — доступ запрещён"}}];t.components.profile&&r.push({path:"/profile",name:"admin.profile",component:t.components.profile,meta:{requiresAuth:!0,kind:"system",title:"Профиль"}}),t.components.notifications&&r.push({path:"/notifications",name:"admin.notifications",component:t.components.notifications,meta:{requiresAuth:!0,kind:"system",title:"Уведомления"}}),t.components.forgotPassword&&r.push({path:"/forgot-password",name:"admin.forgotPassword",component:t.components.forgotPassword,meta:{kind:"auth",title:"Восстановление пароля"}}),t.components.resetPassword&&r.push({path:"/reset-password",name:"admin.resetPassword",component:t.components.resetPassword,meta:{kind:"auth",title:"Новый пароль"}});const i={path:"/:pathMatch(.*)*",name:"admin.notFound",component:t.components.notFound,meta:{kind:"system",title:"404"}},l=X.createRouter({history:a,routes:[...r,...t.extraRoutes??[],i]});return l.beforeEach(Hn(t.authGuard)),l.afterEach(Kn(t.titleGuard)),l.replaceManifestRoutes=o=>{const s=l.getRoutes();for(const f of s)ud(f.name)&&l.removeRoute(f.name);l.hasRoute("admin.notFound")&&l.removeRoute("admin.notFound");const d=Wn(o,t.components);for(const f of d)l.addRoute(f);l.addRoute(i)},l}const le=e.defineComponent({__name:"TextField",props:{name:{},label:{default:null},help:{default:null},required:{type:Boolean,default:!1},placeholder:{default:null},inputType:{default:"text"},disabled:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1},autocomplete:{default:null}},setup(t){const n=t,a=ne.useFormState(),r=e.computed(()=>a.getField(n.name)??""),i=e.computed(()=>a.errors[n.name]?.[0]);function l(o){a.setField(n.name,o)}return(o,s)=>(e.openBlock(),e.createBlock(e.unref(c.UidInput),{"model-value":r.value,type:t.inputType,label:t.label??void 0,hint:t.help??void 0,error:i.value,placeholder:t.placeholder??void 0,required:t.required,disabled:t.disabled,readonly:t.readonly,name:t.name,autocomplete:t.autocomplete??void 0,"onUpdate:modelValue":l},null,8,["model-value","type","label","hint","error","placeholder","required","disabled","readonly","name","autocomplete"]))}}),We=e.defineComponent({__name:"TextAreaField",props:{name:{},label:{default:null},help:{default:null},required:{type:Boolean,default:!1},placeholder:{default:null},rows:{default:4},disabled:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1}},setup(t){const n=t,a=ne.useFormState(),r=e.computed(()=>a.getField(n.name)??""),i=e.computed(()=>a.errors[n.name]?.[0]);function l(o){a.setField(n.name,o)}return(o,s)=>(e.openBlock(),e.createBlock(e.unref(c.UidFormField),{label:t.label??void 0,hint:t.help??void 0,error:i.value,required:t.required,disabled:t.disabled},{default:e.withCtx(()=>[e.createVNode(e.unref(c.UidTextarea),{"model-value":r.value,rows:t.rows,placeholder:t.placeholder??void 0,disabled:t.disabled,readonly:t.readonly,name:t.name,"onUpdate:modelValue":l},null,8,["model-value","rows","placeholder","disabled","readonly","name"])]),_:1},8,["label","hint","error","required","disabled"]))}}),He=e.defineComponent({__name:"NumberField",props:{name:{},label:{default:null},help:{default:null},required:{type:Boolean,default:!1},placeholder:{default:null},min:{default:null},max:{default:null},step:{default:null},disabled:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1}},setup(t){const n=t,a=ne.useFormState(),r=e.computed(()=>{const o=a.getField(n.name);return o==null||o===""?null:typeof o=="number"?o:Number(o)}),i=e.computed(()=>a.errors[n.name]?.[0]);function l(o){a.setField(n.name,o)}return(o,s)=>(e.openBlock(),e.createBlock(e.unref(c.UidFormField),{label:t.label??void 0,hint:t.help??void 0,error:i.value,required:t.required,disabled:t.disabled},{default:e.withCtx(()=>[e.createVNode(e.unref(c.UidNumberInput),{"model-value":r.value,min:t.min??void 0,max:t.max??void 0,step:t.step??void 0,placeholder:t.placeholder??void 0,disabled:t.disabled,readonly:t.readonly,name:t.name,"onUpdate:modelValue":l},null,8,["model-value","min","max","step","placeholder","disabled","readonly","name"])]),_:1},8,["label","hint","error","required","disabled"]))}}),ve=e.defineComponent({__name:"SelectField",props:{name:{},options:{},label:{default:null},help:{default:null},required:{type:Boolean,default:!1},placeholder:{default:null},disabled:{type:Boolean,default:!1},searchable:{type:Boolean,default:!1},clearable:{type:Boolean,default:!1},size:{default:"md"}},setup(t){const n=t,a=ne.useFormState(),r=e.computed(()=>{const o=a.getField(n.name);return o==null||o===""?null:o}),i=e.computed(()=>a.errors[n.name]?.[0]);function l(o){a.setField(n.name,o)}return(o,s)=>(e.openBlock(),e.createBlock(e.unref(c.UidFormField),{label:t.label??void 0,hint:t.help??void 0,error:i.value,required:t.required,disabled:t.disabled},{default:e.withCtx(()=>[e.createVNode(e.unref(c.UidSelect),{"model-value":r.value,options:t.options,placeholder:t.placeholder??void 0,disabled:t.disabled,searchable:t.searchable,clearable:t.clearable,size:t.size,"onUpdate:modelValue":l},null,8,["model-value","options","placeholder","disabled","searchable","clearable","size"])]),_:1},8,["label","hint","error","required","disabled"]))}}),Ee=e.defineComponent({__name:"CheckboxField",props:{name:{},label:{default:null},help:{default:null},required:{type:Boolean,default:!1},inlineLabel:{default:null},disabled:{type:Boolean,default:!1}},setup(t){const n=t,a=ne.useFormState(),r=e.computed(()=>!!a.getField(n.name)),i=e.computed(()=>a.errors[n.name]?.[0]);function l(o){a.setField(n.name,o)}return(o,s)=>(e.openBlock(),e.createBlock(e.unref(c.UidFormField),{label:t.label??void 0,hint:t.help??void 0,error:i.value,required:t.required,disabled:t.disabled},{default:e.withCtx(()=>[e.createVNode(e.unref(c.UidCheckbox),{"model-value":r.value,disabled:t.disabled,name:t.name,"onUpdate:modelValue":l},{default:e.withCtx(()=>[t.inlineLabel?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(t.inlineLabel),1)],64)):e.createCommentVNode("",!0)]),_:1},8,["model-value","disabled","name"])]),_:1},8,["label","hint","error","required","disabled"]))}}),ge=e.defineComponent({__name:"DateField",props:{name:{},label:{default:null},help:{default:null},required:{type:Boolean,default:!1},inputType:{default:"date"},min:{default:null},max:{default:null},disabled:{type:Boolean,default:!1}},setup(t){const n=t,a=ne.useFormState(),r=e.computed(()=>{const o=a.getField(n.name);return o==null||o===""?null:String(o)}),i=e.computed(()=>a.errors[n.name]?.[0]);function l(o){a.setField(n.name,o)}return(o,s)=>(e.openBlock(),e.createBlock(e.unref(c.UidFormField),{label:t.label??void 0,hint:t.help??void 0,error:i.value,required:t.required,disabled:t.disabled},{default:e.withCtx(()=>[e.createVNode(e.unref(c.UidDatePicker),{"model-value":r.value,min:t.min??void 0,max:t.max??void 0,disabled:t.disabled,name:t.name,"onUpdate:modelValue":l},null,8,["model-value","min","max","disabled","name"])]),_:1},8,["label","hint","error","required","disabled"]))}}),md={key:0,class:"admin-field__label"},fd={key:0,class:"admin-field__required","aria-hidden":"true"},pd={class:"admin-tags__chip-text"},vd=["onClick"],hd=["value","placeholder","disabled"],yd={key:0,class:"admin-tags__dropdown",role:"listbox"},gd={class:"admin-tags__group-label"},kd=["aria-selected","onMousedown","onMouseenter"],_d=["aria-selected","onMousedown","onMouseenter"],bd={key:1,class:"admin-field__error"},wd={key:2,class:"admin-field__help"},Bd=e.defineComponent({__name:"TagsField",props:{name:{},label:{default:null},help:{default:null},required:{type:Boolean,default:!1},placeholder:{default:"Введите ключ и нажмите Enter…"},suggestions:{default:()=>[]},suggestionsByGroup:{default:()=>[]},maxItems:{default:0},separator:{default:","},disabled:{type:Boolean,default:!1}},setup(t){const n=t,a=ne.useFormState(),r=e.computed(()=>{const y=a.getField(n.name);return Array.isArray(y)?y.map(g=>String(g)):typeof y=="string"&&y!==""?y.split(",").map(g=>g.trim()).filter(Boolean):[]}),i=e.computed(()=>a.errors[n.name]?.[0]),l=e.ref(""),o=e.ref(!1),s=e.ref(null),d=e.ref(null);function f(y){const g=new Set,_=[];for(const T of y){const R=T.trim();if(!(R===""||g.has(R))&&(g.add(R),_.push(R),n.maxItems>0&&_.length>=n.maxItems))break}a.setField(n.name,_)}function p(y){const g=y.trim();if(g!==""){if(r.value.includes(g)){l.value="";return}f([...r.value,g]),l.value=""}}function b(y){const g=[...r.value];g.splice(y,1),f(g)}function u(y){y.key==="Enter"?(y.preventDefault(),h.value>=0&&w.value[h.value]?p(w.value[h.value]):l.value.trim()!==""&&p(l.value)):y.key==="Backspace"&&l.value===""&&r.value.length>0?b(r.value.length-1):y.key==="ArrowDown"?(y.preventDefault(),h.value=Math.min(h.value+1,w.value.length-1)):y.key==="ArrowUp"?(y.preventDefault(),h.value=Math.max(h.value-1,-1)):y.key==="Escape"&&(o.value=!1,s.value?.blur())}function N(y){const g=y.target.value;if(n.separator&&g.includes(n.separator)){const _=g.split(n.separator);_.slice(0,-1).map(R=>R.trim()).filter(Boolean).forEach(p),l.value=_[_.length-1]??"";return}l.value=g}const h=e.ref(-1),k=e.computed(()=>Array.isArray(n.suggestionsByGroup)&&n.suggestionsByGroup.length>0),m=e.computed(()=>{const y=l.value.trim().toLowerCase(),g=new Set(r.value);return k.value?n.suggestionsByGroup.map(_=>({label:_.label,items:_.items.filter(T=>!g.has(T)&&(y===""||T.toLowerCase().includes(y)))})).filter(_=>_.items.length>0):[]}),w=e.computed(()=>{if(k.value)return m.value.flatMap(_=>_.items);const y=l.value.trim().toLowerCase(),g=new Set(r.value);return n.suggestions.filter(_=>!g.has(_)).filter(_=>y===""||_.toLowerCase().includes(y)).slice(0,200)});function C(y){return y===h.value}e.watch(l,()=>{h.value=-1});function E(){n.disabled||s.value?.focus()}function V(y){p(y),e.nextTick(()=>s.value?.focus())}function D(){window.setTimeout(()=>{o.value=!1,l.value.trim()!==""&&p(l.value)},120)}return(y,g)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["admin-field",{"admin-field--invalid":i.value!==void 0}])},[t.label?(e.openBlock(),e.createElementBlock("label",md,[e.createElementVNode("span",null,e.toDisplayString(t.label),1),t.required?(e.openBlock(),e.createElementBlock("span",fd,"*")):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.createElementVNode("div",{ref_key:"containerRef",ref:d,class:e.normalizeClass(["admin-field__control admin-tags",{"admin-tags--focused":o.value,"admin-tags--disabled":t.disabled}]),onClick:E},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,(_,T)=>(e.openBlock(),e.createElementBlock("span",{key:`${_}-${T}`,class:"admin-tags__chip"},[e.createElementVNode("span",pd,e.toDisplayString(_),1),t.disabled?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"admin-tags__chip-remove","aria-label":"Удалить",onClick:e.withModifiers(R=>b(T),["stop"])},[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(be),size:10},null,8,["icon"])],8,vd))]))),128)),e.createElementVNode("input",{ref_key:"inputRef",ref:s,value:l.value,placeholder:r.value.length===0?t.placeholder??"":"",disabled:t.disabled,class:"admin-tags__input",type:"text",onInput:N,onKeydown:u,onFocus:g[0]||(g[0]=_=>o.value=!0),onBlur:D},null,40,hd),o.value&&w.value.length>0?(e.openBlock(),e.createElementBlock("div",yd,[k.value?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(m.value,(_,T)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:`g-${T}-${_.label}`},[e.createElementVNode("div",gd,e.toDisplayString(_.label),1),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(_.items,R=>(e.openBlock(),e.createElementBlock("button",{key:R,type:"button",role:"option",class:e.normalizeClass(["admin-tags__option",{"admin-tags__option--active":C(w.value.indexOf(R))}]),"aria-selected":C(w.value.indexOf(R)),onMousedown:e.withModifiers(W=>V(R),["prevent"]),onMouseenter:W=>h.value=w.value.indexOf(R)},e.toDisplayString(R),43,kd))),128))],64))),128)):(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:1},e.renderList(w.value,(_,T)=>(e.openBlock(),e.createElementBlock("button",{key:_,type:"button",role:"option",class:e.normalizeClass(["admin-tags__option",{"admin-tags__option--active":T===h.value}]),"aria-selected":T===h.value,onMousedown:e.withModifiers(R=>V(_),["prevent"]),onMouseenter:R=>h.value=T},e.toDisplayString(_),43,_d))),128))])):e.createCommentVNode("",!0)],2),i.value?(e.openBlock(),e.createElementBlock("p",bd,e.toDisplayString(i.value),1)):t.help?(e.openBlock(),e.createElementBlock("p",wd,e.toDisplayString(t.help),1)):e.createCommentVNode("",!0)],2))}}),Vd={key:0,class:"admin-field__label"},xd={key:0,class:"admin-field__required","aria-hidden":"true"},Nd={class:"admin-translatable"},Cd={class:"admin-translatable__tabs",role:"tablist"},Ed=["aria-selected","onClick"],$d={key:0,class:"admin-translatable__dot","aria-hidden":"true"},Sd={class:"admin-translatable__panel"},Ud=["value","placeholder","rows","disabled"],Md={key:1,class:"admin-field__error"},Dd={key:2,class:"admin-field__help"},Ht=e.defineComponent({__name:"TranslatableField",props:{name:{},label:{default:null},help:{default:null},required:{type:Boolean,default:!1},placeholder:{default:null},locales:{default:void 0},multiline:{type:Boolean,default:!1},rows:{default:3},disabled:{type:Boolean,default:!1}},setup(t){const n=t,a=ne.useFormState(),r=Se(),i=e.computed(()=>n.locales??r.available??[r.current??"ru"]),l=e.ref(r.current??i.value[0]??"ru"),o=e.computed(()=>{const p=a.getField(n.name);return p&&typeof p=="object"&&!Array.isArray(p)?p:typeof p=="string"?{[l.value]:p}:{}});function s(p,b){const u={...o.value};u[p]=b,a.setField(n.name,u)}const d=e.computed(()=>{const p=a.errors[n.name];if(p?.[0])return p[0];for(const b of i.value){const u=a.errors[`${n.name}.${b}`]?.[0];if(u)return`[${b}] ${u}`}});function f(p){const b=o.value[p];return typeof b=="string"&&b.trim()!==""}return(p,b)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["admin-field",{"admin-field--invalid":d.value!==void 0}])},[t.label?(e.openBlock(),e.createElementBlock("label",Vd,[e.createElementVNode("span",null,e.toDisplayString(t.label),1),t.required?(e.openBlock(),e.createElementBlock("span",xd,"*")):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.createElementVNode("div",Nd,[e.createElementVNode("div",Cd,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,u=>(e.openBlock(),e.createElementBlock("button",{key:u,type:"button",role:"tab",class:e.normalizeClass(["admin-translatable__tab",{"admin-translatable__tab--active":l.value===u,"admin-translatable__tab--filled":f(u)}]),"aria-selected":l.value===u,onClick:N=>l.value=u},[e.createTextVNode(e.toDisplayString(u.toUpperCase())+" ",1),f(u)?(e.openBlock(),e.createElementBlock("span",$d)):e.createCommentVNode("",!0)],10,Ed))),128))]),e.createElementVNode("div",Sd,[t.multiline?(e.openBlock(),e.createElementBlock("textarea",{key:1,value:o.value[l.value]??"",placeholder:t.placeholder??"",rows:t.rows,disabled:t.disabled,class:"admin-translatable__textarea",onInput:b[1]||(b[1]=u=>s(l.value,u.target.value))},null,40,Ud)):(e.openBlock(),e.createBlock(e.unref(c.UidInput),{key:0,"model-value":o.value[l.value]??"",placeholder:t.placeholder??"",disabled:t.disabled,"onUpdate:modelValue":b[0]||(b[0]=u=>s(l.value,u))},null,8,["model-value","placeholder","disabled"]))])]),d.value?(e.openBlock(),e.createElementBlock("p",Md,e.toDisplayString(d.value),1)):t.help?(e.openBlock(),e.createElementBlock("p",Dd,e.toDisplayString(t.help),1)):e.createCommentVNode("",!0)],2))}}),Id={key:0,class:"admin-field__label"},Td={key:0,class:"admin-field__required","aria-hidden":"true"},Fd={class:"admin-field__control"},Ad={key:1,class:"admin-field__error"},Ld={key:2,class:"admin-field__help"},zd=e.defineComponent({__name:"WysiwygField",props:{name:{},label:{default:null},help:{default:null},required:{type:Boolean,default:!1},placeholder:{default:null},disabled:{type:Boolean,default:!1},minHeight:{default:"200px"},maxHeight:{default:void 0}},setup(t){const n=t,a=ne.useFormState(),r=e.computed(()=>a.getField(n.name)??""),i=e.computed(()=>a.errors[n.name]?.[0]);function l(o){a.setField(n.name,o)}return(o,s)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["admin-field",{"admin-field--invalid":i.value!==void 0}])},[t.label?(e.openBlock(),e.createElementBlock("label",Id,[e.createElementVNode("span",null,e.toDisplayString(t.label),1),t.required?(e.openBlock(),e.createElementBlock("span",Td,"*")):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.createElementVNode("div",Fd,[e.createVNode(e.unref(ka.DskWysiwyg),{"model-value":r.value,placeholder:t.placeholder??void 0,readonly:t.disabled,"min-height":t.minHeight,"max-height":t.maxHeight,"onUpdate:modelValue":l},null,8,["model-value","placeholder","readonly","min-height","max-height"])]),i.value?(e.openBlock(),e.createElementBlock("p",Ad,e.toDisplayString(i.value),1)):t.help?(e.openBlock(),e.createElementBlock("p",Ld,e.toDisplayString(t.help),1)):e.createCommentVNode("",!0)],2))}}),ut=e.defineComponent({__name:"RowsLayout",props:{items:{},gap:{default:"var(--uid-space-md)"}},setup(t){return(n,a)=>(e.openBlock(),e.createBlock(e.unref(c.UidStack),{direction:"column",gap:t.gap,align:"stretch"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.items,(r,i)=>(e.openBlock(),e.createBlock(xe,{key:i,node:r},null,8,["node"]))),128))]),_:1},8,["gap"]))}}),Xn=e.defineComponent({__name:"ColumnsLayout",props:{items:{},gap:{default:"var(--uid-space-md)"},cols:{default:12}},setup(t){const n=t,a=e.computed(()=>n.items.length===0?n.cols:Math.max(1,Math.floor(n.cols/n.items.length)));function r(i){const l=i.span;return typeof l=="number"&&l>0?Math.min(l,n.cols):a.value}return(i,l)=>(e.openBlock(),e.createBlock(e.unref(c.UidGrid),{cols:t.cols,gap:t.gap},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.items,(o,s)=>(e.openBlock(),e.createElementBlock("div",{key:s,class:"admin-columns__item",style:e.normalizeStyle({gridColumn:`span ${r(o)} / span ${r(o)}`})},[e.createVNode(xe,{node:o},null,8,["node"])],4))),128))]),_:1},8,["cols","gap"]))}}),Rd={key:0,class:"admin-section__header"},Pd={key:0,class:"admin-section__title"},qd={key:1,class:"admin-section__description"},jd={class:"admin-section__body"},ke=e.defineComponent({__name:"SectionLayout",props:{items:{},title:{default:null},description:{default:null}},setup(t){return(n,a)=>(e.openBlock(),e.createBlock(e.unref(c.UidCard),{padding:"md",class:"admin-section"},{default:e.withCtx(()=>[t.title||t.description?(e.openBlock(),e.createElementBlock("header",Rd,[t.title?(e.openBlock(),e.createElementBlock("h3",Pd,e.toDisplayString(t.title),1)):e.createCommentVNode("",!0),t.description?(e.openBlock(),e.createElementBlock("p",qd,e.toDisplayString(t.description),1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.createElementVNode("div",jd,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.items,(r,i)=>(e.openBlock(),e.createBlock(xe,{key:i,node:r},null,8,["node"]))),128))])]),_:1}))}}),Yn=e.defineComponent({__name:"TabsLayout",props:{items:{},active:{default:0}},emits:["update:active"],setup(t,{emit:n}){const a=t,r=n;function i(s,d){return s.key??d}const l=e.ref(a.active??i(a.items[0]??{},0));function o(s){l.value=s,r("update:active",s)}return(s,d)=>(e.openBlock(),e.createBlock(e.unref(c.UidTabs),{"model-value":l.value,"onUpdate:modelValue":o},{list:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.items,(f,p)=>(e.openBlock(),e.createBlock(e.unref(c.UidTab),{key:i(f,p),value:i(f,p)},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(f.label),1)]),_:2},1032,["value"]))),128))]),default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.items,(f,p)=>(e.openBlock(),e.createBlock(e.unref(c.UidTabPanel),{key:`panel-${i(f,p)}`,value:i(f,p)},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(f.items,(b,u)=>(e.openBlock(),e.createBlock(xe,{key:u,node:b},null,8,["node"]))),128))]),_:2},1032,["value"]))),128))]),_:1},8,["model-value"]))}});function Zn(){Mn({fields:{input:le,text:le,email:le,url:le,password:le,tel:le,search:le,slug:le,hidden:le,label:le,textarea:We,wysiwyg:zd,markdown:We,code:We,number:He,slider:He,rating:He,select:ve,combobox:ve,radio:ve,tags:Bd,translatable:Ht,"translatable-text":Ht,"morph-switcher":ve,relation:ve,cascader:ve,"tree-select":ve,checkbox:Ee,switch:Ee,switcher:Ee,boolean:Ee,date:ge,datetime:ge,datepicker:ge,"date-range":ge,time:ge,"time-picker":ge,"color-picker":le},layouts:{rows:ut,columns:Xn,section:ke,block:ke,tabs:Yn,accordion:ke,group:ut,step:ke,wizard:ke}})}const Od={key:0,class:"admin-infolist-entry"},Wd={class:"admin-infolist-entry__label"},j=e.defineComponent({__name:"TextEntry",props:{name:{default:""},label:{default:""},value:{default:void 0},placeholder:{default:"—"},mono:{type:Boolean,default:!1},preset:{default:void 0},meta:{default:()=>({})}},setup(t){const n=t,a=Ie(),r=e.computed(()=>{let l=n.value;if(l===void 0&&a&&n.name&&(l=a[n.name]),l==null||l==="")return n.placeholder;const o=Sn(l,n.preset,n.meta);return o===""?n.placeholder:o}),i=e.computed(()=>!!n.label);return(l,o)=>i.value?(e.openBlock(),e.createElementBlock("div",Od,[e.createElementVNode("span",Wd,e.toDisplayString(t.label),1),e.createElementVNode("span",{class:e.normalizeClass(["admin-infolist-entry__value",t.mono?"admin-infolist-entry__value--mono":""])},e.toDisplayString(r.value),3)])):(e.openBlock(),e.createElementBlock("span",{key:1,class:e.normalizeClass(["admin-infolist-text",t.mono?"admin-infolist-text--mono":""])},e.toDisplayString(r.value),3))}}),Hd={key:1,class:"admin-infolist-text"},Jn=e.defineComponent({__name:"BadgeEntry",props:{name:{default:""},label:{default:""},value:{default:void 0},map:{default:()=>({})},variant:{default:void 0}},setup(t){const n=t,a=Ie(),r=e.computed(()=>{let l=n.value;return l===void 0&&a&&n.name&&(l=a[n.name]),l==null?"":String(l)}),i=e.computed(()=>n.variant?n.variant:n.map[r.value]??"default");return(l,o)=>r.value?(e.openBlock(),e.createBlock(e.unref(c.UidBadge),{key:0,variant:i.value},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(r.value),1)]),_:1},8,["variant"])):(e.openBlock(),e.createElementBlock("span",Hd,"—"))}}),Kd=["data-icon"],Gd={key:0},Qn=e.defineComponent({__name:"IconEntry",props:{name:{default:""},label:{default:""},value:{type:[Boolean,null],default:void 0},trueIcon:{default:"check-circle-2"},falseIcon:{default:"circle"},trueLabel:{default:""},falseLabel:{default:""}},setup(t){const n=t,a=Ie(),r=e.computed(()=>{let o=n.value;return o===void 0&&a&&n.name&&(o=a[n.name]),!!o}),i=e.computed(()=>r.value?n.trueLabel:n.falseLabel),l=e.computed(()=>r.value?n.trueIcon:n.falseIcon);return(o,s)=>(e.openBlock(),e.createElementBlock("span",{class:e.normalizeClass(["admin-infolist-icon",r.value?"admin-infolist-icon--on":"admin-infolist-icon--off"])},[e.createElementVNode("span",{class:"admin-infolist-icon__glyph","data-icon":l.value},null,8,Kd),i.value?(e.openBlock(),e.createElementBlock("span",Gd,e.toDisplayString(i.value),1)):e.createCommentVNode("",!0)],2))}}),Xd={key:1,class:"admin-infolist-text"},mt=e.defineComponent({__name:"KeyValueEntry",props:{name:{default:""},label:{default:""},value:{default:void 0}},setup(t){const n=t,a=Ie(),r=e.computed(()=>{let l=n.value;return l===void 0&&a&&n.name&&(l=a[n.name]),l==null?[]:typeof l!="object"?[]:Object.entries(l)});function i(l){return l==null?"—":typeof l=="object"?JSON.stringify(l):String(l)}return(l,o)=>r.value.length>0?(e.openBlock(),e.createBlock(e.unref(c.UidDescriptionList),{key:0,direction:"vertical",columns:1},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,([s,d])=>(e.openBlock(),e.createBlock(e.unref(c.UidDescriptionItem),{key:s,label:s},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(i(d)),1)]),_:2},1032,["label"]))),128))]),_:1})):(e.openBlock(),e.createElementBlock("span",Xd,"—"))}});function ea(){Dn({text:j,badge:Jn,icon:Qn,keyvalue:mt,"key-value":mt,input:j,email:j,url:j,password:j,tel:j,search:j,slug:j,hidden:j,label:j,textarea:j,wysiwyg:j,markdown:j,code:j,number:j,slider:j,rating:j,select:j,combobox:j,radio:j,tags:j,"morph-switcher":j,relation:j,cascader:j,"tree-select":j,checkbox:j,switch:j,switcher:j,boolean:j,date:j,datetime:j,datepicker:j,"date-range":j,time:j,"time-picker":j,"color-picker":j})}function Yd(t,n={}){const a=n.pages??{},r=n.base??Zd(t.baseUrl)??"/admin",i=On({baseURL:t.apiUrl,csrfToken:t.csrf});yt(i);const l=e.createApp(hn),o=ie.createPinia();l.use(o),re().hydrate(t),Se().hydrate(t),Ye().hydrate(t),Ue().hydrate(t),Bt().hydrate(t),Zn(),qn(),ea();const s=Gn({base:r,history:n.router?.history??X.createWebHistory(r),components:{login:a.login??$n,home:a.home??wn,forbidden:a.forbidden??Bn,notFound:a.notFound??Vn,profile:a.profile??Ln,forgotPassword:a.forgotPassword??Yr,resetPassword:a.resetPassword??ni,resourceIndex:a.resourceIndex??Un,resourceCreate:a.resourceCreate??st,resourceEdit:a.resourceEdit??st,resourceView:a.resourceView??An,dashboard:a.dashboard??xt,settings:a.settings??xn,screen:a.screen??Nn},extraRoutes:n.router?.extraRoutes,authGuard:n.router?.authGuard,titleGuard:n.router?.titleGuard});l.use(s);const d=wt();if(s.beforeEach((f,p,b)=>{f.fullPath!==p.fullPath&&d.start(),b()}),s.afterEach(()=>{d.end()}),s.onError(()=>{d.end()}),s.beforeResolve(async(f,p,b)=>{const u=typeof f.name=="string"?f.name:null;if(u&&u.startsWith("admin.resource.")&&u.endsWith(".index")){const N=f.params.slug??f.meta.slug;if(N)try{const{useResourceIndexStore:h}=await Promise.resolve().then(()=>ai),k=h();(k.slug!==N||k.items.length===0)&&(k.setSlug(N),await k.load().catch(()=>{}))}catch{}}b()}),n.skipManifestLoad)ce().bootResolved=!0;else{const f=ce(),p=re(),b=bt(),u=async()=>{b.load().catch(()=>{});try{const N=await f.load();s.replaceManifestRoutes(N);const h=s.currentRoute.value;h.name==="admin.notFound"&&h.fullPath!=="/"&&await s.replace(h.fullPath).catch(()=>{})}catch(N){typeof console<"u"&&console.error("[laravel-admin] manifest load failed:",N)}finally{f.bootResolved=!0}};p.isAuthenticated?u():f.bootResolved=!0,e.watch(()=>p.user,(N,h)=>{N&&!h&&(f.bootResolved=!1,u())})}return n.onAppCreated?.(l),{app:l,router:s,client:i}}function Zd(t){if(!t)return null;try{return new URL(t).pathname||"/admin"}catch{return t.startsWith("/")?t:null}}async function Jd(t={}){const n=ta();if(n)return n;if(t.client)try{const a=t.xhrUrl??"/system/bootstrap";return await t.client.get(a)}catch(a){if(a instanceof De)return null;throw a}return null}function ta(){return typeof window>"u"?null:window.__ADMIN_BOOTSTRAP__??null}function Qd(){return typeof document>"u"?null:document.querySelector('meta[name="csrf-token"]')?.getAttribute("content")??null}const eu={class:"admin-notifs__hd"},tu={class:"admin-notifs__title"},nu={key:0,class:"admin-notifs__count"},au={class:"admin-notifs__list"},ou={key:0,class:"admin-notifs__empty"},lu={key:1,class:"admin-notifs__empty"},ru=["onClick"],iu=["data-kind"],su={class:"admin-notifs__body"},cu={class:"admin-notifs__row1"},du={key:0,class:"admin-notifs__title-strong"},uu={key:1,class:"admin-notifs__title-soft"},mu={class:"admin-notifs__time"},fu={key:0,class:"admin-notifs__text"},pu=["onClick"],vu=e.defineComponent({__name:"NotificationsDrawer",props:{open:{type:Boolean}},emits:["update:open","select-item"],setup(t,{emit:n}){const a=t,r=n,i=Ue();function l(k){r("update:open",k)}e.watch(()=>a.open,async k=>{k&&await i.load(i.lastFilter??"all",1).catch(()=>{})},{immediate:!0});const o=e.computed(()=>i.lastFilter??"all");async function s(k){await i.load(k,1).catch(()=>{})}async function d(){await i.markAllAsRead().catch(()=>{})}async function f(k){r("select-item",k),k.read_at||await i.markAsRead(k.id).catch(()=>{})}async function p(k,m){m.stopPropagation(),await i.destroy(k.id).catch(()=>{})}function b(k){const m=k.data.level;return m==="success"||m==="warning"||m==="danger"?m:"info"}function u(k){return k.data.title??"—"}function N(k){return k.data.body??""}function h(k){if(!k)return"";const m=new Date(k),w=Math.max(0,Date.now()-m.getTime()),C=Math.floor(w/6e4);if(C<1)return"только что";if(C<60)return`${C} мин назад`;const E=Math.floor(C/60);if(E<24)return`${E} ч назад`;const V=Math.floor(E/24);return V<7?`${V} д назад`:m.toLocaleDateString("ru-RU")}return(k,m)=>(e.openBlock(),e.createBlock(e.unref(c.UidDrawer),{"model-value":t.open,side:"right",width:"400px",title:"Уведомления","onUpdate:modelValue":l},{header:e.withCtx(()=>[e.createElementVNode("div",eu,[e.createElementVNode("h2",tu,[m[0]||(m[0]=e.createTextVNode(" Уведомления ",-1)),e.unref(i).unreadCount>0?(e.openBlock(),e.createElementBlock("span",nu," ("+e.toDisplayString(e.unref(i).unreadCount)+") ",1)):e.createCommentVNode("",!0)]),e.unref(i).unreadCount>0?(e.openBlock(),e.createBlock(e.unref(c.UidButton),{key:0,variant:"ghost",size:"sm",onClick:d},{default:e.withCtx(()=>[...m[1]||(m[1]=[e.createTextVNode(" Прочитать все ",-1)])]),_:1})):e.createCommentVNode("",!0)])]),default:e.withCtx(()=>[e.createVNode(e.unref(c.UidTabs),{"model-value":o.value,"onUpdate:modelValue":s},{list:e.withCtx(()=>[e.createVNode(e.unref(c.UidTab),{value:"all"},{default:e.withCtx(()=>[...m[2]||(m[2]=[e.createTextVNode("Все",-1)])]),_:1}),e.createVNode(e.unref(c.UidTab),{value:"unread"},{default:e.withCtx(()=>[m[3]||(m[3]=e.createTextVNode(" Непрочитанные",-1)),e.unref(i).unreadCount>0?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(" ("+e.toDisplayString(e.unref(i).unreadCount)+") ",1)],64)):e.createCommentVNode("",!0)]),_:1}),e.createVNode(e.unref(c.UidTab),{value:"read"},{default:e.withCtx(()=>[...m[4]||(m[4]=[e.createTextVNode("Прочитанные",-1)])]),_:1})]),default:e.withCtx(()=>[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(["all","unread","read"],w=>e.createVNode(e.unref(c.UidTabPanel),{key:w,value:w},{default:e.withCtx(()=>[e.createElementVNode("ul",au,[e.unref(i).loading?(e.openBlock(),e.createElementBlock("li",ou," Загрузка… ")):e.unref(i).items.length===0?(e.openBlock(),e.createElementBlock("li",lu," Нет уведомлений ")):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(i).items,C=>(e.openBlock(),e.createElementBlock("li",{key:C.id,class:e.normalizeClass(["admin-notifs__item",`admin-notifs__item--${b(C)}`,{"admin-notifs__item--unread":!C.read_at}]),onClick:E=>f(C)},[e.createElementVNode("span",{class:"admin-notifs__icon","data-kind":b(C)},null,8,iu),e.createElementVNode("div",su,[e.createElementVNode("div",cu,[C.read_at?(e.openBlock(),e.createElementBlock("span",uu,e.toDisplayString(u(C)),1)):(e.openBlock(),e.createElementBlock("strong",du,e.toDisplayString(u(C)),1)),e.createElementVNode("span",mu,e.toDisplayString(h(C.created_at)),1)]),N(C)?(e.openBlock(),e.createElementBlock("p",fu,e.toDisplayString(N(C)),1)):e.createCommentVNode("",!0)]),e.createElementVNode("button",{type:"button",class:"admin-notifs__close","aria-label":"Удалить",onClick:E=>p(C,E)}," × ",8,pu)],10,ru))),128))])]),_:1},8,["value"])),64))]),_:1},8,["model-value"])]),_:1},8,["model-value"]))}}),hu={class:"admin-page admin-import-wizard"},yu={class:"admin-page__hd"},gu={class:"admin-page__title-wrap"},ku={class:"admin-page__title"},_u={class:"admin-page__actions"},bu={key:0,class:"admin-import-wizard__empty"},wu={key:1,class:"admin-import-wizard__mapping"},Bu={class:"admin-import-wizard__map-source"},Vu={key:0,class:"admin-import-wizard__map-sample"},xu={class:"admin-import-wizard__card-hd"},Nu={key:2,class:"admin-import-wizard__empty"},Cu={key:0,class:"admin-import-wizard__empty"},Eu={class:"admin-import-wizard__kpi"},$u={class:"admin-import-wizard__nav"},Su=e.defineComponent({__name:"ImportWizardPage",props:{title:{default:"Импорт"},fieldOptions:{},headers:{default:()=>[]},preview:{default:()=>[]},previewColumns:{default:()=>[]},progress:{default:null},step:{default:void 0}},emits:["file-uploaded","mapping-submit","run-import","cancel"],setup(t,{emit:n}){const a=t,r=n,i=[{label:"Загрузка",description:"CSV / TSV / XLSX"},{label:"Сопоставление",description:"Колонки файла → поля"},{label:"Предпросмотр",description:"Проверка первых строк"},{label:"Импорт",description:"Запуск + сводка"}],l=e.ref(0),o=e.computed(()=>a.step??l.value);function s(E){a.step===void 0&&(E<0||E>=i.length||(l.value=E))}const d=e.ref([]);function f(E){d.value=E,E.length>0&&r("file-uploaded",E[0].file)}const p=e.ref({});function b(E,V){p.value[E]=V===null||V===""?null:String(V)}function u(){return a.headers.map(E=>({source:E.key,target:p.value[E.key]??null}))}function N(){r("mapping-submit",u()),s(2)}function h(){r("run-import"),s(3)}const k=e.computed(()=>o.value>0),m=e.computed(()=>{switch(o.value){case 0:return d.value.length>0;case 1:return Object.values(p.value).some(E=>E!==null);case 2:return!0;default:return!1}}),w=e.computed(()=>[{value:"",label:"Не импортировать"},...a.fieldOptions]);function C(){r("cancel")}return(E,V)=>(e.openBlock(),e.createElementBlock("section",hu,[e.createElementVNode("header",yu,[e.createElementVNode("div",gu,[e.createElementVNode("h1",ku,e.toDisplayString(t.title),1)]),e.createElementVNode("div",_u,[e.createVNode(e.unref(c.UidButton),{variant:"ghost",onClick:C},{default:e.withCtx(()=>[...V[2]||(V[2]=[e.createTextVNode("Отмена",-1)])]),_:1})])]),e.createVNode(e.unref(c.UidStepper),{steps:i,current:o.value},null,8,["current"]),o.value===0?(e.openBlock(),e.createBlock(e.unref(c.UidCard),{key:0,padding:"md",class:"admin-import-wizard__card"},{default:e.withCtx(()=>[V[3]||(V[3]=e.createElementVNode("header",{class:"admin-import-wizard__card-hd"},[e.createElementVNode("h3",null,"1. Загрузите файл"),e.createElementVNode("p",null,"CSV / TSV / XLSX, до 50 MB")],-1)),e.createVNode(e.unref(c.UidFileUpload),{"model-value":d.value,accept:".csv,.tsv,.xlsx","max-size":50*1024*1024,"max-files":1,"primary-text":"Перетащите файл сюда или","secondary-text":"нажмите чтобы выбрать","onUpdate:modelValue":f},null,8,["model-value"])]),_:1})):o.value===1?(e.openBlock(),e.createBlock(e.unref(c.UidCard),{key:1,padding:"md",class:"admin-import-wizard__card"},{default:e.withCtx(()=>[V[5]||(V[5]=e.createElementVNode("header",{class:"admin-import-wizard__card-hd"},[e.createElementVNode("h3",null,"2. Сопоставьте колонки"),e.createElementVNode("p",null,"Выберите поле ресурса для каждой колонки файла")],-1)),t.headers.length===0?(e.openBlock(),e.createElementBlock("div",bu," Нет данных — host ещё не отдал headers. Загрузите файл сначала. ")):(e.openBlock(),e.createElementBlock("div",wu,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.headers,D=>(e.openBlock(),e.createElementBlock("div",{key:D.key,class:"admin-import-wizard__map-row"},[e.createElementVNode("div",Bu,[e.createElementVNode("strong",null,e.toDisplayString(D.label),1),D.sample?(e.openBlock(),e.createElementBlock("span",Vu," «"+e.toDisplayString(D.sample)+"» ",1)):e.createCommentVNode("",!0)]),V[4]||(V[4]=e.createElementVNode("span",{class:"admin-import-wizard__map-arrow"},"→",-1)),e.createVNode(e.unref(c.UidSelect),{"model-value":p.value[D.key]??"",options:w.value,placeholder:"Не импортировать","onUpdate:modelValue":y=>b(D.key,y)},null,8,["model-value","options","onUpdate:modelValue"])]))),128))]))]),_:1})):o.value===2?(e.openBlock(),e.createBlock(e.unref(c.UidCard),{key:2,padding:"md",class:"admin-import-wizard__card"},{default:e.withCtx(()=>[e.createElementVNode("header",xu,[V[6]||(V[6]=e.createElementVNode("h3",null,"3. Предпросмотр",-1)),e.createElementVNode("p",null,"Первые "+e.toDisplayString(t.preview.length)+" строк перед импортом",1)]),t.preview.some(D=>D.__warning)?(e.openBlock(),e.createBlock(e.unref(c.UidAlert),{key:0,variant:"warning",style:{"margin-bottom":"var(--uid-space-md)"}},{default:e.withCtx(()=>[...V[7]||(V[7]=[e.createTextVNode(" Часть строк имеет предупреждения — проверьте перед импортом. ",-1)])]),_:1})):e.createCommentVNode("",!0),t.previewColumns.length>0?(e.openBlock(),e.createBlock(e.unref(c.UidTable),{key:1,columns:t.previewColumns,data:t.preview},null,8,["columns","data"])):(e.openBlock(),e.createElementBlock("div",Nu," Host не передал previewColumns/preview. "))]),_:1})):(e.openBlock(),e.createBlock(e.unref(c.UidCard),{key:3,padding:"md",class:"admin-import-wizard__card"},{default:e.withCtx(()=>[V[8]||(V[8]=e.createElementVNode("header",{class:"admin-import-wizard__card-hd"},[e.createElementVNode("h3",null,"4. Импорт")],-1)),t.progress?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[t.progress.total>0?(e.openBlock(),e.createBlock(e.unref(c.UidProgress),{key:0,"model-value":t.progress.created+t.progress.updated+t.progress.errors,max:t.progress.total},null,8,["model-value","max"])):e.createCommentVNode("",!0),e.createElementVNode("div",Eu,[e.createVNode(e.unref(c.UidStat),{title:"Создано",value:t.progress.created,tone:"success"},null,8,["value"]),e.createVNode(e.unref(c.UidStat),{title:"Обновлено",value:t.progress.updated,tone:"info"},null,8,["value"]),e.createVNode(e.unref(c.UidStat),{title:"Ошибки",value:t.progress.errors,tone:"danger"},null,8,["value"])])],64)):(e.openBlock(),e.createElementBlock("div",Cu," Запускается импорт… "))]),_:1})),e.createElementVNode("footer",$u,[k.value?(e.openBlock(),e.createBlock(e.unref(c.UidButton),{key:0,variant:"ghost",onClick:V[0]||(V[0]=D=>s(o.value-1))},{default:e.withCtx(()=>[...V[9]||(V[9]=[e.createTextVNode(" Назад ",-1)])]),_:1})):e.createCommentVNode("",!0),V[13]||(V[13]=e.createElementVNode("span",{style:{flex:"1"}},null,-1)),o.value===0?(e.openBlock(),e.createBlock(e.unref(c.UidButton),{key:1,variant:"primary",disabled:!m.value,onClick:V[1]||(V[1]=D=>s(1))},{default:e.withCtx(()=>[...V[10]||(V[10]=[e.createTextVNode(" Далее ",-1)])]),_:1},8,["disabled"])):o.value===1?(e.openBlock(),e.createBlock(e.unref(c.UidButton),{key:2,variant:"primary",disabled:!m.value,onClick:N},{default:e.withCtx(()=>[...V[11]||(V[11]=[e.createTextVNode(" Подтвердить mapping ",-1)])]),_:1},8,["disabled"])):o.value===2?(e.openBlock(),e.createBlock(e.unref(c.UidButton),{key:3,variant:"primary",onClick:h},{default:e.withCtx(()=>[...V[12]||(V[12]=[e.createTextVNode(" Запустить импорт ",-1)])]),_:1})):e.createCommentVNode("",!0)])]))}}),Uu={class:"admin-page admin-field-gallery"},Mu={class:"admin-gallery__group-title"},Du={class:"admin-gallery__grid"},Iu={class:"admin-gallery__card-hd"},Tu={class:"admin-gallery__card-title"},Fu={class:"admin-gallery__card-type"},Au={class:"admin-gallery__card-desc"},Lu={class:"admin-gallery__card-demo"},zu=e.defineComponent({__name:"FieldGalleryPage",setup(t){const n=[{type:"text",group:"Текстовые",title:"Input",description:"Простой текстовый input. type=email/url/password/tel доступны через inputType.",node:{type:"text",name:"demo_text",label:"Заголовок статьи",placeholder:"Например: Введение в Laravel"},initial:{demo_text:"Hello World"}},{type:"textarea",group:"Текстовые",title:"Textarea",description:"Многострочный input с настраиваемым числом rows.",node:{type:"textarea",name:"demo_textarea",label:"Описание",rows:4},initial:{demo_textarea:"Multi-line text..."}},{type:"number",group:"Текстовые",title:"NumberInput",description:"Числовой input. Empty/NaN автоматически конвертируются в null.",node:{type:"number",name:"demo_number",label:"Цена",min:0,max:1e3},initial:{demo_number:42}},{type:"select",group:"Выбор",title:"Select",description:"Single-select с options. Поддерживает searchable + clearable.",node:{type:"select",name:"demo_select",label:"Категория",options:[{value:"frontend",label:"Frontend"},{value:"backend",label:"Backend"},{value:"devops",label:"DevOps"}]},initial:{demo_select:"backend"}},{type:"checkbox",group:"Выбор",title:"Checkbox",description:"Boolean toggle. inlineLabel рядом с боксом.",node:{type:"checkbox",name:"demo_checkbox",label:"Опубликовать",inlineLabel:"Сделать доступным всем"},initial:{demo_checkbox:!0}},{type:"date",group:"Дата/время",title:"DatePicker",description:"date / datetime-local / time через inputType.",node:{type:"date",name:"demo_date",label:"Дата публикации",inputType:"date"},initial:{demo_date:"2026-05-01"}}],a=n.reduce((i,l)=>(i[l.group]||(i[l.group]=[]),i[l.group].push(l),i),{}),r=e.reactive(n.reduce((i,l)=>Object.assign(i,l.initial),{}));return ne.provideFormState(r),(i,l)=>(e.openBlock(),e.createElementBlock("section",Uu,[l[0]||(l[0]=e.createElementVNode("header",{class:"admin-page__hd"},[e.createElementVNode("div",{class:"admin-page__title-wrap"},[e.createElementVNode("h1",{class:"admin-page__title"},"Field Gallery"),e.createElementVNode("div",{class:"admin-page__count"}," Каталог встроенных field-компонентов library + примеры использования ")])],-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(a),(o,s)=>(e.openBlock(),e.createElementBlock("section",{key:s,class:"admin-gallery__group"},[e.createElementVNode("h2",Mu,e.toDisplayString(s),1),e.createElementVNode("div",Du,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o,d=>(e.openBlock(),e.createBlock(e.unref(c.UidCard),{key:d.type+d.title,padding:"md",class:"admin-gallery__card"},{default:e.withCtx(()=>[e.createElementVNode("header",Iu,[e.createElementVNode("h3",Tu,e.toDisplayString(d.title),1),e.createElementVNode("code",Fu,"type: "+e.toDisplayString(d.type),1)]),e.createElementVNode("p",Au,e.toDisplayString(d.description),1),e.createElementVNode("div",Lu,[e.createVNode(St,{node:d.node},null,8,["node"])])]),_:2},1024))),128))])]))),128))]))}});exports.provideFormState=ne.provideFormState;exports.tryUseFormState=ne.tryUseFormState;exports.useFormState=ne.useFormState;exports.AdminApp=hn;exports.AdminShell=vn;exports.AdminSidebar=pn;exports.AdminTopBar=mn;exports.ApiError=de;exports.BadgeEntry=Jn;exports.BarChartWidget=Mt;exports.CheckboxField=Ee;exports.ColumnsLayout=Xn;exports.DashboardPage=xt;exports.DateField=ge;exports.DonutChartWidget=Dt;exports.FieldGalleryPage=zu;exports.FieldRenderer=St;exports.ForbiddenError=cn;exports.ForbiddenPage=Bn;exports.GaugeWidget=Rn;exports.HeatmapWidget=zn;exports.HomePage=wn;exports.IconEntry=Qn;exports.ImportWizardPage=Su;exports.InfolistRenderer=Tn;exports.KeyValueEntry=mt;exports.LayoutRenderer=xe;exports.LocaleSwitcher=kt;exports.LoginForm=Cn;exports.LoginPage=$n;exports.MarkdownWidget=Pn;exports.NetworkError=De;exports.NotFoundError=dn;exports.NotFoundPage=Vn;exports.NotificationBell=sn;exports.NotificationsDrawer=vu;exports.NumberField=He;exports.ProfilePage=Ln;exports.RecentTableWidget=Oe;exports.ResourceFormPage=st;exports.ResourceIndexPage=Un;exports.ResourceViewPage=An;exports.RowsLayout=ut;exports.SectionLayout=ke;exports.SelectField=ve;exports.SettingsPage=xn;exports.StatWidget=dt;exports.TabsLayout=Yn;exports.TextAreaField=We;exports.TextEntry=j;exports.TextField=le;exports.ThemeToggle=gt;exports.TwoFactorForm=En;exports.UnauthenticatedError=_t;exports.UnknownEntry=In;exports.UnknownField=$t;exports.UnknownScreenPage=Nn;exports.UnknownWidget=Vt;exports.UserMenu=un;exports.ValidationError=Me;exports.WidgetRenderer=bn;exports.buildRoutesFromManifest=Wn;exports.clearAdminClient=ln;exports.clearInfolistRegistry=Vs;exports.clearRegistry=fs;exports.clearWidgetRegistry=Dl;exports.createAdminApp=Yd;exports.createAdminClient=On;exports.createAdminRouter=Gn;exports.createAuthGuard=Hn;exports.createTitleGuard=Kn;exports.getAdminClient=H;exports.getField=Et;exports.getInfolistEntry=ct;exports.getLayout=it;exports.getWidget=gn;exports.hasAdminClient=rn;exports.hasField=ss;exports.hasInfolistEntry=ws;exports.hasLayout=us;exports.hasWidget=Ml;exports.isError=td;exports.isSuccess=jn;exports.listFields=cs;exports.listInfolistEntries=Bs;exports.listLayouts=ms;exports.listWidgets=kn;exports.loadBootstrap=Jd;exports.provideRecord=Fn;exports.readCsrfFromMeta=Qd;exports.readInlineBootstrap=ta;exports.registerBuiltinComponents=Zn;exports.registerBuiltinInfolistEntries=ea;exports.registerBuiltinWidgets=qn;exports.registerComponents=Mn;exports.registerField=is;exports.registerInfolistEntries=Dn;exports.registerInfolistEntry=bs;exports.registerLayout=ds;exports.registerWidget=Ul;exports.registerWidgets=_n;exports.setAdminClient=yt;exports.toApiError=rt;exports.tryUseRecord=Ie;exports.useAuthStore=re;exports.useLocaleStore=Se;exports.useManifestStore=ce;exports.useMenuStore=bt;exports.useNotificationsStore=Ue;exports.useRecord=Ts;exports.useResourceFormStore=Ct;exports.useResourceIndexStore=Nt;exports.useThemeStore=Ye;
|
|
3
|
+
Текст…`),u=e.ref("LABEL"),f=e.ref("0"),y=e.ref("50"),m=e.ref("Янв, Фев, Мар, Апр"),w=e.ref("10, 20, 15, 30"),v=e.ref(""),k=e.ref("5");e.watch(()=>a.open,_=>{if(_)if(a.mode==="configure"&&a.item){const b=a.item.config??{};o.value=a.item.type??"",l.value=b.title??a.initialTitle,s.value=String(a.item.size??6),d.value=b.content??d.value;const h=b.stats?.[0];h&&(u.value=String(h.label??""),f.value=String(h.value??"")),y.value=String(b.value??50);const U=b.labels,A=b.datasets;U&&U.length>0&&(m.value=U.join(", ")),A&&A[0]?.data&&(w.value=A[0].data.join(", ")),v.value=b.resource??"",k.value=String(b.limit??5)}else o.value="",l.value="",s.value="6"});const p=e.computed(()=>o.value!==""&&l.value.trim()!==""),C={stat:"Stat — карточка с числом",stats:"Stats overview — несколько метрик",chart:"Chart — линия / столбцы / донат","bar-chart":"Bar chart — гистограмма","donut-chart":"Donut — кольцевая диаграмма","recent-table":"Recent list — последние записи",recent_list:"Recent list — последние записи","recent-list":"Recent list — последние записи",heatmap:"Heatmap — тепловая карта",gauge:"Gauge — шкала со значением",markdown:"Markdown — заметка / текст"};function B(_){return _==="markdown"?"markdown":_==="stat"||_==="stats"?"stat":_==="gauge"?"gauge":_==="chart"||_==="bar-chart"||_==="donut-chart"?"chart":_==="recent-table"||_==="recent_list"||_==="recent-list"?"recent":null}function E(){const _={title:l.value};switch(B(o.value)){case"markdown":_.content=d.value;break;case"stat":_.stats=[{label:u.value,value:f.value}];break;case"gauge":_.value=Number(y.value)||0,_.min=0,_.max=100;break;case"chart":{const b=m.value.split(",").map(U=>U.trim()).filter(Boolean),h=w.value.split(",").map(U=>Number(U.trim())).filter(U=>!Number.isNaN(U));_.labels=b,_.datasets=[{label:l.value,data:h}],_.type=o.value==="donut-chart"?"doughnut":"bar";break}case"recent":_.resource=v.value,_.limit=Number(k.value)||5;break}return _}function V(){if(!p.value)return;const _=Math.max(1,Math.min(12,Number(s.value)||6)),b=E();if(a.mode==="configure"&&a.item)r("save",{size:_,type:o.value,config:b});else{const h=`custom.${o.value}.${Date.now()}`;r("add",{slug:h,type:o.value,size:_,config:b})}r("close")}function T(){r("close")}return(_,b)=>(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[e.createVNode(e.Transition,{name:"admin-dialog"},{default:e.withCtx(()=>[t.open?(e.openBlock(),e.createElementBlock("div",Ol,[e.createElementVNode("div",{class:"admin-dialog-root__backdrop",onClick:T}),e.createElementVNode("div",Wl,[e.createElementVNode("header",Hl,[e.createElementVNode("h2",Kl,e.toDisplayString(t.mode==="add"?"Добавить виджет":"Настроить виджет"),1),e.createElementVNode("button",{type:"button",class:"admin-dialog__close","aria-label":"Закрыть",onClick:T},[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(Ee),size:16},null,8,["icon"])])]),e.createElementVNode("div",Gl,[t.mode==="add"?(e.openBlock(),e.createElementBlock("div",Xl,[b[10]||(b[10]=e.createElementVNode("label",{class:"admin-dialog__label"},"Тип виджета",-1)),e.createElementVNode("div",Yl,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,h=>(e.openBlock(),e.createElementBlock("button",{key:h,type:"button",class:e.normalizeClass(["admin-dialog__type-card",{"admin-dialog__type-card--active":o.value===h}]),onClick:U=>o.value=h},[e.createElementVNode("span",Jl,e.toDisplayString(h),1),e.createElementVNode("span",Ql,e.toDisplayString(C[h]??""),1)],10,Zl))),128))])])):(e.openBlock(),e.createElementBlock("div",er,[b[11]||(b[11]=e.createElementVNode("label",{class:"admin-dialog__label"},"Тип",-1)),e.createElementVNode("div",tr,e.toDisplayString(o.value||"unknown"),1)])),e.createElementVNode("div",nr,[b[12]||(b[12]=e.createElementVNode("label",{class:"admin-dialog__label"},"Заголовок",-1)),e.createVNode(e.unref(c.UidInput),{modelValue:l.value,"onUpdate:modelValue":b[0]||(b[0]=h=>l.value=h),placeholder:"Название виджета"},null,8,["modelValue"])]),e.createElementVNode("div",ar,[b[13]||(b[13]=e.createElementVNode("label",{class:"admin-dialog__label"},"Ширина (1..12)",-1)),e.createVNode(e.unref(c.UidInput),{modelValue:s.value,"onUpdate:modelValue":b[1]||(b[1]=h=>s.value=h),type:"number"},null,8,["modelValue"])]),B(o.value)==="markdown"?(e.openBlock(),e.createElementBlock("div",or,[b[14]||(b[14]=e.createElementVNode("label",{class:"admin-dialog__label"},"Markdown содержимое",-1)),e.withDirectives(e.createElementVNode("textarea",{"onUpdate:modelValue":b[2]||(b[2]=h=>d.value=h),class:"admin-dialog__textarea",rows:"6"},null,512),[[e.vModelText,d.value]])])):B(o.value)==="stat"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:3},[e.createElementVNode("div",lr,[b[15]||(b[15]=e.createElementVNode("label",{class:"admin-dialog__label"},"Метка",-1)),e.createVNode(e.unref(c.UidInput),{modelValue:u.value,"onUpdate:modelValue":b[3]||(b[3]=h=>u.value=h)},null,8,["modelValue"])]),e.createElementVNode("div",rr,[b[16]||(b[16]=e.createElementVNode("label",{class:"admin-dialog__label"},"Значение",-1)),e.createVNode(e.unref(c.UidInput),{modelValue:f.value,"onUpdate:modelValue":b[4]||(b[4]=h=>f.value=h)},null,8,["modelValue"])])],64)):B(o.value)==="gauge"?(e.openBlock(),e.createElementBlock("div",ir,[b[17]||(b[17]=e.createElementVNode("label",{class:"admin-dialog__label"},"Значение (0..100)",-1)),e.createVNode(e.unref(c.UidInput),{modelValue:y.value,"onUpdate:modelValue":b[5]||(b[5]=h=>y.value=h),type:"number"},null,8,["modelValue"])])):B(o.value)==="chart"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:5},[e.createElementVNode("div",sr,[b[18]||(b[18]=e.createElementVNode("label",{class:"admin-dialog__label"},"Метки (через запятую)",-1)),e.createVNode(e.unref(c.UidInput),{modelValue:m.value,"onUpdate:modelValue":b[6]||(b[6]=h=>m.value=h),placeholder:"Янв, Фев, Мар"},null,8,["modelValue"])]),e.createElementVNode("div",cr,[b[19]||(b[19]=e.createElementVNode("label",{class:"admin-dialog__label"},"Значения (через запятую)",-1)),e.createVNode(e.unref(c.UidInput),{modelValue:w.value,"onUpdate:modelValue":b[7]||(b[7]=h=>w.value=h),placeholder:"10, 20, 15"},null,8,["modelValue"])])],64)):B(o.value)==="recent"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:6},[e.createElementVNode("div",dr,[b[20]||(b[20]=e.createElementVNode("label",{class:"admin-dialog__label"},"Resource slug",-1)),e.createVNode(e.unref(c.UidInput),{modelValue:v.value,"onUpdate:modelValue":b[8]||(b[8]=h=>v.value=h),placeholder:"articles"},null,8,["modelValue"])]),e.createElementVNode("div",ur,[b[21]||(b[21]=e.createElementVNode("label",{class:"admin-dialog__label"},"Limit",-1)),e.createVNode(e.unref(c.UidInput),{modelValue:k.value,"onUpdate:modelValue":b[9]||(b[9]=h=>k.value=h),type:"number"},null,8,["modelValue"])])],64)):e.createCommentVNode("",!0)]),e.createElementVNode("footer",mr,[e.createVNode(e.unref(c.UidButton),{variant:"ghost",onClick:T},{default:e.withCtx(()=>[...b[22]||(b[22]=[e.createTextVNode("Отмена",-1)])]),_:1}),e.createVNode(e.unref(c.UidButton),{variant:"primary",disabled:!p.value,onClick:V},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(t.mode==="add"?"Добавить":"Сохранить"),1)]),_:1},8,["disabled"])])])])):e.createCommentVNode("",!0)]),_:1})]))}}),pr={class:"admin-page admin-dashboard"},vr={class:"admin-page__hd"},hr={class:"admin-page__title-wrap"},gr={class:"admin-page__title"},yr={key:0,class:"admin-page__count"},kr={class:"admin-page__actions"},_r=["draggable","onDragstart","onDrop"],br=["onMousedown"],wr=140,Br=16,Dt=e.defineComponent({__name:"DashboardPage",props:{slug:{default:void 0},widgets:{default:void 0},title:{default:void 0},subtitle:{default:void 0}},emits:["change-period","export"],setup(t,{emit:n}){const a=t,r=n,i=de(),o=xn(),l=Mt(),s=X.useRoute(),d=e.computed(()=>{if(a.slug)return a.slug;const F=s?.meta?.slug;if(typeof F=="string"&&F.length>0)return F;const z=s?.params?.slug;if(typeof z=="string"&&z.length>0)return z}),u=(F,z)=>l.has(F)?l.t(F):z,f=e.computed(()=>{const F=d.value;return!F||!i.manifest?null:i.manifest.dashboards?.find(q=>q.slug===F)??null}),y=e.computed(()=>a.widgets?a.widgets:E.value!==null?E.value:f.value?.widgets??[]),m=e.computed(()=>a.title??f.value?.label??"Dashboard"),w=e.computed(()=>a.subtitle??f.value?.description??null),v=e.computed(()=>{const F=new Map;for(const P of y.value){const W=String(P.slug??"");W&&F.set(W,P)}const z=o.draft,q=[];if(z.length>0){for(const P of z){const W=F.get(P.slug)??null;if(F.delete(P.slug),P.hidden)continue;let G=null;if(W!==null)G={...W,size:P.size??W.size??12};else if(P.type){const ue=P.config??{};G={slug:P.slug,type:P.type,title:ue.title??"",size:P.size??6,data:ue}}G&&q.push({node:G,layoutSlug:P.slug})}for(const[P,W]of F.entries())q.push({node:W,layoutSlug:P})}else for(const P of y.value)q.push({node:P,layoutSlug:String(P.slug??"")});return q});function k(F){const z=F.size??F.span;return Math.max(1,Math.min(12,typeof z=="number"?z:12))}function p(F,z){const P=o.draft.find(ue=>ue.slug===F)?.config?.rowSpan;if(typeof P=="number")return Math.max(1,Math.min(6,P));const W=z.rowSpan??z.row_span;if(typeof W=="number")return Math.max(1,Math.min(6,W));const G=String(z.type??"");return G==="stats"||G==="stat"?1:G==="gauge"||G==="chart"||G==="bar-chart"||G==="donut-chart"||G==="heatmap"||G==="recent_list"||G==="recent-list"||G==="recent-table"||G==="markdown"||G==="iframe"||G==="table"?2:1}const C=e.computed(()=>[{key:"7d",label:u("admin.dashboard.period.7d","За 7 дней")},{key:"30d",label:u("admin.dashboard.period.30d","За 30 дней")},{key:"90d",label:u("admin.dashboard.period.90d","За 90 дней")},{key:"all",label:u("admin.dashboard.period.all","Всё время")}]),B=e.ref("30d"),E=e.ref(null);async function V(F,z){B.value=F,r("change-period",F),await T()}async function T(){const F=d.value;if(F)try{const{getAdminClient:z}=await Promise.resolve().then(()=>ee),P=await z().get(`/dashboard/widgets?key=${encodeURIComponent(F)}&period=${encodeURIComponent(B.value)}`);E.value=P.widgets}catch{}}e.onMounted(async()=>{i.manifest===null&&await i.load().catch(()=>{});const F=d.value;F&&await o.openDashboard(F).catch(()=>{})}),e.watch(()=>d.value,async(F,z)=>{F!==z&&(F?await o.openDashboard(F).catch(()=>{}):o.reset())});const _=e.computed(()=>C.value.find(F=>F.key===B.value)?.label??u("admin.dashboard.period.label","Период")),b=e.ref(null),h=e.ref(null),U=e.ref("");function A(){b.value="add",h.value=null,U.value=""}function j(){b.value=null}function H(){o.enterEditMode()}function fe(){o.cancelEdit()}async function oe(){await o.saveLayout().catch(()=>{})}function D(F){o.draft.some(q=>q.slug===F)?o.removeWidget(F):o.addWidget({slug:F,hidden:!0})}function S(F){Te();const z=o.draft.find(W=>W.slug===F)??null,P=v.value.find(W=>W.layoutSlug===F)?.node;h.value=z??{slug:F,type:P?.type??"",size:P?.size??6,config:{}},U.value=P?.title??"",b.value="configure"}function N(F){o.addWidget(F)}function L(F){if(!h.value)return;const z=h.value.slug;if(o.draft.some(P=>P.slug===z)){const P=o.draft.find(W=>W.slug===z);o.updateWidget(z,{...F,config:{...P?.config??{},...F.config??{}}})}else o.addWidget({slug:z,type:h.value.type,...F})}const Y=e.ref(null),J=e.ref(!1);function pe(F){if(!o.editMode){J.value=!1;return}const z=F.target;J.value=!!z?.closest('[data-drag-handle="true"]')}function ve(F,z){if(o.editMode&&z.dataTransfer!==null){if(!J.value){z.preventDefault();return}Y.value=F,z.dataTransfer.effectAllowed="move",z.dataTransfer.setData("text/plain",String(F))}}function ne(){J.value=!1}function he(F){o.editMode&&Y.value!==null&&F.preventDefault()}function ce(F,z){if(z.preventDefault(),!o.editMode||Y.value===null)return;const q=Y.value;Te(),o.moveWidget(q,F),Y.value=null}function Te(){if(o.draft.length===v.value.length)return;const F=v.value.map(({node:z,layoutSlug:q},P)=>{const W=o.draft.find(G=>G.slug===q);return{slug:q,size:k(z),position:P,hidden:W?.hidden??!1,type:W?.type??z.type,config:W?.config}});o.setDraft(F)}const ie=e.ref(null);let qe=0;function we(F,z,q,P){if(!o.editMode)return;F.preventDefault(),F.stopPropagation(),Te(),ie.value={slug:z,startX:F.clientX,startY:F.clientY,startSpan:q,startRowSpan:P},qe=F.target.closest(".admin-dashboard__grid")?.getBoundingClientRect().width??1200,window.addEventListener("mousemove",je),window.addEventListener("mouseup",Be)}function je(F){if(!ie.value)return;const z=qe/12,q=Math.round((F.clientX-ie.value.startX)/z),P=Math.max(1,Math.min(12,ie.value.startSpan+q)),W=wr+Br,G=Math.round((F.clientY-ie.value.startY)/W),ue=Math.max(1,Math.min(6,ie.value.startRowSpan+G)),Ve=o.draft.find(st=>st.slug===ie.value.slug);if(!Ve)return;const me=Ve.config?.rowSpan,xe={};Ve.size!==P&&(xe.size=P),me!==ue&&(xe.config={...Ve.config??{},rowSpan:ue}),Object.keys(xe).length>0&&o.updateWidget(ie.value.slug,xe)}function Be(){ie.value=null,window.removeEventListener("mousemove",je),window.removeEventListener("mouseup",Be)}function Oe(){r("export")}return(F,z)=>(e.openBlock(),e.createElementBlock("section",pr,[e.createElementVNode("header",vr,[e.createElementVNode("div",hr,[e.createElementVNode("h1",gr,e.toDisplayString(m.value),1),w.value?(e.openBlock(),e.createElementBlock("div",yr,e.toDisplayString(w.value),1)):e.createCommentVNode("",!0)]),e.createElementVNode("div",kr,[e.renderSlot(F.$slots,"actions"),e.createVNode(e.unref(c.UidMenu),null,{trigger:e.withCtx(()=>[e.createVNode(e.unref(c.UidButton),{variant:"ghost",size:"md"},{prepend:e.withCtx(()=>[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(nn),size:14},null,8,["icon"])]),append:e.withCtx(()=>[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(an),size:14},null,8,["icon"])]),default:e.withCtx(()=>[e.createTextVNode(" "+e.toDisplayString(_.value)+" ",1)]),_:1})]),default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(C.value,q=>(e.openBlock(),e.createBlock(e.unref(c.UidMenuItem),{key:q.key,onClick:P=>V(q.key)},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(q.label),1)]),_:2},1032,["onClick"]))),128))]),_:1}),e.createVNode(e.unref(c.UidButton),{variant:"secondary",size:"md",onClick:Oe},{prepend:e.withCtx(()=>[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(on),size:14},null,8,["icon"])]),default:e.withCtx(()=>[z[0]||(z[0]=e.createTextVNode(" Export ",-1))]),_:1}),e.unref(o).editMode?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createVNode(e.unref(c.UidButton),{variant:"secondary",size:"md",onClick:A},{prepend:e.withCtx(()=>[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(ot),size:14},null,8,["icon"])]),default:e.withCtx(()=>[z[2]||(z[2]=e.createTextVNode(" Add widget ",-1))]),_:1}),e.createVNode(e.unref(c.UidButton),{variant:"ghost",size:"md",onClick:fe},{prepend:e.withCtx(()=>[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(Bt),size:14},null,8,["icon"])]),default:e.withCtx(()=>[z[3]||(z[3]=e.createTextVNode(" Отмена ",-1))]),_:1}),e.createVNode(e.unref(c.UidButton),{variant:"primary",size:"md",loading:e.unref(o).saving,disabled:e.unref(o).saving,onClick:oe},{default:e.withCtx(()=>[...z[4]||(z[4]=[e.createTextVNode(" Сохранить ",-1)])]),_:1},8,["loading","disabled"])],64)):(e.openBlock(),e.createBlock(e.unref(c.UidButton),{key:0,variant:"secondary",size:"md",onClick:H},{prepend:e.withCtx(()=>[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(wt),size:14},null,8,["icon"])]),default:e.withCtx(()=>[z[1]||(z[1]=e.createTextVNode(" Редактировать ",-1))]),_:1}))])]),e.createElementVNode("div",{class:e.normalizeClass(["admin-dashboard__grid",{"admin-dashboard__grid--editing":e.unref(o).editMode}])},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(v.value,(q,P)=>(e.openBlock(),e.createElementBlock("div",{key:q.layoutSlug,class:e.normalizeClass(["admin-dashboard__cell",{"admin-dashboard__cell--editing":e.unref(o).editMode}]),draggable:e.unref(o).editMode,style:e.normalizeStyle({gridColumn:`span ${k(q.node)} / span ${k(q.node)}`,gridRow:`span ${p(q.layoutSlug,q.node)} / span ${p(q.layoutSlug,q.node)}`}),onPointerdown:pe,onDragstart:W=>ve(P,W),onDragover:he,onDrop:W=>ce(P,W),onDragend:ne},[e.createVNode($n,{node:q.node},null,8,["node"]),e.unref(o).editMode?(e.openBlock(),e.createBlock(jl,{key:0,onConfigure:W=>S(q.layoutSlug),onRemove:W=>D(q.layoutSlug)},null,8,["onConfigure","onRemove"])):e.createCommentVNode("",!0),e.unref(o).editMode?(e.openBlock(),e.createElementBlock("span",{key:1,class:"admin-dashboard__resize","aria-label":"Изменить размер",onMousedown:W=>we(W,q.layoutSlug,k(q.node),p(q.layoutSlug,q.node))},null,40,br)):e.createCommentVNode("",!0)],46,_r))),128))],2),e.createVNode(fr,{open:b.value!==null,mode:b.value??"add",item:h.value,"initial-title":U.value,onClose:j,onAdd:N,onSave:L},null,8,["open","mode","item","initial-title"])]))}}),Vr={key:1,class:"admin-home"},xr={class:"admin-home__title"},Nr={key:0,class:"admin-home__resources"},Cr={class:"admin-home__grid"},Er=["onClick"],$r={class:"admin-home__card-label"},Sr={class:"admin-home__card-slug"},Sn=e.defineComponent({__name:"HomePage",setup(t){const n=de(),a=re(),r=X.useRouter(),i=e.computed(()=>a.user?.name??""),o=e.computed(()=>n.manifest?.resources??[]),l=e.computed(()=>n.manifest?.dashboards??[]),s=e.computed(()=>l.value[0]?.slug??null),d=xn();return e.watch(s,u=>{u&&d.openDashboard(u)},{immediate:!0}),(u,f)=>s.value?(e.openBlock(),e.createBlock(Dt,{key:0,slug:s.value},null,8,["slug"])):(e.openBlock(),e.createElementBlock("div",Vr,[e.createVNode(e.unref(c.UidCard),{padding:"lg",class:"admin-home__hero"},{default:e.withCtx(()=>[e.createElementVNode("h1",xr,"Добро пожаловать"+e.toDisplayString(i.value?", "+i.value:""),1),f[0]||(f[0]=e.createElementVNode("p",{class:"admin-home__lead"}," Админ-панель готова. Зарегистрируйте DashboardScreen чтобы увидеть widget-grid здесь, либо переходите к ресурсам ниже. ",-1))]),_:1}),o.value.length?(e.openBlock(),e.createElementBlock("section",Nr,[f[1]||(f[1]=e.createElementVNode("h2",{class:"admin-home__heading"},"Ресурсы",-1)),e.createElementVNode("ul",Cr,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,y=>(e.openBlock(),e.createElementBlock("li",{key:y.slug},[e.createElementVNode("button",{type:"button",class:"admin-home__card",onClick:m=>e.unref(r).push({name:`admin.resource.${y.slug}.index`})},[e.createElementVNode("span",$r,e.toDisplayString(y.label),1),e.createElementVNode("span",Sr,e.toDisplayString(y.slug),1)],8,Er)]))),128))])])):e.createCommentVNode("",!0)]))}}),Mr={class:"admin-status-page"},Mn=e.defineComponent({__name:"ForbiddenPage",setup(t){const n=X.useRouter();return(a,r)=>(e.openBlock(),e.createElementBlock("div",Mr,[e.createVNode(e.unref(c.UidCard),{padding:"lg",class:"admin-status-page__card"},{default:e.withCtx(()=>[r[2]||(r[2]=e.createElementVNode("h1",{class:"admin-status-page__code"},"403",-1)),r[3]||(r[3]=e.createElementVNode("p",{class:"admin-status-page__message"},"Доступ запрещён.",-1)),e.createVNode(e.unref(c.UidButton),{variant:"ghost",onClick:r[0]||(r[0]=i=>e.unref(n).replace({name:"admin.home"}))},{default:e.withCtx(()=>[...r[1]||(r[1]=[e.createTextVNode(" На главную ",-1)])]),_:1})]),_:1})]))}}),Ur={class:"admin-status-page"},Un=e.defineComponent({__name:"NotFoundPage",setup(t){const n=X.useRouter();return(a,r)=>(e.openBlock(),e.createElementBlock("div",Ur,[e.createVNode(e.unref(c.UidCard),{padding:"lg",class:"admin-status-page__card"},{default:e.withCtx(()=>[r[2]||(r[2]=e.createElementVNode("h1",{class:"admin-status-page__code"},"404",-1)),r[3]||(r[3]=e.createElementVNode("p",{class:"admin-status-page__message"},"Страница не найдена.",-1)),e.createVNode(e.unref(c.UidButton),{variant:"ghost",onClick:r[0]||(r[0]=i=>e.unref(n).replace({name:"admin.home"}))},{default:e.withCtx(()=>[...r[1]||(r[1]=[e.createTextVNode(" На главную ",-1)])]),_:1})]),_:1})]))}}),Dr={class:"admin-settings-page"},Tr={class:"admin-settings-page__title"},Ir={key:0,class:"admin-settings-page__hint"},Ar={key:1,class:"admin-settings-page__debug"},Dn=e.defineComponent({__name:"SettingsPage",setup(t){const n=X.useRoute(),a=de(),r=e.computed(()=>String(n.params.slug??"")),i=e.computed(()=>a.manifest?.settings?.find(o=>o.slug===r.value)??null);return(o,l)=>(e.openBlock(),e.createElementBlock("div",Dr,[e.createVNode(e.unref(c.UidCard),{padding:"lg"},{default:e.withCtx(()=>[e.createElementVNode("h1",Tr,e.toDisplayString(i.value?.label??r.value),1),i.value?(e.openBlock(),e.createElementBlock("pre",Ar,e.toDisplayString(JSON.stringify(i.value.fields,null,2)),1)):(e.openBlock(),e.createElementBlock("p",Ir," Settings «"+e.toDisplayString(r.value)+"» не найдено в manifest'е. ",1))]),_:1})]))}}),Fr=ae.defineStore("admin-screen",()=>{const t=e.ref(null),n=e.ref(""),a=e.ref(null),r=e.ref([]),i=e.ref([]),o=e.ref([]),l=e.ref(null),s=e.ref({}),d=e.ref({}),u=e.ref({}),f=e.ref(!1),y=e.ref(!1),m=e.ref(null),w=e.ref(null),v=e.computed(()=>m.value!==null);function k(h,U){for(const A of Object.keys(h))delete h[A];Object.assign(h,U)}function p(h){return h.map(U=>C(U))}function C(h){const U={...h};return Array.isArray(h.children)&&h.items===void 0?U.items=h.children.map(A=>typeof A=="object"&&A!==null?C(A):A):Array.isArray(h.items)&&(U.items=h.items.map(A=>typeof A=="object"&&A!==null?C(A):A)),h.props&&typeof h.props=="object"&&Object.assign(U,h.props),U}function B(){t.value=null,n.value="",a.value=null,r.value=[],i.value=[],o.value=[],l.value=null,k(s.value,{}),k(d.value,{}),u.value={},f.value=!1,y.value=!1,m.value=null,w.value=null}async function E(h,U){t.value=h,f.value=!0,m.value=null,u.value={};try{const j=await K().get(`/${h}/state`,{params:U});n.value=j.name,a.value=j.description,r.value=p(j.layout),i.value=j.command_bar,o.value=j.permissions,l.value=j.etag,k(s.value,j.state),k(d.value,j.state)}catch(A){throw m.value=A instanceof Error?A:new Error(String(A)),A}finally{f.value=!1}}async function V(h,U){if(!t.value)throw new Error("useScreenStore.runMethod() before slug set");if(y.value)throw new Error("Already running a method");y.value=!0,m.value=null,u.value={},w.value=null;try{const A=K(),j=U??s.value,H=await A.post(`/${t.value}/runMethod`,{method:h,payload:j});return H.state&&Object.keys(H.state).length>0&&(k(s.value,H.state),k(d.value,{...H.state})),H.message&&(w.value=H.message),H.refresh&&await E(t.value).catch(()=>{}),H}catch(A){throw A instanceof $e?u.value={...A.fields}:(A instanceof se||A instanceof Error)&&(m.value=A),A}finally{y.value=!1}}function T(h,U){if(s.value[h]=U,u.value[h]){const A={...u.value};delete A[h],u.value=A}}function _(h){u.value={...h}}function b(){u.value={}}return{slug:t,name:n,description:a,layout:r,commandBar:i,permissions:o,etag:l,state:s,initial:d,errors:u,loading:f,running:y,error:m,lastMessage:w,hasError:v,reset:B,load:E,runMethod:V,setField:T,setErrors:_,clearErrors:b}}),Tt=Symbol("admin.infolist-record");function It(t){e.provide(Tt,t)}function Lr(){const t=e.inject(Tt);if(!t)throw new Error("useRecord() called outside of provideRecord() scope");return t}function Pe(){return e.inject(Tt,null)}const Me=it(),Ue=it(),zr=Me.register,At=Me.get,Rr=Me.has,Pr=Me.list,qr=Ue.register,vt=Ue.get,jr=Ue.has,Or=Ue.list;function Wr(){Me.clear(),Ue.clear()}function Tn(t){t.fields&&Me.registerBundle(t.fields),t.layouts&&Ue.registerBundle(t.layouts)}const Ft=e.defineComponent({__name:"UnknownField",props:{type:{},name:{}},setup(t){return(n,a)=>(e.openBlock(),e.createBlock(e.unref(c.UidAlert),{variant:"warning"},{title:e.withCtx(()=>[e.createTextVNode("Неизвестный тип поля: "+e.toDisplayString(t.type),1)]),default:e.withCtx(()=>[t.name?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("code",null,e.toDisplayString(t.name),1),a[0]||(a[0]=e.createTextVNode(" — зарегистрируйте field-компонент через ",-1)),e.createElementVNode("code",null,"registerField('"+e.toDisplayString(t.type)+"', YourComponent)",1),a[1]||(a[1]=e.createTextVNode(". ",-1))],64)):e.createCommentVNode("",!0)]),_:1}))}}),Lt=e.defineComponent({__name:"FieldRenderer",props:{node:{}},setup(t){const n=t,a=e.computed(()=>At(n.node.type)),r=e.computed(()=>{const{type:i,attributes:o,...l}=n.node;return{...l,...o??{}}});return(i,o)=>a.value?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(a.value),e.normalizeProps(e.mergeProps({key:0},r.value)),null,16)):(e.openBlock(),e.createBlock(Ft,{key:1,type:t.node.type,name:t.node.name},null,8,["type","name"]))}}),be=e.defineComponent({__name:"LayoutRenderer",props:{node:{}},setup(t){const n=t,a=e.computed(()=>{if(n.node.kind==="field")return{kind:"field"};if(n.node.kind==="layout"){const l=vt(n.node.type);return l?{kind:"layout",component:l}:{kind:"unknown"}}const o=vt(n.node.type);return o?{kind:"layout",component:o}:At(n.node.type)?{kind:"field"}:{kind:"unknown"}}),r=e.computed(()=>{const{type:o,kind:l,...s}=n.node;return s}),i=e.computed(()=>n.node);return(o,l)=>a.value.kind==="layout"&&a.value.component?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(a.value.component),e.normalizeProps(e.mergeProps({key:0},r.value)),null,16)):a.value.kind==="field"?(e.openBlock(),e.createBlock(Lt,{key:1,node:i.value},null,8,["node"])):(e.openBlock(),e.createBlock(Ft,{key:2,type:t.node.type,name:t.node.name},null,8,["type","name"]))}}),Hr={class:"admin-page admin-screen-page"},Kr={class:"admin-page__hd"},Gr={class:"admin-page__title-wrap"},Xr={class:"admin-page__title"},Yr={key:0,class:"admin-screen-page__description"},Zr={key:0,class:"admin-page__actions"},Jr={key:2,class:"admin-screen-page__loading"},In=e.defineComponent({__name:"ScreenPage",props:{slug:{default:null}},setup(t){const n=t,a=X.useRoute(),r=Fr(),i=e.computed(()=>n.slug?n.slug:String(a.params.slug??a.meta?.slug??"")),o=te.provideFormState(r.state,r.errors);It(r.state),e.watch(()=>r.errors,f=>{o.setErrors({...f})},{deep:!0});const l=e.computed(()=>r.layout.filter(f=>typeof f.type=="string").map(f=>f)),s=e.computed(()=>!r.loading&&i.value!=="");e.onMounted(async()=>{i.value&&await r.load(i.value).catch(()=>{})}),e.watch(()=>i.value,async f=>{f?await r.load(f).catch(()=>{}):r.reset()});async function d(f){const y=f.attributes?.method;if(y&&!(f.confirm?.message&&!confirm(f.confirm.message)))try{await r.runMethod(y)}catch{}}function u(f){return f.destructive?"danger":f.primary?"primary":"secondary"}return(f,y)=>(e.openBlock(),e.createElementBlock("section",Hr,[e.createElementVNode("header",Kr,[e.createElementVNode("div",Gr,[e.createElementVNode("h1",Xr,e.toDisplayString(e.unref(r).name||i.value),1),e.unref(r).description?(e.openBlock(),e.createElementBlock("p",Yr,e.toDisplayString(e.unref(r).description),1)):e.createCommentVNode("",!0)]),e.unref(r).commandBar.length>0?(e.openBlock(),e.createElementBlock("div",Zr,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(r).commandBar,m=>(e.openBlock(),e.createBlock(e.unref(c.UidButton),{key:m.name,variant:u(m),icon:m.icon??void 0,loading:e.unref(r).running,disabled:e.unref(r).running||e.unref(r).loading,onClick:w=>d(m)},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(m.label),1)]),_:2},1032,["variant","icon","loading","disabled","onClick"]))),128))])):e.createCommentVNode("",!0)]),e.unref(r).hasError?(e.openBlock(),e.createBlock(e.unref(c.UidAlert),{key:0,variant:"danger",class:"admin-screen-page__alert",role:"alert"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(r).error?.message??"Не удалось выполнить действие"),1)]),_:1})):e.unref(r).lastMessage?(e.openBlock(),e.createBlock(e.unref(c.UidAlert),{key:1,variant:"success",class:"admin-screen-page__alert",role:"status"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(r).lastMessage),1)]),_:1})):e.createCommentVNode("",!0),e.unref(r).loading?(e.openBlock(),e.createElementBlock("div",Jr,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(4,m=>e.createVNode(e.unref(c.UidSkeleton),{key:m,height:"40px"})),64))])):s.value?(e.openBlock(),e.createBlock(e.unref(c.UidCard),{key:3,padding:"md",class:"admin-screen-page__body"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value,(m,w)=>(e.openBlock(),e.createBlock(be,{key:w,node:m},null,8,["node"]))),128))]),_:1})):e.createCommentVNode("",!0)]))}}),Qr={class:"admin-auth-card__row"},ei=["href"],ti={key:1,style:{"text-align":"center","font-size":"var(--uid-font-size-xs)",color:"var(--uid-text-secondary)","padding-top":"4px"}},ni=["href"],An=e.defineComponent({__name:"LoginForm",props:{forgotUrl:{default:null},ssoLinkLabel:{default:null},ssoUrl:{default:null}},emits:["success"],setup(t,{emit:n}){const a=n,r=re(),i=e.ref(""),o=e.ref(""),l=e.ref(!1),s=e.ref(!1),d=e.ref(null),u=e.ref({}),f=e.computed(()=>u.value.email?.[0]),y=e.computed(()=>u.value.password?.[0]);async function m(){if(!s.value){s.value=!0,d.value=null,u.value={};try{const w=await r.login({email:i.value,password:o.value,remember:l.value});a("success",w)}catch(w){w instanceof $e?(u.value=w.fields,d.value=w.firstFieldMessage()):w instanceof Re?d.value="Нет соединения с сервером":w instanceof se?d.value=w.message||"Не удалось войти":d.value=w.message}finally{s.value=!1}}}return(w,v)=>(e.openBlock(),e.createElementBlock("form",{class:"admin-auth-card__bd",novalidate:"",onSubmit:e.withModifiers(m,["prevent"])},[d.value?(e.openBlock(),e.createBlock(e.unref(c.UidAlert),{key:0,variant:"danger",class:"admin-auth-card__alert",role:"alert"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(d.value),1)]),_:1})):e.createCommentVNode("",!0),e.createVNode(e.unref(c.UidInput),{modelValue:i.value,"onUpdate:modelValue":v[0]||(v[0]=k=>i.value=k),type:"email",label:"Email",placeholder:"you@company.com",autocomplete:"username",required:!0,disabled:s.value,error:f.value,name:"email"},null,8,["modelValue","disabled","error"]),e.createVNode(e.unref(c.UidInput),{modelValue:o.value,"onUpdate:modelValue":v[1]||(v[1]=k=>o.value=k),type:"password",label:"Пароль",autocomplete:"current-password",required:!0,disabled:s.value,error:y.value,name:"password"},null,8,["modelValue","disabled","error"]),e.createElementVNode("div",Qr,[e.createVNode(e.unref(c.UidCheckbox),{modelValue:l.value,"onUpdate:modelValue":v[2]||(v[2]=k=>l.value=k),disabled:s.value},{default:e.withCtx(()=>[...v[3]||(v[3]=[e.createTextVNode(" Запомнить меня ",-1)])]),_:1},8,["modelValue","disabled"]),t.forgotUrl?(e.openBlock(),e.createElementBlock("a",{key:0,href:t.forgotUrl,class:"admin-auth-card__link"}," Забыли пароль? ",8,ei)):e.createCommentVNode("",!0)]),e.createVNode(e.unref(c.UidButton),{type:"submit",variant:"primary",size:"lg",loading:s.value,disabled:s.value},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(s.value?"Вход…":"Войти"),1)]),_:1},8,["loading","disabled"]),t.ssoLinkLabel&&t.ssoUrl?(e.openBlock(),e.createElementBlock("div",ti,[v[4]||(v[4]=e.createTextVNode(" или войдите через ",-1)),e.createElementVNode("a",{href:t.ssoUrl,class:"admin-auth-card__link"},e.toDisplayString(t.ssoLinkLabel),9,ni)])):e.createCommentVNode("",!0)],32))}}),ai=["value","disabled","aria-label","onInput","onKeydown"],oi={class:"admin-auth-card__row"},Fn=e.defineComponent({__name:"TwoFactorForm",emits:["success","cancel"],setup(t,{emit:n}){const a=n,r=re(),i=e.ref("totp"),o=e.ref(["","","","","",""]),l=e.ref(""),s=e.ref([]),d=e.ref(!1),u=e.ref(null),f=e.ref(null),y=e.computed(()=>o.value.join("")),m=e.computed(()=>i.value==="totp"?y.value.length===6:l.value.trim().length>0);function w(V,T){T instanceof HTMLInputElement&&(s.value[V]=T)}function v(V,T){const _=T.target,b=_.value.replace(/\D/g,"").slice(-1);o.value[V]=b,_.value=b,b&&V<o.value.length-1&&e.nextTick(()=>s.value[V+1]?.focus()),y.value.length===o.value.length&&C()}function k(V,T){T.key==="Backspace"&&!o.value[V]&&V>0?e.nextTick(()=>s.value[V-1]?.focus()):T.key==="ArrowLeft"&&V>0?(s.value[V-1]?.focus(),T.preventDefault()):T.key==="ArrowRight"&&V<o.value.length-1&&(s.value[V+1]?.focus(),T.preventDefault())}function p(V){const _=(V.clipboardData?.getData("text")??"").replace(/\D/g,"").slice(0,o.value.length);if(_.length!==0){V.preventDefault();for(let b=0;b<o.value.length;b++)o.value[b]=_[b]??"";e.nextTick(()=>{s.value[Math.min(_.length,o.value.length-1)]?.focus(),_.length===o.value.length&&C()})}}async function C(){if(!(d.value||!m.value)){d.value=!0,u.value=null;try{if(i.value==="totp")await r.twoFactorChallenge(y.value);else{const V=await r.twoFactorRecovery(l.value.trim());f.value=V.remaining}a("success")}catch(V){V instanceof $e?u.value=V.firstFieldMessage()??"Неверный код":V instanceof Re?u.value="Нет соединения с сервером":V instanceof se?u.value=V.message||"Не удалось проверить код":u.value=V.message}finally{d.value=!1}}}function B(){r.cancelChallenge(),a("cancel")}function E(){i.value=i.value==="totp"?"recovery":"totp",u.value=null}return(V,T)=>(e.openBlock(),e.createElementBlock("form",{class:"admin-auth-card__bd",novalidate:"",onSubmit:e.withModifiers(C,["prevent"])},[u.value?(e.openBlock(),e.createBlock(e.unref(c.UidAlert),{key:0,variant:"danger",class:"admin-auth-card__alert",role:"alert"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(u.value),1)]),_:1})):e.createCommentVNode("",!0),f.value!==null?(e.openBlock(),e.createBlock(e.unref(c.UidAlert),{key:1,variant:"info",class:"admin-auth-card__alert",role:"status"},{default:e.withCtx(()=>[e.createTextVNode(" Использован recovery-код. Осталось: "+e.toDisplayString(f.value),1)]),_:1})):e.createCommentVNode("",!0),i.value==="totp"?(e.openBlock(),e.createElementBlock("div",{key:2,class:"admin-code-input",onPaste:p},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,(_,b)=>(e.openBlock(),e.createElementBlock("input",{key:b,ref_for:!0,ref:h=>w(b,h),value:o.value[b],type:"text",inputmode:"numeric",autocomplete:"one-time-code",maxlength:"1",disabled:d.value,"aria-label":`Цифра ${b+1}`,onInput:h=>v(b,h),onKeydown:h=>k(b,h)},null,40,ai))),128))],32)):(e.openBlock(),e.createBlock(e.unref(c.UidInput),{key:3,modelValue:l.value,"onUpdate:modelValue":T[0]||(T[0]=_=>l.value=_),type:"text",label:"Recovery-код",autocomplete:"one-time-code",disabled:d.value,name:"recovery-code"},null,8,["modelValue","disabled"])),e.createVNode(e.unref(c.UidButton),{type:"submit",variant:"primary",size:"lg",loading:d.value,disabled:d.value||!m.value},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(d.value?"Проверка…":"Подтвердить"),1)]),_:1},8,["loading","disabled"]),e.createElementVNode("div",oi,[e.createElementVNode("button",{type:"button",class:"admin-auth-card__link",onClick:E},[i.value==="totp"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode("Использовать recovery-код")],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode("Вернуться к коду из приложения")],64))]),e.createElementVNode("button",{type:"button",class:"admin-auth-card__link",onClick:B}," Отмена ")])],32))}}),li={class:"admin-auth-page"},ri={key:0,class:"admin-auth-page__corner"},ii={class:"admin-auth-card__hd"},si=["src","alt"],ci={key:1,"aria-hidden":"true"},di={key:2},ui={class:"admin-auth-card__title"},mi={class:"admin-auth-card__sub"},Ln=e.defineComponent({__name:"LoginPage",props:{brandName:{default:"Laravel Admin"},brandMark:{default:null},brandLogo:{default:null},homeRouteName:{default:"admin.home"},redirectQueryKey:{default:"redirect"},forgotUrl:{default:null},ssoLinkLabel:{default:null},ssoUrl:{default:null},showCornerActions:{type:Boolean,default:!0}},setup(t){const n=t,a=re(),r=X.useRouter(),i=X.useRoute();async function o(){const l=i.query[n.redirectQueryKey];if(typeof l=="string"&&l.length>0&&l.startsWith("/")){await r.push(l);return}await r.push({name:n.homeRouteName})}return e.watch(()=>a.isAuthenticated,l=>{l&&o()}),e.onMounted(()=>{a.isAuthenticated&&o()}),(l,s)=>(e.openBlock(),e.createElementBlock("div",li,[t.showCornerActions?(e.openBlock(),e.createElementBlock("div",ri,[e.createVNode(Nt),e.createVNode(Ct)])):e.createCommentVNode("",!0),e.createVNode(e.unref(c.UidCard),{class:e.normalizeClass(["admin-auth-card",e.unref(a).isChallengePending?"admin-auth-card--wide":""]),padding:"none"},{default:e.withCtx(()=>[e.createElementVNode("div",ii,[e.createElementVNode("div",{class:e.normalizeClass(["admin-auth-card__logo",e.unref(a).isChallengePending?"admin-auth-card__logo--accent":""])},[t.brandLogo&&!e.unref(a).isChallengePending?(e.openBlock(),e.createElementBlock("img",{key:0,src:t.brandLogo,alt:t.brandName},null,8,si)):e.unref(a).isChallengePending?(e.openBlock(),e.createElementBlock("span",ci,"🛡")):t.brandMark?(e.openBlock(),e.createElementBlock("span",di,e.toDisplayString(t.brandMark),1)):(e.openBlock(),e.createBlock(rt,{key:3,size:40}))],2),e.createElementVNode("div",ui,[e.unref(a).isChallengePending?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode("Двухфакторная проверка")],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(t.brandName),1)],64))]),e.createElementVNode("div",mi,[e.unref(a).isChallengePending?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(" Введите 6-значный код из приложения-аутентификатора ")],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode("Войдите, чтобы продолжить работу")],64))])]),e.unref(a).isChallengePending?(e.openBlock(),e.createBlock(Fn,{key:0,onSuccess:s[0]||(s[0]=()=>{}),onCancel:s[1]||(s[1]=()=>{})})):(e.openBlock(),e.createBlock(An,{key:1,"forgot-url":t.forgotUrl,"sso-link-label":t.ssoLinkLabel,"sso-url":t.ssoUrl,onSuccess:s[2]||(s[2]=()=>{})},null,8,["forgot-url","sso-link-label","sso-url"]))]),_:1},8,["class"])]))}}),fi={class:"admin-auth-page"},pi={class:"admin-auth-card__hd"},vi={class:"admin-auth-card__logo"},hi={class:"admin-auth-card__sub"},gi={class:"admin-auth-card__body"},yi=e.defineComponent({__name:"ForgotPasswordPage",props:{brandName:{default:"Laravel Admin"},loginRouteName:{default:"admin.login"}},setup(t){const n=X.useRouter(),a=e.ref(""),r=e.ref(!1),i=e.ref(!1);async function o(){if(a.value.trim()===""){Z.error("Введите email.");return}i.value=!0;try{const{getAdminClient:l}=await Promise.resolve().then(()=>ee);await l().post("/auth/forgotPassword",{email:a.value.trim()}),r.value=!0}catch{r.value=!0}finally{i.value=!1}}return(l,s)=>(e.openBlock(),e.createElementBlock("div",fi,[e.createVNode(e.unref(c.UidCard),{padding:"none",class:"admin-auth-card"},{default:e.withCtx(()=>[e.createElementVNode("div",pi,[e.createElementVNode("div",vi,[e.createVNode(rt,{size:40})]),s[2]||(s[2]=e.createElementVNode("div",{class:"admin-auth-card__title"},"Восстановление пароля",-1)),e.createElementVNode("div",hi,e.toDisplayString(r.value?"Если такой email зарегистрирован — мы отправили письмо со ссылкой на сброс.":"Введите email — отправим ссылку для сброса пароля."),1)]),e.createElementVNode("div",gi,[r.value?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("form",{key:0,onSubmit:e.withModifiers(o,["prevent"])},[e.createVNode(e.unref(c.UidInput),{modelValue:a.value,"onUpdate:modelValue":s[0]||(s[0]=d=>a.value=d),type:"email",placeholder:"you@example.com",autocomplete:"email",required:""},null,8,["modelValue"]),e.createVNode(e.unref(c.UidButton),{type:"submit",variant:"primary",class:"admin-auth-card__submit",loading:i.value},{prepend:e.withCtx(()=>[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(cn),size:14},null,8,["icon"])]),default:e.withCtx(()=>[s[3]||(s[3]=e.createTextVNode(" Отправить ссылку ",-1))]),_:1},8,["loading"])],32)),e.createVNode(e.unref(c.UidButton),{variant:"ghost",class:"admin-auth-card__back",onClick:s[1]||(s[1]=d=>e.unref(n).push({name:t.loginRouteName}))},{default:e.withCtx(()=>[...s[4]||(s[4]=[e.createTextVNode(" ← Назад ко входу ",-1)])]),_:1})])]),_:1})]))}}),ki={class:"admin-auth-page"},_i={class:"admin-auth-card__hd"},bi={class:"admin-auth-card__logo"},wi={class:"admin-auth-card__body"},Bi={key:0,class:"admin-auth-card__error"},Vi=e.defineComponent({__name:"ResetPasswordPage",props:{loginRouteName:{default:"admin.login"}},setup(t){const n=t,a=X.useRouter(),r=X.useRoute(),i=e.computed(()=>String(r.query.token??"")),o=e.ref(String(r.query.email??"")),l=e.ref(""),s=e.ref(""),d=e.ref(!1),u=e.ref("");async function f(){if(u.value="",l.value.length<8){u.value="Пароль должен быть не менее 8 символов.";return}if(l.value!==s.value){u.value="Пароли не совпадают.";return}d.value=!0;try{const{getAdminClient:y}=await Promise.resolve().then(()=>ee);await y().post("/auth/resetPassword",{token:i.value,email:o.value,password:l.value,password_confirmation:s.value}),Z.success("Пароль обновлён. Войдите с новым паролем."),await a.push({name:n.loginRouteName})}catch{u.value="Не удалось сбросить пароль. Возможно, ссылка устарела."}finally{d.value=!1}}return(y,m)=>(e.openBlock(),e.createElementBlock("div",ki,[e.createVNode(e.unref(c.UidCard),{padding:"none",class:"admin-auth-card"},{default:e.withCtx(()=>[e.createElementVNode("div",_i,[e.createElementVNode("div",bi,[e.createVNode(rt,{size:40})]),m[3]||(m[3]=e.createElementVNode("div",{class:"admin-auth-card__title"},"Новый пароль",-1)),m[4]||(m[4]=e.createElementVNode("div",{class:"admin-auth-card__sub"},"Задайте новый пароль для своего аккаунта.",-1))]),e.createElementVNode("div",wi,[e.createElementVNode("form",{onSubmit:e.withModifiers(f,["prevent"])},[e.createVNode(e.unref(c.UidInput),{modelValue:o.value,"onUpdate:modelValue":m[0]||(m[0]=w=>o.value=w),type:"email",placeholder:"email",required:""},null,8,["modelValue"]),e.createVNode(e.unref(c.UidInput),{modelValue:l.value,"onUpdate:modelValue":m[1]||(m[1]=w=>l.value=w),type:"password",placeholder:"Новый пароль (мин. 8)",autocomplete:"new-password",required:""},null,8,["modelValue"]),e.createVNode(e.unref(c.UidInput),{modelValue:s.value,"onUpdate:modelValue":m[2]||(m[2]=w=>s.value=w),type:"password",placeholder:"Повторите пароль",autocomplete:"new-password",required:""},null,8,["modelValue"]),u.value?(e.openBlock(),e.createElementBlock("p",Bi,e.toDisplayString(u.value),1)):e.createCommentVNode("",!0),e.createVNode(e.unref(c.UidButton),{type:"submit",variant:"primary",class:"admin-auth-card__submit",loading:d.value},{prepend:e.withCtx(()=>[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(nt),size:14},null,8,["icon"])]),default:e.withCtx(()=>[m[5]||(m[5]=e.createTextVNode(" Сохранить пароль ",-1))]),_:1},8,["loading"])],32)])]),_:1})]))}}),Gt={page:1,per_page:20,total:0,last_page:1},zt=ae.defineStore("admin-resource-index",()=>{const t=e.ref(null),n=e.ref([]),a=e.ref({...Gt}),r=e.ref(!1),i=e.ref(!1),o=e.ref(null);let l=null;const s=200,d=e.ref(""),u=e.ref({}),f=e.ref(null),y=e.ref(null),m=e.ref(new Set),w=e.computed(()=>!r.value&&o.value===null&&n.value.length===0),v=e.computed(()=>m.value.size),k=e.computed(()=>m.value.size>0),p=e.computed(()=>o.value!==null),C=e.computed(()=>m.value.size===0||n.value.length===0?"none":n.value.every(L=>m.value.has(B(L)))?"all":"mixed");function B(N){return N.id??N.key??""}function E(N){t.value!==N&&(t.value=N,V(),r.value=!0)}function V(){n.value=[],a.value={...Gt},r.value=!1,o.value=null,d.value="",u.value={},f.value=null,y.value=null,m.value=new Set}function T(N={}){const L={page:N.page??a.value.page,per_page:N.per_page??a.value.per_page},Y=N.search??d.value;Y&&(L.q=Y);const J=N.sort??f.value,pe=N.direction??y.value;J&&pe!==null&&(L.order=[{column:J,direction:pe}]);const ve=N.filters??u.value,ne={};for(const[he,ce]of Object.entries(ve))ce==null||ce===""||(ne[he]=Array.isArray(ce)?ce.join(","):ce);return Object.keys(ne).length>0&&(L.filters=ne),L}async function _(N={}){if(!t.value)throw new Error("useResourceIndexStore.load() called before setSlug()");r.value=!0,o.value=null,l!==null&&clearTimeout(l),l=setTimeout(()=>{i.value=!0},s);try{const L=K(),Y=T(N),J=await L.post(`/${t.value}/search`,Y);n.value=J.data,a.value=J.meta}catch(L){throw o.value=L instanceof Error?L:new Error(String(L)),L}finally{r.value=!1,i.value=!1,l!==null&&(clearTimeout(l),l=null)}}async function b(N){d.value=N,a.value.page=1,await _()}async function h(N,L){L==null||L===""?delete u.value[N]:u.value[N]=L,a.value.page=1,await _()}async function U(){u.value={},a.value.page=1,await _()}async function A(N,L="asc"){f.value=N,y.value=L,await _()}async function j(N){f.value===N?y.value==="asc"?y.value="desc":y.value==="desc"?(f.value=null,y.value=null):y.value="asc":(f.value=N,y.value="asc"),await _()}async function H(N){a.value.page=N,await _()}function fe(N){const L=new Set(m.value);L.has(N)?L.delete(N):L.add(N),m.value=L}function oe(){if(C.value==="all"){m.value=new Set;return}const N=new Set(m.value);for(const L of n.value)N.add(B(L));m.value=N}function D(){m.value=new Set}function S(N){return m.value.has(N)}return{slug:t,items:n,meta:a,loading:r,slowLoading:i,error:o,search:d,filters:u,sortKey:f,sortDirection:y,selection:m,isEmpty:w,hasError:p,hasSelection:k,selectedCount:v,selectionState:C,setSlug:E,reset:V,load:_,setSearch:b,setFilter:h,clearFilters:U,setSort:A,toggleSort:j,setPage:H,toggleRow:fe,toggleAllOnPage:oe,clearSelection:D,isSelected:S,rowId:B}}),xi=Object.freeze(Object.defineProperty({__proto__:null,useResourceIndexStore:zt},Symbol.toStringTag,{value:"Module"})),Xt="d.m.Y H:i:s",Ni="d.m.Y",Ci=/^\d{4}-\d{2}-\d{2}[T\s]\d{2}:\d{2}/;function zn(t,n,a={}){if(t==null)return"";if(!n&&typeof t=="string"&&Ci.test(t))return mt(t,Xt);switch(n){case"date":return mt(String(t),a.format??Ni);case"datetime":return mt(String(t),a.format??Xt);case"money":return Ei(t,a.currency??"RUB",a.decimals??2);case"boolean":return $i(t,a.trueLabel??"Да",a.falseLabel??"Нет");case"bytes":return Si(t);default:return String(t)}}function mt(t,n){const a=new Date(t);if(isNaN(a.getTime()))return t;const r=(l,s=2)=>String(l).padStart(s,"0"),i={d:r(a.getDate()),m:r(a.getMonth()+1),Y:String(a.getFullYear()),y:r(a.getFullYear()%100),H:r(a.getHours()),h:r((a.getHours()+11)%12+1),i:r(a.getMinutes()),s:r(a.getSeconds()),U:String(Math.floor(a.getTime()/1e3)),c:a.toISOString(),N:String((a.getDay()+6)%7+1),w:String(a.getDay())};let o="";for(let l=0;l<n.length;l++){const s=n[l];if(s==="\\"&&l+1<n.length){o+=n[l+1],l++;continue}o+=i[s]??s}return o}function Ei(t,n,a){const r=typeof t=="number"?t:Number(t);return isNaN(r)?String(t):`${r.toFixed(a)} ${n}`}function $i(t,n,a){return t===!0||t===1||t==="1"||t==="true"?n:a}function Si(t){const n=typeof t=="number"?t:Number(t);return isNaN(n)?String(t):n<1024?`${n} B`:n<1024*1024?`${(n/1024).toFixed(1)} KB`:n<1024*1024*1024?`${(n/1024/1024).toFixed(1)} MB`:`${(n/1024/1024/1024).toFixed(1)} GB`}const Yt=e.defineComponent({name:"FilterEditor",props:{filter:{type:Object,required:!0},draft:{type:null,required:!1,default:null},isChecked:{type:Function,required:!0}},emits:["toggle-option","set-draft"],setup(t,{emit:n}){return()=>{const a=t.filter;if(a.type==="options"&&a.options&&a.options.length>0)return e.h("div",{class:"admin-toolbar__editor admin-toolbar__editor--options"},a.options.map(r=>e.h("label",{key:String(r.value),class:"admin-toolbar__list-item admin-toolbar__list-item--checkbox"},[e.h("input",{type:a.multiple?"checkbox":"radio",checked:t.isChecked(r.value),onChange:()=>n("toggle-option",r.value)}),e.h("span",null,r.label)])));if(a.type==="date_range"){const r=t.draft??{};return e.h("div",{class:"admin-toolbar__editor admin-toolbar__editor--dates"},[e.h("input",{type:"date",value:r.from??"",class:"admin-toolbar__input",placeholder:"От",onChange:i=>n("set-draft",{...r,from:i.target.value})}),e.h("input",{type:"date",value:r.to??"",class:"admin-toolbar__input",placeholder:"До",onChange:i=>n("set-draft",{...r,to:i.target.value})})])}if(a.type==="trashed"){const r=[{value:"without",label:"Без удалённых"},{value:"with",label:"С удалёнными"},{value:"only",label:"Только удалённые"}];return e.h("div",{class:"admin-toolbar__editor admin-toolbar__editor--options"},r.map(i=>e.h("label",{key:i.value,class:"admin-toolbar__list-item admin-toolbar__list-item--checkbox"},[e.h("input",{type:"radio",checked:t.draft===i.value,onChange:()=>n("set-draft",i.value)}),e.h("span",null,i.label)])))}return a.type==="switcher"?e.h("div",{class:"admin-toolbar__editor"},[e.h("label",{class:"admin-toolbar__list-item admin-toolbar__list-item--checkbox"},[e.h("input",{type:"radio",checked:t.draft===!0,onChange:()=>n("set-draft",!0)}),e.h("span",null,"Да")]),e.h("label",{class:"admin-toolbar__list-item admin-toolbar__list-item--checkbox"},[e.h("input",{type:"radio",checked:t.draft===!1,onChange:()=>n("set-draft",!1)}),e.h("span",null,"Нет")])]):e.h("input",{type:"text",value:t.draft??"",class:"admin-toolbar__input",placeholder:a.placeholder??a.label,onChange:r=>n("set-draft",r.target.value)})}}}),Mi={class:"admin-toolbar"},Ui={class:"admin-toolbar__row admin-toolbar__row--filters"},Di={class:"admin-toolbar__search"},Ti=["placeholder"],Ii={key:0,class:"admin-toolbar__divider"},Ai={type:"button",class:"admin-toolbar__chip admin-toolbar__chip--active"},Fi={class:"admin-toolbar__chip-text"},Li=["onClick","onKeydown"],zi={class:"admin-toolbar__popover-actions"},Ri={type:"button",class:"admin-toolbar__chip"},Pi={class:"admin-toolbar__chip-text"},qi={class:"admin-toolbar__popover-actions"},ji={type:"button",class:"admin-toolbar__chip"},Oi=["onClick"],Wi={key:0,class:"admin-toolbar__row admin-toolbar__row--actions"},Hi={type:"button",class:"admin-toolbar__chip"},Ki={class:"admin-toolbar__chip-text"},Gi=["onClick"],Xi={type:"button",class:"admin-toolbar__chip"},Yi=["checked","onChange"],Zi={type:"button",class:"admin-toolbar__chip"},Ji={class:"admin-toolbar__popover-actions"},Zt=4,Qi=e.defineComponent({__name:"AdminFilterToolbar",props:{search:{},searchPlaceholder:{default:"Поиск…"},filters:{},values:{},columns:{},groupBy:{default:null},columnVisibility:{default:()=>({})},enableSavedViews:{type:Boolean,default:!0}},emits:["update:search","apply-filter","reset","group-by","columns-visibility","save-view"],setup(t,{emit:n}){const a=t,r=n,i=e.ref(a.search);e.watch(()=>a.search,D=>{i.value=D});function o(){i.value!==a.search&&r("update:search",i.value)}function l(D){return D==null||D===""||Array.isArray(D)&&D.length===0?!1:typeof D=="object"&&!Array.isArray(D)?Object.values(D).some(N=>N!==null&&N!==""&&N!==void 0):!0}const s=e.computed(()=>a.filters.filter(D=>l(a.values[D.name]))),d=e.computed(()=>a.filters.filter(D=>!l(a.values[D.name]))),u=e.ref(new Set),f=e.computed(()=>d.value.filter((D,S)=>u.value.has(D.name)||S<Zt)),y=e.computed(()=>d.value.filter((D,S)=>!u.value.has(D.name)&&S>=Zt));function m(D){const S=new Set(u.value);S.add(D),u.value=S}const w=e.computed(()=>a.search!==""||s.value.length>0);function v(D){r("apply-filter",D,null)}function k(D){const S=a.values[D.name];if(D.options&&D.options.length>0){const L=(Array.isArray(S)?S:[S]).map(Y=>D.options?.find(J=>String(J.value)===String(Y))?.label??String(Y));return`${D.label}: ${L.join(", ")}`}if(D.type==="date_range"&&S&&typeof S=="object"){const N=S;return`${D.label}: ${N.from??""} – ${N.to??""}`}return D.type==="switcher"?`${D.label}: ${S?"да":"нет"}`:`${D.label}: ${String(S)}`}const p=e.ref({});function C(D){return D in p.value||(p.value[D]=a.values[D]??null),p.value[D]}function B(D,S){p.value={...p.value,[D]:S}}function E(D,S){r("apply-filter",D,p.value[D]??null),S()}function V(D,S,N){if(!N){B(D,S);return}const L=C(D),Y=Array.isArray(L)?[...L]:[],J=Y.findIndex(pe=>String(pe)===String(S));J>=0?Y.splice(J,1):Y.push(S),B(D,Y)}function T(D,S){const N=C(D);return Array.isArray(N)?N.some(L=>String(L)===String(S)):N!=null&&String(N)===String(S)}const _=e.computed(()=>a.columns.filter(D=>D.groupable===!0&&(D.key??D.name)));function b(D,S){r("group-by",D),S()}function h(D){return String(D.key??D.name??"")}function U(D){return String(D.label??D.name??D.key??"")}function A(D){const S=h(D);return S in a.columnVisibility?a.columnVisibility[S]:!0}function j(D){const S=h(D);r("columns-visibility",{...a.columnVisibility,[S]:!A(D)})}const H=e.ref("");function fe(D){H.value.trim()!==""&&(r("save-view",H.value.trim()),H.value="",D())}function oe(D){return bn(D)??null}return(D,S)=>(e.openBlock(),e.createElementBlock("div",Mi,[e.createElementVNode("div",Ui,[e.createElementVNode("label",Di,[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(Vt),size:14,class:"admin-toolbar__search-icon"},null,8,["icon"]),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":S[0]||(S[0]=N=>i.value=N),type:"search",placeholder:t.searchPlaceholder,class:"admin-toolbar__search-input",onKeydown:e.withKeys(o,["enter"]),onBlur:o},null,40,Ti),[[e.vModelText,i.value]])]),t.filters.length>0?(e.openBlock(),e.createElementBlock("span",Ii)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,N=>(e.openBlock(),e.createBlock(e.unref(c.UidMenu),{key:`active-${N.name}`},{trigger:e.withCtx(()=>[e.createElementVNode("button",Ai,[oe(N.icon)!==null?(e.openBlock(),e.createBlock(e.unref(c.UidIcon),{key:0,icon:oe(N.icon),size:14},null,8,["icon"])):e.createCommentVNode("",!0),e.createElementVNode("span",Fi,e.toDisplayString(k(N)),1),e.createElementVNode("span",{role:"button",tabindex:"0","aria-label":"Сбросить фильтр",class:"admin-toolbar__chip-x",onClick:e.withModifiers(L=>v(N.name),["stop"]),onKeydown:e.withKeys(e.withModifiers(L=>v(N.name),["stop"]),["enter"])},[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(Ee),size:12},null,8,["icon"])],40,Li)])]),default:e.withCtx(()=>[e.createElementVNode("div",{class:"admin-toolbar__popover",onKeydown:S[1]||(S[1]=e.withModifiers(()=>{},["stop"]))},[e.createVNode(e.unref(Yt),{filter:N,draft:C(N.name),"is-checked":L=>T(N.name,L),onToggleOption:L=>V(N.name,L,N.multiple??!1),onSetDraft:L=>B(N.name,L)},null,8,["filter","draft","is-checked","onToggleOption","onSetDraft"]),e.createElementVNode("div",zi,[e.createVNode(e.unref(c.UidButton),{size:"sm",variant:"ghost",onClick:L=>B(N.name,null)},{default:e.withCtx(()=>[...S[12]||(S[12]=[e.createTextVNode(" Очистить ",-1)])]),_:1},8,["onClick"]),e.createVNode(e.unref(c.UidButton),{size:"sm",variant:"primary",onClick:L=>E(N.name,()=>{})},{default:e.withCtx(()=>[...S[13]||(S[13]=[e.createTextVNode(" Применить ",-1)])]),_:1},8,["onClick"])])],32)]),_:2},1024))),128)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(f.value,N=>(e.openBlock(),e.createBlock(e.unref(c.UidMenu),{key:`inactive-${N.name}`},{trigger:e.withCtx(()=>[e.createElementVNode("button",Ri,[oe(N.icon)!==null?(e.openBlock(),e.createBlock(e.unref(c.UidIcon),{key:0,icon:oe(N.icon),size:14},null,8,["icon"])):e.createCommentVNode("",!0),e.createElementVNode("span",Pi,e.toDisplayString(N.label),1)])]),default:e.withCtx(()=>[e.createElementVNode("div",{class:"admin-toolbar__popover",onKeydown:S[2]||(S[2]=e.withModifiers(()=>{},["stop"]))},[e.createVNode(e.unref(Yt),{filter:N,draft:C(N.name),"is-checked":L=>T(N.name,L),onToggleOption:L=>V(N.name,L,N.multiple??!1),onSetDraft:L=>B(N.name,L)},null,8,["filter","draft","is-checked","onToggleOption","onSetDraft"]),e.createElementVNode("div",qi,[e.createVNode(e.unref(c.UidButton),{size:"sm",variant:"ghost",onClick:L=>B(N.name,null)},{default:e.withCtx(()=>[...S[14]||(S[14]=[e.createTextVNode(" Очистить ",-1)])]),_:1},8,["onClick"]),e.createVNode(e.unref(c.UidButton),{size:"sm",variant:"primary",onClick:L=>E(N.name,()=>{})},{default:e.withCtx(()=>[...S[15]||(S[15]=[e.createTextVNode(" Применить ",-1)])]),_:1},8,["onClick"])])],32)]),_:2},1024))),128)),y.value.length>0?(e.openBlock(),e.createBlock(e.unref(c.UidMenu),{key:1},{trigger:e.withCtx(()=>[e.createElementVNode("button",ji,[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(ot),size:14},null,8,["icon"]),S[16]||(S[16]=e.createElementVNode("span",{class:"admin-toolbar__chip-text"},"Filter",-1))])]),default:e.withCtx(()=>[e.createElementVNode("div",{class:"admin-toolbar__popover admin-toolbar__popover--list",onKeydown:S[3]||(S[3]=e.withModifiers(()=>{},["stop"]))},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(y.value,N=>(e.openBlock(),e.createElementBlock("button",{key:N.name,type:"button",role:"menuitem",class:"admin-toolbar__list-item",onClick:L=>m(N.name)},[oe(N.icon)!==null?(e.openBlock(),e.createBlock(e.unref(c.UidIcon),{key:0,icon:oe(N.icon),size:14},null,8,["icon"])):e.createCommentVNode("",!0),e.createTextVNode(" "+e.toDisplayString(N.label),1)],8,Oi))),128))],32)]),_:1})):e.createCommentVNode("",!0),S[18]||(S[18]=e.createElementVNode("span",{class:"admin-toolbar__spacer"},null,-1)),w.value?(e.openBlock(),e.createBlock(e.unref(c.UidButton),{key:2,variant:"ghost",size:"md",onClick:S[4]||(S[4]=N=>r("reset"))},{prepend:e.withCtx(()=>[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(Bt),size:14},null,8,["icon"])]),default:e.withCtx(()=>[S[17]||(S[17]=e.createTextVNode(" Сбросить ",-1))]),_:1})):e.createCommentVNode("",!0)]),_.value.length>0||t.columns.length>0||t.enableSavedViews?(e.openBlock(),e.createElementBlock("div",Wi,[_.value.length>0?(e.openBlock(),e.createBlock(e.unref(c.UidMenu),{key:0},{trigger:e.withCtx(()=>[e.createElementVNode("button",Hi,[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(oo),size:14},null,8,["icon"]),e.createElementVNode("span",Ki,e.toDisplayString(t.groupBy?`Группа: ${U(t.columns.find(N=>h(N)===t.groupBy)??{})}`:"Группировать"),1)])]),default:e.withCtx(()=>[e.createElementVNode("div",{class:"admin-toolbar__popover admin-toolbar__popover--list",onKeydown:S[6]||(S[6]=e.withModifiers(()=>{},["stop"]))},[e.createElementVNode("button",{type:"button",role:"menuitem",class:"admin-toolbar__list-item",onClick:S[5]||(S[5]=N=>b(null,()=>{}))},[t.groupBy?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(e.unref(c.UidIcon),{key:0,icon:e.unref(nt),size:14},null,8,["icon"])),S[19]||(S[19]=e.createElementVNode("span",null,"Без группировки",-1))]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(_.value,N=>(e.openBlock(),e.createElementBlock("button",{key:h(N),type:"button",role:"menuitem",class:"admin-toolbar__list-item",onClick:L=>b(h(N),()=>{})},[t.groupBy===h(N)?(e.openBlock(),e.createBlock(e.unref(c.UidIcon),{key:0,icon:e.unref(nt),size:14},null,8,["icon"])):e.createCommentVNode("",!0),e.createElementVNode("span",null,e.toDisplayString(U(N)),1)],8,Gi))),128))],32)]),_:1})):e.createCommentVNode("",!0),t.columns.length>0?(e.openBlock(),e.createBlock(e.unref(c.UidMenu),{key:1},{trigger:e.withCtx(()=>[e.createElementVNode("button",Xi,[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(Aa),size:14},null,8,["icon"]),S[20]||(S[20]=e.createElementVNode("span",{class:"admin-toolbar__chip-text"},"Колонки",-1))])]),default:e.withCtx(()=>[e.createElementVNode("div",{class:"admin-toolbar__popover admin-toolbar__popover--list",onKeydown:S[7]||(S[7]=e.withModifiers(()=>{},["stop"]))},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.columns.filter(N=>h(N)!==""),N=>(e.openBlock(),e.createElementBlock("label",{key:h(N),class:"admin-toolbar__list-item admin-toolbar__list-item--checkbox"},[e.createElementVNode("input",{type:"checkbox",checked:A(N),onChange:L=>j(N)},null,40,Yi),e.createElementVNode("span",null,e.toDisplayString(U(N)),1)]))),128))],32)]),_:1})):e.createCommentVNode("",!0),t.enableSavedViews?(e.openBlock(),e.createBlock(e.unref(c.UidMenu),{key:2},{trigger:e.withCtx(()=>[e.createElementVNode("button",Zi,[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(bt),size:14},null,8,["icon"]),S[21]||(S[21]=e.createElementVNode("span",{class:"admin-toolbar__chip-text"},"Сохранить",-1))])]),default:e.withCtx(()=>[e.createElementVNode("div",{class:"admin-toolbar__popover",onKeydown:S[11]||(S[11]=e.withModifiers(()=>{},["stop"]))},[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":S[8]||(S[8]=N=>H.value=N),type:"text",placeholder:"Название view",class:"admin-toolbar__input",onKeydown:S[9]||(S[9]=e.withKeys(N=>fe(()=>{}),["enter"]))},null,544),[[e.vModelText,H.value]]),e.createElementVNode("div",Ji,[e.createVNode(e.unref(c.UidButton),{size:"sm",variant:"primary",disabled:H.value.trim()==="",onClick:S[10]||(S[10]=N=>fe(()=>{}))},{default:e.withCtx(()=>[...S[22]||(S[22]=[e.createTextVNode(" Сохранить view ",-1)])]),_:1},8,["disabled"])])],32)]),_:1})):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)]))}}),es=["title"],ts=["disabled"],ns=e.defineComponent({__name:"InlineEditCell",props:{resourceSlug:{},rowId:{},column:{},value:{},editable:{type:Boolean,default:!0}},emits:["saved"],setup(t,{emit:n}){const a=t,r=n,i=e.ref(!1),o=e.ref(""),l=e.ref(!1),s=e.ref(null);async function d(){!a.editable||l.value||(o.value=a.value===null||a.value===void 0?"":String(a.value),i.value=!0,await e.nextTick(),s.value?.focus(),s.value?.select())}function u(){i.value=!1}async function f(){if(!(!i.value||l.value)){if(o.value===String(a.value??"")){i.value=!1;return}l.value=!0;try{const{getAdminClient:m}=await Promise.resolve().then(()=>ee);await m().post(`/${a.resourceSlug}/inlineUpdate`,{id:a.rowId,column:a.column,value:o.value}),r("saved",o.value),i.value=!1}catch(m){typeof console<"u"&&console.error("[admin] inline-update failed:",m),Z.error(`Не удалось обновить «${a.column}».`)}finally{l.value=!1}}}function y(m){m.key==="Enter"?(m.preventDefault(),f()):m.key==="Escape"&&(m.preventDefault(),u())}return(m,w)=>i.value?e.withDirectives((e.openBlock(),e.createElementBlock("input",{key:1,ref_key:"inputRef",ref:s,"onUpdate:modelValue":w[0]||(w[0]=v=>o.value=v),type:"text",class:"admin-inline-edit__input",disabled:l.value,onKeydown:y,onBlur:f,onClick:w[1]||(w[1]=e.withModifiers(()=>{},["stop"]))},null,40,ts)),[[e.vModelText,o.value]]):(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass(["admin-inline-edit",{"admin-inline-edit--editable":t.editable}]),title:t.editable?"Двойной клик для редактирования":void 0,onDblclick:e.withModifiers(d,["stop"])},[e.renderSlot(m.$slots,"default",{},()=>[e.createTextVNode(e.toDisplayString(t.value),1)])],42,es))}}),as={class:"admin-page admin-resource-index"},os={class:"admin-page__hd"},ls={class:"admin-page__title-wrap"},rs={class:"admin-page__title-row"},is={class:"admin-page__title"},ss={key:0,class:"admin-page__live",role:"status"},cs={key:0,class:"admin-page__count"},ds={class:"admin-page__actions"},us={class:"admin-page__view-row"},ms={class:"admin-page__view-name"},fs={key:0,class:"admin-page__view-badge"},ps=["onClick"],vs={key:0,class:"admin-bulk-toolbar",role:"toolbar"},hs={class:"admin-bulk-toolbar__count"},gs={key:2,class:"admin-resource-index__loading"},ys={key:5,class:"admin-resource-index__table"},ks=["draggable","onDragstart","onDragover","onDrop"],_s={key:1,class:"admin-resource-index__row-actions"},bs=["onClick"],ws=["onClick"],Bs=["onClick"],Vs=["onClick"],xs=["onClick"],Ns={class:"admin-cell-truncate"},Cs=["title"],Es={key:6,class:"admin-resource-index__footer"},Jt="__row_actions__",Qt="__row_reorder__",Rn=e.defineComponent({__name:"ResourceIndexPage",props:{slug:{},title:{default:null},subtitle:{default:null},createLabel:{default:"Создать"},createRouteName:{default:null}},emits:["bulk-action","row-click","import","header-action"],setup(t,{emit:n}){const a=Mt(),r=(x,g,M)=>a.has(x)?a.t(x,M):g,i=t,o=n,l=zt(),s=de(),d=St(),u=X.useRouter(),f=e.computed(()=>s.getResource(i.slug)),y=e.computed(()=>i.title??f.value?.label??i.slug),m=e.computed(()=>{if(i.createRouteName!==null)return u.hasRoute(i.createRouteName)?i.createRouteName:null;const x=`admin.resource.${i.slug}.create`;return u.hasRoute(x)?x:null}),w=e.computed(()=>(f.value?.actions??[]).map(g=>({key:String(g.key??g.name??""),label:String(g.label??g.name??g.key??""),confirm:typeof g.confirm=="string"?g.confirm:void 0,icon:typeof g.icon=="string"?g.icon:void 0})).filter(g=>g.key!==""&&g.label!==""));async function v(x){if(!(x.confirm&&!window.confirm(x.confirm))){o("header-action",x.key);try{d.start();const{getAdminClient:g}=await Promise.resolve().then(()=>ee),I=await g().post(`/${i.slug}/action`,{key:x.key,ids:[...l.selection]});await l.load().catch(()=>{}),Z.success(I?.message??`Action «${x.label}» применён к ${I?.affected??0} записям.`)}catch(g){typeof console<"u"&&console.error("[admin] header-action failed:",g),Z.error(`Не удалось выполнить action «${x.label}».`)}finally{d.end()}}}async function k(x="csv"){o("header-action","export");try{d.start();const{getAdminClient:g}=await Promise.resolve().then(()=>ee),I=await g().post(`/${i.slug}/export`,{format:x,filters:l.filters,search:l.search},{responseType:"blob"}),R=URL.createObjectURL(I),Q=document.createElement("a");Q.href=R,Q.download=`${i.slug}-${new Date().toISOString().slice(0,10)}.${x}`,document.body.appendChild(Q),Q.click(),Q.remove(),URL.revokeObjectURL(R)}catch(g){typeof console<"u"&&console.error("[admin] export failed:",g),Z.error(`Не удалось экспортировать данные в формате ${x.toUpperCase()}.`)}finally{d.end()}}const p=e.ref(null);function C(){o("import"),p.value?.click()}async function B(x){const g=x.target,M=g.files?.[0];if(M)try{d.start();const{getAdminClient:I}=await Promise.resolve().then(()=>ee),R=I(),Q=new FormData;Q.append("file",M),Q.append("resource",i.slug);const Ke=await R.post("/import/upload",Q),Ie=await R.post("/import/preview",{resource:i.slug,upload_id:Ke.upload_id}),ct=await R.post("/import/start",{resource:i.slug,upload_id:Ke.upload_id,mapping:Ie.mapping}),Ge=await E(R,ct.process_id),Xe=Ge.imported??0,Ot=Ge.failed??0;Ot>0?Z.warning(`Импорт завершён с ошибками: ${Xe} записей, ${Ot} ошибок.`):Z.success(`Импортировано записей: ${Xe}.`),await l.load().catch(()=>{})}catch(I){typeof console<"u"&&console.error("[admin] import failed:",I),Z.error("Импорт не удался. Проверьте формат файла и поля ресурса либо обратитесь к администратору.")}finally{g.value="",d.end()}}async function E(x,g){const M=Date.now()+9e4;for(;Date.now()<M;){await new Promise(R=>setTimeout(R,800));const I=await x.get(`/import/status?process_id=${encodeURIComponent(g)}`);if(I.status==="done"||I.status==="failed")return I}return{status:"failed",failed:1}}const V=e.computed(()=>(f.value?.features??{}).reorderable===!0),T=e.computed(()=>{const g=(f.value?.columns??[]).map(I=>{const R=I;return{key:String(R.key??R.name??""),label:String(R.label??R.name??""),sortable:!!R.sortable,align:R.align??"left",width:typeof R.width=="string"?R.width:void 0}}).filter(I=>I.key).filter(I=>S.value[I.key]!==!1);return[...V.value?[{key:Qt,label:"",sortable:!1,align:"center",width:"32px"}]:[],...g,{key:Jt,label:"",sortable:!1,align:"right",width:"120px"}]});function _(x){const g=f.value?.columns??[];for(const M of g){const I=M;if(String(I.key??I.name??"")===x)return I.editable!==null&&I.editable!==void 0}return!1}const b=e.computed(()=>{const x=f.value?.columns??[],g={};for(const M of x){const I=M,R=String(I.key??I.name??"");R&&(g[R]={preset:typeof I.preset=="string"?I.preset:void 0,meta:I.meta??{}})}return g});function h(x,g){const I=g?.row?.[x],R=b.value[x];return zn(I,R?.preset,R?.meta??{})}function U(x){return x?.row}const A=e.computed(()=>l.search!==""||Object.keys(l.filters).length>0),j=e.computed(()=>!l.isEmpty||A.value),H=e.computed(()=>f.value?.filters??[]),fe=e.computed(()=>f.value?.columns??[]),oe=e.computed(()=>`Поиск по ${(f.value?.label??i.slug).toLowerCase()}…`),D=e.ref(null),S=e.ref({});async function N(x,g){await l.setFilter(x,g)}async function L(x){await l.setSearch(x)}async function Y(){l.search="",await l.clearFilters()}async function J(x){D.value=x,await l.load({group_by:x})}function pe(x){S.value=x}const ve=e.ref([]),ne=e.ref(null);async function he(){try{const{getAdminClient:x}=await Promise.resolve().then(()=>ee),M=await x().get(`/${i.slug}_views/list`);ve.value=M.data??[]}catch{ve.value=[]}}async function ce(x){ne.value=x.id;const g=x.state;l.search=g.search??"",l.filters={...g.filters??{}},l.sortKey=g.sort?.key??null,l.sortDirection=g.sort?.direction??null,D.value=g.group_by??null,S.value={...g.columns??{}},l.meta.page=1,await P()}async function Te(){ne.value=null,l.search="",l.filters={},l.sortKey=null,l.sortDirection=null,D.value=null,S.value={},l.meta.page=1,await P()}async function ie(x,g){if(g?.stopPropagation(),!!x.owned&&window.confirm(`Удалить view «${x.name}»?`))try{d.start();const{getAdminClient:M}=await Promise.resolve().then(()=>ee);await M().post(`/${i.slug}_views/delete`,{id:x.id}),ne.value===x.id&&(ne.value=null),await he()}catch(M){typeof console<"u"&&console.error("[admin] delete-view failed:",M)}finally{d.end()}}async function qe(x){try{d.start();const{getAdminClient:g}=await Promise.resolve().then(()=>ee),I=await g().post(`/${i.slug}_views/create`,{name:x,state:{search:l.search,filters:l.filters,sort:{key:l.sortKey,direction:l.sortDirection},group_by:D.value,columns:S.value}});I?.view&&(ne.value=I.view.id),await he(),Z.success(r("admin.resource.view_saved","Представление сохранено."))}catch(g){typeof console<"u"&&console.error("[admin] save-view failed:",g),Z.error("Не удалось сохранить view. Возможно, недостаточно прав либо ресурс не зарегистрирован.")}finally{d.end()}}const we=e.computed(()=>{const x=l.meta.total;return x===0?"":`${l.items.length} из ${x} ${je(x)}`});function je(x){const g=x%10,M=x%100;return g===1&&M!==11?"запись":g>=2&&g<=4&&(M<10||M>=20)?"записи":"записей"}const Be=e.ref(null),Oe=e.ref(0);let F=null;e.watch(()=>l.loading,(x,g)=>{g&&!x&&l.error===null&&(Be.value=Date.now())}),e.onMounted(()=>{F=setInterval(()=>{Oe.value+=1},3e4)}),e.onUnmounted(()=>{F!==null&&clearInterval(F)});const z=e.computed(()=>{if(Oe.value,Be.value===null)return null;const x=Math.floor((Date.now()-Be.value)/1e3);if(x<5)return"обновлено только что";if(x<60)return`обновлено ${x} сек назад`;const g=Math.floor(x/60);if(g<60)return`обновлено ${g} мин назад`;const M=Math.floor(g/60);return M<24?`обновлено ${M} ч назад`:"обновлено более суток назад"}),q=e.computed(()=>{if(ne.value!==null){const g=ve.value.find(M=>M.id===ne.value);if(g)return g.name}return`Все ${(f.value?.label??i.slug).toLowerCase()}`});async function P(){d.start();try{await l.load()}catch{}finally{d.end()}}e.onMounted(async()=>{l.setSlug(i.slug),s.manifest===null&&await s.load().catch(()=>{}),he(),await P()}),e.watch(()=>i.slug,async(x,g)=>{x!==g&&(l.setSlug(x),ne.value=null,he(),await P())});async function W(x){await e.nextTick(),await l.setSort(x,l.sortDirection)}async function G(x){await e.nextTick(),await l.setSort(l.sortKey,x)}function ue(x){l.selection=x}async function Ve(x){await l.setPage(x)}function me(x){const g=x?.id??x?.key;return typeof g=="string"||typeof g=="number"?g:null}function xe(x){o("row-click",x);const g=me(x);g!==null&&u.push({name:`admin.resource.${i.slug}.view`,params:{id:String(g)}})}function st(x,g){g?.stopPropagation();const M=me(x);M!==null&&u.push({name:`admin.resource.${i.slug}.view`,params:{id:String(M)}})}function ca(x,g){g?.stopPropagation();const M=me(x);M!==null&&u.push({name:`admin.resource.${i.slug}.edit`,params:{id:String(M)}})}async function da(x,g){g?.stopPropagation();const M=me(x);if(M!==null&&window.confirm(r("admin.resource.delete_confirm","Удалить запись?")))try{d.start();const{getAdminClient:I}=await Promise.resolve().then(()=>ee);await I().post(`/${i.slug}/delete`,{id:M}),await l.load().catch(()=>{}),Z.success(r("admin.resource.deleted","Запись удалена."))}catch(I){typeof console<"u"&&console.error("[admin] delete failed:",I),Z.error(r("admin.resource.delete_failed","Не удалось удалить запись."))}finally{d.end()}}function ua(x){return x.deleted_at!==null&&x.deleted_at!==void 0}async function ma(x,g){g?.stopPropagation();const M=me(x);if(M!==null)try{d.start();const{getAdminClient:I}=await Promise.resolve().then(()=>ee);await I().post(`/${i.slug}/restore`,{id:M}),await l.load().catch(()=>{}),Z.success(r("admin.resource.restored","Запись восстановлена."))}catch(I){typeof console<"u"&&console.error("[admin] restore failed:",I),Z.error(r("admin.resource.restore_failed","Не удалось восстановить запись."))}finally{d.end()}}const ge=e.ref(null),ke=e.ref(null),We=e.ref("before");function fa(x,g){if(!V.value||!g.dataTransfer)return;if(!g.target?.closest('[data-row-drag-handle="true"]')){g.preventDefault();return}ge.value=x,g.dataTransfer.effectAllowed="move",g.dataTransfer.setData("text/plain",String(x))}function pa(x,g){if(!V.value||ge.value===null)return;g.preventDefault();const M=g.currentTarget;if(M){const I=M.getBoundingClientRect();We.value=g.clientY<I.top+I.height/2?"before":"after"}ke.value=x}function va(){ge.value=null,ke.value=null}async function ha(x,g){if(g.preventDefault(),!V.value||ge.value===null)return;const M=ge.value,I=We.value==="after"?x+1:x,R=I>M?I-1:I;if(ge.value=null,ke.value=null,M===R)return;const Q=[...l.items],[Ke]=Q.splice(M,1);Q.splice(R,0,Ke),l.items=Q;try{d.start();const{getAdminClient:Ie}=await Promise.resolve().then(()=>ee),ct=Ie(),Ge=Q.map(Xe=>l.rowId(Xe));await ct.post(`/${i.slug}/reorder`,{ids:Ge}),Z.success(r("admin.resource.reorder_saved","Порядок сохранён."))}catch(Ie){typeof console<"u"&&console.error("[admin] reorder failed:",Ie),Z.error(r("admin.resource.reorder_failed","Не удалось сохранить порядок.")),await l.load().catch(()=>{})}finally{d.end()}}async function ga(x,g){g?.stopPropagation();const M=me(x);if(M!==null&&window.confirm(r("admin.resource.force_delete_confirm","Удалить запись НАВСЕГДА? Действие необратимо.")))try{d.start();const{getAdminClient:I}=await Promise.resolve().then(()=>ee);await I().post(`/${i.slug}/forceDelete`,{id:M}),await l.load().catch(()=>{}),Z.success(r("admin.resource.force_deleted","Запись удалена навсегда."))}catch(I){typeof console<"u"&&console.error("[admin] force-delete failed:",I),Z.error(r("admin.resource.force_delete_failed","Не удалось удалить запись навсегда."))}finally{d.end()}}function He(x){o("bulk-action",x,[...l.selection])}async function jt(){await l.load().catch(()=>{})}return(x,g)=>(e.openBlock(),e.createElementBlock("section",as,[e.createElementVNode("header",os,[e.createElementVNode("div",ls,[e.createElementVNode("div",rs,[e.createElementVNode("h1",is,e.toDisplayString(y.value),1),z.value?(e.openBlock(),e.createElementBlock("span",ss,[g[10]||(g[10]=e.createElementVNode("span",{class:"admin-page__live-dot","aria-hidden":"true"},null,-1)),e.createTextVNode(" "+e.toDisplayString(z.value),1)])):e.createCommentVNode("",!0)]),t.subtitle||we.value?(e.openBlock(),e.createElementBlock("div",cs,[t.subtitle?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(t.subtitle),1)],64)):e.createCommentVNode("",!0),t.subtitle&&we.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(" · ")],64)):e.createCommentVNode("",!0),we.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.createTextVNode(e.toDisplayString(we.value),1)],64)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)]),e.createElementVNode("div",ds,[e.renderSlot(x.$slots,"actions"),e.createVNode(e.unref(c.UidMenu),null,{trigger:e.withCtx(()=>[e.createVNode(e.unref(c.UidButton),{variant:"ghost",size:"md",class:"admin-page__scope"},{prepend:e.withCtx(()=>[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(bt),size:14},null,8,["icon"])]),append:e.withCtx(()=>[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(an),size:14},null,8,["icon"])]),default:e.withCtx(()=>[e.createTextVNode(" "+e.toDisplayString(q.value)+" ",1)]),_:1})]),default:e.withCtx(()=>[e.createVNode(e.unref(c.UidMenuItem),{onClick:Te},{default:e.withCtx(()=>[e.createTextVNode(" Все "+e.toDisplayString((f.value?.label??t.slug).toLowerCase()),1)]),_:1}),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(ve.value,M=>(e.openBlock(),e.createBlock(e.unref(c.UidMenuItem),{key:M.id,onClick:I=>ce(M)},{default:e.withCtx(()=>[e.createElementVNode("span",us,[e.createElementVNode("span",ms,[e.createTextVNode(e.toDisplayString(M.name)+" ",1),M.is_default?(e.openBlock(),e.createElementBlock("span",fs,"default")):e.createCommentVNode("",!0)]),M.owned?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"admin-page__view-delete","aria-label":"Удалить view",onClick:e.withModifiers(I=>ie(M,I),["stop"])},[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(Ce),size:12},null,8,["icon"])],8,ps)):e.createCommentVNode("",!0)])]),_:2},1032,["onClick"]))),128))]),_:1}),e.createVNode(e.unref(c.UidMenu),null,{trigger:e.withCtx(()=>[e.createVNode(e.unref(c.UidButton),{variant:"ghost",size:"md","aria-label":"Действия",class:"admin-page__more"},{default:e.withCtx(()=>[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(ln),size:16},null,8,["icon"])]),_:1})]),default:e.withCtx(()=>[e.createVNode(e.unref(c.UidMenuItem),{onClick:jt},{default:e.withCtx(()=>[...g[11]||(g[11]=[e.createTextVNode("Обновить",-1)])]),_:1}),e.createVNode(e.unref(c.UidMenuItem),{onClick:g[0]||(g[0]=M=>k("csv"))},{default:e.withCtx(()=>[...g[12]||(g[12]=[e.createTextVNode("Экспорт CSV",-1)])]),_:1}),e.createVNode(e.unref(c.UidMenuItem),{onClick:g[1]||(g[1]=M=>k("json"))},{default:e.withCtx(()=>[...g[13]||(g[13]=[e.createTextVNode("Экспорт JSON",-1)])]),_:1}),e.createVNode(e.unref(c.UidMenuItem),{onClick:g[2]||(g[2]=M=>k("xlsx"))},{default:e.withCtx(()=>[...g[14]||(g[14]=[e.createTextVNode("Экспорт XLSX",-1)])]),_:1}),e.createVNode(e.unref(c.UidMenuItem),{onClick:g[3]||(g[3]=M=>k("pdf"))},{default:e.withCtx(()=>[...g[15]||(g[15]=[e.createTextVNode("Экспорт PDF",-1)])]),_:1}),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(w.value,M=>(e.openBlock(),e.createBlock(e.unref(c.UidMenuItem),{key:M.key,onClick:I=>v(M)},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(M.label),1)]),_:2},1032,["onClick"]))),128)),e.renderSlot(x.$slots,"header-menu")]),_:3}),e.createVNode(e.unref(c.UidButton),{variant:"secondary",size:"md",onClick:C},{prepend:e.withCtx(()=>[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(fn),size:14},null,8,["icon"])]),default:e.withCtx(()=>[g[16]||(g[16]=e.createTextVNode(" Import ",-1))]),_:1}),e.createElementVNode("input",{ref_key:"importInput",ref:p,type:"file",class:"admin-page__import-input",accept:".csv,.json,.xlsx,.xls,application/json,text/csv",onChange:B},null,544),m.value?(e.openBlock(),e.createBlock(e.unref(c.UidButton),{key:0,variant:"primary",size:"md",onClick:g[4]||(g[4]=M=>x.$router.push({name:m.value}))},{prepend:e.withCtx(()=>[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(ot),size:14},null,8,["icon"])]),default:e.withCtx(()=>[e.createTextVNode(" "+e.toDisplayString(t.createLabel),1)]),_:1})):e.createCommentVNode("",!0)])]),e.unref(l).hasSelection?(e.openBlock(),e.createElementBlock("div",vs,[e.createElementVNode("span",hs,[g[17]||(g[17]=e.createTextVNode(" Выбрано ",-1)),e.createElementVNode("b",null,e.toDisplayString(e.unref(l).selectedCount),1)]),g[23]||(g[23]=e.createElementVNode("span",{class:"admin-bulk-toolbar__divider"},null,-1)),e.createVNode(e.unref(c.UidButton),{size:"sm",variant:"ghost",onClick:g[5]||(g[5]=M=>He("publish"))},{default:e.withCtx(()=>[...g[18]||(g[18]=[e.createTextVNode("Опубликовать",-1)])]),_:1}),e.createVNode(e.unref(c.UidButton),{size:"sm",variant:"ghost",onClick:g[6]||(g[6]=M=>He("archive"))},{default:e.withCtx(()=>[...g[19]||(g[19]=[e.createTextVNode("Архивировать",-1)])]),_:1}),e.createVNode(e.unref(c.UidButton),{size:"sm",variant:"ghost",onClick:g[7]||(g[7]=M=>He("export"))},{default:e.withCtx(()=>[...g[20]||(g[20]=[e.createTextVNode("Экспорт",-1)])]),_:1}),e.createVNode(e.unref(c.UidButton),{size:"sm",variant:"danger",onClick:g[8]||(g[8]=M=>He("delete"))},{default:e.withCtx(()=>[...g[21]||(g[21]=[e.createTextVNode("Удалить",-1)])]),_:1}),g[24]||(g[24]=e.createElementVNode("span",{class:"admin-bulk-toolbar__spacer"},null,-1)),e.createVNode(e.unref(c.UidButton),{size:"sm",variant:"ghost",onClick:e.unref(l).clearSelection},{default:e.withCtx(()=>[...g[22]||(g[22]=[e.createTextVNode(" Снять выделение ",-1)])]),_:1},8,["onClick"])])):j.value?(e.openBlock(),e.createBlock(Qi,{key:1,search:e.unref(l).search,"search-placeholder":oe.value,filters:H.value,values:e.unref(l).filters,columns:fe.value,"group-by":D.value,"column-visibility":S.value,"onUpdate:search":L,onApplyFilter:N,onReset:Y,onGroupBy:J,onColumnsVisibility:pe,onSaveView:qe},{extra:e.withCtx(()=>[e.renderSlot(x.$slots,"filters",{filters:e.unref(l).filters,setFilter:e.unref(l).setFilter})]),_:3},8,["search","search-placeholder","filters","values","columns","group-by","column-visibility"])):e.createCommentVNode("",!0),e.unref(l).loading&&e.unref(l).items.length===0?(e.openBlock(),e.createElementBlock("div",gs,[e.unref(l).slowLoading?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},e.renderList(8,M=>e.createVNode(e.unref(c.UidSkeleton),{key:M,height:"40px"})),64)):e.createCommentVNode("",!0)])):e.unref(l).hasError?(e.openBlock(),e.createBlock(e.unref(c.UidErrorState),{key:3,title:"Не удалось загрузить данные",description:e.unref(l).error?.message??"Попробуйте обновить страницу.",class:"admin-resource-index__state"},{actions:e.withCtx(()=>[e.createVNode(e.unref(c.UidButton),{variant:"primary",onClick:jt},{default:e.withCtx(()=>[...g[25]||(g[25]=[e.createTextVNode("Обновить",-1)])]),_:1})]),_:1},8,["description"])):e.unref(l).isEmpty?(e.openBlock(),e.createBlock(e.unref(c.UidEmptyState),{key:4,title:"Пока пусто",description:"Создайте первую запись или измените фильтры.",class:"admin-resource-index__state"},{actions:e.withCtx(()=>[t.createRouteName?(e.openBlock(),e.createBlock(e.unref(c.UidButton),{key:0,variant:"primary",onClick:g[9]||(g[9]=M=>x.$router.push({name:t.createRouteName}))},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(t.createLabel),1)]),_:1})):e.createCommentVNode("",!0)]),_:1})):(e.openBlock(),e.createElementBlock("div",ys,[e.createVNode(e.unref(c.UidTable),{columns:T.value,data:e.unref(l).items,"sort-key":e.unref(l).sortKey,"sort-direction":e.unref(l).sortDirection,selectable:"",selection:e.unref(l).selection,"row-key":M=>e.unref(l).rowId(M),"onUpdate:sortKey":W,"onUpdate:sortDirection":G,"onUpdate:selection":ue,onRowClick:xe},e.createSlots({_:2},[e.renderList(T.value,M=>({name:M.key,fn:e.withCtx(I=>[M.key===Qt?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass(["admin-resource-index__row-drag",{"admin-resource-index__row-drag--drop-before":ke.value!==null&&ke.value===e.unref(l).items.indexOf(U(I)??{})&&We.value==="before","admin-resource-index__row-drag--drop-after":ke.value!==null&&ke.value===e.unref(l).items.indexOf(U(I)??{})&&We.value==="after","admin-resource-index__row-drag--ghost":ge.value!==null&&ge.value===e.unref(l).items.indexOf(U(I)??{})}]),"data-row-drag-handle":"true",draggable:V.value,title:"Перетащить",onDragstart:R=>fa(e.unref(l).items.indexOf(U(I)??{}),R),onDragover:R=>pa(e.unref(l).items.indexOf(U(I)??{}),R),onDragend:va,onDrop:R=>ha(e.unref(l).items.indexOf(U(I)??{}),R)},[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(sn),size:14},null,8,["icon"])],42,ks)):M.key===Jt?(e.openBlock(),e.createElementBlock("div",_s,[e.createElementVNode("button",{type:"button",class:"admin-resource-index__row-action",title:"Просмотр",onClick:e.withModifiers(R=>st(U(I)??{},R),["stop"])},[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(za),size:16},null,8,["icon"])],8,bs),ua(U(I)??{})?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("button",{type:"button",class:"admin-resource-index__row-action",title:"Восстановить",onClick:e.withModifiers(R=>ma(U(I)??{},R),["stop"])},[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(Bt),size:16},null,8,["icon"])],8,Vs),e.createElementVNode("button",{type:"button",class:"admin-resource-index__row-action admin-resource-index__row-action--danger",title:"Удалить навсегда",onClick:e.withModifiers(R=>ga(U(I)??{},R),["stop"])},[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(Ce),size:16},null,8,["icon"])],8,xs)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("button",{type:"button",class:"admin-resource-index__row-action",title:"Редактировать",onClick:e.withModifiers(R=>ca(U(I)??{},R),["stop"])},[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(wt),size:16},null,8,["icon"])],8,ws),e.createElementVNode("button",{type:"button",class:"admin-resource-index__row-action admin-resource-index__row-action--danger",title:"Удалить",onClick:e.withModifiers(R=>da(U(I)??{},R),["stop"])},[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(Ce),size:16},null,8,["icon"])],8,Bs)],64))])):e.renderSlot(x.$slots,`cell-${M.key}`,{key:2,row:U(I)},()=>[_(M.key)?(e.openBlock(),e.createBlock(ns,{key:0,"resource-slug":t.slug,"row-id":me(U(I)??{})??"",column:M.key,value:(U(I)??{})[M.key],editable:!0,onSaved:R=>{const Q=U(I);Q&&(Q[M.key]=R)}},{default:e.withCtx(()=>[e.createElementVNode("span",Ns,e.toDisplayString(h(M.key,I)),1)]),_:2},1032,["resource-slug","row-id","column","value","onSaved"])):(e.openBlock(),e.createElementBlock("span",{key:1,class:"admin-cell-truncate",title:h(M.key,I)},e.toDisplayString(h(M.key,I)),9,Cs))])])}))]),1032,["columns","data","sort-key","sort-direction","selection","row-key"])])),!e.unref(l).loading&&!e.unref(l).hasError&&!e.unref(l).isEmpty?(e.openBlock(),e.createElementBlock("footer",Es,[e.createVNode(e.unref(c.UidPagination),{"model-value":e.unref(l).meta.page,total:e.unref(l).meta.total,"per-page":e.unref(l).meta.per_page,"onUpdate:modelValue":Ve},null,8,["model-value","total","per-page"])])):e.createCommentVNode("",!0)]))}}),Rt=ae.defineStore("admin-resource-form",()=>{const t=e.ref(null),n=e.ref("create"),a=e.ref(null),r=e.ref({}),i=e.ref({}),o=e.ref({}),l=e.ref(!1),s=e.ref(!1),d=e.ref(!1),u=e.ref(null),f=e.computed(()=>n.value==="create"),y=e.computed(()=>n.value==="edit"),m=e.computed(()=>n.value==="view"),w=e.computed(()=>u.value!==null),v=e.computed(()=>{const h=r.value,U=i.value,A=new Set([...Object.keys(h),...Object.keys(U)]);for(const j of A)if(!Object.is(h[j],U[j]))if(typeof h[j]=="object"||typeof U[j]=="object"){if(JSON.stringify(h[j])!==JSON.stringify(U[j]))return!0}else return!0;return!1});function k(h,U){for(const A of Object.keys(h))delete h[A];Object.assign(h,U)}function p(){k(r.value,{}),k(i.value,{}),o.value={},l.value=!1,s.value=!1,d.value=!1,u.value=null,a.value=null}function C(h,U={}){t.value=h,n.value="create",a.value=null,k(r.value,U),k(i.value,U),o.value={},u.value=null}async function B(h,U,A="edit"){t.value=h,n.value=A,a.value=U,l.value=!0,u.value=null,o.value={};try{const H=await K().get(`/${h}/read`,{params:{id:U}});k(r.value,H.record),k(i.value,H.record)}catch(j){throw u.value=j instanceof Error?j:new Error(String(j)),j}finally{l.value=!1}}function E(h,U){if(r.value[h]=U,o.value[h]){const A={...o.value};delete A[h],o.value=A}}function V(h){o.value={...h}}function T(){o.value={}}async function _(){if(!t.value)throw new Error("useResourceFormStore.save() before slug set");if(s.value)throw new Error("Already saving");s.value=!0,u.value=null,o.value={};try{const h=K(),U=n.value==="create"?`/${t.value}/create`:`/${t.value}/update`,A=n.value==="create"?r.value:{id:a.value,...r.value},j=await h.post(U,A),H=j.record?.id??j.id;if(H===void 0)throw new Error("save: backend response does not contain record.id");return a.value=H,k(i.value,{...r.value}),n.value="edit",H}catch(h){throw h instanceof $e?o.value={...h.fields}:(h instanceof se||h instanceof Error)&&(u.value=h),h}finally{s.value=!1}}async function b(){if(!t.value||a.value===null)throw new Error("Nothing to delete");if(d.value)throw new Error("Already deleting");d.value=!0,u.value=null;try{await K().post(`/${t.value}/delete`,{id:a.value})}catch(h){throw h instanceof Error&&(u.value=h),h}finally{d.value=!1}}return{slug:t,mode:n,recordId:a,state:r,initial:i,errors:o,loading:l,saving:s,deleting:d,error:u,isCreate:f,isEdit:y,isView:m,isDirty:v,hasError:w,reset:p,prepareCreate:C,load:B,setField:E,setErrors:V,clearErrors:T,save:_,destroy:b}}),$s={class:"admin-page admin-resource-form"},Ss={class:"admin-page__hd"},Ms={class:"admin-page__title-wrap"},Us={class:"admin-page__title"},Ds={class:"admin-page__actions"},Ts={key:1,class:"admin-resource-form__loading"},Is={key:3,class:"admin-resource-form__savebar"},ht=e.defineComponent({__name:"ResourceFormPage",props:{slug:{},id:{default:null},indexRouteName:{default:null}},setup(t){const n=t,a=Rt(),r=de(),i=X.useRouter(),o=te.provideFormState(a.state,a.errors);e.watch(()=>a.errors,k=>{o.setErrors({...k})});const l=e.computed(()=>r.getResource(n.slug)),s=e.computed(()=>l.value?.fields??[]),d=e.computed(()=>a.isCreate?`Создать: ${l.value?.label??n.slug}`:`${l.value?.label??n.slug}: запись #${n.id}`),u=e.computed(()=>{const k=a.state.status;return typeof k=="string"?k:null}),f=e.computed(()=>{switch(u.value){case"published":return"success";case"review":case"draft":return"warning";case"archived":return"danger";default:return"default"}});e.onMounted(async()=>{r.manifest===null&&await r.load().catch(()=>{}),n.id!==null&&n.id!==void 0?await a.load(n.slug,n.id,"edit").catch(()=>{}):a.prepareCreate(n.slug)}),e.watch(()=>[n.slug,n.id],async([k,p])=>{p!=null?await a.load(k,p,"edit").catch(()=>{}):a.prepareCreate(k)});async function y(){try{const k=await a.save();a.isCreate&&i.push({name:`admin.resource.${n.slug}.edit`,params:{id:k}}).catch(()=>{})}catch{}}const m=e.computed(()=>n.indexRouteName??`admin.resource.${n.slug}.index`);async function w(){confirm("Удалить запись?")&&(await a.destroy().catch(()=>{}),a.hasError||i.push({name:m.value}).catch(()=>{}))}function v(){a.isDirty&&!confirm("Несохранённые изменения будут потеряны. Продолжить?")||i.push({name:m.value}).catch(()=>{})}return(k,p)=>(e.openBlock(),e.createElementBlock("section",$s,[e.createElementVNode("header",Ss,[e.createElementVNode("div",Ms,[e.createElementVNode("a",{class:"admin-resource-form__back",onClick:v},"← Назад"),e.createElementVNode("h1",Us,e.toDisplayString(d.value),1),u.value?(e.openBlock(),e.createBlock(e.unref(c.UidBadge),{key:0,variant:f.value},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(u.value),1)]),_:1},8,["variant"])):e.createCommentVNode("",!0)]),e.createElementVNode("div",Ds,[e.createVNode(e.unref(c.UidButton),{variant:"ghost",disabled:e.unref(a).saving||e.unref(a).deleting,onClick:v},{default:e.withCtx(()=>[...p[0]||(p[0]=[e.createTextVNode(" Отмена ",-1)])]),_:1},8,["disabled"]),e.unref(a).isEdit?(e.openBlock(),e.createBlock(e.unref(c.UidButton),{key:0,variant:"danger",disabled:e.unref(a).saving||e.unref(a).deleting,loading:e.unref(a).deleting,onClick:w},{default:e.withCtx(()=>[...p[1]||(p[1]=[e.createTextVNode(" Удалить ",-1)])]),_:1},8,["disabled","loading"])):e.createCommentVNode("",!0),e.createVNode(e.unref(c.UidButton),{variant:"primary",disabled:e.unref(a).saving||e.unref(a).loading,loading:e.unref(a).saving,onClick:y},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(a).isCreate?"Создать":"Сохранить"),1)]),_:1},8,["disabled","loading"])])]),e.unref(a).hasError?(e.openBlock(),e.createBlock(e.unref(c.UidAlert),{key:0,variant:"danger",class:"admin-resource-form__alert",role:"alert"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(a).error?.message??"Не удалось сохранить запись"),1)]),_:1})):e.createCommentVNode("",!0),e.unref(a).loading?(e.openBlock(),e.createElementBlock("div",Ts,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(6,C=>e.createVNode(e.unref(c.UidSkeleton),{key:C,height:"40px"})),64))])):(e.openBlock(),e.createBlock(e.unref(c.UidCard),{key:2,padding:"md",class:"admin-resource-form__body"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,(C,B)=>(e.openBlock(),e.createBlock(be,{key:B,node:C},null,8,["node"]))),128))]),_:1})),e.unref(a).isDirty&&!e.unref(a).loading?(e.openBlock(),e.createElementBlock("div",Is,[p[4]||(p[4]=e.createElementVNode("span",{class:"admin-resource-form__savebar-hint"}," Есть несохранённые изменения ",-1)),e.createVNode(e.unref(c.UidButton),{variant:"ghost",size:"sm",onClick:v},{default:e.withCtx(()=>[...p[2]||(p[2]=[e.createTextVNode("Отмена",-1)])]),_:1}),e.createVNode(e.unref(c.UidButton),{variant:"primary",size:"sm",loading:e.unref(a).saving,disabled:e.unref(a).saving,onClick:y},{default:e.withCtx(()=>[...p[3]||(p[3]=[e.createTextVNode(" Сохранить ",-1)])]),_:1},8,["loading","disabled"])])):e.createCommentVNode("",!0)]))}}),De=it(),As=De.register,gt=De.get,Fs=De.has,Ls=De.list,zs=De.clear,Pn=De.registerBundle,qn=e.defineComponent({__name:"UnknownEntry",props:{type:{},name:{}},setup(t){return(n,a)=>(e.openBlock(),e.createBlock(e.unref(c.UidAlert),{variant:"warning"},{title:e.withCtx(()=>[e.createTextVNode("Неизвестный тип infolist-entry: "+e.toDisplayString(t.type),1)]),default:e.withCtx(()=>[a[0]||(a[0]=e.createTextVNode(" Зарегистрируйте через ",-1)),e.createElementVNode("code",null,"registerInfolistEntry('"+e.toDisplayString(t.type)+"', YourComponent)",1),a[1]||(a[1]=e.createTextVNode(". ",-1))]),_:1}))}}),Rs={key:1,class:"admin-infolist-rows"},Ps={key:2,class:"admin-infolist-cols"},qs={key:3,class:"admin-infolist-section"},js={key:0,class:"admin-infolist-section__hd"},Os={key:0,class:"admin-infolist-section__title"},Ws={key:1,class:"admin-infolist-section__description"},Hs={class:"admin-infolist-section__body"},Ks={key:4,class:"admin-infolist-tabs"},Gs={class:"admin-infolist-tabs__list",role:"tablist"},Xs={class:"admin-infolist-tabs__panel"},jn=e.defineComponent({__name:"InfolistRenderer",props:{node:{}},setup(t){const n=t,a=new Set(["rows","columns","section","block","tabs"]),r=e.computed(()=>{if(n.node.kind==="entry"){const y=gt(n.node.type);return y?{kind:"entry",component:y}:{kind:"unknown"}}if(n.node.kind==="layout")return a.has(n.node.type)?{kind:"layout",layoutType:n.node.type}:{kind:"unknown"};if(a.has(n.node.type))return{kind:"layout",layoutType:n.node.type};const f=gt(n.node.type);return f?{kind:"entry",component:f}:{kind:"unknown"}}),i=e.computed(()=>{const{type:f,kind:y,items:m,attributes:w,...v}=n.node,k=w??{},{preset:p,format:C,currency:B,decimals:E,trueLabel:V,falseLabel:T,..._}=k,b={};return C!==void 0&&(b.format=C),B!==void 0&&(b.currency=B),E!==void 0&&(b.decimals=E),V!==void 0&&(b.trueLabel=V),T!==void 0&&(b.falseLabel=T),{...v,..._,preset:p,meta:b}}),o=e.computed(()=>n.node.items??[]),l=e.computed(()=>n.node.title??null),s=e.computed(()=>n.node.description??null),d=e.computed(()=>{const f=n.node.active;return typeof f=="number"?f:0}),u=e.computed(()=>n.node.items??[]);return(f,y)=>{const m=e.resolveComponent("InfolistRenderer",!0);return r.value.kind==="entry"?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(r.value.component),e.normalizeProps(e.mergeProps({key:0},i.value)),null,16)):r.value.kind==="layout"&&r.value.layoutType==="rows"?(e.openBlock(),e.createElementBlock("div",Rs,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,(w,v)=>(e.openBlock(),e.createBlock(m,{key:v,node:w},null,8,["node"]))),128))])):r.value.kind==="layout"&&r.value.layoutType==="columns"?(e.openBlock(),e.createElementBlock("div",Ps,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,(w,v)=>(e.openBlock(),e.createElementBlock("div",{key:v,class:"admin-infolist-cols__item",style:e.normalizeStyle({gridColumn:`span ${typeof w.span=="number"?w.span:Math.max(1,Math.floor(12/o.value.length))}`})},[e.createVNode(m,{node:w},null,8,["node"])],4))),128))])):r.value.kind==="layout"&&(r.value.layoutType==="section"||r.value.layoutType==="block")?(e.openBlock(),e.createElementBlock("section",qs,[l.value||s.value?(e.openBlock(),e.createElementBlock("header",js,[l.value?(e.openBlock(),e.createElementBlock("h3",Os,e.toDisplayString(l.value),1)):e.createCommentVNode("",!0),s.value?(e.openBlock(),e.createElementBlock("p",Ws,e.toDisplayString(s.value),1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.createElementVNode("div",Hs,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,(w,v)=>(e.openBlock(),e.createBlock(m,{key:v,node:w},null,8,["node"]))),128))])])):r.value.kind==="layout"&&r.value.layoutType==="tabs"?(e.openBlock(),e.createElementBlock("div",Ks,[e.createElementVNode("ul",Gs,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(u.value,(w,v)=>(e.openBlock(),e.createElementBlock("li",{key:w.key??v,class:e.normalizeClass(["admin-infolist-tabs__tab",{"admin-infolist-tabs__tab--active":v===d.value}])},e.toDisplayString(w.label),3))),128))]),e.createElementVNode("div",Xs,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(u.value[d.value]?.items??[],(w,v)=>(e.openBlock(),e.createBlock(m,{key:v,node:w},null,8,["node"]))),128))])])):(e.openBlock(),e.createBlock(qn,{key:5,type:t.node.type,name:t.node.name},null,8,["type","name"]))}}}),Ys={class:"admin-audit-timeline"},Zs={key:0,class:"admin-audit-timeline__loading"},Js={key:1,class:"admin-audit-timeline__error"},Qs={key:2,class:"admin-audit-timeline__empty"},ec={key:3,class:"admin-audit-timeline__list"},tc={class:"admin-audit-timeline__icon","aria-hidden":"true"},nc={class:"admin-audit-timeline__body"},ac={class:"admin-audit-timeline__row"},oc={class:"admin-audit-timeline__actor"},lc={class:"admin-audit-timeline__verb"},rc={class:"admin-audit-timeline__when"},ic={key:0,class:"admin-audit-timeline__detail"},sc=e.defineComponent({__name:"AuditTimeline",props:{subjectType:{},subjectId:{}},setup(t){const n=t,a=e.ref([]),r=e.ref(!1),i=e.ref(null);async function o(){if(!n.subjectType||n.subjectType===""){a.value=[],r.value=!1,i.value=null;return}r.value=!0,i.value=null;try{const{getAdminClient:m}=await Promise.resolve().then(()=>ee),v=await m().get(`/audit/timeline?subject_type=${encodeURIComponent(n.subjectType)}&subject_id=${encodeURIComponent(String(n.subjectId))}`);a.value=v.data??[]}catch(m){i.value=m instanceof Error?m:new Error(String(m)),a.value=[]}finally{r.value=!1}}e.onMounted(o),e.watch(()=>[n.subjectType,n.subjectId],o);const l=e.computed(()=>a.value.length>0);function s(m){return m==="created"?ot:m==="deleted"||m==="destroyed"?Ce:m.includes("tag")||m.includes("label")?mn:No}function d(m){return{created:"создал",updated:"отредактировал",deleted:"удалил",destroyed:"удалил",restored:"восстановил",published:"опубликовал"}[m]??m}function u(m){const w=new Date(m).getTime();if(Number.isNaN(w))return"";const v=(Date.now()-w)/1e3;return v<60?`${Math.max(1,Math.floor(v))} сек назад`:v<3600?`${Math.floor(v/60)} мин назад`:v<86400?`${Math.floor(v/3600)} ч назад`:v<86400*30?`${Math.floor(v/86400)} д назад`:new Date(m).toLocaleDateString("ru-RU")}function f(m){if(m.summary)return m.summary;if(!m.diff||m.diff.length===0)return"";if(m.diff.length===1){const v=m.diff[0];return`Поле ${v.field}: ${y(v.before)} → ${y(v.after)}`}const w=m.diff.slice(0,4).map(v=>v.field).join(", ");return`Изменены ${m.diff.length} поля: ${w}`}function y(m){return m==null?"∅":typeof m=="string"?m.length>20?`${m.slice(0,20)}…`:m:String(m)}return(m,w)=>(e.openBlock(),e.createElementBlock("section",Ys,[w[0]||(w[0]=e.createElementVNode("h2",{class:"admin-audit-timeline__title"},"История изменений",-1)),r.value?(e.openBlock(),e.createElementBlock("div",Zs,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(3,v=>e.createVNode(e.unref(c.UidSkeleton),{key:v,height:"48px"})),64))])):i.value?(e.openBlock(),e.createElementBlock("div",Js," Не удалось загрузить историю: "+e.toDisplayString(i.value.message),1)):l.value?(e.openBlock(),e.createElementBlock("ol",ec,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,v=>(e.openBlock(),e.createElementBlock("li",{key:v.id,class:"admin-audit-timeline__item"},[e.createElementVNode("span",tc,[e.createVNode(e.unref(c.UidIcon),{icon:s(v.event),size:14},null,8,["icon"])]),e.createElementVNode("div",nc,[e.createElementVNode("div",ac,[e.createVNode(e.unref(c.UidAvatar),{name:v.actor?.name??"?",alt:v.actor?.name??"Неизвестный",size:"xs"},null,8,["name","alt"]),e.createElementVNode("span",oc,e.toDisplayString(v.actor?.name??"Система"),1),e.createElementVNode("span",lc,e.toDisplayString(d(v.event)),1),e.createElementVNode("span",rc,e.toDisplayString(u(v.created_at)),1)]),f(v)?(e.openBlock(),e.createElementBlock("div",ic,e.toDisplayString(f(v)),1)):e.createCommentVNode("",!0)])]))),128))])):(e.openBlock(),e.createElementBlock("div",Qs," Записей в истории пока нет. "))]))}}),cc={class:"admin-page admin-resource-view"},dc={class:"admin-resource-view__hd"},uc={class:"admin-resource-view__hd-left"},mc={class:"admin-page__title"},fc={class:"admin-resource-view__meta"},pc=["data-variant","data-status"],vc={class:"admin-resource-view__uid"},hc={class:"admin-resource-view__hd-right"},gc={key:1,class:"admin-resource-view__loading"},yc={key:2,class:"admin-resource-view__grid"},kc={class:"admin-resource-view__main"},_c={class:"admin-resource-view__aside"},bc={class:"admin-resource-view__metrics"},wc={class:"admin-resource-view__metric-label"},Bc={class:"admin-resource-view__metric-value"},On=e.defineComponent({__name:"ResourceViewPage",props:{slug:{},id:{},editRouteName:{default:void 0},indexRouteName:{default:null},auditSubjectType:{default:null},statusField:{default:"status"},uidPrefix:{default:"#"}},setup(t){const n=t,a=Rt(),r=de(),i=X.useRouter();It(a.state);const o=e.computed(()=>r.getResource(n.slug)),l=e.computed(()=>o.value?.infolist??o.value?.fields??[]),s=e.computed(()=>n.auditSubjectType!==null?n.auditSubjectType:o.value?.subject_type??null),d=e.computed(()=>{const T=a.state,_=[],b=j=>{if(typeof j!="string"||j==="")return null;const H=new Date(j);return Number.isNaN(H.getTime())?null:H.toLocaleString("ru-RU",{day:"2-digit",month:"2-digit",year:"numeric",hour:"2-digit",minute:"2-digit"})},h=b(T.created_at);h&&_.push({label:"Создано",value:h});const U=b(T.updated_at);U&&U!==h&&_.push({label:"Обновлено",value:U});const A=typeof T.created_by_name=="string"&&T.created_by_name!==""?T.created_by_name:typeof T.author=="string"?T.author:null;return A&&_.push({label:"Автор",value:A}),_}),u=e.computed(()=>{const T=a.state,_=T.title??T.name??T.label;return typeof _=="string"&&_.length>0?_:`${o.value?.label??n.slug}: запись #${n.id}`}),f=e.computed(()=>o.value?.label??n.slug),y=e.computed(()=>`${n.uidPrefix}${n.id}`),m=e.computed(()=>{const _=a.state[n.statusField];return typeof _=="string"&&_.length>0?_:null}),w={published:"success",active:"success",enabled:"success",draft:"neutral",pending:"warning",review:"warning",archived:"muted",disabled:"muted",inactive:"muted",deleted:"danger",failed:"danger",error:"danger"};function v(T){return w[T.toLowerCase()]??"neutral"}const k=e.computed(()=>(o.value?.actions??[]).map(_=>({key:String(_.key??_.name??""),label:String(_.label??_.name??_.key??""),confirm:typeof _.confirm=="string"?_.confirm:void 0})).filter(_=>_.key!==""&&_.label!==""));async function p(T){if(!(T.confirm&&!window.confirm(T.confirm)))try{const{getAdminClient:_}=await Promise.resolve().then(()=>ee);await _().post(`/${n.slug}/action/${T.key}`,{ids:[n.id]}),await a.load(n.slug,n.id,"view").catch(()=>{})}catch(_){typeof console<"u"&&console.error("[admin] action failed:",_)}}e.onMounted(async()=>{r.manifest===null&&await r.load().catch(()=>{}),await a.load(n.slug,n.id,"view").catch(()=>{})}),e.watch(()=>[n.slug,n.id],async([T,_])=>{await a.load(T,_,"view").catch(()=>{})});const C=e.computed(()=>n.indexRouteName??`admin.resource.${n.slug}.index`);function B(){i.push({name:C.value}).catch(()=>{i.push(`/r/${n.slug}`)})}function E(){if(!n.editRouteName){i.push(`/r/${n.slug}/${n.id}/edit`).catch(()=>{});return}i.push({name:n.editRouteName,params:{id:n.id}}).catch(()=>{})}async function V(){confirm("Удалить запись?")&&(await a.destroy().catch(()=>{}),a.hasError||i.push({name:C.value}).catch(()=>{}))}return(T,_)=>(e.openBlock(),e.createElementBlock("section",cc,[e.createElementVNode("header",dc,[e.createElementVNode("div",uc,[e.createElementVNode("button",{type:"button",class:"admin-resource-view__back",onClick:B},[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(Va),size:14},null,8,["icon"]),e.createTextVNode(" "+e.toDisplayString(f.value),1)]),e.createElementVNode("h1",mc,e.toDisplayString(u.value),1),e.createElementVNode("div",fc,[m.value?(e.openBlock(),e.createElementBlock("span",{key:0,class:"admin-status-badge","data-variant":v(m.value),"data-status":m.value},[_[0]||(_[0]=e.createElementVNode("span",{class:"admin-status-badge__dot","aria-hidden":"true"},null,-1)),e.createTextVNode(" "+e.toDisplayString(m.value),1)],8,pc)):e.createCommentVNode("",!0),e.createElementVNode("span",vc,e.toDisplayString(y.value),1)])]),e.createElementVNode("div",hc,[e.createVNode(e.unref(c.UidButton),{variant:"secondary",size:"md",onClick:E},{prepend:e.withCtx(()=>[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(wt),size:14},null,8,["icon"])]),default:e.withCtx(()=>[_[1]||(_[1]=e.createTextVNode(" Редактировать ",-1))]),_:1}),e.createVNode(e.unref(c.UidMenu),null,{trigger:e.withCtx(()=>[e.createVNode(e.unref(c.UidButton),{variant:"ghost",size:"md","aria-label":"Действия",class:"admin-page__more"},{default:e.withCtx(()=>[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(ln),size:16},null,8,["icon"])]),_:1})]),default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(k.value,b=>(e.openBlock(),e.createBlock(e.unref(c.UidMenuItem),{key:b.key,onClick:h=>p(b)},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(b.label),1)]),_:2},1032,["onClick"]))),128)),e.createVNode(e.unref(c.UidMenuItem),{variant:"danger",onClick:V},{icon:e.withCtx(()=>[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(Ce),size:14},null,8,["icon"])]),default:e.withCtx(()=>[_[2]||(_[2]=e.createTextVNode(" Удалить ",-1))]),_:1})]),_:1})])]),e.unref(a).hasError?(e.openBlock(),e.createBlock(e.unref(c.UidAlert),{key:0,variant:"danger",class:"admin-resource-view__alert",role:"alert"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(a).error?.message??"Не удалось загрузить запись"),1)]),_:1})):e.createCommentVNode("",!0),e.unref(a).loading?(e.openBlock(),e.createElementBlock("div",gc,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(8,b=>e.createVNode(e.unref(c.UidSkeleton),{key:b,height:"24px"})),64))])):(e.openBlock(),e.createElementBlock("div",yc,[e.createElementVNode("div",kc,[e.createVNode(e.unref(c.UidCard),{padding:"md",class:"admin-resource-view__card"},{default:e.withCtx(()=>[_[3]||(_[3]=e.createElementVNode("h2",{class:"admin-resource-view__card-title"},"Основные данные",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value,(b,h)=>(e.openBlock(),e.createBlock(jn,{key:h,node:b},null,8,["node"]))),128))]),_:1}),e.createVNode(e.unref(c.UidCard),{padding:"md",class:"admin-resource-view__card"},{default:e.withCtx(()=>[e.createVNode(sc,{"subject-type":s.value,"subject-id":t.id},null,8,["subject-type","subject-id"])]),_:1})]),e.createElementVNode("aside",_c,[d.value.length>0?(e.openBlock(),e.createBlock(e.unref(c.UidCard),{key:0,padding:"md",class:"admin-resource-view__card"},{default:e.withCtx(()=>[_[4]||(_[4]=e.createElementVNode("h2",{class:"admin-resource-view__card-title"},"Метрики",-1)),e.createElementVNode("dl",bc,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.value,b=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:b.label},[e.createElementVNode("dt",wc,e.toDisplayString(b.label),1),e.createElementVNode("dd",Bc,e.toDisplayString(b.value),1)],64))),128))])]),_:1})):e.createCommentVNode("",!0),e.renderSlot(T.$slots,"sidebar",{record:e.unref(a).state,resource:o.value})])]))]))}}),Vc={class:"admin-page admin-profile"},xc={class:"admin-page__hd"},Nc={class:"admin-page__title-wrap"},Cc={class:"admin-page__title"},Ec={class:"admin-page__count"},$c={class:"admin-profile__layout"},Sc={class:"admin-profile__nav","aria-label":"Profile sections"},Mc=["onClick"],Uc=["data-icon"],Dc={class:"admin-profile__content"},Tc={class:"admin-profile__hero"},Ic={class:"admin-profile__hero-text"},Ac={class:"admin-profile__hero-name"},Fc={class:"admin-profile__hero-meta"},Lc={class:"admin-profile__form"},zc={class:"admin-profile__card-ft"},Rc={class:"admin-profile__card-hd"},Pc={key:0,class:"admin-profile__hint"},qc={key:1,class:"admin-profile__hint"},jc={class:"admin-profile__card-ft"},Oc={class:"admin-profile__hint"},Wn=e.defineComponent({__name:"ProfilePage",props:{title:{default:"Profile"},subtitle:{default:"Личные данные, безопасность, токены"},section:{default:"general"}},emits:["update:section","avatar-replace","two-factor-disable","two-factor-regenerate","save"],setup(t,{emit:n}){const a=t,r=n,i=re(),o=lt(),l=Le(),s=[{id:"general",label:"Основное",icon:"user"},{id:"security",label:"Безопасность",icon:"shield"},{id:"tokens",label:"API токены",icon:"key"},{id:"sessions",label:"Сессии",icon:"monitor"}],d=e.ref(a.section);function u(B){d.value=B,r("update:section",B)}const f=e.ref({name:i.user?.name??"",email:i.user?.email??"",locale:l.current,theme:o.current}),y=e.computed(()=>l.available.map(B=>({value:B,label:B.toUpperCase()}))),m=e.computed(()=>o.available.map(B=>({value:B,label:B==="dark"?"Тёмная":B==="light"?"Светлая":B})));e.watch(()=>f.value.locale,(B,E)=>{B===E||!B||l.setLocale(B).catch(()=>{})}),e.watch(()=>f.value.theme,(B,E)=>{B===E||!B||o.setTheme(B).catch(()=>{})});function w(){r("save",{...f.value})}function v(){r("avatar-replace")}function k(){r("two-factor-disable")}function p(){r("two-factor-regenerate")}const C=e.computed(()=>!!i.user?.twoFactorEnabled);return(B,E)=>(e.openBlock(),e.createElementBlock("section",Vc,[e.createElementVNode("header",xc,[e.createElementVNode("div",Nc,[e.createElementVNode("h1",Cc,e.toDisplayString(t.title),1),e.createElementVNode("div",Ec,e.toDisplayString(t.subtitle),1)])]),e.createElementVNode("div",$c,[e.createElementVNode("nav",Sc,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(s,V=>e.createElementVNode("button",{key:V.id,type:"button",class:e.normalizeClass(["admin-profile__nav-item",{"admin-profile__nav-item--active":d.value===V.id}]),onClick:T=>u(V.id)},[e.createElementVNode("span",{class:"admin-profile__nav-icon","data-icon":V.icon},null,8,Uc),e.createElementVNode("span",null,e.toDisplayString(V.label),1)],10,Mc)),64))]),e.createElementVNode("div",Dc,[d.value==="general"?(e.openBlock(),e.createBlock(e.unref(c.UidCard),{key:0,padding:"md"},{default:e.withCtx(()=>[E[7]||(E[7]=e.createElementVNode("header",{class:"admin-profile__card-hd"},[e.createElementVNode("h3",{class:"admin-profile__card-title"},"Профиль")],-1)),e.createElementVNode("div",Tc,[e.createVNode(e.unref(c.UidAvatar),{src:e.unref(i).user?.avatar??void 0,name:e.unref(i).user?.name??"?",size:"lg"},null,8,["src","name"]),e.createElementVNode("div",Ic,[e.createElementVNode("div",Ac,e.toDisplayString(e.unref(i).user?.name??"—"),1),e.createElementVNode("div",Fc,e.toDisplayString(e.unref(i).user?.email??"—"),1)]),E[5]||(E[5]=e.createElementVNode("div",{style:{flex:"1"}},null,-1)),e.createVNode(e.unref(c.UidButton),{variant:"ghost",size:"sm",onClick:v},{default:e.withCtx(()=>[...E[4]||(E[4]=[e.createTextVNode(" Заменить ",-1)])]),_:1})]),e.createElementVNode("div",Lc,[e.createVNode(e.unref(c.UidInput),{modelValue:f.value.name,"onUpdate:modelValue":E[0]||(E[0]=V=>f.value.name=V),label:"Имя",name:"name"},null,8,["modelValue"]),e.createVNode(e.unref(c.UidInput),{modelValue:f.value.email,"onUpdate:modelValue":E[1]||(E[1]=V=>f.value.email=V),label:"Email",type:"email",name:"email"},null,8,["modelValue"]),e.createVNode(e.unref(c.UidSelect),{modelValue:f.value.locale,"onUpdate:modelValue":E[2]||(E[2]=V=>f.value.locale=V),options:y.value,label:"Язык"},null,8,["modelValue","options"]),e.createVNode(e.unref(c.UidSelect),{modelValue:f.value.theme,"onUpdate:modelValue":E[3]||(E[3]=V=>f.value.theme=V),options:m.value,label:"Тема"},null,8,["modelValue","options"])]),e.createElementVNode("footer",zc,[e.createVNode(e.unref(c.UidButton),{variant:"primary",onClick:w},{default:e.withCtx(()=>[...E[6]||(E[6]=[e.createTextVNode("Сохранить",-1)])]),_:1})])]),_:1})):d.value==="security"?(e.openBlock(),e.createBlock(e.unref(c.UidCard),{key:1,padding:"md"},{default:e.withCtx(()=>[e.createElementVNode("header",Rc,[E[8]||(E[8]=e.createElementVNode("h3",{class:"admin-profile__card-title"},"Двухфакторная аутентификация",-1)),e.createVNode(e.unref(c.UidBadge),{variant:C.value?"success":"default"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(C.value?"Включена":"Отключена"),1)]),_:1},8,["variant"])]),C.value?(e.openBlock(),e.createElementBlock("p",Pc," 2FA включена. У вас остались recovery-коды на случай потери устройства. ")):(e.openBlock(),e.createElementBlock("p",qc," Включите 2FA для дополнительной защиты аккаунта. ")),e.createElementVNode("footer",jc,[C.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createVNode(e.unref(c.UidButton),{variant:"ghost",size:"sm",onClick:p},{default:e.withCtx(()=>[...E[9]||(E[9]=[e.createTextVNode(" Перегенерировать коды ",-1)])]),_:1}),e.createVNode(e.unref(c.UidButton),{variant:"danger",size:"sm",onClick:k},{default:e.withCtx(()=>[...E[10]||(E[10]=[e.createTextVNode(" Отключить 2FA ",-1)])]),_:1})],64)):e.renderSlot(B.$slots,"enable-2fa",{key:1},()=>[e.createVNode(e.unref(c.UidButton),{variant:"primary",disabled:""},{default:e.withCtx(()=>[...E[11]||(E[11]=[e.createTextVNode(" Включить 2FA (host customize) ",-1)])]),_:1})])])]),_:3})):e.renderSlot(B.$slots,d.value,{key:2,section:d.value},()=>[e.createVNode(e.unref(c.UidCard),{padding:"md"},{default:e.withCtx(()=>[e.createElementVNode("p",Oc," Section «"+e.toDisplayString(d.value)+"» не реализована библиотекой — host-проект подключает её через slot "+e.toDisplayString(d.value)+". ",1)]),_:1})])])])]))}}),yt=e.defineComponent({__name:"StatWidget",props:{title:{default:""},value:{default:0},prefix:{default:""},suffix:{default:""},trend:{default:void 0},precision:{default:0},tone:{default:"neutral"},loading:{type:Boolean,default:!1}},setup(t){const n=t,a={neutral:"primary",positive:"success",negative:"danger",warning:"warning",info:"info"},r=e.computed(()=>a[n.tone]);return(i,o)=>(e.openBlock(),e.createBlock(e.unref(c.UidStat),{title:t.title,value:t.value,prefix:t.prefix,suffix:t.suffix,trend:t.trend,precision:t.precision,tone:r.value,loading:t.loading},null,8,["title","value","prefix","suffix","trend","precision","tone","loading"]))}}),Wc={key:0,class:"admin-widget__hd"},Hc={key:0,class:"admin-widget__title"},Kc={key:1,class:"admin-widget__desc"},Gc={key:1,class:"admin-widget__empty"},Xc=["viewBox","height","aria-label"],Yc=["x","y","width","height","fill","data-label","data-value"],Pt=e.defineComponent({__name:"BarChartWidget",props:{title:{default:""},description:{default:""},data:{},accent:{default:"var(--uid-accent)"},height:{default:200}},setup(t){const n=t,a=e.computed(()=>n.data.length===0||n.data.every(o=>!o.value)),r=e.computed(()=>Math.max(1,...n.data.map(o=>o.value))),i=e.computed(()=>{const l=100/Math.max(1,n.data.length);return n.data.map((s,d)=>({label:s.label,value:s.value,x:d*l+l*.1,width:l*.8,heightPct:s.value/r.value*100}))});return(o,l)=>(e.openBlock(),e.createBlock(e.unref(c.UidCard),{padding:"md",class:"admin-widget"},{default:e.withCtx(()=>[t.title||t.description?(e.openBlock(),e.createElementBlock("header",Wc,[t.title?(e.openBlock(),e.createElementBlock("h3",Hc,e.toDisplayString(t.title),1)):e.createCommentVNode("",!0),t.description?(e.openBlock(),e.createElementBlock("p",Kc,e.toDisplayString(t.description),1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),a.value?(e.openBlock(),e.createElementBlock("div",Gc,"Нет данных за период")):(e.openBlock(),e.createElementBlock("svg",{key:2,class:"admin-widget-bar-chart",viewBox:`0 0 100 ${t.height}`,preserveAspectRatio:"none",height:t.height,width:"100%",role:"img","aria-label":t.title||"Bar chart"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,(s,d)=>(e.openBlock(),e.createElementBlock("rect",{key:d,x:s.x,y:t.height-s.heightPct/100*t.height,width:s.width,height:s.heightPct/100*t.height,fill:t.accent,rx:"1","data-label":s.label,"data-value":s.value},[e.createElementVNode("title",null,e.toDisplayString(s.label)+": "+e.toDisplayString(s.value),1)],8,Yc))),128))],8,Xc))]),_:1}))}}),Zc={key:0,class:"admin-widget__hd"},Jc={class:"admin-widget__title"},Qc={key:1,class:"admin-widget__empty"},ed={key:2,class:"admin-donut-widget__row"},td=["aria-label"],nd=["d","fill"],ad={class:"admin-donut-widget__legend"},od={class:"admin-donut-widget__label"},ld={class:"admin-donut-widget__value"},qt=e.defineComponent({__name:"DonutChartWidget",props:{title:{default:""},data:{}},setup(t){const n=t,a=["var(--uid-color-teal-500, #14b8a6)","var(--uid-color-zinc-700, #3f3f46)","var(--uid-color-amber-400, #fbbf24)","var(--uid-color-rose-400, #fb7185)","var(--uid-color-blue-400, #60a5fa)"],r=e.computed(()=>n.data.length===0||n.data.every(l=>!l.value)),i=e.computed(()=>n.data.reduce((l,s)=>l+s.value,0)||1),o=e.computed(()=>{let l=0;return n.data.map((s,d)=>{const u=l/i.value*2*Math.PI;l+=s.value;const f=l/i.value*2*Math.PI,y=50,m=60,w=60,v=m+y*Math.cos(u-Math.PI/2),k=w+y*Math.sin(u-Math.PI/2),p=m+y*Math.cos(f-Math.PI/2),C=w+y*Math.sin(f-Math.PI/2),B=f-u>Math.PI?1:0,E=n.data.length===1?`M ${m-y} ${w} a ${y} ${y} 0 1 0 ${y*2} 0 a ${y} ${y} 0 1 0 ${-y*2} 0`:`M ${m} ${w} L ${v} ${k} A ${y} ${y} 0 ${B} 1 ${p} ${C} Z`;return{...s,path:E,color:s.color??a[d%a.length],pct:(s.value/i.value*100).toFixed(1)}})});return(l,s)=>(e.openBlock(),e.createBlock(e.unref(c.UidCard),{padding:"md",class:"admin-widget admin-donut-widget"},{default:e.withCtx(()=>[t.title?(e.openBlock(),e.createElementBlock("header",Zc,[e.createElementVNode("h3",Jc,e.toDisplayString(t.title),1)])):e.createCommentVNode("",!0),r.value?(e.openBlock(),e.createElementBlock("div",Qc,"Нет данных")):(e.openBlock(),e.createElementBlock("div",ed,[(e.openBlock(),e.createElementBlock("svg",{viewBox:"0 0 120 120",class:"admin-donut-widget__svg",role:"img","aria-label":t.title},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,(d,u)=>(e.openBlock(),e.createElementBlock("path",{key:u,d:d.path,fill:d.color},[e.createElementVNode("title",null,e.toDisplayString(d.label)+": "+e.toDisplayString(d.value)+" ("+e.toDisplayString(d.pct)+"%)",1)],8,nd))),128)),s[0]||(s[0]=e.createElementVNode("circle",{cx:"60",cy:"60",r:"30",fill:"var(--uid-surface-raised)"},null,-1))],8,td)),e.createElementVNode("ul",ad,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,(d,u)=>(e.openBlock(),e.createElementBlock("li",{key:u},[e.createElementVNode("span",{class:"admin-donut-widget__dot",style:e.normalizeStyle({background:d.color})},null,4),e.createElementVNode("span",od,e.toDisplayString(d.label),1),e.createElementVNode("span",ld,e.toDisplayString(d.pct)+"%",1)]))),128))])]))]),_:1}))}}),rd={key:0,class:"admin-widget__hd"},id={class:"admin-widget__title"},Qe=e.defineComponent({__name:"RecentTableWidget",props:{title:{default:""},columns:{default:()=>[]},rows:{default:()=>[]},emptyText:{default:"Нет данных"}},setup(t){const n=t,a=e.computed(()=>n.columns.map(r=>{const i=r.column??r.key;return{key:String(i??""),label:r.label,align:r.align}}));return(r,i)=>(e.openBlock(),e.createBlock(e.unref(c.UidCard),{padding:"md",class:"admin-widget"},{default:e.withCtx(()=>[t.title?(e.openBlock(),e.createElementBlock("header",rd,[e.createElementVNode("h3",id,e.toDisplayString(t.title),1)])):e.createCommentVNode("",!0),e.createVNode(e.unref(c.UidTable),{columns:a.value,data:t.rows,"empty-text":t.emptyText},null,8,["columns","data","empty-text"])]),_:1}))}}),sd={key:0,class:"admin-widget__hd"},cd={class:"admin-widget__title"},dd={class:"admin-heatmap__cols-axis","aria-hidden":"true"},ud={class:"admin-heatmap__row-label"},md={class:"admin-heatmap__cells"},fd=["title"],pd={key:2,class:"admin-heatmap__empty"},Hn=e.defineComponent({__name:"HeatmapWidget",props:{title:{default:""},rows:{default:()=>[]},cols:{default:()=>[]},matrix:{default:()=>[]},formatValue:{type:Function,default:void 0},color:{default:"var(--uid-color-primary, #14b8a6)"}},setup(t){const n=t,a=e.computed(()=>{let o=0;for(const l of n.matrix)for(const s of l)typeof s=="number"&&s>o&&(o=s);return o||1});function r(o){return typeof o!="number"||o<=0?0:Math.max(.1,Math.min(1,o/a.value))}function i(o,l,s){const d=n.rows[l]??"",u=n.cols[s]??"";return n.formatValue?n.formatValue(o,d,u):`${d} ${u}: ${o}`}return(o,l)=>(e.openBlock(),e.createBlock(e.unref(c.UidCard),{padding:"md",class:"admin-widget admin-heatmap-widget"},{default:e.withCtx(()=>[t.title?(e.openBlock(),e.createElementBlock("header",sd,[e.createElementVNode("h3",cd,e.toDisplayString(t.title),1)])):e.createCommentVNode("",!0),t.rows.length>0&&t.cols.length>0&&t.matrix.length>0?(e.openBlock(),e.createElementBlock("div",{key:1,class:"admin-heatmap",style:e.normalizeStyle({"--admin-heatmap-cols":t.cols.length})},[e.createElementVNode("div",dd,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.cols,(s,d)=>(e.openBlock(),e.createElementBlock("span",{key:`c-${d}`,class:"admin-heatmap__col-label"},e.toDisplayString(d%3===0?s:""),1))),128))]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.matrix,(s,d)=>(e.openBlock(),e.createElementBlock("div",{key:`r-${d}`,class:"admin-heatmap__row"},[e.createElementVNode("span",ud,e.toDisplayString(t.rows[d]??""),1),e.createElementVNode("div",md,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s,(u,f)=>(e.openBlock(),e.createElementBlock("span",{key:`cell-${d}-${f}`,class:"admin-heatmap__cell",style:e.normalizeStyle({background:t.color,opacity:r(u)}),title:i(u,d,f)},null,12,fd))),128))])]))),128))],4)):(e.openBlock(),e.createElementBlock("div",pd,"Нет данных"))]),_:1}))}}),vd={key:0,class:"admin-widget__hd"},hd={class:"admin-widget__title"},gd={class:"admin-gauge-widget__body"},Kn=e.defineComponent({__name:"GaugeWidget",props:{title:{default:""},value:{default:0},min:{default:0},max:{default:100},size:{default:220},ranges:{default:()=>[]},thresholds:{default:()=>[]},unit:{default:""},tone:{default:"neutral"},color:{default:void 0},label:{default:""},suffix:{default:""},precision:{default:0}},setup(t){const n=t,a={neutral:"primary",positive:"success",warning:"warning",negative:"danger"},r=e.computed(()=>a[n.tone]),i=e.computed(()=>n.ranges.length>0?n.ranges:n.thresholds),o=e.computed(()=>n.suffix||n.unit||"");return(l,s)=>(e.openBlock(),e.createBlock(e.unref(c.UidCard),{padding:"md",class:"admin-widget"},{default:e.withCtx(()=>[t.title?(e.openBlock(),e.createElementBlock("header",vd,[e.createElementVNode("h3",hd,e.toDisplayString(t.title),1)])):e.createCommentVNode("",!0),e.createElementVNode("div",gd,[e.createVNode(e.unref(c.UidGauge),{value:t.value,min:t.min,max:t.max,size:t.size,ranges:i.value,tone:r.value,color:t.color,label:t.label,suffix:o.value,precision:t.precision},null,8,["value","min","max","size","ranges","tone","color","label","suffix","precision"])])]),_:1}))}}),yd={key:0,class:"admin-widget__hd"},kd={class:"admin-widget__title"},_d={class:"admin-markdown-widget"},Gn=e.defineComponent({__name:"MarkdownWidget",props:{title:{default:""},content:{}},setup(t){return(n,a)=>(e.openBlock(),e.createBlock(e.unref(c.UidCard),{padding:"md",class:"admin-widget"},{default:e.withCtx(()=>[t.title?(e.openBlock(),e.createElementBlock("header",yd,[e.createElementVNode("h3",kd,e.toDisplayString(t.title),1)])):e.createCommentVNode("",!0),e.createElementVNode("div",_d,e.toDisplayString(t.content),1)]),_:1}))}}),bd=e.defineComponent({__name:"ChartWidget",props:{type:{},title:{},size:{},data:{}},setup(t){const n=t,a=e.computed(()=>n.data?.chartType??n.data?.type??"bar"),r=["#10b981","#f59e0b","#9ca3af","#3b82f6","#dc2626","#a855f7","#ec4899"],i=e.computed(()=>{const s=n.data?.datasets?.[0];return s?s.data.map((d,u)=>({label:n.data?.labels?.[u]??String(u+1),value:d})):[]}),o=e.computed(()=>n.data?.datasets?.[0]?.color),l=e.computed(()=>{const s=n.data?.datasets?.[0];return s?s.data.map((d,u)=>({label:n.data?.labels?.[u]??String(u+1),value:d,color:s.color??r[u%r.length]})):[]});return(s,d)=>a.value==="doughnut"||a.value==="pie"?(e.openBlock(),e.createBlock(qt,{key:0,title:t.title,data:l.value},null,8,["title","data"])):a.value==="bar"||a.value==="line"||a.value==="area"?(e.openBlock(),e.createBlock(Pt,{key:1,title:t.title,data:i.value,accent:o.value},null,8,["title","data","accent"])):(e.openBlock(),e.createBlock(Ut,{key:2,type:`chart:${a.value}`},null,8,["type"]))}});function Xn(){En({stat:yt,stats:yt,chart:bd,"bar-chart":Pt,"donut-chart":qt,"recent-table":Qe,recent_list:Qe,"recent-list":Qe,heatmap:Hn,gauge:Kn,markdown:Gn})}function Yn(t){return t.success===!0}function wd(t){return t.success===!1}function Zn(t){const n=ya.create({baseURL:t.baseURL,withCredentials:!0,headers:{Accept:"application/json","X-Requested-With":"XMLHttpRequest"}});t.csrfToken&&(n.defaults.headers.common["X-CSRF-TOKEN"]=t.csrfToken),t.locale&&(n.defaults.headers.common["X-Admin-Locale"]=t.locale),n.interceptors.request.use(i=>{const o=Bd("XSRF-TOKEN");return o&&i.headers.set("X-XSRF-TOKEN",decodeURIComponent(o)),i}),n.interceptors.response.use(i=>{const o=i.data;if(o&&typeof o=="object"&&"success"in o){if(Yn(o))return i.data=o.payload,i;throw pt(i.status,o.payload)}return i},i=>{if(i.response){const o=i.response.status,l=i.response.data?.payload??{errorKey:"unknown",message:i.message},s=pt(o,l);return s instanceof Et&&t.onUnauthenticated?.(),Promise.reject(s)}return Promise.reject(new Re(i.message))});const a=(i,o,l)=>n[i](o,l).then(s=>s.data),r=(i,o,l,s)=>n[i](o,l,s).then(d=>d.data);return{raw:n,get:(i,o)=>a("get",i,o),delete:(i,o)=>a("delete",i,o),post:(i,o,l)=>r("post",i,o,l),put:(i,o,l)=>r("put",i,o,l),patch:(i,o,l)=>r("patch",i,o,l),setLocale:i=>{n.defaults.headers.common["X-Admin-Locale"]=i}}}function Bd(t){if(typeof document>"u")return null;const n=document.cookie.match(new RegExp("(^|; )"+Vd(t)+"=([^;]*)"));return n?n[2]:null}function Vd(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Je(t,n){const a=t.permissions?.[n];return typeof a=="string"&&a.length>0?[a]:[]}function xd(t,n){const a=t.permissions?.[n];return typeof a=="string"&&a.length>0?[a]:[]}function Nd(t){return Array.isArray(t.permission)?t.permission:typeof t.permission=="string"&&t.permission.length>0?[t.permission]:[]}function Cd(t,n){const a=t.slug,r=`/r/${a}`;return[{path:r,name:`admin.resource.${a}.index`,component:n.resourceIndex,meta:{requiresAuth:!0,kind:"resource",slug:a,title:t.label,permissions:Je(t,"view")},props:{slug:a}},{path:`${r}/create`,name:`admin.resource.${a}.create`,component:n.resourceCreate,meta:{requiresAuth:!0,kind:"resource",slug:a,title:`${t.label}: создать`,permissions:Je(t,"create")},props:{slug:a}},{path:`${r}/:id/edit`,name:`admin.resource.${a}.edit`,component:n.resourceEdit,meta:{requiresAuth:!0,kind:"resource",slug:a,title:`${t.label}: редактирование`,permissions:Je(t,"update")},props:i=>({slug:a,id:i.params.id})},{path:`${r}/:id`,name:`admin.resource.${a}.view`,component:n.resourceView,meta:{requiresAuth:!0,kind:"resource",slug:a,title:t.label,permissions:Je(t,"view")},props:i=>({slug:a,id:i.params.id})}]}function Ed(t,n){return{path:`/screens/${t.slug}`,name:`admin.screen.${t.slug}`,component:n.screen,meta:{requiresAuth:!0,kind:"screen",slug:t.slug,title:t.name,permissions:Nd(t)}}}function $d(t,n){return{path:`/settings/${t.slug}`,name:`admin.settings.${t.slug}`,component:n.settings,meta:{requiresAuth:!0,kind:"settings",slug:t.slug,title:t.label,permissions:xd(t,"view")}}}function Sd(t,n){if(typeof t.slug!="string"||t.slug.length===0)return null;const a=t.permission,r=Array.isArray(a)?a:typeof a=="string"&&a.length>0?[a]:[];return{path:`/dashboard/${t.slug}`,name:`admin.dashboard.${t.slug}`,component:n.dashboard,meta:{requiresAuth:!0,kind:"dashboard",slug:t.slug,title:t.label??"Dashboard",permissions:r}}}function Jn(t,n){if(t===null)return[];const a=[];for(const r of t.resources)a.push(...Cd(r,n));for(const r of t.screens)a.push(Ed(r,n));for(const r of t.settings)a.push($d(r,n));for(const r of t.dashboards){const i=Sd(r,n);i&&a.push(i)}return a}function Qn(t={}){const n=t.loginRouteName??"admin.login",a=t.forbiddenRouteName??"admin.forbidden",r=t.redirectQueryKey??"redirect";return i=>{if(i.name===n)return!0;const o=re();if(i.meta?.requiresAuth===!0&&!o.isAuthenticated)return{name:n,query:{[r]:i.fullPath}};if(o.isChallengePending)return{name:n,query:{[r]:i.fullPath}};const s=i.meta?.permissions;return Array.isArray(s)&&s.length>0&&!o.hasAnyPermission(s)?{name:a}:!0}}function ea(t={}){const n=t.template,a=t.brand??"",r=t.fallback??"";return i=>{if(typeof document>"u")return;const o=i.meta?.title??r;let l;n?l=n.replace("{title}",o).replace("{brand}",a):o&&a?l=`${o} · ${a}`:l=o||a,document.title=l}}const Md=["admin.resource.","admin.screen.","admin.settings.","admin.dashboard."];function Ud(t){return typeof t!="string"?!1:Md.some(n=>t.startsWith(n))}function ta(t){const n=t.base??"/admin",a=t.history??X.createWebHistory(n),r=[{path:"/login",name:"admin.login",component:t.components.login,meta:{kind:"auth",title:"Вход"}},{path:"/",name:"admin.home",component:t.components.home,meta:{requiresAuth:!0,kind:"system",title:"Главная"}},{path:"/forbidden",name:"admin.forbidden",component:t.components.forbidden,meta:{requiresAuth:!0,kind:"system",title:"403 — доступ запрещён"}}];t.components.profile&&r.push({path:"/profile",name:"admin.profile",component:t.components.profile,meta:{requiresAuth:!0,kind:"system",title:"Профиль"}}),t.components.notifications&&r.push({path:"/notifications",name:"admin.notifications",component:t.components.notifications,meta:{requiresAuth:!0,kind:"system",title:"Уведомления"}}),t.components.forgotPassword&&r.push({path:"/forgot-password",name:"admin.forgotPassword",component:t.components.forgotPassword,meta:{kind:"auth",title:"Восстановление пароля"}}),t.components.resetPassword&&r.push({path:"/reset-password",name:"admin.resetPassword",component:t.components.resetPassword,meta:{kind:"auth",title:"Новый пароль"}});const i={path:"/:pathMatch(.*)*",name:"admin.notFound",component:t.components.notFound,meta:{kind:"system",title:"404"}},o=X.createRouter({history:a,routes:[...r,...t.extraRoutes??[],i]});return o.beforeEach(Qn(t.authGuard)),o.afterEach(ea(t.titleGuard)),o.replaceManifestRoutes=l=>{const s=o.getRoutes();for(const u of s)Ud(u.name)&&o.removeRoute(u.name);o.hasRoute("admin.notFound")&&o.removeRoute("admin.notFound");const d=Jn(l,t.components);for(const u of d)o.addRoute(u);o.addRoute(i)},o}const le=e.defineComponent({__name:"TextField",props:{name:{},label:{default:null},help:{default:null},required:{type:Boolean,default:!1},placeholder:{default:null},inputType:{default:"text"},disabled:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1},autocomplete:{default:null}},setup(t){const n=t,a=te.useFormState(),r=e.computed(()=>a.getField(n.name)??""),i=e.computed(()=>a.errors[n.name]?.[0]);function o(l){a.setField(n.name,l)}return(l,s)=>(e.openBlock(),e.createBlock(e.unref(c.UidInput),{"model-value":r.value,type:t.inputType,label:t.label??void 0,hint:t.help??void 0,error:i.value,placeholder:t.placeholder??void 0,required:t.required,disabled:t.disabled,readonly:t.readonly,name:t.name,autocomplete:t.autocomplete??void 0,"onUpdate:modelValue":o},null,8,["model-value","type","label","hint","error","placeholder","required","disabled","readonly","name","autocomplete"]))}}),et=e.defineComponent({__name:"TextAreaField",props:{name:{},label:{default:null},help:{default:null},required:{type:Boolean,default:!1},placeholder:{default:null},rows:{default:4},disabled:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1}},setup(t){const n=t,a=te.useFormState(),r=e.computed(()=>a.getField(n.name)??""),i=e.computed(()=>a.errors[n.name]?.[0]);function o(l){a.setField(n.name,l)}return(l,s)=>(e.openBlock(),e.createBlock(e.unref(c.UidFormField),{label:t.label??void 0,hint:t.help??void 0,error:i.value,required:t.required,disabled:t.disabled},{default:e.withCtx(()=>[e.createVNode(e.unref(c.UidTextarea),{"model-value":r.value,rows:t.rows,placeholder:t.placeholder??void 0,disabled:t.disabled,readonly:t.readonly,name:t.name,"onUpdate:modelValue":o},null,8,["model-value","rows","placeholder","disabled","readonly","name"])]),_:1},8,["label","hint","error","required","disabled"]))}}),tt=e.defineComponent({__name:"NumberField",props:{name:{},label:{default:null},help:{default:null},required:{type:Boolean,default:!1},placeholder:{default:null},min:{default:null},max:{default:null},step:{default:null},disabled:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1}},setup(t){const n=t,a=te.useFormState(),r=e.computed(()=>{const l=a.getField(n.name);return l==null||l===""?null:typeof l=="number"?l:Number(l)}),i=e.computed(()=>a.errors[n.name]?.[0]);function o(l){a.setField(n.name,l)}return(l,s)=>(e.openBlock(),e.createBlock(e.unref(c.UidFormField),{label:t.label??void 0,hint:t.help??void 0,error:i.value,required:t.required,disabled:t.disabled},{default:e.withCtx(()=>[e.createVNode(e.unref(c.UidNumberInput),{"model-value":r.value,min:t.min??void 0,max:t.max??void 0,step:t.step??void 0,placeholder:t.placeholder??void 0,disabled:t.disabled,readonly:t.readonly,name:t.name,"onUpdate:modelValue":o},null,8,["model-value","min","max","step","placeholder","disabled","readonly","name"])]),_:1},8,["label","hint","error","required","disabled"]))}}),ye=e.defineComponent({__name:"SelectField",props:{name:{},options:{},label:{default:null},help:{default:null},required:{type:Boolean,default:!1},placeholder:{default:null},disabled:{type:Boolean,default:!1},searchable:{type:Boolean,default:!1},clearable:{type:Boolean,default:!1},size:{default:"md"}},setup(t){const n=t,a=te.useFormState(),r=e.computed(()=>{const l=a.getField(n.name);return l==null||l===""?null:l}),i=e.computed(()=>a.errors[n.name]?.[0]);function o(l){a.setField(n.name,l)}return(l,s)=>(e.openBlock(),e.createBlock(e.unref(c.UidFormField),{label:t.label??void 0,hint:t.help??void 0,error:i.value,required:t.required,disabled:t.disabled},{default:e.withCtx(()=>[e.createVNode(e.unref(c.UidSelect),{"model-value":r.value,options:t.options,placeholder:t.placeholder??void 0,disabled:t.disabled,searchable:t.searchable,clearable:t.clearable,size:t.size,"onUpdate:modelValue":o},null,8,["model-value","options","placeholder","disabled","searchable","clearable","size"])]),_:1},8,["label","hint","error","required","disabled"]))}}),Ae=e.defineComponent({__name:"CheckboxField",props:{name:{},label:{default:null},help:{default:null},required:{type:Boolean,default:!1},inlineLabel:{default:null},disabled:{type:Boolean,default:!1}},setup(t){const n=t,a=te.useFormState(),r=e.computed(()=>!!a.getField(n.name)),i=e.computed(()=>a.errors[n.name]?.[0]);function o(l){a.setField(n.name,l)}return(l,s)=>(e.openBlock(),e.createBlock(e.unref(c.UidFormField),{label:t.label??void 0,hint:t.help??void 0,error:i.value,required:t.required,disabled:t.disabled},{default:e.withCtx(()=>[e.createVNode(e.unref(c.UidCheckbox),{"model-value":r.value,disabled:t.disabled,name:t.name,"onUpdate:modelValue":o},{default:e.withCtx(()=>[t.inlineLabel?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(t.inlineLabel),1)],64)):e.createCommentVNode("",!0)]),_:1},8,["model-value","disabled","name"])]),_:1},8,["label","hint","error","required","disabled"]))}}),_e=e.defineComponent({__name:"DateField",props:{name:{},label:{default:null},help:{default:null},required:{type:Boolean,default:!1},inputType:{default:"date"},min:{default:null},max:{default:null},disabled:{type:Boolean,default:!1}},setup(t){const n=t,a=te.useFormState(),r=e.computed(()=>{const l=a.getField(n.name);return l==null||l===""?null:String(l)}),i=e.computed(()=>a.errors[n.name]?.[0]);function o(l){a.setField(n.name,l)}return(l,s)=>(e.openBlock(),e.createBlock(e.unref(c.UidFormField),{label:t.label??void 0,hint:t.help??void 0,error:i.value,required:t.required,disabled:t.disabled},{default:e.withCtx(()=>[e.createVNode(e.unref(c.UidDatePicker),{"model-value":r.value,min:t.min??void 0,max:t.max??void 0,disabled:t.disabled,name:t.name,"onUpdate:modelValue":o},null,8,["model-value","min","max","disabled","name"])]),_:1},8,["label","hint","error","required","disabled"]))}}),Dd={key:0,class:"admin-field__label"},Td={key:0,class:"admin-field__required","aria-hidden":"true"},Id={class:"admin-tags__chip-text"},Ad=["onClick"],Fd=["value","placeholder","disabled"],Ld={key:0,class:"admin-tags__dropdown",role:"listbox"},zd={class:"admin-tags__group-label"},Rd=["aria-selected","onMousedown","onMouseenter"],Pd=["aria-selected","onMousedown","onMouseenter"],qd={key:1,class:"admin-field__error"},jd={key:2,class:"admin-field__help"},Od=e.defineComponent({__name:"TagsField",props:{name:{},label:{default:null},help:{default:null},required:{type:Boolean,default:!1},placeholder:{default:"Введите ключ и нажмите Enter…"},suggestions:{default:()=>[]},suggestionsByGroup:{default:()=>[]},maxItems:{default:0},separator:{default:","},disabled:{type:Boolean,default:!1}},setup(t){const n=t,a=te.useFormState(),r=e.computed(()=>{const _=a.getField(n.name);return Array.isArray(_)?_.map(b=>String(b)):typeof _=="string"&&_!==""?_.split(",").map(b=>b.trim()).filter(Boolean):[]}),i=e.computed(()=>a.errors[n.name]?.[0]),o=e.ref(""),l=e.ref(!1),s=e.ref(null),d=e.ref(null);function u(_){const b=new Set,h=[];for(const U of _){const A=U.trim();if(!(A===""||b.has(A))&&(b.add(A),h.push(A),n.maxItems>0&&h.length>=n.maxItems))break}a.setField(n.name,h)}function f(_){const b=_.trim();if(b!==""){if(r.value.includes(b)){o.value="";return}u([...r.value,b]),o.value=""}}function y(_){const b=[...r.value];b.splice(_,1),u(b)}function m(_){_.key==="Enter"?(_.preventDefault(),v.value>=0&&C.value[v.value]?f(C.value[v.value]):o.value.trim()!==""&&f(o.value)):_.key==="Backspace"&&o.value===""&&r.value.length>0?y(r.value.length-1):_.key==="ArrowDown"?(_.preventDefault(),v.value=Math.min(v.value+1,C.value.length-1)):_.key==="ArrowUp"?(_.preventDefault(),v.value=Math.max(v.value-1,-1)):_.key==="Escape"&&(l.value=!1,s.value?.blur())}function w(_){const b=_.target.value;if(n.separator&&b.includes(n.separator)){const h=b.split(n.separator);h.slice(0,-1).map(A=>A.trim()).filter(Boolean).forEach(f),o.value=h[h.length-1]??"";return}o.value=b}const v=e.ref(-1),k=e.computed(()=>Array.isArray(n.suggestionsByGroup)&&n.suggestionsByGroup.length>0),p=e.computed(()=>{const _=o.value.trim().toLowerCase(),b=new Set(r.value);return k.value?n.suggestionsByGroup.map(h=>({label:h.label,items:h.items.filter(U=>!b.has(U)&&(_===""||U.toLowerCase().includes(_)))})).filter(h=>h.items.length>0):[]}),C=e.computed(()=>{if(k.value)return p.value.flatMap(h=>h.items);const _=o.value.trim().toLowerCase(),b=new Set(r.value);return n.suggestions.filter(h=>!b.has(h)).filter(h=>_===""||h.toLowerCase().includes(_)).slice(0,200)});function B(_){return _===v.value}e.watch(o,()=>{v.value=-1});function E(){n.disabled||s.value?.focus()}function V(_){f(_),e.nextTick(()=>s.value?.focus())}function T(){window.setTimeout(()=>{l.value=!1,o.value.trim()!==""&&f(o.value)},120)}return(_,b)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["admin-field",{"admin-field--invalid":i.value!==void 0}])},[t.label?(e.openBlock(),e.createElementBlock("label",Dd,[e.createElementVNode("span",null,e.toDisplayString(t.label),1),t.required?(e.openBlock(),e.createElementBlock("span",Td,"*")):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.createElementVNode("div",{ref_key:"containerRef",ref:d,class:e.normalizeClass(["admin-field__control admin-tags",{"admin-tags--focused":l.value,"admin-tags--disabled":t.disabled}]),onClick:E},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,(h,U)=>(e.openBlock(),e.createElementBlock("span",{key:`${h}-${U}`,class:"admin-tags__chip"},[e.createElementVNode("span",Id,e.toDisplayString(h),1),t.disabled?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"admin-tags__chip-remove","aria-label":"Удалить",onClick:e.withModifiers(A=>y(U),["stop"])},[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(Ee),size:10},null,8,["icon"])],8,Ad))]))),128)),e.createElementVNode("input",{ref_key:"inputRef",ref:s,value:o.value,placeholder:r.value.length===0?t.placeholder??"":"",disabled:t.disabled,class:"admin-tags__input",type:"text",onInput:w,onKeydown:m,onFocus:b[0]||(b[0]=h=>l.value=!0),onBlur:T},null,40,Fd),l.value&&C.value.length>0?(e.openBlock(),e.createElementBlock("div",Ld,[k.value?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(p.value,(h,U)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:`g-${U}-${h.label}`},[e.createElementVNode("div",zd,e.toDisplayString(h.label),1),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(h.items,A=>(e.openBlock(),e.createElementBlock("button",{key:A,type:"button",role:"option",class:e.normalizeClass(["admin-tags__option",{"admin-tags__option--active":B(C.value.indexOf(A))}]),"aria-selected":B(C.value.indexOf(A)),onMousedown:e.withModifiers(j=>V(A),["prevent"]),onMouseenter:j=>v.value=C.value.indexOf(A)},e.toDisplayString(A),43,Rd))),128))],64))),128)):(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:1},e.renderList(C.value,(h,U)=>(e.openBlock(),e.createElementBlock("button",{key:h,type:"button",role:"option",class:e.normalizeClass(["admin-tags__option",{"admin-tags__option--active":U===v.value}]),"aria-selected":U===v.value,onMousedown:e.withModifiers(A=>V(h),["prevent"]),onMouseenter:A=>v.value=U},e.toDisplayString(h),43,Pd))),128))])):e.createCommentVNode("",!0)],2),i.value?(e.openBlock(),e.createElementBlock("p",qd,e.toDisplayString(i.value),1)):t.help?(e.openBlock(),e.createElementBlock("p",jd,e.toDisplayString(t.help),1)):e.createCommentVNode("",!0)],2))}}),Wd={key:0,class:"admin-field__label"},Hd={key:0,class:"admin-field__required","aria-hidden":"true"},Kd={class:"admin-translatable"},Gd={class:"admin-translatable__tabs",role:"tablist"},Xd=["aria-selected","onClick"],Yd={key:0,class:"admin-translatable__dot","aria-hidden":"true"},Zd={class:"admin-translatable__panel"},Jd=["value","placeholder","rows","disabled"],Qd={key:1,class:"admin-field__error"},eu={key:2,class:"admin-field__help"},en=e.defineComponent({__name:"TranslatableField",props:{name:{},label:{default:null},help:{default:null},required:{type:Boolean,default:!1},placeholder:{default:null},locales:{default:void 0},multiline:{type:Boolean,default:!1},rows:{default:3},disabled:{type:Boolean,default:!1}},setup(t){const n=t,a=te.useFormState(),r=Le(),i=e.computed(()=>n.locales??r.available??[r.current??"ru"]),o=e.ref(r.current??i.value[0]??"ru"),l=e.computed(()=>{const f=a.getField(n.name);return f&&typeof f=="object"&&!Array.isArray(f)?f:typeof f=="string"?{[o.value]:f}:{}});function s(f,y){const m={...l.value};m[f]=y,a.setField(n.name,m)}const d=e.computed(()=>{const f=a.errors[n.name];if(f?.[0])return f[0];for(const y of i.value){const m=a.errors[`${n.name}.${y}`]?.[0];if(m)return`[${y}] ${m}`}});function u(f){const y=l.value[f];return typeof y=="string"&&y.trim()!==""}return(f,y)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["admin-field",{"admin-field--invalid":d.value!==void 0}])},[t.label?(e.openBlock(),e.createElementBlock("label",Wd,[e.createElementVNode("span",null,e.toDisplayString(t.label),1),t.required?(e.openBlock(),e.createElementBlock("span",Hd,"*")):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.createElementVNode("div",Kd,[e.createElementVNode("div",Gd,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,m=>(e.openBlock(),e.createElementBlock("button",{key:m,type:"button",role:"tab",class:e.normalizeClass(["admin-translatable__tab",{"admin-translatable__tab--active":o.value===m,"admin-translatable__tab--filled":u(m)}]),"aria-selected":o.value===m,onClick:w=>o.value=m},[e.createTextVNode(e.toDisplayString(m.toUpperCase())+" ",1),u(m)?(e.openBlock(),e.createElementBlock("span",Yd)):e.createCommentVNode("",!0)],10,Xd))),128))]),e.createElementVNode("div",Zd,[t.multiline?(e.openBlock(),e.createElementBlock("textarea",{key:1,value:l.value[o.value]??"",placeholder:t.placeholder??"",rows:t.rows,disabled:t.disabled,class:"admin-translatable__textarea",onInput:y[1]||(y[1]=m=>s(o.value,m.target.value))},null,40,Jd)):(e.openBlock(),e.createBlock(e.unref(c.UidInput),{key:0,"model-value":l.value[o.value]??"",placeholder:t.placeholder??"",disabled:t.disabled,"onUpdate:modelValue":y[0]||(y[0]=m=>s(o.value,m))},null,8,["model-value","placeholder","disabled"]))])]),d.value?(e.openBlock(),e.createElementBlock("p",Qd,e.toDisplayString(d.value),1)):t.help?(e.openBlock(),e.createElementBlock("p",eu,e.toDisplayString(t.help),1)):e.createCommentVNode("",!0)],2))}}),tu={key:0,class:"admin-field__label"},nu={key:0,class:"admin-field__required","aria-hidden":"true"},au={class:"admin-field__control"},ou={key:1,class:"admin-field__error"},lu={key:2,class:"admin-field__help"},ru=e.defineComponent({__name:"WysiwygField",props:{name:{},label:{default:null},help:{default:null},required:{type:Boolean,default:!1},placeholder:{default:null},disabled:{type:Boolean,default:!1},minHeight:{default:"200px"},maxHeight:{default:void 0}},setup(t){const n=t,a=te.useFormState(),r=e.computed(()=>a.getField(n.name)??""),i=e.computed(()=>a.errors[n.name]?.[0]);function o(l){a.setField(n.name,l)}return(l,s)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["admin-field",{"admin-field--invalid":i.value!==void 0}])},[t.label?(e.openBlock(),e.createElementBlock("label",tu,[e.createElementVNode("span",null,e.toDisplayString(t.label),1),t.required?(e.openBlock(),e.createElementBlock("span",nu,"*")):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.createElementVNode("div",au,[e.createVNode(e.unref(ka.DskWysiwyg),{"model-value":r.value,placeholder:t.placeholder??void 0,readonly:t.disabled,"min-height":t.minHeight,"max-height":t.maxHeight,"onUpdate:modelValue":o},null,8,["model-value","placeholder","readonly","min-height","max-height"])]),i.value?(e.openBlock(),e.createElementBlock("p",ou,e.toDisplayString(i.value),1)):t.help?(e.openBlock(),e.createElementBlock("p",lu,e.toDisplayString(t.help),1)):e.createCommentVNode("",!0)],2))}}),kt=e.defineComponent({__name:"RowsLayout",props:{items:{},gap:{default:"var(--uid-space-md)"}},setup(t){return(n,a)=>(e.openBlock(),e.createBlock(e.unref(c.UidStack),{direction:"column",gap:t.gap,align:"stretch"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.items,(r,i)=>(e.openBlock(),e.createBlock(be,{key:i,node:r},null,8,["node"]))),128))]),_:1},8,["gap"]))}}),na=e.defineComponent({__name:"ColumnsLayout",props:{items:{},gap:{default:"var(--uid-space-md)"},cols:{default:12}},setup(t){const n=t,a=e.computed(()=>n.items.length===0?n.cols:Math.max(1,Math.floor(n.cols/n.items.length)));function r(i){const o=i.span;return typeof o=="number"&&o>0?Math.min(o,n.cols):a.value}return(i,o)=>(e.openBlock(),e.createBlock(e.unref(c.UidGrid),{cols:t.cols,gap:t.gap},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.items,(l,s)=>(e.openBlock(),e.createElementBlock("div",{key:s,class:"admin-columns__item",style:e.normalizeStyle({gridColumn:`span ${r(l)} / span ${r(l)}`})},[e.createVNode(be,{node:l},null,8,["node"])],4))),128))]),_:1},8,["cols","gap"]))}}),iu={key:0,class:"admin-section__header"},su={key:0,class:"admin-section__title"},cu={key:1,class:"admin-section__description"},du={class:"admin-section__body"},Ne=e.defineComponent({__name:"SectionLayout",props:{items:{},title:{default:null},description:{default:null}},setup(t){return(n,a)=>(e.openBlock(),e.createBlock(e.unref(c.UidCard),{padding:"md",class:"admin-section"},{default:e.withCtx(()=>[t.title||t.description?(e.openBlock(),e.createElementBlock("header",iu,[t.title?(e.openBlock(),e.createElementBlock("h3",su,e.toDisplayString(t.title),1)):e.createCommentVNode("",!0),t.description?(e.openBlock(),e.createElementBlock("p",cu,e.toDisplayString(t.description),1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.createElementVNode("div",du,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.items,(r,i)=>(e.openBlock(),e.createBlock(be,{key:i,node:r},null,8,["node"]))),128))])]),_:1}))}}),aa=e.defineComponent({__name:"TabsLayout",props:{items:{},active:{default:0}},emits:["update:active"],setup(t,{emit:n}){const a=t,r=n;function i(s,d){return s.key??d}const o=e.ref(a.active??i(a.items[0]??{},0));function l(s){o.value=s,r("update:active",s)}return(s,d)=>(e.openBlock(),e.createBlock(e.unref(c.UidTabs),{"model-value":o.value,"onUpdate:modelValue":l},{list:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.items,(u,f)=>(e.openBlock(),e.createBlock(e.unref(c.UidTab),{key:i(u,f),value:i(u,f)},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(u.label),1)]),_:2},1032,["value"]))),128))]),default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.items,(u,f)=>(e.openBlock(),e.createBlock(e.unref(c.UidTabPanel),{key:`panel-${i(u,f)}`,value:i(u,f)},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(u.items,(y,m)=>(e.openBlock(),e.createBlock(be,{key:m,node:y},null,8,["node"]))),128))]),_:2},1032,["value"]))),128))]),_:1},8,["model-value"]))}});function oa(){Tn({fields:{input:le,text:le,email:le,url:le,password:le,tel:le,search:le,slug:le,hidden:le,label:le,textarea:et,wysiwyg:ru,markdown:et,code:et,number:tt,slider:tt,rating:tt,select:ye,combobox:ye,radio:ye,tags:Od,translatable:en,"translatable-text":en,"morph-switcher":ye,relation:ye,cascader:ye,"tree-select":ye,checkbox:Ae,switch:Ae,switcher:Ae,boolean:Ae,date:_e,datetime:_e,datepicker:_e,"date-range":_e,time:_e,"time-picker":_e,"color-picker":le},layouts:{rows:kt,columns:na,section:Ne,block:Ne,tabs:aa,accordion:Ne,group:kt,step:Ne,wizard:Ne}})}const uu={key:0,class:"admin-infolist-entry"},mu={class:"admin-infolist-entry__label"},O=e.defineComponent({__name:"TextEntry",props:{name:{default:""},label:{default:""},value:{default:void 0},placeholder:{default:"—"},mono:{type:Boolean,default:!1},preset:{default:void 0},meta:{default:()=>({})}},setup(t){const n=t,a=Pe(),r=e.computed(()=>{let o=n.value;if(o===void 0&&a&&n.name&&(o=a[n.name]),o==null||o==="")return n.placeholder;const l=zn(o,n.preset,n.meta);return l===""?n.placeholder:l}),i=e.computed(()=>!!n.label);return(o,l)=>i.value?(e.openBlock(),e.createElementBlock("div",uu,[e.createElementVNode("span",mu,e.toDisplayString(t.label),1),e.createElementVNode("span",{class:e.normalizeClass(["admin-infolist-entry__value",t.mono?"admin-infolist-entry__value--mono":""])},e.toDisplayString(r.value),3)])):(e.openBlock(),e.createElementBlock("span",{key:1,class:e.normalizeClass(["admin-infolist-text",t.mono?"admin-infolist-text--mono":""])},e.toDisplayString(r.value),3))}}),fu={key:1,class:"admin-infolist-text"},la=e.defineComponent({__name:"BadgeEntry",props:{name:{default:""},label:{default:""},value:{default:void 0},map:{default:()=>({})},variant:{default:void 0}},setup(t){const n=t,a=Pe(),r=e.computed(()=>{let o=n.value;return o===void 0&&a&&n.name&&(o=a[n.name]),o==null?"":String(o)}),i=e.computed(()=>n.variant?n.variant:n.map[r.value]??"default");return(o,l)=>r.value?(e.openBlock(),e.createBlock(e.unref(c.UidBadge),{key:0,variant:i.value},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(r.value),1)]),_:1},8,["variant"])):(e.openBlock(),e.createElementBlock("span",fu,"—"))}}),pu=["data-icon"],vu={key:0},ra=e.defineComponent({__name:"IconEntry",props:{name:{default:""},label:{default:""},value:{type:[Boolean,null],default:void 0},trueIcon:{default:"check-circle-2"},falseIcon:{default:"circle"},trueLabel:{default:""},falseLabel:{default:""}},setup(t){const n=t,a=Pe(),r=e.computed(()=>{let l=n.value;return l===void 0&&a&&n.name&&(l=a[n.name]),!!l}),i=e.computed(()=>r.value?n.trueLabel:n.falseLabel),o=e.computed(()=>r.value?n.trueIcon:n.falseIcon);return(l,s)=>(e.openBlock(),e.createElementBlock("span",{class:e.normalizeClass(["admin-infolist-icon",r.value?"admin-infolist-icon--on":"admin-infolist-icon--off"])},[e.createElementVNode("span",{class:"admin-infolist-icon__glyph","data-icon":o.value},null,8,pu),i.value?(e.openBlock(),e.createElementBlock("span",vu,e.toDisplayString(i.value),1)):e.createCommentVNode("",!0)],2))}}),hu={key:1,class:"admin-infolist-text"},_t=e.defineComponent({__name:"KeyValueEntry",props:{name:{default:""},label:{default:""},value:{default:void 0}},setup(t){const n=t,a=Pe(),r=e.computed(()=>{let o=n.value;return o===void 0&&a&&n.name&&(o=a[n.name]),o==null?[]:typeof o!="object"?[]:Object.entries(o)});function i(o){return o==null?"—":typeof o=="object"?JSON.stringify(o):String(o)}return(o,l)=>r.value.length>0?(e.openBlock(),e.createBlock(e.unref(c.UidDescriptionList),{key:0,direction:"vertical",columns:1},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,([s,d])=>(e.openBlock(),e.createBlock(e.unref(c.UidDescriptionItem),{key:s,label:s},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(i(d)),1)]),_:2},1032,["label"]))),128))]),_:1})):(e.openBlock(),e.createElementBlock("span",hu,"—"))}});function ia(){Pn({text:O,badge:la,icon:ra,keyvalue:_t,"key-value":_t,input:O,email:O,url:O,password:O,tel:O,search:O,slug:O,hidden:O,label:O,textarea:O,wysiwyg:O,markdown:O,code:O,number:O,slider:O,rating:O,select:O,combobox:O,radio:O,tags:O,"morph-switcher":O,relation:O,cascader:O,"tree-select":O,checkbox:O,switch:O,switcher:O,boolean:O,date:O,datetime:O,datepicker:O,"date-range":O,time:O,"time-picker":O,"color-picker":O})}function gu(t,n={}){const a=n.pages??{},r=n.base??yu(t.baseUrl)??"/admin",i=Zn({baseURL:t.apiUrl,csrfToken:t.csrf});xt(i);const o=e.createApp(Vn),l=ae.createPinia();o.use(l),re().hydrate(t),Le().hydrate(t),lt().hydrate(t),ze().hydrate(t),Mt().hydrate(t),oa(),Xn(),ia();const s=ta({base:r,history:n.router?.history??X.createWebHistory(r),components:{login:a.login??Ln,home:a.home??Sn,forbidden:a.forbidden??Mn,notFound:a.notFound??Un,profile:a.profile??Wn,forgotPassword:a.forgotPassword??yi,resetPassword:a.resetPassword??Vi,resourceIndex:a.resourceIndex??Rn,resourceCreate:a.resourceCreate??ht,resourceEdit:a.resourceEdit??ht,resourceView:a.resourceView??On,dashboard:a.dashboard??Dt,settings:a.settings??Dn,screen:a.screen??In},extraRoutes:n.router?.extraRoutes,authGuard:n.router?.authGuard,titleGuard:n.router?.titleGuard});o.use(s);const d=St();if(s.beforeEach((u,f,y)=>{u.fullPath!==f.fullPath&&d.start(),y()}),s.afterEach(()=>{d.end()}),s.onError(()=>{d.end()}),s.beforeResolve(async(u,f,y)=>{const m=typeof u.name=="string"?u.name:null;if(m&&m.startsWith("admin.resource.")&&m.endsWith(".index")){const w=u.params.slug??u.meta.slug;if(w)try{const{useResourceIndexStore:v}=await Promise.resolve().then(()=>xi),k=v();(k.slug!==w||k.items.length===0)&&(k.setSlug(w),await k.load().catch(()=>{}))}catch{}}y()}),n.skipManifestLoad)de().bootResolved=!0;else{const u=de(),f=re(),y=$t(),m=async()=>{y.load().catch(()=>{});try{const w=await u.load();s.replaceManifestRoutes(w);const v=s.currentRoute.value;v.name==="admin.notFound"&&v.fullPath!=="/"&&await s.replace(v.fullPath).catch(()=>{})}catch(w){typeof console<"u"&&console.error("[laravel-admin] manifest load failed:",w)}finally{u.bootResolved=!0}};f.isAuthenticated?m():u.bootResolved=!0,e.watch(()=>f.user,(w,v)=>{w&&!v&&(u.bootResolved=!1,m())})}return n.onAppCreated?.(o),{app:o,router:s,client:i}}function yu(t){if(!t)return null;try{return new URL(t).pathname||"/admin"}catch{return t.startsWith("/")?t:null}}const ku={class:"admin-status-page"},_u={class:"admin-status-page__title"},bu={class:"admin-status-page__hint"},wu=e.defineComponent({__name:"UnknownScreenPage",setup(t){const n=X.useRoute(),a=e.computed(()=>String(n.params.slug??"")),r=e.computed(()=>String(n.meta?.title??a.value));return(i,o)=>(e.openBlock(),e.createElementBlock("div",ku,[e.createVNode(e.unref(c.UidCard),{padding:"lg",class:"admin-status-page__card"},{default:e.withCtx(()=>[e.createElementVNode("h1",_u,e.toDisplayString(r.value),1),e.createElementVNode("p",bu,[e.createTextVNode(" Это заглушка для screen «"+e.toDisplayString(a.value)+"». Передайте свой компонент через ",1),o[0]||(o[0]=e.createElementVNode("code",null,"createAdminApp("+e.toDisplayString("{")+" pages: "+e.toDisplayString("{")+" screen: MyScreen "+e.toDisplayString("}")+" "+e.toDisplayString("}")+")",-1)),o[1]||(o[1]=e.createTextVNode(". ",-1))])]),_:1})]))}});async function Bu(t={}){const n=sa();if(n)return n;if(t.client)try{const a=t.xhrUrl??"/system/bootstrap";return await t.client.get(a)}catch(a){if(a instanceof Re)return null;throw a}return null}function sa(){return typeof window>"u"?null:window.__ADMIN_BOOTSTRAP__??null}function Vu(){return typeof document>"u"?null:document.querySelector('meta[name="csrf-token"]')?.getAttribute("content")??null}const xu={class:"admin-notifs__hd"},Nu={class:"admin-notifs__title"},Cu={key:0,class:"admin-notifs__count"},Eu={class:"admin-notifs__list"},$u={key:0,class:"admin-notifs__empty"},Su={key:1,class:"admin-notifs__empty"},Mu=["onClick"],Uu=["data-kind"],Du={class:"admin-notifs__body"},Tu={class:"admin-notifs__row1"},Iu={key:0,class:"admin-notifs__title-strong"},Au={key:1,class:"admin-notifs__title-soft"},Fu={class:"admin-notifs__time"},Lu={key:0,class:"admin-notifs__text"},zu=["onClick"],Ru=e.defineComponent({__name:"NotificationsDrawer",props:{open:{type:Boolean}},emits:["update:open","select-item"],setup(t,{emit:n}){const a=t,r=n,i=ze();function o(k){r("update:open",k)}e.watch(()=>a.open,async k=>{k&&await i.load(i.lastFilter??"all",1).catch(()=>{})},{immediate:!0});const l=e.computed(()=>i.lastFilter??"all");async function s(k){await i.load(k,1).catch(()=>{})}async function d(){await i.markAllAsRead().catch(()=>{})}async function u(k){r("select-item",k),k.read_at||await i.markAsRead(k.id).catch(()=>{})}async function f(k,p){p.stopPropagation(),await i.destroy(k.id).catch(()=>{})}function y(k){const p=k.data.level;return p==="success"||p==="warning"||p==="danger"?p:"info"}function m(k){return k.data.title??"—"}function w(k){return k.data.body??""}function v(k){if(!k)return"";const p=new Date(k),C=Math.max(0,Date.now()-p.getTime()),B=Math.floor(C/6e4);if(B<1)return"только что";if(B<60)return`${B} мин назад`;const E=Math.floor(B/60);if(E<24)return`${E} ч назад`;const V=Math.floor(E/24);return V<7?`${V} д назад`:p.toLocaleDateString("ru-RU")}return(k,p)=>(e.openBlock(),e.createBlock(e.unref(c.UidDrawer),{"model-value":t.open,side:"right",width:"400px",title:"Уведомления","onUpdate:modelValue":o},{header:e.withCtx(()=>[e.createElementVNode("div",xu,[e.createElementVNode("h2",Nu,[p[0]||(p[0]=e.createTextVNode(" Уведомления ",-1)),e.unref(i).unreadCount>0?(e.openBlock(),e.createElementBlock("span",Cu," ("+e.toDisplayString(e.unref(i).unreadCount)+") ",1)):e.createCommentVNode("",!0)]),e.unref(i).unreadCount>0?(e.openBlock(),e.createBlock(e.unref(c.UidButton),{key:0,variant:"ghost",size:"sm",onClick:d},{default:e.withCtx(()=>[...p[1]||(p[1]=[e.createTextVNode(" Прочитать все ",-1)])]),_:1})):e.createCommentVNode("",!0)])]),default:e.withCtx(()=>[e.createVNode(e.unref(c.UidTabs),{"model-value":l.value,"onUpdate:modelValue":s},{list:e.withCtx(()=>[e.createVNode(e.unref(c.UidTab),{value:"all"},{default:e.withCtx(()=>[...p[2]||(p[2]=[e.createTextVNode("Все",-1)])]),_:1}),e.createVNode(e.unref(c.UidTab),{value:"unread"},{default:e.withCtx(()=>[p[3]||(p[3]=e.createTextVNode(" Непрочитанные",-1)),e.unref(i).unreadCount>0?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(" ("+e.toDisplayString(e.unref(i).unreadCount)+") ",1)],64)):e.createCommentVNode("",!0)]),_:1}),e.createVNode(e.unref(c.UidTab),{value:"read"},{default:e.withCtx(()=>[...p[4]||(p[4]=[e.createTextVNode("Прочитанные",-1)])]),_:1})]),default:e.withCtx(()=>[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(["all","unread","read"],C=>e.createVNode(e.unref(c.UidTabPanel),{key:C,value:C},{default:e.withCtx(()=>[e.createElementVNode("ul",Eu,[e.unref(i).loading?(e.openBlock(),e.createElementBlock("li",$u," Загрузка… ")):e.unref(i).items.length===0?(e.openBlock(),e.createElementBlock("li",Su," Нет уведомлений ")):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(i).items,B=>(e.openBlock(),e.createElementBlock("li",{key:B.id,class:e.normalizeClass(["admin-notifs__item",`admin-notifs__item--${y(B)}`,{"admin-notifs__item--unread":!B.read_at}]),onClick:E=>u(B)},[e.createElementVNode("span",{class:"admin-notifs__icon","data-kind":y(B)},null,8,Uu),e.createElementVNode("div",Du,[e.createElementVNode("div",Tu,[B.read_at?(e.openBlock(),e.createElementBlock("span",Au,e.toDisplayString(m(B)),1)):(e.openBlock(),e.createElementBlock("strong",Iu,e.toDisplayString(m(B)),1)),e.createElementVNode("span",Fu,e.toDisplayString(v(B.created_at)),1)]),w(B)?(e.openBlock(),e.createElementBlock("p",Lu,e.toDisplayString(w(B)),1)):e.createCommentVNode("",!0)]),e.createElementVNode("button",{type:"button",class:"admin-notifs__close","aria-label":"Удалить",onClick:E=>f(B,E)}," × ",8,zu)],10,Mu))),128))])]),_:1},8,["value"])),64))]),_:1},8,["model-value"])]),_:1},8,["model-value"]))}}),Pu={class:"admin-page admin-import-wizard"},qu={class:"admin-page__hd"},ju={class:"admin-page__title-wrap"},Ou={class:"admin-page__title"},Wu={class:"admin-page__actions"},Hu={key:0,class:"admin-import-wizard__empty"},Ku={key:1,class:"admin-import-wizard__mapping"},Gu={class:"admin-import-wizard__map-source"},Xu={key:0,class:"admin-import-wizard__map-sample"},Yu={class:"admin-import-wizard__card-hd"},Zu={key:2,class:"admin-import-wizard__empty"},Ju={key:0,class:"admin-import-wizard__empty"},Qu={class:"admin-import-wizard__kpi"},em={class:"admin-import-wizard__nav"},tm=e.defineComponent({__name:"ImportWizardPage",props:{title:{default:"Импорт"},fieldOptions:{},headers:{default:()=>[]},preview:{default:()=>[]},previewColumns:{default:()=>[]},progress:{default:null},step:{default:void 0}},emits:["file-uploaded","mapping-submit","run-import","cancel"],setup(t,{emit:n}){const a=t,r=n,i=[{label:"Загрузка",description:"CSV / TSV / XLSX"},{label:"Сопоставление",description:"Колонки файла → поля"},{label:"Предпросмотр",description:"Проверка первых строк"},{label:"Импорт",description:"Запуск + сводка"}],o=e.ref(0),l=e.computed(()=>a.step??o.value);function s(E){a.step===void 0&&(E<0||E>=i.length||(o.value=E))}const d=e.ref([]);function u(E){d.value=E,E.length>0&&r("file-uploaded",E[0].file)}const f=e.ref({});function y(E,V){f.value[E]=V===null||V===""?null:String(V)}function m(){return a.headers.map(E=>({source:E.key,target:f.value[E.key]??null}))}function w(){r("mapping-submit",m()),s(2)}function v(){r("run-import"),s(3)}const k=e.computed(()=>l.value>0),p=e.computed(()=>{switch(l.value){case 0:return d.value.length>0;case 1:return Object.values(f.value).some(E=>E!==null);case 2:return!0;default:return!1}}),C=e.computed(()=>[{value:"",label:"Не импортировать"},...a.fieldOptions]);function B(){r("cancel")}return(E,V)=>(e.openBlock(),e.createElementBlock("section",Pu,[e.createElementVNode("header",qu,[e.createElementVNode("div",ju,[e.createElementVNode("h1",Ou,e.toDisplayString(t.title),1)]),e.createElementVNode("div",Wu,[e.createVNode(e.unref(c.UidButton),{variant:"ghost",onClick:B},{default:e.withCtx(()=>[...V[2]||(V[2]=[e.createTextVNode("Отмена",-1)])]),_:1})])]),e.createVNode(e.unref(c.UidStepper),{steps:i,current:l.value},null,8,["current"]),l.value===0?(e.openBlock(),e.createBlock(e.unref(c.UidCard),{key:0,padding:"md",class:"admin-import-wizard__card"},{default:e.withCtx(()=>[V[3]||(V[3]=e.createElementVNode("header",{class:"admin-import-wizard__card-hd"},[e.createElementVNode("h3",null,"1. Загрузите файл"),e.createElementVNode("p",null,"CSV / TSV / XLSX, до 50 MB")],-1)),e.createVNode(e.unref(c.UidFileUpload),{"model-value":d.value,accept:".csv,.tsv,.xlsx","max-size":50*1024*1024,"max-files":1,"primary-text":"Перетащите файл сюда или","secondary-text":"нажмите чтобы выбрать","onUpdate:modelValue":u},null,8,["model-value"])]),_:1})):l.value===1?(e.openBlock(),e.createBlock(e.unref(c.UidCard),{key:1,padding:"md",class:"admin-import-wizard__card"},{default:e.withCtx(()=>[V[5]||(V[5]=e.createElementVNode("header",{class:"admin-import-wizard__card-hd"},[e.createElementVNode("h3",null,"2. Сопоставьте колонки"),e.createElementVNode("p",null,"Выберите поле ресурса для каждой колонки файла")],-1)),t.headers.length===0?(e.openBlock(),e.createElementBlock("div",Hu," Нет данных — host ещё не отдал headers. Загрузите файл сначала. ")):(e.openBlock(),e.createElementBlock("div",Ku,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.headers,T=>(e.openBlock(),e.createElementBlock("div",{key:T.key,class:"admin-import-wizard__map-row"},[e.createElementVNode("div",Gu,[e.createElementVNode("strong",null,e.toDisplayString(T.label),1),T.sample?(e.openBlock(),e.createElementBlock("span",Xu," «"+e.toDisplayString(T.sample)+"» ",1)):e.createCommentVNode("",!0)]),V[4]||(V[4]=e.createElementVNode("span",{class:"admin-import-wizard__map-arrow"},"→",-1)),e.createVNode(e.unref(c.UidSelect),{"model-value":f.value[T.key]??"",options:C.value,placeholder:"Не импортировать","onUpdate:modelValue":_=>y(T.key,_)},null,8,["model-value","options","onUpdate:modelValue"])]))),128))]))]),_:1})):l.value===2?(e.openBlock(),e.createBlock(e.unref(c.UidCard),{key:2,padding:"md",class:"admin-import-wizard__card"},{default:e.withCtx(()=>[e.createElementVNode("header",Yu,[V[6]||(V[6]=e.createElementVNode("h3",null,"3. Предпросмотр",-1)),e.createElementVNode("p",null,"Первые "+e.toDisplayString(t.preview.length)+" строк перед импортом",1)]),t.preview.some(T=>T.__warning)?(e.openBlock(),e.createBlock(e.unref(c.UidAlert),{key:0,variant:"warning",style:{"margin-bottom":"var(--uid-space-md)"}},{default:e.withCtx(()=>[...V[7]||(V[7]=[e.createTextVNode(" Часть строк имеет предупреждения — проверьте перед импортом. ",-1)])]),_:1})):e.createCommentVNode("",!0),t.previewColumns.length>0?(e.openBlock(),e.createBlock(e.unref(c.UidTable),{key:1,columns:t.previewColumns,data:t.preview},null,8,["columns","data"])):(e.openBlock(),e.createElementBlock("div",Zu," Host не передал previewColumns/preview. "))]),_:1})):(e.openBlock(),e.createBlock(e.unref(c.UidCard),{key:3,padding:"md",class:"admin-import-wizard__card"},{default:e.withCtx(()=>[V[8]||(V[8]=e.createElementVNode("header",{class:"admin-import-wizard__card-hd"},[e.createElementVNode("h3",null,"4. Импорт")],-1)),t.progress?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[t.progress.total>0?(e.openBlock(),e.createBlock(e.unref(c.UidProgress),{key:0,"model-value":t.progress.created+t.progress.updated+t.progress.errors,max:t.progress.total},null,8,["model-value","max"])):e.createCommentVNode("",!0),e.createElementVNode("div",Qu,[e.createVNode(e.unref(c.UidStat),{title:"Создано",value:t.progress.created,tone:"success"},null,8,["value"]),e.createVNode(e.unref(c.UidStat),{title:"Обновлено",value:t.progress.updated,tone:"info"},null,8,["value"]),e.createVNode(e.unref(c.UidStat),{title:"Ошибки",value:t.progress.errors,tone:"danger"},null,8,["value"])])],64)):(e.openBlock(),e.createElementBlock("div",Ju," Запускается импорт… "))]),_:1})),e.createElementVNode("footer",em,[k.value?(e.openBlock(),e.createBlock(e.unref(c.UidButton),{key:0,variant:"ghost",onClick:V[0]||(V[0]=T=>s(l.value-1))},{default:e.withCtx(()=>[...V[9]||(V[9]=[e.createTextVNode(" Назад ",-1)])]),_:1})):e.createCommentVNode("",!0),V[13]||(V[13]=e.createElementVNode("span",{style:{flex:"1"}},null,-1)),l.value===0?(e.openBlock(),e.createBlock(e.unref(c.UidButton),{key:1,variant:"primary",disabled:!p.value,onClick:V[1]||(V[1]=T=>s(1))},{default:e.withCtx(()=>[...V[10]||(V[10]=[e.createTextVNode(" Далее ",-1)])]),_:1},8,["disabled"])):l.value===1?(e.openBlock(),e.createBlock(e.unref(c.UidButton),{key:2,variant:"primary",disabled:!p.value,onClick:w},{default:e.withCtx(()=>[...V[11]||(V[11]=[e.createTextVNode(" Подтвердить mapping ",-1)])]),_:1},8,["disabled"])):l.value===2?(e.openBlock(),e.createBlock(e.unref(c.UidButton),{key:3,variant:"primary",onClick:v},{default:e.withCtx(()=>[...V[12]||(V[12]=[e.createTextVNode(" Запустить импорт ",-1)])]),_:1})):e.createCommentVNode("",!0)])]))}}),nm={class:"admin-page admin-field-gallery"},am={class:"admin-gallery__group-title"},om={class:"admin-gallery__grid"},lm={class:"admin-gallery__card-hd"},rm={class:"admin-gallery__card-title"},im={class:"admin-gallery__card-type"},sm={class:"admin-gallery__card-desc"},cm={class:"admin-gallery__card-demo"},dm=e.defineComponent({__name:"FieldGalleryPage",setup(t){const n=[{type:"text",group:"Текстовые",title:"Input",description:"Простой текстовый input. type=email/url/password/tel доступны через inputType.",node:{type:"text",name:"demo_text",label:"Заголовок статьи",placeholder:"Например: Введение в Laravel"},initial:{demo_text:"Hello World"}},{type:"textarea",group:"Текстовые",title:"Textarea",description:"Многострочный input с настраиваемым числом rows.",node:{type:"textarea",name:"demo_textarea",label:"Описание",rows:4},initial:{demo_textarea:"Multi-line text..."}},{type:"number",group:"Текстовые",title:"NumberInput",description:"Числовой input. Empty/NaN автоматически конвертируются в null.",node:{type:"number",name:"demo_number",label:"Цена",min:0,max:1e3},initial:{demo_number:42}},{type:"select",group:"Выбор",title:"Select",description:"Single-select с options. Поддерживает searchable + clearable.",node:{type:"select",name:"demo_select",label:"Категория",options:[{value:"frontend",label:"Frontend"},{value:"backend",label:"Backend"},{value:"devops",label:"DevOps"}]},initial:{demo_select:"backend"}},{type:"checkbox",group:"Выбор",title:"Checkbox",description:"Boolean toggle. inlineLabel рядом с боксом.",node:{type:"checkbox",name:"demo_checkbox",label:"Опубликовать",inlineLabel:"Сделать доступным всем"},initial:{demo_checkbox:!0}},{type:"date",group:"Дата/время",title:"DatePicker",description:"date / datetime-local / time через inputType.",node:{type:"date",name:"demo_date",label:"Дата публикации",inputType:"date"},initial:{demo_date:"2026-05-01"}}],a=n.reduce((i,o)=>(i[o.group]||(i[o.group]=[]),i[o.group].push(o),i),{}),r=e.reactive(n.reduce((i,o)=>Object.assign(i,o.initial),{}));return te.provideFormState(r),(i,o)=>(e.openBlock(),e.createElementBlock("section",nm,[o[0]||(o[0]=e.createElementVNode("header",{class:"admin-page__hd"},[e.createElementVNode("div",{class:"admin-page__title-wrap"},[e.createElementVNode("h1",{class:"admin-page__title"},"Field Gallery"),e.createElementVNode("div",{class:"admin-page__count"}," Каталог встроенных field-компонентов library + примеры использования ")])],-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(a),(l,s)=>(e.openBlock(),e.createElementBlock("section",{key:s,class:"admin-gallery__group"},[e.createElementVNode("h2",am,e.toDisplayString(s),1),e.createElementVNode("div",om,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l,d=>(e.openBlock(),e.createBlock(e.unref(c.UidCard),{key:d.type+d.title,padding:"md",class:"admin-gallery__card"},{default:e.withCtx(()=>[e.createElementVNode("header",lm,[e.createElementVNode("h3",rm,e.toDisplayString(d.title),1),e.createElementVNode("code",im,"type: "+e.toDisplayString(d.type),1)]),e.createElementVNode("p",sm,e.toDisplayString(d.description),1),e.createElementVNode("div",cm,[e.createVNode(Lt,{node:d.node},null,8,["node"])])]),_:2},1024))),128))])]))),128))]))}});exports.provideFormState=te.provideFormState;exports.tryUseFormState=te.tryUseFormState;exports.useFormState=te.useFormState;exports.AdminApp=Vn;exports.AdminShell=Bn;exports.AdminSidebar=wn;exports.AdminTopBar=_n;exports.ApiError=se;exports.BadgeEntry=la;exports.BarChartWidget=Pt;exports.CheckboxField=Ae;exports.ColumnsLayout=na;exports.DashboardPage=Dt;exports.DateField=_e;exports.DonutChartWidget=qt;exports.FieldGalleryPage=dm;exports.FieldRenderer=Lt;exports.ForbiddenError=gn;exports.ForbiddenPage=Mn;exports.GaugeWidget=Kn;exports.HeatmapWidget=Hn;exports.HomePage=Sn;exports.IconEntry=ra;exports.ImportWizardPage=tm;exports.InfolistRenderer=jn;exports.KeyValueEntry=_t;exports.LayoutRenderer=be;exports.LocaleSwitcher=Ct;exports.LoginForm=An;exports.LoginPage=Ln;exports.MarkdownWidget=Gn;exports.NetworkError=Re;exports.NotFoundError=yn;exports.NotFoundPage=Un;exports.NotificationBell=hn;exports.NotificationsDrawer=Ru;exports.NumberField=tt;exports.ProfilePage=Wn;exports.RecentTableWidget=Qe;exports.ResourceFormPage=ht;exports.ResourceIndexPage=Rn;exports.ResourceViewPage=On;exports.RowsLayout=kt;exports.ScreenPage=In;exports.SectionLayout=Ne;exports.SelectField=ye;exports.SettingsPage=Dn;exports.StatWidget=yt;exports.TabsLayout=aa;exports.TextAreaField=et;exports.TextEntry=O;exports.TextField=le;exports.ThemeToggle=Nt;exports.TwoFactorForm=Fn;exports.UnauthenticatedError=Et;exports.UnknownEntry=qn;exports.UnknownField=Ft;exports.UnknownScreenPage=wu;exports.UnknownWidget=Ut;exports.UserMenu=kn;exports.ValidationError=$e;exports.WidgetRenderer=$n;exports.buildRoutesFromManifest=Jn;exports.clearAdminClient=pn;exports.clearInfolistRegistry=zs;exports.clearRegistry=Wr;exports.clearWidgetRegistry=Rl;exports.createAdminApp=gu;exports.createAdminClient=Zn;exports.createAdminRouter=ta;exports.createAuthGuard=Qn;exports.createTitleGuard=ea;exports.getAdminClient=K;exports.getField=At;exports.getInfolistEntry=gt;exports.getLayout=vt;exports.getWidget=Nn;exports.hasAdminClient=vn;exports.hasField=Rr;exports.hasInfolistEntry=Fs;exports.hasLayout=jr;exports.hasWidget=zl;exports.isError=wd;exports.isSuccess=Yn;exports.listFields=Pr;exports.listInfolistEntries=Ls;exports.listLayouts=Or;exports.listWidgets=Cn;exports.loadBootstrap=Bu;exports.provideRecord=It;exports.readCsrfFromMeta=Vu;exports.readInlineBootstrap=sa;exports.registerBuiltinComponents=oa;exports.registerBuiltinInfolistEntries=ia;exports.registerBuiltinWidgets=Xn;exports.registerComponents=Tn;exports.registerField=zr;exports.registerInfolistEntries=Pn;exports.registerInfolistEntry=As;exports.registerLayout=qr;exports.registerWidget=Ll;exports.registerWidgets=En;exports.setAdminClient=xt;exports.toApiError=pt;exports.tryUseRecord=Pe;exports.useAuthStore=re;exports.useLocaleStore=Le;exports.useManifestStore=de;exports.useMenuStore=$t;exports.useNotificationsStore=ze;exports.useRecord=Lr;exports.useResourceFormStore=Rt;exports.useResourceIndexStore=zt;exports.useThemeStore=lt;
|
|
4
4
|
//# sourceMappingURL=index.cjs.map
|