@dskripchenko/laravel-admin 1.3.0 → 1.4.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/index.cjs CHANGED
@@ -1,4 +1,4 @@
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(`# Новая заметка
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),oe=require("pinia"),Y=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 Xe={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",{...Xe,width:t||Xe.width,height:t||Xe.height,stroke:r||Xe.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 gt=$("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 xt=$("BookmarkIcon",[["path",{d:"m19 21-7-4-7 4V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v16z",key:"1fy3hk"}]]);const ln=$("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 rn=$("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 pt=$("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 tt=$("CheckIcon",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);const sn=$("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 nt=$("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 Ua=$("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 Ma=$("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 cn=$("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 dn=$("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 Xt=$("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 un=$("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 mn=$("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 Yt=$("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 fn=$("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 pn=$("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 Nt=$("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 at=$("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 Ct=$("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 Et=$("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 vn=$("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=$("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 hn=$("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 Uo=$("TerminalIcon",[["polyline",{points:"4 17 10 11 4 5",key:"akl6gq"}],["line",{x1:"12",x2:"20",y1:"19",y2:"19",key:"q2wloq"}]]);const Ee=$("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 Mo=$("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 gn=$("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 $e=$("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 $t(t){Fe=t}function K(){if(Fe===null)throw new Error("[admin] AdminClient is not registered. Call setAdminClient(...) before using stores.");return Fe}function yn(){Fe=null}function kn(){return Fe!==null}const Q=Object.freeze(Object.defineProperty({__proto__:null,clearAdminClient:yn,getAdminClient:K,hasAdminClient:kn,setAdminClient:$t},Symbol.toStringTag,{value:"Module"})),ot=oe.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"],St=e.defineComponent({__name:"ThemeToggle",setup(t){const n=ot(),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=oe.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":"Сменить локаль"},Ut=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(un),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=oe.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 _(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:_,openDrawer:s,closeDrawer:d,toggleDrawer:u}}),Ro=["aria-expanded"],Po=["title"],_n=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(gt),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 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 Mt extends de{constructor(n){super(401,n),this.name="UnauthenticatedError"}}class bn extends de{constructor(n){super(403,n),this.name="ForbiddenError"}}class wn extends de{constructor(n){super(404,n),this.name="NotFoundError"}}class Se 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 Re extends Error{constructor(n="Network error"){super(n),this.name="NetworkError"}}function yt(t,n){switch(t){case 401:return new Mt(n);case 403:return new bn(n);case 404:return new wn(n);case 422:return new Se(n);default:return new de(t,n)}}const ce=oe.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(_=>{if(!_.endsWith(".*"))return!1;const p=_.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();try{const p=await _.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 de&&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"}},Bn=e.defineComponent({__name:"UserMenu",setup(t){const n=ce(),a=Y.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"},Vn=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(Et),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(_n),e.createVNode(St),e.createVNode(Ut),e.createVNode(Bn)]))}}),Dt=oe.defineStore("admin-menu",()=>{const t=e.ref([]),n=e.ref(!1),a=e.ref(null),r=e.ref(!1),i=e.computed(()=>{const u=ce(),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 _=(w.order??0)-(v.order??0);return _!==0?_: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":pt,"bar-chart-3":pt,bell:gt,bookmark:xt,box:ln,briefcase:xa,calendar:rn,"check-circle":nt,clock:Da,code:Ta,cog:Ia,command:Fa,database:La,download:cn,file:Xt,"file-text":Xt,"file-clock":Ra,files:Pa,flag:qa,folder:Oa,"folder-open":ja,gauge:Wa,globe:un,grid:Ha,"hard-drive":Ka,hash:Ga,"health-check":nt,heart:Xa,"help-circle":Sa,history:Ya,home:Za,image:Yt,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:fn,map:fo,"map-pin":mo,media:Yt,"message-square":pn,monitor:po,notifications:gt,package:ho,paperclip:ko,"pie-chart":Ca,"refresh-cw":_o,reports:pt,roles:Zt,search:Et,send:bo,server:wo,settings:vn,shield:Zt,"shopping-bag":Bo,"shopping-cart":Vo,sliders:xo,star:Co,store:Eo,tag:hn,tags:So,terminal:Uo,"trending-up":Mo,upload:gn,user:Io,"user-circle":Ua,users:Ao,"x-circle":Ma,zap:Fo};function xn(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=Y.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 _=xn(v)??ln;return()=>e.h(c.UidIcon,{icon:_,size:16})}function w(){i.value=!i.value}return(v,_)=>{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",lt=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"],Nn=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=Dt(),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(lt,{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"},vt="data-admin-impersonating",Cn=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(vt,"true"):document.documentElement.removeAttribute(vt))},{immediate:!0}),e.onBeforeUnmount(()=>{typeof document<"u"&&document.documentElement.removeAttribute(vt)}),(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(Nn,{collapsed:l.value},null,8,["collapsed"])])]),header:e.withCtx(()=>[e.renderSlot(u.$slots,"topbar",{},()=>[e.createVNode(Vn,{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"])]))}}),Tt=oe.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=Tt(),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"},Ul={key:0,class:"admin-notif-drawer__item-description"},Ml={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(_){n.lastFilter!==_&&await n.load(_,1).catch(()=>{})}async function o(){await n.markAllAsRead().catch(()=>{})}async function l(_){_.read_at===null&&await n.markAsRead(_.id).catch(()=>{});const p=_.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(_,p){p.stopPropagation(),await n.destroy(_.id).catch(()=>{})}function d(){n.closeDrawer()}function u(_){const p=_.type.toLowerCase();return p.includes("import")||p.includes("finished")||p.includes("success")?nt:p.includes("comment")||p.includes("message")||p.includes("mention")?pn: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")?Ee:nt}function f(_){const p=_.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(_){if(!_)return"";const p=new Date(_).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(_).toLocaleDateString("ru-RU")}function m(_){const p=_.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 _=>{_?(await n.load(n.lastFilter,1).catch(()=>{}),document.addEventListener("keydown",v)):document.removeEventListener("keydown",v)});function v(_){_.key==="Escape"&&d()}return e.onUnmounted(()=>{document.removeEventListener("keydown",v)}),(_,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(tt),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($e),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",Ul,e.toDisplayString(m(C).description),1)):e.createCommentVNode("",!0)]),C.read_at===null?(e.openBlock(),e.createElementBlock("span",Ml)):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($e),size:12},null,8,["icon"])],8,Dl)],10,xl))),128))]))])])])):e.createCommentVNode("",!0)]),_:1})]))}}),fe=oe.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(_){return l.value.find(p=>p.slug===_)??null}function y(_){return s.value.find(p=>p.slug===_)??null}function m(_){return d.value.find(p=>p.slug===_)??null}async function w(_=!1){if(t.value!==null&&!_)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 Ye(t,n){return{message:t,...n??{}}}const Z={success(t,n){c.useToast().success(Ye(t,n))},error(t,n){c.useToast().error(Ye(t,{duration:6e3,...n??{}}))},warning(t,n){c.useToast().warning(Ye(t,n))},info(t,n){c.useToast().info(Ye(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"},En=e.defineComponent({__name:"AdminApp",setup(t){const n=Y.useRoute(),a=fe(),r=ce(),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(()=>Q);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(Cn,{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)}}}),$n=oe.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((k,b)=>({...k,position:k.position??b}));r.value=T,a.value=T.map(k=>({...k}))}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 _(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:_,setDraft:p,reset:C}}),It=oe.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 rt(){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 Ue=rt(),Ll=Ue.register,Sn=Ue.get,zl=Ue.has,Un=Ue.list,Rl=Ue.clear,Mn=Ue.registerBundle,At=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}))}}),Dn=e.defineComponent({__name:"WidgetRenderer",props:{node:{}},setup(t){const n=t,a=e.computed(()=>Sn(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(At,{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(mn),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(vn),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($e),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={key:0,class:"admin-dialog__hint"},pr=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(()=>Un()),o=e.ref(""),l=e.ref(""),s=e.ref("6"),d=e.ref(`# Новая заметка
2
2
 
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;
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(""),_=e.ref("5");e.watch(()=>a.open,k=>{if(k)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 M=b.labels,F=b.datasets;M&&M.length>0&&(m.value=M.join(", ")),F&&F[0]?.data&&(w.value=F[0].data.join(", ")),v.value=b.resource??"",_.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(k){return k==="markdown"?"markdown":k==="stat"||k==="stats"?"stat":k==="gauge"?"gauge":k==="chart"||k==="bar-chart"||k==="donut-chart"?"chart":k==="recent-table"||k==="recent_list"||k==="recent-list"?"recent":null}function E(){const k={title:l.value};switch(B(o.value)){case"markdown":k.content=d.value;break;case"stat":k.stats=[{label:u.value,value:f.value}];break;case"gauge":k.value=Number(y.value)||0,k.min=0,k.max=100;break;case"chart":{const b=m.value.split(",").map(M=>M.trim()).filter(Boolean),h=w.value.split(",").map(M=>Number(M.trim())).filter(M=>!Number.isNaN(M));k.labels=b,k.datasets=[{label:l.value,data:h}],k.type=o.value==="donut-chart"?"doughnut":"bar";break}case"recent":k.resource=v.value,k.limit=Number(_.value)||5;break}return k}function V(){if(!p.value)return;const k=Math.max(1,Math.min(12,Number(s.value)||6)),b=E();if(a.mode==="configure"&&a.item)r("save",{size:k,type:o.value,config:b});else{const h=`custom.${o.value}.${Date.now()}`;r("add",{slug:h,type:o.value,size:k,config:b})}r("close")}function T(){r("close")}return(k,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($e),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"},[e.createTextVNode(" Тип виджета "),e.createElementVNode("span",{class:"admin-dialog__required"},"*")],-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:M=>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"},[e.createTextVNode(" Заголовок "),e.createElementVNode("span",{class:"admin-dialog__required"},"*")],-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:_.value,"onUpdate:modelValue":b[9]||(b[9]=h=>_.value=h),type:"number"},null,8,["modelValue"])])],64)):e.createCommentVNode("",!0)]),e.createElementVNode("footer",mr,[p.value?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("span",fr,[...b[22]||(b[22]=[e.createTextVNode(" Заполните ",-1),e.createElementVNode("span",{class:"admin-dialog__required"},"*",-1),e.createTextVNode("-поля ",-1)])])),e.createVNode(e.unref(c.UidButton),{variant:"ghost",onClick:T},{default:e.withCtx(()=>[...b[23]||(b[23]=[e.createTextVNode("Отмена",-1)])]),_:1}),e.createVNode(e.unref(c.UidButton),{variant:"primary",disabled:!p.value,title:p.value?void 0:"Заполните обязательные поля",onClick:V},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(t.mode==="add"?"Добавить":"Сохранить"),1)]),_:1},8,["disabled","title"])])])])):e.createCommentVNode("",!0)]),_:1})]))}}),vr={class:"admin-page admin-dashboard"},hr={class:"admin-page__hd"},gr={class:"admin-page__title-wrap"},yr={class:"admin-page__title"},kr={key:0,class:"admin-page__count"},_r={class:"admin-page__actions"},br=["draggable","onDragstart","onDragover","onDrop"],wr=["onMousedown"],Br=140,Vr=16,Ft=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=fe(),o=$n(),l=It(),s=Y.useRoute(),d=e.computed(()=>{if(a.slug)return a.slug;const I=s?.meta?.slug;if(typeof I=="string"&&I.length>0)return I;const L=s?.params?.slug;if(typeof L=="string"&&L.length>0)return L}),u=(I,L)=>l.has(I)?l.t(I):L,f=e.computed(()=>{const I=d.value;return!I||!i.manifest?null:i.manifest.dashboards?.find(q=>q.slug===I)??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 I=new Map;for(const R of y.value){const H=String(R.slug??"");H&&I.set(H,R)}const L=o.draft,q=[];if(L.length>0){for(const R of L){const H=I.get(R.slug)??null;if(I.delete(R.slug),R.hidden)continue;let G=null;if(H!==null)G={...H,size:R.size??H.size??12};else if(R.type){const pe=R.config??{};G={slug:R.slug,type:R.type,title:pe.title??"",size:R.size??6,data:pe}}G&&q.push({node:G,layoutSlug:R.slug})}for(const[R,H]of I.entries())q.push({node:H,layoutSlug:R})}else for(const R of y.value)q.push({node:R,layoutSlug:String(R.slug??"")});return q});function _(I){const L=I.size??I.span;return Math.max(1,Math.min(12,typeof L=="number"?L:12))}function p(I,L){const R=o.draft.find(pe=>pe.slug===I)?.config?.rowSpan;if(typeof R=="number")return Math.max(1,Math.min(6,R));const H=L.rowSpan??L.row_span;if(typeof H=="number")return Math.max(1,Math.min(6,H));const G=String(L.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(I,L){B.value=I,r("change-period",I),await T()}async function T(){const I=d.value;if(I)try{const{getAdminClient:L}=await Promise.resolve().then(()=>Q),R=await L().get(`/dashboard/widgets?key=${encodeURIComponent(I)}&period=${encodeURIComponent(B.value)}`);E.value=R.widgets}catch{}}let k=null;const b=e.computed(()=>{let I=0;for(const L of y.value){const q=L.refresh;typeof q=="number"&&q>0&&(I===0||q<I)&&(I=q)}return I});function h(){M();const I=b.value;I<=0||(k=setInterval(()=>{T()},I*1e3))}function M(){k!==null&&(clearInterval(k),k=null)}e.watch(()=>b.value,()=>h()),e.onMounted(async()=>{i.manifest===null&&await i.load().catch(()=>{});const I=d.value;I&&await o.openDashboard(I).catch(()=>{}),h()}),e.onUnmounted(()=>{M()}),e.watch(()=>d.value,async(I,L)=>{I!==L&&(I?await o.openDashboard(I).catch(()=>{}):o.reset())});const F=e.computed(()=>C.value.find(I=>I.key===B.value)?.label??u("admin.dashboard.period.label","Период")),j=e.ref(null),W=e.ref(null),ue=e.ref("");function le(){j.value="add",W.value=null,ue.value=""}function D(){j.value=null}function S(){o.enterEditMode()}function N(){o.cancelEdit()}async function z(){await o.saveLayout().catch(()=>{})}function ee(I){o.draft.some(q=>q.slug===I)?o.removeWidget(I):o.addWidget({slug:I,hidden:!0})}function ne(I){ye();const L=o.draft.find(H=>H.slug===I)??null,R=v.value.find(H=>H.layoutSlug===I)?.node;W.value=L??{slug:I,type:R?.type??"",size:R?.size??6,config:{}},ue.value=R?.title??"",j.value="configure"}function ve(I){o.addWidget(I)}function he(I){if(!W.value)return;const L=W.value.slug;if(o.draft.some(R=>R.slug===L)){const R=o.draft.find(H=>H.slug===L);o.updateWidget(L,{...I,config:{...R?.config??{},...I.config??{}}})}else o.addWidget({slug:L,type:W.value.type,...I})}const X=e.ref(null),re=e.ref(null),ae=e.ref(!1);function it(I){if(!o.editMode){ae.value=!1;return}const L=I.target;ae.value=!!L?.closest('[data-drag-handle="true"]')}function st(I,L){if(o.editMode&&L.dataTransfer!==null){if(!ae.value){L.preventDefault();return}X.value=I,L.dataTransfer.effectAllowed="move",L.dataTransfer.setData("text/plain",String(I))}}function ct(){ae.value=!1,X.value=null,re.value=null}function Be(I,L){o.editMode&&X.value!==null&&(L.preventDefault(),re.value!==I&&(re.value=I))}function dt(I,L){if(L.preventDefault(),!o.editMode||X.value===null)return;const q=X.value;ye(),o.moveWidget(q,I),X.value=null,re.value=null}function ye(){if(o.draft.length===v.value.length)return;const I=v.value.map(({node:L,layoutSlug:q},R)=>{const H=o.draft.find(G=>G.slug===q);return{slug:q,size:_(L),position:R,hidden:H?.hidden??!1,type:H?.type??L.type,config:H?.config}});o.setDraft(I)}const ie=e.ref(null);let Ve=0;function qe(I,L,q,R){if(!o.editMode)return;I.preventDefault(),I.stopPropagation(),ye(),ie.value={slug:L,startX:I.clientX,startY:I.clientY,startSpan:q,startRowSpan:R},Ve=I.target.closest(".admin-dashboard__grid")?.getBoundingClientRect().width??1200,window.addEventListener("mousemove",je),window.addEventListener("mouseup",ke)}function je(I){if(!ie.value)return;const L=Ve/12,q=Math.round((I.clientX-ie.value.startX)/L),R=Math.max(1,Math.min(12,ie.value.startSpan+q)),H=Br+Vr,G=Math.round((I.clientY-ie.value.startY)/H),pe=Math.max(1,Math.min(6,ie.value.startRowSpan+G)),xe=o.draft.find(me=>me.slug===ie.value.slug);if(!xe)return;const mt=xe.config?.rowSpan,Ne={};xe.size!==R&&(Ne.size=R),mt!==pe&&(Ne.config={...xe.config??{},rowSpan:pe}),Object.keys(Ne).length>0&&o.updateWidget(ie.value.slug,Ne)}function ke(){ie.value=null,window.removeEventListener("mousemove",je),window.removeEventListener("mouseup",ke)}function ut(){r("export")}return(I,L)=>(e.openBlock(),e.createElementBlock("section",vr,[e.createElementVNode("header",hr,[e.createElementVNode("div",gr,[e.createElementVNode("h1",yr,e.toDisplayString(m.value),1),w.value?(e.openBlock(),e.createElementBlock("div",kr,e.toDisplayString(w.value),1)):e.createCommentVNode("",!0)]),e.createElementVNode("div",_r,[e.renderSlot(I.$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(rn),size:14},null,8,["icon"])]),append:e.withCtx(()=>[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(sn),size:14},null,8,["icon"])]),default:e.withCtx(()=>[e.createTextVNode(" "+e.toDisplayString(F.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:R=>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:ut},{prepend:e.withCtx(()=>[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(cn),size:14},null,8,["icon"])]),default:e.withCtx(()=>[L[0]||(L[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:le},{prepend:e.withCtx(()=>[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(at),size:14},null,8,["icon"])]),default:e.withCtx(()=>[L[2]||(L[2]=e.createTextVNode(" Add widget ",-1))]),_:1}),e.createVNode(e.unref(c.UidButton),{variant:"ghost",size:"md",onClick:N},{prepend:e.withCtx(()=>[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(Ct),size:14},null,8,["icon"])]),default:e.withCtx(()=>[L[3]||(L[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:z},{default:e.withCtx(()=>[...L[4]||(L[4]=[e.createTextVNode(" Сохранить ",-1)])]),_:1},8,["loading","disabled"])],64)):(e.openBlock(),e.createBlock(e.unref(c.UidButton),{key:0,variant:"secondary",size:"md",onClick:S},{prepend:e.withCtx(()=>[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(Nt),size:14},null,8,["icon"])]),default:e.withCtx(()=>[L[1]||(L[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,R)=>(e.openBlock(),e.createElementBlock("div",{key:q.layoutSlug,class:e.normalizeClass(["admin-dashboard__cell",{"admin-dashboard__cell--editing":e.unref(o).editMode,"admin-dashboard__cell--dragging":X.value===R,"admin-dashboard__cell--drop-target":re.value===R&&X.value!==R&&X.value!==null}]),draggable:e.unref(o).editMode,style:e.normalizeStyle({gridColumn:`span ${_(q.node)} / span ${_(q.node)}`,gridRow:`span ${p(q.layoutSlug,q.node)} / span ${p(q.layoutSlug,q.node)}`}),onPointerdown:it,onDragstart:H=>st(R,H),onDragover:H=>Be(R,H),onDrop:H=>dt(R,H),onDragend:ct},[e.createVNode(Dn,{node:q.node},null,8,["node"]),e.unref(o).editMode?(e.openBlock(),e.createBlock(jl,{key:0,onConfigure:H=>ne(q.layoutSlug),onRemove:H=>ee(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:H=>qe(H,q.layoutSlug,_(q.node),p(q.layoutSlug,q.node))},null,40,wr)):e.createCommentVNode("",!0)],46,br))),128))],2),e.createVNode(pr,{open:j.value!==null,mode:j.value??"add",item:W.value,"initial-title":ue.value,onClose:D,onAdd:ve,onSave:he},null,8,["open","mode","item","initial-title"])]))}}),xr={key:1,class:"admin-home"},Nr={class:"admin-home__title"},Cr={key:0,class:"admin-home__resources"},Er={class:"admin-home__grid"},$r=["onClick"],Sr={class:"admin-home__card-label"},Ur={class:"admin-home__card-slug"},Tn=e.defineComponent({__name:"HomePage",setup(t){const n=fe(),a=ce(),r=Y.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=$n();return e.watch(s,u=>{u&&d.openDashboard(u)},{immediate:!0}),(u,f)=>s.value?(e.openBlock(),e.createBlock(Ft,{key:0,slug:s.value},null,8,["slug"])):(e.openBlock(),e.createElementBlock("div",xr,[e.createVNode(e.unref(c.UidCard),{padding:"lg",class:"admin-home__hero"},{default:e.withCtx(()=>[e.createElementVNode("h1",Nr,"Добро пожаловать"+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",Cr,[f[1]||(f[1]=e.createElementVNode("h2",{class:"admin-home__heading"},"Ресурсы",-1)),e.createElementVNode("ul",Er,[(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",Sr,e.toDisplayString(y.label),1),e.createElementVNode("span",Ur,e.toDisplayString(y.slug),1)],8,$r)]))),128))])])):e.createCommentVNode("",!0)]))}}),Mr={class:"admin-status-page"},In=e.defineComponent({__name:"ForbiddenPage",setup(t){const n=Y.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})]))}}),Dr={class:"admin-status-page"},An=e.defineComponent({__name:"NotFoundPage",setup(t){const n=Y.useRouter();return(a,r)=>(e.openBlock(),e.createElementBlock("div",Dr,[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})]))}}),Tr={class:"admin-settings-page"},Ir={class:"admin-settings-page__title"},Ar={key:0,class:"admin-settings-page__hint"},Fr={key:1,class:"admin-settings-page__debug"},Fn=e.defineComponent({__name:"SettingsPage",setup(t){const n=Y.useRoute(),a=fe(),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",Tr,[e.createVNode(e.unref(c.UidCard),{padding:"lg"},{default:e.withCtx(()=>[e.createElementVNode("h1",Ir,e.toDisplayString(i.value?.label??r.value),1),i.value?(e.openBlock(),e.createElementBlock("pre",Fr,e.toDisplayString(JSON.stringify(i.value.fields,null,2)),1)):(e.openBlock(),e.createElementBlock("p",Ar," Settings «"+e.toDisplayString(r.value)+"» не найдено в manifest'е. ",1))]),_:1})]))}}),Lr=oe.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 _(h,M){for(const F of Object.keys(h))delete h[F];Object.assign(h,M)}function p(h){return h.map(M=>C(M))}function C(h){const M={...h};return Array.isArray(h.children)&&h.items===void 0?M.items=h.children.map(F=>typeof F=="object"&&F!==null?C(F):F):Array.isArray(h.items)&&(M.items=h.items.map(F=>typeof F=="object"&&F!==null?C(F):F)),h.props&&typeof h.props=="object"&&Object.assign(M,h.props),M}function B(){t.value=null,n.value="",a.value=null,r.value=[],i.value=[],o.value=[],l.value=null,_(s.value,{}),_(d.value,{}),u.value={},f.value=!1,y.value=!1,m.value=null,w.value=null}async function E(h,M){t.value=h,f.value=!0,m.value=null,u.value={};try{const j=await K().get(`/${h}/state`,{params:M});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,_(s.value,j.state),_(d.value,j.state)}catch(F){throw m.value=F instanceof Error?F:new Error(String(F)),F}finally{f.value=!1}}async function V(h,M){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 F=K(),j=M??s.value,W=await F.post(`/${t.value}/runMethod`,{method:h,payload:j});return W.state&&Object.keys(W.state).length>0&&(_(s.value,W.state),_(d.value,{...W.state})),W.message&&(w.value=W.message),W.refresh&&await E(t.value).catch(()=>{}),W}catch(F){throw F instanceof Se?u.value={...F.fields}:(F instanceof de||F instanceof Error)&&(m.value=F),F}finally{y.value=!1}}function T(h,M){if(s.value[h]=M,u.value[h]){const F={...u.value};delete F[h],u.value=F}}function k(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:k,clearErrors:b}}),Lt=Symbol("admin.infolist-record");function zt(t){e.provide(Lt,t)}function zr(){const t=e.inject(Lt);if(!t)throw new Error("useRecord() called outside of provideRecord() scope");return t}function Pe(){return e.inject(Lt,null)}const Me=rt(),De=rt(),Rr=Me.register,Rt=Me.get,Pr=Me.has,qr=Me.list,jr=De.register,kt=De.get,Or=De.has,Wr=De.list;function Hr(){Me.clear(),De.clear()}function Ln(t){t.fields&&Me.registerBundle(t.fields),t.layouts&&De.registerBundle(t.layouts)}const Pt=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}))}}),qt=e.defineComponent({__name:"FieldRenderer",props:{node:{}},setup(t){const n=t,a=e.computed(()=>Rt(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(Pt,{key:1,type:t.node.type,name:t.node.name},null,8,["type","name"]))}}),we=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=kt(n.node.type);return l?{kind:"layout",component:l}:{kind:"unknown"}}const o=kt(n.node.type);return o?{kind:"layout",component:o}:Rt(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(qt,{key:1,node:i.value},null,8,["node"])):(e.openBlock(),e.createBlock(Pt,{key:2,type:t.node.type,name:t.node.name},null,8,["type","name"]))}}),Kr={class:"admin-page admin-screen-page"},Gr={class:"admin-page__hd"},Xr={class:"admin-page__title-wrap"},Yr={class:"admin-page__title"},Zr={key:0,class:"admin-screen-page__description"},Jr={key:0,class:"admin-page__actions"},Qr={key:2,class:"admin-screen-page__loading"},zn=e.defineComponent({__name:"ScreenPage",props:{slug:{default:null}},setup(t){const n=t,a=Y.useRoute(),r=Lr(),i=e.computed(()=>n.slug?n.slug:String(a.params.slug??a.meta?.slug??"")),o=te.provideFormState(r.state,r.errors);zt(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",Kr,[e.createElementVNode("header",Gr,[e.createElementVNode("div",Xr,[e.createElementVNode("h1",Yr,e.toDisplayString(e.unref(r).name||i.value),1),e.unref(r).description?(e.openBlock(),e.createElementBlock("p",Zr,e.toDisplayString(e.unref(r).description),1)):e.createCommentVNode("",!0)]),e.unref(r).commandBar.length>0?(e.openBlock(),e.createElementBlock("div",Jr,[(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",Qr,[(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(we,{key:w,node:m},null,8,["node"]))),128))]),_:1})):e.createCommentVNode("",!0)]))}}),ei={class:"admin-auth-card__row"},ti=["href"],ni={key:1,style:{"text-align":"center","font-size":"var(--uid-font-size-xs)",color:"var(--uid-text-secondary)","padding-top":"4px"}},ai=["href"],Rn=e.defineComponent({__name:"LoginForm",props:{forgotUrl:{default:null},ssoLinkLabel:{default:null},ssoUrl:{default:null}},emits:["success"],setup(t,{emit:n}){const a=n,r=ce(),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 Se?(u.value=w.fields,d.value=w.firstFieldMessage()):w instanceof Re?d.value="Нет соединения с сервером":w instanceof de?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]=_=>i.value=_),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]=_=>o.value=_),type:"password",label:"Пароль",autocomplete:"current-password",required:!0,disabled:s.value,error:y.value,name:"password"},null,8,["modelValue","disabled","error"]),e.createElementVNode("div",ei,[e.createVNode(e.unref(c.UidCheckbox),{modelValue:l.value,"onUpdate:modelValue":v[2]||(v[2]=_=>l.value=_),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,ti)):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",ni,[v[4]||(v[4]=e.createTextVNode(" или войдите через ",-1)),e.createElementVNode("a",{href:t.ssoUrl,class:"admin-auth-card__link"},e.toDisplayString(t.ssoLinkLabel),9,ai)])):e.createCommentVNode("",!0)],32))}}),oi=["value","disabled","aria-label","onInput","onKeydown"],li={class:"admin-auth-card__row"},Pn=e.defineComponent({__name:"TwoFactorForm",emits:["success","cancel"],setup(t,{emit:n}){const a=n,r=ce(),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 k=T.target,b=k.value.replace(/\D/g,"").slice(-1);o.value[V]=b,k.value=b,b&&V<o.value.length-1&&e.nextTick(()=>s.value[V+1]?.focus()),y.value.length===o.value.length&&C()}function _(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 k=(V.clipboardData?.getData("text")??"").replace(/\D/g,"").slice(0,o.value.length);if(k.length!==0){V.preventDefault();for(let b=0;b<o.value.length;b++)o.value[b]=k[b]??"";e.nextTick(()=>{s.value[Math.min(k.length,o.value.length-1)]?.focus(),k.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 Se?u.value=V.firstFieldMessage()??"Неверный код":V instanceof Re?u.value="Нет соединения с сервером":V instanceof de?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,(k,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=>_(b,h)},null,40,oi))),128))],32)):(e.openBlock(),e.createBlock(e.unref(c.UidInput),{key:3,modelValue:l.value,"onUpdate:modelValue":T[0]||(T[0]=k=>l.value=k),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",li,[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))}}),ri={class:"admin-auth-page"},ii={key:0,class:"admin-auth-page__corner"},si={class:"admin-auth-card__hd"},ci=["src","alt"],di={key:1,"aria-hidden":"true"},ui={key:2},mi={class:"admin-auth-card__title"},fi={class:"admin-auth-card__sub"},qn=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=ce(),r=Y.useRouter(),i=Y.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",ri,[t.showCornerActions?(e.openBlock(),e.createElementBlock("div",ii,[e.createVNode(St),e.createVNode(Ut)])):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",si,[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,ci)):e.unref(a).isChallengePending?(e.openBlock(),e.createElementBlock("span",di,"🛡")):t.brandMark?(e.openBlock(),e.createElementBlock("span",ui,e.toDisplayString(t.brandMark),1)):(e.openBlock(),e.createBlock(lt,{key:3,size:40}))],2),e.createElementVNode("div",mi,[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",fi,[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(Pn,{key:0,onSuccess:s[0]||(s[0]=()=>{}),onCancel:s[1]||(s[1]=()=>{})})):(e.openBlock(),e.createBlock(Rn,{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"])]))}}),pi={class:"admin-auth-page"},vi={class:"admin-auth-card__hd"},hi={class:"admin-auth-card__logo"},gi={class:"admin-auth-card__sub"},yi={class:"admin-auth-card__body"},ki=e.defineComponent({__name:"ForgotPasswordPage",props:{brandName:{default:"Laravel Admin"},loginRouteName:{default:"admin.login"}},setup(t){const n=Y.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(()=>Q);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",pi,[e.createVNode(e.unref(c.UidCard),{padding:"none",class:"admin-auth-card"},{default:e.withCtx(()=>[e.createElementVNode("div",vi,[e.createElementVNode("div",hi,[e.createVNode(lt,{size:40})]),s[2]||(s[2]=e.createElementVNode("div",{class:"admin-auth-card__title"},"Восстановление пароля",-1)),e.createElementVNode("div",gi,e.toDisplayString(r.value?"Если такой email зарегистрирован — мы отправили письмо со ссылкой на сброс.":"Введите email — отправим ссылку для сброса пароля."),1)]),e.createElementVNode("div",yi,[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(fn),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})]))}}),_i={class:"admin-auth-page"},bi={class:"admin-auth-card__hd"},wi={class:"admin-auth-card__logo"},Bi={class:"admin-auth-card__body"},Vi={key:0,class:"admin-auth-card__error"},xi=e.defineComponent({__name:"ResetPasswordPage",props:{loginRouteName:{default:"admin.login"}},setup(t){const n=t,a=Y.useRouter(),r=Y.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(()=>Q);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",_i,[e.createVNode(e.unref(c.UidCard),{padding:"none",class:"admin-auth-card"},{default:e.withCtx(()=>[e.createElementVNode("div",bi,[e.createElementVNode("div",wi,[e.createVNode(lt,{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",Bi,[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",Vi,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(tt),size:14},null,8,["icon"])]),default:e.withCtx(()=>[m[5]||(m[5]=e.createTextVNode(" Сохранить пароль ",-1))]),_:1},8,["loading"])],32)])]),_:1})]))}}),Jt={page:1,per_page:20,total:0,last_page:1},jt=oe.defineStore("admin-resource-index",()=>{const t=e.ref(null),n=e.ref([]),a=e.ref({...Jt}),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),_=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(z=>m.value.has(B(z)))?"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={...Jt},r.value=!1,o.value=null,d.value="",u.value={},f.value=null,y.value=null,m.value=new Set}function T(N={}){const z={page:N.page??a.value.page,per_page:N.per_page??a.value.per_page},ee=N.search??d.value;ee&&(z.q=ee);const ne=N.sort??f.value,ve=N.direction??y.value;ne&&ve!==null&&(z.order=[{column:ne,direction:ve}]);const he=N.filters??u.value,X={};for(const[re,ae]of Object.entries(he))ae==null||ae===""||(X[re]=Array.isArray(ae)?ae.join(","):ae);return Object.keys(X).length>0&&(z.filters=X),z}async function k(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 z=K(),ee=T(N),ne=await z.post(`/${t.value}/search`,ee);n.value=ne.data,a.value=ne.meta}catch(z){throw o.value=z instanceof Error?z:new Error(String(z)),z}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 k()}async function h(N,z){z==null||z===""?delete u.value[N]:u.value[N]=z,a.value.page=1,await k()}async function M(){u.value={},a.value.page=1,await k()}async function F(N,z="asc"){f.value=N,y.value=z,await k()}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 k()}async function W(N){a.value.page=N,await k()}function ue(N){const z=new Set(m.value);z.has(N)?z.delete(N):z.add(N),m.value=z}function le(){if(C.value==="all"){m.value=new Set;return}const N=new Set(m.value);for(const z of n.value)N.add(B(z));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:_,selectedCount:v,selectionState:C,setSlug:E,reset:V,load:k,setSearch:b,setFilter:h,clearFilters:M,setSort:F,toggleSort:j,setPage:W,toggleRow:ue,toggleAllOnPage:le,clearSelection:D,isSelected:S,rowId:B}}),Ni=Object.freeze(Object.defineProperty({__proto__:null,useResourceIndexStore:jt},Symbol.toStringTag,{value:"Module"})),Qt="d.m.Y H:i:s",Ci="d.m.Y",Ei=/^\d{4}-\d{2}-\d{2}[T\s]\d{2}:\d{2}/;function jn(t,n,a={}){if(t==null)return"";if(!n&&typeof t=="string"&&Ei.test(t))return ht(t,Qt);switch(n){case"date":return ht(String(t),a.format??Ci);case"datetime":return ht(String(t),a.format??Qt);case"money":return $i(t,a.currency??"RUB",a.decimals??2);case"boolean":return Si(t,a.trueLabel??"Да",a.falseLabel??"Нет");case"bytes":return Ui(t);default:return String(t)}}function ht(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 $i(t,n,a){const r=typeof t=="number"?t:Number(t);return isNaN(r)?String(t):`${r.toFixed(a)} ${n}`}function Si(t,n,a){return t===!0||t===1||t==="1"||t==="true"?n:a}function Ui(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 en=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"},Di={class:"admin-toolbar__row admin-toolbar__row--filters"},Ti={class:"admin-toolbar__search"},Ii=["placeholder"],Ai={key:0,class:"admin-toolbar__divider"},Fi={type:"button",class:"admin-toolbar__chip admin-toolbar__chip--active"},Li={class:"admin-toolbar__chip-text"},zi=["onClick","onKeydown"],Ri={class:"admin-toolbar__popover-actions"},Pi={type:"button",class:"admin-toolbar__chip"},qi={class:"admin-toolbar__chip-text"},ji={class:"admin-toolbar__popover-actions"},Oi={type:"button",class:"admin-toolbar__chip"},Wi=["onClick"],Hi={key:0,class:"admin-toolbar__row admin-toolbar__row--actions"},Ki={type:"button",class:"admin-toolbar__chip"},Gi={class:"admin-toolbar__chip-text"},Xi=["onClick"],Yi={type:"button",class:"admin-toolbar__chip"},Zi=["checked","onChange"],Ji={type:"button",class:"admin-toolbar__chip"},Qi={class:"admin-toolbar__popover-actions"},tn=4,es=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<tn)),y=e.computed(()=>d.value.filter((D,S)=>!u.value.has(D.name)&&S>=tn));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 _(D){const S=a.values[D.name];if(D.options&&D.options.length>0){const z=(Array.isArray(S)?S:[S]).map(ee=>D.options?.find(ne=>String(ne.value)===String(ee))?.label??String(ee));return`${D.label}: ${z.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 z=C(D),ee=Array.isArray(z)?[...z]:[],ne=ee.findIndex(ve=>String(ve)===String(S));ne>=0?ee.splice(ne,1):ee.push(S),B(D,ee)}function T(D,S){const N=C(D);return Array.isArray(N)?N.some(z=>String(z)===String(S)):N!=null&&String(N)===String(S)}const k=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 M(D){return String(D.label??D.name??D.key??"")}function F(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]:!F(D)})}const W=e.ref("");function ue(D){W.value.trim()!==""&&(r("save-view",W.value.trim()),W.value="",D())}function le(D){return xn(D)??null}return(D,S)=>(e.openBlock(),e.createElementBlock("div",Mi,[e.createElementVNode("div",Di,[e.createElementVNode("label",Ti,[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(Et),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,Ii),[[e.vModelText,i.value]])]),t.filters.length>0?(e.openBlock(),e.createElementBlock("span",Ai)):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",Fi,[le(N.icon)!==null?(e.openBlock(),e.createBlock(e.unref(c.UidIcon),{key:0,icon:le(N.icon),size:14},null,8,["icon"])):e.createCommentVNode("",!0),e.createElementVNode("span",Li,e.toDisplayString(_(N)),1),e.createElementVNode("span",{role:"button",tabindex:"0","aria-label":"Сбросить фильтр",class:"admin-toolbar__chip-x",onClick:e.withModifiers(z=>v(N.name),["stop"]),onKeydown:e.withKeys(e.withModifiers(z=>v(N.name),["stop"]),["enter"])},[e.createVNode(e.unref(c.UidIcon),{icon:e.unref($e),size:12},null,8,["icon"])],40,zi)])]),default:e.withCtx(()=>[e.createElementVNode("div",{class:"admin-toolbar__popover",onKeydown:S[1]||(S[1]=e.withModifiers(()=>{},["stop"]))},[e.createVNode(e.unref(en),{filter:N,draft:C(N.name),"is-checked":z=>T(N.name,z),onToggleOption:z=>V(N.name,z,N.multiple??!1),onSetDraft:z=>B(N.name,z)},null,8,["filter","draft","is-checked","onToggleOption","onSetDraft"]),e.createElementVNode("div",Ri,[e.createVNode(e.unref(c.UidButton),{size:"sm",variant:"ghost",onClick:z=>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:z=>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",Pi,[le(N.icon)!==null?(e.openBlock(),e.createBlock(e.unref(c.UidIcon),{key:0,icon:le(N.icon),size:14},null,8,["icon"])):e.createCommentVNode("",!0),e.createElementVNode("span",qi,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(en),{filter:N,draft:C(N.name),"is-checked":z=>T(N.name,z),onToggleOption:z=>V(N.name,z,N.multiple??!1),onSetDraft:z=>B(N.name,z)},null,8,["filter","draft","is-checked","onToggleOption","onSetDraft"]),e.createElementVNode("div",ji,[e.createVNode(e.unref(c.UidButton),{size:"sm",variant:"ghost",onClick:z=>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:z=>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",Oi,[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(at),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:z=>m(N.name)},[le(N.icon)!==null?(e.openBlock(),e.createBlock(e.unref(c.UidIcon),{key:0,icon:le(N.icon),size:14},null,8,["icon"])):e.createCommentVNode("",!0),e.createTextVNode(" "+e.toDisplayString(N.label),1)],8,Wi))),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(Ct),size:14},null,8,["icon"])]),default:e.withCtx(()=>[S[17]||(S[17]=e.createTextVNode(" Сбросить ",-1))]),_:1})):e.createCommentVNode("",!0)]),k.value.length>0||t.columns.length>0||t.enableSavedViews?(e.openBlock(),e.createElementBlock("div",Hi,[k.value.length>0?(e.openBlock(),e.createBlock(e.unref(c.UidMenu),{key:0},{trigger:e.withCtx(()=>[e.createElementVNode("button",Ki,[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(oo),size:14},null,8,["icon"]),e.createElementVNode("span",Gi,e.toDisplayString(t.groupBy?`Группа: ${M(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(tt),size:14},null,8,["icon"])),S[19]||(S[19]=e.createElementVNode("span",null,"Без группировки",-1))]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(k.value,N=>(e.openBlock(),e.createElementBlock("button",{key:h(N),type:"button",role:"menuitem",class:"admin-toolbar__list-item",onClick:z=>b(h(N),()=>{})},[t.groupBy===h(N)?(e.openBlock(),e.createBlock(e.unref(c.UidIcon),{key:0,icon:e.unref(tt),size:14},null,8,["icon"])):e.createCommentVNode("",!0),e.createElementVNode("span",null,e.toDisplayString(M(N)),1)],8,Xi))),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",Yi,[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:F(N),onChange:z=>j(N)},null,40,Zi),e.createElementVNode("span",null,e.toDisplayString(M(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",Ji,[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(xt),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=>W.value=N),type:"text",placeholder:"Название view",class:"admin-toolbar__input",onKeydown:S[9]||(S[9]=e.withKeys(N=>ue(()=>{}),["enter"]))},null,544),[[e.vModelText,W.value]]),e.createElementVNode("div",Qi,[e.createVNode(e.unref(c.UidButton),{size:"sm",variant:"primary",disabled:W.value.trim()==="",onClick:S[10]||(S[10]=N=>ue(()=>{}))},{default:e.withCtx(()=>[...S[22]||(S[22]=[e.createTextVNode(" Сохранить view ",-1)])]),_:1},8,["disabled"])])],32)]),_:1})):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)]))}}),ts=["title"],ns=["disabled"],as=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(()=>Q);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,ns)),[[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,ts))}}),os={class:"admin-page admin-resource-index"},ls={class:"admin-page__hd"},rs={class:"admin-page__title-wrap"},is={class:"admin-page__title-row"},ss={class:"admin-page__title"},cs={key:0,class:"admin-page__live",role:"status"},ds={key:0,class:"admin-page__count"},us={class:"admin-page__actions"},ms={class:"admin-page__view-row"},fs={class:"admin-page__view-name"},ps={key:0,class:"admin-page__view-badge"},vs=["onClick"],hs={key:0,class:"admin-bulk-toolbar",role:"toolbar"},gs={class:"admin-bulk-toolbar__count"},ys={key:2,class:"admin-resource-index__loading"},ks={key:5,class:"admin-resource-index__table"},_s=["draggable","onDragstart","onDragover","onDrop"],bs={key:1,class:"admin-resource-index__row-actions"},ws=["onClick"],Bs=["onClick"],Vs=["onClick"],xs=["onClick"],Ns=["onClick"],Cs={class:"admin-cell-truncate"},Es=["title"],$s={key:6,class:"admin-resource-index__footer"},nn="__row_actions__",an="__row_reorder__",On=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=It(),r=(x,g,U)=>a.has(x)?a.t(x,U):g,i=t,o=n,l=jt(),s=fe(),d=Tt(),u=Y.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(()=>Q),A=await g().post(`/${i.slug}/action`,{key:x.key,ids:[...l.selection]});await l.load().catch(()=>{}),Z.success(A?.message??`Action «${x.label}» применён к ${A?.affected??0} записям.`)}catch(g){typeof console<"u"&&console.error("[admin] header-action failed:",g),Z.error(`Не удалось выполнить action «${x.label}».`)}finally{d.end()}}}async function _(x="csv"){o("header-action","export");try{d.start();const{getAdminClient:g}=await Promise.resolve().then(()=>Q),A=await g().post(`/${i.slug}/export`,{format:x,filters:l.filters,search:l.search},{responseType:"blob"}),P=URL.createObjectURL(A),J=document.createElement("a");J.href=P,J.download=`${i.slug}-${new Date().toISOString().slice(0,10)}.${x}`,document.body.appendChild(J),J.click(),J.remove(),URL.revokeObjectURL(P)}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,U=g.files?.[0];if(U)try{d.start();const{getAdminClient:A}=await Promise.resolve().then(()=>Q),P=A(),J=new FormData;J.append("file",U),J.append("resource",i.slug);const He=await P.post("/import/upload",J),Ie=await P.post("/import/preview",{resource:i.slug,upload_id:He.upload_id}),ft=await P.post("/import/start",{resource:i.slug,upload_id:He.upload_id,mapping:Ie.mapping}),Ke=await E(P,ft.process_id),Ge=Ke.imported??0,Gt=Ke.failed??0;Gt>0?Z.warning(`Импорт завершён с ошибками: ${Ge} записей, ${Gt} ошибок.`):Z.success(`Импортировано записей: ${Ge}.`),await l.load().catch(()=>{})}catch(A){typeof console<"u"&&console.error("[admin] import failed:",A),Z.error("Импорт не удался. Проверьте формат файла и поля ресурса либо обратитесь к администратору.")}finally{g.value="",d.end()}}async function E(x,g){const U=Date.now()+9e4;for(;Date.now()<U;){await new Promise(P=>setTimeout(P,800));const A=await x.get(`/import/status?process_id=${encodeURIComponent(g)}`);if(A.status==="done"||A.status==="failed")return A}return{status:"failed",failed:1}}const V=e.computed(()=>(f.value?.features??{}).reorderable===!0),T=e.computed(()=>{const g=(f.value?.columns??[]).map(A=>{const P=A;return{key:String(P.key??P.name??""),label:String(P.label??P.name??""),sortable:!!P.sortable,align:P.align??"left",width:typeof P.width=="string"?P.width:void 0}}).filter(A=>A.key).filter(A=>S.value[A.key]!==!1);return[...V.value?[{key:an,label:"",sortable:!1,align:"center",width:"32px"}]:[],...g,{key:nn,label:"",sortable:!1,align:"right",width:"120px"}]});function k(x){const g=f.value?.columns??[];for(const U of g){const A=U;if(String(A.key??A.name??"")===x)return A.editable!==null&&A.editable!==void 0}return!1}const b=e.computed(()=>{const x=f.value?.columns??[],g={};for(const U of x){const A=U,P=String(A.key??A.name??"");P&&(g[P]={preset:typeof A.preset=="string"?A.preset:void 0,meta:A.meta??{}})}return g});function h(x,g){const A=g?.row?.[x],P=b.value[x];return jn(A,P?.preset,P?.meta??{})}function M(x){return x?.row}const F=e.computed(()=>l.search!==""||Object.keys(l.filters).length>0),j=e.computed(()=>!l.isEmpty||F.value),W=e.computed(()=>f.value?.filters??[]),ue=e.computed(()=>f.value?.columns??[]),le=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 z(x){await l.setSearch(x)}async function ee(){l.search="",await l.clearFilters()}async function ne(x){D.value=x,await l.load({group_by:x})}function ve(x){S.value=x}const he=e.ref([]),X=e.ref(null);async function re(){try{const{getAdminClient:x}=await Promise.resolve().then(()=>Q),U=await x().get(`/${i.slug}_views/list`);he.value=U.data??[]}catch{he.value=[]}}async function ae(x){X.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 ke()}async function it(){X.value=null,l.search="",l.filters={},l.sortKey=null,l.sortDirection=null,D.value=null,S.value={},l.meta.page=1,await ke()}async function st(x,g){if(g?.stopPropagation(),!!x.owned&&window.confirm(`Удалить view «${x.name}»?`))try{d.start();const{getAdminClient:U}=await Promise.resolve().then(()=>Q);await U().post(`/${i.slug}_views/delete`,{id:x.id}),X.value===x.id&&(X.value=null),await re()}catch(U){typeof console<"u"&&console.error("[admin] delete-view failed:",U)}finally{d.end()}}async function ct(x){try{d.start();const{getAdminClient:g}=await Promise.resolve().then(()=>Q),A=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}});A?.view&&(X.value=A.view.id),await re(),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 Be=e.computed(()=>{const x=l.meta.total;return x===0?"":`${l.items.length} из ${x} ${dt(x)}`});function dt(x){const g=x%10,U=x%100;return g===1&&U!==11?"запись":g>=2&&g<=4&&(U<10||U>=20)?"записи":"записей"}const ye=e.ref(null),ie=e.ref(0);let Ve=null;e.watch(()=>l.loading,(x,g)=>{g&&!x&&l.error===null&&(ye.value=Date.now())}),e.onMounted(()=>{Ve=setInterval(()=>{ie.value+=1},3e4)}),e.onUnmounted(()=>{Ve!==null&&clearInterval(Ve)});const qe=e.computed(()=>{if(ie.value,ye.value===null)return null;const x=Math.floor((Date.now()-ye.value)/1e3);if(x<5)return"обновлено только что";if(x<60)return`обновлено ${x} сек назад`;const g=Math.floor(x/60);if(g<60)return`обновлено ${g} мин назад`;const U=Math.floor(g/60);return U<24?`обновлено ${U} ч назад`:"обновлено более суток назад"}),je=e.computed(()=>{if(X.value!==null){const g=he.value.find(U=>U.id===X.value);if(g)return g.name}return`Все ${(f.value?.label??i.slug).toLowerCase()}`});async function ke(){d.start();try{await l.load()}catch{}finally{d.end()}}e.onMounted(async()=>{l.setSlug(i.slug),s.manifest===null&&await s.load().catch(()=>{}),re(),await ke()}),e.watch(()=>i.slug,async(x,g)=>{x!==g&&(l.setSlug(x),X.value=null,re(),await ke())});async function ut(x){await e.nextTick(),await l.setSort(x,l.sortDirection)}async function I(x){await e.nextTick(),await l.setSort(l.sortKey,x)}function L(x){l.selection=x}async function q(x){await l.setPage(x)}function R(x){const g=x?.id??x?.key;return typeof g=="string"||typeof g=="number"?g:null}function H(x){o("row-click",x);const g=R(x);g!==null&&u.push({name:`admin.resource.${i.slug}.view`,params:{id:String(g)}})}function G(x,g){g?.stopPropagation();const U=R(x);U!==null&&u.push({name:`admin.resource.${i.slug}.view`,params:{id:String(U)}})}function pe(x,g){g?.stopPropagation();const U=R(x);U!==null&&u.push({name:`admin.resource.${i.slug}.edit`,params:{id:String(U)}})}async function xe(x,g){g?.stopPropagation();const U=R(x);if(U!==null&&window.confirm(r("admin.resource.delete_confirm","Удалить запись?")))try{d.start();const{getAdminClient:A}=await Promise.resolve().then(()=>Q);await A().post(`/${i.slug}/delete`,{id:U}),await l.load().catch(()=>{}),Z.success(r("admin.resource.deleted","Запись удалена."))}catch(A){typeof console<"u"&&console.error("[admin] delete failed:",A),Z.error(r("admin.resource.delete_failed","Не удалось удалить запись."))}finally{d.end()}}function mt(x){return x.deleted_at!==null&&x.deleted_at!==void 0}async function Ne(x,g){g?.stopPropagation();const U=R(x);if(U!==null)try{d.start();const{getAdminClient:A}=await Promise.resolve().then(()=>Q);await A().post(`/${i.slug}/restore`,{id:U}),await l.load().catch(()=>{}),Z.success(r("admin.resource.restored","Запись восстановлена."))}catch(A){typeof console<"u"&&console.error("[admin] restore failed:",A),Z.error(r("admin.resource.restore_failed","Не удалось восстановить запись."))}finally{d.end()}}const me=e.ref(null),_e=e.ref(null),Oe=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}me.value=x,g.dataTransfer.effectAllowed="move",g.dataTransfer.setData("text/plain",String(x))}function pa(x,g){if(!V.value||me.value===null)return;g.preventDefault();const U=g.currentTarget;if(U){const A=U.getBoundingClientRect();Oe.value=g.clientY<A.top+A.height/2?"before":"after"}_e.value=x}function va(){me.value=null,_e.value=null}async function ha(x,g){if(g.preventDefault(),!V.value||me.value===null)return;const U=me.value,A=Oe.value==="after"?x+1:x,P=A>U?A-1:A;if(me.value=null,_e.value=null,U===P)return;const J=[...l.items],[He]=J.splice(U,1);J.splice(P,0,He),l.items=J;try{d.start();const{getAdminClient:Ie}=await Promise.resolve().then(()=>Q),ft=Ie(),Ke=J.map(Ge=>l.rowId(Ge));await ft.post(`/${i.slug}/reorder`,{ids:Ke}),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 U=R(x);if(U!==null&&window.confirm(r("admin.resource.force_delete_confirm","Удалить запись НАВСЕГДА? Действие необратимо.")))try{d.start();const{getAdminClient:A}=await Promise.resolve().then(()=>Q);await A().post(`/${i.slug}/forceDelete`,{id:U}),await l.load().catch(()=>{}),Z.success(r("admin.resource.force_deleted","Запись удалена навсегда."))}catch(A){typeof console<"u"&&console.error("[admin] force-delete failed:",A),Z.error(r("admin.resource.force_delete_failed","Не удалось удалить запись навсегда."))}finally{d.end()}}function We(x){o("bulk-action",x,[...l.selection])}async function Kt(){await l.load().catch(()=>{})}return(x,g)=>(e.openBlock(),e.createElementBlock("section",os,[e.createElementVNode("header",ls,[e.createElementVNode("div",rs,[e.createElementVNode("div",is,[e.createElementVNode("h1",ss,e.toDisplayString(y.value),1),qe.value?(e.openBlock(),e.createElementBlock("span",cs,[g[10]||(g[10]=e.createElementVNode("span",{class:"admin-page__live-dot","aria-hidden":"true"},null,-1)),e.createTextVNode(" "+e.toDisplayString(qe.value),1)])):e.createCommentVNode("",!0)]),t.subtitle||Be.value?(e.openBlock(),e.createElementBlock("div",ds,[t.subtitle?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(t.subtitle),1)],64)):e.createCommentVNode("",!0),t.subtitle&&Be.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(" · ")],64)):e.createCommentVNode("",!0),Be.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.createTextVNode(e.toDisplayString(Be.value),1)],64)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)]),e.createElementVNode("div",us,[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(xt),size:14},null,8,["icon"])]),append:e.withCtx(()=>[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(sn),size:14},null,8,["icon"])]),default:e.withCtx(()=>[e.createTextVNode(" "+e.toDisplayString(je.value)+" ",1)]),_:1})]),default:e.withCtx(()=>[e.createVNode(e.unref(c.UidMenuItem),{onClick:it},{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(he.value,U=>(e.openBlock(),e.createBlock(e.unref(c.UidMenuItem),{key:U.id,onClick:A=>ae(U)},{default:e.withCtx(()=>[e.createElementVNode("span",ms,[e.createElementVNode("span",fs,[e.createTextVNode(e.toDisplayString(U.name)+" ",1),U.is_default?(e.openBlock(),e.createElementBlock("span",ps,"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(A=>st(U,A),["stop"])},[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(Ee),size:12},null,8,["icon"])],8,vs)):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(dn),size:16},null,8,["icon"])]),_:1})]),default:e.withCtx(()=>[e.createVNode(e.unref(c.UidMenuItem),{onClick:Kt},{default:e.withCtx(()=>[...g[11]||(g[11]=[e.createTextVNode("Обновить",-1)])]),_:1}),e.createVNode(e.unref(c.UidMenuItem),{onClick:g[0]||(g[0]=U=>_("csv"))},{default:e.withCtx(()=>[...g[12]||(g[12]=[e.createTextVNode("Экспорт CSV",-1)])]),_:1}),e.createVNode(e.unref(c.UidMenuItem),{onClick:g[1]||(g[1]=U=>_("json"))},{default:e.withCtx(()=>[...g[13]||(g[13]=[e.createTextVNode("Экспорт JSON",-1)])]),_:1}),e.createVNode(e.unref(c.UidMenuItem),{onClick:g[2]||(g[2]=U=>_("xlsx"))},{default:e.withCtx(()=>[...g[14]||(g[14]=[e.createTextVNode("Экспорт XLSX",-1)])]),_:1}),e.createVNode(e.unref(c.UidMenuItem),{onClick:g[3]||(g[3]=U=>_("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,U=>(e.openBlock(),e.createBlock(e.unref(c.UidMenuItem),{key:U.key,onClick:A=>v(U)},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(U.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(gn),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]=U=>x.$router.push({name:m.value}))},{prepend:e.withCtx(()=>[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(at),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",hs,[e.createElementVNode("span",gs,[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]=U=>We("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]=U=>We("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]=U=>We("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]=U=>We("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(es,{key:1,search:e.unref(l).search,"search-placeholder":le.value,filters:W.value,values:e.unref(l).filters,columns:ue.value,"group-by":D.value,"column-visibility":S.value,"onUpdate:search":z,onApplyFilter:N,onReset:ee,onGroupBy:ne,onColumnsVisibility:ve,onSaveView:ct},{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",ys,[e.unref(l).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(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:Kt},{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]=U=>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",ks,[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":U=>e.unref(l).rowId(U),"onUpdate:sortKey":ut,"onUpdate:sortDirection":I,"onUpdate:selection":L,onRowClick:H},e.createSlots({_:2},[e.renderList(T.value,U=>({name:U.key,fn:e.withCtx(A=>[U.key===an?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass(["admin-resource-index__row-drag",{"admin-resource-index__row-drag--drop-before":_e.value!==null&&_e.value===e.unref(l).items.indexOf(M(A)??{})&&Oe.value==="before","admin-resource-index__row-drag--drop-after":_e.value!==null&&_e.value===e.unref(l).items.indexOf(M(A)??{})&&Oe.value==="after","admin-resource-index__row-drag--ghost":me.value!==null&&me.value===e.unref(l).items.indexOf(M(A)??{})}]),"data-row-drag-handle":"true",draggable:V.value,title:"Перетащить",onDragstart:P=>fa(e.unref(l).items.indexOf(M(A)??{}),P),onDragover:P=>pa(e.unref(l).items.indexOf(M(A)??{}),P),onDragend:va,onDrop:P=>ha(e.unref(l).items.indexOf(M(A)??{}),P)},[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(mn),size:14},null,8,["icon"])],42,_s)):U.key===nn?(e.openBlock(),e.createElementBlock("div",bs,[e.createElementVNode("button",{type:"button",class:"admin-resource-index__row-action",title:"Просмотр",onClick:e.withModifiers(P=>G(M(A)??{},P),["stop"])},[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(za),size:16},null,8,["icon"])],8,ws),mt(M(A)??{})?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("button",{type:"button",class:"admin-resource-index__row-action",title:"Восстановить",onClick:e.withModifiers(P=>Ne(M(A)??{},P),["stop"])},[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(Ct),size:16},null,8,["icon"])],8,xs),e.createElementVNode("button",{type:"button",class:"admin-resource-index__row-action admin-resource-index__row-action--danger",title:"Удалить навсегда",onClick:e.withModifiers(P=>ga(M(A)??{},P),["stop"])},[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(Ee),size:16},null,8,["icon"])],8,Ns)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("button",{type:"button",class:"admin-resource-index__row-action",title:"Редактировать",onClick:e.withModifiers(P=>pe(M(A)??{},P),["stop"])},[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(Nt),size:16},null,8,["icon"])],8,Bs),e.createElementVNode("button",{type:"button",class:"admin-resource-index__row-action admin-resource-index__row-action--danger",title:"Удалить",onClick:e.withModifiers(P=>xe(M(A)??{},P),["stop"])},[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(Ee),size:16},null,8,["icon"])],8,Vs)],64))])):e.renderSlot(x.$slots,`cell-${U.key}`,{key:2,row:M(A)},()=>[k(U.key)?(e.openBlock(),e.createBlock(as,{key:0,"resource-slug":t.slug,"row-id":R(M(A)??{})??"",column:U.key,value:(M(A)??{})[U.key],editable:!0,onSaved:P=>{const J=M(A);J&&(J[U.key]=P)}},{default:e.withCtx(()=>[e.createElementVNode("span",Cs,e.toDisplayString(h(U.key,A)),1)]),_:2},1032,["resource-slug","row-id","column","value","onSaved"])):(e.openBlock(),e.createElementBlock("span",{key:1,class:"admin-cell-truncate",title:h(U.key,A)},e.toDisplayString(h(U.key,A)),9,Es))])])}))]),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",$s,[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":q},null,8,["model-value","total","per-page"])])):e.createCommentVNode("",!0)]))}}),Ot=oe.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,M=i.value,F=new Set([...Object.keys(h),...Object.keys(M)]);for(const j of F)if(!Object.is(h[j],M[j]))if(typeof h[j]=="object"||typeof M[j]=="object"){if(JSON.stringify(h[j])!==JSON.stringify(M[j]))return!0}else return!0;return!1});function _(h,M){for(const F of Object.keys(h))delete h[F];Object.assign(h,M)}function p(){_(r.value,{}),_(i.value,{}),o.value={},l.value=!1,s.value=!1,d.value=!1,u.value=null,a.value=null}function C(h,M={}){t.value=h,n.value="create",a.value=null,_(r.value,M),_(i.value,M),o.value={},u.value=null}async function B(h,M,F="edit"){t.value=h,n.value=F,a.value=M,l.value=!0,u.value=null,o.value={};try{const W=await K().get(`/${h}/read`,{params:{id:M}});_(r.value,W.record),_(i.value,W.record)}catch(j){throw u.value=j instanceof Error?j:new Error(String(j)),j}finally{l.value=!1}}function E(h,M){if(r.value[h]=M,o.value[h]){const F={...o.value};delete F[h],o.value=F}}function V(h){o.value={...h}}function T(){o.value={}}async function k(){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(),M=n.value==="create"?`/${t.value}/create`:`/${t.value}/update`,F=n.value==="create"?r.value:{id:a.value,...r.value},j=await h.post(M,F),W=j.record?.id??j.id;if(W===void 0)throw new Error("save: backend response does not contain record.id");return a.value=W,_(i.value,{...r.value}),n.value="edit",W}catch(h){throw h instanceof Se?o.value={...h.fields}:(h instanceof de||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:k,destroy:b}}),Ss={class:"admin-page admin-resource-form"},Us={class:"admin-page__hd"},Ms={class:"admin-page__title-wrap"},Ds={class:"admin-page__title"},Ts={class:"admin-page__actions"},Is={key:1,class:"admin-resource-form__loading"},As={key:3,class:"admin-resource-form__savebar"},_t=e.defineComponent({__name:"ResourceFormPage",props:{slug:{},id:{default:null},indexRouteName:{default:null}},setup(t){const n=t,a=Ot(),r=fe(),i=Y.useRouter(),o=te.provideFormState(a.state,a.errors);e.watch(()=>a.errors,_=>{o.setErrors({..._})});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 _=a.state.status;return typeof _=="string"?_: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([_,p])=>{p!=null?await a.load(_,p,"edit").catch(()=>{}):a.prepareCreate(_)});async function y(){try{const _=await a.save();a.isCreate&&i.push({name:`admin.resource.${n.slug}.edit`,params:{id:_}}).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(_,p)=>(e.openBlock(),e.createElementBlock("section",Ss,[e.createElementVNode("header",Us,[e.createElementVNode("div",Ms,[e.createElementVNode("a",{class:"admin-resource-form__back",onClick:v},"← Назад"),e.createElementVNode("h1",Ds,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",Ts,[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",Is,[(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(we,{key:B,node:C},null,8,["node"]))),128))]),_:1})),e.unref(a).isDirty&&!e.unref(a).loading?(e.openBlock(),e.createElementBlock("div",As,[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)]))}}),Te=rt(),Fs=Te.register,bt=Te.get,Ls=Te.has,zs=Te.list,Rs=Te.clear,Wn=Te.registerBundle,Hn=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}))}}),Ps={key:1,class:"admin-infolist-rows"},qs={key:2,class:"admin-infolist-cols"},js={key:3,class:"admin-infolist-section"},Os={key:0,class:"admin-infolist-section__hd"},Ws={key:0,class:"admin-infolist-section__title"},Hs={key:1,class:"admin-infolist-section__description"},Ks={class:"admin-infolist-section__body"},Gs={key:4,class:"admin-infolist-tabs"},Xs={class:"admin-infolist-tabs__list",role:"tablist"},Ys={class:"admin-infolist-tabs__panel"},Kn=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=bt(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=bt(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,_=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,...k,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",Ps,[(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",qs,[(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",js,[l.value||s.value?(e.openBlock(),e.createElementBlock("header",Os,[l.value?(e.openBlock(),e.createElementBlock("h3",Ws,e.toDisplayString(l.value),1)):e.createCommentVNode("",!0),s.value?(e.openBlock(),e.createElementBlock("p",Hs,e.toDisplayString(s.value),1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.createElementVNode("div",Ks,[(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",Gs,[e.createElementVNode("ul",Xs,[(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",Ys,[(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(Hn,{key:5,type:t.node.type,name:t.node.name},null,8,["type","name"]))}}}),Zs={class:"admin-audit-timeline"},Js={key:0,class:"admin-audit-timeline__loading"},Qs={key:1,class:"admin-audit-timeline__error"},ec={key:2,class:"admin-audit-timeline__empty"},tc={key:3,class:"admin-audit-timeline__list"},nc={class:"admin-audit-timeline__icon","aria-hidden":"true"},ac={class:"admin-audit-timeline__body"},oc={class:"admin-audit-timeline__row"},lc={class:"admin-audit-timeline__actor"},rc={class:"admin-audit-timeline__verb"},ic={class:"admin-audit-timeline__when"},sc={key:0,class:"admin-audit-timeline__detail"},cc=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(()=>Q),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"?at:m==="deleted"||m==="destroyed"?Ee:m.includes("tag")||m.includes("label")?hn: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",Zs,[w[0]||(w[0]=e.createElementVNode("h2",{class:"admin-audit-timeline__title"},"История изменений",-1)),r.value?(e.openBlock(),e.createElementBlock("div",Js,[(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",Qs," Не удалось загрузить историю: "+e.toDisplayString(i.value.message),1)):l.value?(e.openBlock(),e.createElementBlock("ol",tc,[(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",nc,[e.createVNode(e.unref(c.UidIcon),{icon:s(v.event),size:14},null,8,["icon"])]),e.createElementVNode("div",ac,[e.createElementVNode("div",oc,[e.createVNode(e.unref(c.UidAvatar),{name:v.actor?.name??"?",alt:v.actor?.name??"Неизвестный",size:"xs"},null,8,["name","alt"]),e.createElementVNode("span",lc,e.toDisplayString(v.actor?.name??"Система"),1),e.createElementVNode("span",rc,e.toDisplayString(d(v.event)),1),e.createElementVNode("span",ic,e.toDisplayString(u(v.created_at)),1)]),f(v)?(e.openBlock(),e.createElementBlock("div",sc,e.toDisplayString(f(v)),1)):e.createCommentVNode("",!0)])]))),128))])):(e.openBlock(),e.createElementBlock("div",ec," Записей в истории пока нет. "))]))}}),dc={class:"admin-page admin-resource-view"},uc={class:"admin-resource-view__hd"},mc={class:"admin-resource-view__hd-left"},fc={class:"admin-page__title"},pc={class:"admin-resource-view__meta"},vc=["data-variant","data-status"],hc={class:"admin-resource-view__uid"},gc={class:"admin-resource-view__hd-right"},yc={key:1,class:"admin-resource-view__loading"},kc={key:2,class:"admin-resource-view__grid"},_c={class:"admin-resource-view__main"},bc={class:"admin-resource-view__aside"},wc={class:"admin-resource-view__metrics"},Bc={class:"admin-resource-view__metric-label"},Vc={class:"admin-resource-view__metric-value"},Gn=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=Ot(),r=fe(),i=Y.useRouter();zt(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,k=[],b=j=>{if(typeof j!="string"||j==="")return null;const W=new Date(j);return Number.isNaN(W.getTime())?null:W.toLocaleString("ru-RU",{day:"2-digit",month:"2-digit",year:"numeric",hour:"2-digit",minute:"2-digit"})},h=b(T.created_at);h&&k.push({label:"Создано",value:h});const M=b(T.updated_at);M&&M!==h&&k.push({label:"Обновлено",value:M});const F=typeof T.created_by_name=="string"&&T.created_by_name!==""?T.created_by_name:typeof T.author=="string"?T.author:null;return F&&k.push({label:"Автор",value:F}),k}),u=e.computed(()=>{const T=a.state,k=T.title??T.name??T.label;return typeof k=="string"&&k.length>0?k:`${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 k=a.state[n.statusField];return typeof k=="string"&&k.length>0?k: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 _=e.computed(()=>(o.value?.actions??[]).map(k=>({key:String(k.key??k.name??""),label:String(k.label??k.name??k.key??""),confirm:typeof k.confirm=="string"?k.confirm:void 0})).filter(k=>k.key!==""&&k.label!==""));async function p(T){if(!(T.confirm&&!window.confirm(T.confirm)))try{const{getAdminClient:k}=await Promise.resolve().then(()=>Q);await k().post(`/${n.slug}/action/${T.key}`,{ids:[n.id]}),await a.load(n.slug,n.id,"view").catch(()=>{})}catch(k){typeof console<"u"&&console.error("[admin] action failed:",k)}}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,k])=>{await a.load(T,k,"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,k)=>(e.openBlock(),e.createElementBlock("section",dc,[e.createElementVNode("header",uc,[e.createElementVNode("div",mc,[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",fc,e.toDisplayString(u.value),1),e.createElementVNode("div",pc,[m.value?(e.openBlock(),e.createElementBlock("span",{key:0,class:"admin-status-badge","data-variant":v(m.value),"data-status":m.value},[k[0]||(k[0]=e.createElementVNode("span",{class:"admin-status-badge__dot","aria-hidden":"true"},null,-1)),e.createTextVNode(" "+e.toDisplayString(m.value),1)],8,vc)):e.createCommentVNode("",!0),e.createElementVNode("span",hc,e.toDisplayString(y.value),1)])]),e.createElementVNode("div",gc,[e.createVNode(e.unref(c.UidButton),{variant:"secondary",size:"md",onClick:E},{prepend:e.withCtx(()=>[e.createVNode(e.unref(c.UidIcon),{icon:e.unref(Nt),size:14},null,8,["icon"])]),default:e.withCtx(()=>[k[1]||(k[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(dn),size:16},null,8,["icon"])]),_:1})]),default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(_.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(Ee),size:14},null,8,["icon"])]),default:e.withCtx(()=>[k[2]||(k[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",yc,[(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",kc,[e.createElementVNode("div",_c,[e.createVNode(e.unref(c.UidCard),{padding:"md",class:"admin-resource-view__card"},{default:e.withCtx(()=>[k[3]||(k[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(Kn,{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(cc,{"subject-type":s.value,"subject-id":t.id},null,8,["subject-type","subject-id"])]),_:1})]),e.createElementVNode("aside",bc,[d.value.length>0?(e.openBlock(),e.createBlock(e.unref(c.UidCard),{key:0,padding:"md",class:"admin-resource-view__card"},{default:e.withCtx(()=>[k[4]||(k[4]=e.createElementVNode("h2",{class:"admin-resource-view__card-title"},"Метрики",-1)),e.createElementVNode("dl",wc,[(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",Bc,e.toDisplayString(b.label),1),e.createElementVNode("dd",Vc,e.toDisplayString(b.value),1)],64))),128))])]),_:1})):e.createCommentVNode("",!0),e.renderSlot(T.$slots,"sidebar",{record:e.unref(a).state,resource:o.value})])]))]))}}),xc={class:"admin-page admin-profile"},Nc={class:"admin-page__hd"},Cc={class:"admin-page__title-wrap"},Ec={class:"admin-page__title"},$c={class:"admin-page__count"},Sc={class:"admin-profile__layout"},Uc={class:"admin-profile__nav","aria-label":"Profile sections"},Mc=["onClick"],Dc=["data-icon"],Tc={class:"admin-profile__content"},Ic={class:"admin-profile__hero"},Ac={class:"admin-profile__hero-text"},Fc={class:"admin-profile__hero-name"},Lc={class:"admin-profile__hero-meta"},zc={class:"admin-profile__form"},Rc={class:"admin-profile__card-ft"},Pc={class:"admin-profile__card-hd"},qc={key:0,class:"admin-profile__hint"},jc={key:1,class:"admin-profile__hint"},Oc={class:"admin-profile__card-ft"},Wc={class:"admin-profile__hint"},Xn=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=ce(),o=ot(),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 _(){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",xc,[e.createElementVNode("header",Nc,[e.createElementVNode("div",Cc,[e.createElementVNode("h1",Ec,e.toDisplayString(t.title),1),e.createElementVNode("div",$c,e.toDisplayString(t.subtitle),1)])]),e.createElementVNode("div",Sc,[e.createElementVNode("nav",Uc,[(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,Dc),e.createElementVNode("span",null,e.toDisplayString(V.label),1)],10,Mc)),64))]),e.createElementVNode("div",Tc,[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",Ic,[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",Ac,[e.createElementVNode("div",Fc,e.toDisplayString(e.unref(i).user?.name??"—"),1),e.createElementVNode("div",Lc,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",zc,[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",Rc,[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",Pc,[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",qc," 2FA включена. У вас остались recovery-коды на случай потери устройства. ")):(e.openBlock(),e.createElementBlock("p",jc," Включите 2FA для дополнительной защиты аккаунта. ")),e.createElementVNode("footer",Oc,[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:_},{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",Wc," Section «"+e.toDisplayString(d.value)+"» не реализована библиотекой — host-проект подключает её через slot "+e.toDisplayString(d.value)+". ",1)]),_:1})])])])]))}}),wt=e.defineComponent({__name:"StatWidget",props:{title:{default:""},stats:{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]),i=e.computed(()=>n.stats[0]??{}),o=e.computed(()=>i.value.label??n.title??""),l=e.computed(()=>i.value.value??n.value),s=e.computed(()=>i.value.prefix??n.prefix),d=e.computed(()=>i.value.suffix??n.suffix),u=e.computed(()=>{const f=i.value.change;return f&&typeof f.delta=="number"?f.delta:n.trend});return(f,y)=>(e.openBlock(),e.createBlock(e.unref(c.UidStat),{title:t.title||o.value,value:l.value,prefix:s.value,suffix:d.value,trend:u.value,precision:t.precision,tone:r.value,loading:t.loading},null,8,["title","value","prefix","suffix","trend","precision","tone","loading"]))}}),Hc={key:0,class:"admin-widget__hd"},Kc={key:0,class:"admin-widget__title"},Gc={key:1,class:"admin-widget__desc"},Xc={key:1,class:"admin-widget__empty"},Yc=["viewBox","height","aria-label"],Zc=["x","y","width","height","fill","data-label","data-value"],Wt=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",Hc,[t.title?(e.openBlock(),e.createElementBlock("h3",Kc,e.toDisplayString(t.title),1)):e.createCommentVNode("",!0),t.description?(e.openBlock(),e.createElementBlock("p",Gc,e.toDisplayString(t.description),1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),a.value?(e.openBlock(),e.createElementBlock("div",Xc,"Нет данных за период")):(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,Zc))),128))],8,Yc))]),_:1}))}}),Jc={key:0,class:"admin-widget__hd"},Qc={class:"admin-widget__title"},ed={key:1,class:"admin-widget__empty"},td={key:2,class:"admin-donut-widget__row"},nd=["aria-label"],ad=["d","fill"],od={class:"admin-donut-widget__legend"},ld={class:"admin-donut-widget__label"},rd={class:"admin-donut-widget__value"},Ht=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),_=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} ${_} 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",Jc,[e.createElementVNode("h3",Qc,e.toDisplayString(t.title),1)])):e.createCommentVNode("",!0),r.value?(e.openBlock(),e.createElementBlock("div",ed,"Нет данных")):(e.openBlock(),e.createElementBlock("div",td,[(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,ad))),128)),s[0]||(s[0]=e.createElementVNode("circle",{cx:"60",cy:"60",r:"30",fill:"var(--uid-surface-raised)"},null,-1))],8,nd)),e.createElementVNode("ul",od,[(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",ld,e.toDisplayString(d.label),1),e.createElementVNode("span",rd,e.toDisplayString(d.pct)+"%",1)]))),128))])]))]),_:1}))}}),id={key:0,class:"admin-widget__hd"},sd={class:"admin-widget__title"},Je=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",id,[e.createElementVNode("h3",sd,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}))}}),cd={key:0,class:"admin-widget__hd"},dd={class:"admin-widget__title"},ud={class:"admin-heatmap__cols-axis","aria-hidden":"true"},md={class:"admin-heatmap__row-label"},fd={class:"admin-heatmap__cells"},pd=["title"],vd={key:2,class:"admin-heatmap__empty"},Yn=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",cd,[e.createElementVNode("h3",dd,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",ud,[(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",md,e.toDisplayString(t.rows[d]??""),1),e.createElementVNode("div",fd,[(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,pd))),128))])]))),128))],4)):(e.openBlock(),e.createElementBlock("div",vd,"Нет данных"))]),_:1}))}}),hd={key:0,class:"admin-widget__hd"},gd={class:"admin-widget__title"},yd={class:"admin-gauge-widget__body"},Zn=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",hd,[e.createElementVNode("h3",gd,e.toDisplayString(t.title),1)])):e.createCommentVNode("",!0),e.createElementVNode("div",yd,[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}))}}),kd={key:0,class:"admin-widget__hd"},_d={class:"admin-widget__title"},bd={class:"admin-markdown-widget"},Jn=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",kd,[e.createElementVNode("h3",_d,e.toDisplayString(t.title),1)])):e.createCommentVNode("",!0),e.createElementVNode("div",bd,e.toDisplayString(t.content),1)]),_:1}))}}),wd=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(Ht,{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(Wt,{key:1,title:t.title,data:i.value,accent:o.value},null,8,["title","data","accent"])):(e.openBlock(),e.createBlock(At,{key:2,type:`chart:${a.value}`},null,8,["type"]))}});function Qn(){Mn({stat:wt,stats:wt,chart:wd,"bar-chart":Wt,"donut-chart":Ht,"recent-table":Je,recent_list:Je,"recent-list":Je,heatmap:Yn,gauge:Zn,markdown:Jn})}function ea(t){return t.success===!0}function Bd(t){return t.success===!1}function ta(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=Vd("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(ea(o))return i.data=o.payload,i;throw yt(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=yt(o,l);return s instanceof Mt&&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 Vd(t){if(typeof document>"u")return null;const n=document.cookie.match(new RegExp("(^|; )"+xd(t)+"=([^;]*)"));return n?n[2]:null}function xd(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Ze(t,n){const a=t.permissions?.[n];return typeof a=="string"&&a.length>0?[a]:[]}function Nd(t,n){const a=t.permissions?.[n];return typeof a=="string"&&a.length>0?[a]:[]}function Cd(t){return Array.isArray(t.permission)?t.permission:typeof t.permission=="string"&&t.permission.length>0?[t.permission]:[]}function Ed(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:Ze(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:Ze(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:Ze(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:Ze(t,"view")},props:i=>({slug:a,id:i.params.id})}]}function $d(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:Cd(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:Nd(t,"view")}}}function Ud(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 na(t,n){if(t===null)return[];const a=[];for(const r of t.resources)a.push(...Ed(r,n));for(const r of t.screens)a.push($d(r,n));for(const r of t.settings)a.push(Sd(r,n));for(const r of t.dashboards){const i=Ud(r,n);i&&a.push(i)}return a}function aa(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=ce();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 oa(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 Dd(t){return typeof t!="string"?!1:Md.some(n=>t.startsWith(n))}function la(t){const n=t.base??"/admin",a=t.history??Y.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=Y.createRouter({history:a,routes:[...r,...t.extraRoutes??[],i]});return o.beforeEach(aa(t.authGuard)),o.afterEach(oa(t.titleGuard)),o.replaceManifestRoutes=l=>{const s=o.getRoutes();for(const u of s)Dd(u.name)&&o.removeRoute(u.name);o.hasRoute("admin.notFound")&&o.removeRoute("admin.notFound");const d=na(l,t.components);for(const u of d)o.addRoute(u);o.addRoute(i)},o}const se=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"]))}}),Qe=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"]))}}),et=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"]))}}),ge=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},readonly:{type:Boolean,default:!1},searchable:{type:Boolean,default:!1},clearable:{type:Boolean,default:!1},size:{default:"md"}},setup(t){const n=t,a=e.computed(()=>n.disabled||n.readonly),r=te.useFormState(),i=e.computed(()=>{const s=r.getField(n.name);return s==null||s===""?null:s}),o=e.computed(()=>r.errors[n.name]?.[0]);function l(s){r.setField(n.name,s)}return(s,d)=>(e.openBlock(),e.createBlock(e.unref(c.UidFormField),{label:t.label??void 0,hint:t.help??void 0,error:o.value,required:t.required,disabled:a.value},{default:e.withCtx(()=>[e.createVNode(e.unref(c.UidSelect),{"model-value":i.value,options:t.options,placeholder:t.placeholder??void 0,disabled:a.value,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"]))}}),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"]))}}),be=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"]))}}),Td={key:0,class:"admin-field__label"},Id={key:0,class:"admin-field__required","aria-hidden":"true"},Ad={class:"admin-tags__chip-text"},Fd=["onClick"],Ld=["value","placeholder","disabled"],zd={key:0,class:"admin-tags__dropdown",role:"listbox"},Rd={class:"admin-tags__group-label"},Pd=["aria-selected","onMousedown","onMouseenter"],qd=["aria-selected","onMousedown","onMouseenter"],jd={key:1,class:"admin-field__error"},Od={key:2,class:"admin-field__help"},Wd=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 k=a.getField(n.name);return Array.isArray(k)?k.map(b=>String(b)):typeof k=="string"&&k!==""?k.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(k){const b=new Set,h=[];for(const M of k){const F=M.trim();if(!(F===""||b.has(F))&&(b.add(F),h.push(F),n.maxItems>0&&h.length>=n.maxItems))break}a.setField(n.name,h)}function f(k){const b=k.trim();if(b!==""){if(r.value.includes(b)){o.value="";return}u([...r.value,b]),o.value=""}}function y(k){const b=[...r.value];b.splice(k,1),u(b)}function m(k){k.key==="Enter"?(k.preventDefault(),v.value>=0&&C.value[v.value]?f(C.value[v.value]):o.value.trim()!==""&&f(o.value)):k.key==="Backspace"&&o.value===""&&r.value.length>0?y(r.value.length-1):k.key==="ArrowDown"?(k.preventDefault(),v.value=Math.min(v.value+1,C.value.length-1)):k.key==="ArrowUp"?(k.preventDefault(),v.value=Math.max(v.value-1,-1)):k.key==="Escape"&&(l.value=!1,s.value?.blur())}function w(k){const b=k.target.value;if(n.separator&&b.includes(n.separator)){const h=b.split(n.separator);h.slice(0,-1).map(F=>F.trim()).filter(Boolean).forEach(f),o.value=h[h.length-1]??"";return}o.value=b}const v=e.ref(-1),_=e.computed(()=>Array.isArray(n.suggestionsByGroup)&&n.suggestionsByGroup.length>0),p=e.computed(()=>{const k=o.value.trim().toLowerCase(),b=new Set(r.value);return _.value?n.suggestionsByGroup.map(h=>({label:h.label,items:h.items.filter(M=>!b.has(M)&&(k===""||M.toLowerCase().includes(k)))})).filter(h=>h.items.length>0):[]}),C=e.computed(()=>{if(_.value)return p.value.flatMap(h=>h.items);const k=o.value.trim().toLowerCase(),b=new Set(r.value);return n.suggestions.filter(h=>!b.has(h)).filter(h=>k===""||h.toLowerCase().includes(k)).slice(0,200)});function B(k){return k===v.value}e.watch(o,()=>{v.value=-1});function E(){n.disabled||s.value?.focus()}function V(k){f(k),e.nextTick(()=>s.value?.focus())}function T(){window.setTimeout(()=>{l.value=!1,o.value.trim()!==""&&f(o.value)},120)}return(k,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",Td,[e.createElementVNode("span",null,e.toDisplayString(t.label),1),t.required?(e.openBlock(),e.createElementBlock("span",Id,"*")):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,M)=>(e.openBlock(),e.createElementBlock("span",{key:`${h}-${M}`,class:"admin-tags__chip"},[e.createElementVNode("span",Ad,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(F=>y(M),["stop"])},[e.createVNode(e.unref(c.UidIcon),{icon:e.unref($e),size:10},null,8,["icon"])],8,Fd))]))),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,Ld),l.value&&C.value.length>0?(e.openBlock(),e.createElementBlock("div",zd,[_.value?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(p.value,(h,M)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:`g-${M}-${h.label}`},[e.createElementVNode("div",Rd,e.toDisplayString(h.label),1),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(h.items,F=>(e.openBlock(),e.createElementBlock("button",{key:F,type:"button",role:"option",class:e.normalizeClass(["admin-tags__option",{"admin-tags__option--active":B(C.value.indexOf(F))}]),"aria-selected":B(C.value.indexOf(F)),onMousedown:e.withModifiers(j=>V(F),["prevent"]),onMouseenter:j=>v.value=C.value.indexOf(F)},e.toDisplayString(F),43,Pd))),128))],64))),128)):(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:1},e.renderList(C.value,(h,M)=>(e.openBlock(),e.createElementBlock("button",{key:h,type:"button",role:"option",class:e.normalizeClass(["admin-tags__option",{"admin-tags__option--active":M===v.value}]),"aria-selected":M===v.value,onMousedown:e.withModifiers(F=>V(h),["prevent"]),onMouseenter:F=>v.value=M},e.toDisplayString(h),43,qd))),128))])):e.createCommentVNode("",!0)],2),i.value?(e.openBlock(),e.createElementBlock("p",jd,e.toDisplayString(i.value),1)):t.help?(e.openBlock(),e.createElementBlock("p",Od,e.toDisplayString(t.help),1)):e.createCommentVNode("",!0)],2))}}),Hd={key:0,class:"admin-field__label"},Kd={key:0,class:"admin-field__required","aria-hidden":"true"},Gd={class:"admin-translatable"},Xd={class:"admin-translatable__tabs",role:"tablist"},Yd=["aria-selected","onClick"],Zd={key:0,class:"admin-translatable__dot","aria-hidden":"true"},Jd={class:"admin-translatable__panel"},Qd=["value","placeholder","rows","disabled"],eu={key:1,class:"admin-field__error"},tu={key:2,class:"admin-field__help"},on=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",Hd,[e.createElementVNode("span",null,e.toDisplayString(t.label),1),t.required?(e.openBlock(),e.createElementBlock("span",Kd,"*")):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.createElementVNode("div",Gd,[e.createElementVNode("div",Xd,[(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",Zd)):e.createCommentVNode("",!0)],10,Yd))),128))]),e.createElementVNode("div",Jd,[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,Qd)):(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",eu,e.toDisplayString(d.value),1)):t.help?(e.openBlock(),e.createElementBlock("p",tu,e.toDisplayString(t.help),1)):e.createCommentVNode("",!0)],2))}}),nu={key:0,class:"admin-field__label"},au={key:0,class:"admin-field__required","aria-hidden":"true"},ou={class:"admin-field__control"},lu={key:1,class:"admin-field__error"},ru={key:2,class:"admin-field__help"},iu=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",nu,[e.createElementVNode("span",null,e.toDisplayString(t.label),1),t.required?(e.openBlock(),e.createElementBlock("span",au,"*")):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.createElementVNode("div",ou,[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",lu,e.toDisplayString(i.value),1)):t.help?(e.openBlock(),e.createElementBlock("p",ru,e.toDisplayString(t.help),1)):e.createCommentVNode("",!0)],2))}}),Bt=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(we,{key:i,node:r},null,8,["node"]))),128))]),_:1},8,["gap"]))}}),ra=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(we,{node:l},null,8,["node"])],4))),128))]),_:1},8,["cols","gap"]))}}),su={key:0,class:"admin-section__header"},cu={key:0,class:"admin-section__title"},du={key:1,class:"admin-section__description"},uu={class:"admin-section__body"},Ce=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",su,[t.title?(e.openBlock(),e.createElementBlock("h3",cu,e.toDisplayString(t.title),1)):e.createCommentVNode("",!0),t.description?(e.openBlock(),e.createElementBlock("p",du,e.toDisplayString(t.description),1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.createElementVNode("div",uu,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.items,(r,i)=>(e.openBlock(),e.createBlock(we,{key:i,node:r},null,8,["node"]))),128))])]),_:1}))}}),ia=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(we,{key:m,node:y},null,8,["node"]))),128))]),_:2},1032,["value"]))),128))]),_:1},8,["model-value"]))}});function sa(){Ln({fields:{input:se,text:se,email:se,url:se,password:se,tel:se,search:se,slug:se,hidden:se,label:se,textarea:Qe,wysiwyg:iu,markdown:Qe,code:Qe,number:et,slider:et,rating:et,select:ge,combobox:ge,radio:ge,tags:Wd,translatable:on,"translatable-text":on,"morph-switcher":ge,relation:ge,cascader:ge,"tree-select":ge,checkbox:Ae,switch:Ae,switcher:Ae,boolean:Ae,date:be,datetime:be,datepicker:be,"date-range":be,time:be,"time-picker":be,"color-picker":se},layouts:{rows:Bt,columns:ra,section:Ce,block:Ce,tabs:ia,accordion:Ce,group:Bt,step:Ce,wizard:Ce}})}const mu={key:0,class:"admin-infolist-entry"},fu={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=jn(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",mu,[e.createElementVNode("span",fu,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))}}),pu={key:1,class:"admin-infolist-text"},ca=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",pu,"—"))}}),vu=["data-icon"],hu={key:0},da=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,vu),i.value?(e.openBlock(),e.createElementBlock("span",hu,e.toDisplayString(i.value),1)):e.createCommentVNode("",!0)],2))}}),gu={key:1,class:"admin-infolist-text"},Vt=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",gu,"—"))}});function ua(){Wn({text:O,badge:ca,icon:da,keyvalue:Vt,"key-value":Vt,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 yu(t,n={}){const a=n.pages??{},r=n.base??ku(t.baseUrl)??"/admin",i=ta({baseURL:t.apiUrl,csrfToken:t.csrf});$t(i);const o=e.createApp(En),l=oe.createPinia();o.use(l),ce().hydrate(t),Le().hydrate(t),ot().hydrate(t),ze().hydrate(t),It().hydrate(t),sa(),Qn(),ua();const s=la({base:r,history:n.router?.history??Y.createWebHistory(r),components:{login:a.login??qn,home:a.home??Tn,forbidden:a.forbidden??In,notFound:a.notFound??An,profile:a.profile??Xn,forgotPassword:a.forgotPassword??ki,resetPassword:a.resetPassword??xi,resourceIndex:a.resourceIndex??On,resourceCreate:a.resourceCreate??_t,resourceEdit:a.resourceEdit??_t,resourceView:a.resourceView??Gn,dashboard:a.dashboard??Ft,settings:a.settings??Fn,screen:a.screen??zn},extraRoutes:n.router?.extraRoutes,authGuard:n.router?.authGuard,titleGuard:n.router?.titleGuard});o.use(s);const d=Tt();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(()=>Ni),_=v();(_.slug!==w||_.items.length===0)&&(_.setSlug(w),await _.load().catch(()=>{}))}catch{}}y()}),n.skipManifestLoad)fe().bootResolved=!0;else{const u=fe(),f=ce(),y=Dt(),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 ku(t){if(!t)return null;try{return new URL(t).pathname||"/admin"}catch{return t.startsWith("/")?t:null}}const _u={class:"admin-status-page"},bu={class:"admin-status-page__title"},wu={class:"admin-status-page__hint"},Bu=e.defineComponent({__name:"UnknownScreenPage",setup(t){const n=Y.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",_u,[e.createVNode(e.unref(c.UidCard),{padding:"lg",class:"admin-status-page__card"},{default:e.withCtx(()=>[e.createElementVNode("h1",bu,e.toDisplayString(r.value),1),e.createElementVNode("p",wu,[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 Vu(t={}){const n=ma();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 ma(){return typeof window>"u"?null:window.__ADMIN_BOOTSTRAP__??null}function xu(){return typeof document>"u"?null:document.querySelector('meta[name="csrf-token"]')?.getAttribute("content")??null}const Nu={class:"admin-notifs__hd"},Cu={class:"admin-notifs__title"},Eu={key:0,class:"admin-notifs__count"},$u={class:"admin-notifs__list"},Su={key:0,class:"admin-notifs__empty"},Uu={key:1,class:"admin-notifs__empty"},Mu=["onClick"],Du=["data-kind"],Tu={class:"admin-notifs__body"},Iu={class:"admin-notifs__row1"},Au={key:0,class:"admin-notifs__title-strong"},Fu={key:1,class:"admin-notifs__title-soft"},Lu={class:"admin-notifs__time"},zu={key:0,class:"admin-notifs__text"},Ru=["onClick"],Pu=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(_){r("update:open",_)}e.watch(()=>a.open,async _=>{_&&await i.load(i.lastFilter??"all",1).catch(()=>{})},{immediate:!0});const l=e.computed(()=>i.lastFilter??"all");async function s(_){await i.load(_,1).catch(()=>{})}async function d(){await i.markAllAsRead().catch(()=>{})}async function u(_){r("select-item",_),_.read_at||await i.markAsRead(_.id).catch(()=>{})}async function f(_,p){p.stopPropagation(),await i.destroy(_.id).catch(()=>{})}function y(_){const p=_.data.level;return p==="success"||p==="warning"||p==="danger"?p:"info"}function m(_){return _.data.title??"—"}function w(_){return _.data.body??""}function v(_){if(!_)return"";const p=new Date(_),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(_,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",Nu,[e.createElementVNode("h2",Cu,[p[0]||(p[0]=e.createTextVNode(" Уведомления ",-1)),e.unref(i).unreadCount>0?(e.openBlock(),e.createElementBlock("span",Eu," ("+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",$u,[e.unref(i).loading?(e.openBlock(),e.createElementBlock("li",Su," Загрузка… ")):e.unref(i).items.length===0?(e.openBlock(),e.createElementBlock("li",Uu," Нет уведомлений ")):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,Du),e.createElementVNode("div",Tu,[e.createElementVNode("div",Iu,[B.read_at?(e.openBlock(),e.createElementBlock("span",Fu,e.toDisplayString(m(B)),1)):(e.openBlock(),e.createElementBlock("strong",Au,e.toDisplayString(m(B)),1)),e.createElementVNode("span",Lu,e.toDisplayString(v(B.created_at)),1)]),w(B)?(e.openBlock(),e.createElementBlock("p",zu,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,Ru)],10,Mu))),128))])]),_:1},8,["value"])),64))]),_:1},8,["model-value"])]),_:1},8,["model-value"]))}}),qu={class:"admin-page admin-import-wizard"},ju={class:"admin-page__hd"},Ou={class:"admin-page__title-wrap"},Wu={class:"admin-page__title"},Hu={class:"admin-page__actions"},Ku={key:0,class:"admin-import-wizard__empty"},Gu={key:1,class:"admin-import-wizard__mapping"},Xu={class:"admin-import-wizard__map-source"},Yu={key:0,class:"admin-import-wizard__map-sample"},Zu={class:"admin-import-wizard__card-hd"},Ju={key:2,class:"admin-import-wizard__empty"},Qu={key:0,class:"admin-import-wizard__empty"},em={class:"admin-import-wizard__kpi"},tm={class:"admin-import-wizard__nav"},nm=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 _=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",qu,[e.createElementVNode("header",ju,[e.createElementVNode("div",Ou,[e.createElementVNode("h1",Wu,e.toDisplayString(t.title),1)]),e.createElementVNode("div",Hu,[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",Ku," Нет данных — host ещё не отдал headers. Загрузите файл сначала. ")):(e.openBlock(),e.createElementBlock("div",Gu,[(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",Xu,[e.createElementVNode("strong",null,e.toDisplayString(T.label),1),T.sample?(e.openBlock(),e.createElementBlock("span",Yu," «"+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":k=>y(T.key,k)},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",Zu,[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",Ju," 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",em,[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",Qu," Запускается импорт… "))]),_:1})),e.createElementVNode("footer",tm,[_.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)])]))}}),am={class:"admin-page admin-field-gallery"},om={class:"admin-gallery__group-title"},lm={class:"admin-gallery__grid"},rm={class:"admin-gallery__card-hd"},im={class:"admin-gallery__card-title"},sm={class:"admin-gallery__card-type"},cm={class:"admin-gallery__card-desc"},dm={class:"admin-gallery__card-demo"},um=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",am,[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",om,e.toDisplayString(s),1),e.createElementVNode("div",lm,[(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",rm,[e.createElementVNode("h3",im,e.toDisplayString(d.title),1),e.createElementVNode("code",sm,"type: "+e.toDisplayString(d.type),1)]),e.createElementVNode("p",cm,e.toDisplayString(d.description),1),e.createElementVNode("div",dm,[e.createVNode(qt,{node:d.node},null,8,["node"])])]),_:2},1024))),128))])]))),128))]))}});exports.provideFormState=te.provideFormState;exports.tryUseFormState=te.tryUseFormState;exports.useFormState=te.useFormState;exports.AdminApp=En;exports.AdminShell=Cn;exports.AdminSidebar=Nn;exports.AdminTopBar=Vn;exports.ApiError=de;exports.BadgeEntry=ca;exports.BarChartWidget=Wt;exports.CheckboxField=Ae;exports.ColumnsLayout=ra;exports.DashboardPage=Ft;exports.DateField=be;exports.DonutChartWidget=Ht;exports.FieldGalleryPage=um;exports.FieldRenderer=qt;exports.ForbiddenError=bn;exports.ForbiddenPage=In;exports.GaugeWidget=Zn;exports.HeatmapWidget=Yn;exports.HomePage=Tn;exports.IconEntry=da;exports.ImportWizardPage=nm;exports.InfolistRenderer=Kn;exports.KeyValueEntry=Vt;exports.LayoutRenderer=we;exports.LocaleSwitcher=Ut;exports.LoginForm=Rn;exports.LoginPage=qn;exports.MarkdownWidget=Jn;exports.NetworkError=Re;exports.NotFoundError=wn;exports.NotFoundPage=An;exports.NotificationBell=_n;exports.NotificationsDrawer=Pu;exports.NumberField=et;exports.ProfilePage=Xn;exports.RecentTableWidget=Je;exports.ResourceFormPage=_t;exports.ResourceIndexPage=On;exports.ResourceViewPage=Gn;exports.RowsLayout=Bt;exports.ScreenPage=zn;exports.SectionLayout=Ce;exports.SelectField=ge;exports.SettingsPage=Fn;exports.StatWidget=wt;exports.TabsLayout=ia;exports.TextAreaField=Qe;exports.TextEntry=O;exports.TextField=se;exports.ThemeToggle=St;exports.TwoFactorForm=Pn;exports.UnauthenticatedError=Mt;exports.UnknownEntry=Hn;exports.UnknownField=Pt;exports.UnknownScreenPage=Bu;exports.UnknownWidget=At;exports.UserMenu=Bn;exports.ValidationError=Se;exports.WidgetRenderer=Dn;exports.buildRoutesFromManifest=na;exports.clearAdminClient=yn;exports.clearInfolistRegistry=Rs;exports.clearRegistry=Hr;exports.clearWidgetRegistry=Rl;exports.createAdminApp=yu;exports.createAdminClient=ta;exports.createAdminRouter=la;exports.createAuthGuard=aa;exports.createTitleGuard=oa;exports.getAdminClient=K;exports.getField=Rt;exports.getInfolistEntry=bt;exports.getLayout=kt;exports.getWidget=Sn;exports.hasAdminClient=kn;exports.hasField=Pr;exports.hasInfolistEntry=Ls;exports.hasLayout=Or;exports.hasWidget=zl;exports.isError=Bd;exports.isSuccess=ea;exports.listFields=qr;exports.listInfolistEntries=zs;exports.listLayouts=Wr;exports.listWidgets=Un;exports.loadBootstrap=Vu;exports.provideRecord=zt;exports.readCsrfFromMeta=xu;exports.readInlineBootstrap=ma;exports.registerBuiltinComponents=sa;exports.registerBuiltinInfolistEntries=ua;exports.registerBuiltinWidgets=Qn;exports.registerComponents=Ln;exports.registerField=Rr;exports.registerInfolistEntries=Wn;exports.registerInfolistEntry=Fs;exports.registerLayout=jr;exports.registerWidget=Ll;exports.registerWidgets=Mn;exports.setAdminClient=$t;exports.toApiError=yt;exports.tryUseRecord=Pe;exports.useAuthStore=ce;exports.useLocaleStore=Le;exports.useManifestStore=fe;exports.useMenuStore=Dt;exports.useNotificationsStore=ze;exports.useRecord=zr;exports.useResourceFormStore=Ot;exports.useResourceIndexStore=jt;exports.useThemeStore=ot;
4
4
  //# sourceMappingURL=index.cjs.map